Esempio n. 1
0
        public static HumanDescription CreateHumanDescription(UMAData umaData, UmaTPose umaTPose)
        {
            var res = new HumanDescription();

            res.armStretch    = 0;
            res.feetSpacing   = 0;
            res.legStretch    = 0;
            res.lowerArmTwist = 0.2f;
            res.lowerLegTwist = 1f;
            res.upperArmTwist = 0.5f;
            res.upperLegTwist = 0.1f;

            var animatedBones = umaData.GetAnimatedBones();

            if (animatedBones.Length > 0)
            {
                List <SkeletonBone> animatedSkeleton = new List <SkeletonBone>(umaTPose.boneInfo);

                foreach (var animatedBoneHash in animatedBones)
                {
                    var animatedBone = umaData.GetBoneGameObject(animatedBoneHash).transform;

                    var sb = new SkeletonBone();
                    sb.name     = animatedBone.name;
                    sb.position = animatedBone.localPosition;
                    sb.rotation = animatedBone.localRotation;
                    sb.scale    = animatedBone.localScale;
                    animatedSkeleton.Add(sb);
                }
                res.skeleton = animatedSkeleton.ToArray();
            }
            else
            {
                res.skeleton = umaTPose.boneInfo;
            }

//			List<HumanBone> animatedHuman = new List<HumanBone>();
//			foreach (HumanBone bone in umaTPose.humanInfo) {
//				int animIndex = System.Array.IndexOf(umaData.animatedBones, bone.boneName);
//				if (animIndex > -1) {
//					animatedHuman.Add(bone);
//				}
//				else {
//					int traitIndex = System.Array.IndexOf(HumanTrait.BoneName, bone.humanName);
//					if (HumanTrait.RequiredBone(traitIndex)) {
//						animatedHuman.Add(bone);
//					}
//				}
//			}
//			List<SkeletonBone> animatedSkeleton = new List<SkeletonBone>();
//			foreach (SkeletonBone bone in umaTPose.boneInfo) {
//				int animIndex = System.Array.IndexOf(umaData.animatedBones, bone.name);
//				if (animIndex > -1) {
//					animatedSkeleton.Add(bone);
//				}
//			}
//			res.human = animatedHuman.ToArray();
//			res.skeleton = animatedSkeleton.ToArray();
            res.human = umaTPose.humanInfo;

            res.skeleton[0].name = umaData.umaRoot.name;
            SkeletonModifier(umaData, ref res.skeleton);
            return(res);
        }