在 UE4 中制作逼真的草

简介
你好,我叫Nils Arenz,是一名来自德国的初级 3D 环境艺术家。今年早些时候,我完成了计算机图形和图像处理领域的学习。在我的毕业论文中,我开发了一个使用 Nvidia PhysX 库来模拟不同雪崩类型的应用程序。我的主要研究领域是编码 C++ 和 OpenGL,但我总是对利用我在学习期间获得的知识进行数字艺术更感兴趣。我在大学时尽可能多地参与游戏或电影艺术项目,并提高了我对虚幻引擎的了解。毕业后,我不得不做出选择:作为一名程序员工作还是追随我的梦想并努力成为一名 3D 环境艺术家。我选择了最后一个,我对这个决定非常满意!
我的主要兴趣领域是尽可能详细和复杂地设计自然,但要以非常有效的方式做到这一点。我在 3D 应用程序编码方面的背景对我优化设计有很大帮助,因为我知道所有计算背后的数学原理。我最近发表的项目是光扫描地面景观材料、光扫描树皮材料和动态和互动的常春藤。下半年,我将专注于创建动态风动画和交互式植被。

植被创建基础
在我看来,这分为五个部分。首先,视觉质量必须非常高。一片草叶或其他植被部分不仅仅是一些绿色网格部分。我创建的所有植被图片都在树林中或家中的便携式工作室中进行扫描,以获得最佳照明设置。
接下来,您需要某种风动画。你根本无法穿过森林,看到所有的植被都是静止的。那感觉根本不对。
第三,您需要某种方式与植被互动。如果你走过常春藤树枝,树枝应该与你的角色有一些互动。
您的植被应尽可能复杂/独特,但同时要高效。如果您只使用 5 种不同的草叶来设计草丛,效果会不好。您拥有的叶子/草叶种类越多,效果就会越好。此外,您优化得越多,对您的设计感到满意的人就越多。

建筑草
实现草的最常见方法是在反照率贴图中并排排列草叶,并使用大平面将其映射到对象。然后这些平面将以不同的角度相互堆叠。如果您从顶部看草,您将看不到您下方的草叶。更好的方法是在每片草叶周围放置一个较小的平面,并将这些草叶作为一个结构。这两种方式都有两大缺点:四边形过度绘制和着色器复杂度非常高。减少它们的唯一方法是单独对每片草叶进行建模,以便尽可能降低使用的不透明度。这也将降低四边形过度绘制。这种方法的缺点是顶点数比其他方法高,但我从中受益。用于使用 Unreal Engine Pivot Painter Tool2.0 你需要一个更精细的网格来模拟风。此外,UE4 正在使用树叶实例,这使得顶点数变得不那么重要。

多样化草
让我指导您完成我的工作流程。与花不同,你可以割草,它会保持新鲜约一小时。因为我住在乡下,我只是到外面去收集一大堆草。请注意,选择高度多样化的不同种类的草很重要。接下来,我将草带回家并放入花瓶中。为了以后获得最佳效果,您还需要挑选出各种草的不同外观的叶片。您可以在下图中看到这一点。请注意,选择高度多样化的不同种类的草很重要。接下来,我将草带回家并放入花瓶中。为了以后获得最佳效果,您还需要挑选出各种草的不同外观的叶片。
对于每种草,我挑选了大约 5-10 种不同的独特刀片。为了获得最佳性能,我将所有这些都打包在一张反照率贴图中。总的来说,我在纹理中提出了 84 种不同的草叶。每个对象都被建模,多次复制,然后转换成不同的形状。所以我想出了 150 多种不同外观的草叶。下一步是创建可以用作树叶画笔的草丛。对于这个资产,我制作了 82 个草刷,为您提供了高度的树叶变化。这些簇由 100-200 个草叶组成,每个簇的平均顶点约为 1200 个。画笔作为对象实例工作,顶点数不是那么重要。使用虚幻引擎,您必须在 x、y 和 z 轴上添加大约 +-20% 大小的自由变换。
由于较低的着色器复杂性和较低的四边形过度绘制,与其他草叶相比,性能更高,即使顶点数更高。目前 LOD 是由虚幻引擎制作的。我正在研究一个新的实现,它通过减少每个草叶的高度间隔来降低顶点数。为了测试性能,我制作了一个简单的场景并在其中放置了 30k 个树叶实例。我有 GeForce 1070 GTX,帧数在 80 到 120 之间。在下面的视频中,可以很好地看到性能。

动画
草的动画是此资产的关键特征。虚幻引擎中最常用的草和树叶运动动画是简单草风节点。它的主要功能是弯曲整个集群。缺点是彼此相邻的草叶具有非常相似的动画,它们以相同的强度向同一方向弯曲。尽管如此,我还是使用此功能来创建风滚动效果。
我对它的外观不满意,所以我做了一些研究并发现了 Pivot Painter Tool 2.0。经过数周的反复试验,我设法掌握了管道的创建和对所有参数的控制。Pivot Painter Tool 将风动画放在集群的每一片草叶上。所有计算都在着色器中完成。每个对象的这些变换都是基于其轴心点进行的。顶点数越高,动画就越流畅。如果您只使用具有 4 个顶点的平面,动画将弯曲整个平面并锁定到枢轴点。现在所有的对象移动完全不同,但以相同的方式由参数定义。虚幻引擎已经实现了所有重要参数,如风强度、风向、弯曲强度、随机风向变化等等。
另一个重要步骤是分别对所有草叶进行顶点绘制。如果侧叶比草茎移动得更多,动画会更好看。这种方法的缺点是每个集群都需要一个单独的材质实例,因为您需要告诉材质枢轴点在哪里以及枢轴指向哪个方向。
由于您需要一个独特的材质实例,因此也可以单独分配所有风参数。高草丛受风的影响比剪短草要多。此外,您可以外包材质集合中的参数,因此您可以更改场景中所有对象的风向和其他值。使用这种方法,您可以在您的应用程序中构建某种风力引擎。只需点击几下,您现在就可以改变整个植被系统的风向、风力、风噪声和更多参数,这将使您的植被看起来非常活跃。

未来计划
草包是我即将推出的树叶必需品包的一部分。这将是一个包含所有植物、花卉、草和更多东西的包,可以很好地填满你的土地。当然,所有元素都会有呈现的风动画和优化。我将把这个包分成三个部分和一个包。第一部分是草,这是最重要的,它将是一个大包。草项目已经提交,将在大约 1-2 周后登陆 UE4 Marketplace。更多信息将很快在虚幻市场论坛上发布。下一包将是不适合花或草部分的野生草甸花卉和地面植物。两包已完成一半,将在大约 2 周内提交。在这之后,我计划做一个森林树叶包,有森林蕨类植物,小灌木丛,小树和其他元素。在这里,植被/风和角色之间的相互作用将是关键。

返回首页

作者 lll

发表评论