Unreal Engine 4 —— 禅意花园项目中的水池

这篇博客介绍了禅意花园项目中的水的效果实现方法。


禅意花园

禅意花园是Epic Games的官方项目,现在已经开放在Market Place中自由下载。这个项目中使用了特别的方法来实现水池,效果如下:

Water

水面表现

整体的水池效果分成水面与池底两块,针对于水面来说使用了Cubemap + noise,原本不是十分特别的地方,但是针对于Cubemap反射这一块有个黑魔法,值得一看:

Image

这个函数写的很复杂而且不好阅读,应该是美术写的。但是如果把它翻译成代码其实不难理解——它处理的是以场景设计师在关卡中放置的一个点为反射点,通过这个反射点、水面像素和相机位置的计算来获得一个反射向量。这个反射向量在对应的CubeMap中采样,从而获得水面的反射效果,效果如下:

WaterPlane_Reflection

目前这个材质的实现似乎还有点小问题,可以进行修复。这里不方便将修复后的材质放出,读者可以自己进行实现。

总体来讲这个想法很新颖,可以在仅仅使用Emissive Color与Opacity通道的情况下来实现很好的水面的效果,尤其在反射效果上的效果很不错。

因此,这个水面效果可以在移动平台上兼顾性能和效果。

水底

禅意花园中水池的水底效果的脑洞也开的很大。在正常情况下想要表现水底的效果通常是使用Refraction通道。但是Refraction通道在某些设备上表现的不太正常,性能也是一个必须考虑的问题。

因此水底的模型是让水底本身使用World Position Offset通道来对顶点进行位移操作,这种操作主动让池底的网格模型进行浮动,这样一来也就会比较好适配大部分的设备。

这种做法是很新颖的,另一方面效果也很不错。

后记

看到了Epic Games提出的一些解决问题的方法,感觉到提出这些方法的人似乎已经到了另一种境界。《孙子兵法》说“以正合,以奇胜。”大部分人似乎花了太多的功夫在“正”上,例如不停地去钻底层,硬碰硬的提高效率和表现。但是是否能够在“奇”这一块来解决实际的问题,这种“奇”的能力又该怎么去培养?是值得我们深思的……

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值