Tips

CG 日記

modoでロープ的なの作ってみた

modoでロープ的なの作ってみた。触手も安心。
作り方は単純で SplineFalloff でデフォーマの影響をカーブに沿わせてます。

円柱の場合は Transform デフォーマのエフェクタ用のロケータに、X軸とZ軸をスケールして円柱を細らせる変形を加えます。SplineFalloff を使用して円柱を細らせる位置を、触手オブジェクト周辺の範囲に制限します。

Morphで細らせた形状に対して、SplineFalloffを同じように適用することもできます。細かに形状をコントロールしたい場合は Morph を使用するといいかもしれません。
本当はへこんだ周辺を少し盛り上がる表現がしたかったのですが、2重に変形すれば上手く行くかな。C4Dのようにフォールオフの減衰をカーブUIで編集できると面白いんですけどね。

CG 日記

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


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

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

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

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

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

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

CG 日記

modo の Sculpt Layer

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

CG 日記

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


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

ブロックの色はバリエーションテクスチャ使用。トーラスのサーフェイス色を拾って、ブロックが単色になるように設定したかったけど上手い方法が思いつかなかった。Raycastノードで拾った色をパーティクルに渡して、リプリケータ側で単色でブロックを塗るように組めるかと思ったけど、シェーダは最終段階で計算されるためかパーティクル計算に割り込めない気がする。

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

少し細かく解説してみます。
まずスケマティックの上の処理は単純です。Particle Generatorで空間にブロックを生成するためのパーティクルを生成しています。
Particle Generatorは直接Particle Simulationに接続できないので、Source Emitterの「パルス」を使用してParticle Generatorが生成するパーティクルから、パーティクルが1個だけ発生するように設定しています。このときパーティクルが移動すると困るので「初期速度」「速度の広がり」を0に設定します。こんな感じ↓

スケマティックの下はトーラスオブジェクトに近いか遠いかを判定してます。
まずParticle Operatorを追加して「位置」「サイズ」を追加します。つぎにトーラスのポリゴンメッシュと、パーティクルの距離をIntersectを使用して判定します。

Intersectはオブジェクトの表面にオブジェクトを沿わせることができる便利なノードですが、今回はパーティクルとポリゴンの距離を測定するのに使用します。
Intersectはマトリクスを使用して計算するノードなので、Particle Operatorの「位置」をMatrix Constructを使ってマトリクスに変換します。
トーラスは移動、回転、スケールをアニメーションさせるので Matrix Composeを使用して移動、回転、スケールを含んだマトリクスにします。Matrix Composeの「マトリクス入力」は接続順で計算するので、スケール、回転、移動の順番でチャンネルをリンクします。

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

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

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

CG 日記

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

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

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

CG 日記

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 でバリバリ処理できれば色々凄い表現ができる気がします。

CG 日記

modoでオートリトポ

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

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


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


CG 日記

modoのシェーダーノードでセルシェーディング

modo 801のシェーダーノードを使ってセルシェーディング出来るかテストしてみた。
エッジの色や太さをシャドーの部分で変えたり、それなりの表現ができそうです。

CG 日記

modoでFPSを表示する方法

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