indeximage

第3回「mental mill」


FX Composer 第3回「mental mill」

PDF版の記事をダウンロードする(PDF, 568KB)

1.はじめに

今回は,FX Composerからちょっと離れて,FX Composer 2.0にバンドルされたmental millの入門的なことを書いていきます.

mental millのサイト(下記のサイトからダウンロードは出来ません.インストールしたい場合は,FX Composer 2.0をインストールしてください)
http://www.mentalimages.com/2_4_mentalmill/index.html

mental millは,レンダラのmental rayなどでおなじみの

社のグラフィカルなUIでシェーダエフェクトの構築が出来るツールです.FX Composer 2.0には,その無料版のArtist Editionが付属しています.

グラフィカルなUIというとMac OS Xなんかに付属するQuartz Composerなんかと使用感は近いと思います.

下の例(Fig 1)では,木目を生成してライティングモデルをPhongで最後にアウトラインをつけた物というのを作ってみました.

mental millでは作成したシェーダのフローをCgFX, HLSL FX, GLSLのコードにエクスポートが出来ます(CgFXやHLSL FXならそのままFX Composer 2.0にインポートすることが出来ると思います).


Fig 1 mental millのスクリーンショット

2.画面のレイアウト

ここでは,画面の説明をしていきます(Fig 2).なお,HelpメニューにUser GuideやTutorialといったドキュメントがあるので,そちらの方は一読しておくといいと思います.


Fig 2 画面の説明

①Tool Pallets…シェーダエフェクトを構築するための色んな部品(Node)があります.一応,種別ごとに分類されています.Viewメニューやショートカットキーで表示を消したり出来ます.
②Work Surface…ここにNodeやPhenomena(後述)を配置してシェーダエフェクトのフローを構築します.
③Parameter Editor…④のNode内で使うパラメータをいじることが出来る部分です.具体的には,色や各種係数,参照したいテクスチャのパスなどがあります.これもViewメニューやショートカットキーで表示を消したり出来ます.
④Node…シェーダエフェクト内の各種処理(シェーダプログラムの組み込み関数など)がカード状になっていいます.これらを組み合わせていくことで,エフェクトを構築していきます.

mental millでは,NodeやPhenomenaと言ったビルディングブロックを組み合わせてシェーダエフェクトのフローを構築します.Nodeは,シェーダプログラムで言えば各種の組み込み命令などにあたります.例えば,2Dテクスチャ参照がしたい場合には,"Texture lookup 2d"というNodeがあります.ライティングなどもNodeになっており,上の例では,"Illumination phong"というNodeでPhongシェーディングをします.

Phonomenaは,複数のNodeを1まとめに出来るビルディングブロックです.Phenomenaでくくってしまうと1つのビルディングブロックにまとまるので見た目上すっきりさせることができます.Nodeはビルディングブロックの上下の部分が黄色なのですが,Phenomenaは青になります.

・Nodeの説明


Fig 3 Node

上のNodeはPhongシェーディングを行うものです(Fig 3).

①結果をプレビューするところ.右クリックで,球,平面,トーラス,地形とジオメトリを変更することが出来ます.
②入力パラメータ.他のノードからパラメータを入力することが出来る.入力がない場合には,初期値が割り当てられており,変更はParameter Editorで可能.右クリックをすると,"Add state parameter"で,この他に入力値を増やすことが出来る.
③出力パラメータ.他のノードへパラメータを渡すことが出来る.

入出力に関しては,変数名のすぐ横のボックスからマウスをドラッグすると他のノードへ接続する線が出てきます.


Fig 4 Node同士が接続された様子

上の例(Fig 4)では木目をプロシージャルに生成するノード(Generator wood 1)をPhongシェーディングのNode (Illumination phong 1)に接続したものです.左のノードのresultは色なので,右のノードのdiffuse colorに入力しています.これによって,左のノードで生成した木目に対して右のノードでPhongシェーディングを行う処理が加わりました.なお,先に書きましたがプレビューを球以外の形状にすることもできるということで,結果の方はトーラスにしてみました.

パラメータの接続ですが,基本的には同じ型(ベクトルならベクトル,色なら色)にしか接続できないようになっています.それと1つの出力パラメータを複数の入力パラメータに接続することは可能です.

3.簡単なシェーダエフェクトの構築例

ここでは,わりと基本的なシェーダエフェクトを例にしてみます.

・テクスチャマッピングしてPhongシェーディング



Fig 5 テクスチャマッピングしてPhongシェーディングの例(上).Texture lookup 2d 1のパラメータ.

テクスチャの参照は,Texture lookup 2dになります.これのresultをIllumination phong 1のdiffuse colorにつなげるだけです.テクスチャファイル自体は,Fig 5の下の図にあるようにParameter Editorのtextureのところで設定することができます.

・法線マッピング


Fig 6 法線マッピングの例

法線マッピングでは,Illumination phong 1に法線マップから法線のパラメータを入力する必要があります.Illumination phong 1には元々,法線の入力が無いので,右クリック→Add state parameter→normalします.

法線マップの読み込みは,まずTexture lookup 2dします.このresultをそのままNornalにつなぐことができないので,Normals make normalというのを通すとresultをnormalにつなぐことができるようになります.

・ライトの設置


Fig 7 スポットライトを適用した例

Phongなどのシェーディングモデルで使うライトの設置は,操作がちょっと特殊になります.ライトは,Toolboxにlightsというのがあるので,そこからNodeをおきます.このときに,通常のNodeならresultの結果を接続するわけですが,ここでは接続しません.

ライトの位置や方向,減衰,距離などのパラメータの指定はRenderメニューのSettingを押すとダイアログが出てきます(Fig 7)のでここで設定するとIllumination phong 1に適用されます.複数のライトを使う場合には,Add light...からライトのNodeの一覧が出てくるので選択すると左のLight listに加わります.

あと,余談ですがmental millはZ upみたいですね.


Fig 8 ライトのセッティング

4.エクスポート

シェーダコードへのエクスポートはFileメニューのExport shader から行うことができます.CgFX, HLSL FX,GLSLの3つです.CgFXには,"Complete shader"と"_Component shaders with interface"の2つがありますが,これはツール向けのUIのアノテーションを付与するかどうかです.FX Composerなどへの受け渡しの場合は,UIのアノテーションは付与した方がいいと思います.

mental millでは,複数のシェーダエフェクトを同時にWork Surfaceに表示できますので,エクスポートの際にはエクスポートしたいシェーダエフェクトの終端のNodeを選択しておく必要があります.

5.おわりに

ざっとmental millの利用方法を説明しましたが,それほど複雑なソフトウェアではないのでこれで大体使えるんじゃないでしょうか?FX Composer 2.0と組み合わせていくことで,

β版ですが,基本的なシェーダエフェクトはこれで構築出来そうな感じですね(エクスポートされたコードは,ちょっと最適化しないといけなさそうですが).






日付:  2007/7/9
カテゴリ: FX Composer
本記事のURLは: http://www.shader.jp/xoops/html/modules/xfsection/article.php?articleid=25