Maya GenericBRDF binormal
先日、コメントにてbinormalについてのご質問を受けました。
コメントに返信するのが面倒なので、すみませんが、この記事を返信に変えさせて頂きます。
そもそも3D人さんに助言を頂き、勝手な解釈でやってみただけなので、
それが本当の手順かどうかは知りません。
binormalを検索して調べてみると、いくつか数式が見つかりました。
シェーダで使われる関数なのだろう。と勝手に予測し、
それならば、色々と機能のあるGenericBRDFであればその機能も付いているのではないか?
との予測で進めただけです。結果繋がって見えたので個人的に良しとしました。
で、Mayaでの再現方法ですが、MayaでCgシェーダを使用するにはプラグインをロードする必要があります。
メニューバー、
ウィンドウ>設定/プリファレンス>プラグインマネージャ
図だとちょっとわかりづらいですが、「cgfxShader.mll」にチェックを入れます。
で、ハイパーシェードを開くと、「CgFX シェーダ」が使えるようになっております。
それをモデルにアサインすると、
モデルがピンク色に変わります。
シェーダのアトリビュートを開き、「CgFX File」と書かれたところにあるフォルダのアイコンをクリックし、
GenericBRDFを読み込みます。二種類存在しますが、「GenericBRDF_1-1.cgfx」
を使用してみました。
ファイルを読み込むとモデルが真っ白になります。
いくつかノードがぶら下がっておりますが、多くはファイルを正しく読み込めていません。
というかそもそもファイルが存在しておりません。
以前記事にした時に必要なファイルをアップしたと思いますが、特に必要ありません。
で、ディフューズマップ、ノーマルマップを読み込みそれぞれサンプラーに接続します。
「BRDFSampler2」にグレースケールの画像を入れると、ライティングのような効果が現れます。
それらのグレースケール画像は解凍した「GenericBRDF」のフォルダにあります。
パラメータを適当に設定します。
スペキュラマップや、スペキュラパワーマップがないので、適度な設定ができておりません。
で、binormalですが、アトリビュートの一番下にあります。
「TexCoord」を使用するべきUVセットに変更。この場合「uv:map1」。
その他も同じように、「tangent:map1」「binormal:map1」と変更してやると、
タンジェントのノーマルが綺麗に繋がります。
くどいようですが、これが本当のやり方なのかは知りません。
恐らく数式をHLSLやGLSLに組み込めば同じようなことはできるのだと思います。
13.04.18 @ 2:05 PM
お礼が大変遅くなり申し訳ありません。
わざわざ記事にしていただき
とても丁寧な解説ありがとうございました。
仕事が一段楽したら、自分でも試してみようと思います。
13.04.18 @ 11:04 PM
いえいえ、とんでもありません。
自分でも書いておいたほうが良いのかなぁ、
と感じていたことです。
しつこいようですが、確かな情報ではないのであしからず。