Taj problem se najbolje resava jednostavnim pisanjem custom max skripte... Evo jedne koju sam ja radio za svoje potrebe..
fn AddToList List obj=(
b = false;
for o in List do
if o == obj do b = true;
if b == false do -- (List[(List.count+1)] = obj;);
List[List.count+1]= obj
return 0;
)
fn exportMaterial m fs =(
format "<MaterialBMP name=\"%\">\n" m.name to:fs
format "\t<Ambient r=% g=% b=%>\n" (m.Ambient.r/255.0) (m.Ambient.g/255.0) (m.Ambient.b/255.0) to:fs
format "\t<Diffuse r=% g=% b=%>\n" (m.Diffuse.r/255.0) (m.Diffuse.g/255.0) (m.Diffuse.b/255.0) to:fs
format "\t<Specular r=% g=% b=%>\n" (m.Specular.r/255.0) (m.Specular.g/255.0) (m.Specular.b/255.0) to:fs
format "\t<ShinninessExp value=% >\n" m.Glossiness to:fs
if ( m.DiffuseMap != undefined ) do
format "\t<Texture filename=\"%\">\n" m.DiffuseMap.Bitmap.filename to:fs
format "</MaterialBMP>\n" to:fs
)
fn exportMultiMaterial m fs =(
format "<MultiMaterial name=\"%\" numberofsubmaps=%>\n" m.name m.numsubs to:fs
for mat in m.MaterialList do
format "\t<SubMaterial name=\"%\">\n" mat.name to:fs
format "</MultiMaterial>\n" to:fs
)
fn exportmesh obj fs = (
format "<TriMesh name=\"MODEL-%\">\n" obj.name to:fs
format "\t<PositionCoords size=%>\n" (obj.verts.count) to:fs
for v in obj.verts do
format "\t\t<V3 id=% x=% y=% z=%>\n" (v.index-1) (v.pos.x) (v.pos.z) (v.pos.y) to:fs
format "\t</PositionCoords>\n" to:fs
format "\t<VertexNormalCoords size=%>\n" (obj.verts.count) to:fs
for i = 1 to obj.verts.count do (
v = getNormal obj i
format "\t\t<V3 id=% x=% y=% z=%>\n" (i-1) v.x v.z v.y to:fs
)
format "\t</VertexNormalCoords>\n" to:fs
format "\t<FaceNormalCoords size=%>\n" (getNumFaces obj) to:fs
for i = 1 to (getNumFaces obj) do (
v = getFaceNormal obj i
format "\t\t<V3 id=% x=% y=% z=%>\n" (i-1) v.x v.z v.y to:fs
)
format "\t</FaceNormalCoords>\n" to:fs
format "\t<TextureCoords size=%>\n" (getNumTVerts obj) to:fs
for i = 1 to (getNumTVerts obj) do (
v = getTVert obj i
format "\t\t<V2 id=% x=% y=%>\n" (i-1) v.x v.y to:fs
)
format "\t</TextureCoords>\n" to:fs
format "\t<Faces size=%>\n" (getNumFaces obj) to:fs
for i = 1 to (getNumFaces obj) do (
f1 = getFace obj i
f2 = getTVFace obj i
mid = getFaceMatId obj i
format "\t\t<F id=% A=% B=% C=% TA=% TB=% TC=% MId=%>\n" (i-1) (f1.x-1) (f1.y-1) (f1.z-1) (f2.x-1) (f2.y-1) (f2.z-1) mid to:fs
)
format "\t</Faces>\n" to:fs
format "\t<Pivot>\n" to:fs
format "\t\t<Pos x=% y=% z=%>\n" obj.pivot.x obj.pivot.z obj.pivot.y to:fs
format "\t\t<Rot x=% y=% z=% angle=%>\n" (obj.rotation.axis).x (obj.rotation.axis).z (obj.rotation.axis).y (obj.rotation.angle*6.28/360.0) to:fs
format "\t</Pivot>\n" to:fs
format "</TriMesh>\n" to: fs
)
utility MyGL_Exporter "MyGE Scene Exporter"
(
label l0 "Select Object for Export"
button exportbtn "Export to file"
label l1 "Exporter designed for" align:#left
label l2 "Computer Graphics Project" align:#left
label l3 "Dragisa Jankovic 395/01" align:#left
on exportbtn pressed do (
filename = getSaveFileName caption:"Export Object to File.."\
types:"MyGL ASCII scene(*.asc)|*.asc|"
if filename == undefined do return 0;
if selection.count == 0 do (
MessageBox "You must select objects for export!"
return 0
)
fs = createFile filename
for o in selection do (
if (isKindOf o Editable_Mesh) do (
format "<TModel name=\"%\">\n" o.name to:fs
format "\t<UsingModel name=\"MODEL-%\">\n" o.name to:fs
format "\t<UsingMaterial name=\"%\">\n" o.Material.name to:fs
if o.Children.count > 0 do (
format "\t<Childrens>\n" to:fs
for child in o.Children do
if ( finditem (Selection as array) child != 0 ) do
format "\t\t<Child name=\"%\">\n" child.name to:fs
format "\t</Childrens>\n" to:fs
)
format "</TModel>\n" to:fs
exportmesh o fs
)
)
MaterialList = #();
for o in selection do (
if (isKindOf o Editable_Mesh) do (
if ( isKindOf o.Material MultiMaterial ) then(
AddToList MaterialList o.Material;
for m in o.material.materialList do
AddToList MaterialList m;
)
else
AddToList MaterialList o.Material;
)
)
for mat in MaterialList do (
if ( isKindOf mat MultiMaterial ) then
exportMultiMaterial mat fs
else
exportMaterial mat fs
)
close fs
)
)
Necu vise da radim ,bre !