基于XNA人体骨骼蒙皮动画关键技术探究

基于XNA人体骨骼蒙皮动画关键技术探究

ID:46666746

大小:78.50 KB

页数:11页

时间:2019-11-26

基于XNA人体骨骼蒙皮动画关键技术探究_第1页
基于XNA人体骨骼蒙皮动画关键技术探究_第2页
基于XNA人体骨骼蒙皮动画关键技术探究_第3页
基于XNA人体骨骼蒙皮动画关键技术探究_第4页
基于XNA人体骨骼蒙皮动画关键技术探究_第5页
资源描述:

《基于XNA人体骨骼蒙皮动画关键技术探究》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于XNA人体骨骼蒙皮动画关键技术探究摘要:人体骨骼蒙皮动画技术是计算机动画领域研究的热点和难点。针对当前骨骼蒙皮动画中关节断裂、皮肤塌陷、顶点计算量大、执行效率低等问题,首先分析了其原理及实现过程,然后以VisualStudio2012+XNA4.0为平台,设计实现了一个骨骼蒙皮动画的引擎框架,并采用优化旋转算法、动画混合、GPU更新顶点等关键技术,提高了动画的执行效率,增强了动画的真实感。关键词:骨骼蒙皮动画;XNA;GPU;动画混合中图分类号:TP391.9文献标志码:A文章编号:1006-8228(2013)0

2、3-13-040引言计算机动画技术已被广泛应用到电影、游戏、军事、航空等领域,它的研究对象包括现实生活或虚拟世界中的云雾雨、河流、各种植物、动物等等,但其中最有难度和最有挑战性的对象之一就是人体动画[1]。人体运动非常复杂,人的形状不规则,肌肉随着人体的运动而变形,头发、皮肤和衣服模拟起来很困难。另外,由于人类对自身的运动非常熟悉,不协调的运动很容易被观察者所察觉。人体的行为通常包括细微行为(如表情变化)、局部行为(如闭眼、手势等)和全身行为(如走、跳、跑等)。本文在分析骨骼蒙皮动画原理的基础上,利用XNA4.0较好地

3、实现了人体骨骼蒙皮动画,并采用多种关键技术对动画进行优化。1骨骼蒙皮动画原理目前实时人体动画技术可分为三类:关键帧动画、关节动画和骨骼蒙皮动画。关键帧动画需要首先存储每一帧动画的网格模型,实质上是一种以空间换时间的动画技术。它的优点是计算量小,速度快,角色也更逼真。如果场景中有几百个动画模型共享相同的动画,这种方法将很有用。但是它的局限性也很明显,首先是占用空间较大,其次是灵活性差,很难与用户进行交互,所以关键帧动画一般用于简单的连续动作的模拟。XNA中使用关键帧动画模型很简单,因为XNA有处理静态模型的类。关节动画是

4、基于面模型的建模方法中的一种,它将骨架层(Skeletonlayer)(如图1左)和皮肤层(Skinlayer)(如图1右)进行刚性连接,动画过程中,通过骨架运动带动相应的皮肤顶点运动[2]。在该方法中,皮肤相对于与之相连的骨骼并没有发生运动,所以只需要用矩阵描述各个骨骼的相对于父骨骼运动,不考虑皮肤的弹性变形,实现简单,计算速度比关键帧动画慢。但由于是刚性连接,在两段骨骼交接处,容易产生裂缝,影响效果。所以关节动画适合对皮肤精度要求不高的场合,如模拟机器人行为。骨骼蒙皮动画可以看作是关键帧动画和关节动画的组合,是目前

5、比较流行的动画技术。它在关节动画的基础上,利用顶点混合(VertexBlend)技术,改变皮肤层顶点的数据结构,使其存储影响这些顶点位置的骨骼信息及影响的权值,然后通过“蒙皮”算法得到顶点的最终位置。使用“蒙皮”算法相当于在骨骼关节上动态蒙皮,有效解决了裂缝问题。但由于“蒙皮”算法中权值的指定是由人工完成,而且在较大关节部分(如肩膀)权值的指定很困难,容易出现如"塌陷(collapse)"、"裹糖纸(candywrapper)效应等变形问题[2]。文献[3]中,夏开建等提出了一种改进的“蒙皮”算法,使用向皮肤可变区域中

6、增加辅助节点的方法很好地改善了变形问题,本文将按此改进的"蒙皮”算法进行皮肤顶点位置的计算。2基于XNA的骨骼蒙皮动画的设计2.1动画模型的创建骨骼蒙皮动画的创建一般分为模型的创建和动画的创建,逼真的动画模型需要由具有丰富经验的建模师和动画师通过专业的3D软件如3DMAX、Maya等实现。模型中还需要存储相关数据信息:2.1.1模型数据静态的模型包括骨骼层以及包围它的皮肤层。模型中需要存储用于骨骼蒙皮动画的相关信息,主要包括骨骼的层次结构和皮肤的顶点信息。骨骼的层次结构是指按照角色的身体特征构成一个层次结构。图2给出了

7、人体骨骼的层次结构,箭头由父骨骼指向子骨骼,从子骨骼用矩阵乘法累积到最顶层的根骨骼,就可求得每个子骨骼相对于世界坐标系的变换矩阵。皮肤的顶点信息包括顶点的索引、与顶点关联的骨骼索引及权值、顶点的颜色、顶点的法向量等。2.1.2动画数据从程序员的角度来看,动画数据就是动画过程中的骨骼关键帧以及变换矩阵,由它们来决定模型的运动。在XNA中,可以将动画的变换矩阵存放在模型内部,但是对于动画比较复杂的模型,一般存储在单独的animation文件中,这样便于对模型进行驱动和人机交互,以及进行动画混合。2.2数据的载入在使用XNA

8、进行游戏编程时,首先要将3D软件创建的动画模型文件(X格式或FBX格式)转换成XNB格式,才能被XNA的内容读取器(ContentReader)读取。在XNA中,程序员使用内容管道(ContentPipeline)来加载硬盘上的资源[4](如3D模型、2D图像、声音等)。这个过程分为两步:当项目被编译时,内容管线从硬盘读取资源,将

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。