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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章角色

3.1 前言

“角色”一词的源于戏剧,自1934年米德(G.H.Mead)首先运用角色的概念来说明个体在社会舞台上的身份及其行以后,角色的概念被广泛应用于社会学与心理学的研究中。社会学对角色的定义是“与社会地位相一致的社会限度的特征和期望的集合体”。角色是一个抽象的概念,不是具体的个人,它本质上反映一种社会关系,具体的个人是一定角色的扮演者。

而在我们动漫产业中,角色更是一个非常重要的元素,没有一个吸引人的角色,就出不了一个好的作品。我们本章来介绍角色的建模。

3.2 骨骼动画原理

骨骼动画(Skeletal Animation)[9]又叫Bone Animation,它与关键帧动画(Key-frame Animation)相比,占用空间小,因为它不需要像关键帧动画那样在每一帧中存储各个顶点的数据,而只需要存储骨骼变换数据,骨骼与顶点相比,当然要少得多。所以骨骼动画有很多优势,当然其技术难度也很高。骨骼动画在计算机图形学中是一个十分重要的内容,不管是在游戏、电影动画还是虚拟现实中,生动逼真的角色动画(人、动物等)会使其增色不少。

骨骼动画的实现思路是从人的身体的运动方式而来的。动画模型的身体是一个网格(Mesh)模型,网格的内部是一个骨架结构。当人物

的骨架运动时,身体就会跟着骨架一起运动。骨架是由一定数目的骨骼组成的层次结构,每一个骨骼的排列和连接关系对整个骨架的运动有很重要的影响。每一个骨骼数据都包含其自身的动画数据。和每个骨架相关联的是一个“蒙皮”(Skin)模型,它提供动画绘制所需要的几何模型信息(Vertex信息,Normal信息等)和纹理材质信息。每个顶点都有相应的一组权值(Weight),这些权值定义了骨骼的运动对有关顶点的影响因子。当把动画人物的姿势和全局运动信息作用到骨架上时,这个“蒙皮”模型就会跟随骨架一起运动。

3.2.1实时角色动画

由于骨骼动画是从另外两种实时角色动画发展演变而来,因此,为了更好的理解骨骼动画的原理,就很有必要对它们进行研究分析。角色动画是计算机动画技术的一个重要组成部分,也是计算机图形学的一个重要分支。在实时渲染环境下,主要应用于虚拟现实,视频游戏,甚至是建模软件,动画制作软件。现在,随着计算机硬件技术的发展,特别是带有硬件加速功能的显卡性能的提高,实时渲染的角色动画技术得到了较快的发展且被广泛的应用。目前,实时角色动画技术大体可分为三种类型。

图2-1关节动画组织结构图

第一类是关节动画(Joint Animation)。关节动画中的角色模型由若干相互独立的部分组成(如图2-1)。每一部分对应一个独立的网格模型,相应的对应于某一个身体关节,不同的部分按照角色的身体特征组织成一个层次结构。比如说,一个人体模型可以由头,身体,右上臂,右小臂,右手,左上臂,左小臂,左手,右大腿,右小腿,右脚,左大腿,左小腿,左脚等各部分组成。而某个部分,可能是另一个部分的子节点,同时又是另一个部分的父节点。通过改变不同关节之间的相对位移和夹角等,就可以实现所需要的各种动画效果。这类动画的优点是:

在动画的每个关键帧中只需存储关节之间的相对变化,因此动画文件需要的存储空间很小。关节动画的缺点是:在关节之间的连接处往往会有很明显的接缝,这会对模型的真实感造成严重影响。目前关节动画的应用范围主要在辅助教学领域。

第二类是关键帧动画(Key-frame Animation)也叫顶点动画(Vertex Animation)。关键帧动画中的角色模型由一系列的渐变网格构成。在动画序列的每一关键帧中记录着每个顶点的当前位置信息。通过在相邻关键帧之间插值来更新网格模型中顶点的位置就可以实现动画效果。相对于关节动画,关键帧动画不存在关节动画的接缝问题,角色也更逼真。由于顶点的位置是直接获得的,相对于关节动画其计算量也很小。但是,这类动画的灵活性很差,很难来使角色实时的与环境进行交互。另一方面,由于关键帧中要存储所有顶点的信息,动画文件的存储空间很大。目前,关键帧动画的主要应用对象是一些顶点数目有限的角色模型,并且需要的动画简单单一,比如游戏中的小动物等,此时用不大的空间开销来换取计算时间的节省,是比较有效的方法。

第三类是骨骼动画(SkeletalAnimation)。骨骼动画可以看作是关节动画和关键帧动画的结合。他同时兼有关节动画的灵活和关键帧动画的逼真。后面将详细介绍骨骼蒙皮动画的技术细节。

3.2.2 骨骼动画简介

骨骼动画(SkeletalAnimation,又叫BoneAnimation)可以看作是关节动画和关键帧动画的结合。骨骼动画兼具了两类动画的优点又克服了它们的缺点。骨骼动画的实现思路是从人身体的运动方式而来的,它基于面模型的方法把角色建模为两层:骨架层(Skeleton layer)和皮肤层(Skin layer),与基于层次式模型方法不同,骨骼动画建

模不考虑中间的脂肪层(Fat layer)和肌肉层(Muslce layer)。

骨骼层描述了角色的骨架结构(如图2-2左),类似于关节动画中的关节,骨骼动画中的骨骼按照角色的身体特征组成一个层次结构。相邻的骨骼通过关节相连,并且可以做相对的运动。通过改变相邻骨骼间的夹角,位移,组成角色的骨骼就可以通过影响外面的皮肤层模拟出不同的动作,从而实现各种动画效果。

图2-2骨骼动画的骨骼结构图(左)和角色模型图(右)

蒙在骨骼之上的皮肤层,它是一个蒙皮(skin)模型(如图2-2右),它提供动画绘制所需要的几何模型信息,定义了角色的外观。这里的皮肤不是固定不变的刚性网格,而是可以在骨骼影响下可变形的网格。类似于关键帧中的顶点网格,每个角色模型只需要保存一个网格模型的数据;不同于关键帧动画,在动画文件中不需要在每个关键帧中保存顶点信息。

3.2.3 骨骼动画创建

骨骼动画的创建过程其实就是预处理的过程,这一过程是由美术创作者完成的,必要的时候可能会分别由3D建模工程师和3D动画工程师分别完成模型造型和动画制作工作。但也需要跟程序开发者有良好的沟通,比如模型的骨架层次定义、模型子网格划分等等。下面就对模型造型和动画制作分别予以讨论。因为本文的目的是研究骨骼动画技术,因此,本文完全没有涉及动画领域的艺术性问题。讨论美术创作者的工作也是为了便于讨论骨骼动画所涉及到的原始数据构成,以方便对骨骼动画有完整的理解。

角色模型的创建:角色静态模型一般是指骨骼动画中用来被骨骼动画参考的静态模型,它是一个单一网格模型。所有的动画将基于该静态模型创建,即动画数据中的平移旋转信息均是相对于该静态模型的。对于该网格的创建,有一些要求,比如在关节处的顶点数目应该多一些(如图2-2右)。角色骨骼层次也要对应的创建起来,并且骨骼的大小和位置关系应该与皮肤网格相适应。另外最重要的一点,还要指定网格上的顶点到骨骼的映射关系以及相应的影响权值。每块骨骼都一个影响范围,在这个范围内的顶点都要受到该骨骼的影响。每个顶点至少要受到一块骨骼的影响,但在关节处的顶点往往可能会受到多块骨骼的影响,这些骨骼通过对应的权值来叠加作用到该顶点。因此在指定权值时,一般需要有经验的动画师来实现。

动画的创建:即通过操作骨架结构的变换来构建角色动画。设置每块骨骼的运动信息,使其带动网格模型上各个顶点运动,从而形成

相关文档
最新文档