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つのシェーダーが入ってしまう状況にならないように)
もっとスマートなやり方もありそうだけど(・ω・;)
主に、使用するレンダラーが変わる際に一括して既存のアセットのシェーディング状況を
そのレンダラー用のシェーダーに変換する際使えるかも。



コメントを残す