Simulation

CG News

Stardust新バージョン

After Effects用のモジュラー3Dパーティクルシステムプラグイン、Stardustの次のバージョンが発表されました。物理演算が搭載になるようです。
https://www.superluminal.tv/category/blog

After Effectsのモジュラー3DパーティクルシステムであるStardustの次のバージョンを発表することに興奮しています。
すばらしい新しいツールセット物理シミュレーションを紹介します。パーティクルとモデルは衝突したり、力の影響を受けながら互いにやりとりしたりすることができ、アニメーションを簡単に作成できます。

新しいバージョンは来週に利用可能になる予定です。

 

主な新機能
  • 物理パーティクル:パーティクルと3Dモデルを衝突させ、相互作用させる。
  • Live Update : Auto Cacheをオンにすると、現在の物理シミュレーション状態が表示されます。
  • ノードワークフロー : 物理シミュレーションワークフローはAfter Effectsに完全に統合されているため、シミュレーション要素を既存のコンポジションレイヤーやライトにリンクすることができ、アニメーションを調整しながら実際の結果をコンポジションで直接見ることができます。

Tips

modoのパーティクルの質量

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

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

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

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

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

 

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

 

参考

 

CG News

Storm // Granular Solver

スタンドアロンのシミュレーションツール。Alembic / PRT / BINファイルがエクスポートが可能な粒状ソルバーです。砂からゼリーにシミュレート可能なようです。価格は$ 279。
modoの標準パーティクルは特殊効果的な表現が弱いので、スタンドアロンはいいかもしれません。
https://effectivetds.com/resources/fx-tools/storm/

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が別売だったときのチュートリアルに書かれてました。今でもドキュメントに載ってたりするのかな?

CG News

MODO用パーティクルオペレータアセンブリ「グリッド キット」

グリッド状にパーティクルを移動させるアセンブリが発売されたようです。価格は€8。https://gumroad.com/l/TheGrid

恐らくmodo標準機能で構築されたアセンブリだと思います。X-Particlesのデモ見て作ってみようとしてたので頑張れば作れると思いますが、買った方が手軽かも知れません。

 

概要

グリッドキットは、modoパーティクルを使用してグリッド/迷路のような構造を作成するためのツールであり、パーティクルの動きから作成されたカーブで簡単に作業できます。「どうやって作るのか」を考え技術的に闘うよりも、創造する時間を費やして楽しく過ごすことができます。
 

 

 


 

 

 

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

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

 

爆発を考える

爆発を作るにあたり爆発を構成する要素を考えます。今回の爆発では「衝撃波」「火花」「爆発の中心」「爆発から飛び出す煙」の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のパーティクルとボリューム機能、なかなか強力で表現力あると思いませんか!?レンダリングに時間かかりますが、魅力的なエフェクトが作れると思います。

CG News

Stardust 1.1.4 for After Effects

After Effects用のモジュラーパーティクルプラグイン Stardust がアップデートされたようです。
https://www.superluminal.tv/category/blog 

3Dモデルが他のモデルにシャドーを落とせるようになりました。3Dモデルの追加レンダリングモード。環境照明はシーンのライトとシャドウの影響を受けます。

新機能:

  • 3Dレンダーエンジン、シャドー、追加の3Dモデル、環境シェーディング、その他
  • 3Dモデルでの作業を簡素化し、3Dモデルをコンポジッションに数秒で追加できます。
  • ワークフローの改善、複数のビデオソース、新しいグラフモード
  • パス上のパーティクルコントロールが強化
  • モデルへの3Dシャドー
  • 追加の透明マテリアル
  • 新しいグラフモード
  • ソースノードの新しい「レイヤーセット」を使用して、複数のソースビデオでビデオウォールを簡単作成
  • 環境シャドー – ライトがイメージベースの照明環境に影響
  • プリセットは環境やモーションブラーなどのレンダー設定を保存して読み込むことができます。
  • モデルワークフローを単純化、モデルノードを追加して単一インスタンスを追加するだけです。
  • モデルのアニメーションを簡略化し、ワンクリックでモデルを作成して3Dヌルにします。
  • モーションノード – 方向を指定するオプションを追加しました。
  • プリセット – タグとレンダー設定を保存します。
  • その他のバグ修正

Tips

modoのパーティクルオペレータ

modoの Particle Operator の基本的な使い方について書いてみます。
はじめてmodoのパーティクルを使ったとき、使い方がわからず他のソフトで簡単に設定できた表現ができないことにストレスを感じたのを思い出しました。今回はパーティクルでよく使う表現を組む方法をまとめてみました。

 

Particle Operator とは?

Particle Operator はパーティクルが持つ「特性」を制御するためのノードです。使用頻度の高いものだとパーティクルが発生してから徐々にアイテムを大きくしたり、回転したり、透明にしたりと、パーティクルでよく見るような制御ができます。
他の3Dソフトではエミッターにパーティクル制御の設定がまとまってたりしますが、modoはノードベースのパーティクルシステムなので制御用のノードが色々わかれています。

Particle Operator は様々な「特性」を追加することができます。特性は Replicator 、Blob、Volume 、Sprite、グラディエントなどの機能で使用することができます。特性が使用できるかは Replicator など受け取る側によって決まります。

 

デフォルト

Particle Operator を使用せず、単純にパーティクルを放射するとこんな感じになります。変化がわかりやすいように Replicator でティーポットを複製しています。

 

サイズ

パーティクルが発生してから、徐々にサイズを大きくする方法です。

単純な設定方法は Particle Operator の「寿命」を「サイズ」にリンクするだけです。「寿命」はパーティクルが発生してから値をカウントアップするチャンネルなので、徐々にサイズが大きくなります。

 

チャンネル リレーションシップを使うと、グラフを使用してサイズを制御することができて便利です。

 

 回転

パーティクルが発生してから、回転し続ける(スピンさせる)方法です。

単純な設定方法は Particle Operator で「寿命」を「回転」にリンクすればいいのですが、「回転」はチャンネルタイプ行列なので、そのままリンクすることができません。そこで Matrix From Euler ノードを使ってベクトルチャンネルを行列チャンネルに変換します。
「寿命」をそのまま Matrix From Euler にリンクすると、回転の値として小さすぎるので、適当に 360 という値を乗算しています。

 

ランダムに回転を変える方法です。

ランダムさを設定するのに Randomiz ID ノードを使用します。パーティクルを個別に制御する場合は Particle Operator の「ID」を使用し、追加した 「ID」を Randomiz ID にリンクします。
Randomiz ID はパーティクルの「最小値」「最大値」で値の出力範囲を設定できるのが便利です。

 

位置

パーティクルが発生してから、振幅し続ける方法です。


Channel Waveform ノードを使用してサイン波をパーティクルの「位置 X」にリンクします。

 

ディゾルブ

パーティクルが発生してから、徐々に消す方法です。ディゾルブはビューポートで確認できないので、レンダリングする必要があります。

単純な設定方法は Particle Operator で「寿命」を「ディゾルブ」にリンクするだけです。

 

ランダムな速度で消す方法です。 Randomiz ID を使用してパーティクルにランダムさを設定しています。

 

modoのパーティクルは少し難しい感じがしますが、かなり細かな表現ができます。今回は Particle Operator の単純な使い方について書いてみましたが、「特性」通しを組み合わせるだけでも面白い表現を作り出せると思います。速度で回転やサイズ、色を変化させたり、組み合わせや制御の自由度が高いくて凄いです。
スケマティックは面倒という人向けにエクスプレッションで制御するノードもあるので、色々試してみると面白いと思います。

補足ですがパーティクルオペレータのチャンネルに値を設定したい場合、パーティクルオペレータのチャンネルに直接値を入力しても無視されるので注意が必要です。ユーザーチャンネルなど他のチャンネルを経由して値を設定する必要がります。

Tips

modoのパーティクルを平面的に移動する方法

放射したパーティクルを平面的に移動する方法について書いてみます。
modoのエミッターはXYZの3軸方向にパーティクルを放射します。これはこれで便利なのですが、平面的にパーティクルを放射したい場合があります。

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

Surface Emitter の設定は「初期速度」「速度の広がり」が 0 で、発生した位置から移動しないような設定です。わかりやすいように「放射レート」にキーを設定して、1フレーム目だけパーティクルを放射するように設定しました。

2D的にパーティクルを移動する処理は Particle Operator を使用します。Particle Operator には特性の「ID」「角速度」「前の位置」「位置」「回転」を追加します。2D的なパーティクル放射に必要なのは「ID」「角速度」のみです。「前の位置」「位置」「回転」は Replicator で複製したアイテムを進行方向に向けるために使用しています。

2D的なパーティクル放射の制御は、「ID」と 360を乗算した値を「Sine」「Cosine」ノードに入力し、その出力値を「角速度」にリンクします。「ID」はパーティクルのIDのことで、パーティクルを個別に制御する場合に使用するための特性です。パーティクルは通常0~1.0の範囲でランダムなID値が割り当てられているので、360と乗算してランダムな方向を設定しています。
※画像には使ってない「Tangent」ノードが含まれていますが、「Tangent」ノードを使うと3軸方向に移動することができます。

Replicator を進行方向に回転する処理は、「前の位置」「位置」を Matrix Construct ノードを使用してベクトルチャンネルを位置のマトリクスに変換します。次ぎに Matrix Construct の出力を Direction Constraint の「起点」と「終点」にリンクし、Direction Constraint の「回転出力」をParticle Operator の「回転」にリンクします。これでパーティクルの移動方向に合わせて Replicator が回転します。「前の位置」を使用している関係で、0フレーム目では Replicator の回転が計算されません。

パーティクルIDと乗算する値を変えると、パーティクルの移動方向を変えることができます。

Tips

modoのパーティクルで破壊表現

パーティクルとテクスチャリプリケータでアイテムを破壊するような表現について書いてみます。
大まかな設定は前回の「パーティクルで波紋を表現 」と同じですが、パーティクル位置からパーティクルを2種類発生させています。1つはテクスチャリプリケータ用、もう一つは破片用のパーティクルです。

 

パーティクルの設定は以下の通りです。Particle Simulation_1 はパーティクル発射用で、Particle Simulation_2 と Particle Simulation_3 はコリジョンと衝突したときにパーティクルを発生させる用のシミュレーションです。Particle Simulation_4 は破片用のシミュレーションです。

スケマティックは前回とほぼ同じですが、破片用のシミュレーション部分が長くなっています。
Particle Simulation_2 はテクスチャリプリケータ用のシミュレーションで、コリジョンが当たった位置に発生しとどまります。Particle Simulation_3 は破片用のシミュレーションで、「寿命で除去」をONにして1フレームで消えるように設定しています。このパーティクルを元に Source Emitter を使用して破片がはじけるシミュレーションを設定しています。
Particle Simulation_4 は Particle Operator を使用して破片が回転するように設定しています。回転は「寿命」を「角速度」にリンクすることで設定します。「寿命」に200掛けてるのは回転数を調節するためです。

破片はボックスを「シャッター & グルー」で生成したアイテムを使用しています。「シャッター & グルー」を使うと破片ごとに別アイテムになるので、「センターをバウンディングボックスへ」を実行してメッシュの中心にセンターを移動します。
アイテムはグループタブでグループ化します。このグループをリプリケータの「原型アイテム」に設定すると、グループ内のアイテムがランダムで使用されるようになります。リプリケータで複数のアイテムを複製するときに便利な機能です。

 

レンダリングの設定はディスプレースメント用の画像をテクスチャリプリケータとして使用しています。ディスプレースメント用の画像は「シャッター & グルー」で粉砕したメッシュを適当にバラバラにしてから「形状をブラシへ」機能で作ってみました。ディスプレースメントは凸ではなく、凹にしたいので「上限値」を-100%に設定しました。

ディスプレースメントはデフォルト設定だと荒くレンダリングされるので、Render 設定のマイクロディスプレースメントで「ディスプレースメント評価」を0.2Pixelに変えています。

いくつか似た感じの記事を書いてみましたが、パーティクルとテクスチャリプリケータという同じ機能の組み合わせでも色々なエフェクトや表現が作れるんじゃないかと思います。単純な機能だけど発想しだいで無限の可能性感があって面白いですね。

次回以降も引き続きパーティクル制御について書きながら、徐々にボリュームを使った爆発表現なんかにシフトしていこうかと思います。

Tips

modoのパーティクルで波紋を表現

パーティクルとテクスチャリプリケータで水面に広がる波紋の表現について書いてみます。
結論から言うとテクスチャリプリケータはパーティクルごとランダムに消えるような表現ができませんでした。

大まかな設定は前回の「パーティクルでアイテムに穴を開ける」と同じですが、パーティクル位置から発生させたパーティクルをParticle Operatorで制御してます。

パーティクルの設定は以下の通りです。Particle Simulation_1 は発射用で、Particle Simulation_2はコリジョンと衝突したときにパーティクルを発生させる用のシミュレーションです。

スケマティックも前回とほぼ同じです。 Particle Operator の「寿命」を自身の「サイズ」にリンクすることで、パーティクルが発生してから徐々にサイズが大きくなるように設定しています。イーズイン、イーズアウトをより詳細に制御したい場合はチャンネルリレーションシップを使うと便利です。

スケマティックでは「寿命」を「ディゾルブ」にリンクしていますが、テクスチャリプリケータは「ディゾルブ」に対応していないため透明にならないようです。(リプリケータ、ボリューム、ブロブにはディゾルブが正しく反映されます)

波紋が消えるシーケンスデータを設定すれば寿命に合わせてアニメーションするんじゃないかと思って試したましたが、レイヤーの不透明度と同様に同じフレームで全てのパーティクルが消えてしまいました。もし渇するとリプリケータで波紋のメッシュを発生させて、シェーダーノードを使ってメッシュとのレイ判定をバンプに設定すればうまく行くかも知れません。

波紋のテクスチャは Gradient Fill レイヤーを使用しました。Gradient Fill は放射状のグラデーションを手軽に作れるので便利です。レイヤーエフェクトは「バンプ」に設定して、テクスチャリプリケータに Particle Simulation_2 を設定することでパーティクルの位置に波紋を発生させています。
上記の通り波紋が個々に消えるタイミングは上手く制御できなかったので、単純にレイヤーの「不透明度」に100から0に変化するキーを設定しました。


 

今回はSFっぽいエフェクトにも使えるように、パーティクルが衝突したタイミングで波紋を発生させたかったかったのですが、残念ながらテクスチャリプリケータでは表現できないようでした。単純に雨の波紋を作りたい場合は「Rainレイヤー」を使用すると簡単かもしれません。

次回も引き続きパーティクル制御で、オブジェクトが砕けるような表現について書いてみたいと思います。