OXH File Format 

Ornatrix carries its own independent file format for storing any arbitrary hair structure. OXH format has been developed to support all the information contained in a hair object. This information includes all the root data, channel data, and hair animation. There are two ways of representing OXH data: via binary serialization, or as ASCII text export.

In either case these files are formulated using the same format:

----------------------------------------------------------------
Standard storage format for .oxh files
----------------------------------------------------------------
* Header
 + "OXHF" ( char * 5 )
 + ASCII ( char * 2 )
 + Version ( int )
 + Flags ( DWORD )

* Hair info
 + numRoots ( unsigned int )
 + numVerts ( unsigned int )
 + numRData ( int )
 + numVData ( int )
 + numFrames ( int )
 + globSegNum ( int )

* Roots
 - rootTopo ( OrnaExpRoot * numRoots )
 - rootTM ( OrnaExpRootTM * numRoots)
 - surfDep ( OrnaExpSurfDep * numRoots )
 - guideDep ( OrnaExpGuideDep * numRoots )
 - UV ( ( float * 2 ) * numRoots )

* Channels
 - rootChanInfo ( OrnaExpChanInfo * numRData )
 - rootData ( float * numRData * numRoots )
 - vertChanInfo ( OrnaExpChanInfo * numVData )
 - vertData ( float * numVData * numVerts )

* Frames (0..numFrames)
 + verts ( ( float * 3 ) * numVerts )
----------------------------------------------------------------
Data marked with "+" is mandatory
Data marked with "-" is optional
----------------------------------------------------------------
ULONG = unsigned long
DWORD = int32