C3D (Coordinate 3D) files are designed to hold data and associated parameters within a single file that was designed to provide an accurate format for storing a variety of data and their parameters in an efficient manner while allowing the user to understand, examine, and if necessary modify the parameters.
The overall goals for the C3D file format were as follows:
The C3D file format is designed to store raw data from a 3D data collection environment, each data collection stored as a single trial of raw 3D coordinates and analog samples with a defined parameter section that described each files data properties. All early C3D files included camera contribution data and a 3D calculation residual stored with each 3D coordinate, allowing the quality and accuracy of every recorded 3D data value to be continually monitored and evaluated. Simultaneously, multiple samples of analog data could be sampled during each 3D frame to guarantee temporal synchronization, each analog sample being recorded as the value directly read from an ADC and recorded as raw sample values. Overall the design of the C3D format enables all the data collected to be stored with a minimum of processing, and allows the user to verify the quality of the raw and unprocessed 3D and analog data collected during an experiment.
However, as data collection systems have evolved, many manufacturers have begun processing the raw sampled data before creating the C3D file and created their own additional data values in the file as pseudo-3D points to store processed and calculated data values. While this does not violate the C3D specification, it does mean that end-users now have to implicitly trust their manufacturer’s data collection and processing efforts because many C3D files these days do not contain any raw data as the manufacturer has removed the original “raw” data from observation. This means that any errors in data collection, and processing before the C3D file is created, are effectively hidden from the end-user to the manufacturer’s advantage, preventing a quality assessment of the data collection process.
The C3D format was designed to record the analog voltages generated by sensors during each data collection trial. These sampled voltages are intended to be stored in the C3D file together with individual sensor parameters.
If the sensor was a force plate then the C3D parameters recorded the manufacturer’s calibration matrix, and the force plate orientation information, allowing applications reading the C3D file to calculate the measured force and moments within the 3D calibrated volume from the raw data. This means that any errors in the force plate parameters that are discovered post-collection can be fixed by correcting the applicable parameters and reopening the C3D file. By storing all the analog samples from a trial, any user can review the data collection environment and verify that the data collection is functional and accurate.
But many data collection systems now pre-process the analog data and only store the calculated sensor data - this presents a number of problems:
Using the C3D format to store processed data is an option that manufacturers can use without breaking the format but if all that is recorded is the processed data then the manufacturer has created an environment that is difficult to fault-find because it prevents the end-user from evaluating the quality and accuracy of the raw data collected. If the C3D file stores raw, unprocessed 3D and analog data then anyone can determine how well the system creating the data is functioning, and make corrections to the data collection environment to fix errors and improve the data quality.
It is recommended that the default configuration for C3D file creation is to store minimally processed raw data samples.