A file specification defines the limitations that are inherent in the format. The C3D format was designed to store 3D locations together with analog data in a single file format that could be accessed by anyone to process and analyze the data. When the second byte in the header record is 0x50h (specifying the 3D Point data format) the file records 3D location information as XYZ coordinates (referenced to a common origin) together with information about the quality of the measurements (residuals) and multiple analog data samples stored with each frame of 3D data.
All C3D files have a common binary structure that is defined by the header section at the start of the file, and consists of the header followed by the parameter section and data section. The parameter section documents the C3D file data section contents, all data is stored as binary 16-bit integers or 32-bit floating-point values.
The C3D format allows the frame count to be stored as either an integer or floating-point value. As a result, C3D files can store up to 2,147,483,647 frames of 3D data that can be stored in synchronization with external animation or video files.
The basic C3D file can store the 3D locations from 255 individual points in a single frame of data and multiple analog samples from 255 analog channels, this limit can extended to potentially store up to 65535 individual 3D points and analog channels per frame in a C3D file.
The resolution of the stored 3D data values is defined by the storage method, both the scaled integer and the floating-point formats support a resolution that normally exceeds the accuracy of 3D measurements generated by 3D motion data capture systems.
The C3D format maintains synchronization of 3D and analog data by storing all samples frame by frame, permitting multiple analog samples to be stored with each 3D frame by limiting the analog sample rate to an integer multiple of the recorded 3D frame rate.
The data sampling rate is defined by the 3D point sample rate which is stored as a floating-point value making synchronization rates like 59.94 frames per second (NTSC video) easy although the temporal synchronization of the recorded data is controlled by the motion capture system and any other devices that generate the data stored in the C3D file.
Analog data is normally digitized by an ADC and stored as a signed 16-bit integer value, preserving the original analog measurement. Each analog channel supports an individual scaling factor and channel assignment details that describe the data.