Как экспортировать сборку m3d в 3D модель для анимации

Автор dencraft, 08.07.10, 18:40:59

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

dencraft

Для создания презентационной анимации (видео) требуется получить из наработанных чертежей и 3D сборок (m3d) модели для обработки их в сторонних 3D пакетах, скажем 3ds Max 2009.

Что пробовал (связка Компас-3D - 3dsMax):
*.wrl - при импорте в максе - теряется вся структура - результат: сборка превращается в обычную монолитную модель (меш), с сотнями граней, без возможности редактирования отдельных объектов, таких как болты/гайки и пр.
*.stl - импортируется успешно, но теряется цвет, структура, названия объектов. В результате появляется опять же меш, но который можно уже редактировать пообъектно (требуется отсоединять каждый объект, а значит прется писать скрипт)

все остальные - ige, stl, не открываются, либо подвешивают Макс.

Из показанных наиболее применим, второй метод (через stl), но хотелось бы узнать может кто пользовался или что делал уже в этом направлении, подскажите.


troides

Та же проблема подскажите что делать нужно модели мебели экспортировать в 3d макс и наложить текстуры  моделей много не хочется все перерисовывать пробовал в igs 3d max 10 пишеь что формат неизвестен wrml открывается ну все зависает сразу же

dencraft

Я остановился на импорте/экспорте через stl формат (3ds Max 2009). При импорте его в макс, появляется один объект, но он разбит на элементы объедененные в один. Приходится заходить в него и отсоединять каждый элемент по отдельности. Нудно и долго. Если объектов не много, то нормально. А вот если больше, то нужен скрипт для этого. Потом нужно будет подправлять ориентацию граней (Flip/Unify), можно и оптимизацией где подчистить... 
Перед сохранением stl файла в Компасе, нужно закрутить качество сетки в настройках Компаса на максимум (не вспомню сейчас как этот параметр называется, где-то в настройках), иначе детализация пострадает.

zeeppo

Как из компаса перевести в макс:
- создаём деталь в компасе;
- сохраняем в формате *.wrl;
- запускаем макс;
- идём в file-import;
- выбираем файл, оставляем все три галочки, нажимаем интер;
- у нас откроется деталь, разбитая на множество мелких кусочков;
- затем выбираем один из кусочков;
- в окошке, где можно выбрать примитивы и тп в свитке выбираем "Compound objects";
- выбираем ProBoolean;
- далее находм Start peaking, чуть ниже него отмечаем move, а ещё ниже ставим галочку напротив merge;
- нажимаем на Start peaking;
- теперь ищем глазами в верхней панели select by name (там изображён курсор мыши с горизонтальными полосками справа от курсора);
- в открывшемся списке выбираем ВСЕ детали (их там огромный список);
- нажимаем ок(или select) ждём некоторое время и радуемся аккуратненькой и точнй модели в максе:)
со сборочными моделями я пока пробовать этот способ не использовал, текстуры на деталь не натягивал, просто настраиа материалы

dencraft

У меня все замечательно получилось через stl формат. Скриптом не получилось. Он подряд все объекты расщепляет - даже на отдельные грани, ребра... Дело в том, что некоторые вершины сливаются вместе, некоторые объекты (элементы), становятся не совсем правильными в отрисовке. Приходится все руками отделять. Хотя получаешь больший контроль над объектом. Как оказалось это занимает не так много времени. Ведь большинство объектов разделять и не нужно. Теперь на выходе получилась модель оттекстуренная и даже с ригами для управления скажем открытием и закрытием всяких рычагов, дверей и пр. готовая к анимации.

zeeppo

eу меня чет с stl форматом ничо не получилось :(
скриптами я вообще пользоваться не умею))
"Ведь большинство объектов разделять и не нужно" программа ведь сама всё подряз разделяет о_О
что такое "с ригами"?

dencraft

Цитироватьeу меня чет с stl форматом ничо не получилось :(
У меня 3ds Max 2010, Хотя думаю не в этом дело. В Компас сохраняешь 3D модель stl формате, а в максе ее импортируешь - все просто.

Цитироватьскриптами я вообще пользоваться не умею))
Да вообще-то и не надо особо уметь. Вот скрипт для разъеденения объекта на элементы (в сети есть еще таких несколько, похожих, но работают так же):
macroScript Detach_Elements category:"USER" tooltip:"Split elements into seperate objects" ButtonText:"DetachElements"
(
--    on isEnabled return
--    (selection.count >=1)

    on execute do
    (--start execute loop

fn IOI_ModelingDetachElement tObject doSelect:false=
(
--Detaches all elements into new objects
--tObject=$; baseObject=tObject.baseObject
--IOI_ModelingDetachElement $

elementArray=#()
if classof(tObject)==Editable_Poly and IsValidNode(tObject) then
(
baseObject=tObject.baseObject

newName=tObject.name
newName+="_Element"
undo "DetachToElement" on
(

while (polyOp.getNumFaces tObject)>0 do
(
elementToDetach=polyOp.getElementsUsingFace tObject #(1)
polyOp.detachFaces tObject elementToDetach delete:true asNode:true name:newName

)
delete tObject
elementArray=execute ("$"+newName+"*")

if doSelect do
select elementArray
)

)
else
MessageBox "Object must be an Editable_Poly" title:"Detach Element Warning"

return elementArray
)
IOI_ModelingDetachElement $ doSelect:true

       
    )--end execute loop
)


Работает так: Сохраняешь вышеуказанный скрипт в текстовом файле с расширением *.ms. Выполняешь его в максе (Run Script...). Заходишь в настройки кнопок панелей по правой клавишей мыши и ищешь категорию USER. В ней будет только один пункт, вытаскиваешь его на любое место на панели инструментов. Затем выделяешь любой объект, который нужно разделить на объекты, и нажимаешь на только что полученную кнопку. После этого, макс задумается на время прямо пропорционально количеству полигонов в твоем объекте и выдаст кучу новых объектов с номером увеличивающимся на единицу.

Цитировать"Ведь большинство объектов разделять и не нужно" программа ведь сама всё подряз разделяет о_О
Дело в том, что например координаты вершины, принадлежащей разным элементам в объекте, могут быть одинаковые. Скажем шайба и болт. Внутренние стенки шайбы и наружные стенки болта могут сливаться. И тогда невозможно определить какая вершина какому объекту принадлежит. Тогда и может произойти отделение вершины, или присоединение граней одного объекта к ругому. В общем путаница. Т.е. все подобные скрипты работают крайне непредсказуемо. Особенно при большом количестве полигонов может и не хватить памяти у компьютера.

Цитироватьчто такое "с ригами"?
Риг (анг. Rig) см. еще тут. Элемент управления поведением и реакцией модели на изменение параметров управляющего элемента. Управляющий элемент, он же риг, не виден в конечном рендере и предназначен только для управления объектом. Это в основном используется в персонажной анимации. Но я использую это и для вот таких вот целей. Скажем у меня есть специальная дверь с хитрым замком, засовом и замками внутри. Закрывание осуществляется с помощью рычага. Последовательность закрытия двери довольно большая. Нужно открыть засов, закрыть дверь, закрыть засов, и повернуть блокиратор и еще чего-нибудь. Например, я поворачиваю рычаг двери и она начинает закрываться. Обычно для этого используется инверсная кинематика. Смысл в том что для каждой фазы этих операций я сделал свой риг. Для ортытия двери, засова, замка. Т.к. на самом деле там много элементов участвует в движении, чтобы каждый раз не передвигать их все, использую риг. Ригом может быть любой объект. Скажем, мне нужно повернуть рычаг, я создал цилиндр небольшой толщины, присоединил к нему инверсную кинематику управляемого объекта, и при повороте этого цилиндра, у меня открывается дверь. По аналогии можно и другие более сложные движения организовывать.
Это все просто удобно при анимации уже объекта, показывать как все работает изнутри.

zeeppo

Круто о_О сможешь научить ригами пользоваться?
А нельзя использовать имитацию физического воздействия объектов? Например RayFire Tooll
И ещё можешь показать свои работы в картинках, ато я недавно начал по чертежам что то делать с точностью и в 3дмакс заливать?