Simulation

Tips

modoでプロシージャルリボンの作り方

modoでプロシージャルリボンの作り方について書いてみます。

リボンのような形状を作る場合は「プロシージャルロープの作り方」と同じようにCurve Sweepを使う方法や、スプラインデフォーマを使う方法が定番だと思います。
今回は違うアプローチとしてパーティクルを使う方法を紹介してみたいと思います。パーティクルを使用しているので、フォースを使用して動きを制御することができます。

サンプルファイル

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

 

  1.  パーティクルエミッターを使用して文字の軌跡を作成します。
    今回はエミッターに直接アニメーションを設定していますが、文字形状のパスを作ってエミッターをパスコンストレイントしてアニメーションする方が動きが綺麗になるかもしれません。
  2. Particles to Array と Create Polygons を使ってパーティクルシミュレーションからカーブを作成します。
  3. カーブを Polygon Extrude を使って押し出し帯状にします。

リボンの小さな揺れはTransform Effector と Texture Falloff を使ってます。リボンが浮き上がる動きは、Linear Force と Turbulence Force を使い、Linear Falloff でタイミングを調節してます。

リボンに縁取りを設定するためプロシージャルUVを使用してみましたが、メッシュが縦長になると展開方向が回転してしまいました。平面投影してるはずなのに、どうして回転するのか謎です。

 

プロシージャルメッシュを直接ソフトボディとして使用することができれば、もっとリアルなリボンの動きを設定できると思います。modo 14.0ではプロシージャルメッシュをソフトボディで使うことができないのが残念です。将来的に対応してくれると嬉しいですね。

 

参考

CG News

Deform Dynamics for 3ds Max

「Deform Dynamics」はマルチプラットフォームのクロスシミュレーションプラグインのようです。現在3ds Maxのプラグインをベータ中らしい。ゲームエンジンでも動くのは早そうでいいですね。
https://deformdynamics.com/
https://docs.deformdynamics.com/

概要

繊維と変形ボディーの未来的なアニメーションツール

Deform は変形可能オブジェクトの魅力的な3 Dアニメーションをリアルタイムで作成するためのツールです。3 DS MAXなどの現在のアニメーションツールは静止シーンには最適ですが、リアルタイムアニメーション用にはまったく設計されていません。

 

特徴

  • 3 DS MAXと同等の(または高い)品質ですが、10~100倍高速です。
  • リアルタイムで、バーチャルリアリティで自然なインタラクションを可能にします。
  • インタラクティブ性は、ほとんどの設計者が新しいオブジェクトの作成時に経験する試行錯誤のループを短縮します。

仕様

物理エンジンはC++とCUDA Cで記述されています。このエンジンはマルチコアCPUとマルチスレッドGPUの並列計算機能を利用して、正確で信頼性の高いアニメーションを生成しながら、優れたパフォーマンスとスケーラビリティを実現します。

  • メッシュコライダ。アニメートされたキャラクタとの正確な衝突。
  • マルチレイヤード。アニメのキャラクターは重ね着ができます。
  • リアルな摩擦。

 

サポートされるプラットフォーム

Deform Animation Tool は、Unity、Blender、Unreal Engine、Maya、AutoDeskをサポートしています。

 

制限事項

  • 現在、GPUを使用したシミュレーションでは、CUDA対応のNVIDIAグラフィックスカードのみがサポートされています。
  • 衝突システムには、高性能なシミュレーションを提供するために、2つの基本的な制限があります。
    • 自己衝突は現在、球-球交差テストを使用して検出されています。これにより、布地が衝突したときに不自然な動作が発生することがありますが、高忠実度の衣服をシミュレートしたときにはほとんど目立ちません。
    • 衝突は時間的に離散的です。これは、非常に速い速度では、一部の衝突が失敗する可能性があることを意味します。にもかかわらず、衝突はぴったりした衣服を着た高速で移動するキャラクタをシミュレートするのに十分な強度を備えています。
  • 弾性材料の動的挙動を近似して性能を最大化しました。このようにして作成されたアニメーションは、CAD、視覚効果、ビデオゲームなどのインタラクティブなグラフィックスアプリケーションに、視覚的に妥当なものであり、完全に適しています。

 

技術背景

ライブラリの背景にある技術的な背景について学ぶには、以下を読むことをお勧めします。

Vivace: a Practical Gauss-Seidel Method for Stable Soft Body Dynamics

Tips

modoのリジッドボディで壁が崩壊する表現

modoのリジッドボディダイナミクスで崩壊する表現をテストしてみたのでファイルを公開しておきます。単純なファイルであまり綺麗なデータではありませんが、何かの参考になればと思います。

 

壁が壊れる表現

球体で壁が崩れるサンプルです。複雑なデータではないのでシミュレーション速度は早め。ボリュームのレンダリングが遅いのでレンダリングするのはお勧めしません。

サンプルファイル

 

煙のない画像。

 

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

壁のオブジェクトは形状メニューの「メッシュシャッター」の均一を使用して分割してます。分割したアイテムは「複合ダイナミクス」を使用して、まとめてダイナミクスを設定してます。

Collision Emitterを使用してリジッドボディの衝突を使用してパーティクルを発生させ、そのパーティクルを利用して壁の大小の破片と、煙用のボリュームとスプライト用のパーティクルを発生させています。

今回は破片から煙用のパーティクルを発生させているため、衝突した頂点付近からパーティクルが発生していますが、本来はSurface Particle Generator等を使用して面からパーティクルを発生させた方が自然に見えると思います。Surface Particle Generatorは動作が重くなるので今回は使いませんでした。

煙のパーティクルの制御は他の記事に書いてるので、そちらを参考にしてください。

 

地面が崩れる表現

地面が崩れるサンプルです。シミュレーション結果をキャッシュするとファイルサイズが1GBくらいになりますが、大規模なデータではないので、テストシーンとしては軽い方だと思います。

サンプルファイル

スケマティックはこんな感じです。基本的には上の壁が壊れるシーンと同じです。

地面が崩れるタイミングの調整にはウェイクオンの「衝突フォース」を使用しています。パーティクルに質量を設定して、パーティクルと衝突したアイテムからリジッドボディが動き出します。衝突は近くのアイテムに伝播してしまうので、細かく制御するのに向かない場合があるかも知れません。

 

modoのダイナミクスはシミュレーション速度や精度に難点があるため、ビルが崩壊するような大規模シミュレーションをじっくり見せるために使用するのは大変そうですが、アクションシーケンスの短いカットで使用するには十分使えると思います。

 

参考

Tips

modoで鎖帷子のような表現

modoのUV Transformを使って、鎖帷子(チェーンメール)のような表現をテストしてみた。

サンプルファイル

作り方は単純です。ソフトボディを使って布のようなシミュレーションを行います。

シミュレーションしたメッシュをUV Transformのターゲットメッシュに設定してチェーンメッシュを変形します。
UV TransformはUVを使ってメッシュを変形する機能です。メッシュ表面にメッシュを沿わせるモデリングやアニメーションで便利に使えます。

チェーンはループして見えるように配置した輪を、Arrayを使って複製してます。

 

UV Transformを使うと鎖帷子のように、そのままシミュレーションするのが難しい複雑なメッシュをアニメーションさせることができて便利です。

UV Transformはポリゴン数の少ないメッシュではそれほど遅くないのですが、Arrayと組み合わせると驚くほど遅くなります。また、UV Transformはターゲットの形状によって、計算不能ということなのかメッシュが変な方向に伸びてしまうことがあるようです。

 

参考

参考資料

Particle Universe

Cinema 4D、X-Particles、Houdiniで行ったシミュレーションをまとめだそうです。レンダリングはRedshift。
レンダリングが綺麗。

Tips

modoでPlexusっぽいライン表現

modoでAfterEffectsのプラグイン「Plexus」っぽいライン表現について書いてみます。

サンプルファイル

 

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

基本的にはパーティクルシミュレーションをParticles to Array使って配列を作成し、Create Polygonsでラインを生成してます。Create Polygonsは配列から一筆書きでラインを生成することしかできないので、Offset Arrayで少し配列をずらしたデータを作り、Merge Arraysを使用して1つの配列に統合します。Merge Arraysを繰り返すことで1つの頂点から複数のラインを生成してます。

パーティクルが一定の距離離れたらラインを消すためにSelect Edges by Lengthを使用します。

パーティクルをレンダリングするために、Replicatorを使用してキューブを複製してます。このときキューブはParticle Look At Modifierを使用して常にカメラを注視するように設定してます。

 

それっぽくレンダリングするとこんな感じ。ロゴの頂点番号を工夫すると、もう少し面白いテキストアニメーションにできそう。フォールオフSelect By Volumeを使って、ラインを生成する範囲を制御してみるのも面白いかも知れません。

 

参考

Tips

modoのソフトボディ

modoのソフトボディのパラメータの動作をまとめてみた。ソフトボディは布やゴムボールのようなシミュレーションに使用することができます。

 

ソフトボディ

modoのソフトボディ(Bullet Physics)はメッシュの頂点間に仮想のバネを作成してシミュレーションします。

仮想のバネ

例えばV字のメッシュがあるとします。

ソフトボディを適用すると「屈曲剛性」「構造」「シアー」はそれぞれ、下の画像の色分けした部分にバネを作成します。

仮想のバネを使用する計算方法であるため、メッシュの細かさによってソフトボディの印象が変わります。厚く固い布はメッシュを荒く、柔らかい布はメッシュを細かく分割する必要があります。

平面を「細分割」した回数でソフトボディの印象が変わる例です。メッシュが細かくなるにつれ、柔らかい布のように動いて見えるようになります。

「構造」に高い値を設定していますが、メッシュが細かくなるにつれて頂点間のバネの数が多くなり、メッシュ全体が伸びた計算結果になります。

「屈曲剛性」「構造」「シアー」は相互に影響しており、大まかな動作として「屈曲剛性」「構造」「シアー」に小さな値を設定するとメッシュが伸びるようになり、大きな値を設定すると元のメッシュ形状が維持されます。
ソフトボディは同じパラメータ設定でもメッシュの細かさによって変わるため、パラメータの値あくまで参考程度のものです。実際に使用するメッシュに応じて設定を詰める必要があります。

 

ソフトボディのパラメータ

各パラメータの変化を比べてみました。

屈曲剛性

メッシュの形状を保とうとする力です。100%のように高い値を設定するとメッシュ表面がデコボコになることがある。

 

構造

メッシュのエッジに設定されるバネです。重力のようなフォースによってオブジェクトが変形したとき、元の形状に戻ろうとする力が発生します。

 

シアー

ポリゴンの対角線上に設定されるバネです。値が大きいと布のようなシワが発生します。

 

自己衝突

自身のメッシュとコリジョンジョン判定します。メッシュ通しがめり込まなくなりますが、計算に時間がかかるようになります。

自己衝突のはチャンネルビューポートの「reSoftSelfMargin」で設定します。

 

圧力

風船のようにメッシュを内側から押す力です。メッシュが閉じた形状のときに動作します。メッシュが細かいほど効果が出やすい。

 

ボリューム維持

風船をつぶしたときのように体積を維持するパラメータらしいです。値を変えると変化はありますが、比較して明かな違いがでるような設定にできませんでした。

 

ドラッグ

メッシュの動きを抑えます。

 

質量

ソフトボディを適用したオブジェクトの重さは「質量」で設定します。フォースを使用して薄い布のように動かすには、「密度」に小さい値を設定するとよいです。フォースの強さにもよるので、密度の値は参考程度。

 

modoのソフトボディはBullet Physicsというオープンソースの物理演算エンジンライブラリを使用してます。Maya、Houdini、CINEMA 4D、LightWave 3Dなど多くのソフトで使用されています。ソフトウェアによってはライブラリに手が加えられ、シミュレーションの安定性が違ったりするようです。

CG News

FumeFX 5.0 for Cinema 4D

Cinema 4D用のFumeFXがリリースされたようです。
https://www.afterworks.com/Blog/FumeFX5-C4D-release.asp

Sitni Satiは、Maxon®Cinema4D®用の流体力学ソフトウェアFumeFX™5.0をリリースしました。

過去13年の間に、世界中の多くのスタジオ製作パイプラインの不可欠な部分となりました。Justice League、Deadpool、Independence Day2、Dr.Strange、Thor、Roland Emmerich’s2012、Ghost Rider:Spirit of Vengeanceなどのゲーム映画や大ヒット映画を含む幅広いビジュアルエフェクトの作成に使用されています。
この待望のリリースは信頼性が高く、制作実績のあるツールを提供します。このツールを使用すると、これまでのCinema4Dでは実現できなかったさまざまな効果を実現できます。Cinema4Dの豊富な機能セット、堅牢性、シームレスなワークフロー統合により、アーティストは創造性を解き放ち、複雑な視覚効果をタイムリーに実現できます。ユーザは短期レンタルライセンスから永久ライセンスまで、複数のライセンスオプションから選択できます。

 

FumeFXハイライト

ビューポート

FumeFX GPUアクセラレーションによる表示がCinema4Dビューポートに統合され、ボリュームシャドウ、適切なジオメトリオクルージョン、およびシェーダの即時フィードバックが含まれています。

シミュレーション

FumeFXのQCGソルバーは、最も厳しい生産要件に対しても信頼性の高いソリューションです。FumeFXには保存的移流タイプが用意されており、900フレームのアニメーションを実行した後でも、数値的な散逸を最小限に抑える流体フローを簡単に作成できます。

ファイルI/O

FumeFXはロスレスとロッシーを特徴としています。fxd圧縮ではチャンネルごとの圧縮タイプと品質を設定できます。最先端のマルチスレッド化。fxd I/Oにより、超高速のキャッシュ保存とロードが可能になります。キャッシュはユーザ定義の低解像度でロードできるため、アーティストはビューポートの操作とレンダリングのセットアップを簡単に行うことができます。VDBキャッシュとF3Dキャッシュのサポートは、FumeFXプラグインに統合されています。

ウェーブレット

既存のFumeFXシミュレーションに詳細を追加するのはこれまでになく簡単です。これはグリッド解像度を向上させるための高速でメモリ効率の高い予測可能な方法です。ウェーブレット乱流パスでは、シミュレーション速度を変更することもできます。

後処理

FumeFXのポスト処理を使用すると、キャッシュのリタイム、レンダーワープのベイク処理、さまざまなキャッシュファイルフォーマット間の変換、またはワークフローで不要になったチャンネルを除外することによるキャッシュフェッチの改善とディスクスペースの節約を行うことができます。また、アーティストはキャッシュをリタイムし、フロー特性を維持しながらシミュレーション速度を効果的に変更できます。

レンダリングワープ

FumeFXはさまざまなCinema4Dデフォーマをサポートしており、レンダー時やポスト処理中に使用してシミュレーションの完了後にFumeFXボクセルを曲げたり、ねじるなどの変形を実行することができます。特殊効果を作成する場合でも、最終的なアニメーションを微調整する必要がある場合でも、[レンダリングワープを使用するとさまざまな可能性を実現できます。

エフェクタ

ボクセル単位でほぼすべてのシミュレーションパラメータとフィールドをクリエイティブに制御できます。エフェクタを使用すると、速度によって渦度を制御したり、その他のチャンネル値に基づいて煙を生成したりすることが簡単になります。エフェクタはチャンネルデータを次のレベルに取り込みます。

XpressoとPython

FumeFXはCinema4Dに統合されており、Xpressoエディタ内でほぼすべてのユーザーダイアログパラメータにアクセスできます。最大限の柔軟性を得るために、ユーザはPythonを使用してさまざまなFumeFXシミュレーションボクセルデータにアクセスできます。

レンダリング

標準、物理、およびArnoldレンダラの初期状態のサポート。拡張されたArnoldレンダラのサポートは、より優れた柔軟性と高度な機能を必要とするすべてのVFXアーティストにとって大きな価値があります。ArnoldのサポートはArnold Standard VolumeシェーダとFumeFX Standardシェーダで使用できます。他のレンダラを使用するには、FumeFXデータをエクスポートします。Redshiftでボリュームグリッドを使用するか、OctaneRenderでVDBローダーを使用します。

Tips

modoのカーブフォールオフでメッシュ変形

modo13.2のベータフォーラムで、Warren Lさんがカーブフォールオフを使用した面白いテクニックを公開してたので紹介します。
https://community.foundry.com/discuss/topic/149545/fun-with-curve-falloff

カーブフォールオフを使用するとリプリケーターで複製したカーブを使ってメッシュを変形できるようになります。パーティクルと組み合わせると、色々面白い表現に使えそうですね。

 

動画をまねてみた。

■ サンプルファイル

modo 13.2ではSoftLagとパーティクルキャッシュとの相性が悪いため、シミュレーション再生ボタンを使用した時しか意図した動作になりませんでした。上の画像はシミュレーション再生した状態をキャプチャーしてます。早めにパーティクルキャッシュ修正して欲しい。

CG News

Storm 0.3 リリース

スタンドアロンシミュレーションツール「Storm」アップデートがリリースされました。0.3ではVDBパーティクルメッシャー、Alembicメッシュのエクスポート、Alembicパーティクルスティッチャーが追加されてるようです。

現在ブラックフライデーセール中で20%OFFです。 Indieが$119、Studioが$319です。
https://effectivetds.com/resources/fx-tools/storm/

CG News

Houdini 18 Sneak Peek

Houdini 18のスニークピークビデオが公開されています。主要な機能にはSparse Pyro Solver Solarisとルックデブ、レイアウト用の新しいUSBベースのコンテキストがあります。

このビデオには次のような改善点も含まれています。

  • Heightfield Terracing SOP 2.0
  • Substance プラグイン
  • 新しいグループSOP
  • ポリゴン編集用のいくつかの新しいスライドオプション
  • ポイント溶接
  • Bevel SOP 3.0(衝突検出を含む)
  • ラジアルメニューのホットキー
  • Edges SOPのサークル
  • ベンドSOP 2.0
  • Vellum Velocity Blendingと解像度の独立性
  • FEM非フック材料モデル
  • アダプティブFLIPプレッシャープロジェクション
  • スパース パイロソルバー
  • 破壊用のカスタム切断面
  • チッピング動作の改善
  • 破断線の処理の改善
  • 誘導破壊
  • Solaris:物理ベースのUSDレイアウト
  • Solaris:USDステージへのシーンのインポート
  • Solaris:インタラクティブなUSD照明
  • Solaris:USDライトのリンクとインスタンス化
  • Solaris:Renderman、Arnold、およびProrender Hydraデリゲート
Tips

modoでメッシュにパーティクルが集まる表現

Foundryのフォーラムでメッシュにパーティクルが集まるサンプルを公開してるのを見かけたので紹介します。パーティクルが収束するエフェクトに使えそう。
https://community.foundry.com/discuss/post/1184559

基本的にはMODO JAPAN GROUPさんが以前公開していた「パーティクルをメッシュの表面へと吸着させる方法」のパーティクル コンスレイントの代わりに、交差サーフェース コンストレイント (Intersect) を使用したバージョンです。

パーティクルでIntersectを使用するとサーフェース表面でパーティクルが動き続けるので、パーティクルシミュレーションの「ステップ」を上げると安定します。

Tips

modoでアイテムが揺れる表現

modoで移動したアイテムがバネのように揺れる表現について書いてみたいと思います。

■サンプルファイル

 

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

基本的には「トランスフォーム配列ツールでアニメーション作成」で紹介したように「Soft Lag」を使用して揺れを表現してます。
しかしメッシュ全体にSoft Lagを適用するとアニメーションの再生が遅くなるという問題があるため、今回はメッシュ全体を変形するのではなく Locators to Array と Create Polygons を使用してアイテムの位置からポイントを生成して、軽いメッシュにSoft Lagを適用することでアニメーションの再生が遅くなる問題を回避しました。

アルファベットのアイテムは「頂点の位置」を使用して頂点にコンストレイントしてます。

 

パーティクルに適用してみました。

サンプルファイル

Soft Lagはパーティクルと相性が良くないようです。パーティクルはフレームが進むごとにポイントを発生させますが、Soft Lagはポイントがない場合ワールド原点を前のフレームとして扱うようです。このためエミッターの位置を移動すると、原点から移動したような極端なラグが発生してしまいます。Soft Lagのトランスフォーム位置を参照してくれれば嬉しいんですけどね。

あと、ラグが好ましくないガクガクした挙動になります。ReplicatorをMerge Meshする方法も試してみましたが、同じようなフレーム間のカクつきが発生するようです。

Soft Lagは便利な機能なので、もっと改善して使いやすくして欲しいですね。