Tips

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で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

 

Tips

modoのディープシャドーマップ

modoは高速なレイトレースエンジンを搭載していますが、ディープシャドーマップも搭載しています。

ディープシャドーマップはボリューメトリックライトやファーのレンダリング速度が速くなるようですが、透明なマテリアルでステンドグラスのような効果にも使用できるようです。

 

シャドーマップで透明度に対応しているソフトは珍しいですね。

Tips

modoのサブディビジョンとキャットマルクラーク

modoは2種類のサブディビジョンサーフェース機能を搭載しています。初期バージョンから搭載してるmodoオリジナルのサブディビジョンと、501から搭載されたPixar Subdivision Surfaces(キャトマルクラーク)です。この2つのサブディビジョンはエッジウェイトの動作や、丸まり具合に違いがあるので比較してみました。

 

エッジウェイトの比較

modo標準のサブディビはエッジが3辺集まる部分で、LWの頂点ウェイトを使用したような結果になります。
キャトマルクラークは比較的綺麗にウェイトがかりますが、ハードエッジよりの設定だとシェーディングの境界がはっきり出過ぎに見えます。

キャトマルクラークはサブディビジョンレベルによってエッジウェイトの結果が変わります。例えばサブディビレベル4だと、エッジウェイト40%で一番ハードなエッジになり、サブディビレベル5だとエッジウェイト50%でハードエッジになります。サブディビジョンレベルによってエッジウェイトの結果が変わってしまうので、正直使いやすいとは言えません 。
キャトマルクラークを使用する場合は、ループスライスを使用してエッジを立たせる使い方がよさそうです。

 

丸まり方の比較

白いメッシュがmodoのサブディビジョン、緑のサーフェイスがキャトマルクラークです。modoのほうがポリゴン引けが大きいですが、ポリゴンの分割が細かければ誤差は少なくなる気がします。

 

余談

modoのサブディビジョンサーフェースはStuart Ferguson氏とTakiaki Yoshiakiによって開発された独自の細分割曲面アルゴリズムとのことです。
https://community.foundry.com/discuss/post/206282

キャトマルクラークについてはPixarが「参照実装品質」と述べほど模範的な実装になってるらしいです。
https://community.foundry.com/discuss/post/828244

Tips

modoのマイクロポリゴンディスプレースメント

modoのマイクロポリゴンディスプレースメントを試してみました。ボックスにドットのテクスチャ設定しただけですが、滑らかで綺麗にレンダリングできます。これは凄い!

 

画像を使用してディスプレイスメントを使用するとき、マテリアルの「ディスプレイスメント距離」にはマイナス値がないのに気がつきました。ディスプレイスメントで押し出したいときは画像の「上限値」を100%、へこませたいときには「上限値」を-100%に設定することで押し出し方向を設定できるようです。

 

ディスプレースメントは「ジオメトリキャッシュをベイク」を使用してメッシュに変換することもできます。