LogoLogo
WebsiteSupportDownloadsForumsQuick LinksContact Us
v2.3
v2.3
  • OptiTrack Support Documentation
  • WHAT'S NEW
    • Unreal Engine: OptiTrack InCamera VFX
  • QUICK START GUIDES
    • Quick Start Guide: Getting Started
    • Quick Start Guide: Precision Capture
    • Quick Start Guide: Tutorial Videos
    • Quick Start Guide: Prime Color Setup
    • Quick Start Guide: Active Marker Tracking
    • Quick Start Guide: Outdoor Tracking Setup
  • HARDWARE
    • Cameras
      • Ethernet Cameras
        • PrimeX 41
        • PrimeX 22
        • PrimeX 13
        • PrimeX 13W
        • SlimX 13
        • Prime Color
      • USB Cameras
        • Slim 3U
        • Flex 13
        • Flex 3
        • V120:Duo
        • V120:Trio
        • V120:Duo and Trio Setup
        • Adjusting Global Origin for Tracking Bars
    • Prepare Setup Area
    • Camera Mount Structures
    • Camera Placement
    • Camera Network Setup
    • Aiming and Focusing
    • Camera Status Indicators
  • MOTIVE
    • Installation and Activation
    • Motive Basics
    • Calibration
      • Continuous Calibration
      • Calibration Squares
    • Markers
    • Assets
      • Gizmo Tool: Translate, Rotate, and Scale
    • Rigid Body Tracking
      • Aligning Rigid Body Pivot Point with a Replicated 3D Model
    • Skeleton Tracking
    • Data Recording
      • Data Types
    • Labeling
    • Data Editing
    • Data Export
      • Data Export: BVH
      • Data Export: C3D
      • Data Export: CSV
      • Data Export: FBX
      • Data Export: TRC
    • Data Streaming
    • Camera Video Types
    • Audio Recording
    • Motive HotKeys
    • Measurement Probe Kit Guide
    • Motive Batch Processor
    • Reconstruction and 2D Mode
    • Tracking Bar Coordinate System
      • Transforming Coordinate System: Global to Local
  • MOTIVE UI PANES
    • Application Settings
      • Settings: Live Reconstruction
      • Settings: General
      • Settings: Views
      • Settings: Assets
        • Skeletons
        • Rigid Body
      • Settings: Camera
    • Mouse and Keyboard
    • Assets Pane
    • Builder Pane
    • Calibration Pane
    • Control Deck
    • Data Pane
    • Data Streaming Pane
    • Devices Pane
    • Edit Tools Pane
    • Graph View Pane
    • Info Pane
    • Labels Pane
    • Log Pane
    • Marker Sets Pane
      • Marker Name XML Files
    • Measurement Pane
    • Probe Pane
    • Properties Pane
      • Properties Pane: Camera
      • Properties Pane: Force Plates
      • Properties Pane: NI-DAQ
      • Properties Pane: OptiHub2
      • Properties Pane: Rigid Body
      • Properties Pane: Skeleton
      • Properties Pane: Take
      • Properties Pane: eSync2
    • Reference View pane
    • Status Panel
    • Toolbar/Command Bar
    • Viewport
  • PLUGINS
    • OptiTrack Unreal Engine Plugin
      • Unreal Engine: OptiTrack Live Link Plugin
      • Unreal Engine: OptiTrack Streaming Client Plugin
      • Unreal Engine: HMD Setup
      • Unreal Engine: MotionBuilder Workflow
      • Unreal Engine VCS Inputs
    • OptiTrack Unity Plugin
      • Unity: HMD Setup
    • OptiTrack OpenVR Driver
    • Autodesk Maya
      • Autodesk Maya: OptiTrack Insight VCS Plugin
    • Autodesk MotionBuilder
      • Autodesk MotionBuilder Plugin
      • Autodesk MotionBuilder: OptiTrack Skeleton Plugin
      • Autodesk MotionBuilder: OptiTrack Optical Plugin
      • Autodesk MotionBuilder: OptiTrack Insight VCS Plugin
      • Autodesk MotionBuilder: Timecode Data
    • OptiTrack Peripheral API
    • External Plugins
      • Houdini 19 Integration
  • ACTIVE COMPONENTS
    • Active Components Hardware
      • Active Puck
      • CinePuck
      • BaseStation
      • Information for Assembling the Active Tags
      • Manus Glove Setup
    • Configuration
      • Active Batch Programmer
      • Active Hardware Configuration: PuTTY
      • Active Component Firmware Compatibility
    • Active Marker Tracking
      • Active Finger Marker Set
      • Active Marker Tracking: IMU Setup
  • SYNCHRONIZATION
    • Synchronization Hardware
      • External Device Sync Guide: eSync 2
      • External Device Sync Guide: OptiHub2
    • Synchronization Setup
    • OptiTrack Timecode
  • VIRTUAL PRODUCTION
    • Unreal Engine: OptiTrack InCamera VFX
    • Entertainment Marker Sets
    • PrimeX 41
  • MOVEMENT SCIENCES
    • Movement Sciences Hardware
      • General Motive Force Plate Setup
      • AMTI Force Plate Setup
      • Bertec Force Plate Setup
      • Kistler Force Plate Setup
      • Delsys EMG Setup
      • NI-DAQ Setup
      • Multiple Device Setup
      • Prime Color Setup
    • Movement Sciences Marker Sets
      • Biomechanics Marker Sets
      • Biomech (57)
      • Rizzoli Marker Sets
    • For Visual3D Users
  • VIRTUAL REALITY
    • VR Plugins
      • VR Unreal Engine
        • OptiTrack Unreal Engine Plugin
        • Unreal Engine: OptiTrack Live Link Plugin
        • Unreal Engine: OptiTrack Streaming Client Plugin
        • Unreal Engine VCS Inputs
      • VR Unity
        • OptiTrack Unity Plugin
      • VR OpenVR
        • OptiTrack OpenVR Driver
    • VR HMD Setup
      • Unreal Engine: HMD Setup
      • Unity: HMD Setup
      • Manually Calibrating the HMD Pivot Point
      • Sync Configuration with an HTC Vive System
    • Navigation Controller Guide
    • SlimX 13
    • Active Marker Tracking
      • Active Finger Marker Set
      • Active Marker Tracking: IMU Setup
    • Synchronization Hardware
      • External Device Sync Guide: eSync 2
      • External Device Sync Guide: OptiHub2
  • ANIMATION
    • Autodesk Maya
      • Autodesk Maya: OptiTrack Insight VCS Plugin
    • Autodesk MotionBuilder
      • Autodesk MotionBuilder Plugin
      • Autodesk MotionBuilder: OptiTrack Skeleton Plugin
      • Autodesk MotionBuilder: OptiTrack Optical Plugin
      • Autodesk MotionBuilder: OptiTrack Insight VCS Plugin
      • Autodesk MotionBuilder: Timecode Data
  • ROBOTICS
    • PrimeX 22
    • Outdoor Tracking Setup
  • DEVELOPER TOOLS
    • Developer Tools Overview
    • NatNet SDK
      • NatNet 4.0
      • NatNet: Class/Function Reference
      • NatNet: Creating a Managed (C sharp) Client Application
      • NatNet: Creating a Native (C++) Client Application
      • NatNet: Data Types
      • NatNet: Matlab Wrapper
      • NatNet: Migration to NatNet 3.0 libraries
      • NatNet: RebroadcastMotiveData Sample
      • NatNet: Remote Requests/Commands
      • NatNet: Sample Projects
      • NatNet: Unicast Data Subscription Commands
      • Latency Measurements
    • Motive API
      • Motive API: Quick Start Guide
      • Motive API Overview
      • Motive API: Function Reference
      • Motive API Camera Calibration
    • Camera SDK
      • Camera SDK Classes
        • Class: cCameraGroupFilterSettings
        • Class: cCameraGroupMarkerSizeSettings
        • Class: cCameraGroupPointCloudSettings
        • Class: cCameraModule
        • Class: cRigidBodySettings
        • Class: cRigidBodySolutionTest
        • Class: cTTAPIListener
        • Class: cUID
  • MARKER SETS
    • Full Body
      • Baseline (37)
      • Baseline + Hinged Toe (41)
      • Baseline + Hinged Toe, with Headband (41)
      • Baseline + 13 Additional Markers (50)
      • Biomech (57)
      • Conventional (39)
    • Full Body + Fingers
      • Baseline + Hinged Toe + Fingers (49)
      • Baseline + 11 Additional Markers + Fingers (54)
      • Manus Glove Setup
    • Upper
      • Baseline Upper (25)
      • Baseline Upper Body + Fingers (33)
      • Conventional Upper (27)
    • Lower
      • Baseline Lower (20)
      • Helen Hayes Lower (19)
      • Conventional Lower (16)
    • Hand and Fingers
      • Left and Right Hand (11)
      • Active Finger Marker Set
    • Rizzoli Marker Sets
    • Entertainment Marker Sets
    • Rigid Body Skeleton Marker Set
  • GENERAL TROUBLESHOOTING
    • Troubleshooting
    • Running Motive on High DPI Displays
    • Firewall Settings
Powered by GitBook
On this page
  • Declaration: RigidBodySetting.h
  • Rigid Body Properties
  • Declaration: RigidBodySetting.h
  • Rigid Body Properties
  • General
  • Visuals
  • IMU
  • Smoothing and Damping

Was this helpful?

Export as PDF
  1. DEVELOPER TOOLS
  2. Camera SDK
  3. Camera SDK Classes

Class: cRigidBodySettings

PreviousClass: cCameraModuleNextClass: cRigidBodySolutionTest

Last updated 2 years ago

Was this helpful?

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.

RigidBodySolver::cRigidBodySettings

In the Motive API, you can use...

  • function to obtain and save configured Rigid Body settings in to a cRigidBodySettings instance.

  • 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 page.

Declaration: RigidBodySetting.h

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

    class cRigidBodySettings
    {
    public:
        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,
            Algorithm_MarkerBased,
            Algorithm_RayBased,
            Algorithm_RayBasedPlus,
            Algorithm_RayBasedUltimate,
            Algorithm_Unspecified
        };

        eTrackingAlgorithms TrackingAlgorithmLevel;
    };
}

Rigid Body Properties

cRigidBodySettings class contains all of setting variables for configuring Rigid Body asset properties.

RigidBodySolver::cRigidBodySettings

In the Motive API, you can use...

  • Refer to the below source code for Rigid Body properties available in the cRigidBodySettings class.

Declaration: RigidBodySetting.h

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

    class cRigidBodySettings
    {
    public:
        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,
            Algorithm_MarkerBased,
            Algorithm_RayBased,
            Algorithm_RayBasedPlus,
            Algorithm_RayBasedUltimate,
            Algorithm_Unspecified
        };

        eTrackingAlgorithms TrackingAlgorithmLevel;
    };
}

Rigid Body Properties

General

Name

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

Enable

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.

Minimum Markers to Boot

The minimum number of markers that must be tracked and labeled in order for a Rigid Body asset, or each Skeleton bone, to be booted or first tracked.

Minimum Markers to Continue

The minimum number of markers that must be tracked and labeled in order for a Rigid Body asset, or each Skeleton bone, to continue to be tracked after the initial boot.

Rotation Order

_[Advanced]_The order of the Euler axis used for calculating the orientation of the Rigid Body and Skeleton bones. Motive computes orientations in Quaternion and converts them into an Euler representation as needed. For exporting specific Euler angles, it's recommended to configure it from the Exporter settings, or for streaming, convert Quaternion into Euler angles on the client-side.

Visuals

Label

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.

Visual

Show the corresponding Rigid Body in the 3D viewport when it is tracked by the camera system.

Color

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.

Bones

For Rigid Bodies, this property shows, or hides, visuals of the Rigid Body pivot point.

Bone Orientation

[Advanced] 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.

Bone Position History

Shows a history of the Rigid Body’s position. When enabled, you can set the history length and the tracking history will be drawn in the Perspective view.

Asset Model Markers

Shows the Asset Model Markers as transparent spheres on the Rigid Body. Asset mode markers are the expected marker locations according to the Rigid Body solve.

Asset Model Lines

Draws lines between labeled Rigid Body or Skeleton markers and corresponding expected marker locations. This helps to visualize the offset distance between actual marker locations and the asset model markers.

Untracked Markers

[Advanced] 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.

Replace Geometry

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

Attached Geometry setting will be visible if the Replace Geometry setting is enabled. Here, you can load an OBJ file to replace the Rigid Body. Scale, positions, and orientations of the attached geometry can be configured under the following section also. When a OBJ file is loaded, properties configured in the corresponding MTL files alongside the OBJ file will be loaded as well.

Attached Geometry Settings

When the Attached Geometry is enabled, you can attach a 3D model to a Rigid Body and the following setting will be available also.

  • Pivot Scale: Adjusts the size of the Rigid Body pivot point.

  • Scale: 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.

  • X: Translate the position of attached object in x-axis in respect to the Rigid Body coordinate.

  • Y: Translate the position of attached object in y-axis in respect to the Rigid Body coordinate.

  • Z: Translate the position of attached object in z-axis in respect to the Rigid Body coordinate.

  • Opacity: 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.

IMU

IMU feature is not fully supported in Motive 3.x. Please use Motive 2.3 for using IMU active components.

Uplink ID

Uplink ID assigned to the Tag or Puck using the Active Batch Programmer. This ID must match with the Uplink ID assigned to the Active Tag or Puck that was used to create the Rigid Body.

RF Channel

Radio frequency communication channel configured on the Active Tag, or Puck, that was used to define the corresponding Rigid Body. This must match the RF channel configured on the active component; otherwise, IMU data will not be received.

Smoothing and Damping

Smoothing

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).

Forward Prediction

Compensate for system latency when tracking of the corresponding Rigid Body by predicting its movement into the future. Please note that predicting further into the future may impact the tracking stability.

Damping

[Advanced] When needed, you can damp down translational and/or rotational tracking of a Rigid Body or a Skeleton bone on selected axis.

Most of the settings in the cRigidBodySettings class is described in the page.

function to obtain and save configured Rigid Body settings in to a cRigidBodySettings instance.

function to assign a cRigidBodySettings instance to a Rigid Body asset in order to apply the settings.

For more information on each settings read through the page.

Most of the settings in the cRigidBodySettings class is described in the page.

IMU Active Tags/Pucks: IMU settings are applicable only to Active Tags and Pucks that are equipped with IMU sensors. This feature is not fully supported in Motive 3.x; please use Motive 2.3 version. Please refer to the page for more details on how to set up the IMU active components

Properties: Rigid Body
Properties: Rigid Body
Properties: Rigid Body
Motive 2.3 wiki
Properties: Rigid Body
Rigid body properties listed under the Properties pane.
Rigid body asset display properties.
Choosing color for a Rigid Body.
Position history setting enabled on a Rigid Body.
A OBJ file of a basketball attached to a Rigid Body.
TT_RigidBodySettings
TT_SetRigidBodySettings
TT_RigidBodySettings
TT_SetRigidBodySettings