面向数据融合计算的动画角色处理平台

2014-12-31 11:32夏新宇刘晓平
关键词:动画网格建模

陶 涛, 夏新宇, 李 琳, 刘晓平

(合肥工业大学 计算机与信息学院,安徽 合肥 230009)

随着计算机和网络技术的发展,动画角色已经被广泛应用于影视动画创作、多媒体网络游戏、电影特效、主题公园等诸多领域,动画产业已成为对全球经济具有举足轻重影响力的产业。

动画角色模型是材质的载体和灯光渲染的对象,任何三维特效都是建立在正确的模型基础上[1]。目前,新动画角色的设计不仅周期长,制作过程还需要专业的美工来操作。如何方便高效地得到新的创意性新角色日渐成为研究的热点。对动画角色的研究和处理离不开三维建模软件,近年来,各种三维建模软件在业界得到了广泛的应用,比如Autodesk公司的3DS MAX和Maya建模软件功能强大,可以用于多种三维模型设计,然而它们都属于商业软件,底层的不透明使得用户在这些软件上实现动画角色模型的算法设计尤为困难。SolidWorks是基于Windows平台的全参数化特征造型软件,可以十分方便地实现复杂的三维零件实体造型、复杂装配和生成功能图。UG建模软件首次突破传统CAD/CAM模式,为用户提供一个全面的产品建模系统。AutoCAD建模软件应用也十分广泛,在二维绘图领域处于领先地位,它拥有强大的二维功能,如绘图、编辑、剖面线和图案绘制、尺寸标注以及二次开发等功能,同时也拥有部分三维建模功能。CATIA建模软件是主流的CAD/CAE/CAM建模软件,广泛应用于航空航天、汽车制造、造船、机械设计等制造产业领域。但是这类建模软件大多面向机械设计和建筑设计领域[2],并不适用于动画角色建模和算法设计。目前,在动画角色处理方面,仍没有很好的底层平台支持。

目前,制作效率低下、水平不足仍是动画产业发展初期的阻碍,动画角色作为其核心表现,创新性建模方式成为亟待解决的问题。在CAD领域的产品创新中,组合原理有着重要的意义,其包括切割和组合2种操作。借鉴组合原理的思想,采用切割再组合的方式,在动画角色方面理论上也能实现创新设计,即动画角色的数据融合。本文面向动画角色数据融合计算,设计并实现针对动画角色网格和运动融合数据的处理平台,整个平台支持各种常用的动画角色数据表示,并做到完全透明化,给予用户最大化权限;同时,平台还集成了可扩展算法库模块,包含了许多经典的算法,用户可调用已有库中算法来满足自己的设计需求,也可以将自己的算法入库来完善整体功能。平台针对动画角色设计了外部统一存储格式,并支持常用建模软件的导出功能,减小了模型文件格式和数据格式的约束性;透明化的数据格式,更有利于用户开发动画角色的算法;为用户提供了透明的经典算法调用和编辑接口,加快了算法设计的进程。

1 平台的架构设计

动画角色的数据融合计算,不仅需要编辑动画角色的数据信息,还需要其他图形学算法的支持。现有的支持动画角色模型编辑的建模软件大多封装了底层实现过程,用户难以直接在其上设计动画角色的处理算法。本文针对动画角色的数据形式,设计了带有算法库功能的平台。

图1所示为本文平台的设计架构图,以动画角色的数据表示为基础,设计了支持多格式多数据形式的三维动画角色模型,制定了用于存储动画角色信息的VCC格式文件,支持常用建模软件的导出功能,减小了平台对模型文件格式的依赖性;同时,针对动画角色的特点,摒弃了常见三维模型软件的冗余信息,提高了平台的执行效率和稳定性。

图1 平台的架构

动画角色的处理是图形学的重要研究问题,包含了很多的经典图形学问题,如网格分割、网格融合、运动归一化、运动重定向等。针对这些问题都已有很多的研究成果,经典的图形学处理算法也经常被后人使用。目前,大多数建模软件内置的都是稳定的算法,而想在其上二次开发用户自己的算法,仍是一个难题。本文针对动画角色的融合计算的特点,在平台中集成了可扩展的算法库功能,平台提供了很多的经典算法的支持,也可由用户添加,算法接口完全透明,缩短了算法的开发周期。

2 动画角色的数据表示

本文设计的平台面向动画角色的处理。基于骨架的角色动画将网格表面的点关联到骨架结构,网格变形由骨架的运动来带动。动画角色的三要素如下:① 表示角色外形和表面细节的三维模型;② 表示角色运动结构的骨骼模型及动作序列;③ 表示网格模型和骨骼模型之间映射关系。

如图2所示,本平台的设计围绕着动画角色的计算机辅助设计制作方法,实现了对动画角色的数据透明支持,为了进一步提高平台效率和稳定性,辅助设计了专门针对动画角色的数据存储格式,统一化数据结构,支持常用建模软件的定向导出,最小化三维模型数据的依赖性,最大化用户对模型数据的操作权限,为算法设计铺平了道路。

图2 动画角色三要素组成

现已有部分建模软件支持对三维动画角色的编辑,但由于底层数据的不透明导致在其上设计算法较为困难。比如3DS MAX软件在处理网格模型时,需要将模型转化为可编辑多边形,通过加载自带的网格编辑器来实现;而在处理运动数据时,同样只能使用运动编辑模块来进行调整[3]。然而研究者可能需要在网格上测试自己的新算法,而建模软件固有网格编辑功能以及底层接口的局限性导致了研究者无法在其上完成算法设计,同时,从零开始设计整个算法平台无疑也是耗时耗力。本文设计的动画角色处理平台,支持动画角色的网格、运动以及蒙皮功能,并且数据底层做到了完全透明化,使得用户可直接在其上设计高效算法。

2.1 网格数据表示

三维模型可分为线框模型、表面网格模型和实体模型3类。网格模型只保留了物体最为重要的可视信息,结构简单易于存储,同时对于网格模型的信息存储量较小,因此其绘制和处理比实体模型更加快速,而且比线框模型能表达更多的可视信息。动画角色的模型数据信息采用的是表面网格数据的表现形式,通过对网格表面顶点集合的绘制以及面片贴图的渲染,得到逼近真实的效果。

平台中采用三角网格来表示模型的表面信息,主要包含以下5种网格数据:① 顶点信息,网格的顶点三维坐标数组,用于标记顶点的空间位置;② 法线信息,用于控制场景中光线的传播特性;③ 顶点颜色,顶点的渲染颜色;④ 纹理顶点信息,记录了网格顶点的纹理坐标信息,用于纹理映射;⑤ 面片信息,存储了网格的面片属性,主要存储每个面片的各顶点对应的顶点索引、法线索引以及纹理顶点索引等信息。这些数据基本包含网格计算中所要用到的特征信息,平台将网格的数据接口完全开放,用户不仅可以编辑网格数据,还可跳过数据结构设计而直接开发应用。

2.2 运动数据表示

运动数据是动画角色模型骨架的数据表现形式,是动画角色随着时间变化姿态信息的存储形式。常用的运动数据表示方法有旋转矩阵、欧拉角和四元数3种,这3种运动数据的存储都存在一定的利弊,表1所列为对比结果。本平台对这3种结构都做到了数据支持,用户可根据需求选择对应的运动数据表现形式。

表1 旋转矩阵、欧拉角和四元数的比较

旋转矩阵、欧拉角和四元数都有自己的优缺点,但是它们之间是可以相互转化的[4]。平台以矩阵来表示底层运动数据,并提供了运动数据转化接口来提供用户需求的运动数据。

2.3 蒙皮数据表示

网格数据是动画角色的静态空间结构表示,而运动数据是动画角色骨架动态位姿信息。蒙皮数据就是联系骨架的动态信息与静态网格之间的桥梁。当随着时间轴的前进,骨架的运动通过蒙皮使得每个顶点产生对应的位置变化信息,进而发生网格变形,即为动画。

权重表是蒙皮数据的核心,它存储着每根骨架对网格各顶点的约束比重。权重表由权重项组成,表2所列为权重项的数据结构形式,它包含了影响当前顶点的各骨骼信息以及对应的约束权重。

表2 权重项的数据结构形式

2.4 外部存储形式

动画角色模型是网格数据、运动数据和蒙皮约束数据的结合,类似于3DS MAX的建模软件,大都支持对单一数据的基本处理,而作为整体进行考量时,其底层数据的不透明,则是相应算法设计的一大制肘。为了更好地提升平台对于动画角色的支持,本平台不仅支持常用的3D文件,如OBJ、OFF等,还配套设计了一种专用于存储动画角色的文件格式(VCC动画文件格式),并开发了3DS MAX的对应导出插件,实现动画角色的数据共享。

如图3所示,VCC动画文件格式分为5个部分:文件头、运动数据、蒙皮数据、网格数据以及纹理数据。文件头是对后4项的描述,介绍文件中包含哪几个数据模块,用于文件读取的预处理。

图3 VCC文件格式说明

VCC文件是本平台的辅助动画角色文件存储格式,支持多种格式的数据形式,而3DS MAX软件对于不同格式的数据形式(比如蒙皮约束的表现就有skin和physique 2种修改器)通常需要不同的模块来处理,而且功能单一,用户自定义算法困难。VCC文件的导出插件针对常用的数据存储形式,在导出的过程中智能识别,转化为统一的格式,使得平台的实现摆脱了文件格式和数据格式的局限性,为用户提供了更方便更透明的数据接口。

3 可扩充算法库

在动画角色的研究中,存在着许多经典的研究问题和解决算法。目前,针对动画角色的单一基础问题(比如单纯计算网格的曲率、测地线等)的研究越来越少,随着时间的推移,针对这些问题的算法越来越多,创新也越来越少。而经典问题的经典算法,则是现阶段研究问题的子问题或前提,在此基础上,设计实现更高层的算法。图形学中经典的算法很多,如CGAL库,如果在新算法设计过程中总是重写这些算法,则非常耗时耗力。

同时,动画角色的处理注重算法效率的高低,对比经典同类别算法是常见的算法优劣的评估手段,而为此去复现他人的算法也是设计者不可避免的过程。简单的尚可,更加复杂的算法则会消耗设计者太多的精力。

部分建模软件中集成了经典的图形学算法,但由于底层数据和算法的不开放,设计者无法得知算法的细节特征,更无法控制算法的执行过程,因此,设计不得不从零出发亲自复现这些经典算法,而这势必会给研究设计带来很大的不利影响。

为此,本平台提出了可扩展算法库的设计模式,针对大多数开发者对经典算法的需求,收纳了许多关于动画角色处理过程中使用的经典算法,比如网格特征计算的曲率计算[5]、测地线计算[6]、运动序列归一化处理等,并提供调用接口。

图4所示为平台的算法库设计模式,算法库由经典问题组成,同一问题又可能包含多种解决方法,算法库完全透明,用户可以根据需求编辑已有算法,还能添加自己的算法至算法库。

图4 算法库设计模式

如图5所示,网格分割中常常需要计算顶点的测地线,而网格测地线的计算方法有很多种,近似测地线计算有图论中的最短路径方法Dijkstra算法,精确算法以经典的MMP窗口传播算法为代表,此外还有很多研究者在这2个基础上改进了新算法。当开发者需要计算测地线时,并不需要复现这些算法,而只需要调用平台算法库中测地线计算中的对应方法即可。同时用户自己提出的新测地线计算方法也可以入库供后期使用。

图5 测地线算法调用过程

可扩充算法库的设计使得用户设计新算法更加简单,回避了繁复的算法复现过程,极大地提高了在此平台上设计动画角色相应算法的效率。

4 平台界面和结论

本文以MFC作为UI的设计工具,以Open-GL[7-8]作为场景的渲染引擎,实现了动画角色处理平台。平台支持动画角色模型的多种渲染风格,还支持模型的动画效果。图6所示为犀牛模型的线框、点和面片纹理方式的显示风格以及攻击动作部分动画。

图6 犀牛的显示效果

平台的实现为动画角色的处理提供了条件,为动画角色的网格和运动融合计算奠定了基础,图7所示为在此平台上完成的网格分割[9]和运动归一化算法的效果图,进一步证明了在此平台上实现数据融合计算应用设计的可行性。

图7 平台的算法设计示例

本文针对动画角色模型的数据融合计算应用需求,设计并实现了算法设计的平台。整个平台透明化支持多格式的底层数据表示,设计了可扩展和调用的经典算法库,为动画角色的处理提供了便利的条件,极大地缩短了动画角色处理和算法设计的进程。

[1] 陈大刚.神工鬼斧:3D模型的最优化建立[M].北京:机械工业出版社,2004:10.

[2] 梅小妹,苏剑鸣,张荔军.建筑设计中CAD技术应用现状与发展研究[J].合肥工业大学学报:自然科学版,2007,30(7):899-902,907.

[3] 默多克.3ds Max 9宝典[M].北京:人民邮电出版社,2008:240-265.

[4] Shoemake K.Animating rotation with quaternion curves[J].SIGGRAPH Computer Graph,1985,19(3):245-254.

[5] 方慧兰,王国瑾.网格曲面上离散曲率计算方法的比较和研究[J].计算机辅助设计与图形学学报,2005,17(11):2500-2507.

[6] Surazhsky V,Surazhsky T,Kirsanov D,et al.Fast exact and approximate geodesics on meshes[J].ACM SIGGRAPH,2005,24(3):553-560.

[7] Woo M,Neider J,Davis T,et al.OpenGL programming guide:the official guide to learning openGL[M].USA:Addison-Wesley Longman Publishing Co,Inc,1993:51-112.

[8] Rost J R,Licea-Kane B,Ginsburg D,et al.OpenGL Shading Language[M].3rd ed.USA:Addison-Wesley Professional,2006:17-48.

[9] 全红燕,张田文.基于区域生长的网格模型的分割技术[J].计算机辅助设计与图形学学报,2006,18(7):1011-1016.

猜你喜欢
动画网格建模
用全等三角形破解网格题
做个动画给你看
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
动画发展史
我的动画梦
反射的椭圆随机偏微分方程的网格逼近
基于PSS/E的风电场建模与动态分析
不对称半桥变换器的建模与仿真
动画批评融入动画教育的思考
重叠网格装配中的一种改进ADT搜索方法