水实例

title_Water.png

本页面的内容:

以下粒子系统是我们为此实例所创建的水特效。 我们鼓励您在Cascade中打开它以查看每种特效是如何进行组合的。

如需获得更多关于Cascade和粒子系统的信息,请查阅粒子系统文件

瀑布

WaterfallSection.png

内容浏览器位置: Game/Effects/Particles/Water/P_WaterFall

瀑布特效组合了多个材质和粒子系统设置以模拟水冲击岩层的效果。 此特效中特别重要的一点是,相机对齐非常重要;玩家不会直接走到水中,但是他们会从一个较近的距离处观察瀑布。

因为这些粒子使用了半透明材质,它们会造成过度描画性能消耗 - 这表示许多瀑布的水流必须在彼此的上方进行渲染。 不过,由于这些水流是GPU平面粒子,实际 模拟 (更新)的性能消耗非常低,因为这些消耗被传递到GPU进行处理。 通过这种方法,比起仅仅使用材质和静态网格物体来创建特效来说,我们可以获得更为复杂和具有互动性的行为。 但是,我们可以组合运用上述两种技巧,让特效有更多的变化。

碰撞

CollisionWithRocks.png

当瀑布水冲下岩石表面时,您将会注意到水花飞溅并与岩石表面产生碰撞。 这是通过碰撞(景深)操作符来完成的,它仅对GPU平面粒子可用。 它使用景深G-Buffer来计算碰撞表面并仅仅产生最小的系统性能消耗。

粒子颜色

注意GPU平面粒子 支持动态参数,它一般被用来从粒子系统发送数据到材质中。 由于这个原因,我们使用了一些技巧,使用了材质中的粒子颜色节点。 一般来说,此节点让我们可以随着瀑布水流的下落而变更粒子的颜色,这是通过在其生命周期内对颜色和alpha值进行动画处理来完成的。 但是此处,我们使用红色,绿色,蓝色和Alpha (RGBA)数据来驱动更多内容。 由于不需要对瀑布水流实际变更颜色(水是无色的),我们按以下方式使用粒子颜色数据:

  • 红色 - 驱动水的折射率,或者说它偏移光照的程度。

  • 绿色 - 驱动实际颜色。 这表示绿色通道为颜色驱动了所有的RGB数据,从而得到了灰度的结果。

  • Alpha - 驱动水的不透明度。

如果您迁出材质(名称为_M_WaterDrop_SubUV_),您可以看到粒子颜色节点如所描述的那样驱动这些值。

点击以查看完整尺寸图片。

如果您在Cascade中打开P_Waterfall粒子系统,要特别关注缩放颜色/生命周期模块。 对生命周期的前一半来说,颜色被动画处理为非常亮的状态(大于1.0),而当alpha从黑变白时,它逐渐衰减到黑色。 最终结果为如下图所示的清晰的淡入和淡出。

ColorAlphaAnimated.png

水花四溅和涟漪效果

SplashRipple.png

内容浏览器位置: /Game/Effects/Particles/Water/P_Drips_Splash_Ripples

随着瀑布的水流冲击水面,粒子特效同时处理滴水和飞溅/涟漪效果。 这是通过粒子系统内一系列不同的发射器来完成的。 一系列发射器处理瀑布的特效,另一个发射器模拟随着瀑布水流冲击下方的水池时向上的水花溅出,同时还有最终类型的发射器处理沿水流表面传播开来的涟漪。 这表示此特效可被放置于任意固定水面并能获得真实的效果。

粒子系统同时使用带光照的半透明材质,它使用Particle Color(粒子颜色)节点来驱动不透明度。 这使得粒子系统能通过缩放颜色/生命周期模块来控制其不透明度。 本例中,此alpha值进行了动画处理,以使得在粒子生命周期的起始位置附近几乎为不透明,这表示它能接受光照影响的程度很高。

FallingWaterDrops.png

在以上屏幕截图中,请注意许多瀑布的水流粒子在近图像顶部位置处为亮白色。 刚看起来,这似乎是一种自然的现象,因为在粒子位置附近存在光溢出的白色高亮。 但是,这实际上仅仅是通过将粒子在其生命周期内的该位置处设置为 更高的不透明度 才实现的,这样也会使用更多的关卡光照。