DetectRootNodeBone() public static method

public static DetectRootNodeBone ( BipedReferences references ) : Transform
references BipedReferences
return UnityEngine.Transform
Ejemplo n.º 1
0
 private void AutoDetectReferences()
 {
     this.references = new BipedReferences();
     BipedReferences.AutoDetectReferences(ref this.references, base.transform, new BipedReferences.AutoDetectParams(true, false));
     this.solver.rootNode = IKSolverFullBodyBiped.DetectRootNodeBone(this.references);
     this.solver.SetToReferences(this.references, this.solver.rootNode);
 }
Ejemplo n.º 2
0
        void AutoDetectReferences()
        {
            references = new BipedReferences();
            BipedReferences.AutoDetectReferences(ref references, transform, new BipedReferences.AutoDetectParams(true, false));

            solver.rootNode = IKSolverFullBodyBiped.DetectRootNodeBone(references);

            solver.SetToReferences(references, solver.rootNode);
        }
Ejemplo n.º 3
0
        protected override void OnEnableVirtual()
        {
            references = serializedObject.FindProperty("references");

            // Autodetecting References
            if (script.references.IsEmpty(false) && script.enabled)
            {
                BipedReferences.AutoDetectReferences(ref script.references, script.transform, new BipedReferences.AutoDetectParams(true, false));

                script.solver.rootNode = IKSolverFullBodyBiped.DetectRootNodeBone(script.references);

                Initiate();

                if (Application.isPlaying)
                {
                    Warning.Log("Biped references were auto-detected on a FullBodyBipedIK component that was added in runtime. Note that this only happens in the Editor and if the GameObject is selected (for quick and convenient debugging). If you want to add FullBodyBipedIK dynamically in runtime via script, you will have to use BipedReferences.AutodetectReferences() for automatic biped detection.", script.transform);
                }

                references.isExpanded = !script.references.isValid;
            }
        }
Ejemplo n.º 4
0
        public void SetToReferences(BipedReferences references, Transform rootNode = null)
        {
            this.root = references.root;
            if (rootNode == null)
            {
                rootNode = IKSolverFullBodyBiped.DetectRootNodeBone(references);
            }
            this.rootNode = rootNode;
            if (this.chain == null || this.chain.Length != 5)
            {
                this.chain = new FBIKChain[5];
            }
            for (int i = 0; i < this.chain.Length; i++)
            {
                if (this.chain[i] == null)
                {
                    this.chain[i] = new FBIKChain();
                }
            }
            this.chain[0].pin = 0f;
            this.chain[0].SetNodes(new Transform[]
            {
                rootNode
            });
            this.chain[0].children = new int[]
            {
                1,
                2,
                3,
                4
            };
            this.chain[1].SetNodes(new Transform[]
            {
                references.leftUpperArm,
                references.leftForearm,
                references.leftHand
            });
            this.chain[2].SetNodes(new Transform[]
            {
                references.rightUpperArm,
                references.rightForearm,
                references.rightHand
            });
            this.chain[3].SetNodes(new Transform[]
            {
                references.leftThigh,
                references.leftCalf,
                references.leftFoot
            });
            this.chain[4].SetNodes(new Transform[]
            {
                references.rightThigh,
                references.rightCalf,
                references.rightFoot
            });
            if (this.effectors.Length != 9)
            {
                this.effectors = new IKEffector[]
                {
                    new IKEffector(),
                    new IKEffector(),
                    new IKEffector(),
                    new IKEffector(),
                    new IKEffector(),
                    new IKEffector(),
                    new IKEffector(),
                    new IKEffector(),
                    new IKEffector()
                };
            }
            this.effectors[0].bone       = rootNode;
            this.effectors[0].childBones = new Transform[]
            {
                references.leftThigh,
                references.rightThigh
            };
            this.effectors[1].bone         = references.leftUpperArm;
            this.effectors[2].bone         = references.rightUpperArm;
            this.effectors[3].bone         = references.leftThigh;
            this.effectors[4].bone         = references.rightThigh;
            this.effectors[5].bone         = references.leftHand;
            this.effectors[6].bone         = references.rightHand;
            this.effectors[7].bone         = references.leftFoot;
            this.effectors[8].bone         = references.rightFoot;
            this.effectors[5].planeBone1   = references.leftUpperArm;
            this.effectors[5].planeBone2   = references.rightUpperArm;
            this.effectors[5].planeBone3   = rootNode;
            this.effectors[6].planeBone1   = references.rightUpperArm;
            this.effectors[6].planeBone2   = references.leftUpperArm;
            this.effectors[6].planeBone3   = rootNode;
            this.effectors[7].planeBone1   = references.leftThigh;
            this.effectors[7].planeBone2   = references.rightThigh;
            this.effectors[7].planeBone3   = rootNode;
            this.effectors[8].planeBone1   = references.rightThigh;
            this.effectors[8].planeBone2   = references.leftThigh;
            this.effectors[8].planeBone3   = rootNode;
            this.chain[0].childConstraints = new FBIKChain.ChildConstraint[]
            {
                new FBIKChain.ChildConstraint(references.leftUpperArm, references.rightThigh, 0f, 1f),
                new FBIKChain.ChildConstraint(references.rightUpperArm, references.leftThigh, 0f, 1f),
                new FBIKChain.ChildConstraint(references.leftUpperArm, references.rightUpperArm, 0f, 0f),
                new FBIKChain.ChildConstraint(references.leftThigh, references.rightThigh, 0f, 0f)
            };
            Transform[] array = new Transform[references.spine.Length + 1];
            array[0] = references.pelvis;
            for (int j = 0; j < references.spine.Length; j++)
            {
                array[j + 1] = references.spine[j];
            }
            if (this.spineMapping == null)
            {
                this.spineMapping            = new IKMappingSpine();
                this.spineMapping.iterations = 3;
            }
            this.spineMapping.SetBones(array, references.leftUpperArm, references.rightUpperArm, references.leftThigh, references.rightThigh);
            int num = (!(references.head != null)) ? 0 : 1;

            if (this.boneMappings.Length != num)
            {
                this.boneMappings = new IKMappingBone[num];
                for (int k = 0; k < this.boneMappings.Length; k++)
                {
                    this.boneMappings[k] = new IKMappingBone();
                }
                if (num == 1)
                {
                    this.boneMappings[0].maintainRotationWeight = 0f;
                }
            }
            if (this.boneMappings.Length > 0)
            {
                this.boneMappings[0].bone = references.head;
            }
            if (this.limbMappings.Length != 4)
            {
                this.limbMappings = new IKMappingLimb[]
                {
                    new IKMappingLimb(),
                    new IKMappingLimb(),
                    new IKMappingLimb(),
                    new IKMappingLimb()
                };
                this.limbMappings[2].maintainRotationWeight = 1f;
                this.limbMappings[3].maintainRotationWeight = 1f;
            }
            this.limbMappings[0].SetBones(references.leftUpperArm, references.leftForearm, references.leftHand, IKSolverFullBodyBiped.GetLeftClavicle(references));
            this.limbMappings[1].SetBones(references.rightUpperArm, references.rightForearm, references.rightHand, IKSolverFullBodyBiped.GetRightClavicle(references));
            this.limbMappings[2].SetBones(references.leftThigh, references.leftCalf, references.leftFoot, null);
            this.limbMappings[3].SetBones(references.rightThigh, references.rightCalf, references.rightFoot, null);
            if (Application.isPlaying)
            {
                base.Initiate(references.root);
            }
        }