众所周知,HoudiniUE4的结合,可以制作出更多真实酷炫的环境。下面艺术家达米安·拉帕(Damien Lappa)分享了有机环境项目:搁浅(Standing Project)的制作,该项目在HoudiniUE4中完成。



01
开始项目


该项目的灵感来自游戏:死亡搁浅。从游戏的简单屏幕截图开始创建,在这段过程中,我从其他地方获得了一些启发,包括现实生活中的图像以及其他诸如Doom Eternal,Ghost Recon Breakpoint或Far Cry 5的项目。


在Houdini和UE4制作有机环境


最终目标不仅是建立环境,而且还通过将Houdini和UE4相结合来创建和调整规则系统。



02
地形生成


对于大多数人来说,地形的创建需要多个步骤和调整,是一个比较复杂的过程。在创建更原始的东西时,可以使用Houdini,仅使用几组节点就能够生成任何详细的表面,从而从头开始创建基本地形。


我喜欢在程序生成过程中使用的一种技巧称为Pareidolia(空想性错视),也叫识别云中熟悉的形状。如果被困住并且不知道从哪里开始,就会产生噪音,大脑更有可能开始发现一些有趣的形状,这些形状可以构建为合成物。


此过程的起点是创建几个Heighfield节点,并保存为数字资产(HDA)。可以创建景观的基础,也可以随时返回该景观添加更多规则。这时可以根据坡度和曲率将第一个蒙版集成为图层。设置得越早,就越容易添加更复杂的逻辑,例如树木,路径或河流,还可以更加容易控制与调整遮罩。


在Houdini和UE4制作有机环境


UE4可以在没有任何纹理的情况下将风景蒙版与图层属性集成在一起,并在风景材料中使用其样本。在早期阶段,UE4不仅可以提供一个粗略的步骤,还可以在一个文件内将地形带到最终结果。


在Houdini和UE4制作有机环境


03
河系


创建景观基础后,我必须建立生成过程的第一套规则:河流系统。


如果对河流的基本创建感兴趣,可以查看Ben Schrijvers关于“地平线零黎明”中河流产生的演讲。有很多有趣的技巧可以添加到多个场景中。函数本身基于数字资产内部暴露的曲线,该曲线会自动适应位置。在项目中,我通过基本的固定随机宽度简化了河流,并通过网格对融合点添加了步进效果。它有助于快速概念化概念,并在以后重用它以添加更复杂的逻辑。


在Houdini和UE4制作有机环境


样条曲线生成的数据用于修改图层,以确保例如草永远不会在水下生长。在此基础上创建了一层新的湿润层,并在着色器内部分配了一层湿润层,通过添加一些常数来调整颜色的亮度和材质的粗糙度,从而为河岸增加了一些水分。通过在地面和河流之间形成交点,它不仅可以创建新的蒙版,排除规则并分散属于该区域的资产,还可以通过添加顶点颜色来显示网格内部的泡沫和位移来影响网格本身。UE4着色器。除此之外,借助SideFX Labs(以前是Gamedev Tool),设置流图就变得很简单。


在Houdini和UE4制作有机环境


流图是具有方向信息的纹理,该纹理基于影响着色器内部的UV的2个浮点/通道,从而带来流效果。就单个着色器中的可重用性而言,通过影响纹理和输出,将其设置为功能可能变得非常有用。使用带有顶点颜色的lerp作为混合的解释可以很容易地为运动添加所需的复杂性,例如像水一样具有泡沫效果。


在Houdini和UE4制作有机环境


如果对制作流程图感兴趣,可以到谷歌里寻找教程,介绍如何使用不同的软件解决方案来实现它,包括手工在Substance Painter中绘画。Houdini之所以如此强大,是因为对随机分散的资产进行更改时,向量的方向都会自动应用。



04
风景制作


在开放世界中,创造巨大的物体有时会变得非常繁琐。有很多方法可以修饰环境场景。其中之一是实例化预制资产,并使地形适应最终外观以创建令人难以置信的景观。另一种方法是使用过程生成!


悬崖的创作灵感来自Etienne Carrier关于《孤岛惊魂5》程序世界建设的演讲之一。这是Houdini在gamedev中多么强大的最好例子之一。为了生成坡度,我将蒙版从纹理转换为3D对象,然后将其拉伸,将背面保持为一组,以影响最终的网格以移除背面。在大多数情况下,要创建有机对象,可以使用基于体素的转换(VDB),根据UV添加由“Quixel Megascans”中的“高度图”纹理投影的位移。


在Houdini和UE4制作有机环境


我最近发现的另一个选择是使用SideFX Labs团队开发的Triplanar投影,该投影带来了简化的工具来构建更复杂的系统,并且如果需要,以后可以随时对其进行抛光。


用这种方法创建悬崖的主要缺点是独特和大型物体的数量。要将生成的资产导出到UE4,它需要通过Clip节点将网格划分为更多部分,以防止流式传输问题。结果是可以基于单个纹理使地形变得异常独特。


对于我来说,使资产像塔一样是最棘手的部分。创建具有未来派科幻色彩的形状有时可能是一个费力的过程,以找到适合环境的合适轮廓。


最初,我的意图是手工制造资产,但是通过反复试验,我找到了一个有趣的解决方案。这个过程从生成一个形状相似的虚幻城市开始,然后我从其他随机片段中选出了我最喜欢的城市。


在Houdini和UE4制作有机环境


该过程主要由两个节点的组合构建:Polyextrude,具有基于每个图元的随机顶点颜色的附加属性,以及SideFX Labs开发的Lot。我决定将其余未选择的城市形状放置在很远的地方,以添加其他轮廓。



05
雾和云


Houdini最大的优点之一就是处理大量音乐,不需要任何高级技能就能制造云或雾。只需找到合适的形状并将其转换为云,然后将结果渲染为纹理即可。


首先,足以从基础网格物体开始直接创建一个体积,并在其空间上散布点。由于雾是由复杂的空气流组成的,因此这种网格的组合被重塑为一个体积,在这里我开始通过VOP添加采样噪声以模拟其效果。


在Houdini和UE4制作有机环境


另一个选择是使用简单节点,例如“云”和“云噪声”,可以堆叠一些VOPS,添加“湍流”或“抗锯齿”噪声并相互混合。


我在UE4中使用雾的方式基本上是使用简单的不发光的半透明着色器定位平面,并使用我在Houdini中的Mantra中渲染的图像作为纹理进行设置。


回到流程图,这是一个很好的例子,说明如何重用基本数学函数以在环境中添加更多动态特性。对于场景,我已经使云层变暗。


在Houdini和UE4制作有机环境



06
散射物体


在准备好所有资产的这一刻,我结合使用了Houdini通过HDA在UE4中的散射系统和内置草皮系统,将基于蒙版的微型道具带入景观材料中。


开始在一个数字资产中的两个应用程序之间使用数据时,计算更改的时间可能变得非常大,尤其是如果最终想要稍微调整基准时。对我来说,解决方案是使用文件缓存将系统分为多个数字资产,以在每个HDA中存储和更新结果。


在Houdini和UE4制作有机环境


缓存文件提供了存储大量资产数据的选项,可以在UE4和Houdini之间建立交互。我决定不引用资产的ID,而是决定通过“对象合并”节点将其直接应用于UE4。如果要直接在Houdini中显示它们,则处理分散在其中的实例可能会变得很棘手。公开文件缓存选项是携带元素并将其添加到地面投影的一种好方法,或者使它们成为流图的障碍并为河流添加其他顶点颜色。当设置了中型和大型资产时,我决定坚持使用UE4中的一个称为“景观草类型”的功能,该功能用于设置卵石或苔藓簇之类的微观细节,并将其分配给主景观着色器中的图层样本。设置非常容易,如果具有遮罩数据,剩下的事情就是分配正确的资产。


在Houdini和UE4制作有机环境


我有时注意到的一个常见错误是视觉信息的大量过载。当您展示这么多微型道具时,需要关注噪音。现实生活中充满了微小的细节,但在游戏世界中,有时需要给出一些更大的比例,以免出现混叠效果或临时抗锯齿(TAA)消耗像素。



07
场景组装


因为我的目标是专注于Houdini和UE4结合操作,所以我主要使用Megascans资产来组装场景。建立Megascans扫描程序,使用可访问的扫描资产可以使大家专注于项目制作。


尽管生成了网格,但我使用的大多数资产都直接来自UE4中的Icelandic库。UE4和Megascans之间的桥梁提供了导出选项,还提供了一些基本功能,该功能可以在一秒钟内预览结果,然后使用自己调整的参数(例如像素抖动偏移)替换为着色器。


最后,我只使用了一些着色器。最复杂的是针对“风景”和“河流”,其中纹理之间的转换最丰富。其余的是基本的PBR或Unlit Translucent。



08
照明和后期处理


建立灯光和后期处理非常具有挑战性。颜色分级可以改变整个情绪,或者使一些隐藏的元素讲述更多故事。我尝试使用“光源”尽快设置普通光源,并通过调整“指数雾”来试验整体情绪。


在某些情况下,仅拥有一个来源是不够的。在场景中,我使用了柔和的点光源,将温暖设置为D50,而不是D65的整体温度,从而在形状之间添加了更多的对比度以在构图内进行引导。


在Houdini和UE4制作有机环境


我更喜欢尽量减少后期处理,仅调整色彩的饱和度并在需要时增加一些对比度。值得一提的着色器称为锐化。我用它来带回TAA采取的一些细节。这是最便宜的抗锯齿方法之一,但是它的约束是由于模糊小像素而丢失了一些细节。




更多文章推荐:


1、UE4场景制作流程:Claymore


2、在UE4中制作水下洞穴环境


3、如何使用UE4制作3D环境


4、在Houdini和UE4中创建电影


5、视觉特效分解:UE4中的闪电法术

,Unreal Engine技巧,Unreal Engine教程