章3-角色(二、三维角色人体模型,场景建模)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Baidu Nhomakorabea
3.2.2 骨骼动画简介
骨骼动画(SkeletalAnimation,又叫 BoneAnimation)可以看作 是关节动画和关键帧动画的结合。 骨骼动画兼具了两类动画的优点又 克服了它们的缺点。 骨骼动画的实现思路是从人身体的运动方式而来 的, 它基于面模型的方法把角色建模为两层: 骨架层 (Skeleton layer) 和皮肤层(Skin layer) ,与基于层次式模型方法不同,骨骼动画建
的骨架运动时,身体就会跟着骨架一起运动。骨架是由一定数目的骨 骼组成的层次结构, 每一个骨骼的排列和连接关系对整个骨架的运动 有很重要的影响。每一个骨骼数据都包含其自身的动画数据。和每个 骨架相关联的是一个“蒙皮”(Skin)模型,它提供动画绘制所需要的 几何模型信息(Vertex信息,Normal信息等)和纹理材质信息。每个顶 点都有相应的一组权值(Weight), 这些权值定义了骨骼的运动对有关 顶点的影响因子。 当把动画人物的姿势和全局运动信息作用到骨架上 时,这个“蒙皮”模型就会跟随骨架一起运动。
3.2 骨骼动画原理
骨骼动画(Skeletal Animation)[9]又叫Bone Animation,它与 关键帧动画(Key-frame Animation)相比,占用空间小,因为它不需 要像关键帧动画那样在每一帧中存储各个顶点的数据, 而只需要存储 骨骼变换数据,骨骼与顶点相比,当然要少得多。所以骨骼动画有很 多优势,当然其技术难度也很高。骨骼动画在计算机图形学中是一个 十分重要的内容,不管是在游戏、电影动画还是虚拟现实中,生动逼 真的角色动画(人、动物等)会使其增色不少。 骨骼动画的实现思路是从人的身体的运动方式而来的。 动画模型 的身体是一个网格(Mesh)模型,网格的内部是一个骨架结构。当人物
图 2-2 骨骼动画的骨骼结构图(左)和角色模型图(右) 蒙在骨骼之上的皮肤层,它是一个蒙皮(skin)模型(如图 2-2 右) ,它提供动画绘制所需要的几何模型信息,定义了角色的外观。 这里的皮肤不是固定不变的刚性网格, 而是可以在骨骼影响下可变形 的网格。类似于关键帧中的顶点网格,每个角色模型只需要保存一个 网格模型的数据;不同于关键帧动画,在动画文件中不需要在每个关 键帧中保存顶点信息。
3.2.3 骨骼动画的载入
1.先来看看静态模型的载入。 由上文的论述可知,静态模型的载入过程实际上是对网格数据、 索引数据以 及骨架层次三类信息的载入过程。 如何对这三个信息予以管理以便于 骨骼动画的实现是骨骼动画实现的基础, 因为骨骼动画的驱动过程就 是依靠这些结构来实现的,下面将对它们分别予以分析。 1、网格数据的载入和管理 对于单个顶点来说,可能需要保持的信息是相当多的,比如纹理 坐标信息,颜色信息,顶点信息等等,这用于渲染的顶点信息是对称 的,即每个顶点所需要的存储空间是一样的。 此外,为了实现骨骼动画算法,顶点需要保持与骨骼动画相关的 信息,如与该顶点相关联的骨骼索引组,以及每个骨骼的影响权值组 等等。值得一提的是,并不是所有皮肤顶点所关联的骨骼数目都是统 一的, 比如在关节处的顶点所关联的骨骼数肯定要多于非关节处顶点 所关联的骨骼数目。 因此可以通过两个不同的顶点结构来保存两者。 这样做的好处在 于,用于渲染的顶点结构,它直接记录了渲染所需要的信息;而用于 骨骼动画计算的顶点信息, 它包含了骨骼动画实时运算所需要的顶点 数据。 2、索引数据的载入和管理 索引数据主要是用来保存顶点之间的连接关系, 每三个顶点构成
第三章角色 3.1 前言
“角色”一词的源于戏剧,自 1934 年米德(G.H.Mead)首先运用 角色的概念来说明个体在社会舞台上的身份及其行以后, 角色的概念 被广泛应用于社会学与心理学的研究中。 社会学对角色的定义是“与 社会地位相一致的社会限度的特征和期望的集合体”。 角色是一个抽 象的概念,不是具体的个人,它本质上反映一种社会关系,具体的个 人是一定角色的扮演者。 而在我们动漫产业中,角色更是一个非常重要的元素,没有一个 吸引人的角色, 就出不了一个好的作品。 我们本章来介绍角色的建模。
图 2-3 人体骨骼组织结构图 对所有的骨骼要有一个统一的编号。在载入过程中,只需记录每 块骨骼的父骨骼信息和子骨骼信息, 这实际上是一个双向链式树形结 构。这样,当在应用程序实时运行的时候,一旦需要获得父骨骼的平 移旋转信息, 凭借父骨骼编号, 就可以迅速的找到对应的父骨骼节点。 可以定义下面的数据结构予以保存 骨骼数据结构 {
图 2-1 关节动画组织结构图
第一类是关节动画(Joint Animation) 。关节动画中的角色模型由若 干相互独立的部分组成(如图 2-1) 。每一部分对应一个独立的网格 模型,相应的对应于某一个身体关节,不同的部分按照角色的身体特 征组织成一个层次结构。比如说,一个人体模型可以由头,身体,右 上臂,右小臂,右手,左上臂,左小臂,左手,右大腿,右小腿,右 脚,左大腿,左小腿,左脚等各部分组成。而某个部分,可能是另一 个部分的子节点,同时又是另一个部分的父节点。通过改变不同关节 之间的相对位移和夹角等,就可以实现所需要的各种动画效果。这类 动画的优点是: 在动画的每个关键帧中只需存储关节之间的相对变化, 因此动画 文件需要的存储空间很小。关节动画的缺点是:在关节之间的连接处 往往会有很明显的接缝,这会对模型的真实感造成严重影响。目前关 节动画的应用范围主要在辅助教学领域。
动画。可见,动画的创建过程就是对骨骼变换的过程。 上述两种数据的创建都可以通过专业的 3D 动画编辑软件如 3DMAX、Maya 等实现,但合适逼真的角色动画工作需要建模师和动画 师有相当多的经验。
3.2.3 骨骼动画数据信息
在美术师们完成了原始数据的创建之后,一般这些数据还是以 3D 动画编辑软件内部的数据结构进行存储,比如 3DMAX 采用的.max 文件结构。要使得这些数据被应用程序使用,还需要程序开发者将它 们转化为适合于程序使用的数据结构。这就需要编写导出插件,用于 将原始数据转化为需要的形式。例如 Panda XExporter 就是一个广为 人知的导出插件,它可以将.max 文件转换为.x 文件所要求的数据格 式。一般来说,每个游戏厂商都会有自己的骨骼动画引擎,相应的就 需要有对应的插件来实现数据结构的转换。由于这些涉及到 3D 动画 编辑软件内部的数据存储管理,对本文讨论的主题没有太多的意义, 因此本文不会涉及这些插件技术的内部细节。为了便于后面的讨论, 下面将会对转换后的骨骼动画信息进行归纳总结。 对应于原始数据,在通过插件导出之后,一般通过两种不同的文 件结构分别保存角色模型数据和角色动画数据, 下面分别对它们进入 分析。 一、角色模型数据 由于骨骼动画的需要,在静态角色模型中,不仅仅要包含角色网
3.2.1 实时角色动画
由于骨骼动画是从另外两种实时角色动画发展演变而来,因此, 为了更好的理解骨骼动画的原理,就很有必要对它们进行研究分析。 角色动画是计算机动画技术的一个重要组成部分, 也是计算机图形学 的一个重要分支。在实时渲染环境下,主要应用于虚拟现实,视频游 戏,甚至是建模软件,动画制作软件。现在,随着计算机硬件技术的 发展,特别是带有硬件加速功能的显卡性能的提高,实时渲染的角色 动画技术得到了较快的发展且被广泛的应用。目前,实时角色动画技 术大体可分为三种类型。
格模型信息, 而且还要包含用于骨骼动画的相关信息。 这些信息包括: 角色网格数据:包括所有皮肤顶点信息,每个蒙皮顶点中包含的 信息至少包括:与该顶点相关联的骨骼索引组,以及每个骨骼的影响 权重值组,顶点初始位置信息(注:还有可能包含其他的信息比如纹 理坐标信息,顶点颜色信息,顶点法线信息等等,但本文在此只关注 骨骼顶点相关的信息) 。由于是单一网格模型,对每个顶点来说,对 应的信息只需保存一次。 模型索引数据:索引数据主要是用来保存顶点之间的连接关系, 每三个顶点构成一个三角形面, 而三角形面即是用于渲染的基本图元, 索引数据每三个为一组记录的这种三角面关系。 骨骼层次信息:每个角色都有一个骨架层次结构,一般是树形结 构。 对所有的骨骼要有一个统一的编号, 每块骨骼都要记录其父骨骼。 二、角色动画数据 从动画师的角度看,动画就是可视化的骨骼变换操作。从程序开 发者的角度来看,每个动画文件中要保存的信息如下: 1、每块骨骼的关键帧编号。对于一块骨骼而言,它的变换信息 是通过关键帧的形式保存的,比如需要在第一、三、七、十帧中记录 一块骨骼的变换信息,那么第一、三、七、十帧就是需要保存的关键 帧。 2、每个关键帧的变换信息。对于一块特定骨骼的特定关键帧来 说,需要记录其变换信息,一般是通过矩阵记录的。
一个三角形面,而三角形面既是用于渲染的基本图元,索引数据每三 个为一组记录了这种三角面关系。 3、骨骼层次信息的载入管理 为了实现骨骼动画,每个角色都有一个骨架层次结构,一般是树 形结构。如图 2-3 所示是角色模型的骨架层次结构,按照不同的细节 要求可以对骨架进行更细微的分解。其中向下箭头表示父子关系,向 右箭头表示兄弟关系。
3.2.3 骨骼动画创建
骨骼动画的创建过程其实就是预处理的过程, 这一过程是由美术 创作者完成的, 必要的时候可能会分别由 3D 建模工程师和 3D 动画工 程师分别完成模型造型和动画制作工作。 但也需要跟程序开发者有良 好的沟通,比如模型的骨架层次定义、模型子网格划分等等。下面就 对模型造型和动画制作分别予以讨论。 因为本文的目的是研究骨骼动 画技术,因此,本文完全没有涉及动画领域的艺术性问题。讨论美术 创作者的工作也是为了便于讨论骨骼动画所涉及到的原始数据构成, 以方便对骨骼动画有完整的理解。 角色模型的创建: 角色静态模型一般是指骨骼动画中用来被骨骼 动画参考的静态模型,它是一个单一网格模型。所有的动画将基于该 静态模型创建, 即动画数据中的平移旋转信息均是相对于该静态模型 的。对于该网格的创建,有一些要求,比如在关节处的顶点数目应该 多一些(如图 2-2 右) 。角色骨骼层次也要对应的创建起来,并且骨 骼的大小和位置关系应该与皮肤网格相适应。另外最重要的一点,还 要指定网格上的顶点到骨骼的映射关系以及相应的影响权值。 每块骨 骼都一个影响范围,在这个范围内的顶点都要受到该骨骼的影响。每 个顶点至少要受到一块骨骼的影响, 但在关节处的顶点往往可能会受 到多块骨骼的影响,这些骨骼通过对应的权值来叠加作用到该顶点。 因此在指定权值时,一般需要有经验的动画师来实现。 动画的创建:即通过操作骨架结构的变换来构建角色动画。设置 每块骨骼的运动信息,使其带动网格模型上各个顶点运动,从而形成
第二类是关键帧动画( Key-frame Animation )也叫顶点动画 (VertexAnimation) 。 关键帧动画中的角色模型由一系列的渐变网格 构成。在动画序列的每一关键帧中记录着每个顶点的当前位置信息。 通过在相邻关键帧之间插值来更新网格模型中顶点的位置就可以实 现动画效果。相对于关节动画,关键帧动画不存在关节动画的接缝问 题,角色也更逼真。由于顶点的位置是直接获得的,相对于关节动画 其计算量也很小。但是,这类动画的灵活性很差,很难来使角色实时 的与环境进行交互。 另一方面, 由于关键帧中要存储所有顶点的信息, 动画文件的存储空间很大。目前,关键帧动画的主要应用对象是一些 顶点数目有限的角色模型,并且需要的动画简单单一,比如游戏中的 小动物等,此时用不大的空间开销来换取计算时间的节省,是比较有 效的方法。 第三类是骨骼动画(SkeletalAnimation) 。骨骼动画可以看作是 关节动画和关键帧动画的结合。 他同时兼有关节动画的灵活和关键帧 动画的逼真。后面将详细介绍骨骼蒙皮动画的技术细节。
模不考虑中间的脂肪层(Fat layer)和肌肉层(Muslce layer) 。 骨骼层描述了角色的骨架结构(如图 2-2 左) ,类似于关节动画 中的关节, 骨骼动画中的骨骼按照角色的身体特征组成一个层次结构。 相邻的骨骼通过关节相连,并且可以做相对的运动。通过改变相邻骨 骼间的夹角,位移,组成角色的骨骼就可以通过影响外面的皮肤层模 拟出不同的动作,从而实现各种动画效果。
相关文档
最新文档