Экспорт объектов из 3dmax с помощью MaxScript
В данном тексте я опишу основные принципы работы экспортера сцены на языке МаксСкрипт.
Для обхода всех объектов сцены используем конструкцию:
for tmpObj in objects do ( ... ),
где objects - это массив всех объектов сцены, а tmpObj - переменная, которая в каждой итерации цикла содержит i-й объект сцены, т. е. objects[i]. Таким образом мы проходим по всем объектам сцены.
У каждого объекта сцены (tmpObj) есть следующие атрибуты: имя, материал, количество вершин, текстурных координат и так далее.
tmpObj.name - имя объекта,
tmpObj.material - материал (объект, содержит характеристики материала),
tmpObj.numverts - количество вершин,
tmpObj.numfaces - количество граней,
tmpObj.numtverts - количество текстурных координат.
Ниже приведу фрагмент кода для обхода всех объектов и записи их параметров в файл.
fName = GetSaveFileName types:"Core Engine model (*.mdl)|*.mdl|"
f = fopen fName "wb"
-- begin
writestring f modelName
for tmpObj in objects do
(
-- name
writestring f tmpObj.name
-- if texture
if tmpObj.material != undefined then
(
-- texture file name
writestring f tmpObj.material.diffusemap.filename
)
-- verts count
writelong f tmpObj.numverts
-- faces count
writelong f tmpObj.numfaces
-- texture verts count
writelong f tmpObj.numtverts
-- verts
for i = 1 to tmpObj.numverts do
(
v = (GetVert tmpObj i)
writefloat f v.x
writefloat f v.z
writefloat f v.y
)
-- faces
for i = 1 to tmpObj.numfaces do
(
fc = (GetFace tmpObj i)
writelong f (fc.x - 1 as Integer)
writelong f (fc.y - 1 as Integer)
writelong f (fc.z - 1 as Integer)
)
-- tverts
for i = 1 to tmpObj.numtverts do
(
tv = (GetTVert tmpObj i)
writefloat f tv.x
writefloat f tv.y
)
-- texture faces
for i = 1 to tmpObj.numfaces do
(
tfc = (GetTVFace tmpObj i)
writelong f (tfc.x - 1 as Integer)
writelong f (tfc.y - 1 as Integer)
writelong f (tfc.z - 1 as Integer)
)
)
-- end
fclose f
"-- текст" это комментарии.
Более подробную информацию можно почерпнуть в хелпе по maxscript, идущему в комплекте с 3dmax.
оценка: 0
автор: simplex
|
комментариев нетСтатьи с похожими тегами ↓
Работа в Киеве, работа в Москве: менеджер, программист, юрист. Горячие вакансии. — Безработных.Нет
Салаты, дессерты, торты, рыбные, мясные, блюда из овощей, птицы, рецепты блюд

Добавить комментарий