Bone
Bones allow you to define and animate the positions of visual-only bones within a skinned mesh part.
Bone extends Attachment. The inherited CFrame property is used as the reference position of the Bone. The inherited WorldCFrame and the other World properties will continue to return the initial un-transformed position.
Bones can be children of other Bones in addition to Parts. When parented to another Bone the child bone's world position will be relative to the parent Bone's position. Bones form an explicit hierarchy.
To support animation, Bones have a Bone.Transform property that functions similarly to Motor6D.Transform. It is not replicated or serialized and is meant to be driven by animation as an offset from the reference pose.
The movement of Bones can affect the appearance of parts, but does not change the shape of the part physically for collision detection.
Bones internally implement the animatable joint interface and can be driven by Animators interchangeably with Motor6Ds. Animation data authored for a tree of motors can be played as-is on an equivalent tree of bones and vice versa.
For a Motor6D the child part is relative to Transform _ ParentPart.CFrame _ CParent
For a Bone all child Bones are relative to Transform _ ParentPart.CFrame _ Bone.CFrame
Physical Constraints directly attached to Bones will use the transformed positions for simulation.
Many bones, like bones in a character's face, hands, or corrective "twist joints" in limbs, may not need physical representation because they are only meant for small, but expressive, movements.
The mesh importer supports importing meshes with skeletal joint data with vertices weighted to those joints. This will be saved in the mesh asset data for each part.
Named joints defined within a MeshPart or FileMesh mesh asset data will skin to Bones with the same name found as children of that part, Bones that are direct children of those Bones (recursively), or children of other parts in the same Model that are connected to the part directly or indirectly by Motor6D, Weld, BallSocketConstraint, HingeConstraint, or other skinning-enabled joints within the same Model. Other descendant Models are considered separate models.
In the absence of Bones, skinning will skin mesh joints relative to a connected MeshPart or FileMesh parent part with the same instance name as the mesh joint using the offset defined by that part's mesh asset joint data as if it contained a Bone instance with the same name.
Skinning is based on joint connections so that classic dismemberment on death works as expected. The "within the same Model" rule prevents characters that are welded together from unexpectedly skinning together as a singular visual entity.
Summary
Properties
Determines the current animated offset of the bone in its local space.
Describes the combined CFrame offset of the bone and the current animation offset in the bone local space.
Describes the combined CFrame offset of the bone and the current animation offset in world space.
Methods
Events
Properties
Transform
Transform determines the current animated offset of the bone relative to its CFrame. This property is set by Roblox when animations on skinned meshes are played, although it can be manipulated manually in a manner similar to Motor6D.Transform.
See also:
- Motor6D.Transform, a property which plays a similar role in character rig animation
- TransformedCFrame and TransformedWorldCFrame, whose values are partially determined by this property
TransformedCFrame
TransformedCFrame describes the combined CFrame offset of the bone and the current animation offset (Transform) in the bone's local space.
See also:
- Transform, a property which partially determines this property's value
- Bone.TransformedWorldCFrame, a world-space variant of this property
TransformedWorldCFrame
TransformedWorldCFrame describes the combined CFrame offset of the bone and the current animation offset (Transform) in world space.
See also:
- Transform, a property which partially determines this property's value
- Bone.TransformedCFrame, a local-space variant of this property