育碧GDC2018程序化大世界生成 孤岛惊魂5
创始人
2024-11-28 04:28:09

在这里插入图片描述

1.传统手动绘制森林的问题

采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这个操作很繁琐。并且如果是多个人在迭代地形,不能保证每次森林生成的质量。

在这里插入图片描述在这里插入图片描述

2.使用程序化生成管线

解决办法和标准:
1.开发全局控制工具。
2.自动生成的森林符合地形拓扑结构
3.整个管线自动化
4.用户友好
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.工具

2.1淡水工具

2.2篱笆和电线工具

2.3悬崖和陡峭表面工具

2.4植物(撒点)的生态系统工具

2.5雾气浓度生成器

2.6基于地图的地形生成器(带微型树木撒点工具)
在这里插入图片描述

4.如何使用工具填充世界

4.1使用Dunia的编辑工具构建地形
在这里插入图片描述

4.2使用曲线&样条来绘制河流网
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

4.3植被刷
粗粒度的笔刷在地形上刷植被。最后程序化生成。植被的生成遵循很多的规律。比如:高海拔的树木较小且稀疏。水体旁边的生态系统。植被不会在悬崖侵蚀线上产生。
在这里插入图片描述
在这里插入图片描述

4.4细节笔刷,可以让美术清除任一区域的某种生物。

4.5绘制道路。道路绘制好后,会重新烘焙生态。

在这里插入图片描述

4.6改变地形贴图的笔刷
在这里插入图片描述

4.7篱笆
通过输入样条来创建篱笆。可以选择不同的篱笆种类。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.8电线杆
样条输入生成电线杆。相邻的电线杆会自动连接。电线杆生成好后,刷新树木就会解决树木可能会和电线杆重合的BUG。
在这里插入图片描述

4.9调整地形

在湖中心生成了小岛,和改变了地形。然后重新生成了植被。

在这里插入图片描述
在这里插入图片描述

5.怎么做?

5.1实现了houdini引擎到Dunia引擎之间的通信。

在这里插入图片描述

一些输入会通过Python脚本从Dunia发送到Houdini中。
1.世界的信息(世界的名字和大小)
2.文件路径
3.地形区域(想要程序化生成的区域)
4.样条和形状的元信息作为几何属性

通过文件从Dunia到Houdini:
1.高度图
2.生态分层
3.2D的地形遮罩
4.houdini程序化工具生产的几何体
在这里插入图片描述

地形与地形区域划分密切相关。用户可烘焙地形的最小的粒度是64x64。所以这里可以只烘焙64x64的区域。保证别的区域不变。
在这里插入图片描述
在这里插入图片描述

houdini中输出的资产:
1.点云
2.地形贴图
3.地形高度图
4.2D地形数据用RGB或者灰度图存
5.几何体
6.地形逻辑区域(地形Mask)地形的ID图,用于环境预设和后处理

全都单独存下来,然后让用户自己加载。避免一次加载太多,导致太占内存。

在这里插入图片描述

在这里插入图片描述
点云包括:植物,岩石,收集品,贴花,特效,预制体,甚至是环境中适合的动物。
这些点会包括每个物体的资产ID。

工具的使用顺序也很重要,因为上一个工具的产出会影响下一个工具的计算。

在这里插入图片描述

6.峭壁工具

在这里插入图片描述

这部分会介绍
1.以前的技术
2.工具输入
3.分层
4.几何形状
5.着色方法
6.地形数据
7.侵蚀
8.植被生长表面
9.导出数据

之前的技术约等于0,之前都是手动摆放的岩石。
在这里插入图片描述
在这里插入图片描述

从斜率开始,筛选出陡峭的地方,然后删除低于阈值的表面。这里的陡峭也符合游戏的逻辑,这些表面是不允许玩家通行的,所以也要给玩家相应的视觉效果。
在这里插入图片描述

因为斜坡是从地形拉伸的,所以三角形也被拉伸得较大。这里使用remesh解决得到规整的三角面。
在这里插入图片描述

真实的地形中有可见的水平线条是地形分层。是由沉积岩和土长时间的作用形成。
在这里插入图片描述

做了一个将输入的几何体分割成多个地层的工具。

每个地层都有随机的厚度,并分配一个地层ID。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

使用houdini对不同角度的地层界限做噪声。并把输入的峭壁分成了两个模型。将两组峭壁应用不同随机种子的地层工具,就不会显得很规整,比较随机。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

目前的模型还是高模,然后会减少三角形的面数。导出时会对峭壁部分份模型,每个Sector一个Mesh。主要是为了游戏的加载。
在这里插入图片描述
峭壁的渲染
这里峭壁没有顶点色信息,为了减少峭壁模型的内存开销。
在这里插入图片描述
在这里插入图片描述

模拟流动来扩展峭壁的范围。会进行峭壁的撒点,但是原来的地形颜色会保留。这部分撒点会以点云的形式导出。
在这里插入图片描述
在这里插入图片描述
从峭壁遮罩创建峭壁材质ID。使用噪声将两个峭壁贴图混合,为了消除贴图的重复感。
在这里插入图片描述

峭壁中也有可行的路径,会算出可行的区域,简单检测上方是否有遮挡物,或者直接用RAY cast。就会有了峭壁边缘上也有植物生长。
在这里插入图片描述
在这里插入图片描述

最后导出的数据有:
几何体,碰撞体,岩石和植物的点云,地形贴图ID,峭壁颜色和峭壁遮罩。

在这里插入图片描述
在这里插入图片描述

7.生态工具

在这里插入图片描述

7.1从各种贴图来生成地形

生成了遮蔽、流动、坡度、曲率、照明信息(有时候也作为坡向)。还会生成诸如海拔、经纬度、风向图。
这些属性会作为生物计算的基础。
在这里插入图片描述

从磁盘加载的贴图,就知道了用户绘制的数据和以前生成的结果。
在这里插入图片描述
用户绘制的区域是一个大区域,算法中会分为主生态和次生态去生成。
主生态覆盖了75%到85%的大部分世界。而次生态会基于非生物的地形信息。

比如:在用户架设电线时,用草地替代(穿插部分的)森林。
在这里插入图片描述

次生态的生产线。比如:树木->树苗->灌木->草。
在这里插入图片描述

这个HDA会对植物撒点,修改和创建地形数据,定义每个物种的生命力。
在这里插入图片描述

每个物种适应的环境不同。在不同的区域优势种不同。这些都可以通过一些属性计算得出。
在这里插入图片描述
为了算出物种之间相互的对抗,引入了半径。
如下图:物种A的生命力高于物种B。当物种B出现在A的半径中的时候就会被标红(也就是被移除)。这是同级树木的情况。
在这里插入图片描述
物种A树下可能会有灌木,草等。所以引入了优先级和优先级范围。
如下图,A生物的优先级范围比它的生命力范围小了很多。同优先级的物种再用生命力来评估。
下图的黄色生物(灌木)的优先级最高,就可以在树木下生长。如果不想让灌木长得离蓝色树很近,就给他一个较大的优先级范围。

在这里插入图片描述

不同的遮罩相乘(峭壁,山路,等等规则),以及使用噪声,来达到一个趋近自然的生命力数据。
在这里插入图片描述
地形也会影响树木的大小。
在这里插入图片描述
在这里插入图片描述
小树,树苗多在森林的边缘。大树,老树多在树林的中心生长。海拔也会影响树木的大小。(大小指:不同高度,年龄,大小的树木资产)
生命力也会与大小挂钩。
在这里插入图片描述

大小阶层之间的树也有一个可调整的过渡。同阶的树也有一个可调整的随机。
在这里插入图片描述
这里树也分为了活树和枯树。可以调整两种的比例。
在这里插入图片描述

林冠和生态演替:
就像之前说的大树常在树林中心,小树常在树林边缘。但中间也可能生长小树。
在这里插入图片描述
生命力的图也不是平滑的。所以引入了“年龄”的变量。
年龄可以与生命力的属性相乘或者插值。
调整年龄的插值就可以调整边缘的影响级别。通过调整年龄sdf的最大年龄距离就可以控制森林边缘的形态
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

调整树林的密度
如果密度很大,小树可能合适,但是大树就会有穿插重叠。撒点数也和性能相关。所以需要严格控制这点。
在这里插入图片描述

简单的Ramp可以控制
在这里插入图片描述

颜色的变化:
如下图使用水体SDF作为Ramp的基础,来制作水边草地和潮湿土地的效果。
在这里插入图片描述
在这里插入图片描述

这里的坐标轴的前向都是对准坡度方向的。就可以使用这个坐标安放草的资产。
草的方向就会受坡度的影响。
这里的坐标会有一个值调整受坡度影响的程度。
也会有随机,让每个坐标不同。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述山坡上的树也会倾斜,但还没有在游戏中实现。在这里插入图片描述
同时,草还受风向图的影响。
风是基于全局的,也会在局部区域进行细调。
在这里插入图片描述
以这棵树为例,他的生成影响了地形,周围抬高。地形贴图,地形上覆盖着松针。影响了地上的物体(松果和树枝),树荫抑制或者促进树下植被的生长。
在这里插入图片描述
为了达到这些效果,做了这样的操作。

在这里插入图片描述
1.地形变形
通过密度生成遮罩,得到了遮罩就可以抬高树木的根部。

在这里插入图片描述在这里插入图片描述
2.地形贴图
为了让树根和地形完美的贴合。
根据密度得到遮罩,然后选择贴图的种类和数量。来在遮罩上得到地形最后的样子。
在这里插入图片描述
在这里插入图片描述
3.地形数据Output
为了让树木旁边有受树木影响的物体。这一步对地形添加来自树木的新属性。这里的遮罩会保存下来。影响岩石等等的生命力。
在这里插入图片描述

森林边缘的遮罩,为了在森林边缘播撒其他资产。
还可以在这步创建幼苗来模拟生态演替。
在这里插入图片描述

4.地形颜色(会和地形贴图混合的颜色)

地形的湿度会影响到地形的颜色。湿度对受很多因素影响(树木,峭壁,坡度…)。

所有的地形和程序化贴图也会反应在草的表现上。因为草的Shader会获取地形的颜色,然后和地形颜色的混合程度可以通过草的遮罩来控制。

在这里插入图片描述
最后是导出的资源:
在这里插入图片描述

8.一些改变的计划

1.笔刷的改变

最开始,生态工具支持柔和笔刷。为了把多个生态融合在一起。
在这里插入图片描述
但表现并不好,因为很多的生态被错误的融合了。左图只有3个生态,但最后的结果很难看出到底有几个生态。
所以一次性的区分好生态是利于调试的。
在这里插入图片描述

2.地形数据

地形非生物信息的生成。
一开始是用一个按钮来单独生成。但发现用户不知道多久去生成地形数据。很多修改可能不需要再去生成这个数据,还是去做了这一步。或者地形改变了就需要玩家去做这一步,但是没有做。这一步也增加了整个流程的不畅通性。
最后就讲这步的数据融合到了需要数据的地方。
在这里插入图片描述

9.总结

在这里插入图片描述

9.1能力越大责任越大

9.2设计好优雅的工具才能创造可能性

9.3保持简单

很多系统都被过度设计,一开始就设计好所有的规则,对所有的东西有个清晰的认识,然后清理,简化,让系统简单。

9.4倾听/观察用户

比如:地形中会自动生成河流,但是美术师们更喜欢手动修改地形并放置河流。

9.5更灵活

最开始的计划并不总是最好的、

9.6需要在控制和自动化之间保持平衡。

很多系统之间是相互独立的。减少一个地方的修改别的系统也会跟着变的情况。
减少手工的工作量就是自动化工具的目的。

相关内容

热门资讯

欧式家具配安信欧洲枫桦地板怎么... 欧式家具通常具有浓郁的古典气息与精致的工艺,造型复杂且富有艺术感。安信欧洲枫桦地板与之搭配非常相得益...
木衣柜里放的衣服搬家公司给搬吗 搬家公司的服务范围通常包括搬运木衣柜里的衣服。一般来说,搬家公司的主要任务是将客户家中的物品从一个地...
大自然欧洲枫桦地板怎么样,质量... 大自然欧洲枫桦地板具有诸多优点。其纹理美观自然,如同欧洲森林的画卷在地板上徐徐展开,能为家居增添独特...
为什么我的衣柜有一面板已经两年... 我的衣柜有一面板,都已经两年了,却依旧散发着味道,每到下雨天的时候味道还会变得更加明显。这很可能是由...
想要一个质量好一些的地板,安信... 如果你渴望拥有质量上乘的地板,安信枫桦地板是个值得考虑的选择。安信作为知名品牌,在地板制造领域拥有良...
大自然实木系列分为? 请提供一下关于“大自然实木系列分为”的具体分类内容等相关信息,这样我才能根据这些内容写出200字左右...
电视墙微晶石用什么石材做线条好... 电视墙微晶石可搭配多种石材线条以增添独特魅力。若追求奢华大气,天然大理石线条是绝佳之选。像米黄大理石...
暧气片中刷的非全属漆是什么漆。... 仅根据这一句话很难确切判断暖气片里刷的非金属漆是什么漆。不过,常见用于暖气片的非金属漆有水性漆。水性...
大自然柞木地板好不好?或者购买... 《关于大自然柞木地板》大自然柞木地板有诸多优点。柞木质地坚硬,使得地板结构稳定,不易变形,能适应多种...
哪种墙布的品质好呢? 请提供一下关于墙布的相关内容呀,比如不同墙布的材质、工艺、功能特点等方面的信息,这样我才能根据内容描...
露台不锈钢的栏杆配何款灯具合适... 露台不锈钢栏杆高度为1.25米左右,在选择灯具时需要综合考虑美观性与实用性。墙灯是不错的选择,简约现...
装修地热管材品牌有哪些 以下是一些常见的装修地热管材品牌。一、伟星知名度伟星是国内知名的管材品牌,在水暖管材市场占据重要地位...
苹果贵族衣柜有没有网购 《苹果贵族衣柜网购情况》苹果贵族衣柜在销售渠道方面是有网购途径的。随着互联网商业的发展,众多家居品牌...
暖气片多少钱一柱 《关于暖气片价格的描述》暖气片的价格一柱多少钱并没有一个固定的数值。其价格受到多种因素影响。从材质上...
立邦漆涂过的房间多久能睡 立邦漆涂过的房间多久能睡取决于多种因素。如果使用的是立邦净味系列等环保性能高的产品,在通风良好的情况...
怎么办法去除新装修房的油漆味 新装修房的油漆味刺鼻难闻,可通过多种办法去除。首先,通风换气是关键,打开窗户让空气充分对流,加速异味...
世茂东外滩卧室阳台是赠送的吗? 《世茂东外滩卧室阳台是否赠送》在世茂东外滩的房产信息中,关于卧室阳台是否赠送存在疑问。一般而言,不同...
一间教室长8米,宽6米,每块地... 我们首先要计算出教室地面的面积。教室是一个长方形,根据长方形面积公式:面积 = 长×宽,教室长8米,...
客厅挂结婚照好不好 《客厅挂结婚照的探讨》客厅挂结婚照有诸多好处。从情感层面来说,结婚照是爱情与婚姻的美好见证,挂在客厅...
我家厨房位于西北角,我把厨房弄... 我家的厨房处在西北角这个独特的位置。我精心地将厨房布置成充满活力的黄色,那明亮的色彩让整个厨房空间都...
帖完壁纸如何去除胶味 帖完壁纸后胶味常常令人不适。首先要保持室内通风,这是最基本也是最有效的方法。可以打开窗户,让新鲜空气...
卓誉瓷砖是品牌吗 《卓誉瓷砖是否为品牌》卓誉瓷砖是一个品牌。在瓷砖市场中,卓誉瓷砖有其独特的市场定位和产品线。它拥有一...
齐圣腾飞磁砖600x600价位 《齐圣腾飞瓷砖600x600价位》齐圣腾飞瓷砖的600x600规格产品在市场上有着多样化的价位区间。...
美剧中房间里的慢速吊扇是怎么回... 在美剧中,房间里的慢速吊扇常常具有独特的表意作用。慢速吊扇缓缓转动,首先在视觉上营造出一种慵懒、闲适...
不通风的房间只有一个风扇,朝里... 在不通风的房间仅有一个风扇时,朝外吹降温更快。这是因为不通风的房间内空气相对封闭,当风扇朝外吹时,能...
客厅小适合做仿大理石背景墙吗 客厅小是否适合做仿大理石背景墙需要综合考量。从视觉效果看,仿大理石背景墙有很强的装饰性,能瞬间提升客...
卫生间贴瓷砖是先贴墙壁砖,还是... 《卫生间贴砖顺序之探讨》在卫生间贴瓷砖时,先贴墙壁砖还是先贴地砖是一个有讲究的问题。如果先贴墙壁砖,...
餐厅挨着卫生间的门好吗 餐厅挨着卫生间的门不太好。从卫生和气味方面来看,卫生间是容易产生异味和滋生细菌的区域,即使卫生间保持...
白墙有甲醛吗 《白墙是否有甲醛》白墙可能含有甲醛。在建筑装修中,白墙如果是使用乳胶漆涂刷的,部分乳胶漆可能会释放甲...
乐美客瓷砖怎么样 《乐美客瓷砖》乐美客瓷砖有诸多值得称道之处。其在品质上表现出色,瓷砖的硬度较高,耐磨性能良好,能经受...