(信号与信息处理专业论文)3d图形引擎及动画关键技术研究与实现.pdf_第1页
(信号与信息处理专业论文)3d图形引擎及动画关键技术研究与实现.pdf_第2页
(信号与信息处理专业论文)3d图形引擎及动画关键技术研究与实现.pdf_第3页
(信号与信息处理专业论文)3d图形引擎及动画关键技术研究与实现.pdf_第4页
(信号与信息处理专业论文)3d图形引擎及动画关键技术研究与实现.pdf_第5页
已阅读5页,还剩78页未读 继续免费阅读

(信号与信息处理专业论文)3d图形引擎及动画关键技术研究与实现.pdf.pdf 免费下载

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

文档简介

摘要 3 d 图形引擎是计算机硬件和软件开发的最新技术,有着实时性,交互性以 及强大漫游功能的主要特点。3 d 图形引擎目前在很多领域内都有很广泛的应用, 如军方的模拟实战系统、虚拟现实以及网络游戏等。计算机动画是三维图形引擎 中一个重要组成部分,同时它也是评价图形引擎好坏的一个重要标志。通过对 3 d 图形引擎和骨骼动画技术的研究为现有的引擎设计了一套骨骼动画实现方 案,增强了引擎的动画功能,并在本文给出具体的实现方法和结果;另外,通过 对布料建模的研究改进了质点弹簧模型并分别用显式与隐式的数值积分方法对 其做了实时仿真。本文的研究内容主要集中在骨骼动画和布料动画两个领域: 第一、设计了骨骼动画在现有3 d 图形引擎中的实现方案。骨骼蒙皮动画可 被看作关节动画和单一网格模型动画的结合,它不但具有前两种动画的优点,同 时克服了前两种动画的缺点,是游戏引擎中必不可少的功能之一。基于传统的骨 骼蒙皮技术一顶点混合算法在模拟时关节处会出现凹陷,本文在骨骼动画的实现 中运用了一种骨骼混合的方法来克服皮肤凹陷现象,具有逼真、生动的显示效果, 同时具有良好的实时性,运用此技术来驱动动画,会为3 d 图形引擎增色不少。 第二、提出了一种基于改进质点弹簧模型的布料动画实时仿真方法。在以往 的研究中,人们提出了许多模拟布料运动的方法,这些方法的一个主要缺点是复 杂度高、计算效率低,无法满足交互设计和实时动画的要求。该文在经典质点一 弹簧模型的表示基础上结合c h o i 的布料模型,通过简化弹簧弯曲抗力的计算方 法,合并了弹簧的结构力和剪切力,从而达到了简化了布料物理模型的目的,提 高了模拟的速度。实验证明,采用经改进的质点一弹簧模型可以得到实时稳定的 布料仿真效果。 关键词:3 d 图形引擎,骨骼动画,布料动画,质点弹簧模型 v a b s t r a c t 3 d g r a p h i ce n g i n ei st h el a t e s tt e c h n o l o g yo fc o m p u t e rh a r d w a r ea n ds o f t w a r e d e v e l o p m e n t ,t h em a i nc h a r a c t e r i s t i co fw h i c ha r er e a l t i m e ,i n t e r a c t i o na n dp o w e r f u l r o a m i n g n o w a d a y si ti sw i d e l yu s e di nm a n yf i e l d ss u c h 私s i m u l a t i o na c t u a lc o m b a t s y s t e mi nm i l i t a r ya n do n l i n eg a m ea n ds oo n c o m p u t e ra n i m a t i o ni sak e y c o m p o n e n to ft h e3 d g r a p h i ce n g i n e ;i ti s 觚a l s oi m p o r t a n ts t a n d a r dw h e nt o e v a l u a t ea3 d g r a p h i ce n g i n e t h i sp a p e ri sm a i n l yf o c u s e do nt w od o m a i n s :s k e l e t o n a n i m a t i o na n dc l o t ha n i m a t i o n 1 、t h i sp a p e rp r e s e n t e dan e wt e c h n o l o g yo fs k i nd e f o r m a t i o nd r i v e nb ys k e l e t o n a n dh o wt or e a l i z ei nt h e3 d g r a p h i ce n g i n e s k i n n e dm e s ha n i m a t i o nc a nb es e e n a st h ec o m b i n a t i o no fa r t i c u l a t i o na n i m a t i o na n dm e s hm o d e l a n i m a t i o n , w h i c hh a s t h ea d v a n t a g e so ft h ef o r m e rt w ow h i l el a c k i n gt h e i rs h o r t c o m i n g s w h e nl i n e a r b l e n d i n gs k i n n i n gi su t i l i z e dt os k e l e t a la n i m a t i o n , a l lu n d e s i r a b l ec o l l a p s i n ge f f e c t t a k e sp l a c et oj o i n t sw i t hl a r g es p i n w eu t i l i z ean e wm e t h o dc a l l e db o n e sb l e n d i n g t h a tc a r lb eu s e da sa i la l t e r n a t i v et ov e r t e xb l e n d i n g b o n e sb l e n d i n gh a sap o w e rt o o v e r c o m et h ea r t i f a c t so fv e r t e xb l e n d i n g t h ee x p e r i m e n tp r o v e si tc a nm a k et h e e n g i n em o r ee f f i c i e n t 2 、a ne f f i c i e n ta n ds t a b l em e t h o dt oa n i m a t ev i r t u a lc l o t hb a s e do np h y s i c a l m o d e li sp r o p o s e d d u r i n gt h ep a s tt i m e ,p e o p l ep r e s e n t e dm a n yf a b r i cs i m u l a t i o n m e t h o d s am a i nd r a w b a c ko ft h e s em e t h o d si st h eh i g l lc o m p l e x i t ya n dc a l c u l a t i o n i n e f f i c i e n c y , w h i c hi s u n a b l et om e e tt h e r e a l t i m e l yi n t e r a c t i v ea n da n i m a t e d r e q u i r e m e n t s c o m b i n i n gc h o i s ,w ei m p r o v e dt h ec l o t hm o d e l i n gw h i c hi sb a s e do n t h ec l a s s i cm a s s - s p r i n gm o d e l w es i m p l i f i e dt h em e t h o do fc a l c u l a t i n gb e n d i n g r e s i s t a n c ea sw e l la l sc o m b i n e dt h es p r i n gs t r u c t u r ea n ds h e a rf o r c e ss oa st os i m p l i f y p h y s i c a lm o d e lo ft h em a t e r i a la n di m p r o v et h es p e e do fs i m u l a t i o n t h ee x p e r i m e n t p r o v e st h a tt h ei m p r o v e dp a r t i c l e s p r i n gm o d e lc a nb es i m u l a t e di nar e a l t i m ea n d s t d b l er e s u l t k e y w o r d s :3 d g r a p h i ce n g i n e ,s k e l e t o na n i m a t i o n ,m a s ss p n n gm o d e l v i 原创性声明 本人声明:所呈交的论文是本人在导师指导下进行的研究工作。 除了文中特别加以标注和致谢的地方外,论文中不包含其他人已发表 或撰写过的研究成果。参与同一工作的其他同志对本研究所做的任何 贡献均已在论文中作了明确的说明并表示了谢意。 签名:o 7 撖 il , 本论文使用授权说明 本人完全了解上海大学有关保留、使用学位论文的规定,即:学 校有权保留论文及送交论文复印件,允许论文被查阅和借阅;学校可 以公布论文的全部或部分内容。 ( 保密的论文在解密后应遵守此规定) 签 导师签名:麴垂熊日期:垫益丞箜 i i 1 1 课题来源 第一章绪论 本课题来源于信息产业部电子信息产业发展基金招标项目网络游戏开发平 台建设,项目编号:2 0 0 5 6 8 8 。 1 2 课题背景和意义 中国网络游戏市场正迅速形成拥有数千万网络游戏用户的大市场,并且正在 以每年超过1 0 0 的速度急速膨胀。如此大规模的玩家队伍,如此迅速的飚升速 度,构成了中国网络游戏产业生存和发展的基石。此外,网络平台的发展,为网 络游戏奠定了坚实的物质基础。宽带的迅猛发展为网络游戏提供了高速公路,网 络游戏的兴起也把宽带建设从“有路无车”的尴尬境况中带了出来,网络游戏引擎 开发现已纳入我国国家8 6 3 计划1 1 。 目前国内的大部分网络游戏都是代理韩国和欧美等国家的,如传奇、魔 兽世界、天堂2 ;而一些具有较强研发实力的公司开发的都是基于2 d 游戏引 擎上的2 d 网络游戏,如网易的大话西游、梦幻西游;像苏州蜗牛自主开 发的3 d 网络游戏航海世纪则是基于国外3 d 游戏引擎上开发的;而北京像 素公司的刀剑o n l i n e ,虽然从引擎到游戏都是自主开发的,但它仍然只是 一款3 d 模型、2 d 视角的网络游戏。国内虽有一些公司开发3 d 游戏引擎,但是 用这些引擎开发的游戏渲染质量差,速度低。而且,国产游戏的开发周期一般在 两年左右,所以他们即使开发了所谓的引擎,也只是简单的模块组装,没有系统 构架的概念。因此,构架极其坚实、高性能及可扩充性的三维图形内核的游戏引 擎,解决一些关键技术则迫在眉睫。这将对于国内游戏的发展有极其重要的实用 价值【2 】o 建设网络游戏开发平台一个主要任务即建立一个三维图形引擎。3 d 图形引 擎是指为制作游戏需要而事先编制好的一系列初始化、图形处理、角色控制、碰 撞检测等有关的a p i 函数,它相当于游戏程序员的开发工具包,有些商业化的 图形引擎同时还提供了关卡和角色编辑器【3 1 。这样游戏程序员就不必从最低层开 始编写游戏,只需要调用图形引擎中相关的a p i 函数。同样在游戏里,剧情的 进行、形形色色的角色衬托、各种场景的变换,也都不是外行人想象中的用什么 高层的程序语言一字一句控制写成的,而是由游戏引擎事先就约定俗成种模 式,一个大体的框架,然后依靠一些复杂的数据库来组织完成的。 在图形引擎中动画是非常关键的一个部分,而人体的造型与动作模拟直是 最困难、最具挑战性的问题。近些年来,由于一些三维电影和大量的三维游戏的 出现,骨骼蒙皮动画开始成为人们关注的焦点,在三维计算机动画中,把人体作 为其中的角色一直是研究人员感兴趣的目标,虽然计算机动画在许多领域占据越 来越重要的地位,但人体动画的许多问题仍未能很好地解决。原因就在于人体共 有2 0 0 个以上的自由度,其运动非常复杂,人的形状不规则,人的肌肉随着人体 的运动而变形,人的头发、皮肤和衣服模拟起来困难,人的个性、表情千变万化 等。另外,由于人类对自身的运动非常熟悉,不协调的运动很容易被观察者所察 觉。可以说人体动画是计算机动画中最富挑战性的课题之一。 布料动画是柔性物体动画的一个重要应用。在计算机动画中出现布料的场合 很多,如服饰、窗帘、桌布、飘动的旗帜等。衣服覆盖了人体9 0 以上,如果要 求人体动画复合现实生活,那么布料动画是不可缺少的。布料动画的一个特殊应 用领域为时装设计,它将改变传统的服装设计过程,可让人们在着装之前看到服 装的式样和试穿后的效果。因此,近十多年来,人们在布料动画方面做了很多努 力,提出了多种不同的方法,但在模拟的速度、效果和稳定性等方面仍有待提高。 1 3 国内外研究概况 要用计算机生成连续的画面,首先要将动画对象在计算机中表示出来,即造 型,再根据造型方法的不同以及对动画效果的不同要求,采用不同的方法对计算 机中所表示对象的各参量进行变动,然后将变动过程中的对象绘制出来,因此可 以将计算机动画划分为三个步骤:造型,运动控制,绘制。 其中,造型是计算机动画的基础,没有动画对象在计算机中的表示,也就无 从进行计算机动画:绘制技术决定画面的真实感程度:变动规律的控制是计算机 动画的核心。造型和绘制在计算机图形学和c a d 等其它相关领域中都已有了较 为成熟的结果,因此计算机动画方法虽然是指上述三个步骤中的各种方法,但核 心是物体变动规律的控制方法。另外,上述三个步骤是相关的,采用不同方法造 型的物体,其变动规律的控制方法和绘制方法也相应的有所不同。 1 3 1 骨骼动画技术 用于皮肤变形的技术可以按介于皮肤和具体形态之间的关系进行分类。 s e d e r b e r d 4 】引入自由形式变换( f f d ) ,或者叫做直线格子。格子上的控制点像 三维螺旋卷一样运动,格子里的变换点在每个轴上给定规范化坐标。基于f f d 的研究方法目前依然是个活跃的领域。 考虑解剖学的动画生成系统,其中一个难点是不够直观。比如想让皮肤产生 一个特定的视觉效果,要决定产生这种效果需要皮肤下的组织会有什么样的层次 变化。h s u 5 】等人开发了一套直接操作的方法,它和f f d 一同作用,允许用户直 接在表面上进行拖拉,决定控制点出现在哪一个位置,以此达到所需的效果。 很多流行的变形技术一点都不考虑解剖抽象,而只是把皮肤当作随骨骼运动 的壳一样。m a g n e n a t t h a l m a n 6 l 弓l a “关节独立局部变换”的概念,其中基于关 节的特性指定了局部变换操作。 形状插值是一种流行的用于表现物体变形的技术,开始被认为较难应用于关 节化人体,不过l e w i s t 7 】等人引入了姿势空间变换( p s d ) ,合并形状插值和骨骼 驱动,作为综合方法。这种方法使用包含了高斯径向基方程的离散数据插值,该 方程用于计算不同距离下的不同配置参数。 1 3 2 布料模拟技术 在布料模拟中,寻找一个合适的模型来描述布料的特性是很重要的。在模拟 布料以及类似可变形的表面中,己经使用了很多种不同的模型。基于物理的建模 是一种具有潜在优势的三维造型和运动模拟技术,尽管计算复杂度高,但由于能 够逼真模拟真实效果,因而得以广泛研究。 九十年代中期,x p r o v o t 8 】对显式欧拉法作了改进,使用了一种简单的迭代 方法,称作“i d ”( i n v e r s ed y n a m i c s ) 方法。该方法对质点的位置变化进行了限 制,这样,时间步长可以取得大一点,但同时增加了迭代运算量,并且在碰撞检 测中可能会出现实体交叉的问题。 一种不同于显式欧拉方法的简单积分方法是v e r l e t 积分方法,2 0 0 1 年 j a k o b s e n 9 】将来源于分子动力学的该方法运用到布料仿真中,它是通过相邻两个 时刻粒子的位置来计算下一个时刻粒子的位置,因此状态变量中不包含速度。同 d 方法相仿,该方法适用于精度要求不高的视觉效果仿真。 另一类提高仿真精度的数值方法是隐式欧拉方法,b a r a f f 和w i t l d n 1 0 】在1 9 9 8 年在布料仿真中运用了隐式积分法,建立了隐式微分方程公式,能允许刚性方程 与大的时间步长共存。该方法可以满足布料仿真的物理精确性要求,但在每一时 间步长内需要完成非线性系统的求解,大大增加了计算量。 d e s b n m 【l l 】提出了隐式方法的近似形式,使用了一个用于质点一弹簧系统的 近似的能够求逆的线性系统矩阵,这样做的结果是使用简单的矩阵向量进行乘法 运算,减少了每个步长的计算时间,其缺点是矩阵的规模随着粒子数的增加而呈 平方增长趋势。k a n g 眩】对d e s b r u n 公式进行了改进,进一步简化了系统。d e s b r u n 模型和k a n g 模型都是通过降低对象的物理精确性而减少运算时间。 基于物理模型的布料模拟,尽管其表达式、求解办法有所不同,但都可归结 为如下过程:根据牛顿运动定律,给出质点间弹性形变关系,得到偏微分方程组, 然后用数值方法求解该方程组。 1 4 课题的研究内容及章节的安排 1 4 1 本人工作和课题的研究内容 本论文是以作者攻读硕士学位期间承担课题的工作为基础。论文工作围绕 3 d 图形引擎平台展开,主要应用于3 d 游戏的开发以及虚拟现实等领域。现有 的引擎并不包含骨骼动画的功能,作者通过对引擎功能模块和骨骼蒙皮技术的研 究设计了一套骨骼动画在引擎中的实现方案。对项目开发中遇到的问题做出分 析、制定解决方案,最终通过编程进行实现。布料模拟对于搭建虚拟现实平台有 着重要意义,3 d 引擎可为虚拟场景提供绘制和漫游功能,作者通过对布料建模 的分析,提出一种快速布料模拟方法,为虚拟现实平台的搭建奠定了基础。 本文课题基于3 d 引擎的计算机实时动画,主要涉及到两种动画:骨骼动画 4 和布料动画。总的来说,本文的主要研究内容和创新如下: 论文通过对3 d 图形引擎的分析,设计了一套骨骼动画在引擎中的实现方案, 该方案在w i n d o w s 平台下实现了骨骼动画与引擎的无缝集成,完善了引擎的功 能。针对传统的骨骼动画技术【1 3 】在关节处会出现凹陷,本文通过对骨骼皮肤混 合算法分析,在骨骼动画的实现中运用了一种骨骼混合的方法来克服皮肤凹陷现 象,并给出动画在引擎中的具体实现方法和实验结果。 论文通过对布料构建模型的分析,采用了经典质点一弹簧模型来模拟布料, 并在经典质点一弹簧模型的表示基础上结合c h o i 的布料模型,通过简化弹簧弯 曲抗力的计算方法,合并了弹簧的结构力和剪切力,从而达到了简化了布料物理 模型的目的,提高了模拟的速度。实验证明,采用经改进的质点一弹簧模型可以 得到实时稳定的布料仿真效果。 1 4 2 论文结构 第一章、绪论。主要介绍本文的课题来源、背景,对国内外研究现状进行综 述,并指出本人的主要工作和研究内容。 第二章、介绍了一些与本课题相关的3 d 图形学背景知识。阐述了3 d 引擎 的整体构架以及对3 d 图形引擎各模块的结构和功能做了分析。 第三章、通过对角色动画技术和骨骼皮肤混合算法的分析,采用骨骼混合算 法来代替传统的点混合算法以克服皮肤的凹陷,给出基于3 d 图形引擎的骨骼动 画的实现流程和实现方法,并在章节最后给出实验结果。 第四章、通过对基于物理方法的布料模拟技术和一些典型布料模型的研究和 分析对质点一弹簧模型做了改进。通过对模型的受力分析构造出动力学方程并分 别用显式和隐式两种数值积分方法求解。最后,给出布料模拟系统的具体实现方 法及模拟结果。 第五章,对全文做出系统的总结。 2 1 引言 第二章3 d 图形引擎分析 3 d 图形引擎广泛地被应用于游戏开发,因此又可称为是3 d 游戏引擎。它 是游戏中与具体的游戏无关的核心技术部分,它如同汽车的引擎一样;而游戏的 部分是场景和角色模型、动画、声音和代码等其它控制部分。3 d 图形引擎已经 发展为一套由多个子系统共同构成的复杂系统,从建模、动画到光影、粒子特效, 从动画物理系统、碰撞检测到文件管理、网络特性,还有专业的编辑工具和插件, 几乎涵盖了开发工程中的所有环节【14 1 。 本章通过对一些相关3 d 技术背景的介绍和3 d 图形引擎的各个组成部分、 模块功能以及一些相关技术的研究分析,为后面章节对骨骼动画系统的具体实现 做准备。 2 23 d 技术背景 2 2 13 da p i 3 da p i 就是三维图形应用程序接口。对于编写支持各种硬件设备或操作系 统的程序而言,a p i 是许多程序的大集合。一个3 da p i 能让编程人员所设计的 3 d 软件只要调用其a p i 内的程序,a p i 就会自动和硬件的驱动程序沟通,启动 3 d 芯片内强大的3 d 图形处理功能。目前d i r e c t 3 d 和o p e n g l 是最为流行的两 种3 da p i 。 d i r e c t 3 d 1 5 1 是基于c o m ( c o m p o n e n to b j e c tm o d e l ) 的3 da p i 规范,它是微 软d i r e c t xs d k 集成开发包中的重要部分,适合多媒体、娱乐、即时3 d 动画等 广泛和实用的3 d 图形计算,主要应用于三维游戏的编程。自1 9 9 6 年发布以来, d i r e c t 3 d 以其良好的硬件兼容性和友好的编程方式很快得到了广泛的认可,现在 几乎所有的具有3 d 图形加速的主流显示卡都对d i r e c t 3 d 提供良好的支持。它的 缺陷是较为复杂,只在w i n d o w s 平台上可用。 6 o p e n g l c l 6 】是s g i 为了统一其编写的图形库而推出的3 d a p i ,英文全称是 o p e ng r a p h i c sl i b r a r y 。o p e n g l 是跨平台的开放图形库,与硬件无关,具有良好 的可移植性,同时调用方法简洁明了。只要操作系统使用了o p e n g l 适配器就可 以达到相同的效果。主要应用于专业设计领域,是专业图形处理、科学计算等高 端应用领域的标准图形库。o p e n g l 能在网络环境下以客户栅服务器模式工作, 充分发挥集群运算的威力。 目前3 d 图形领域,专业用户( c a d c a m 等) 3 d 绘图大部分利用o p e n g l 而d i r e c t x 几乎就是g a m e ,c a i 等应用软件的绘图标准接口。不过多数商业游戏 现在都会选择d i r e c t 3 d 和o p e n g l 双a p i 方式。当一个a p i 出现贴图错误或者 运行速度跟不上时诸如此类的情况时,可以试着切换另一个a p i 来运行。以保 证游戏顺畅运行。本论文主要采用了d i r e c t 3 d 作为应用程序的接口,因此本章 接下来会对涉及到的d i r e c t 3 d 技术作一介绍。 2 2 2d i r e e t 3 d 体系结构 ( 1 ) d i r e e t 3 d 与w i n d o w s 系统之间的关系 硬件抽象层( h a l ) 是由设备制造者提供的硬件相关的接v i 。d i r e c t 3 d 通过 h a l 直接作用于显示硬件,应用程序不直接与h a l 交互。在h a l 提供的底层 结构之上,d i r e c t 3 d 向应用程序暴露出一组用于图形显示的接口,由此实现了设 备无关性。 悯:州一7 驾 级 , ,z 么 l r 歹。7 孟二7 习 瑟:。、翻 l - 一 “ q j,g掰 酝j 图2 1d i r e c t 3 d 、g d i 、硬件抽象层以及硬件之间的关系 7 从图2 1 可以看到,d i r e c t 3 d 和图像设备接i ( g d i ) 都通过设备驱动来使用 硬件【1 7 1 。所不同的是,当d i r e c t 3 d 选择使用h a l 的时候,可以得到由硬件特性 带来的种种好处,因为h a l 是硬件相关的,它可以向上提供硬件加速。在程序 运行时可以使用d i r e c t 3 d 提供的方法来获取硬件特性的信息。 ( 2 ) d i r e c t 3 d 图像处理流水线结构图 彩- 7 锡 弋嚼 t 1 p 嘲s h d “ 一 蠹v 【d a t a 卜 琵二l 琵。么 缪 l 咖t 嘲7 锡 一燃甚 夥一”j 飞 事碧一,。么 统触,h i 脚日d i 啡么 叫t r a c t i o n 一 包。翻 帆矗0 夏暑譬 施,。j 图2 2d h e c t 3 d 图像处理流水线 图2 2 中表示多边形的几何数据分解成几何图元,几何图元通常为三角形。 通过固定功能流水线或可编程流水线处理后,再经过裁剪、背向面剔除、光栅化, 将三维场景映射到二维显示平面上,在光栅化时,我们可以采用设置好的纹理混 合状态和混合方法进行标准的像素渲染,也可以由开发人员来设置纹理采样寄存 器,使用渲染指令进行像素渲染【1 4 】。这之后,还可进行透明度测试、深度测试、 模版测试、雾化以及半透明混合。 2 2 33 d 几何流水线变换 几何流水线变捌1 9 】由硬件完成,负责多边形和顶点空间变换操作,将经过 几何变换后的顶点、颜色以及纹理坐标进行光栅化处理,目的就是给每个像素正 确配色,以便正确绘制整幅图像,这样3 d 图形便被转化为屏幕上的像素。在几 何变换阶段中,应着重注意模型空间、世界空间、视见空间、投影空间以及建模 变换、视见变换、投影变换,这四个空间和三次变换是物体渲染流程的基础,也 是多边形剔除的原理和依据。这里的空间坐标均采用左手坐标系。 图2 3 几何流水线 模型空间:首先物体处于本身的模型空间,在这个空间内,物体和物体之间 没有任何关系,这个空间的存在是为了方便美工的建模。 世界空间:为了建立物体之间的相对关系,就需要将物体从模型空间转换到 世界空间中,世界空间为场景中所有物体提供一个绝对参考,在这个空间内可以 对模型进行平移,旋转,缩放等操作。 视见空间:在3 d 虚拟世界中,用户需要通过一个特殊的视点来观察场景, 这个视点在游戏引擎结构中被称之为虚拟摄像机,图2 4 中的物体a 就是这个虚 拟摄像机。因此存在一个空间,空间坐标系以摄像机位置为原点,y 轴指向上方, z 轴指向摄像机的观察方向( x 轴可以通过y 轴叉乘z 轴得到) 。这个空间称为 视见空间,在这个空间内,可以很方便的进行背面剔除( b a c k f a c ee l i m i n a t i o n ) 和光照处理。 投影空间:也被称为3 d 屏幕空间,在这个空间内,所有可见物体均在一个 轴对齐的立方体中,立方体的范围是( 一1 ,一l ,0 ) 到( 1 ,1 ,1 ) 。这时会出现以下三种情 况:如果物体完全在这个立方体中,则此物体将被完全绘制;如果物体完全不在 此立方体中,则此物体将被完全裁减掉;如果物体跨越了立方体的某一个面,则 跨越此立方体的面将被分裂成两个面,因此投影空间也称为裁剪空间。 建模变换:将物体从模型空间变换到世界空间的操作称为建模变换,这里先 不详细讨论变换过程在计算机图形学中实现的原理,而是结合引擎设计从应用层 面上来描述这一过程。首先需要一个4 4 的矩阵m a t w o r l d ,如果这个矩阵是单 位阵e ,则物体会被变换到世界坐标系中的原点位置,变换是通过d 3 d 中a p i 函 数s e t t r a n s f o r m 0 实现的;如果需要进行平移,旋转,缩放等操作,则需要通过 平移矩阵,旋转矩阵,缩放矩阵联乘得到一个新的矩阵,在用s e t t r a n s f o r m ( ) 函 9 数调用此矩阵去设置变换。由于矩阵乘法不具有交换性,因此一定要注意变换顺 序,通常做法是先用单位阵将物体变换到世界空间的原点位置进行缩放操作,再 进行旋转操作,最后进行平移定位。旋转时也应注意变换顺序,在游戏设计中, 一般都是先绕y 轴,再绕x 轴,最后绕z 轴。最终得到的矩阵m a t w o r l d : m a t w o r l d = 乙幸r :( 矽) 宰足( 矽) r y ( ) 幸s ( s ) 幸e ( 2 1 ) 其中乙表示平移矩阵;尺,( 矽) ,r ,( ) ,r :( 妒) 分别表示围绕x 轴,y 轴,z 轴 的旋转矩阵;s ( s ) 表示缩放矩阵。通过建模变换,物体已经被放置到了一个统一 坐标系下,图2 4 用一个俯视平面图( ) ( z 轴) 表示了物体在世界坐标系中的关 系【2 0 1 。 卜 u i啦 足j 人 一 0 一 。 o 图2 4 世界空间 视见变换:视见变换就是将物体由世界空间变换到视见空间的过程,这个过 程的实现也是通过设置一个4 4 矩阵完成的,这个矩阵称为m a t v i e w ,这个矩 阵将由d 3 d 的a p i 函数d 3 d x m a t r i x l o o k a t l h 0 完成计算,需要用到的参数有 摄像机在世界坐标系中的位置p o s ,摄像机观察方向t a r g e t 以及u p ( 一般选择 ( 0 ,1 ,0 ) ) 向量。最后调用s e t t r a n s f o r m 0 并根据计算好的m a t v i e w 完成变换过程。 图2 4 经过视见变换后在视见空间如图2 5 所示,这时将摄像机所在位置作为坐 标系原点【2 0 1 。 1 0 jl v 钗 弋 _ 厂一 ) 0 一 图2 5 视见空i 司 投影变换:物体从视见空间坐标系到投影空间坐标系的过程称为投影变换。 变换有两种,一种是平行投影变换,另外一种是透视投影变换。平行投影的特点 是平行线在变换之后彼此之间仍然保持平行,这种变换是平移与缩放的组合。而 透视投影与此不同,平行线经过透视变换之后,可能不再平行,而且可能会在最 远处聚集于一点。透视投影与人类感知世界的过程非常类似:距离物体越远,看 到的物体也就越小。在游戏设计中,用到最多的就是透视投影变换,视见约束体 的6 个裁剪面计算也是基于这一变换的。变换同样需要设置一个4 x 4 的变换矩 阵m a t p r o j 。 在设置的时候注意远平面距离z f a r 与近平面距离z n e a r 的比值不应该超出图 形硬件的深度缓冲器的精度,否则会带来严重的消隐错误,在d 3 d 设备中,如 果默认缓冲器精度是1 6 位,则比值不应超过6 5 5 3 5 。得到4 个参数后,调用d 3 d 的a p i 函数d 3 d x m a r i x p e r s p e c t i v e f o v l h o 计算投影矩阵m a t p r o j ,并最终使用 s e t t r a n s f o r m 0 函数完成投影变换。 在完成以上变换步骤之后,就将进入屏幕映射阶段,进入这个阶段的时候, 坐标仍然是三维的,这时每个顶点的x ,y 坐标从立方体空间变换到了二维屏幕 坐标,这个变换也称为视区变换,由屏幕的分辨率和视区的设置决定。而顶点的 z 坐标保持不变( 0 、 图3 3 顶点与参数的关系图 足。的计算如下: ( q - u 旧i e r p ( q ,”) = 堕絮产q + 寒警刚一- 协s ) 其中q ,r 为已知四元数,c o s = g ,+ q + q :r + 口。0a 3 3 5 骨骼动画系统 通过对骨骼皮肤变形技术的分析,我们得出胃骼皮肤动画系统通常包含三个 主要的组成部分:第一个是建模子系统,负责对角色模型的建立,并为参数化控 制功能作准备;第二个是运动控制子系统,对运动数据进行编辑和再生成,实现 对运动数据的修改和重用;第三个是骨骼皮肤混合子系统,负责完成骨骼数据和 皮肤数据的混合,当导入运动数据到骨骼之后,按照骨骼皮肤混合算法更新皮肤 点的位置,生成骨骼皮肤动画,整体逻辑结构图如下所示: 图3 4 骨骼皮肤动画系统结构图 3 4 骨骼动画在3 d 引擎中的实现 3 4 1 模型的数据分析 骨骼动画模型由两部分组成:骨架骨骼( s k e l e t o n ) 和蒙皮( s k i n m e s h ) 。骨 骼信息包括全部骨骼的数量和每一骨骼的具体信息。所有的骨骼按照父子关系组 织成一棵树。树根代表整个骨架,其余每一节点包括叶子节点代表一根骨骼。蒙 皮网格信息是角色的多边形模型。 3 4 1 1 骨架骨骼 骨架构成了人物角色的层次结构,是骨骼动画中最为关键的部分。骨架结构 是一个树形结构,由角色模型的骨骼按照父子的层次结构组成。下图所示即是角 色模型的骨架层次结构。其中纵向的骨骼属于父子关系而横向的则属于兄弟关 系。骨架结构如下所示: 图3 5 骨架结构图 纵向的骨骼通过父子节点联系,所以每个骨骼都需要存储对应的父节点和子 节点。每块骨骼都与其子节点和父节点存有联系,骨骼对象中存放相对于父节点 的位移、旋转和缩放,然后通过遍历所有的父节点就可得到该子节点的绝对位移、 旋转和缩放。骨骼的数据结构如下所示: 图3 6 骨骼数据结构图 3 4 1 2 蒙皮网格( s k i n m e s h ) 骨骼蒙皮动画的皮肤是由一个单一网格构成的。这个单一网格是一个多边 形模型。该多边形模型一般由三角形面片组成,每一三角形面片有三个指向模型 的顶点表的索引。通过该索引,可以

温馨提示

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

评论

0/150

提交评论