Tips

Tips

modoのプロシージャルシャッター機能


901からプロシージャルシャッター機能が追加されました。
衝突の強いところから自動的にオブジェクトが粉砕されて、オブジェクトが段階的に粉々にできます。
あまり期待してなかったけど思ってたより使えそうで面白いです。処理はそれなりに重い。

プロシージャルシャッターはオブジェクトをバラバラにする機能です。これまでも「シャッター&グルー」という機能がありオブジェクトをバラバラにすることができましたが、破片ごとに別オブジェクトになったり、粉砕の設定を変えるたびにオブジェクトが生成されるためシーン管理が煩雑になっていました。
プロシージャルシャッターは手続き的にオブジェクトを粉砕できるので、設定の変更やオブジェクトの管理が楽です。

プロシージャルシャッターのパラメータについて簡単にメモしておきます。
「破片/立方メートル」の値を上げると細かく粉砕されます。「最小容積」で細かくなる破片のサイズ最小サイズを設定します。

「最大レベル」は破片が壊れる回数で、「破断までの寿命」が何フレームおきに粉砕判定するかの設定です。
「破断までの寿命」が5の場合は5フレ間隔で粉砕の判定が行われ、破片が「最大レベル」に設定された値だけ分割されます。
キーフレームを設定できるので、特定のフレームからより細かく粉砕するようなことができて便利です。

オブジェクトの壊れやすさは「密度」と「破断加重」で設定します。
「破談加重」は粉砕のしやすさの設定で、「破談加重」の値を下げると「密度」が小さくとも壊れやすくなります。

「最小容積」や「破片/立方メートル」の値は「パターン」に依存するみたいです。パターンを変えたら値を変更しないと同じように粉砕できないような気がします。

Tips

modo の Sculpt Layer

modo 901で新しく搭載されたSculpt Layer使ってみた。
軽く試しただけなので複雑な形状の再現性がイマイチだけど、トポロジー気にせずモデリングできる機能に成長して欲しいですね。
現状は重くてボーン設定して動かそうとは思えないけど、将来的にそんな使い方ができて欲しい。

Tips

modoでレゴや8bitなエフェクト作ってみた


作り方の流れはParticle Generatorを使って空間にブロックを等間隔に敷き詰める。
ブロックの「サイズ」をデフォルト状態で0に設定して見えないようにし、Intersectを使ってトーラスの近くと判定したブロックだけ「サイズ」を100%にしています。

ブロックの色はバリエーションテクスチャ使用しています。トーラスのサーフェイス色を拾って、ブロックが単色になるように設定したかったけど上手い方法が思いつかなかった。

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

少し細かく解説してみます。
スケマティックの上の処理は単純で、Particle Generatorで空間にブロックを敷き詰めるためにパーティクルを発生させています。

Particle Generatorは直接Particle Simulationに接続できないので、Source Emitterの「パルス」を使用してParticle Generatorが生成するパーティクルから、パーティクルが1個だけ発生するように設定しています。このときパーティクルが移動すると困るので「初期速度」「速度の広がり」を0に設定します。こんな感じ↓

スケマティックの下の部分はトーラスオブジェクトにパーティクルが近いか遠いかを判定してます。

まずParticle Operatorを追加して「位置」「サイズ」を追加し、つぎにトーラスのポリゴンメッシュと、パーティクルの距離をIntersectを使用して判定します。IntersectデフォルトではTypeがLineになっているので、Surfaceに変更します。

Intersectはオブジェクトの表面にオブジェクトを沿わせることができる便利なノードですが、今回はパーティクルとポリゴンの距離を測定するのに使用しました。

Intersectはマトリクスを使用するので、Particle Operatorの「位置」をMatrix Constructを使ってマトリクス型に変換します。

トーラスは移動、回転、スケールをアニメーションさせるので Matrix Composeを使用して移動、回転、スケールを含んだマトリクスにします。Matrix Composeの「マトリクス入力」は接続順で計算するので、スケール、回転、移動の順番でチャンネルをリンクします。

最後にIntersectの「距離出力」をRelationshipを使用して「サイズ」にリンクします。Relationshipのグラフではパーティクルとトーラスの距離が10㎝のとき「サイズ」を100%にするというように設定します。

最初ブロックの表示/非表示にディゾルブを試してみたところ、レンダリングでは反映されるけどビューポートでは表示されたままになって不便だったため、サイズを使用することにしました。

サイズが0でも内部的には全部のメッシュを計算してるようで、ビューポートの動作が重いです。こういうところは早く最適化して欲しいですね。

Tips

台風でコロッケ飛ばされてきた

カメラトラッキングしたかっただけです。。。
コロッケはmodoのソフトボディーを使用ました。

壁に当たってからゆっくり落ちる表現は、コロッケがぶつかるコリジョンオブジェクト付近にだけ作用するようにフォールオフを設定した下向きのLinear Forceを配置しています。
それだけでは上手く行かなかったので、横向きにコロッケを飛ばす用のLinear Forceの「強さ」にキーを設定して、徐々にフォースの強さを弱くしています。
横向き用のLinear Forceにもフォールオフを設定していて、これは等間隔に配置したコロッケを段階的に飛ばすために使用しています。

Tips

modoでホーミングミサイル

modoのパーティクルノードでホーミングミサイルを作ってみた。
ミサイルの動きはFlashゲームなんかで使われてるのと同じ基本的な計算を使用しています。球体は正弦波ノードで自動的にアニメーションしてます。
パーティクル全体のスケマティックはこんな感じです。

全部解説すると大変なので、ミサイルが追尾する部分の処理について解説してみます。
追尾部分だけ表示するとこんな感じです。

上の部分はメッシュからSurface Emitterを使用してミサイル用のパーティクルを発生させています。
Particle Simulation は Particle Look At Modifier を経由してリプリケータに接続します。
Particle Look At Modifier はミサイルが目標アイテム方向を向くように設定するために使用しています。

下の部分がミサイルが追尾する処理です。modoではパーティクルの動作はParticle Operatorを使用します。Particle Operatorはパーティクル1つ1つに対して様々な動作を設定可能にするノードです。

ベクトルを求める

Particle Operatorに「位置」「速度」「フォース」チャンネルを追加します。
目標アイテムの「位置」(画像ではロケータ)とParticle Operatorの「位置」を、ベクトル演算ノードを使用して「減算」します。「位置」を減算することでパーティクルと目標アイテム2点の方向を求めています。
減算の出力結果をベクトルノードの 長さの設定ノード を使用して「長さ」を設定します。
この処理は毎フレーム計算されます。

パーティクルを目標アイテムの方向に移動させる

長さの設定ノードの出力結果と、Particle Operator の「速度」をベクトル演算ノードを使用して「減算」します。
減算した出力結果を「フォース」に接続します。ベクトル演算ノードの出力をそのまま「フォース」に接続すると値が大きすぎるので、演算ノードを使用して値を小さくします。

以上でホーミングミサイルの完成です。
ちなみに短時間でこういう表現を作りたい場合は、LWのフロッキング機能を使用した方が圧倒的に早いですw あらかじめ機能がまとまって用意されてるのは手軽でいいですね。
modoのパーティクルは自由度が高くて素晴らしいのですが、MaxやLWで手軽に作れるような表現も、計算方法を調べて検証するところからスタートになるので時間がかかってしまいます。Particle Expression Modifier でバリバリ処理できれば色々凄い表現ができる気がします。

Tips

modoでオートリトポ

modo 801にはオートリトポその物はありませんが、実験的な機能 mesh.octree コマンドが搭載されています。ドットモデルっぽく変換する事もできるので試してみると面白いかも知れません。

relaxを使用すると、オートリトポのようなポリゴンを削減したようなメッシュを生成してくれます。


boxesを使用すると、ドットモデルのようなポリゴンメッシュを生成します。


Tips

modoでFPSを表示する方法

modoでビューポートでFPSを表示する場合はコマンドに「glmeter」を入力します。

Tips

modoの断片化ツール

modoのスライスツールで「tool.set Fragment on」コマンド実行すると、開発途中と思われるポリゴン粉砕ツールが起動するらしい。
「プレビューのみ」をOFFにして「tool.set Fragment apply」コマンドを実行すると処理が実行されるみたいです。

Tips

パーティクルキャッシュの保存方法

ParticleのキャッシュをHDDに保存する場合は、「RealflowParticle」ノードを使用して .BINファイルとして保存します。

「RealflowParticle」を「ParticleSimulation」のポイントキャッシュに接続してから、 「新規シーケンスボタン」で保存先を指定後に「シミュレーション計算ボタン」で計算実行します。1フレーム毎にキャッシュファイルが作成されます。

Tips

modoのウェイトマップテクスチャ

ウェイトマップとグラディエントマップを使用した質感設定について書いてみます。
ウェイトマップを使用することでテクスチャを使用せずに、テクスチャを使用したような質感を作ることができます。

作成手順は簡単です。メッシュに適当にウェイトマップを設定します。

シェーダーツリーで「ウェイトマップテクスチャ」を作成します。

「ウェイトマップテクスチャ」2色しか色を設定できないので細かな色指定ができません。そこで「グラディエントマップ」を追加し「入力パラメータ」を「テクスチャ値」に設定します。
こうすることで「ウェイトマップテクスチャ」の白から黒へのグラデーションを、PhotoShopのグラデーションマップ機能のように、グラディエントマップで設定した色に置き換える事ができます。

 

ウェイトマップテクスチャを「グループマスク」として使用すると、下の画像のようにマテリアルを分けることも出来て便利です。

Tips

グラディエントのテクスチャ値

グラディエント レイヤーの「テクスチャ値」について書いてみます。
グラディエント レイヤーはグラデーションを作れる強力なレイヤーですが、入力パラメータを「テクスチャ値」にすると、グラディエントの下にあるレイヤーの輝度にグラデーションを設定する事ができるようになって便利です。

下のような白黒パターンのテクスチャを設定しします。

グラディエントを作成した、入力パラメータを「テクスチャ値」に設定します。「グラディエント編集」で設定したグラデーションがテクスチャの輝度に割り当てられます。

Tips

modoのRegional HSV レイヤー

テクスチャにランダムに色を設定できる Regional HSV レイヤーについて書いてみます。

modoのシェーダーツリーには Process レイヤーというカテゴリーがあります。これはレイヤー間のブレンドとは別で、リストの下にあるレイヤーを加工・調整するレイヤー機能です。
このProcessレイヤーの「Regional HSV」とEnhance:modo textureの「タイル」を組み合わせると、ランダムな色のパターンを作ることができます。

タイルのテクスチャを貼ると下のようレンダリング結果になります。

タイルのテクスチャには「出力範囲」というオプションがあり、ONにするとランダムに色を設定する事ができます。デフォルトでは白と黒が設定されてます。

このタイルテクスチャの上に「Regional HSV」を追加します。色相 最小/最大の他に彩度や明度の変化など細かく設定できるので、カラフルなパターンを作ることができます。

 

ちなみに 「Regional HSV」はタイルの「出力範囲」にしか反応しないようです。