The biomechanics standard


6 November, 2016

The C3D web site is maintained by Motion Lab Systems as a resource for the biomechanics community.

All of the C3D information on this web site is in the public domain and may be copied and freely distributed with other products. The C3D User Manual documenting the C3D format and structure may be copied and supplied with any product that supports C3D.

Original XHTML 1.0 Strict and CSS2 template by Andreas Viklund

Search the C3D web site

C3D Files supported

The websites listed above all offer products that support C3D files. Please contact us if your product supports the C3D format to request that your website be added to this list.

An overview of the C3D File Design

C3D (Coordinate 3D) files are a subset of a more general (ADTech) file format designed by Andrew Dainis to hold data and their associated parameters within a single file. C3D files contrast with other formats typically used in biomechanical applications which have separate files for data and parameters, or where all parameters are included at the beginning of the file.

Design Goals

The ADTech file format was designed to provide a general and uniform file format for storing a variety of data and their parameters in an efficient manner. A primary goal was to provide the user with the ability to understand, examine, and if necessary modify the parameters.

The goals for the file format were as follows:

Binary vs. ASCII

Both types of files have advantages and disadvantages. ASCII files can readily include descriptions associated with parameters, and are readily manipulated by the use of common text editors. However they are very inefficient for storage and access, and very large files may present problems to some editors. Also, ASCII files must generally be accessed sequentially and are very inefficient if the files must be read non-sequentially.

Binary files are efficient in data storage and access and may also contain parameters and associated descriptions, but not in a form casually accessible to the user. Also, the file organization is specific to the type of data stored, i.e., the data and any parameters may only be accessed by specifically written programs which have a detailed knowledge of the file structure.

The ADTECH file format

To best meet all of the above requirements it was decided that the format should incorporate the following:

Hence the basic ADTech file format, of which the C3D format is an example, has the following specifications:

C3D files

In a C3D file the first record is used as a header record, the parameters typically start at record 2 (although that is not required), and the data section contains 3D point and analog channel data in a specified format.

With the exception of the first 4 bytes, the header record contains information largely duplicated in the parameter section. Its purpose is to provide simple access to certain parameters describing the data when it was not desired to do the more complex programming to read the full parameter section. It was recognized that the duplication of parameters may present some hazards to the programmer and user.

Each point coordinate and analog data word is stored as a 16-bit integer or 32-bit float. The 4th coordinate word for each point contains the camera usage bits, and a measurement residual value. The data are stored sequentially by frames, and within a frame they are stored sequentially by point number, followed by the analog channel data.

Additional comments

The ADTech file format can be used for storing other kinds of data, its advantage being that the parameter section may be read and manipulated by any program such as PRM that knows the parameter format. In the AMASS system several other files using the ADTech format were implemented, mainly for storing parameters.

Since the introduction of C3D files in 1986, the format has proved to be very versatile and has become a standard for the storage and exchange of raw 3D and analog data. Its flexibility and expandability has allowed C3D files to "evolve" by accommodating additional parameters and types of data.

Other parameter sections may be added to a file, with parameters in the "primary" parameter section indicating where in the file the new parameter sections may be found. This is also true for additional data sections or blocks. Hence a C3D file may have additional data and parameter sections while still retaining full backward compatibility. The only real requirement of a basic C3D file is that it have an appropriate "primary" parameter section which indicates where the coordinate/analog data start, and the coordinate/analog data be in a contiguous block.

In order to ensure backward compatibility, the basic parameter names and groups defined for the original C3D specification should always be included in the "primary" parameter section, even if they are duplicated under some other name.

From a presentation given by Dr. Andrew Danis at the 5th Annual Gait and Clinical Movement Analysis Meeting held at the Helen Hayes Hospital, West Haverstraw, NY in 1989.