Skeleton

Skeleton is a deformator. Geometric points are bound to the joints of a skeleton through a set of binding tools.

In addition to this, it is also possible to use the lattice mapping system to attach desired objects to skeletons.

Skeleton properties are described below. For more information, see also Skeleton Tool documentation.

Default Joint Action

This option determines the action to be taken when the user drags a joint. The following options are available:

Preferred Anim. Method

Defines the preferred method for key framing:

I.K Sampling

This option specifies the level of sampling for Inverse Kinematics. The higher the value the better I.K works.

I.K Parents

Specifies the number of parents I.K propagates to. If the value of this attribute is zero, I.K will never propagate to the parent object but affects only the current skeleton.

Mapping Volume

Mapping volume is a control hull with a circular cross section. It is used when one needs to bind a skeleton to an object to be deformed. Points inside the mapping volume will be bound to the skeleton and points outside the bounding volume will not be bound.

In hierarchical skeletons, mapping volumes typically overlap in which case certain point may get bound to more than one skeleton.

There are two options controlling mapping volumes:

Parent Joint

Skeletons can be grouped to a hierarchical tree where each skeleton may have one or more sub skeletons attached. For example, a hand skeleton may have five sub skeletons representing fingers.

This option specifies the parent joint to which the skeleton in question is attached to. Bone angles for such a skeleton are defined in the space of the parent joint.

Rotation from Parent

If this option is set, both the translation and the rotation of the skeleton is defined in the parent bone's space. If the option is not set, the rotation is defined independently from the orientation of the parent skeleton.

This option is effective only for skeletons attached to their parent skeletons via the 'Parent Joint' option.

Displacement

This option specifies how much the root joint of the skeleton is displaced from the joint of the parent skeleton. This option can be modified simply by moving the skeleton with the Move tool, or by defining displacement through the property window.

Interpolation

Realsoft 3D key framer supports two interpolation methods for key framing rotations.

Angle space interpolation simply interpolates recorded rotation angles. The drawback of this method is that the two dimensional angle space has two singularity points. Any path passing near these points typically cause problems.

Quaternion interpolation solves this problem by using four dimensional angle space for interpolation. This is an advanced method and results very nice rotations. However, the problem is that the resulting animation curves are somewhat difficult to control.

Angle System

Skeletons support two kind of angle systems:

HPB is the standard HPB angle system (stands for Heading, Pitching and Banking). The first two angles define polar coordinates for the bone. The third angle 'Banking' is defined so that as long as the 'x' axis of the bone lays on the ground plane, banking is said to be zero. This makes the method particularly suitable for controlling cameras. With zero banking, the x axes of the subsequent joints lay on the common plane.

HPT is a new angle system developed by Realsoft.

The difference to the standard HPB system is that the third angle is defined in such a way that it minimizes the surface tension of the attached body rather than trying to keep the bones horizontally aligned.

Think about a striped flexible plastic pipe. Bend it to any direction and the stripes along the body tell you intuitively whether there are twisting or not. If the stripes appear spiral like, there is twisting involved. If stripes along the body follow straight lines, the twisting is zero.

In other words, when there is no real twist on the body attached to the skeleton, the third angle 'Twist' is said to be zero. What could be a more natural way of defining bone angles!

This system has several advantages over the standard HPB angle system. First, you typically have to edit only two bone angles: heading and pitching. You need to touch twisting angle only when you really need to get some real skin twisting introduced. In the standard angle systems, the banking angle has nothing to do with real twisting. In animations, you have to edit the banking angle all the time to eliminate unwanted twisting from the body. Another advantage is that I.K. can now operate based on heading and pitching angles only. This makes the I.K. tool much more useful.

The third and significant advantage of the new HPT angle system is that it helps to eliminate the biggest problem with angular spaces. In any angle space, there are two so called singularity points - the poles. When you animate, say, a camera over these poles, you'll get sudden jump at the north pole. The new HPT system eliminates this problem completely. In this respect, HPT angles are almost as good as Quaternion angles, and easier to handle in the curve editor.

Joint Angles

The orientation of each joint (or bone) can be controlled by three angles, named Heading, Pitching and Banking.

The joint angles are defined in the space of the previous joint. There is no previous joint for the root joint, in which case the angles are defined in the object space.

Skeleton has so called native orientation, in which the skeleton can be bent +/- 180 degrees. This corresponds to the 'a' (heading) angle of a bone. Joint representation visualizes this heading angle and intuitively shows you how much the joint in question can be bent.

In pitching angle, skeleton should only be bent less than +/- 90 degrees to avoid those problematic singularity points of the angle space. You can bend the skeleton beyond this limit, but in animations the skeleton may not behave as you expect. The reason for this is that the angle space has two so called singularity points at pitching = +/- 90. If you think the angle space as the surface of the earth, these singularity points correspond to the north and south poles. There, any latitude value will give you the same point (the pole). Therefore, you should try to create a skeleton so that the direction in which it bends the most, corresponds to the heading angle. This problem is not specific to Realsoft's implementation but is a fundamental problem related to polar angle systems.

If you need to create a joint which bends over +/-90 degrees in both directions, you may construct them from two joints close to each other. In fact, many real world joints are constructed this way. Another solution is to use quaternion angle system.

Constraint Angles

Constraint angles can be used for constraining bone angles. If a skeleton is bent over the constraints, the joint friction is internally increased preventing the joint from bending further and keeping the bone angles within the specified min / max constraint angles.

Note: If quaternion angles are used, constraints are effective only when interactively editing the skeleton. Constraints are disabled for animation play back.

Bone Length

Each joint defines a length attribute specifying the distance to the next joint.

Thickness

Thickness attribute specifies the thickness of the skeleton at the joint in question. This attribute is only used for visualization. It can be used for representing the actual body.

Position

Joint position attribute is actually an optional interface to joint angles. Skeleton can be defined by the root position and a set of joint angles, or by specifying joint positions for each joint.

Joint friction

The higher the friction, the more rigid the joint is when editing the skeleton using Inverse Kinematics. If the joint friction is 1, the joint is completely rigid and the two associated bones act as a single curved bone.

Fidelity

Fidelity attribute is based on multi weighted binding. If the fidelity is zero, then the each point is single bound to the bones. If the fidelity is 0.5, then the skeleton handles the binding as if the point was multi bound to subsequent bones.

This option specifies an object wise fidelity value. It is also possible to use point wise fidelities.

Drag

This attribute specifies the drag force between the joint and the medium. The higher the value, the stronger the joint resists attempts to translate it. Infinitely high drag force anchors the joint to a world.

Anchor

Anchor option anchors the joint coordinates in the world space or in the object space when the skeleton is modified using the Inverse Kinematics tool.

If the joint is anchored in the world space, the joint maintains its position even when the entire object is translated.

If the user modifies an anchored directly, the anchore is temporarily disabled for the joint.

Rigid

Setting this option makes the joint rigid. The effect is the same as setting joint friction to 1.

Animate as I.K Target

When this option is set, the key framer records the position coordinates. In animation play back, the joint is moved to the specified point using inverse kinematics.

Animate as Angle

If set, the key framer records bone angles for the joint. This option is typically used when Preferred animation method is set to Inverse Kinematics and when some of the joints need angle based key framing.

I.K Head Stopper

Inverse Kinematics stopper. When one of the joints at the tail side is modified using I.K, this option prevents I.K from propagating to parent bones. The option has no effects when I.K is applied to parent bones.

I.K Tail Stopper

Inverse Kinematics stopper. When one of the joints at the head side is modified, this option prevents I.K from propagating to parent bones. The option has no effects when I.K is applied to tail side bones.

Binding

Skeleton acts similar to other construction based deformators. The main difference is that skeleton must be bound to target objects before it can deform any target points.

When the skeleton is bound, its current state is saved. When the skeleton is then modified, a deformation is computed from the difference between the initial state and the current state.

Binding becomes effective only when the Construct feature is enabled for the skeleton. Resetting Construct option does not discard binding data.

Two methods exist for setting up initial binding.

Single binding binds target points to their nearest joints of the skeleton.

Multi binding uses bounding volume property to determine the skeletons to which the points should be mapped.

It is also possible to set up or fine tune binding manually.

Bind Selected tool binds the selected points to the selected bones. The tool is shown when one target object and one skeleton object is selected. This tool does not set up multi binding. If multiple bones are selected from a single skeleton, point is mapped to the nearest one.

Unbind Selected unbinds the selected points from the selected bones. The tool is shown when one target object and one skeleton object is selected.

Unbind tool detaches all target objects from the skeleton. All binding specific data is freed from the skeleton.

Select tool allows the user to select the points bound to the selected joints. This tool selects all points bound to the currently selected bones. The tool is only shown when both the target object and the skeleton object are selected. The tool is useful, for example, when one wants to view the points bound to a certain bone. Or, when some of the points got bound to a wrong bone and you want to unbind them.

Unselect tool unselects all points bound to the selected bones. The tool is only shown when two objects are multi selected: the skeleton object and the target object. The tool is very useful when binding points manually to complex hierarchical skeletons because it allows the user to exclude points which are already mapped to other skeletons.

Handles

Skeleton supports a set of handles through which the user can control the skeleton.

Handles can be switched on / off through the Wire tab of the Property Window, or through the compass menu.

Joint Handles

Each joint acts as a handle activating the tool specified by the 'Default Joint Action' option. The default tool is Inverse Kinematics.

Angle Handles

Angle handles can be used for controlling bone angles and constraint angles.

Dragging an angle handle modifies the corresponding bone angle, such as Heading, Pitching or Banking.

The constraint handles are marked as black arrow heads at the both ends of each angle handle.

Angle handles

Rotation Handle

The rotation handle rotates the selected bones exactly the same way as the standard rotation handles rotate regular geometric objects. The difference to the bone Angle Handles is that the rotation handle rotates the bone about the main axes of the bone whereas bone Angle Handles control certain bone angle directly. In order to get the desired rotation applied, rotation handles typically need to change all the three bone angles.

The rotation handle can be used for rotating the selected bone. Constraints can be disabled by holding down the Alt key.

Bone rotation handles