Skip to main content

FAnimNode_KawaiiPhysics

API reference for the main KawaiiPhysics AnimGraph node.

View Source

Class Definition

USTRUCT(BlueprintType)
struct KAWAIIPHYSICS_API FAnimNode_KawaiiPhysics : public FAnimNode_SkeletalControlBase

Bone Settings

PropertyTypeDefaultDescription
RootBoneFBoneReference-Root bone for control target
ExcludeBonesTArray<FBoneReference>-Bones to exclude from control
AdditionalRootBonesTArray<FKawaiiPhysicsRootBoneSetting>-Additional root bone settings
DummyBoneLengthfloat0.0Dummy bone length
BoneForwardAxisEBoneForwardAxisX_PositiveBone forward axis

Physics Settings

PropertyTypeDefaultDescription
PhysicsSettingsFKawaiiPhysicsSettings-Basic physics control settings
SimulationSpaceEKawaiiPhysicsSimulationSpaceComponentSpaceSimulation space
SimulationBaseBoneFBoneReference-Base bone for BaseBone space
TargetFramerateint3260Target framerate
OverrideTargetFramerateboolfalseOverride framerate
TeleportDistanceThresholdfloat300.0Teleport distance threshold
TeleportRotationThresholdfloat10.0Teleport rotation threshold
PlanarConstraintEPlanarConstraintNonePlanar constraint
SkelCompMoveScaleFVector(1, 1, 1)Component move scale

Warm-up Settings

PropertyTypeDefaultDescription
WarmUpFramesint320Warm-up frame count
bNeedWarmUpboolfalseEnable warm-up
bUseWarmUpWhenResetDynamicsbooltrueWarm-up on reset

Curves

PropertyTypeDescription
DampingCurveDataFRuntimeFloatCurveDamping curve
StiffnessCurveDataFRuntimeFloatCurveStiffness curve
WorldDampingLocationCurveDataFRuntimeFloatCurveWorld location damping curve
WorldDampingRotationCurveDataFRuntimeFloatCurveWorld rotation damping curve
RadiusCurveDataFRuntimeFloatCurveRadius curve
LimitAngleCurveDataFRuntimeFloatCurveAngle limit curve

Collision (Limits)

PropertyTypeDescription
SphericalLimitsTArray<FSphericalLimit>Sphere collision
CapsuleLimitsTArray<FCapsuleLimit>Capsule collision
BoxLimitsTArray<FBoxLimit>Box collision
PlanarLimitsTArray<FPlanarLimit>Plane collision
LimitsDataAssetUKawaiiPhysicsLimitsDataAsset*Collision Data Asset
PhysicsAssetForLimitsUPhysicsAsset*Physics Asset for collision

Bone Constraint

PropertyTypeDefaultDescription
BoneConstraintGlobalComplianceTypeEXPBDComplianceTypeLeatherCompliance type
BoneConstraintIterationCountBeforeCollisionint321Pre-collision iteration count
BoneConstraintIterationCountAfterCollisionint321Post-collision iteration count
bAutoAddChildDummyBoneConstraintbooltrueAuto-add dummy bone
BoneConstraintsTArray<FModifyBoneConstraint>-Bone constraint list
BoneConstraintsDataAssetUKawaiiPhysicsBoneConstraintsDataAsset*-Constraints Data Asset

Sync Bone

PropertyTypeDescription
SyncBonesTArray<FKawaiiPhysicsSyncBone>Sync bone list

External Forces

PropertyTypeDefaultDescription
GravityFVectorZeroVectorGravity vector
bUseLegacyGravityboolfalseLegacy gravity method
bUseDefaultGravityZProjectSettingboolfalseUse project setting gravity
bUseWorldSpaceGravitybooltrueWorld space gravity
bEnableWindboolfalseEnable wind
WindScalefloat1.0Wind scale
WindDirectionNoiseAnglefloat0.0Wind direction noise (degrees)
SimpleExternalForceFVectorZeroVectorSimple external force
bUseWorldSpaceSimpleExternalForcebooltrueWorld space external force
ExternalForcesTArray<FInstancedStruct>-External force presets
CustomExternalForcesTArray<UKawaiiPhysics_CustomExternalForce*>-Custom external forces

World Collision

PropertyTypeDefaultDescription
bAllowWorldCollisionboolfalseEnable world collision
bOverrideCollisionParamsboolfalseOverride collision parameters
CollisionChannelSettingsFBodyInstance-Collision settings
bIgnoreSelfComponentbooltrueIgnore self collision
IgnoreBonesTArray<FBoneReference>-Ignore bones list
IgnoreBoneNamePrefixTArray<FName>-Ignore bone name prefix

Tag

PropertyTypeDescription
KawaiiPhysicsTagFGameplayTagFiltering tag

Runtime Data

PropertyTypeDescription
ModifyBonesTArray<FKawaiiPhysicsModifyBone>Physics-controlled bones
DeltaTimefloatFrame delta time

Key Methods

Initialize_AnyThread

virtual void Initialize_AnyThread(const FAnimationInitializeContext& Context) override;

Node initialization. Builds bone chain and initializes parameters.

CacheBones_AnyThread

virtual void CacheBones_AnyThread(const FAnimationCacheBonesContext& Context) override;

Bone reference caching.

UpdateInternal

virtual void UpdateInternal(const FAnimationUpdateContext& Context) override;

Per-frame update processing.

EvaluateSkeletalControl_AnyThread

virtual void EvaluateSkeletalControl_AnyThread(
FComponentSpacePoseContext& Output,
TArray<FBoneTransform>& OutBoneTransforms
) override;

Physics simulation evaluation and bone transform output.

ResetDynamics

virtual void ResetDynamics(ETeleportType InTeleportType) override;

Physics state reset. Used for teleportation, etc.

PreUpdate

virtual void PreUpdate(const UAnimInstance* InAnimInstance) override;

Pre-update processing. Retrieves scene information, etc.

Coordinate Transform Helpers

GetBoneTransformInSimSpace

FTransform GetBoneTransformInSimSpace(
FComponentSpacePoseContext& Output,
const FCompactPoseBoneIndex& BoneIndex
) const;

Gets bone Transform in simulation space.

ConvertSimulationSpaceTransform

FTransform ConvertSimulationSpaceTransform(
FComponentSpacePoseContext& Output,
EKawaiiPhysicsSimulationSpace From,
EKawaiiPhysicsSimulationSpace To,
const FTransform& InTransform
) const;

Converts Transform between simulation spaces.

Usage Example

Basic usage in Animation Blueprint:

  1. Add KawaiiPhysics node to AnimGraph
  2. Set RootBone
  3. Adjust Damping/Stiffness in PhysicsSettings
  4. Add collision as needed
// Example accessing from C++
FAnimNode_KawaiiPhysics* Node = ...;
Node->PhysicsSettings.Damping = 0.2f;
Node->PhysicsSettings.Stiffness = 0.1f;
Node->Gravity = FVector(0, 0, -980.0f);