This wiki is intended for older versions of Motive. For the latest documentation, please refer to

Class: cRigidBodySettings


There is a known issue where default constructor for Rigidbody setting is not set. We will be addressing this issue in the next release. Until then, please create a rigid body in Motive and use the existing definitions.

cRigidBodySettings class contains all of setting variables for configuring rigid body asset properties.


In the Motive API, you can use...

  • TT_RigidBodySettings function to obtain and save configured rigid body settings in to a cRigidBodySettings instance.
  • TT_SetRigidBodySettings function to assign a cRigidBodySettings instance to a rigid body asset in order to apply the settings.
  • Refer to the below source code for rigid body properties available in the cRigidBodySettings class.
  • For more information on each settings read through the Rigid Body Properties page.

Declaration: RigidBodySetting.h

namespace RigidBodySolver
    const int kRigidBodyNameMaxLen = 32;
    const int kRigidBodyModelNameMaxLen = 256;

    class cRigidBodySettings

        void  Save( Core::cIWriter *serial ) const;
        void  Load( Core::cIReader *serial );

        wchar_t  mName     [kRigidBodyNameMaxLen];
        wchar_t  mModelName[kRigidBodyModelNameMaxLen];

        int   UserData;
        float ColorR;
        float ColorG;
        float ColorB;

        float MaxFrameRotation;             //== deprecated
        float MaxFrameTranslation;          //== deprecated

        bool  DynamicRotationConstraint;    //== deprecated
        bool  DynamicTranslationConstraint; //== deprecated
        int   DynamicConstraintFrames;

        double Smoothing;                   // in the range [0,1]
        double PredictionTime;              // the amount of time to predict the solution forward, in fractional frames

        bool   Visible;
        bool   DisplayUntracked;
        bool   DisplayPivot;
        bool   DisplayUntrackedMarkers;
        bool   DisplayMarkerQuality;
        bool   DisplayQuality;
        bool   DisplayTracked;
        bool   DisplayLabel;
        bool   DisplayOrientation;
        bool   DisplayModelReplace;

        float  ModelYaw;
        float  ModelPitch;
        float  ModelRoll;
        float  ModelX;
        float  ModelY;
        float  ModelZ;
        float  ModelScale;

        bool   DisplayPositionHistory;
        bool   DisplayOrientationHistory;
        int    DisplayHistoryLength;
        int    DisplayOrientationSpread;
        int    DisplayOrientationSize;

        //== Static constraint ==--

        bool    StaticOrientationConstraint;
        double  StaticConstraintX;
        double  StaticConstraintY;
        double  StaticConstraintZ;
        double  StaticConstraintAngle;

        // Solver settings
        bool    Enabled;
        float   MaxMarkerDeflection;
        int     MinimumMarkerCount;
        int     MinimumHitCount;         //== deprecated
        float   Flexibility;
        bool    ShareMarkers;
        bool    Unique;
        double  MaxCalculationTime;
        int     AcquisitionFrames;

        bool    LocalizeSearch;

        enum eTrackingAlgorithms
            Algorithm_Auto = 0,

        eTrackingAlgorithms TrackingAlgorithmLevel;

Rigid Body Properties

Most of the settings in the cRigidBodySettings class is described in the Rigid Body Properties page.

General Settings

Rigid body properties listed under the Properties pane


Allows a custom name to be assigned to the rigid body. Default is "Rigid Body X" where x is the Rigid Body ID.


Enables/Disables tracking of the selected rigid body. Disabled rigid bodies will not be tracked, and its data will not be included in the exported or streamed tracking data.

Streaming ID

User definable ID for the selected rigid body. When working with capture data in the external pipeline, this value can be used to address specific rigid bodies in the scene.

Min Marker Count

The minimum number of rigid body markers that must be tracked in order for the respective asset to be identified.

Max Deflection

The maximum distance, in millimeters, that a marker may deviate from its expected position before it is not considered as a part of the rigid body. Lower deflection settings force the solver to be more strict with marker positions, creating a more accurate solve but with a higher risk of gaps in the data. Higher deflection settings can allow for more continuous data, but with the potential for less accuracy in the rigid body tracking.


Applies double exponential smoothing to translation and rotation of the rigid body. Increasing this setting may help smooth out noise in the rigid body tracking, but excessive smoothing can introduce latency. Default is 0 (disabled) and maximum smoothing is applied at 100. The effect of smoothing is largely qualitative and non-linear, and also, specific details of the algorithm are proprietary and cannot be shared. For applications that are sensitive to the accuracy of the data, applying the smoothing is not recommended.

Forward Prediction

Compensate for system latency when tracking of the corresponding rigid body by predicting its movement into the future. This setting is in milliseconds. This could be helpful for tracking fast objects, but please note that predicting further into the future may impact the tracking stability. When used, you may want to apply some smoothing also.

Tracking Algorithm

Tracking Algorithm determines the way rigid bodies are tracked.
  • Auto-Select: Depending on the system camera count, Motive determines whether to use the marker-based tracking or the the ray-based tracking. For systems with fewer than 5 cameras, or the Duo/Trio Tracking Bars, ray based tracking is used. For systems with higher camera counts, marker based tracking is used.
  • Marker Based: Standard marker based tracking. It uses 3D coordinates obtained by the Point Cloud reconstruction to solve position and orientation of the rigid body.
  • Ray Based: In addition to the standard marker tracking, ray based tracking also utilizes untracked rays and rigid body definitions to solve for the position and orientation of the rigid body. In other words, when a marker is occluded because it did not satisfy the minimum required number of the tracked rays, this tracking algorithm can utilize the remaining untracked rays and the corresponding rigid body asset definition to provide more stable tracking of the rigid body. In order to utilize the Ray Based tracking, the Use Smart Markers setting must be enabled under reconstruction settings. Ray-based tracking is NOT supported for active markers

Enhance Performance

Localizes rigid body searching algorithm. It is recommended to enable this setting for each rigid body when tracking a high number of objects.

Share Markers

[Advanced] Allow markers of this rigid body to be used by other rigid bodies.


[Advanced] Indicates that this rigid body marker arrangement is not identical to another defined rigid body. When the tracked rigid body has a unique marker placement, setting this to true can improve tracking stability.

Jump Prevention

[Advanced] When enabled, this setting prevents sudden displacements, or jumps, in the position of the rigid body. This is enabled by default to allow stable tracking. For tracking fast movements (e.g. baseball bat swing), this needs to be disabled.

Calculation Time

[Advanced] Maximum amount of time to solve the rigid body per frame (ms).

Acquisition Delay

[Advanced] While rigid body is untracked, only search the Point Cloud every Nth frame.

Static Constraints

Orientation constraints configuration.

This feature is used to limit rotation of rigid body assets.

To use this, first create the rigid body while the object is in the desired orientation. Then set the Angle value for positive and negative rotation boundaries. After the angle value is defined, change the X/Y/Z values to 1 in order to apply the orientation constraints to only allow the axis to be oriented within the cone shaped boundaries.

For example, if a 30 degree constraint is applied to Y-axis of the rigid body, rotations only up to +/- 30 degrees about the X and Z axes of the rigid body will be allowed, creating a cone-shaped allowed range of rotation with respect to the Y-axis. When the rigid body rotates beyond this boundary, the markers will be unlabeled.

Example: +/-30 degrees of rotation constraint applied about Y-axis


Enable static constraints.


X component of unit vector cone of allowable orientations. No restrictions when set to 0.


Y component of unit vector cone of allowable orientations. No restrictions when set to 0.


Z component of unit vector cone of allowable orientations. No restrictions when set to 0.


Maximum allowable angular deflection +/- of the unit cone vector (degrees).

Display Settings

Rigid body asset display properties.
Choosing color for a rigid body.


Color of the selected rigid body in the 3D Perspective View. Clicking on the box will bring up the color picker for selecting the color.


Selects whether or not to display the rigid body name in the 3D Perspective View. If selected, a small label in the same color as the rigid body will appear over the centroid in the 3D Perspective View.


Selects whether or not to show the rigid body in the 3D Perspective View when it is tracked.


Selects whether or not to show the last known position of a rigid body in the 3D Perspective View after tracking has been lost. If enabled, the rigid body will appear somewhat remain frozen in the last known position before tracking was lost, until tracking is regained.


Selects whether the pivot point of the rigid body is displayed.

Untracked Markers

When enabled, all markers that are part of the rigid body definition will be dimmed, but still visible, when not present in the point cloud.


Enabling will turn the connecting lines between markers in a rigid body red as the distance between the markers deviates from what was defined during the rigid body creation.

Marker Quality

Enables ranking of markers and highlights those with higher residuals in red. This setting can be useful in determining marker detection quality and troubleshooting issues based on detection.


Enables the display of a rigid body's local coordinate axes. This option can be useful in visualizing the orientation of the rigid body, and for setting orientation offsets.

Position History

Shows a history of the rigid body’s position.

Orientation History

Shows a history of the rigid body’s orientation.

Model Replace

When a valid geometric model is loaded in the Attached Geometry section, the model will be displayed instead of a rigid body when this entry is set to true.

Attached Geometry

Loads the OBJ file to replace the rigid body. Scale, positions, and orientations of the attached geometry can be configured under the following Default Attached Geometry section. When a OBJ file is loaded, properties configured in the corresponding MTL files is loaded as well.

Attached Geometry

A OBJ file of a basketball attached to a rigid body.

Pivot Scale

Adjusts the size of the rigid body pivot point.


Rescales the size of attached object.

Yaw (Y)

Rotates the attached object in respect to the Y-axis of the rigid body coordinate axis.

Pitch (X)

Rotates the attached object in respect to the X-axis of the rigid body coordinate axis.

Roll (Z)

Rotates the attached object in respect to the Z-axis of the rigid body coordinate axis.


Translate the position of attached object in x-axis in respect to the rigid body coordinate.


Translate the position of attached object in y-axis in respect to the rigid body coordinate.


Translate the position of attached object in z-axis in respect to the rigid body coordinate.


Sets the opacity of an attached object. An OBJ file typically comes with a corresponding MTL file which defines its properties, and the transparency of the object is defined within these MTL files. The Opacity value under the rigid body properties applies a factor between 0 ~ 1 in order to rescale the loaded property. In other words, you can set the transparency in the MTL file and rescale them using the Opacity property in Motive.

History Settings

Default history settings.
Rigid body position and orientation tracking history

For visualizing tracking history, Position History and Orientation History must be enabled under the Display Settings section.

History Length

Sets the number of frames for visualizing position and orientation history. Valid range is 1 to 1000. Default is 500.

Orientation Spread

Sets the spacing, in frames, between orientation history markers in the 3D Perspective View. Increasing this value will cause the markers to appear less frequently, which can improve visualization if the object is rotating at a slower pace. Valid range is 1 to 100. Default is 5.

Orientation Size

Sets the size of the orientation history icon in the 3D Perspective View. Valid range is 1 to 100. Default is 1.