Render.ru

Дублирование материалов при .fbx-импорте.

bac9-flcl

Пользователь сайта
Рейтинг
2
#1
Добрый день.

Столкнулся с неприятной проблемой: при импорте .fbx-моделей в Maya (проверил в 8.5, 2010, 2012, без разницы) появляются дублированные материалы. Если подробнее, то устроено всё так:

1. Модель изначально была создана в Sketchup, где была разбита на компоненты, т.е. группы с инстансингом и разной там многоуровневой иерархией. Всё корректно затекстурировано, число материалов равно числу текстур.

2. Модель экспортируется в .fbx.

3. Модель импортируется в Maya. Всё идеально, компоненты Maya воспринимает как группы: без иерархии (на одном уровне) и инстансинга, но корректно. Проблема только одна: на каждый компонент, использующий такой же материал, как другой компонент, зачем-то был создан дублирующий материал. Ну, то есть, представьте, скажем, здание с сотней окон, у которого при импорте в Maya за каким-то чертом создалось сто материалов от текстуры этого окна.

Простой пример. Две текстуры, два кубика, две группы, два материала на каждом.

http://img.gameru.net/img/867ca.jpg
http://img.gameru.net/img/8c7f3.jpg

В Hypershade -> Materials их четыре.

***

Собственно, вопрос: как избавиться от этого странного дублирования? Оно мало того что неудобно при настройке модели, но и попросту делает некоторые модели слишком тяжелыми вообще для открытия в Maya. Либо, по-крайней мере, поведайте, как слить эти материалы обратно в один :D

Заранее спасибо.

P.S.: Вряд ли проблема в каких-то там экзотических особенностях формата SU, т.к., во-первых, не напрямую из него же импортируется модель, а из родного .fbx, во-вторых, при импорте в 3ds Max ни следа дублированных материалов не было.
 

bac9-flcl

Пользователь сайта
Рейтинг
2
#3
В гипершейде Edit > Delete Duplicate Shading Networks
Только, кажись, перед этим нужно выделить все Shading Groups
http://img.gameru.net/img/336aa.jpg
^ К сожалению, не срабатывает.

Возможно, я не вполне верно понял, как именно выделить Shading Groups. В логе на скрине есть перепробованные четыре варианта.
 

Покатигорошек

Активный участник
Рейтинг
15
#4
Собственно в гипершейде есть закладка Shading Groups. Но если их очень много, то можно запустить такой скриптик
Код:
string $listSG[] = `ls -typ shadingEngine`;
select -r -ne $listSG;
removeDuplicateShadingNetworks( 1 );
 

bac9-flcl

Пользователь сайта
Рейтинг
2
#5
Собственно в гипершейде есть закладка Shading Groups. Но если их очень много, то можно запустить такой скриптик
Код:
string $listSG[] = `ls -typ shadingEngine`; 
select -r -ne $listSG; 
removeDuplicateShadingNetworks( 1 );
О, спасибо, нашел. К сожалению, убрать дубликаты Maya всё еще не соглашается :D
Код ошибки такого плана:

Код:
// Error: No object matches name: Mesh2SG.miMaterialShader //
Это звучит странно, т.к. объекты, соответствующие этим shading groups, еще как имеются - при удалении одной из них пропадают соответствующие фейсы в модели.

Скриншоты с ручным выделением и вашим MEL-скриптом:

http://img.gameru.net/img/230ec.jpg
http://img.gameru.net/img/cf7f1.jpg

Либо я в чем-то исключительно туплю, либо эти дубликаты какие-то не совсем дубликаты :D
 
Сверху