Mayaで一括シェーダーコンバート方法
Mayaでオブジェクトにアサインされているシェーダーを任意のシェーダーに一括でコンバート
メモ的なものですが(。ω。)
mayaでの簡単なアサインシェーダー変換メモ
アサインしているシェーダーをLambertとかBlinnとかmaya標準のやつから
mental rayやV-ray用のシェーダーに変換するやり方覚書。
下のスクリプトを参考にやりかたをメモ melです
http://www.dryzen.com/scripts_mia2vray.html
いろいろな所で紹介されているシェーダーライブラリーの
スクリプトと同じ所で紹介されているスクリプトです。
これはVrayMTに変換するやつですが、中身みればいろいろ応用できそうです。
やってることは、
1,選択しているシェーダーのタイプを判定
2、判定したシェーダーにより処理を実行
{ //get shader name string $sel[] = `ls -sl -st`; for ($i=0;$i<size($sel);$i=$i+2) { if ($sel[$i+1] == "lambert") { StepA($sel[$i]); } if ($sel[$i+1] == "blinn") { StepB($sel[$i]); } }
上記でまず選択しているシェーダーのタイプを判定
そしてそれにたいして処理を指示
その処理に関しては別のプロシージャーとして用意(必要に応じて変換したいシェーダーの数分!?)
//Step* = StepAまたはStepB、上記の所でシェーダーごとに分けたプロシージャー名 global proc Step*(string $obj) { //make new material $newMtl=`shadingNode -as -n ($obj + "newMiaMT") mia_material_x_passes`; // get SG Information string $SG[] = `listConnections -t shadingEngine $obj`; //not need Connection Delete disconnectAttr ($obj +".outColor") ($SG[0] +".surfaceShader"); // Connect SG connectAttr -f ($newMtl +".outValue") ($SG[0] +".miMaterialShader"); connectAttr -f ($newMtl +".outValue") ($SG[0] +".miShadowShader"); connectAttr -f ($newMtl +".outValue") ($SG[0] +".miPhotonShader"); }
これでひとまずアサインされているlambertかblinnシェーダーを
mia_material_x_passesに変換。
こんなの手でやった方が速いっと確かにその通り(・ω・;)
実際は「make new material」の後で、作ったシェーダーと変換したいシェーダーとで
テクスチャーなどのコネクション状況をあわせておく。
ShadingGroupを生かして、そこに入れ込むシェーダーだけを変える感じ。
maya標準シェーダーや、V-rayはShadingGroupの”surfaceShader”の所に突っ込んでおけば
大丈夫だけど、MRシェーダー系(とくにMia系)は”MaterialShader””ShadowShader””PhotonShader”に突っ込んでおかないと
機能しないことがあるので、それとmaya標準シェーダーからの変換の際は”surfaceShader”に入ったままなので、
先に”surfaceShader”のコネクションは切っておく(2つのシェーダーが入ってしまう状況にならないように)
もっとスマートなやり方もありそうだけど(・ω・;)
主に、使用するレンダラーが変わる際に一括して既存のアセットのシェーディング状況を
そのレンダラー用のシェーダーに変換する際使えるかも。
コメントを残す