Navigation
API > API/Runtime > API/Runtime/Chaos
Calculate new positions and rotations for a pair of bodies connected by a joint.
This solver treats of the 6 possible constraints (up to 3 linear and 3 angular) individually and resolves them in sequence.
| Name | FPBDJointCachedSolver |
| Type | class |
| Header File | /Engine/Source/Runtime/Experimental/Chaos/Public/Chaos/Joint/PBDJointCachedSolverGaussSeidel.h |
| Include Path | #include "Chaos/Joint/PBDJointCachedSolverGaussSeidel.h" |
Syntax
class FPBDJointCachedSolver
Constructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
FPBDJointCachedSolver() |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h |
Constants
| Name | Type | Remarks | Include Path |
|---|---|---|---|
| MaxConstrainedBodies | const int32 | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |
| PlanarPositionConstraintIndex | int32 | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |
| PointPositionConstraintIndex | int32 | Dummy indices | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h |
| SphericalPositionConstraintIndex | int32 | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h |
Variables
Protected
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| AngleTolerance | FReal | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| bIsActive | bool | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| bIsBroken | bool | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| bIsViolating | bool | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| bUsePositionBasedDrives | bool | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| bUseSimd | bool | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| ConnectorRs | FRotation3 | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| ConnectorWDts | FVec3 | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| ConnectorWDtsSimd | VectorRegister4Float | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| ConnectorXs | FVec3 | World-space constraint settings. | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |
| CurrentPs | FVec3 | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| CurrentQs | FRotation3 | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| InitConnectorRs | FRotation3 | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| InitConnectorXs | FVec3 | XPBD Initial iteration world-space body state. | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |
| InitConstraintAxisAngularVelocities | FVec3 | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| InitConstraintAxisLinearVelocities | FVec3 | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| InitConstraintVelocity | FVec3 | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| InvIs | FMatrix33 | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| InvMs | FReal | Inverse Mass and Inertia. | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |
| LastDPs | FVec3 | Tracking whether the solver is resolved. | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |
| LastDQs | FVec3 | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| LocalConnectorXs | FRigidTransform3 | Local-space constraint settings. | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |
| NumActiveConstraints | int32 | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| PositionConstraints | FAxisConstraintDatas | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| PositionDrives | FAxisConstraintDatas | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| PositionTolerance | FReal | Tolerances below which we stop solving. | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |
| RotationConstraints | FAxisConstraintDatas | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| RotationDrives | FAxisConstraintDatas | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| SolverBodies | FConstraintSolverBody | The cached body state on which the joint operates. | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |
| SolverStiffness | FReal | Solver stiffness - increased over iterations for stability | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
void ApplyAxisPositionProjection
(
const FReal LinearProjection, |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void ApplyAxisPositionTeleport
(
const FReal TeleportDistance, |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void ApplyAxisRotationProjection
(
const FReal AngularProjection, |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void ApplyConstraints
(
const FReal Dt, |
Run the position solve for the constraints. | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |
void ApplyPositionProjection
(
const FReal Dt, |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void ApplyPositionProjectionSimd
(
const FReal LinearProjection |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void ApplyPositionTeleport
(
const FReal Dt, |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void ApplyPositionTeleportSimd
(
const FRealSingle TeleportDistance |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void ApplyProjections
(
const FReal Dt, |
Apply projection (a position solve where the parent has infinite mass) for the constraints | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |
void ApplyRotationProjection
(
const FReal Dt, |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void ApplyRotationProjectionSimd
(
const FRealSingle AngularProjection, |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void ApplyRotationTeleport
(
const FReal Dt, |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void ApplyTeleports
(
const FReal Dt, |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void ApplyVelocityConstraints
(
const FReal Dt, |
Run the velocity solve for the constraints. | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |
const FConstraintSolverBody & Body
(
int32 BodyIndex |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
FConstraintSolverBody & Body
(
int32 BodyIndex |
Access to the SolverBodies that the constraint is operating on. | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |
| Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |||
const FConstraintSolverBody & Body0 () |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
| Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |||
const FConstraintSolverBody & Body1 () |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void Deinit() |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
FReal GetAngularViolation() |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
bool GetIsActive() |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
FReal GetLinearViolationSq() |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
FVec3 GetNetAngularImpulse() |
NOTE: This is a positional impulse. | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |
FVec3 GetNetLinearImpulse() |
NOTE: This is a positional impulse. | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |
int32 GetNumActiveConstraints() |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void Init
(
const FReal Dt, |
Called once per frame to initialize the joint solver from the joint settings. | Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | |
void InitProjection
(
const FReal Dt, |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
FMatrix33 InvI
(
int32 BodyIndex |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
FReal InvM
(
int32 BodyIndex |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
bool IsBroken() |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
bool IsDynamic
(
int32 BodyIndex |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
bool IsViolating() |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
const FVec3 P
(
int BodyIndex |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
const FRotation3 Q
(
int BodyIndex |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
const FRotation3 R
(
int BodyIndex |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
bool RequiresSolve() |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void SetIsBroken
(
const bool bInIsBroken |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void SetIsViolating
(
const bool bInIsViolating |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void SetShockPropagationScales
(
const FReal InvMScale0, |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void SetSolverBodies
(
FSolverBody* SolverBody0, |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
void Update
(
const FReal Dt, |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
const FVec3 V
(
int BodyIndex |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
const FVec3 W
(
int BodyIndex |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h | ||
const FVec3 X
(
int BodyIndex |
Chaos/Joint/PBDJointCachedSolverGaussSeidel.h |
See Also
- FJointSolverCholesky