Navigation
API > API/Runtime > API/Runtime/AnimGraphRuntime > API/Runtime/AnimGraphRuntime/BoneControllers
Inheritance Hierarchy
- FAnimNode_Base
- FAnimNode_SkeletalControlBase
- FAnimNode_RigidBody
References
| Module | AnimGraphRuntime |
| Header | /Engine/Source/Runtime/AnimGraphRuntime/Public/BoneControllers/AnimNode_RigidBody.h |
| Include | #include "BoneControllers/AnimNode_RigidBody.h" |
Syntax
struct FAnimNode_RigidBody : public FAnimNode_SkeletalControlBase
Remarks
Controller that simulates physics based on the physics asset of the skeletal mesh component
Variables
| Type | Name | Description | |
|---|---|---|---|
| FBoneReference | BaseBoneRef | Matters if SimulationSpace is BaseBone | |
| uint8: 1 | bClampLinearTranslationLimitToRefPose | Correct for linear tearing on bodies with all axes Locked. | |
| uint8: 1 | bEnableWorldGeometry | ||
| bool | bForceDisableCollisionBetweenConstraintBodies | Whether to allow collisions between two bodies joined by a constraint | |
| uint8: 1 | bFreezeIncomingPoseOnStart | When simulation starts, freeze incoming pose. | |
| uint8: 1 | bOverrideWorldGravity | ||
| uint8: 1 | bTransferBoneVelocities | When simulation starts, transfer previous bone velocities (from animation) to make transition into simulation seamless. | |
| bool | bUseExternalClothCollision | If true, kinematic objects will be added to the simulation at runtime to represent any cloth colliders defined for the parent object. | |
| float | CachedBoundsScale | Scale of cached bounds (vs. actual bounds). | |
| FVector | ComponentAppliedLinearAccClamp | When using non-world-space sim, this is an overall clamp on acceleration derived from ComponentLinearAccScale and ComponentLinearVelScale, to ensure it is not too large. | |
| FVector | ComponentLinearAccScale | When using non-world-space sim, this controls how much of the components world-space acceleration is passed on to the local-space simulation. | |
| FVector | ComponentLinearVelScale | When using non-world-space sim, this applies a 'drag' to the bodies in the local space simulation, based on the components world-space velocity. | |
| float | EvaluationResetTime | If the node is not evaluated for this amount of time (seconds), either because a lower LOD was in use for a while or the component was not visible, reset the simulation to the default pose on the next evaluation. | |
| FVector | ExternalForce | Applies a uniform external force in world space. | |
| TEnumAsByte< ECollisionChannel > | OverlapChannel | The channel we use to find static geometry to collide with | |
| TObjectPtr< UPhysicsAsset > | OverridePhysicsAsset | Physics asset to use. If empty use the skeletal mesh's default physics asset | |
| FVector | OverrideWorldGravity | Override gravity | |
| FSimSpaceSettings | SimSpaceSettings | Settings for the system which passes motion of the simulation's space into the simulation. | |
| ESimulationSpace | SimulationSpace | What space to simulate the bodies in. This affects how velocities are generated | |
| ESimulationTiming | SimulationTiming | Whether the physics simulation runs synchronously with the node's evaluation or is run in the background until the next frame. | |
| float | WorldSpaceMinimumScale | For world-space simulations, if the magnitude of the component's 3D scale is less than WorldSpaceMinimumScale, do not update the node. |
Constructors
| Type | Name | Description | |
|---|---|---|---|
Destructors
| Type | Name | Description | |
|---|---|---|---|
Functions
| Type | Name | Description | |
|---|---|---|---|
| void | AddImpulseAtLocation
(
FVector Impulse, |
||
| UPhysicsAsset * | |||
| ImmediatePhysics::FSimulation * | TEMP: Exposed for use in PhAt as a quick way to get drag handles working with Chaos. | ||
| void | PostSerialize
(
const FArchive& Ar |
Overridden from FAnimNode_SkeletalControlBase
| Type | Name | Description | |
|---|---|---|---|
| void | Evaluate incoming component pose. | ||
| void | EvaluateSkeletalControl_AnyThread
(
FComponentSpacePoseContext& Output, |
Evaluate the new component-space transforms for the affected bones. | |
| bool | IsValidToEvaluate
(
const USkeleton* Skeleton, |
Return true if it is valid to Evaluate | |
| void | UpdateComponentPose_AnyThread
(
const FAnimationUpdateContext& Context |
Update incoming component pose. | |
| void | UpdateInternal
(
const FAnimationUpdateContext& Context |
Interface for derived skeletal controls to implement use this function to update for skeletal control base |
Overridden from FAnimNode_Base
| Type | Name | Description | |
|---|---|---|---|
| void | GatherDebugData
(
FNodeDebugData& DebugData |
Called to gather on-screen debug data. This is called on the game thread. | |
| int32 | Get the LOD threshold at which this node is enabled. | ||
| bool | HasPreUpdate () |
Override this to indicate that PreUpdate() should be called on the game thread (usually to gather non-thread safe data) before Update() is called. | |
| void | Initialize_AnyThread
(
const FAnimationInitializeContext& Context |
Called when the node first runs. | |
| bool | For nodes that implement some kind of simulation, return true here so ResetDynamics() gets called when things like teleports, time skips etc. | ||
| bool | For nodes that need some kind of initialization that is not dependent on node relevancy (i.e. it is insufficient or inefficient to use Initialize_AnyThread), return true here. | ||
| void | OnInitializeAnimInstance
(
const FAnimInstanceProxy* InProxy, |
Called once, from game thread as the parent anim instance is created | |
| void | PreUpdate
(
const UAnimInstance* InAnimInstance |
Override this to perform game-thread work prior to non-game thread Update() being called | |
| void | ResetDynamics
(
ETeleportType InTeleportType |
Called to help dynamics-based updates to recover correctly from large movements/teleports |