Code archives/3D Graphics - Mesh/DirectX Exporter
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
Some code from Shambler, since this is his source code. Just thought it was needed here. | |||||
Function savemeshdx9(mesh,file$) NumberofSurfaces=CountSurfaces(mesh) If NumberofSurfaces=0 Return ;Templates output=WriteFile(file$) WriteLine output,"xof 0302txt 0064" WriteLine output,"" ;WriteLine output,"template Header {" ;WriteLine output,"<3D82AB43-62DA-11cf-AB39-0020AF71E433>" ;WriteLine output,"WORD major;" ;WriteLine output,"WORD minor;" ;WriteLine output,"DWORD flags;" ;WriteLine output,"}" ;WriteLine output,"" ;Texture Filename ;WriteLine output,"template TextureFilename {" ;WriteLine output,"<A42790E1-7810-11cf-8F52-0040333594A3>" ;WriteLine output,"String filename;" ;WriteLine output,"}" ;WriteLine output,"" ;Material template ;WriteLine output,"template Material {" ;WriteLine output,"<3D82AB4D-62DA-11cf-AB39-0020AF71E433>" ;WriteLine output,"ColorRGBA faceColor;" ;WriteLine output,"Float power;" ;WriteLine output,"ColorRGB specularColor;" ;WriteLine output,"ColorRGB emissiveColor;" ;WriteLine output,"[...]" ;WriteLine output,"}" ;WriteLine output,"" ;Mesh Faces Template ;WriteLine output,"template MeshFace {" ;WriteLine output,"<3D82AB5F-62DA-11cf-AB39-0020AF71E433>" ;WriteLine output,"DWORD nFaceVertexIndices;" ;WriteLine output,"array DWORD faceVertexIndices[nFaceVertexIndices];" ;WriteLine output,"}" ;WriteLine output,"" ;Texture coords ;WriteLine output,"template MeshTextureCoords {" ;WriteLine output,"<F6F23F40-7686-11cf-8F52-0040333594A3>" ;WriteLine output,"DWORD nTextureCoords;" ;WriteLine output,"array Coords2d TextureCoords[nTextureCoords];" ;WriteLine output,"}" ;WriteLine output,"" ;WriteLine output,"template MeshMaterialList {" ;WriteLine output,"<F6F23F42-7686-11cf-8F52-0040333594A3>" ;WriteLine output,"DWORD nMaterials;" ;WriteLine output,"DWORD nFaceIndexes;" ;WriteLine output,"array DWORD faceIndexes[nFaceIndexes];" ;WriteLine output,"[Material]" ;WriteLine output,"}" ;WriteLine output,"" ;WriteLine output,"template FrameTransformMatrix {" ;WriteLine output,"<F6F23F41-7686-11cf-8F52-0040333594A3>" ;WriteLine output,"Matrix4x4 frameMatrix;" ;WriteLine output,"}" ;WriteLine output,"" ;WriteLine output,"template Frame {" ;WriteLine output," <3D82AB46-62DA-11cf-AB39-0020AF71E433>" ;WriteLine output," [...]" ;WriteLine output,"}" ;WriteLine output,"" ;Header WriteLine output,"Header {" WriteLine output,"1;" WriteLine output,"0;" WriteLine output,"1;" WriteLine output,"}" WriteLine output,"" ;TX Matrix WriteLine output,"Frame CUBE_Root {" WriteLine output," FrameTransformMatrix {" WriteLine output," 1.000000, 0.000000, 0.000000, 0.000000," WriteLine output," 0.000000, 1.000000, 0.000000, 0.000000," WriteLine output," 0.000000, 0.000000, 1.000000, 0.000000," WriteLine output," 0.000000, 0.000000, 0.000000, 1.000000;" WriteLine output,"}" WriteLine output,"" For s=1 To NumberofSurfaces Surface=GetSurface(mesh,s) MeshName$="Mesh Surface_"+s+" {" WriteLine output,MeshName$ NumberofVertices=CountVertices(Surface) WriteLine output,NumberofVertices+";" For v=0 To NumberofVertices-1 WriteLine output,VertexX(Surface,v)+";"+VertexY(Surface,v)+";"+VertexZ(Surface,v)+";," Next WriteLine output,"" NumberofTriangles=CountTriangles(Surface) WriteLine output," "+NumberofTriangles+";" For t=0 To NumberofTriangles-1 index1=TriangleVertex(Surface,t,0) index2=TriangleVertex(Surface,t,1) index3=TriangleVertex(Surface,t,2) tl$=" 3;"+index1+","+index2+","+index3+";" If t=CountTriangles(Surface)-1 Then tl$=tl$+";" Else tl$=tl$+"," WriteLine output,tl$ Next WriteLine output,"" ;Mesh Unnamed_0 { ; 4; ; 1.000000;1.000000;-1.000000;, // 0 ; -1.000000;1.000000;-1.000000;, // 1 ; -1.000000;1.000000;1.000000;, // 2 ; 1.000000;1.000000;1.000000;; // 3 ; 2; ; 3;0,2,1;, ; 3;0,3,2;; WriteLine output,"MeshMaterialList {" WriteLine output,"1;" WriteLine output,"1;" ;WriteLine output,NumberofTriangles+";" ;For t=0 To NumberofTriangles-2 ;WriteLine output,"0," ;Next WriteLine output,"0;;" WriteLine output,"" WriteLine output,"Material {" WriteLine output,"1.000000;1.000000;1.000000;1.000000;;" WriteLine output,"0.000000;" WriteLine output,"1.000000;1.000000;1.000000;;" WriteLine output,"0.000000;0.000000;0.000000;;" WriteLine output,"TextureFilename {" WriteLine output,SurfaceTexture(s)+";" WriteLine output,"}" WriteLine output,"}" WriteLine output,"}" ; MeshMaterialList { ; 1; ; 2; ; 0, ; 0; ; Material { ; 1.000000;1.000000;1.000000;1.000000;; ; 0.000000; ; 1.000000;1.000000;1.000000;; ; 0.000000;0.000000;0.000000;; ; TextureFilename { ; "LobbyYPos.bmp"; ; } ; } ; } ;dont need mesh normals ; MeshNormals { ; 4; ; 0.000000;1.000000;0.000000;, ; 0.000000;1.000000;0.000000;, ; 0.000000;1.000000;0.000000;, ; 0.000000;1.000000;0.000000;; ; 2; ; 3;0,1,2;, ; 3;0,2,3;; ; } WriteLine output,"MeshNormals {" WriteLine output,NumberofVertices+";" For v=0 To NumberofVertices-1 vnx#=VertexNX(Surface,v) vny#=VertexNY(Surface,v) vnz#=VertexNZ(Surface,v) ;length#=Sqr(vnx*vnx + vny*vny + vnz*vnz) ;vnx=vnx/length ;vny=vny/length ;vnz=vnz/length ;VertexNormal(Surface,v,vnx#,vny#,vnz#) l$=vnx#+";"+vny#+";"+vnz#+";" If v=NumberofVertices-1 Then l$=l$+";" Else l$=l$+"," WriteLine output,l$ Next WriteLine output," "+NumberofTriangles+";" For t=0 To NumberofTriangles-1 in1=TriangleVertex(Surface,t,0) in2=TriangleVertex(Surface,t,1) in3=TriangleVertex(Surface,t,2) l$=" 3;"+in1+","+in2+","+in3+";" If t=NumberofTriangles-1 Then l$=l$+";" Else l$=l$+"," WriteLine output,l$ Next WriteLine output,"}" WriteLine output,"MeshTextureCoords {" WriteLine output,NumberofVertices+";" For v=0 To NumberofVertices-1 tc$=VertexU(Surface,v)+";"+VertexV(Surface,v)+";" If v=0 Then tc$=tc$+";" Else tc$=tc$+"," WriteLine output,tc$ Next WriteLine output,"}" WriteLine output,"}" ; MeshTextureCoords { ; 4; ; 1.000000;0.000000;; ; 0.000000;0.000000;, ; 0.000000;1.000000;, ; 1.000000;1.000000;, ; } ;} Next WriteLine output,"}" WriteLine output,"}" CloseFile output End Function |
Comments
| ||
You comment in your code that exporting the textures is not working. I only use mesh commands on mi mesh, including painting and the textures export ok. Verry usefull code for me. |
Code Archives Forum