< PREVIOUS: Animation | NEXT: Blender Integration >


What is an Armature?

The AnimatedSceneNode class contains a property called Armature. An armature is a hierarchical collection of bones that affect a geometric model. The geometry affected is called the "skin". Much like bones and skin in a human or animal body, an armature allows its skin to be deformed organically as bones are posed in space. A geometric object with an armature attached to it is considered to be "rigged".

Their are three types of Ascend objects that pertain to armatures.
  • Armature: A container class for the set of Bones that affect a skin
  • Bone: A TransformableObject that deforms vertices of a skin based on its transformation (position, rotation, scale) and its set of VertexInfluences
  • VertexInfluence: Defines an affected vertex and a weight of influence
    • Note that the vertex defined in a VertexInfluence is actually a list of vertices. For lazy-loaded models, this list contains a single vertex. For non-lazy-loaded models, this list contains a vertex and all of its aliases. More information on lazy- and non-lazy-loaded models, see this article.
The Armature.Skin property refers to the AnimatedSceneNode whose geometry will be affected by the Armature. It is important to note that, due to performance reasons, the method Armature.UpdateSkin must be called in order for the the geometry of a rigged AnimatedSceneNode to update. The only cases when Armature.UpdateSkin need not be called explicitly are:
  • When animating via Timelines or the AnimatedSceneNode.Play method, or
  • When calling the Armature.Rest method, which sets the Bones to their defined rest transformations.

Rigid Attachments

Bone contains a property called RigidAttachments. RigidAttachments is a collection of SceneNodes that will be transformed relative to the Bone but will not be deformed by the Bone as would be the skin. When a SceneNode is added to a Bone's RigidAttachments collection, that SceneNode's Parent property will become null, and its BoneParent property will take on the value of the Bone. The property TransformableObject.TransformParent can also be used to get the current object to which a SceneNode is relatively transformed (either another SceneNode, a Bone, or null).
< PREVIOUS: Animation | NEXT: Blender Integration >

Last edited May 1, 2014 at 5:53 PM by menehune23, version 25


No comments yet.