如何在UE4中创建真实的草?

今天给大家带来一篇干货教程,如何在UE4中创建真实的草?这个草地的解决方案会与之前的略有不同,希望能够给你的项目开发过程中带来一些灵感。

1、介绍

大家好!我叫Nils Arenz,是一名来自德国的Junior 3D Environment Artist。今年早些时候,我完成了计算机图形和图像处理领域的学习。在我的毕业论文中,我使用Nvidia PhysX库开发了一个用来模拟不同类型的雪崩应用程序。我的主要研究领域是C++和OpenGL编程,但是,我更喜欢将现有的计算机图形领域的知识,引入到数字艺术领域。我在大学的时候也常常参加游戏或电影艺术项目,并提高我对虚幻引擎的了解。然而我毕业后,不得不做出选择:作为一名程序员工作?还是追随我的梦想并努力成为一名3D Environment Artist?我选择了最后一个,我对这个决定非常满意!

我的主要兴趣领域是尽可能地设计出复杂详细的大自然,但要以非常有效的方式做到这一点。由于我的3D计算机图形方面的背景,对我后面工作中的优化设计有很大帮助,因为,我知道所有计算背后的数学原理。

2、创建基础植被

在我概念里面,植被的创建将分为五个部分。首先是视觉质量要非常的高,一个草的叶子或是其他部分,不仅仅是绿色的简单模型片。我创建的所有的植被贴图,都是在一个可移动的工作室里扫描的,可以是在树林里,也可以是在家里,以获得最好的照明设置

其次,我们的方案还需要一些风的动画,其实,你在森林里能看到的植被并不是静止的。

第三,你需要某种与植被互动的效果。如果,你的脚踩到常春藤树枝,那么树枝应该会有一定的反应。(译:你的脚踩下去时候,植物会塌下去,脚离开后,植物又会恢复原状。)

你的植被应尽可能复杂/独特,但同时要高效。如果您只使用5种不同的草叶来设计草丛,这看起来不太好。当你拥有的植物种类越多,效果就会越好。当然,你后面要优化的也越多,对你的设计感到满意的人就越多。

3、构建草丛

最常见的制作草的方法是在albedo贴图中,把草的叶片并排排列起来,并使用一个平面UV将其映射到一个面片上。然后,把这些平面,以不同的角度相互堆叠。如果你垂直向下看草,你就会看不到下方的草叶。更好的方法是在每片草叶周围放置一个较小的平面模型,并将这些草叶作为一个结构。

 

这两种方式都有两大缺点:四边形(alpha通道)的透支和Shader 复杂度非常高。减少这些问题的唯一方法是单独对每片草叶进行建模,以便尽可能的降低透明通道的使用,这也将降低四边形(alpha通道)透支的问题。这种方法的缺点是顶点数比其他方法高。另外,要使用 Unreal Engine Pivot Painter Tool 2.0这个工具,这样,我们就需要一个更精细的网格来模拟风吹摆动的效果。此外,我们在UE4使用的是树叶实例,这也使得顶点数变得不那么重要。

 

4、多元化的草

你可以跟着我的工作流程扫描素材,你可以割草,它会保持新鲜约一个小时,这与花不同。因我住在乡下,我可以在外面搜集一大堆草,有一点要留意,选择高度多样化不同种类的草很重要。接下来,我将草带回家中,为了以后获得最佳的效果,你还需要挑选各种不同外观的叶子,你可以从下图看到这点。

 

对于每种草,我挑选了大约5-10种不同的独特叶片。为了获得最佳性能,我将所有这些都打包放在了一张Albedo贴图中。总的来说,我在纹理处理阶段提取出了84种不同的草叶。每个对象都进行了建模,多次复制,然后转换成不同的形状。所以,我想出了150多种不同外观的草叶。

 

下一步是创建草丛,你可以使用foliage刷出来。对于这个资产,我制作了82个草的笔刷组件,为你提供了高度的树叶变化。这些草丛是由100-200个草叶组成,每个草丛的平均顶点约为1200个。画笔作为对象实例工作,那么顶点数就不是很重要。使用虚幻引擎,您必须在 x、y 和 z 轴上添加大约+-20% 大小的自由变换,即草地Landscape的每个部分看起来都完全不同。

 

由于较低的Shader复杂性和较低的四边形透支,与其他草叶相比,性能更高,即使当前这个版本的顶点数更高。目前的LOD是由虚幻引擎自动生成的。我正在研究一个新的方案,它通过减少每个草叶的高度间隔来降低顶点数。为了测试性能,我制作了一个简单的场景并在其中放置了30k个草丛实例。在GeForce 1070 GTX情况下,帧数也能维持在 80 到 120 之间。

 

5、动画

草丛的动画是当前资产的关键特征。虚幻引擎中最常用的草和树叶运动动画是Simple Grass Wind节点。它的主要功能是弯曲整个草丛集群。缺点是彼此相邻的草叶具有非常相似的动画,因为,它们会以相同的强度向同一方向弯曲。尽管如此,我在项目的前期,还是使用此功能来创建风吹动草地滚动效果。

但是,后来我对这样的效果并不满意,所以,我做了一些研究并发现了Pivot Painter Tool 2.0。经过数周的反复试验,我大致掌握了管道的创建和所有参数的控制。Pivot Painter Tool将风动画是应用在草丛的每一片叶子上,而且所有计算都在Shader中完成。每个对象的这些变换都是基于其轴心点进行的。所以,顶点数越高,动画就越流畅。现在所有的对象移动完全不同,但是却都以相同的方式由参数控制。虚幻引擎已经完善了所有重要参数,如风强度、风向、弯曲强度、随机风向变化等等。

另一个重要步骤是,分别绘制所有草的叶片顶点。如果侧叶的移动量大于草的茎,则动画效果会更好。这种方法的缺点是,每个草丛都需要一个单独的材质实例,因为,需要告诉材质轴点的位置以及轴点指向的方向。

 

 

 

由于项目需要一个独特的Material Instance,因此,你也可以单独分配所有风参数,高草丛受风的影响比短草要多。此外,你还可以更改场景中的风向和其他值,使用这种方法,你只需点击几下,就可以改变整个植被系统的风向、风力、风的湍流和更多参数,这将使您的植被看起来非常活跃。

6、未来计划

草的组件是我推出的Biome组件必备组件的一部分。这将是一个包含所有植物、花卉、草以及更多的东西,可以很好地填满你的地形。当然,所有元素都会有风吹动的动画和优化后的效果。我将把这个Biome组件分成三个部分,第一部分是草,这是最重要的,它将是一个大组件,目前登陆UE4Marketplace,更多信息将在虚幻市场论坛上发布。另一个组件,将是野生草甸花卉和地面植物。在这之后,我打算做一个森林树叶包,里面有森林蕨类植物、小灌木、小树等元素。而在在这里,草地、风和角色之间的相互作用才是本次的重点。

- End -

posted @ 2022-06-07 17:59  qwezx  阅读(427)  评论(0编辑  收藏  举报