Status : suggestion
Implementations : int CGeometry::readBOG( FILE * bog );
int CGeometry::writeBOG( FILE * bog );
This is a binary representation of 3D mesh object. This file can be printed in ascii using the geo file format
| bogFile | = bogHead + Geometry list |
| bogHead | = File identification + File version + Number of geometries |
| File identification | = * String that identify this file format "BOG" * |
| File version | = * file version number * |
| Geometry liste | = {Geometry} |
| Geometry | = Geometry head + Vertex list + Normal list + TexCoord list + Polygon list |
| Geometry head | = Geometry id + Number of vertices + Number of normals + Number of TexCoords + Number of polygons |
| Vertex list | = {Vertex} |
| Vertex | = x-coord + y-coord + z-coord |
| Normal list | = {Normal} |
| Normal | = x-coord + y-coord + z-coord |
| TexCoord list | = {TexCoord} |
| TexCoord | = u-coord + v-coord |
| Polygon list | = {Polygon} |
| Polygon | = PolyHead + Vertex indexes + Normal indexes + TexCood indexes |
| PolyHead | = Type + Material id + Number of vertex indexes + Number of normal indexes + Number of TexCoord indexes |
| Type | = [ Polygon | Triangles | Quads | Quad strip | Triangle strip | Triangle fan ] |
| Material id | = * A string that identify the material. * |
| Vertex indexes | = {index} |
| Normal indexes | = {index} |
| TexCoord indexes | = {index} |
| Index | = * Pointer to element in a table. * |
The bog file is a binary format but in this example ascii text is used to demonstrate the file format.
BOG 1 1 # File identification + File version + Number of geometries 1 8 6 4 6 # Geometry id + Number of vertices + Number of normals + Number of texCoords + Number of polygons -1.000000 -1.000000 1.000000 # Vertex 0 = x-coord + y-coord + z-coord 1.000000 -1.000000 1.000000 # Vertex 1 = x-coord + y-coord + z-coord 1.000000 1.000000 1.000000 # Vertex 2 = x-coord + y-coord + z-coord -1.000000 1.000000 1.000000 # Vertex 3 = x-coord + y-coord + z-coord -1.000000 -1.000000 -1.000000 # Vertex 4 = x-coord + y-coord + z-coord 1.000000 -1.000000 -1.000000 # Vertex 5 = x-coord + y-coord + z-coord 1.000000 1.000000 -1.000000 # Vertex 6 = x-coord + y-coord + z-coord -1.000000 1.000000 -1.000000 # Vertex 7 = x-coord + y-coord + z-coord 1.000000 0.000000 0.000000 # Normal 0 = x-coord + y-coord + z-coord 0.000000 1.000000 0.000000 # Normal 1 = x-coord + y-coord + z-coord 0.000000 0.000000 1.000000 # Normal 2 = x-coord + y-coord + z-coord -1.000000 0.000000 0.000000 # Normal 3 = x-coord + y-coord + z-coord 0.000000 -1.000000 0.000000 # Normal 4 = x-coord + y-coord + z-coord 0.000000 0.000000 -1.000000 # Normal 5 = x-coord + y-coord + z-coord 0.000000 0.000000 # TexCoord 0 = u-coord + v-coord 1.000000 0.000000 # TexCoord 1 = u-coord + v-coord 1.000000 1.000000 # TexCoord 2 = u-coord + v-coord 0.000000 1.000000 # TexCoord 3 = u-coord + v-coord 2 0 4 1 4 # Polygon 0 = Type + Material id + Number of vertex indexes + Number of normal indexes + Number of TexCoord indexes 1 5 6 2 # Vertex indexes 0 # Normal indexes 0 1 2 3 # TexCoord indexes 2 1 4 1 4 # Polygon 1 = Type + Material id + Number of vertex indexes + Number of normal indexes + Number of TexCoord indexes 2 6 7 3 # Vertex indexes 1 # Normal indexes 0 1 2 3 # TexCoord indexes 2 2 4 1 4 # Polygon 2 = Type + Material id + Number of vertex indexes + Number of normal indexes + Number of TexCoord indexes 0 1 2 3 # Vertex indexes 2 # Normal indexes 0 1 2 3 # TexCoord indexes 2 3 4 1 4 # Polygon 3 = Type + Material id + Number of vertex indexes + Number of normal indexes + Number of TexCoord indexes 3 7 4 0 # Vertex indexes 3 # Normal indexes 0 1 2 3 # TexCoord indexes 2 4 4 1 4 # Polygon 4 = Type + Material id + Number of vertex indexes + Number of normal indexes + Number of TexCoord indexes 0 4 5 1 # Vertex indexes 4 # Normal indexes 0 1 2 3 # TexCoord indexes 2 5 4 1 4 # Polygon 5 = Type + Material id + Number of vertex indexes + Number of normal indexes + Number of TexCoord indexes 4 7 6 5 # Vertex indexes 5 # Normal indexes 0 1 2 3 # TexCoord indexes