maya2015,shaderFXこんにちは。前回の記事で次回はL-Systemの話しをするといいましたが、その次の記事で高山に先を取られ(おぼえとけ!)別のネタを準備するしかなかったソルです。今回紹介するのは前回に続きViewPort2.0ネタを、特にMayaLT、そしてMaya2015でも仲間入りしたShaderFXに関して紹介させて頂きたいと思います。シェーダを作成することを可能にします。タイムに視覚化することができます・・・とAutodeskのWebに紹介されています。本来ならもっと理論的な話しもしつつ機能の紹介をしたほうがいいと思いますが長くなりそうなので、今回は「やってみました」形式で紹介させていただきたいと思います。(理論分からないとかそんなことじゃないからね!)それではShaderFXの下準備からはじめたいと思います。プラグインがロードされているか確認しましょう。Managerを実行し「ShaderFXPlugin.mll」がロードされているかを確認してください。(Windows基準)ロードされているなら、次はShaderを作成します。HyperGraphやNodeEditorから「shaderfxShader」を作成し、オブジェクトにアサインします。Texturing」モードにする必要かあります。Lights」モードにします。Viewport上で6番と7番キーを押しておきます。FX」ボタンを押してShaderFXのグラフエディタを立ち上げます。最初立ち上げると「TraditionalGameSurfaceShader」というシェーダがあるのが確認できます。今回はこのシェーダを使わず1から作りたいと思いますので削除します。Mode」に切り替える必要があります。Mode」をOnにします。Panel」もOnにしておきます。(これはAttributeEditorの様なものです)そのあと画面上のノードを選択してDeleteキーで削除します。ーこうだった絵がこうなります・・・・では早速ノードを組んでいきましょう。Shader」を作成します。次は図のように繋いでいきます。VertexShaderが赤くなり、何かエラーのようです。VertexShaderから処理しましょう。必要なノードは以下の通りです。Output作りましたら、次はコネクションを組んでいきます。Outputノードは以下のように設定します。内容を説明するとVertexPositionをWorld空間→Camera空間→View空間に変換しPixelShaderに渡しています。(詳しいことは聞かないでください)簡単なVertexShaderの作成が終わりましたので、このノード達をグループ化し整理したいと思います。Groupでグループします。Propertiesから名前を変更することもできます。次はPixelShaderを使用して色を決めましょう。Value」ノードを作りつなぎます。Valueから作成します。あとValueにライトの数を入れます。次は基本的なLambertDiffuse計算から始めたいと思います。必要なノードは以下の通りです。Constructこれらを以下のように繋ぎます。ライトVectorとNormalを内積しSaturateノードで0-1の範囲に収め、その結果をDiffuseColorにかけ算して出力ry・・・(再び、詳しいことは聞かないことをお願いします)結果、こんな感じになりました。ライトのカラーと強度が反映されてないですね。Intensityこれらノードを準備して掛け算します。この結果を先作ったLambertDiffuseの計算結果に掛け算します。ノードをグループ化して整理したいと思います。これでライトの強度とカラーも反映されるようになりましたが、まだライト一灯しか計算しないですね。次はライトループを作りましょう。Shaderに渡します。Loop三つのライトが全部反映されました。Decayの計算など足りないところがありますが、この辺にしてBlinnSpecularに進みたい思います。HalfVectorを作ります。Colorこの結果をDiffuseと同じくLightColorに掛け算してDiffuseの結果に足します。これで銀製の仏陀像・・・ではなく簡単なBlinnモデルができました。Input」にチェックをいれると、AttributeEditorでもいじれるようになるので、存分にパカパカしてください。フハハハ金製の仏陀像です・・・ここで終わるにはちょっと短い気もしたので、ついでにToon調のShadingもやってみました。Diffuseの計算だけでRampシェーダを作れば充分かと思いましたが、せっかくなので今のシェーディングモデルにLuminace計算かけ、Rampにしてみました。Luminance計算です。Componentから作成できます。確認のためにColorを作り、掛けてみました。次はLuminance結果をベースでRampシェーディングしてみます。ColorStringノードのPropertyは以下のように設定します。これらを以下のように繋いでいきます。ramp_thresholdより明るい部分はramp_brightの色に、暗い部分はramp_middleの色になります。この計算をもう一個作り3トーンにし、グループ化して整理しました。結果こんな感じになります。最後に簡単なInk線を追加してみます。Vectorの内積をベースで作りました。この結果を先のRampの結果に掛け算します。これでちょっとはToonっぽくはなりましたかね。Inkの表現はもうちょっと改善したいですが、今回はここまでとさせてください。次回はもうちょっと面白いことが紹介できればと思います。(できるかな・・・・)もっと詳しい情報が知りたい方はShaderFXの紹介ページとMaya2015のユーザーガイドを参考にしてください。(※必須):Website:Comment:コメントは承認制ですので、即時に反映されません。月別アーカイブ2016年1月2月3月4月5月6月7月8月10月11月12月2015年1月2月3月4月5月6月7月8月9月10月11月12月2014年1月2月3月4月5月6月7月8月9月10月11月12月2013年1月2月3月4月5月6月7月8月9月10月11月12月2012年2月3月4月5月6月7月8月9月10月11月12月2011年1月2月3月4月5月6月7月8月9月10月11月12月2010年12月Footer。