Скрипт Maya Python/MEL для замены/замены материала

Я безуспешно искал в Интернете около 6 часов по этому вопросу.

В Autodesk Maya (2016) я хочу поменять/заменить материалы со стандартного материала фонга с именем «dg_plastic» на материал другого типа с именем «пластик».

  • Стандартный фонфонский материал будет иметь предопределенное имя, как в примере выше.
  • У нас есть библиотека готовых материалов с предопределенными именами на выбор.

Есть ли способ написать скрипт на Python или MEL, чтобы решить эту проблему?

Спасибо!


person Joe    schedule 26.11.2015    source источник
comment
Вы пытаетесь применить новый материал к материалам, которые уже назначены в сцене?   -  person theodox    schedule 29.11.2015


Ответы (1)


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

proc connectAndSet(string $original, string $target){
    $conn = `connectionInfo -sfd $original`;
    if ($conn != ""){
        connectAttr -force $conn $target;
    } else {
        connectAttr -force $original $target;
        disconnectAttr $original $target;
    }
}

proc convertPhongToMia(string $original){
    $target = `mrCreateCustomNode -asShader "" mia_material_x`;

    connectAndSet($original + ".color", $target + ".diffuse");
    // ... any other mapping you need comes here...
    // a bit weak test should work for simple materials,
    // not used in special context
    $sg = `connectionInfo -dfs ($target + ".message")`;
    $sgr = `match "[^.]*" ((string)$sg[0])`;
    $sg0 = `connectionInfo -dfs ($original + ".outColor")`;
    $sgr0=`match "[^.]*" ((string)$sg0[0])`;
    sets -e -forceElement $sgr `sets -q $sgr0`;
    delete $original;
    rename $sgr $sgr0;
    rename $target $original;
}

for ($item in `ls -et phong`)
    convertPhongToMia($item);

У вас должна быть возможность переназначить это для ваших нужд.

person joojaa    schedule 26.11.2015