2017-03-05 12 views
0

3Dでランダムな図形を生成したいと思います。私は球体を取ってそれをゆがめてより規則的ではない形状にすることで得ることができるが、それでも大部分はコンパクトな形状をブロブにしたい。粘土のボールを取って、ピンチしたり、少し押したり引っ張ったりすることを考えてください。表面上の凹凸の表面湾曲またはスケールは、何らかの種類のパラメータを使用して制御可能でなければならない。ボリュームに変換できるサーフェスもOKですが、出力をボクセル(内側は1、外側は0)からなるボリュームにしたいと思います。ランダムなブロブを生成するには?

私は球面調和の重ね合わせであるガウスランダム球を見ました。私はこれらの数学を理解することができず、サンプルコードはどこにもありません。また、オーバーハングを持つ形状(つまり、球の中心からの光線がサーフェスと複数回交差する場合)を生成することはできません。

答えて

1

3D metaballsを使用してください。

3Dでポイントのセットをランダムに生成します。 5以下で動作するはずですが、これを変更することができます。

各ボクセルについて、各点に対する逆距離(またはボクセルおよびポイント座標の他のいくつかの関数)を計算し、それらを合計する。もし合計が閾値以上であれば、それはブロブ内にあり、それ以下であれば外にあります。

しきい値を変更することもできますし、オプションで各ポイントに異なるランダムウェイト(負の値も可)を与えることができます。おおまかに言えば、各点からの閾値距離が重なり合うようにすることです。そうしないと、球が別々になるだけです。

私はlibnoiseを使用
1

... http://libnoise.sourceforge.net/

それはパーリン/片面またはデータ「ランダムをseudo」の他の種類を生成するためのdeisgned汎用ノイズライブラリです。

"seudo"とは、同じシード値を供給することによって正確に同じデータを再計算できるようにシードされていることを意味します。これは、手続き的にテクスチャを生成する仮想世界のようなものです。

必要なものを生成するように簡単に設定できます。

関連する問題