UE3:AnimNode_MultiBlendPerBone (UDK)

From Unreal Wiki, The Unreal Engine Documentation Site
(Redirected from UE3:BranchInfo (UDK))
UDK Object >> AnimObject >> AnimNode >> AnimNodeBlendBase >> AnimNode_MultiBlendPerBone
Package:
Engine


Properties

Property group 'AnimNode_MultiBlendPerBone'

MaskList

Type: array<PerBoneMaskInfo>

Modifiers: editfixedsize, editinline

List of Masks. Matches size of Children array - 1

RotationBlendType

Type: EBlendType

How rotation should be blended

Internal variables

PawnOwner

Type: Pawn

Modifiers: const, transient

Internal cached pointer to Pawn Owner

Default values

Property Value
bSkipTickWhenZeroWeight True
CategoryDesc "Filter"
Children[0]
Member Value
Name 'Source'
Weight 1.0

Enums

EBlendType

Describes how a blend should be performed.

EBT_ParentBoneSpace
EBT_MeshSpace

EWeightCheck

Enum specifying how the weight should be checked

EWC_AnimNodeSlotNotPlaying
If AnimNodeSlot is not playing an animation, pass through
EWC_ChildIndexFullWeight
Weight must be >= 1.f - ZERO_ANIMWEIGHT_THRESH
EWC_ChildIndexNotFullWeight
Weight must be < 1.f - ZERO_ANIMWEIGHT_THRESH
EWC_ChildIndexRelevant
Weight must be > ZERO_ANIMWEIGHT_THRESH
EWC_ChildIndexNotRelevant
Weight must be <= ZERO_ANIMWEIGHT_THRESH

Structs

BranchInfo

Modifiers: native

name BoneName
Name of bone branch is starting from
float PerBoneWeightIncrease
Used to set up smooth blending

Default values:

Property Value
PerBoneWeightIncrease 1.0

PerBoneMaskInfo

Modifiers: native

Per bone masking definition

array<BranchInfo> BranchList
float DesiredWeight
Desired weight for this Mask
float BlendTimeToGo
array<WeightRule> WeightRuleList
Rules for turning off Mask.

This system allows to turn off a mask based on a set of rules. Most of the time BlendPerBone is associated with a AnimNodeSlot to play cutsom animations. So with this system, it's possible to make the BlendPerBone a pass through node when no custom animation is played on the AnimNodeSlot. Hence optimizing significantly the tree.

Example: - NodeName = Name of AnimNodeSlot - ChildIndex = 0 (source of AnimNodeSlot, when no custom animation is playing) - WeightCheck = EWC_ChildIndexFullWeight So this reads, if the Source children of the AnimNodeSlot is full weight (ie no custom animation is playing), then turn off this mask and make this BlendPerBone a pass through node.

Note: When setting up multiple rules, ALL of them must be true in order to turn off the mask. if one fails, then the mask will NOT be disabled.

bool bWeightBasedOnNodeRules
bool bDisableForNonLocalHumanPlayers
If the owner is not a local human player, then ignore this branch.

(ie AI, other players in network...)

bool bPendingBlend
Set when there is a blend pending, and it's being delayed by CanBlendTo()/CanBlendOutFrom()
array<float> PerBoneWeights
Weight scaling for each bone of the skeleton. Must be same size as RefSkeleton of SkeletalMesh. If all 0.0, no animation can ever be drawn from Child2.
array<byte> TransformReqBone
Bones required to be transformed to mesh space.

When doing a MeshSpace blending, this array defines which bones need to be blended that way as an optimization. As it is expensive to convert from Parent Bone Space -> Mesh Space and back. So this ensures that the conversion is only performed on the critical bones. These are the bones which have a different mask weight than their parents (so they will be blended) and their parents (needed to build the mesh space skeleton, as we are converting from PARENT bone space. The other bones can be done with the faster parent bone space blend.

int TransformReqBoneIndex
Index to navigate above array

WeightNodeRule

Modifiers: native

Rule put on a node.

name NodeName
Name of node
AnimNodeBlendBase CachedNode
Reference to node
AnimNodeSlot CachedSlotNode
Reference to cached slot node
EWeightCheck WeightCheck
How the weight should be checked.
int ChildIndex
Child index of node to check weight for

Default values:

Property Value
WeightCheck EWC_AnimNodeSlotNotPlaying

WeightRule

Modifiers: native

Definition of a mask rule.

WeightNodeRule FirstNode
WeightNodeRule SecondNode

Native functions

SetMaskWeight

native final function SetMaskWeight (int MaskIndex, float DesiredWeight, float BlendTime)

Control the weight of a given Mask.