PIZiadas圖形

PIZiadas圖形

我的世界是英寸.

Perlin雜: 偽隨機函數的地形生成

虛擬環境的建立需要大量的數據建模為重建不同場景的表面形成. 我們這個世界的分形性質,允許使用各種數學函數的自動執行這些任務. 樹, 土地, 雲, 火災等。. 構建與基於自相似性的許多不同的技術, 分形的底座複雜的家庭. 產生所謂的“柏林噪聲”的功能適用於這些情況下.

船

使在一維應用概念的分析, 其推廣到二維 (土地) 是立竿見影, 並提供了無初始說教的興趣.

噪音功能: “噪音功能 (NF)“

一個NF本質上是一個偽隨機數發生器具有生成相同數量的輸入值的財產,或“種子”的具體.
任何函數, 如Y = COS(x) 總是返回為“×”的給定值相同的值“和”.

正弦曲線

如果我們用這個函數來生成幾何模型, 我們可以在以後使用相同的變量重新獲得同樣的模式. 但是,該函數不能在較沙丘或群山的輪廓用它有一個週期性的重複, 模式, 從而減少自然. 沙漠沙丘彼此相似但不相同.

地面

一個重複的模式仍然是可信的舞台上. 一個模型可以生成一個偽隨機分佈,其中沒有重複鑑定.

假性嗜睡症

隨機函數,是不可控的,或沒有可以恢復回到以前的一些價值觀, 隨著越來越會返回不同的值.

理性與偽隨機

A“柏林函數”允許混合的隨機優勢 (噪音) 一個經典的功能控制. 此外可以採取兩個給定值之間的中間值, 因此,提供連續性的這些功能. 如果我們增加表示需要規模來獲得這些中間點,以保持生成的圖像的分辨率. 如果我們做一個代表不同層次細節LOD技術, 這些方面是最重要的.

最後,要得到光滑,以免尖銳的“峰”和“谷”通常無用的曲線,並且通常不切實際.
要在不同尺度獲取圖像是必要的,以保持相同的分辨率納入新點. 該函數必須允許此操作,以確保代表的質量合理.

柏林蘇維薩多

每個函數“Perlin雜點”生成能適應更好或更壞的創建模型所需的不同數據. 這是一個研究領域目前正在深入探索.
在 [1] 提出了使用的數字psudoaleatorio的發電機的, 基於使用的素數, 返回在範圍內的數 [-1,1] 每個整數值被供給.

函數噪聲 (32-位整數: x)

X = (x<<13) ^ x的

A=15731

B=789221

C=1376312589
返回 ( 1.0 – ( (x * (x * x * A B) +Ç) &7FFFFFFF) / 1073741824.0)結束噪音功能

功能“噪音”

前三個數字是素數. 您可以使用不同的值進行試驗,以產生新的曲線. 使用三個變量的 (一, B到C) 被表達的清晰度進行.

該代碼有兩條主線.

第一個“換血”的輸入值可控制的方式,其位的位移

X = (x<<13) ^ x的

以產生在該範圍內的數 [-1,1] 用其上端的值 (1) 和減去一個值 [0,2].

獲得減去值利用提到素數確定一個新的中間值進行.

x * ( x * x * 一 + 乙) + Ç

所產生的數必須是正, 所以我們應用邏輯面膜,使其第一位為零 (正)

&7FFFFFFF

如果我們把這個最後的結果是由最大整數取得零和1之間的一個值, 為它是由MaxEntero / 2 =分 230

八度

組成最終功能的“噪音”功能與其他“同類”,增加了麵包車,其頻率依次增加一倍.

的頻率為F = 1 / L的波長的倒數, 波的週期的大概念

頻率

而振幅為我們提供了大小 (我們的波高)

振幅

所有這些功能以前的倍頻, 類似於鋼琴上連續的兩個音符之間的間距相等, 所謂的“八度”.

一個函數和它的第一個八度可以撰寫一封新功能
偽隨機函數,並添加了第八屆

加入偽隨機函數和它的八度
您可以添加函數本身的諧波或做出類似的功能組合, 添加在創造許多個八度的更多樣性cornering.The逐步納入添加細節尺度. 得到的曲線,數字越大的八度較高的複雜性, 允許模擬陡峭的懸崖.

1
2
3
4
5
6
7
8
9

持久性因數表示諧波的發生率或重, 上的曲線的光滑度增加一個控制點.

沿曲線持續高附加值較大的變化.

通過減少持久性的價值, 八度的影響不會產生尖銳的形式.

對於給定的頻率是用於持久性的每個值的單個振幅, 我們稱之為 “各頻率的振幅”

曼德爾布羅定義埃爾RUIDO, “噪音”, 如 “高頻低持久性”

在幾個階段中進行的計算處理.

首先我們確定噪聲的生成函數, 作為解釋:

兩點之間的中間值可以通過線性插值來獲得, 二次, 立方等。.

然後, 是 “軟化” 內插函數之後:

和該組被集成, 耦合求和函數諧波分量:

[1] 用偽代碼解釋頁面Perlin雜. 本頁面是在這項工作中提出了實施的主要參考. “HTTP://freespace.virgin.net / hugo.elias /培林Noise.htm