Привет. Задача, казалось бы, тривиальная, но что-то не могу решить. Нужно из множества отдельных объектов в сцене получить один объект типа меш.
Наверное, идеальным был бы вариант сколлапсить всё это дело, но в скриптах ничего похожего не нашёл.
Второй вариант - аттачить поочереди каждый объект к какому-то одному объекту. Возможно, есть ещё какие-то варианты.
Помогите, пожалуйста, переварить выше изложенные мысли в код 🙂
igorznagПример. В новой сцене создаем 3 чайника Teapot. Запускаем скрипт:
g=$geometry as array; convertToMesh g
for i=2 to g.count do meshop.attach g[1] g
Это то, что нужно! Спасибо огромное. Пытался делать по такому же принципу, но немного напутал с синтаксисом. Ваш вариант отлично работает!
Если неважно, что все текстуры на объектах, если они есть, перепутаются при аттач, тогда да, вариант то что надо.
Не знаю, что у вас за задача, но может просто собрать все объекты в группу?
ФиглиЕсли неважно, что все текстуры на объектах, если они есть, перепутаются при аттач, тогда да, вариант то что надо.
Не знаю, что у вас за задача, но может просто собрать все объекты в группу?
В данном случае, действительно, материалы не важны, т.к. потом в скрипте я назначаю этому новоиспечённому объекту совершенно новый мат. Но Ваш вариант тоже ценен, занесу его в свою библиотечку (наверняка ещё пригодится)
А можно скрипт, который будет присваивать ВСЕМ подматериалам объекта в разделе Shader basic parameters - Crytek Shader и в разделе Crytek Shader Basic Parameters ставить галочку Physicalize. Очень надо автоматизировать процесс.
У меня нет такого типа Shader-а и не знаю команды для него.
MacroRecorder записывает команды, когда вы вручную меняете тип shader-a на Cryteck и когда вы меняете значение для галочки Physicalize?
Чтобы записать команды, нужно:
В меню MaxScript включаем MacroRecorder.
В меню MaxScript выбираем MaxScript Listener, чтобы открыть окно.
Изменяем вручную тип shader-a на Cryteck и меняем значение для галочки Physicalize.
Если в окне MaxScript Listener появляются команды, тогда предоставляем их на форум.
for obj in selection where obj.material!=undefined do
(ms=getclassinstances standardMaterial target:obj.material
for m in ms do (m.shaderType=2;m.physicalizeMaterial=on))
1. Имеется сцена и на сцене много объектов (9000 объектов)
2. Нужно автоматически объединить эти объекты в один, сгруппировывая по 300 объектов (больше нельзя - вылетает макс с ошибкой
переполнения памяти). То есть получается - на сцене уже не 9000, а 30 объектов
(командой Match Material to Material IDs). Имена объектов можно давать нумерацией.
CRYSIS_CHINGISа строчку можно ? Увеличение объекта до 9000
for obj in selection where obj.material!=undefined do
(
obj.scale=[90,90,90]
ms=getclassinstances standardMaterial target:obj.material
for m in ms do (m.shaderType=2;m.physicalizeMaterial=on)
); redrawViews()
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
ARTIS
Наверное, идеальным был бы вариант сколлапсить всё это дело, но в скриптах ничего похожего не нашёл.
Второй вариант - аттачить поочереди каждый объект к какому-то одному объекту. Возможно, есть ещё какие-то варианты.
Помогите, пожалуйста, переварить выше изложенные мысли в код 🙂
Андрей Бельский
ARTIS
И, кстати. вот ещё:
igorznag
ARTIS
Фигли
Не знаю, что у вас за задача, но может просто собрать все объекты в группу?
Фигли
g=$geometry as array; convertToMesh g
for i=2 to g.count do meshop.attach g[1] g attachMat:#IDToMat condenseMat:true deleteSourceNode:true
ARTIS
CRYSIS_CHINGIS
Вложения
igorznag
MacroRecorder записывает команды, когда вы вручную меняете тип shader-a на Cryteck и когда вы меняете значение для галочки Physicalize?
Чтобы записать команды, нужно:
В меню MaxScript включаем MacroRecorder.
В меню MaxScript выбираем MaxScript Listener, чтобы открыть окно.
Изменяем вручную тип shader-a на Cryteck и меняем значение для галочки Physicalize.
Если в окне MaxScript Listener появляются команды, тогда предоставляем их на форум.
CRYSIS_CHINGIS
Вложения
igorznag
CRYSIS_CHINGIS
CRYSIS_CHINGIS
igorznag
CRYSIS_CHINGIS
igorznag
Какие команды MacroRecorder записывает?
CRYSIS_CHINGIS
2. Нужно автоматически объединить эти объекты в один, сгруппировывая по 300 объектов (больше нельзя - вылетает макс с ошибкой
переполнения памяти). То есть получается - на сцене уже не 9000, а 30 объектов
(командой Match Material to Material IDs). Имена объектов можно давать нумерацией.
CRYSIS_CHINGIS
igorznag