B3D problem ...
Blitz3D Forums/Blitz3D Programming/B3D problem ...
| ||
Hi, I've come on quite far with the .B3D exporter, but I've come across a bit of a problem that one of you guys might be able to fix. For some reason this code block below won't export more then one triangle per node entity. What it should be displaying is 2 triangles, each with a different texture. It's only displaying one. Any ideas anyone? ;***************** ;* .B3D Exporter * ;***************** Include "b3dfile.bb" ;**** Open file for writting ***** Global filename$="c:\test\temp.b3d" Global file=WriteFile( filename$ ) b3dSetFile( file ) ;**********Title ***************** b3dBeginChunk( "BB3D" ) b3dWriteInt( 1 ) ; Version ;********* Get textures ********* b3dBeginChunk( "TEXS" ) ;-- Texture 1 START --- b3dWriteString( "c:\test\texturea.bmp") ; Texture file name b3dWriteInt( 1 ) ; Texture flag b3dWriteInt( 1 ) ; Blend type b3dWritefloat( 0 ) ; X position b3dWritefloat( 0 ) ; Y position b3dWritefloat( 1 ) ; X Scale b3dWritefloat( 1 ) ; Y Scale b3dWritefloat( 1 ) ; Rotation ;-- Texture 1 END --- ;-- Texture 2 START --- b3dWriteString( "c:\test\textureb.BMP") ; Texture file name b3dWriteInt( 1 ) ; Texture flag b3dWriteInt( 1 ) ; Blend type b3dWritefloat( 0 ) ; X position b3dWritefloat( 0 ) ; Y position b3dWritefloat( 1 ) ; X Scale b3dWritefloat( 1 ) ; Y Scale b3dWritefloat( 1 ) ; Rotation ;-- Texture 2 END --- ;etc. b3dEndChunk() ;end of Textures chunk ;********* Create brushes ********* b3dBeginChunk( "BRUS" ) ;-- Brush defaults --- b3dWriteInt( 1 ) ; Default textures per chunk b3dWriteString( "default") ; Default brush name b3dWritefloat( 1 ) ; Default R b3dWritefloat( 0 ) ; Default G b3dWritefloat( 1 ) ; Default B b3dWritefloat( 1 ) ; Default Alpha b3dWritefloat( 1 ) ; Default Shininess b3dWriteInt( 1 ) ; Default Blend type b3dWriteInt( 1 ) ; Default FX type b3dWriteInt( 0 ) ; Default texture number ;---Brush 1 START --- b3dWriteString( "brusha") ; brush 1 name b3dWritefloat( 1 ) ; Default R b3dWritefloat( 1 ) ; Default G b3dWritefloat( 1 ) ; Default B b3dWritefloat( 1 ) ; Alpha b3dWritefloat( 1 ) ; Shininess b3dWriteInt( 1 ) ; Blend type b3dWriteInt( 1 ) ; FX type b3dWriteInt( 0 ) ; texture number ;---Brush 1 END --- ;---Brush 2 START --- b3dWriteString( "brushb") ; brush 2 name b3dWritefloat( 1 ) ; Default R b3dWritefloat( 1 ) ; Default G b3dWritefloat( 1 ) ; Default B b3dWritefloat( 1 ) ; Alpha b3dWritefloat( 1 ) ; Shininess b3dWriteInt( 1 ) ; Blend type b3dWriteInt( 1 ) ; FX type b3dWriteInt( 1 ) ; texture number ;---Brush 2 END --- b3dEndChunk() ;end of brushes chunk ;********** NODES *********** b3dBeginChunk( "NODE" ) b3dWriteString( "MAIN_NODE") ; Node name b3dWritefloat( 1 ) ; X pos b3dWritefloat( 1 ) ; Y pos b3dWritefloat( 1 ) ; Z pos b3dWritefloat( 1 ) ; X scale b3dWritefloat( 1 ) ; Y scale b3dWritefloat( 1 ) ; Z scale b3dWritefloat( 1 ) ; W rotation b3dWritefloat( 1 ) ; X rotation b3dWritefloat( 1 ) ; Y rotation b3dWritefloat( 1 ) ; Z rotation ;********** Meshes *********** ;------------------------------------------------------------- b3dBeginChunk( "MESH" ) b3dWriteInt( 1 ) ; Brush number ;--- VERTS --- b3dBeginChunk( "VRTS" ) b3dWriteInt( 2 ) ; Flags (0=no, 1=with normals, 2=with colour) b3dWriteInt( 1 ) ; texture coords set b3dWriteInt( 2 ) ; coords per set ;-- vert 1 data -- b3dWritefloat( -5 ) ; X pos b3dWritefloat( 5 ) ; Y pos b3dWritefloat( 0 ) ; Z pos b3dWritefloat( 1 ) ; R b3dWritefloat( 1 ) ; G b3dWritefloat( 1 ) ; B b3dWritefloat( 1 ) ; Alpha b3dWritefloat( 0 ) ; U b3dWritefloat( 0 ) ; V ;-- vert 2 data -- b3dWritefloat( 5 ) ; X pos b3dWritefloat( 5 ) ; Y pos b3dWritefloat( 0 ) ; Z pos b3dWritefloat( 1 ) ; R b3dWritefloat( 1 ) ; G b3dWritefloat( 1 ) ; B b3dWritefloat( 1 ) ; Alpha b3dWritefloat( 1 ) ; U b3dWritefloat( 0 ) ; V ;-- vert 3 data -- b3dWritefloat( -5 ) ; X pos b3dWritefloat( -5 ) ; Y pos b3dWritefloat( 0 ) ; Z pos b3dWritefloat( 1 ) ; R b3dWritefloat( 1 ) ; G b3dWritefloat( 1 ) ; B b3dWritefloat( 1 ) ; Alpha b3dWritefloat( 0 ) ; U b3dWritefloat( 1 ) ; V b3dEndChunk() ;end of verts chunk ;--- TRIS ---- b3dBeginChunk( "TRIS" ) b3dWriteInt( 1 ) ; Brush used for tris ;-- Tris 1 data -- b3dWriteInt( 0 ) ; Tri point A b3dWriteInt( 1 ) ; Tri point B b3dWriteInt( 2 ) ; Tri point C b3dEndChunk() ;end of verts chunk b3dEndChunk() ;end of MESH chunk ;---------------------------------------------------------- b3dBeginChunk( "MESH" ) b3dWriteInt( 2 ) ; Brush number ;--- VERTS --- b3dBeginChunk( "VRTS" ) b3dWriteInt( 2 ) ; Flags (0=no, 1=with normals, 2=with colour) b3dWriteInt( 1 ) ; texture coords set b3dWriteInt( 2 ) ; coords per set ;-- vert 1 data -- b3dWritefloat( 5 ) ; X pos b3dWritefloat( 5 ) ; Y pos b3dWritefloat( 0 ) ; Z pos b3dWritefloat( 1 ) ; R b3dWritefloat( 1 ) ; G b3dWritefloat( 1 ) ; B b3dWritefloat( 1 ) ; Alpha b3dWritefloat( 1 ) ; U b3dWritefloat( 0 ) ; V ;-- vert 2 data -- b3dWritefloat( 5 ) ; X pos b3dWritefloat( -5 ) ; Y pos b3dWritefloat( 0 ) ; Z pos b3dWritefloat( 1 ) ; R b3dWritefloat( 1 ) ; G b3dWritefloat( 1 ) ; B b3dWritefloat( 1 ) ; Alpha b3dWritefloat( 1 ) ; U b3dWritefloat( 1 ) ; V ;-- vert 3 data -- b3dWritefloat( -5 ) ; X pos b3dWritefloat( -5 ) ; Y pos b3dWritefloat( 0 ) ; Z pos b3dWritefloat( 1 ) ; R b3dWritefloat( 1 ) ; G b3dWritefloat( 1 ) ; B b3dWritefloat( 1 ) ; Alpha b3dWritefloat( 0 ) ; U b3dWritefloat( 1 ) ; V b3dEndChunk() ;end of verts chunk ;--- TRIS ---- b3dBeginChunk( "TRIS" ) b3dWriteInt( 2 ) ; Brush used for tris ;-- Tris 1 data -- b3dWriteInt( 0 ) ; Tri point A b3dWriteInt( 1 ) ; Tri point B b3dWriteInt( 2 ) ; Tri point C b3dEndChunk() ;end of verts chunk b3dEndChunk() ;end of MESH chunk ;-------------------------------------------------------------------- b3dEndChunk() ;end of NODE chunk b3dEndChunk() ;end of BB3D chunk CloseFile file While Not KeyHit(1) Wend |
| ||
It's okay people, I've answered my own question :O). Here's how it's done if you want to export multitexture objects in .B3D format. ;***************** ;* .B3D Exporter * ;***************** Include "b3dfile.bb" ;**** Open file for writting ***** Global filename$="c:\test\temp.b3d" Global file=WriteFile( filename$ ) b3dSetFile( file ) ;**********Title ***************** b3dBeginChunk( "BB3D" ) b3dWriteInt( 1 ) ; Version ;********* Get textures ********* b3dBeginChunk( "TEXS" ) ;-- Texture 1 START --- b3dWriteString( "c:\test\texturea.bmp") ; Texture file name b3dWriteInt( 1 ) ; Texture flag b3dWriteInt( 1 ) ; Blend type b3dWritefloat( 0 ) ; X position b3dWritefloat( 0 ) ; Y position b3dWritefloat( 1 ) ; X Scale b3dWritefloat( 1 ) ; Y Scale b3dWritefloat( 1 ) ; Rotation ;-- Texture 1 END --- ;-- Texture 2 START --- b3dWriteString( "c:\test\textureb.bmp") ; Texture file name b3dWriteInt( 1 ) ; Texture flag b3dWriteInt( 1 ) ; Blend type b3dWritefloat( 0 ) ; X position b3dWritefloat( 0 ) ; Y position b3dWritefloat( 1 ) ; X Scale b3dWritefloat( 1 ) ; Y Scale b3dWritefloat( 1 ) ; Rotation ;-- Texture 2 END --- ;etc. b3dEndChunk() ;end of Textures chunk ;********* Create brushes ********* b3dBeginChunk( "BRUS" ) ;-- Brush defaults --- b3dWriteInt( 1 ) ; Default textures per chunk b3dWriteString( "default") ; Default brush name b3dWritefloat( 1 ) ; Default R b3dWritefloat( 0 ) ; Default G b3dWritefloat( 1 ) ; Default B b3dWritefloat( 1 ) ; Default Alpha b3dWritefloat( 1 ) ; Default Shininess b3dWriteInt( 1 ) ; Default Blend type b3dWriteInt( 1 ) ; Default FX type b3dWriteInt( 0 ) ; Default texture number ;---Brush 1 START --- b3dWriteString( "brusha") ; brush 1 name b3dWritefloat( 1 ) ; Default R b3dWritefloat( 1 ) ; Default G b3dWritefloat( 1 ) ; Default B b3dWritefloat( 1 ) ; Alpha b3dWritefloat( 1 ) ; Shininess b3dWriteInt( 1 ) ; Blend type b3dWriteInt( 1 ) ; FX type b3dWriteInt( 0 ) ; texture number ;---Brush 1 END --- ;---Brush 2 START --- b3dWriteString( "brushb") ; brush 2 name b3dWritefloat( 1 ) ; Default R b3dWritefloat( 1 ) ; Default G b3dWritefloat( 1 ) ; Default B b3dWritefloat( 1 ) ; Alpha b3dWritefloat( 1 ) ; Shininess b3dWriteInt( 1 ) ; Blend type b3dWriteInt( 1 ) ; FX type b3dWriteInt( 1 ) ; texture number ;---Brush 2 END --- b3dEndChunk() ;end of brushes chunk ;********** NODES *********** b3dBeginChunk( "NODE" ) b3dWriteString( "MAIN_NODE") ; Node name b3dWritefloat( 1 ) ; X pos b3dWritefloat( 1 ) ; Y pos b3dWritefloat( 1 ) ; Z pos b3dWritefloat( 1 ) ; X scale b3dWritefloat( 1 ) ; Y scale b3dWritefloat( 1 ) ; Z scale b3dWritefloat( 1 ) ; W rotation b3dWritefloat( 1 ) ; X rotation b3dWritefloat( 1 ) ; Y rotation b3dWritefloat( 1 ) ; Z rotation ;********** Meshes *********** ;------------------------------------------------------------- b3dBeginChunk( "MESH" ) b3dWriteInt( 1 ) ; Brush number ;--- VERTS --- b3dBeginChunk( "VRTS" ) b3dWriteInt( 2 ) ; Flags (0=no, 1=with normals, 2=with colour) b3dWriteInt( 1 ) ; texture coords set b3dWriteInt( 2 ) ; coords per set ;-- vert 1 data -- b3dWritefloat( -5 ) ; X pos b3dWritefloat( 5 ) ; Y pos b3dWritefloat( 0 ) ; Z pos b3dWritefloat( 1 ) ; R b3dWritefloat( 1 ) ; G b3dWritefloat( 1 ) ; B b3dWritefloat( 1 ) ; Alpha b3dWritefloat( 0 ) ; U b3dWritefloat( 0 ) ; V ;-- vert 2 data -- b3dWritefloat( 5 ) ; X pos b3dWritefloat( 5 ) ; Y pos b3dWritefloat( 0 ) ; Z pos b3dWritefloat( 1 ) ; R b3dWritefloat( 1 ) ; G b3dWritefloat( 1 ) ; B b3dWritefloat( 1 ) ; Alpha b3dWritefloat( 1 ) ; U b3dWritefloat( 0 ) ; V ;-- vert 3 data -- b3dWritefloat( -5 ) ; X pos b3dWritefloat( -5 ) ; Y pos b3dWritefloat( 0 ) ; Z pos b3dWritefloat( 1 ) ; R b3dWritefloat( 1 ) ; G b3dWritefloat( 1 ) ; B b3dWritefloat( 1 ) ; Alpha b3dWritefloat( 0 ) ; U b3dWritefloat( 1 ) ; V ;-- vert 4 data -- b3dWritefloat( 5 ) ; X pos b3dWritefloat( 5 ) ; Y pos b3dWritefloat( 0 ) ; Z pos b3dWritefloat( 1 ) ; R b3dWritefloat( 1 ) ; G b3dWritefloat( 1 ) ; B b3dWritefloat( 1 ) ; Alpha b3dWritefloat( 1 ) ; U b3dWritefloat( 0 ) ; V ;-- vert 5 data -- b3dWritefloat( 5 ) ; X pos b3dWritefloat( -5 ) ; Y pos b3dWritefloat( 0 ) ; Z pos b3dWritefloat( 1 ) ; R b3dWritefloat( 1 ) ; G b3dWritefloat( 1 ) ; B b3dWritefloat( 1 ) ; Alpha b3dWritefloat( 1 ) ; U b3dWritefloat( 1 ) ; V ;-- vert 6 data -- b3dWritefloat( -5 ) ; X pos b3dWritefloat( -5 ) ; Y pos b3dWritefloat( 0 ) ; Z pos b3dWritefloat( 1 ) ; R b3dWritefloat( 1 ) ; G b3dWritefloat( 1 ) ; B b3dWritefloat( 1 ) ; Alpha b3dWritefloat( 0 ) ; U b3dWritefloat( 1 ) ; V b3dEndChunk() ;end of verts chunk ;--- TRIS ---- b3dBeginChunk( "TRIS" ) b3dWriteInt( 1 ) ; Brush used for tris ;-- Tris 1 data -- b3dWriteInt( 0 ) ; Tri point A b3dWriteInt( 1 ) ; Tri point B b3dWriteInt( 2 ) ; Tri point C b3dEndChunk() ;end of tris chunk ;-------------- ;--- TRIS b---- b3dBeginChunk( "TRIS" ) b3dWriteInt( 2 ) ; Brush used for tris ;-- Tris 2 data -- b3dWriteInt( 3 ) ; Tri point A b3dWriteInt( 4 ) ; Tri point B b3dWriteInt( 5 ) ; Tri point C b3dEndChunk() ;end of tris chunk b3dEndChunk() ;end of MESH chunk ;------------------------------------------------------------- ;-------------------------------------------------------------------- b3dEndChunk() ;end of NODE chunk b3dEndChunk() ;end of BB3D chunk CloseFile file While Not KeyHit(1) Wend |