This is the second part. It creates meshes from the data labels.
;Read Data Write Mesh, on 8/10/06 Graphics3D 640,480,0,2 SetBuffer BackBuffer() camera=CreateCamera() ;init world PositionEntity camera,0,0,-5 light=CreateLight() RotateEntity light,45,45,0 Restore yourname_x ;yourname_mesh1_x ;mesh data label mesh=ReadDataWriteMesh() ;mesh out tex=LoadTexture("yourname.bmp") If CountChildren(mesh)=0 ;one mesh EntityTexture mesh,tex Else ;multiple mesh For i=1 To CountChildren(mesh) child=GetChild(mesh,i) : EntityTexture child,tex Next EndIf ;Main loop While Not KeyHit(1) Or KeyHit(57) ;esc or space key RenderWorld TurnEntity mesh,0.3,0.2,0.1 If KeyHit(17) wf=Not wf : WireFrame wf ;W key Text 0,0,"children="+CountChildren(mesh) Flip Wend ;Includes Include "temp.bb" ;Functions Function ReadDataWriteMesh() ;Creates a mesh, or mesh hierarchy, from a data label Local mesh,child,surf,nmeshes,nverts,ntris,onetriuvset,mi,vi Local px#,py#,pz#,rx#,ry#,rz#,vx#,vy#,vz#,vu#,vv#,v0,v1,v2 ;create mesh mesh=CreateMesh() : child=mesh nmeshes=1 For mi=1 To nmeshes Read nmeshes ;1st value is nMeshes If nmeshes>1 Then child=CreateMesh(mesh) surf=CreateSurface(child) Read nverts ;2nd value is nVerts Read ntris ;3rd value is nTris Read onetriuvset ;4th value is onetriuvset Read px# : Read py# : Read pz# ;5th..7th value is xyz position PositionEntity child,px#,py#,pz# Read rx# : Read ry# : Read rz# ;8th..10th value is pitch/yaw/roll RotateEntity child,rx#,ry#,rz# For vi=0 To nverts-1 ;vertices, nVerts*3 Read vx# : Read vy# : Read vz# AddVertex(surf,vx#,vy#,vz#) Next If onetriuvset<2 And (onetriuvset=0 Or mi=1) For vi=0 To nverts-1 ;uv coords, nVerts*2 Read vu# : Read vv# VertexTexCoords surf,vi,vu#,vv# Next For vi=0 To ntris-1 ;triangles, nTris*3 Read v0 : Read v1 : Read v2 AddTriangle(surf,v0,v1,v2) Next EndIf UpdateNormals child ;set normals Next Return mesh ;mesh handle End Function Function ReadDataMorphMesh(mesh) ;Vertex morphs a mesh from a data label Local surf,nmeshes,nverts,ntris,onetriuvset,vi,vx#,vy#,vz#,vu#,vv# ;vertex morph mesh surf=GetSurface(mesh,1) Read nmeshes ;1st value is nMeshes Read nverts ;2nd value is nVerts Read ntris ;3rd value is nTris Read onetriuvset ;4th value is onetriuvset Read vx# : Read vy# : Read vz# ;5th..7th value is xyz position Read vx# : Read vy# : Read vz# ;8th..10th value is pitch/yaw/roll For vi=0 To nverts-1 ;vertices, nVerts*3 Read vx# : Read vy# : Read vz# VertexCoords surf,vi,vx#,vy#,vz# Next If onetriuvset=0 For vi=0 To nverts-1 ;uv coords, nVerts*2 Read vu# : Read vv# VertexTexCoords surf,vi,vu#,vv# Next EndIf Return mesh ;mesh handle End Function