簡體   English   中英

如何將Perlin雜訊功能(libnoise)映射到圖塊陣列?

[英]How do I map a perlin noise function (libnoise) to an array of tiles?

如果輸入值是整數,則libnoise的Perlin.GetValue(x,y,z)方法(使用C#端口)將返回0。 我如何才能將2D瓦片數組(由於數組的索引是整數)映射到噪聲值? 這對我來說意義不大,因為即使3D地形最終也取決於整個整數值。 對於生成此類3D風景的人來說,地形中的這些位置是否始終限制為0值?

編輯:我應該提到我正在使用一個塊系統,因此我遍歷每個塊的[32,32]瓦片數組以獲取Perlin噪聲值。 我希望通過將世界空間中塊的偏移量添加到數組中圖塊的[x,y]值中,可以得到連續的地形。 無論如何,我嘗試了類似的方法,但噪聲函數仍然為零:

double temp = generator.GetValue((x + offsetX) / ChunkSize, (y + offsetY) / ChunkSize, 0);

編輯2:我將噪波函數的值輸出為32x32紋理,並將它們彼此相鄰放置。 產生了噪聲,但盡管為塊的偏移調整了x和y值的輸入,但它不是連續的。

在此處輸入圖片說明

編輯3:問題解決了。 我的偏移值設置為像素坐標,而不是平鋪/塊坐標。 我將塊的索引乘以塊大小乘以圖塊大小,而不僅僅是塊大小(在圖塊中)。

Perlin.GetValue(x, y, z)的輸入值是雙精度值,並且在技術上不限於0.0-1.0范圍,但是我建議您采用所有數組索引並將它們除以該維度中的數組長度,以便都落在0.0-1.0的范圍內,您應該得到不錯的噪聲值,如果噪聲太大,則可以通過縮放來調整噪聲,例如,如果索引在0.0到2.0之間縮放可能會產生更平滑的噪聲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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