arnold,develop,LookDev,maya,mtoa,shaderご無沙汰しております。開発室ゴトー[@jackybian]です。季節の変わり目、皆さんもどうぞ体調には気をつけください。前々回の「Arnoldのちょっといい話!?」で【MtoAでSItoAシェーダーを使っちゃう方法】をご紹介しましたが一部のshaderでnodeIDがコンフリクトすることがあります。実際にはあまり問題にならなかったりしますがあまり気分のよいものではないですよね。それとSItoAのシェーダーはmayaのテンプレート(.py)がないのでUIが分かりにくかったりもします。最近はHair周りのことをしているのですが、その過程でちょっとしたshaderが必要になったのでそのお話をすることにします。surface_uv(毛の発生元meshのuv)などを出力したりします。(Hairにmeshなどの情報を付与する方法は今回は割愛させていただきます。次回にでもまた)多くの場合、comp用の素材ですがlighterがこれらの情報を使ってshaderネットワークで調整したい場合もあるかと思います。surface_nとlightベクトルの内積を使ってlookを調整するとか。MtoaではmayaのvectorProductノードをサポートしていない様で今まではSItoAのシェーダーを使っていたのですが、先程お話したnodeIDやUIの問題から簡単なvector演算のshaderを書きました。その過程で見つけたちょっとニッチな内容ですが最後までお付き合い頂けたらと思います。node_loaderおかげさまで弊社も今年で16年目を迎えておりますが、最近ではshotワークだけでなくassetワークなども外注させて頂くことが増えてきました。その際、社内pluginにはDF_licenseという有効期限設定を埋め込んだ形で提供しています。有効期限が切れている場合にはそのpluginがloadされない仕組みです。shaderの場合、loadさせなくすることが難しかったようでピクセル計算の中で期限切れの場合は黒で塗りつぶすなどの対処を行ってきました。本来なら計算させる必要ないのにな~なんか釈然としないな~と。そんな思いを抱きながら、arnoldのshaderを書いているとnode_loaderという処理でshaderの登録がされていることがわかり、この処理をすっ飛ばしちゃえば???という訳で試してみました。node_loaderではメソッド、出力タイプ、名前、ノードタイプ、バージョンを設定することでロードされるようになります。参照してみてください。これらの処理をスルーすることでloadしなくすることが出来ます。(まぁ、ある意味裏技的な方法かもですが...)Mtoaはmtoa.mllがロードされる時にARNOLD_PLUGIN_PATHが通っている場所にあるshaderが順次loadされる仕組みになっています。VERSION期限切れメッセージを表示した上でloadできない状態になります。これで他のpluginと同じくload自体を回避できます。shader前述のSItoA利用によるnodeIDのコンフリクトやUIの分かりにくさを回避するために作ったものです。scalarといった演算ができます。これらの演算を1packにしたshaderを書きました。.py(AETemplate)の3つファイルから構成されています。簡単なものなのでcodeを載せておきます。self.endScrollLayout()このshaderを使ってsurface_nとvector2使ってHairをレンダリングした例です。tangentとvector演算したりすると面白い表現ができるかもしれません。いう訳で今回は簡単なshaderを書きつつ、shaderのloadをコントロールする方法についてでした。shaderの方はmatrixのinputを追加して座標変換もできるようにすると良いかもですね。loadコントロールは、ちょっとニッチだったかもしれませんが会社によっては社内ツールを期限付きで渡さないといけない状況とかあったりしませんかね?興味のある方はぜひ利用してみてください。公開している全ての手法・コードの有用性、安全性について、当方は一切の保証を与えるものではありません。これらのコードを使用したことによって引き起こる直接的、間接的な損害に対し、当方は一切責任を負うものではありません。自己責任でご使用ください。(※必須):Website:Comment:コメントは承認制ですので、即時に反映されません。上に表示された文字を入力してください。月別アーカイブ2018年5月2017年1月2月3月4月6月10月11月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。