行业资讯云加速

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

2020-01-17

如何使用光影创建波动的水面?-part1
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

热门标签
热门资讯
往期资讯
商务咨询:4008037298