Code archives/3D Graphics - Mesh/Saving meshes x file format
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
Save single surface meshes to a x file format | |||||
; X File Saving Function (c)2001 David Bird ; dave@birdie72.freeserve.co.uk ; www.birdie72.freeserve.co.uk Function SaveMeshX(mesh,file$) ;single surface at the moment cnt=CountSurfaces(mesh) If cnt=0 Then Return ;TODO Multi surface support surf=GetSurface(mesh,1) out=WriteFile(file$) WriteLine out,"xof 0302txt 0064" WriteLine out,"" WriteLine out,"Header {" WriteLine out," 1;" WriteLine out," 0;" WriteLine out," 1;" WriteLine out,"}" WriteLine out,"" WriteLine out,"Frame frm_Scene_Root {" WriteLine out," FrameTransformMatrix {" WriteLine out," 1.000000,0.000000,0.000000,0.000000," WriteLine out," 0.000000,1.000000,0.000000,0.000000," WriteLine out," 0.000000,0.000000,1.000000,0.000000," WriteLine out," 0.000000,0.000000,0.000000,1.000000;" WriteLine out,"}" WriteLine out,"" name$=EntityName$(mesh) If name$="" Then name$="Unknown" WriteLine out,"Frame frm_"+name$+" {" WriteLine out," FrameTransformMatrix {" WriteLine out," 1.000000,0.000000,0.000000,0.000000," WriteLine out," 0.000000,1.000000,0.000000,0.000000," WriteLine out," 0.000000,0.000000,1.000000,0.000000," WriteLine out," 0.000000,0.000000,0.000000,1.000000;" WriteLine out,"}" WriteLine out,"" WriteLine out," Mesh frm_"+name$+" {" WriteLine out,CountVertices(surf)+";" For a=0 To CountVertices(surf)-1 WriteLine out,VertexX(surf,a)+";"+VertexY(surf,a)+";"+VertexZ(surf,a)+";," Next WriteLine out,"" WriteLine out," "+CountTriangles(surf)+";" For a=0 To CountTriangles(surf)-1 in1=TriangleVertex(surf,a,0) in2=TriangleVertex(surf,a,1) in3=TriangleVertex(surf,a,2) ln$=" 3;"+in1+","+in2+","+in3+";" If a=CountTriangles(surf)-1 Then ln$=ln$+";" Else ln$=ln$+"," WriteLine out,ln$ Next WriteLine out,"" WriteLine out,"MeshMaterialList {" WriteLine out,"1;" WriteLine out,"1;" WriteLine out,"0;;" WriteLine out,"" WriteLine out,"Material {" WriteLine out," 1.000000,1.000000,1.000000,1.000000;;";rgba WriteLine out," 1.000000;" WriteLine out," 0.500000,0.500000,0.500000;;" WriteLine out," 0.000000,0.000000,0.000000;;" WriteLine out,"}" WriteLine out,"}" WriteLine out,"" WriteLine out,"MeshNormals {" WriteLine out,CountVertices(surf)+";" For a=0 To CountVertices(surf)-1 WriteLine out,VertexNX(surf,a)+";"+VertexNY(surf,a)+";"+VertexNZ(surf,a)+";," Next WriteLine out," "+CountTriangles(surf)+";" For a=0 To CountTriangles(surf)-1 in1=TriangleVertex(surf,a,0) in2=TriangleVertex(surf,a,1) in3=TriangleVertex(surf,a,2) ln$=" 3;"+in1+","+in2+","+in3+";" If a=CountTriangles(surf)-1 Then ln$=ln$+";" Else ln$=ln$+"," WriteLine out,ln$ Next WriteLine out,"}" WriteLine out,"" WriteLine out,"MeshTextureCoords {" WriteLine out,CountVertices(surf)+";" For a=0 To CountVertices(surf)-1 ln$=VertexU(surf,a)+";"+VertexV(surf,a)+";" If a=CountVertices(surf)-1 Then ln$=ln$+";" Else ln$=ln$+"," WriteLine out,ln$ Next WriteLine out," }" WriteLine out," }" WriteLine out," }" WriteLine out,"}" CloseFile out End Function |
Comments
| ||
Excellent work! It works!! |
Code Archives Forum