使用虚幻引擎模拟的水下环境

介绍
大家好,我叫Timothy Cole,是一名虚幻引擎艺术家。我在大学学习了电脑游戏的 3D 艺术,但一直对电影充满热情,所以我试图在这两个领域都有所参与。我最初开始在悉尼的一家动画工作室工作,使用 Unreal 制作游戏过场动画和预告片。从那里我开始参与实时动作捕捉,这导致与 Guy Norris(特技导演 Mad Max Fury Road)合作,并且刚刚完成 Xmen Dark Phoenix。我在 Unreal 中负责实时预览方面的工作,并在 VR 中构建了一个虚拟摄像机设置,以便导演和摄影师可以在场景构建之前拍摄整个序列。除此之外,我还是 SpectreVR 多个 VR 项目的虚幻引擎负责人。


我认为对于内置游戏引擎的任何东西来说,拥有真正的流体模拟或物理上准确的东西都太昂贵了,所以挑战就变成了如何将不同的元素分层以尽可能接近您的参考。首先加载参考以真正可视化您要创建的内容,但选择一个参考作为您的“英雄”。有时,如果您在多个图像中匹配颜色/纹理,很容易迷失方向,并且最终看起来不像任何一个!所以选择一个你试图接近的主要的。
对于这个项目,我有一个 Pinterest 的持续参考板,我的英雄参考是 Sean Howard 的这张照片(instagram:@sean.howard)。
在实时材质方面,我尝试使用不透明材质,而不是依赖半透明。半透明很昂贵,并且不像不透明材料那样对照明做出很好的反应,但这实际上归结为水的使用。如果玩家粘在水的一侧(无论是进水还是出水),那么您可以使用不透明材料,但如果它们能够进出,您可能需要使用半透明材料。
在这个场景中,唯一的半透明材质位于表面粒子上,即使如此,混合模式也设置为加法。

分层
这都是关于分层。我将其分解为单独的元素:水面、光源和体积粒子。
对于水面,我在平面上有一个反射的平移水材料。这实际上是不透明的,因为我只想专注于水下,从下面看时,参考表面可能会出奇的不透明!在此之上,我有一个波纹粒子,它会扭曲表面并赋予它更有机的感觉。水的边缘也有波纹粒子,以假装边缘周围的重叠相互作用。
我将在接下来讨论的照明设备。

灯光
灯光已经演变成一个有点复杂的装备,但只是从查看我的参考资料并逐层分解它开始。
它基本上是从表面到深度,从透明到深蓝色散射的渐变。同样在焦散方面,将它们视为靠近表面的焦点,随着深度的加深而逐渐模糊。
此外,一些灯关闭了阴影,而那些打开了阴影的阴影分辨率比例为 0.2。这有助于在水下创建柔和的阴影,也有助于提高性能。
我还在指数高度雾中使用 UE4 中的新体积。对于这个项目,我没有过多地更改雾设置,只是将密度设置为 0.5,将雾内散射颜色设置为黑色并打开体积雾。
我从焦散的轻材料功能开始。它基本上是 2 个不同比例的平移纹理,被大量柏林噪声扭曲。然后将这 2 层与正弦混合在一起。然后将其乘以 0.8 不透明度的灯光。
然后我将其应用到聚光灯下。焦散在表面附近最为清晰,因此我将衰减衰减保持得很短。这开始是一束白光,但我真的很想模仿光谱分裂,所以我作弊并将这盏灯分成 3 盏灯,彼此稍微偏移。每一种都具有相同的材料功能,但颜色为红绿蓝。
然后顶部的第二个聚光灯具有更大的衰减,因此它更深入到音量中。它也被染成蓝色,因为这是从水中伪造散射的主要光线。此图层上的阴影已关闭。该灯光使用相同材质函数的实例,但是我更改了纹理的 mip 偏差,使它们变得模糊。如果您喜欢或实际上在 Photoshop 或 Substance 中模糊纹理,您可以在此处使用不同的纹理,但我发现这个小技巧同样有效且成本更低。该光被烘焙以提供间接光。
下一层是深度散射,所有光的衰减最大。我还将这盏灯的体积贡献提高到 10。
最后,我在顶部添加了一个白光,只是为了中和一点颜色并夸大光源。
最后将所有层放在一起:

Unreal Engine 4

移动
我对虚幻中的物理领域还很陌生,并且物理引擎已经在最新版本中进行了改进,所以我正在使用这个项目来学习它。当前的设置是使用隐形碰撞器来使角色移动。我关闭了重力并抑制了响应,使其具有更飘逸的感觉。我也在处理动作捕捉数据并在顶部混合物理。我认为这将是我最终使用的路线,因为这意味着模拟更稳定。体积内的 GPU 粒子应用了速度场,这有助于产生水体的错觉。

这可以在实时环境中使用吗?
确实。我构建的任何东西都是在考虑可扩展性的情况下构建的,以这样的分层方式构建环境可以更容易地优化。例如,您可以轻松地使用一层或两层灯光设置和/或关闭阴影,然后立即适用于低规格机器。主焦散层上的 RGB 分割很容易只是一束白光。

返回首页

作者 lll

发表评论