Если на разные меши, то написать скриптец, который перебирает выбранные меши и ляпает на них новосозданные материалы. (Казалось бы, есть ведь высокоуровневая команда hyperShade -assign, но она отработает лишь под курсором на одном объекте из выделения, а если перебирать циклом, то придется вручную создавать связку шейдер+шейдинггруп и коннектить атрибуты).
Вот у меня так получилось:
Perl:
string $sel[] = `ls -sl`; // получить имена объектов под выделением и запхать их в массив
string $obj; // тупа объявление переменной под выбранный объект
for ($obj in $sel) { // тупа цикл
// шейдера еще нет, надо его создать
string $sn = `shadingNode -as lambert -n "suxxx"`; // название сам придумай
// и шейдинг-группу тоже
string $sg = `sets -r 1 -nss 1 -em -n "suxx_ShadingGroup"`; // тут тоже название поменяй. Или оставь
// и подрубить эти две ноды друг к другу. Как это выглядит, смотри слева в ноде едиторе
connectAttr -f ($sn + ".outColor") ($sg + ".surfaceShader");
// и обязательно выбрать объект, потому что выделение уже сбросилось
select -r $obj;
// лишь после этого можно назначить кубикам материал
hyperShade -assign $sn;
// тупа принтф для информативности, больше никаких проверок и предупреждений
print (" Material '" + $sn + "' was created and assigned to object '" + $obj + "'\n");
}
Если стоит задача так обработать скомбайненный меш и сохранить его атрибуты в первозданном виде, то это уже сложно и нужен дрочь, иначе задача сводится к тому же детачу и коду выше.