                         -= Vector Object format =-

 Offset   Length     Description
 ---------------------------------------------------------------
    0       2         Flag Word containing information about
                      the vector object. The bits are as follows:

                      Bit 0: If set, vertex information is in the
                             data file, otherwise no vertex information
                             is contained
                      Bit 1: If set, polygon definitions are in the data file
                      Bit 2: If set, polygon normals are in the data file
                      Bit 3: If set, vertex normals are in the data file
                      Bit 4: If set, individual polygon shading type is in file
                      Bit 5: If set, a polygon color definition is in the
                             data file
                      Bit 6: If set, a palette information is in the file
                      Bit 7: Texture vertex information
                      Bit 8: Texture bitmap is in data file

                      The remaining bits are for your own use, but please
                      keep the first 9 bits the same.




 -= Vertex Information =-

 Offset   Length     Description
 ---------------------------------------------------------------
    0       2         Number of verticies in Object
    2      ....       Vertex information

    - After the the number of verticies information, comes the actual
    vertex information. Each vertex is made up of 3 signed 2 byte integers,
    1 integer for each part of the coordinate (x, y, z).



 -= Polygon Information =-

 Offset   Length     Description
 ---------------------------------------------------------------
    0       2         Number of Polygons in Object
    2       1         Maximum number of verticies in a polygon
    3      ...        Polygon data

    - Each polygon has (Maximum verticies per polygon) 2 byte integers
      containing the vertex number of the polygon vertex. In most cases 
      this is set to 3 (for triangles), but since flexability was the 
      goal with this format, polygon of greater than 3 sides can exist 
      in the data file. If there is a polygon with less than (Maximum 
      number of verticies) points, the extra points are just duplicates 
      of the last one being used.



 -= Polygon Normal Information =-

 - There are (Number of polygons in object) normals in this section. This
   number is the same (and is gotten from) the polygon information. The
   coordinates of the face normals are stored in the exact same manor as
   the vertex information, 3 signed 2 byte integers. The Normals are stored
   in 8 place fixed point (256 multiplication factor, fixed 1 = 256)



 -= Vertex Normal Information =-

 - There are (Number of verticies in object) normals in this section. This 
   number is the same (and is gotten from) the vertex information. The
   coordinates of the vertex normals are stored in the exact same manor as
   the vertex information, 3 signed 2 byte integers. The Normals are stored
   in 8 place fixed point (256 multiplication factor, fixed 1 = 256)


 -= Individual Polygon Shading Type =-

 - Contains 1 to (Number of Polygons) bytes specifying the shading type
   of the corrisponding polygon. This field should only be used of shading
   of polygons differ within an object.


 -= Polygon Color Definition =-

 - Contains 1 to (Number of Polygons) bytes specifying the base color of the
   corrisponding polygon.


 -= Palette Information =-

 - This is so you can store complex palettes in the data file, instead of
   seperate palette files. The first byte is the number of colors contained
   in this palette definition. Then there are 1 to (number of colors) RGB
   triplets containing the color information. The RGB information has a range
   of 0..255 for each primary. This is so the color information can be extended
   to true color systems.


 -= Texture Vertex Information =-

 - Has 1 to (Number of Polygons) texture polygon defintions. Each texture
   polygon defintion is 1 to (Maximum number of verticies in polygon) UV
   coords. Each UV coord is 2 bytes, containing the x and y location in the
   texture. Supports up to 256x256 texture bitmap (because of byte sized
   indicies).


 -= Texture Bitmap =-

   Offset     Length                    Description
  -----------------------------------------------------------
     0          1           Bitmap Flag
                            Bit 0 : Bitmap is a BMP file
                            Bit 1 : Bitmap is a PCX file
                            Bit 2 : Bitmap is a LBM file
                            Bit 3 : Bitmap is a GIF file
                            Bit 4 : Bitmap is a JPG file
                            Bit 5 : Bitmap is a VOT file, a VO raw format
                            Bit 6 : Bitmap format is non-disclosed
     1          4           DWord containing the length of the data file

  - For the standard formats, it is quite obvious how the texture and palette
    are stored. Bitmaps can be larger that 256x256, but the limitations of
    the Texture Vertex Information prevent you from using larger textures
    directly.

  - The VOT (Vector Object Texture) format is a very simple raw format:

    Offset    Length                Description
   --------------------------------------------------------
      0         1                  X dimention of texture
      1         1                  Y dimention of texture
      2        768                 256 color palette information
     770       ...                 Raw picture data stored by rows

  - The non-disclosed format is any format you choose, but desire others
    not to use it. Good for small vector demonstrations where you don't want
    people stealing your textures.


   -= Notes =-

   The data in the file is stored sequentially, as stated in the Flag byte.
   First is vertex information, then polygon information. Next are normals
   then polygon color defintion. Finally its texture vertex and texture
   bitmap information. The lengths of sections are not included in the data
   file because they can be _easily_ calculated from the first couple of
   bytes (the exception being the texture bitmap, who's various image formats
   didn't lend well to calculating the length at runtime).


   -= Closing =-

   Well, thats my VO format. Its quite flexable, and has a vast range of
   options. Please use these as guidelines if you wish to share your objects
   with one another, but mangle it in any way if you don't want to share :)
   Hopefully you find it useful.

   Phred/OTM
   achalfin@uceng.uc.edu
