Important Notes

Before looking at all of the different data block types which make up the POD file format, there are a few brief notes about different aspects of the POD specification.

Block Type Identifiers

Each block type identifier is an unsigned 32-bit integer. However, as the most significant bit of the integer is reserved for determining if a tag is a Start Tag or an End Tag it must be masked.

The Start Tag and End Tag masks are as follows:

  • 0x00000000 – Start Tag mask.

  • 0x80000000 – End Tag mask.

The Identifier section within each entry of the block list gives the value prior to masking.


Several blocks within the POD format reference an index. This index refers to the position (counting from zero) of an element within a list or similar data structure. This indexing means that the ordering of objects within the file must be maintained, or translated, post-loading for these indices to have any meaning.

It should also be noted that indices can be set to ‘-1’, in this instance the index does not refer to any element. For example, a camera that is not following an object may have its Target Object Index set to ‘-1’.


Some elements of a POD file may use either floating point or fixed point data types. These are referenced in the POD Block Structure as Float/Fixed. Float should be used by default, unless overwritten by the Scene Flags block.

Existence of Blocks

Only the existence of the Version block is guaranteed.

Nesting of blocks must be maintained as described in the POD File Structure. The existence of child blocks within a parent block is guaranteed only if the child block is required for the parent block to function.

Node Ordering

Nodes will appear in the following order:

  1. Meshes.

  2. Lights.

  3. Cameras.

  4. Everything else.

This is important to remember as the only way to be certain that the index of a node references, for example, a camera, is to know that all meshes and lights have already passed.