Child pages
  • z_*OBSOLETE* Calculate Rigid Body Motion in Matlab

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.

Note that this step used to be called "Smart Smoothing" and was based on a different algorithm. Make sure that you have the most current XrayProject scripts MATLAB scripts and Maya MEL scripts for this step.

what you need:

  1. a CTmarkercoordinates.csv file 3 columns for each marker (xyz coordinates)
  2. an *xyzpts.csv file from digitized data

Note: The number of columns must be a perfect match between the two files.
if you have 10 markers - you must have 30 columns in both files.

what to do:

You may want to filter *xyzpts data prior to calculating rigid body motion (read Filtering Data for background information on filtering)

Filter Procedure

  1. type butterBatch at the matlab prompt (or press the filterXYZ button on the XrayProject Window)
  2. enter the cutoff frequency, recording frequency (i.e. frame rate), and filter type
    Note: it is important to enter your correct frame rate. The default is 250 frames per second. It is also important to select an appropriate cutoff frequency; generally 5 to 10 times greater than the frequency of the motion in your videos
  3. select 1 or more files to process
  4. Original and filtered data will be plotted for the first data file
  5. files are saved in the original directory with BUTTER## appended to the
    end of the original file name. The ## specifies the cutoff frequency

Calculate Rigid Body Motion Procedure



CRITICAL UPDATE: Use new XMALab software for marker-based XROMM, including Undistortion, Calibration, Marker Tracking, and Rigid Bodies.
XMALab replaces MATLAB XrayProject. See Bitbucket XMALab wiki for XMALab User Manual (not this wiki). 

Calculate Rigid Body Motion

  1. Type rigidBody into the MATLAB commandline.
  2. Select the .csv file with your calculated CT marker coordinates.
  3. Select your unfiltered (xyzpts.csv) or filtered (xyzptsButter##.csv) data file.
  4. Type the number of bones in the input box.
  5. select Select the markers associated with each bone (omit any markers with all NaNs)
  6. save the file output.

what you get:

A (yourfilename)TformsAbs.csv file with the absolute (relative to 0,0,0,) translations and rotations to drive your bones (in a Maya-friendly, framex16 matrix format)

  • To use this file in maya, you will
    • select the bones in the same order used above.
    • click the imp shelf tool or type impdata at the MEL command prompt
    • select the file saved in step 7


  1. , i.e. markers that were not digitized).
  2. Save the file output.
Other details:
  • rigidBody calls 2 additional scripts: svdrigid and mayaMatrixFormat
  • svdrigid takes marker data for a single bone and outputs rotations and translations
  • mayaMatrixFormat converts the framex3x3 rotation matrices and framex3 translations and converts them to a framex16 rotation matrix in a Maya-friendly format
  • you need a minimum of 3 markers per bone in order for the program to have enough information to calculate the rigid body motion.