Beispiel #1
0
    private float PerformOneIteration(Chain chain, Transform target)
    {
        int boneCount = chain.BoneCount;

        // FORWARD STEP
        chain.AttachBoneToChildPos(boneCount - 1, target.position, false);

        int i = boneCount - 2;

        while (i >= 0)
        {
            chain.AttachBoneToChild(i--, false);

            // TODO: Constraints
        }


        //BACKWARD STEP
        chain.AttachBoneToParentPos(0, chain.OriginalRootPos, false);
        i = 1;
        while (i < boneCount)
        {
            chain.AttachBoneToParent(i++, false);

            // TODO: Constraints
        }

        return(Vector3.Distance(chain.EndEffector.Position, target.position));
    }
Beispiel #2
0
    private static void BackwardStep(Chain chain, Transform target, int startJoint, Vector3 startJointPos)
    {
        chain.AttachBoneToParentPos(startJoint, startJointPos, false);

        int i = startJoint + 1;

        while (i < chain.BoneCount)
        {
            chain.AttachBoneToParent(i, false);
            i++;
        }
    }