JacobianTransposeIKSolver Class |
Namespace: DigitalRune.Animation.Character
The JacobianTransposeIKSolver type exposes the following members.
Name | Description | |
---|---|---|
JacobianTransposeIKSolver |
Initializes a new instance of the JacobianTransposeIKSolver class.
|
Name | Description | |
---|---|---|
Equals | (Inherited from Object.) | |
Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
OnInvalidate |
Called when the SkeletonPose was exchanged.
(Overrides IKSolverOnInvalidate.) | |
OnSolve |
Called when Solve(Single) is called.
(Overrides IKSolverOnSolve(Single).) | |
Solve |
Modifies the SkeletonPose to reach the Target position.
(Inherited from IKSolver.) | |
ToString | Returns a string that represents the current object. (Inherited from Object.) |
Name | Description | |
---|---|---|
AllowedDeviation |
Gets or sets the allowed distance error.
| |
LimitBoneTransforms |
Gets or sets the a callback that enforces rotation limits.
| |
MaxAngularVelocity |
Gets or sets the maximal angular velocity per bone.
(Inherited from IKSolver.) | |
NumberOfIterations |
Gets or sets the number of iterations.
| |
RootBoneIndex |
Gets or sets the index of the root bone.
| |
SkeletonPose |
Gets or sets the skeleton pose.
(Inherited from IKSolver.) | |
StepSize |
Gets or sets the size of the Euler integration step.
| |
Target |
Gets or sets the target position in model space.
(Inherited from IKSolver.) | |
TipBoneIndex |
Gets or sets the index of the tip bone.
| |
TipOffset |
Gets or sets the tip offset in tip bone space.
| |
Weight |
Gets or sets the weight.
(Inherited from IKSolver.) |
Name | Description | |
---|---|---|
IAnimatableObjectGetAnimatablePropertyT |
Gets the property with given name and type which can be animated.
(Inherited from IKSolver.) | |
IAnimatableObjectGetAnimatedProperties |
Gets the properties which are currently being animated.
(Inherited from IKSolver.) | |
INamedObjectName |
Not implemented.
(Inherited from IKSolver.) |
This IKSolver uses the Jacobian Transpose algorithm to modify a bone chain to reach the Target position. RootBoneIndex determines the first bone in the chain. TipBoneIndex determines the last bone that is included in the chain. This IK solver rotates all bones in the chain, so that the tip of the bone chain reaches the Target position.
This solver uses an iterative algorithm. NumberOfIterations limits the maximal number allowed iterations. The algorithm ends early if the distance between the Target and the tip of the chain is less than AllowedDeviation. In each iteration, the solver computes "forces" that pull the tip of the bone chain to the target. It then makes an Euler integration step to move the bones as determined by the computed forces. StepSize determines the time step of the numeric integration. If this value is too large, the solver becomes unstable. If this value too small, the solver needs many iterations to reach the target. A good value for a specific application must be determined by experimentation.
Bone rotation limits:
Per default, the IKSolver assumes that the bones can rotate in any direction
without rotation limits. If the bone rotations should be limited (e.g. "do not rotate about
the y axis" or "do not rotate more than 45°"), then a LimitBoneTransforms
callback must be set. The
LimitBoneTransforms callback must be a method that checks the current bone
rotations and removes any invalid rotations. See LimitBoneTransforms for more
details.
See also IKSolver for more general information.
Caution:
This IK solver allocates heap memory and creates garbage. If garbage collector performance is
important (e.g. on the Xbox 360 or Windows Phone 7), do not use this IK solver.