/* * Initiating the chain. * */ public void Initiate(IKSolver solver, FBIKChain[] chain) { initiated = false; foreach (IKSolver.Node node in nodes) { node.solverPosition = node.transform.position; } // Calculating bone lengths CalculateBoneLengths(chain); // Initiating child constraints foreach (ChildConstraint c in childConstraints) { c.Initiate(solver as IKSolverFullBody); } // Initiating the bend constraint if (nodes.Length == 3) { bendConstraint.SetBones(nodes[0].transform, nodes[1].transform, nodes[2].transform); bendConstraint.Initiate(solver as IKSolverFullBody); } crossFades = new float[children.Length]; initiated = true; }
/* * Initiating the chain. * */ public void Initiate(IKSolverFullBody solver) { initiated = false; foreach (IKSolver.Node node in nodes) { node.solverPosition = node.transform.position; } // Calculating bone lengths CalculateBoneLengths(solver); // Initiating child constraints foreach (ChildConstraint c in childConstraints) { c.Initiate(solver as IKSolverFullBody); } // Initiating the bend constraint if (nodes.Length == 3) { bendConstraint.SetBones(nodes[0].transform, nodes[1].transform, nodes[2].transform); bendConstraint.Initiate(solver as IKSolverFullBody); } crossFades = new float[children.Length]; initiated = true; Debug.Log("Chain's names "); for (int i = 0; i < nodes.Length; i++) { Debug.Log("Chain's node = " + nodes[i].transform.name); } }
/* * Initiating the chain. * */ public void Initiate(IKSolver solver, FBIKChain[] chain) { initiated = false; foreach (IKSolver.Node node in nodes) { node.solverPosition = node.transform.position; } // Calculating bone lengths length = 0f; for (int i = 0; i < nodes.Length - 1; i++) { nodes[i].length = Vector3.Distance(nodes[i].transform.position, nodes[i + 1].transform.position); length += nodes[i].length; if (nodes[i].length == 0) { return; } } for (int i = 0; i < children.Length; i++) { chain[children[i]].rootLength = (chain[children[i]].nodes[0].transform.position - nodes[nodes.Length - 1].transform.position).magnitude; if (chain[children[i]].rootLength == 0f) { return; } } // Initiating child constraints foreach (ChildConstraint c in childConstraints) { c.Initiate(solver as IKSolverFullBody); } // Initiating the bend constraint if (nodes.Length == 3) { bendConstraint.SetBones(nodes[0].transform, nodes[1].transform, nodes[2].transform); bendConstraint.Initiate(solver as IKSolverFullBody); } crossFades = new float[children.Length]; initiated = true; }