unreal.AnimNode_BoneMask

class unreal.AnimNode_BoneMask(base_pose: PoseLink = [], blend_poses: None = [], blend_weights: None = [], bone_mask: BoneMask = Ellipsis, bone_mask_definition_data_asset: BoneMaskDefinitionDataAsset = Ellipsis, curve_blend_option: CurveBlendOption = Ellipsis, process_mesh_space_as_root_space: bool = False, lod_threshold: int = 0)

Bases: AnimNode_Base

This node is heavily based on AnimNode_LayeredBoneBlend but replacing both BranchFilter and BlendMask option with a single input param that represents different body parts. Each body parts has a list of BranchFilter that maps to actual bones. Blending is done in the order the body parts are created and in local space first and mesh space after. Unlike AnimNode_LayeredBoneBlend, with this node we can change the mask dynamically.

C++ Source:

  • Plugin: AnimationLayering

  • Module: AnimationLayering

  • File: AnimNode_BoneMask.h

Editor Properties: (see get_editor_property/set_editor_property)

  • base_pose (PoseLink): [Read-Write] The source pose

  • blend_poses (Array[PoseLink]): [Read-Write] Each layer’s blended pose

  • blend_weights (Array[float]): [Read-Write] The weights of each layer

  • body_parts (Array[BoneMaskBodyPartNameContainer]): [Read-Write] List of BodyParts that want to use different Poses When adding a new input pose to the node (right click on the node Add Input Pose) an entry to this array is automatically added allowing the user to specify the body part(s) that should use that pose

  • bone_mask (BoneMask): [Read-Write] Mask with all the body part dynamic values

  • bone_mask_definition_data_asset (BoneMaskDefinitionDataAsset): [Read-Write] Mask with all the body part static values

  • curve_blend_option (CurveBlendOption): [Read-Write] How to blend the layers together

  • lod_threshold (int32): [Read-Write] Max LOD that this node is allowed to run For example if you have LODThreadhold to be 2, it will run until LOD 2 (based on 0 index) when the component LOD becomes 3, it will stop update/evaluate currently transition would be issue and that has to be re-visited

  • process_mesh_space_as_root_space (bool): [Read-Write] Process mesh space rotations in root space, effectively ignoring any root rotation

  • update_skeleton_data_on_demand (bool): [Read-Write] Whether this node should update bone weights and child bone indices at runtime or use the data cached in the BoneMaskDefinitionDataAsset. Useful for cases where the skeleton can change at runtime and is not possible to have a BoneMaskDefinitionDataAsset for each skeleton.

property base_pose: PoseLink

[Read-Write] The source pose

Type:

(PoseLink)

property blend_poses: None

[Read-Write] Each layer’s blended pose

Type:

(Array[PoseLink])

property blend_weights: None

[Read-Write] The weights of each layer

Type:

(Array[float])

property bone_mask: BoneMask

[Read-Write] Mask with all the body part dynamic values

Type:

(BoneMask)

property bone_mask_definition_data_asset: BoneMaskDefinitionDataAsset

[Read-Write] Mask with all the body part static values

Type:

(BoneMaskDefinitionDataAsset)

property curve_blend_option: CurveBlendOption

[Read-Write] How to blend the layers together

Type:

(CurveBlendOption)

property lod_threshold: int

[Read-Write] Max LOD that this node is allowed to run For example if you have LODThreadhold to be 2, it will run until LOD 2 (based on 0 index) when the component LOD becomes 3, it will stop update/evaluate currently transition would be issue and that has to be re-visited

Type:

(int32)

property process_mesh_space_as_root_space: bool

[Read-Write] Process mesh space rotations in root space, effectively ignoring any root rotation

Type:

(bool)