2017-04-05 79 views
0

我遇到了麻煩,找到了將真實性添加到地形生成器的最佳方法。在這一點上,我有一個完美的洪水填充,但如果我想添加任何類型的現實主義,我將需要添加高度變量。我已經看到了下面的方法企圖使高度圖:用現實高度地圖生成地形

現在,我通過我的顏色填充生成板,但我不知道該從哪裏出發。

我不確定使用噪聲函數,僅僅是因爲我需要在大陸內生成生物羣系以使其看起來很現實(一個只有山脈的大陸將是不現實的)。鑽石平方算法可能不適合我的需求,因爲我想在確定尺寸時靈活。

生成高度圖的最佳選擇是什麼?如果我有方形瓷磚來提供一些真實感,而不是非常耗費資源,並保留我擁有的代碼?

這裏是產生的圖像,並生成代碼在Github上項目: https://github.com/Hunterb9101/TileWorkspace/blob/59fe1f28f019d7128c970772d1ef6bd30d63072c/Generation.png

回答

0

tldr:我會用一個柏林噪聲的產生與一些上漲了生物羣落。

這個article/tutorial覆蓋了代碼片段及其實現方法。爲你的任務建議最好的算法完全取決於你的技能和最終結果目標。

Perlin雜的但是一個簡要說明,並用它充分考慮現實的目標...

與大多數地形生成,隔音的功能是你的朋友 - 培林和/或在特定的單面噪音。我已經實施了一些 行星地形生成算法,儘管它們在2d, 中,所生成的高度/「紋理」圖可以相當容易地投影到球體 。我假設轉換爲十六進制格式也不是 的問題。

我的技術一直在創建多個噪聲層,例如,溫度 和溼度。溫度與緯度座標融合在一起,爲了使赤道更加熱和極冷,而噪音 確保它不是簡單的梯度。最終的地形類型是 ,按照「如果炎熱而不潮溼然後挑選沙漠」等規則選擇。您 可以看到我的JavaScript實現的這個位置: https://github.com/tapio/infiniverse/blob/master/js/universe/planet-aerial.js

對於含水率,你可以調節水位 高度噪音的功能往往有一個恆定的平均。另一個 選項是應用指數過濾器(在生成 雲時也很有用,請參閱此處的實現)。

生成球形地形的另一種方法(未經測試 )是使用3d噪聲並從球體表面對其進行採樣,使用結果值作爲該點的地面高度。你可以根據行星上的水量和 緯度座標來加權。

我會鏈接到一個實際的實現3D行星 地形生成的結束: http://libnoise.sourceforge.net/tutorials/tutorial8.html

要生成逼真的地形,任何隨機的風格,你將不得不使用某種類型的噪聲。在過去的項目中,我自己使用了菱形方塊算法。但是,這只是生成高度圖。

對於一些更多的光讀,我會檢查出this關於現實地形技術的文章。

+0

嗨,謝謝你的幫助,讓我走!我一直在努力嘗試構建perlin噪聲函數(因爲它比單工更容易實現),但我一直在遇到一些問題。我會保存這個問題的另一個問題,但謝謝你的幫助! – Nerd9101