public Skeleton Detect(Bvh bvh)
        {
            var root = new BvhBone(bvh.Root.Name, Vector3.zero);

            root.Build(bvh.Root);
            return(Detect(root.Traverse().Select(x => (IBone)x).ToList()));
        }
        public Skeleton Detect(Transform t)
        {
            var root = new BvhBone(t.name, Vector3.zero);

            root.Build(t);
            return(Detect(root.Traverse().Select(x => (IBone)x).ToList()));
        }
        public void Build(Transform t)
        {
            foreach (Transform child in t)
            {
                var childBone = new BvhBone(child.name, SkeletonLoacalPosition + child.localPosition);
                childBone.Parent = this;
                _children.Add(childBone);

                childBone.Build(child);
            }
        }
        public void Build(BvhNode node)
        {
            foreach (var child in node.Children)
            {
                var childBone = new BvhBone(child.Name, SkeletonLoacalPosition + child.Offset.ToXReversedVector3());
                childBone.Parent = this;
                _children.Add(childBone);

                childBone.Build(child);
            }
        }