王 瑜
(郧阳师范高等专科学校 信息技术部, 湖北 十堰 442000)
基于Virtools的灯光、流水及火焰粒子系统的设计与实现
王 瑜
(郧阳师范高等专科学校 信息技术部, 湖北 十堰 442000)
摘要:虚拟现实系统中有关灯光、流水和火焰的模拟是在构建虚拟现实场景时不可缺少的重要组成部分,实现这些不规则模糊物体使用最多的图形生成算法当数粒子系统理论.三维虚拟实境编辑软件Virtools中提供了大量功能强大的自定义粒子系统模块,通过与其它行为模块进行组合并设置相关属性,再配合场景中不同视角的摄像机,即可实现这些复杂的特殊视觉效果.实验表明,各种粒子系统效果仿真度高,模块组合简洁高效,稳定性和可移植性良好,具有较强的实用价值.
关键词:Virtools;虚拟现实;粒子系统;漫游系统
虚拟现实系统中对灯光、流水、火焰等自然景物的模拟,是构建虚拟现实场景不可缺少的重要组成部分,在气象预报、航海航空、游戏设计等领域都有着广泛的应用.这些不规则动态的对象有着复杂的逻辑结构,用传统几何建模的方法几乎难以实现,目前在虚拟现实领域对这种不规则模糊物体使用最多的图形生成算法当数粒子系统理论,它具有良好的动态性和随机性,能够逼真的模拟自然现象或某些特殊图案,同时在三维虚拟实境编辑软件Virtools中也提供了大量功能强大的自定义粒子系统的行为模块,通过对这些模块的组合和相关属性的设置,可以实现这些复杂的特殊视觉效果.
1.1 粒子系统简介
粒子系统方法是由Reeves在1983年提出的一种图形生成算法,基本思想是用大量、细小的微粒作为基本元素聚集起来,形成一个复杂的、不规则的物体或场景[1].这些微粒可以是一个像素,也可以是一个简单的绘图图元,每个微粒都有形状、大小、颜色、不透明度、位置、移动速度等属性.一个微粒具有什么样的属性通常决定了粒子系统会模拟出相应的对象,但这些属性并不保持静态,随着时间的推移,它会发生不停的变化.同时每个微粒也有一定的生命周期,它将经历出生、成长、衰减和灭亡的过程,而对于粒子系统来说,尽管粒子的属性和生命在不断发生改变,但系统会不断产生新的粒子以取代消亡的旧粒子.粒子系统表现出来的物体或场景结构可以千变万化,复杂多样,随时处在运动当中,是不确定的,具有很大的随机性.也正是由于新旧粒子的更替和无规则的不断变化,使得粒子系统可以用来对雨、雪、雾、灯光、火焰等不规则物体做仿真模拟,当然不同对象下对粒子的初始化和属性要求也不相同.
与其它描述不规则物体或场景的算法相比,粒子系统优势较为明显.首先可以实现随机粒子效果,就是用可控制的随机过程控制粒子的各类属性变化使之生成随机的粒子效果,一般用来产生火、烟、灰尘、爆炸等[2];其次可以实现结构化粒子效果,主要是模拟一些具有一定结构的物体或场景,如云、彩虹甚至是草、积雪的地面等;最后还可以实现方向粒子效果,即粒子除了基本的属性变化之外,还可以在相互作用的影响下保持一定的方向性,一般用来模拟纺织品、光线等.粒子系统功能强大,几乎可以模拟任何模糊的现象,而且产生的效果真实多变,富于联想,所以现在大量应用于三维仿真、游戏开发、特技效果制作等.
1.2 Virtools中的行为模块简介
在Virtools中也同样提供了相应的行为模块来实现粒子效果和形变效果. Virtools中粒子发射器共分9种,涉及到Particle粒子和Mesh Modifications网格修正两大类,分别是:对象粒子系统Object Particle System、球状粒子系统Spherical Particle System、曲线粒子系统Curve Particle System、圆筒料子系统Cylindrical Particle System、直线粒子系统Linear Particle System、点粒子系统Point Particle System、立方体粒子系统Cubic Particle System、平面粒子系统Planar Particle System和圆盘粒子系统Disc Particle System[3].
通常在虚拟场景模拟灯光、流水和火焰时,在充分考虑软硬件配置的前提下,主要是利用Virtools中的“Point Particle System”行为模块进行相应的粒子系统设计.该行为模块的主要参数有Emission Delay表示粒子发射的间隔时间;Emission Delay Variance表示粒子在间隔时间内产生的变化;Speed表示粒子发射的速度;Lifespan表示每个粒子的生命周期;Lifespan Variance表示每个粒子在其生命周期内产生的变化;Initial Size表示粒子初始大小;Ending Size表示粒子消亡前大小;Initial Color表示粒子初始颜色和通道;Initial Color Variance表示粒子初始颜色和通道的变化等.在运用过程中,要根据实际情况修改各参数大小并为其赋于动画纹理贴图,贴图文件以2*2像素正方形为主.
2.1 灯光粒子系统的设计与实现
虚拟场景中灯光的颜色和闪烁各不相同,灯光的产生由一个点发出,产生的粒子以随机的方式生成,方向较为分散,速度较快,在一定范围内会感觉到一个粒子还没消亡,另一个粒子就紧跟着出来,当粒子的速度超过每秒3 000个,数量达到40 000个的时候,粒子就会填满整个空间.粒子的产生是随机性的,每个粒子的生命周期也是随机的,有的时间长,有的时间短,当粒子向外运动时就会发生衰减,能出现在最外层的粒子就是那些生命周期最长的粒子,同时系统产生的新粒子最初的颜色也是随机生成的,五颜六色千变万化,但随着时间的推移,粒子的颜色会慢慢变成黑色与周边环境融为一体,给用户的视觉就是中间很密集外面很稀疏,用户也能感觉到粒子从出生到灭亡的全过程[4].
灯光粒子系统实现的具体方法为:首先在3D Layout的创建区域点击3D Frame创建按钮,设置坐标为0,0,0;然后对其添加“Point Particle System”行为模块并设置属性,其中Emission Delay中Ms属性为0,Speed属性为0.05,Speed Variance属性为0.01,Texture属性为当前贴图,Initial Texture、Initial Texture Variance、Ending Texture、Eeding Texture Variance的属性均为0,Texture Frame Count属性为1;接着右键单击该模块,选择Edit Settings,设置其中Particle Rendering属性为Radial Sprite,Source Blend属性为One,Manage Interactors属性中除Tunnel和Projector不选以外,其它全选;最后在场景中添加摄像机,将其调整到合适位置,使用“Set As Active Camera”行为模块并右键单击Level面板设置其背景色为黑色,最终效果见图1.
2.2 火焰粒子系统的设计与实现
虚拟场景中火焰都是跳动的,火焰的跳动是因为选择了立方体粒子发射器,每个粒子从一个小的立方体中以随机的方式进行发射,初始位置和运动路径不相同,最终密集起来显示的形状也不相同,通过快速的变化形成跳动的火苗.然后再通过设置Scale Affector属性使其由底部发射后,在运动的过程中逐渐变大,颜色使用了Color Affector属性,设置最初颜色为红色,慢慢增加绿色、蓝色的值,当增加到一定程序时,火苗就呈现白色,火苗上面小下面大,透明度由不透明逐渐变化到全透明,最终显示出由红变黄再变白的全过程[5].
火焰粒子系统实现的具体方法为:首先在3D Layout的创建区域点击3D Frame创建按钮,设置坐标为0,0,0;然后对其添加“Point Particle System”行为模块并设置属性,其中Emission Delay中Ms属性为200,Yaw Variance和Pitch Variance中Degree属性为20,Speed属性为0.005,Speed Variance属性为0.001,Lifespan中S为1,Lifespan Variance中Ms为250,Texture属性为当前贴图,Initial Texture Frame和Initial Texture Frame Variance属性为0,Texture Speed属性为100,Texture Speed Variance属性为20,Texture Frame Count属性为1,并将相应贴图拖至3D Layout的创建区域;接着右键单击该模块,选择Edit Settings,设置其中Particle Rendering属性为Sprite,Source Blend属性为Source Alpha,Destination Blend属性为one,Manage Interactors属性全选;最后在场景中添加摄像机,将其调整到合适位置,使用“Set As Active Camera”行为模块并右键单击Level面板设置其背景色为黑色,最终效果见图2.
图1 灯光模拟效果
图2 火焰模拟效果
图3 流水模拟效果
2.3 流水粒子系统的设计与实现
虚拟场景中的流水主要以喷洒的形式出现,如水龙头、喷泉或淋浴等,在制作的过程中,要考虑到水流的效果,如果是水龙头流出则比较简单,以直线方式表现即可,如果是以喷泉或淋浴的方式流出,则需要表现一定的弧度,流水要有弯曲的变化.同时,如果是水龙头流出,水流可大可小,如果是喷泉或淋浴流出,水流的速度要比较快.流水的源头可以看作一个粒子发射器,流出的水珠就是粒子.无论是水龙头、喷泉或淋浴,只需要设计完成一个粒子发射器,表现出一束流水以后,更多的流水改变一下方向和速度通过复制即可得到[6].
流水粒子系统实现的具体方法为:首先在3D Layout的创建区域点击3D Frame创建按钮,设置坐标为0,0,0,并对其添加“Point Particle System”行为模块;然后再重新添加两个3D Frame,对其重命名为C1、C2,并设定它们的坐标分别为0、-7、-2和9、-13、-4,其中C1的Orientation为0、0、-10;双击C1进入3D Frame Setup,点选Attribute,添加Particle System Deflectors中的Particle Plane Deflector属性和Particle System Interactors中的Particle Gravity属性,并将相应贴图拖至3D Layout中;接着双击“Point Particle System”行为模块设置其属性,其中Emission Delay中Ms和Emission Delay Variance中Ms的属性均为0,Yaw Variance 中Degree属性为5,Pitch Variance中Degree属性为2,Lifespan中S为1,Ms为500,Lifespan Variance中Ms为250,Maximum Number属性为100,Initial Texture Frame、Initial Texture Frame Varianc、Texture Speed、Texture Speed Variance属性均为0,Texture Frame Count属性为1;最后在场景中添加摄像机,将其调整到合适位置,使用“Set As Active Camera”行为模块并右键单击Level面板设置其背景色为黑色,最终效果见图3.
在开发基于Virtools的角色扮演类游戏过程中,根据剧情的发展可以在不同的场景里添加不同的粒子系统.游戏的制作是以片断为基础,以在某场景中添加炉火为例,在3DS MAX中将人物、道具等制作成三维模型后导入到Virtools中,然后通过摆放和排列模型的位置比例,设置一些必要的属性和参数,再整体添加火焰粒子系统模块,就可以看到当前游戏片断的三维场景.实验证明,在电脑最低配置CPU为inter(R) pentium(R)Dual CPU E2160 1.8 GHZ,2 G内存,512 MB独立显卡,操作系统为WinXP,Virtools使用3.0版本的状态下,三维场景显示效果良好且该游戏运行流畅,相关场景片断效果见图4.
在实验中,炉火的燃烧效果依赖于实行交互的各模块组合,脚本中基本的属性及参数设置可以保持不变,但火焰中各种粒子生命周期、数量、大小、发射速度等需要根据场景要求重新调整,所需关键模块及属性设置见图5、图6.
图4 游戏场景片断效果
图5 行为模块脚本设计
若想得到更逼真效果,可将电脑硬件配置提高,Virtools使用5.0版本,操作系统也可换成Win7,再根据实际情况适当调整相关模块的属性参数则模似的真实性和实时性效果更佳,证明该方法稳定性和可移值性较好.但需注意的是,Virtools 3.0版本要安装VC++6.0 Virtools 3.5以上版本要安装VC.NET,此外还需要安装DirectX 9.0 SDK.
在粒子系统实现原理的基础上,利用Virtools自带的行为模块进行自定义操作,可成功模拟出灯光、火焰和流水等效果模块组合具有较大的灵活性和适应性.实验证明,通过对模块参数、属性的调整,适当增加随机性,可以实现粒子显示不同的细节层次,加快渲染速度的同时保证真实感,能够满足虚拟场景的多种需求.但该设计方法仍有不足,如显示效果略显单薄在刮风下雨的情况下无法根据环境的变化改变自身状态,场景中的角色也无法与其实现交互性操作等.今后应进一步加强有关粒子的分布范围、生存期限、风场变化等方面的研究,尝试与其他几何建模相结合,适当引入新的算法,以期模拟出更为真实的粒子效果.
图6 行为模块属性设置
参考文献:
[1]何水艳,丁沂.粒子系统与碰撞检测的研究[J].轻工科技,2012,6(6):71-72.
[2]王兆红.基于云模型与粒子系统自然雨模拟[J].计算机应用与软件,2009,12:102-104.
[3]何琳麟.基于Virtools的初中化学虚拟实验的研究与设计[D].成都:四川师范大学,2008
[4]王少伟,陈晓青,李颂,等.影视特效粒子系统研究[J].软件导刊,2012,11(4):168-170.
[5]张文辉,郭锋,林子安.基于粒子系统的Direct3D火焰模拟改进算法[J].桂林电子科技大学学报,2014,34(1):47-51.
[6]李占利,吕淑丽.基于粒子系统的大规模漫游环境实时降雨模拟[J].计算机应用与软件,2014,31(1):214-217,228.
(责任编辑:欧 恺)
中图分类号:TP319
文献标识码:A
文章编号:1007-5348(2016)02-0013-05
[收稿日期]2015-11-04
[基金项目]湖北省教育厅科学技术研究项目(B2015437).
[作者简介]王瑜(1980-),男,湖北十堰人,郧阳师范高等专科学校副教授,硕士;研究方向:计算机应用、虚拟现实技术.
Design and Implementation of Virtools Lighting, Water and Flame Particle System
WANG Yu
(Information Technology, Yunyang Teacher's College, Shiyan 442000, Hubei, China)
Abstract:In the virtual reality system, the simulation of light, water and fire is an important part of the construction of virtual reality scene. The 3D virtual reality editing software Virtools provides a lot of powerful custom particle system module, and other modules can be combined by behavior and setting attributes, together with the different perspectives of the camera in the scene, it can achieve these complex special visual effects. Experimental results show that the effect of various particle systems is high, and the module combination is simple, efficient, stable and portable, and it has strong practical value.
Key words:Virtools; virtual reality; particle system; roaming system