动画技术课件_第1页
动画技术课件_第2页
动画技术课件_第3页
动画技术课件_第4页
动画技术课件_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第12章动画技术骨骼动画基础刚体动画蒙皮动画刚体动画蒙皮动画刚体动画蒙皮动画理解骨骼动画原理理解蒙皮动画原理12.1骨骼动画基础1.为什么使用顶点混合12.1.1顶点混合概念骨骼动画是用于在计算机上模拟或再现动物运行的技术。一个骨骼动画由骨骼支撑下的顶点运动构成。如果有网格附着在骨骼上,就必须将网格分割成受不同骨骼控制的片断,骨骼运动时势必导致网格断裂,或者部分重叠。实际应用模型动画是采用网格与多个骨骼共同协作完成的。将蒙皮分割成受到不同骨骼控制的片段适合刚体动画例如机器人关节处出现断裂、重叠现象12.1骨骼动画基础2.顶点权重12.1.1顶点混合概念假设顶点为Vn,该顶点的权重为Wn。一般由建模软件计算。vBlend=V1W1+V2(1.0-W1)//2个影响vBlend=V1W1+V2W2+V3(1.0-(W1+W2))//3个影响vBlend=V1W1+V2W2+V3W3+V4(1.0-(W1+W2+W3))//4个影响几个权重之和为1.0,因此其中一个可以通过其他权重计算出来,在存储时可以少存储1个权重。DirectX支持最多4个世界顶点的混合,因此每个顶点可以包含2~4个矩阵信息(矩阵索引)和1~3个权重信息。12.1骨骼动画基础2.顶点权重12.1.1顶点混合概念权重信息由美术师设计角色时用建模工具定义。水平部分受到水平骨骼影响的权重为1,在关节附近影响的程度减小,权重也减小,超过一定范围不受水平骨骼影响。12.1骨骼动画基础3.在DirectX中使用顶点混合12.1.1顶点混合概念Vn=VTnWn权重存储每个顶点受到各个骨骼影响的权重各不相同。骨骼数量较少在顶点中附加几个骨骼的权重信息很容易。权重信息是存储在顶点中的DirectX支持最多顶点3个权重用于混合,每个权重对应特定的矩阵。12.1骨骼动画基础3.在DirectX中使用顶点混合12.1.1顶点混合概念1)设置世界变换矩阵。顶点混合使用额外的世界变换矩阵。矩阵类型:D3DTS_WORLDMATRIX(n)或D3DTS_WORLDn。其中n取0~255,矩阵索引可使用一个字节存储。m_pD3DDevice->SetTransform(D3DTS_WORLDMATRIX(0),&matBlend[0]);m_pD3DDevice->SetTransform(D3DTS_WORLDMATRIX(1),&matBlend[1]);m_pD3DDevice->SetTransform(D3DTS_WORLDMATRIX(2),&matBlend[2]);12.1骨骼动画基础3.在DirectX中使用顶点混合12.1.1顶点混合概念3)顶点定义。权重的格式:D3DFVF_XYZB1、D3DFVF_XYZB2或D3DFVF_XYZB3。顶点应该包含每个矩阵的权重信息,用于指定顶点混合系数。#defineD3DFVF_BLENDVERTEX(D3DFVF_XYZB3|D3DFVF_NORMAL|D3DFVF_TEX1)structBLENDVERTEX{D3DXVECTOR3v;//位置FLOATblend1;//权重1FLOATblend2;//权重2FLOATblend3;//权重3D3DXVECTOR3n;//法线FLOATtu,tv;//纹理坐标};12.1骨骼动画基础12.1.2运动插值 关键帧动画使用像素图,因此只能做到近似的平滑。骨骼动画也使用关键帧存储一系列关键的状态数据,利用这些数据可以计算出关键帧中间的一些状态,因此能够实现平滑的动画。矩阵存储骨骼状态,但插值困难,一般都是用缩放、旋转和平移变量进行插值。存储运动数据的数据类型:向量:存储缩放比例和平移量。四元数:存储转动量。骨骼动画也是利用类似传统2维动画关键桢实现的,由于一个模型的皮肤顶点数据量庞大,所以不可能记录每桢皮肤顶点的坐标信息,所以我们存储的是数量较少的骨骼的每桢的顶点变化信息,播放时让每个骨骼按照记录的状态切换到相应的位置,再去用某种方式再去影响皮肤位置就能模拟动物运动了。12.2刚体动画12.2.1骨骼模型的构成1.为什么要使用骨骼动画直接存储、播放顶点帧动画,由于顶点较多,存储和渲染效率较低。实际使用骨骼存储动画信息。皮肤的位置由骨骼驱动,骨骼的运动是造成动物运动的关键。动画数据只要存储每个骨骼的运动信息。动画设计师可以专门地从事动画设计,可以用动作捕捉仪或是用三维建模工具建立动画序列。骨骼动画的思想很简单,自然界中的大多数动物都用有一套骨骼,身体的皮毛血肉都依附于骨骼,当骨骼开始运动的时候,都依附于骨骼的皮肉都随骨骼一起运动。在三维图形编程领域,角色的躯体是由网格来表示的,网格由大量三角形组成,三角形由定点组成,为了模仿现实世界中角色自身的动作,就需要为角色网格添加一套骨骼,同时需要确定那些顶点依附于那块骨骼,这样当骨骼运动的时候就能牵引依附骨骼的顶点一起运动,这就是骨骼动画的基本原理。每个骨骼都包含完整的坐标系统,在这个坐标系下如果存在一个网格,顶点都是以本地坐标系的形式存储的,那么在渲染他的时候需要将他转换到世界坐标系。骨骼在转化为数学模型时,包含名称和一个矩阵,这个矩阵用于将顶点从本地空间转换到父结点空间的变换矩阵。那么我们就需要将子结点的所有顶点和这个矩阵进行相×,然后父结点再乘以父结点的父结点,直到根节点为止。最终才能把模型中所有的顶点转换到世界空间。12.2刚体动画12.2.1骨骼模型的构成3.骨骼的数学模型MCM2=MTM2*MTM1从bone2转换到世界坐标系的变换矩阵为:其中:从bone1的坐标系转换到世界坐标系的转换矩阵为MTM1从bone2的坐标系转换到bone1的坐标系的转换矩阵为MTM2MCM3=MTM3*MCM212.2刚体动画12.2.1骨骼模型的构成3.骨骼的数学模型12.2刚体动画12.2.2动画信息1.动画序列一个骨骼系统可以有多个动画序列和它对应。骨骼系统支持多种动画。在播放的时候可以切换不同的动画序列就可以了。在DirectX中:实现动画序列的接口为:ID3DXAnimationSet。单个骨骼动画控制的接口为:ID3DXKeyFrameInterpolator。它内置了缩放,平移,和旋转的关键桢。动画控制接口:ID3DXAnimationController。负责管理骨骼,蒙皮和动画信息。12.2刚体动画12.2.2动画信息2.动画的播放当要更新骨骼时,需要遍历当前动作序列,更新所有骨骼的状态信息。状态信息是相对于父节点的,因而不能直接用于三角形渲染,必须计算骨骼的世界变换矩阵。首先根据动画序列中每个骨骼的关键桢信息,计算当前的时刻的状态,这个状态以向量和四元数的形式存储,需要转为矩阵,然后用这些矩阵逐一的更新所有的骨骼节点的本地父结点空间的变换矩阵。Directx使用AnimationController实现本地到父结点的空间变化根据动画序列中每个骨骼的关键帧信息更新骨骼相对变换矩阵更新骨骼节点的世界变换矩阵(递归函数)12.3蒙皮蒙皮即Mesh,它和骨骼关联(绑定)后才能在骨骼的作用下产生变形,从而实现动画。小测验(题目部分)单选题1.下列选项中对顶点混合理解正确的是()。A.顶点混合就是将几个顶点合并生成一个顶点以减少三角形面数B.顶点混合就是将几个矩阵合并成一个矩阵以便减少计算量C.顶点混合就是将一个顶点经过几种不同的变换再求平均值D.顶点混合就是对一个顶点进行几种不同变换,再求加权平均值2.DirectX中一个顶点最多支持几个权重?()A.2 B.8 C.3 D.2553.DirectX中当使用索引顶点混合时,最多有几个权重和几个矩阵索引?()A.4,4 B.4,3 C.3,4 D.3,255多选题4.关于插值方法,下列说法错误的是()。A.二次曲线插值比线性插值平滑B.四元数最好使用线性插值,即Q=Q1*w1+Q2*(1-W1)C.一个顶点所有权重之和为1D.骨骼动画中的插值是对矩阵加权平均求一个混合矩阵小测验(答案部分)单选题1.下列选项中对顶点混合理解正确的是(D)。A.顶点混合就是将几个顶点合并生成一个顶点以减少三角形面数B.顶点混合就是将几个矩阵合并成一个矩阵以便减少计算量C.顶点混合就是将一个顶点经过几种不同的变换再求平均值D.顶点混合就是对一个顶点进行几种不同变换,再求加权平均值2.DirectX中一个顶点最多支持几个权重?(C)A.2 B.8 C.3 D.2553.DirectX

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论