@awayjs/graphics
Version:
AwayJS graphics classes
62 lines (54 loc) • 1.68 kB
text/typescript
import { Matrix3D, Quaternion, Vector3D } from '@awayjs/core';
/**
* Contains transformation data for a skeleton joint, used for skeleton animation.
*
* @see away.animation.Skeleton
* @see away.animation.SkeletonJoint
*
* todo: support (uniform) scale
*/
export class JointPose {
/**
* The name of the joint to which the pose is associated
*/
public name: string; // intention is that this should be used only at load time, not in the main loop
/**
* The rotation of the pose stored as a quaternion
*/
public orientation: Quaternion = new Quaternion();
/**
* The translation of the pose
*/
public translation: Vector3D = new Vector3D();
constructor() {
}
/**
* Converts the transformation to a Matrix3D representation.
*
* @param target An optional target matrix to store the transformation. If not provided, it will create a new instance.
* @return The transformation matrix of the pose.
*/
public toMatrix3D(target: Matrix3D = null): Matrix3D {
if (target == null)
target = new Matrix3D();
this.orientation.toMatrix3D(target);
target.appendTranslation(this.translation.x, this.translation.y, this.translation.z);
return target;
}
/**
* Copies the transformation data from a source pose object into the existing pose object.
*
* @param pose The source pose to copy from.
*/
public copyFrom(pose: JointPose): void {
const or: Quaternion = pose.orientation;
const tr: Vector3D = pose.translation;
this.orientation.x = or.x;
this.orientation.y = or.y;
this.orientation.z = or.z;
this.orientation.w = or.w;
this.translation.x = tr.x;
this.translation.y = tr.y;
this.translation.z = tr.z;
}
}