예제 #1
0
        public RigidPose GetInverse()
        {
            var t = new RigidPose(pos, rot);

            t.Inverse();
            return(t);
        }
예제 #2
0
 public static void SetPose(Transform target, RigidPose pose, Transform origin = null)
 {
     if (origin != null && origin != target.parent)
     {
         target.position = origin.transform.TransformPoint(pose.pos);
         target.rotation = origin.rotation * pose.rot;
     }
     else
     {
         target.localPosition = pose.pos;
         target.localRotation = pose.rot;
     }
 }
예제 #3
0
 public static void SetPose(Transform target, RigidPose pose, Transform origin = null)
 {
     if (origin != null && origin != target.parent)
     {
         pose = new RigidPose(origin) * pose;
         pose.pos.Scale(origin.localScale);
         target.position = pose.pos;
         target.rotation = pose.rot;
     }
     else
     {
         target.localPosition = pose.pos;
         target.localRotation = pose.rot;
     }
 }
예제 #4
0
 public void Multiply(RigidPose a, RigidPose b)
 {
     rot = a.rot * b.rot;
     pos = a.pos + a.rot * b.pos;
 }
예제 #5
0
        public static RigidPose FromToPose(RigidPose from, RigidPose to)
        {
            var invRot = Quaternion.Inverse(from.rot);

            return(new RigidPose(invRot * (to.pos - from.pos), invRot * to.rot));
        }
예제 #6
0
 public void LerpUnclamped(RigidPose to, float t)
 {
     pos = Vector3.LerpUnclamped(pos, to.pos, t);
     rot = Quaternion.SlerpUnclamped(rot, to.rot, t);
 }
예제 #7
0
 public static RigidPose LerpUnclamped(RigidPose a, RigidPose b, float t)
 {
     return(new RigidPose(Vector3.LerpUnclamped(a.pos, b.pos, t), Quaternion.SlerpUnclamped(a.rot, b.rot, t)));
 }
예제 #8
0
 public JointPose(RigidPose pose)
 {
     this.isValid = true;
     this.pose    = pose;
 }
예제 #9
0
 public JointPose(Vector3 position, Quaternion rotation)
 {
     this.isValid = true;
     this.pose    = new RigidPose(position, rotation);
 }