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; } }
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; } }
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); }
// 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); }