




已阅读5页,还剩74页未读, 继续免费阅读
(计算机系统结构专业论文)复杂三维场景的数据处理及骨骼动画实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浙江大学硕士学位论文摘要 摘要 t y r 是一个三维场景的多屏幕拼接计算机集群实时绘制系统。提供了功能强 大的遮挡剔除和场景简化算法,能对大规模复杂的动态场景进行超高分辨率的实 时绘制。本文在t y r 系统中解决了数据流的处理问题和实现了人物骨骼动画。 第一部分的工作是为t y r 系统的提供底层的数据流处理服务,这部分工作包 括解决场景文件来源、对场景文件的解析和将场景文件中的数据设置成绘制引擎 内部的数据。t y r 系统是基于x 3 d 标准的虚拟三维场景浏览器,其场景文件是 按照x 3 d 标准定义的。本文通过提供一个3 d sm a x 的导出插件来解决场景文件 的来源问题。导出器通过访问3 d sm a x 内存中的数据,将3 d sm a x 的场景转换成 x 3 d 标准的场景,然后以不同的编码方式保存为场景文件。解析器读取场景文件 并进行解析,在内存中构建x 3 d 标准的场景。为了提高t y r 系统的效率和独立性, 其绘制引擎使用自己内部更接近绘制语义的数据,所以需要通过转换器将x 3 d 标 准的场景数据转换成绘制引擎内部的数据。 第二部分工作在t y r 系统中实现了蒙皮骨骼人物动画,动画使用关键帧驱动, 人物模型数据和动画的关键帧数据均来源于3 d sm a x 。本文在该部分解决了人物 动画从数据来源到绘制实现的全部问题。一开始先论述了目前主流的两种皮肤构 造技术;接着定义了的s - a n i m 人物动画标准来扩展x 3 d 标准,该标准面向应用 容易实现g p u 加速;然后介绍蒙皮骨骼人物动画的导出;最后介绍如何扩展绘 制引擎t s e ,在t y r 系统中实现蒙皮骨骼动画的绘制。 本文的这两部分工作对t y r 系统十分重要。解决数据来源问题,不但是绘制 系统首先需要解决问题,而且一个设计精良组织合理的绘制数据,还能大大提高 绘制效率。在虚拟现实场景中添加人物动画能让场景更加生动,增强虚拟绘制的 真实性。 关键词:x 3 d ,绘制引擎,场景树,导出器,骨骼动画 浙江大学硕士学位论文 a b s t r a c t a b s t r a c t t h et y rs y s t e mi sd e s i g n e df o r3 ds c e n e sr e a l - t i m er e n d e r i n gu s i n gc o m p u t e r c l u s t e rf o rm u l t i s c r e e nm o s a i c i nt h es u p p o r to fe f f i c i e n ta l g o r i t h ma b o u tc u l l i n ga n d s i m p l i f y , t y rc a nh a n d l el a r g es c a l ec o m p l e x3 ds c e n ef o rh i g hr e s o l u t i o nr e a l - t i m e r e n d e r i n g m y t h e s i s w i l lp r o v i d es o l u t i o n sf o rt w ok e yi s s u e si nt y rs y s t e m o no n eh a n d ,ip r o c e s st h ed a t af l o wi nt y rs y s t e m ,i n c l u d i n gs c e n ef i l e p r o d u c i n g ,p a r s i n ga n ds e t u p t h ee x p o r t e rw h i c h im a d ea sap l u g - i nf o r3 d sm a xc a n c o n v e r t3 d sm a x ss c e n eg r a p hi n t ox 3 d ss c e n eg r a p he f f i c i e n t l y t h ep a r s e rr e a d st h e s c e n ef i l ea n db u i l d st h ew h o l es c e n ei nm e m o r y c o n s i d e r i n gt h ei n d e p e n d e n c ya n d e f f i c i e n c y , t s em a i n t a i n i n go w nd a t as t r u c t u r e s o ,t h em u s tb et h ea d a p t e rt oc o n v e r t t h ed a t ao fs c e n ei n t ot s e o nt h eo t h e rh a n d ,ii m p l e m e n t e dt h ec h a r a c t e ra n i m a t i o ni nt y rs y s t e mu s i n g s k i n n i n gt e c h n i c a l t h ea n i m a t i o ni sd r i v e nb yt h ek e yf r a m e s t h ec h a r a c t e rm o d e l a n dk e yf l a m e sb o t hc o m ef r o m3 d sm a x i nt h i sp a r t ,f i r s tid i s c u s st h et w op o p u l a r s k i l l sf o rc o n s t r u c t i n gs k i n t h e nid e f i n e dt h es - a n i mp r o p o s a lt oe x t e n dt h ex 3 di n o r d e rt of a c i l i t a t et h er e a l i z a t i o no fg p ua c c e l e r a t i n ga l g o r i t h mf o ra c h i e v i n gh i g h e r p e r f o r m a n c e n e x tid i s c o u r s et h ee x p o r t i n gd e t a i la n dr e n d e r i n gc h a r a c t e ra n i m a t i o ni n t y rt h r o u g he x p a n dt s e t h e s et w op a r t sw o r ka r ei m p o r t a n tt ot y rs y s t e m f o rar e n d e r i n gs y s t e m ,s c e n e d a t ap r o b l e mi st h ep r i m a r yi s s u em u s tb es o l v e df i r s t i na d d i t i o n ,aw e l l o r g a n i z e d r e n d e rd a t ac a na l s oi m p r o v er e n d e r i n ge f f i c i e n c y c h a r a c t e ra n i m a t i o ng i v e st h es t a t i c s c e n em u c hm o r el i f e l i k ea n dr e a l i t y k e y w o r d s :x 3 d ,r e n d e re n g i n e ,s c e n eg r a p h ,e x p o r t e r , s k e l e t a la n i m a t i o n 浙江大学硕士学位论文 图目录 图目录 图1 1t y r 系统的体系结构图2 图1 2o u to f c o r e 线程调度示意图4 图1 33 d sm a x 的x 3 d 场景导出插件v i s i o n i x p a n 5 图2 1t y r 绘制引擎完整的组成结构7 图2 2t y r 绘制系统中的数据流7 图2 3 场景数据工程语义下的s h a p e 节点8 图2 4 场景数据工程语义下的g e o m e t r y 和a p p e a r a n c e 节点9 图2 5 工程语义下的t s e 绘制单位9 图2 6 自定义插件的组成部分1 0 图3 1 现实中的坦克模型1 3 图3 2 坦克模型使用x 3 d 场景树描述1 4 图3 3 平截头体剔除的示意图1 4 图3 4x 3 d 场景图中一个i n s t a n c i n g 的例子1 5 图3 5w a t e r 在t y r 系统中的绘制1 6 图3 - 6r a i n 在t y r 系统中的绘制1 7 图3 7 人物动画在t y r 系统中的绘制1 7 图3 83 d sm a x8 的启动画面1 7 图3 - 93 d sm a x 场景中物体的局部坐标系统1 9 图3 1 0 静态物体的t r a n s f o r m 信息的导出2 1 图3 1 1 控制继承体系运动运动的t r a n s f o r m 节点2 2 图3 1 2 控制当前物体和继承体系运动运动的t r a n s f o r m 节点2 2 图3 1 3 目前导出器支持的s h a p e 节点导出策略分类情况2 3 图3 1 43 d sm a x 中的s t a n d a r d 材质2 4 图3 1 53 d sm a x 中的l i g h t s c a p e 材质2 4 图3 1 6 运用l i g h t s c a p e 材质建立的室内装潢场景截图2 4 图3 1 7 原始材质是s t a n d a r d 材质的s h e l l 材质2 5 图3 1 8 运用m u l t i s u b o b j e c t 材质建立的人物模型2 5 图3 1 93 d sm a x 中的多重材质2 6 图3 2 0 框架层的流程图2 7 图3 2 1 导出器第一次演进后的内核结构3 3 图3 2 2 导出器第二次演进后的内核结构3 4 图3 2 3f i l e w r i t e r 作为文件缓存的工作示意图3 5 图3 2 4 解析器的内部状态迁移图3 7 图3 2 5 坦克模型的状态3 9 图3 - 2 6s t a t e s e t 的结构4 0 图3 2 7 可见物体数据的s e t u p 工作过程4 2 浙江大学硕士学位论文图目录 图4 1 c r y s i s 游戏截图,3 d 游戏巅峰之作4 3 图4 2 刚体动画中关节断裂现象4 4 图4 3 缝合的手臂弯曲到4 5 度( 左) 和9 0 度( 右) 的效果图4 5 图4 4 缝合的手臂弯曲到1 2 0 度时,肘关节处非常不自然一4 6 图4 5 蒙皮的手臂弯曲到4 5 度,9 0 度,1 2 0 度的效果图4 7 图4 63 d sm a x 中的骨骼模型5 5 图4 7 使用p h y s i q u e 修改器调节骨头对网格的影响5 6 图4 8 人物动画的绘制流程5 8 图4 9 蒙皮骨骼人物动画的i n i t 过程的顺序图5 8 图4 1 0 蒙皮骨骼人物动画的u p d a t e 过程顺序图5 9 图4 1 1 蒙皮骨骼人物动画的d r a w 过程的顺序图6 1 图4 1 2 蒙皮c g 顶点程序的关键代码6 2 图4 1 3 使用g p u ( 左) 和c p u ( 右) 实现蒙皮算法的效率对比图6 3 图4 1 4 优化的蒙皮c g 顶点程序的关键代码6 4 图4 1 5 未优化的蒙皮c g 顶点程序绘制,帧率5 6 5 6 7 6 4 图4 1 6 优化后的蒙皮c g 顶点程序绘制,帧率6 8 4 6 5 6 5 图4 1 7 考虑相同人物模型数据重用的优化绘制,帧率1 0 0 2 6 6 6 6 图4 1 85 0 0 动画人物的场景绘制6 6 i v 浙江大学硕士学位论文表目录 表目录 3 1p u s hn o d er e c o r d 3 0 3 2p o pn o d er e c o r d 3 0 3 3p u s ha t t r i b u t er e c o r d 3 0 3 4p o pa t t r i b u t er e c o r d 3 0 3 5i n s t a n c ed e f i n i t i o nr e c o r d 3 1 3 6i n s t a n c i n gr e f e r e n c er e c o r d 3 1 :;7g e n e r a ln o d er e c o r d 3 1 3 8t r a n s l a t i o na t t r i b u t e ( o f t r a n s f r o m ) r e c o r d 3 2 3 9n a m ea t t r i b u t er e c o r d 3 2 3 1 0c o n t i n u a t i o nr e c o r d 3 3 3 1 1v i s i o n i x p a n 导出某场景的p r o f i l e 数据3 6 3 1 2 使用内存池前后的性能对比3 7 4 1 推导过程中使用到的变量定义4 8 v 表表表表表表表表表表表表表 浙江大学研究生学位论文独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发 表或撰写过的研究成果,也不包含为获得迸江盘鲎或其他教育机构的学位或 证书而使用过的材料。与我一周工作的同志对本研究所做的任何贡献均已在论文 中作了明确的说明并表示谢意。 学位论文作者签名:签字日期:三咖8年占月c ,口日 学位论文版权使用授权书 本学位论文作者完全了解逝江盘鲎有权保留并向国家有关部门或机构 送交本论文的复印件和磁盘,允许论文被查阅和借阅。本人授权堑姿叁茎可 以将学位论文的全部或部分内容编入有关数据库进行检索和传播,可以采用影 印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名:导师签名: 签字日期:潲年g 月i ,日 签字日期: 浙江大学硕士学位论文第l 章绪论 1 1 引言 第1 章绪论 虚拟现实( v i r t u a lr e a l i t y ,v r ) 的思想起源于美国人i v a ns u t h e r l a n d 于1 9 6 5 年在p 会议上所作的终极显示报告【l 】,其最初构想是利用计算机系统构造 一个“看起来景物真实、动作真实、声音真实、感觉真实”的世界【2 】。虚拟现实 技术是高度发展的计算机技术在各个领域应用过程中的结晶与反映,它不仅包括 图形学、图像处理、模式识别、网络技术、并行处理技术、人工智能等高性能计 算技术,而且涉及了数学、物理通信等领域,甚至与气象、地理、美学、心理学 和社会学等学科相判3 1 。目前虚拟现实已经广泛应用于建模与仿真、科学计算可 视化、设计与规划、教育与训练、遥作与遥现、医学、艺术与娱乐等多个方面, 并带来了巨大的经济效益。 虚拟现实绘制是虚拟现实技术的一个重要组成部分,也为虚拟现实技术的快 速发展起了巨大的需求牵引作用【4 】。随着计算机的计算能力,存储能力和图形处 理能力的迅猛发展,使复杂大规模三维场景的实时绘制成为了可能【5 】,绘制引擎 被要求能够快速、准确地表现海量数据。如何有效地解决这些海量场景数据的来 源,以及如何有效地组织这些场景数据以提高绘制效率,是一个绘制引擎必须要 解决的首要问题。另一方面,随着计算机造型技术和真实感图形绘制技术得到了 长足的进步,计算机动画已渗透到人们生活的各个角落,不管是在游戏、电影动 画还是虚拟现实中,生动逼真的动画( 人、动物等) 会使之增色不少,所以一个 成熟的绘制引擎少不了对人物动画的支持。本文的工作就是围绕上述两个方面做 一些尝试,为t y r 系统解决这部分关键的问题。 浙江大学坝t j 学位论文 第1 章绪论 1 2t y r 系统 1 2 1 系统介绍 t y r l 系统是一个大规模复杂三维动态场景的多屏幕拼接计算机集群实时绘 制软件,可用于工程设计、城市规划、科学可视化、虚拟漫游等诸多领域。系 统还提供了功能成熟的遮挡剔除和场景简化算法,能流畅地绘制大规模复杂的 动态场景。其界面化硬件参数的配置解决方案,使用户能够非常方便地配置计 算机集群的分配和投影仪的拼接 6 】,当前的配置方案可保存为配置文件,方便 下次使用。t y r 系统的体系结构如图1 1 所示。 e e n d e r p a s s :r 出g p i 0 5 : 秘 一一矜 翻纛。:一 o :,2 t :he l a - _ _ _ _ , :厂1 篷乡 i 饕 等 厂、 - - - _ _ l 馏警| _ c t r i c 如t ,o :# , 固固留。:m s p ”l l n c f l 。,鞫自鞫 1 2 2 系统功能 图1 一it y r 系统的体系结构图 一 大规模复杂三维动态场景实时绘制 系统在载入用户提供的场景文件之后,首先对其进行必要的预处理,然 后根据用户对系统的配置选择合适的绘制算法进行绘制。系统提供了优秀的 m 是f 希腊战神的名,o d i n 的儿j :,足英语t u e s d a y 的由米。 浙江大学硕士学位论文 第l 章绪论 可见性预测算法和场景简化算法,保证了即使是大规模复杂动态场景也能够 流畅的绘制。同时,系统还提供透明物体、实时动态光源和阴影、实时水面、 大规模地形、镜面反射、多重动态纹理和三维文字等绘制功能。 实时漫游 绘制场景时,会根据场景的定义或用户的设置给出一个初始的摄像机位 置( 如果场景中拥有多个摄像机的定义,那么用户可以自由地在这些摄像机 间切换) ,然后用户就可以通过对摄像机控制来实现漫游【7 1 ,摄像机可以在x 轴( 侧边) ,y 轴( 向上) 和z 轴( 向前) 进行自由地前进,平移和跳跃;可 以在y 轴,x 轴和z 轴方向进行偏转角( y a w ) ,倾斜角( p i t c h ) 和转角( r o l l ) 自由地旋转;甚至可以进行视角的缩放等操作。如果场景中的摄像机有运动 关键帧,那么系统还可以进行自动漫游。 一系统性能剖析 t y r 系统提供一个描述详尽的系统性能剖析器,给用户提供各个功能模块 的实时性能剖析,从而使用户能够及时掌握当前系统的运行状态。对于利用 其s d k 进行二次开发的软件开发人员,性能剖析器能够提供相当丰富的系统 运行信息。 _ 针对超大规模场景的o u to fc o r e 处理策略 ,当需要绘制的场景规模超过了硬件的处理能力( 主存容量,硬盘读取速 度等) 时,为了削除停滞现象,即系统采取了o u to f c o r e 处理策吲8 】:绘 制一个场景时,并不把所有的数据从磁盘读进内存里,而是根据当前视点的 位置,将当前视点能够看到的和离视点较近区块的物体优先读入内存进行绘 制,图1 2 显示了o u to f c o r e 线程调度的过程。对于超大规模场景的读取( 特 别的,针对大规模的水面、地形等) ,用户只需提供一个初始视点位置,系统 即可根据此信息将可见场景优先读入到系统中,避免造成绘制端的空闲,系 统还会根据场景的空间组织关系和视点位置对场景数据进行内存管理,及时 将不可见场景替换出内存而将可能可见换入内存。 浙江人学硕士学位论文第1 章绪论 图l - 2o u to f c o r e 线程调度示意图 多屏幕拼接 系统采用软件的方法来解决多屏幕拼接中所遇到的几何校正【9 】、颜色校 正【1 0 1 等问题。在系统开启后,依次将每一台投影仪单独打开向投影屏幕投射 校正图像,并用数码相机拍摄下投影的图像,系统通过使用计算机视觉的方 法,根据投影的校正图像求取几何校正参数,并发送到绘制端进行校正,从 而达到几何校正的目的。与几何校正类似,系统也是通过计算机视觉的方法, 通过获取各个投影仪射出的单色图像,对每个投影仪求取颜色校正参数,并 发送到绘制端进行校正。 1 2 3 系统结构 如图1 1 所示,整个系统按照功能的不同,可以划分为四个模块。 一用户终端( c o n s o l e ) 用户终端主要负责接受用户配置参数的设定,系统运行时的交互信息输入等。 中央控制端( c e n t r a lc o n t r o lm o d e l ) 中央控制端主要负责对其它模块的参数设置,各模块任务的分配以及各模块 间场景的同步等。 一绘制端( r e n d e r ) 绘制端主要负责绘制所需要的遮挡剔除,光栅化,屏幕拼接等操作。 一场景简化端( s c e n es i m p l i f i e r ) 场景简化端负责对场景进行同步或异步简化,提高系统的综合视觉效果。 4 一敦毫由一蕴,奴涵d 偾越 。,力豳 叭, 浙江人学倾 j 学位论义 第1 牵绪论 1 3 本文的工作 本文一部分重要工作是解决t y r 系统的场景文件来源问题。t y r 系统是基于 x 3 d 标准的虚拟场景浏览器,其场景文件是按照x 3 d 标准编码的,场景文件的 数据源自建模人员在3 d sm a x 中创建的模型。所以需要有这样的一个导出器 ( e x p o r t e r ) 通过访问3 d sm a x 内存中的数据,将3 d sm a x 的场景转换成x 3 d 标 准的场景,然后以不同的编码格式将转换后的场景保存为场景文件。这部分工作 通过为3 d sm a x 提供一个插件来实现,如图1 3 所示,该插件还提供预览功能, 方便建模者在建模过程中可以随时浏览场景,实时了解模型在t y r 中的绘制效果。 e 二至受受互王至 : 四| ;桡遵箍览一,l 箍蓖i ;l = = ,= = 竺= :。“ ! 霉出蔫一j ! 每垒葛场景i : l 选择部静 i ,碡出燕型 c # 二避制格式; ;r 文蓐格式 ; 箨出舞鼹爻件- ;捌览 f 、由h m p d m m “d :。 导出选厦i 擎出l ; 蓑晷旧坜景; 匡二三夏麴堡王圈 匿= 盈疆盈睡匿:薹j ; 图1 33 d sm a x 的x 3 d 场景导出插件v i s i o n i x p a n 有了场景文件之后,必须对场景文件进行解析,需要有这样一个解析器 ( p a r s e r ) 解析场景文件,保证数据和合法性并且在内存中构建场景。 绘制引擎为了独立与场景文件和提高绘制效率,自己维护了一套面向绘制的 数据结构,所以场景中的数据必须经过设置器( s e t u p h e l p e r ) 转换后才能供t y r 系统的绘制引擎使用。导出器,解析器和设置器的丌发是文本的第一部分工作, 该部分工作围绕t y r 系统的数据流进行,为t y r 系统提供数据支持。 本文的另一部分重要的工作是为t y r 系统添加人物动画支持。一个成熟的绘 制引擎少不了对人物动画的支持。本文应用目前比较成熟的蒙皮骨骼动画技术, 通过自定义s - a n i m 人物动画组件来扩展x 3 d 标准,同时扩腱t y r 系统的绘制引 浙江大学硕士学位论文第1 章绪论 擎t s e ( x y rs h a d i n ge n g i n e ) ,提供绘制人物骨骼动画的d l l 插件,在t y r 系统 中实现角色动画。 1 4 本章小结 本章先从系统功能和系统结构两方面介绍了w y r 系统,接着提出本文的工作, 即解决研系统的两部分问题,一方面为t y r 系统提供绘制数据支持;另一方面 在x y r 中实现人物骨骼动画。 6 浙江人学坝lj 学位论文第2 章x y r 系统的绘制引擎 2 1 概述 第2 章t y r 系统的绘制引擎 t s e 是t y rs h a d i n ge n g i n e 的缩写,是t y r 系统的绘制引擎,也就是绘制端 程序( r e n d e r ) 。t s e 并不负责模型的创建,纹理生成,场景的遮挡检测等等工作, 它只是接受输入的几何模型,并将其放置到合适的绘制节点下;同时接受绘制控 制参数,来控制场景的绘制。同时t s e 采用开放的架构,允许通过第三方通过 d l l 插件的形式开扩展它,使之能不修改核心而不断丰富新的绘制特效。 t s e 的数据来源是目前比较成熟的3 d 建模软件3 d sm a x 中的模型数据。数 据送给t s e 绘制之前,需要经过导出器( e x p o r t e r ) 、解析器( p a r s e r ) 和设置器 ( s e t u ph e l p e r ) 的处理,图2 。l 展示了t y r 绘制引擎完整的组成结构。 2 2 数据流 r 圈 圜竺叫霍 j li 图2 - 1x y r 绘制引擎完整的组成结构 图2 - 2t y r 绘制系统中的数据流 如图2 2 所示,t y r 系统中的数据有三种存在形式:原始数据、场景数据和 浙江大学硕仁学位论文第2 章t y r 系统的绘制引擎 绘制数据。原始数据是指3 d sm a x 中的模型数据;场景数据是指基于x 3 d 标准的 场景文件中的数据,由原始数据经过导出器处理后得到;绘制数据是指t y r 绘制 引擎t s e 内部绘制场景时使用的数据。导出器通过访问3 d sm a x 内存中的数据, 将3 d sm a x 内部的场景转换成x 3 d 标准的场景,完成原始数据到场景数据的转换。 设置器负责将外部的场景中的面向空间结构的数据转换成绘制引擎内部面向绘 制语义的数据,完成场景数据到绘制数据的转换。 2 2 1 原始数据 3 d sm a x 是非常成熟的建模软件,美工在建模时实现同样的模型效果往往可 以通过许多不同的建模方式,所以导出器需要处理的原始数据往往千变万化。为 了能更有效地导出场景,我们会根据实际情况,制定一些建模规则让美工遵守, 在一定程度上规范原始数据。 2 2 2 场景数据 x 3 d 标准中每个可见物体由一个s h a p e 节点表示,s h a p e 节点被定义在 t r a n s f o r mg r a p h 中,由t r a n s f o r m 节点决定s h a p e 在世界坐标系下的位置。每个 s h a p e 节点有两个子节点来描述这个物体的信息,分别是g e o m e t r y 节点和 a p p e a r a n c e 节点,的结构如图2 3 所示。 图2 3 场景数据工程语义下的s h a p e 节点 g e o m e t r y 节点包括顶点坐标、颜色、纹理坐标、法向等几何信息;a p p e a r a n c e 节点包含了纹理,纹理矩阵,材质等绘制该物体所需的属性信息。 浙江大学顾一i :学位论文第2 章t y r 系统的绘制引擎 图2 4 场景数据工程语义下的g e o m e t r y 和a p p e a r a n c e 节点 2 2 3 绘制数据 x 3 d 标准主要用来描述场景的构成,其绘制相关属性的组织结构松散,与绘 制a p i 较难结合。t s e 使用自己的一套数据结构来描述绘制物体,这些数据结 构它们与绘制a p i 结合较为紧密,包含了一些与内部绘制过程相关的信息,比如 o p e n g l 的纹理i d ,v e r t e xb u f f e ro b j e c t 的m 等。绘制数据更接近绘制语义, 能把绘制属性结构被很好的组织和管理起来,根据绘制属性来进行状态排序,尽 量减少状态切换提高绘制效率,另外绘制数据能够使将顶点数组中的数据有效地 被组织到显卡的缓存中,绘制每一帧时只需要从显存中读取海量的定点数据,而 不需要从内存中读取,从而提高绘制效率。图2 5 是t s e 里绘制一个物体所需 的数据结构: 匡乎唑瞿 留 图2 - 5 工程语义下的t s e 绘制单位 d r a w a b l e :包含物体的几何数据信息,包括顶点,颜色,法向,纹理坐标, v e r t e xo b j e c ti d ,显示列表d 等。这个结构与x 3 d 里的g e o m e t r y 节点对应。 9 浙江大学硕士学位论文第2 章t y r 系统的绘制引擎 一s t a t e s e t :将各种绘制状态控制信息和参数分类管理起来,包括纹理数据,纹 理d ,各种o p c n g l 绘制控制开关和参数。这个结构与x 3 d 里的a p p e a r a n c e 对应。 一r e n d e r a t t r i b u t e t s e 里最基本的绘制单元,包含了一个d r a w a b l e 和s t a t e s e t 结构,另外还包含物体世界坐标系下的变换。这个结构与x 3 d 里的s h a p e 节 点对应。 2 3 扩展性 t s e 的内核是开放框架设计的,具有良好的可扩展性,允许第三方以提供d l l 插件的方式来扩展引擎的绘制功能,t y r 系统的动态水,动态雨和人物动画的绘 制效果都是通过这种d l l 扩展的方式实现的。内核启动的时候,会去特定的插件 目录寻找插件,加载该目录下所有的合法的d l l 插件。自定义的插件主要有两部 分组成,如图2 - 6 所示,扩展t y r 绘制引擎时,需要同时扩展t s e 和s e t u p h e l p e r 。 图2 - 6 自定义插件的组成部分 通常扩展t s e 有三种方式: 1 注册新的c g 表示要使用包含t s e 内部物体结构,但是绘制方法有所区别。 2 继承i g e o m e t r y 1 0 浙江大学硕士学位论文 第2 章t y r 系统的绘制引擎 表示仍然采用s h a p e 结构,但是几何体部分的描述与c l n d e x f a c e s e t 所不同。 3 继承i r e n d e r a b l e 表示不使用s h a p e 结构,而定义一种新的地位等同于s h a p e 的结构或者已有 系统的接入。 纵观这三种扩展方式,我们发现第三种方式自由度最大,而蒙皮骨骼人物动 画的绘制不同于一般的s h a p e ,最大的区别在于每一帧都需要变换网格。所以采 用第三种方式进行扩展。 2 4 本章小结 本章从数据流和扩展性两个角度介绍了t y r 系统的绘制引擎t s e 。数据流从 原始数据开始,经过导出器的转换变成场景数据,再经过设置器的转换成为绘制 数据,最后t s e 使用该绘制数据进行场景绘制。t s e 由于采用开放性架构而具有 高度的可扩展性,允许通过第三方通过d l l 插件的形式开扩展它,使之能不修改 核心而不断丰富新的绘制特效。 浙江大学硕:t 学位论文第3 章场景中的数据转换 3 1 概述 第3 章场景中的数据转换 如本文2 2 节所述,原始数据需要经过导出器和设置器的两次转换,成为绘 制数据后,才能送给t s e 绘制场景。对场景中的数据转换工作简述如下:导出器 通过访问3 d s m a x 内存中的数据,将3 d s m a x 内部的场景转换成x 3 d 标准的场景, 然后将该x 3 d 标准的场景以一定的编码格式( 目前支持v r m l 编码和b i x 3 d 编 码) 保存到文件,即场景文件,以备r y r 绘制引擎携带使用。解析器负责解析由 导出器生成的场景文件,保证其数据的合法性,并在内存中构建x 3 d 标准的场景。 设置器负责将外部的场景数据转换成绘制引擎内部面向绘制的数据。 3 2x 3 d 相关 3 2 1x 3 d 简介 v r m l t l l 】( v i r t u a lr e a l i t ym o d e l i n gl a n g u a g e - - 虚拟现实建模语言) 是由非营 利的v r m l 联盟( w 曲3 d 联盟的前身) 制定的三维网络应用标准。它是一个开 放的、可扩展的、工业标准的景象描述语言,用于在i n t e m e t 描述3 d 景象或世界。 x 3 d t l 2 】( e x t e n s i b l e3 d 一可扩展3 d ) 是v r m l 的继承,可以看成是v r m l 9 7 的一个升级版本。它是一个软件标准,定义了如何在多媒体中整合基于网络传播 的交互三维内容,致力于建立一个三维图形与交互多媒体的统一交换格式,这种 格式要能达到像h t m l 或x m l 那样的标准性和可扩展性。x 3 d 把v r m l 9 7 分 解为组件,并使用可加入新组件的机制,来扩展v r m l 9 7 的功能。 选择x 3 d 标准作为t y r 系统场景文件的标准的原因如下: x 3 d 是w 3 c 主导的三维标准,已通过i s o 认证,具有一定的权威性。 x 3 d 标准的场景树通过t r a n s f o r m 组织场景,这样不但能将三维场景以空间 关系有效地组织起来,同时具有不少有点,比如容易控制场景中的物体,容 1 2 浙江人学倾i j 学位论文第3 市场景中的数据转换 易求包围盒等。 x 3 d 标准是可扩展的,我们可以通过扩展节点或组件的方式来添加系统实现 所需要的特殊支持。 3 2 2x 3 d 场景树 x 3 d 场景中的物体被组织成一个父亲多个孩子的层次结构( 有向无环图, d a g ) ,简称树型结构,所以场景树规范的名称应该是场景图【l3 1 。这样做的好处 是从叶子节点往树根的路径上可以有效地集中共享信息。 x 3 d 场景通过一些组节点,例如t r a n s f o r m 、g r o u p 、s w i t c h 、l o d 等,将场 景组织成树型结构。该结构中,场景根节点只有一个,它有一个或多个子节点, 而每个子节点又可以包含零个或多个子节点。这些节点中,有些是需要被绘制的 几何物体,比如建筑物;有些是不可绘制的物体,比如灯,摄像机等。 x 3 d 的场景树是通过空间关系t r a n s f o r m 组织的。从这个角度看,x 3 d 的场 景图也就是t r a n s f o r mg r a p h ,通过继承父子间的t r a n s f o r m a t i o n 关系来表示物体 之间的层次结构。举个例子,如图3 1 ,我们考虑现实生活中的坦克模型,为了 应用x 3 d 中的场景树表示该模型,我们先将坦克分成几个部分,而后通过指定各 部分之间的层次关系来组织成一个完整的坦克模型,如图3 2 所示。坦克的“左 履带”和“右履带”节点是“底盘”的子节点,“机枪”和“士兵”节点是“炮 台”的子节点,最后“底盘”和“炮台”节点是“坦克”的子节点,子节点的t r a n s f o r m 信息都是相对父节点指定的。 图3 1 现实中的坦克模犁 浙江人学硕f :学位论文 第3 市场景中的数据转换 图3 2 坦克模型使j 【 jx 3 d 场景树描述 场景通过场景图的方式组织起来,有两个最大的优点: 1 容易控制物体运动 继续考虑上面坦克的例子,如图3 - 2 ,由于“底盘”和“炮台”节点的t r a n s f o r m 信息是相对“坦克”节点指定的,所以移动“坦克”节点后,“底盘”和“炮台” 节点会自动跟着移动。同样,“底盘”和“炮台 的子节点也会因为它们的移动 而跟着移动,对于设置坦克整体运动这是非常方便的。如果没有这样的层次结 构,当“坦克”节点移动时,我们必须手动同步其所有的子孙节点,费时费力, 而且效果又不理想。 2 。有效进行剔除操作 剔除( c u l l i n g ) 就是去除场景中对最终绘制效果没有贡献的物体,例如,位 于观察者后方的物体,在屏幕之外的物体或者被遮挡的物体。如图3 3 ,一般情 况下,平截头体剔除是通过比较物体的空间边界与视域平截头体( 一个被平截掉 顶部的棱锥,表示可视范围) 实现的。 n i ;习她 毗。一:哭彝l _ “u “”。、- 、 圈遗 图3 - 3 平截头体剔除的示意图 浙江大学硕士学位论文 第3 章场景中的数据转换 当你将多边形送给o p e n g l 时,它会执行该剔除操作( 判断该多边形是否需 要进行光栅化) ,通过变换,裁剪多边形,让它们显示在视域范围内。相比将这 个代价较高的剔除工作让o p e n g l 在多边形级别执行,我们可以在更高的抽象层 次上更加有效地进行剔除操作。当我们先将场景中的不可见物体移除后,再把场 景送给o p e n g l 去绘制,这样可以大大减小硬件的工作量从而提高帧率【1 4 】。 更让人兴奋的是,在场景树中做剔除非常有效。剔除操作通常是使用节点的 包围盒( 或包围球) ,通过层次结构,它们递归地包含了子节点和子节点的包围 盒。如果当前节点的包围盒是不可见的,该节点和所有子节点都是不可见的,没 有必要再去递归判断其子节点,因为父节点的包围盒已包含子节点的包围盒【1 5 l 。 另外,x 3 d 的场景树中为了支持i n s t a n c i n g 机制,有两个重要的关键字 d e f 和u s e 。i n s t a n c e i n g 允许定义场景树的全部或者一部分,然后该定义可以被 多次引用。i n s t a n c i n gd e f i n i t i o n 通过d e f 关键字后跟d e f i n i t i o nn a m e 的方式实现, i n s t a n c i n gr e f e r e n c e 通过u s e 关键字后跟d e f i n i t i o nn a m e 的方式实现。如图3 - 4 的例子,后一个s h a p e 引用了前一个s h a p e 的定义,但是在两个s h a p e 之上运用 了不同的t r a n s f o r m ,所以场景被绘制时,有两个相同的物体会出现在场景不同的 地方。 d e fb o x l ) lt m a s f a r m ( 出雌【 d e f b o x l l 勒印e a p l a e m a c ea l a l a e m - n n c e ( 一) g m m m y姗a e e s e ti ) ) 】 ) d e fb o x l 2t r 宙x l f a r m ( c t m 出【 u 既b o x g l l l 图3 - 4x 3 d 场景图中一个i n s t a n c i n g 的例子 浙江人学f i ! ;! i j 学位论文第3 章场景中的数据转换 由于i n s t a n c i n g 机制2 最大限度地重用数据,避免不必要的重复数据,不但可 以大大减小数据量,而且节省系统导出和装载的时间。 3 2 3t y r 系统对x 3 d 的扩展 为了在t y r 系统中实现一些特效,我们对x 3 d 标准做了一些必要的扩展,目 前扩展了两个特殊节点:水节点( w a t e r ) ,雨节点( r a i n ) 和一个特殊组件:人 物蒙皮骨骼动画组件( s - a n i m ) 。水节
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025网络安全行业劳动合同模板
- 2025采购销售货物合同书
- 租赁园区大棚合同范本
- 2025携手共进合作开发土地合同模板
- 2025风电场EMC合同模板
- 民间抵押汽车合同范本
- 车辆采购合同范本
- 爷孙房屋购买合同范本
- 道闸租赁合同范本
- 定制车库维修合同范本
- 福建省福州市联盟校2023-2024学年高一下学期期末考试英语试题(解析版)
- 2025文化和旅游部直属事业单位招聘社会人员29人模拟试卷附答案详解
- 2024-2025学年重庆市万州区八年级(下)期末语文试卷
- 2025年乒乓球二级裁判考试题及答案
- 血标本采集考试试题附有答案
- 2025年公共安全生产试题及答案
- 员工工资及考勤管理制度
- 浙江省温州市龙湾区2024-2025学年七年级下学期学业水平期末检测数学试题
- 废料出售管理办法
- 企业干部退出管理办法
- 河南选调生管理暂行办法
评论
0/150
提交评论