繁体   English   中英

我如何分配不同世界生成器的影响来生成地形?

[英]How do i distribute the influence of different world generators to generate terrain?

我对标题的申请是因为我不知道我的问题的正确术语。

我正在使用 Simplex Noise(8 个八度音阶)为我的地形生成高度 map。 为了让地形融合,我使用温度值和降雨值计算了哪个生物群落最适合该位置,并通过以下方式获得平方值:

Math.abs((biome.optimumTemperature-temp)*(biome.optimumTemperature-temp) + (biome.optimumRainfall-rain)*(biome.optimumRainfall-rain));

然后使用该值来获得对点影响最大的生物群落(仅测试 3 个生物群落),即1/(squared value) ,这意味着理想条件越接近,生物群落的地形控制就越多。 但我不知道如何使权重之和等于 1。

示例 1:

Biome 0: FOREST Weight:0.04317983014648879  
Biome 1: MOUNTAINS Weight:0.9954832102244979  
Biome 2: PLAINS Weight:0.06793829435632236  

这里,总和是:≈1,10660133,大于 1

示例 2:

FOREST Weight:0.01621210578957933  
MOUNTAINS Weight:0.023389024085188184  
PLAINS Weight:0.017797794332510785  

在这里,总和是:≈0.0573989242 小于 1

为了防止在biome.optimumTemperature = tempbiome.optimumRainfall = rain的情况下接近无穷大的影响,这意味着稍后它将变为 1 / 0(坏),我已将 3 个中的每一个的平方值限制为最大值 1。

我的问题是如何根据条件将影响分配到所有 3 个生物群系?

注意:如果一个生物群系与温度和降雨完美匹配,则它的影响力为 1 是可以的,但在这种情况下,其他 2 个生物群系的影响力应该为 0。

看起来你想规范化数字。 这是通过将每个数字除以总和来完成的:

double a, b, c;
double sum = a + b + c;
double normalizedA = a / sum;
double normalizedB = b / sum;
double normalizedC = c / sum;

这确保了新值的总和变为 1(加上或减去处理浮点数的任何舍入误差),同时保留不同数字的相对大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM