Render.ru

Добавление Элемента(Attach), к нескольким объектам, в буфферном режиме.

GrndWrath

Пользователь сайта
Рейтинг
2
#1
Здравствуйте, у меня есть проект для которого нужно присвоить - один элемент, к 209-ти(объектам) и при этом выгрузить все, в тот же формат, в котором были эти объекты(используя плагин)

Я вижу это как очень не простую для меня задачу, так как опыта в работе с 3ds max скриптами и понимания задач - у меня нету.

Возможно это будет выглядеть не совсем уместно но вот как я вижу метод решения этого.

Меню A, при его нажатии можно будет выбрать нужные объекты в папке, после чего они будут поочередно, загружаться в сцену 3ds max, им будет присваиваться нужный элемент Из меню B( так же нужно чтобы был учтен Material id, то есть если Объект A Имеет MatId 1, то прис. элемент будет менять свой Mat ID На 2 - не совсем вижу как это реализовать) и они будут выгружаться через Plugin .dlu( Не уверен что это возможно), в назначенную папку, с тем же именем.

Меню B, в котором должен выбираться сам объект(который нужно добавить ко всем другим), тут у меня возникает вопрос
этот объект должен быть выгружен из сцены, в формат 3ds или Obj, Для того чтобы распространяться(присваиваться) к нескольким объектам(которые мне нужны), ИЛИ же можно использовать загруженный в сцене объект, но тогда возникает затруднение с самим Plugin-om.dlu Который я использую для выгрузки, в нужный мне формат - он берет все объекты в сцене и помещает в один файл(можно ли как то это заблокировать или лучше - указывать путь к 3ds, obj Объекту).


Это я вижу в идеале, и готов заплатить за такой скрипт.



А пока что я ломаю голову над самим упрощением - "кликанья по объектам, выбора editable mesh, attach",
то есть кнопка, при нажатии кнопки - A(на выделенном объекте), достаточно просто нажать на желаемый объект и он присваивается, к тому что был выделен изначально, с учетом MatID, то есть если у первого объекта был MatID1, То у второго не важно какой он был, должен стать MatID2(То есть должна быть функция счетчика, и MatID Должен был бы становится идущим следующим).

Код:
Group "Object to be Attachd "
	(
		
		button   Btnattach  "Pick object - ..."
	)

	on Btnattach pressed do
	( meshop.attach [u]$object01 $Object02 [/u]
И тут мое первое затруднение, я так понимаю $object01 Это уже указатель на то что будет использоваться, а как в скрипте указать чтобы использовалось то что было выделено(задействовано - и где об разузнать - гугл ) ? на то что будет выделяться(Желаемый объект)


заранее Спасибо, надеюсь достаточно описал все ?
 

igorznag

Мастер
Рейтинг
103
#2
А пока что я ломаю голову над самим упрощением.
Пример:
1. В новой сцене создаем 2 чайника (Teapot) и конвертируем их в Editable Mesh.
2. К каждому чайнику применяем свой материал Standard.
3. Выделяем один чайник. Запускаем скрипт.
4. В новом окне нажимаем кнопку и выбираем второй чайник.
Код:
rollout obj_attach_test "Object to be Attached"
(
fn filt obj2 = superclassof obj2 == GeometryClass
pickbutton Btnattach "Pick object - ..." filter:filt
on Btnattach picked obj2 do
( 
if(selection.count==1 and obj2!=undefined)then
(
obj1=selection[1]; if(obj1!=obj2)then
(
if(classof obj1==Editable_Mesh)then
(
meshop.attach obj1 obj2 attachMat:#IDToMat
)--if(classof obj1==Editable_Mesh)then
)--if(obj1!=obj2)then
)--if(selection.count==1 and obj2!=undefined)then
)--on Btnattach picked obj do
);createDialog obj_attach_test width:200
 

GrndWrath

Пользователь сайта
Рейтинг
2
#3
Класс спасибо, работает на ура, осталось разобраться как присвоить идущий по порядку MatID, и ускорит все то что я делаю =).

Спасибо.
 
Сверху