チュートリアル / 3ds Max:プラグイン活用で表現の幅を拡げよう!
第15回:tyFlow 破壊オブジェクトから炎上させよう!(前編)
- 3ds Max
- アニメーション
- エフェクト
- コラム
- チュートリアル
- 学生・初心者
- 映画・T
こんにちは!
株式会社DEFT、代表取締役の子安と申します。
今回はtyFlowで木材を破壊し、破壊したオブジェクトから炎上をさせる仕組みを紹介します!
これらはtyFlow間でデータを受け渡す仕組みを作成しており、シミュレーションの内部でグループを作成して、キャッシュ化せずに別のtyFlowに受け渡しながらシミュレーションを設定する方法となります。
動画のようなシミュレーションを各工程で管理して進めて参ります。
※オブジェクトの色が変遷している箇所が、tyFlowの各工程になっております。
このシミュレーション動画は下記の行程で進めております。
Step01 木の壁を作成
Step02 球体のアニメーションを取り込む(キャラなどが壁を突破するなどに置き換え可能な為)
Step03 木の壁をtyFlow化し、破壊シミュレーションをセットアップする
Step04 木のマテリアルをtyFlow内でランダムに割り当てる
Step05 レンダリングを行う
Step06 破壊した木から出火させる
Step07 シミュレーショングループを作成し、シーン内の別のtyFlowに受け渡す
Step08 砕けた木の一部から発火する
Step09 火がトルネードし、空に舞い上がる
Step10 火と同じような挙動で塵が舞い上がるtyFlowをセットアップ
Step11 塵のモデリングを行い、⑩のtyFlowを塵に差し替える
Step12 レンダリングを行う
以上となります。
今回は行程も多い為、下記の内容の前後編に分けて説明を行います。
前編
Step01〜Step05
後編
Step06〜Step12
使用ツールバージョンは下記の通りとなります。
3ds Max 2027.2 Update
V-Ray7 update 3 hotfix 1 DR2
tyFlow PRO v2.100(FREEでも可能)
※画面キャプチャ時はv2.010となりますが、影響は御座いません
それでは早速木の破壊シミュレーションセットアップを進めて行きましょう!
Step01 木の壁を作成する
Boxを複製して並べて壁にする為、中心から少し右側にBoxを移動します。
大体で構わないのですが、私のコピー元のBoxポジションは下記となります。
X: 78.028cm
Y: 1.33cm
Z: 0.0cm
Boxを選択し、Shiftキーを押しながらマニピュレーターのXを左クリックしたまま-X方向に移動します。
重なりがなくなった辺りで左クリックを解除するとClone Optionが出現します。
① 「Copy」を選びます
② Number of Copiesを12にします
Step02 球体のアニメーションを取り込む
シーンに予め作成されていたアニメーションファイルをマージします。
今回はシンプルな球のアニメーションとなりますが、木の壁を突き破るオブジェクトを「走るキャラクター」などに置き換えることも可能となります。
動画のような球体のアニメーションを取り込み、壊したいオブジェクトに位置合わせをしていきます。
球体をAttack_Ballにリネームします。
レイヤーエクスプローラーを開き、レイヤーを追加します。
レイヤー名もAttack_Ballとします。
単純な球体のアニメーションとなりますが、データを配布させて頂きます。
※Attack_Ballにリネーム済みとなります。
Step02のアニメーションの取り込みは短い行程となりますが、こちらの行程にて他のアニメーションデータを取り込む事で様々なシチュエーションの表現が可能となります。
Step03 木の壁をtyFlow化し、破壊シミュレーションをセットアップする
tyFlow Editorを開きます。
①オペレーター群からBirth Objectsオペレーターを選択します
②ウィンドウにドラッグ&ドロップをしてBirth Objectsオペレーターが配置されます
※同時にEvent_001が作成されます
③右のパネルのObjectsリストのPickボタンをクリックします
④Wood_Wallをレイヤーパネル、又はビューポート上で直接ピックしリストに登録します
レイヤーエクスプローラーを開きます。
①Wood_Wallを非表示にします
②tyFlowに置き換わったWood_Wallのみ表示されます
③置き換わったWood_WallはtyFlowのこちらの色(青)で表示されているのが分かります
動画の通り、tyFlowのEvent001にElement Fractureオペレーターを追加します。
Element Fractureはオブジェクトの要素を切り分ける事が出来ます。
動画の内容としては、Element Fractureオペレーターの下にSpinオペレーターを入れる事で、Wood_Wallの要素(Step01でAttachした13本の木材)が切り分けられた事を視覚的に説明しております。
Spinオペレーターを残したまま Element Fractureオペレーターを無効にすると、Wood_Wall全体がSpinしている事が分かります。
このようにElement Fractureオペレーターは、オブジェクトの内部に持っている要素(Element)を分割する事が出来る為、1つのオブジェクトで様々なアプローチが可能となります。
tyFlowに取り込む前に要素(Element)を確認するには、Edit Polyから要素(Element)編集に切り替えて要素(Element)選択をする事で、どのように分割出来るか確認する事が出来ます。
続いての項目は、動画説明の方が分かりやすいので一度動画をご覧下さいませ。
動画内の手順と解説は以下の通りとなります。
①Multi FractureオペレーターをEvent001のElement Fractureオペレーターの下に追加する
木材を個々の木材に分けた状態を作った上で、1本ずつ別れた木材にMulti Fractureオペレーターを適用する事で、自然な分割を表現する事ができます
②Time Testオペレーターを追加する(時間はデフォルト設定の10フレーム、±3フレーム)
つまり、7フレームからEvent002に継承されます
③Physx Shapeオペレーターを、空いているスペースにドラッグ&ドロップする
④自動でEvent002が作成されEvent002にPhysx Shapeオペレーターが配置される
Time Testオペレーターから継承する準備が出来ます
⑤Event001のTime TestオペレーターからEvent002に接続する
⑥タイムスライダを動かすとTime Testオペレーターで指定した10フレーム(±3フレーム)から落下が始まる
※7フレームから物理オブジェクトに切り替わる為、落下します
⑦Multi FractureオペレーターのFracture voronoi項目、Zの値を1.0から0.1に変更する
※木材が割れたような断面表現の為
注意点としてはオブジェクトを作成した際に、フロントビューなどで作成した場合はオブジェクトのローカル軸が変わってしまいます。
3ds Maxの基本としてトップビューで作成することで、ワールド軸とローカル軸の向きが一致する為、X,Y,Zに依存するパラメーターを調整する場合は調整が容易になってきます。
①のPhysx BindオペレーターをEvent002のPhysx Shapeオペレーターの下の②の場所に追加します。
Physx BindオペレーターはPhysxパーティクル間をBind(結ぶ)する事が出来ます。
Physx Bindオペレーターを追加することで、分断された瞬間から個々のパーティクルオブジェクトが四方に飛散(または崩壊)させる訳ではなく、オブジェクトをある程度繋ぎながら飛散(または崩壊)させる事が出来ます。
Physx Bind modeをDistance (tether)に切り替えます。
Distance (tether)はPhysxパーティクル同士がBindポイント間の一定の距離を維持しようとします。距離の伸縮性は無いので、今回の木材の破壊などには適しているかと思います。
画像左 Max Binds = 3
画像右 Max Binds = 10
Show Bindingsのチェックを入れるとパーティクルオブジェクト同士を繋げているBindの線が視覚化されています。
数値を10に変更すると、繋ぎ合わせている本数(Bindの数)が多いのが分かります。
現在のセットアップの状態はこのような状態となります。
10フレーム(±3フレーム)で物理オブジェクトになり倒壊しておりますが、隣り合う木材も繋ぎあったまま倒れているのが分かるかと思います。
次はAttack_BallがWood_Wallを通過するタイミングで倒壊させていきます。
①Attack_Ballが壁を通過するタイミングを確認します
②51フレームで通過しています
Time Testオペレーターに51フレームを指定するのもありではありますが、今回はあえてPhysx Shapeオペレーターでタイミングを管理します。
51フレームのタイミングで物理シミュレーションがスタートしました。
次にAttack_BallでWood_Wallを破壊していく仕組みを作成していきます。
動画の通り、Attack_BallでWood_Wallを破壊する事が出来ました。
動画のプロセスは以下の通りです。
①Surface TestオペレーターをEvent002に追加します
②Surface TestオペレーターのObjectsリストにAttack_Ballを登録します
③Physx Shapeオペレーターを空いているスペースに配置しつつEvent003を作成します
④Surface TestオペレーターからEvent003に接続します
⑤Event003のDisplayオペレーターのカラーを赤に変更します
※あくまで確認用の為、必須ではありません
⑥Surface TestオペレーターのDistance Test項目にある、Absolute distanceのValueを30cmに変更します
⑦Event003にCollisionオペレーターを追加します
⑧CollisionオペレーターのObjectsリストにAttack_Ballを登録します
⑨CollisionオペレーターのCollision radiusのRadiusを30cmに変更します
⑩Event003にPhysx Bindオペレーターを追加します
⑪Physx BindオペレーターのModeをDistance (tether)に変更します
⑫Physx BindオペレーターのProximity Bind項目を以下の設定にします
Distance : 150cm
Max binds : 10
⑬Time Configurationを開き、End Timeを250フレームに変更します
以上でAttack_BallがWood_Wallに衝突して破壊するフローが出来ました。
更に細かく粉砕するセットアップを行って行きます。
動画のような手順で破壊された木材が更に細かく砕ける仕組みが出来ました。
動画のプロセスは以下の通りとなります。
①Time TestオペレーターをEvent003に追加します
②Time TestオペレーターのTest ValueのValueを10.0から2.0にします
③Multi Fractureオペレーターを空いているスペースに配置します
④Event004のDisplayオペレーターのカラーを白に変更します
※あくまで確認用の為、必須ではありません
⑤Event003 Time TestオペレーターのTest Valueを2.0から5.0に変更します
※タイムスライダーを動かしたところ、Event004に変わるのが早かった為となります
⑥Event004 Multi FractureオペレーターのFracture voronoi項目、Zの値を1.0から0.3に変更する
※木材が割れたような断面表現の為に変更しました
ひとまずこれにてベースは完了です。
倒壊後、木材がプルプル震えている箇所などは下記の設定で止める事が出来ます。
緑色の木材(Event002)の揺れが大きいので、Event002にTime Testオペレーターを追加します。
PhysX化されたパーティクルオブジェクトは別のイベントで制御した方が遥かに管理しやすいかと思います。
①PhysX Switchオペレーターを空いているスペース(Event002の隣など)にドラッグ&ドロップします
※Event005が自動で作成されます
②Event002のTime Testオペレーターから、新しく出来たEvent005に接続します
Event002とEvent004のシミュレーションをストップさせるフローで組み上げた動画となります。
Step04 木のマテリアルをtyFlow内でランダムに割り当てる
続いて木のマテリアルをランダムに割り当てるのですが、手続きとしては至ってシンプルです。
Step03で作成したEvent001のElement Fractureオペレーターによって、木材は1本ずつバラバラになっております。
セットアップする前にV-Ray Renderに切り替えておきます。
Wood_Wallの木材は13本あります。
Material EditorでMulti/Sub-Objectを作成します。
①Set Numberボタンをクリックします
Set Number of Materialsパネルが表示されますので、Number of Materialsの数値を13にします
②Materialスロットに13種類のマテリアル(今回はVRay Mtl)を作成します
③右のスクロールバーを下げるとID1~ID13まで確認することが出来ます
④tyFlowを選択している状態で「Assign to Material Selection」をクリックします
これで13個のマテリアルがランダムでアサインされました。
Step05 レンダリングを行う
前半の締めとしてレンダリングをしてみましょう!
設定はこのような設定にしてみました。
Still Cam設定にて進めております。
※Still Camはシャッタースピードなど一般的に理解しやすいパラメータの為、こちらを選択しました。
画角やISO、絞り、シャッタースピードなどは任意で良いかと思います。
※特に露出を確定するものはHDRIやライティング状況によって異なる為、各々の設定で進めてください。
第6回の記事などを参考にして頂ければ幸いです。
https://area.autodesk.jp/column/tutorial/3ds-max-plugin/06-real-world-cameras-3ds-max-vray/
他、特筆すべき点としましては、Motion Blurをオンにしております。
シーンに配置したVRay Lightの設定をします。
①TypeをDomeに変更します
②Multiplierを15.0に変更します
※HDRIマップの内容により調整が必要となります
③MapにVRayBitmapを適用し、HDRIマップを読み込みます
※お薦めとしましては、Material EditorにてVRayBitmapを作成後、マップを読み込んだ状態でMaterial Editorから③にドラッグ&ドロップ⇁インスタンスにするとMaterial Editor上で編集可能となります。
下記画像参照
V-Rayをこのように設定しました。
VRay Physical Cameraの設定でMotion blurをオンにしたので、V-Rayのレンダリング設定は特に必要ありません。
※通常のPhysical Cameraはレンダリング設定側でも必要となります。
それではレンダリングしてみましょう!
木が割れたような雰囲気が表現出来ておりますね!
今回のデータを用意しておりますので、ご興味がありましたら下記からダウンロードをして確認してみてください!
今回の3ds Maxデータとなります。
※HDRIは同梱しておりません。
木のテクスチャは簡易となりますが入っております。
使用バージョンはこちらとなります。
3ds Max 2027.2 Update
V-Ray7 update 3 hotfix 1 DR2
tyFlow PRO v2.100(FREEでも可能)
次回の内容は今回の後編となります!










































