Simulation

Tips

modoのテクスチャリプリケータ

modoにはアイテムをメッシュの頂点に複製する「リプリケータ」という機能がありますが、テクスチャ版の「テクスチャリプリケータ」という機能が便利なので紹介したいと思います。

テクスチャリプリケータ はアイテムの頂点にテクスチャを配置することで、模様を作ったりテクスチャのタイリングを目立たなくしたりに使える機能です。

画像だけでなくプロシージャルテクスチャにも使用する事ができます。ノイズテクスチャを使用すると下の画像のようになります。

Surface Generatorと併用することで、アイテムのメッシュに依存することなくランダムにテクスチャを散布することができます。
modoはプロシージャルテクスチャ機能が豊富なので、ゲーム向けにテクスチャをベイクして活用したいときなんかにも便利に使えると思います。

Gradient レイヤーにはテクスチャリプリケータに関連する設定があります。入力パラメータを「テクスチャパーティクルID」に設定するとランダムな色を設定することができます。

入力パラメータを「ロケータまでの距離」に設定すると、放射状のグラデーションにすることができます。

 

テクスチャリプリケータの面白いのが「パーティクルソース」にParticle Simulationを指定できて、パーティクル特性を利用できることす。例えばパーティクルが「サイズ」が徐々に大きくなるように設定すると、テクスチャリプリケータに反映されます。
下の画像はシェーダーツリーでレイヤーエフェクトを「ディフューズ色」と「バンプ」に設定したものです。

スケマティックも貼っておきます。Particle Operator に「寿命」と「サイズ」を追加して、「寿命」チャンネルを「サイズ」にリンクします。これで個々のパーティクルが発生してから徐々に大きくなるように設定しています。

 

あまり語られることはありませんが、modoのパーティクルはモデリング、レンダリングに次いで強力な機能だと思います。パーティクル機能とテクスチャリプリケータを併用することで、水の波紋オブジェクトが濡れる表現文字を書く、など他のソフトでは専用プラグインが必要そうな表現を標準機能だけで作ることができます。

バンプを使用すると航跡波っぽい表現もできます。試しにコースティクス設定したら思いのほか綺麗にレンダリングできました。

次回はパーティクルとテクスチャリプリケータ使ったエフェクト的な表現について書いてみたいと思います。

Tips

modoでアイテムのスナップ移動

Channel RelationShipで紹介したグリッドにスナップしたように移動する方法で思い出しましたが、演算の「切り上げ」「切り下げ」ノードを使って正数を出力しても同じ表現ができるので、その方法について書いてみます。

「切り上げ」「切り下げ」そのままだと、スナップする間隔が指定できません。
任意の大きさでスナップする計算方法は以下の通りです。

  1. 「位置」÷「スナップする間隔」の値を「切り上げ」ます。これで何マス移動したかを求めます。
  2. 「切り上げ」の出力値を「スナップ間隔」でかけてやります。これでアイテムの位置を求めます。
  3. グループロケータの「SnapSize」と「XYZ」はユーザーチャンネルです。
    「SnapSize」は浮動小数点数タイプのチャンネルで、スナップする間隔を入力します。例えば 1 を入力すると 1m 間隔でスナップします。

ロケータの位置をアセンブリを経由してトーラスの位置に出力すると、トーラスがスナップしながら移動するようなアニメーションになります。

このスナップ計算は以前ゲーム作ろうと思ってマップチップ移動調べたときに、チュートリアル見て覚えました。こういう計算は自分では全く思いつかないので、ゲーム系の解説しているサイトはすごくためになります。

modoのパーティクルはアイテムと同様にモディファイヤで制御することができます。パーティクルに今回作ったスナップ アセンブリを使用すると、パーティクルの位置をスナップさせることができます。

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

トーラスからSurface Emitterを使用して、寿命が1フレームのパーティクルを発生します。
Particle Operatorを使用してパーティクルの「位置」を、Collector / Emitterを使用して別のParticle Simulationに継承します。このときスナップアセンブリを使用して、パーティクルの位置が一定間隔にスナップする設定しました。
右下のParticle Operatorは「寿命」と「サイズ」をChannel RelationShipを使用して、発生後30フレーム経過したら小さくなって消えるようしています。

パーティクルのスナップの処理はレゴ風エフェクトに使えないか試したのですが、パーティクルの発生数が多いと同じ座標に複数のパーティクルを重なった状態になって使えませんでした。パーティクル制御の参考になるかと思ったので失敗例として公開しておきます。

アイテムとパーティクルの両方で同じアセンブリが使えるのは、機能ごとに似たような別の仕組みを覚え直す必要がなくてとても便利ですね。

CG News

VECmap tools リリース

ベクターマップを使用してパーティクルを制御するためのツールセットのようです。楽しそう!
価格は25.00€
http://hocuspocus-studio.fr/tools/product/vecmap-tools/

特徴 
  • メッシュペイント
  • ブラシサイズの変更:CTRL + SHIFTキー
  • ブラシ不透明度
  • ブラシのブラー変更
  • ブラシストロークの方向にベクトルペイント
  • 引き込み/拒絶 オプション
  • 元に戻す、やり直し、リセットオプション
  • 削除ブラシ:ALTキー
  • 直線ブラシ:SHIFTキー
  • マップサイズ変更
  • 保存/ロード マップ

Pflow モード

  • ベクトルマップを読み込むための2つの新しいデータプリセット
  • ベクトルマップから速度を設定
  • サーフェース スティック
  • マップ上のパーティクルの速度を変更します。
  • ベクトルからの回転

UVモード

  • ベクトルマップに沿ったUVの変形をシミュレートする新しいモディファイヤ、またはメッシュ変形をシミュレート

これはスクリプトモディファイヤでうまく動作しますが、ハイメッシュには注意が必要です。シミュレーションには時間がかかります。ハイメッシュにベクトル線を表示しようとすると、3dsmaxが遅くなることがあります(低解像度メッシュにマップをペイントし、シミュレートするために解像度を上げてください)

Vrayファーモード

  • Fur Initial directionとBend Directionを駆動するためにマップペイント
Tips

modoのスケルトンをダイナミクスで動かす方法

スケルトンによる変形と物理演算を併用する方法について書いてみます。
結論から言うとそれっぽく動くけど、スケルトンのフリップを回避できませんでした。用途によっては使えるかもしれないので問題点を含め手順を書いておきます。

今回試した方法はソフトボディ計算したメッシュに、スケルトンを「ポリゴンの位置」「ポリゴンの法線」コンストレイントする方法です。

作成手順です。

  1. スケルトン、バインド済みのメッシュ、ソフトボディ計算用のメッシュを準備します。
    ソフトボディはあらかじめ「シミュレーションを演算」でキャッシュを作成しています。
  2. セットアップモードをONにして、スケルトン、メッシュの順に選択して「ポリゴンの位置」コンストレイントを適用します。このとき補正オプションはONです。
  3. 同じ要領で「ポリゴンの法線」コンストレイントを適用します。
    「ポリゴンの位置」コンストレイントは位置をポリゴンにくっつけてくれますが、スケルトンに回転の情報は伝わりません。「ポリゴンの法線」コンストレイントを使用することで位置と回転をスケルトンに与えています。
  4. セットアップモードをOFFにしてアニメーションを再生すると、スケルトンによってバインドしたメッシュが変形します。
    ここでスケルトンは動くのにバインドしたメッシュが変形しない場合は、シーンを「保存」した後に「ファイル / 復帰 」を使用してシーンをリロードすると正しく動くようになります。おそらくダイナミクスのキャッシュとデフォーマの評価順に問題があって、シーンロード時にだけ正しく動作してる気がします。

一見それっぽく動いてる用に見えますが、よく見るとスケルトンがフリップしてるのがわかります。ソフトボディの計算でポリゴンがゆがんでるのが原因だと思いますが、ソフトボディでポリゴンを安定させるのは大変な気がします。

ポリゴンにスケルトンをコンストレイントする方法はスカートのように厚みのないメッシュに向いてると思います。厚みのあるモデルはチェーンの作り方のように、パスコンストレイントしたカーブに「ダイナミックカーブ」を使用すると、メッシュの「半径グラディエント」を衝突判定に使用することができるので便利かも知れません。

 

スケルトンとダイナミクスの問題点

modoのダイナミクスはメッシュかカーブがないと衝突判定の範囲を制御できません。スケルトンに「アクティブリジッドボディ」を適用して「衝突実行」をONにすると物理計算はできますが、コリジョンサイズが 1m 固定になってしまいます。
どこかでコリジョンサイズを変更できれば、ピンやスプリングコンストレイントを使ってスケルトンを物理計算できるようになる気がします。下の画像はシーン全体を1mのコリジョンにあわせたものです。

スケルトンを使うとアニメーションをベイクできるので、他のソフトにモーションを出力できるというメリットがあります。modo内で完結するならラップデフォーマのケージメッシュにソフトボディを適用する方法が手軽かもしれません。

CG News

MOOTZOID プラグインがフリー化

Softimage用のプラグインメーカーとして有名だった MOOTZ OID が、プラグインを全てフリー公開してサポートを終了したようです。emReader、emPolygonizer5はmodo用のプラグインもあります。
http://www.mootzoid.com/plugin

ダウンロードしたファイルは、フォルダごと以下のディレクトリにコピーすると使えるようになります。

  • C:\Users\(ユーザー名)\AppData\Roaming\Luxology\Kits
emPolygonizer5

emPolygonizerは「メッシャー」プラグインです。Realflow で計算されたパーティクルをメッシュ化するために使用します。最近ではOpenVDBにメッシュ化する機能がありますが、emPolygonizerは色々設定があるので細かな調整ができるかもしれません。

 

emReader

emReaderはキャッシュされたジオメトリシーケンスを読み込むプラグインです。
メッシュ入りの Realflow フォーマットやobjシーケンスをロードすることができます。modo標準の Realflow Particle ノードではメッシュに対応していないので、Realflowユーザーには朗報かもしれません。といっても最近はAlembicが使えるのかな。

Tips

Particle Snap Modifier と Particle UVT Modifier

modo11.2からParticle Snap ModifierとParticle UVT Modifierが追加になっているようです。モディファイヤ作成コマンドは以下の通りです。

  • item.create pMod.uvt
  • item.create pMod.snap
Particle Snap Modifier

Particle Snap Modifierは指定した範囲のパーティクルをメッシュにスナップさせることができます。

 

Maya 2018.3 のClosest point on Meshのまねしてみた。

 

Particle UVT Modifier

Particle UVT Modifier はメッシュのUV上をパーティクルが移動するモディファイヤのようです。チャンネルビューポートで使用するUVマップ名を入力する必要があります。

Tips

VDBデータからメッシュを生成する方法


modo 901からOpenVDBファイルを読み込んでレンダリングできるVDBVoxelノードが追加されました。
OpenVDBファイルは煙のようなボリュームデータを保存出来るオープンソースのファイルフォーマットです。元はHoudiniでシミュレーションしたボリュームを他のソフトやレンダラーで使うために作られたフォーマットだった気がします。

VDBVoxelは上の画像左側のようにボリュームをレンダリングすることも出来ますが、画像右側のようにボリュームデータからポリゴンメッシュを生成することができます。ボリュームからメッシュ生成する機能自体はOpenVDBライブラリが提供している物だと思いますが、このVDBVoxelはパーティクルからもメッシュを生成することができるので便利です。

modoにはパーティクルをレンダリングする機能としてBlobノードがありますが、VDBVoxelを使うことでメッシュを粗めに生成してレンダリングを早くしたり、モデリングツールで編集できるようにすることができます。モコモコデフォルメされた雲や木のようなモデルを作るのにも役立つと思います。
Blobと違ってボクセルフィルターでメッシュを滑らかにすることができるのもいい感じです。

パーティクルをBlobでレンダリングした画像。複数のParticle SimulationをまとめるのはParticle Modifierを使います。

パーティクルをVDBVoxelでメッシュ化してレンダリングした画像。

CG News

3ds Max 2018 Update 3 リリース

Mayaに搭載されている流体シミュレーション Bifrost がMaxに移植されたようです。
MayaのBifrost搭載からからだいぶ時間が経った気がしますが、予定通りMax版も開発してたんですね。
あまり実績を効かない気がしますがどうなんだろ。

https://forums.autodesk.com/t5/3ds-max-forum/3ds-max-2018-update-3-released-fluids-in-3ds-max/td-p/7417759

CG News

Stardust 1.1 リリース

After Effectsのノードベースのモジュラー3Dパーティクルプラグインがバージョンアップ。
現在はMac用の早期アクセス版でWindows版は10月リリースとのこと。
ディスカウント価格$299.00→$249.00で販売中。

同時期にVideo Copilotもパーティクルプラグインを開発してるという情報があって待ってるのだけど、その後どうなったんだろう。

新機能
  • パーティクルインスタンスとして3Dモデルとプリミティブ
  • HDRIベースの照明
  • フィジカルマテリアル
  • アンビエントオクルージョン
  • テキストとマスクの押し出し
  • GPU Powered
  • ワークフローの強化
参考資料

X-Particles 4 ティーザー

Cinema 4D用のパーティクル&ボリュームレンダリングプラグイン。
毎回プロモーションビデオがいい感じ。

買収した煙 & シミュレーションソフト「ExplosiaFX」をX-Particles 4に統合。
- 大規模および小規模の流体シミュレーションを作成するための新しいリキッドモディファイヤ、
- OpenVDBフレームのサポート。ポリゴンオブジェクトのリメッシャーとして使用できる機能を含め、パーティクルメッシュでも機能します。
- X-Particlesワークフローに布シミュレーションを導入する新しいxpCloth Dynamics。
カスタムベロシティフィールドエフェクトを作成したり、スプライン、オブジェクト接線またはノーマルを使用してパーティクルを駆動したり、アートディレクションカスタムタービュランスにCinema 4Dノイズを使用する新しいベロシティフィールドジェネレータ。

CG News

Eddy for Nuke

Nuke用の煙&火フルードシミュレーター