Unreal Engine 4 —— 禅意花园项目中的水池
2016-08-23 17:46
936 查看
这篇博客介绍了禅意花园项目中的水的效果实现方法。
这个函数写的很复杂而且不好阅读,应该是美术写的。但是如果把它翻译成代码其实不难理解——它处理的是以场景设计师在关卡中放置的一个点为反射点,通过这个反射点、水面像素和相机位置的计算来获得一个反射向量。这个反射向量在对应的CubeMap中采样,从而获得水面的反射效果,效果如下:
目前这个材质的实现似乎还有点小问题,可以进行修复。这里不方便将修复后的材质放出,读者可以自己进行实现。
总体来讲这个想法很新颖,可以在仅仅使用Emissive Color与Opacity通道的情况下来实现很好的水面的效果,尤其在反射效果上的效果很不错。
因此,这个水面效果可以在移动平台上兼顾性能和效果。
因此水底的模型是让水底本身使用World Position Offset通道来对顶点进行位移操作,这种操作主动让池底的网格模型进行浮动,这样一来也就会比较好适配大部分的设备。
这种做法是很新颖的,另一方面效果也很不错。
禅意花园
禅意花园是Epic Games的官方项目,现在已经开放在Market Place中自由下载。这个项目中使用了特别的方法来实现水池,效果如下:水面表现
整体的水池效果分成水面与池底两块,针对于水面来说使用了Cubemap + noise,原本不是十分特别的地方,但是针对于Cubemap反射这一块有个黑魔法,值得一看:这个函数写的很复杂而且不好阅读,应该是美术写的。但是如果把它翻译成代码其实不难理解——它处理的是以场景设计师在关卡中放置的一个点为反射点,通过这个反射点、水面像素和相机位置的计算来获得一个反射向量。这个反射向量在对应的CubeMap中采样,从而获得水面的反射效果,效果如下:
目前这个材质的实现似乎还有点小问题,可以进行修复。这里不方便将修复后的材质放出,读者可以自己进行实现。
总体来讲这个想法很新颖,可以在仅仅使用Emissive Color与Opacity通道的情况下来实现很好的水面的效果,尤其在反射效果上的效果很不错。
因此,这个水面效果可以在移动平台上兼顾性能和效果。
水底
禅意花园中水池的水底效果的脑洞也开的很大。在正常情况下想要表现水底的效果通常是使用Refraction通道。但是Refraction通道在某些设备上表现的不太正常,性能也是一个必须考虑的问题。因此水底的模型是让水底本身使用World Position Offset通道来对顶点进行位移操作,这种操作主动让池底的网格模型进行浮动,这样一来也就会比较好适配大部分的设备。
这种做法是很新颖的,另一方面效果也很不错。
后记
看到了Epic Games提出的一些解决问题的方法,感觉到提出这些方法的人似乎已经到了另一种境界。《孙子兵法》说“以正合,以奇胜。”大部分人似乎花了太多的功夫在“正”上,例如不停地去钻底层,硬碰硬的提高效率和表现。但是是否能够在“奇”这一块来解决实际的问题,这种“奇”的能力又该怎么去培养?是值得我们深思的……相关文章推荐
- Unreal Engine 4添加自定义Settings到项目设置
- Unreal Engine 4添加自定义Settings到项目设置
- Unreal Engine 4添加自定义Settings到项目设置
- 某android平板项目开发笔记----aChartEngine图表显示(2)
- 基于Unreal Engine 2的救援机器人仿真平台开发(一)
- 某android平板项目开发笔记----aChartEngine图表显示(1)
- 【转】Flayer Player11 & bfengine 搭建Molehill项目
- [thread] Intel® Threading Building Blocks Integration Now Available to Unreal Engine 3 Licensees
- Unreal Engine 2
- 某android平板项目开发笔记----aChartEngine图表显示(2)
- web项目下,甩开RazorTemplateEngine做模板处理
- Unreal Engine 3技术细节
- 某android平板项目开发笔记----aChartEngine图表显示(1)
- svg engine 一个处理矢量图片的开源项目
- How Unreal Engine 4 Will Change The Next Games You Play【纯搬运】
- 某android平板项目开发笔记----aChartEngine图表显示(2)
- WebEngine项目中CMPServices类库的用法简介
- HippoScript is a script engine library for .NET(开源项目)
- 某android平板项目开发笔记----aChartEngine图表显示
- 从Unreal Engine看游戏引擎的发展史