雜訊地圖 | hyperPad Documentation
Logo
Documentation物件雜訊地圖

概覽

//www.youtube-nocookie.com/embed/CGrGToNv3Ak

Noise Map 行為可建立並操作雜訊圖。此動作會在行為執行時進行,運作方式與 Render Texture 行為類似。雜訊圖是由數值組成的 2D 網格,數值範圍介於 -1 和 1 之間。您可以在專案中使用雜訊圖來建立紋理和程序化產生的內容。一般而言,雜訊圖會以黑白顯示,其中 -1 代表黑色,+1 代表白色。

下圖顯示一個雜訊圖,以及其中部分位置的數值。

雜訊地圖

一切都從此行為產生的3D 雜訊圖開始,之後您可以轉換、修改等。您可以使用 Get Noise Value 行為讀取 3D 雜訊圖中的數值。最後,您可以將雜訊圖轉換為最終紋理(2D 雜訊圖),作為圖像使用,也可以讀取其中的數值。

選擇模式

Noise Map 行為提供 7 種模式可供選擇。

預設模式為 Create Noise Map。您可以點一下預覽框下方的下拉式選單,再選擇所需模式來變更模式。

建立雜訊圖

Create Noise Map 模式會在行為執行時,根據提供的輸入建立新的雜訊圖。您可以選擇要使用的 noise type,每種雜訊類型都有自己的屬性可供編輯,讓您調整出想要的外觀。

雜訊類型
PerlinBillowRidgedSpheres
雜訊地圖雜訊地圖雜訊地圖雜訊地圖
VoronoiCylindersCheckerboardConstant
雜訊地圖雜訊地圖雜訊地圖雜訊地圖

注意:Cylinders 雜訊和 Spheres 雜訊看起來可能相同,但它們的結構並不相同!沿 y 軸移動它們時,您會看到不同的結果。這是因為圓柱體的截面在視覺上維持不變,而球體的截面則會隨著移動而改變。

Perlin、Billow 和 Ridged 雜訊類型

這些雜訊類型都使用相同的演算法來建立雜訊圖,因此產生的圖樣完全相同。它們的差異在於數值重新映射後,呈現的外觀也不同。所有屬性對這些雜訊類型的作用都相同。

屬性說明
Seed

用來決定建立雜訊圖時初始條件的數值。使用相同的 seed 會產生完全相同的雜訊圖;使用不同的 seed 則會產生不同的雜訊圖。

Seed:1

雜訊地圖

Seed:2

雜訊地圖

Seed:3

雜訊地圖

Frequency

生成的雜訊在指定區域中具有的不同特徵數量與大小。Frequency 數值越大,同一區域內出現的特徵就越多。

Frequency:0.1

雜訊地圖

Frequency:0.25

雜訊地圖

Frequency:0.5

雜訊地圖

Octave Count

要加入雜訊圖的額外雜訊層數。

Octave Count:1

Persistence:0.8

Lacunarity:1.1

雜訊地圖

Octave Count:2

Persistence:0.8

Lacunarity:1.1

雜訊地圖

Octave Count:5

Persistence:0.8

Lacunarity:1.1

雜訊地圖

Persistence

用來決定每個 octave 對雜訊圖結果的影響程度。您可以將它想成 octave 的 振幅。

Octave Count:3

Persistence:0.5

Lacunarity:1.5

雜訊地圖

Octave Count:3

Persistence:1

Lacunarity:1.5

雜訊地圖

Octave Count:3

Persistence:1.5

Lacunarity:1.5

雜訊地圖

Persistence = 1 - 所有 octave 對結果的影響相同。

Persistence > 1 - 後續 octave 對結果的影響更大。

Persistence < 1 - 後續 octave 對結果的影響較小。

Lacunarity

用來決定每個 octave 增加或減少多少細節。您可以將它想成 octave 的 頻率。

Octave Count:3

Persistence:1

Lacunarity:0.5

雜訊地圖

Octave Count:3

Persistence:1

Lacunarity:1

雜訊地圖

Octave Count:3

Persistence:1

Lacunarity:1.5

雜訊地圖

Lacunarity = 1 - 所有 octave 的細節程度都相同。

Lacunarity > 1 - 後續 octave 會包含更多細節。

Lacunarity < 1 - 後續 octave 會包含較少細節。

Voronoi 雜訊類型

Voronoi 雜訊具有類似細胞的結構,其產生方式是計算像素與一組偏移網格點之間的距離。

屬性說明
Seed

用來決定建立雜訊圖時初始條件的數值。使用相同的 seed 會產生完全相同的雜訊圖;使用不同的 seed 則會產生不同的雜訊圖。

Seed:1

雜訊地圖

Seed:2

雜訊地圖

Seed:3

雜訊地圖

Frequency

生成的雜訊在指定區域中的細胞數量與大小。Frequency 數值越大,同一區域內出現的細胞就越多。

Frequency:0.1

雜訊地圖

Frequency:0.25

雜訊地圖

Frequency:0.5

雜訊地圖

Displacement

用來決定各細胞之間雜訊數值變化程度的數值。

Displacement:-1

雜訊地圖

Displacement:0.5

雜訊地圖

Displacement:1

雜訊地圖

⚠️ 注意:停用 Distance 屬性時,負的 displacement 值不會生效。
Distance

是否在雜訊中加入距離數值。

Distance:已啟用

雜訊地圖

Distance:已停用

雜訊地圖

Spheres 和 Cylinders 雜訊類型

Spheres 和 Cylinders 雜訊會形成以 0,0 為中心的同心圓。這兩種雜訊類型在預覽中看起來相同,但從不同角度觀察時會有所不同。Spheres 雜訊是由一個個球體彼此套疊而成,而 Cylinders 雜訊則是由一個個圓柱體彼此套疊而成。

屬性說明
Frequency

指定空間中球體/圓柱體的數量。Frequency 越高,指定區域內的球體/圓柱體就越多。

Frequency:0.05

雜訊地圖

Frequency:0.25

雜訊地圖

Frequency:0.5

雜訊地圖

Checkerboard 雜訊類型

這是較簡單的雜訊類型之一,具有由數值交錯排列的均勻方格組成的網格,也就是棋盤格圖樣。

屬性說明
Square Size

雜訊圖中每個方格的大小。

Square Size:5

雜訊地圖

Square Size:10

雜訊地圖

Square Size:20

雜訊地圖

Constant 雜訊類型

最簡單的雜訊類型,每個數值都相同。

屬性說明
Value

要填入每個位置的數值。

Value:-1

雜訊地圖

Value:0

雜訊地圖

Value:0.5

雜訊地圖

了解預覽框

預覽框會即時顯示雜訊圖的外觀。它是3D 雜訊圖的橫截面;如果使用 Get Noise Value 行為,數值也會從此處讀取。原點 (0, 0) 位於預覽框的左下角。

預覽的預設尺寸為 100px × 100px。您可以編輯預覽框下方的 size 值來調整預覽框大小。size 值越大,可檢視的雜訊圖範圍就越廣。如果您在編輯器中處理的是一長串雜訊圖行為,也可以_停用_預覽。預覽框會假設所有行為都已先依序執行。

預覽框的用途只是讓您了解實際雜訊圖的外觀和作用,並不會完整呈現最終結果。修改預覽大小不會影響遊戲中的功能,它只會調整編輯器中的預覽。

移動、縮放和旋轉雜訊圖

Transform Noise Map 模式會在行為執行時,於 3D 空間中移動、縮放和旋轉所選雜訊圖。

其位置系統與 hyperPad 的位置系統不同:x 和 z 軸分別代表水平與垂直分量,而 y 軸則代表第三個維度。

您可以將位置想成螢幕位置。增加 x 時,攝影機會向右移動,雜訊圖在視覺上則會向左移動。增加 z 時,攝影機會向上移動,雜訊圖在視覺上則會向下移動。增加 y 時,攝影機會穿過雜訊圖,雜訊圖的外觀也會隨之變化。您可以將縮放想成螢幕縮放,將旋轉想成螢幕旋轉。

位置

x 正在變化。

雜訊地圖

y 正在變化。

雜訊地圖

z 正在變化。

雜訊地圖

縮放

x 正在變化。

雜訊地圖

y 正在變化。

雜訊地圖

z 正在變化。

雜訊地圖

旋轉

x 正在變化。

雜訊地圖

y 正在變化。

雜訊地圖

z 正在變化。

雜訊地圖

套用色彩

Colorize Noise Map 模式會在行為執行時,為所選雜訊圖設定色彩。只要變更最小值和最大值對應的色彩即可。

雜訊地圖

執行數學運算

Math Operation 模式會在行為執行時,對所選雜訊圖的所有數值執行數學運算。

下表說明各數學運算的作用。變數 v 代表指定數值,變數 a 和 b 則代表其他提供的輸入數值。

運算函式說明
絕對值f(v) = |v|將數值轉為絕對值,讓負數變成正數。
反轉f(v) = -v將數值乘以 -1,等同於反轉數值的正負號。
乘方f(v) = v^a將數值提升至另一個數值的次方。
限制範圍f(v) = clamp(v, a, b)將數值限制在最小值與最大值的範圍內。
加法f(v) = v + a將一個數值加到原數值上。
減法f(v) = v - a從原數值中減去一個數值。
乘法f(v) = v * a將原數值乘以一個數值。
除法f(v) = v / a將原數值除以一個數值。

結合雜訊圖

Combine Noise Map 模式會在行為執行時,將兩個雜訊圖結合。此模式會使用另一個雜訊圖中對應位置的數值,對所選雜訊圖的所有數值執行數學運算,以產生最終結果。

下表說明各運算的作用。變數 v₁ 代表第一個雜訊圖在特定位置的數值,變數 v₂ 則代表第二個雜訊圖在完全相同位置的數值。

運算函式說明
乘方f(v₁,v₂) = v₁^v₂ 將第一個雜訊圖中的數值提升至第二個雜訊圖中對應數值的次方。
最小值 f(v₁,v₂) = min(v₁,v₂) 取兩個雜訊圖中較小的數值。
最大值 f(v₁,v₂) = max(v₁,v₂) 取兩個雜訊圖中較大的數值。
加法 f(v₁,v₂) = v₁ + v₂ 將兩個雜訊圖的數值相加。
減法 f(v₁,v₂) = v₁ - v₂ 從第一個雜訊圖的數值中,減去第二個雜訊圖中對應的數值。
乘法 f(v₁,v₂) = v₁ * v₂ 將兩個雜訊圖的數值相乘。

扭曲雜訊圖

Distort Noise Map 模式會在行為執行時,偏移雜訊圖中的數值以產生扭曲效果。扭曲雜訊圖有兩種方式:套用湍流,以及使用多個雜訊圖偏移數值。

套用湍流

藉由隨機移動數值,套用隨機扭曲效果。此範例將以下運算套用至 Checkerboard 雜訊圖。

雜訊地圖

屬性說明
Seed

用來決定扭曲初始條件的數值。使用完全相同的數值會產生完全相同的扭曲效果;使用不同的數值則會產生不同的扭曲效果。

Seed:1

雜訊地圖

Seed:2

雜訊地圖

Seed:3

雜訊地圖

Frequency

在指定區域內,扭曲程度變化的頻繁程度。Frequency 越高,扭曲效果在區域內的變化就越多。

Frequency:0.05

雜訊地圖

Frequency:0.1

雜訊地圖

Frequency:0.25

雜訊地圖

Power

用來決定扭曲效果強度的數值。

Power:10

雜訊地圖

Power:25

雜訊地圖

Power:50

雜訊地圖

Roughness

用來決定扭曲效果變化速率的數值(變化有多快)。較低的 roughness 值會讓扭曲程度較高與較低的區域之間平順地過渡;較高的值則會造成快速且粗糙的過渡。

Roughness:1

雜訊地圖

Roughness:2

雜訊地圖

Roughness:20

雜訊地圖

偏移

使用由 三個 雜訊圖提供的 x、y 和 z 分量,將每個雜訊值偏移一個 3D 位移量。若任一分量留白,系統會以數值為 0 的常數雜訊圖代替。

雜訊地圖

產生最終紋理

Generate Texture 模式會在行為執行時產生最終的雜訊圖紋理。這樣可以更快速地讀取雜訊圖中的數值,但代價是雜訊圖會被限制在特定區域內,且無法再編輯。

⚠️ 注意:雜訊圖轉換為最終紋理後,就無法再編輯。嘗試對其執行操作會導致 Modification Prohibited 錯誤。

屬性說明
Texture Size要取樣並建立的最終雜訊圖寬度和高度(以像素為單位)。
Origin開始取樣雜訊圖的位置(以像素為單位)。
Sample Count雜訊圖 x 和 y 維度中使用的取樣數量。取樣數量越高,可建立的雜訊圖就越大、細節也越豐富。
Seamless若啟用,系統會調整紋理,使其可平鋪而不會出現明顯接縫。
Asynchronous若啟用,紋理會在主執行緒之外進行算繪,並在算繪完成後觸發行為。這樣可在產生較大的雜訊圖時避免專案凍結。

從雜訊圖取得圖像

雜訊地圖

在 Load Image 行為中,您可以選擇 Noise Map 載入類型,再設定圖像解析度,以取得雜訊圖的圖像。

如果設定的解析度大小與原始雜訊圖不同,系統會調整雜訊圖大小,使其符合圖像範圍。

注意:您可以使用任何 Noise Map 行為,但該行為必須包含有效的雜訊圖!

處理錯誤

Noise Map 行為可以在預覽框中顯示錯誤。錯誤會以三角形警告圖示表示,圖示下方也會顯示簡短的錯誤訊息。

這表示該行為無法產生預覽,也代表雜訊圖在遊戲過程中將無法算繪。若要確保行為正常運作,請先處理錯誤,並再次檢查所有輸入欄位。

錯誤訊息含義
Source Missing尚未選取來源雜訊圖行為。
Secondary Source Missing尚未選取次要來源雜訊圖行為(僅限 Combine Noise Maps 模式)。
Source Error至少有一個選取的來源雜訊圖發生錯誤。
Self-Reference Prohibited其中一個選取的來源雜訊圖參照了自身,這會造成無限迴圈。
Modification Prohibited選取的來源雜訊圖是最終紋理,無法修改,也無法用來產生新紋理。
Unknown Error因其他問題而無法載入預覽。