收藏 分销(赏)

基于Virtools的粒子系统特效技术研究论文.doc

上传人:仙人****88 文档编号:9232494 上传时间:2025-03-18 格式:DOC 页数:39 大小:5.92MB 下载积分:10 金币
下载 相关 举报
基于Virtools的粒子系统特效技术研究论文.doc_第1页
第1页 / 共39页
基于Virtools的粒子系统特效技术研究论文.doc_第2页
第2页 / 共39页


点击查看更多>>
资源描述
毕业论文 第39页 目录 第1章 绪论 2 1.1课题背景知识介绍 2 1.1.1粒子系统介绍 2 1.1.2粒子系统原理 3 1.1.3 粒子系统的特点 3 1.2 本文的研究工作与内容安排 3 1.2.1 本文的研究工作 3 第2章 基于粒子系统技术的研究现状 5 2.1国外研究现状 5 2.2国内研究现状 5 2.3课题研究的意义 6 2.3.1粒子系统应用价值 6 2.3.3粒子系统技术研究意义 6 第3章 粒子系统的技术原理 6 3.1粒子系统的技术原理 6 3.1.1粒子系统的基本思想 6 3.1.2粒子的属性 8 3.1.3粒子的产生 9 3.1.4粒子的更新 10 3.1.5粒子的消亡 11 3. 2面向对象的粒子系统设计 11 3. 2.1粒子系统的基本模型 12 3. 2.2改进粒子系统模型 14 第4章 开发工具与开发环境介绍 17 4.1 Virtools开发环境介绍 17 4.1.1 Virtools Dev简介 17 4.1.2 Virtools操作界面介绍 19 4.2 Virtools模组介绍 20 4.2.1 物理属性模块(Virtools Physics Pack for Dev) 21 4.2.2 人工智能模块(Virtools AI Pack for Dev) 21 4.2.3Xbox开发模块(Virtools Xbox Kit for Dev) 21 4.2.4 网络服务器模块(Virtools Server) 22 4.2.5模型构建与控制 22 第5章 粒子系统特效的实现 23 5.1粒子系统的应用简介 23 5.2粒子系统实例 24 5.2.1灯光的制作 24 5.2.2粒子系统模拟火焰的生成 25 5.2.3滚滚浓烟 26 5.2.4烟花的制作 27 5.2.5喷泉可视化效果的制作 28 5.3漫游系统中粒子系统与场景的合成 29 5.4视角相机的实现 30 5.4.1两种选择方式: 30 5.4.2粒子系统的移动 31 5.5场景相机的控制 31 总结与展望 32 总结 32 展望 33 致谢 33 参考文献 34 附录 35 第1章 绪论 1.1课题背景知识介绍 在自然界中有一些现象,比如雨、雪、霜、烟、火等,没有固定的形状、也没有平滑的表面。它们的形状不停的变化,表面没有规律,很难用多边形网格来描述它。对这些不规则的、模糊的、运动的物体,粒子系统是一个有效的造型方法。粒子系统是计算机图形学的重要组成部分,是不规则物体造型的有效算法。它由成千上万的微粒组成,在系统运行过程中,每个粒子执行相似的运算,粒子之间关联度小。上述特点决定了粒子系统技术需要根据系统配置及需求进行优化并达到最佳效果。 1.1.1粒子系统介绍 粒子系统起源于1983年。在短短的24年时间里,它的发展非常迅速。从最初的简单模拟到引入物理模型,加入碰撞检测。从CPU上的串行计算到超级计算机的并行计算最近几年,人们又开始计算粒子系统规模也由最初的几千个发展到现在的百万个。其应用领域不断拓展,如虚拟现实、游戏开发、三维仿真、影视特效、科学计算可视化等领域都用到了粒子系统技术。 1.1.2粒子系统原理 粒子系统用大量细小微粒来表现一个复杂的不规则物体或者景象。每个粒子都有一定生命周期,系统会不断的产生新粒子,这些粒子不停地运动和变化,直到生命周期结束时被系统删除。粒子系统的绘制包括以下几个步骤 (1) 粒子的产生,产生新粒子并加入系统中 (2) 粒子的初始化,设置每个粒子的属性,如初始位置,方向,颜色,透明度,生命周期等。 (3) 粒子的运动,根据粒子的属性的动态变化对粒子进行移动和变换。 (4) 粒子的消亡,从系统中删除那些生命周期已经结束的粒子。 (5) 粒子的绘制,绘制并显示有生命的粒子组成的图形。 上述几个步骤不停地循环以形成物体的动态变化过程。 1.1.3 粒子系统的特点 同其他描述不规则物体的图形方法相比,粒子系统具有以下几个显著的特点: (1) 对物体不是通过具有边界的面片(如多边形)集合来描述,而是通过一组定义在空间中的原来粒子来描述。一个复杂物体或现象需要成千上万,甚至几十万个粒子来描述。 (2) 粒子系统不是一个静态实体,每个粒子都在不停地运动和改变,因此整个粒子系统的动态的,需要不停地计算和重新绘制。 (3) 粒子系统的每个粒子都是一个独立个体,自身的规律进行运动和改变,粒子之间的运动关联较小。 1.2 本文的研究工作与内容安排 1.2.1 本文的研究工作 本文共六章,其中二到五章叙述论文主要内容。 第一章阐述了粒子系统的背景知识,介绍了本文中粒子系统技术的研究情况。 第二章基于粒子系统技术的研究现状,说明了本课题研究的意义和具体内容 第三章介绍了面向对象的粒子系统的原理;粒子系统的工作流程,详细介绍了灯光,水流,火焰,烟花等粒子系统的属性和绘制粒子系统的点绘制技术((Point Sprite)。 第四章是开发工具和开发环境的介绍,对virtools等相关建模,开发软件进行介绍并对系统配置要求进行介绍。 第五章详细阐述粒子系统特效的实现过程及方法。 第六章是本文的结论部分。 组织结构如图1.2所示: 基于virtools的粒子系统技术研究 第一章 绪论 理论基础 实践 第四章 开发工具介绍 第二章 粒子系统研究现状 第三章 粒子系统原理 第五章 系统设计思路,系统实现 第六章 总结与展望 图1.2 组织结构图 第2章 基于粒子系统技术的研究现状 2.1国外研究现状 1983年,William T.R eeves最早提出了粒子系统。它能充分体现模糊物体的动态性和随机性,能很好地模拟动态的三维复杂景物。Andrew Witkin提出了基于物理模型的粒子系统,在经典粒子系统基础上加上重力等物理因素,对自然现象的模拟更逼真。在普通的PC机上实现粒子系统的实时绘制,最多只能处理10, 000个粒子,大大限制了粒子系统的应用范围。KarlS im s为了提高粒子系统的处理规模和速度,提出了一种并行算法,在一个能执行并行计算的超级计算机上实现了该算法。在可编程的图形处理器上实现了粒子系统,该方法可同时渲染1,000,000个粒子,达到较好效果咧。这在粒子系统发展上是一个里程碑。Kipfer Peter等人用OpenGL实现了一个完全基于GPU的通用粒子系统引擎,它引入了物理模型,并应用于火山模拟。但它没有做粒子系统与场景中其它对象之间的碰撞检测,在构建大场景时与其它对象的融合不是很理想。 2.2国内研究现状 国内在粒子系统的研究上起步较晚,2002年贵州工业大学的姚颜林等基于OPENGL的开发接口开发了面向对象的粒子系统。中科院南京地理与湖泊研究所开发了一套粒子系统应用程序接口并应用于苏州工业园虚拟展示系统。2006年 ,粒子系统的研究非常活跃。西安科技大学的宇亚卫用粒子系统模拟三维火焰,在粒子系统中引入了运动场,讨论了重力和风力对火焰的影响.刘钮等用粒子系统模拟头发,生成了较为逼真的效果。北京航天航空大学的许楠等实现了一种基于图形处理器的粒子系统。在国内的粒子系统研究上是一次飞跃。他实现的是一个基本的粒子系统,没有进行碰撞检测,也没有考虑物理模型,因此其应用有一定的局限性。 2.3课题研究的意义 2.3.1粒子系统应用价值 雨、雪 、烟、火焰等不规则的、模糊的、运动的物体或景象很难用一般的方法来建模。由于它们不停的运动和改变形状,表面不规则并且边界模糊,很难通过定义其表面网格来描述它。粒子系统为这类物体或景象的建模提供了有效的解决办法,它能很好的模拟物体的动态特性。经过二十多年的发展,粒子系统已经成为计算机图形学的重要组成部分,是模拟不规则动态物体或景象的有效算法,粒子系统广泛应用于虚拟现实三维仿真、游戏开发、电影特技、可视化等领域。用于模拟火、烟、焰的动态效果,光、影、闪电特效,雨雪降落过程液体或气体的流动过程等.粒子 系 统 是构建三维场景不可缺少的建模工具,在每一个具体的三维软件项目中,都不能没有粒子系统。 2.3.3粒子系统技术研究意义 目前国内外研究主要集中在粒子系统的算法和具体应用上,即核心层和应用层,缺乏中间的工具层,因此大家的研究彼此独立,不能通用。国外大公司的商业软件中提供了粒子系统的可视化编辑模块和浏览模块。用粒子系统引擎和编辑器能开展应用研究,直接在编辑器上调试可视化效果,而不必从研究算法开始。这样做可以提高工作效率,减少重复劳动。算法和接口公开,如果可视化工具满足不了需要,可以扩展这个通用算法和引擎。大大降低研究和实现算法的难度。 第3章 粒子系统的技术原理 3.1粒子系统的技术原理 3.1.1粒子系统的基本思想 粒子系统应用是指采用粒子系统的方法,对模糊自然景物或对象进行的计算机图形模拟应用。在一个粒子系统应用中往往包含了一个或多个粒子系统, 例如瀑布模拟,整个系统可以分成二个粒子系统。 其中一个模拟下泻的瀑布(瀑布系统),另一个用来模拟瀑布下水花四溅、涟漪遍布的水面(水面系统)。 这二个粒子系统具有独立性,例如它们所模拟的粒子是不同的,粒子属性的变化规律是不同的,其粒子的图形显示也是不同的。同时这二个粒子系统又存在一些关联性,如瀑布系统中的粒子在到达水面后将从爆布系统中消失(死亡),但同时给水面系统增加了一个新的粒子。在粒子系统的设计中,几乎都离不开物理模型的运用。从重力场的模拟,风的模拟等各种环境的模拟,到波浪、火焰、喷泉、瀑布、枝条的摆动,无一不是源于物理模型。常用的物理模型主要有两类:一是基于假想的物理模型,主要是为了方便的模拟实际单体的形态及运动,而假想物体的组成,构造及力学方程来进行建模。常见的主要是粒子系统,喷泉、雾、火焰、雪花等都是使用了粒子系统。二是基于物体实际的组成,构造及运动规律而进行建模。波浪、窗帘、桌布、枝条摆动、人及动物的运动都是用了该类模型。对于一些简单物体,可对整体列出动力学方程,然后按帧改变位置、状态,获得模拟动画效果。对于复杂的物体常将其分成若干部分,针对每一部分列出动力学方程,每帧对每个部分分别计算后,绘制一般过程。 粒子系统理论主要由以下部分组成: (1) 物质的粒子组成假设。粒子系统中,任何模拟对象,不论是固态的、液态的或者气态的,例如:火焰、云、雨和雪等,都是由有限个简单的粒子构成的,而且这些粒子处于不断的运动状态中,这个假设符合物理学定律:“物体都是由最基本的微粒构成的”,但是这些粒子与物理学中的原子等基本微粒不同,它们具有一定的形状、大小、颜色、透明度、位置、速度和生命期等属性,而且这些属性随着时间不断地发生变化。 (2) 粒子的独立关系假设。这里包含两个意思,一是粒子系统中各个粒子不与场景中任何物体相交,二是粒子之间不存在相交关系,并且粒子是不可穿透的。 (3) 粒子的生命机制。粒子系统中每个粒子都具有生命周期,在一定的时间周期内,粒子经历 “产生”、“活动”和 “死亡”三个基本的生命历程。 (4) 粒子的运动机制。粒子在存活期间按照一定的运动规律在场景中运动,粒子的运动机制是粒子系统模拟动态景物的关键。 (5) 粒子的绘制。因为构建一幅场景需要大量的粒子,因此在绘制时我们通常假设:单个的粒子不具有阴影,但是由粒子组成的实际物体则根据模拟场景的需要来决定是否进行阴影处理;单个的粒子不反射光线,但是由粒子组成的实际物体则根据模拟场景的需要来决定是否反射光线。 粒子系统方法可以产生一系列运动进化的画面,这使得模拟动态的三维复杂自然景物成为可能。生成粒子系统某瞬间画面的基本步骤为: 步骤1 在系统中产生新的粒子: 步骤2 赋予每一新粒子一定的静态属性; 步骤3 删除系统中已存在且超过其预先描述的生存期的所有粒子; 步骤4 根据剩余粒子的动态属性对粒子进行移动和变换; 步骤5 显示由有生命的粒子组成的图象。 总结上述5个步骤,粒子系统生成一个画面可分为:初始化粒子,粒子生命更新,粒子状态更新,粒子显示这个部分,流程图如图3.1所示 初始化粒子 粒子生命更新 粒子状态更新 粒子显示 图3.1 粒子系统流程图 3.1.2粒子的属性 在粒子系统中,粒子一般具有空间位置、速度、加速度、大小尺寸、颜亮度、热度、形状、生存期等属性。例如在采用粒子系统进行雨景模拟中,粒子就代表了一个实际的雨点, 粒子的属性就模拟了一个真实雨点的物理属性,其属性的变化模拟了真实雨点的变化。 粒子系统通常用以下值来反映粒子当前状态的属性: (1) Position:粒子当前在空间中的位置。 (2)Velocity:粒子的运行速度。 (3)color :粒子的颜色。粒子颜色的变化常常可以产生一些真实的效果,如烟火。 (4)Energy:粒子的能量。粒子能量的衰减常常用于物体的弹跳直至最后静止,也可以用来判断一个粒子的消亡。 (5)Size :粒子的大小。粒子的大小影响了一个粒子系统可以表现的效果以及运行的速度。 (6)Texture:纹理。是否对粒子设置纹理以及所设置纹理的个数将对整个粒子系统的性能产生巨大的影响,所以基于性能的考虑,每个相同类型的粒子采用同一个纹理。 图3.1 材质属性图 3.1.3粒子的产生 在一个粒子系统中,粒子的产生是通过控制随机过程的方式来完成的,它决定了在每个时间间隔内进入每帧的粒子数目,由于粒子的数目直接影响到模拟物体的密度,因而控制产生粒子的数目是相当重要的。模型设计者可以有两种方法来控制产生新粒子的数目,一种是设计者可以通过控制在一帧中所产生的粒子的平均数来实现。如果采用该方法则在某个时刻(Ti),新产生的粒子数量可以用以下公式描述: NP(Ti)=MNP(Ti)+Rand()*VNP(T1) (3-1) 其中:MNP(Ti)为在Ti时刻新产生粒子数目的平均值;VNP(Ti)为在Tl时刻新产生粒子数目的方差:NP(Ti)为在Ti时刻新产生的粒子数目;Rand()为在[1.0,1.0]上均匀分布的随机函数。平均值和方差可以是常量,也可以是基于Ti的变量. 另一种方法是使所指定的平均数与最大变化范围为屏幕上单位面积中所生成的粒子的平均数和方差,因此生成粒子的数目决定于物体所占屏幕的大小。采用这种方法时,粒子系统能够通过一个特殊帧面上的可视参数来计算机它所覆盖的大约屏幕区域,进而正确地计算机出新产生的粒子数目,其对应的计算机公式如下: NP(Ti)=(P(Ti)+Rand()*yNP(Ti))*SA (3-2) 其中: P(Ti)为在Ti时刻新产生粒子数目的平均值;VNP(Ti)为在Ti时刻新产生粒子数目的方差;NP(T1)为在Ti时刻新产生的粒子数目;Rand()为在[1.0,1.0]上均匀分布的随机函数。弘是粒子系统的屏幕区域。平均值和方差可以是常量,也可以是基于Ti的变量。 在粒子系统中对于新产生的粒子,其初始属性可以根据不同的模拟对象特点进行赋值。例如可以按以下公式赋值: Property(Ti)=MProperty(Ti)+Rand()*VProperty(Ti)Mproperty (3-3) Mproperty是该属性的均值,VPrerty(Ti)是该属性的方差。公式中粒子的初始位置可以将空间一个平面或三维空间作为基准,以雪花系统为例随机分布。再例如烟花模拟中, 烟花的各个粒子在某个时刻诞生在空间一个点或者非常小的空间内,并且速度的绝对值和方向矢量可以用上述公式来表示。 3.1.4粒子的更新 在自然景物模拟中,粒子的属性将随时间发生变化。变化的类型大致分为以下几种: (1)力学作用。如重力、风力、浮力等,将对粒子的位置、速度、加速度等属性产生影响。 (2)热作用。 如自然冷却、化学作用、热传递等,将影响温度、亮度、透明度等属性。 (3)形状变化。如爆炸、分裂等,导致粒子增多或影响到粒子尺寸、形状、质量等属性。 对于力学作用,基本可以采用牛顿定律来描述。在具体应用中,根据实际情况还可以采用近似简化的表示。例如在雨景、雪景的模拟中,模拟空间范围时,可以认为粒子的下落在达到一定速度后,是按匀速运动的。 对于热能相关的变化,可以认为其爆炸、获得能量、散热的过程按不同的速率曲线进行。例如在焰火模拟中,有些粒子可以认为是瞬间充分燃烧,能量获得最大值,然后按线性或非线性的散热曲线冷却。而有些粒子先在一个相对长的时间内逐渐获得热能,然后再按某种下降曲线冷却(变暗)。对于通用的参数化粒子系统,就需要设计满足不同需要的模型结构,在应用时只要通过参数选择不同的热能变化类型即可。 对于形状变化,往往涉及到新粒子的产生或消亡。例如焰火的爆炸,可以理解成一个粒子在消亡的同时有一批粒子产生并同时发生能量的变化。再如大片的雪花自然分成二片,意味着一个粒子的消失,二个新粒子的产生。 3.1.5粒子的消亡 既然有粒子的产生和变化,必然就有粒子的消亡。粒子的消亡有以下几种类型. (1)空间位置静止。例如在雪景模拟的粒子系统中,当雪花降落到地面后,雪花的空间位置不再变化。此时它自身的视觉效果可以通过地面的其他方法来模拟,代表雪花的粒子就没有存在的必要了。 (2)视觉效果消亡。例如在烟火、火焰模拟的粒子系统中,粒子有速度、热能、温度。粒子在运动的过程中,不断地散发热能,其亮度因此也在变化,当其亮度小于一定的数值时,虽然粒子可能还在空间运动,但相对其背景己经影响不到视觉模拟。在这种情况下,该粒子对模拟己经没有价值,可以消亡。 (3)生存期结束而消亡。有些粒子系统中,粒子有一个生存期属性。在到达生存期后,粒子也就可以死亡。生存期条件的采用又分两种情况:一种是在物理模拟中,本身就存在比较严格的生存期条件,例如生物对象:另一类是在物理系统的建模中,抽象出一个生存期的属性作为一种简化相对准确的描述。例如在焰火模拟中,以定义生存期的方式来简化模拟粒子的热能变化、亮度变化、时间变化。 (4)超出视界的消亡。因为考虑到粒子系统的用途,在粒子超出观察范围后,也可以消亡。 3. 2面向对象的粒子系统设计 系统的设计是否科学,是否合理关系到整个在系统是否具有良好的可扩性,是否具有比较好的性能。对于一个高级的粒子系统,它很可能会涉及到大量的代码编写,如果在编码之前没有进行良好的设计,将会给后续的工作带来不少麻烦,甚至会使得实现出来的粒子系统难以维护和更新。由上一节粒子系统模型可以知道,由于粒子系统需要产生大量的粒子来模型自然现象和某些特效,它将会大大增加每帧的可见多边形的数量,假设每个粒子需要用 4个定点和两个三角形,则一个具有500 个可见粒子将会增加 1000个可见三角形,而且这些粒子大多是运动的。由此可见一个没有经过良好设计过的粒子系统,很可能会引起严重的内存问题,尤其对于移动平台内存不大,硬件资源有限的环境下,将会大幅降低系统的刷新率。下面将会运用面向对象设计的原理,结合移动平台的条件和粒子模型,逐步设计出一个具有较好可扩展性和内存管理的面向对象粒子系统。 3. 2.1粒子系统的基本模型 面向对象分析是一种分析方法,它可以在问题域的词汇表中找到的类和对象的观点来审视需求,面向对象设计则是一种设计方法,它包含面向对象的分解过程,以及一种表示方法,用来描写设计中的系统的逻辑模型与物理模型,以及静态模型与动态模型。面向对象设计建立在面向对象分析之上,细化业务模型和业务行为,给出面向对象技术的技术实现。它的关键是其产出物能映射到计算机系统的要求。从上面粒子系统的基本思想的叙述中,可以较容易发现两个基本概念:粒子系统与粒子。这两个概念共同构成了面向对象分析中领域模型的两个元素,领域模型如下图所示: 1 Contain 1* Particle Particle System 图 3.2 粒子系统领域模型 从领域模型映射到面向对象语言的过程中,可以得到两个基本类粒子类和粒子系统类。 (1) 粒子类。粒子类与粒子系统物理模型的粒子相对应,它是系统里面的一个最基本的元素,因此粒子类主要的作用是如何反映出粒子系统模型中的粒子,设计的任务主要集中在类的基本数据类型设计上。由上一个节粒子模型可以得知,一个粒子具有位置、速度、加速度、大小尺寸、颜色、亮度、热度、形状、生存期等属性。在这些属性中粒子的位置,速度,加速度,颜色,大小,生存期是最为基础的,因此将他们作为粒子类的基本属性。此外在粒子渲染的过程或其它粒子计算机中需要用到粒子在上一个帧的位置,在粒子类里面需要加入一个新的属性oldPos。粒子类的属性设计如表3.1所示。 表3.1 粒子类的属性 数据类型 名称 描述 Vector 3 position 粒子位置 Vector 3 oldpos 上一帧粒子位置 Vector 3 velocity 粒子速度 Int color 粒子颜色 Int life 粒子生存期 Int size 粒子大小 不同的粒子系统在不同环境下对粒子的初始化和要求都不相同。例如烟,有些粒子系统需要模拟有风影响下的烟,有些粒子系统则需要模拟不受风影响的垂直上升的烟,这时这个两个系统对粒子的加速度设置就各不一样。所以粒子类的构造函数设置成空,粒子属性的赋值工作同一交给粒子系统完成,减少构造大量粒子实例过程中系统在调用构造函数的开销。 (2) 粒子系统类。粒子系统类负责控制粒子的属性赋值,粒子的产生,粒子的更新和粒子的渲染,它是整个系统的核心部分。根据粒子系统物理模型中粒子系统的控制流程,粒子系统类的属性如表3.2所示: 表3-2 粒子系统类的属性 数据类型 名称 Texture* Texture Vector3 position BlendMode blendmode Int type ArrayParticle particles Texture是一个指向材质数据的指针,为了系统运行效率,每个不同的粒子系统都各自使用一个材质,系统内的各个粒子都使用同一个材质。Posilion表示该粒子系统在哪个位置显示。不同的特效和景物模拟需要不同的渲染模式,因此在粒子系统内需要加入BledMod。这一个数据属性,type这代表了不同粒子系统的类型,系统类型主要有烟,雾,火焰,焰火,雨雪等类型,这个数据属性主要是为了使得系统可以控制不同类型的粒子系统。ArrayParticle则是指向粒子数组的指针,是粒子系统的基本元素,代表了粒子的集合。 根据粒子系统控制粒子的流程,粒子系统类的操作方法主要有以下几个,如表 表3.3 粒子系统类的操作方法 操作名称 描述 Emitter 负责粒子的产生 Update 负责粒子的更新 Render 负责粒子的渲染 一个粒子的基本模型图如下所示: PartucleSystem -Texture -Position -BlendMode -Type -Particles -Emitter() -Update() -Render() Particle -pos -oldpos -veclocity -life -color -size 图 3.3 粒子基本模型图 3. 2.2改进粒子系统模型 (1) 可管理的粒子系统 当系统中仅存在唯一个粒子系统的时候,用上述的基本模型即可完成任务。但在实际的工作中,一个游戏场景都会同时存在多个的相同的粒子系统去模拟特效。例如在一个战场场景中,可能有多处地方需要模拟火焰。这时系统就需要同时存在不同的粒子系统去模拟这种特效,如果程序员还是采用基本粒子模型,则在每一帧都需要对3个粒子系统进行更新、渲染等操作管理,还需要追踪所有粒子系统以保证能及时释放已经死亡的粒子,十分不方便,而且属于硬编码模式,维护性和可扩展性比较差。 有鉴于此,在基本模型上要加入一个Partid。Manager类,让它去管理所有的粒子系统,在需要的时候自动更新和渲染所有系统,并且对粒子系统进行内存管理,在结构上提高了系统的扩展性,使得程序员把更多精力放在场景的安排上,而不是把焦点放在如何处理粒子。 Particle Manager Particle System Particle System Particle System par par par 图3.4 Particle Manager示意图 由于粒子系统会在给定的时候内就消失,如果在管理类对粒子管理类进行操作的时候没有检查该粒子系统是否己经消亡,就很容易引发内存问题导致系统崩溃。因此除了添加粒子系统,减少粒子系统,更新粒子系统,渲染粒子系统等功能之外,还需要加入一个检验粒子系统是否己经消亡的功能。ParticleManager类的操作。 (2) 接口设计 上述提出的设计可以解决一个场景含有多个相同的粒子系统的情况,可是当一个游戏场景中还会存在着不同的粒子系统,例如在上面提到的战场场景中,除了有多处的火焰存在之外,有时还需要雨和雾的效果,这个时候该设计就不能再适用了。程序员不得不又一次再陷入硬编码的方式,一个个地处理不同的粒子系统,再次降低了系统的可扩展性。 在设计模式的核心设计原则提到:尽量针对接口编程,而不要针对实现编程。针对接口编程的组件不需要知道对象的具体类型和实现,只需要知道抽象类定义了哪些接口,这减少了实现上的依赖关系。为了最大限度地适应需求,应该先添加一个粒子系统得抽象接口,该接口中定义了每一类粒子系统共有的行为,粒子产生(mitter),粒子更新(Update),渲染区(Render)。添加这个接口后,利用面向对象语言多态的特点,系统添加新的类型的粒子系统的时候,只需要添加新类型代码,而系统中原有的代码不需要做任何的改变就可以适应新的需求。 第4章 开发工具与开发环境介绍 4.1 Virtools开发环境介绍 4.1.1 Virtools Dev简介 Virtools是一套整合软件,透过『直觉式图形开发接口』开发人员只需要拖曳所需要的行为模块就可以建构出复杂的互动应用程序,可同时满足无程序背景的设计人员以及高阶程序设计师的需要,让3D美术设计与程序人员进行良好的分工与合作,有效缩短开发时程、提升效益。由于内建超过500组的行为模块,更可以让使用者快速设计出多样的3D数字内容。3D动画已经是人人可学可做的了!现在我们更可以透过virtools这套由法国科技公司所研发多年的软件,简易的建置出网络可以播放的高标准3D动画,或者3D游戏,我们将带各位进入这个充满无限趣味的领域。 (1) Virtools架构: Virtools Viewer Virtools SDK Virtools 组成元素 Virtools Application 3D Engine Virtools Library (CK) 图 4.1 (1)   Virtools Library:可称为CK,提供3D及时的互动行为。 (2)   Virtools Application:为整合与制作的环境平台。 (3)   Virtools Viewer:可以执行由Application所制作出来的内容。 (4)    Virtools SDK(Software Development Kit):允许使用者新增  Virtools的功能(Virtools Dev才有)。   (2) Virtools 整合 3Ds Max: 我们要把做好的3D模型对象转入Virtools。需注意的是3Ds Max中的对象转入Virtools中有一定的限制。   3Ds Max转文件必需注意的事项: (i) 模型数据:已经转换为”editable mesh”型态的3D模型。可供输出的3D模型数据如下:基本模型数据,贴图坐标的设定, Smoothing Groups的设定,Hierarchy 从属关系设定,Show/hide Flag 显示隐藏的设定,Vertex Color。 (ii) 材质资料:3Ds Max 的标准材质以及multi/sub-object (同一对象、复合材质数据); 双面材质设定 (2-Sided Flag);透明度设定(Transparency);Diffuse的贴图;贴图的色彩将会因为这个材质颜色而改变,除非颜色值为(255.255.255)的白色。 (iii) 灯光:所有3Ds Max的标准灯光。包括开/关设定; 灯光颜色;照射范围(设定灯光范围的「Attenuation/Far/End」等数据);特殊灯光参数设定;聚光灯:聚光灯的falloff值的设定。 (iv) 摄影机:所有3Ds Max 设定好的摄影机,如Target或Free的摄影机。3Ds Max摄影机的参数只有FOV可供输出。 (v) Dummy:接受3Ds Max的Dummy虚拟对象。 (vi)动态数据:TCB格式、LINEAR或Bezier的动态数据。只有在3Ds Max里的TCB、LINEAR或Bezier的位移、旋转、大小等动态数据可输出至Virtools。 为了让动态数据正确输出,母对象(群组最高层级的对象)的位移、旋转、大小三种动态数据的起始点与终点一定要设定在时间轴的范围里。  Virtools的每段动画旋转范围不得超过360度的数据。 (3) Virtools之Building Blocks: Building Blocks是一种行为模块。在Virtools的交互式设定是相当有逻辑性,好像在玩电路板游戏,或说是把写程序转化成一种具像的流程图,每个关键的语汇转化为一块块的行为模块﹝Behavior Building Block﹞,每个模块身上很多插孔,有输入插孔(Behavior Input ,用来接收流程上层命﹞、输出插孔﹝Behavior Output,传送执行结果﹞、输入参数﹝Parameter Input,执行前的参数设定﹞、输出参数﹝Parameter Output,执行前的参数设定﹞,这些行为模块是构成一个物体作用的最基本元素,只要各种不同的行为模块合理地联结起来就可以让3d对象互动起来。                                                    图 4.2 (4) Virtools之SDK: SDK 就是 Software Development Kit 的缩写,就是“软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文文件、范例和工具的集合都可以叫做“SDK”。 4.1.2 Virtools操作界面介绍 (1) 场景编辑器(3D Layout)在3D Layout的区域内可以显示目前正在编辑的场景,使用者可以在这区域内即时检视编辑、修改的状况。所有的物件包括3D的物体、灯光、摄影机、线段等,都可以在这部分中做修改,如位置的移动、旋转、缩放等,并即时显示修改後的结果。 (2) 档案资源管理(Level Manager)在档案中的所有物件,都会依照分类(CK Class的分类),显示在这部分,如3D 物体就会在此分类显示(3D 物体泛指档案中的3D模型),灯光会显示在 Light的分类中,摄影机会显示在 Camera的分类中等,方便使用者管理档案中的资源。在Virtools中,一个档案可以许多包含不同的场景(scene),而场景可以依 要再动态加入至目前所开启的档案中。 (3) 行为模组资料库(Building Block Library) 在Virtools Dev,内建超过400个以上的行为模组,只要以 "Drag and Drop"的方式就可以套用在物件上。甚至可以利用现有的行为模组,再建立一个新的行为模组,此新的行为模组可以另外独立储存成一个档案,供其他使用者或是其他专案上使用。所以Virtools Dev的行为模组具有延伸性质。 (4) 行为模组编辑器(Schematic View)图形化的编辑方式,可以全心安排自创的互动程序设计,没有语法错误的状况发生,编辑程序完成后,将形成一个完整的流程图,方便未来阅读、修改、使用与经验传承,解决公司资料保存与人员流动问题。 (5) 除错工具(Debug tools)在编辑行为模组的过程中,可以随时利用除错工具,修正逻辑上的错误,以达到最佳的状态。 (6) 物件参数设定界面(Entities setup)一个物件都有自己的设定界面,依照每一类别的不同而有不一样的参数可以修改,如3D物体的参数设定界面中,可以修改位置、旋转角度、比例大小...等资料;灯光可以修改灯型别,如点光源、聚光灯或是平行光,同样也可以修改灯光的位置、方位,进一步的资讯如灯光照射的范围、Hotspot、Falloff等皆可调整。 (7) 属性管理界面(Attributes manager)每一个物件都可以设定其他的属性,并且都可以在这个界面查到或是修改,如重力的属性、碰撞的属性、即时阴影的属性...等。 (8) 阶层管理界面(Hierarchy manager)阶层管理界面可以显示与修改物件之间的关系,修改时,仅 使用"Drag and Drop"直觉的方式即可完成。 (9) 参数除错器(Parameters debugger)参数除错器可以一次监视多个参数在执行时的变化,供除错时的参考。 (10) 档案路径管理界面(Path Manager)档案路径管理界面供使用者定义档案所在的位置,如图形档、音档等。 (11) Profiler 可以让使用者得知执行时计算时间的分配如何、有多少个物件正在处理中、贴图使用了多少Mb的记忆体...等 (12) 互动行为的设计有超过500种以上的行为模组可供使用,以 "Drag and drop"的方式就可将行为模组的功能套用在物件上,可以现成的行为模组再组成一个新的行为模组,图形化的物件导向程式设计。 (13) Virtools自订功能有:使用Virtools Dev SDK可以存取的内容资料包括顶点、多边形、模型、人物角色...等;新增自订的行为模组与manager新增自订的参数型别、运算元与编辑器;新增自订的档案输入/输出程式;建立执行档(.exe)。 (14) 直觉式管理 使用者可以直觉的方式管理档案资源、物体间的阶层关系,并可以监测目前系统资源使用的状态。 公开展示、发行 当产品完成时,您可以透过网络展示成果,或是将您的产品制成光碟发售。 4.2 Virtools模组介绍 Virtools除了自身的3D/VR开发平台Virtools Dev以外还有五个可选模块,分别是: 4.2.1 物理属性模块(Virtools Physics Pack for Dev) Virtools Physics Pack for Dev是完全整合在Virtools Dev中的一个插件,提供了对于由物理定律控制的现实世界的真实模拟。整合了Havok公司顶尖的物理属性引擎,使得Vnt
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服