一种动画场景文件压缩的方法

文档序号:6374157阅读:210来源:国知局
专利名称:一种动画场景文件压缩的方法
技术领域
本发明属于计算机动画领域,涉及计算投影几何等应用技术,针对利用maya制作的场景文件容量较大的问题,提出一种动画场景文件压缩的方法。
背景技术
在三维动画制作过程需频繁打开,操作和保存场景文件。由于制作动画周期的反复性以及制作人员能力的参差性,使得最终生成的场景通常会包含大量无用的历史节点,导致场景文件过大,为场景保存和使用带来极大的不便。传统压缩场景文件的方法主要是通过清除场景中的历史节点以及在超图中独立
的节点(不与其他任何节点相连),但按照这种方法对场景进行压缩,获得的压缩文件依然过大。这主要由于场景中许多无用的节点其在超图中并非孤立存在,可能与某些节点之间保持着连接关系而但这种连接关系并不起作用。由于制作场景文件成片中,只有在摄像机的有效地拍摄范围之内物体才能渲染生成,因此,场景文件中的物体只有包含在摄像机的有效地拍摄范围之内才是有效的,而在有效拍摄范围之外的物体,对于成片而言均是无效的。

发明内容
针对以上问题,本发明的目的在于提出一种动画场景文件压缩的方法,能够有效地对场景中无用的节点进行删除,大大提高了 maya动画场景的压缩比。一种动画场景文件压缩的方法可在保留场景必要模型和动画曲线的基础上,将不再投影范围中的模型删除,大幅压缩场景文件的大小。为了达到这一目的,本发明提出一种动画场景文件压缩的方法包含如下步骤步骤SI :生成场景候选节点集合;步骤S2 :计算场景摄像机有效的覆盖范围;步骤S3 :判断场景候选节点集合中的节点所对应的模型是否在著摄像机的投影范围内,生成场景核心节点集合;步骤S4 :根据场景核心模型节点集合,压缩maya场景文件。进一步的,上述技术方案中,所述步骤SI中场景候选模型节点集合包括显示层中的 Transform 节点、Shape 节点。进一步的,上述技术方案中,所述步骤SI包含如下步骤步骤Sll :打开场景文件;步骤S12 :记录场景文件的动画范围;步骤S13 :遍历场景文件中的动画层,将动画层集合中属性visibility为true动画层添加到候选动画层集合;步骤S14 :根据候选动画层集合,生成场景候选节点集合。进一步的,上述技术方案中,所述步骤S2用四棱锥来模拟计算场景摄像机有效的覆盖范围,具体包含如下步骤步骤S21:根据场景摄像机的覆盖长度,以及在两个轴向上的覆盖角度,计算摄像机在原点的投影平面;步骤S22 :生成模拟摄像机投影的四棱椎体,该四棱锥体的顶点在原点,底面四个顶点的位置设置为投影平面四个顶点的位置;步骤S23 :将模拟摄像机投影的四棱椎体,移动到场景摄像机的位置并按照摄像机的旋转角度进行旋转,获得场景摄像机有效的覆盖范围。进一步的,上述技术方案中,步骤S3所述场景核心节点集合包括场景摄像机有效的覆盖范围内的模型所对应的Transform节点和Shapes节点。进一步的,上述技术方案中,所述步骤S3包含如下步骤步骤S31:通过计算场景候选节点集合中的节点所对应的模型的最小包裹四方体,来确定该模型在空间的大致范围;步骤S32 :判断模型的最小外接长方体的顶点是否在场景摄像机有效的覆盖范围内;步骤S33:将包含在场景摄像机有效的覆盖范围内的模型所对应的Transform节点和Shapes节点添加到场景核心节点集合。进一步的,上述技术方案中,所述步骤S4包含如下步骤步骤S41:遍历场景的所有节点,将不包含在核心节点集合中的节点删除;步骤S42 :保存仅包含核心节点的场景文件,场景压缩完毕。进一步的,上述技术方案中,所述步骤S21的计算方法为根据场景摄像机P的焦距f,横向覆盖角度2AH,纵向覆盖角度2AV,计算摄像机在原点0(0,0,0)向y轴负方向投影平面四个顶点R1, R2, R3, R4的坐标,公式如下。R1: (f · tanAv, -f, -f · tanAH)R2: (f · tanAv, -f, f · tanAH)R3: (-f · tanAv, -f, f · tanAH)R4: (-f · tanAv, -f, -f · tanAH)本方法的有点在于可在保留场景必要模型和动画曲线的基础上,将不再投影范围中的模型删除,大幅压缩场景文件的大小。


图I是本发明一种动画场景文件压缩的方法的流程2是本发明摄像机投影映射角度3是本发明三维场景模型在摄像机投影范围的包裹4是未压缩的三维场景5是利用本发明一种动画场景文件压缩的方法压缩后的三维场景图
具体实施例方式本发明的结构如图I所示。该系统实现中所需的基本的硬件条件为一台主频为2. 3GHz,内存为IG的电脑;所需软件条件为动画制作环境(maya),编程语言(maya内置语言mel)。该发明在分析场景文件成片所包含内容的基础上,通过提取三维场景候选节点,并判断是否在摄像机的有效地覆盖范围,并对场景文件进行压缩,可以在保留场景必要模型和动画曲线的基础上,大幅压缩场景文件的大小。下面对每一流程的功能和设计进行详细阐述。步骤SI :生成场景候选节点集合;场景候选模型节点集合包括 显示层中的Transform节点,Shape节点,获取场景候选节点集合的步骤包括步骤Sll :打开场景文件;步骤S12 :记录场景文件的动画范围;步骤S13 :遍历场景文件中的动画层,将动画层集合中属性visibility为true动画层添加到候选动画层集合;属性visibility为true动画层表示该动画层在场景中是可见的,只有在可见动画层中的模型在maya生成的文件中才是可见的。步骤S14 :根据候选动画层集合,生成场景候选节点集合。遍历候选动画层集合中的动画层,将动画层中的Shapes节点作为场景候选节点,添加到场景候选节点集合中。步骤S2 :计算场景摄像机有效的覆盖范围;为了能够简化摄像机有效覆盖范围的计算,通过产生一个四棱锥,用四棱锥来模拟计算场景摄像机有效的覆盖范围。具体的计算步骤包括步骤S21:根据场景摄像机P的焦距f,横向覆盖角度2Ah,纵向覆盖角度2AV,计算摄像机在原点0(0,0,0)向y轴负方向投影平面四个顶点R1, R2, R3, R4的坐标。R1: (f · tanAv, -f, -f · tanAH)R2: (f · tanAv, -f, f · tanAH)R3: (-f · tanAv, -f, f · tanAH)R4: (-f · tanAv, -f, -f · tanAH)步骤S22 :生成模拟摄像机投影的四棱椎体,该四棱锥体的顶点在原点,底面四个顶点的位置设置为投影平面四个顶点的位置;步骤S23 :将模拟摄像机投影的四棱椎体,移动到场景摄像机的位置并按照摄像机的旋转角度进行旋转,获得场景摄像机有效的覆盖范围。步骤S3 :判断场景候选节点集合中的节点所对应的模型是否在著摄像机的投影范围内,生成场景核心节点集合;由于场景模型的形状各不相同,因此通过比较包裹场景模型的最小外接长方体顶点与投影放范围的位置,来间接判断模型是否是否包含于摄像机的投影范围内。具体的计算步骤包括步骤S31:通过计算场景候选节点集合中的节点所对应的模型的最小包裹四方体,来确定该模型在空间的大致范围;针对场景候选节点集合中的节点所对应的模型mObject,利用maya环境内置的命令〃xform-q-ws_bbi mObject"来获取包裹模型mObject的最小外接长方体的顶点坐标。
步骤S32 :判断模型的最小外接长方体的顶点是否在场景摄像机有效的覆盖范围内;如果模型的最小外接长方体的顶点与摄像机顶点的延长线与场景摄像机投影平面相交,则可判断该模型包含或与部分包含于场景摄像机有效的覆盖范围内;否则可判断该模型不在场景摄像机有效的覆盖范围内。点P是摄像机坐标为(xp,yp, zp),矩形R1, R2, R3, R4是摄像机投射出来的一个矩形面的四个顶点,坐标为R1: (x1; Y1, Z1)R2: (x2, y2, Z2)R3: (x3, y3, z3)R4: (x4, y4, z4)R1, R2, R3, R4 所在平面方程为 ax+by+czsaxi+byi+czp 其中a= (Y4-Y1) (Z2-Z1)-(Y2-Y1) (Z4-Z1)b= (Z4-Z1) (X2-X1)-(Z2-Z1) (X4-X1)C=(X4-X1) (Y2-Y1)-(X2-X1) (Y4-Y1)Spherel和Sphere2是空间中的两个球体,他们分别有一个最小外接长方体。点A、B、C为这些外接长方体上的三个顶点。A’、B’、C’分别为直线PA、PB、PC在平面R1, R2, R3, R4上的三个交点。计算对于A’ 的坐标(xA,,yA,,zA,),xA, = λ (Xa-Xp) +XpyA, =λ (yA-yP) +yPzA’ = λ (zA-zP) +Zp 其中,
权利要求
1.一种动画场景文件压缩的方法,包含如下步骤 步骤Si:生成场景候选节点集合; 步骤S2 :计算场景摄像机有效的覆盖范围; 步骤S3 :判断场景候选节点集合中的节点所对应的模型是否在著摄像机的投影范围内,生成场景核心节点集合; 步骤S4 :根据场景核心模型节点集合,压缩maya场景文件。
2.如权利要求I所述一种动画场景压缩的方法,其特征在于所述步骤SI中场景候选模型节点集合包括显示层中的Transform节点、Shape节点。
3.如权利要求I所述一种动画场景压缩的方法,其特征在于所述步骤SI包含如下步骤 步骤Sll:打开场景文件; 步骤S12 :记录场景文件的动画范围; 步骤S13 :遍历场景文件中的动画层,将动画层集合中属性visibility为true动画层添加到候选动画层集合; 步骤S14 :根据候选动画层集合,生成场景候选节点集合。
4.如权利要求I所述一种动画场景压缩的方法,其特征在于所述步骤S2用四棱锥来模拟计算场景摄像机有效的覆盖范围,具体包含如下步骤 步骤S21:根据场景摄像机的覆盖长度,以及在两个轴向上的覆盖角度,计算摄像机在原点的投影平面; 步骤S22 :生成模拟摄像机投影的四棱椎体,该四棱锥体的顶点在原点,底面四个顶点的位置设置为投影平面四个顶点的位置; 步骤S23 :将模拟摄像机投影的四棱椎体,移动到场景摄像机的位置并按照摄像机的旋转角度进行旋转,获得场景摄像机有效的覆盖范围。
5.如权利要求I所述一种动画场景压缩的方法,其特征在于步骤S3所述场景核心节点集合包括场景摄像机有效的覆盖范围内的模型所对应的Transform节点和Shapes节点。
6.如权利要求I所述一种动画场景压缩的方法,其特征在于所述步骤S3包含如下步骤 步骤S31:通过计算场景候选节点集合中的节点所对应的模型的最小包裹四方体,来确定该模型在空间的大致范围; 步骤S32 :判断模型的最小外接长方体的顶点是否在场景摄像机有效的覆盖范围内;步骤S33:将包含在场景摄像机有效的覆盖范围内的模型所对应的Transform节点和Shapes节点添加到场景核心节点集合。
7.如权利要求I所述一种动画场景压缩的方法,其特征在于所述步骤S4包含如下步骤 步骤S41:遍历场景的所有节点,将不包含在核心节点集合中的节点删除; 步骤S42 :保存仅包含核心节点的场景文件,场景压缩完毕。
8.如权利要求4所述一种动画场景压缩的方法,其特征在于所述步骤S21的计算方法为根据场景摄像机P的焦距f,横向覆盖角度2Ah,纵向覆盖角度2AV,计算摄像机在原点0(0,0,0)向y轴负方向投影平面四个顶点R1, R2, R3, R4的坐标,公式如下。R1: (f · tanAVJ -f,-f · tanAh)R2: (f · tanAVJ -f,f · tanAh) R3: (-f · tanAVJ -f,f · tanAh)R4: (-f · tanAVJ -f,-f · tanAh) 0
全文摘要
本发明公开一种动画场景文件压缩的方法。利用maya制作三维动画场景的过程中,由于制作周期的反复性以及制作人员能力的参差性,使得最终生成的场景通常会包含大量无用的历史节点,导致场景文件过大,为场景保存和使用带来极大的不便。该发明提出的一种动画场景文件压缩的方法通过计算场景摄像机的投影范围,可在保留场景必要模型和动画曲线的基础上,将不再投影范围中的模型删除,大幅压缩场景文件的大小。
文档编号G06T13/20GK102881036SQ201210266739
公开日2013年1月16日 申请日期2012年7月30日 优先权日2012年7月30日
发明者于海涛 申请人:北京中科盘古科技发展有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1