GDC翻译:Far Cry 5 的程序化世界生成(第二部分:6-崖壁工具)

下面来看崖壁工具。
在这里插入图片描述
这个工具的目的是在大型地形表面上生成崖壁几何体,它作为地表之上一个具有更多细节的“皮肤”。

总览

这部分的演讲内容很大,所以我将给出这部分的总览:
在这里插入图片描述

以前的技术

以前:
在这里插入图片描述
这是一张FarCry5 的截图,在没有使用崖壁技术的情况下:
在这里插入图片描述
这是在地形上加了崖壁几何体之后:
在这里插入图片描述那么这是怎么工作的呢?

工具的输入

在Houdini中,我们使用了地形的斜率属性,以它为起点。然后删掉所有斜率低于某一个阙值的表面。这就构成了我们崖壁的几何输入。
在这里插入图片描述

另外,这样做也很有趣。因为它也扮演一种玩家的视觉线索,它提示了玩家哪一种地形是太陡峭而无法走过的。而这个斜率就是我们用来生成峭壁的正确的阙值。

由于我们是从地形拿到mesh的,所以mesh自然会在斜坡上有拉伸,就像我们这里看到的:
在这里插入图片描述
我们通过remesh来得到一致的三角形。

地质分层

还有个有趣的现象我们想用这个工具重现:地质分层。
在这里插入图片描述

它们是岩石和土壤随着时间堆积而形成的,明显可见的水平线。

每个地层都有一个随机的厚度,它将为每个切片分配一个地层ID。地层ID可以用来随机化地层颜色作为一个调试试图,就像我们在这里看到的:
在这里插入图片描述

然后在编辑器中,我们也有用来控制地层角度的预设。用户将通过绘制在地形上的RGB输入来控制它们,Houdini将使用它来驱动地层角度参数。
在这里插入图片描述

结果是,我们得到了三个不同角度的地层线:
在这里插入图片描述

我们选择的角度是与我们的地形最匹配的。
但是就像看到的这样,地层的线条看起来太工整了,不自然。因此为了摆脱这种现象,我们做了一些别的事情来制造一些混乱。
在这里插入图片描述

所以首先我们生成一个噪声,用来将输入分成两组。为了得到更大的分块,我们的噪声将先产生在较低的分辨率上,随后再被转换到较高的分辨率上。

利用这个噪声,我们将崖壁分成两组,就像这样:
在这里插入图片描述

然后我们对两组分别使用了不同的Seed来运行地层工具,这样就打破了之前工整的地层线。
在这里插入图片描述

现在,几何体已经准备好来产生一些体积了。

形状

所以,每个地层都以不同的厚度挤出,然后使用组合的置换贴图进行位移。
在这里插入图片描述

在这个状态下,几何体仍旧有很高的面数,所以我们做了一步优化的操作,减少三角形数目。
在这里插入图片描述

然后,在导出之前,几何体也被分割成几个单独的mesh,精确来说就是每个Sector一个。这是为了更好地加载和streaming。下图每个颜色代表了一个Sector:
在这里插入图片描述

注意,我们实际上并没有在这一步对几何体进行切割。由于每个三角形都知道自己所属的Sector是哪个,所以我们就用这个信息来划分mesh。

以上就是崖壁的mesh部分。但崖壁工具还有其他很酷的功能。

着色

在继续之前,我需要解释一下我们的崖壁在游戏中是如何着色的。我们使用的我们称之为“崖壁着色器”。你们中的一些人可能已经看到了我的同事昨天关于FarCry5地形技术的演讲。如果感兴趣的话可以看看,应该能在Vault上找到。

在这里插入图片描述

不管怎样,这个着色器所做的是将物体渲染在与地形相同的Pass上。所以崖壁将使用它正下方的地形的纹理。所以如果我们在崖壁下面有草,则崖壁也会部分有草纹理。因此为了避免这种情况,我们需要确保挤出的崖壁的正下方也是崖壁纹理。

地形数据

出于这个原因,我们使用最终挤压出的崖壁mesh,来重新投射一些属性回地形上。
在这里插入图片描述

所以我们做出了崖壁mask,还转换了地层属性。

从我们刚刚传输的地层属性中,我们首先生成一个颜色层,它将在世界中创建出一种宏观的色调变化。
在这里插入图片描述
值得一提的是,这种颜色本来也可以存到崖壁mesh的顶点色上,但我们没有这样做,原因有两个:

  • 首先,我们想要即便是在很远的距离上也保持住地形的颜色,而崖壁mesh在距离很远的时候是不会被加载的。
  • 另外,我们也希望能尽可能地减少崖壁mesh的存储空间。

另外值得一说的是,我们已经有了一个“颜色修改层”在地形上,因此我们可以直接将颜色合并到这一层上。

崖壁侵蚀

然后,从我们转移到地形的崖壁mask中,我们通过运行流动模拟进一步对其进行扩展。 分散在崖壁表面的点会沿着斜坡向下流动,从而产生侵蚀效果。 侵蚀区域保留了原始地层颜色。
在这里插入图片描述

然后,使用这些侵蚀数据,我们还在地形表面上散布碎石。
在这里插入图片描述

它们会作为点云在之后导出给编辑器。

地形纹理

然后,我们从mask中生成地形纹理ID。
在这里插入图片描述

我们还使用噪声来混和两个不同的崖壁纹理,这么做的目的是为了摆脱纹理的重复平铺现象。

植物生长表面

工具的另一个特点是,我们可以在合适的崖壁表面上散布植被。
在这里插入图片描述

为了找出哪个表面是可行的,我们将朝上的表面分离出来,并简单地检查其上方向上是否有障碍物。
在这里插入图片描述

可以看下游戏中的效果:
在这里插入图片描述

导出

最后,这是导出到编辑器中的数据:
在这里插入图片描述
这是游戏中一些有趣的程序化生成崖壁的截图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值