
BY:Florian Gelzenleuchter
纹理化
通常,水光影由几个部分组成。它利用了一些旧技术,比如彼此不同的速度和大小滚动两个法线贴图。这样,可以轻松地更改表面的外观。折射纹理和另一种噪波纹理也是如此,它们被用于制作诸如泡沫之类的其他细节。由于平面贴图,当水到达特定角度时,水也变得更快。这就可以将光影放在任何物体上。
这是构成此光影的功能的列表:
- 法线贴图表面细节
- 在陡峭的角度流动更快
- 从阳光方向投射到表面以下所有物体上的焦散投影
- 基于深度的折射(因此在浅水中的变形更少)
- 表面有泡沫和阴影
- 水下雾,模糊和色差
- 可通过顶点颜色定义位移区域
在Unity中面临的挑战
在外观和交互性之间取得平衡性是制作良好的水类光影的关键,不管所要实现的水流是否真实的,它看起来都应该是流动性的。这就是为什么像《塞尔达传说:风行者》中那样的单一彩色海洋也看起来可信的原因。
顶点位移或彼此滚动两个法线贴图是一个很好的起点,然后再添加一些折射,在基础的水光影上可以进一步的完善。
另一个关键部分是互动。
游泳时角色会留下波浪,碰撞时泡沫会溅到空中,或者当波浪撞击海岸时,沙子会变湿。将水融合到游戏的世界中,就像将所有事物融合在一起,而不是看起来像是分开的东西一样。当然,这在很大程度上也取决于各个游戏本身的需求。
有关光影的处理建议
制作时要记得光影需要实现的目标,并在游戏的机制下来创建它们。它们是将游戏玩法和游戏世界融合在一起的最好工具。
对初学者来说另一个建议是,建立一个自己可以使用的工具库。这可以应用于许多领域,但是特别是对于光影来说,这是使事物变得很棒的方式。你需要不断的尝试一些新的东西,尽管这些东西在这个项目中可能永远都不会用到。
在游戏开发中,不要只是依赖新的技术,那些基础的东西也很重要,结合基本技术来创建复杂的东西是非常有趣的!
2020-01-17

BY:Florian Gelzenleuchter
Florian Gelzenleuchter分享了他的工作流程,为《塞尔达传说:狂野之息》粉丝项目The Bells'Arietta重建水光影。
!
介绍
Florian Gelzenleuchter,目前正在德国HTW柏林学习游戏设计,自2017年底开始学习以来,开始深入研究Unity和Unreal,资产优化,光影编程等。
收集参考
Florian Gelzenleuchter现在在业余时间几乎都用在一个名为“ The Bells'Arietta”的项目上。这是他的一个个人项目,他尝试在Unity中重塑《塞尔达传说:荒野之息》的场景。《塞尔达传说》是他最喜欢的游戏系列之一,通过对艺术风格和游戏进行透彻的分析,他想发现和学习很多有关游戏开发的知识。
从那时起,他学到了很多新事物,例如编写光影或与Substance Painter一起工作。在这段时间里, 还对工作流程进行了几次大修改,让每次变得更加高效和有条理。
在收集参考资料的同时,也尝试着研究现实生活以及让想要达到的效果在游戏内实现。这不仅可以作为启发,而且可以提供有用的信息,说明可能发生的情况以及以后可能会出现的问题。当他被问到是什么让他产生了在《荒野之息》中独特的参拜感觉时,他将其分解为三个关键方面。冷的,抛光的大理石,通透的空气和清澈的海水。考虑到这一点之后就开始创建水光影。
工程力学(Project Mechanics)
《荒野之息》中的水使玩家的视线始终保持在水面之上,因为林克不能在水下潜水。水效果通常需要使用不同的光影设置和其他水下效果。此外,将相机限制在水表面上可以简化相机的移动。
将自己限制在同一位置是一个极端的优势,因为玩家可以完全专注从表面上方看水的外观。这样就为光影技巧提供了空间,例如使用深度缓冲区处理水下的雾。
创造焦散Creating the Caustics
焦散效果是最新的《塞尔达传说》中未包括的一种影响。当光线被曲面折射并投射到其后面的所有物体上时,就会出现这些令人着迷的图案。常见的例子是一杯水或游泳池水被阳光照射的表面。
要解决的第一个问题是焦散的动画。。像许多其他能量效应一样,焦散投影具有非常有机的外观。对此类噪点的首选解决方案是使用Photoshop中的简单混合设置进行原型制作。在此示例中,您可以在左侧看到基本纹理。纹理的每个通道添加了一个小的偏移量,以解决光线折射问题。然后,复制了该图层,将其放大了一点,然后将混合模式更改为变暗。在最后一个面板中,将纹理添加到沙子纹理上。在最终的光影中,两个图层都单独移动。
现在,可以将结果从光的方向投射到对象上了。通过使用NdotL和对象的阴影贴图进行额外的遮罩,可以ikan奥折射的本身几乎完成了。
现在,所有这些步骤都基于每个对象。通常情况下,会有一个高度值在与对象所在的水面相同的水平上截断效果。如果资产是模块化且较小的,则在大多数情况下这可能会起作用。但是,一旦连接了一个具有不同高度的地形,就无法再定义一个总截断了,所以可以使用深度缓冲区。但是在渲染透明对象之前都无法访问它。同样,必须计算每个对象和着色器的焦散似乎并不高效。
Florian Gelzenleuchter用来解决此问题的方法是利用游戏引擎中透明对象的性质。这些不会渲染到深度或g缓冲区,这使的制作者可以访问水下所有对象的法线和深度。这样,所有操作都可以在一个光影中完成,并且焦散会自动影响写入深度缓冲区的所有内容。
2020-01-16
热门标签
AR/VR渲染CloudXR虚拟制作元宇宙虚拟数字人云工作站元宇宙解决方案虚拟现实汽车虚拟仿真vr虚拟现实云渲染实时云渲染元宇宙云化XRCloud VRue4UE5边缘计算平台云交互云仿真云展厅虚拟仿真云流送技术云流送像素流UE虚幻引擎3D数字孪生平台数字孪生虚拟仿真软件智慧园区云平台装修云设计BIM云平台三维虚拟仿真园区数字展厅3D场景制作GPU渲染像素流送的成本实时渲染实时3D3D可视化C4D实时光线追踪实时渲染艺术家云游戏云技术实时交互unity游戏动画即时渲染实时游戏沉浸式云加速云软件云应用
热门资讯

虚拟仿真-探秘宠物医院虚拟仿真实训系统
2023-09-15

如何使用Maya制作一颗钻石
2023-09-12

边缘计算是什么概念?关于边缘计算平台的说法
2023-08-25

数字孪生+实时云渲染:打造流式三维可视化引擎
2023-08-08

实时渲染技术及常用软件介绍,一睹为快!
2023-07-20

什么是XR应用,云计算中的XR应用介绍!
2023-07-04
往期资讯
2023-09-22
2023-09-21
2023-09-15
2023-09-12
2023-09-11
2023-09-08
2023-09-07
2023-09-06