I search for solutions in this order: Past Code, Unreal Source, Wiki, BUF, groups.yahoo, google, screaming at monitor. – RegularX

UE3:AnimNode_MultiBlendPerBone (UDK)

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
UDK Object >> AnimObject >> AnimNode >> AnimNodeBlendBase >> AnimNode_MultiBlendPerBone
Package: 
Engine


Properties[edit]

Property group 'AnimNode_MultiBlendPerBone'[edit]

MaskList[edit]

Type: array<PerBoneMaskInfo>

Modifiers: editfixedsize, editinline

List of Masks. Matches size of Children array - 1

RotationBlendType[edit]

Type: EBlendType

How rotation should be blended

Internal variables[edit]

PawnOwner[edit]

Type: Pawn

Modifiers: const, transient

Internal cached pointer to Pawn Owner

Default values[edit]

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

Enums[edit]

EBlendType[edit]

Describes how a blend should be performed.

EBT_ParentBoneSpace 
EBT_MeshSpace 

EWeightCheck[edit]

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[edit]

BranchInfo[edit]

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[edit]

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[edit]

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[edit]

Modifiers: native

Definition of a mask rule.

WeightNodeRule FirstNode 
WeightNodeRule SecondNode 

Native functions[edit]

SetMaskWeight[edit]

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

Control the weight of a given Mask.