Exemple #1
0
        public BonePose AddBone(Bone _boneId, bool useSideBones = false)
        {
            BonePose newBonePose = new BonePose();

            SideBone sideBone = BoneReference.HumanoidSideBone(_boneId);

            if (sideBone == SideBone.None)
            {
                newBonePose.boneRef = new BoneReference()
                {
                    type   = BoneType.AllBones,
                    boneId = _boneId
                };
            }
            else
            {
                newBonePose.boneRef = new BoneReference()
                {
                    type       = BoneType.SideBones,
                    sideBoneId = sideBone
                };
            }
            newBonePose.translation = Vector3.zero;
            newBonePose.rotation    = Quaternion.identity;
            bonePoses.Add(newBonePose);

            return(newBonePose);
        }
        private void StartFinger(Side side, FingersTarget.TargetedFinger finger, int fingerIx)
        {
            SideBone sideBoneId = BoneReference.HumanoidSideBone((Finger)fingerIx, FingerBone.Proximal);

            fingerSensors[fingerIx, 0] = neuronTracker.device.GetBone(0, side, sideBoneId);

            sideBoneId = BoneReference.HumanoidSideBone((Finger)fingerIx, FingerBone.Intermediate);
            fingerSensors[fingerIx, 1] = neuronTracker.device.GetBone(0, side, sideBoneId);

            sideBoneId = BoneReference.HumanoidSideBone((Finger)fingerIx, FingerBone.Distal);
            fingerSensors[fingerIx, 2] = neuronTracker.device.GetBone(0, side, sideBoneId);
        }
        private void PresetReferenceBone(BoneReference bone, ref BoneReference referenceBone)
        {
            if (referenceBone.boneId != Bone.None)
            {
                return;
            }

            if (bone.isFacialBone)
            {
                referenceBone.centerBoneId = CenterBone.Head;
            }
            if (bone.isHandBone)
            {
                referenceBone.sideBoneId = SideBone.Hand;
                referenceBone.type       = BoneType.SideBones;
            }
        }
Exemple #4
0
        public BonePose CheckBone(Bone boneId, bool useSideBones = false)
        {
            BonePose bone;

            if (useSideBones)
            {
                SideBone sideBone = BoneReference.HumanoidSideBone(boneId);
                bone = GetSideBone(sideBone);
            }
            else
            {
                bone = GetBone(boneId);
            }
            if (bone == null)
            {
                bone = AddBone(boneId, useSideBones);
            }
            return(bone);
        }
        public void SetReferenceLocal(HumanoidControl humanoid, Side side = Side.AnySide)
        {
            if (side == Side.AnySide)
            {
                if (boneRef.boneId < 0 || boneRef.boneId > Bone.Count)
                {
                    return;
                }

                HumanoidTarget.TargetedBone targetedBone = humanoid.GetBone(boneRef.boneId);
                if (targetedBone.parent == null)
                {
                    SetReferenceRoot();
                }
                else
                {
                    referenceBoneRef.type   = BoneType.AllBones;
                    referenceBoneRef.boneId = targetedBone.parent.boneId;
                }
            }
            else
            {
                if (boneRef.sideBoneId < 0 || boneRef.sideBoneId > SideBone.Count)
                {
                    return;
                }

                HumanoidTarget.TargetedBone targetedBone = humanoid.GetBone(side, boneRef.sideBoneId);
                if (targetedBone.parent == null)
                {
                    SetReferenceRoot();
                }
                else
                {
                    referenceBoneRef.type = BoneType.SideBones;
                    SideBone parentSideBoneId = BoneReference.HumanoidSideBone(targetedBone.parent.boneId);
                    referenceBoneRef.sideBoneId = parentSideBoneId;
                }
            }
        }
        private void BoneSelector(ref BoneReference bone)
        {
            switch (bone.type)
            {
            case BoneType.AllBones:
                bone.boneId = (Bone)EditorGUILayout.EnumPopup(bone.boneId);
                return;

            case BoneType.CenterBones:
                CenterBone centerBone = (CenterBone)EditorGUILayout.EnumPopup(bone.centerBoneId);
                if (centerBone != CenterBone.Unknown)
                {
                    bone.centerBoneId = centerBone;
                }
                return;

            case BoneType.SideBones:
                if (bone.boneId == Bone.None)
                {
                    SideBone sideBoneId = bone.sideBoneId;
                    bone.sideBoneId = (SideBone)EditorGUILayout.EnumPopup(sideBoneId);
                }
                else
                {
                    bone.sideBoneId = (SideBone)EditorGUILayout.EnumPopup(bone.sideBoneId);
                }
                bone.side = (Side)EditorGUILayout.EnumPopup(bone.side, GUILayout.Width(80));
                return;

            case BoneType.FaceBones:
                bone.faceBoneId = (FacialBone)EditorGUILayout.EnumPopup(bone.faceBoneId);
                return;

            default:
                return;
            }
        }
Exemple #7
0
        public override void Deserialize(MoDeserializer archive)
        {
            if (archive.ReadByteString(30).TrimNull() != Signature)
            {
                throw new ArgumentException("Unsupported or invalid .pmm file");
            }

            OutputSize         = archive.Deserialize <SizeWrapper>().Value;
            TimelinePanelWidth = archive.ReadInt32();
            AngleOfView        = archive.ReadSingle();
            IsModelSelected    = archive.ReadByte() == 0;
            PanelExpansion     = archive.Deserialize <PanelExpansion>();
            SelectedModelIndex = archive.ReadByte();

            Models = archive.DeserializeList <Model>((int)archive.ReadByte());
            Camera = archive.Deserialize <Camera>();
            Light  = archive.Deserialize <Light>();

            SelectedAccessoryIndex         = archive.ReadByte();
            TimelinePanelTopAccessoryIndex = archive.ReadInt32();
            AccessoriesCount = archive.ReadByte();
            for (int i = 0; i < AccessoriesCount; i++)
            {
                archive.ReadByteString(100);
            }

            Accessories = archive.DeserializeList <Accessory>(AccessoriesCount);

            TimelinePanelStatus = archive.Deserialize <TimelinePanelState>();
            BoneSelectionType   = (DomainModels.Components.BoneSelectionType)archive.ReadInt32();
            CameraFollowingType = (DomainModels.Components.CameraFollowingType)archive.ReadByte();
            PreviewPanel        = archive.Deserialize <PreviewPanel>();
            Media = archive.Deserialize <Media>();

            IsInformationVisible   = archive.ReadByte() == 1;
            IsAxesVisible          = archive.ReadByte() == 1;
            IsSurfaceShadowEnabled = archive.ReadByte() == 1;
            FpsLimit            = archive.ReadSingle();
            ScreenCapturingMode = (DomainModels.Components.ScreenCaptureMode)archive.ReadInt32();
            AccessoryRenderedAfterModelIndex = archive.ReadInt32();
            SurfaceShadowBrightness          = archive.ReadSingle();
            IsSurfaceShadowTransparent       = archive.ReadByte() == 1;
            PhysicsMode = (DomainModels.Components.PhysicsMode)archive.ReadByte();

            Gravity           = archive.Deserialize <Gravity>();
            SelfShadow        = archive.Deserialize <SelfShadow>();
            EdgeColor         = archive.Deserialize <Int32ColorWrapper>().Value;
            IsBackgroundBlack = archive.ReadByte() == 1;

            // huh?
            CameraFollowingBone = new BoneReference(archive.ReadInt32(), archive.ReadInt32());

            // unknown 64bits sequence
            for (int i = 0; i < 64; i++)
            {
                archive.ReadByte();
            }
            IsFollowingViewEnabled = archive.ReadByte() == 1;
            archive.ReadByte(); // unknown
            IsGroundPhysicsEnabled = archive.ReadByte() == 1;
            FrameJumpingBoxValue   = archive.ReadInt32();

            archive.ReadByte(); // after v9.24, this will be 1 that represents trailing section has valid data.
            RangeSelections = archive.DeserializeList <RangeSelection>(Models.Count);
        }
Exemple #8
0
 // boneNames convention:
 // 0 = UMA
 // 1 = MCS / Morph3D
 // 2 = AutoDesk
 public static void GetDefaultBone(Animator rig, ref Transform boneTransform, Bone boneId, params string[] boneNames)
 {
     GetDefaultBone(rig, ref boneTransform, BoneReference.HumanBodyBone(boneId), boneNames);
 }