当你在UE5中开始制作一个景观时,最简单的方法就是使用folliage画笔工具。但是,我发现这对于开放世界来说是一个糟糕的想法,主要是因为以下两个原因,所以我转而使用了程序生成:
1 - 太耗时了:你可能会想,绘制一个1公里x1公里的图块是可行的,但如果你增加图块的大小,耗时也会随着二次方增加。所以,一个4公里x4公里的图块需要16倍的时间,而不是4倍。程序生成会自动发生。
2 - 编辑是一个噩梦:假设你决定添加一种新的树木,或者决定一种特定的蕨类植物太密集了。那么,你就必须手动重绘所有之前的区域,而且这些区域会随着你的图块大小而增长。程序生成只需要几次点击。
因此,我决定使用PCGs。它们是基于蓝图的定义,通过一系列节点(我自己构建的)允许我生成不同的类型的folliage。如下所示,我使用一个随机种子生成草和岩石(两个不同的节点,具有不同的生成指令,如坡度处理、随机大小或旋转),然后是节点来限制生成的内容到我的地图的特定层次,并且让它在海拔以上。
一旦这样就清楚了,我们就需要为每种类型的folliage准备资产。
我使用Blender插件(免费)和Free Stylized(也免费)的纹理来制作岩石。令人惊讶的是,仅仅通过缩放和旋转岩石,就可以获得大量的变化,所以我大部分岩石类型都只使用一个或两个网格,剩下的就是PCG来完成了。目前,我正在使用一个节点来生成三种不同的大小(小岩石最常见,紧随其后的是中等和大岩石),而另一个节点只生成小岩石和其他小网格,例如海滩上的贝壳。
通过使用一个LERP节点在材质上,我可以自动将雪覆盖在岩石上,无论它是如何被PCG旋转。
说到贝壳,我把它和其他网格(如小骨头或落叶树干)归入另一个类别,称为衰变。这些网格通常来自Sketchfab上的CC0资产(免费),然后使用Meshy(每月20美元)来适应我的风格。3D模型的大部分特征来自纹理,而不是网格本身,所以你可以通过简单地纹理来使一个简单的CC0网格适应多种风格。目前,Meshy允许纹理到8K,这对于更大的物体来说是很有用的。
我还使用Meshy来制作菌类,工作流程基本相同。Sketchfab上有很多CC0资产,然后我会截图一下黏土模型,问ChatGPT根据我的口味来纹理它,Meshy会用这个图像来创建纹理图。
通过这种方式制作的蘑菇。同样,也有使用同样的方式制作的衣服,具体见第二部分。
然后我们有草。如果你打算让PCG生成每一片草,那么它会在你有一个密集的覆盖之前就开始卡顿。所以我的解决方案是,在Blender中创建一个基于几个相反面的平面(与Minecraft一样)的草,然后创建一个包含许多这些平面的草块,最后让PCG将这些平面放置在图块上,而不是单个草。最后,纹理是通过ChatGPT制作的,因为我发现一个简单的提示可以给我一致的结果(我只是需要战斗一下来生成透明背景)。
杂草遵循相同的原则,但由于它们并不像草那样密集,所以我不使用草块。然而,由于杂草通常具有更具体的形状,所以我发现TreeIt(免费或Steam上的$4如果你想要样本)很有效。使用ChatGPT制作纹理,然后将其放入TreeIt中的植物模型,然后将其导出为.fbx文件到UE5。
树也是使用TreeIt制作的。为了让工具的输出符合我的风格,我会使用ChatGPT来风格化和进行小幅修改现有的叶子纹理,然后将树模型替换为Free Stylized的树皮纹理,导出为.fbx文件并告诉PCG生成它。PCG会旋转和调整每棵树,所以即使只使用几个网格,也可以获得大量的变化。
如您所见,叶子也会随风摇摆。这是通过在材质上使用世界位置偏移来实现的,使用一个封装了Simple Grass Wind节点的材质函数。它甚至可以根据天气调整风的强度,但我还需要实现这个功能。
评论 (0)