Render.ru

[MEL] Скрипт для авто-выставления Arnold AOV`s

Агапов

Активный участник
Рейтинг
8
#1
Всем привет! Столкнулся с проблемой что довольно часто по работе приходится делать однотипную настройку арнольдовских пассов от шота к шоту, и разумеется мне захотельось это автоматизировать на одну кнопку. Но начав копать в эту сторону понял что все не так просто. На сайте солиданглов никакой инфы по этому поводу нет. Кто нибудь может помочь? Сгодится MEL и Python. Прикреплю картинку о чем примерно речь.
AOVS.JPG
 

Агапов

Активный участник
Рейтинг
8
#3
echo all выдает следующее

// Result: scriptEditorPanel1Window|TearOffPane|scriptEditorPanel1|formLayout103|formLayout105|paneLayout4|cmdScrollFieldReporter2 //
checkBoxGrp -numberOfCheckBoxes 1 -label "" -label1 "alpha";
// Result: unifiedRenderGlobalsWindow|rgMainForm|tabForm|arnoldTabLayout|arnoldCommonTab|scrollLayout|commonTabColumn|rgImageFileFrame|imageFileOutputSW|frameLayout186|columnLayout398|frameLayout187|columnLayout400|columnLayout401|frameLayout189|columnLayout405|columnLayout406|columnLayout407|checkBoxGrp277 //
connectControl -index 2 unifiedRenderGlobalsWindow|rgMainForm|tabForm|arnoldTabLayout|arnoldCommonTab|scrollLayout|commonTabColumn|rgImageFileFrame|imageFileOutputSW|frameLayout186|columnLayout398|frameLayout187|columnLayout400|columnLayout401|frameLayout189|columnLayout405|columnLayout406|columnLayout407|checkBoxGrp277 defaultArnoldDriver.alphaHalfPrecision ;
checkBoxGrp -numberOfCheckBoxes 1 -label "" -label1 "depth";
// Result: unifiedRenderGlobalsWindow|rgMainForm|tabForm|arnoldTabLayout|arnoldCommonTab|scrollLayout|commonTabColumn|rgImageFileFrame|imageFileOutputSW|frameLayout186|columnLayout398|frameLayout187|columnLayout400|columnLayout401|frameLayout189|columnLayout405|columnLayout406|columnLayout407|checkBoxGrp278 //
connectControl -index 2 unifiedRenderGlobalsWindow|rgMainForm|tabForm|arnoldTabLayout|arnoldCommonTab|scrollLayout|commonTabColumn|rgImageFileFrame|imageFileOutputSW|frameLayout186|columnLayout398|frameLayout187|columnLayout400|columnLayout401|frameLayout189|columnLayout405|columnLayout406|columnLayout407|checkBoxGrp278 defaultArnoldDriver.depthHalfPrecision ;
checkBoxGrp -numberOfCheckBoxes 1 -label "" -label1 "beauty";
// Result: unifiedRenderGlobalsWindow|rgMainForm|tabForm|arnoldTabLayout|arnoldCommonTab|scrollLayout|commonTabColumn|rgImageFileFrame|imageFileOutputSW|frameLayout186|columnLayout398|frameLayout187|columnLayout400|columnLayout401|frameLayout189|columnLayout405|columnLayout406|columnLayout407|checkBoxGrp279 //
connectControl -index 2 unifiedRenderGlobalsWindow|rgMainForm|tabForm|arnoldTabLayout|arnoldCommonTab|scrollLayout|commonTabColumn|rgImageFileFrame|imageFileOutputSW|frameLayout186|columnLayout398|frameLayout187|columnLayout400|columnLayout401|frameLayout189|columnLayout405|columnLayout406|columnLayout407|checkBoxGrp279 defaultArnoldDriver.layerHalfPrecision[0] ;
checkBoxGrp -numberOfCheckBoxes 1 -label "" -label1 "N";
// Result: unifiedRenderGlobalsWindow|rgMainForm|tabForm|arnoldTabLayout|arnoldCommonTab|scrollLayout|commonTabColumn|rgImageFileFrame|imageFileOutputSW|frameLayout186|columnLayout398|frameLayout187|columnLayout400|columnLayout401|frameLayout189|columnLayout405|columnLayout406|columnLayout407|checkBoxGrp280 //
connectControl -index 2 unifiedRenderGlobalsWindow|rgMainForm|tabForm|arnoldTabLayout|arnoldCommonTab|scrollLayout|commonTabColumn|rgImageFileFrame|imageFileOutputSW|frameLayout186|columnLayout398|frameLayout187|columnLayout400|columnLayout401|frameLayout189|columnLayout405|columnLayout406|columnLayout407|checkBoxGrp280 defaultArnoldDriver.layerHalfPrecision[1] ;
checkBoxGrp -numberOfCheckBoxes 1 -label "" -label1 "P";
// Result: unifiedRenderGlobalsWindow|rgMainForm|tabForm|arnoldTabLayout|arnoldCommonTab|scrollLayout|commonTabColumn|rgImageFileFrame|imageFileOutputSW|frameLayout186|columnLayout398|frameLayout187|columnLayout400|columnLayout401|frameLayout189|columnLayout405|columnLayout406|columnLayout407|checkBoxGrp281 //
connectControl -index 2 unifiedRenderGlobalsWindow|rgMainForm|tabForm|arnoldTabLayout|arnoldCommonTab|scrollLayout|commonTabColumn|rgImageFileFrame|imageFileOutputSW|frameLayout186|columnLayout398|frameLayout187|columnLayout400|columnLayout401|frameLayout189|columnLayout405|columnLayout406|columnLayout407|checkBoxGrp281 defaultArnoldDriver.layerHalfPrecision[2] ;
checkBoxGrp -numberOfCheckBoxes 1 -label "" -label1 "Z";

Но после чистки всех //Result и запуска этих строчек в скрипт эдиторе в новой сцене оно не работает.
 

Lemieux

Знаток
Рейтинг
58
#4
Есть другой вариант. Открываешь node editor, создаёшь нужные пассы, смотришь какой граф создаётся. Потом пишешь скрипт.
 

Агапов

Активный участник
Рейтинг
8
#5
Есть другой вариант. Открываешь node editor, создаёшь нужные пассы, смотришь какой граф создаётся. Потом пишешь скрипт.
Lemieux, большое спасибо за совет про Node Editor, благодаря ему и копанию в .ma файле с выставленными пассами у меня все получилось!
Приведу пример на примере одного пасса:

//CREATE "Position" AOV
createNode aiAOVFilter -n "aiAOVFilter1";
setAttr ".ai_translator" -type "string" "gaussian";
createNode aiAOV -n "aiAOV_P";
setAttr ".aovn" -type "string" "P";
setAttr ".aovt" 5;
connectAttr defaultArnoldDriver.message aiAOV_P.outputs[0].driver;
connectAttr aiAOVFilter1.message aiAOV_P.outputs[0].filter;
connectAttr aiAOV_P.message defaultArnoldRenderOptions.aovList[1];
 

Агапов

Активный участник
Рейтинг
8
#6
Сделал на этой основе функцию, создающую любые пассы (при правильных аргументах ессно)

//Описание:
global proc add_aov(int $number, string $passname, int $data, string $filter)
{
createNode aiAOVFilter -n "aiAOVFilter1";
setAttr ".ai_translator" -type "string" $filter;
createNode aiAOV -n ("aiAOV_"+$passname);
setAttr ".aovn" -type "string" $passname;
setAttr ".aovt" $data;
connectAttr defaultArnoldDriver.message ("aiAOV_"+$passname+".outputs[0].driver");
connectAttr aiAOVFilter1.message ("aiAOV_"+$passname+".outputs[0].filter");
connectAttr ("aiAOV_"+$passname+".message") defaultArnoldRenderOptions.aovList[$number];
};

//Вызов:
add_aov(0, "direct_diffuse", 5, "gaussian");
 

Lemieux

Знаток
Рейтинг
58
#7
Lemieux, большое спасибо за совет про Node Editor, благодаря ему и копанию в .ma файле с выставленными пассами у меня все получилось!
Приведу пример на примере одного пасса:
Я по такому способу делал интерфейс для создания mila-пассов в МР.
 
Сверху