Tips

Tips

modoのテクスチャロケータのワールド座標系

レンダリングに関する設定で、テクスチャロケータの「ワールド座標系」について書いてみます。

modoには頂点にアイテムを複製するリプリケータという機能があります。アイテムを規則的に並べるのに便利ですが、たとえばノイズテクスチャを追加した場合に、全てのアイテムが同じパターンのノイズになってしまいCGっぽさが強調されてしまいます。

テクスチャロケータの「ワールド座標系」をONにするとアイテムのローカル位置でなくワールド位置を使用してノイズが設定されるようになり、アイテムごとに異なるノイズパターンがでるようになります。

ノイズテクスチャと Vertex Map Textureを組み合わせると、同じアイテムでも汚れやダメージの位置が異なる質感を手軽に作ることができて便利です。

 

ただし「ワールド座標系」ONでアニメーションを設定すると、ノイズがワールド座標に張り付いた状態になります。背景など動かないアイテムで使用するのがお勧めです。

 

「ワールド座標系」と同じ機能はLightWaveにもあって昔から便利に使ってました。実際に作れるかわかりませんが、ボリュームの設定にある「自動テクスチャオフセット」のように、パーティクル位置をテクスチャのオフセットに使用するリグが組めればアニメーションにも対応することができる気がします。

Tips

modoでタイムラプス表現

modoの「自然科学ベースの日光」「自然科学ベースの太陽」、いわゆるフィジカルスカイとフィジカルサンの時間をアニメーションさせて、タイムラプスっぽい表現の作り方について書いてみたいと思います。

 

時間経過のアニメーション

modoでは日の出から日の入りまでのアニメーションが簡単に作れます。空のような環境は、シェーダーツリーのEnvironment Material で環境タイプを「自然科学ベースの日光」を設定します。

ライトの設定の「自然科学ベースの太陽」をONにして、「時」チャンネルを設定すると時間に応じた照射をシミュレーションすることができます。このシーンでは 04:30~20:00 までアニメーションを設定しました。

 

雲のアニメーション

雲の表現にはボリュームを使用しています。Multi-Fractalレイヤーを追加して、レイヤーエフェクトを「ボリューメトリック密度」に設定します。雲の動きはMulti-Fractalのテクスチャロケータの位置をアニメーションさせています。ボリュームの位置は動かしていません。

雲の量を朝夕と日中で変化させるために「上部クリップ」にキーを設定しました。

ボリュームの形状は「立方体」、「半径」を300mに設定して、トランスフォームのスケール Yを10%にして平面的なボリュームにしています。位置は見た目で適当に配置してます。

ボリュームのシェーディングは時間に応じて「密度」「スキャッタリング」「アンビエント」「アンビエント色」をアニメーションしています。

「密度」は朝夕の時間が 10、日中は 7 に設定して雲の厚みを変化させています。同様に「スキャッタリング」も朝夕は 10%、日中は 200% に設定して雲を白くしています。

「アンビエント」「アンビエント色」はボリュームの色に、空の色を反映するために使用しています。modoのボリュームはGIが使用できないので、ボリュームをそのまま使用すると空から浮いて見えます。
「自然科学ベースの日光」で空のアニメーションを設定したら、「アンビエント色」に5~10フレーム間隔でキーを設定して、空の色をスポイトします。
「アンビエント」は朝夕 0 、日中は 1 に設定して「アンビエント色」の影響の強さを設定しています。

 

300mのように大きなサイズのボリュームを使用する場合は「サンプリングレート」の値に注意する必要があります。ボリュームの「半径」を大きくすると、テクスチャのバンディングのような縞模様が目立つようになります。下の画像は半径100mで サンプリングレート 1 の場合の画像です。

サンプリングレート 0.5 に下げると模様が目立たなくなります。ただしレンダリング時間も長くなるので、あまり小さな値は使用しない方がいいです。

 

草のアニメーション

草のアニメーションはダイナミックカーブとファーマテリアルを使用しています。

地面のモデルからヘアーツールの「ガイドを生成」を使用して、「セグメント数」3のガイドを作成します。

作成したガイドに「ダイナミックカーブ生成」でダイナミクスを適用して、「ジョイント角度制限」に小さな値を設定して動き過ぎないようにします。

草を動かすためにTurbulence Forceを追加してランダムにガイドが揺れるように設定します。

 

Fur Material を追加して、ガイドを「方向」に設定するとガイドに合わせてファーが動くようになります。ガイドは「シェイプ」「方向+長さ」「範囲」に設定してもアニメーションします。
本当は「シェイプ」を使用したかったのですが、GLではファーがアニメーションするのにレンダリングでは動かなかったり他のパラメータの影響があるようで、いまいちイメージ通りに動かなかったです。

 

草の質感

草の質感はこんな感じです。

 

Variation Textureでファー一本一本に色のランダムさを加えます。ファーが単色だと人工的に見えるので、ファーやヘアーを使用する場合はVariation Textureを使用すると自然に見えるようになります。

 

Gradient の入力パラメータを「ファーパラメトリック長」にして、草の根元から先端にかけて「サブサーフェース量」が変化するように設定しています。同様に「サブサーフェース色」も設定します。
サブサーフェースを使用することで、逆光のとき葉先の黄色が強くでるように設定してます。

 

チキンのアニメーション

チキンが組み上がるアニメーションは、プロシージャルモデリング機能を使用しています。

骨組みアニメーションのスケマティックです。

「Merge Meshes」したチキンのモデルを「Push」でマイナス方向に縮めます。「Edges to Curves」のカーブモードを「エッジ毎」にして、メッシュの形状のポリラインを生成します。「Delete_1」で全てのポリゴンを削除してポリラインだけにします。「Delete_2」ではリニアフォールオフを使用してポリラインを削除するアニメーションを設定しています。
最後にアイテムのカーブタブで「カーブのレンダリング」をONにすると、ポリラインをレンダリングすることができます。

 

チキンの面アニメーションのスケマティックです。

「Merge Meshes」したチキンのポリゴンを「Delete」で削除しています。ランダムに削除するためにSelectionに「Select Random」というアセンブリを使用します。Percentage Selected チャンネルにキーを設定すると、ランダムにポリゴンを削除するアニメーションを作ることができます。

 

カメラの位置やフレームごとに明るさにもランダムな変化をつけるか迷いましたが、とりあえず単純なタイムラプス表現でした。

 

Edges to Curvesを使うと、骨組みっぽくモデルを手軽に作ることができるので便利ですね。こういった時間経過のアニメーションは、ゲームエンジンの方が天候を変化させたり色々できて便利な気がしますが、レンダリング時間を気にしなければmodoでも手軽に作れます。

ファーでチラツキの少ないレンダリング設定についても書きたかったのですが、テキスト量が多くなりそうだったので記事を分けて書いてみたいと思います。

Tips

modoでパーティクルの位置をブレンドする方法

modoでパーティクルの位置をブレンドする方法について書いてみます。
901で追加された Particle Constraint と Matrix Blend ノードを使用すると、アイテムの形状にパーティクルが集まるような表現を手軽に作ることができます。

 

単純なパーティクル位置のブレンドの画像です。

Particle Operator に「ID」「位置」を追加。IDを Particle Constraint の Particle ID にリンクします。これでパーティクルのIDが近いもの通しをコンストレイントしたことになります。

Particle Constraint の「出力」を Matrix Blend ノードでブレンドします。 Matrix Blend はその名の通り入力されたマトリクスをブレンドするノードです。「ブレンド」が0%だと「マトリクスA」、100%だと「マトリクスB」のマトリクスを出力します。50%だとマトリクスABの中間地点を出力します。ブレンド チャンネルにキーを設定することで、パーティクルの位置をアニメーションしてます。
Matrix Blend はいろんなリグに使える便利なノードだと思います。

Matrix Blend の「マトリクス出力」を Matrix Vector でXYZの移動に分解して、Particle Operator の「位置」にリンクします。これでパーティクルの位置をブレンドすることができます。画像ではMatrix Blendを2個つかって3アイテムの頂点位置とブレンドしてますが、最初はMatrix Blendを1個で2アイテムから試すとわかりやすいと思います。

 

パーティクル位置のブレンドはポリゴンだけでなく、別のパーティクルシミュレーションとブレンドすることもできます。

スケマティックでParticle Simulation_2にCSV Point Cash ノード使用してますが、なくても大丈夫です。

 

単純なブレンドだと機械的に補完され過ぎて感じるかも知れません。このチュートリアルのように、ベクトル減算と Vector:Multiply By Scalar ノードでパーティクルの速度を変化させるとリニアなブレンド感が緩和されると思います。

Randomize ID は速度にランダムさを設定してます。

 

パーティクル位置をブレンドすると、ロゴに集まるパーティクルなんかを作ることができます。

パーティクルの波うつ軌道は Curve Force です。GLの画像で青色のパーティクルが変な動きしてるのは、 CSV Point Cache のオフセットを使ってタイミング調節してるためです。CSV Point Cache のオフセットにキーを設定するとステップ補間になってしまうので、演算ノードをリンクして、演算ノードのチャンネルにキーを設定してます。

ここで問題になったのが、12.1でCSV Point Cache を Particle Constraint にリンクしてシミュレーション実行するとmodoがフリーズします。いちどParticle Simulationを繋いで計算した直後に、CSV Point Cache を繋いでシミュレーション実行するとフリーズせずに動作するというハックに気がついたので何とかなりました。

何となく Particle Constraint はバグってる気がします。シミュレーションを繰り返すと計算速度が徐々に遅くなるような気がするのと、パーティクル数が少なくてもシミュレーションに時間がかかりすぎる印象があります。

Particle Constraint と同じようなことは、 Matrix Compose と ジオメトリ コンストレイントノードを使って再現することもできます。こちらのノード処理の方が Particle Constraint より速く動作するのでお勧めです ( CSV Point Cache とブレンドしたい場合は Particle Constraint を使う必要がある気がします)

 

参考

emFlock2 みたいなの簡単に作れるようにならないかなー。
http://www.mootzoid.com/plugin/emflock2#lightbox[demoAssets]/0/

Tips

modoとAEでアニメ風爆発の作り方

modoとAfter Effectsを使ってアニメ風の爆発の作り方について書いてみます。特に新しい内容ではありませんが、だれかの参考になれば嬉しいです。

最近のアニメでは3DCGが使われることが当たり前になってます。爆発のようなエフェクトも作画ではなく、CGが使用されてるのを多く見かけるようになっています。
CGで爆発を作る場合は大きく分けて2つの方法があります。1つめは球体にトゥーンシェーダを設定して、球体をアニメーションする方法です。2つめはFumeFXのようなフルードダイナミクスや、ボリュームレンダリングを使用する方法です。

今回はmodoのパーティクルとボリュームを使用して爆発の素材を作って、After Effectsでセルっぽい質感にしてみます。

 

ボリュームのレンダリング

modoでボリュームをレンダリングします。色はAfter Effectsで設定するので、無彩色のままレンダリングします。パーティクルやボリュームの設定を解説するのは大変なので、詳細はサンプルファイルをみてください。

■ サンプルファイル

以前の爆発と同じく、今回もゲームっぽく爆発して消えるまでのアニメーションにしてみました。

ボリュームの質感は、爆発の中心を明るくするためにグラディエントレイヤーを「ボリューメトリックルミナンス量」で重ねています。グラディエントの「入力パラメータ」は以下の通りです。

 

デフォルト

わかりやすいように「ボリューメトリックルミナンス量」を使用していない状態の画像です。Multi-Fractal で煙っぽいでこぼこを設定しています。

 

テクスチャ値

入力パラメータに「テクスチャ値」を設定した画像です。Multi-Fractal レイヤーでへこんでいる部分を明るくすることで、煙の中心が高温になってる感じをだすために使ってます。

 

ロケータまでの距離(オブジェクト空間)

入力パラメータに「ロケータまでの距離(オブジェクト空間)」を設定した画像です。個々のパーティクルからの距離でボリュームを明るくしています。「 ロケータまでの距離(オブジェクト空間)」を使う場合は、ボリュームの「自動テクスチャオフセット」や「テクスチャエフェクト」をONにしていると影響を受けてしまうので、使う場合はOFFにする必要があります。

 

ロケータまでの距離

入力パラメータに「ロケータまでの距離」を設定した画像です。爆発の中心からの距離でボリュームを明るくしています。パーティクルを発射直後のボリュームを明るくするために使ってます。

 

最終レンダリング

全てのレイヤーを適用した画像です。

 

After Effects で色付け

modoで無彩色でレンダリングしたボリュームにAEで色をつけます。エフェクトは下の画像の通りです。

トーンカーブでボリュームのコントラストを調節してから、CelMXのGradientMapで爆発の色を設定しています。AE標準のコロラマ エフェクトでも同じことができます。最後にチョークでボリュームの輪郭をシャープにしています。
CelMXはCelFX同様にアニメ撮影処理向けのエフェクト集ですが、MXには3DCGでも便利なエフェクトが入っているので使ってます。

 

このままだと煙がパッキリし過ぎてるので影をぼかします。

レイヤーを複製して、煙の影をBlurCelを追加してぼかします。レイヤーの不透明度を65%くらいにして重ねます。ぼかし方は色々あるので、好きな方法を使うといいと思います。

 

最後に調整レイヤー追加してGlowを適用します。このGlowはお気に入りなので多用しちゃう。

 

作った爆発を Trapcode Particular で適当に発生させるとこんな感じになります。追加で火花や破片、画面ブレをつければ、もっと派手でそれっぽい感じになるんじゃないかと思います。

アニメ撮影に関するメイキングはあまり見かけることがありませんが、最終的なアニメのルックを決める重要なポジションのように感じます。フルCGや実写もそうですがコンポジットって重要ですね。

 

参考

「宇宙戦艦ヤマト 2202 愛の戦士たち」

爆発をLightWaveのハイパーボクセルで作ってるようです。modoでも参考になると思います。
http://www.dstorm.co.jp/dsproducts/lw3d/interview/profile19.html

「劇場版 ソードアート・オンライン –オーディナル・スケール–」

作画の煙の撮影処理前と後の画像が見ることができます。撮影処理で作画の煙のボリューム感がでてます。TurbulenceFDはセルっぽく加工せずに、ボリュームのシェーディングそのまま使ってるようです。こういう合成方法もいいですよね。
https://www.maxonjapan.jp/archives/work/sword_art_online_os

『Fate/kaleid liner プリズマ☆イリヤ』シリーズが実践する、新世代のアニメ撮影ワークフロー

アニメ撮影に関する貴重な記事です。今ではキャラの目や髪にグラデがかかってる作品はあたりまえですね。
https://cgworld.jp/feature/201512-prisma-illya-cgw208t2.html

ufotableのvimeoアカウント

アニメ撮影でとても見応えのある画面をつくるアニメスタジオさん。いくつかメイキング映像が公開されています。
https://vimeo.com/ufotable

Tips

modoのフォールオフ アイテムのイージング

modo 12.0でフォールオフアイテムにイージング機能が追加されました。この機能追加によってカーブを使用した細かなフォールオフ制御ができるようになりました。

例えばリプリケータの「スケール」を制御して結晶化するような表現を作るとき、リニアに大きくなるだけではなく、大きくなったあと少し小さくなる。というようなニュアンスを加えることができます。

 

スケマティックはこんな感じです。

Surface Particle Generatorで球体にパーティクルを発生させます。Particle Modifierは「スケール」を0%に設定し、フォールオフアイテムをリンクしています。フォールオフ アイテムをアニメーションすると、リプリケータのスケールが変化します。

複数のフォールオフアイテムを使用している場合に注意が必要なのは、イージングのカーブが0~1の範囲を超えないように設定する必要があるかもしれません。
上の画像ではリニアフォールオフとテクスチャフォールオフを使用していますが、イージングのカーブが0以下に設定したとき、テクスチャフォールオフの領域に小さな円柱が発生しているのが確認できます。
テクスチャフォールオフの場合は、テクスチャの「上限値」を100以上の大きな値に設定すれば大丈夫なのですが、他のフォールオフ同士の組み合わせでどうなるかは調べてません。

modo11以前のバージョンでもFXアイテムの「パーティクルサイズ」を使用すると、同じようにリプリケータのスケールをアニメーションすることができました。下の画像はGradientのテクスチャロケータをアニメーションさせたものです。

FXアイテムはシェーダーツリーに統合されているので、レイヤーのブレンドやマスクなど制御しやすいのですが、フォールオフアイテムに比べると処理が遅いような気がします。

 

Particle Random Modifier を使うと位置や回転のランダムをフォールオフで制御できるようになります。ちょっとしたモーショングラフィックっぽいアニメーションが簡単に作ることができます。やはり同じような制御をFXアイテムでもできましたが、スケマティックで関係性が見やすいぶんフォールオフアイテムが使いやすい気がします。

 

ちなみに、この結晶化のアニメーションはレンダリングに5時間かかりました。初めのフレームは30秒くらいなのですが、最後のリプリケータのアニメーションが終わったあたりは1枚4分かかります。アイテムのランダムさはリプリケータの「ランダムスケール」を設定してます。

 

マテリアルのシェーディングモデルは「従来」を使用して、レンダリングの設定では「反射深度」2、「屈折深度」1と速度重視に設定してますが、反射と屈折が組み合わさるとレンダリング時間が長くなります。もっとリアルに磨かれていないような質感にしようとすると、反射と屈折にブラーを加えることになるので、もっとレンダリング時間がかかりそうです。

今回はレンダリング時間を短くする工夫として反射用のオブジェクトやライトの変わりに MatCap を使用してみました。輪郭が浮き上がっていい感じに反射してるように見えます。GLでは問題なかったのですが、レンダリングでは使用したマップの上下左右が少し切れてるのが原因で、チラツキが発生してしまいました。

さらにIridescence Material で表面を虹色っぽく設定してます。MatCapもそうですが、modoはマテリアルを加算でブレンドできるのが面白いですね。

屈折のレンダリングは時間がかかるので、MatCapと反射のみで屈折したような質感を再現できないかと実験してみました。これだけ見るとそういうものかと思うかもしれませんが、屈折したものと比較すると透明には見えないですね。やっぱりカメラが動くとわかちゃいます。この反射だけの質感だとレンダリング時間は35分でした。

modoではMatCapをミックスしたりマスクしたりできるので、他のソフトに比べて便利に使える気がします。そのうちトゥーンマテリアルを作ってみようかな。

Tips

modoのパーティクルの質量

パーティクルの質量について書いてみます。
パーティクルは点の情報で実体がありませんが、Particle Operator を使用して「質量」を設定すると、パーティクルがメッシュをはじくようになります。

画像はパーティクルとメッシュが衝突するように、あらかじめ設定したシーンを使用しています。Particle Operator の特性は、チャンネルに直接値を入力してもシミュレーションに反映されません。そこでユーザーチャンネルを作成して、その値を「質量」チャンネルにリンクしています。

下の画像はmodoのサンプルモデルを「シャッター & グルー」で粉砕したものです。

モデルは「複合リジッドボディ」を適用し、スリープのウェイクオンを「衝突フォース」に変更、「ウェイクオン値」を1に設定してパーティクルが当たったらリジッドボディが動き出すように設定しています。

ちなみに「ウェイクオン値」が0だと、連鎖的にリジッドボディ全体が動き出します。

 

Dynamic Replicator を使えば同じようなことができますが、パーティクルに質量設定した方がシミュレーションの計算量が少ないと思います。
modoのダイナミクス機能はオープンソースライブラリの Bullet Physics を使用していますが、リジッドボディとパーティクルが相互に影響し合うようなシミュレーションができるのが面白いですね。

 

参考

 

Tips

modoのタイムノード

modoのタイムモディファイヤについて書いてみたいと思います。タイムモディファイヤはその名の通り時間に関係したチャンネルモディファイヤです。

下の画像は砲台が出てくるアニメーションを設定した後に、Time Offsetを使用してアニメーションの再生速度を制御したものです。メカの変形アニメーションの速度をカットごとに変えたい場合に、リグとして組んでおくと便利に使える気がします。キーフレームは等間隔になるよう設定しておくと、タイミング調節がしやすくなると思います。

 

Time

現在の時間またはフレーム数を出力するシンプルなノードです。何に使うのかイメージしにくいかもしれませんが、毎フレーム値をカウントアップしたい場合や、条件式と組み合わせてタイマー的にパーティクルを制御したりに使用できます。

 

Time Cycler

アニメーションの繰り返し再生を制御するノードです。グラフエディタの「動作」にも同じような設定がありますが、Time Cycler の場合は「完了」の値で繰り返し回数を制御できます。
「オフセット反復」は「入力マトリクス」に対応していなようで、「入力値」から「出力値」を使用した場合に動作するようです。

 

Time Offset

アイテムのアニメーションをオフセットするノードです。残像のようにアイテムが追従するアニメーションを作成することができます。タイプを「定数」にすると、アニメーションの再生速度を制御できます。

単純にアイテムを追従する場合はmodo10.2から追加されてた Simulation Follower の方が加速度がついていい感じになると思うので、アニメーションの再生速度を制御する使い方の方が便利な気がします。
Time Offset で少し残念なのが、マトリクスチャンネルが複数のリンクに対応していないことです。modoのスケマティックは1ノードまでは循環参照を許可しているのですが、位置、回転、スケールのそれぞれをTime Offsetしたい場合は、各チャンネルの数だけTime Offsetノードが必要になります。

循環参照しなくてよい場合は、Matrix Composeを使用して位置、回転、スケールを1つのマトリクスにするといいです。Matrix Compose の「マトリクス入力」はリンク順で計算するの、スケール、回転、位置の順番でリンクする必要があります。

 

Time Warp

カーブを使用してアニメーションを制御するノードです。Time Offset と同じような機能ですが、再生を反転したりカーブで細かな制御ができます。

 

Time Offsetで砲台のアニメーションを制御するのは、Project:Messiahのサンプルファイルを思い出したので作ってみました。modo 12.1からは Driven Actions というアクションの再生速度を制御する機能が搭載されているので、今となってはノードを使う機会は少ないかも知れません。

Tips

modoで物理演算後にロゴが現れる

物理演算後にロゴが現れるような表現について書いてみます。

 

作り方は簡単で、物理計算後にUVを作成するだけです。

  1. 物理計算を設定したシーンを用意します。
  2. アニメーションが終了する決めのフレームでオブジェクトを選択して、UVマップを作成します。
  3. UVを展開します。UVツールの「ビューから投影」をアクティブにして、カメラビューをクリックします。
  4. テクスチャレイヤーでUVマップを設定します。
  5. UVビューを使用して、ロゴの大きさを調整します。

かなり単純ですね。物理演算の設定を変えるとオブジェクトの位置が変わってしまうので、プロシージャルモデリングの Create UV Map ノードを使ってみるのもいいかもしれません。
ロゴは少し崩れた方がいいかなと思って最後少しずれるタイミングにしてみましたが、レンダリングしたらピッタリ決まる感じの方がよかったかも。

物理演算関連の設定も書いておきます。

物理演算は「複合リジッドボディ」を使用しています。アイテムの形状は 球、カプセル、トーラスの3種類。中央の大きな球体は「キネマティックリジッドボディ」を設定しています。

Vortex Force の「強さ」に0~200~0%でキーを設定して、ぐるぐる回るようにしています。
Radial Force の「強さ」は Vortex Force とクロスフェードするように 0~200%でキーを設定して、球体に小さいアイテムが集まるようにしています。リレーションシップを使ってRadial Force の「強さ」が200%のとき、solver の「重力 Y」を 0 になるようにしています。
これだけだとアイテムが動き回るので「複合リジッドボディ」の「粘性」と「リニア減衰」にキーを設定して、アイテムの動きを遅くします。

 

「シャッター & グルー」を使って粉々になった破片でロゴができるとか、フォースかえたり色々面白い映像を作ることもできるんじゃないかと思います。

Tips

modoでバラバラに散らす表現

modoのソフトボディを使用して、オブジェクトをバラバラに散らす方法について書いてみたいと思います。

作り方は簡単です。オブジェクトをShatterで分割して、フォースで散らすだけです。徐々に動き出すところはフォースのフォールオフを使用します。

  1. ティーポットを作成。
  2. 「シャッター & グルー」を実行する。このとき「法線マップを生成」をONにする。
  3. 不要な Constraint Modifier を削除。
  4. 「シャッター & グルー」が作成したグループロケータをダブルクリックして子のアイテムを全選択し、「メッシュの統合」を実行して1アイテムにする。
  5. リストタブで shatterInterior マテリアルを選択して Delete する。
  6. ティーポットに「ソフトボディ」を適用して、「ローカル密度」を 0.05 に設定します。
  7. solver の「重力 Y」を 0 に設定します。
  8. Turbulence Force を作成して「強さ」を 0.2%、トランスフォームのスケールを 40% に設定します。つぎにTurbulence Force の移動にキーを設定して、適当に移動しつづけるように設定します。
  9. Wind Force を作成して「強さ」を 0.5% に設定して、45°回転します。
  10. Turbulence Force と Wind Force に Linear Falloff を追加します。
  11. Linear Falloff の「長さ」を適当に設定して、移動するアニメーションを設定します。シミュレーションを実行すると、フォールオフの範囲に入ったメッシュがフォースを受けて飛び散ります。

上の画面キャプチャでは忘れてましたが、ソフトボディを適用するメッシュは4角形以上のポリゴンを選択して「三角分割」か「四角形」にしたほうがよいです。多角形のポリゴンをソフトボディ計算するとエラーが発生して、頂点が極端に飛び出したりします。

あと上の画像はサブディビ切り忘れて隙間できてた。ソフトボディはメッシュが細かければ細かいほど布っぽい動きになるのですが、細かくするとトライアンドエラーに時間がかかるのが悩み所です。

 

modoのサンプルモデルを使うとこんな感じになります。

分割したメッシュだけだと少し寂しいので、メッシュが動き出すタイミングでパーティクルを発生させています。パーティクルの発生位置はFXアイテムに Gradient を追加して制御します。入力パラメータを「ロケータまでのY軸距離」、レイヤーエフェクトを「パーティクル密度」に設定しています。
パーティクルは RelationShip を使って回転と、小さくなって消えるようにスケールをアニメーションしています。

 

ベベルを使って面を切り離すと、昔のCGっぽくポリゴン単位でバラバラにすることも出来ます。切り離しただけだとスムージングがかからないので、Merge Meshes と Vertex Merge を使うとスムージングを掛けた感じにできます。ちょっと重くなりますけど。

 

モーショングラフィック作品でよく見かけるような表現がmodoでも手軽にできたりします。Constraint Modifierが同一メッシュ内のソフトボディで使用できるようになれば布が裂ける感じがだせそうなので、もっと進化して欲しいですね。

Tips

modoで紙吹雪を作る方法

modoのソフトボディを使用した紙吹雪の作り方について書いてみます。
紙吹雪や花びらが降る表現はよく見かけます。作り方としてよくあるのは板ポリに回転するアニメーションを設定して、その板ポリをパーティクルに割り当てる方法です。modoでもパーティクルとリプリケータを使えば同じことができますし、After EffectsのParticularが使われてるのもよく見かけます。

パーティクルを使用した方法は手軽ですが、ソフトボディを使用すると落下方向とポリゴンの面の傾きで動きに変化がでて、パーティクルにはないリアルな動きを表現できます。

紙吹雪のモデリング

板ポリをランダムに配置するだけです。方法はいろいろあると思いますが、modo 12で改良されてたジッターツールのリジッドモードが便利なので使ってみました。

  1. 平面ポリゴンを作成します。
  2. 平面分割(Shift+D)を4回実行。
  3. ポリゴンを選択して、ベベルを「グループ化」OFFで実行。面ごとにベベルします。
  4. 選択中のポリゴンを非表示(H)。
  5. ベベルで生成されたポリゴンを削除。
  6. ポリゴンを表示(U)。
  7. 移動ツール(W)をアクティブにして、ポリゴンを複製(Ctrl+Shift+ドラッグ)。
  8. ジッターツールの「リジッド回転」「リジッド移動」をそれぞれ実行してポリゴンをバラバラに配置します。

花びらや葉っぱのようにテクスチャを使う場合は、平面を配列ルールで複製した方がUVを維持できていいと思います。

 

ソフトボディの設定

紙吹雪のソフトボディはローカル密度を0.005と小さな値を設定して、紙のような軽さが出るように設定してます。「リニア減衰」に大きな値を設定しているのはゆっくり落ちるようにするためです。このあたりの設定はシーンの大きさやフォースの設定なんかで適当に設定してます。

  1. 平面ポリゴンを作成します(地面用)。
  2. 平面ポリゴンに「スタティックリジッドボディ」を適用。
  3. 紙吹雪用のメッシュに「ソフトボディ」を適用。
  4. ダイナミクスのプロパティで「密度」を0.005、「リニア減衰」を10%に設定します。
  5. Turbulence Force を追加し「強さ」を0.03%に設定します。トランスフォームの「スケール」を40%に設定し、位置にキーを追加してテクスチャロケータが移動し続けるように設定します。
  6. Vortex Force を追加し「強さ」を0.01%に設定します。このあたりのフォースの設定は好みにいじった方がいいと思います。
  7. Turbulence Force と Vortex Force にLinear Falloffを追加し、「長さ」を2mに設定します。
  8. シミュレーションを実行すると紙吹雪っぽい動きになると思います。平面に落ちたときプルプル動くのは止められなかった。

これだけでも簡単に紙吹雪っぽい動きになりましたが、パーティクルを使用したときとあまり変わらない感じがするかもしれません。そこでLiftのパラメータを設定します。Lift は空気抵抗で紙が上昇するような動きが加わって、ヒラヒラ舞う感じになります。
このパラメータはチャンネルビューポートにのみ表示されるパラメータです。余談ですがダイナミクス系のパラメータの頭に付く re は Recoil の略称かな?

 

Lift

Liftの値を変えて変化を見てみました。フォースはなしで重力のみの設定です。「密度」「リニア減衰」の値によっても動きが変わるので、ザックリとした参考だと思ってください。

Lift 0

 

Lift 0.01

 

Lift 0.1

 

Lift 1.0

 

最終的に「reLift」を 1 にして、Liftの効果が出やすくするために「リニア減衰」をデフォルトの4%に変更しました。

 

紙の裏側は、折り紙のように白色になるように設定してます。

質感は Variation Texture と Gradientを使用しています。Variation Texture の変化ソースを「メッシュパート」にすると、連続ポリゴン単位で色を変えることができます。ポリゴン背面の色はグラディエントの入力パラメータを「背面」に設定し、ブレンドモードを「スクリーン」にして白くなるようにしています。


ソフトボディでもパーティクルと同じくらい簡単に紙吹雪が作れるんじゃないかと思います。

ちなみにソフトボディを使用する場合は、solverの「シーンスケール」の値は変えない方がよいです。仕様なのかどうかわかりませんが「圧力」が反応しなくなったり、パラメータの動きが変になるような気がします。実物のサイズでソフトボディが上手く動作しないときは、シーン全体を大きくしてから計算する上手くいくかも知れません。

 

ソフトボディを使用した紙吹雪の表現は、LightWaveのプラグインMotionDesignerが別売だったときのチュートリアルに書かれてました。今でもドキュメントに載ってたりするのかな?

Tips

modoのパーティクル速度を使用して回転する方法

パーティクルの速度に応じて回転する方法について書いてみます。パーティクルオペレータの使い方の応用的な内容で、「速度」に応じて回転する風車のような表現ができるようになります。

Vortex Force を使用した単純な構成の画像です。移動速度に応じて回転数が上がります。
スケマティックはこんな感じ。

パーティクルオペレーターに「速度」と「回転」を追加します。「速度」を「回転」にリンクしたいところですが、「速度」と「回転」はチャンネルタイプが異なるので、Matrix From Euler を使用して「速度」をマトリクスチャンネルにしてから「回転」にリンクします。「速度」そのままだと回転の値が小さいので乗算ノードで30倍にします。

 

Wind ForceにLinear Falloffを設定して回転を制御してみた。

速度をそのまま回転に使用しているので、フォールオフの影響範囲に入った円柱の角度がジャンプしてしまいました。こういう使い方の場合は他の特性と組み合わせた方がいいかもしれません。

Wind Forceでは「強さ」を 1 、「速度」を 20 にしてパーティクルが移動しないように設定しています。Linear Falloffの影響範囲にあるぉパーティクルに速度が追加されることで回転させています。

サーフェースエミッターは1フレームで欲しいだけのパーティクルを発生できないので「放射レート」にキーを設定して、必要なパーティクル数になったら「放射レート」を0にしています。また「初期速度」「速度の広がり」を0にしてパーティクルが移動しないように設定しています。

 

矢印をパーティクルの進行方向を向け、速度に応じてスピンするような回転を設定してみた。

進行方向に回転する処理は、パーティクルオペレータの「前の位置」「位置」を Matrix Construct ノードを使用してベクトルチャンネルを位置のマトリクスに変換します。次ぎに Matrix Construct の出力を Direction Constraint の「起点」と「終点」にリンクします。これで「回転出力」を「回転」にリンクすればパーティクルの進行方向に合わせて Replicator が回転するのですが、今回は「速度」を回転に加えたいので、Direction Constraint の「回転出力」をMatrix To Euler の「ワールド回転」にリンクします。

パーティクルオペレータの「速度」を乗算ノードで適当に50倍にして、 Matrix To Euler の値と加算した値を Matrix From Euler でマトリクスに変換。Matrix From Euler の「ワールド回転」をパーティクルオペレータの「回転」にリンクすれば完成です。今回はZ軸方向に回転したかったので速度Zしか使用していませんが、XYZの3軸で好きに回転できると思います。

 

紙吹雪や花びらを回転する場合でも速度を使用すると移動量に合わせた回転になるので、「寿命」を使って回転するより少しリアルな感じが出せるようになる気がします。

Tips

modoのリプリケータでモーフ制御

modoのリプリケータで複製したアイテムのモーフ制御する方法について書いてみます。
modoにはリプリケータという、アイテムを頂点やパーティクルの位置に複製する機能があります。この複製したアイテムのモーフを制御したいことがあります。

modo 12 からは MergeMesh を使用することで、リプリケータのモーフを制御できるようになりました。モーショングラフィックなんかで、シーケンシャルにモーフを変更したい場合にフォールオフを使用してアニメーションすることができます。

 

Radial Falloff を使うとこんな感じです。

スケマティックはこんな感じです。

Cube には球体になるモーフマップを作成しています。背景コンストレイントで適当に作った物です。MergeMeshを使用すると、Morph Influence にはCube のモーフマップを設定できるようになります。Morph Influence に設定したフォールオフをアニメーションするとモーフをアニメーションさせることができます。

もちろんParticleにも使えます。花や傘が開くアニメーションなんかに使えそう。

難点は MergeMesh を使用するので、ポリゴンが多いと処理が重くなります。リプリケータのモーフを直接制御できれば便利で軽そうなんですけどね。

 

参考

https://community.foundry.com/discuss/topic/139207/using-falloff-to-control-morph-animation-along-replicas-solved-using-modo-12?mode=Post&postID=1121667

Tips

modoで爆発表現

modoのパーティクルとボリューム機能を使用して爆発を作る方法について書いてみます。
パーティクルもボリュームも特に難しいことはしていないのですが、複合的な要素で成り立っているので解説するのが少し大変です。爆発を作るにあたって気をつけた点を中心に書いてみたいと思うので、細かな所はサンプルファイルを見てください。

サンプルファイル
シミュレーションを実行するとパーティクルを確認できるようになります。

 

爆発を考える

爆発を作るにあたり爆発を構成する要素を考えます。今回の爆発では「衝撃波」「火花」「爆発の中心」「爆発から飛び出す煙」の4種類の要素にしました。爆発で破片を飛ばしたり、爆発で建物が崩れるような場合はもっと要素が増えると思います。

要素別にレンダリングしてみたので、要素ごとに解説してみます。

 

衝撃波

爆発の衝撃波が伝わり、土煙が発生するイメージです。地面に沿ってパーティクルを飛ばすために、円柱から Surface Emitter を使用してパーティクルを放射しています。レンダリングはスプライトを使用しています。

 

火花

爆発で四方に飛散する火花のイメージです。Radial Emitter で放射状にパーティクルを放射しています。レンダリングはスプライトを使用しています。

 

爆発の中心

物が燃えてもっとも煙を出す、爆発の中心になる要素です。球体なんかのアイテムの頂点を使用して手付けでアニメーションさせてもいいのですが、今回は面倒くさかったのでRadial Emitter を使いました。

Particle Simulation の「重力」を正数にして、時間経過とともに空にのぼるように設定しています。
爆発の中心になるパーティクルは「ドラッグ」を設定して、パーティクルが飛びすぎないようにブレーキをかけています。

レンダリングはボリュームとスプライトを使用しています。煙の中心にシャドーをOFFにしたライトを配置しています。modoのボリュームはGIのように周辺を照らすことができないので、ライトを配置して地面やボリュームを照らしました。

本当は地面をもっと広くライトで照らしたかったのですが、ボリュームは「ライトリンク」が機能するのですが、スプライトは「ライトリンク」の設定を無視するため、しかたなくライト1個の設定にしています。ライトマテリアルの「ライトディフューズ量」を使用することでポリゴンだけ明るさを強くしました。

また、modoはフィジカルベースのライトなので、ライトの影響範囲を距離で指定してボリュームをライティングできないのも地味に困りました。フィジカルベースのレンダラーはライトの明るさによって影響範囲が自動的に切り替わります。リアルな物を作る場合にはいいのですが、エフェクトてきな表現の場合は、昔ながらの距離指定の影響範囲が恋しくなります。今回はファイルを公開する関係で1シーンで完結させてますが、別ライティングのシーンを複数作成して合成した方がいいと思います。

ボリュームの色は、グラディエントの「ボリューメトリックルミナンス色」「ボリューメトリックルミナンス量」で設定します。「入力パラメータ」は「ロケータまでの距離」を使用して、爆発の中心が燃えてるような感じに設定しています。

個別にレンダリングして気づいたけど、もう少しモコモコしたテクスチャ設定すればよかったかな。煙の内側方向にパーティクルをスピンさせればフルードっぽい感じにできたかも。

 

爆発から飛び出す煙

爆発から飛び出す煙です。煙は Randomize IDノードを使用して一本ごとにランダムさを設定しています。

レンダリングはボリュームとスプライトを使用しています。ボリュームは厚みのある煙の表現に使い、スプライトは煙が時間経過とともに拡散して薄くなっていく表現に使用しています。

ボリュームの動きと徐々に消える部分は「テクスチャエフェクト」の「拡張&ディゾルブ」を使用しています。「拡張&ディゾルブ」だけだと煙の動きがゆっくりすぎるので、Multi-Fractal のテクスチャロケーターを適当にアニメーションさせることで動きをつけてます。「密度」にキーを設定して煙の厚さを変化させて薄くなるようにしてます。

 

スプライト用のパーティクルは拡散して薄くなる感じを出すため、ボリュームのパーティクルよりも少し移動用が多くなるようにしています。「エフェクト速度」もボリュームとスプライトで差をつけて、スプライトの方が少し長めに表示されるようにしています。

スプライトは「サイズグラディエント」を設定して、時間経過とともに大きくなるように設定しています。最初のはボリュームよりも小さく、時間経過とともにボリュームよりも大きくなるようにしています。

ボリュームの色は、グラディエントの「ボリューメトリックルミナンス色」「ボリューメトリックルミナンス量」で設定します。「入力パラメータ」は「パーティクルエイジ」を使用して、パーティクルが放射された最初の数フレームだけ燃えているような感じになるよう設定しています。

 

パーティクルのスケマティックはこんな感じです。ノードの数は多いですが、特に難しいことはしてないと思います。

「爆発から飛び出す煙」のパーティクル Particle Simulation_4 は Particle Operator を使用して等間隔にパーティクルを発生させています。これは煙の線が途中で切れたように見えるのを避けるためです。Source Emitter を使用するとランダムにパーティクルが放射されるので、パーティクルに隙間ができてしまいます。逆にスプライトは Source Emitter を使用することでランダムに煙が拡散する感じを出すのに利用しています。

パーティクルには Turbulence Force を設定して風に流される感じを出しました。激しく動かしたいときはTurbulence Force を移動すると面白い感じになります。

 

完成

After Effectsでレンズフレアや画面ブレを追加して完成です。今回はゲームのエフェクト的に、爆発が発生して消えるまで作りました。映像用途では爆発してから消えるまでを映すことは少ないので、消えかける部分の調整が「拡張&ディゾルブ」まかせでリニアな感じが出てしまいいまひとつでした。完全に消えるところまで作る場合は、各パラメータに手動でキーを設定した方がいい感じになりそうです。

 

補足ですが、ボリュームとスプライトを同時にレンダリングすると、後半のスプライトとボリュームが重なる部分でチラツキが発生してるのに気がつきました。チラツキが気になったので上の画像は別でスプライトとスプライトのマスクをレンダリングして合成しています。
スプライトのマスクを作成するためにVolumetric Opacity Outputをマテリアルグループに追加してレンダリングしようとしましたが、Volumetric Opacity Outputはマテリアルグループに対応していないため使えませんでした。最終的にボリュームを黒色、スプライトを白色に設定し直してマスクにしました。下はちらついてる画像です。

modoのパーティクルとボリューム機能、なかなか強力で表現力あると思いませんか!?レンダリングに時間かかりますが、魅力的なエフェクトが作れると思います。

Tips

modoのボリューム

今回はmodoのボリューム機能について書いてみます。マニュアルを補完する形で、パラメータをアニメーションしあた場合の変化を画像にしてみました。
modoのボリュームは LightWave の Hyper Voxel が進化したような機能なので、基本となるパラメータや設定は LightWave でも活用できると思います。

ボリュームとは

ボリュームは煙、爆発、炎のようなエフェクト表現に最適な機能です。ボリュームは表面の形状しかない中身からっぽのポリゴンと違い、中身まで詰まったボクセルデータです。このため半透明な設定にするとレンダリング時間が長くなりますが、雲海の中をカメラが進むような表現ができるようになります。

最近では煙と言えば、FumeFXPhoenix FDのようにフルードダイナミクスを使用した表現が主流です。フルードダイナミクスは流体のようなリアルな動きを作成することができますが、シミュレーション空間をボクセルに分割して計算するため、カメラが近づくと荒くみえる。シミュレーションに計算が必要。シミュレーションキャッシュが1フレームで1GB超えることもよくあるため、PCスペックを要求するなどの大変さがあります。

modoのボリュームは流体のようなリアルなアニメーションはできませんが、カメラがどれだけ近づいても荒くならない。シミュレーションが不要のため、PCにかかる負荷が低いというメリットがあります。

ボリュームシェーディング

以下はボリュームシェ-ディング タブのパラメータをアニメーションさせた物です。

密度

ボリュームの厚さを設定する機能。値が50%以下のときは薄く色も明るくなり、値が大きいと厚みのある質感になる。

 

フォールオフ

密度にバイアスを設定する機能。ボリュームはデフォルトで中心から外側に向かって密度が薄くなるので、放射状に密度が変化する。

 

レベル

密度の最大値を設定する機能。AfterEffectsのレベルエフェクトと同じ感じの機能。

 

密度 グラディエント

上にある「密度」をミニグラディエントで制御する便利パラメータかと思うと、全く違うアニメーションになる。ボリュームの厚さをアニメーションしたい場合は、上の「密度」にキーを設定するしかない。

 

ハイパーテクスチャ高さ

レイヤーエフェクトで「ボリューメトリック密度」を設定しているとき、テクスチャが影響する距離を指定する機能。「ディスプレースメント距離」のような機能で、値が小さいとボリュームの中心にテクスチャの影響が出ない。「拡張 & ディゾルブ」を使用する場合は高めに設定しておくとよい。

 

ハイパーテクスチャスケール

ボリュームに設定したテクスチャのスケール。0%のときは100%として扱われる。マニュアルには「テクスチャロケータの スケール 設定と同じ働きをします。」と書かれていたので、テクスチャロケータをスケールした物と比較したが、レンダリング結果は完全に一致しないようだ。

 

テクスチャエフェクト

テクスチャをアニメーションしてくれる便利機能。細かなニュアンスまで制御したいときには、グラディエントレイヤーや、チャンネルにキーを設定した方がいいと思う。
テクスチャエフェクトはパーティクルエイジを使用するので、パーティクルシミュレーションで「パーティクルの寿命」が保存されている必要がある。

 

なし

当然動かない。

 

速度変換

パーティクルの速度ベクトルの方向にテクスチャが移動する。放物線をえがくパーティクルなんかだと変化がわかりやすいかも。

 

拡張

テクスチャのスケールが拡大するアニメーション。テクスチャが大きくなりながらクロスフェードを繰り返す。

 

拡張 & ディゾルブ

拡張のアニメーションしながらボリュームが消える。ディゾルブに使用しているパラメータが「密度 グラディエント」なのかも。個人的に好きなエフェクトで LightWave 時代からよく使ってた。

 

火砕

テクスチャを放射状にブラーしてる感じなかな。

 

エフェクト速度

エフェクトのアニメーション速度を設定する機能。テクスチャエフェクトの画像にある数字はエフェクト速度の値です。遅めは 50% 、早めは 100% を基準に調整開始するといいかもしれない。「拡張 & ディゾルブ」だけ効果が変則的で、50%は30フレーム、25%は60フレーム、10%は150フレームでボリュームが消える。テクスチャや密度の設定により消える時間が変わる気がする。

 

レンダー品質

高い設定にするとボリュームのシェーディングの階調が多く滑らかな見た目になる。

 

サンプリングレート

ボリュームをより精細に計算するための機能。「ボリューメトリック密度」にテクスチャを使用している場合、ボリュームの「半径」やスケールが100mのように大きなサイズにすると、ボリュームにバンディングのような縞模様が発生します。サンプリングレートの値を下げると縞模様を軽減することができます。
ただしサンプリングレートの値を下げるとレンダリング時間が長くなります。参考までにこの画像ではサンプリングレート1のとき2.7秒、0.5のとき4.8秒、0.25のとき9.5秒、0.1のとき23.1秒、0.01のとき5分36.6秒でした。

 

シャドー品質

高い設定するとシャドーが滑らかになる。設定が低いと影が階段状なる。

 

スキャッタリング

ボリュームの光の拡散具合を設定する機能。値を大きくすると白く雲のような感じになる。

 

前方スキャッタリング

背後のライトからの拡散具合を設定する機能。ボリュームの明るさが加算されて明るくなるのを期待したが、値を大きくすると黒くなる。

 

ライトを180°回転して前方スキャッタリングの効果を確認してみた。ライトが背面のときより効果が強く現れる。

前方スキャッタリングを高くすると黒くなるため、スキャッタリングも同時に調整する必要があるようだ。またライトにはシャドーが設定されている必要がある。シャドータイプが「なし」の場合はボリューム全体が明るくなる。

 

ボリュームの設定

今回テストに使用したボリュームの設定を書いておきます。基本的にはボリュームの「密度」を100に設定した以外はデフォルトのままです。

 

テクスチャにはMulti‐Fractalレイヤーを使用しました。ボリュームによく合うお気に入りのテクスチャです。レイヤーエフェクトを「ボリューム密度」に設定しています。テクスチャを設定していない場合、テクスチャエフェクトは機能しません。

 

シーンにはライトを2個配置してます。右のライトはボリュームの後ろ側に配置してます。ボリュームの直径は1m。

 

全パラメータレンダリングするのは面倒だったので、変化が明らかにわかるパラメータは省きました。ボリューム機能があれば、こんな爆発も簡単に作ることができます。次回はパーティクルを使用した爆発の作り方について書いてみたいと思います。

Tips

modoのスティッキーキー動作

modoの キートグル(別名スティッキーキー)について書いてみます。

modoでポリゴンやアイテムを操作する場合、基本的に「 選択 → ツールON → 編集 → ツールOFF → 選択… 」という操作の繰り返しになります。モデリングでポリゴンを選択とき、ツールを ON/OFF するのが少し工程が多いと感じることがあるかも知れません。

スティッキーキーはツールのショートカットキーを押してる間だけ、ツールが ON または OFF になるという動作です。例えば「 移動ツール(w) 」の場合は、wキーを押している間だけ移動ツールをON/OFFすることができます。画像ではわかり難いかもしれませんが、キーが押された状態のとき、キーボードがハイライトしています。

 

modoにはツールをアクティブにしたままポリゴンやアイテムを選択するために「セレクトスルー」という機能もあります。

 

私の場合はモデリングでツールハンドルを直接操作することが少ないので(ビューポートの適当な位置をドラッグするLightWaveスタイル)、セレクトスルーよりスティッキーキーの方が合っている気がします。

ちなみに同じような動作は Softimageにもあって「スティッキーツール」「スティッキーモード」と呼ばれていたみたいです。スティッキーキーはmodo 501とか古い時代からある動作のようですが、最近まで知りませんでした。移動ツールアクティブのとき x キー長押しでスナップはよく使ってましたが、これもスティッキーキー動作だったのかな?