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...
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; }; }
Most of the settings in the cRigidBodySettings class is described in the Rigid Body Properties page.
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.
For visualizing tracking history, Position History and Orientation History must be enabled under the Display Settings section.