ROTATION DATA TYPE: Difference between revisions

From Software Product Documentation
Jump to navigation Jump to search
Line 23: Line 23:
:RATE = Sampling Rate
:RATE = Sampling Rate
:RATIO = Ratio of ROTATION sample rate to POINT sample rate
:RATIO = Ratio of ROTATION sample rate to POINT sample rate
::The C3D file format is designed to store synchronized 3D Point data, analog data, and Rotation data; Rotation measurements are recorded at fixed intervals (set by the ROTATION:RATE parameter).
::For consistency with C3D file prior to the introduction of the ROTATION group, the POINT:RATE is considered the base rate of a C3D file. If the ROTATION rate is stored at a higher, integer multiple ratio of the POINT:RATE, the ANALOG:RATIO parameter defines this multiple. Storing the RATE and RATIO is redundant, but for historical reasons both are stored.
:FRAMES = Number of frames of data
:FRAMES = Number of frames of data
::Since the number of frames within each C3D file is stored in the C3D file parameter section as ROTATION:FRAMES, there is no need for an “end-of-data” marker - data is simply written from the first frame to the last frame. It is recommended that any unused storage in the final 512-byte block of the C3D file should be filled with 0x00h. While this might seem unnecessary in modern environments it will help debugging and fault-finding. Rotation samples can cross the 512- byte block boundaries within the C3D file.
::Since the number of frames within each C3D file is stored in the C3D file parameter section as ROTATION:FRAMES, there is no need for an “end-of-data” marker - data is simply written from the first frame to the last frame. It is recommended that any unused storage in the final 512-byte block of the C3D file should be filled with 0x00h. While this might seem unnecessary in modern environments it will help debugging and fault-finding. Rotation samples can cross the 512- byte block boundaries within the C3D file.
Line 32: Line 35:


:DESCRIPTIONS = Description of each ROTATION signal
:DESCRIPTIONS = Description of each ROTATION signal
::For each ROTATION:LABEL there is a ROTATION:DESCRIPTION that is simply an alternative, probably longer, explanation of the ROTATION:LABEL


=C3D_ROTATION_DATA=
=C3D_ROTATION_DATA=

Revision as of 14:43, 5 October 2020

C-Motion introduced the ROTATION data type in 2019 to handle the storage of a 4x4 Transformation matrix containing the 6 DOF information for a Sensor or Segment.

This was introduced to handle C-Motion DSX results and to handle Theia Markerless Results

Each signal contains a 4x4 Rotation matrix that transforms a signal from the local coordinates of the sensor/segment to the laboratory coordinates

[R4x4] [Vlocal4x1] = [Vlab4x1]

The signals are stored in column major format in the c3d file, but displayed and used in Visual3D in the command row major format of Visual3D.

ROTATION signals can be used to define LANDMARKS, define SEGMENTS, and to Track SEGMENTS.

C3D_ROTATION_PARAMETERS

The ROTATION GROUP

USED = Number of ROTATION signals
The parameter name USED represents the number of 3D points, the number of analog channels, and the number of rotation signals in a C3D file. The three unique parameters are assigned to their own groups and referred to as POINT:USED, ANALOG:USED, and ROTATION:USED to avoid confusion.
DATA_START = Block number for the start of the Data Block
The ROTATION:DATA_START parameter is an unsigned 16-bit integer that points to the location of the start of the Rotation data section within the C3D file, allowing the Rotation section to start anywhere within the first 32Mb (65535*512/1024) of the C3D file.
RATE = Sampling Rate
RATIO = Ratio of ROTATION sample rate to POINT sample rate
The C3D file format is designed to store synchronized 3D Point data, analog data, and Rotation data; Rotation measurements are recorded at fixed intervals (set by the ROTATION:RATE parameter).
For consistency with C3D file prior to the introduction of the ROTATION group, the POINT:RATE is considered the base rate of a C3D file. If the ROTATION rate is stored at a higher, integer multiple ratio of the POINT:RATE, the ANALOG:RATIO parameter defines this multiple. Storing the RATE and RATIO is redundant, but for historical reasons both are stored.
FRAMES = Number of frames of data
Since the number of frames within each C3D file is stored in the C3D file parameter section as ROTATION:FRAMES, there is no need for an “end-of-data” marker - data is simply written from the first frame to the last frame. It is recommended that any unused storage in the final 512-byte block of the C3D file should be filled with 0x00h. While this might seem unnecessary in modern environments it will help debugging and fault-finding. Rotation samples can cross the 512- byte block boundaries within the C3D file.
LABELS = Name of each ROTATION signal
The C3D file format requires that Rotation data values, defined by the ROTATION:USED parameter, will be written to the each frame within the Rotation data section in the order that they are listed in the ROTATION:LABELS parameter section. All applications that access the Rotation data must determine the storage order and identity of the Rotation signals by reading the order of the Rotation labels stored in the parameter section of each C3D file.
The existence of a single point of Rotation data in only one frame of a C3D file requires that storage space for this rotation signal be allocated in every single frame of the C3D file. This can result in large C3D files with a large amount of wasted space if unused, short trajectories are preserved unnecessarily.
DESCRIPTIONS = Description of each ROTATION signal
For each ROTATION:LABEL there is a ROTATION:DESCRIPTION that is simply an alternative, probably longer, explanation of the ROTATION:LABEL

C3D_ROTATION_DATA

Each signal is represented by 17 float values (there is no physical meaning for scaling integer data)
The Rotation signals are written as sequential frames starting in the 512-byte block in the C3D file specified by the POINT:DATA_START parameter. The data section simply consists of sequential frames of data samples.
16 entries for the 4x4 ROTATION matrix. stored as columns
1 entry for a reliability metric.
Rotation samples may only be stored in 32-bit floating-point format. This means that the sign of the POINT:SCALE parameter must be negative.
Retrieved from ""