Tips

Tips

modoで複数のスペキュラを重ねる表現

modoで複数のスペキュラをレイヤーのように重ねる表現について書いてみます。

■ サンプルファイル

 

現在のようにPBRマテリアルが主流になる前の時代、金属を表現する場合はスペキュラを重ねることで表現してました。modoではShaderの「ブレンドモード」を使用して複数マテリアルのスペキュラを加算することができます。

 

現在はマテリアルに「クリアコート」があるためスペキュラを重ねた質感が手軽に作れるようになってますが、スペキュラを3つ以上重ねたい場合には今回紹介した方法が便利かもしれません。あとクリアコートはレンダリングが少し遅い気がします。

 

スペキュラを加算したレンダリング。

クリアコートを使用したレンダリング。

 

参考

http://forums.luxology.com/discuss/post/42125

Multi-Coat

 

おまけ

スペキュラを重ねた金属表現はLightWave界隈では「Gaffer」が有名でした。3dsMaxにもMulti Layer Shaderがあり、かつては金属表現に欠かせない定番の設定でした。

Gaffer

セレクティブライト、多重スペキュラ、フレネル、反射の色、ブルームなどライティングに関連する様々な質感を制御することができるプラグインでした。
https://web.archive.org/web/20010108121200/http://www.worley.com/gaffer/gaffer_spec_control.html

 

MegaLight

スペキュラにトーンカーブのようにバイアスをかけることで金属っぽいスペキュラを表現したプラグイン。
http://www.dstorm.co.jp/dsproducts/FreePlugins/PreviousPlugins/MegaLight.html

 

Multi Layer Shader

Tips

modoのウェイトマップをアニメーション

Transfer Vertex Mapを使ってウェイトマップをアニメーションさせてみた。ちょっとしたテストです。

■サンプルファイル

 

Texture Falloffを使用したアニメーション。

 

基本的には法線の転送のウェイトマップ版です。現状はフォールオフを使っても0か1の値しか転送出来ないため、滑らかなウェイトにすることができないのが残念です。Merge Meshesが使えないのも残念。。。Merge Meshesをつかればキャラクターのウェイト設定を使い回す仕組みが作れそうです。

C4Dのようにウェイトの範囲を時間経過で広げたり、時間差でウェイトを消したりできるようになって欲しいですね。

Tips

modoのコンストレイント ウェイト

modoのコンストレイントにあるウェイトチャンネルについて書いてみたいと思います。コンストレイントのウェイトを使用すると2点間でアイテムを等間隔に配置するようなリグを作ることができます。

modoのコンストレイントは複数のアイテムを指定することができます。ことのきコンストレイントの「ウェイト」を使用すると、コンストレイントの重みを調節することができます。ウェイトはプロパティに表示されないので、チャンネルビューポートを使用して設定します。

 

ウェイトを設定すると2点間でアイテムを等間隔に配置するようなリグを作ることができます。

Position Constraint、Rotation Constraintのウェイトを調整すると、こんな感じの制御ができるようになります。

 

コンストレイントは2つ以上の複数のアイテムに使用することもできます。

 

ウェイトの使い道は様々で「カメラブレンドリグ」のようなものが作れるので便利です。

Tips

modo終了時にコンフィグファイルに設定を保存しない方法

modoの終了時にコンフィグファイルに設定を保存しない方法について書いてみます。

modoはアプリケーション終了時にUIやウィンドウの状態をコンフィグファイル(MODOxx.x.CFG)に保存します。UIを意図せず変更して壊してしまうのを避けるため、コンフィグに設定を保存したくないという場合があるかもしれません。
そんな時はコマンドラインフラグを使用すると、コンフィグに設定を保存しないようにできます。

-dbon:noconfig

ショートカットのプロパティにフラグを追加すると便利に使えます。

 

ファイルに「アクセンス許可」で書き込みを禁止する場合と異なり、ファイルメニューの「設定の上書き保存」を使用して好きなタイミングで設定を保存できます。

 

参考

https://community.foundry.com/discuss/post/1181324

Tips

modoのパーティクルをサーフェースに沿って動かす方法

今回はメッシュの表面に沿ってパーティクルを動かす方法について書いてみたいと思います。

■サンプルファイル

アイテムのスナップ移動」でも軽く書いてますが、modoのパーティクルシステムは他のソフトと違い、アイテムのリギングで使用するノードをそのままパーティクルシステムで使用することができます。
汎用性が高くて面白い特長ですが、どうすれば欲しい表現を実現できるかわかり難いと感じることもあると思います。そこで「パーティクルをサーフェースに沿って動かす表現」を作る場合の考え方、どんな感じでノードを使えばいいか手順を書いてみます。

 

1.サーフェースに沿わせたい →「交差サーフェース」コンストレイント

パーティクルをサーフェースに沿わせたい場合、まずサーフェースと交差判定できるノードが必要そうだと思いつきます。modoのアニメーション機能でサーフェースと交差判定できる機能といえば、「交差サーフェース」コンストレイントです。

「交差サーフェース」コンストレイントは、サーフェース表面にロケーターをくっつけてくれる機能です。操作の基準となるアイテム、メッシュアイテムの順番で選択してモディファイヤタブの「交差サーフェース」ボタンを押すと、サーフェース表面に沿って移動するロケーターを生成してくれます。

スケマティックでノードの繋がりを見るとこんな感じになってます。

Toroidアイテムと、操作の基準となるアイテム(Locator)がIntersect ノードにつながって、交差位置用のアイテム(Locator_2)に位置が出力されていることがわかります。

このノードの処理をパーティクルで組めば同じようにサーフェースに沿ったパーティクルの移動が作れそうです。

 

2.「交差サーフェース」コンストレイントと同じ処理をパーティクルで組む

スケマティックはこんな感じです。Intersectの流れを見比べると「交差サーフェース」で作られたノード構成と同じようにリンクされてるのがわかると思います。

Particle Operatorの特性で「位置(Read Only)」「位置」の2チャンネル追加して、「交差サーフェース」と同様にノードをリンクします。Intersect の「位置出力」のチャンネルタイプマトリクスなので、Matrix Vectorを使用して「位置」チャンネルにリンクできるようXYZ軸に変換します。

 

「位置(Read Only)」「位置」について

パーティクルは「位置(Read Only)」「位置」の2つのチャンネルを使用することで、他のノードで計算した結果を戻すことができるようです。
modoは1つのノードであれば依存ループにならずに計算出来るのですが、パーティクルの場合は1つだけでは複雑な計算ができないため、このような動作になってるのかもしれません。

 

VDB Voxelを使用してメッシュを作成すると、サーフェース表面を水が流れるような表現にも使えそう。

パーティクルをサーフェースに沿って動かすのは Particle Snap Modifierを使用しても同じような表現は可能ですが、Particle Snap Modifierはパーティクルそのものの位置には影響がありません。
例えばサーフェースに沿って動いてるパーティクルから、さらにパーティクルを発生させたい場合には今回紹介した方法が便利だと思います。

Tips

modoのプロシージャルモデリングでソフトクリーム作ってみた

暑いのでmodoのプロシージャルモデリングでソフトクリーム作ってみた。プロシージャルにこだわって作ったので、モデルの形状は雰囲気です。

■サンプルファイル(13.1)

 

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

 

クリーム

クリームの螺旋はSpiral Curveアセンブリを使用してます。Transform Effectorを使ってカーブをアニメーションしてます。そのカーブをmodo13.1で追加されたCurve Sweepを使用してクリームのメッシュを生成してます。クリームのシルエットやカップコーンに入る部分の調節にはラティスデフォーマを使用してます。

Curve Sweepは複数のパスを使用して押し出したり、ミニグラフを使用してカーブの太さを制御できるので便利です。

 

スプリンクル

クリームのふりかけ(スプリンクル)は、ReplicatorとLinear Falloffのイージングを使用してアニメーションしてます。カラフルな色のレンダリングにはVariation Textureを使用してます。

変形するメッシュにSurface Particle Generatorを使用するとフレーム単位でポイントの位置が変わってしまうことがあるので、中央のソフトクリームはアニメーション終了時のメッシュを別アイテムとしてコピーしてSurface Particle Generatorのソースとして使用しています。

プロシージャルモデリング用のメッシュにダイレクトモデリングしようとすると警告が表示されますが、ポリゴン選択してコピーすることはできるので便利です。

 

コーンカップ

コーンカップはコーン断面のパスを作成し、Radial Sweepを使用してコーンがあらわれるアニメーションにしてます。Radial Sweepには始点と終端のキャップを生成するオプションがあるのですが、あまり形状が綺麗にならなかったのでOFFにしました。

 

 

modoのプロシージャルモデリングはアニメーションでは使うには遅いのが気になります。クリームが落ちてくる速度と形状がいまいちなのですが、動作が遅いのでタイミング詰めるのあきらめました。今回はプロシージャルにこだわって作りましたが、クリームのらせん形状はデフォーマを使ってアニメーションしたほうが軽く作れるかも知れません。

プロシージャルモデリングはモデリングするときに便利ですが、アニメーションで使用するにはもう少し速度が改善されると嬉しいですね。今後のバージョンアップで快適に動くようになるのを期待してます。

Tips

modoのプロシージャルモデリングでクラシックなメッシュ粉砕

modoのプロシージャルモデリングを使用して、クラシックなメッシュ粉砕表現について書いてみます。プロシージャルモデリングはアニメーションを想定した機能が弱く、あまりいい表現にはなりませんでした。

■サンプルファイル

現在のように「シャッター&グルー」のようなボロノイ分割があたりまえの表現になる前は、ポリゴンが分かれて縮小するような表現を「粉砕」と呼んでいました。そんなゲームっぽいクラシックな表現ができたらいいなと思ってプロシージャルモデリングでどこまでできるかチャレンジしてみました。下の画像はC4Dの粉砕機能。

 

modoのスケマティックはこんな感じ。アセンブリとして再利用できるように作ってみた。

  1. Merge Meshesで粉砕したいメッシュを統合します。
  2. Polygon Bevelの「グループ化」をOFFにしてベベルをかけます。
  3. DeleteとSelect by Previous Operationを使用してベベルの「側面」を削除します。
  4. Push Influenceを使ってメッシュが波うつように変形します。
  5. Deleteを使ってメッシュを削除します。

アニメーションはLinear Falloffを使用してタイミングを調節しています。レンダリングにはCel Edges Materialを使ってみた。

 

単純な形状なのでそれっぽく見えるかも知れませんが、ベベルを使用するとポリゴンが小さくなる表現がうまくいかないです。
ベベルの「インセット」は長さ指定なので、大きな値を設定するとベベルが反転します。本来やりたかったポリゴンが小さくなって消える表現をするにはベベルが反転しないオプションか、「インセット」をポリゴンの大きさに合わせて%で指定するようなオプションが欲しくなります。
もしくはTransform Deformerにアクションセンターのローカルようなことができる機能が追加されるといいですね。何かいい方法あるのかな。

あと複雑なモデルを使用したとき、フォールオフが効かなくなったり怪しい動作に遭遇しました。サンプルファイル開くとわかりますがSelect by Previous Operationが原因のような気がします。

ロゴのスライスアニメーションを作ったときにも思いましたが、modoのプロシージャルモデリングはもっとアニメーションを考慮したオプションが増えて欲しいですね。アニメーションの場合は滑らかにモデリング処理を適用したいんですよね。
あとEdge SplitにTool Pipeがあればベベルを使用しなくて済むのでノード数が減らせるはずなので、Tool Pipeのような基本機能は全てのモデリングノードで統一して使えるように整備して欲しいな。

 

似たようなメッシュを粉砕する表現にはソフトボディーを使う方法もあるので、色々試してみると面白いと思います。

 

参考

https://community.foundry.com/discuss/post/1092610

Tips

modoでネットワークレンダリングする方法

今回はmodoの標準機能を使用してネットワークレンダリングする方法について書いてみます。modoのネットワークレンダリングは静止画と動画の両方に対応してます。Bonjourを使用すると設定も簡単でお勧めです。

 

ネットワークレンダリングとは

ネットワークレンダリングはレンダリング時間を短縮するために、複数のPCを使用して計算を分散してレンダリングする機能です。
3DCGのレンダリングは一般的に絵の品質を高めれば高めるほど時間がかかります。映画だと1秒間におよそ24コマ(フレーム)の絵を必要としますが、1フレームあたりのレンダリング時間は速いものだと1~5分間。遅い物だと1時間以上かかることも普通にあります。動画を作る場合は1台のPCで全てレンダリングするのは大変なので、複数のPCを使用してネットワークレンダリング(分散レンダリング)を行うのが一般的です。

 

ネットワークレンダリングの注意点

ネットワークレンダリングにはPCの使い方や、ネットワークに関する最低限の知識が必要です。ネットワークレンダリングでつまずきやすい点をまとめてみました。
modoではシーンファイルを読み込んでレンダリングを実行するPCを「マスター」、マスターからシーンファイルを受信して分散レンダリングするPCを「スレーブ」と呼びます。スレーブPCはmodoのライセンスがなくてもレンダリングに使用することができます。

  • マスターPCとスレーブPCに同じバージョン(ビルドナンバー)のmodoをインストールする
  • マスターPCからスレーブPCにファイルアクセスできることを確認する
  • レンダリング画像の保存先はネットワークパスを使用する
  • ファイアウオールの設定を適切に設定する
  • 必要に応じてBonjour をインストールする

 

同じバージョン(ビルドナンバー)のmodoをインストールする

あたりまえの話ですがmodoはバージョンアップごとに機能が追加されるため、同じバージョンのmodoを使用しないとレンダリング結果が異なることがあります。そのようなミスを防ぐためmodoは同じバージョンのスレーブとだけ通信します。これはmodoに限らず他の3Dソフトでも同じですね。

 

マスターPCからスレーブPCにファイルアクセスできることを確認する

マスターPCとスレーブとして使用するPCが同じネットワーク内に存在していて、お互いのPCが通信可能か確認しましょう。ネットワーク共有したフォルダにアクセスできれば問題ありません。たまにネットワークにPCが見えていてもアクセス出来ないことがあります。

 

レンダリング画像の保存先はネットワークパスを使用する

レンダリング画像の保存先はネットワークパスを使用します。これもあたりまえの話ですがマスターPCで「C:\RenderImage」のようなローカルパスを出力先に指定しても、スレーブPCからは画像を保存することができません。ネットワークにフォルダを共有して「\\MyPC\Share\RenderImage」のようなネットワーク経由のファイルパスを使用しましょう。

 

ファイアウオールの設定を適切に設定する

Windowsには「Windows Defenderファイアウオール」が標準で入ってます。modoがネットワークと通信を行う場合、ファイアウオールが通信を遮断してしまうことがあります。その場合はmodoが通信を行えるように適切に設定する必要があります。
追加でセキュリティーソフトを使用している場合も同様に、通信が遮断されないように通信の許可ルールを設定する必要があります。

もしも通信がうまく行かない場合は、PCのファイアウオールを一時的に無効にして通信が成功するか確認し、どこに問題があるかしぼり込むといいです。ネットワークの通信設定は少し面倒くさいので、わからないことは検索して頑張ってください。

 

必要に応じて Apple Bonjour をインストールする

Windows版のmodoをインストールする時、modo11.0まではmodoと同時にApple社のBonjourというソフトがインストールされていました。modo 11.1以降はBonjourがインストールされなくなったため、Bonjourを使用したい場合には別途インストールする必要があります。

Bonjourとは

BonjourはApple社が開発しているソフトです。「何の設定も行わず機器を使用可能にする」という目的のソフトで、面倒な設定を必要とせずLAN内でソフト間の通信を可能にします。Appleのメディアプレイヤー「iTunes」をインストールすると「Bonjour」もインストールされます。

 

ネットワークレンダリングの手順

ネットワークレンダリングはスレーブPCでmodoスレーブモードを起動、次にマスターPCのmodoにシーンファイルを読み込んで、レンダリングを実行するという手順で行います。
ネットワークレンダリングで使用されるシーンファイルは1度テンポラリに保存され、各スレーブPCに転送されます。

スレーブPC

スレーブPCはマスターPCからシーンファイルを受信してレンダリングする役割のPCです。マスターPCからレンダリングを実行する前に、modoをスレーブモードで起動する必要があります。

1. PCにmodoをインストールして起動します。

「Modo13.1v1j_Windows.msi」を使用して通常通りmodoをインストールします。modoは複数台のPCにインストールするこが許可されているので、好きな数だけPCにインストールします。

 

2. スレーブモードに設定します。

スレーブモードを設定するにはmodoをライセンスが無い状態で起動します。すると「ライセンス」ダイアログが表示されます。

ライセンス ダイアログの「高度」ボタンを押すと、いくつかのオプションが表示されるので「スレーブとして起動」を押します。

「レンダースレーブ」ダイアログが開き、modoが待機中になります。

Windowsのセキュリティ警告が表示された場合は「アクセスを許可する」を押してください。キャンセルするとファイアウオールに通信がブロックされレンダリングに参加出来なくなります。

 

ライセンスインストール済みのmodoをスレーブモードにしたい場合はレンダーメニューから「スレーブモードに設定」を使用します。

以上でスレーブPCの準備完了です。もしサードパーティのプラグインを使用している場合は、スレーブPCにもプラグインをインストールする必要があります。

 

modo_cl.exeのスレーブモード

modoを起動してスレーブモードにすると、フルスクリーンで起動してGUIのサイズが変えられないので邪魔です。コマンドライン用のmodo (modo_cl.exe)に起動オプション -slave を使用すると、modo_clをスレーブモードにすることができます。ショートカットを作成しておくと便利に使えるのでお勧めです。

 

マスターPC

マスターPCからネットワークレンダリングを実行する手順です。
modoにはスレーブPCと通信を行う方法が2種類あります。「Bonjour」を使用する方法と「ホストリスト」を使用する方法です。両方の方法を紹介しますが「Bonjour」を使用する方法がお手軽だと思います。

 

Bonjourを使用したネットワークレンダリング

Bonjourを使用するメリットは手軽に通信が行えることです。

1. modoを起動してシーンファイルを読み込む

2. ネットワークビューでスレーブPCを確認する

「ネットワークビュー」を開いて、スレーブPCがリストされていることを確認します。スレーブPCが表示されない場合は、ファイアウオールの設定など注意点を確認してください。

スレーブPCの状態は●の色で表示されます。

  • 緑色 : 互換性がありレンダリングが可能です。
  • 灰色 :互換性がありますが、レンダリングの準備ができていません。
  • 赤色 : 通信できません。または互換性がありません。

灰色でもレンダリングすると動くことが多いので、とりあえずレンダリング実行してみるといいです。

 

3. ネットワークレンダリングを設定する

「初期設定」ウィンドウを表示し「最終レンダリング」の項目で「ネットワークレンダーノードを使用」「ボンジュール経由でレンダーノードを検出」をONにします。

好みに応じて「ネットワークノードでのみレンダリング」「ネットワークレンダーノードへフレーム全体を送信」を設定します。

ネットワークノードでのみレンダリング

マスターPCをレンダリングに参加するかどうかの設定です。このオプションがONの場合、レンダリングはスレーブPCのみで実行されます。マスターPCで他の作業がしたい場合はONがいいと思います。

ネットワークレンダーノードへフレーム全体を送信

フレーム単位で分散するかどうかの設定です。このオプションがONの場合、1フレーム単位でスレーブPCに分散します。アニメーションをレンダリングする場合はONがいいです。

オプションがOFFの場合、1フレーム(1枚の画像)をバケット単位で分散します。静止画をレンダリングする場合はOFFがいいと思います。レンダリングウィンドウでは、スレーブのバケットが青枠で表示されます。

 

4. レンダリングを実行する

「アニメーションをレンダー」 または「F9」を押します。ファイルの出力先にはネットワークパスを指定します。

レンダリングウィンドウが表示され、レンダリングの進行状況やスレーブPCの数が表示されます。レンダリングウィンドウは下のバーをドラッグしてネットワークビューを表示することもできます。

 

ホストリストを使用したネットワークレンダリング

ホストリストを使用するメリットはレンダリングするPCを指定できることです。例えば10台のスレーブPCうち、5台でレンダリングするというようなグルーピングが可能になります。

1. modoを起動してシーンファイルを読み込む
2. ネットワークレンダリングを設定する

「初期設定」ウィンドウを表示し、「最終レンダリング」の項目で「ネットワークレンダーノードを使用」をON、「ホストリスト経由でレンダーノードを検出」をONにします。

好みに応じて「ネットワークレンダリングでのみ」「ネットワークレンダーノードへフレーム全体を送信」を設定します。

 

3. ホストを追加する

初期設定ウィンドウの「ホストリスト」の項目でホストを追加します。「ホストを追加」ボタンを押して「新規ホストエントリ」ダイアログを表示し、PC名 または IPを入力します。

リストでホストを選択して、右上の「ホストをテスト」を押してスレーブPCと通信可能かテストします。
次に「選択の接続」を押すと、ネットワークビューにPCがリストされネットワークレンダリングで使用可能になります。

 

4. レンダリングを実行する

「アニメーションをレンダー」または「F9」を押します。ファイルの出力先にはネットワークパスを指定します。

レンダリングウィンドウが表示され、レンダリングの進行状況やスレーブPCの数が表示されます。

 

ネットワークレンダリングはBonjourを使用すれば比較的手軽におこなうことができて便利です。
今回modo標準機能を使用したネットワークレンダリングの記事を書いてみましたが、modo標準のレンダリングマネージャーは安定性や信頼性が高くないようです。大規模なシーンのレンダリングではDeadlineのようなレンダリングマネージャー(ディスパッチャー)を使用した方が、PCの性能を考慮して賢く分散処理してくれる気がします。

 

参考

ネットワークレンダリングの手順
https://learn.foundry.com/modo/content/help/pages/rendering/network_rendering.html

ネットワークレンダリングのトラブルシューティング
https://learn.foundry.com/modo/content/help/pages/rendering/nr_troubleshoot.html

Tips

modoでモーショントレイル表現

modoでモーショントレイル、アイテムが移動したときの軌跡の作り方について書いてみたいと思います。モーショングラフィックでよく見かける表現です。

■サンプルファイル

 

スケマティックはこんな感じです。modo 13で追加されParticle ArrayとCreate Polygonsを使用します。

Arrayとは

Arrayはポイント、カーブ、アイテムの位置、文字列など様々な値から、頂点番号のような配列データを生成するノードです。Create Polygonsは配列データ使用してポリゴン、ライン、カーブを生成するノードです。
ArrayとCreate Polygonsを使用すると、modo 12以前ではできなかったアニメーション可能で自由度の高いポリゴン生成ができるようになります。

 

今回のモーショントレイルのような表現では、Meshの頂点をParticles to Arrayの「複数フレームモード」を使用してアニメーション全体の配列データを生成しています。
カーブの長さをアニメーションさせるためFilter ArrayとInt Range From Patternを使用して、カーブの始点と終点の位置をアニメーションしてます。最後にCreate Polygonsでカーブを生成します。

Curves to Arrayを使用すると、Create Polygonsで生成したカーブ間にポリゴンを貼ることができます。NURBSサーフェースのような制御ができて面白いですね。

静止したカーブをレンダリングする場合は、アイテムのプロパティで「カーブをレンダリング」をONにします。

アニメーションをレンダリングするとこんな感じになります。カーブごとに色を変えるのは、Variation Textureを使用しています。

 

ホーミングレーザーっぽい表現にも使えそう。

 

サンプルファイルではカーブ生成用に専用のメッシュを使用していまが、本当はSurface Particle Generatorを使用してランダムな位置からカーブを生成しようと思ってました。ですがSurface Particle Generatorを使用すると動作が遅くなるのでやめました。

ほかにもCreate Polygonsが原因なかわかりませんが、2つほど問題に遭遇しました。

  • モーションブラーを使用するとレンダリング時にカーブが消える。
  • GLよりカーブが短くレンダリングされる。

Arrayの使い方に失敗してるのかも知れませんが、安定した動作でより高度な表現をしたい場合には「TracerX」を使用するのがよさそうです。

 

参考

Arrayのステキな使い方が紹介されてるスレッドで、とても参考になります。https://community.foundry.com/discuss/topic/146466/arrays-in-the-mix

Tips

modoでアイテムが粉砕されて別のアイテムに変わる表現

modoでアイテムが粉砕されて、別のアイテムに組変わる表現について書いてみたいと思います。基本的には以前書いた記事の組み合わせでできる表現です。

 

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

 

最初にアイテム2個(球とトーラス)を Shatter を使用して粉砕します。粉砕タイプはUniformを使用します。破片の個数は球とトーラスで同じ数を設定します。
粉砕したアイテムは Locators to Array とCreate Polygonsを使用して、アイテムのセンターの位置に頂点を作成します。この頂点からSource Emitterを使用してパーティクルを発生させます。今回はWind ForceとCurve Forceを使用してパーティクルを制御しました。

 

球とトーラスのParticle Simulationのうち、どちらか一方を CSV Point Cacheを使用してキャッシュします。またCSV Point Cacheの「オフセット」を使用してシミュレーションを逆再生にします。

 

Particle Simulation_3では「パーティクルの位置をブレンドする方法」と同じく Matrix Blendを使用してパーティクルをブレンドします。こうすることで球から発生したパーティクルが、トーラスの位置に移動するパーティクルを制御できます。

 

Particle Simulation_3をMerge Meshesし、Create Polygons_3でラインを生成します。このラインメッシュに粉砕したアイテムを「頂点の位置コンストレイント」することでアイテムをアニメーションしています。粉砕したアイテムを球からトーラスに変えるところは「アイテムインフルエンス」を使用します。リニアフォールオフを使用して球の破片はスケールが100%から0%になるように設定し、トーラスの破片はスケールが0%から100%に変わるように設定しています。

スケマティックでは粉砕したアイテムを循環して使用してますが循環させない方がいいです。循環させるとコンストレイントの影響でアイテムの位置からパーティクルが発生しなくなります。少し煩雑になりますが粉砕したアイテムは複製して、 Locators to Arrayで使用するアイテムと、コンストレイントするアイテムはわけた方がいいです。


「頂点の位置コンストレイント」は複数のアイテムを同時にコンストレイント設定できないので、「コンストレイント補正オプション」をONにして、手動で1つずつコンストレイントしました。ちょっと面倒くさいですね。

 

パーティクルをフォローするようにカメラ移動するとこんな感じになります。

Iridescence Materialとクリアコートを設定してレンダリングしてみまた。Iridescence Materialは虹色の反射を設定できるので、たまに使うと面白いですね。

Tips

modoのダイナミックリプリケータ

今回はReplicator通しのコリジョン計算を行うダイナミックリプリケータについて書いてみます。ビンにあめ玉を入れたり、アイテムをばらまくときに便利です。

サンプルファイル

 

modoではパーティクルにメッシュを複製する場合はReplicatorを使用しますが、パーティクルとメッシュにコリジョン判定を設定してもReplicator通しのコリジョン計算はおこなわれません。

Replicator通しのコリジョンを設定したい場合には Dynamic Replicator を使用します。Dynamic Replicatorを設定するには、Replicatorを選択して「アクティブリジッドボディ」をクリックします。

 

Dynamic Replicatorは異なるReplicator通しでコリジョン計算することができます。

Dynamic Replicatorの「質量」を設定すると、衝突したときの動きに変化をつけることができて面白いです。

 

modo 10くらいからサンプルコンテンツがあまり増えなくなってしまったので、Dynamic Replicatorの基本的なファイルを公開しておこうと思って記事を書いてみました。

 

参考