基于directx的三维人体建模与运动仿真结题报告(编辑修改稿)内容摘要:
称之为脊椎 0);脊椎 0 连接了脊椎 1 和左右两只大腿;大腿连接小腿,再到脚掌,再往脚趾;而脊椎 1 则往上连接脊椎 2,再到脊椎 3,然后是脖子;此时脖子连接着头部和左右锁骨;锁骨连接上臂,再到下手臂 ,然后是手掌,再是手指。 其层次关系可由如下图 3 表示出来: 信息科学与技术学院 电子工程与信息科学系 ( EEIS) 8 图 3 三维人体模型关节层析结构图 从而,层次结构图中上层关节的运动,则带动与之有连接关系的下层关节的运动。 这便体现了人体关节运动的关联特性。 常言道“牵一发而动全身”,那是因为被弄疼了做出的夸张反应,而此处的“动盆骨则动全身”,则是我们的身体结构所决定的,否则我们的骨架就要脱臼了。 变换矩阵作用原理 常见三维模型有标准网格模型和蒙皮网格模型。 其中标准网格模型只是单纯地以每一个关节部位为单元,存储对应的所有的顶点、相应的材质、纹理信息,以及一组变换矩阵;因此在这种网格模型中,修改变换矩阵所带来的影响是针对一个部位所有的顶点,并且作用的程度是完全一样的。 而在蒙皮网格模型中,采用了另外一种存储方式,其中规定了一系列的骨骼,每个骨骼对应整个人体模型中一组特定的顶点,比如手掌骨骼对应模型中手掌上的一系列顶点;同样的,相应于标准网模型中的顶点集合,在蒙皮网格中顶点也按照归属的骨骼的不同而被分配到不同的顶点集合中。 稍 有不同的是,标准网格中的顶点只能绝对地属于某一特定部位,从而归属于某一特定的集合;而蒙皮网格中的顶点则可以归属于多个与之相关的骨骼,如上臂和下手臂之间连接处的顶点就同时归属于两个骨骼,从而这些连接处的顶点就受到多重变换矩阵的控制。 由此观之,在蒙皮网格与标准网格模型中变换矩阵作用方式是所有区别的,下文分别说明之。 首先介绍蒙皮网格中模型的存储方式和变换矩阵作用原理。 蒙皮网格模型中变换矩阵的作用原理 蒙皮网格模型的存储方式 信息科学与技术学院 电子工程与信息科学系 ( EEIS) 9 蒙皮网格模型在建立过程中便如绘画一般将模型以一个整体的形式构建起来,得到一个完全静态的,不具备受控能力的完整的人体模型。 随后才分块定义不同的骨骼,相当于将一个模型根据所需的精细程度,按部位的不同分割开,然后通过变换矩阵 An 将各个骨骼移动到世界坐标系的中心处,并确保其中与上层关节的连接点与原点重合。 于是在世界坐标系的中心,我们得到一组零散的人体骨骼。 在重新显示完整的人体模型时,再次通过变换矩阵 Bn 将各个骨骼还原到原来的位置上。 当矩阵 Bn 为矩阵 An 的逆矩阵时,模型可以完全还原到原来的模样,当矩阵 Bn 有别于矩阵 An 的逆矩阵时,便得到有别于原始模型的新模型。 所以在蒙皮网格模型的存储过程中,原始模型上的所有的顶点被原样记录下来,其次是各个骨骼对应的变换矩阵 An,然后是将骨骼还原到原始位置或近似原始位置的矩阵 Bn。 蒙皮网格模型的变换矩阵作用原理 [1] yzx( 世界坐标系 )机器手网格骨骼 1关节点 1( 骨骼 1 的坐标系 )( 骨骼 2 的坐标系 )( 骨骼 3 的坐标系 )骨骼 2关节点 2关节点 3骨骼 3蒙皮网格、关节点、骨骼以及相关坐标系 图 4 蒙皮网格模型的变换矩阵作用原理 讲解图一 如图 4 所示,左上角 顶端的坐标系为世界坐标系。 模型上肢 的网格分为上臂、前和手掌 3 个部分。 逐次在上臂、前臂和手掌的 Mesh 内部选定骨骼,形成图中的 3 条骨骼。 其中, 从连接关系上, 骨骼 1 是骨骼 2 的父骨骼,骨骼 2 是骨骼 3 的父骨骼。 角色网格的每一个顶点都有一个局部坐标,这些顶点局部坐标构成 .X 文件的 Mesh 对象的数据。 在角色网格中相继点击鼠标,为角色网格设置一系列的骨骼。 鼠标的首次点击位置就是该骨骼的首关节点,尾关节点由再次点击鼠标选定子骨骼时确定,尾关节点则是子骨骼的首关节点。 在每一条骨骼上建立一个骨骼坐标系。 由于骨骼坐标系会随着骨骼的运 信息科学与技术学院 电子工程与信息科学系 ( EEIS) 10 动而运动,骨骼上的皮肤顶点的骨骼坐标在骨骼的运动过程中保持不变。 yzx( 世界坐标系 )机器手网格骨骼 1骨骼 2骨骼 3皮肤网格、关节点、骨骼以及相关坐标系点 P点 P’ 图 5 蒙皮网格模型的变换矩阵作用原理 讲解图二 如图 5 中的点 P,在骨骼 2 的坐标系下的坐标保持不变。 由于任意两个父子骨骼的坐标系,一定存在一个坐标变换矩阵 Aframe,使得子骨骼蒙皮上顶点的骨骼坐标 Xchild 与该顶点在父骨骼坐标系中的坐标Xfather 满足如下关系式 Xfather = Xchild*Aframe,矩阵 Aframe 称为子骨骼的骨骼矩阵。 如果将根骨骼(层次关系中处于最上层的那块骨骼)的父骨骼坐标系定义为世界坐标系(包含网格顶点坐标的 Frame 所在的坐标系实际就是所谓的局部坐标系),那么,每个骨 骼都有一个骨骼矩阵,折叠矩阵就是在 .X 文件中看到的一系列具有层次关系的 Frame 对象中的变换矩阵。 利用骨骼矩阵,可计算出骨骼蒙皮顶点所在骨骼坐标系下的坐标和世界坐标。 信息科学与技术学院 电子工程与信息科学系 ( EEIS) 11 世界坐标系世界坐标系(顶点的世界坐标 Xwo r l d)局部坐标系 1局部坐标系 M (网格顶点的局部坐标 原始坐标 Xl o c al)某低层骨骼坐标系 n (网格顶点的骨骼坐标 Xn)世界根 F r ame第 2 层 F r ame第 M 层 F r ame (整体组合)第 n 层 F r ame (低层骨骼)…………某高层骨骼坐标系 m (网格顶点的骨骼坐标 Xm)第 m 层 F r ame (局部组合)……* ( AnAn 1…Am…AM +1) 1* ( AnAn 1…Am…AM +1)* ( AnAn 1…Am 1)* ( AmAm 1…AM +1)* ( AMAM 1…A2)* ( A1)注:矩阵 An为骨骼矩阵矩阵 AN为局部变换矩阵 图 6 蒙皮网格模型的变换矩阵作用原理 讲解图三 其中,矩阵“ (An An1…Am…AM+1)1 ”称为骨骼的权重矩阵,是从局部坐标系所在的框架开始遍历到该骨骼,通过各层的骨骼矩阵左乘,然后求逆计算出来的。 骨骼的权重矩阵就是在 .X 文件中各个骨骼的 Skin Weights 对象中的偏移矩阵,用来反响求出顶点在所属骨骼的坐标系下的坐标。 现在烤炉骨骼绕关节点的旋转。 如图 5 所示,骨骼 2 绕关节点 2 抬起,即骨骼 2 绕关节点 2 轴线的一个旋转变换。 旋转后,骨骼 2 的骨骼矩阵(即相对于父骨骼 1 的坐标系)发生改变,而其他子骨骼的骨骼矩阵维持不变。 由此看出,应用反应父子相对关系的骨骼矩阵来存储骨骼动画的运动变化,需要较少的数据更新。 在 .X 文件中,骨骼在某一帧时刻的 Animation Key 矩阵对象就是这些骨骼矩阵。 此时,通过骨骼矩阵自定向下进行乘法累积,可获得旋转后的各个骨骼的世界坐标变换矩阵。 设旋转后的骨骼 2 世界坐标变换矩阵为 W2,顶点旋转后的世界坐标 Xworld_new 和骨骼坐标 Xframe_new 满足关系式 Xworld_new = Xframe_new*W2,由于顶点相对于它的骨骼坐标系的坐标在旋转过程中保持不变,从而 Xframe_new = Xframe_0,因此有 Xworld_new = Xframe_0*W2。 顶点坐在骨骼的权重矩阵为 H,顶点最初始的 Mesh 局部坐标为 X0。 根据权重矩阵的定义,有 Xframe_0 = X0*H。 从而 Xworld_new = Xframe_0*W2 = X0*H*W2,这说明旋转后的顶点世界坐标等于顶点最初始状态下的局部坐标与权重矩阵以及所在骨骼的世界坐标变换矩阵的乘积。 通常,关节点附近的网格顶点可以收到多个骨骼的控制。 如图 7 的点 P 信息科学与技术学院 电子工程与信息科学系 ( EEIS) 12 图 7 蒙皮网格模型的变换矩阵作用原理 讲解图四 当 模型伸手 取物时,骨骼 2 和骨骼 3 均会同时绕着各自的关节点抬起,此时关节点 3 附近的顶点 P,会随着前臂的骨骼 2 和手掌的骨骼 3 的运动而运动。 一次,考虑顶点受到多个骨骼影响的情形,顶点运动后的坐标还要与该顶点的权重值想成。 顶点的权重由 3D建模软件在绘图阶段确定下来,并保存在 .X文件的各个骨骼 SkinWeights 对象的 weights 数组中。 假定顶点 P 受骨骼 2 影响的权重值为α,受骨骼 3 影响的权重值为β,骨骼 2 运动后计算出的顶点 P的局部坐标为 XLocal_2,骨骼 3 运动后计算出的顶点 P 的局部坐标为 XLocal_3,那么顶点 P 最终的坐标应该为 XLocal_2α +XLocal_3β,其中α +β = 1。 更一般地,一个顶点所有受骨骼影响的 权重值之和为 1。 标准网格模型中变换矩阵的作用原理 标准 网格模型的存储方式 标准网格模型的建立过程更像是在制作一台机器,首先我们需要制作构成机器的各个零部件,即人体模型的各个关节,然后再将这些关节拼装起来。 每个关节都将被建立在世界坐标系的中心位置,并且,依据该关节与其他关节的连接关系,确保与上层关节的连接点与原点重合。 由于关节模型的建立并不考虑所需建立的人体模型的尺度问题,所以关节模型中顶点的最大坐标值不超过 ,即这些关节都被建立在由 (1,1,1)、 (1,1,1)、 (1,1,1)、 (1,1,1) 、 (1,1,1) 、(1,1,1) 、 (1,1,1) 、 (1,1,1)八个顶点链接构成的以原点 (0,0,0)为中心,边长为 2 的立方体内。 在构建完整的人体模型时,首先依据所要创建的人体模型的尺度特征,对各个关节分别作一次比例变换 An;其次再利用由旋转变换和平 信息科学与技术学院 电子工程与信息科学系 ( EEIS) 13 移变换组合成的变换矩阵 Bn 分别将它们迁移到世界坐标系中的不同的部位,拼接到一起得到人体模型的样子。 所以在标准网格模型的存储过程中,各个关节模型上的各个顶点被原样记录下来,其次是比例变换 An,再次是用于拼接的变换矩阵 Bn。 标准 网格模型的变换矩阵作用原理 类比蒙皮网格模型变换矩阵作用的原理,只需将蒙皮网格模型中开始的分解模型那一块省去,然后将标准网格模型的比例变换、旋转变换及平移变换综合在一起类比蒙皮网格模型变换中的拼接,就得到了标准网格模型变换矩阵的作用方式了。 此处不再赘述。 .X 文件中的模型及其读取方法 X 文件则是由 Microsoft 为 DirectX 量身定制的一种用于存储数据的文件格式类型,其文件扩展名为 .X。 Direct3D 中也使用了这种文件格式来存储 3D 模型的各个信息,如网格数据,纹理数据,动画关键帧 数据等。 以下从结构和解析方法两方面对 .X 文件做一个简单介绍。 .X 文件的结构说明 理解 .X 文件的结构有助于了解 .X 文件中包含有哪些数据,更有助于理解Direct3D 的库函数可能是怎么读取、解析 .X 文件的,甚至在知道 .X 文件的结构之后,我们可以明白如何去扩展它的功能,让其作用尽可能的得到发挥。 从文件整体结构上 .X 文件分为文件头、数据模板定义和数据对象三个方面。 .X 文件头 .X 文件头包含文件的类型标识符、文件版本、数据记录格式以及数据中浮点数值的位数等信息。 如“ xof 0303txt 0032”,表示 DirectX 版本的,以文本格式记录数据,浮点数值为 32 位的 .X 文件。 数据模板定义 .X 文件中的数据模板 用于定义 .X 文件中数据对象的布局。 它由“ template”关键字、模板名称、一个 GUID( Globally Unique Identification Number 全局唯一标识号)以及数据变量的定义几个部分组成。 [2]对其理解可以类比 C/C++中结构体数据类型的定义,当然还要结合一点编译原理中正则表达式的思想,因为 .X 文件数据模板是允许嵌套定义的。 最具代表性的是 DirectX 标准模板中的“ Frame”模板,它允许嵌套所有其他的模板。 这就意味着在定义模板时,若包含有另一个模板,那么被包含模板所定义的数据对象就可以嵌入到外层模板所定义的数据对象当中去。 依据模板是否嵌套定义,嵌套的原则如何,模板分为普通模板和嵌套模板,其中嵌套模板又分为封闭式、开放式和受限式三种。 重点说明一下模板的全局唯一标识号( GUID): GUID 是一个用于唯一标识模板的编号。 当读取一个 .X 文件到程序中时,只会访问到每个模板的 GUIDs 而不 信息科学与技术学院 电子工程与信息科学系 ( EEIS) 14 是模板的名称。 模板的名称只是在 .X 文件的数据对象定义中时起到模板类型的。基于directx的三维人体建模与运动仿真结题报告(编辑修改稿)
相关推荐
try { // 捕捉异常 if (rs != null) { // 当 ResultSet 对象的实例 rs 不为空时 ()。 // 关闭 ResultSet 对象 } if (stmt != null) { // 当 Statement 对象的实例 stmt 不为空时 ()。 // 关闭 Statement 对象 } if (conn != null) { // 当 Connection
DB 的代码进行了重新编写, 并改名为 Discuz!,既“令人惊异的讨论区”的意思。 进入到 20xx 年初,对于论坛软件的核心技术的开发开发组取得了巨大进展,在世界现有的该种类产品中创新性地实现了 PHP 语法的内核生成、更新机制和缓存的自动创建、以及编译模板系统这些独有的技术,通过对于这些核心技术的应用 Discuz!在效率和运载能力上得到了突飞猛进的提升, Discuz!
强细节,但是算法复杂度太高,邻域窗口大小需要手动操作不断尝试,还会引进许多噪声。 针对 上述问题,本文在 DSP 软件仿真环境下进行了灰度变换的实验。 通过实验发现这种方法对于灰度变化少的图像非常适用。 能有效地抑制背景的增强过度,减少细节简并,能得到层次感较好,特征鲜明的图像。 针对不同特点的图像采用相应的图像增强方法可以达到较好的增强效果。 实现结果表明
科目编号 C 12 先以该字段建立索引标记为“科目 编 号”的普通索引,再以该字段取 值前 4 位建立索引标记为“一级编 号”的普通索引。 月初余额方向 C 2 月初余额 C 14 2 本月借方合计 N 14 2 本月贷方合计 N 14 2 本年借方累计 N 14 2 本年贷方累计 N 14 2 月末余额方向 C 2 月末余额 N 14 2 图 3— 10 科目发生额及余额 登录许可 字段名
具有相同属性的实体具有共同的特性和性质。 用实体名及其属性名集合来抽象和描述同类实体,成为实体型。 6) 实体集( Entity set) 南京邮电大学 20xx 届本科生毕业设计(论文) 9 同型实体的集合称为实体集。 7) 联系( Relationship) 现实世界的事物之间是有联系的。 这种联系反映到信息世界中一般可以分为两类:一类是实体内部的联系,如组成实体的属性之间的联系
xx i n jxxyyy i n j syy 数据归一化后,决策单元 (DMU)形成的前沿面只会发生平移和按比例放缩,但总体形状不变,因此对最后的评价结果是不会产生影响的,归一化后的数据都处于 [, l]之间。 经过归一化后的数据见附表 26至 210。 石河子大学商学院毕业论文 7 指标相关性分析 DEA