3DCAT 二维码

扫一扫 立即咨询

行业资讯

如何使用光影创建波动的水面?-part1

2020-01-16

BY:Florian Gelzenleuchter

Florian Gelzenleuchter分享了他的工作流程,为《塞尔达传说:狂野之息》粉丝项目The Bells'Arietta重建水光影。 01 !

介绍 Florian Gelzenleuchter,目前正在德国HTW柏林学习游戏设计,自2017年底开始学习以来,开始深入研究Unity和Unreal,资产优化,光影编程等。

收集参考

Florian Gelzenleuchter现在在业余时间几乎都用在一个名为“ The Bells'Arietta”的项目上。这是他的一个个人项目,他尝试在Unity中重塑《塞尔达传说:荒野之息》的场景。《塞尔达传说》是他最喜欢的游戏系列之一,通过对艺术风格和游戏进行透彻的分析,他想发现和学习很多有关游戏开发的知识。

从那时起,他学到了很多新事物,例如编写光影或与Substance Painter一起工作。在这段时间里, 还对工作流程进行了几次大修改,让每次变得更加高效和有条理。 在收集参考资料的同时,也尝试着研究现实生活以及让想要达到的效果在游戏内实现。这不仅可以作为启发,而且可以提供有用的信息,说明可能发生的情况以及以后可能会出现的问题。当他被问到是什么让他产生了在《荒野之息》中独特的参拜感觉时,他将其分解为三个关键方面。冷的,抛光的大理石,通透的空气和清澈的海水。考虑到这一点之后就开始创建水光影。 02

工程力学(Project Mechanics)

《荒野之息》中的水使玩家的视线始终保持在水面之上,因为林克不能在水下潜水。水效果通常需要使用不同的光影设置和其他水下效果。此外,将相机限制在水表面上可以简化相机的移动。  将自己限制在同一位置是一个极端的优势,因为玩家可以完全专注从表面上方看水的外观。这样就为光影技巧提供了空间,例如使用深度缓冲区处理水下的雾。

创造焦散Creating the Caustics

焦散效果是最新的《塞尔达传说》中未包括的一种影响。当光线被曲面折射并投射到其后面的所有物体上时,就会出现这些令人着迷的图案。常见的例子是一杯水或游泳池水被阳光照射的表面。 03

要解决的第一个问题是焦散的动画。。像许多其他能量效应一样,焦散投影具有非常有机的外观。对此类噪点的首选解决方案是使用Photoshop中的简单混合设置进行原型制作。在此示例中,您可以在左侧看到基本纹理。纹理的每个通道添加了一个小的偏移量,以解决光线折射问题。然后,复制了该图层,将其放大了一点,然后将混合模式更改为变暗。在最后一个面板中,将纹理添加到沙子纹理上。在最终的光影中,两个图层都单独移动。 04 05

现在,可以将结果从光的方向投射到对象上了。通过使用NdotL和对象的阴影贴图进行额外的遮罩,可以ikan奥折射的本身几乎完成了。 06

现在,所有这些步骤都基于每个对象。通常情况下,会有一个高度值在与对象所在的水面相同的水平上截断效果。如果资产是模块化且较小的,则在大多数情况下这可能会起作用。但是,一旦连接了一个具有不同高度的地形,就无法再定义一个总截断了,所以可以使用深度缓冲区。但是在渲染透明对象之前都无法访问它。同样,必须计算每个对象和着色器的焦散似乎并不高效。 

Florian Gelzenleuchter用来解决此问题的方法是利用游戏引擎中透明对象的性质。这些不会渲染到深度或g缓冲区,这使的制作者可以访问水下所有对象的法线和深度。这样,所有操作都可以在一个光影中完成,并且焦散会自动影响写入深度缓冲区的所有内容。  07

标签: