[Translate] Procedural World Generation of ‘Far Cry 5’ | [译]孤岛惊魂5中的程序化场景生成

来自GDC2018的Talk:Procedural World Generation of ‘Far Cry 5’

主讲者 Etienne Carrier,法国人,Ubisoft Montreal的TA,之前在Frima Studio担任TA.

主要展示的是FarCry引擎DUNIA2中场景编辑流程和其中Houdini制作方法. 个人比较有用的是pipeline方法和细讲的两个工具:Cliff Tool和Biomes Tool

1.工作流程

工作是以基于高度图的Terrain为基础的,在其上可以制作水域/道路/栅栏/峭壁/植被/雾气/世界地图

美术的一般工作流程是:
1. 生成Terrain地形
2. 一键生成峭壁
3. 画一下水的范围然后生成
4. 刷biomes,biomes是一套贴图/植被的组合
5. 之后放路放电线杆放房子
6. 拜访资源,刷biomes
后期编辑的时候是非破坏性的
1. 先刷地形
2. 重新生成峭壁和Biomes
因此美术需要做的是:细刷地形,摆房子道具,刷Biomes。省去的步骤是刷地表贴图和摆放植被,这部分已经组合在Biomes里了。

2.Pipeline

依赖Houdini Engine,前文甚至讲到他们有专门的多个build机每晚重新生成场景数据。。。

引擎输出一些资源路径,地块信息,biome分布图和一些mask;倒回来是高度图和材质分布图,一些点云数据之后根据点云在引擎里实例化东西:可以是植被,石头,Decal,特效等等

3. 峭壁

主要为了搞Strarification,拆峭壁的mesh然后remesh是容易想到,但他们居然真的把模型横着切了。。。。

切完还随机按噪波分了两组,估计是不让横向线条太明显,切成的碎块还要挤出减面。。。。

再上个顶点色把给贴图加点横向线条的颜色

shading方式在另一个talk:Terrain Rendering in ‘Far Cry 5’里讲了,大概是一个简化的triplannar

如果纯triplannar再加贴图混合的话,那得48次贴图采样,开销太大了

所以一个疯狂的主意,stochastic blending,这样混合的时候采一次就行了

虽然效果可能有点瑕疵吧但还能接受,最重要的是减少了不少采样次数。

嗯还会模拟峭壁冲刷出来,在下面放一些石头。。。

导出的时候,峭壁是单独的几何体(会切进sector),另外还有一些点云啊mask啥的

4. 生态群落(Biomes)

似曾相识,去年的Horizon Zero Dawn也是这个思路,不过Horizon没用Houdini,biome的组合直接节点式工具集成在引擎里美术可以自己做,而FarCry得TA在houdini里调配置,烘进引擎。

原始数据是来自terrain的一堆蒙版

美术在引擎里编辑的东西是以蒙版的形式导入Houdini的

每一个Biomes里会存Sub Biome,比如mountain这个biomes里有 mountain trees, mountain grass. 每个biome在houdini里就是一个节点(他们叫Recipe),里面包含了植被资源的分布设置。

植被会有竞争,因此设置了一些priority参数,Horizon那个好像更复杂一点

大小跟attribute的大小关联,可以曲线拉profile

混合比例可以调整

tint颜色也可以ramp出来

树根的地形会略有起伏,metaball一个蒙版出来然后ramp一个profile结合进去就行

ok地面也是有tint颜色的,不过大部分地表不都被instancing植被覆盖了这些看的到嘛

5. 结论

其实最牛逼的组早就把Procedural工具都集成在引擎里了,像Guerrilla的Horizon,Ubisoft的Ghost Recon,Assasin。不过用Houdini Engine的好处是prototyping非常快,应该也就这两年才开始应用的比较多,也可以快速开发出来半引擎的Procedural系统出来,比较亲民,算是后发优势了。

比较遗憾的是远哭这个talk没讲城镇的生成,这都是Ghost Recon和Assasin集成在引擎里的东西,可能也是远哭没这个需求。所以从这个意义上来说,这个talk在技术上有一定启发意义但是并没有那么屌,真正有意义的是为我们讲了一条可行的结合Houdini Engine开发Procedural系统的操作教程。

GDC2018还有另一个Talk:Technical Artist Bootcamp Procedural Islands of ‘Dauntless’,是一个小团队用UE4结合Houdini Engine开发的talk,偏向非写实渲染,但是基本框架和这个talk很相似,都讲了pipeline,峭壁/biomes,point instancing。在下一篇中会讲到。

One thought on “[Translate] Procedural World Generation of ‘Far Cry 5’ | [译]孤岛惊魂5中的程序化场景生成

发表评论

电子邮件地址不会被公开。 必填项已用*标注