- Рейтинг
- 37
Доброго времени суток!
В процессе написания скрипта возникла следующая проблема: нужно к "пустому" editable mesh "приаттачить объект", сохранив при этом материал объекта и его ID_mat. Если материал простой, то все элементарно. Но если материал - мультиматериал, то начинаются проблемы. Суть заключается в том, что если количество ID_mat не совпадает с количеством подматериалов в материале, то портится либо то, либо другое. То есть Макс "подгоняет" одно под другое. При операции meshop.attach (или attach) "портится" материал. Его можно заранее сохранить, но потом при присвоении его новому объекту "портятся" уже ID_mat.
Текст скрипта приблизительно такой:
Вариант1
-- test - объект, который аттачим. Например, Box.
current_name = $test.name --сохраняем имя объекта
null_object = editable_mesh() -- создаем нулевой объект
convertToMesh $test -- конвертируем присоединяемый объект в меш
meshop.attach null_object $test -- аттачим. . И ПОРТИМ МАТЕРИАЛ. ЕСЛИ КОЛИЧЕСТВО ПОДМАТЕРИАЛОВ В МАТЕРИАЛЕ БОЛЬШЕ, ЧЕМ КОЛИЧЕСТВО ID_MAT, ТО МАКС ПРОСТО УБИВАЕТ "ЛИШНИЕ" ((( !!!
null_object.name = current_name -- называем его именем исходного объекта
Вариант2
-- test - объект, который аттачим. Например, Box.
current_name = $test.name --сохраняем имя объекта
current_material = $test.material --сохраняем материал объекта
theMat = copy current_material -- делаем копию материала ХОТИМ СОХРАНИТЬ МАТЕРИАЛ!!!
$test.material = theMat -- присваиваем обратно объекту, чтобы не испортить при аттаче исходный материал
null_object = editable_mesh() -- создаем нулевой объект
convertToMesh $test -- конвертируем присоединяемый объект в меш
meshop.attach null_object $test -- аттачим
null_object.name = current_name -- называем его именем исходного объекта
null_object.material = current_material -- хотим вернуть обратно его материал. ЕСЛИ В ОБЪЕКТЕ НЕТ ФЭЙСОВ С ID_mat=1, ТО ПОРТИМ ВСЕ ID_mat!!!! ((((
Если кто-то уже сталкивался с подобной проблемой - подскажите, что делать! Заранее спасибо!)))
В процессе написания скрипта возникла следующая проблема: нужно к "пустому" editable mesh "приаттачить объект", сохранив при этом материал объекта и его ID_mat. Если материал простой, то все элементарно. Но если материал - мультиматериал, то начинаются проблемы. Суть заключается в том, что если количество ID_mat не совпадает с количеством подматериалов в материале, то портится либо то, либо другое. То есть Макс "подгоняет" одно под другое. При операции meshop.attach (или attach) "портится" материал. Его можно заранее сохранить, но потом при присвоении его новому объекту "портятся" уже ID_mat.
Текст скрипта приблизительно такой:
Вариант1
-- test - объект, который аттачим. Например, Box.
current_name = $test.name --сохраняем имя объекта
null_object = editable_mesh() -- создаем нулевой объект
convertToMesh $test -- конвертируем присоединяемый объект в меш
meshop.attach null_object $test -- аттачим. . И ПОРТИМ МАТЕРИАЛ. ЕСЛИ КОЛИЧЕСТВО ПОДМАТЕРИАЛОВ В МАТЕРИАЛЕ БОЛЬШЕ, ЧЕМ КОЛИЧЕСТВО ID_MAT, ТО МАКС ПРОСТО УБИВАЕТ "ЛИШНИЕ" ((( !!!
null_object.name = current_name -- называем его именем исходного объекта
Вариант2
-- test - объект, который аттачим. Например, Box.
current_name = $test.name --сохраняем имя объекта
current_material = $test.material --сохраняем материал объекта
theMat = copy current_material -- делаем копию материала ХОТИМ СОХРАНИТЬ МАТЕРИАЛ!!!
$test.material = theMat -- присваиваем обратно объекту, чтобы не испортить при аттаче исходный материал
null_object = editable_mesh() -- создаем нулевой объект
convertToMesh $test -- конвертируем присоединяемый объект в меш
meshop.attach null_object $test -- аттачим
null_object.name = current_name -- называем его именем исходного объекта
null_object.material = current_material -- хотим вернуть обратно его материал. ЕСЛИ В ОБЪЕКТЕ НЕТ ФЭЙСОВ С ID_mat=1, ТО ПОРТИМ ВСЕ ID_mat!!!! ((((
Если кто-то уже сталкивался с подобной проблемой - подскажите, что делать! Заранее спасибо!)))