首页 理论教育Unity特效渲染-实践应用于虚拟现实的理论基础

Unity特效渲染-实践应用于虚拟现实的理论基础

【摘要】:拖尾渲染组件属于特效当中的一种,给一个物体添加拖尾渲染组件的方式。粒子系统是Unity3.5版本新推出的粒子系统,它采用模块化管理,个性化的粒子模块配合粒子曲线编辑器使用户更容易创造出各种缤纷复杂的粒子效果。粒子在Unity中是用来制造烟雾,蒸汽,火及其它气体的效果。Unity中一个典型的粒子系统是一个对象,它包含了一个粒子发射器、一个粒子动画和一个粒子渲染器。Random Between Two Gradients:表示粒子颜色在生命周期内按照两条颜色渐变条中任意一个值。

粒子特效:Unity中一个典型的粒子系统是一个对象,它包含了一个粒子发射器、一个粒子动画和一个粒子渲染器。粒子发射器产生粒子,粒子动画器则随时间移动粒子,粒子渲染器则将它们渲染到屏幕中。

粒子系统相关参数:

(1)拖尾渲染:TrailRenderer。拖尾渲染组件属于特效当中的一种,给一个物体添加拖尾渲染组件的方式。

图7-145 粒子系统的属性面板

(2)线性渲染:LineRenderer常用方法。

1)粒子系统

(1)粒子系统概述。粒子系统是Unity3.5版本新推出的粒子系统,它采用模块化管理,个性化的粒子模块配合粒子曲线编辑器使用户更容易创造出各种缤纷复杂的粒子效果。

粒子在Unity中是用来制造烟雾,蒸汽,火及其它气体的效果。粒子在三维空间中渲染的二维图像,粒子系统通过多次使用一或两个纹理并多次绘制它们,以创造一个混沌的效果。

Unity中一个典型的粒子系统是一个对象,它包含了一个粒子发射器、一个粒子动画和一个粒子渲染器。粒子发射器产生粒子,粒子动画器则随时间移动粒子,粒子渲染器则将它们渲染到屏幕中。

(2)创建粒子系统。首先在层级视图当中创建空白对象,然后给其添加组件【Component】→【Effects】→【Particle System】,粒子系统的属性面板如图7-145所示。

(3)初始化模块。此模块为固有模块,不可删除或者禁用。该模块定义了粒子初始化时的持续时间、循环方式、发射速度、大小等一系列基本的参数,如图7-146所示。

Duration(粒子持续时间):粒子系统的周期。

Looping(粒子循环):粒子发射是否循环,一个周期接着一个周期。

Prewarm(粒子预热):粒子是否预热,开始播放的时候为一个周期之后的状态。

Start Delay(粒子开始延迟):游戏开始运行起来多久后才发射粒子。在开启粒子预热时无法使用此项。

Start LifeTime(生命周期):粒子的存活时间。

Start Speed(初始速度):粒子发射时的速度。

Start Size(粒子初始大小):粒子发射时的初始大小。

Start Rotation(初始旋转):粒子发射时的旋转角度。

Start Color(初始颜色):粒子发射时的初始颜色。

Gravity Multiplier(重力倍增系数):修改重力值会影响到粒子发射时所受到的重力影响。

Inherit Velocity(粒子速度继承):对于运动中的粒子系统,将其移动速度应用到新生产的粒子上。

Simulation Space(模拟坐标系):粒子系统的坐标是世界坐标还是本身坐标。

Play On Awake(唤醒时播放):开始此项系统在游戏运行时会自动播放粒子。

Max Particles(最大粒子数):粒子系统发射粒子的最大数量。

图7-146 初始化模块

在每个参数后面都有一个箭头,单击后会出现如图7-147所示的弹框。

Constant:设定一个具体数值。

Curve:利用曲线编辑器设定数值。

Random Between Two Constants:在两个数值之间随机选择一个数值,能够让粒子效果更加真实。

Random Between Two Curves:在两条曲线之间的范围随机选择一个数值。

(4)发射模块(见图7-148)。控制粒子的发射速率,在粒子持续时间内,可实现某个特定时间生成大量粒子的效果,可模拟爆炸效果生成一大堆的粒子。

Rate over Time:每秒发射多少粒子。

Rate over Distance:每个距离单位发射多少粒子。

Bursts:粒子爆发,在粒子持续时间内的指定时刻额外增加大量的粒子。

图7-147 参数后面的弹框

图7-148 发射模块

图7-149 形状模块

(5)形状模块(见图7-149)。定义粒子发射器的形状,可提供沿形状表面法线或随机方向的初始力,并控制粒子的发射位置以及方向。

Shape:粒子发射器的形状。

Emit from:粒子从粒子何处发射出来。

Randomize Direction:粒子是在随机方向还是沿着球体表面法线方向发射。

Align To Direction:将粒子按其速度方向对齐。

Spherize Direction:球面方向。

(6)生命周期模块(见图7-150)。生命周期内每一个粒子的速度,对有着物理行为的粒子效果更明显。对应哪些与物理世界几乎没有互动行为,该模块作用不大。

X,Y,Z:调节粒子在x、y、z方向的速度。

Space:本地坐标系还是世界坐标系。

图7-150 生命周期模块

图7-151 生命周期速度限制模块

(7)生命周期速度限制模块(见图7-151)。控制粒子在生命周期内速度限制以及速度衰减,可以模拟类似拖动的效果。如果粒子速度超过设定值,则粒子速度会被限制在设定值。

Separate Axes:分离轴,控制每个坐标轴向上的速度。

Speed:可以通过常量值或曲线来限定所有方向轴的速度。

Dampen:速度衰减时的阻尼系数(取值范围为0—1)。

(8)受力模块(见图7-152)。控制粒子在生命周期内的受力情况。

X,Y,Z:使用常量或曲线来控制作用于粒子不同轴向上的受力情况。

Space:受力轴向参考的坐标系。Local表示本地坐标系,World表示世界坐标系。

Randomize:每帧作用在粒子上面的力都是随机的。

图7-152 受力模块

图7-153 生命周期颜色模块

(9)生命周期颜色模块(见图7-153)。控制粒子在生命周期内的颜色。粒子存活的时间越短变化得越快。

Color:生命周期内的颜色变换。

Gradient:表示粒子颜色在生命周期内按照颜色渐变条进行变换。

Random Between Two Gradients:表示粒子颜色在生命周期内按照两条颜色渐变条中任意一个值。

(10)颜色速度模块(见图7-154)。该模块控制粒子在生命周期内根据速度的变化而变化。

Color:用于指定的颜色,可以使用渐变色来指定各种颜色。

Speed Range:min与max值用于定义颜色范围。

图7-154 颜色速度模块

图7-155 大小速度模块

(11)大小速度模块(见图7-155)。该模块控制粒子在生命周期内的大小随着速度的变化而变化。

Separate Axes:生命周期内控制每一个轴向上的大小。

Size:可以通过曲线,两个数值之间的随机值或两条曲线之间随机值来控制粒子生命周期内的大小变化。

Speed Range:min和max可以用来定义速度大小范围。

图7-156 生命周期旋转模块

(12)生命周期旋转模块(见图7-156)。该模块控制粒子在生命周期内的旋转。

Separate Axes:分离轴向上每一个轴向上的旋转角度。

Angular Velocity:旋转的角速度

(13)旋转速度模块(图7-157)。该模块控制粒子在生命周期内的旋转随着速度的变化而变化。

Separate Axes:分离轴向上每一个轴向上的旋转角度。

Angular Velocity:旋转的角速度。

Speed Range:生命周期内的速度范围。

图7-157 旋转速度模块

图7-158 外部作用力模块

(14)外部作用力模块(见图7-158)。该模块控制粒子在生命周期内受到的外部作用力。(www.chuimin.cn)

Multiplier:此模块可控制风域的倍增系数。

(15)碰撞模块(见图7-159)。碰撞模块可以为每颗粒子建立碰撞效果,目前只支持平面碰撞,该碰撞对于简单的碰撞检测效率非常高。

Planes:指定的引用,如果作为多个面被引用,Y轴为平面法线。

Dampen:碰撞的阻尼系数。

Bounce:碰撞的反弹系数。

Lifetime Loss:每次碰撞之后生命减弱的比例,0代表碰撞后粒子正常死亡,1代表碰撞后立即死亡。

Min/Max Kill Speed:最小/最大清除速度。

Radius Scale:半径比例,用于调整粒子碰撞球体的半径。

Send Collision Message:发送碰撞信息,跟该方法有关void OnParticle Collision(GameObject other)

图7-159 碰撞模块

图7-160 触发模块

(16)触发模块(见图7-160)。碰撞模块可以为每颗粒子建立碰撞效果,目前只支持平面碰撞,该碰撞对于简单的碰撞检测效果非常高。

Colliders:指定引用的触发器

Inside:粒子触发器内部做如何处理。

Outside:粒子触发器外部如何处理。

Enter:刚进入粒子触发器做如何处理。

Radius Scale:触发器半径比例。

Visualize Bounds:是否显示粒子碰撞体。

(17)子发射器模块(见图7-161)。此模块可以控制粒子在出生,消亡,碰撞等三个时刻生成其他粒子。

Birth:粒子在出生的时刻生成其他粒子,可选择继承颜色,尺寸,旋转。

Collision:粒子在碰撞的时刻生成其他粒子,同样可选择继承颜色,大小,旋转。

Death:粒子在消亡的时刻生成其他粒子,同样可选择继承颜色,大小,旋转。

图7-161 子发射器模块

图7-162 序列帧动画纹理模块

(18)序列帧动画纹理模块(见图7-162)。此模块可以对粒子在其生命周期内的UV坐标产生变化,生成粒子的UV动画。

Tiles:定义纹理的平铺。

Animation:指定动画类型。

Frame over Time:时间帧。

Start Frame:从第几帧开始。

Cycles:周期,指的是动画速度。

Enable UV Channels:使能UV通道。

(19)灯光模块(图7-163)。此模块可对粒子在其生命周期内的UV坐标产生变化,生成粒子的UV动画。

Light:引用的灯光。

Ratio:比例。

Random Distribution:是否随机分配。

Use Affects Range:尺寸是否影响范围。

Size Affects Range:尺寸是否影响范围。

Alpha Affects Intensity:alpha通道是否影响光照强度

Range Multiplier:范围系数。

Intensity Multiplier:光照系数。

Maximum Lights:最大灯光数。

Sorting Layer:属于哪一层。

Order in Layer:在layer层当中的顺序。

Light probes:灯光探测器。

Reflection Probes:反射探针模式。

Anchor Override:定位替代。

2)拖尾渲染

(1)拖尾效果预览。在游戏或动画当中经常可以看到拖尾效果,比如小球飞速运动,飞机引擎尾气等等,在Unity当中,使用拖尾渲染器可以制作跟在场景中的物体后面的拖尾效果来代替它们到处移动。

(2)TrailRenderer。拖尾渲染组件属于特效当中的一种,给一个物体添加拖尾渲染组件的方式如图7-164所示。

图7-163 灯光模块

Cast Shadows:是否投射阴影。

Reveive Shadows:是否接收阴影。

Motion Vectors:运动矢量。

Time:拖尾特效的存活时间。

Min Vertex Distance:最小顶点距离。

Autodestruct:拖尾渲染器的GameObject是否自动销毁。

Width:拖尾的宽度。

Color:拖尾特效的颜色。

图7-164 给一个物体添加拖尾渲染组件

Corner Vertices:角顶点的数量。

End Cap Vertices:后顶点的数量。

Alignment:对齐方式。

Texture Mode:贴图模式。

Light Probes:光探测器的状态。

Reflection Probes:反射探测器的状态。

3)线性渲染

(1)线性效果预览。线性效果在Unity当中通常用于在场景当中渲染射线,或者在屏幕当中实现划线功能,线性渲染经常应用于制作游戏当中的激光效果,如图7-165所示。

图7-165 线性效果预览

(2)LineRenderer设置如图7-166所示。

①Cast Shadows:是否投射阴影。

②Receive Shadows:是否接受阴影。

③Motion Vectors:运动矢量。

图7-166 LineRenderer设置

④Positions:线条的顶点位置。

⑤Use World Space:是否使用世界坐标系。

⑥Width:宽度。

⑦Color:特效的颜色。

⑧Corner Vertices:角顶点的数量。

⑨End Cap Vertices:后顶点的数量。

⑩Alignment:线性渲染的材质。

⑪ Texture Mode:应用的贴图模式。

⑫ Light Probes:光探测器状态。

⑬ Reflection Probes:反射探测器状态。

(3)LineRenderer常用方法。

①SetColors:设置颜色。

②SetPosition:设置点的位置。

③SetVertexCount:设置顶点个数。

④SetWidth:设置线性特效的宽度。