簡體   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