2017-03-05 47 views
0

我想在3D中生成隨機形狀。我希望這些形狀是斑點,基本上可以通過拍攝一個球體並將其變形爲不太規整的形狀而獲得,但仍然大部分是緊湊的。想想拿一個粘土球,捏或推,拉一點點。表面曲率或表面的不規則性的比例應該可以使用某種參數來控制。我希望輸出是一個由體素組成的體積(內部爲1,外部爲0),儘管可以轉換爲體積的表面也是可以的。如何生成隨機斑點?

我已經看了高斯隨機領域,這是球形諧波的疊加。我無法弄清楚這些數學問題,也沒有任何示例代碼。而且,它們不能產生任何具有懸垂的形狀(即,來自球體中心的射線不止一次地與該表面相交)。

回答

1

使用3D metaballs

隨機生成三維的點的集合。 5或更少應該工作,但你可以改變這一點。

對於每個體素,計算反距離(或體素和點座標的一些其它函數),以每個點和它們求和。如果總和等於或大於閾值,則它位於斑點中,如果它小於它,那麼它在外面。

可以改變閾值,並且任選地給每個點不同的隨機量(其可以是負值)。粗略地說,你希望每個點的閾值距離重疊,否則你只會有一堆單獨的球體。

1

我用libnoise ... http://libnoise.sourceforge.net/

這deisgned產生培林/單面或其他類型的通用噪音庫「seudo隨機」的數據。

「seudo」意味着它是播種的,因此我們可以通過在我們存在時提供相同的種子值來重新計算完全相同的數據,例如虛擬世界中的程序生成紋理。

它可以很容易地被配置爲生成你想要的那種東西。