我要发帖 回复

版主

14

主题

217

积分

0

专家分

兴趣点(最多三项):

视景仿真

私信
发表时间 : 2015-8-27 22:01:06 | 浏览 : 3795    评论 : 1
介绍
    特效能让你的应用变得更加真实、丰富及夺目。你可以定义烟火、爆炸、碎片等特效,也可以通过VP的粒子特效来模拟烟尘等效果。场景中的物体可以用来撞击或破坏,造成的结果可以加上特效。所有这些都可以通过LP来方便的进行定义。
   这章将从一个农舍的简单特效做起。当汽车撞击房屋时,碎片会四处散落。然后可以利用粒子效果创建一个龙卷风,并通过碰撞检测和场景中的的物体进行交互。
    添加特效
    VP的特效模块提供了一个实时的特效库,你可以通过LP来配置特效,也可以通过VP的API来配置特效。并且特效也可以进行形状、比例和颜色的变化。
    VP提供的特效包括以下几种:
 Blade(vpFxBlade)-旋转的螺旋桨,可以缩放和定位,适合用于直升机和飞机的螺旋桨效果
 Missile Trail(vpFxMissileTrail)-用有烟的轨迹来代表飞机或导弹的飞行效果,可以随着时间而变淡
 Particle System(vpFxParticleSystem)-多边形集聚体,用来模拟诸如焰火和烟雾等效果
 Debris(vpFxDebris)-飞扬的碎片效果,经常用于爆炸
 Explosion(vpFxExplosion)-地面或空中的爆炸效果
 Fire(vpFxFire)-火焰效果
 Smoke(vpFxSmoke)-翻腾的烟云效果
    目的
    学会给物体添加特效并和碰撞检测对应起来,同时要学会利用粒子系统来创建特效,并给粒子系统提供标把。
    目标
    学习以下概念:
 给目标添加一至多个特效
 给碰撞检测添加特效
 利用粒子系统创建特效
 定义诸如颜色、粒子数量和尺寸、喷射间隔、方向、速率等属性
    制作碎片效果
    在第三章中我们已经给汽车和房子碰撞定义了一个Bump的碰撞检测。当汽车和房子相撞时,应该有一个撞后的效果。
    这里我们将给房子加上碎片效果,并且和汽车的碰撞关联起来。
    Step 1 打开Chapter4.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 将文件存为tornado.acf
    制作龙卷风效果
    这里我们要添加一个龙卷风的效果来对物体进行撼动!
    一共要使用三个粒子效果:一个为碎片层,一个是龙卷风的漏斗部分,另一个为龙卷风的顶部。
    Step 1 点击Create Instance按钮
    Step 2 将Instances to Create设为3
    Step 3 在Class列表里选择FxParticleSystem类
    Step 4 点击Create,可以看到生成三个新的类(myFx,myFx1,myFx2)
    Step 5 保存ACF
    配置顶部
    Step 1 将myFx更名为w_tornado Top
    Step 2 在w_tornado Top面板里,打开Main所属界面
    Step 3 点击Texture旁边的Browse按钮,选择安装目录(如C:\Program Files\MultiGen-Paradigm\config\vegaprime\vpfx)下的smoke.inta文件,这个纹理是tornado的三个部分都要用到的
    Step 4 打开Positioning界面
    Step 5 将Z值设为550,这样龙卷风的高度就是550米
    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秒,这是新粒子出现的时间间隔
    Step 10 将Particle Life Cycle值设为10秒,这是新粒子出现前旧粒子所持续的时间
    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 输入以下数值,使球状体变得平一点:

    Step 17 点击Color旁边的Create Instance
    Step 18 点击新Color旁边的Browse按钮,打开Color窗口。
    为了造成龙卷风的浑浊效果,需要指定三个不同的灰度。这样在一个生命周期内,龙卷风首先是显示灰色,然后变亮,再变暗。
    Step 19 将Red,Green,Blue值设为(193,193,193)
    Step 20 点击OK
    Step 21 将Color旁边的Create Instance按钮点击两次
    Step 22 用下列值添加明暗两种颜色:

    Particle Characteristics界面应该为如下图所示

    Step 23 打开Particle Movement界面
    Step 24 在Velocities栏里添加下列值:
     Velocity Vector定义了粒子在特定时间间隔里的方向
    Step 25 在Spherical Velocities栏里添加下列值:
     Spherical Velocities使粒子以特定的速度按球形轨迹运动
    Step 26 在Random Velocities栏里添加两个值:

    Random Velocities添加粒子的随机运动
    Step 27 以上步骤为龙卷风的顶部配置,先保存一下
    定位
    Step 1 在w_tornado Top界面里打开Main窗口
    Step 2 创建一个新parent类,在Class列表里选择Transform
    Step 3 打开myTransform界面
    Step 4 将myTransform更名为tornado Transform
    Step 5 将tornado Transform的parent设为myScene
    Step 6 输入(1460,300,12)以定位tornado
    Step 7 保存
    Step 8 运行Active Preview,在正视图上就可以看见龙卷风的顶部移动

    Step 9 退出Active Preview
    配置漏斗
    Step 1 打开myFx1界面
    Step 2 将myFx1更名为tornadoFunnel
    Step 3 在Main面板里,将Parent设为tornado Transform
    Step 4 点击Texture旁边的Browse按钮,选择安装目录下(如C:\Program Files\MultiGen-Paradigm\config\vegaprime\vpfx)的smoke.inta文件
    Step 5 打开Positioning界面
    Step 6 将Z值设为550,这样龙卷风的漏斗部分就和顶部一样高了
    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秒
    Step 11 将Particle Life Cycle设为12秒
    Step 12 将Source Domain Shape设为Circle(默认值)
    Step 13 在Size输入75
    Step 14 打开Particle Characteristics界面
    Step 15 在Sizes表里,将默认值改为60,这是粒子的初始值
    Step 16 在Sizes表里添加以下值:

    Step 17 在Scale Along Velocity表里输入如下值:
    Step 18 在Color表里添加如下值:

以上值是让漏斗进行亮度的变化
    Step 19 打开Particle Movement界面
    Step 20 在Velocities表里输入如下值:

    Step 21 在Spherical Velocities表里添加如下值:

以上值是用来形成一个逼真的锥形或漏斗形
    Step 22 在Random Velocities表里添加如下值:

    Step 23 至此漏斗部分已完成,存盘
    Step 24 运行Active Preview,几秒钟内,龙卷风的漏斗部分就会从顶部降下并且往右移动一些。从原始视图里浏览的效果会好一些

剩下来只需要建立龙卷风的碎片层了
    配置碎片层
    Step 1 打开myFx2界面
    Step 2 将myFx2更名为tornadoDebris
    Step 3 在Main面板里,将Parent设为tornado Transform
    Step 4 点击Texture旁边的Browse按钮,选择安装目录下(如C:\Program Files\MultiGen-Paradigm\config\vegaprime\vpfx)的smoke.inta文件
    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秒
    Step 11 将Particle Life Cycle设为5秒
    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表里添加如下值,让球形变得稍微平一些:

    Step 18 在Color表里添加如下值:

这样碎片层将从中等灰度变亮一些
    Step 19 打开Particle Movement界面
    Step 20 在Velocities表里添加如下值:

    Step 21 在Spherical Velocities表里添加如下值:

    Step 22 在Random Velocities表里添加如下值:

    Step 23 至此龙卷风已经制作完成,保存ACF文件
    Step 24 运行Active Preview,可以看到在漏斗部分下降之前,有一部分碎片层在地面运动。将视点驶离房子,然后转回头看,就能看到龙卷风的整体效果

    Step 25 关闭Active Preview,别忘了存盘
    添加碰撞检测
    这里我们添加一个碰撞检测来实现龙卷风在场景中的碰撞效果。通过碰撞检测能够判断出龙卷风是否碰撞到了场景中的物体,例如粮仓、房子等。
    为了排除龙卷风和地形的碰撞,需要关掉碰撞检测的bit mask中的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 选择tornado Transform为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 保存设置
   给龙卷风添加目标
    接下来,我们将为龙卷风添加一个碰撞目标-一头奶牛!

    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设为(2300,1625,0)
    Step 6 将cow的X,Y,Z的scale都设为2。这样奶牛在碎片层中看起来就现眼一点,否则容易看成碎片层的一部分
    Step 7 保存ACF
    Step 8 运行Active Preview,可以看到奶牛处在房子后面的原野上

    运行Active Preview,可以看到有趣的事情发生了,奶牛被直接卷入了龙卷风的碎片层中!
    Step 9 退出Active Preview
    为粮仓制作特效
    这一节讲解如何给粮仓加上特效。当龙卷风撞上粮仓时,会产生碎片飞扬和火焰冲天的效果。
    需要说明的是,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里看到龙卷风并不移动,只是原地打转。下一章我们要编译一段代码,执行的时候可以让龙卷风按固定的路径移动,同时进行破坏!

最近VR访客查看更多↓

New_ 评论于2017-11-21 20:22:15
您好,请问一下中文教程中的示例flt文件您还有吗?能不能给我发一份

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-9-23 11:12 AM

返回顶部