Экспорт объектов из 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.


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

Логин:
Пароль:
Проверочное число: