Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

3ds Max export-ovanje u DirectX aplikaciju

[es] :: 3D programiranje :: 3ds Max export-ovanje u DirectX aplikaciju

[ Pregleda: 1245 | Odgovora: 2 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Ajvan
Ivan Jovanovic
Novi Sad

Član broj: 10783
Poruke: 50
*.ns.ac.yu.



Profil

icon 3ds Max export-ovanje u DirectX aplikaciju14.12.2007. u 11:00

Kada export-ujem objekat iz 3ds max-a u ASCII fajl, taj fajl sadrzi, izmedju ostalog MESH_VERTEX_LIST za koordinatama tacaka, npr.:
MESH_VERTEX 0 X0 Y0 Z0
MESH_VERTEX 1 X1 Y1 Z1
MESH_VERTEX 2 X2 Y2 Z2
MESH_VERTEX 3 X3 Y3 Z3
MESH_VERTEX 4 X4 Y4 Z4
MESH_VERTEX 5 X5 Y5 Z5
MESH_VERTEX 6 X6 Y6 Z6
MESH_VERTEX 7 X7 Y7 Z7 (u ovom slucaju je 3ds max objekat kocka).

Sada zelim da ovaj objekat iscrtam u c# aplikaciji. Inicijalizujem DX i sve to radi kako treba. Problem je sto je ovakvo definisanje tacaka nezgrapno za iscrtavanje. Postoji li neki exporter za 3ds max koji exportuje objekat tako da se umesto koordinata tacaka dobiju koordinate trouglova, i onda primenom f-je Direct3D.PrimitiveType.TriangleStrip iscrta dati objekat?
Ja u sustini mogu da preuredim tacke unutar fajla tako da dobijem koordinate trouglova, medjutim sta kada je rec o slozenijem obliku?
14.12.2007. u 11:00 

glorius
Damir Nikolic
Developer, Seavus D.O.O.
YU

Član broj: 4366
Poruke: 255
212.200.238.*



Profil

icon Re: 3ds Max export-ovanje u DirectX aplikaciju14.12.2007. u 15:33
Evo ti pravo resenje za to..

Ovo je MAX exporter. Exportuje mnooooogooooo toga...
http://www.andytather.co.uk/Panda/directxmax_downloads.aspx

Loadiras ga sa standardnom DirectX funkcijom D3DXLoadMeshFromFileX...

Pogledaj malo primere po netu.
EOF
14.12.2007. u 15:33 

genuine
Dragisa Jankovic
Beograd

Član broj: 101510
Poruke: 33
*.ptt.yu.



Profil

icon Re: 3ds Max export-ovanje u DirectX aplikaciju18.12.2007. u 01:17
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 !
18.12.2007. u 01:17 

[es] :: 3D programiranje :: 3ds Max export-ovanje u DirectX aplikaciju

[ Pregleda: 1245 | Odgovora: 2 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.