STOKE MXと3ds Maxのスペースワープ
概要
このチュートリアルでは、3ds Maxのフォーススペースワープをベロシティフィールドとして使用する方法について説明します。
基本のシーン
まず、テストシーンを何もない状態から作成します。
- 新しい3ds Maxのシーンを開きます。
- 半径15、ワールド座標[0,0,0]のティーポットを作成します。
- 座標[30、-30,0]の風のスペースワープを作成します。
- 風の強度を0.2に変更します。
- 風のタービュランスを1.0に変更します。
- 風の周期を0.01に変更します。
- 風のスケールを0.05に変更します。
- ティーポットと風のスペースワープの両方を選んでツールバーのStoke アイコンをクリックして(あなたがStoke Macroscriptsでツールバーをカスタマイズしていると仮定します)、Stokeアイコンを配置するために設置平面上のどこかをクリックします。シミュレーションはソースオブジェクトの位置だけに反映し、Stokeのアイコンの位置は何の役割も果たさないことに注意してください。
結果:Stoke001という新しいStokeオブジェクトがシーンに作成されます。ティーポットはDistribution Sourcesのリスト、風はVelocity Sourcesのリストに自動的に追加されます。
あなたがStokeアイコンでツールバーをカスタマイズしていない場合は、別の方法として次のことができます。
- コマンドパネルの作成タブに移動します。
- ジオメトリモードで、カテゴリリストからThinkboxを選択します。
- Stokeボタンを押します。
- Stokeオブジェクトを作成するためにビューポートをクリックします。
- DistributionロールアウトのPick…ボタンをクリックして、ビューポートのティーポットをクリックして選択し、リストに追加します。
- Velocity FieldロールアウトのPick…ボタンをクリックして、ビューポートのスペースワープをクリックして選択し、リストに追加します。
デフォルトの設定でシミュレーション
この時点で、Stokeオブジェクトのデフォルトの設定を使用してパーティクルのシミュレーションを行うことができます。
100パーティクルは、101フレームを越えて、フレームごとにティーポッドの表面から放出され、実際の速度の方向を使用したWind Space Warpのフォース ベクトル(力の方向)を使用して伝わります。
- SIMULATEボタンを押します。
- プログレスバーが100%になるまで待ちます。現行のクアッドコアシステム上では、2秒程度かかります。
結果:PRTシーケンスがディスクに保存され、メモリキャッシュにも格納されます。
パーティクルの動作結果を見るためにタイムスライダをドラッグできます。下の画像は50フレーム目のシミュレーションの結果です:
パーティクルの見た目を変える
デフォルトでは、パーティクルは大きな点で描画されています。見た目をベロシティに変更してみましょう。
- Viewport Displayロールアウトで、DisplayドロップダウンリストでVelocityに変更します。
結果:50フレーム目の見た目は次のようになります。
描いたラインは、パーティクルの位置から開始し、次のフレームの位置方向を元に、パーティクルの速度ベクトルを表示します。
速度ベクトルを表示するために、パーティクルの色を変更することもできます。
- Viewport Displayロールアウトで、ColorドロップダウンリストからVelocityに変更します。
結果:パーティクルはベロシティチャンネルのXYZコンポーネントにしたがってRGBカラーに表示します。
フォースとベロシティフィールドの違いを理解する
私たちが作成したアニメーションは、実際のベロシティフィールドとして風のフォーススペースワープを使用しています。
通常、パーティクルフローかレガシーパーティクルを使用したとき、風は各フレームでだんだん速くなるようにパーティクルを加速します。抵抗を生み出すためのドラッグ(抗力)のような別の力がなければ、パーティクルは永遠に加速します。フォースは、その影響力の適用を停止する必要があり、パーティクルは最後の速度にあわせて動き続けます。これは、ニュートンの運動法則と一致しています。
Stokeを使用した場合、パーティクルが、別々には動いていないが、その代わりに、それらが、動く要因となる流体にはめ込まれたと仮定します。
パーティクルは、自身の速度を維持しておらず、動きをもたらすベロシティフィールドの速度を継承します。
この場合、風のスペースワープがフィールドを定義し、パーティクルはフィールド内のベクトルにしたがって移動します。フィールドの速度が0になった場合(たとえばユーザが0.0にスケールファクターをアニメーションしたため)、パーティクルは移動を停止します。
パーティクルフローを作成することで、この違いを可視化できます。
- パーティクルビューをひらき、標準フローを作成します。
- 発生時間を0から100に、レートを3000に設定します。(毎30フレームあたり100個のパーティクル=3000個/秒)
- 速度と回転・シェイプオペレータを削除します。
- 位置アイコンオペレータと位置オブジェクトオペレータを入れ替え、オブジェクトのティーポットを選びます。
- フォースオペレータを作成して、風のスペースワープを選びます。
- 表示オペレータで表示モードをラインにして、色を黄色に設定します。
結果:50フレーム目で、パーティクルが風の力によって時間をかけて加速するため、パーティクルフローが大幅に違って見えます。
この結果を、Stokeの動作と一致させることができます。
- ドラッグスペースワープを作成し、線形ダンピングのX、Y、Z軸を100%にします。
- パーティクルフローで別のフォースオペレータを既存のオペレータの前に追加し、ドラッグスペースワープを追加します。これは、各フレーム上で前に累積された速度を打ち消します。
- 既存のオペレータ(風のフォース)の影響%を3000.0%に設定します。
ベロシティフィールドをアニメーション
ベロシティフィールドの起点は、ワールド空間のオブジェクトの位置によって、タービュランスが0.0より大きい風のスペースワープから作成されます。
Space Warp オブジェクトが動いていない時、速度 フィールドの一致は、空間で調整(固定)され、そして、Stoke パーティクルは、時間の経過とともにラインのフォースを通過します。
これは、風オブジェクトを他の場所に移動するだけで、別の結果になると予想します。
- 風オブジェクトのX座標を30.0から90.0に変更します。
- 再度シミュレーションを行ないます。
結果:違いを比較します。空間内でベロシティフィールドがずれたため、パーティクルの分布が異なっています。
当然、アニメーションするために時間の経過とともにベロシティフィールドの位置をずらすことができます。
- 風オブジェクトのX座標が、0フレーム目は、30.0に100フレーム目で120.0に変更してキーフレームを打ちます。
結果:ベロシティフィールドが時間の経過でシフトしていき、もっと味のある動きを作り出しています。