マンデルバルブをレンダリングする方法

この簡単なチュートリアルでは、.ass ファイルを使用してマンデルバルブをレンダリングする方法について説明します。マンデルブロ集合とジュリア集合の「マンデルバルブ」3D バージョンを生成します。 マンデルバルブを生成する方法の詳細については、プロシージャルの大規模なデータセットのチュートリアルを参照してください。

マンデルバルブのクローズアップ。何千もの小さな球によって形成されていることがはっきりと確認できる

ジュリア集合は、定数(C)に対して平方および加算を繰り返したときに「プリズナー」ポイントが半径 2 の円から出ることができなくなるような複素平面上の点の集合です。C が取り得るすべての値に対して完全なジュリア集合があります。C は、複素平面上の 2 次元の値です。

ジュリア集合には、2 つの異なる種類があります。

  1. 完全に接続されている。
  2. 分断された、点のカントール ダスト(カントール ダストの詳細: http://en.wikipedia.org/wiki/Cantor_set)

ジュリア集合の中心点(0,0)がプリズナー ポイントの場合は、ジュリア集合は完全に接続されます。この点がプリズナー ポイントでない場合、ジュリア集合はカントール ダストになります。

すべてが完全に接続されたジュリア集合は、マンデルブロ集合です。考えられるすべてのジュリア集合の中心点をサンプリングすることで生成されます。つまり、マンデルブロ集合のすべての点について、ジュリア集合を生成できます。 集合は両方とも複素平面内の連続関数ですが、これらは通常、均等なグリッド(ピクセル)をサンプリングしてレンダリングされます。点がプリズナー ポイントである場合、黒色でレンダリングされます。

マンデルバルブは、この計算を 3 次元に拡張するものです。このジェネレータは、通常のグリッドのすべての点をサンプリングすることで機能します。また、点がプリズナー ポイントである場合、それを AiPoints ジオメトリ ノードに加えてレンダリングを行います。

マンデルバルブを作成およびレンダリングするには、次のファイルが必要になります。

コンパイルされたマンデルバルブのプロシージャル

Arnold 6: すべてのプラットフォーム

重要:

このチュートリアルを実行する前に、Arnold の最新バージョンを使用していることを確認します。そうしないと、マンデルバルブをレンダリングするときに問題が発生する可能性があります。

.ass ファイル

マンデルバルブのプロシージャルをインストールするには、プラグイン検索パスに追加(ARNOLD_PLUGIN_PATH 環境変数を使用するか、kick -l を実行)する必要があります。プラグインをロードすると、シーンで Mandelbulb という名前の Arnold プロシージャル ノードを使用できます。

マンデルバルブの Arnold プロシージャル(スタンドイン)にシェーダを割り当てることができます。ライトを作成してシーンをレンダリングします。マンデルバルブを生成するためのレンダリングが始まるまでに、少し時間がかかります。

例については、この .ass ファイルを参照してください。

ヒント:

また、mandelbulb.dll ファイルを Arnold プロシージャルで直接設定し、User Options フィールドを使用してカスタム パラメータを定義することもできます。

Gridsize

Gridsize は、グリッド内のセルの数です(つまり、800 x 800 x 800)。

マンデルバルブの解像度を上げるには、グリッドのサイズを大きくする必要があります。値を大きくするほど、より多くの球が作成されます。この数を増やすと、メモリ使用量とレンダリング時間が増加することに注意してください。

グリッドサイズ: 400 グリッドサイズ: 800

Maximum iterations

反復の最大試行回数です。この回数だけ反復を行った後で点がまだ半径 2 の球の内部にある場合、それはプリズナー ポイントとみなされます。

最大反復回数: 3 最大反復回数: 9

Power

2 次元では、ジュリア集合とマンデルブロ集合は C に Z の 2 乗を加算したものを反復することで計算されます。3 次元では、8 乗を使用することでより興味深い結果が得られますが、必要に応じてこの変更を試行できるコントロールがあります。

累乗: 4 累乗: 8 累乗: 12

Spheremult

これは各セル内の球の半径の乗数です。大きい球ほどよくブレンドされますが、「ふわふわ」した見た目になります。小さい球の方がグリッドがはっきりと見えます。

Spheremult: 1 Spheremult: 2

Orbitthresh

点がこの距離よりも長い距離に渡って反復されない場合、マンデルバルブ内にうまく収まっているとみなされ、レンダリングには追加されません。これにより、マンデルバルブの中心が大きな空洞になり、ジオメトリが少し軽くなります。

Orbitthresh: 0.05 Obritthresh: 2

Chunks

一度に RAM で集合全体が構築されないように、マンデルバルブを分割するチャンクの数です。値を大きくするほど RAM 使用量が低下します。彩度のポイントは 30 前後です。

Threads

グリッド上で値をサンプリングするときに生成するスレッド数です。

Julia

マンデルバルブ、またはジュリア集合としてレンダリングするために切り替えた結果を示します。

Julia: オフ Julia: オン

Cval

ジュリア集合を生成するために使用する C の値です。Julia が Off の場合は無視されます。

これでこのチュートリアルは終わりです。.ass ファイルのグリッド サイズを大きくして、興味深いライティング効果を追加してください。