This manual attempts to document the C3D format to a level that will allow a programmer to implement applications that read, write, and create C3D files that are interchangeable between different manufacturers and applications. Its aim is to provide documentation of the internal details of the C3D file format so that application programmers can maintain compatibility with existing files while expanding the capabilities of the C3D format to meet future needs.
The design of the C3D format was originally driven by the need for a convenient and efficient format to store biomechanics data. The C3D format stores 3D coordinate and numeric data for any measurement trial, with all the various parameters that describe the data, in a single file. This largely eliminates the need for trial data to travel around with additional notes and subject information (with the ever present danger that they will get separated from the data at some point in the travels).
The C3D file format has three basic components:
· Data – at this level the C3D file is simply a binary file that stores raw 3D and analog information.
· Standard Parameters – default information about the raw 3D and analog data that is required to access the data.
· Custom Parameters – information specific to a particular manufacturers’ software application or test subject.
One design goal of the C3D file format was to make it easy for the user to list, examine, and if necessary modify, any parameter contained in the C3D file. These parameters give the C3D format the ability to store a multitude of information about the data. Looked at in this way, the C3D file format combines the traditional data storage functions with many of the characteristic of a database record, and it is these features that set the C3D format apart from every other biomechanics storage method.
Other goals for the C3D file format were to minimize the storage requirements, minimize the number of files required to store the data, and provide adequate speed and easy access to the file contents. In addition to allowing the casual user to display and modify all of the parameters, the C3D format allows parameters to include unique descriptions for each parameter item so that the various functions of each parameter can be documented within the C3D file itself. This provides the flexibility for users to store many different kinds of data and associated parameters within the C3D file, while maintaining a degree of internal documentation that is lacking in most other file formats.
C3D files have no significant limitations on the data, or the type and number of parameters that can be stored – the format is easily expandable to store additional parameters and data. In spite of this, C3D files are very much backward compatible, and today’s C3D files remain readable with most software applications created when the format was first introduced. At the same time, C3D files from the mid-1980’s can be read by any properly written modern C3D application.
The C3D file format is a binary format – although ASCII
files can easily include descriptions associated with parameters and are
relatively easy to access with many applications, the ASCII format is
inefficient for both storage and access. ASCII files must generally be
accessed sequentially and are very inefficient if random access to the data is
required. Binary files, on the other hand, are efficient in terms of data
storage and access, and can easily store many different parameters and
associated descriptions etc. However, binary data access generally
requires a specific application - the file organization is specific to how the
data values are stored, and applications must have a detailed knowledge of the
file structure to access the stored information. In spite of this
complication, the efficiency and speed of access for binary files provides an
overriding advantage for data storage, and as a result, the C3D format
has become the choice for biomechanics data and parameter storage.
Early in the design of the C3D format it was realized that it was unlikely that one, ironclad, specification would fit every biomechanics need. As a result the C3D file requires a small number of common parameters that describe the fundamentals of the 3D data, and then allows the users to define, generate, and store within the file, any number of user or lab defined data items so that anyone reading the C3D file with a suitable application can access them.
This flexibility is the most important feature of the C3D file format and explains both its growing popularity and the extraordinary length of time that it has been used to store a wide range of clinical and experimental data. Hence, it is worthwhile emphasizing:
The C3D file also contains parameters that describe the 3D data. It allows the users to define, generate, and store within the C3D file any number of user defined parameters so that anyone opening the C3D file can read them and use them to interpret or analyze the data.
Thus, the C3D format treats information as if it belongs to one of two classes. These are: Physical Measurements, and Parameters that pertain to the physical measurements.
More: