Tips

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 キー長押しでスナップはよく使ってましたが、これもスティッキーキー動作だったのかな?

Tips

modoのアイテムサイズ

modoのアイテムサイズについて書いてみます。

ミニチュアのように小さなシーンを作る場合、ビューポートでカメラやライトの表示が大きくて邪魔に感じることがあります。modoではメッシュを持たないカメラ、ロケータ、ライトのようなアイテムの大きさは、「表示」タブの「サイズ」で変更することができます。

 

「サイズ」を 0 に設定すると、3ds Maxのビューポートのように常に同じサイズで表示することができます。

 

デフォルト設定は「初期設定」の「新規シーンのデフォルトサイズ」「現在のシーンのデフォルトサイズ」で変更することができます。

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のUVアライナーツール

modo 11シリーズではUV関連の機能強化がおこなわれていましたが、11.2 には文書化されていないUVアライメントツールが搭載されてるらしいです。コマンドは以下の通り。

tool.set uvAligner on

コマンドラインに入力してツールをアクティブにすることができます。

設定が多くて直感的じゃないため隠されているのだそうですが、機能は強力らしい。

Tips

modoでレンダリング完了後に音声ファイルを再生する方法

レンダリング完了後に、任意の音声ファイルを再生する方法について書いてみます。
LightWave、3dsMax、AfterEffectsにはレンダリングが完了したときに、ビープ音や音声ファイルを鳴らす設定がありました。バックグラウンドでレンダリングしながら、他のソフトで作業中してるときにレンダリング完了が音でわかるので便利だったりします。

modoにレンダリング終了後に音を鳴らす設定がないので、レンダリング実行後にオーディオファイルを再生するマクロを作ります。マクロの内容は以下の通りです。

#LXMacro#
render
audio.playFile filename:C:\Windows\media\notify.wav

「audio.playFile」コマンドはmodo 701から搭載された機能で、好きな音声ファイルを指定することができます。このマクロではWindowsのシステム音を指定してます。このマクロをテキストエディタにペーストして、適当な名前「RenderCompleteSound.LXM」みたいな感じで保存すればOKです。

 

マクロファイルはmodoのスクリプトフォルダに入れておくと、コマンドラインに「@RenderCompleteSound.LXM」と入力するだけでマクロを実行することができます。ショートカットに割り当てたり、UIにボタンを追加すると便利かもしれません。

modoのスクリプトフォルダは「システム / ユーザースクリプトフォルダを開く 」で開くことができます。

 

レンダリング完了後にメールを送信したい場合は以下のフリースクリプト「eMailNotify」を試してみると良いかもしれません。
http://community.thefoundry.co.uk/asset/scripts/view.aspx?id=1412

 

参考

https://community.foundry.com/discuss/topic/60548/play-sound-when-render-is-complete

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レイヤー」を使用すると簡単かもしれません。

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

Tips

modoのRainレイヤー

modoには「拡張 : Modo テクスチャ」として147種類のプロシージャルレイヤーが搭載されています。他の3Dソフトに比べてかなり強力です。今回はそんなプロシージャルレイヤーのRainについて書いてみます。

Rain レイヤーはその名の通り雨で水面に波紋が発生するような表現に適したレイヤーです。「時間」に0~100%を繰り返すカーブを設定することで、ループする波紋を簡単に作成することができます。ちょっとした雨の表現が欲しいときに便利かもしれません。

Rain レイヤーに限らず拡張 : Modo テクスチャには「時間」というパラメータを持ったレイヤーがいくつか存在します。「時間」を持ったレイヤーはアニメーションでループ可能なので、ゲーム向けの素材作成なんかにも使えるんじゃないでしょうか。

Tips

modoのレイオフセット係数

modo 11.2 以前のバージョンではデフォルト設定でローポリをレンダリングすると、レイトレースのセルフシャドーがバキバキして目立つという問題がありました。

modo 901 頃からは Render 設定の「レイオフセット係数」を調節することで、この問題を回避する事ができます。「レイオフセット係数」はプロパティーには表示されないため、チャンネルビューポートで編集する必要があります。ローポリモデルをレンダリングするときは知ってると役に立つかもしれません。

 

「レイオフセット係数」はレイトレースをオフセットさせるためのパラメータなので、値を大きくすると影が出なくなったり不正確な形になります。

 

このレイトレースの影は「レイトレースシャドーターミネーター問題 (Raytrace Shadow Terminator Problem)」というレイトレーシングアルゴリズムの一般的な問題らしいです。LightWave、Maya Software 、Octaneなど他のレンダラーでも同じような問題を発生させることができます。大抵の場合は回避用のパラメータがあって、デフォルトでは目立たない値が設定されています。

 

modo 12 はこの問題が発生しなくなったという話を見かけたので「レイオフセット係数」のデフォルト値が変わったのかと思いましたが、値は変わっていないようです。何かレンダリングの計算が変わったのかしら?

Tips

modoのパーティクルでアイテムに穴を開ける

パーティクルとテクスチャリプリケータでアイテムに穴を開ける表現について書いてみます。
大まかな設定は前回の「パーティクルでアイテムを濡らす」と同じですが、今回はパーティクルがコリジョンと衝突したら消滅して、新たにパーティクルを発生するように設定しています。

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

スケマティックも前回とほぼ同じです。 Particle Operator の「衝突イベント」を自身の「消滅」にリンクすることで、コリジョンに衝突したタイミングでパーティクルを消滅させている点が違います。

レンダリングの設定は Constant レイヤーのレイヤーエフェクトを「ディゾルブ」に設定し、テクスチャリプリケータにParticle Simulation_2 を設定してアイテムに穴が開いたように見せています。単純ですね。

 

パーティクルがアイテムと衝突するだけなら「パーティクルで文字を書く」と同じで、新たにパーティクルを発生させなくてもいいんじゃないか?と思うかもしれません。

最初はそう設定していたのですが、テクスチャリプリケータの「ランダムサイズ」「ランダム回転」を使用すると、アニメーションレンダリング時に、一部のパーティクルでフレームによってパーティクルのサイズや回転が変わってしまうという問題が発生しました。原因は謎ですがコリジョンの影響でフリップしているように見えたので、新しくパーティクルを発生させることで問題を回避出来ました。

 

他にも穴を開けるような表現をする場合は、リプリケータとレンダーブーリアンを使うこともできます。下の画像では色を設定していますが、マテリアルの設定でディゾルブを100に設定すると透明にくり抜くことができます。
レンダーブーリアンはメッシュの形状を使用して複雑なくり抜きができますが、メッシュが重なっている箇所で望ましくないレンダリング結果になることがあります。欲しい表現に適した方法を選択するといいと思います。

 

次回も引き続きパーティクル制御で、雨の波紋のような表現について書いてみたいと思います。

Tips

modoのパーティクルでアイテムを濡らす

今回もパーティクルとテクスチャリプリケータでアイテムを濡らすような表現について書いてみます。
大まかな設定は前回の「パーティクルで文字を書く」と同じですが、今回はパーティクルがコリジョンと衝突したら、パーティクルを発生するように設定しています。

 

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

modoではパーティクルから別のパーティクルを発生させたい場合は、Particle Simulationノードを複数作成します。Particle Simulation 間の連携は Collector / Emitter ノードを使用します。Particle Operator はリンクされた Particle Simulation のパーティクルを制御するためのノードです。

このスケマティックでは Particle Simulation_1 に Particle Operator をリンクし、「特長の追加」から「衝突イベント」と「位置」を追加しています。
「衝突イベント」はコリジョンと衝突した場合に、衝突したことを出力するチャンネルです。これを Collector / Emitter の「パーティクル放射」にリンクすることで、コリジョンに衝突したタイミングでパーティクルを発生させています。
「位置」はそのままパーティクルの位置です。 Collector / Emitter にも「位置」を追加してリンクすることで、 Particle Simulation_1 の個々のパーティクルの位置からパーティクルが発生するようになります。Particle Operator と Collector / Emitter の ◇ をリンクするのを忘れがちなので要注意です。

パーティクルの速度や重量のによりますが、パーティクルが線のように発生しない場合は Particle Simulation_1 の ステップ数を 8 など大きな値を設定すると「衝突イベント」の回数が多くなり、線のようにパーティクルを発生させることができます。

レンダリングは前回同様に Constant レイヤーをテクスチャリプリケータで設定しています。濡れたマテリアルを作成して「レイヤーマスク」、あと「バンプ」を追加してます。

次回も引き続きパーティクルとテクスチャリプリケータで、オブジェクトに穴を開ける表現について書いてみたいと思います。

Tips

modoのパーティクルで文字を書く

パーティクルとテクスチャリプリケータ機能で文字を書くような表現について書いてみます。パーティクルとコリジョンの設定方法がわからない場合は、modo Japan Groupのチュートリアルがお勧めです。

パーティクルの制御は見たままで単純です。エミッターを文字の形になるように一筆書きでアニメーションしています。文字間は「放射レート」にキーを設定してパーティクルが出ないように設定しています。
エミッターの設定は放射タイプを「均一」に変更して、一定間隔でパーティクルが発射されるようにしています。さらに「速度継承」をOFFにして、エミッターの移動がパーティクルに影響をあたえないように設定しています。

 

コリジョンの設定も単純で「跳ね返り」「マージン」「パーティクル衝突粘性」を 0 にします。これで平面にあたったパーティクルがその場で停止します。

 

文字部分のレンダリングはテクスチャリプリケータ機能を使用します。単色の線を表現する場合は Constant レイヤーを使うのが手軽です。Constant レイヤーは単色塗りつぶし専用のレイヤーです。ブレンドモードで画像の色味を少し変えたい場合なんかにも便利に使えます。

 

テクスチャリプリケータの機能が把握出来れば、作り方は簡単に想像できたんじゃないでしょうか。次回はもう少し手間の掛かったパーティクル制御でアイテムが濡れる表現について書いてみます。

 

参考

Tips

modoのパーティクルの基礎

パーティクルの基礎で、パーティクルで発生しやすい問題の対処方法について書いてみたいと思います。

パーティクルが震える

パーティクルが平面とコリジョン判定するようなシーンで発生しやすいのが、パーティクルが静止せずプルプル動き続ける現象です。

これはコリジョンアイテムのダイナミクス設定「パーティクル衝突粘性」のデフォルト値の 50 mm 原因です。「パーティクル衝突粘性」を 0 または 100 mm など大きな値にすることで解決することができます。


「パーティクル衝突粘性」はパーティクルがコリジョンアイテムの表面をどの程度の距離くっつくかという設定です。水がアイテム表面をつたうような表現のときに使用できます。

パーティクルが停止するかしないか微妙なときに、「パーティクル衝突粘性」の値が影響して震える現象が発生するような気がします。

 

パーティクルがコリジョンを突きぬける

パーティクルの速度が速い場合に、コリジョンを突きぬけてしまうことがあります。これは Particle Simulation の「ステップ」の値を大きくすることで解決することができます。
「ステップ」は「シミュレーションを演算」した場合のみ確認できます。シミュレーションの再生ボタンによるプレビューは「ステップ」1 固定なので注意が必要です。

 

パーティクルの軌道がカクつく

パーティクルエミッターの移動速度が速い場合に、パーティクルの軌道がカクカクしてしまうことがあります。これも Particle Simulation の「ステップ」の値を大きくすることで解決することができます。

modoに限らずCGのシミュレーションはデフォルトで1フレーム単位で計算するソフトが多いです。パーティクルの速度やエミッターの移動が速い場合は、1フレーム間隔だと計算精度が足りなくなりコリジョン抜けやカクつきが発生します。そんなときのために1フレーム間隔より細かく計算するための設定が「ステップ」です。計算量は指数関数的に増えますが、正確な計算結果を得ることができます。

modoではパーティクルとメッシュのコリジョンを設定するために「ダイナミックコライダー」を適用すると solver アイテムが追加されます。 solver アイテムにも「演算精度」という「ステップ」と同じような設定がありますが、「演算精度」を上げてもパーティクルの突きぬけには変化がないようです。リジッドボディーやソフトボディーと連携する場合には「演算精度」が影響してくるのかも知れません。