理论教育 VegaPrime实现特效vpFx开发

VegaPrime实现特效vpFx开发

时间:2023-11-24 理论教育 版权反馈
【摘要】:Vega Prime 提供的特效包括以下几种:● Blade——旋转的螺旋桨,可以缩放和定位,适合用于直升机和飞机的螺旋桨效果。Step 1 打开前面建立的VP3_2_61.acf 文件,单击LynX Prime 菜单栏中的文件,选择另存为,弹出对话框,将对话框中的目录改为建立好的C:\VegaPrimePractice,将ACF文件重命名为VP3_2_7.acf。Step 3 在Create Instance 对话框里选中vpFx,能看到特效的各种类。Step 1 将myFx 更名为wTop。

VegaPrime实现特效vpFx开发

特效能让用户的实时三维虚拟现实应用变得更加真实、丰富及夺目。用户可以定义烟火、爆炸、碎片等特效,也可以通过Vega Prime的粒子特效来模拟烟尘等效果。场景中的物体可以用来撞击或破坏,造成的结果可以加上特效。所有这些都可以通过LynX Prime 来方便地进行定义。

Vega Prime 提供的特效包括以下几种:

● Blade(vpFxBlade)——旋转的螺旋桨,可以缩放和定位,适合用于直升机和飞机的螺旋桨效果。

● Missile Trail(vpFxMissileTrail)——用有烟的轨迹来代表飞机或导弹的飞行效果,可以随着时间而变淡。

● Particle System(vpFxParticleSystem)——多边形集聚体,用来模拟诸如焰火和烟雾等效果。

● Debris(vpFxDebris)——飞扬的碎片效果,经常用于爆炸。

● Explosion(vpFxExplosion)——地面或空中的爆炸效果。

● Fire(vpFxFire)——火焰效果。

● Smoke(vpFxSmoke)——翻腾的烟云效果。

Vega Prime的特效模块提供了一个实时的特效库,可以通过LynX Prime 来配置特效,也可以通过Vega Prime的API 来配置特效。并且特效也可以进行形状、比例和颜色的变化。

从一个房屋的简单特效做起,当汽车撞击房屋时,碎片会四处散落。然后可以利用粒子效果创建一个龙卷风,并通过碰撞检测和场景中的物体进行交互。

1.添加碰撞碎片特效

通过这个操作,学会给物体添加特效并和碰撞检测对应起来,同时要学会利用粒子系统来创建特效,并给粒子系统提供标靶。涉及以下概念:

● 给目标添加一至多个特效。

● 给碰撞检测添加特效。

● 利用粒子系统创建特效。

● 定义诸如颜色、粒子数量和尺寸、喷射间隔、方向、速率等属性。

在前面,已经给汽车和房子碰撞定义了一个Bump的碰撞检测。当汽车和房子相撞时,应该有一个撞后的效果。这里将给房子加上碎片效果,并且和汽车的碰撞关联起来。

Step 1 打开前面建立的VP3_2_61.acf 文件,单击LynX Prime 菜单栏中的文件,选择另存为(Save as),弹出对话框,将对话框中的目录改为建立好的C:\VegaPrimePractice,将ACF文件重命名为VP3_2_7.acf。

Step 2 点击Create Instance 按钮

Step 3 在Create Instance 对话框里选中vpFx,能看到特效的各种类。

Step 4 新建的数值采用默认值1。

Step 5 选择FxDebris 类。

Step 6 点击Create 按钮。

Step 7 将myFx 更名为Debris。

Step 8 在Debris的界面里将farmhouse(Object)作为Parent。

Step 9 在Trigger Method 列表里选择Isector。

Step 10 在Isector 列表里选择bumpIsector。

Step 11 选择Positioning 标签打开Positioning 界面。

Step 12 将Scale 值设为(20,20,20)。

Step 13 运行Active Preview。将汽车撞向房屋,可以看到有碎片飞出。

Step 14 转到bumpIsector的界面,去掉Render Isector 前面的钩,同样将tripodIsector 界面里Render Isector 前面的钩也去掉,这样看起来效果更好。

Step 15 关闭Active Preview。

Step 16 将文件存为VP3_2_7.acf。

用鼠标控制开动汽车与房屋发生碰撞,将会有碎片飞出的效果。其实,更真实的效果应该还包含汽车撞到房屋以后的反应,如减速停下或翻车等,而不是现在的穿墙而过。如果需要动态控制这些效果,需要调用Vega Prime的API,进行编程控制。这是后续章节将要学习的内容。

2.制作龙卷风效果

这里利用LynX Prime 制作一个比较复杂的龙卷风效果,充分展示Vega Prime 特效的巨大威力。

这个龙卷风的效果一共要使用三个粒子效果:一个为碎片层,一个是龙卷风的漏斗部分,一个为龙卷风的顶部。

Step 1 打开前面建立的VP3_2_7.acf 文件,单击LynX Prime 菜单栏中的文件,选择另存为(Save as),弹出对话框,将对话框中的目录改为建立好的C:\VegaPrimePractice,将ACF文件重命名为VP3_2_71.acf。

Step 2 点击Create Instance 按钮。

Step 3 将Instances to Create 设为3。

Step 4 在Class 列表里选择FxParticleSystem 类。

Step 5 点击Create,可以看到生成了三个新的类(myFx,myFx1,myFx2)。

Step 6 保存ACF。

(1)配置顶部。

Step 1 将myFx 更名为wTop。

Step 2 在wTop 面板里,打开Main所属界面。

Step 3 点击Texture 旁边的Browse 按钮,选择安装目录(如C:\Program Files\MultiGen-Paradigm\config\vegaprime\vpfx)下的smoke.inta 文件,这个纹理是tornado的3个部分都要用到的。

Step 4 打开Positioning 界面。

Step 5 将Z 值设为50,这样龙卷风的高度就是50 m。

Step 6 打开Particle Generation 界面。

Step 7 在Maximum Number of Particles 栏里输入“1500”。

Step 8 在Number of Particles to Release 栏里输入“30”。

Step 9 将Release Interval 值设为0.25 s,这是新粒子出现的时间间隔。

Step 10 将Particle Life Cycle 值设为10 s,这是新粒子出现前旧粒子所持续的时间。

Step 11 在Source Domain Shape 栏里选择Circle(默认值)。

Step 12 将Size 值设为250。

Step 13 打开Particle Characteristics 界面。

Step 14 在Size 栏里,将默认值改为50,这是粒子的初始尺寸。

Step 15 点击Scale Along Velocity 旁边的Create Instance 按钮。

Step 16 输入如图3.2.11所示的数值,使球状体变得平一点。

Step 17 点击Color 旁边的Create Instance。

Step 18 点击新Color 旁边的Browse 按钮,打开Color 窗口。为了造成龙卷风的浑浊效果,需要指定3个不同的灰度。这样在一个生命周期内,龙卷风首先是显示灰色,然后变亮,再变暗。

Step 19 将Red,Green,Blue 值设为(193,193,193)。

Step 20 点击OK。

Step 21 将Color 旁边的Create Instance 按钮点击两次。

Step 22 用如图3.2.12所示的值添加明暗两种颜色。

图3.2.11 设置粒子系统形状和时间

图3.2.12 设置颜色值

Step 23 打开Particle Movement 界面。

Step 24 在Velocities 栏里添加如图3.2.13所示的值。

Step 25 在Spherical Velocities 栏里添加如图3.2.14所示的值。

图3.2.13 设置粒子运动时间和方向

图3.2.14 设置粒子运动轨迹和时间

Step 26 在Random Velocities 栏里添加如图3.2.15所示的两个值。

Step 27 以上步骤为龙卷风的顶部配置,先保存一下。

(2)定位。

Step 1 在wTop 界面里打开Main 窗口。

Step 2 创建一个新parent 类,在Class 列表里选择Transform。

Step 3 打开myTransform 界面。

Step 4 将myTransform 更名为wTopTransform。

Step 5 将wTopTransform的parent 设为myScene。

Step 6 输入(2450,2470,6)以定位wTop。

Step 7 保存。

Step 8 运行Active Preview,在正视图上就可以看见龙卷风的顶部移动,如图3.2.16所示。

图3.2.15 设置粒子系统的随机运动

图3.2.16 观察龙卷风

Step 9 退出Active Preview。

(3)配置漏斗。

Step 1 打开myFx1 界面。

Step 2 将myFx1 更名为wFunnel。

Step 3 在Main 面板里,将Parent 设为wTopTransform。

Step 4 点击Texture 旁边的Browse 按钮,选择安装目录下(如C:\Program Files\MultiGen- Paradigm\config\vegaprime\vpfx)的smoke.inta 文件。

Step 5 打开Positioning 界面。

Step 6 将Z 值设为50,这样龙卷风的漏斗部分就和顶部一样高了。

Step 7 打开Particle Generation 界面。

Step 8 将Maximum Number of Particles 设为25000。

Step 9 将Number of Particles to Release 设为75。

Step 10 将Release Interval 设为0.30 s。

Step 11 将Particle Life Cycle 设为12 s。(www.daowen.com)

Step 12 将Source Domain Shape 设为Circle(默认值)。

Step 13 在Size 输入75。

Step 14 打开Particle Characteristics 界面。

Step 15 在Sizes 表里,将默认值改为60,这是粒子的初始值。

Step 16 在Sizes 表里添加如图3.2.17所示的值。

Step 17 在Scale Along Velocity 表里输入如图3.2.18所示的值。

图3.2.17 设置粒子系统的尺寸和时间

图3.2.18 设置粒子系统形状

Step 18 在Color 表里添加如图3.2.19所示的值。

Step 19 打开Particle Movement 界面。

Step 20 在Velocities 表里输入如图3.2.20所示的值。

图3.2.19 设置粒子系统的颜色和时间

图3.2.20 设置粒子系统的方向和时间

Step 21 在Spherical Velocities 表里添加如图3.2.21所示的值。

Step 22 在Random Velocities 表里添加如图3.2.22所示的值。

图3.2.21 设置粒子系统的形状和时间

图3.2.22 设置粒子系统的随机值和时间

Step 23 至此漏斗部分已完成,保存设置。

Step 24 运行Active Preview,龙卷风的漏斗部分几秒钟内就会从顶部降下并且往右移动一些。在原始视图浏览效果会更佳,如图3.2.23所示。

(4)配置碎片层。

Step 1 打开myFx2 界面。

Step 2 将myFx2 更名为wTopDebris。

Step 3 在Main 面板里,将Parent 设为tornado Transform。

Step 4 点击Texture 旁边的Browse 按钮,选择安装目录下(如C:\Program Files\MultiGen-Paradigm\config\vegaprime\vpfx)的smoke.inta 文件。

图3.2.23 预览龙卷风效果

Step 5 打开Positioning 界面。

Step 6 将X 值设为-50,这样碎片层就在龙卷风的偏左部。

Step 7 打开Particle Generation 界面。

Step 8 将Maximum Number of Particles 设为1000。

Step 9 将Number of Particles to Release 设为10。

Step 10 将Release Interval 设为0.05 s。

Step 11 将Particle Life Cycle 设为5 s。

Step 12 将Source Domain Shape 设为Sphere。

Step 13 在Size 输入40。

Step 14 为Velocity Distribution 选择Sphere。

Step 15 打开Particle Characteristics 界面。

Step 16 在Sizes 表里,将默认值改为15,这是粒子的初始尺寸。

Step 17 在Scale Along Velocity 表里添加如图3.2.24所示的值,让球形变得稍微平一些。

Step 18 在Color 表里添加如图3.2.25所示的值。

图3.2.24 设置粒子系统形状

图3.2.25 设置粒子系统颜色

Step 19 打开Particle Movement 界面。

Step 20 在Velocities 表里添加如图3.2.26所示的值。

Step 21 在Spherical Velocities 表里添加如图3.2.27所示的值。

图3.2.26 设置粒子系统位置和时间

图3.2.27 设置粒子系统形状

Step 22 在Random Velocities 表里添加如图3.2.28所示的值。

Step 23 至此龙卷风已经制作完成,保存ACF 文件。

Step 24 运行Active Preview,可以看到在漏斗部分下降之前,有一部分碎片层在地面运动。将视点驶离房子,然后转回头看,就能看到龙卷风的整体效果,如图3.2.29所示。

图3.2.28 设置粒子系统随机值

图3.2.29 预览完整的龙卷风效果

Step 25 保存设置,关闭Active Preview。

(5)添加碰撞检测。

接上来添加一个碰撞检测来实现龙卷风在场景中的碰撞效果。通过碰撞检测能够判断出龙卷风是否碰撞到了场景中的物体,如粮仓、房子等。

为了排除龙卷风和地形的碰撞,需要关掉碰撞检测的Bitmask 中的Bit 1。

需要说明的是,以下步骤稍有简化,如果需要某些详细的配置过程,请参照前面的步骤。

Step 1 点击Create Instance 按钮。

Step 2 创建一个IsectorBump 类,命名为tornadoBumpIsector。

Step 3 将myIsectorService 添加给tornadoBumpIsector(在Owning Isector Service 域),myIsectorService 能让tornadoBumpIsector 实现碰撞效果并接收碰撞数据。

Step 4 将target 设为Scene。在每一帧的渲染中,碰撞检测会检查场景中具有相同lsector mask的bits的物体。

Step 5 选择tornadoTransform 为tornadoBumpIsector的positon reference。这表示碰撞检测和龙卷风的位置关联起来。

Step 6 将tornadoBumpIsector的Width,Length 和Height 值设为50,50 和50。

Step 7 选上Render Isector,这样就可以在Active Preview 中看见碰撞检测的范围。

Step 8 将lsector service 和tornadoBumpIsector 关联起来。

Step 9 保存设置。

(6)给龙卷风添加目标。

接下来,将为龙卷风添加一个碰撞目标——一头奶牛,如图3.2.30所示。

Step 1 添加一个新Object 类。

Step 2 将myObject 更名为cow。

Step 3 将安装目录下(如C:\Program Files\MultiGen-Paradigm\resources\tutorials\ vegaprime\ desktop_tutor\tornado\data\cow)的cow.flt 作为模型。

Step 4 将cow的parent 设为scene。

Step 5 将cow的position 设为(2450,2625,0)。

Step 6 将cow的X,Y,Z的scale 都设为2。这样奶牛在碎片层中看起来就显眼一点,否则容易看成是碎片层的一部分。

Step 7 保存ACF。

Step 8 运行Active Preview,可以看到奶牛处在房子后面的原野上,如图3.2.31所示。

图3.2.30 设置龙卷风目标

图3.2.31 把奶牛放到场景中

运行Active Preview,可以看到有趣的事情发生了,奶牛被直接卷入了龙卷风的碎片层中!

Step 9 退出Active Preview。

(7)为粮仓制作特效。

接下来给粮仓加上特效。当龙卷风撞上粮仓时,会产生碎片飞扬和火焰冲天的效果。

需要说明的是,Active Preview 中看不到这些效果,因为这次的碰撞配置只在runtime application 中生效。后续章节将对application 进行编译运行。

Step 1 各创建一个FxDebris、FxFire 和FxExplosion的类。

Step 2 打开myFx 界面,将myFx 更名为grainStorageDebris。

Step 3 将parent 设为grainstorage。

Step 4 Triggering Method 中选择Don’t Trigger,必要时会使用一行代码来打开这个效果。

Step 5 打开Position 界面。

Step 6 将special effect的X,Y,Z的scale 设为50。

Step 7 对FxFire 和FxExplosion 重复第2 步至第6 步,同时别忘了将这两个特效类更名为grainStorageFire 和grainStorageExplosion。 Step 8 保存ACF。

到此为止,可以在Active Preview 里看到龙卷风并不移动,只是原地打转。后续章节将编译一段代码,代码执行的时候可以让龙卷风按固定的路径移动,同时进行破坏!

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈