2012-03-09 138 views
2

UPDATE:問題正式名單:的Java柏林噪聲二維地形生成

  1. 什麼二維噪聲執行浮點值(包括輸入參數,輸出)代表什麼? - 部分回答,輸入是座標。輸出如何?另外,我可以使用我的整數作爲座標的浮點數嗎? 1.0,122.0等?
  2. 什麼是在2D噪聲發生器中實現種子的好方法?我應該把它作爲一個三維噪聲發生器使用第三參數作爲種子嗎?這是否意味着每顆種子都會產生獨特的2D噪音?
  3. 與2d地圖一起,生成位圖似乎沿着相同的路線。 如何從輸出生成位圖?大概漂浮。

我的問題是剪切和粘貼perlin噪聲2D實現的浮點值(輸入參數和輸出)是什麼?我怎麼能從他們產生一個位圖?如果我可以得到某種數據類型的二維數組,我相信我可以弄清楚如何使用它來模擬我的地形。

而且,如果我可以確保可以爲它們創建值,我將使用剪切和粘貼實現。這是問題的另一部分,它是一個沒有答案的我發現here。 - 在噪聲發生器中實現種子的好方法是什麼?

好的,我明白這個問題已經被問了很多次,所以讓我解釋一下我所研究和發現的。

首先,我在這裏發現了this網站,這似乎是向我解釋它的勝利者。然而,然後我想出了另一個問題,我發現問題,但沒有完全回答here

然後我試圖讓我的手變髒,並用Java編寫一些代碼,這是我選擇的語言。我發現this,這讓我試着將哈希函數作爲答案給出來作爲我的噪聲函數,因爲我可以在那裏使用種子。然後我遇到了一個問題,它沒有返回一個浮點數來跟隨教程中的其他進程。回到繪圖板。一路上,我發現許多更多的網站有關於柏林噪音的問題。

我在這裏找到一個懸而未決的問題,我已經沒有想到的又是因爲我沒有得到我的執行工作。我再也找不到鏈接了,但是它還是說了些什麼,即使你有一個複製和粘貼的實現,你將什麼是浮點數輸入到函數中?我被告知我需要在地圖上傳遞我的x和y的INTEGERS。我也從剪切和粘貼實現中獲得浮點輸出。這些是什麼意思?那些2D如何?如果我可以將整體保持爲整數,那麼在我的大腦中就會有意義,但從某種意義上說,將它們保持爲整數對於插值和平滑連續曲線的值並不合理。

+2

請修改您的問題。把你尋求的東西放在最上面,然後解釋你已經試過的東西。 – 2012-03-09 10:24:33

+0

[here](http://stackoverflow.com/questions/9546306/perlin-noise-2d-assistance)是我發現的文章提出了類似的問題!它一直沒有答案。我提供了更多關於我尋找答案的信息,所以我希望有人花時間回答我的問題。如果我能夠理解它,我可以幫助其他人。 – user1258957 2012-03-11 08:09:43

回答

1

正如我所瞭解的代碼,這些只是您想要的值的座標。

使用float在這裏似乎沒有什麼意義,除非您想支持沒有抖動的縮放。使用float值,您可以通過計算中間值輕鬆放大景觀。

+0

我不打算使用任何形式的縮放。我有一個二維的瓷磚陣列,我想根據高度來確定它是否是海洋,海洋,土地,山丘,山脈等。我選擇佩林噪音是因爲我需要它是一個連續的功能。 (所以看起來很順利)我可以輸入x,y作爲浮點數(0.0,1.0),但輸出將是浮點數?我期望輸出是一個高度或與高度相等的東西。當基本噪聲函數(PerlinNoise函數使用的一個,但我沒有手動使用)需要輸入時,我應該輸入x和y作爲浮點數嗎?這部分令人困惑。 – user1258957 2012-03-13 10:28:21

+0

大多數做地形的人需要3D地形,所以能夠放大表面的任何一點是非常重要的。此外,當您使用噪聲來計算UV貼圖的紋理時,需要使用範圍爲[[0,1]'的座標。 API可能會讓你感到困惑,但不是每個人都有你的用例。 – 2012-03-13 13:00:49

1

1 /中值的隨機點樣本之間形成一個二維網格的直鏈或三次插值,所以每一個點是由隨機函數產生的4預定的非計算的最接近點之間的計算的平衡。

2 /這是偉大的:

function rndng (n: float): float 
{//random linear graph -1, 1 
    var e = (n *122.459)%1; 
    return (e*e*143.754)%2-1; 
} 

function rnd2d (n: float, m: float): float 
{//random 2d gooed enough for mountains -1, 1 
    var e = (n*m *31.178694)%1; 
    return (e*e*137.21321)%1; 
} 

如果速度不是問題,你可以將它們相乘,5-10超隨機函數,否則它是最快的CPU上,該功能。

3 /你有存取權限讀取位圖,寫庫函數,並寫出像素,即獲得像素,設置像素。讀取和寫入位圖,並創建並保存位圖文件和文件名。