|Language:||English • français • italiano • português • español|
The relationship between a static trial, movement trial and link model
Visual3D identifies models, static trials and motion trials in much the same way—using the name of the corresponding C3D data file—but it’s very important to understand the distinctions between these types of files.
A recording of your subject moving through a prescribed sequence is called a motion trial.
A recording made with the subject stationary.
Within this documentation or in talking with Support at C-Motion you will probably note that we use the terms standing trial, calibration trial, and static trial interchangeably. The most important feature, regardless of the use of the term, is that we are referring to the trial used to define the link model.
Average Location of Markers
When the model is created, the average location of all markers are determined using all frames of data.
Normally, the marker trajectories recorded in a static trial will exhibit almost no motion, because the subject is standing still, but this need not be the case. If necessary, you can use a file which does exhibit motion (even an actual motion trial data file), and identify a short sub-range of capture frames which Visual3D should interpret as a static trial.
Maximum Standard Deviation Warning
When constructing a model from the static trial, a The Maximum Standard Deviation of the marker locations may appear. The warning indicates that there was movement in the markers and you should do something about it. There should be no movement in the static trial.
- Sometimes the movement is real (e.g. the subject isn't stationary). In this case you should select the option to use fewer frames of data for the static pose.
- Sometimes the movement is artifact related to poor marker identification. This should be attended to and care should be taken to select an appropriate subset of frames.
- Sometimes the movement is related to ghost markers in the motion capture system, and since these ghost markers aren't used for defining the model, they can be ignored.
We highly recommend you determine the source of the movement and determine what is an appropriate choice of frames. Do not ignore the warning.
NOTE: If the subject moved during the standing trial, a subset of frames, in which the subject is stationary, can be selected for computing the average locations of the markers. The command Modify Frame Range For Static Calibration is located in the Model Menu items.
The link model is a collection of segments, landmarks, and muscles. The connection between the model and the movement trials is the homologous markers contained in the static C3D file. In order for Visual3D's algorithms to function properly all tracking markers must exist in both the static trial and the movement trial with the same names and with the same location on the subject.
It is imperative that the tracking markers be in exactly the same location in the static trial and the movement trial. If a marker is removed (or falls off), it is highly recommended that another static trial be collected.
Link Model Name
Visual3D uses the standing-trial C3D file’s name as a label to identify the model, which can be misleading. The model and the C3D file are not the same.
Static Trial When Subject is Moving
There are many situations in which it is convenient to use only part of a trial for building a model. Examples include subjects that can not stand still (e.g. babies), subjects that moved inadvertently during the static trial, or no static trial was collected (e.g. a movement trial is used instead).
The solution to this problem is to specify the range of frames that are used for the model. Under the model menu item you will find an option Modify Frame Range for Static Calibration
Select the range of frames the best reflect a standing trial. If this is a movement trial, you may only want to select one frame of data.
Multiple Static Trials
Visual3D's core structures were developed assuming that there was only one static trial per model. There are many circumstances in which multiple static trials are required. Visual3D does not handle this situation very well, but it is possible, and may be instructive anyways ;-)
For example, the cameras may be placed in such a way that all tracking markers are in view, but one or more markers used to define a segment is obscured.
One static trial has 3 markers that can be used to define a CODA pelvis, which automatically creates landmarks defining the location of the left and right hip relative to the pelvis segment.
The other static trial does not have the sacrum marker, so it isn't possible to compute the location of the hip joint center relative to a pelvis segment.
The following steps will create a landmark for the hip joint center relative to 3 of the thigh markers from one static trial, so that is can be used in the other static trial.
Create a hybrid model from the first static trial and create a Coda Pelvis segment
Select the appropriate markers
Hip joint landmarks will be created automatically according to the regression equations
Bell AL, Pederson DR, and Brand RA (1989) Prediction of hip joint center location from external landmarks. Human Movement Science. 8:3-16:
These landmarks are created relative to the pelvis segment, which won't be of any use in the other static trial, so we create a new landmark for the right hip relative to three of the thigh markers.
select the Apply button to update the offsets
Note that the edit boxes will be grayed out because they are linked with the RIGHT_HIP landmark
Now select the button to use the offsets, which will remove the dependence on the RIGHT_HIP landmark
This RT_HIP landmark is now independent of the Pelvis segment.
Save the model template, create a model for the second static trial, and apply this model template. An error message will appear because it isn't possible to build the pelvis segment, but the RT_HIP landmark will be created.
Now you can remove the Pelvis segment and its associated landmarks RIGHT_HIP and LEFT_HIP.
Multiple Static trials using a Pipeline
This process can also be accomplished using a pipeline, which is actually a little cleaner because it can be incorporated into an existing pipeline. Note: the HYBRID_SEGMENT command isn't available in the pipeline workshop interface but the syntax is available in the Model Templates.
! Clear workspace File_New ; ! For convenvience, prompt the user for the Folder containing the data Set_Pipeline_Parameter_To_Folder_Path /PARAMETER_NAME=FOLDER /PARAMETER_VALUE= ! /PARAMETER_VALUE_SEARCH_FOR= ! /PARAMETER_VALUE_REPLACE_WITH= ! /PARAMETER_VALUE_APPEND= ; ! Create a pipeline parameter for each of the static trials ! Pipeline Parameter for Static 1 Set_Pipeline_Parameter /PARAMETER_NAME=STATIC1 /PARAMETER_VALUE=::FOLDER&static1.c3d ! /PARAMETER_VALUE_SEARCH_FOR= ! /PARAMETER_VALUE_REPLACE_WITH= ! /PARAMETER_VALUE_PREFIX= ! /PARAMETER_VALUE_APPEND= ; ! Pipeline Parameter for Static 2 Set_Pipeline_Parameter /PARAMETER_NAME=STATIC2 /PARAMETER_VALUE=::FOLDER&static2.c3d ! /PARAMETER_VALUE_SEARCH_FOR= ! /PARAMETER_VALUE_REPLACE_WITH= ! /PARAMETER_VALUE_PREFIX= ! /PARAMETER_VALUE_APPEND= ; ! Prompt the user for the height and weight of the subject Prompt_For_Multiple_Pipeline_Parameter_Values /GLOBAL_PARAMETER_NAME=WEIGHT+HEIGHT /DATATYPE=float+float /DEFAULT_VALUE=1+1 ; ! Create the model from the first static trial and assign the height and weight Create_Hybrid_Model /CALIBRATION_FILE=::STATIC1 ! /RANGE=ALL_FRAMES ; Set_Subject_Weight ! /CALIBRATION_FILE= /WEIGHT=::WEIGHT ; Set_Subject_Height ! /CALIBRATION_FILE= /HEIGHT=::HEIGHT ; ! Create a Coda Pelvis Segment ! Note that this command isn't available in the pipeline interface ! The syntax is available in the model template HYBRID_SEGMENT ! /CALIBRATION_FILE= /TYPE=Coda /NAME=RPV /REFERENCE_OBJECT=R.ASIS+L.ASIS+R.PSIS+L.PSIS /REFERENCE_OBJECT_NAMES=R.ASIS+L.ASIS+SACRUM+SACRUM /REFERENCE_OBJECT_TYPES=TARGET+TARGET+TARGET+TARGET ! /USE_CAL_TARGETS_FOR_TRACKING=TRUE /TRACKING_TYPES=TARGET+TARGET+TARGET+TARGET /TRACKING_NAMES=R.ASIS+L.ASIS+SACRUM+SACRUM ! /USE_OPTIMAL_TRACKING=TRUE ! /KINEMATIC_ONLY=FALSE ! /STATIC_MODEL=FALSE /GRAPHICS_ROT_X=0 /GRAPHICS_ROT_Y=0 /GRAPHICS_ROT_Z=0 /GRAPHICS_SCALE_X=1 /GRAPHICS_SCALE_Y=1 /GRAPHICS_SCALE_Z=1 /GRAPHICS_TRANSLATE_X=0 /GRAPHICS_TRANSLATE_Y=0 /GRAPHICS_TRANSLATE_Z=0 ! /GRAPHICS_UNIT_SCALE=1.000000 ! /MASS= ! /GEOMETRY= ! /PROX_TO_CG_AXIAL= ! /PROX_TO_CG_ML= ! /PROX_TO_CG_AP= ! /IXX= ! /IYY= ! /IZZ= ! /AP_DIRECTION= ! /AXIAL_DIRECTION= /OBJFILE=PelvisWrtAsis.v3g ! /COLFILE= /DEPTH=0.100538 ; ! It is necessary to build the model, so that the RIGHT_HIP and LEFT_HIP landmarks will be created Build_Model ! /CALIBRATION_FILE= ! /REBUILD_ALL_MODELS=FALSE ; ! Create the RT_HIP landmark relative to the thigh markers Add_Landmark /LANDMARK_NAME=RT_HIP ! /CALIBRATION_FILE= ! /USER_GENERATED=TRUE ! /USE_PERCENTAGE=FALSE ! /CALIBRATION_ONLY=FALSE /USE_TARGETS=TRUE ! /SEGMENT_NAME= /TARGET_TYPES=TARGET+TARGET+TARGET /TARGET_NAMES=RTH1+RTH4+RTH2 /MCSX=-0.0828394 /MCSY=-0.135784 /MCSZ=-0.235367 ! /LANDMARK_LOCATION= /REFERENCE_LOCATION_NAME=RIGHT_HIP /REFERENCE_LOCATION_TYPE=LANDMARK /USE_REFERENCE_LOCATION=TRUE ; ! Build the model Build_Model ! /CALIBRATION_FILE= ! /REBUILD_ALL_MODELS=FALSE ; ! Create the second model using second static trial and assign the weight and height Create_Hybrid_Model /CALIBRATION_FILE=::STATIC2 ! /RANGE=ALL_FRAMES ; Set_Subject_Weight ! /CALIBRATION_FILE= /WEIGHT=::WEIGHT ; Set_Subject_Height ! /CALIBRATION_FILE= /HEIGHT=::HEIGHT ; ! Add the RT_HIP landmark ! Note the use of the previous parameters for MCSX, MCSY, and MCSZ ! These are available because the pipeline remembers their values from the last time they were used Add_Landmark /LANDMARK_NAME=RT_HIP ! /CALIBRATION_FILE= ! /USER_GENERATED=TRUE ! /USE_PERCENTAGE=FALSE ! /CALIBRATION_ONLY=FALSE /USE_TARGETS=TRUE ! /SEGMENT_NAME= /TARGET_TYPES=TARGET+TARGET+TARGET /TARGET_NAMES=RTH1+RTH4+RTH2 /MCSX=::MCSX /MCSY=::MCSY /MCSZ=::MCSZ ! /LANDMARK_LOCATION= /REFERENCE_LOCATION_NAME= /REFERENCE_LOCATION_TYPE= /USE_REFERENCE_LOCATION=FALSE ; ! Build Model Build_Model ! /CALIBRATION_FILE= ! /REBUILD_ALL_MODELS=FALSE ;