1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

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

Тема в разделе "Maya", создана пользователем Агапов, 7 дек 2017.

Модераторы: Dark™, Skif
  1. Агапов

    Агапов Активный участник

    С нами с:
    07.12.2015
    Сообщения:
    31
    Симпатии:
    5
    Баллы:
    7
    Всем привет! Столкнулся с проблемой что довольно часто по работе приходится делать однотипную настройку арнольдовских пассов от шота к шоту, и разумеется мне захотельось это автоматизировать на одну кнопку. Но начав копать в эту сторону понял что все не так просто. На сайте солиданглов никакой инфы по этому поводу нет. Кто нибудь может помочь? Сгодится MEL и Python. Прикреплю картинку о чем примерно речь. AOVS.JPG
     
  2. Lemieux

    Lemieux Знаток

    С нами с:
    08.06.2011
    Сообщения:
    1.073
    Симпатии:
    124
    Баллы:
    56
    echo all не канает?
     
  3. Агапов

    Агапов Активный участник

    С нами с:
    07.12.2015
    Сообщения:
    31
    Симпатии:
    5
    Баллы:
    7
    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 и запуска этих строчек в скрипт эдиторе в новой сцене оно не работает.
     
  4. Lemieux

    Lemieux Знаток

    С нами с:
    08.06.2011
    Сообщения:
    1.073
    Симпатии:
    124
    Баллы:
    56
    Есть другой вариант. Открываешь node editor, создаёшь нужные пассы, смотришь какой граф создаётся. Потом пишешь скрипт.
     
    Агапов нравится это.
  5. Агапов

    Агапов Активный участник

    С нами с:
    07.12.2015
    Сообщения:
    31
    Симпатии:
    5
    Баллы:
    7
    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];
     
  6. Агапов

    Агапов Активный участник

    С нами с:
    07.12.2015
    Сообщения:
    31
    Симпатии:
    5
    Баллы:
    7
    Сделал на этой основе функцию, создающую любые пассы (при правильных аргументах ессно)

    //Описание:
    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");
     
  7. Lemieux

    Lemieux Знаток

    С нами с:
    08.06.2011
    Сообщения:
    1.073
    Симпатии:
    124
    Баллы:
    56
    Я по такому способу делал интерфейс для создания mila-пассов в МР.
     
Модераторы: Dark™, Skif

Поделиться этой страницей