6 Degree Of Freedom Constraint setup structure. Allows control over each of the 6 degrees of freedom.
More...
#include <SixDOFConstraint.h>
|
EConstraintSpace | mSpace = EConstraintSpace::WorldSpace |
| This determines in which space the constraint is setup, all properties below should be in the specified space.
|
|
RVec3 | mPosition1 = RVec3::sZero() |
| Body 1 constraint reference frame (space determined by mSpace)
|
|
Vec3 | mAxisX1 = Vec3::sAxisX() |
|
Vec3 | mAxisY1 = Vec3::sAxisY() |
|
RVec3 | mPosition2 = RVec3::sZero() |
| Body 2 constraint reference frame (space determined by mSpace)
|
|
Vec3 | mAxisX2 = Vec3::sAxisX() |
|
Vec3 | mAxisY2 = Vec3::sAxisY() |
|
float | mMaxFriction [EAxis::Num] = { 0, 0, 0, 0, 0, 0 } |
|
ESwingType | mSwingType = ESwingType::Cone |
| The type of swing constraint that we want to use.
|
|
float | mLimitMin [EAxis::Num] = { -FLT_MAX, -FLT_MAX, -FLT_MAX, -FLT_MAX, -FLT_MAX, -FLT_MAX } |
|
float | mLimitMax [EAxis::Num] = { FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX } |
|
SpringSettings | mLimitsSpringSettings [EAxis::NumTranslation] |
|
MotorSettings | mMotorSettings [EAxis::Num] |
| Motor settings for each axis.
|
|
bool | mEnabled = true |
| If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
|
|
uint32 | mConstraintPriority = 0 |
|
uint | mNumVelocityStepsOverride = 0 |
| Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
|
|
uint | mNumPositionStepsOverride = 0 |
| Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
|
|
float | mDrawConstraintSize = 1.0f |
| Size of constraint when drawing it through the debug renderer.
|
|
uint64 | mUserData = 0 |
| User data value (can be used by application)
|
|
|
virtual void | RestoreBinaryState (StreamIn &inStream) override |
| This function should not be called directly, it is used by sRestoreFromBinaryState.
|
|
6 Degree Of Freedom Constraint setup structure. Allows control over each of the 6 degrees of freedom.
◆ EAxis
Constraint is split up into translation/rotation around X, Y and Z axis.
Enumerator |
---|
TranslationX | |
TranslationY | |
TranslationZ | |
RotationX | |
RotationY | |
RotationZ | |
Num | |
NumTranslation | |
◆ Create()
◆ IsFixedAxis()
bool SixDOFConstraintSettings::IsFixedAxis |
( |
EAxis |
inAxis | ) |
const |
|
inline |
◆ IsFreeAxis()
bool SixDOFConstraintSettings::IsFreeAxis |
( |
EAxis |
inAxis | ) |
const |
|
inline |
◆ MakeFixedAxis()
void SixDOFConstraintSettings::MakeFixedAxis |
( |
EAxis |
inAxis | ) |
|
|
inline |
Make axis fixed (fixed at value 0)
◆ MakeFreeAxis()
void SixDOFConstraintSettings::MakeFreeAxis |
( |
EAxis |
inAxis | ) |
|
|
inline |
Make axis free (unconstrained)
◆ RestoreBinaryState()
void SixDOFConstraintSettings::RestoreBinaryState |
( |
StreamIn & |
inStream | ) |
|
|
overrideprotectedvirtual |
This function should not be called directly, it is used by sRestoreFromBinaryState.
Reimplemented from ConstraintSettings.
◆ SaveBinaryState()
void SixDOFConstraintSettings::SaveBinaryState |
( |
StreamOut & |
inStream | ) |
const |
|
overridevirtual |
Saves the contents of the constraint settings in binary form to inStream.
Reimplemented from ConstraintSettings.
◆ SetLimitedAxis()
void SixDOFConstraintSettings::SetLimitedAxis |
( |
EAxis |
inAxis, |
|
|
float |
inMin, |
|
|
float |
inMax |
|
) |
| |
|
inline |
Set a valid range for the constraint (if inMax < inMin, the axis will become fixed)
◆ mAxisX1
◆ mAxisX2
◆ mAxisY1
◆ mAxisY2
◆ mLimitMax
float SixDOFConstraintSettings::mLimitMax[EAxis::Num] = { FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX } |
◆ mLimitMin
float SixDOFConstraintSettings::mLimitMin[EAxis::Num] = { -FLT_MAX, -FLT_MAX, -FLT_MAX, -FLT_MAX, -FLT_MAX, -FLT_MAX } |
Limits. For translation: Min and max linear limits in m (0 is frame of body 1 and 2 coincide). For rotation: Min and max angular limits in rad (0 is frame of body 1 and 2 coincide). See comments at Axis enum for limit ranges.
Remove degree of freedom by setting min = FLT_MAX and max = -FLT_MAX. The constraint will be driven to 0 for this axis.
Free movement over an axis is allowed when min = -FLT_MAX and max = FLT_MAX.
Rotation limit around X-Axis: When limited, should be \(\in [-\pi, \pi]\). Can be asymmetric around zero.
Rotation limit around Y-Z Axis: Forms a pyramid or cone shaped limit:
- For pyramid, should be \(\in [-\pi, \pi]\) and does not need to be symmetrical around zero.
- For cone should be \(\in [0, \pi]\) and needs to be symmetrical around zero (min limit is assumed to be -max limit).
◆ mLimitsSpringSettings
When enabled, this makes the limits soft. When the constraint exceeds the limits, a spring force will pull it back. Only soft translation limits are supported, soft rotation limits are not currently supported.
◆ mMaxFriction
float SixDOFConstraintSettings::mMaxFriction[EAxis::Num] = { 0, 0, 0, 0, 0, 0 } |
Friction settings. For translation: Max friction force in N. 0 = no friction. For rotation: Max friction torque in Nm. 0 = no friction.
◆ mMotorSettings
Motor settings for each axis.
◆ mPosition1
Body 1 constraint reference frame (space determined by mSpace)
◆ mPosition2
Body 2 constraint reference frame (space determined by mSpace)
◆ mSpace
This determines in which space the constraint is setup, all properties below should be in the specified space.
◆ mSwingType
The type of swing constraint that we want to use.
The documentation for this class was generated from the following files: