(计算机系统结构专业论文)基于opengl的三维角色动画编辑器的设计与实现.pdf_第1页
(计算机系统结构专业论文)基于opengl的三维角色动画编辑器的设计与实现.pdf_第2页
(计算机系统结构专业论文)基于opengl的三维角色动画编辑器的设计与实现.pdf_第3页
(计算机系统结构专业论文)基于opengl的三维角色动画编辑器的设计与实现.pdf_第4页
(计算机系统结构专业论文)基于opengl的三维角色动画编辑器的设计与实现.pdf_第5页
已阅读5页,还剩54页未读, 继续免费阅读

(计算机系统结构专业论文)基于opengl的三维角色动画编辑器的设计与实现.pdf.pdf 免费下载

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

文档简介

摘要 摘要 角色动画是近十年来计算机科学中最活跃的领域之一,这个领域涉及到交互 式图形学、真实感图像、运动和动力学、解削学等众多的学科,它可以应用到教 学、仿真、数字娱乐中。本文的目的是设计和实现一个角色动画编辑器。本文首 先介绍了角色动画编辑器中的模型表示和交互式操作机制,设计了支持多边形网 格模型的类框架结构和以操控和命令为核心的人机交互系统;并介绍了多个 o p e n g l 视图在操作系统下的优化应用。在此基础上,详细分析了交互系统中定位 和拾取技术,提出一种新的三维定位算法,研究了可见面选择技术。接着论文介 绍了骨骼动画系统中的树型模型和动画原理,并介绍了改进基本骨骼动画系统的 视觉效果的顶点混合和骨混合两种技术。最后,完成整个系统的设计实现,通过 验证和测试证明了以上设计完全可行,交互系统和动画系统均达到实时性指标。 关键词:角色动画交互式图形学骨骼动画 a b s l r a c t a b s t r a c t r e s e a r c ho ne h a r a c t e ra n i m a t i o ni so n eo ft h em o s ta c t i v ef i e l d so fc o m p u t e r s c i e n c ei nt h el a s td e c a d e w h i c hi n v o l v e di nm a n ys u b j e c t ss u c ha si n t e r a c t i v e g r a p h i c s , r e a l i s t i ci m a g e ,k i n e m a t i c s & d y n a m i ca n da n a t o m y ,a n dc a nb ea p p l i e do nt e a c h i n g , e m u l a t i o n ,a n dd i g i t a le n t e r t a i n m e n ta n ds oo n i ti st h et a r g e to ft h i sp a p e rt od e s i g n a n dr e a l i z ea ne d i t o ro fc h a r a c t e r a n i m a t i o n ,f i r s t l y ,t h i sp a p e ri n t r o d u c e s m o d e l r e p r e s e n t a t i o n a n di n t e r a c t i v e t e c h n i q u e i no u re d k o ra n d d e s i g n s af r a m e w o r k s u p p o r t i n gp o l y g o n m e s hm o c l e ia n dam e n - m a c h i n e i n t e r a c t i v e s y s t e m w i t h m a n i p u l a t i o n sa n dc o m m a n d sa tt h ec o r e ;a n di n t r o d u c e sa p p l i c a t i o na n do p t i m i z a t i o n o f o p e n g lp o l y - v i e wi no se n v i r o n m e n t b a s e do n t h e s ed i s c u s s i o n s t h el o c a t i n ga n d p i c k u pt e c h n i q u e sa r ea n a l y z e dd e t a i l e d l y ,an e w3 dl o c a t i n ga r i t h m e t i ci sp r e s e n t e d , a n dt h ep i c k u pt e c h n i q u eo fv i s i b l e s u r f a c ei sd i s c u s s e d t h e nt h ep a p e ri n t r o d u c e d d e n d r i f o r mm o d e la n dt h e p r i n c i p l e so f a n i m a t i o ni ns k e l e t a la n i m a t i o n ,a n di n t r o d u c e d t w o i m p r o v e ds k e l e t a la n i m a t i o nt e c h n i q u e s :v e r t e xb l e n d i n ga n db o n eb l e n d i n g a tl a s t , i m p l e m e n to f t h ew h o l es y s t e mi sf i n i s h e d v a l i d a t i o na n dt e s tp r o v e dt h a tt h ed e s i g n s p r e s e n t e da b o v ea r ev a l i d a t e ,a n dt h ei n t e r a c t i v es y s t e ma n da n i m a t i o ns y s t e ma r eu pt o t h es t a n d a r do f r e a l t i m e k e y w o r d :c h a r a c t e r a n i m a t i o ni n t e r a c t i v eg r a p h i c ss k e l e t a la n i m a t i o n 创新性声明 y5 8 3 3 5 9 创新性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或 其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做 的任何贡献均己在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名:较) 亳,瓦 日期娜午1 量 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定。即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕 业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全 部或部分内容。可以允许采用影印、缩印或其它复制手段保存论文。( 保密的论 文在解密后遵守此规定) 本人签名:扔惫丸 翮鹳:黜午 日期伽争i 孑 日篾矽爷f 7 第一章概述 第一章概述 1 1 动画技术及其应用背景概述 计算机图形学的研究起源于美国的麻省理工学院。5 0 年代,m i t 在所生产的 旋风1 号计算机上,首次使用由计算机控制驱动的c r t 显示器来显示操作界面。 1 9 6 2 年第一台光笔式交互式图形显示器在m i t 的林肯实验室研制成功,这是i v a n s u t h e r l a n d 以博士论文形式完成的研究课题,标志者现代交互式图形学的开始。进 入7 0 年代中期,人们普遍认识到设备无关的图形软件包标准化的重要性。1 9 7 7 年, a c ms i g g r a p h ( a s s o c i a t i o nf o rc o m p u t i n gm a c h i n e r ys p e c i a li n t e r e s tg r o u po n g r a p h i c s ) 推出了c o r e 图形系统,对图形软件标准化的仿真起了积极作用;1 9 8 5 年产生了第一个二维图形软件国际标准g k s ;1 9 8 8 年产生了第一个三维图形软件 国际标准g k s 3 d 。1 9 9 6 年的s i g g r a p h 大会上,基于图像的建模与绘制技术又 成为研究的热点。1 9 9 8 年1 月31 日美国副总统戈尔在洛杉矶市加利福尼亚科学中 心召开的地理信息年会上提出了“数字地球”的思想,这是计算机图形学涉及面 最广、数据量最大的一种应用。我国从7 0 年代初期开始图形显示器与相应软件的 研制开发,而且也已在国防、科研、生产等领域广泛应用。吼 计算机图形学是研究怎样用计算机生成、处理和显示图形的一门学科。计算 机图形学的分支众多,在图形基础研究方面可以归纳为两个主要方向:建模技术 和绘制技术。建模技术又可以分为两大分支:计算机辅助几何设计和自然景物建 模。绘制技术追求的是真实感和绘制速度,即三维真实感圈形实时生成技术。三 维图形学的应用要求既能逼真的反映客观世界的对象,又能高速的绘制它们。 一方面人们对于计算机动画的视觉效果要求越来越高,使得三维模型越来越 复杂,需要大型的软件来实现,界面也非常繁复;另一方面,计算机动画的应用 领域,如娱乐业等,产业竞争异常激烈,这样就需要很好的交互方式以方便动画 设计人员更快的制作出作品。这个矛盾就如同以上提到的“真实感”与“实时性” 的矛盾一样,是交互式图形学迫切需要解决的问题。给研究人员留下的课题就是: 设计出更方便的交互技术和更人性化的用户界面来实现速度与效果的统一。 1 1 1 动画控制技术的发展 在研究领域,动画的控制主要分为如下几个方法:1 2 1 1 完全外部控制方法。这种方法中动画设计师需要决定动画中每一个细节。 一般过程是通过输入设备如鼠标、数据手套等确定动画中的各个关键帧,然后通 过计算机计算各个内插的帧。s t e m 在1 9 8 3 提出的b b o p 系统使用这种控制方法。 基于o p e n g l 的三维角色动画编辑器的设计与实现 i l 州 2 过程控制方法。这种方法中,模型的每一个元素与环境和其他元素通信以 获得参数,由参数决定元素的位置外观等信息。这种理想化模型有很多优点,但 它的一个缺点就足以使得它不能普及:它需要动画设计师懂得编程。r e e v e s 和 r b l a u 在1 9 8 5 年提出的粒子系统的近似算法中使用了该方法。 2 1 1 3 基于约束的方法。这种方法给予模型中元素一些约束条件,控制这些元素 的行为。1 9 7 9 年b o r n i n g 提出的t h i n g l a b 系统中使用了这种方法。1 2 2 1 4 动作跟踪捕捉方法。此方法使用传感器等设备跟踪生物或其他实物的运动 轨迹,以获得它们的三维坐标。这种方法在工业领域应用很广泛。g i n s b e r g 和 m a x w e l l 在1 9 8 3 年使用该技术构造了一个图形化的木偶系统。1 2 3 1 5 运动学与动力学方法。运动学方法指定物体的位置和速度,动力学方法考 虑物体的控制物体运动的物理定律。在动画控制技术中,正向运动学和反向运动 学都是成熟而且运用相当广泛的方法。动力学方法经常在些仿真系统中应用。 关于运动学和动力学的研究见参考文献 2 4 1 1 2 5 1 。 6 基于规则的方法。这种方法为模型定义了一套规则,这套规则应该从自然 法则中抽象出来,使得模型中所有元素都遵从这些规则。这种方法的构造和实施 都是一个相当复杂的过程,但是一旦构造好一套规则,动画设计师可以很容易的 控制模型中的元素。1 9 8 0 年,g o l d s t e m 构造了一套经典机械装置的行为规则。1 2 6 1 骨骼动画( s k e l e t a l a n i m a t i o n ) ,也称为关节点动画( a r t i c u l a r e d a n i m a t i o n ) , 是从2 0 世纪7 0 年代开始兴起的一种控制技术,这种技术使得动画设计师可以通 过改变一套称之为骨髂或关节的轮廓,来控制角色的位霞或姿势,得到一系列图 形。通常情况下,它与关键帧内插( k e y f r a m ei n t e r p o l a t i o n ) 技术相结合,或者与 动画描述语言( a n i m a t i o n l a n g u a g e ) 相结合,得到最终结果。此外,这种方法还 可以与正反向运动学、动力学结合,为动画设计师提供更为方便的控制方法;与 解剖学的多层模型结合,获得更加逼真的视觉效果。总而言之,骨骼动画在角色 动画( c h a r a c t e ra n i m a t i o n ) 中有着极为广泛的应用。 在应用领域,国外的三维角色和场景编辑器发展已经较为成熟。如著名的三 维创意软件s o f f l m a g e 3 d ,m a y a ,l i g h t w a v e ,p o s e r ,3 d s m a x 。其中大多都支持 层级关系和正反向运动学、骨骼动画。但这些软件价格非常昂贵,硬件要求很高, 而且界面复杂,需要经过专门的训练才能掌握。 1 1 2 实时动画领域的发展 实时动画主要应用在虚拟现实技术、辅助教学、娱乐等领域。它要求每秒钟 计算机生成的图像数目在2 4 帧以上。通过视觉暂留给予用户连贯图像的假相。由 于强调实时性,计算机在图像质量和图像生成速度之间要取得一个平衡,过分强 调图像质量会使得图像不连贯,过分强调图像生成速度有会使图像变得很粗糙。 第一章概述 在骨骼动画渲染场景时,每一个与骨骼节点绑定的顶点都要进行一次坐标变 换。在若干年前,这些计算全部由c p u 承担,要实现实时动画是不可能的。随着 图形加速卡的出现和逐渐普及,坐标变换的工作( h a r d w a r et r a n s f o r m & l i g h t i n g ) 被转移到加速卡上由硬件实现,再采用多级流水线等技术,使得实时的骨骼动画 成为了现实。 可以预见到,随着硬件图形加速技术的发展更为复杂的动画控制技术如基 于解剖学的多层模型技术在不久的将来也可以实现实时渲染。到那时,将带给用 户更为真实的视觉体验,并促进虚拟现实技术、辅助教学、娱乐等产业的发展。 1 2 课题的目标、内容和意义 本课题的目标是设计并实现一个三维角色动画编辑器,这个编辑器要求具有 基本的模型编辑的功能,支持模型的骨骼系统的建立,支持关键帧动画,支持常 用文件格式的导入导出。其中,模型编辑功能要求实现常见的形体建立,拼接功 能i 分别针对网格体和网格体的各个面、顶点的修改功能i 材质的构建修改功能; 纹理坐标的编辑功能等。骨骼系统和关键帧系统要求实现骨骼树的建立和修改功 能:骨骼节点与三维模型的绑定功能;根据骨骼节点的关键帧技术得到动画。 根据课题的目标,作者的主要工作归纳如下; 1 ) 设计三维模型的存储结构,研究了模型的表示、建立和修改的方法。 三维模型的表示有多种方法,作者查阅了大量文献,分析比较各种模型表示 法的优缺点,选择使用多边形网格体( p o l y g o nm e s h ) 的表示法。并且分别用非面 向对象和面向对象两种思想实现了底层和上层两种数据存储格式。 2 ) 设计并实现了以命令和操控为核心的三维人机交互系统。 动画编辑器很大一部分工作是实现方便的人机交互功能,作者借鉴前人的经 验,结合多种设计模式( d e s i g np a t t e r n ) ,设计出一套用于三维人机交互的模式。 该模式强调操控和命令的结合,可以方便的增加、删除交互方式,并且支持撤消、 重作( u n d o l r e d o ) 机制。 3 ) 骨骼动画技术的研究与其视觉效果的改进。 骨骼技术与关键帧技术的结合,产生动画的各帧。本文设计并实现了基本骨 骼节点的树型表示方法和动画输出方法;还研究了实时动画领域的顶点混合方法 和骨混合方法,为解决骨骼动画中变形时出现的失真问题提出了解决方法。 4 ) 多个o p e n g l 视图及其在w i n d o w s 平台下优化应用。 o p e n g l 不支持面向对象的特性使得它不利于软件重用( r e u s e ) ;同时由于 o p e n g l 功能的多样性和高效性,也使得o p e n g l 难以控制。本论文实现的系统支 持多视图的多种布局方案,以方便用户多角度观察模型。作者在论文中试图把面 基于o p e n g l 的三维角色动画编辑器的设计与实现 向对象语言、多个o p e n g l 视图、多种布局方式结合到一起,并且着重研究多视 图的显示优化方法。 5 ) 以上绝大多数的研究已由软件实现。 在对以上主题研究的基础上,作者实现了一个角色动画编辑器。既为以后对 图形学的研究打下了基础,又为以后的研究提供了一个良好的工作平台。 作者在论文撰写过程中主要的创新点是: 提出了一种新的三维定位算法,比常用算法效率提高2 3 倍。 提出了套以操控和命令为核心的人机交互模式。 设计实现了一个支持多边形网格体和骨骼动画的类框架结构。 1 3 论文结构 本文共分为八章,接下来的第二章介绍了三维图像的基础知识,特别是三维 空间的旋转的方法。第三章介绍w i n d o w s 环境下使用o p e n g l 多个视图的方法和 优化。第四章中设计了一个支持多边形网格和骨骼动画的框架,作为系统的数据 组织方式。第五章中设计了一个以命令和操控为核心的人机交互系统,作为系统 的人机界面。第六章中介绍了骨骼动画的知识,分析了其中的缺点,并给出项点 混合和骨混合两种改进的方法。第七章设计了角色动画编辑器系统的功能和结构, 并通过测试给出系统的性能指标。最后在第八章中总结了作者的所有工作和研究 成果,提出下步完善本系统的建议。 第二章三维图形基础知识 第二章三维图形基础知识 2 1 三维图形的几何变换和投影变换 在三维空间中表示一个点经常使用齐次坐标( h o m o g e n e o u sc o o r d i n a t e ) ,齐次坐标 用n + l 维的向量表示n 维的向量。用这种表示法不但可以表示无穷远点,还可以 用4 x 4 的矩阵实现坐标系转换。由于用计算机存储矩阵有行主元和列主元两种形 式,而齐次坐标也有行矢量和列矢量两种表示法,f 文统一使用o p e n g l 中的表 示方法,即矩阵使用列主元方法,齐次坐标使用列矢量表示。下面给出个例子: k = ,t = a od 4 口1a 5 口2d 6 口3d 7 a 8口1 2 a 9口1 3 c 7 1 0q 4 口1 1口1 5 圪= t + k = a 0d 4a 8 口1口5口9 d 2 口6q o 口,7球1 1 其中t 的各个元素的下标表示元素的逻辑存储顺序。 2 1 1 三维空间中的几何变换 在交互式图形环境中用户经常要改变三维形体的位置、角度等信息,这就 要用到几何变换。几何变换指的是图形的几何信息的变化。常用的几何变换有平 移变换、比例变换、旋转变换、镜像变换、错切变换以及这些交换的合成变换。 平移变换和比例变换的变换矩阵分别为: m r = ( 公式2 - 1 ) 其中血、缈、止表示图形分别在x 轴,y 轴,z 轴方向上的平移量; x ,、y ,、2 ,表示图形缩放的参考点,s 。、s y 、s 。表示图形在各个坐标轴上缩放比 例。 镜像变换和错切变换的变换矩阵分别为: m m 。,= l000 ll10 o10o ool0 o00l m 。= ol ab 00 o 0 1o ( 公式2 - 2 ) 其中的镜像变换是使图形沿x y 坐标平面镜像的变换。 旋转变换比较复杂,其实现也有多种,关于旋转变换在2 2 节中详细讨论。 x y z w r。iiiiji。iii址 肟册| 莛 只影足 一 一 一 0 0 0 o o 是o o s o o & o o o f i f 膨 缸妙缸 o o 1 o 0 1 o 0 1 o o o 6 基于o p e n g l 的三维角色动画编辑器的设计与实现 2 1 2 三维空间中的投影变换 投影变换( p r o j e c t i o n ) 是把三维图形变化为二维图形的过程。投影变换分为两火 类:平行投影( o r t h o g r a p h i c ) $ 透视投影( p e r s p e c t i v e ) 。 产生平行投影视图的方法是:将物体表面上的点沿平行线投影到显示平面上。 通过选择不同的观察位置,可以将物体上的点投影到显示平面上来获得该物体不 同的视图。在平行投影中,三维景物中的平行线投影到二维显示平面中仍是平行 线。我们在学习机械制图时会接触到三视图,这种视图属于平行投影中的正平行 投影。 产生透视投影视图的方法是:沿汇聚路径将物体上的点投影到显示平面上。 在透视投影中,任一组不平行于投影平面的平行线在投影平面中都会汇聚到一点, 这个点叫做灭点( v a n i s h i n gp o i n t ) ,在坐标轴上的灭点叫做轴灭点或者主灭点( a x i s v a n i s h i n gp o i n t ) 。根据灭点的个数可以把透视投影分为一点透视、两点透视、三点 透视等。一点透视应用最为广泛,它产生的效果类似于相片。两点透视则主要用 于建筑和工业设计等。 2 2 。欧拉角旋转和万向节锁 旋转变换组成的空间并不是简单的三维矢量空间,而是被称为c l o s e dc u r v e d 3 - d i m e n s i o n a lm a n i f o l d 的空间,这个空间也是一个被称为s o ( 3 ) 自q 群。该空间的元 素的距离可以度量,并且与旋转的角度相关。平移变换的空间可以细分成多个子 空间,而旋转变换的s o ( 3 ) 空间则完全不能细分。因此在三维空间中旋转,比平移 变换要复杂的多。 下面给出三维空间旋 绕x 轴旋转:m 。= 绕y 轴旋转:m 。,= 绕z 轴旋转:m r 。= 转变换中最常见的三种 l 100 0 1 oc o s 口一s i n 口o j 0s i n 口c o s d0 0 0 0 l ; ic o s f l 0 s i n 0 o100 l s i n p o c o s f lo 0 001 c o s ) , 一s i n ,00 s i n ,7 c o s y 0 0 f l 00 1 0 i oooll 绕坐标轴的旋转变换矩阵: ( 公式2 - 3 ) ( 公式2 4 ) ( 公式2 4 ) 所谓欧拉旋转交换指的是用三维矢量ke ,e :j 表示图形分别绕x y z 坐标 第二章三维图形基础知识 轴旋转一定角度,忙;e ,e :l 被称为欧拉角( e u l e ra n g l e s ) 。如 3 0 ,0 ,o 】表示图形绕 x 轴旋转3 0 度,【0 , 0 ,3 0 表示图形绕z 轴旋转3 0 度。 使用欧拉角进行旋转实际上是把旋转变换空间的三个元素相组合,所以它是 顺序相关的,也就是说绕各个坐标轴旋转的次序会影响最终的结果。图2l 所示的 是一个正方体按欧拉j 韵 2 0 ,2 0 ,o 】旋转,( a ) 中按照x y z 的顺序旋转,( b ) 中按照z y x 的顺序旋转,得到的结果不同。 ( a )( b ) 图2 1 立方体的欧拉角旋转,( a ) 按x y z 顺序 旋转,( b ) 按z y x 顺序旋转 在本文中,如果不作特别说明,我们所使用的e u l e r 角旋转顺序都是x y z 设欧拉角为眩e ,ej ,则其变换矩阵可以用如下方法计算。 m = c y + c 2 c y + 船 一s y 0 c z 船 o o - 口00 c y 0 s y 0 l 10 0 0 盘00i , 101 00i l0 “一肛0 0lo o ol s y 0 c y 0 o001 麟+ s y + c z c x + 船 取+ s y 跖+ c x + 口 麟+ c y 0 0 戚 0o “s y + c z + 嚣龆0 “s y + 船一肼+ c z 0 口4 c y 0 01 艘0 o1 ( 公式2 - 6 ) 其中s x ,s y ,s z ,c x ,c y ,c z 分别表示s i n ( e x ) ,s i n ( e ,) ,s i n ( e ) ,c o s ( e , ) , e o s ( e , ) , c o s ( e :) 。 下面考虑一种极端的情况。假设图形按照 a 1 ,9 0 ,a 3 】和x y z 的顺序旋转,在绕 x 轴转a l 度后,又绕y 轴旋转9 0 度,这时空间的z 轴刚好映射到原坐标系的x 轴,原本期望绕z 轴旋转a 3 度,而实际上是绕x 轴旋转了a 3 度。这种一个旋转 轴映射到另一个旋转轴上。使得不能按照期望的旋转轴和角度旋转物体的情况叫 做万向节锁( g i m b a ll o c k ) 。万向节锁是使用欧拉角所不能避免的,解决它的方法 是使用2 3 节中的四元数代数。 使用欧拉角的优点是占有的存储空间较小,而且方便的可以与旋转变换阵进 行相互转换。在本论文中,欧拉角被用在表示骨骼节点的相对旋转变换上。其它 基于o p e n g l 的三维角色动画编辑器的设计与实现 支持骨骼动画的软件中,m a y a 和m i l ks h a p e 也使用这种方法。 2 。3 四元数旋转 四元数理论由英国数学家h a m i l t o n 在十九世纪最早提出,1 9 8 5 年s 1 g g r a p h 把四元数方法引入计算机图形学,主要用于三维空间中旋转。用四元数可以解决 用欧拉角旋转时的万向节锁问题,而且与其他的旋转方法相比较,四元数更简单, 系统开销更小。 四元数可以被表示为: h = x i + 奶+ z k + w ,其中i 2 = j 2 = k2 = 一l ,i j = k = - j i 。 四元数的另种表示方法是: = by = w 】,或者何= f vw 】,其中vsj r 3 。 如果是一个单位四元数,且日= ,3 s i n c o c o s 国1 ,则该四元数相当于绕;轴 旋转了2 国角。 这样,我们可以使用四种方法来表示旋转变换:“绕任意轴旋转”、“四元数”、 “欧拉角”和“旋转交换阵”。图2 2 中给出了它们之问的常用转换关系。 图2 2四种旋转表示法的常用转换关系 本文中会频繁用到的转换关系如下; 1 ) “绕任意轴旋转”到“四元数”。 如果绕空间中任意轴v = 1 v x 秒w l 旋转r 角( 其中v 是单位向量) ,用四 元数表示为;h = k + s i n ( r 2 ) v y * s i n ( r 2 ) 比* s i n ( r 2 ) c o s ( r 2 ) 】( 公式2 - 7 ) 。 这种转换会出现在用户拖拽鼠标控制物体旋转时,而真正完成转换,还需要2 ) 中 的转换。 2 ) “四元数”到“旋转变换阵”。 给定一个四元数日= k bcw i ,其对应的旋转变换阵为: 第二章三维图形基础知识 m h = t 一2 b 2 2 c 2 2 a b + 2 c w 2 a c 一2 b w o 2 a b 一2 c w 1 2 a 2 2 c 2 2 b c + 2 a w o 2 a c + 2 b w 2 b c 一2 a w 1 2 a 2 2 b 2 o ( 公式2 - 8 ) 该转换除了使用在1 ) 中所提到的情况外,还会使用在动画回放时,用四元数 来实现关键帧的内插,这种内插叫做球形线性内插,见6 1 2 节中的介绍。 3 ) “欧拉角”到“旋转变换阵”。 这种转换在2 2 节中已经给出方程。当实施骨骼节点的相对变换时,会用到该 种转换。 4 ) “旋转变换阵”到“欧拉角” 这种转换是3 ) 的逆变换。其转换的流程较为复杂,这里就不详述了。创建和 修改骨骼节点时,需要从三维坐标信息得到节点矩阵形式的绝对变换和相对变换, 再从这些变换得到欧拉角信息。 1 0 基于o p e n g l 的三维角色动画编辑器的设计与实现 第三章多个o p e n g l 视图及其在w i n 3 2 平台下优化应用 3 1 o p e n g l 介绍 o p e n g l 的前身是s g i 公司为其图形工作站开发的i r i s g l 。i r i s g l 是一个工 业标准的3 d 图形软件接e l ,功能虽然强大但是移植性不好,于是s g i 公司便在 i r i s g l 的基础上开发了o p e n g l 。顾名思义,o p e n g l 便是“开放的图形程序接口”。 o p e n g l 采用高速算法,可以产生质量接近光线跟踪算法的真实感图像。 o p e n g l 有平台无关、高性能、可伸缩等优点,在c a d c a m 、实体造型、虚拟现 实等领域都有广泛的应用i l l 。 o p e n g l 标准在不断的进化之中。1 9 9 2 年7 月,s g i 公司发布了o p e n o l 的 1 0 版本。1 9 9 5 年,o p e n g l 的1 1 版本面市,该版本比1 0 的性能有许多提高, 并加入了一些新的功能。其中包括顶点数组的新特性。提高顶点位置、法线、颜 色、色彩指数、纹理坐标、多边形边缘标识的传输速度,引入了新的纹理特性等 等。其后经过1 2 、i 3 、1 4 等版本的演化,2 0 0 3 年六月,o p e n g l 推出了15 版。 到目前为止,o p e n g l 已经可以支持更多的硬件加速功能。而下一代的o p e n g l - - o p e n g l 2 0 标准也在由3 d l a b s 公司制定。 o p e n g l 是一种过程性而非描述性的a p i ,也就是说它并不描述场景及其外观, 程序设计者需要规定实现某种特定外观或效果所需要的步骤,这些步骤包括了超 过2 0 0 条指令和函数【1 i 。另外o p e n g l 不包括任何窗口管理、用户交互或文件i o 函数,而是由特定的操作系统实现这些功能,然后把窗口或位图的绘制控制权移 交给o p e n g l 。也不存在所谓的“o p e n g l 文件格式”,程序设计者要根据自己的 需求构造,然后用较低级的o p e n g l 命令绘制。这些都使得编制和调试一个基于 o p e n g l 的程序比较困难,要求开发者既懂得特定操作系统的知识,又理解o p e n g l 和图形学的原理。 o p e n g l 被严格定义为“一种到图形硬件的软件接口”。它既可以使用图形加 速硬件提供的功能,也可以在不支持图形加速的硬件上使用纯软件的、“通用的” 实现l l j 。不过比起软件的实现,图形加速硬件拥有的硬件双缓冲、z 缓冲、三角形 生成、t r a n s f o r m & l i g h t i n g 和多级流水线等功能使得其图像生成速度要远远高于 前者。 第三章多个o l x m g l 视图及在w i u d o w s 平台下优化应用 3 2 o p e n g l 在w i n d o w s 下的应用 显示硬件驱动程序 一 里量堡竺 图3i o p e n g l 在w i n d o w s 系统中的位置 图3 1 所示的是o p e n g l 在w i n d o w s 系统中的位置,可以看出,o p e n g l 跳过 效率低下的g d i ( 图像设备接口) ,直接调用显示硬件驱动程序,因而大大加快了显 示速度。 o p e n g l 的基本工作流程图3 2 所示。 图3 2o p e n g l 的工作流程 其中几何顶点数据包括三维形体的顶点、线段、多边形,这些数据经过流程 图的上部,包括运算器、逐个顶点操作等;图像数据包括象索、位图等,图像象 素数据的处理方式与几何顶点数据的处理方式不同,但它们都经过光栅化、分片 ( f r a g m e m ) 处理直至把最后的光栅数据写入帧缓冲器。在o p e n g l 中的所有数据包 括几何顶点数据和象素数据都可以被存储在显示列表中或者立即可以得到处理。 o p e n g l 中,显示列表技术可以大大加快图像的生成速度。 与w i n d o w sg d i 的设备上下文( d e v i c ec o n t e x t ,简称d c ) 类似,o p e n g l 使用渲染上下文( r e n d e r i n gc o n t e x t ,简称p c ) 来保存绘图过程中的状态。而与 d c 不同的是,o p e n g l 命令不显式的指定当前的k c ,而是在每次绘图之前设置 当前的r c 。这一点在同一个程序使用多个o p e n g l 视图时显得尤为重要。 下面给出w i n d o w s 中o p e n g l 的初始化过程: 1 ) 建立窗口,并获得它的设备上下文。 2 ) 选择硬件或软件最匹配的象索格式。象索格式中包含一些用户需要使用的 硬件能力,比如单缓冲还是双缓冲、色深、z 缓冲深度、模板缓冲深度等。如果用 1 2 基于o p e n g l 的三维角色动画编辑器的设计与实现 户需要的硬件能力硬件不支持,则o p e n g l 会选择最接近的象素格式。 3 ) 建立渲染上下文,并与设备上下文绑定。这样所有随后的o p e n g l 操作都 被认为是针对该渲染上下文的。 4 ) 建立渲染上下文的初始环境,如光照模型,光源,缺省材质等。 5 ) 在窗口的r e s i z e 消息处理函数中建立投影变换和初始的模型变换。 6 ) 在窗口的p a l m 消息处理函数中绘制图形,并交互前景背景缓冲区。 3 3 多个o p e n g l 视图的使用及优化 圈3 3 多税幽的一种布局( 筒稼“左三右一”布局) 三维图形软件常常使用多视图技术,这是一种从工程制图中的三视图技术演 变而来的,其视图种类包括前视图、,上视图、左视图、透视图、用户自定义视图 等等。同时显示多个视图可以使图形设计师从多个角度观察、控制自己的作品。 图3 3 所示的是从本课题相关软件中截取的图像,其中使用了“左三右一”的一种 视图布局。 多视图中,虽然各个视图的外观可能各不相同,但其中显示的模型的几何数 据是一致的。通过使用显示列表技术,抽象出多视图的共性和个性,可以达到加 快图像生成速度的作用。 视图的共性:模型的几何数据,图像或纹理的象素数据等。 视图的个性:投影方法,辅助坐标轴,辅助坐标平面等。 匡攫 图3 4 本课题中文档类视图类的关系 显示列表( d i s p l a y l i s t ) 是o p e n g l 中一项重要的技术,它是由一组预先存储起 来的留待以后调用的o p e n g l 函数语句组成的,当调用这张显示列表时就依次执 第- - f t 多个o p e n g l 视图及在w i n d o w s 平台下优化应用 13 行表中所列出的函数语句。采用显示列表方式绘图一般要比立即方式快,特别是 当其内容包括位图、矩阵、材质纹理等操作时。 下面作者使用面向对象来解决多视图的多种布局问题,并且使用显示列表加 快圉形生成速度。 大多数面向对象的应用程序框架中支持“文档视图结构”。文档对象中保存着 数据,视图对象负责把数据呈现到屏幕上,当然这只是笼统的、一般性的描述。 在本文中,文档对象要负担起更多的责任。因为文档对象和视图对象是一对多的 关系,在上面提到的各个视图中的图形显示工作有一些是雷同的,我们可以把这 部分工作交给文档来完成,而各视图只完成各不相同的工作。 图3 5多视图共享显示列表空间的示意图 每个视图中的r c 都有自己的显示列表空间,如果不作特殊处理,每个视图在 生成显示列表时都要占有宝贵的o p e n g l 高速缓存空间。在本课题中常常使用四 个甚至更多的r c ,如果每个r c 都各自生成相同的显示列表,造成的浪费也相当 可观。o p e n g l l 0 1 以上提供两个或多个r c 共享显示列表的功能,但是这种共享 是完全共享,即r c 会完全失去自己的显示列表空间。这样要由程序设计者提供一 种机制使得多个r c 既可以有各自私有的列表,又共同占有公用列表。 作者提出的解决方法是所有r c 共享一个显示列表空间,由文档对象负责公用 列表的生成与分配,视图类对象负责私有列表的生成和分配。需要显示图形时, 视图对象查私有列表,找到则显示;文档对象查公用列表,找到则显示。图3 5 是 一个简单的例子。 1 4 基于o p e n g l 的三维角色动湎编辑器的设计与实理 第四章支持多边形网格和骨骼动画的类框架结构设计 4 1 三维形体的表示 三维空间中的形体有曲线( c u r v e ) 、曲面( s u r f a c e ) * l l 体( s o l i d ) _ - 一- 种。表示曲面的 方法叫曲面造型( s u r f a c em o d e l i n g ) ,表示体的方法叫实体建模( s o l i dm o d e l i n g ) ,它 们是图形学中两个大的研究领域。 1 曲面造型方法 曲面造型主要有三种方法: 1 ) 二次曲面( q u a d r i cs u r f a c e s ) 。二次曲面通常用三元二次隐式方程表示,形如: f ( x ,y ,z ) = 积2 + 砂2 + c z2 十2 西叫+ 2 e y z + 2 f x z + 2 9 x 十2 b y + 2 止+ k = 0 二次曲面通常用来表示基本的常见的曲面,如球体,锥体等。优点是计算曲 面法线较为方便,且容易得出两个曲面的交集。对于较为复杂的曲面就不适合使 用二次曲面表示。 2 ) 参数曲面( p a r a m e t r i cs u r f a c e s ) 。较为常用的参数曲面有厄密曲面( h e r m i t e s u r f a c e s ) 、贝塞尔曲面0 s e z i e rs u r f a c e s ) 、非均匀有理b 样条曲面( n o n - u n i f o r m r a t i o n a l b s p l i n es u r f a c e s ,简称n u r b s ) 。这三种参数曲面用面片0 a t c h ) 组合的方 式可组成复杂的曲面,且在组合的边界能保持曲面的连续可导等性质。 参数曲面经常用于形体的设计阶段,通过改交控制点,可以部分或全部的修 改曲面。参数曲面可以生成复杂的,光滑的曲面,但是由于整个生成过程较为复 杂,所以在实时性要求较高的动画中应用不多。 3 ) 多边形网格曲面( p o l y g o nm e s hs u r f a c e s ) 。多边形网格是一组边界相邻的多 边形。集装箱、建筑外观等都可以用多边形网格来表示;也可以用多边形网格表 示平滑的曲面,如球体,当然这只是一种近似。当用较多的多边形来表示曲面时, 也可以得到很好的效果。由于多边形网格的每一个多边形都在平面上,存储和处 理起来比较容易,速度也很快,很适合于实时性要求高的场合。 2 实体造型方法 常见的实体造型技术如下: 1 ) 扫描表示( s w e e pr e p r e s e n t a t i o n s ) 。通过先构造二维形状再挤出( e x t r u s i o n ) 的方法构造形体。 2 ) 边界表示( b o u n d a r yr e p r e s e n t a t i o n s ) 。通过描述物体边界的方式构造形体。 3 ) 空间黼( s p a t i a l - p a r t i t i o n i n gr e p r e s e n t a t i o n s ) 。用基本的形体在空间中 组合( 不相交) 的方式构造形体。 第四章支持多边形网格和骨骼动域的类框架结构设计 4 ) 特征表示( p r i m i t i v ei n s t a n c i n g ) 。定义一系列的形体特征,然后用形体特征 的描述来构造形体。 3 论文中使用的多边形网格方法 本文使用多边形网格表示曲面和形体边界,同时用其的法线指定形体的内外。 理由是:本课题主要研究角色动画控制技术,只需要基本的建模功能;用其他技 术生成实时的动画,在现有的硬件设备上是很难做到的。 多边形网格的组成元素有顶点、边、多边形。每个边至多属于两个多边形, 每个顶点至少属于两个边。每个边连接两个顶点,多边形由一系列闭合的边围成。 多边形网格有三种主要的表示方法: 1 ) 显式的多边形表示。其中每一个多边形都用顶点列表表示。 2 ) 顶点列表表示。每个多边形用顶点指针的列表表示。 3 ) 边列表表示。每个多边形用边指针的列表表示。 本文中用2 ) 的方法来存储和实现多边形网格。关于这三种表示方法的详细比 较,见参考文献1 2 0 l 。 4 2 模型数据的设计 作者把模型数据归为以下几类: 1 ) 顶点( v e r t e x ) 。顶点包含顶点坐标数据、绑定骨骼节点的指针数据。 2 ) 多边形口o l y g o n ) 。多边形包含顶点的指针数据、多边形的法向重、多边形 的纹理坐标数据。 3 ) 网格体( m e s h ) 。网格体包含多边形和顶点的指针数据、网格体的材质数据。 4 ) 组( g r o u p ) 。组是网格体的集合。用它可以对网格体归类管理并实施一些集 合操作。 5 ) 材质( m a t e r i a l ) 。材质包含其各种光照数据、纹理数据。 其中关键的类之间的关系如图4 1 。 圜4 1 模型数据之间的关联 1 6 基于o p e n g l 的三维角色动画编辑器的设计与实现 方案中网格体拥有顶点和多边形的实例,负责顶点和多边形的管理。还可能 存在的方案有:网格体、顶点、多边形之间不存在聚类的关系,只存在关联,这 时在生成、修改、删除网格体时需要在三个列表中做大量的工作,优点是占有空 间小;网格体拥有多边体的实例,多边体与顶点发生关联,耗时一般,空间占用 一般。本文中使用的方案虽然可能占用了最大空间,但是各种

温馨提示

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

评论

0/150

提交评论