チュートリアル / 3ds Max:プラグイン活用で表現の幅を拡げよう!
第5回:PhoenixとtyFlowで遊ぼう 

  • 3ds Max
  • アニメ
  • ゲーム
  • コラム
  • シミュレーション
  • チュートリアル
  • 学生・初心者
  • 建築・製造・広告
  • 映画・TV

こんにちは!
株式会社DEFT、代表取締役の子安と申します。

今回は3ds MaxとPhoenix 5とtyFlow を活用した内容となっております。

3ds Max 2026のダウンロードが可能となりましたが、Phoenixプラグインがまだ対応していなかったので、今回も以前と同じように3ds Max 2025.3にて進めて参ります。

V-Ray 7、Phoenix 5 共に30日間のトライアル版もありますので、下記にリンクを貼っておきます。
https://www.chaos.com/jp/free-trial

tyFlow導入の手順などは前回の「第1回:もう怖くない!無料で始めるtyFlowと仕組みを公開!」
こちらをご確認くださいませ。

前回の記事でPhoenixがサクッとシミュレーションを開始出来る事が伝わったかと思います。

今回はPhoenixとtyFlowを絡めて、どのような表現が可能かお伝え出来ればと思っております。

弊社実験の一部ではありますが実験動画として下の動画を貼り付けておきます。

それでは早速始めていきましょう!

Step1 ~Phoenixで炎、tyFlowで灰を表現してみよう~

まず最初にお伝えするのは、シミュレーションで生成されたVelocityチャンネルを、tyFlowに取り込む手順となります。

Velocityチャンネルとは速度と向きをデータ化したものです。

今回は以下の内容を構築していきます。
①Phoenixで炎のシミュレーションをセットアップする。
②炎のシミュレーション及びVelocityチャンネルを書き出す。
③tyFlowにて書き出されたVelocityチャンネルを取り込む。
④炎の動きにマッチした灰のような表現をtyFlowで作成する。

以上の工程で纏めていきます。

①Phoenixで炎のシミュレーションをセットアップする。

画像の通り30cm四方のBoxを配置し、ポジションは0,0,0にします。

前回の記事と同じように、Customize > Units Setupなどは注意をしていきましょう。
今回も下記の通りにセットアップしております。
System Unit Setup=Centimeters
Display Unit Scale=Centimeters

画像の通り30cm四方のBoxを配置し、ポジションは0,0,0にします。

Boxを選択したまま、Fireのプリセットをクリックします。

Boxを選択したまま、Fireのプリセットをクリックします。

シミュレーションセットが配置されます。

シミュレーションセットが配置されます。
右のパネルのOutputから”Simulation Cache Save Path:”内のbrowseボタンをクリックして、シミュレーションキャッシュの保存場所と保存名を任意で命名し保存します。

Output内のOutput Grid Channels内にGrid Velocityのチェックが入っているか確認します。

Output内のOutput Grid Channels内にGrid Velocityのチェックが入っているか確認します。
入ってない場合はチェックを入れましょう。

これでシミュレーションのセットアップは完了です。

②炎のシミュレーション及びVelocityチャンネルを書き出す。

Simlation内のStartボタンをクリックします。

Simlation内のStartボタンをクリックします。

動画のようなシミュレーション結果になりました。

加えて動画のようにVelocityチャンネルを可視化することも出来ます。

表示の方法はPreview内で調整致します。

Preview

・GPU Shaded Previewにチェックが入っている場合はオフ
・Voxel Preview内のチェックをVelocity Streaminesのみにします。
・RGBのAuto Rangeのチェックを外します。
・Velocity Streaminesの数値が入力可能となります。

画像内の70.0と入力している箇所が遅い方で色など任意で設定可能です。

As Rainbowのチェックを外し数値を変更し、黒と緑のみの設定

As Rainbowのチェックを外し数値を変更し、黒と緑のみの設定にしてみました。
このような調整を色々施してみる事で、理解が早まるかと思います。

③tyFlowにて書き出されたVelocityチャンネルを取り込む。

細かい手順もありますので動画で纏めております。

大枠の手順としては下記の通りとなります。
①tyFlowを配置する。
②各オペレーターを配置しパーティクルが出現するようにセットアップする。
③Fluid Forceを追加する。
④Fuild ForceでPhoenixを認識させる。
⑤パーティクルの挙動がPhoenixと同じようになっているか確認する。

④炎の動きにマッチした灰のような表現をtyFlowで作成する。

焼かれたオブジェクトから灰が舞い散るような表現を、tyFlowのShapeプリセットで表現して行こうと思います。

こちらも細かい手順もありますので動画で纏めております。

以上のような手順で灰のような表現が可能となりました。

それでは炎と灰が入った動画をご覧ください。

炎だけよりは多要素が入ってきてリアリティが増してきますね。

例えばではありますが、動画内のSurface Testから先のイベント内で更にチリが細かくなっていく様子を作成するのも可能ではありますし、表現は無限大です。

加えて、Phoenixで作成した炎はV-RayのレンダリングでLight Sourceにもなるため、実際の炎の動きに準じたライティングがセットアップ無しで可能となります。

また、燃えた灰(火種が残っている)から黒い灰に変化するなども表現可能です。
表現のヒントとしては、第2回:生産工程ビジュアライゼーションのヒント内のCustom Propertiesを用いて表現可能ですし、アニメーションテクスチャを使用するのも良いかと思います。

この派生で様々な事が出来ますので是非やってみてください!

続いて、PhoenixとtyFrowの組み合わせとして同時シミュレーションの作例を用意いたしました。

Step2 ~PhoenixとtyFlowを同時シミュレーションをしてみよう~

PhoenixとtyFlowは同時シミュレーションも可能です。

ひとつサンプルムービーを作成致しました。

動画の解説をしますと下記の通りとなります。
・海洋シミュレーション=Phoenix
・乗り物=Phoenix Active Body
・岩=tyFlow

このような振り分けとなります。

それではこのセットアップ方法を簡易モデルを使用して順に説明していきます。

乗り物を用意

乗り物を用意します。オブジェクト名はvehicle(以降vehicle)としました。
タイムスライダーは000F~150Fとしました。

vehicleを選択した状態でアイコンをクリック

Setup a SpeedBoat sim~
vehicleを選択した状態でこちらのアイコンをクリックします。

必要なツールがセットアップされる

必要なツールがセットアップされました。

Output Pathを任意で指定

Output Pathを任意で指定して頂き、Cacheファイルも任意で命名してください。

Simulation内のStartをクリック

Simulation内のStartをクリックします。

シミュレーション結果は動画の通りとなります。

こちらのプリセットは選択していたvehicleも自動で動くようになります。

これらは今回のプリセットSetup a SpeedBoat sim for the selected objectsを選択すると、自動で選択していたオブジェクトが動く仕組みとなります。

別レイヤーで生成されインスタンスオブジェクトでアニメーションキーがベイクされた状態

こちらの動いているボートは、別レイヤーで生成されインスタンスオブジェクトでアニメーションキーがベイクされた状態となります。

複製コピーする

こちらを複製コピーします。
今回は、vehicle_phx_clone_copyという名前にしました。
複製する理由としては、後述するtyFlowと同時シミュレーションの組み方をした際に、進行する仕組みが切り離される上に、上書きされてしまうのを避ける為です。

複製が完了したら、インスタンスを解除します。(コピー時に通常コピーでも構いません)

続いてtyFlowのセッティング

続いてtyFlowのセッティングに入ります。

vehicleの進行上に岩(以降Rock)を配置します。

Birth Objectsオペレーターを配置し、ObjectsにてRockを選択

Birth Objectsオペレーターを配置し、ObjectsにてRockを選択します。

Fracture系のオペレーターを追加

Fracture系のオペレーターを追加します。
※以前はVoronoi Fractureを使用しておりましたが、PCスペックがある場合はMultiFractureをお薦めします。

こちらで事前に分割をしておきます。
理由としましては以降のSurface TestにてRock全体が反応してしまわないようにする為です。

続いてSurface Testオペレーターを追加

続いてSurface Testオペレーターを追加します。

Distance Test内のAbsolute distanceのValueを100cmにします。

Surface Test内のObjectsにvehicle_phx_clone_copyを追加

Surface Test内のObjectsにvehicle_phx_clone_copyを追加します。

これで、vehicleが近づいてくると次のイベントに移行します。

Fracture系のオペレーターを追加

乗り物が近づいてくると、さらに細かく割れるようにしたいので、Fracture系のオペレーターを追加します。Count(分割数)は30とします。

物理シミュレーションを入れたいのでPhysX Shapeオペレーターを追加

物理シミュレーションを入れたいのでPhysX Shapeオペレーターを追加します。

vehicleとRockの衝突判定をさせたいので、PhysX Collisionオペレーターを追加し、Collidersにvehicle_phx_clone_copyを追加

vehicleとRockの衝突判定をさせたいので、PhysX Collisionオペレーターを追加し、Collidersにvehicle_phx_clone_copyを追加します。

Surface Testの追加でEvent_003へ移行するように設定

更に細かく岩を砕く為に今回はEvent_001からEvent_002と同じように、Surface Testの追加でEvent_003へ移行するようにしました。

Event_003に関しまして
Event_002のSurface TestのDistance : 30cm
Voronoi Fracture Count(分割数) : 15
PhysX Collision : Event_002と同じ
以上の設定にしておりますが、本来は更に何かに当たって細かく砕けるのが法則としては良いかと思います。
これらを踏まえ、皆様の落としどころや拘りがあるかと思いますので任意でEvent_003を構築してみてください。

tyFlowを選択し、修正パネル内のPhysX内にてGround colliderのHeightを-50cmに設定

tyFlowを選択し、修正パネル内のPhysX内にてGround colliderのHeightを-50cmにします。
こちらはDefaultが0の為、PhysXで崩壊シミュレーションを行うと、0地点にプレーンやオブジェクトが無いにも関わらず高さ0地点で衝突判定が行われます。

今回は海中もあるため、地面の衝突判定を-50cmに下げました。

こちらの設定も、任意でシーンに見合った高さを設定すると良いでしょう。

今回のおおまかな流れを纏めると以下の通りです。

①Event_001で事前に割っておく。
  ↓
②乗り物が近づいてくると乗り物に近い岩がEvent_002に移行する。
  ↓
③Event_002に入った岩はより細かく砕けつつ物理演算へと突入する。
  ↓
④乗り物が岩を押しのけていくので乗り物の衝突判定を入れる。
  ↓
⑤更に細かく砕ける仕掛けを入れる。
  ↓
⑥地面の衝突判定を下げる。

今回の流れはこのような流れで作成しました。

tyFlowのみのシミュレーション結果はこのような結果となります。

ここまで各々仕込んでいき、いよいよ同時シミュレーションとなります。
各々で良い結果が出ている場合は割と良い結果が得られると思います。

tyFlowの各々のイベントにMeshオペレーターを追加

tyFlowの各々のイベントにMeshオペレーターを追加します。

各々のMeshオペレーターのRender Onlyのチェックを外します。

続いてPhoenixのGridを選択します。

Scene Interaction内にてInclude Listにチェックが入っていない場合はチェックを入れる

右の修正パネル内のScene Interaction内にてInclude Listにチェックが入っていない場合はチェックを入れます。

Addボタンをクリックし、tyFlowとアニメーションベイク→複製されたvehicle_phx_clone_copyを選択します。

ActiveBodies001_active_bodiesというレイヤー(最初のPhoenix Simlationにて自動生成されたレイヤー)にvehicle_phx_clone_copyが入っている場合、Phoenixを再計算した際にレイヤーの中をクリアにしてしまいますので、別のレイヤーを作成して逃がしておく

また、ActiveBodies001_active_bodiesというレイヤー(最初のPhoenix Simlationにて自動生成されたレイヤー)にvehicle_phx_clone_copyが入っている場合、Phoenixを再計算した際にレイヤーの中をクリアにしてしまいますので、別のレイヤーを作成して逃がしておきます。

同時シミュレーションのセットアップはこれだけです!

Simlation内のStartをクリック

Simlation内のStartをクリックします。

結果はこの通りとなりました。

レンダリングもテストで施してみました。

海面がある一定の高さで切れているのが分かるかと思います。
これらはGridの高さを上げたり、Gridをシミュレーションの状況に応じてContainer Walls
やAdaptive Gridなどで拡張するオプションなどもあります。
詳しくは下記を参考にしてみてください。
https://docs.chaos.com/display/PHX4MAX/Liquid+Grid

また、シミュレーションGridの外側に海を拡張するのは非常に簡単です。
手順としましては、

PhoenixのGridを選択し、Preview内のShow Meshにチェックを入れる

PhoenixのGridを選択し、Preview内のShow Meshにチェックを入れます。

Rendering内のModeをCap MeshからOcean Meshにする

Rendering内のModeをCap MeshからOcean Meshにします。

シミュレーションGrid以外の海を拡張する事が出来ます。

これだけでシミュレーションGrid以外の海を拡張する事が出来ます。

改めて海の拡張などを施したレンダリング画像をご覧ください。

注意点としては、こちらの手法で拡張した海は、シミュレーションとは異なる為、tyFlowの弾け飛んだ岩の入水に関しては、飛沫などのシミュレーションが行われません。

Grid自体を拡張するか別途シミュレーションを施すなどの対処が必要となります。

他にも色々とtyFlowとPhoenixでやり取りが出来るので、皆様も是非試してみてください!

今回のデータもアップしております。

各バージョンは以下の通りとなります。
3ds Max 2025.3
27.0-27.2.0.20885
Chaos Phoenix 5 ADV for 3ds Max 2025 / V-Ray 7.x
Version 5.23.00
Renderer V-Ray7 Hotfix .7.00.04

次回は、3ds MaxとV-Rayを使用した実写合成の基礎と、Nikon x REDやNikon x Z8を合成プレートの撮影機材として使用し、V-Rayレンダリング、ポストにおけるカラーマネージメントに関してもお伝えする予定です!

製品購入に関するお問い合わせ
オートデスク メディア&エンターテインメント 製品のご購入に関してご連絡を希望される場合は、こちらからお問い合わせください。