The original C3D file format defined the POINT:LABELS parameter as a character data array that consisted of one unique four-character ASCII value for each 3D data point contained within the C3D file. By convention, the LABELS array values are usually four characters of upper-case ASCII text (A-Z, underscore, and 0-9) although longer labels and UTF-8 encoding are permitted. Each label (LASI, RASI, LTOE etc.) is referred to as the point label and is used to provide a unique reference each 3D point contained within the C3D file data section. This allows software applications to identify and process data based on the unique label identification e.g. RASI, LASI, and SACR defining the pelvis – Right ASIS marker, Left ASIS marker, and Sacrum marker.
The purpose of the LABELS parameter is to allow applications reading data from the C3D file to search for a specific 3D point or trajectory by referencing its LABELS value instead of looking for a specific trajectory number in a fixed list of trajectories. This allows applications to be written in a general manner so that they can process data by reference e.g., calculate the direction of progression from the 3D points identified as points LASI, RASI and SACR, defining the pelvis. An application written in this way will work in any environment, as it does not require that the 3D data is stored in any specific order within the C3D file.
Unless the C3D file contains several hundred valid points in each frame of data the POINT:LABELS strings should not normally exceed 16 characters, its function is to provide a unique point identification, not a description – when the C3D format was first created a typical POINT:LABELS parameter was only four characters long.
When interpreted as an unsigned value, the POINT:LABELS parameter can refer to a maximum of 255 3D data points in a C3D data file. Note that a C3D file may contain more or less than the number of trajectories described by this parameter. If the C3D file contains more trajectories (read the parameter POINT:USED to determine the actual number stored in the 3D/analog data section) than are described by POINT:LABELS parameters then the additional trajectories must be either referenced by number or can be defined by creating additional POINT parameters, for example POINT:LABELS2 and POINT:LABELS3, each supporting up to an additional 255 labels.
When multiple POINT:LABELS parameters are found in a file the total LABELS indexed is determined by the maximum number defined in each parameter – so a C3D file written with unsigned integers could store 200 labels in a single parameter while a C3D file written with signed integers might store 127 labels in the POINT:LABELS parameter and 73 labels in POINT:LABELS2.
Note that while the labels stored in POINT:LABELS are typically four upper case characters, many applications may create labels with more characters. When longer labels are used it is recommended that the first six characters of each label are unique. Individual labels must always be unique to identify each point in the file but there is no need to make them excessively descriptive as the POINT:DESCRIPTIONS parameter is provided for human intelligible descriptions. It is recommended that POINT:LABELS are always no more than 16 characters in length.
It is strongly recommended that the POINT:LABELS used are consistent within any set of data files collected for a specific analysis environment to ease subsequent data analysis and processing. This parameter is not normally locked and may be edited if necessary – editing any of the labels only changes the ASCII reference that identifies a specific trajectory and does not affect the C3D file structure.