public void Initiate(IKSolverFullBody solver)
        {
            this.node1                 = (solver.GetPoint(this.bone1) as IKSolver.Node);
            this.node2                 = (solver.GetPoint(this.bone2) as IKSolver.Node);
            this.node3                 = (solver.GetPoint(this.bone3) as IKSolver.Node);
            this.direction             = this.OrthoToBone1(this.OrthoToLimb(this.node2.transform.position - this.node1.transform.position));
            this.defaultLocalDirection = Quaternion.Inverse(this.node1.transform.rotation) * this.direction;
            Vector3 point = Vector3.Cross((this.node3.transform.position - this.node1.transform.position).normalized, this.direction);

            this.defaultChildDirection = Quaternion.Inverse(this.node3.transform.rotation) * point;
            this.initiated             = true;
        }
示例#2
0
        /*
         * Initiate the constraint and set defaults
         * */
        public void Initiate(IKSolverFullBody solver)
        {
            node1 = solver.GetPoint(bone1) as IKSolver.Node;
            node2 = solver.GetPoint(bone2) as IKSolver.Node;
            node3 = solver.GetPoint(bone3) as IKSolver.Node;

            // Find the default bend direction orthogonal to the chain direction
            direction = OrthoToBone1(OrthoToLimb(node2.transform.position - node1.transform.position));

            // Default bend direction relative to the first node
            defaultLocalDirection = Quaternion.Inverse(node1.transform.rotation) * direction;

            // Default plane normal
            Vector3 defaultNormal = Vector3.Cross((node3.transform.position - node1.transform.position).normalized, direction);

            // Default plane normal relative to the third node
            defaultChildDirection = Quaternion.Inverse(node3.transform.rotation) * defaultNormal;
        }
示例#3
0
        /*
         * Initiate the constraint and set defaults
         * */
        public void Initiate(IKSolverFullBody solver)
        {
            node1 = solver.GetPoint(bone1) as IKSolver.Node;
            node2 = solver.GetPoint(bone2) as IKSolver.Node;
            node3 = solver.GetPoint(bone3) as IKSolver.Node;

            // Find the default bend direction orthogonal to the chain direction
            direction = OrthoToBone1(OrthoToLimb(node2.transform.position - node1.transform.position));

            // Default bend direction relative to the first node
            defaultLocalDirection = Quaternion.Inverse(node1.transform.rotation) * direction;

            // Default plane normal
            Vector3 defaultNormal = Vector3.Cross((node3.transform.position - node1.transform.position).normalized, direction);

            // Default plane normal relative to the third node
            defaultChildDirection = Quaternion.Inverse(node3.transform.rotation) * defaultNormal;
        }
		/// <summary>
		/// Determines whether this IKConstraintBend is valid.
		/// </summary>
		public bool IsValid(IKSolverFullBody solver, Warning.Logger logger) {
			if (bone1 == null || bone2 == null || bone3 == null) {
				if (logger != null) logger("Bend Constraint contains a null reference.");
				return false;
			}
			if (solver.GetPoint(bone1) == null) {
				if (logger != null) logger("Bend Constraint is referencing to a bone '" + bone1.name + "' that does not excist in the Node Chain.");
				return false;
			}
			if (solver.GetPoint(bone2) == null) {
				if (logger != null) logger("Bend Constraint is referencing to a bone '" + bone2.name + "' that does not excist in the Node Chain.");
				return false;
			}
			if (solver.GetPoint(bone3) == null) {
				if (logger != null) logger("Bend Constraint is referencing to a bone '" + bone3.name + "' that does not excist in the Node Chain.");
				return false;
			}
			return true;
		}
示例#5
0
 /// <summary>
 /// Determines whether this IKConstraintBend is valid.
 /// </summary>
 public bool IsValid(IKSolverFullBody solver, Warning.Logger logger)
 {
     if (bone1 == null || bone2 == null || bone3 == null)
     {
         if (logger != null)
         {
             logger("Bend Constraint contains a null reference.");
         }
         return(false);
     }
     if (solver.GetPoint(bone1) == null)
     {
         if (logger != null)
         {
             logger("Bend Constraint is referencing to a bone '" + bone1.name + "' that does not excist in the Node Chain.");
         }
         return(false);
     }
     if (solver.GetPoint(bone2) == null)
     {
         if (logger != null)
         {
             logger("Bend Constraint is referencing to a bone '" + bone2.name + "' that does not excist in the Node Chain.");
         }
         return(false);
     }
     if (solver.GetPoint(bone3) == null)
     {
         if (logger != null)
         {
             logger("Bend Constraint is referencing to a bone '" + bone3.name + "' that does not excist in the Node Chain.");
         }
         return(false);
     }
     return(true);
 }