专业好文档基于Unity3D粒子系统的三维影视特效开发研究(华中师范大学武汉传媒学院湖北武汉430205)摘要:粒子系统可模拟许多现场难以拍摄或实际拍摄成本很高的三维影视特效,在分析三维影视特效制作需求和粒子系统开发流程的基础上,运用Unity3D引擎的粒子系统模拟扔手榴弹的爆炸效果和动态雨雪场景。关键词:Unity3D;粒子系统;三维影视特效;爆炸;动态雨雪中图分类号:TP373DSpecialEffectSimulationBasedParticleSystemUnity3DXiongYao(WuhanMediaCommunicationCollege,HuazhongNormalUniversity,Wuhan430205)Abstract:Various3Dspecialeffectscanparticlesystem,whichshotdifficultlycostly.Baseddevelopmentprocess3Dspecialeffects,dynamicrainusingUnity3D.Keywords:Unity3D;ParticleSystem;3DSpecialEffect;ExplosionEffect;DynamicRainSnowEffect引言三维影视特效科幻类、武侠类、动画类等电视剧和数字电影中的应用越来越多,已逐渐发展成为现代影视作品视觉效果好坏的重要指标之一,如《变形金刚3》、《黑衣人3》、《后天》等影视作品的制作大量采用例子系统模拟实现爆炸场景、大楼倒塌、焰火等三维影视特效场景。
首先,三维影视特效通过与主体实拍场景的结合,不仅可充分发挥影视制作者的艺术灵感,而且可节约复杂特效的拍摄成本。其次,许多特效镜头在现实场景中的拍摄很困难或者现实生活中根本就不存在这样的真实场景。例如,人体细胞的分裂过程、树木花卉的四季生长变化过程等很难在同一时空内完成拍摄;巨浪冲击城市、火山爆发、大楼爆炸、烟雾等影视特效的拍摄不仅需要高昂的代价,而且可能会给剧组拍摄人员带来各种难以预测的安全风险。粒子是在三维空间内渲染的二维图像,粒子系统通过一个或两个纹理并多次重复的图形绘制即可创建一个三维影视特效。为此,采用粒子系统模拟各种现场拍摄无法完成或根本不存在的特效镜头成为当前影视产品开发的关键技术之一。Unity3D是一款支持Windows、MacOS桌面操作系统平台和Android、iOS等移动操作系统平台的三维游戏引擎,包含图形、音频、物理、网络、粒子等功能组件,采用C#和JavaScript作为脚本开发语言,支持大多数三维模型文件格式,提供了柔和阴影与烘焙等光影渲染系统和强大的可视化编辑器。它不仅适用于大型虚拟场景的模拟和3D网络游戏的开发,而且其功能丰富的例子系统可模拟烟雾、云雾、火焰、体积云、闪电、爆炸等数字三维影视特效。
粒子系统粒子系统是Reeves于1983年提出的一种模拟不规则模糊物体对象或自然场景的方法数据报告,这些不规则的模糊物体具有不同程度的动态性和随机性,能够很好地模拟烟雾、海浪、水流、火焰、雨雪、云雾、爆炸、森林等自然场景。粒子系统中的每个粒子都具有形状、大小、颜色、透明度、运动速度、运动方向、生命周期等属性,而且这些粒子随时间的推移不断变化,在时间和空间上具有动态分布特性,从而模拟各种现场拍摄难以实现的具有复杂运动规律的动态影视特效。粒子系统所模拟的物体或场景复杂多变、形态各异,根据粒子形态的不同,可将粒子系统分为流体粒子、烟雾粒子、破碎粒子等。流体粒子主要用来模拟流水、海浪、火焰、流动的岩浆等特效;烟雾粒子主要用来模拟随时间发展不断繁殖生长、消亡的动态粒子特效,如燃烧或爆炸过程中产生的烟雾、沙尘暴、龙卷风、云雾等;破碎粒子主要用来模拟物体碎裂、爆炸时的效果,一般伴有物体爆炸碎片的产生专业好文档粒子过期粒子系统初始化更新粒子属性删除过期粒子产生新粒子粒子绘制仿真结束基于粒子系统的三维影视特效开发流程如图1所示,利用粒子系统实现三维影视特效的基本步骤包括以下几个[4-5](1)确定模拟对象的粒子模型在利用粒子系统模拟某一个自然场景或数字影视特效之前,首先要对模拟对象的运动规律进行分析,将场景或特效对象分解成由众多相互关联的粒子构成的一个运动系统,从而构建一个关于被模拟对象的动态变化模型。
(2)初始化粒子系统根据步骤(1)得到的对象动态变化模型,初始化粒子的初始状态,如粒子的数量、形状、纹理、大小、颜色、透明度、初始位置、碰撞检测等属性。(3)设置粒子的运动规律基于对象运动规律及其相关数学公式,设置粒子的速度、加速度、生命周期、生命衰减等属性参数。(4)粒子状态更新粒子的初始状态和运动规律设置完成之后创作人,粒子集合即将按照所设定的规律和路径进行活动,并使用帧来控制每个粒子状态的动态变化。(5)粒子的消亡与重生每个粒子在完成其一个生命周期的所有活动之后便进入消亡阶段,此时需要粒子发射器需要按照粒子生成和运动规律产生新的粒子,这些新的粒子将经历步骤(2)到步骤(5)的相关动态变化。基于Unity3D的三维影视特效开发3.1Unity3D的粒子系统Unity3D中一个典型的粒子系统包括粒子发射器(ParticleEmitter)、粒子动画器(ParticleAnimator)和粒子渲染器(ParticleRenderer)三个组件。一个简单的静态粒子系统采用一个粒子发射器和一个粒子渲染即可实现;如果粒子系统与其他虚拟物体对象有交互时,可在物体上添加一个粒子碰撞器(ParticleCollider)。
粒子发射器用来产生大量粒子,Unity3D的粒子发射器有椭球粒子发生器(EllipsoidParticleEmitter)和网格粒子发射器(MeshParticleEmitter)两种。其中,椭球粒子发射器在一个球形范围内产生大量粒子,使用Ellipsoid属性来缩放和拉伸范围;网格粒子发射器在一个网格周围发射粒子,粒子从网专业好文档格的表面产生,适用于粒子与物体通过复杂的交互方式相互作用的情况。粒子动画器将在不同的方向移动粒子和改变粒子的颜色,也可通过脚本编程的方式控制粒子系统中每个粒子的行为,从而实现更复杂的粒子特效。粒子渲染器是将粒子系统所绘制的效果渲染在显示设备屏幕上unity粒子特效带拖尾,让用户可以直观地观察到相应的视觉效果;粒子碰撞器用来实现和虚拟场景中其他碰撞体之间的相互作用,如爆炸粒子系统碰到目标对象时发生爆炸效果[7-8]3.2手榴弹爆炸特效模拟这里以扔手榴弹为例,分析在Unity3D平台上模拟三维爆炸特效的开发过程,具体实现过程可分为以下几个步骤:(1)制作具有碰撞检测功能的手榴弹预设首先,将制作完成的手榴弹三维模型导入Unity3D虚拟场景中,将其添加刚体属性组件(Rigidbody)、碰撞检测器(BoxCollider)和销毁控制脚本GrenadeS2cript.js,并将其制作成预设(Prefab),以便在虚拟 场景中多次重复调用该手榴弹模型。
刚体属性组件主要是为了让手榴弹具有向下的重力属性;碰撞检测器 用来判断手榴弹是否与其他虚拟对象发生物理碰撞,即是否满足触发爆炸特效的条件;销毁控制脚本 GrenadeS2cript.js 主要实现爆炸特效发生之后手榴弹实例对象自动销毁,其核心代码如下: function Update Destroy(gameObject);//销毁手榴弹对象Instantiate(explosionPrefab, transform.position, Quaternion. identity); (2)添加爆炸粒子系统向场景中添加一个名为 large flames 的粒子系统,包括椭球粒子发射器、粒子动画器、粒子渲染器、 音频源(Audio Source)四个组件,并初始化例子属性,如将如图2 所示的纹理贴图赋给粒子,并在音频 源组件中添加一个模拟手榴弹爆炸效果的音频。因为爆炸特效一般只是持续几秒时间,同样需要添加一个 实现爆炸粒子系统自动销毁的脚本。 爆炸粒子系统的基本属性(3)手榴弹爆炸特效模拟 为实现如图3 所示的手榴弹爆炸特效场景,首先新建一个用于实现扔手榴弹功能的脚本文件,并将其 添加到虚拟场景中的某个虚拟物体对象上,实现单击鼠标中键时,实例化一枚步骤(1)所创建的手榴弹 对象;当手榴弹实例与其他虚拟对象发生物理碰撞时unity粒子特效带拖尾,首先实例化一个步骤(2)所创建的爆炸粒子系统, 数秒之后手榴弹实例自动销毁,手榴弹运动和爆炸粒子系统实例化的核心代码如下: function Update() 专业好文档//单击鼠标中键时,投掷手榴弹 (Input.GetMouseButtonDown(2)){var Coconut:Rigidbody Instantiate(myCoconutPrefab,transform.position, transform.rotation); Coconut.velocity throwForce));Physics.IgnoreCollision(Coconut.collider, transform.root.collider); 间隔12 秒才可以进行下次投掷 yield WaitForSeconds (12); 手榴弹爆炸特效3.3 三维动态雨雪特效模拟 在场景中添加一个包含椭球粒子发射器、粒子动画器、粒子渲染器、粒子碰撞器、音频源等组件的雨 (雪)例子系统 rain,并设置每个粒子的尺寸大小和时间寿命、每秒时间内可产生的粒子数量、粒子的发 射速度、雨(雪)粒子的纹理贴图等属性。
同时,为实现下雨(雪)的生效,在音频源组件中加载雨(雪) 声音文件。最后,新建两个原来模拟水波特效和水花特效的粒子系统,并在这两个粒子系统上分别添加脚 本模拟雨滴(雪片)与地面碰撞时出现的水波特效和溅起的水花特效,水花和水波特效控制脚本的核心代 码如下: function Rain //在XZ平面上取得随机坐标点 pos Vector3(Random.Range(-4.00,4.00), 18 ,Random.Range(-4.00, 4.00)); //根据雨滴粒子发射器的最大最小值区间取得随机值、生命值,并开始发射雨滴或雪片料子。 size Random.Range(rain.minSize,rain.maxSize); lifetime Random.Range(rain.minEnergy,rain.maxEnergy); rain.Emit(pos, rain.worldVelocity, size, lifetime, Color.white); 秒后,水波纹及小水花两个料子发射器开始发射粒子yield WaitForSeconds(1); pos.y splash.transform.position.y;size Random.Range(ripple.minSize,ripple.maxSize); lifetime Random.Range(ripple.minEnergy,ripple.maxEnergy); ripple.Emit(pos, ripple.worldVelocity, size, lifetime, Color.white); size Random.Range(splash.minSize,splash.maxSize); lifetime Random.Range(splash.minEnergy,splash.maxEnergy); splash.Emit(pos, splash.worldVelocity, size, lifetime, Color.white); 专业好文档 同时,只要通过脚本控制粒子系统的纹理贴图、粒子尺寸大小、粒子发射速度等属性参数,即可很方便地模拟出不同的雨景和雪景特效,如图4 总结与展望三维影视特效具有模拟真实自然现象、难以拍摄的景物、时空局限的生物成长过程等功能,本文基于 Unity3D 粒子系统模拟了扔手榴弹后的爆炸特效和动态雨雪两种三维影视特效,对数字影视特效的模拟和 制作具有重要的参考价值。
下一步我们将研究基于Unity3D 引擎实现花草树木生长过程的模拟以及竹林、 鱼群等动态群体行为对象的三维仿真。 参考文献 [1]王少伟,陈晓青,李颂,等.影视特效粒子系统研究[J].软件导刊,2012,11(4):168-170. [2]Reeves W.T. Particle Systems–A Technique FuzzyObjects[J].Computer Graphics,1983,17(3):359-376. 姚莉,肖健,刘平.基于粒子系统的礼花模拟方法[J].东南大学学报:自然科学版,2010,40(6):11851189. 杨述华,廖守亿,王仕成,等.基于粒子系统和Vega的实时雨雪模拟[J].计算机应用,2008,28(6). [6]Unity 王晓娟,基于粒子系统动态烟花的模拟[J].青海大学学报:自然科学版,2009,27(4):29-32.作者简介:熊耀(1983-7-25),男,汉族,湖北省黄冈市人,华中师范大学武汉传媒学院新闻传播学 院助教、研究方向:影视后期制作与影视摄像、虚拟现实 通信地址:武汉市江夏区藏龙岛凤凰大道特1 邮编:430205联系电话: 专业好文档 Editor´s note: Judson Jones meteorologist,journalist photographer.He has freelanced fouryears, covering severe weather from tornadoes typhoons.Follow him Twitter:@jnjonesjr (CNN) alwayswonder what huddlearound shortwaveradio cracklingstatic from space hear faintbeeps world´sfirst satellite alsomissed watching Neil Armstrong step foot firstspace shuttle take off stars.Those events were way before my time. whatgoes whenNASA pulled shuttleprogram heartbroken.Yet privatizedspace race has renewed my childhood dreams meteorologist,I´ve still seen many important weather spaceevents, rightnow, youwere sitting next me,you´d hear my foot tapping rapidly under my desk. nextone: spacecapsule hanging from NewMexico desert. GeorgeLucas movie floating space.You mantake unimaginablefree fall from live.Tuesday, workglued livestream RedBull Stratos Mission. balloons positioned differentaltitudes winds,knowing wouldjust line up verticalstraight line "we" would mebecause amalso aboveall unchartedterritory. guywho FelixBaumgartner, must have samefeeling, neverreach. However, stopme from feeling his pain when swirlingwind kicked up partiallyfilled balloon wouldtake him upperend ouratmosphere. 40-acreballoon, thickerthan drycleaning bag, scraped over.How claustrophobia almost grounded supersonic skydiver eachtwist, you could see currentrecord hol der "capcom"(capsule communications), Col. Joe Kittinger. He hung his head low missioncontrol hetold Baumgartner disappointingnews: Mission aborted. supersonicdescent could happen Sunday.专业好文档 weatherplays importantrole mission.Starting ground,conditions have verycalm windsless than limitedcloud cover. capsuleattached, movethrough lowerlevel troposphere) where our day-to-day weather lives. climbhigher than MountEverest (5.5 miles/8.85 kilometers), drifting even higher than cruisingaltitude commercialairliners (5.6 miles/9.17 kilometers) hecrosses boundarylayer (called tropopause),he can expect slowlydrift 120,000feet (22.7 miles/36.53 kilometers). Here, "Fearless Felix" unclip.He rollback wouldassume, he slowlystep out onto something resembling Olympicdiving platform. Below, Earthbecomes concretebottom swimmingpool hewants toohard. Still, he´ll travelingfast, so despite likediving deepend likehe shallowend. Skydiver preps bigjump When he jumps, he 690mph (1,110 kph) lessthan 40 seconds. Like hitting water,he heapproaches moredense air closer stophim completely. hegoes too fast spinsout control,he has stabilizationparachute slowhim down. His team hopes needed.Instead, he plans deployhis 270-square-foot (25-square-meter) main chute around5,000 feet (1,524 meters). chutesuccessfully, he 172mph (277 kph). He reserveparachute openautomatically heloses consciousness machspeeds. Even everythinggoes won´t.Baumgartner still freefall wouldcause you passout, workhigher than 25,000 feet (7,620 meters). Kittingerfree fell from 102,800 feet infamousspace race many.Baumgartner thosemonumental moments alwaysremember, because 绝密文件,核心资料,拒绝盗版 支持正版,从我 做起,一切是在 为了方便大家! 知识就是力量!
文章来源:https://www.docin.com/touch_new/preview_new.do?id=1645320882