BoneMap
Name mapping: profile bone → source skeleton bone.
For example, profile key Hips can store Pelvis from the source model. Assign Profile first, then configure mappings. BoneMap stores retargeting data; it does not itself change Skeleton3D names, poses or hierarchy.
Identical names do not eliminate differences in rest transforms, axes or animation paths. Duplicate assignments are possible, so verify the map and actual character. See retargeting for the workflow.
Declarations checked against C# SDK 1.0.0. Expand a name to see declarations and documentation.
Constructors1
BoneMapConstructor
public BoneMap();Creates a map with no profile. Assign Profile first, then fill existing profile keys with SetSkeletonBoneName. The map does not hold a reference to a particular Skeleton3D.
Properties1
ProfileProperty
public SkeletonProfile Profile { get; set; }The profile defines valid map keys. Synchronization adds new keys with empty values, removes keys absent from the profile and retains values for shared keys. Assigning a profile neither inspects a skeleton nor renames bones.
Methods5
FindProfileBoneNameStringName
public StringName FindProfileBoneName(StringName skeletonBoneName);Finds a profile key by source bone name. Duplicate values return one match; do not rely on iteration order as a selection rule. No match returns an empty name.
| Name | Type | Default |
|---|---|---|
skeletonBoneName | StringName | — |
skeletonBoneNameSource skeleton bone name, such as Pelvis. Check its existence separately with Skeleton3D.FindBone.
StringNameMatching profile key or an empty StringName. Not a bone index.
GetProfileSkeletonProfile
public SkeletonProfile GetProfile();Returns the same profile object as Profile, without making a copy. A new map has no profile despite the non-nullable SDK signature.
SkeletonProfileCurrent profile, or null when unassigned.
GetSkeletonBoneNameStringName
public StringName GetSkeletonBoneName(StringName profileBoneName);Reads the forward mapping: profile bone name → source skeleton bone name. An existing key can have an empty value. Do not pass an arbitrary name absent from the profile: that is a native API error, not a guaranteed C# exception.
| Name | Type | Default |
|---|---|---|
profileBoneName | StringName | — |
profileBoneNameExisting bone name in Profile, such as Hips; the target key, not the source bone name.
StringNameStored source bone name for the profile key; an empty name means unassigned.
SetProfilevoid
public void SetProfile(SkeletonProfile profile);Assigns Profile and synchronizes keys with its bones. Reassigning the same reference does not rerun synchronization through this setter. Replacing the profile does not automatically fill source-skeleton names.
| Name | Type | Default |
|---|---|---|
profile | SkeletonProfile | — |
profileProfile resource containing target bone names. The map retains a resource reference; it does not copy the profile.
SetSkeletonBoneNamevoid
public void SetSkeletonBoneName(StringName profileBoneName, StringName skeletonBoneName);Stores a source bone name under an existing profile key. Does not verify that the bone exists in Skeleton3D and allows duplicate values under different keys. Does not mutate a live skeleton. Emits BoneMapUpdated even when writing the same value again.
| Name | Type | Default |
|---|---|---|
profileBoneName | StringName | — |
skeletonBoneName | StringName | — |
profileBoneNameExisting bone name in Profile, such as Hips; the target key, not the source bone name.
skeletonBoneNameSource skeleton bone name, such as Pelvis. Check its existence separately with Skeleton3D.FindBone.
Signals and events2
BoneMapUpdatedEvent
public event Action BoneMapUpdated;Notification from SetSkeletonBoneName. Does not prove that a value changed: writing the same name again also notifies. Read the relevant mapping again.
ProfileUpdatedEvent
public event Action ProfileUpdated;Notifies after map synchronization following profile replacement or the profile own ProfileUpdated notification. Separate from BoneMapUpdated; reassigning the same reference alone does not emit it.