チュートリアル / 3ds Max:プラグイン活用で表現の幅を拡げよう!
第16回:tyFlow 破壊オブジェクトから炎上させよう!(後編)

  • 3ds Max
  • アニメーション
  • エフェクト
  • コラム
  • チュートリアル
  • 学生・初心者
  • 映画・T
タイトルバナー

こんにちは!

株式会社DEFT、代表取締役の子安と申します。

今回は前回の前編に続いて後編に入ります!
tyFlowで木材を破壊するところまで作成したので、次は破壊した木材から発火させていく仕組みを作っていきましょう!

前回は下記のStep01~Step05まで進めて行きましたので、Step06の後編から説明を進めて参ります。

~前編~
Step01 木の壁を作成
Step02 球体のアニメーションを取り込む(キャラなどが壁を突破するなどに置き換え可能な為)
Step03 木の壁をtyFlow化し、破壊シミュレーションをセットアップする
Step04 木のマテリアルをtyFlow内でランダムに割り当てる
Step05 レンダリングを行う

~後編~
Step06 破壊した木から出火させる
Step07 シミュレーショングループを作成し、シーン内の別のtyFlowに受け渡す
Step08 砕けた木の一部から発火する
Step09 火がトルネードし、空に舞い上がる
Step10 火と同じような挙動で塵が舞い上がるtyFlowをセットアップ
Step11 塵のモデリングを行い、Step10のtyFlowを塵に差し替える
Step12 レンダリングを行う

使用ツールバージョンは下記の通りとなります。

3ds Max 2027.2 Update
V-Ray7 update 3 hotfix 1 DR2
tyFlow PRO v2.100(Step11まではFREE版でも可能)

それでは早速燃やして行きましょう!

Step06 破壊した木から出火させる

それでは前回の配布データを使用して進めて行きます。

データを開いたら、Scene Explorer - Layer Explorerを開きます。

Attack_Ball_Render(-1F)を削除しAttack_Ballを表示

Attack_Ball_Render(-1F)
というアニメーションオブジェクトが入っているので、そちらを削除しAttack_Ballを表示します。

※Attack_Ball_Render(-1F)オブジェクトはシミュレーションで使用していたAttack_Ballのアニメーションを1フレームずらしたオブジェクトとなります。

Attack_BallはSurface TestオペレーターのDistance設定(30cm)により、対象オブジェクトに近づく30cm手前から破壊の事象が発生する為、レンダリングする際はアニメーションやシミュレーションのタイミングを補正する事があり、Attack_Ball_Render(-1F)はそのためのオブジェクトとなります。

UtilitiesのMore…からUVW Removeを選択

一度マテリアルを割り当てた為、tyFlowのDisplayオペレーターの各イベントの状態が認識しづらいので、UVWリムーブユーティリティを使用してマテリアルの表示をリセットします。

①Utilitiesをクリックします

②More…ボタンをクリックします

③UVW Removeを選択します

④OKボタンをクリックします

UVW Removeのパラメーターが表示されます。

tyFlow_Collapseを選択しUVW RemoveのMaterialボタンをクリック

①tyFlow_Collapseを選択します

②UVWパラメーターパネルのMaterialボタンをクリックします

これで表示がオブジェクトのカラーになりtyFlowの各イベントが視覚化されやすくなりました。

いよいよInfernoを使用して木材を燃やしてみたいと思います。

tyFlow EditorのNewで新しいtyFlowを作成

tyFlow Editorを開きます。

①のNewをクリックして新しいtyFlowを作成します。

Birth Infernoオペレーターをドラッグ&ドロップ

①Birth Infernoオペレーターをウィンドウにドラッグ&ドロップします

②Event_001が作成され、必要なセットが同時に配置されます

tyFlowをtyFlow_Infernoにリネーム

作成したtyFlowをtyFlow_InfernoにリネームしてtyFlowレイヤーに移動します。

Birth InfernoのStart frameとVoxel sizeを設定

①Birth Infernoオペレーターを選択します

②Start frameを110に設定します

③Voxel sizeを0.65cmから5.0cmに変更します
 ※Voxelを大きくする事で、突然のPC負荷を回避しておきます

動画の流れで炎を出すオブジェクトを指定します。
動画の手順は以下の通りです。

①Inferno Emitterオペレーターを選択します

②ObjectsリストのPickボタンをクリックします

③Scene ExplorerのtyFlow_Collapseを選択します

④ObjectsリストにtyFlow_Collapseが登録されます

⑤タイムスライダを動かしてみると指定したオブジェクト、指定したフレーム(110フレーム)から炎が立ち上がるのが確認出来ます

このようなセットアップはtyFlow_Collapse全てに炎が出てしまいます。

広い範囲に吹き飛ぶ瓦礫などを作成した場合、広範囲に渡りシミュレーションのグリッドが消費されてしまう事になります。

以下の内容で範囲を限定する事も可能です。

Inferno BoundsオペレーターをInferno Emitterの下に配置

①のInferno BoundsオペレーターをInferno Emitterオペレーターの下②にドラッグ&ドロップします

Create > Helpers > tyFlowを選択

①Createを選択します

②Helpersを選択します

③リストからtyFlowを選択します

tyIconボタンをクリック

tyIconボタンをクリックしてビューポート上からシーン内に配置します。

tyIconをRectangleからBoxに変更

tyIconをRectangleからBoxに変更します。

ビューポート上でBoxになったtyIcon

tyIconをBoxにするとビューポート上もBoxに変更されました。

tyIconをtyFlowレイヤーに移動

tyIconをtyFlowレイヤーに移動しておきます。

Inferno BoundsのInclude boundsにtyIconを登録

①Inferno Boundsオペレーターを選択します

②Include boundsリストのPickボタンをクリックします

③リストにtyIconが登録されました

Includeした箇所のみ反応するInferno Emitter

タイムスライダを動かしてみると、Inferno BoundsオペレーターでIncludeした箇所のみInferno Emitterオペレーターが反応しているのが分かります。

Voxel sizeを2.0cmにした状態

①Birth Infernoオペレーターを選択します

②Voxel sizeを2.0cmにします

精度が高まり矢印のように炎と煙が四角い形状で計算されているのが分かります。

このように、場所の指定は出来るのですが、破壊された特定の木材を指定するのには不向きです。

とは言え、規模の大きな爆発になった際にPCスペックにより表現に限界が出てくる場合にInferno Boundsオペレーターは非常に有効なオペレーターとなります。

以上で「Step06 破壊した木から出火させる」は完了となります。

Step07 シミュレーショングループを作成し、シーン内の別のtyFlowに受け渡す

続いて、発火箇所を限定する為にtyFlow_Collapseで作成した破壊シミュレーションの一部を、シーン内の別のtyFlowに引き継がせて、炎のエミッターとして切り分けて行く準備をしていきましょう!

作業がし易いように、下記の手順で炎のtyFlowをオフにします。

Inferno Boundsオペレーターをオフ

Inferno Boundsオペレーターのアイコンをクリックし、オフに変更します。

Event001をイベントごとオフ

続いてEvent001の電球アイコンをクリックしてイベントごとオフにします。

これで作業効率化を上げて行きます。

シーンにSphereを配置

破壊後の木材を指定するトリガーとして、シーンにSphereをセットしていきます。

①Createタブをクリックします

②Geometryをクリックします

③Sphereボタンをクリックします

④シーンにドラッグ&ドロップをしてSphereを配置します

⑤Radiusは約24cmに設定しSegmentsはデフォルトの32とします
 ※大きさやポジションは任意で構いません

Sphereの配置座標

配置した場所は下記の通りとなります。
x:71.37cm
y:104.486cm
z:0.0cm
※Attack_Ballが木材を破壊した直線上辺りにセットしました。

SphereをFire_Trigger_Ballにリネーム

SphereをFire_Trigger_Ballにリネームしました。

Surface TestオペレーターにFire_Trigger_Ballを登録

tyFlow_CollapseのtyFlow Editorを開きます。

①Surface TestオペレーターをEvent004のTime Testオペレーターの下②の位置にドラッグ&ドロップします

③Surface TestオペレーターのObjectsリストのPickボタンをクリックして、Fire_Trigger_Ballを選択します

Surface TestのTimingをFrameに変更

①Surface Testオペレーターを選択したままにしておきます

②TimingロールアウトのドロップダウンリストをContinuousからFrameに変更します

③Rangeの 0 to 1000 を 85 to 1000 に変更します

PhysX Switchオペレーターを配置して接続

①PhysX SwitchオペレーターをEditor内に②ドラッグ&ドロップします

③Surface TestオペレーターとPhysX Switchを接続します

Event007が作成され、Displayカラーは青となります。

これで破壊が行われた後のEvent004(Displayカラー白)の事象に対して、Fire_Trigger_BallのSurface Distance領域に近づいた木片がEvent007に継承される流れとなります。

続いてFire_Trigger_Ballのアニメーションを作成します。

動画のようにFire_Trigger_Ballに動きを付ける事で、Event007に移行する木片を時間経過で表現する事が出来ます。

動画の内容は下記の通りとなります。

①tyFlow_CollapseのEvent001をオフにします

②Fire_Trigger_Ballを選択します

③Auto Keyをクリックします

④Fire_Trigger_Ballをスケール0から徐々に大きく、加えて移動も行う事でアニメーションを作成します
※こちらの位置やスケールアニメーションは任意で構いません。
ポイントとしてはEvent004(Displayカラー白)のエリアにアニメーションする事です。

⑤Auto Keyを解除します

⑥tyFlow_CollapseのEvent001をオンにします

⑦StopオペレーターをEvent007のPhysX Switchの下に配置します

これで破壊した木材から発火させる木片を指定出来たので、tyFlow_CollapseのEvent007をシーン内の他のtyFlowに受け渡す準備をします。

Particle GroupオペレーターをStopの下に配置

①Particle GroupオペレーターをEvent007のStopオペレーターの下②に配置します

Particle Groupで16番をクリック

①Particle Groupを選択した状態にします

②Particle GroupパネルのChangeにチェックが付いている状態(デフォルト)、Setにチェックが付いている状態(デフォルト)で16番をクリックします
※番号は後に紐づける番号と同じ番号になっていれば紐づくので任意で構いません。

tyFlow EditorのNewで新しいtyFlowを作成

tyFlow EditorのNewをクリックして新しいtyFlowを作成します。

新しいtyFlowをtyFlow_Collapse_PRT_Groupにリネーム

新しく作成したtyFlowの名前をtyFlow_Collapse_PRT_Groupに変更し、tyFlowレイヤーに格納します。

Birth FlowのSource flowとSimulation groupsを設定

①tyFlow_Collapse_PRT_Groupを選択します

②Birth Flowオペレーターを選択します

③Editorウィンドウにドラッグ&ドロップします(自動でEvent001が作成されます)
 ※Event001のDisplayカラーはエメラルドグリーン

④Birth Flowオペレーターを選択している状態で右のパネルのBirth Flowロールアウト内、Source flowのNoneボタンをクリックし、tyFlow_Collapseを選択します
※画像は選択後の表記です。選択前はNone表示となります。

⑤Simulation groups欄の16番を選択します

tyFlow_Collapse_PRT_Groupのカラーで表示された木片

赤丸で囲った箇所をご覧頂ければ、新しく作成したtyFlow(tyFlow_Collapse_PRT_Group)のカラーでビューポート上に表示されているのが分かります。

これで他のtyFlow(tyFlow_Collapse)で作成した木片から一部の木片を指定して、他のtyFlowに移行する事が出来ました。

以上で、Step07の「シミュレーショングループを作成し、シーン内の別のtyFlowに受け渡す」項目は完了となります!

続いてtyFlow_Collapse_PRT_Groupから発火させてみましょう!

Step08 砕けた木の一部から発火する

Step08の項目通り、砕けた木の一部は抽出出来ました。

Step06で炎のセットアップ(tyFlow_Inferno)は一部完了しているので、このStepはとても簡単な内容となります。

tyFlow_InfernoのEvent001をON

①tyFlow EditorのtyFlow_Infernoタブを選択します

②Event001の電球アイコンをクリックし、Event001をONにします

Inferno EmitterのObjectsリストからtyFlow_Collapseを削除

①Inferno Emitterを選択します

②Objectsリストに登録されていたtyFlow_Collapseを選択します

③Removeボタンをクリックします

PickボタンでtyFlow_Collapse_PRT_Groupを選択

①Pickボタンをクリックします

②Scene ExplorerからtyFlow_Collapse_PRT_Groupを選択します

ObjectsリストにtyFlow_Collapse_PRT_Groupが登録

③ObjectsリストにtyFlow_Collapse_PRT_Groupが登録されます

Birth InfernoのStart frameを85に設定

①Birth Infernoオペレーターを選択します

②Start frameを85にセットします

木片から炎が上がるビューポート

タイムラインを再生すると85FタイミングからtyFlow_Collapse_PRT_Groupで受け取った木片から炎が上がっていますね!

GridsのVoxel sizeを1.0cmに変更

①tyFlow_Infernoオペレーターを選択します

②Grids欄のVoxel sizeを1.0cmに変更します

Scene ExplorerでtyIconを非表示

Scene ExplorerにてtyIconを非表示にします

Tools > Screen Capture > Create tyPreview

一度tyPreviewでムービーを書き出してみましょう

①のToolsから②のScreen Capture > Create tyPreviewを選択します

tyPreviewのセットアップ画面

tyPreviewのセットアップ画面です。
以前の回でも少し触れておりましたが、項目を少し説明させて頂きます。

①カメラを選択

②Frame Range

③解像度

④Displayのモードを設定します
 ClayモードやWireモードなどDisplay Preferenceで設定するものは基本的に入っております

⑤フレームナンバーやカメラの名前などをオーバーレイで書き出したムービーに記載出来ます

⑥出力先やファイル名を設定します

⑦各種設定後、Create PreviewボタンをクリックするとViewportのキャプチャが開始されます

書き出されたtyPreviewムービーとなります。
しっかりと、tyFlow_Collapse_PRT_Groupで指定した木片から発火してますね!

Step08は以上で完了となります!

Step09 火がトルネードし、空に舞い上がる

それでは項目通り、燃えた炎をトルネードさせながら空に舞い上がらせましょう!

Create > Shapes > Helixを選択

①Createタブを選択します

②Shapesを選択します

③Helixを選択します

動画のようにシーン内にHelix Shapeを配置していきます。

Helix001の各数値

作成したHelix001の各数値はこのようにしました。
こちらの数値は任意で構いません。

Helix001の配置座標

Helix001の配置座標はこのようにしました。
こちらの数値も任意で構いません。

TornadeレイヤーにHelix001を格納

Tornadeレイヤーを作成しHelix001を格納しました。

Inferno Spline ForceのSplinesリストにHelix001を登録

①Inferno Spline Forceを選択します

②Event001 Inferno Boundsの下にドラッグ&ドロップします

③SplinesリストのPickボタンをクリックします

④Helix001を選択しリストに登録します

Helix001に沿って上昇する炎

タイムスライダを動かすと炎がHelix001に沿って上昇していくのが分かりますね!

Pull forceを20cmに変更

①Inferno Spline Forceオペレーターを選択します

②Pull forceロールアウトのPull forceを10cmから20cmに変更します

Pull forceはSpline上の最も近い点に向かって流体を内側に引き込む力の値となります。

Follow forceを100cmに変更

①同じくInferno Spline Forceオペレーターを選択したままとなります

②Follow forceロールアウトのFollow forceを10cmから100cmに変更します

Follow forceはSplineに沿って追従する力の強さとなります

トルネードする炎のシミュレーション

迫力がありそうな炎になったので一度tyPreviewで書き出します。

tyPreviewを書き出してみました。

しっかりトルネードしてますね!

ヒント
もっと火力を上げたい場合や、逆に火力を抑えたい場合はInferno Spline Forceの数値をコントロールしたり、Fire_Trigger_Ballのサイズを広範囲にする、或いは小規模にするなど様々な点からアプローチする事で目指したい表現が可能になるかと思います。

Step09に関してはこれで完了となります!

Step10 火と同じような挙動で塵が舞い上がるtyFlowをセットアップ

炎と一緒に舞い上がる塵を作成していきましょう!

tyFlow EditorのNewで新しいtyFlowを作成

tyFlow EditorのタブからNewをクリックして新しいtyFlowを作成します

新しいtyFlowをtyFlow_Dust_Vortexにリネーム

新しいtyFlowの名前をtyFlow_Dust_VortexとしtyFlowのレイヤーに格納しました。

BirthオペレーターのStartとEndを設定

①tyFlow EditorのtyFlow_Dust_Vortexタブを選択します

②Birthオペレーターを選択します

③ウィンドウにドラッグ&ドロップします(Event001は自動作成されます)

④BirthロールアウトのParticle Birth欄のStartを85 Endを250に設定します

Position ObjectオペレーターにFire_Trigger_Ballを登録

①Position Objectオペレーターを選択します

②Event001のBirthオペレーターの下にドラッグ&ドロップします

③ObjectsリストのPickボタンをクリックします

④Scene ExplorerのFire_Trigger_Ballを選択します

⑤ObjectsリストにFire_Trigger_Ballが登録されます

DisplayオペレーターのDisplay modeをGeometryに変更

①Event001のDisplayオペレーターを選択します

②Display modeをSmall dotsからGeometryに変更します

Path FollowオペレーターにHelix001を登録

①Path Followオペレーターを選択します

②Event001のPosition Objectオペレーターの下にドラッグ&ドロップします

③ObjectsリストのPickボタンをクリックします

④Scene ExplorerのHelix001を選択します

⑤ObjectsリストにHelix001が登録されます

Path FollowのSpinとDistance to Shapeを設定

続いてObjectsリスト(Path Followロールアウト)の下部にある、Forcesロールアウト内のSpin項目のVelocityを0.00cmにします。
Distanceロールアウト内のDistance to Shape欄のLockedにチェックを入れます。

ShapeオペレーターのScaleとShape meshを設定

①Shapeオペレーターを選択します

②Event001のPosition Objectオペレーターの下にドラッグ&ドロップします

③SizeのScaleにチェックを入れて、Scaleに600.0%の数値を入れてVariationは50.0%にします

④Meshロールアウト内のShape meshは3Dにチェックをし、Leaves(Ash)を選択します

Path FollowのTimingをParticle ageに変更

①Path Followを選択します

②TimingをContinuousからParticle ageに変更します

③Rangeを20 to 1000に変更します
パーティクルが発生して20フレーム後からPath Followが行われる設定です。

SlowオペレーターをPath Followの下に配置

①Slowオペレーターを選択します

②Event001のPath Followオペレーターの下にドラッグ&ドロップします

SpinオペレーターのSpin rateとVariationを設定

①Spinオペレーターを選択します

②Event001のShapeオペレーターの下にドラッグ&ドロップします

③Spinロールアウト内、Spin rateを600.0に変更しVariationを50.0に変更します

以上で炎のトルネードに合わせて塵が渦を巻きながら上昇していくセットアップが出来ました。

一度tyPreviewで確認してみましょう!

炎に合わせて仮の塵が舞い上がりました!

このステップは以上で完了となります!

Step11 塵のモデリングを行い、Step10のtyFlowを塵に差し替える

塵のモデリングは動画でご紹介致します!

動画のようにPlaneから塵を作成しました。

PlaneはあらかじめUVが0から1の範囲で開かれているため、後々テクスチャを乗せるのに効果的です。
動画は下記の内容となります。

①塵をPlaneからEdit Polyの頂点編集でモデリングする

②デフォーマー系でニュアンスを付けて行く

③TurboSmoothをかける

④Step10で作成したtyFlow(tyFlow_Dust_Vortex)のShapeオペレーターを選択する

⑤Reference nodeのNoneをクリックする

⑥作成したPlane001を選択する

⑦ShapeオペレーターのSize項目にあるscaleを100.0%に変更する

Plane001をDust_Modelにリネーム

作成したPlane001をDust_Modelにリネームし、Dust_Modelレイヤーに格納しました。

tyPreviewを書き出しておきます。

仮の塵が作成したモデルに置き換えられました!

以上でこのStepは完了となります!

ここからはVDBの書き出しとPRO版が必要となりますので、データ配布はこの段階までのものを配布致します。

データバージョン
3ds Max 2027.2 Update
V-Ray7 update 3 hotfix 1 DR2
tyFlow v2.100

Step12 レンダリングを行う

前回一度レンダリングは行っていたのですが、後編の最初にマテリアルなどを外していたのでもう一度木材のマテリアルを適用します。

加えて、第14回の炎のレンダリングと同じような設定を行い、炎が光源となるような設定も行います。

tyFlow_CollapseのEvent007にMeshオペレーターを追加

シーン内のtyFlow(tyFlow_Collapse)のEvent007を今回作成したのでMeshオペレーターを追加します。

tyFlow_Dust_VortexにMeshオペレーターを追加

tyFlow(tyFlow_Dust_Vortex)も今回作成したのでMeshオペレーターを追加しておきます。

Inferno EmitterのFuelを0.6に変更

①Inferno Emitterオペレーターを選択します

②Fuelにチェックを入れて、数値を0.6に変更します

Inferno ExportでVDBを書き出し

①Inferno Exportを選択します

②Event001のInferno Recallオペレーターの下にドラッグ&ドロップします

③Solver VDB filenameと出力パスを設定します

④Frame Rangeを0 to 250に設定します

⑤Generate VDB filesをクリックして書き出します

Complete画面が出たら書き出し完了です!

tyFlow_Inferno内のEvent001をオフ

tyFlow_Inferno内のEvent001をオフにします。

書き出したVDBの読み込み方法やレンダリング設定は、第14回のコラム内のStep05をお読み頂ければと思います。

最後にレンダリングした動画をご覧くださいませ。

動画をご覧いただければコラムで進めた内容の他に下記内容が含まれております。
・Attack_Ballからも炎が出ている
・木材に衝突した際に火の粉が舞っている
・Attack_Ballのアニメーションタイミングを1フレーム早くしている

主にこのような内容が含まれております。
説明はしていないのですが、これらは第14回のコラム内容にて足から出る炎や火の粉の内容と同じような内容となりますので割愛させて頂きました。

やはり動画にする上では、Attack_Ballに炎が纏っていて割れた木材に着火する方が成り行き上自然です。

またWood_WallにAttack_Ballが衝突した際に火の粉が出る方が自然です。

Attack_Ballのアニメーションを1フレームずらした理由に関しましては、本コラムのStep06の冒頭に記載させて頂いている内容と同じです。

是非、今までの内容をミックスして頂き、エフェクトシミュレーションを盛り上げて頂ければ幸いです!

次回はtyFlowを用いて車の制御などを行う手法をご紹介出来ればと思っております。

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