游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1214|回复: 0

游戏程序化生成技术研究:植被生成规则

[复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2019-12-20 10:34:08 | 显示全部楼层 |阅读模式

image002.jpg

影响植物生长的因素:

海拔:海平面以上的高度。随着海拔的升高,环境会变得更加恶劣。所有的植物都有一个生存的高度上限。植物也会随着海拔的升高而变小。

相对高程:指高度的局部变化,负值表示山谷,正值表示山脊。山谷通常更潮湿,也更隐蔽。山脊则更容易暴露在自然环境中。不同植物有不同的喜好。

坡度:地形的坡度直接关系到土壤的肥沃程度以及保水性。陡坡往往有小灌木和草覆盖。非常陡峭的斜坡往往是裸露的岩石,没有植被。

坡面朝向:坡面的方向决定它在每一天接收多少个小时的日光。被山体遮蔽或暴露在风中。

一些植物和生态系统也表现出与上述4个变量无关的行为。其一是生殖行为,掉籽或根部发达的植物往往表现出很强的群体行为。可以使用分形噪声函数去影响生态系统的相关概率及植物的密度分布,来模拟这种行为。

采用四叉树结构进行分层解算,每层都计算一种特定类型,最后进行互相影响

TileSize越小,对应的种类分布复杂度越高,比如:小型植物

而TileSize大的,可能一整个区域分布都差不多


image004.jpg

生态系统中的每一层都包含以下各项:

1.代表典型地表覆盖物的纹理。这用于构建渲染时覆盖在地形上的纹理。比如草纹理。

2.该生态系统中可能存在的目标清单。这包括:

-对象的类型(也可以定义像岩石这样的物体,只要它们具有自然分布)

-物体密度,与噪声一起使用用于确定特定区域中的对象数。

-尺寸和颜色变化信息。这用于生成对象外观的变化,在使用广告牌渲染树时尤其有用。

3.下一层上所有可能的层的列表,见下。

生态系统是由可能的生态层组成的,每一层定义下一层的所有可能性。虽然草原上根本没有树,但部分草地繁茂地区也可能有。由于对阳光的竞争,有许多植物的层下面会有稀疏的层,而很少有植物的层下面会有更密集的层。

image006.jpg
一种可能的层级关系

计算坡度:


image007.jpg

计算完后要归一化


image008.jpg

坡度变化率

反应主要阳光照射量、降雨量和风量等条件


image009.png

skewX,Y分别为slope在xy上的变化量

这个变量用来干扰高度图,不会直接参与最终计算。坡度变化率高对植物的影响其实相当于高海拔条件。

综合计算生成权重


image010.jpg

每个生态层都有针对海拔,相对海拔,坡度的最大,最小,平滑值。去决定生成率。

最大,最小边界处生成率为0.5

AVS (最大+最小)/2

Range (最大-最小)/2


image012.png

当value恰好位于中间时,X为0。最大值和最小值处为1

生成率W计算:S为边界平滑度

image013.jpg


测试用例:

image015.jpg


image017.jpg


上图左展示了生成的放置图

image018.jpg


ref:Modeling of ecosystems as a data source for real-time terrain rendering

作者:风和雨林
专栏地址:https://zhuanlan.zhihu.com/p/90199995

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-3-29 14:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表