Loading and Saving my own Meshes
Blitz3D Forums/Blitz3D Beginners Area/Loading and Saving my own Meshes
| ||
Can someone please have alook atthis code and tell me what the problem is :- ;load and save meshes Graphics3D 640,480,16,1 Global car,car2,pos camera=CreateCamera() light=CreateLight() car=CreateCube() save_mesh(car) FreeEntity car newcar=load_mesh() SetBuffer BackBuffer() PositionEntity camera,0,10,0:PointEntity camera,newcar While Not KeyDown(1) TurnEntity newcar,1,1,1 UpdateWorld() RenderWorld() Flip Wend End Function save_mesh(mesh) file=WriteFile("test.my3d") WriteInt(file,CountSurfaces(mesh)) For surface_num=1 To CountSurfaces(mesh) temp_surface=GetSurface(mesh,surface_num) WriteInt(file,CountVertices(temp_surface)) For vertex_num=0 To CountVertices(temp_surface)-1 WriteFloat(file,VertexX#(temp_surface,vertex_num)) WriteFloat(file,VertexY#(temp_surface,vertex_num)) WriteFloat(file,VertexZ#(temp_surface,vertex_num)) WriteFloat(file,VertexNX#(temp_surface,vertex_num)) WriteFloat(file,VertexNY#(temp_surface,vertex_num)) WriteFloat(file,VertexNZ#(temp_surface,vertex_num)) WriteFloat(file,VertexRed#(temp_surface,vertex_num)) WriteFloat(file,VertexGreen#(temp_surface,vertex_num)) WriteFloat(file,VertexBlue#(temp_surface,vertex_num)) WriteFloat(file,VertexU#(temp_surface,vertex_num)) WriteFloat(file,VertexV#(temp_surface,vertex_num)) WriteFloat(file,VertexW#(temp_surface,vertex_num)) Next WriteInt(file,CountTriangles(temp_surface)) For triangle_num=0 To CountTriangles(temp_surface)-1 WriteInt(file,TriangleVertex(temp_surface,triangle_num,0)) WriteInt(file,TriangleVertex(temp_surface,triangle_num,1)) WriteInt(file,TriangleVertex(temp_surface,triangle_num,2)) Next Next CloseFile file End Function ;====================================================================================================== Function load_mesh() file=ReadFile("test.my3d") mesh=CreateMesh() For surface_num=1 To ReadInt(file) temp_surface=CreateSurface(mesh) For vertex_num=0 To ReadInt(file)-1 temp_vertex=AddVertex(temp_surface,ReadFloat(file),ReadFloat(file),ReadFloat(file)) VertexNormal temp_surface,temp_vertex,ReadFloat(file),ReadFloat(file),ReadFloat(file) VertexColor temp_surface,temp_vertex,ReadFloat(file),ReadFloat(file),ReadFloat(file) VertexTexCoords temp_surface,temp_vertex,ReadFloat(file),ReadFloat(file),ReadFloat(file) Next For triangle_num=0 To ReadInt(file)-1 AddTriangle(temp_surface,ReadInt(file),ReadInt(file),ReadInt(file)) Next Next CloseFile file Return mesh End Function |
| ||
You can't depend on function parameters being evaluated in any particular order... DoSomething f(x), g(x) might call g before or f. Or maybe not. This means you need to replace temp_vertex=AddVertex(temp_surface,ReadFloat(file),ReadFloat(file),ReadFloat(file)) with x# = ReadFloat(file) y# = ReadFloat(file) z# = ReadFloat(file) temp_vertex = AddVertex temp_surface, x,y,z |