[英]C# perlin Noise
我已經閱讀了一些有關地形生成的Perlin噪聲的教程(例如本教程),我想確保自己理解並正確實現了它。
我從1維開始:
振幅=持續時間^ i //持續時間可以具有任何值,但大多數情況下為1或更低。 由於以下原因,它會以更高的頻率更改圖的幅度:
frequency = 2 ^ i // 2個效果,每個圖都反映一個八度,雖然不是100%必要,但是示例確實這樣做了
“ i”是我們正在查看的八度。
這是我的嘗試:
private float[] generateGraph()
{
float[] graph = new float[output.Width];
for (int i = 0; i < output.Width; i += 1/frequency)
{
graph[i] = random.Next((int)(1000000000000*persistence))/1000000000000f;
}
return graph;
}
我將數組想象成一個圖形,其中索引是X,值是Y。我為texture.Width / frequency的每一個倍數搜索一個值,直到數組結束。
我現在有一些隨機值,必須與線性插值/余弦插值或三次插值連接。 我應該使用哪一個? 當我想將噪聲用於2D地形生成時,哪個性能最高?
我想在此之后將圖形放置在2D數組中,然后檢查每個值,如果其值大於0.5,則應該得到一些材質或紋理。
是這種情況,我該怎么辦? 我完全走錯了軌道嗎?
edit1:在將圖形放入2D數組中之前,我想生成其他5個具有較高“ i”的圖形並將其混合(應該不太難)。
edit2: 這個實現很好,很容易。
定義“太多的性能”對於2D數據,任何類型的插值都應適用。 如果您真的擔心性能,則可以嘗試實現Simplex Noise ,但這很難理解和實現,並且在3D及更高版本上確實變得更好。 在2D模式下,它們具有可比性。
同樣,通常將perlin噪聲實現為x個參數的函數,其中x是維數,並且函數具有內部隨機值數組,該數組基於參數的整數值進行訪問。 您應該嘗試研究原始源代碼 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.