版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第12章动画技术第12章动画技术1骨骼动画基础刚体动画蒙皮动画刚体动画蒙皮动画刚体动画蒙皮动画理解骨骼动画原理理解蒙皮动画原理骨骼动画基础刚体动画刚体动画理解骨骼动画原理12.1骨骼动画基础1.为什么使用顶点混合12.1.1顶点混合概念骨骼动画是用于在计算机上模拟或再现动物运行的技术。一个骨骼动画由骨骼支撑下的顶点运动构成。如果有网格附着在骨骼上,就必须将网格分割成受不同骨骼控制的片断,骨骼运动时势必导致网格断裂,或者部分重叠。实际应用模型动画是采用网格与多个骨骼共同协作完成的。将蒙皮分割成受到不同骨骼控制的片段适合刚体动画例如机器人关节处出现断裂、重叠现象12.1骨骼动画基础1.为什么使用顶点混合12.1.1顶12.1骨骼动画基础1.为什么使用顶点混合12.1.1顶点混合概念要使网格在弯曲时实现平滑过渡,需要使用顶点混合技术。渲染系统在顶点上使用额外的世界变换矩阵进行变换,得到多个结果,然后再进行线性混合。所谓混合就是根据多个顶点,按照一定的比例计算中间值即权重,混合:根据多顶点,按照一定比例计算出一个中间值。权重:这个比例称之为权重(weight),它代表了一个顶点对结果的影响程度,所有顶点的权重之和为1。混合与权重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顶点混合概念12.1骨骼动画基础2.顶点权重12.1.1顶点混合概念权重信息由美术师设计角色时用建模工具定义。水平部分受到水平骨骼影响的权重为1,在关节附近影响的程度减小,权重也减小,超过一定范围不受水平骨骼影响。12.1骨骼动画基础2.顶点权重12.1.1顶点混合概念12.1骨骼动画基础3.在DirectX中使用顶点混合12.1.1顶点混合概念Vn=VTnWn权重存储每个顶点受到各个骨骼影响的权重各不相同。骨骼数量较少在顶点中附加几个骨骼的权重信息很容易。权重信息是存储在顶点中的DirectX支持最多顶点3个权重用于混合,每个权重对应特定的矩阵。12.1骨骼动画基础3.在DirectX中使用顶点混合1212.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中使用顶点混合1212.1骨骼动画基础3.在DirectX中使用顶点混合12.1.1顶点混合概念2)指定权重个数。d3dDevice->SetRenderState(D3DRS_VERTEXBLEND, D3DVBF_2WEIGHTS);DirectX支持多达3个权重(4个世界变换矩阵)用于顶点混合。typedefenum_D3DVERTEXBLENDFLAGS{D3DVBF_DISABLE=0, //关闭D3DVBF_1WEIGHTS=1, //1权重,2个矩阵D3DVBF_2WEIGHTS=2, //2权重,3个矩阵D3DVBF_3WEIGHTS=3, //3权重,4个矩阵D3DVBF_TWEENING=255, //用D3DRS_TWEENFACTOR对两个点混合D3DVBF_0WEIGHTS=256 //使用单一矩阵,权重为1.0}D3DVERTEXBLENDFLAGS;12.1骨骼动画基础3.在DirectX中使用顶点混合1212.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骨骼动画基础3.在DirectX中使用顶点混合1212.1骨骼动画基础4.索引顶点混合12.1.1顶点混合概念骨骼系统比较复杂时,需要反复切换矩阵,效率较低。DirectX提供一种索引的方法使用矩阵:索引顶点混合(IndexedVertexBlending)注意:这里的索引是对混合进行索引,和顶点索引没有任何关系。设备可以设置多达255个矩阵,用4个字节足够存储4个索引:m_pD3DDevice->SetRenderState( D3DRS_INDEXEDVERTEXBLENDENABLE,TRUE);12.1骨骼动画基础4.索引顶点混合12.1.1顶点混合12.1骨骼动画基础12.1.2运动插值 关键帧动画使用像素图,因此只能做到近似的平滑。骨骼动画也使用关键帧存储一系列关键的状态数据,利用这些数据可以计算出关键帧中间的一些状态,因此能够实现平滑的动画。矩阵存储骨骼状态,但插值困难,一般都是用缩放、旋转和平移变量进行插值。存储运动数据的数据类型:向量:存储缩放比例和平移量。四元数:存储转动量。12.1骨骼动画基础12.1.2运动插值 关键帧动画使12.1骨骼动画基础12.1.2运动插值 1.向量线性插值向量插值较为简单,插值方法分为线性插值和二次曲线插值算法。V=Vn*t+Vn+1*(1-t)D3DXVECTOR3*D3DXVec3Lerp(D3DXVECTOR3*pOut,CONSTD3DXVECTOR3*pV1,CONSTD3DXVECTOR3*pV2,FLOATs //插值系数t);12.1骨骼动画基础12.1.2运动插值 1.向量线性骨骼动画也是利用类似传统2维动画关键桢实现的,由于一个模型的皮肤顶点数据量庞大,所以不可能记录每桢皮肤顶点的坐标信息,所以我们存储的是数量较少的骨骼的每桢的顶点变化信息,播放时让每个骨骼按照记录的状态切换到相应的位置,再去用某种方式再去影响皮肤位置就能模拟动物运动了。骨骼动画也是利用类似传统2维动画关键桢实现的,由于一个模型的12.2刚体动画12.2.1骨骼模型的构成1.为什么要使用骨骼动画直接存储、播放顶点帧动画,由于顶点较多,存储和渲染效率较低。实际使用骨骼存储动画信息。皮肤的位置由骨骼驱动,骨骼的运动是造成动物运动的关键。动画数据只要存储每个骨骼的运动信息。动画设计师可以专门地从事动画设计,可以用动作捕捉仪或是用三维建模工具建立动画序列。12.2刚体动画12.2.1骨骼模型的构成1.为什么要使骨骼动画的思想很简单,自然界中的大多数动物都用有一套骨骼,身体的皮毛血肉都依附于骨骼,当骨骼开始运动的时候,都依附于骨骼的皮肉都随骨骼一起运动。在三维图形编程领域,角色的躯体是由网格来表示的,网格由大量三角形组成,三角形由定点组成,为了模仿现实世界中角色自身的动作,就需要为角色网格添加一套骨骼,同时需要确定那些顶点依附于那块骨骼,这样当骨骼运动的时候就能牵引依附骨骼的顶点一起运动,这就是骨骼动画的基本原理。骨骼动画的思想很简单,自然界中的大多数动物都用有一套骨骼,动画技术论述ppt课件动画技术论述ppt课件动画技术论述ppt课件动画技术论述ppt课件每个骨骼都包含完整的坐标系统,在这个坐标系下如果存在一个网格,顶点都是以本地坐标系的形式存储的,那么在渲染他的时候需要将他转换到世界坐标系。骨骼在转化为数学模型时,包含名称和一个矩阵,这个矩阵用于将顶点从本地空间转换到父结点空间的变换矩阵。那么我们就需要将子结点的所有顶点和这个矩阵进行相×,然后父结点再乘以父结点的父结点,直到根节点为止。最终才能把模型中所有的顶点转换到世界空间。每个骨骼都包含完整的坐标系统,在这个坐标系下如果存在一个网格动画技术论述ppt课件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.1骨骼模型的构成3.骨骼的数学模型12.2刚体动画12.2.1骨骼模型的构成3.骨骼的数学12.2刚体动画12.2.2动画信息1.动画序列既然骨骼的的状态是由自身的变换矩阵决定的,那么要实现骨骼动画,只要不断改变这个变换矩阵(通过2各关键帧之间的插值计算获得),并且不断的进行渲染。每个关键帧存储各个骨骼的状态信息,它可以是一系列数组。数组元素包含:状态信息(位移、缩放和旋转角度)和时间。每个骨骼的状态信息都是相对于父节点的信息,因此,每个骨骼的运动信息可以根据实际帧数单独存储。每个骨骼对应一个数组。12.2刚体动画12.2.2动画信息1.动画序列既然骨骼12.2刚体动画12.2.2动画信息1.动画序列一个骨骼系统可以有多个动画序列和它对应。骨骼系统支持多种动画。在播放的时候可以切换不同的动画序列就可以了。在DirectX中:实现动画序列的接口为:ID3DXAnimationSet。单个骨骼动画控制的接口为:ID3DXKeyFrameInterpolator。它内置了缩放,平移,和旋转的关键桢。动画控制接口:ID3DXAnimationController。负责管理骨骼,蒙皮和动画信息。12.2刚体动画12.2.2动画信息1.动画序列一个骨骼12.2刚体动画12.2.2动画信息2.动画的播放当要更新骨骼时,需要遍历当前动作序列,更新所有骨骼的状态信息。状态信息是相对于父节点的,因而不能直接用于三角形渲染,必须计算骨骼的世界变换矩阵。首先根据动画序列中每个骨骼的关键桢信息,计算当前的时刻的状态,这个状态以向量和四元数的形式存储,需要转为矩阵,然后用这些矩阵逐一的更新所有的骨骼节点的本地父结点空间的变换矩阵。Directx使用AnimationController实现本地到父结点的空间变化根据动画序列中每个骨骼的关键帧信息更新骨骼相对变换矩阵更新骨骼节点的世界变换矩阵(递归函数)12.2刚体动画12.2.2动画信息2.动画的播放当要更12.3蒙皮蒙皮即Mesh,它和骨骼关联(绑定)后才能在骨骼的作用下产生变形,从而实现动画。12.3蒙皮蒙皮即Mesh,它和骨骼关联(绑定)后才能在骨小结(理论课)本章主要介绍了骨骼动画的基本原理:骨骼动画基础刚体动画蒙皮动画小结(理论课)本章主要介绍了骨骼动画的基本原理:小测验(题目部分)单选题1.下列选项中对顶点混合理解正确的是()。A.顶点混合就是将几个顶点合并生成一个顶点以减少三角形面数B.顶点混合就是将几个矩阵合并成一个矩阵以便减少计算量C.顶点混合就是将一个顶点经过几种不同的变换再求平均值D.顶点混合就是对一个顶点进行几种不同变换,再求加权平均值2.DirectX中一个顶点最多支持几个权重?()A.2 B.8 C.3 D.2553.DirectX中当使用索引顶点混合时,最多有几个权重和几个矩阵索引?()A.4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Python基础与大数据应用(第2版)(微课版) 教案 单元 11 Python 可视化与可视化工具
- 第8章 团队领导行为
- 2026房地产市场展望
- 军事定向越野识图与路线选择训练大纲
- 四川省绵阳市2026年九年级中考一模历史试卷附答案
- 家庭农场经营绩效的评估与提升研究报告
- T∕CNLIC 0195-2025 健康家居 电冰箱果蔬健康存储评价规范
- 医生临床考试试题及答案
- 2024-2025学年浙江省9+1高中联盟高二(下)期中信息技术试卷试卷(含答案)
- 慢性颈肩腰腿痛中西医诊疗指南 (2026 版)
- 俄语拼音教学课件
- 2025年高考湖南卷物理真题(解析版)
- 【Aspen流程模拟二甲基亚砜生产的案例1200字】
- 煤巷掘进工作面防突专项设计
- 高中数学统计试题及答案
- 幸福心理学-(彭凯平)
- DB32-T 4289-2022 安全生产培训机构教学服务规范
- 统计用产品分类目录
- 2024年高考真题江苏卷化学试题(原卷版)
- 连云港市社会组织促进会微信公众号策划方案
- 2025高考物理步步高同步练习必修3练透答案
评论
0/150
提交评论