簡體   English   中英

C#perlin噪聲

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM