Maxscript объект в код?

Автор
Сообщение
На сайте c 18.08.2008
Сообщений: 123
Подскажите как можно перевести что ли геометрический объект в код максскрипта как бы чтоб при запуске из точек строился объект?

Но не в дата фаил или ещё кудато а именно код максскрипт чтоб был
На сайте c 22.11.2006
Сообщений: 2037
Откуда ни возьмись...
Справка по MaxScript может помочь (есть в меню MaxScript), там много чего интересного, наверняка есть что-то и про создание объектов, я бы сам поискал, да рендерится у меня.
На сайте c 17.10.2006
Сообщений: 11377
Казань
есть скрипт BFF0_4_3
он используется для сохранения в ранние версии, но его принцип именно в записи скрипта, а потом построении по нему геометрии в новой сцене при запуске
На сайте c 07.10.2010
Сообщений: 1709
Минск
Загляните в хелп и поймите, что это невозможно. Максимум что вы сможете - так это держать массив точек в памяти. Да любой объект - это на уровне формирования треугольника в памяти компьютера - массив координат.http://www.render.ru/books/show_book.php?book_id=984   - урок по созданию плагина для 3дс макс двумя путями - через максскрипт и через С. Вот выдержка
Code:
куб создается обработчиком buildMesh в результате применения метода SetMesh, получающего массив arrVrts с координатами вершин примитива и массив его граней arrFcs
т.е. уже здесь скармливаются координаты вершин и получается на их основе геометрия. Логично, что ничего другого получить нельзя.

В хелпе к максскрипту (для 2012й версии точно) есть в разделе How To... способы перевода геометрию в .dat файл и назад. Там 2 части - простая и с сохранением всяких там групп сглаживания, групп материалов и прочего.
На сайте c 18.08.2008
Сообщений: 123
Quote:
Загляните в хелп и поймите, что это невозможно. Максимум что вы сможете - так это держать массив точек в памяти. Да любой объект - это на уровне формирования треугольника в памяти компьютера - массив координат.http://www.render.ru/books/show_book.php?book_id=984   - урок по созданию плагина для 3дс макс двумя путями - через максскрипт и через С. Вот выдержка
Code:
куб создается обработчиком buildMesh в результате применения метода SetMesh, получающего массив arrVrts с координатами вершин примитива и массив его граней arrFcs
т.е. уже здесь скармливаются координаты вершин и получается на их основе геометрия. Логично, что ничего другого получить нельзя.

В хелпе к максскрипту (для 2012й версии точно) есть в разделе How To... способы перевода геометрию в .dat файл и назад. Там 2 части - простая и с сохранением всяких там групп сглаживания, групп материалов и прочего.

Наверно вы не совсем поняли что мне нужно)
Мне нужно как раз то что предложил nailgun спасибо ему только над чтоб массив точек хранился не в каких то промежуточных файлах а в самом максскрипт файле

Ну в принципе разберусь наверно )

Можно как я понимаю записать геометрию в какой то фаил а потом с этого файла просто скопировать в свой скрипт в теории пока что)

Спасибо всем!)

Если есть ещё варианты как считывать геометрию и получать её код буду рад узнать от Вас
На сайте c 25.04.2007
Сообщений: 172
А к чему это все - первопричина какая?
На сайте c 18.08.2008
Сообщений: 123
Quote:
А к чему это все - первопричина какая?

Нужно это мне для того чтоб как бы считать геометрию готового объекта и задать ему параметры тоесть как бы сделать возможность изменять размеры его или сразу создавать в группе объектов зависимых друг от дуга )

Как бы параметрические объекты создавать но на рендер ру не отправлять урок про стульчик тамышний читал это не совсем то что нужно)

Мне нужно прочитать геометрию готового объекта и выдать массив точек полигонов и тд в скрипт чтоб как бы по нажатию ctrl+e создавался тот же объект с каторого считывал)

Что мне это даст я смогу изменять объект через скрипт (работать с его точками рёбрами полигонами)

Я могу создовать объекты в самом скрипте но
куда проще создать базовую модель стандартными средствами
потом как я понял считать её точки фейсы и тд
ну и двигать группы точек в зависимости от параметров или условий

почитал в хелпе по максскрипту экспорт и считование геометрии в фаил впринцепе устраивает их вариант

единственное не совсем пока понял как он в файле определяет где что ))

Пример экспорта плайна по справки
Для меня всё понятно
Непонятно как скрипт понимает что где для чего
Коментарии я добавил
Code:
4,2 <------------- колличевство точек,колличевство фейсов [-58.9002,-23.3779,0],[30.5403,-23.3779,0],[-58.9002,39.0143,0],[30.5403,39.0143,0], <----------- координаты точек [3,1,4],1,1,true,false,true <------------ точки которые создают полигон и параметры видимости сегментов [2,4,1],1,1,true,false,true <------------ точки которые создают полигон и параметры видимости сегментов

Это скрипт из справки и он нормально считывает такие файлы
Code:
macroScript ImportMesh category: "HowTo" ( vert_array = #() face_array = #() sgroup_array = #() matid_array = #() edge_array = #() in_name = getOpenFileName() if in_name != undefined then ( in_file = openFile in_name if in_file != undefined then ( num_verts = readValue in_file num_faces = readValue in_file for v = 1 to num_verts do append vert_array (readValue in_file) for f = 1 to num_faces do ( append face_array (readValue in_file) append sgroup_array (readValue in_file) append matid_array (readValue in_file) edge1 = readValue in_file edge2 = readValue in_file edge3 = readValue in_file append edge_array #(edge1, edge2, edge3) ) close in_file new_mesh = mesh vertices:vert_array faces:face_array for f = 1 to num_faces do ( setFaceSmoothGroup new_mesh f sgroup_array[f] setFaceMatID new_mesh f matid_array[f] setEdgeVis new_mesh f 1 edge_array[f][1] setEdgeVis new_mesh f 2 edge_array[f][2] setEdgeVis new_mesh f 3 edge_array[f][3] ) update new_mesh )--end if )--end if )--end macroscript

Нужно всё это для избавления от рутиной работы
На сайте c 07.10.2010
Сообщений: 1709
Минск
upside
Боюсь вас огорчить, но BFF не волшебный и работает также как и то что я вам скинул. вот пример кода:
Code:
fn export_geometry_external o external_file_name = ( local out_file = createFile external_file_name o_mesh = snapshotAsMesh o format "% \t--Vertex Count\n" o_mesh.numverts to:out_file format "% \t--Face Count\n" o_mesh.numfaces to:out_file channel_support_array = #() for c = 0 to 99 do if meshop.getMapSupport o_mesh c then append channel_support_array c
ничего не напоминает?
На сайте c 18.08.2008
Сообщений: 123
Quote:
upside
Боюсь вас огорчить, но BFF не волшебный и работает также как и то что я вам скинул. вот пример кода:
Code:
fn export_geometry_external o external_file_name = ( local out_file = createFile external_file_name o_mesh = snapshotAsMesh o format "% \t--Vertex Count\n" o_mesh.numverts to:out_file format "% \t--Face Count\n" o_mesh.numfaces to:out_file channel_support_array = #() for c = 0 to 99 do if meshop.getMapSupport o_mesh c then append channel_support_array c
ничего не напоминает?

Да всё понятно) Впринцепе ))
Мне не важно как он понимает что в файле просто интересно было самое главное я понял как это происходит))

Но и нашёл пару скриптов которые создаю скрипт плагина геометрии на основе выбранной модели) и там сохранение идёт в сам скрипт не в отдельный фаил)

и появился ещё вопрос
Так вот когда я эксперементировал то как я понял в самом максе вся геометрия состоит из фейсов ну как бы из полигоны состоящие из трёх точек а чтоб мы видели их как полигоны из 4 точек и больше макс скрывает некоторые рёбра
Тоесть по сути плайн это не полигон из 4-х точе а 2 полигона или фейса состоящих из 3 точек а общее ребро по диогонали просто скрываеться но сущевствует!

Так вот как показать все скрытые рёбра на созданном объекте?
На сайте c 07.10.2010
Сообщений: 1709
Минск
Cusomize-Preferences-Viewports-Configure driver- и там галочку Show All Triangles - вроде так. В нитросе ессна не получится.

А можно эти скрипты глянуть? Аж интересно стало. Как зовутся они?
На сайте c 18.08.2008
Сообщений: 123
Вот примерно работают одинакого
На сайте c 25.04.2007
Сообщений: 172
Все равно не понятно зачем делать экспорт в свой формат. Ведь можно делать экспорт в тот же мах-формат. А после импорт по ctrl-e если так нравится и при этом работать с его геометрией как угодно.

И второе - скорее всего при экспорте более сложного объекта - могут вылезти некоторые глюки. Например тот же BFF на очень сложной геометрии подглючивает на сколько я помню.
Читают эту тему: