新機能に集中するため、付属資料パッケージにプロジェクトファイルを用意しました:PSD_R21_VektorVolumen_start.c4d。 それにはパラメトリックな 球-オブジェクトと、上から下、下から上に向けられた2つの パーティクル-エミッターが含まれています。このチュートリアルの目標は、流れ出るパーティクルが球にぶつかり、そこであらゆる方向に広がることです。
続いて、シーンの構成要素を見てみましょう。両方の パーティクル-エミッターは同じ設定を持っています: 300フレームまで500個のパーティクルを発生させ、パーティクルの 寿命 は1000フレームであり、アニメーションの終了まで持続します。

再生ボタンをクリックすると、現時点では両方のエミッターのパーティクルがまだ球を通過している様子が確認できます。これを変えていきたいと思います。
最初のベクトルフィールドの構築
まずは球から与えられたジオメトリから最初のベクトルフィールドを生成します。これにより、ランダムパターンで球に衝突するパーティクルを誘導します。
まずメニューのVolumeから Volume Builder を選択します。
次に、球-オブジェクトをVolume Builder内のサブオブジェクトとしてドラッグ&ドロップで配置します。この時点でボリュームタイプとして、現時点で距離フィールドが指定されているため、Volume Builderは現時点ではボクセルによって球を構築しています。
代わりにボールをベクトルフィールドに変更するには、対応するメニューからボリュームタイプを単純にベクトルに変更します。
ベクトルフィールドの少し粗い区分を、ボクセルサイズで調整します。5 cm の値は十分すぎます。
ボリュームメッシャーによって、以前の 球-オブジェクトから無数のベクトルの放射フィールドが生成されました。
ベクトルフィールドに少し近づくと、球の表面上のポジションに垂直な各ベクトルが見えます。したがって生じる力は球から離れた方向に向かうものです。球の周囲のパーティクルを誘導するには適していません。
したがって、2つのことを考慮する必要があります: ベクトルは球の表面に平行である必要があり、さらにパーティクルを球の表面でさまざまな方向に誘導するためにはランダムパターンが必要です。
ランダムパターンは、シーンにGenerate>FieldからRandom Fieldを持ってきます。
Random FieldをVolume Builderのサブオブジェクトとしてドラッグアンドドロップ配置します。その後、Volume Builderの設定ダイアログでは、Random Fieldが球より上のレイヤーとしてリストされます。
3D ビューを見るとわかりますが、2つのベクトルフィールドはまだ要件どおりに動作していません。 Random Fieldは、その下に配置されたベクトル球に影響を与えるようにする必要があります。
これを実現するには、 Volume Builder内で Objects リストで Random Field エントリを選択し、 Random Fieldの生成エリアを Objects in Front に設定します。
これで Random Field が球に提供されるベクトルに対して望むように作用します。あとは、混沌とした回転したベクトルが球の表面に沿って表示されるようにするだけです。
Random Field と球の演算モードはまだ完全に合致しているようには見えません。 Modeメニューで、Random Fieldの演算方法として Cross を選択します。このモードは、2つのベクトルの垂直方向をクロスプロダクトで計算するために作られています。
われわれの3Dビューによると、このステップの後、ベクトルは球の周りをタングニェント的に動き、望むようになります。
力場の使用
今、私たちは粒子が球の周りを移動するための最初のベクトルフィールドを準備しましたが、残念ながら、この段階では粒子はまだ私たちのベクトルに気付いていません。
独自のフィールドのベクトルが力として機能するようにするには、力場-オブジェクトが必要です。それはシミュレーション>力メニューで見つけることができます。
私たちのベクトルボリュームが力場として機能するためには、力場-オブジェクトの設定ダイアログを開き、ボリュームジェネレータを力場-オブジェクトのオブジェクト-フィールドにDrag-and-Dropで移動します。
離すと、ボリュームジェネレータがポイント-またはボリュームオブジェクトとして扱われるかを尋ねる小さな選択メニューが表示されます。私たちはもちろんボリュームオブジェクトオプションを選択します。
こうしてボリュームジェネレータによって定義されたベクトルボリュームが力場リストにエントリされるはずです。新しく生まれた力場-オブジェクトによってもレイヤーと合成モードを使用することで、新たな可能性が示唆されます。
アニメーションを再生ボタンで開始すると、粒子がベクトルフィールドによって影響を受けていることがわかります。
これはまだ望ましい結果ではありません。現時点では力場-オブジェクトには速度タイプを速度に加算がアクティブになっており、粒子は単に多少の勢いでそらされています。しかし、私たちは、粒子がベクトルに応じて自分の方向を変えるようにしたいので、速度タイプメニューで適切なオプションを選択します。
この変更の後、アニメーションはすでにより良く見えます。多くの粒子が球の表面を横切って進む一方、他のいくつかは球から逸れます。さらに、これらの逸れた粒子が非常に奇妙な軌道を取ることがわかります。
最後の問題は、力場-オブジェクトの設定ダイアログでボリュームジェネレータをオブジェクトリストで選択し、その設定でサンプルモードをNearestからLinearに変更することで簡単に修正できます。これにより、最寄りのボクセルに合わせて切り上げたり切り捨てたりするのではなく、線形平均が使用されます。
この変更の後、球から逸れた粒子はより自由に移動します。次に、これらの粒子が球の表面に留まるようにします。
球の表面を移動する粒子の軌跡が細かすぎないように、ノイズの基礎となるサイズをノイズの基礎となるサイズをZufallsfeld-オブジェクトの設定で増やします。もちろん、Zufallsfeldsの設定をさらに試行することは自由です。
Zufallsfeld-オブジェクトを選択すると、サイズパラメータを3Dビューでインタラクティブに変更できます。
私はサイズを300%に設定しましたので、ベクトルのノイズがはっきりと見えるようにしました。
2番目のベクトルフィールドの構築
「Kugel innen」オブジェクトの名前が示すように、内側の球用に完成したベクトルフィールドに加えて、外側の球用の2番目のベクトルフィールドも作成する予定です。この2番目の、やや大きな球は、反射された粒子が内側の球の表面に再び戻るのを助けるために使用されます。
そこで、Ctrl-キーを押しながらオブジェクト-マネージャ内で球オブジェクトをドラッグすることで、球オブジェクトを複製し、Volumenerzeugerのサブオブジェクトとして残し、「aussen」として識別できるようにしました。この外側の球は、内側の球よりも直径を2cm大きくすることにしました。
ボリュームジェネレーター は、外側の球から対応するベクトルフィールドを生成し、すでに存在するオブジェクトに追加しました。
ボリュームジェネレーター のオブジェクトリストの設定ダイアログにおいて、外側の球が現在最初の位置にあり、最後に処理されます。しかし、外側の球がまず粒子に貫通され、その後粒子を外に出さないようにしたいと思います。
オブジェクト リストに少し整理を加えましょう。まず、「外側の球」を順序の最下部に移動します。「ランダムフィールド」は「内側の球」に影響を及ぼしますが、「外側の球」の後にすぐ処理されるようにしたいので、簡単に新しいフォルダーを作成し、そこにランダムフィールドと内部球を移動します。オブジェクトリストの下にあるフォルダー ボタンをクリックしてください。
そして、ボリュームジェネレーター のオブジェクトリストからランダムフィールド と内部球をこの新しいフォルダーにドラッグアンドドロップで移動します。
外側の球は、球の表面に垂直なベクトルを持ち、最初に作用するため、衝突している粒子は現時点では完全に反射されます。外側球のベクトルフィールドを反転させるために、ベクトルを操作する際に使用するボリュームフィルター を使用します。ベクトルとの作業にもいくつか選択肢がある中から、逆ベクトル フィルターをボリュームフィルター メニューから選択します。
外側の球のベクトルのみにボリュームフィルター を適用したいため、それを「外側の球」の直上にドラッグアンドドロップします。
これで、期待通りにすべてが機能するはずです。再生ボタンをクリックすると、すべてのベクトルフィールドが正しく設定されていることが確認できます。粒子は球に当たり、表面全体にランダムに分布します。
ランダムフィールド のノイズ パターンをアニメーション化することで、粒子ストリームにさらに活気を加えることができます。
このために、ランダムフィールド の設定ダイアログを開き、私の例では初期速度 を 50% に設定します。
粒子ストリームは、アニメーション化されたノイズ パターンによりより短くなり、複数の場所で分かれます。
パーティクルをスプラインパスに変換する
今では、パーティクルを好きな小さいオブジェクトに球の表面に向けて移動させることができます。代替方法は、パーティクルの経路を自動的にトレースしてスプラインパスに変換することです。それには、MoGraph メニューから Tracer-オブジェクトが必要です。
両エミッター のパーティクルストリームをスプラインパスに変換するために、両エミッター オブジェクトをTracer オブジェクトの設定ダイアログ内のTracer Link フィールドにドラッグアンドドロップします。
エミッターは時間とともに多くのパーティクルを放出するため、Tracer が生成するスプラインパスの長さを制限します。そのために、Tracer オブジェクトの設定ダイアログでEnd… をLimit として選択します。
… そして、Frame パラメータを使用して、スプラインパスの長さを設定します。私は 100 フレームにしました。より低い値はそれに比例して短いスプラインパスを生成します。
再生ボタンをクリックすることで、Tracer によって生成されたスプラインパスが球の表面をアニメーション化して移動する様子を観察できます。
このチュートリアルのオープニング画像では、球オブジェクトの複製を作成し、赤いマテリアルを適用しました。Tracer オブジェクトを除き、オブジェクト マネージャーで他のすべてのオブジェクトの表示を無効にすることができます。
Tracer-オブジェクトから生成されたスプラインパスを使用して、例えばトレーサー-オブジェクトをサークル-オブジェクトと共にスイープ-オブジェクトに組み込むことで、3次元オブジェクトを生成できます。ただし、この場合はパーティクルの数と寿命に注意してください。そうしないとコンピューターが非常にすぐに応答しなくなります…