Tips

Tips

modo の Sculpt Layer

modo 901で新しく搭載されたSculpt Layer使ってみた。球体にBackground to Multiresolution Meshを使って別のメッシュを転送してます。

Background to Multiresolution MeshはZBrushから出力したようなハイディテールの形状を、低解像度のマルチスカルプトレイヤーに転送する機能です。ローメッシュがあればディスプレイスメントマップやリトポが不用になるという画期的な機能です。

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

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を使用すると、ドットモデルのようなポリゴンメッシュを生成します。


 

modo 10.2で正式にオートリトポ機能が搭載されました。

Tips

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

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

 

「ルミナンスの色」を使用して単色のマテリアルを作りたいときや、トゥーンキャラのようにテクスチャの色をそのままレンダリングしたいときは「ディフューズ量」を0にします。「ディフューズ量」に値が設定されているとライトの影響を受けてシェーディングしてしまいます。

必要に応じて「スペキュラ量」や「フレネル」の値も調節する必要があります。またマテリアルが発光しているので「大域照明」の設定はOFFにしたほうがよいです。

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」はタイルの「出力範囲」にしか反応しないようです。

Tips

modoのFXアイテム

modoはディスプレイスメントマップに対応していますが、プロシージャルテクスチャによるディスプレイスメントをGL上で表示して確認することができません。
GLでLightWaveの「変位マッピング」のようにプロシージャルテクスチャのアニメーションを確認したい場合は「FXitem」と「Textured Falloffs」を使用します。

これまでプロシージャルテクスチャを使用した場合に、メッシュの変形をGLで確認することができませんでした。modo601からはシェーダーツリーに「FXアイテム」が追加され、デフォーマとフォールオフを併用する事でLWの「変位マッピング」のようなアニメーションを確認することができるようになりました。

以下のサンプルファイルではトランスフォームデフォーマにリニアフォールオフを設定、FXアイテムにノイズを追加してエフェクトを「フォールオフ値」にする事で波のような凹凸を設定しています。

■ サンプルファイル

FX アイテムはマニュアルによると、シェーダツリーを使用してシェーディング以外のシーン関連の機能を調整するための機能のようです。現在の所はデフォーマの「フォールオフ」と、パーティクルジェネレータ アイテムのパーティクルの「密度」「ディゾルブ」「サイズ」を調節できるみたいです。

 

Textured Falloffs 参考
http://www.luxology.com/tv/training/view.aspx?id=626