diff --git a/Editor/AnimationRigging/GroundingConstraintEditor.cs b/Editor/AnimationRigging/GroundingConstraintEditor.cs index 356fa2f3..5a441c32 100644 --- a/Editor/AnimationRigging/GroundingConstraintEditor.cs +++ b/Editor/AnimationRigging/GroundingConstraintEditor.cs @@ -57,17 +57,20 @@ private void FindHips(GroundingConstraint constraint) { IGroundingData groundingData = constraint.data; Transform hipsTransform = null; + bool isFullSkeleton = groundingData.ConstraintSkeleton.GetSkeletonType() == OVRSkeleton.SkeletonType.FullBody; + if (groundingData.ConstraintSkeleton != null) { hipsTransform = RiggingUtilities.FindBoneTransformFromCustomSkeleton( groundingData.ConstraintSkeleton, - OVRSkeleton.BoneId.Body_Hips); + isFullSkeleton ? OVRSkeleton.BoneId.FullBody_Hips : OVRSkeleton.BoneId.Body_Hips); } else { hipsTransform = RiggingUtilities.FindBoneTransformAnimator( groundingData.ConstraintAnimator, - OVRSkeleton.BoneId.Body_Hips); + isFullSkeleton ? OVRSkeleton.BoneId.FullBody_Hips : OVRSkeleton.BoneId.Body_Hips, + groundingData.ConstraintAnimator.GetComponent().GetSkeletonType() == OVRSkeleton.SkeletonType.FullBody); } if (hipsTransform == null) { diff --git a/Editor/Tracking/CorrectivesFaceEditor.cs b/Editor/Tracking/CorrectivesFaceEditor.cs index fd82ff04..b1e1602e 100644 --- a/Editor/Tracking/CorrectivesFaceEditor.cs +++ b/Editor/Tracking/CorrectivesFaceEditor.cs @@ -13,12 +13,18 @@ public class CorrectivesFaceEditor : OVRCustomFaceEditor { private SerializedProperty _blendshapeModifier; private SerializedProperty _combinationShapesTextAsset; + private SerializedProperty _forceJawDropForTongue; + private SerializedProperty _tongueOutThreshold; + private SerializedProperty _minJawDrop; protected override void OnEnable() { base.OnEnable(); _blendshapeModifier = serializedObject.FindProperty("_blendshapeModifier"); _combinationShapesTextAsset = serializedObject.FindProperty("_combinationShapesTextAsset"); + _forceJawDropForTongue = serializedObject.FindProperty("_forceJawDropForTongue"); + _tongueOutThreshold = serializedObject.FindProperty("_tongueOutThreshold"); + _minJawDrop = serializedObject.FindProperty("_minJawDrop"); } /// @@ -29,9 +35,16 @@ public override void OnInspectorGUI() serializedObject.Update(); EditorGUILayout.ObjectField(_blendshapeModifier, - new GUIContent("Blend shape modifiers (optional)")); + new GUIContent("Blendshape Modifiers (Optional)")); EditorGUILayout.ObjectField(_combinationShapesTextAsset, - new GUIContent("Combination shapes text (Optional)")); + new GUIContent("Combination Shapes Text (Optional)")); + + EditorGUILayout.PropertyField(_forceJawDropForTongue); + if (_forceJawDropForTongue.boolValue) + { + EditorGUILayout.PropertyField(_tongueOutThreshold); + EditorGUILayout.PropertyField(_minJawDrop); + } serializedObject.ApplyModifiedProperties(); } diff --git a/Editor/Utils/FullBodyHelperMenus.cs b/Editor/Utils/FullBodyHelperMenus.cs new file mode 100644 index 00000000..ddb1bd01 --- /dev/null +++ b/Editor/Utils/FullBodyHelperMenus.cs @@ -0,0 +1,562 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using Oculus.Interaction.Input; +using Oculus.Movement.AnimationRigging; +using System; +using System.Collections.Generic; +using System.Reflection; +using UnityEditor; +using UnityEngine; +using UnityEngine.Animations.Rigging; +using static Oculus.Movement.AnimationRigging.RetargetedBoneTargets; +using static OVRUnityHumanoidSkeletonRetargeter; + +namespace Oculus.Movement.Utils +{ + /// + /// Provides useful menus to help one set up tracking technologies + /// on characters. + /// + internal static class FullBodyHelperMenus + { + private const string _MOVEMENT_SAMPLES_MENU = + "GameObject/Movement Samples/"; + private const string _MOVEMENT_SAMPLES_BT_MENU = + "Body Tracking/"; + + private const string _ANIM_RIGGING_RETARGETING_FULL_BODY_MENU_CONSTRAINTS = + "Animation Rigging Retargeting (full body) (constraints)"; + + [MenuItem(_MOVEMENT_SAMPLES_MENU + _MOVEMENT_SAMPLES_BT_MENU + _ANIM_RIGGING_RETARGETING_FULL_BODY_MENU_CONSTRAINTS)] + private static void SetupCharacterForAnimationRiggingRetargetingConstraints() + { + var activeGameObject = Selection.activeGameObject; + + try + { + ValidGameObjectForAnimationRigging(activeGameObject); + } + catch (InvalidOperationException e) + { + EditorUtility.DisplayDialog("Retargeting setup error.", e.Message, "Ok"); + return; + } + + Undo.IncrementCurrentGroup(); + + // Add the retargeting and body tracking components at root first. + RetargetingLayer retargetingLayer = AddMainRetargetingComponents(activeGameObject); + + GameObject rigObject; + RigBuilder rigBuilder; + (rigBuilder, rigObject) = AddBasicAnimationRiggingComponents(activeGameObject); + + List constraintMonos = new List(); + RetargetingAnimationConstraint retargetConstraint = + AddRetargetingConstraint(rigObject, retargetingLayer); + retargetingLayer.RetargetingConstraint = retargetConstraint; + constraintMonos.Add(retargetConstraint); + + Animator animatorComp = activeGameObject.GetComponent(); + + // Destroy old components + DestroyBoneTarget(rigObject, "LeftHandTarget"); + DestroyBoneTarget(rigObject, "RightHandTarget"); + DestroyBoneTarget(rigObject, "LeftElbowTarget"); + DestroyBoneTarget(rigObject, "RightElbowTarget"); + DestroyTwoBoneIKConstraint(rigObject, "LeftArmIK"); + DestroyTwoBoneIKConstraint(rigObject, "RightArmIK"); + + // Full body deformation. + RetargetedBoneTarget[] spineBoneTargets = AddSpineBoneTargets(rigObject, animatorComp); + FullBodyDeformationConstraint deformationConstraint = + AddDeformationConstraint(rigObject, animatorComp, spineBoneTargets); + constraintMonos.Add(deformationConstraint); + + // Setup retargeted bone targets. + AddRetargetedBoneTargetComponent(activeGameObject, spineBoneTargets); + + // Hand blend constraints. + AddHandBlendConstraint(activeGameObject, null, + retargetingLayer, OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandWrist, + animatorComp.GetBoneTransform(HumanBodyBones.Head)); + + AddHandBlendConstraint(activeGameObject, null, + retargetingLayer, OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandWrist, + animatorComp.GetBoneTransform(HumanBodyBones.Head)); + + // Add final components to tie everything together. + AddAnimationRiggingLayer(activeGameObject, retargetingLayer, rigBuilder, + constraintMonos.ToArray(), retargetingLayer); + + // Add retargeting processors to the retargeting layer. + AddCorrectBonesRetargetingProcessor(retargetingLayer); + AddCorrectHandRetargetingProcessor(retargetingLayer, Handedness.Left); + AddCorrectHandRetargetingProcessor(retargetingLayer, Handedness.Right); + + // Add full body hand deformation. + AddFullBodyHandDeformation(activeGameObject, animatorComp, retargetingLayer); + + Undo.SetCurrentGroupName("Setup Animation Rigging Retargeting"); + } + private static void AddCorrectBonesRetargetingProcessor(RetargetingLayer retargetingLayer) + { + bool needCorrectBones = true; + foreach (var processor in retargetingLayer.RetargetingProcessors) + { + if (processor as RetargetingProcessorCorrectBones != null) + { + needCorrectBones = false; + } + } + + if (needCorrectBones) + { + var retargetingProcessorCorrectBones = ScriptableObject.CreateInstance(); + Undo.RegisterCreatedObjectUndo(retargetingProcessorCorrectBones, "Create correct bones retargeting processor."); + Undo.RecordObject(retargetingLayer, "Add retargeting processor to retargeting layer."); + retargetingProcessorCorrectBones.name = "CorrectBones"; + retargetingLayer.AddRetargetingProcessor(retargetingProcessorCorrectBones); + } + } + + private static void AddCorrectHandRetargetingProcessor(RetargetingLayer retargetingLayer, Handedness handedness) + { + bool needCorrectHand = true; + foreach (var processor in retargetingLayer.RetargetingProcessors) + { + var correctHand = processor as RetargetingProcessorCorrectHand; + if (correctHand != null) + { + if (correctHand.Handedness == handedness) + { + needCorrectHand = false; + } + } + } + + if (needCorrectHand) + { + var retargetingProcessorCorrectHand = ScriptableObject.CreateInstance(); + var handednessString = handedness == Handedness.Left ? "Left" : "Right"; + Undo.RegisterCreatedObjectUndo(retargetingProcessorCorrectHand, $"Create correct hand ({handednessString}) retargeting processor."); + Undo.RecordObject(retargetingLayer, "Add retargeting processor to retargeting layer."); + retargetingProcessorCorrectHand.Handedness = handedness; + retargetingProcessorCorrectHand.HandIKType = RetargetingProcessorCorrectHand.IKType.CCDIK; + retargetingProcessorCorrectHand.name = $"Correct{handednessString}Hand"; + retargetingLayer.AddRetargetingProcessor(retargetingProcessorCorrectHand); + } + } + + private static RetargetedBoneTarget[] AddSpineBoneTargets(GameObject rigObject, Animator animator) + { + var boneTargets = new List(); + Transform hipsTarget = AddSpineTarget(rigObject, "HipsTarget", + animator.GetBoneTransform(HumanBodyBones.Hips)); + Transform spineLowerTarget = AddSpineTarget(rigObject, "SpineLowerTarget", + animator.GetBoneTransform(HumanBodyBones.Spine)); + Transform spineUpperTarget = AddSpineTarget(rigObject, "SpineUpperTarget", + animator.GetBoneTransform(HumanBodyBones.Chest)); + Transform chestTarget = AddSpineTarget(rigObject, "ChestTarget", + animator.GetBoneTransform(HumanBodyBones.UpperChest)); + Transform neckTarget = AddSpineTarget(rigObject, "NeckTarget", + animator.GetBoneTransform(HumanBodyBones.Neck)); + Transform headTarget = AddSpineTarget(rigObject, "HeadTarget", + animator.GetBoneTransform(HumanBodyBones.Head)); + + Tuple[] bonesToRetarget = + { + new(OVRSkeleton.BoneId.FullBody_Hips, hipsTarget), + new(OVRSkeleton.BoneId.FullBody_SpineLower, spineLowerTarget), + new(OVRSkeleton.BoneId.FullBody_SpineUpper, spineUpperTarget), + new(OVRSkeleton.BoneId.FullBody_Chest, chestTarget), + new(OVRSkeleton.BoneId.FullBody_Neck, neckTarget), + new(OVRSkeleton.BoneId.FullBody_Head, headTarget), + }; + + foreach (var boneToRetarget in bonesToRetarget) + { + RetargetedBoneTarget boneRTTarget = new RetargetedBoneTarget(); + boneRTTarget.BoneId = boneToRetarget.Item1; + boneRTTarget.Target = boneToRetarget.Item2; + boneRTTarget.HumanBodyBone = OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[boneRTTarget.BoneId]; + boneTargets.Add(boneRTTarget); + } + return boneTargets.ToArray(); + } + + private static RetargetingLayer AddMainRetargetingComponents(GameObject mainParent) + { + RetargetingLayer retargetingLayer = mainParent.GetComponent(); + + // Check for old retargeting layer first. + RetargetingLayer baseRetargetingLayer = mainParent.GetComponent(); + if (retargetingLayer == null && baseRetargetingLayer != null) + { + Undo.DestroyObjectImmediate(baseRetargetingLayer); + } + + if (!retargetingLayer) + { + retargetingLayer = mainParent.AddComponent(); + Undo.RegisterCreatedObjectUndo(retargetingLayer, "Add Retargeting Layer"); + } + + var bodySectionToPosition = + typeof(OVRUnityHumanoidSkeletonRetargeter).GetField( + "_fullBodySectionToPosition", + BindingFlags.Instance | BindingFlags.NonPublic); + + if (bodySectionToPosition != null) + { + bodySectionToPosition.SetValue(retargetingLayer, new[] + { + OVRHumanBodyBonesMappings.BodySection.LeftArm, + OVRHumanBodyBonesMappings.BodySection.RightArm, + OVRHumanBodyBonesMappings.BodySection.LeftHand, + OVRHumanBodyBonesMappings.BodySection.RightHand, + OVRHumanBodyBonesMappings.BodySection.Hips, + OVRHumanBodyBonesMappings.BodySection.Back, + OVRHumanBodyBonesMappings.BodySection.Neck, + OVRHumanBodyBonesMappings.BodySection.Head, + OVRHumanBodyBonesMappings.BodySection.LeftLeg, + OVRHumanBodyBonesMappings.BodySection.LeftFoot, + OVRHumanBodyBonesMappings.BodySection.RightLeg, + OVRHumanBodyBonesMappings.BodySection.RightFoot + }); + } + + OVRBody bodyComp = mainParent.GetComponent(); + if (!bodyComp) + { + bodyComp = mainParent.AddComponent(); + Undo.RegisterCreatedObjectUndo(bodyComp, "Add OVRBody component"); + } + + typeof(RetargetingLayer).GetField( + "_skeletonType", BindingFlags.Instance | BindingFlags.NonPublic)?.SetValue( + retargetingLayer, OVRSkeleton.SkeletonType.FullBody); + typeof(OVRBody).GetField( + "_providedSkeletonType", BindingFlags.Instance | BindingFlags.NonPublic)?.SetValue( + bodyComp, OVRPlugin.BodyJointSet.FullBody); + + retargetingLayer.EnableTrackingByProxy = true; + PrefabUtility.RecordPrefabInstancePropertyModifications(retargetingLayer); + PrefabUtility.RecordPrefabInstancePropertyModifications(bodyComp); + + return retargetingLayer; + } + + private static (RigBuilder, GameObject) AddBasicAnimationRiggingComponents(GameObject mainParent) + { + Rig rigComponent = mainParent.GetComponentInChildren(); + if (!rigComponent) + { + // Create rig for constraints. + GameObject rigObject = new GameObject("Rig"); + rigComponent = rigObject.AddComponent(); + rigComponent.weight = 1.0f; + Undo.RegisterCreatedObjectUndo(rigObject, "Create Rig"); + } + + RigBuilder rigBuilder = mainParent.GetComponent(); + if (!rigBuilder) + { + rigBuilder = mainParent.AddComponent(); + rigBuilder.layers = new System.Collections.Generic.List + { + new RigLayer(rigComponent, true) + }; + Undo.RegisterCreatedObjectUndo(rigBuilder, "Create RigBuilder"); + } + + Undo.SetTransformParent(rigComponent.transform, mainParent.transform, "Add Rig to Main Parent"); + Undo.RegisterCompleteObjectUndo(rigComponent, "Rig Component Transform init"); + rigComponent.transform.localPosition = Vector3.zero; + rigComponent.transform.localRotation = Quaternion.identity; + rigComponent.transform.localScale = Vector3.one; + + return (rigBuilder, rigComponent.gameObject); + } + + private static RetargetingAnimationConstraint AddRetargetingConstraint( + GameObject rigObject, RetargetingLayer retargetingLayer) + { + RetargetingAnimationConstraint retargetConstraint = + rigObject.GetComponentInChildren(true); + if (retargetConstraint == null) + { + GameObject retargetingAnimConstraintObj = + new GameObject("RetargetingConstraint"); + retargetConstraint = + retargetingAnimConstraintObj.AddComponent(); + Undo.RegisterCreatedObjectUndo(retargetingAnimConstraintObj, "Create Retargeting Constraint"); + + Undo.SetTransformParent(retargetingAnimConstraintObj.transform, rigObject.transform, "Add Retarget Constraint to Rig"); + Undo.RegisterCompleteObjectUndo(retargetingAnimConstraintObj, "Retarget Constraint Transform Init"); + retargetConstraint.transform.localPosition = Vector3.zero; + retargetConstraint.transform.localRotation = Quaternion.identity; + retargetConstraint.transform.localScale = Vector3.one; + + // keep retargeter disabled until it initializes properly + retargetConstraint.gameObject.SetActive(false); + } + retargetConstraint.RetargetingLayerComp = retargetingLayer; + PrefabUtility.RecordPrefabInstancePropertyModifications(retargetConstraint); + return retargetConstraint; + } + + private static void AddAnimationRiggingLayer(GameObject mainParent, + OVRSkeleton skeletalComponent, RigBuilder rigBuilder, + MonoBehaviour[] constraintComponents, + RetargetingLayer retargetingLayer) + { + AnimationRigSetup rigSetup = mainParent.GetComponent(); + if (rigSetup) + { + return; + } + rigSetup = mainParent.AddComponent(); + rigSetup.Skeleton = skeletalComponent; + var animatorComponent = mainParent.GetComponent(); + rigSetup.AnimatorComp = animatorComponent; + rigSetup.RigbuilderComp = rigBuilder; + if (constraintComponents != null) + { + foreach (var constraintComponent in constraintComponents) + { + rigSetup.AddSkeletalConstraint(constraintComponent); + } + } + rigSetup.RebindAnimator = true; + rigSetup.ReEnableRig = true; + rigSetup.RetargetingLayerComp = retargetingLayer; + rigSetup.CheckSkeletalUpdatesByProxy = true; + + Undo.RegisterCreatedObjectUndo(rigSetup, "Create Anim Rig Setup"); + } + + private static FullBodyDeformationConstraint AddDeformationConstraint( + GameObject rigObject, Animator animator, RetargetedBoneTarget[] spineBoneTargets) + { + FullBodyDeformationConstraint deformationConstraint = + rigObject.GetComponentInChildren(); + DeformationConstraint baseDeformationConstraint = + rigObject.GetComponentInChildren(); + if (deformationConstraint == null && baseDeformationConstraint != null) + { + Undo.DestroyObjectImmediate(baseDeformationConstraint.gameObject); + } + if (deformationConstraint == null) + { + GameObject deformationConstraintObject = + new GameObject("Deformation"); + deformationConstraint = + deformationConstraintObject.AddComponent(); + + Undo.RegisterCreatedObjectUndo(deformationConstraintObject, "Create Deformation"); + + Undo.SetTransformParent(deformationConstraintObject.transform, rigObject.transform, + $"Add Deformation Constraint to Rig"); + Undo.RegisterCompleteObjectUndo(deformationConstraintObject, + $"Deformation Constraint Transform Init"); + deformationConstraintObject.transform.localPosition = Vector3.zero; + deformationConstraintObject.transform.localRotation = Quaternion.identity; + deformationConstraintObject.transform.localScale = Vector3.one; + + foreach (var spineBoneTarget in spineBoneTargets) + { + Undo.SetTransformParent(spineBoneTarget.Target, deformationConstraintObject.transform, + $"Parent Spine Bone Target {spineBoneTarget.Target.name} to Deformation."); + Undo.RegisterCompleteObjectUndo(spineBoneTarget.Target, + $"Spine Bone Target {spineBoneTarget.Target.name} Init"); + } + } + + deformationConstraint.data.SpineTranslationCorrectionTypeField + = FullBodyDeformationData.SpineTranslationCorrectionType.AccurateHipsAndHead; + deformationConstraint.data.SpineLowerAlignmentWeight = 1.0f; + deformationConstraint.data.SpineUpperAlignmentWeight = 0.5f; + deformationConstraint.data.ChestAlignmentWeight = 0.0f; + deformationConstraint.data.LeftShoulderWeight = 0.75f; + deformationConstraint.data.RightShoulderWeight = 0.75f; + deformationConstraint.data.LeftArmWeight = 1.0f; + deformationConstraint.data.RightArmWeight = 1.0f; + deformationConstraint.data.LeftHandWeight = 1.0f; + deformationConstraint.data.RightHandWeight = 1.0f; + deformationConstraint.data.LeftLegWeight = 1.0f; + deformationConstraint.data.RightLegWeight = 1.0f; + deformationConstraint.data.LeftToesWeight = 1.0f; + deformationConstraint.data.RightToesWeight = 1.0f; + deformationConstraint.data.AlignFeetWeight = 0.75f; + + deformationConstraint.data.AssignAnimator(animator); + deformationConstraint.data.SetUpLeftArmData(); + deformationConstraint.data.SetUpRightArmData(); + deformationConstraint.data.SetUpLeftLegData(); + deformationConstraint.data.SetUpRightLegData(); + deformationConstraint.data.SetUpHipsAndHeadBones(); + deformationConstraint.data.SetUpBonePairs(); + deformationConstraint.data.SetUpBoneTargets(deformationConstraint.transform); + deformationConstraint.data.InitializeStartingScale(); + + PrefabUtility.RecordPrefabInstancePropertyModifications(deformationConstraint); + + return deformationConstraint; + } + + private static Transform AddSpineTarget(GameObject mainParent, + string nameOfTarget, Transform targetTransform = null) + { + Transform spineTarget = + mainParent.transform.FindChildRecursive(nameOfTarget); + if (spineTarget == null) + { + GameObject spineTargetObject = + new GameObject(nameOfTarget); + Undo.RegisterCreatedObjectUndo(spineTargetObject, "Create Spine Target " + nameOfTarget); + + Undo.SetTransformParent(spineTargetObject.transform, mainParent.transform, + $"Add Spine Target {nameOfTarget} To Main Parent"); + Undo.RegisterCompleteObjectUndo(spineTargetObject, + $"Spine Target {nameOfTarget} Transform Init"); + spineTarget = spineTargetObject.transform; + } + + if (targetTransform != null) + { + spineTarget.position = targetTransform.position; + spineTarget.rotation = targetTransform.rotation; + spineTarget.localScale = targetTransform.localScale; + } + else + { + spineTarget.localPosition = Vector3.zero; + spineTarget.localRotation = Quaternion.identity; + spineTarget.localScale = Vector3.one; + } + return spineTarget; + } + + private static FullBodyRetargetedBoneTargets AddRetargetedBoneTargetComponent(GameObject mainParent, + RetargetedBoneTarget[] boneTargetsArray) + { + var boneTargets = mainParent.GetComponent(); + var baseBoneTargets = mainParent.GetComponent(); + if (boneTargets == null && baseBoneTargets != null) + { + Undo.DestroyObjectImmediate(baseBoneTargets); + } + if (boneTargets != null) + { + boneTargets.AutoAdd = mainParent.GetComponent(); + boneTargets.RetargetedBoneTargets = boneTargetsArray; + PrefabUtility.RecordPrefabInstancePropertyModifications(boneTargets); + return boneTargets; + } + FullBodyRetargetedBoneTargets retargetedBoneTargets = + mainParent.AddComponent(); + Undo.RegisterCreatedObjectUndo(retargetedBoneTargets, "Add RT bone targets"); + + retargetedBoneTargets.AutoAdd = mainParent.GetComponent(); + retargetedBoneTargets.RetargetedBoneTargets = boneTargetsArray; + + return retargetedBoneTargets; + } + + private static bool DestroyBoneTarget(GameObject mainParent, string nameOfTarget) + { + Transform handTarget = + mainParent.transform.FindChildRecursive(nameOfTarget); + if (handTarget != null) + { + Undo.DestroyObjectImmediate(handTarget); + return true; + } + return false; + } + + private static bool DestroyTwoBoneIKConstraint(GameObject rigObject, string name) + { + Transform twoBoneIKConstraintObjTransform = rigObject.transform.Find(name); + if (twoBoneIKConstraintObjTransform != null) + { + Undo.DestroyObjectImmediate(twoBoneIKConstraintObjTransform); + return true; + } + return false; + } + + private static BlendHandConstraintsFullBody AddHandBlendConstraint( + GameObject mainParent, MonoBehaviour[] constraints, RetargetingLayer retargetingLayer, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId boneIdToTest, Transform headTransform) + { + var blendHandConstraints = mainParent.GetComponents(); + var baseBlendHandConstraints = mainParent.GetComponents(); + if (blendHandConstraints.Length == 0 && baseBlendHandConstraints.Length > 0) + { + for (int i = 0; i < baseBlendHandConstraints.Length; i++) + { + Undo.DestroyObjectImmediate(baseBlendHandConstraints[i]); + } + } + foreach (var blendHandConstraint in blendHandConstraints) + { + if (blendHandConstraint.BoneIdToTest == boneIdToTest) + { + blendHandConstraint.Constraints = null; + blendHandConstraint.RetargetingLayerComp = retargetingLayer; + blendHandConstraint.BoneIdToTest = boneIdToTest; + blendHandConstraint.HeadTransform = headTransform; + blendHandConstraint.AutoAddTo = mainParent.GetComponent(); + blendHandConstraint.BlendCurve = new AnimationCurve(new Keyframe(0, 0), new Keyframe(1, 1)); + PrefabUtility.RecordPrefabInstancePropertyModifications(blendHandConstraint); + return blendHandConstraint; + } + } + BlendHandConstraintsFullBody blendConstraint = + mainParent.AddComponent(); + Undo.RegisterCreatedObjectUndo(blendConstraint, "Add blend constraint"); + + blendConstraint.Constraints = null; + blendConstraint.RetargetingLayerComp = retargetingLayer; + blendConstraint.BoneIdToTest = boneIdToTest; + blendConstraint.HeadTransform = headTransform; + blendConstraint.AutoAddTo = mainParent.GetComponent(); + blendConstraint.BlendCurve = new AnimationCurve(new Keyframe(0, 0), new Keyframe(1, 1)); + + return blendConstraint; + } + + private static void AddFullBodyHandDeformation(GameObject mainParent, + Animator animatorComp, OVRSkeleton skeletalComponent) + { + FullBodyHandDeformation fullBodyHandDeformation = + mainParent.GetComponent(); + if (fullBodyHandDeformation == null) + { + fullBodyHandDeformation = mainParent.AddComponent(); + Undo.RegisterCreatedObjectUndo(fullBodyHandDeformation, "Add full body hand deformation"); + } + + fullBodyHandDeformation.AnimatorComp = animatorComp; + fullBodyHandDeformation.Skeleton = skeletalComponent; + fullBodyHandDeformation.LeftHand = animatorComp.GetBoneTransform(HumanBodyBones.LeftHand); + fullBodyHandDeformation.RightHand = animatorComp.GetBoneTransform(HumanBodyBones.RightHand); + fullBodyHandDeformation.FingerOffsets = new FullBodyHandDeformation.FingerOffset[0]; + fullBodyHandDeformation.CalculateFingerData(); + } + + private static void ValidGameObjectForAnimationRigging(GameObject go) + { + var animatorComp = go.GetComponent(); + if (animatorComp == null || animatorComp.avatar == null + || !animatorComp.avatar.isHuman) + { + throw new InvalidOperationException( + $"Animation Rigging requires an {nameof(Animator)} " + + $"component with a Humanoid avatar."); + } + } + } +} diff --git a/Editor/Utils/ProjectValidationWindow.cs.meta b/Editor/Utils/FullBodyHelperMenus.cs.meta similarity index 83% rename from Editor/Utils/ProjectValidationWindow.cs.meta rename to Editor/Utils/FullBodyHelperMenus.cs.meta index 613408a6..d09c4cc5 100644 --- a/Editor/Utils/ProjectValidationWindow.cs.meta +++ b/Editor/Utils/FullBodyHelperMenus.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8915e4f407c956149937d6a324354e19 +guid: f8cc61b2ce4347047a85631ddf43bd43 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Editor/Utils/HelperMenus.cs b/Editor/Utils/HelperMenus.cs index 15e732d5..d6c6498e 100644 --- a/Editor/Utils/HelperMenus.cs +++ b/Editor/Utils/HelperMenus.cs @@ -11,6 +11,7 @@ using UnityEngine; using UnityEngine.Animations.Rigging; using static Oculus.Movement.AnimationRigging.RetargetedBoneTargets; +using static OVRUnityHumanoidSkeletonRetargeter; namespace Oculus.Movement.Utils { @@ -87,12 +88,12 @@ private static void SetupCharacterForAnimationRiggingRetargetingConstraints() AddRetargetedBoneTargetComponent(activeGameObject, spineBoneTargets); - AddHandBlendConstraint(activeGameObject, null, - retargetingLayer, CustomMappings.BodyTrackingBoneId.Body_LeftHandWrist, + AddHandBlendConstraint(activeGameObject, + retargetingLayer, OVRHumanBodyBonesMappings.BodyTrackingBoneId.Body_LeftHandWrist, animatorComp.GetBoneTransform(HumanBodyBones.Head)); - AddHandBlendConstraint(activeGameObject, null, - retargetingLayer, CustomMappings.BodyTrackingBoneId.Body_RightHandWrist, + AddHandBlendConstraint(activeGameObject, + retargetingLayer, OVRHumanBodyBonesMappings.BodyTrackingBoneId.Body_RightHandWrist, animatorComp.GetBoneTransform(HumanBodyBones.Head)); // Add final components to tie everything together. @@ -189,6 +190,7 @@ private static RetargetingLayer AddMainRetargetingComponents(GameObject mainPare retargetingLayer = mainParent.AddComponent(); Undo.RegisterCreatedObjectUndo(retargetingLayer, "Add Retargeting Layer"); } + retargetingLayer.EnableTrackingByProxy = true; var bodySectionToPosition = typeof(OVRUnityHumanoidSkeletonRetargeter).GetField( @@ -235,7 +237,7 @@ private static (RigBuilder, GameObject) AddBasicAnimationRiggingComponents(GameO if (!rigBuilder) { rigBuilder = mainParent.AddComponent(); - rigBuilder.layers = new System.Collections.Generic.List + rigBuilder.layers = new List { new RigLayer(rigComponent, true) }; @@ -288,9 +290,9 @@ private static void AddAnimationRiggingLayer(GameObject mainParent, { return; } + var animatorComponent = mainParent.GetComponent(); rigSetup = mainParent.AddComponent(); rigSetup.Skeleton = skeletalComponent; - var animatorComponent = mainParent.GetComponent(); rigSetup.AnimatorComp = animatorComponent; rigSetup.RigbuilderComp = rigBuilder; if (constraintComponents != null) @@ -303,6 +305,7 @@ private static void AddAnimationRiggingLayer(GameObject mainParent, rigSetup.RebindAnimator = true; rigSetup.ReEnableRig = true; rigSetup.RetargetingLayerComp = retargetingLayer; + rigSetup.CheckSkeletalUpdatesByProxy = true; Undo.RegisterCreatedObjectUndo(rigSetup, "Create Anim Rig Setup"); } @@ -387,7 +390,7 @@ private static RetargetedBoneTarget[] AddSpineBoneTargets(GameObject rigObject, RetargetedBoneTarget boneRTTarget = new RetargetedBoneTarget(); boneRTTarget.BoneId = boneToRetarget.Item1; boneRTTarget.Target = boneToRetarget.Item2; - boneRTTarget.HumanBodyBone = CustomMappings.BoneIdToHumanBodyBone[boneRTTarget.BoneId]; + boneRTTarget.HumanBodyBone = OVRHumanBodyBonesMappings.BoneIdToHumanBodyBone[boneRTTarget.BoneId]; boneTargets.Add(boneRTTarget); } return boneTargets.ToArray(); @@ -522,8 +525,8 @@ private static bool DestroyTwoBoneIKConstraint(GameObject rigObject, string name } private static BlendHandConstraints AddHandBlendConstraint( - GameObject mainParent, MonoBehaviour[] constraints, RetargetingLayer retargetingLayer, - CustomMappings.BodyTrackingBoneId boneIdToTest, Transform headTransform) + GameObject mainParent, RetargetingLayer retargetingLayer, + OVRHumanBodyBonesMappings.BodyTrackingBoneId boneIdToTest, Transform headTransform) { var blendHandConstraints = mainParent.GetComponentsInChildren(); foreach (var blendHandConstraint in blendHandConstraints) @@ -567,6 +570,11 @@ private static void ValidGameObjectForAnimationRigging(GameObject go) } } + /// + /// Validates GameObject for face mapping. + /// + /// GameObject to check. + /// Exception thrown if GameObject fails check. public static void ValidateGameObjectForFaceMapping(GameObject go) { var renderer = go.GetComponent(); diff --git a/Editor/Utils/OVRProjectSetupMovementSDKSamples.cs b/Editor/Utils/OVRProjectSetupMovementSDKSamples.cs new file mode 100644 index 00000000..cbbf8a09 --- /dev/null +++ b/Editor/Utils/OVRProjectSetupMovementSDKSamples.cs @@ -0,0 +1,133 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using UnityEditor; +using UnityEngine; + +namespace Oculus.Movement.Utils +{ + /// + /// Add project setup validation tasks for MovementSDK Samples. + /// + [InitializeOnLoad] + internal static class OVRProjectSetupMovementSDKSamplesTasks + { + /// + /// All character and mirrored character layers should exist based on their indices. + /// That is because the scene assets are assigned based on layer index. + /// + private static readonly int[] _expectedLayersIndices = + { + 10, 11 + }; + + /// + /// The HiddenMesh layer is required for RecalculateNormals to function correctly. + /// + private static readonly string _hiddenMeshLayerName = "HiddenMesh"; + + private const OVRProjectSetup.TaskGroup _group = OVRProjectSetup.TaskGroup.Features; + + static OVRProjectSetupMovementSDKSamplesTasks() + { + // Body tracking settings. + OVRProjectSetup.AddTask( + level: OVRProjectSetup.TaskLevel.Required, + group: _group, + platform: BuildTargetGroup.Android, + isDone: group => OVRRuntimeSettings.GetRuntimeSettings().BodyTrackingFidelity == OVRPlugin.BodyTrackingFidelity2.High, + message: "Body Tracking Fidelity should be set to High.", + fix: group => OVRRuntimeSettings.GetRuntimeSettings().BodyTrackingFidelity = OVRPlugin.BodyTrackingFidelity2.High, + fixMessage: "Set OVRRuntimeSettings.BodyTrackingFidelity = High" + ); + + OVRProjectSetup.AddTask( + level: OVRProjectSetup.TaskLevel.Required, + group: _group, + platform: BuildTargetGroup.Android, + isDone: group => OVRRuntimeSettings.GetRuntimeSettings().BodyTrackingJointSet == OVRPlugin.BodyJointSet.FullBody, + message: "Body Tracking Joint Set should be set to Full Body.", + fix: group => OVRRuntimeSettings.GetRuntimeSettings().BodyTrackingJointSet = OVRPlugin.BodyJointSet.FullBody, + fixMessage: "Set OVRRuntimeSettings.BodyTrackingJointSet = FullBody" + ); + + // Test layers. + OVRProjectSetup.AddTask( + level: OVRProjectSetup.TaskLevel.Recommended, + group: _group, + platform: BuildTargetGroup.Android, + isDone: group => LayerMask.NameToLayer(_hiddenMeshLayerName) != -1, + message: $"The layer '{_hiddenMeshLayerName}' needs to exist for Recalculate Normals to function properly.", + fix: group => + { + int unusedLayer = -1; + for (int i = 0; i < 32; i++) + { + if (string.IsNullOrEmpty(LayerMask.LayerToName(i))) + { + unusedLayer = i; + break; + } + } + if (LayerMask.NameToLayer(_hiddenMeshLayerName) == -1) + { + if (unusedLayer == -1) + { + Debug.LogError("All Layers are Used!"); + } + else + { + SetLayerName(unusedLayer, "HiddenMesh"); + } + } + }, + fixMessage: $"Set an unused layer to '{_hiddenMeshLayerName}'." + ); + OVRProjectSetup.AddTask( + level: OVRProjectSetup.TaskLevel.Recommended, + group: _group, + platform: BuildTargetGroup.Android, + isDone: group => + { + foreach (var layerIndex in _expectedLayersIndices) + { + if (string.IsNullOrEmpty(LayerMask.LayerToName(layerIndex))) + { + return false; + } + } + return true; + }, + message: "Layers 10 and 11 must be indexed for the samples to display correctly.", + fix: group => + { + foreach (var expectedLayerIndex in _expectedLayersIndices) + { + if (string.IsNullOrEmpty(LayerMask.LayerToName(expectedLayerIndex))) + { + // Default layer names. + string newLayerName = expectedLayerIndex == 10 ? "Character" : "MirroredCharacter"; + SetLayerName(expectedLayerIndex, newLayerName); + } + } + }, + fixMessage: "Set layers 10 and 11 to be valid layers." + ); + } + + private static void SetLayerName(int layer, string name) + { + SerializedObject tagManager = new SerializedObject(AssetDatabase.LoadAssetAtPath("ProjectSettings/TagManager.asset")); + + SerializedProperty it = tagManager.GetIterator(); + while (it.NextVisible(true)) + { + if (it.name == "layers") + { + it.GetArrayElementAtIndex(layer).stringValue = name; + break; + } + } + tagManager.ApplyModifiedProperties(); + } + } +} diff --git a/Editor/Utils/OVRProjectSetupMovementSDKSamples.cs.meta b/Editor/Utils/OVRProjectSetupMovementSDKSamples.cs.meta new file mode 100644 index 00000000..b32019e4 --- /dev/null +++ b/Editor/Utils/OVRProjectSetupMovementSDKSamples.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f7408ecc7fe859645b16f03c3c5fe4bf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Utils/ProjectValidation.cs b/Editor/Utils/ProjectValidation.cs index 5531061c..4597be18 100644 --- a/Editor/Utils/ProjectValidation.cs +++ b/Editor/Utils/ProjectValidation.cs @@ -2,6 +2,7 @@ using UnityEditor; using UnityEngine; +using UnityEngine.SceneManagement; namespace Oculus.Movement.Utils { @@ -11,54 +12,6 @@ namespace Oculus.Movement.Utils [InitializeOnLoad] public class ProjectValidation { - /// - /// All character and mirrored character layers should exist based on their indices. - /// That is because the scene assets are assigned based on layer index. - /// - private static readonly int[] _expectedLayersIndices = - { 10, 11 }; - private static readonly string[] _expectedLayersNotIndexed = { "HiddenMesh" }; - - static ProjectValidation() - { - if (!ShouldShowWindow()) - { - return; - } - - ProjectValidationWindow.ShowProjectValidationWindow(); - } - - /// - /// If all expected layers are in the project, returns true. - /// - /// True if all expected layers are in the project. - public static bool TestLayers() - { - foreach (var expectedLayer in _expectedLayersNotIndexed) - { - if (LayerMask.NameToLayer(expectedLayer) == -1) - { - return false; - } - } - - foreach (var layerIndex in _expectedLayersIndices) - { - if (LayerMask.LayerToName(layerIndex) == null) - { - return false; - } - } - - return true; - } - - private static bool ShouldShowWindow() - { - return !TestLayers(); - } - [MenuItem("Movement/Check Project Settings", priority = 100)] public static void BuildProjectAndroid64() { diff --git a/Editor/Utils/ProjectValidationWindow.cs b/Editor/Utils/ProjectValidationWindow.cs deleted file mode 100644 index 8ce4c606..00000000 --- a/Editor/Utils/ProjectValidationWindow.cs +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. - -using UnityEditor; -using UnityEngine; - -namespace Oculus.Movement.Utils -{ - /// - /// Editor window that displays information about configuring the project. - /// - public class ProjectValidationWindow : EditorWindow - { - private static ProjectValidationWindow _projectValidationWindow; - - /// - /// Shows the project validation window. - /// - public static void ShowProjectValidationWindow() - { - if (!HasOpenInstances()) - { - _projectValidationWindow = GetWindow(); - _projectValidationWindow.titleContent = new GUIContent("Movement Validation"); - _projectValidationWindow.Focus(); - } - } - - private void OnEnable() - { - EditorWindow editorWindow = this; - - Vector2 windowSize = new Vector2(600, 300); - editorWindow.minSize = windowSize; - editorWindow.maxSize = windowSize; - } - - private void OnGUI() - { - bool layersValid = ProjectValidation.TestLayers(); - GUIStyle labelStyle = new GUIStyle(EditorStyles.label); - labelStyle.richText = true; - labelStyle.wordWrap = true; - - GUILayout.BeginVertical(); - { - GUI.enabled = !layersValid; - GUILayout.BeginVertical(EditorStyles.helpBox); - { - GUILayout.Label("Layers", EditorStyles.boldLabel); - GUILayout.Label( - "For the sample scenes, the following layers must be present in the project: layer index " + - "10, layer index 11, and HiddenMesh. \n\nTo help with this, you may import the Layers " + - "preset by first navigating to layers (Edit -> Project Settings -> Tags and Layers), " + - "then selecting the tiny settings icon located at the top right corner and choosing " + - "the Layers preset located in the Samples/Settings folder.", - labelStyle); - GUILayout.Space(5); - } - GUILayout.EndVertical(); - GUI.enabled = true; - } - GUILayout.EndVertical(); - GUILayout.Space(5); - } - } -} diff --git a/README.md b/README.md index 6951556b..fec276e3 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ Unity-Movement is a package that uses OpenXR’s tracking layer APIs to expose Meta Quest Pro’s Body Tracking (BT), Eye Tracking (ET), and Face Tracking (FT) capabilities. With this package, developers can leverage tracking to populate VR environments with custom avatars that bring the expressiveness of users into the virtual environments that they create. ### Requirements -- Unity 2021.3.21f1 (2021 LTS) or newer installed -- v56.0 or newer of the Oculus Integration SDK with OVRPlugin set to use OpenXR as backend. Make sure to include the VR and Interaction folders when importing into your project. +- Unity 2021.3.26f1 (2021 LTS) or newer installed +- v60.0 or newer of the Meta XR SDK. You will need the Meta XR Core SDK, Meta XR Interaction SDK and Meta XR Interaction SDK OVR Samples packages found [on this page](https://assetstore.unity.com/publishers/25353). - A project set up with these [configuration settings](https://developer.oculus.com/documentation/unity/unity-conf-settings/) ### Licenses @@ -29,6 +29,8 @@ If the new scene or an existing scene doesn’t have a GameObject with the OVRCa 5. In the General tab, there are options to enable body, face, and eye tracking support. Select Supported or Required for the type of tracking support you wish to add. 6. Under OVRManager's "Permission Requests On Startup" section, enable Body, Face and Eye Tracking. 7. Ensure that OVRManager's "Tracking Origin Type" is set to "Floor Level". +8. In OVRManager's "Movement Tracking" section select "High" for "Body Tracking Fidelity." +9. In OVRManager's "Movement Tracking" section select "Full Body" for "Body Tracking Joint Set." Layer index 10, layer index 11, and the HiddenMesh layer must be present in the project for RecalculateNormals to work correctly. @@ -63,6 +65,8 @@ In order for the SceneSelectMenu buttons to work, add the scenes located in the ## Samples The project contains several sample scenes. To test the samples, add the scenes located in the **Packages/com.meta.movement/Samples/Scenes** folder to the project's Assets folder. +For more information about body tracking, please refer to [this page](https://developer.oculus.com/documentation/unity/move-body-tracking/). + For more information about the samples, read [Aura Sample](https://developer.oculus.com/documentation/unity/move-samples/#face-and-eye-tracking-with-aura), [Blendshape Mapping Example Sample](https://developer.oculus.com/documentation/unity/move-samples/#arkit-mapping-with-blendshape-mapping-example), [Hip Pinning Sample](https://developer.oculus.com/documentation/unity/move-samples/#high-fidelity-with-hip-pinning), [High Fidelity Sample](https://developer.oculus.com/documentation/unity/move-samples/#high-fidelity-sample), and [Retargeting Sample](https://developer.oculus.com/documentation/unity/move-samples/#retargeting-with-blue-robot). ## Documentation diff --git a/Runtime/Scripts/AnimationRigging/BlendHandConstraints.cs b/Runtime/Scripts/AnimationRigging/BlendHandConstraints.cs index 30592bd0..04e769f6 100644 --- a/Runtime/Scripts/AnimationRigging/BlendHandConstraints.cs +++ b/Runtime/Scripts/AnimationRigging/BlendHandConstraints.cs @@ -5,6 +5,7 @@ using UnityEngine; using UnityEngine.Animations.Rigging; using UnityEngine.Assertions; +using static OVRUnityHumanoidSkeletonRetargeter; namespace Oculus.Movement.AnimationRigging { @@ -58,9 +59,9 @@ public RetargetingLayer RetargetingLayerComp /// [SerializeField] [Tooltip(BlendHandConstraintsTooltips.BoneIdToTest)] - private CustomMappings.BodyTrackingBoneId _boneIdToTest = - CustomMappings.BodyTrackingBoneId.Body_LeftHandWrist; - public CustomMappings.BodyTrackingBoneId BoneIdToTest + private OVRHumanBodyBonesMappings.BodyTrackingBoneId _boneIdToTest = + OVRHumanBodyBonesMappings.BodyTrackingBoneId.Body_LeftHandWrist; + public OVRHumanBodyBonesMappings.BodyTrackingBoneId BoneIdToTest { get => _boneIdToTest; set => _boneIdToTest = value; @@ -175,7 +176,7 @@ public void AddSkeletalConstraint(MonoBehaviour newConstraint) private void Awake() { - if (_constraints.Length > 0) + if (_constraints != null && _constraints.Length > 0) { UpdateSkeletalConstraintInterfaceReferences(); } @@ -278,7 +279,7 @@ public void ProcessSkeleton(OVRSkeleton skeleton) private bool IsLeftSideOfBody() { - return _boneIdToTest < CustomMappings.BodyTrackingBoneId.Body_RightHandPalm; + return _boneIdToTest < OVRHumanBodyBonesMappings.BodyTrackingBoneId.Body_RightHandPalm; } private bool BonesAreValid(OVRSkeleton skeleton) diff --git a/Runtime/Scripts/AnimationRigging/BlendHandConstraintsFullBody.cs b/Runtime/Scripts/AnimationRigging/BlendHandConstraintsFullBody.cs new file mode 100644 index 00000000..56764f5e --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/BlendHandConstraintsFullBody.cs @@ -0,0 +1,353 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using Oculus.Interaction; +using UnityEngine; +using UnityEngine.Animations.Rigging; +using UnityEngine.Assertions; +using static OVRUnityHumanoidSkeletonRetargeter; + +namespace Oculus.Movement.AnimationRigging +{ + /// + /// Allows disabling TwoBoneIK constraints when the hands move far away, + /// which would mitigate issues with the elbows looking incorrect when the hands + /// are away. While the hands will look more accurate when further away, that + /// might be ok because they are far from the body. + /// + [DefaultExecutionOrder(225)] + public class BlendHandConstraintsFullBody : MonoBehaviour, IOVRSkeletonProcessor + { + /// + public bool EnableSkeletonProcessing + { + get => enabled; + set => enabled = value; + } + + /// + public string SkeletonProcessorLabel => "Blend Hands" + (IsLeftSideOfBody() ? " Left" : " Right"); + + /// + /// Constraints to control the weight of. + /// + [SerializeField, Interface(typeof(IRigConstraint))] + [Tooltip(BlendHandConstraintsFullBodyTooltips.Constraints)] + protected MonoBehaviour[] _constraints; + public MonoBehaviour[] Constraints + { + get => _constraints; + set => _constraints = value; + } + + /// + /// The character's retargeting layer. + /// + [SerializeField] + [Tooltip(BlendHandConstraintsFullBodyTooltips.RetargetingLayer)] + protected RetargetingLayer _retargetingLayer; + public RetargetingLayer RetargetingLayerComp + { + get => _retargetingLayer; + set => _retargetingLayer = value; + } + + /// + /// Bone ID, usually the wrist. Can be modified depending + /// on the skeleton used. + /// + [SerializeField] + [Tooltip(BlendHandConstraintsFullBodyTooltips.BoneIdToTest)] + protected OVRHumanBodyBonesMappings.FullBodyTrackingBoneId _boneIdToTest = + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandWrist; + public OVRHumanBodyBonesMappings.FullBodyTrackingBoneId BoneIdToTest + { + get => _boneIdToTest; + set => _boneIdToTest = value; + } + + /// + /// Head transform to do distance checks against. + /// + [SerializeField] + [Tooltip(BlendHandConstraintsFullBodyTooltips.HeadTransform)] + protected Transform _headTransform; + public Transform HeadTransform + { + get => _headTransform; + set => _headTransform = value; + } + + /// + /// MonoBehaviour to add to. + /// + [SerializeField] + [Interface(typeof(IOVRSkeletonProcessorAggregator))] + [Tooltip(BlendHandConstraintsFullBodyTooltips.AutoAddTo)] + protected MonoBehaviour _autoAddTo; + public MonoBehaviour AutoAddTo + { + get => _autoAddTo; + set => _autoAddTo = value; + } + + /// + /// Distance where constraints are set to 1.0. + /// + [SerializeField] + [Tooltip(BlendHandConstraintsFullBodyTooltips.ConstraintsMinDistance)] + protected float _constraintsMinDistance = 0.2f; + public float ConstraintsMinDistance + { + get => _constraintsMinDistance; + set => _constraintsMinDistance = value; + } + + /// + /// Distance where constraints are set to 0.0. + /// + [SerializeField] + [Tooltip(BlendHandConstraintsFullBodyTooltips.ConstraintsMaxDistance)] + protected float _constraintsMaxDistance = 0.5f; + public float ConstraintsMaxDistance + { + get => _constraintsMaxDistance; + set => _constraintsMaxDistance = value; + } + + /// + /// Multiplier that influences weight interpolation based on distance. + /// + [SerializeField] + [Tooltip(BlendHandConstraintsFullBodyTooltips.BlendCurve)] + protected AnimationCurve _blendCurve; + public AnimationCurve BlendCurve + { + get => _blendCurve; + set => _blendCurve = value; + } + + /// + /// Max constraint weight. + /// + [SerializeField] + [Tooltip(BlendHandConstraintsFullBodyTooltips.MaxWeight)] + protected float _maxWeight = 1.0f; + public float MaxWeight + { + get => _maxWeight; + set => _maxWeight = value; + } + + private IRigConstraint[] _iRigConstraints; + private Transform _cachedTransform; + private float _cachedConstraintWeight = 0.0f; + private RetargetingProcessorCorrectBones _retargetingProcessorCorrectBones; + + /// + /// Adds constraint. Valid for use via editor scripts only. + /// + /// New constraint to add. + public void AddSkeletalConstraint(MonoBehaviour newConstraint) + { + if (_constraints == null) + { + _constraints = new MonoBehaviour[1]; + _constraints[0] = newConstraint; + } + else + { + var oldConstraints = _constraints; + _constraints = + new MonoBehaviour[oldConstraints.Length + 1]; + for (int i = 0; i < oldConstraints.Length; i++) + { + _constraints[i] = oldConstraints[i]; + } + _constraints[oldConstraints.Length] = + newConstraint; + } + + // Update the interface references in case this was called after awake, but before Update + UpdateSkeletalConstraintInterfaceReferences(); + } + + private void Awake() + { + if (_constraints != null && _constraints.Length > 0) + { + UpdateSkeletalConstraintInterfaceReferences(); + } + + Assert.IsNotNull(_retargetingLayer); + Assert.IsNotNull(_headTransform); + Assert.IsNotNull(_blendCurve); + + Assert.IsTrue(_constraintsMinDistance < _constraintsMaxDistance); + } + + private void UpdateSkeletalConstraintInterfaceReferences() + { + _iRigConstraints = new IRigConstraint[_constraints.Length]; + for (int i = 0; i < _constraints.Length; i++) + { + _iRigConstraints[i] = _constraints[i] as IRigConstraint; + Assert.IsNotNull(_iRigConstraints[i]); + } + } + + /// + /// Will add self to + /// + private void Start() + { + if (_autoAddTo != null && _autoAddTo is IOVRSkeletonProcessorAggregator aggregator) + { + aggregator.AddProcessor(this); + } + + foreach (var retargetingProcessor in _retargetingLayer.RetargetingProcessors) + { + var correctBonesProcessor = retargetingProcessor as RetargetingProcessorCorrectBones; + if (correctBonesProcessor != null) + { + _retargetingProcessorCorrectBones = correctBonesProcessor; + break; + } + } + } + + /// + /// Sets max constraint weight. + /// + /// New max value. + public void SetMaxWeight(float max) + { + _maxWeight = max; + } + + /// + public void ProcessSkeleton(OVRSkeleton skeleton) + { + if (!enabled) + { + return; + } + + var bones = skeleton.Bones; + if (!BonesAreValid(skeleton)) + { + return; + } + + float constraintWeight = ComputeCurrentConstraintWeight(skeleton); + if (_iRigConstraints != null) + { + foreach (var constraint in _iRigConstraints) + { + constraint.weight = Mathf.Min(constraintWeight, _maxWeight); + } + } + + if (IsLeftSideOfBody()) + { + _retargetingProcessorCorrectBones.LeftHandCorrectionWeightLateUpdate = constraintWeight; + } + else + { + _retargetingProcessorCorrectBones.RightHandCorrectionWeightLateUpdate = constraintWeight; + } + } + + private bool IsLeftSideOfBody() + { + return _boneIdToTest < OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandPalm; + } + + private bool BonesAreValid(OVRSkeleton skeleton) + { + return skeleton.Bones.Count >= (int)_boneIdToTest; + } + + private void OnDrawGizmos() + { + if (_cachedTransform == null) + { + return; + } + var viewVector = GetViewVector(); + var viewOriginToPointVector = GetViewOriginToPointVector(_cachedTransform.position); + + Gizmos.color = new UnityEngine.Color(_cachedConstraintWeight, _cachedConstraintWeight, + _cachedConstraintWeight); + Gizmos.DrawRay(_headTransform.position, viewOriginToPointVector); + + Gizmos.color = UnityEngine.Color.white; + Gizmos.DrawRay(_headTransform.transform.position, 0.7f * viewVector); + } + + private float ComputeCurrentConstraintWeight(OVRSkeleton skeleton) + { + var bones = skeleton.Bones; + var boneToTest = bones[(int)_boneIdToTest].Transform; + _cachedTransform = boneToTest; + var boneDistanceToViewVector = GetDistanceToViewVector(boneToTest.position); + + _cachedConstraintWeight = 0.0f; + var scaledMaxDistanceForConstraints = _constraintsMaxDistance * transform.lossyScale.x; + var scaledMinDistanceForConstraints = _constraintsMinDistance * transform.lossyScale.x; + // If the hand is close enough to the view vector, start to increase the + // weight of the constraint. + if (boneDistanceToViewVector <= scaledMaxDistanceForConstraints) + { + if (boneDistanceToViewVector <= scaledMinDistanceForConstraints) + { + _cachedConstraintWeight = 1.0f; + } + else + { + float lerpValue = (scaledMaxDistanceForConstraints - boneDistanceToViewVector) / + (scaledMaxDistanceForConstraints - scaledMinDistanceForConstraints); + float curveValue = _blendCurve.Evaluate(lerpValue); + // amplify lerping before clamping it + _cachedConstraintWeight = Mathf.Clamp01(curveValue); + } + } + + return _cachedConstraintWeight; + } + + /// + /// This is solved via the cross product method, as seen here: + /// https://qc.edu.hk/math/Advanced%20Level/Point_to_line.htm. + /// What this function does is create a parallelogram that is located + /// at the view origin, and has two properties: the base (view vector) + /// and height (distance from view vector to point passed as an + /// argument). The magnitude of the cross product of the view vector + /// and (point - viewOrigin) gives us the area of the parallelogram. + /// To solve for the height, we divide the area by the magnitude of the base + /// vector. + /// + /// + /// + private float GetDistanceToViewVector(Vector3 point) + { + var viewVector = GetViewVector(); + var viewOriginToPointVector = GetViewOriginToPointVector(point); + + var parallelogramArea = Vector3.Cross(viewVector, viewOriginToPointVector).magnitude; + var parallelogramBaseLength = viewVector.magnitude; + return parallelogramArea / parallelogramBaseLength; + } + + private Vector3 GetViewVector() + { + return _headTransform.forward; + } + + private Vector3 GetViewOriginToPointVector(Vector3 point) + { + var viewOrigin = _headTransform.position; + return point - viewOrigin; + } + } +} diff --git a/Runtime/Scripts/AnimationRigging/BlendHandConstraintsFullBody.cs.meta b/Runtime/Scripts/AnimationRigging/BlendHandConstraintsFullBody.cs.meta new file mode 100644 index 00000000..5188cae1 --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/BlendHandConstraintsFullBody.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8359a52c8182ca247b2064624e74dffb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/AnimationRigging/BoneMappingsExtension.cs b/Runtime/Scripts/AnimationRigging/BoneMappingsExtension.cs new file mode 100644 index 00000000..21187dbc --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/BoneMappingsExtension.cs @@ -0,0 +1,268 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using System.Collections.Generic; +using UnityEngine; + +namespace Oculus.Movement.AnimationRigging +{ + /// + /// Contains extra mappins not yet available in the SDK. + /// + public class BoneMappingsExtension + { + /// + /// Maps HumanBodyBones to avatar mask body part. Includes legs as well. + /// + public static readonly Dictionary + HumanBoneToAvatarBodyPart = new Dictionary() + { + { HumanBodyBones.Neck, AvatarMaskBodyPart.Head }, + + { HumanBodyBones.Head, AvatarMaskBodyPart.Head }, + { HumanBodyBones.LeftEye, AvatarMaskBodyPart.Head }, + { HumanBodyBones.RightEye, AvatarMaskBodyPart.Head }, + { HumanBodyBones.Jaw, AvatarMaskBodyPart.Head }, + + { HumanBodyBones.Hips, AvatarMaskBodyPart.Body }, + + { HumanBodyBones.Spine, AvatarMaskBodyPart.Body }, + { HumanBodyBones.Chest, AvatarMaskBodyPart.Body }, + { HumanBodyBones.UpperChest, AvatarMaskBodyPart.Body }, + + { HumanBodyBones.RightShoulder, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightUpperArm, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightLowerArm, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightHand, AvatarMaskBodyPart.RightArm }, + + { HumanBodyBones.LeftShoulder, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftUpperArm, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftLowerArm, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftHand, AvatarMaskBodyPart.LeftArm }, + + { HumanBodyBones.LeftUpperLeg, AvatarMaskBodyPart.LeftLeg }, + { HumanBodyBones.LeftLowerLeg, AvatarMaskBodyPart.LeftLeg }, + + { HumanBodyBones.LeftFoot, AvatarMaskBodyPart.LeftLeg }, + { HumanBodyBones.LeftToes, AvatarMaskBodyPart.LeftLeg }, + + { HumanBodyBones.RightUpperLeg, AvatarMaskBodyPart.RightLeg }, + { HumanBodyBones.RightLowerLeg, AvatarMaskBodyPart.RightLeg }, + + { HumanBodyBones.RightFoot, AvatarMaskBodyPart.RightLeg }, + { HumanBodyBones.RightToes, AvatarMaskBodyPart.RightLeg }, + + { HumanBodyBones.LeftThumbProximal, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftThumbIntermediate, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftThumbDistal, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftIndexProximal, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftIndexIntermediate, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftIndexDistal, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftMiddleProximal, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftMiddleIntermediate, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftMiddleDistal, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftRingProximal, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftRingIntermediate, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftRingDistal, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftLittleProximal, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftLittleIntermediate, AvatarMaskBodyPart.LeftArm }, + { HumanBodyBones.LeftLittleDistal, AvatarMaskBodyPart.LeftArm }, + + { HumanBodyBones.RightThumbProximal, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightThumbIntermediate, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightThumbDistal, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightIndexProximal, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightIndexIntermediate, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightIndexDistal, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightMiddleProximal, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightMiddleIntermediate, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightMiddleDistal, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightRingProximal, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightRingIntermediate, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightRingDistal, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightLittleProximal, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightLittleIntermediate, AvatarMaskBodyPart.RightArm }, + { HumanBodyBones.RightLittleDistal, AvatarMaskBodyPart.RightArm } + }; + + /// + /// Maps OVRSkeletonBoneId to avatar mask body part. + /// + public static readonly Dictionary + OVRSkeletonBoneIdToAvatarBodyPart = new Dictionary() + { + { OVRSkeleton.BoneId.Body_Neck, AvatarMaskBodyPart.Head }, + { OVRSkeleton.BoneId.Body_Head, AvatarMaskBodyPart.Head }, + + { OVRSkeleton.BoneId.Body_Root, AvatarMaskBodyPart.Body }, + { OVRSkeleton.BoneId.Body_Hips, AvatarMaskBodyPart.Body }, + { OVRSkeleton.BoneId.Body_SpineLower, AvatarMaskBodyPart.Body }, + { OVRSkeleton.BoneId.Body_SpineMiddle, AvatarMaskBodyPart.Body }, + { OVRSkeleton.BoneId.Body_SpineUpper, AvatarMaskBodyPart.Body }, + { OVRSkeleton.BoneId.Body_Chest, AvatarMaskBodyPart.Body }, + + { OVRSkeleton.BoneId.Body_RightShoulder, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightScapula, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightArmUpper, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightArmLower, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandWristTwist, AvatarMaskBodyPart.RightArm }, + + { OVRSkeleton.BoneId.Body_LeftShoulder, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftScapula, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftArmUpper, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftArmLower, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandWristTwist, AvatarMaskBodyPart.LeftArm }, + + { OVRSkeleton.BoneId.Body_LeftHandPalm, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandWrist, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandThumbMetacarpal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandThumbProximal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandThumbDistal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandThumbTip, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandIndexMetacarpal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandIndexProximal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandIndexIntermediate, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandIndexDistal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandIndexTip, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandMiddleMetacarpal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandMiddleProximal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandMiddleIntermediate, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandMiddleDistal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandMiddleTip, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandRingMetacarpal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandRingProximal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandRingIntermediate, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandRingDistal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandRingTip, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandLittleMetacarpal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandLittleProximal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandLittleIntermediate, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandLittleDistal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.Body_LeftHandLittleTip, AvatarMaskBodyPart.LeftArm }, + + { OVRSkeleton.BoneId.Body_RightHandPalm, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandWrist, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandThumbMetacarpal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandThumbProximal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandThumbDistal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandThumbTip, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandIndexMetacarpal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandIndexProximal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandIndexIntermediate, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandIndexDistal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandIndexTip, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandMiddleMetacarpal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandMiddleProximal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandMiddleIntermediate, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandMiddleDistal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandMiddleTip, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandRingMetacarpal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandRingProximal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandRingIntermediate, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandRingDistal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandRingTip, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandLittleMetacarpal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandLittleProximal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandLittleIntermediate, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandLittleDistal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.Body_RightHandLittleTip, AvatarMaskBodyPart.RightArm }, + }; + + /// + /// Maps OVRSkeleton.BoneId.FullBody* to avatar mask body part. + /// + public static readonly Dictionary + OVRSkeletonFullBodyBoneIdToAvatarBodyPart = new Dictionary() + { + { OVRSkeleton.BoneId.FullBody_Start, AvatarMaskBodyPart.Root }, + { OVRSkeleton.BoneId.FullBody_Hips, AvatarMaskBodyPart.Body }, + { OVRSkeleton.BoneId.FullBody_SpineLower, AvatarMaskBodyPart.Body }, + { OVRSkeleton.BoneId.FullBody_SpineMiddle, AvatarMaskBodyPart.Body }, + { OVRSkeleton.BoneId.FullBody_SpineUpper, AvatarMaskBodyPart.Body }, + { OVRSkeleton.BoneId.FullBody_Chest, AvatarMaskBodyPart.Body }, + { OVRSkeleton.BoneId.FullBody_Neck, AvatarMaskBodyPart.Head }, + { OVRSkeleton.BoneId.FullBody_Head, AvatarMaskBodyPart.Head }, + + { OVRSkeleton.BoneId.FullBody_LeftShoulder, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftScapula, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftArmUpper, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftArmLower, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandWristTwist, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandPalm, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandWrist, AvatarMaskBodyPart.LeftArm }, + + { OVRSkeleton.BoneId.FullBody_RightShoulder, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightScapula, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightArmUpper, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightArmLower, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandWristTwist, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandPalm, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandWrist, AvatarMaskBodyPart.RightArm }, + + { OVRSkeleton.BoneId.FullBody_LeftHandThumbMetacarpal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandThumbProximal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandThumbDistal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandThumbTip, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandIndexMetacarpal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandIndexProximal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandIndexIntermediate, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandIndexDistal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandIndexTip, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandMiddleMetacarpal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandMiddleProximal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandMiddleIntermediate, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandMiddleDistal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandMiddleTip, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandRingMetacarpal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandRingProximal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandRingIntermediate, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandRingDistal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandRingTip, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandLittleMetacarpal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandLittleProximal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandLittleIntermediate, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandLittleDistal, AvatarMaskBodyPart.LeftArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandLittleTip, AvatarMaskBodyPart.LeftArm }, + + { OVRSkeleton.BoneId.FullBody_RightHandThumbMetacarpal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandThumbProximal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandThumbDistal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandThumbTip, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandIndexMetacarpal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandIndexProximal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandIndexIntermediate, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandIndexDistal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandIndexTip, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandMiddleMetacarpal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandMiddleProximal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandMiddleIntermediate, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandMiddleDistal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandMiddleTip, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandRingMetacarpal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandRingProximal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandRingIntermediate, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandRingDistal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandRingTip, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandLittleMetacarpal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandLittleProximal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandLittleIntermediate, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandLittleDistal, AvatarMaskBodyPart.RightArm }, + { OVRSkeleton.BoneId.FullBody_RightHandLittleTip, AvatarMaskBodyPart.RightArm }, + + { OVRSkeleton.BoneId.FullBody_LeftUpperLeg, AvatarMaskBodyPart.LeftLeg }, + { OVRSkeleton.BoneId.FullBody_LeftLowerLeg, AvatarMaskBodyPart.LeftLeg }, + { OVRSkeleton.BoneId.FullBody_LeftFootAnkleTwist, AvatarMaskBodyPart.LeftLeg }, + { OVRSkeleton.BoneId.FullBody_LeftFootAnkle, AvatarMaskBodyPart.LeftLeg }, + { OVRSkeleton.BoneId.FullBody_LeftFootSubtalar, AvatarMaskBodyPart.LeftLeg }, + { OVRSkeleton.BoneId.FullBody_LeftFootTransverse, AvatarMaskBodyPart.LeftLeg }, + { OVRSkeleton.BoneId.FullBody_LeftFootBall, AvatarMaskBodyPart.LeftLeg }, + + { OVRSkeleton.BoneId.FullBody_RightUpperLeg, AvatarMaskBodyPart.RightLeg }, + { OVRSkeleton.BoneId.FullBody_RightLowerLeg, AvatarMaskBodyPart.RightLeg }, + { OVRSkeleton.BoneId.FullBody_RightFootAnkleTwist, AvatarMaskBodyPart.RightLeg }, + { OVRSkeleton.BoneId.FullBody_RightFootAnkle, AvatarMaskBodyPart.RightLeg }, + { OVRSkeleton.BoneId.FullBody_RightFootSubtalar, AvatarMaskBodyPart.RightLeg }, + { OVRSkeleton.BoneId.FullBody_RightFootTransverse, AvatarMaskBodyPart.RightLeg }, + { OVRSkeleton.BoneId.FullBody_RightFootBall, AvatarMaskBodyPart.RightLeg }, + }; + } +} diff --git a/Runtime/Scripts/AnimationRigging/BoneMappingsExtension.cs.meta b/Runtime/Scripts/AnimationRigging/BoneMappingsExtension.cs.meta new file mode 100644 index 00000000..8dff9335 --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/BoneMappingsExtension.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d660b627f102a3848a8024e00fa09fcf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/AnimationRigging/CaptureAnimationConstraint.cs b/Runtime/Scripts/AnimationRigging/CaptureAnimationConstraint.cs index c8554349..36b0ea19 100644 --- a/Runtime/Scripts/AnimationRigging/CaptureAnimationConstraint.cs +++ b/Runtime/Scripts/AnimationRigging/CaptureAnimationConstraint.cs @@ -204,7 +204,7 @@ void IAnimationJobData.SetDefaultValues() /// Capture animation constraint. Captures the current animator's reference pose and current pose, /// to be used to blend animation playback and tracking in another animation job. /// - [DisallowMultipleComponent] + [DisallowMultipleComponent, AddComponentMenu("Movement Animation Rigging/Capture Animation Constraint")] public class CaptureAnimationConstraint : RigConstraint< CaptureAnimationJob, CaptureAnimationData, diff --git a/Runtime/Scripts/AnimationRigging/CopyPoseConstraint.cs b/Runtime/Scripts/AnimationRigging/CopyPoseConstraint.cs index 105a784c..de292916 100644 --- a/Runtime/Scripts/AnimationRigging/CopyPoseConstraint.cs +++ b/Runtime/Scripts/AnimationRigging/CopyPoseConstraint.cs @@ -111,7 +111,7 @@ void IAnimationJobData.SetDefaultValues() /// The CopyPose constraint, used to copy the current humanoid animator pose information to be used /// when correcting positions in RetargetingLayer. /// - [DisallowMultipleComponent] + [DisallowMultipleComponent, AddComponentMenu("Movement Animation Rigging/Copy Pose Constraint")] public class CopyPoseConstraint : RigConstraint< CopyPoseJob, CopyPoseData, diff --git a/Runtime/Scripts/AnimationRigging/DeformationCommon.cs b/Runtime/Scripts/AnimationRigging/DeformationCommon.cs new file mode 100644 index 00000000..c1ff9770 --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/DeformationCommon.cs @@ -0,0 +1,106 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using System; +using UnityEngine; +using UnityEngine.Animations.Rigging; + +namespace Oculus.Movement.AnimationRigging +{ + /// + /// Data types common to all deformation classes. + /// + public static class DeformationCommon + { + /// + /// Information about the distance between two bone transforms. + /// + [Serializable] + public struct BonePairData + { + /// + /// The start bone transform. + /// + [SyncSceneToStream] + public Transform StartBone; + + /// + /// The end bone transform. + /// + [SyncSceneToStream] + public Transform EndBone; + + /// + /// The distance between the start and end bones. + /// + public float Distance; + + /// + /// The proportion of this bone relative to the height. + /// + public float HeightProportion; + + /// + /// The proportion of this bone relative to its limb. + /// + public float LimbProportion; + } + + /// + /// Information about the positioning of an arm. + /// + [Serializable] + public struct ArmPosData + { + /// + /// The shoulder transform. + /// + public Transform ShoulderBone; + + /// + /// The upper arm transform. + /// + public Transform UpperArmBone; + + /// + /// The lower arm transform. + /// + public Transform LowerArmBone; + + /// + /// The hand transform. + /// + public Transform HandBone; + + /// + /// The local position of the shoulder. + /// + public Vector3 ShoulderLocalPos; + + /// + /// The axis of the lower arm to the hand. + /// + public Vector3 LowerArmToHandAxis; + + /// + /// Indicates if initialized or not. + /// + /// + public bool IsInitialized => + UpperArmBone != null && + LowerArmBone != null && + HandBone != null && + LowerArmToHandAxis != Vector3.zero; + + /// + /// Resets all tracked transforms to null. + /// + public void ClearTransformData() + { + ShoulderBone = null; + UpperArmBone = null; + LowerArmBone = null; + HandBone = null; + } + } + } +} diff --git a/Runtime/Scripts/AnimationRigging/DeformationCommon.cs.meta b/Runtime/Scripts/AnimationRigging/DeformationCommon.cs.meta new file mode 100644 index 00000000..cd1bd82c --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/DeformationCommon.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 37efbd77c67da2846a36163d36f46eb7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/AnimationRigging/DeformationConstraint.cs b/Runtime/Scripts/AnimationRigging/DeformationConstraint.cs index baacf655..b45543b7 100644 --- a/Runtime/Scripts/AnimationRigging/DeformationConstraint.cs +++ b/Runtime/Scripts/AnimationRigging/DeformationConstraint.cs @@ -7,101 +7,10 @@ using UnityEngine; using UnityEngine.Animations; using UnityEngine.Animations.Rigging; +using static Oculus.Movement.AnimationRigging.DeformationCommon; namespace Oculus.Movement.AnimationRigging { - /// - /// Information about the distance between two bone transforms. - /// - [Serializable] - public struct BonePairData - { - /// - /// The start bone transform. - /// - [SyncSceneToStream] - public Transform StartBone; - - /// - /// The end bone transform. - /// - [SyncSceneToStream] - public Transform EndBone; - - /// - /// The distance between the start and end bones. - /// - public float Distance; - - /// - /// The proportion of this bone relative to the height. - /// - public float HeightProportion; - - /// - /// The proportion of this bone relative to its limb. - /// - public float LimbProportion; - } - - /// - /// Information about the positioning of an arm. - /// - [Serializable] - public struct ArmPosData - { - /// - /// The shoulder transform. - /// - public Transform ShoulderBone; - - /// - /// The upper arm transform. - /// - public Transform UpperArmBone; - - /// - /// The lower arm transform. - /// - public Transform LowerArmBone; - - /// - /// The hand transform. - /// - public Transform HandBone; - - /// - /// The local position of the shoulder. - /// - public Vector3 ShoulderLocalPos; - - /// - /// The axis of the lower arm to the hand. - /// - public Vector3 LowerArmToHandAxis; - - /// - /// Indicates if initialized or not. - /// - /// - public bool IsInitialized => - UpperArmBone != null && - LowerArmBone != null && - HandBone != null && - LowerArmToHandAxis != Vector3.zero; - - /// - /// Resets all tracked transforms to null. - /// - public void ClearTransformData() - { - ShoulderBone = null; - UpperArmBone = null; - LowerArmBone = null; - HandBone = null; - } - } - /// /// Interface for deformation data. /// @@ -842,7 +751,7 @@ private Transform FindBoneTransform(OVRSkeleton.BoneId boneId) if (_animator != null) { - return RiggingUtilities.FindBoneTransformAnimator(_animator, boneId); + return RiggingUtilities.FindBoneTransformAnimator(_animator, boneId, false); } return null; @@ -907,7 +816,7 @@ void IAnimationJobData.SetDefaultValues() /// /// Deformation constraint. /// - [DisallowMultipleComponent] + [DisallowMultipleComponent, AddComponentMenu("Movement Animation Rigging/Deformation Constraint")] public class DeformationConstraint : RigConstraint< DeformationJob, DeformationData, diff --git a/Runtime/Scripts/AnimationRigging/DeformationJob.cs b/Runtime/Scripts/AnimationRigging/DeformationJob.cs index 32c6e011..e023642e 100644 --- a/Runtime/Scripts/AnimationRigging/DeformationJob.cs +++ b/Runtime/Scripts/AnimationRigging/DeformationJob.cs @@ -259,7 +259,12 @@ public void ProcessAnimation(AnimationStream stream) _targetHipsPos = HipsToHeadBoneTargets[HipsIndex].GetPosition(stream); _targetHeadPos = HipsToHeadBoneTargets[^1].GetPosition(stream); - AlignSpine(stream, weight); + if (SpineLowerAlignmentWeight.Get(stream) != 0.0f || + SpineUpperAlignmentWeight.Get(stream) != 0.0f || + ChestAlignmentWeight.Get(stream) != 0.0f) + { + AlignSpine(stream, weight); + } InterpolateShoulders(stream, weight); UpdateBoneDirections(stream); EnforceOriginalSkeletalProportions(stream, weight); diff --git a/Runtime/Scripts/AnimationRigging/FullBodyDeformationConstraint.cs b/Runtime/Scripts/AnimationRigging/FullBodyDeformationConstraint.cs new file mode 100644 index 00000000..11bce797 --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/FullBodyDeformationConstraint.cs @@ -0,0 +1,1186 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using Oculus.Interaction; +using Oculus.Movement.Utils; +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Animations; +using UnityEngine.Animations.Rigging; +using static Oculus.Movement.AnimationRigging.DeformationCommon; +using static OVRUnityHumanoidSkeletonRetargeter; + +namespace Oculus.Movement.AnimationRigging +{ + /// + /// Information about the positioning of a leg. + /// + [Serializable] + public struct LegPosData + { + /// + /// The hips transform. + /// + public Transform HipsBone; + + /// + /// The upper leg transform. + /// + public Transform UpperLegBone; + + /// + /// The lower leg transform. + /// + public Transform LowerLegBone; + + /// + /// The foot transform. + /// + public Transform FootBone; + + /// + /// The toes transform. + /// + public Transform ToesBone; + + /// + /// The local position of the toes. + /// + public Vector3 ToesLocalPos; + + /// + /// The local rotation of the foot. + /// + public Quaternion FootLocalRot; + + /// + /// Indicates if initialized or not. + /// + /// + public bool IsInitialized => + HipsBone != null && + UpperLegBone != null && + LowerLegBone != null && + FootBone != null; + + /// + /// Resets all tracked transforms to null. + /// + public void ClearTransformData() + { + HipsBone = null; + UpperLegBone = null; + LowerLegBone = null; + FootBone = null; + ToesBone = null; + } + } + + /// + /// Interface for FullBodyDeformation data. + /// + public interface IFullBodyDeformationData + { + /// + /// The OVRCustomSkeleton component for the character. + /// + public OVRCustomSkeleton ConstraintCustomSkeleton { get; } + + /// + /// The Animator component for the character. + /// + public Animator ConstraintAnimator { get; } + + /// + /// If true, update this job. + /// + public bool ShouldUpdate { get; set; } + + /// + /// The array of transforms from the hips to the head bones. + /// + public Transform[] HipsToHeadBones { get; } + + /// + /// The array of transform targets from the hips to the head bones. + /// + public Transform[] HipsToHeadBoneTargets { get; } + + /// + /// The position info for the bone pairs used for FullBodyDeformation. + /// + public BonePairData[] BonePairs { get; } + + /// + /// The position info for the left arm. + /// + public ArmPosData LeftArm { get; } + + /// + /// The position info for the right arm. + /// + public ArmPosData RightArm { get; } + + /// + /// The position info for the left leg. + /// + public LegPosData LeftLeg { get; } + + /// + /// The position info for the right leg. + /// + public LegPosData RightLeg { get; } + + /// + /// The type of spine translation correction that should be applied. + /// + public int SpineCorrectionType { get; } + + /// + /// The starting scale of the character, taken from the animator transform. + /// + public Vector3 StartingScale { get; } + + /// + /// The spine correction type int property. + /// + public string SpineCorrectionTypeIntProperty { get; } + + /// + /// The spine alignment weight float property. + /// + public string SpineLowerAlignmentWeightFloatProperty { get; } + + /// + /// The spine upper alignment weight float property. + /// + public string SpineUpperAlignmentWeightFloatProperty { get; } + + /// + /// The chest alignment weight float property. + /// + public string ChestAlignmentWeightFloatProperty { get; } + + /// + /// The left shoulder weight float property. + /// + public string LeftShoulderWeightFloatProperty { get; } + + /// + /// The right shoulder weight float property. + /// + public string RightShoulderWeightFloatProperty { get; } + + /// + /// The left arm weight float property. + /// + public string LeftArmWeightFloatProperty { get; } + + /// + /// The right arm weight float property. + /// + public string RightArmWeightFloatProperty { get; } + + /// + /// The left hand weight float property. + /// + public string LeftHandWeightFloatProperty { get; } + + /// + /// The right hand weight float property. + /// + public string RightHandWeightFloatProperty { get; } + + /// + /// The left leg weight float property. + /// + public string LeftLegWeightFloatProperty { get; } + + /// + /// The right leg weight float property. + /// + public string RightLegWeightFloatProperty { get; } + + /// + /// The left toes weight float property. + /// + public string LeftToesWeightFloatProperty { get; } + + /// + /// The right toes weight float property. + /// + public string RightToesWeightFloatProperty { get; } + + /// + /// Align feet weight float property. + /// + public string AlignFeetWeightFloatProperty { get; } + + /// + /// The distance between the hips and head bones. + /// + public float HipsToHeadDistance { get; } + + /// + /// The distance between the hips and foot bones. + /// + public float HipsToFootDistance { get; } + + /// + /// Sets up hips and head bones. + /// + public void SetUpHipsAndHeadBones(); + + /// + /// Sets up left arm data. + /// + public void SetUpLeftArmData(); + + /// + /// Sets up right arm data. + /// + public void SetUpRightArmData(); + + /// + /// Sets up left leg data. + /// + public void SetUpLeftLegData(); + + /// + /// Sets up right leg data. + /// + public void SetUpRightLegData(); + + /// + /// Sets up upper bone parts after all bones have been found. + /// + public void SetUpBonePairs(); + + /// + /// Try to set up bone targets. + /// + public void SetUpBoneTargets(Transform setupParent); + + /// + /// Computes initial starting scale. + /// + public void InitializeStartingScale(); + + /// + /// Clears all transform data stored. + /// + public void ClearTransformData(); + + /// + /// Indicates if bone transforms are valid or not. + /// + /// True if bone transforms are valid, false if not. + public bool IsBoneTransformsDataValid(); + } + + /// + /// FullBodyDeformation data used by the FullBodyDeformation job. + /// Implements the FullBodyDeformation data interface. + /// + [Serializable] + public struct FullBodyDeformationData : IAnimationJobData, IFullBodyDeformationData + { + /// + /// The spine translation correction type. + /// + public enum SpineTranslationCorrectionType + { + /// No spine translation correction applied. + None = 0, + /// Accurately place the head bone when applying spine translation correction. + AccurateHead = 1, + /// Accurately place the hips bone when applying spine translation correction. + AccurateHips = 2, + /// Accurately place the hips and head bone when applying spine translation correction. + AccurateHipsAndHead = 3, + } + + /// + OVRCustomSkeleton IFullBodyDeformationData.ConstraintCustomSkeleton => _customSkeleton; + + /// + Animator IFullBodyDeformationData.ConstraintAnimator => _animator; + + /// + bool IFullBodyDeformationData.ShouldUpdate + { + get => _shouldUpdate; + set => _shouldUpdate = value; + } + + /// + int IFullBodyDeformationData.SpineCorrectionType => _spineTranslationCorrectionType; + + /// + Transform[] IFullBodyDeformationData.HipsToHeadBones => _hipsToHeadBones; + + /// + Transform[] IFullBodyDeformationData.HipsToHeadBoneTargets => _hipsToHeadBoneTargets; + + /// + BonePairData[] IFullBodyDeformationData.BonePairs => _bonePairData; + + /// + ArmPosData IFullBodyDeformationData.LeftArm => _leftArmData; + + /// + ArmPosData IFullBodyDeformationData.RightArm => _rightArmData; + + /// + LegPosData IFullBodyDeformationData.LeftLeg => _leftLegData; + + /// + LegPosData IFullBodyDeformationData.RightLeg => _rightLegData; + + /// + Vector3 IFullBodyDeformationData.StartingScale => _startingScale; + + /// + string IFullBodyDeformationData.SpineCorrectionTypeIntProperty => + ConstraintsUtils.ConstructConstraintDataPropertyName(nameof(_spineTranslationCorrectionType)); + + /// + string IFullBodyDeformationData.SpineLowerAlignmentWeightFloatProperty => + ConstraintsUtils.ConstructConstraintDataPropertyName(nameof(_spineLowerAlignmentWeight)); + + /// + string IFullBodyDeformationData.SpineUpperAlignmentWeightFloatProperty => + ConstraintsUtils.ConstructConstraintDataPropertyName(nameof(_spineUpperAlignmentWeight)); + + /// + string IFullBodyDeformationData.ChestAlignmentWeightFloatProperty => + ConstraintsUtils.ConstructConstraintDataPropertyName(nameof(_chestAlignmentWeight)); + + /// + string IFullBodyDeformationData.LeftShoulderWeightFloatProperty => + ConstraintsUtils.ConstructConstraintDataPropertyName(nameof(_leftShoulderWeight)); + + /// + string IFullBodyDeformationData.RightShoulderWeightFloatProperty => + ConstraintsUtils.ConstructConstraintDataPropertyName(nameof(_rightShoulderWeight)); + + /// + string IFullBodyDeformationData.LeftArmWeightFloatProperty => + ConstraintsUtils.ConstructConstraintDataPropertyName(nameof(_leftArmWeight)); + + /// + string IFullBodyDeformationData.RightArmWeightFloatProperty => + ConstraintsUtils.ConstructConstraintDataPropertyName(nameof(_rightArmWeight)); + + /// + string IFullBodyDeformationData.LeftHandWeightFloatProperty => + ConstraintsUtils.ConstructConstraintDataPropertyName(nameof(_leftHandWeight)); + + /// + string IFullBodyDeformationData.RightHandWeightFloatProperty => + ConstraintsUtils.ConstructConstraintDataPropertyName(nameof(_rightHandWeight)); + + /// + string IFullBodyDeformationData.LeftLegWeightFloatProperty => + ConstraintsUtils.ConstructConstraintDataPropertyName(nameof(_leftLegWeight)); + + /// + string IFullBodyDeformationData.RightLegWeightFloatProperty => + ConstraintsUtils.ConstructConstraintDataPropertyName(nameof(_rightLegWeight)); + + /// + string IFullBodyDeformationData.LeftToesWeightFloatProperty => + ConstraintsUtils.ConstructConstraintDataPropertyName(nameof(_leftToesWeight)); + + /// + string IFullBodyDeformationData.RightToesWeightFloatProperty => + ConstraintsUtils.ConstructConstraintDataPropertyName(nameof(_rightToesWeight)); + + string IFullBodyDeformationData.AlignFeetWeightFloatProperty => + ConstraintsUtils.ConstructConstraintDataPropertyName(nameof(_alignFeetWeight)); + + /// + float IFullBodyDeformationData.HipsToHeadDistance => _hipsToHeadDistance; + + /// + float IFullBodyDeformationData.HipsToFootDistance => _hipsToFootDistance; + + /// + /// The weight for the spine lower alignment. + /// + [SyncSceneToStream, SerializeField, Range(0.0f, 1.0f)] + [Tooltip(DeformationDataTooltips.SpineAlignmentWeight)] + private float _spineLowerAlignmentWeight; + public float SpineLowerAlignmentWeight + { + get => _spineLowerAlignmentWeight; + set => _spineLowerAlignmentWeight = value; + } + + /// + /// The weight for the spine upper alignment. + /// + [SyncSceneToStream, SerializeField, Range(0.0f, 1.0f)] + [Tooltip(DeformationDataTooltips.SpineAlignmentWeight)] + private float _spineUpperAlignmentWeight; + public float SpineUpperAlignmentWeight + { + get => _spineUpperAlignmentWeight; + set => _spineUpperAlignmentWeight = value; + } + + /// + /// The weight for the chest alignment. + /// + [SyncSceneToStream, SerializeField, Range(0.0f, 1.0f)] + [Tooltip(DeformationDataTooltips.ChestAlignmentWeight)] + private float _chestAlignmentWeight; + public float ChestAlignmentWeight + { + get => _chestAlignmentWeight; + set => _chestAlignmentWeight = value; + } + + /// + /// The weight for the deformation on the left shoulder. + /// + [SyncSceneToStream, SerializeField, Range(0.0f, 1.0f)] + [Tooltip(DeformationDataTooltips.LeftShoulderWeight)] + private float _leftShoulderWeight; + public float LeftShoulderWeight + { + get => _leftShoulderWeight; + set => _leftShoulderWeight = value; + } + + /// + /// The weight for the deformation on the right shoulder. + /// + [SyncSceneToStream, SerializeField, Range(0.0f, 1.0f)] + [Tooltip(DeformationDataTooltips.RightShoulderWeight)] + private float _rightShoulderWeight; + public float RightShoulderWeight + { + get => _rightShoulderWeight; + set => _rightShoulderWeight = value; + } + + /// + /// The weight for the deformation on the left arm. + /// + [SyncSceneToStream, SerializeField, Range(0.0f, 1.0f)] + [Tooltip(DeformationDataTooltips.LeftArmWeight)] + private float _leftArmWeight; + public float LeftArmWeight + { + get => _leftArmWeight; + set => _leftArmWeight = value; + } + + /// + /// The weight for the deformation on the right arm. + /// + [SyncSceneToStream, SerializeField, Range(0.0f, 1.0f)] + [Tooltip(DeformationDataTooltips.RightArmWeight)] + private float _rightArmWeight; + public float RightArmWeight + { + get => _rightArmWeight; + set => _rightArmWeight = value; + } + + /// + /// The weight for the deformation on the left hand. + /// + [SyncSceneToStream, SerializeField, Range(0.0f, 1.0f)] + [Tooltip(DeformationDataTooltips.LeftHandWeight)] + private float _leftHandWeight; + public float LeftHandWeight + { + get => _leftHandWeight; + set => _leftHandWeight = value; + } + + /// + /// The weight for the deformation on the right hand. + /// + [SyncSceneToStream, SerializeField, Range(0.0f, 1.0f)] + [Tooltip(DeformationDataTooltips.RightHandWeight)] + private float _rightHandWeight; + public float RightHandWeight + { + get => _rightHandWeight; + set => _rightHandWeight = value; + } + + /// + /// The weight for the deformation on the left leg. + /// + [SyncSceneToStream, SerializeField, Range(0.0f, 1.0f)] + [Tooltip(DeformationDataTooltips.LeftLegWeight)] + private float _leftLegWeight; + public float LeftLegWeight + { + get => _leftLegWeight; + set => _leftLegWeight = value; + } + + /// + /// The weight for the deformation on the right leg. + /// + [SyncSceneToStream, SerializeField, Range(0.0f, 1.0f)] + [Tooltip(DeformationDataTooltips.RightLegWeight)] + private float _rightLegWeight; + public float RightLegWeight + { + get => _rightLegWeight; + set => _rightLegWeight = value; + } + + /// + /// The weight for the FullBodyDeformation on the left toe. + /// + [SyncSceneToStream, SerializeField, Range(0.0f, 1.0f)] + [Tooltip(DeformationDataTooltips.LeftToesWeight)] + private float _leftToesWeight; + public float LeftToesWeight + { + get => _leftToesWeight; + set => _leftToesWeight = value; + } + + /// + /// The weight for the FullBodyDeformation on the right toe. + /// + [SyncSceneToStream, SerializeField, Range(0.0f, 1.0f)] + [Tooltip(DeformationDataTooltips.RightToesWeight)] + private float _rightToesWeight; + public float RightToesWeight + { + get => _rightToesWeight; + set => _rightToesWeight = value; + } + + /// + /// Weight used for feet alignment. + /// + [SyncSceneToStream, SerializeField, Range(0.0f, 1.0f)] + [Tooltip(DeformationDataTooltips.AlignFeetWeight)] + private float _alignFeetWeight; + public float AlignFeetWeight + { + get => _alignFeetWeight; + set => _alignFeetWeight = value; + } + + /// + [SyncSceneToStream, SerializeField, IntAsEnumAttribute(typeof(SpineTranslationCorrectionType))] + [Tooltip(DeformationDataTooltips.SpineTranslationCorrectionType)] + private int _spineTranslationCorrectionType; + public SpineTranslationCorrectionType SpineTranslationCorrectionTypeField + { + get => (SpineTranslationCorrectionType)_spineTranslationCorrectionType; + set => _spineTranslationCorrectionType = (int)value; + } + + /// + [NotKeyable, SerializeField, ConditionalHide("_animator", null)] + [Tooltip(DeformationDataTooltips.CustomSkeleton)] + private OVRCustomSkeleton _customSkeleton; + + /// + [NotKeyable, SerializeField, ConditionalHide("_customSkeleton", null)] + [Tooltip(DeformationDataTooltips.Animator)] + private Animator _animator; + + /// + /// Array of transform bones from hips to head. + /// + [SyncSceneToStream, SerializeField] + [Tooltip(DeformationDataTooltips.HipsToHeadBones)] + private Transform[] _hipsToHeadBones; + + /// + /// Array of transform bone targets from hips to head. + /// + [SyncSceneToStream, SerializeField] + [Tooltip(DeformationDataTooltips.HipsToHeadBoneTargets)] + private Transform[] _hipsToHeadBoneTargets; + + /// + /// Left arm data. + /// + [SyncSceneToStream, SerializeField] + [Tooltip(DeformationDataTooltips.LeftArmData)] + private ArmPosData _leftArmData; + + /// + /// Right arm data. + /// + [SyncSceneToStream, SerializeField] + [Tooltip(DeformationDataTooltips.RightArmData)] + private ArmPosData _rightArmData; + + /// + /// Left leg data. + /// + [SyncSceneToStream, SerializeField] + [Tooltip(DeformationDataTooltips.LeftLegData)] + private LegPosData _leftLegData; + + /// + /// Right leg data. + /// + [SyncSceneToStream, SerializeField] + [Tooltip(DeformationDataTooltips.RightLegData)] + private LegPosData _rightLegData; + + /// + /// All bone pair data. + /// + [SerializeField] + [Tooltip(DeformationDataTooltips.BonePairData)] + private BonePairData[] _bonePairData; + + /// + /// Starting scale of character. + /// + [NotKeyable, SerializeField] + [Tooltip(DeformationDataTooltips.StartingScale)] + private Vector3 _startingScale; + + /// + /// Distances between head and hips. + /// + [NotKeyable, SerializeField] + [Tooltip(DeformationDataTooltips.HipsToHeadDistance)] + private float _hipsToHeadDistance; + + /// + /// Distances between hips and feet. + /// + [NotKeyable, SerializeField] + [Tooltip(DeformationDataTooltips.HipsToFootDistance)] + private float _hipsToFootDistance; + + private bool _shouldUpdate; + + /// + /// Assign the OVR Custom Skeleton. + /// + /// The OVRCustomSkeleton component. + public void AssignOVRCustomSkeleton(OVRCustomSkeleton skeleton) + { + _customSkeleton = skeleton; + } + + /// + /// Assign the Animator. + /// + /// The Animator component. + public void AssignAnimator(Animator animator) + { + _animator = animator; + } + + /// + public bool IsBoneTransformsDataValid() + { + return (_customSkeleton != null && _customSkeleton.IsDataValid) || + (_animator != null); + } + + /// + public void SetUpHipsAndHeadBones() + { + var hipsToHeadBones = new List(); + _hipsToHeadDistance = 0.0f; + for (int boneId = (int)OVRSkeleton.BoneId.Body_Hips; boneId <= (int)OVRSkeleton.BoneId.Body_Head; + boneId++) + { + var foundBoneTransform = FindBoneTransform((OVRSkeleton.BoneId)boneId); + if (foundBoneTransform == null) + { + continue; + } + hipsToHeadBones.Add(foundBoneTransform.transform); + if (hipsToHeadBones.Count > 1) + { + _hipsToHeadDistance += + Vector3.Distance(hipsToHeadBones[^1].position, hipsToHeadBones[^2].position); + } + } + _hipsToHeadBones = hipsToHeadBones.ToArray(); + + var avgUpperLegBonePos = (_leftLegData.UpperLegBone.position + _rightLegData.UpperLegBone.position) / 2f; + var avgLowerLegBonePos = (_leftLegData.LowerLegBone.position + _rightLegData.LowerLegBone.position) / 2f; + var avgFootBonePos = (_leftLegData.FootBone.position + _rightLegData.FootBone.position) / 2f; + _hipsToFootDistance = Vector3.Distance(hipsToHeadBones[0].position, avgUpperLegBonePos) + + Vector3.Distance(avgUpperLegBonePos, avgLowerLegBonePos) + + Vector3.Distance(avgLowerLegBonePos, avgFootBonePos); + } + + /// + public void SetUpLeftArmData() + { + var shoulder = FindBoneTransform(OVRSkeleton.BoneId.Body_LeftShoulder); + var lowerArmBone = FindBoneTransform(OVRSkeleton.BoneId.Body_LeftArmLower); + var handBone = FindBoneTransform(OVRSkeleton.BoneId.Body_LeftHandWrist); + _leftArmData = new ArmPosData() + { + ShoulderBone = shoulder, + UpperArmBone = FindBoneTransform(OVRSkeleton.BoneId.Body_LeftArmUpper), + LowerArmBone = lowerArmBone, + HandBone = handBone, + ShoulderLocalPos = shoulder != null ? shoulder.localPosition : Vector3.zero, + LowerArmToHandAxis = + lowerArmBone.InverseTransformDirection(handBone.position - lowerArmBone.position).normalized + }; + } + + /// + public void SetUpRightArmData() + { + var shoulder = FindBoneTransform(OVRSkeleton.BoneId.Body_RightShoulder); + var lowerArmBone = FindBoneTransform(OVRSkeleton.BoneId.Body_RightArmLower); + var handBone = FindBoneTransform(OVRSkeleton.BoneId.Body_RightHandWrist); + _rightArmData = new ArmPosData() + { + ShoulderBone = shoulder, + UpperArmBone = FindBoneTransform(OVRSkeleton.BoneId.Body_RightArmUpper), + LowerArmBone = lowerArmBone, + HandBone = handBone, + ShoulderLocalPos = shoulder != null ? shoulder.localPosition : Vector3.zero, + LowerArmToHandAxis = + lowerArmBone.InverseTransformDirection(handBone.position - lowerArmBone.position).normalized + }; + } + + /// + public void SetUpLeftLegData() + { + var toes = FindBoneTransform(OVRSkeleton.BoneId.FullBody_LeftFootBall); + var foot = FindBoneTransform(OVRSkeleton.BoneId.FullBody_LeftFootAnkle); + + _leftLegData = new LegPosData + { + HipsBone = FindBoneTransform(OVRSkeleton.BoneId.FullBody_Hips), + UpperLegBone = FindBoneTransform(OVRSkeleton.BoneId.FullBody_LeftUpperLeg), + LowerLegBone = FindBoneTransform(OVRSkeleton.BoneId.FullBody_LeftLowerLeg), + FootBone = foot, + ToesBone = toes, + ToesLocalPos = toes != null ? toes.localPosition : Vector3.zero, + FootLocalRot = foot.localRotation + }; + } + + /// + public void SetUpRightLegData() + { + var toes = FindBoneTransform(OVRSkeleton.BoneId.FullBody_RightFootBall); + var foot = FindBoneTransform(OVRSkeleton.BoneId.FullBody_RightFootAnkle); + + _rightLegData = new LegPosData + { + HipsBone = FindBoneTransform(OVRSkeleton.BoneId.FullBody_Hips), + UpperLegBone = FindBoneTransform(OVRSkeleton.BoneId.FullBody_RightUpperLeg), + LowerLegBone = FindBoneTransform(OVRSkeleton.BoneId.FullBody_RightLowerLeg), + FootBone = foot, + ToesBone = toes, + ToesLocalPos = toes != null ? toes.localPosition : Vector3.zero, + FootLocalRot = foot.localRotation + }; + } + + /// + public void SetUpBonePairs() + { + if (_hipsToHeadBones == null) + { + Debug.LogError("Please set up hips to head bones before trying to " + + "set up bone pairs"); + return; + } + if (!_leftArmData.IsInitialized) + { + Debug.LogError("Please set up left arm data before trying to " + + "set up bone pairs"); + return; + } + if (!_rightArmData.IsInitialized) + { + Debug.LogError("Please set up right arm data before trying to " + + "set up bone pairs"); + return; + } + if (!_leftLegData.IsInitialized) + { + Debug.LogError("Please set up left leg data before trying to " + + "set up bone pairs"); + return; + } + if (!_rightLegData.IsInitialized) + { + Debug.LogError("Please set up right leg data before trying to " + + "set up bone pairs"); + return; + } + + // Setup bone pairs for hips to head bones. + var bonePairs = new List(); + for (int i = 0; i < _hipsToHeadBones.Length - 1; i++) + { + var bonePair = new BonePairData + { + StartBone = _hipsToHeadBones[i], + EndBone = _hipsToHeadBones[i + 1] + }; + bonePairs.Add(bonePair); + } + + // Check for optional bones and update accordingly. + var chestBone = FindBoneTransform(OVRSkeleton.BoneId.FullBody_Chest); + var spineUpperBone = FindBoneTransform(OVRSkeleton.BoneId.FullBody_SpineUpper); + var spineLowerBone = FindBoneTransform(OVRSkeleton.BoneId.FullBody_SpineLower); + var highestSpineBone = chestBone; + if (chestBone == null) + { + Debug.LogWarning($"Did not find the {HumanBodyBones.UpperChest} bone in {_animator}. The deformation job result will be affected."); + highestSpineBone = spineUpperBone; + } + if (spineUpperBone == null) + { + Debug.LogWarning($"Did not find the {HumanBodyBones.Chest} bone in {_animator}. The deformation job result will be affected."); + highestSpineBone = spineLowerBone; + } + var leftShoulderBone = _leftArmData.ShoulderBone; + var rightShoulderBone = _rightArmData.ShoulderBone; + + // Chest to shoulder bones. + if (leftShoulderBone != null) + { + bonePairs.Add(new BonePairData + { + StartBone = highestSpineBone, + EndBone = leftShoulderBone, + }); + } + else + { + Debug.LogWarning($"Did not find the {HumanBodyBones.LeftShoulder} bone in {_animator}. The deformation job result will be affected."); + } + + if (rightShoulderBone != null) + { + bonePairs.Add(new BonePairData + { + StartBone = highestSpineBone, + EndBone = rightShoulderBone, + }); + } + else + { + Debug.LogWarning($"Did not find the {HumanBodyBones.RightShoulder} bone in {_animator}. The deformation job result will be affected."); + } + + // Shoulder to upper arm bones. + bonePairs.Add(new BonePairData + { + StartBone = leftShoulderBone != null ? leftShoulderBone : highestSpineBone, + EndBone = _leftArmData.UpperArmBone + }); + bonePairs.Add(new BonePairData + { + StartBone = rightShoulderBone != null ? rightShoulderBone : highestSpineBone, + EndBone = _rightArmData.UpperArmBone + }); + + // Upper arm to lower arm bones. + bonePairs.Add(new BonePairData + { + StartBone = _leftArmData.UpperArmBone, + EndBone = _leftArmData.LowerArmBone + }); + bonePairs.Add(new BonePairData + { + StartBone = _rightArmData.UpperArmBone, + EndBone = _rightArmData.LowerArmBone + }); + + // Lower arm to hand bones. + bonePairs.Add(new BonePairData + { + StartBone = _leftArmData.LowerArmBone, + EndBone = _leftArmData.HandBone + }); + bonePairs.Add(new BonePairData + { + StartBone = _rightArmData.LowerArmBone, + EndBone = _rightArmData.HandBone + }); + + // Hips to upper leg bones. + var upperLegIndex = bonePairs.Count; + bonePairs.Add(new BonePairData + { + StartBone = _leftLegData.HipsBone, + EndBone = _leftLegData.UpperLegBone + }); + bonePairs.Add(new BonePairData + { + StartBone = _rightLegData.HipsBone, + EndBone = _rightLegData.UpperLegBone + }); + + // Upper leg to lower leg bones. + bonePairs.Add(new BonePairData + { + StartBone = _leftLegData.UpperLegBone, + EndBone = _leftLegData.LowerLegBone + }); + bonePairs.Add(new BonePairData + { + StartBone = _rightLegData.UpperLegBone, + EndBone = _rightLegData.LowerLegBone + }); + + // Lower leg to feet bones. + bonePairs.Add(new BonePairData + { + StartBone = _leftLegData.LowerLegBone, + EndBone = _leftLegData.FootBone + }); + bonePairs.Add(new BonePairData + { + StartBone = _rightLegData.LowerLegBone, + EndBone = _rightLegData.FootBone + }); + + // Calculate original bone pair lengths. + for (int i = 0; i < bonePairs.Count; i++) + { + var bonePair = bonePairs[i]; + if (bonePair.StartBone != null && bonePair.EndBone != null) + { + bonePair.Distance = Vector3.Distance(bonePair.EndBone.position, bonePair.StartBone.position); + } + else + { + Debug.LogWarning($"Missing bones in bone pair! Start Bone: {bonePair.StartBone}, End Bone: {bonePair.EndBone}"); + } + bonePairs[i] = bonePair; + } + + // Calculate proportions for spine. + for (int i = 0; i < _hipsToHeadBones.Length - 1; i++) + { + var bonePair = bonePairs[i]; + bonePair.HeightProportion = bonePair.Distance / (_hipsToHeadDistance + _hipsToFootDistance); + bonePair.LimbProportion = bonePair.Distance / _hipsToHeadDistance; + bonePairs[i] = bonePair; + } + + // Calculate proportions for legs. + for (int i = upperLegIndex; i < bonePairs.Count; i++) + { + var bonePair = bonePairs[i]; + bonePair.HeightProportion = bonePair.Distance / (_hipsToHeadDistance + _hipsToFootDistance); + bonePair.LimbProportion = bonePair.Distance / _hipsToFootDistance; + bonePairs[i] = bonePair; + } + + _bonePairData = bonePairs.ToArray(); + } + + /// + public void SetUpBoneTargets(Transform setupParent) + { + var hipsTarget = setupParent.FindChildRecursive("Hips"); + var spineLowerTarget = setupParent.FindChildRecursive("SpineLower"); + var spineUpperTarget = setupParent.FindChildRecursive("SpineUpper"); + var chestTarget = setupParent.FindChildRecursive("Chest"); + var neckTarget = setupParent.FindChildRecursive("Neck"); + var headTarget = setupParent.FindChildRecursive("Head"); + + var hipsToHeadBoneTargets = new List + { + hipsTarget, spineLowerTarget + }; + + // Add optional bones, based on the length of the original array. + if (_hipsToHeadBones.Length > 4) + { + hipsToHeadBoneTargets.Add(spineUpperTarget); + } + if (_hipsToHeadBones.Length > 5) + { + hipsToHeadBoneTargets.Add(chestTarget); + } + hipsToHeadBoneTargets.Add(neckTarget); + hipsToHeadBoneTargets.Add(headTarget); + + _hipsToHeadBoneTargets = hipsToHeadBoneTargets.ToArray(); + } + + /// + public void InitializeStartingScale() + { + if (_animator != null) + { + _startingScale = _animator.transform.lossyScale; + } + else if (_customSkeleton != null) + { + _startingScale = _customSkeleton.transform.lossyScale; + } + else + { + Debug.LogError("Both animator and custom skeleton are not; " + + "could not compute starting scale."); + } + } + + /// + public void ClearTransformData() + { + _bonePairData = null; + _hipsToHeadBones = null; + _leftArmData.ClearTransformData(); + _rightArmData.ClearTransformData(); + _leftLegData.ClearTransformData(); + _rightArmData.ClearTransformData(); + } + + private Transform FindBoneTransform(OVRSkeleton.BoneId boneId) + { + if (_customSkeleton != null) + { + return RiggingUtilities.FindBoneTransformFromCustomSkeleton(_customSkeleton, boneId); + } + + if (_animator != null) + { + if (!OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone.ContainsKey(boneId)) + { + return null; + } + return _animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[boneId]); + } + + return null; + } + + bool IAnimationJobData.IsValid() + { + if (_animator == null && _customSkeleton == null) + { + Debug.LogError("Animator or skeleton not set up."); + return false; + } + + if (_bonePairData == null || _bonePairData.Length == 0) + { + Debug.LogError("Bone pair data not set up."); + return false; + } + + if (_hipsToHeadBones == null || _hipsToHeadBones.Length == 0) + { + Debug.LogError("Hips to head bones not set up."); + return false; + } + + if (!_leftArmData.IsInitialized || !_rightArmData.IsInitialized) + { + Debug.LogError("Arm data not set up."); + return false; + } + + if (!_leftLegData.IsInitialized || !_rightLegData.IsInitialized) + { + Debug.LogError("Leg data not set up."); + return false; + } + + return true; + } + + void IAnimationJobData.SetDefaultValues() + { + _animator = null; + _customSkeleton = null; + _spineTranslationCorrectionType = (int)SpineTranslationCorrectionType.None; + + _leftArmWeight = 0.0f; + _rightArmWeight = 0.0f; + _leftHandWeight = 0.0f; + _rightHandWeight = 0.0f; + _leftLegWeight = 0.0f; + _rightLegWeight = 0.0f; + _leftToesWeight = 0.0f; + _rightToesWeight = 0.0f; + + _startingScale = Vector3.one; + _bonePairData = null; + _hipsToHeadBones = null; + _leftArmData = new ArmPosData(); + _rightArmData = new ArmPosData(); + _leftLegData = new LegPosData(); + _rightLegData = new LegPosData(); + } + } + + /// + /// FullBodyDeformation constraint. + /// + [DisallowMultipleComponent, AddComponentMenu("Movement Animation Rigging/Full Body Deformation Constraint")] + public class FullBodyDeformationConstraint : RigConstraint< + FullBodyDeformationJob, + FullBodyDeformationData, + FullBodyDeformationJobBinder>, + IOVRSkeletonConstraint + { + /// + /// Allows calculating bone data via a button. + /// + [SerializeField, InspectorButton("CalculateBoneData")] + [Tooltip(FullBodyDeformationConstraintToolTips.CalculateBoneData)] + protected bool _calculateBoneData; + + /// + /// Setup all variables required for the constraint. + /// + public void CalculateBoneData() + { +#if UNITY_EDITOR + UnityEditor.Undo.RecordObject(this, "Undo Full Body Deformation Setup"); +#endif + var skeleton = GetComponentInParent(); + if (skeleton != null) + { + data.AssignOVRCustomSkeleton(skeleton); + } + else + { + data.AssignAnimator(GetComponentInParent()); + } + data.InitializeStartingScale(); + data.ClearTransformData(); + data.SetUpLeftArmData(); + data.SetUpRightArmData(); + data.SetUpLeftLegData(); + data.SetUpRightLegData(); + data.SetUpHipsAndHeadBones(); + data.SetUpBonePairs(); + data.SetUpBoneTargets(transform); +#if UNITY_EDITOR + UnityEditor.PrefabUtility.RecordPrefabInstancePropertyModifications(this); +#endif + } + + /// + public void RegenerateData() + { + } + } +} diff --git a/Runtime/Scripts/AnimationRigging/FullBodyDeformationConstraint.cs.meta b/Runtime/Scripts/AnimationRigging/FullBodyDeformationConstraint.cs.meta new file mode 100644 index 00000000..30c2ab2c --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/FullBodyDeformationConstraint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: da7a4e7762678a941bc75ee4155418d1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/AnimationRigging/FullBodyDeformationJob.cs b/Runtime/Scripts/AnimationRigging/FullBodyDeformationJob.cs new file mode 100644 index 00000000..cf2aad4d --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/FullBodyDeformationJob.cs @@ -0,0 +1,1074 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using Unity.Collections; +using UnityEngine; +using UnityEngine.Animations; +using UnityEngine.Animations.Rigging; + +namespace Oculus.Movement.AnimationRigging +{ + /// + /// The FullBodyDeformation job. + /// + [Unity.Burst.BurstCompile] + public struct FullBodyDeformationJob : IWeightedAnimationJob + { + /// + /// Bone animation data for the FullBodyDeformation job. + /// + public struct BoneAnimationData + { + /// + /// The distance between the start and end bone transforms. + /// + public float Distance; + + /// + /// The proportion of this bone relative to the height. + /// + public float HeightProportion; + + /// + /// The proportion of this bone relative to its limb. + /// + public float LimbProportion; + } + + /// + /// The ReadWrite transform handle for the left shoulder bone. + /// + public ReadWriteTransformHandle LeftShoulderBone; + + /// + /// The ReadWrite transform handle for the right shoulder bone. + /// + public ReadWriteTransformHandle RightShoulderBone; + + /// + /// The ReadWrite transform handle for the left upper arm bone. + /// + public ReadWriteTransformHandle LeftUpperArmBone; + + /// + /// The ReadWrite transform handle for the right upper arm bone. + /// + public ReadWriteTransformHandle RightUpperArmBone; + + /// + /// The ReadWrite transform handle for the left lower arm bone. + /// + public ReadWriteTransformHandle LeftLowerArmBone; + + /// + /// The ReadWrite transform handle for the right lower arm bone. + /// + public ReadWriteTransformHandle RightLowerArmBone; + + /// + /// The ReadWrite transform handle for the left hand bone. + /// + public ReadWriteTransformHandle LeftHandBone; + + /// + /// The ReadWrite transform handle for the right hand bone. + /// + public ReadWriteTransformHandle RightHandBone; + + /// + /// The ReadWrite transform handle for the left upper leg bone. + /// + public ReadWriteTransformHandle LeftUpperLegBone; + + /// + /// The ReadWrite transform handle for the right upper leg bone. + /// + public ReadWriteTransformHandle RightUpperLegBone; + + /// + /// The ReadWrite transform handle for the left lower leg bone. + /// + public ReadWriteTransformHandle LeftLowerLegBone; + + /// + /// The ReadWrite transform handle for the right lower leg bone. + /// + public ReadWriteTransformHandle RightLowerLegBone; + + /// + /// The ReadWrite transform handle for the left foot bone. + /// + public ReadWriteTransformHandle LeftFootBone; + + /// + /// The ReadWrite transform handle for the right foot bone. + /// + public ReadWriteTransformHandle RightFootBone; + + /// + /// The ReadWrite transform handle for the left toes bone. + /// + public ReadWriteTransformHandle LeftToesBone; + + /// + /// The ReadWrite transform handle for the right toes bone. + /// + public ReadWriteTransformHandle RightToesBone; + + /// + /// The ReadWrite transform handle for the hips bone. + /// + public ReadWriteTransformHandle HipsBone; + + /// + /// The ReadWrite transform handle for the head bone. + /// + public ReadWriteTransformHandle HeadBone; + + /// + /// The inclusive array of bones from the hips to the head. + /// + public NativeArray HipsToHeadBones; + + /// + /// The inclusive array of bone targets from the hips to the head. + /// + public NativeArray HipsToHeadBoneTargets; + + /// + /// The array of upper body offsets. + /// + public NativeArray UpperBodyOffsets; + + /// + /// The array of upper body target positions. + /// + public NativeArray UpperBodyTargetPositions; + + /// + /// The array of start bones for FullBodyDeformation. + /// + public NativeArray StartBones; + + /// + /// The array of end bones for FullBodyDeformation. + /// + public NativeArray EndBones; + + /// + /// The array of bone animation data for the start and end bone pairs. + /// + public NativeArray BoneAnimData; + + /// + /// The array of directions between the start and end bones. + /// + public NativeArray BoneDirections; + + /// + /// The array containing 1 element for the current scale ratio. + /// + public NativeArray ScaleFactor; + + /// + /// The spine correction type. + /// + public IntProperty SpineCorrectionType; + + /// + /// The hips index in the bone pair data. + /// + public int HipsIndex; + + /// + /// The spine index in the bone pair data. + /// + public int SpineLowerIndex; + + /// + /// The spine upper index in the bone pair data. + /// + public int SpineUpperIndex; + + /// + /// The chest index in the bone pair data. + /// + public int ChestIndex; + + /// + /// The head index in the bone pair data. + /// + public int HeadIndex; + + /// + /// The weight for the spine lower fixup. + /// + public FloatProperty SpineLowerAlignmentWeight; + + /// + /// The weight for the spine upper fixup. + /// + public FloatProperty SpineUpperAlignmentWeight; + + /// + /// The weight for the chest fixup. + /// + public FloatProperty ChestAlignmentWeight; + + /// + /// The weight of the left shoulder offset. + /// + public FloatProperty LeftShoulderOffsetWeight; + + /// + /// The weight of the right shoulder offset. + /// + public FloatProperty RightShoulderOffsetWeight; + + /// + /// The weight for the left arm offset. + /// + public FloatProperty LeftArmOffsetWeight; + + /// + /// The weight for the right arm offset. + /// + public FloatProperty RightArmOffsetWeight; + + /// + /// The weight for the left hand offset. + /// + public FloatProperty LeftHandOffsetWeight; + + /// + /// The weight for the right hand offset. + /// + public FloatProperty RightHandOffsetWeight; + + /// + /// The weight for the left leg offset. + /// + public FloatProperty LeftLegOffsetWeight; + + /// + /// The weight for the right leg offset. + /// + public FloatProperty RightLegOffsetWeight; + + /// + /// The weight for the left toe. + /// + public FloatProperty LeftToesOffsetWeight; + + /// + /// The weight for the right toe. + /// + public FloatProperty RightToesOffsetWeight; + + /// + /// The weight for aligning the feet. + /// + public FloatProperty AlignFeetWeight; + + /// + /// The local position of the left shoulder. + /// + public Vector3 LeftShoulderOriginalLocalPos; + + /// + /// The local position of the right shoulder. + /// + public Vector3 RightShoulderOriginalLocalPos; + + /// + /// The local position of the left toes. + /// + public Vector3 LeftToesOriginalLocalPos; + + /// + /// The local position of the right toes. + /// + public Vector3 RightToesOriginalLocalPos; + + /// + /// The left foot local rotation. + /// + public Quaternion LeftFootLocalRot; + + /// + /// The right foot local rotation. + /// + public Quaternion RightFootLocalRot; + + private Vector3 _targetHipsPos; + private Vector3 _targetHeadPos; + private Vector3 _preDeformationLeftUpperArmPos; + private Vector3 _preDeformationRightUpperArmPos; + private Vector3 _preDeformationLeftLowerArmPos; + private Vector3 _preDeformationRightLowerArmPos; + private Vector3 _preDeformationLeftHandPos; + private Vector3 _preDeformationRightHandPos; + private Vector3 _preDeformationLeftFootPos; + private Vector3 _preDeformationRightFootPos; + private Vector3 _preDeformationLeftToesPos; + private Vector3 _preDeformationRightToesPos; + + private Vector3 _leftFootOffset; + private Vector3 _rightFootOffset; + private Vector3 _hipsGroundingOffset; + + private int _leftUpperLegIndex => BoneAnimData.Length - 6; + private int _rightUpperLegIndex => _leftUpperLegIndex + 1; + private int _leftLowerLegIndex => _leftUpperLegIndex + 2; + private int _rightLowerLegIndex => _leftLowerLegIndex + 1; + + /// + public FloatProperty jobWeight { get; set; } + + /// + public void ProcessRootMotion(AnimationStream stream) + { + } + + /// + public void ProcessAnimation(AnimationStream stream) + { + float weight = jobWeight.Get(stream); + if (weight > 0f) + { + if (StartBones.Length == 0 || EndBones.Length == 0) + { + return; + } + + if (LeftToesBone.IsValid(stream)) + { + _preDeformationLeftToesPos = LeftToesBone.GetPosition(stream); + } + + if (RightToesBone.IsValid(stream)) + { + _preDeformationRightToesPos = RightToesBone.GetPosition(stream); + } + + _preDeformationLeftUpperArmPos = LeftUpperArmBone.GetPosition(stream); + _preDeformationRightUpperArmPos = RightUpperArmBone.GetPosition(stream); + _preDeformationLeftLowerArmPos = LeftLowerArmBone.GetPosition(stream); + _preDeformationRightLowerArmPos = RightLowerArmBone.GetPosition(stream); + _preDeformationLeftHandPos = LeftHandBone.GetPosition(stream); + _preDeformationRightHandPos = RightHandBone.GetPosition(stream); + _preDeformationLeftFootPos = LeftFootBone.GetPosition(stream); + _preDeformationRightFootPos = RightFootBone.GetPosition(stream); + + _targetHipsPos = HipsToHeadBoneTargets[HipsIndex].GetPosition(stream); + _targetHeadPos = HipsToHeadBoneTargets[^1].GetPosition(stream); + if (SpineLowerAlignmentWeight.Get(stream) != 0.0f || + SpineUpperAlignmentWeight.Get(stream) != 0.0f || + ChestAlignmentWeight.Get(stream) != 0.0f) + { + AlignSpine(stream, weight); + } + InterpolateShoulders(stream, weight); + UpdateBoneDirections(stream); + EnforceOriginalSkeletalProportions(stream, weight); + InterpolateLegs(stream, weight); + ApplySpineCorrection(stream, weight); + ApplyAccurateFeet(stream, weight); + AlignFeet(stream, weight); + InterpolateToesY(stream, weight); + InterpolateArms(stream, weight); + InterpolateHands(stream, weight); + } + else + { + for (int i = 0; i < HipsToHeadBones.Length; ++i) + { + AnimationRuntimeUtils.PassThrough(stream, HipsToHeadBones[i]); + } + + for (int i = 0; i < StartBones.Length; ++i) + { + AnimationRuntimeUtils.PassThrough(stream, StartBones[i]); + } + + for (int i = 0; i < EndBones.Length; ++i) + { + AnimationRuntimeUtils.PassThrough(stream, EndBones[i]); + } + } + } + + /// + /// Align the spine positions with the tracked spine positions, + /// adding an offset on spine bones to align with the hips for a straight spine. + /// + /// + /// + private void AlignSpine(AnimationStream stream, float weight) + { + var spineLowerOffset = Vector3.zero; + var spineUpperOffset = Vector3.zero; + var chestOffset = Vector3.zero; + + if (HipsToHeadBoneTargets[SpineLowerIndex].IsValid(stream)) + { + spineLowerOffset = HipsToHeadBoneTargets[HipsIndex].GetPosition(stream) - + HipsToHeadBoneTargets[SpineLowerIndex].GetPosition(stream); + spineLowerOffset.y = 0.0f; + } + + if (SpineUpperIndex > 0 && HipsToHeadBoneTargets[SpineUpperIndex].IsValid(stream)) + { + spineUpperOffset = (HipsToHeadBoneTargets[HipsIndex].GetPosition(stream) - + HipsToHeadBoneTargets[SpineUpperIndex].GetPosition(stream)) * 0.5f + + (HipsToHeadBones[HeadIndex - 1].GetPosition(stream) - + HipsToHeadBoneTargets[SpineUpperIndex].GetPosition(stream)) * 0.5f; + spineUpperOffset.y = 0.0f; + } + + if (ChestIndex > 0 && HipsToHeadBoneTargets[ChestIndex].IsValid(stream)) + { + chestOffset = (HipsToHeadBoneTargets[HipsIndex].GetPosition(stream) - + HipsToHeadBoneTargets[ChestIndex].GetPosition(stream)) * 0.25f + + (HipsToHeadBones[HeadIndex - 1].GetPosition(stream) - + HipsToHeadBoneTargets[ChestIndex].GetPosition(stream)) * 0.75f; + chestOffset.y = 0.0f; + } + + for (int i = SpineLowerIndex; i < HeadIndex; i++) + { + var targetBone = HipsToHeadBoneTargets[i]; + var originalBone = HipsToHeadBones[i]; + if (targetBone.IsValid(stream)) + { + var spineCorrectionWeight = weight; + var spineOffset = Vector3.zero; + + if (i == SpineLowerIndex) + { + spineOffset = Vector3.Lerp(Vector3.zero, spineLowerOffset, SpineLowerAlignmentWeight.Get(stream) * weight); ; + } + if (i == SpineUpperIndex) + { + spineOffset = Vector3.Lerp(Vector3.zero, spineUpperOffset, SpineUpperAlignmentWeight.Get(stream) * weight); + } + if (i == ChestIndex) + { + spineOffset = Vector3.Lerp(Vector3.zero, chestOffset, ChestAlignmentWeight.Get(stream) * weight); + } + + var targetPos = targetBone.GetPosition(stream) + spineOffset; + var originalPos = originalBone.GetPosition(stream); + targetPos.y = originalPos.y; + targetPos = Vector3.Lerp(originalPos, targetPos, spineCorrectionWeight); + originalBone.SetPosition(stream, targetPos); + } + HipsToHeadBoneTargets[i] = targetBone; + HipsToHeadBones[i] = originalBone; + } + } + + /// + /// Optionally interpolate from the current position to the original local position of the shoulders, + /// as the tracked positions may be mismatched. + /// + /// + /// + private void InterpolateShoulders(AnimationStream stream, float weight) + { + if (LeftShoulderBone.IsValid(stream)) + { + var leftShoulderLocalPos = LeftShoulderBone.GetLocalPosition(stream); + var leftShoulderOffset = Vector3.Lerp(Vector3.zero, + LeftShoulderOriginalLocalPos - leftShoulderLocalPos, weight * LeftShoulderOffsetWeight.Get(stream)); + LeftShoulderBone.SetLocalPosition(stream, leftShoulderLocalPos + leftShoulderOffset); + } + + if (RightShoulderBone.IsValid(stream)) + { + var rightShoulderLocalPos = RightShoulderBone.GetLocalPosition(stream); + var rightShoulderOffset = Vector3.Lerp(Vector3.zero, + RightShoulderOriginalLocalPos - rightShoulderLocalPos, weight * RightShoulderOffsetWeight.Get(stream)); + RightShoulderBone.SetLocalPosition(stream, rightShoulderLocalPos + rightShoulderOffset); + } + } + + /// + /// Update the bone directions between each bone pair. + /// + /// + private void UpdateBoneDirections(AnimationStream stream) + { + for (int i = 0; i < BoneDirections.Length; i++) + { + var startBone = StartBones[i]; + var endBone = EndBones[i]; + BoneDirections[i] = (endBone.GetPosition(stream) - startBone.GetPosition(stream)).normalized; + StartBones[i] = startBone; + EndBones[i] = endBone; + } + } + + /// + /// Applies spine correction, depending on the type picked. + /// + /// + /// + private void ApplySpineCorrection(AnimationStream stream, float weight) + { + // This hips offset is the offset required to preserve leg lengths when feet are planted. + _hipsGroundingOffset = (_leftFootOffset + _rightFootOffset) / 2f; + + // First, adjust the positions of the body based on the correction type. + var spineCorrectionType = (FullBodyDeformationData.SpineTranslationCorrectionType) + SpineCorrectionType.Get(stream); + + if (spineCorrectionType == FullBodyDeformationData.SpineTranslationCorrectionType.None) + { + ApplyNoSpineCorrection(stream, weight); + } + + if (spineCorrectionType == FullBodyDeformationData.SpineTranslationCorrectionType.AccurateHead) + { + ApplyAccurateHeadSpineCorrection(stream, weight); + } + + if (spineCorrectionType == FullBodyDeformationData.SpineTranslationCorrectionType.AccurateHips || + spineCorrectionType == FullBodyDeformationData.SpineTranslationCorrectionType.AccurateHipsAndHead) + { + ApplyAccurateHipsSpineCorrection(stream, weight); + } + + if (spineCorrectionType == FullBodyDeformationData.SpineTranslationCorrectionType.AccurateHipsAndHead) + { + ApplyAccurateHipsAndHeadSpineCorrection(stream, weight); + } + } + + /// + /// Adjust the hips by the foot offset, then adjust the legs afterwards. + /// + /// + /// + private void ApplyNoSpineCorrection(AnimationStream stream, float weight) + { + var targetHipsPos = HipsBone.GetPosition(stream) + + Vector3.Lerp(Vector3.zero, _hipsGroundingOffset, weight); + var targetLeftUpperLegPos = LeftUpperLegBone.GetPosition(stream); + var targetRightUpperLegPos = RightUpperLegBone.GetPosition(stream); + + HipsBone.SetPosition(stream, targetHipsPos); + LeftUpperLegBone.SetPosition(stream, targetLeftUpperLegPos); + RightUpperLegBone.SetPosition(stream, targetRightUpperLegPos); + } + + /// + /// Keep the head accurate, adjusting the proportions of the full body. + /// + /// + /// + private void ApplyAccurateHeadSpineCorrection(AnimationStream stream, float weight) + { + var headOffset = _targetHeadPos - HeadBone.GetPosition(stream); + + // Separate head offset application to upper and lower body. + var upperBodyProportion = 0.0f; + for (int i = HipsIndex; i < HeadIndex; i++) + { + upperBodyProportion += BoneAnimData[i].HeightProportion; + } + var lowerBodyProportion = 1 - upperBodyProportion; + + // Upper body. + UpperBodyOffsets[HipsIndex] = headOffset * (lowerBodyProportion + BoneAnimData[HipsIndex].HeightProportion); + UpperBodyTargetPositions[HipsIndex] = HipsBone.GetPosition(stream) + + Vector3.Lerp(Vector3.zero, UpperBodyOffsets[HipsIndex], weight); + for (int i = SpineLowerIndex; i < HeadIndex; i++) + { + var bone = HipsToHeadBones[i]; + UpperBodyOffsets[i] = UpperBodyOffsets[i - 1] + headOffset * BoneAnimData[i].LimbProportion; + UpperBodyTargetPositions[i] = bone.GetPosition(stream) + + Vector3.Lerp(Vector3.zero, UpperBodyOffsets[i], weight); + } + + // Lower body. + var leftUpperLegOffset = -_hipsGroundingOffset; + var rightUpperLegOffset = -_hipsGroundingOffset; + var leftLowerLegOffset = headOffset * + (BoneAnimData[_leftLowerLegIndex].HeightProportion + + BoneAnimData[_leftUpperLegIndex].HeightProportion); + var rightLowerLegOffset = headOffset * + (BoneAnimData[_rightLowerLegIndex].HeightProportion + + BoneAnimData[_rightUpperLegIndex].HeightProportion); + var targetLeftUpperLegPos = LeftUpperLegBone.GetLocalPosition(stream) + + Vector3.Lerp(Vector3.zero, leftUpperLegOffset, weight); + var targetRightUpperLegPos = RightUpperLegBone.GetLocalPosition(stream) + + Vector3.Lerp(Vector3.zero, rightUpperLegOffset, weight); + var targetLeftLowerLegPos = LeftLowerLegBone.GetPosition(stream) + + Vector3.Lerp(Vector3.zero, leftLowerLegOffset, weight); + var targetRightLowerLegPos = RightLowerLegBone.GetPosition(stream) + + Vector3.Lerp(Vector3.zero, rightLowerLegOffset, weight); + + // Set bone positions. + for (int i = HipsIndex; i < HeadIndex; i++) + { + var bone = HipsToHeadBones[i]; + bone.SetPosition(stream, UpperBodyTargetPositions[i]); + HipsToHeadBones[i] = bone; + } + HeadBone.SetPosition(stream, _targetHeadPos); + + LeftUpperLegBone.SetLocalPosition(stream, targetLeftUpperLegPos); + RightUpperLegBone.SetLocalPosition(stream, targetRightUpperLegPos); + LeftLowerLegBone.SetPosition(stream, targetLeftLowerLegPos); + RightLowerLegBone.SetPosition(stream, targetRightLowerLegPos); + } + + /// + /// Keep the hips accurate, adjusting the proportions of the lower body. + /// + /// + /// + private void ApplyAccurateHipsSpineCorrection(AnimationStream stream, float weight) + { + // The hips are not affected by any bone pairs. However, the hips grounding offset needs to be distributed + // through the legs. Apply the full hips offset to the upper legs so it looks correct. + var leftUpperLegOffset = -_hipsGroundingOffset; + var rightUpperLegOffset = -_hipsGroundingOffset; + var leftLowerLegOffset = -_hipsGroundingOffset * + (BoneAnimData[_leftLowerLegIndex].LimbProportion + + BoneAnimData[_leftUpperLegIndex].LimbProportion); + var rightLowerLegOffset = -_hipsGroundingOffset * + (BoneAnimData[_rightLowerLegIndex].LimbProportion + + BoneAnimData[_rightUpperLegIndex].LimbProportion); + + var targetLeftUpperLegPos = LeftUpperLegBone.GetPosition(stream) + + Vector3.Lerp(Vector3.zero, leftUpperLegOffset, weight); + var targetRightUpperLegPos = RightUpperLegBone.GetPosition(stream) + + Vector3.Lerp(Vector3.zero, rightUpperLegOffset, weight); + var targetLeftLowerLegPos = LeftLowerLegBone.GetPosition(stream) + + Vector3.Lerp(Vector3.zero, leftLowerLegOffset, weight); + var targetRightLowerLegPos = RightLowerLegBone.GetPosition(stream) + + Vector3.Lerp(Vector3.zero, rightLowerLegOffset, weight); + + HipsBone.SetPosition(stream, _targetHipsPos); + LeftUpperLegBone.SetPosition(stream, targetLeftUpperLegPos); + RightUpperLegBone.SetPosition(stream, targetRightUpperLegPos); + LeftLowerLegBone.SetPosition(stream, targetLeftLowerLegPos); + RightLowerLegBone.SetPosition(stream, targetRightLowerLegPos); + } + + /// + /// Keep the hips and head accurate, adjusting the proportions of the upper body. + /// + /// + /// + private void ApplyAccurateHipsAndHeadSpineCorrection(AnimationStream stream, float weight) + { + // Calculate the offset between the current head and the tracked head to be undone by the hips + // and the rest of the spine. + var headOffset = _targetHeadPos - HeadBone.GetPosition(stream); + + UpperBodyOffsets[HipsIndex] = headOffset * BoneAnimData[HipsIndex].LimbProportion; + for (int i = SpineLowerIndex; i < HeadIndex; i++) + { + var bone = HipsToHeadBones[i]; + UpperBodyOffsets[i] = UpperBodyOffsets[i - 1] + headOffset * BoneAnimData[i].LimbProportion; + UpperBodyTargetPositions[i] = bone.GetPosition(stream) + + Vector3.Lerp(Vector3.zero, UpperBodyOffsets[i], weight); + } + + HipsBone.SetPosition(stream, _targetHipsPos); + for (int i = SpineLowerIndex; i < HeadIndex; i++) + { + var bone = HipsToHeadBones[i]; + bone.SetPosition(stream, UpperBodyTargetPositions[i]); + HipsToHeadBones[i] = bone; + } + HeadBone.SetPosition(stream, _targetHeadPos); + } + + /// + /// Sets the pre-deformation feet positions. + /// + /// The animation stream. + /// The weight of this operation. + private void ApplyAccurateFeet(AnimationStream stream, float weight) + { + var leftFootPos = LeftFootBone.GetPosition(stream); + var rightFootPos = RightFootBone.GetPosition(stream); + LeftFootBone.SetPosition(stream, + Vector3.Lerp(leftFootPos, _preDeformationLeftFootPos, weight)); + RightFootBone.SetPosition(stream, + Vector3.Lerp(rightFootPos, _preDeformationRightFootPos, weight)); + } + + /// + /// Align the feet to toward the toes using the up axis from its original rotation. + /// + /// The animation stream. + /// The weight of this operation. + private void AlignFeet(AnimationStream stream, float weight) + { + if (!LeftToesBone.IsValid(stream) || !RightToesBone.IsValid(stream)) + { + return; + } + var footAlignmentWeight = AlignFeetWeight.Get(stream) * weight; + var originalLeftFootLocalRot = LeftFootBone.GetLocalRotation(stream); + var originalRightFootLocalRot = RightFootBone.GetLocalRotation(stream); + LeftFootBone.SetLocalRotation(stream, LeftFootLocalRot); + RightFootBone.SetLocalRotation(stream, RightFootLocalRot); + + var leftFootTargetRotation = LeftFootLocalRot * GetRotationForFootAlignment(stream, + _preDeformationLeftToesPos, + LeftFootBone.GetRotation(stream) * Vector3.up, + LeftFootBone, LeftToesBone); + var rightFootTargetRotation = RightFootLocalRot * GetRotationForFootAlignment(stream, + _preDeformationRightToesPos, + RightFootBone.GetRotation(stream) * Vector3.up, + RightFootBone, RightToesBone); + + LeftFootBone.SetLocalRotation(stream, + Quaternion.Slerp(originalLeftFootLocalRot, leftFootTargetRotation, footAlignmentWeight)); + RightFootBone.SetLocalRotation(stream, + Quaternion.Slerp(originalRightFootLocalRot, rightFootTargetRotation, footAlignmentWeight)); + } + + /// + /// Gets the rotation around an axis for aligning the feet. + /// + /// The animation stream. + /// The original toes position. + /// The axis to rotate around. + /// The foot bone. + /// The toes bone. + /// + private Quaternion GetRotationForFootAlignment(AnimationStream stream, + Vector3 originalToesPos, Vector3 rotateAxis, + ReadWriteTransformHandle footBone, ReadWriteTransformHandle toesBone) + { + var footPosition = footBone.GetPosition(stream); + var originalToesDir = footPosition - originalToesPos; + // don't do anything if the foot has not been deformed from the original position + if (originalToesDir.magnitude < Mathf.Epsilon) + { + return Quaternion.identity; + } + var targetToesDir = footPosition - toesBone.GetPosition(stream); + var dot = Vector3.Dot(originalToesDir, targetToesDir); + var cosineValue = dot / (originalToesDir.magnitude * targetToesDir.magnitude); + + var angle = Mathf.Acos(cosineValue); + if (float.IsNaN(angle)) + { + return Quaternion.identity; + } + return Quaternion.AngleAxis(angle, rotateAxis); + } + + /// + /// For each bone pair, where a bone pair has a start and end bone, enforce its original proportion by using + /// the tracked direction of the bone, but the original size. + /// + /// The animation stream. + /// The weight of this operation. + private void EnforceOriginalSkeletalProportions(AnimationStream stream, float weight) + { + for (int i = 0; i < StartBones.Length; i++) + { + var startBone = StartBones[i]; + var endBone = EndBones[i]; + var startPos = startBone.GetPosition(stream); + var endPos = endBone.GetPosition(stream); + var data = BoneAnimData[i]; + + var targetPos = startPos + Vector3.Scale(BoneDirections[i] * data.Distance, ScaleFactor[0]); + endBone.SetPosition(stream, Vector3.Lerp(endPos, targetPos, weight)); + StartBones[i] = startBone; + EndBones[i] = endBone; + } + } + + /// + /// Interpolates the arm positions from the pre-deformation positions to the positions after skeletal + /// proportions are enforced. The hand positions can be incorrect after this function. + /// + /// The animation stream. + /// The weight of this operation. + private void InterpolateArms(AnimationStream stream, float weight) + { + var leftLowerArmPos = LeftLowerArmBone.GetPosition(stream); + var rightLowerArmPos = RightLowerArmBone.GetPosition(stream); + var leftUpperArmPos = LeftUpperArmBone.GetPosition(stream); + var rightUpperArmPos = RightUpperArmBone.GetPosition(stream); + var leftArmOffsetWeight = weight * LeftArmOffsetWeight.Get(stream); + var rightArmOffsetWeight = weight * RightArmOffsetWeight.Get(stream); + + LeftUpperArmBone.SetPosition(stream, + Vector3.Lerp(_preDeformationLeftUpperArmPos, leftUpperArmPos, leftArmOffsetWeight)); + RightUpperArmBone.SetPosition(stream, + Vector3.Lerp(_preDeformationRightUpperArmPos, rightUpperArmPos, rightArmOffsetWeight)); + LeftLowerArmBone.SetPosition(stream, + Vector3.Lerp(_preDeformationLeftLowerArmPos, leftLowerArmPos, leftArmOffsetWeight)); + RightLowerArmBone.SetPosition(stream, + Vector3.Lerp(_preDeformationRightLowerArmPos, rightLowerArmPos, rightArmOffsetWeight)); + } + + /// + /// Interpolates the hand positions from the pre-deformation positions to the positions after skeletal + /// proportions are enforced. + /// + /// The animation stream. + /// The weight of this operation. + private void InterpolateHands(AnimationStream stream, float weight) + { + var leftHandPos = LeftHandBone.GetPosition(stream); + var rightHandPos = RightHandBone.GetPosition(stream); + var leftHandOffsetWeight = weight * LeftHandOffsetWeight.Get(stream); + var rightHandOffsetWeight = weight * RightHandOffsetWeight.Get(stream); + LeftHandBone.SetPosition(stream, + Vector3.Lerp(_preDeformationLeftHandPos, leftHandPos, leftHandOffsetWeight)); + RightHandBone.SetPosition(stream, + Vector3.Lerp(_preDeformationRightHandPos, rightHandPos, rightHandOffsetWeight)); + } + + /// + /// Interpolates the leg positions from the pre-deformation positions to the positions after skeletal + /// proportions are enforced. The feet positions can be incorrect after this function + /// + /// The animation stream. + /// The weight of this operation. + private void InterpolateLegs(AnimationStream stream, float weight) + { + var leftLegOffsetWeight = weight * LeftLegOffsetWeight.Get(stream); + var rightLegOffsetWeight = weight * RightLegOffsetWeight.Get(stream); + _leftFootOffset = ApplyScaleAndWeight( + _preDeformationLeftFootPos - LeftFootBone.GetPosition(stream), leftLegOffsetWeight); + _rightFootOffset = ApplyScaleAndWeight( + _preDeformationRightFootPos - RightFootBone.GetPosition(stream), rightLegOffsetWeight); + + var targetLeftUpperLegPos = LeftUpperLegBone.GetPosition(stream) + _leftFootOffset; + var targetRightUpperLegPos = RightUpperLegBone.GetPosition(stream) + _rightFootOffset; + var targetLeftLowerLegPos = LeftLowerLegBone.GetPosition(stream) + _leftFootOffset; + var targetRightLowerLegPos = RightLowerLegBone.GetPosition(stream) + _rightFootOffset; + var targetLeftFootPos = LeftFootBone.GetPosition(stream) + _leftFootOffset; + var targetRightFootPos = RightFootBone.GetPosition(stream) + _rightFootOffset; + + LeftUpperLegBone.SetPosition(stream, targetLeftUpperLegPos); + RightUpperLegBone.SetPosition(stream, targetRightUpperLegPos); + LeftLowerLegBone.SetPosition(stream, targetLeftLowerLegPos); + RightLowerLegBone.SetPosition(stream, targetRightLowerLegPos); + LeftFootBone.SetPosition(stream, targetLeftFootPos); + RightFootBone.SetPosition(stream, targetRightFootPos); + } + + /// + /// Interpolates the toes Y position from the pre-deformation positions to the original local positions after + /// skeletal proportions are enforced. + /// + /// The animation stream. + /// The weight of this operation. + private void InterpolateToesY(AnimationStream stream, float weight) + { + var leftToesOffsetWeight = weight * LeftToesOffsetWeight.Get(stream); + var rightToesOffsetWeight = weight * RightToesOffsetWeight.Get(stream); + + // Modify only the y component of the toes. + if (LeftToesBone.IsValid(stream)) + { + var leftToesOffsetVector = ApplyScaleAndWeight( + Vector3.up * (LeftToesOriginalLocalPos.y - LeftToesBone.GetLocalPosition(stream).y), + leftToesOffsetWeight); + var targetLeftToesPos = LeftToesBone.GetPosition(stream) + leftToesOffsetVector; + LeftToesBone.SetPosition(stream, targetLeftToesPos); + } + + if (RightToesBone.IsValid(stream)) + { + var rightToesOffsetVector = ApplyScaleAndWeight( + Vector3.up * (RightToesOriginalLocalPos.y - RightToesBone.GetLocalPosition(stream).y), + rightToesOffsetWeight); + var targetRightToesPos = RightToesBone.GetPosition(stream) + rightToesOffsetVector; + RightToesBone.SetPosition(stream, targetRightToesPos); + } + } + + private Vector3 ApplyScaleAndWeight(Vector3 target, float weight) + { + return Vector3.Scale(Vector3.Lerp(Vector3.zero, target, weight), ScaleFactor[0]); + } + } + + /// + /// The FullBodyDeformation job binder. + /// + /// The constraint data type + public class FullBodyDeformationJobBinder : AnimationJobBinder + where T : struct, IAnimationJobData, IFullBodyDeformationData + { + /// + public override FullBodyDeformationJob Create(Animator animator, ref T data, Component component) + { + var job = new FullBodyDeformationJob(); + + job.HipsBone = ReadWriteTransformHandle.Bind(animator, data.HipsToHeadBones[0]); + job.HeadBone = ReadWriteTransformHandle.Bind(animator, data.HipsToHeadBones[^1]); + job.LeftShoulderBone = data.LeftArm.ShoulderBone != null ? + ReadWriteTransformHandle.Bind(animator, data.LeftArm.ShoulderBone) : new ReadWriteTransformHandle(); + job.RightShoulderBone = data.RightArm.ShoulderBone != null ? + ReadWriteTransformHandle.Bind(animator, data.RightArm.ShoulderBone) : new ReadWriteTransformHandle(); + job.LeftUpperArmBone = ReadWriteTransformHandle.Bind(animator, data.LeftArm.UpperArmBone); + job.LeftLowerArmBone = ReadWriteTransformHandle.Bind(animator, data.LeftArm.LowerArmBone); + job.RightUpperArmBone = ReadWriteTransformHandle.Bind(animator, data.RightArm.UpperArmBone); + job.RightLowerArmBone = ReadWriteTransformHandle.Bind(animator, data.RightArm.LowerArmBone); + job.LeftHandBone = ReadWriteTransformHandle.Bind(animator, data.LeftArm.HandBone); + job.RightHandBone = ReadWriteTransformHandle.Bind(animator, data.RightArm.HandBone); + job.LeftUpperLegBone = ReadWriteTransformHandle.Bind(animator, data.LeftLeg.UpperLegBone); + job.LeftLowerLegBone = ReadWriteTransformHandle.Bind(animator, data.LeftLeg.LowerLegBone); + job.RightUpperLegBone = ReadWriteTransformHandle.Bind(animator, data.RightLeg.UpperLegBone); + job.RightLowerLegBone = ReadWriteTransformHandle.Bind(animator, data.RightLeg.LowerLegBone); + job.LeftFootBone = ReadWriteTransformHandle.Bind(animator, data.LeftLeg.FootBone); + job.RightFootBone = ReadWriteTransformHandle.Bind(animator, data.RightLeg.FootBone); + job.LeftToesBone = data.LeftLeg.ToesBone != null ? + ReadWriteTransformHandle.Bind(animator, data.LeftLeg.ToesBone) : new ReadWriteTransformHandle(); + job.RightToesBone = data.RightLeg.ToesBone != null ? + ReadWriteTransformHandle.Bind(animator, data.RightLeg.ToesBone) : new ReadWriteTransformHandle(); + + job.StartBones = new NativeArray(data.BonePairs.Length, Allocator.Persistent, + NativeArrayOptions.UninitializedMemory); + job.EndBones = new NativeArray(data.BonePairs.Length, Allocator.Persistent, + NativeArrayOptions.UninitializedMemory); + job.HipsToHeadBones = new NativeArray(data.HipsToHeadBones.Length, + Allocator.Persistent, + NativeArrayOptions.UninitializedMemory); + job.HipsToHeadBoneTargets = new NativeArray(data.HipsToHeadBoneTargets.Length, + Allocator.Persistent, + NativeArrayOptions.UninitializedMemory); + job.UpperBodyOffsets = new NativeArray(data.HipsToHeadBones.Length, Allocator.Persistent, + NativeArrayOptions.UninitializedMemory); + job.UpperBodyTargetPositions = new NativeArray(data.HipsToHeadBones.Length, Allocator.Persistent, + NativeArrayOptions.UninitializedMemory); + job.BoneAnimData = new NativeArray(data.BonePairs.Length, + Allocator.Persistent, + NativeArrayOptions.UninitializedMemory); + job.BoneDirections = new NativeArray(data.BonePairs.Length, Allocator.Persistent, + NativeArrayOptions.UninitializedMemory); + job.ScaleFactor = new NativeArray(1, Allocator.Persistent, + NativeArrayOptions.UninitializedMemory); + + for (int i = 0; i < data.HipsToHeadBones.Length; i++) + { + job.HipsToHeadBones[i] = ReadWriteTransformHandle.Bind(animator, data.HipsToHeadBones[i]); + job.UpperBodyOffsets[i] = Vector3.zero; + job.UpperBodyTargetPositions[i] = Vector3.zero; + } + + for (int i = 0; i < data.HipsToHeadBoneTargets.Length; i++) + { + job.HipsToHeadBoneTargets[i] = ReadOnlyTransformHandle.Bind(animator, data.HipsToHeadBoneTargets[i]); + } + + for (int i = 0; i < data.BonePairs.Length; i++) + { + var boneAnimData = new FullBodyDeformationJob.BoneAnimationData + { + Distance = data.BonePairs[i].Distance, + HeightProportion = data.BonePairs[i].HeightProportion, + LimbProportion = data.BonePairs[i].LimbProportion + }; + job.StartBones[i] = ReadWriteTransformHandle.Bind(animator, data.BonePairs[i].StartBone); + job.EndBones[i] = ReadWriteTransformHandle.Bind(animator, data.BonePairs[i].EndBone); + job.BoneAnimData[i] = boneAnimData; + } + + job.SpineCorrectionType = IntProperty.Bind(animator, component, data.SpineCorrectionTypeIntProperty); + job.SpineLowerAlignmentWeight = + FloatProperty.Bind(animator, component, data.SpineLowerAlignmentWeightFloatProperty); + job.SpineUpperAlignmentWeight = + FloatProperty.Bind(animator, component, data.SpineUpperAlignmentWeightFloatProperty); + job.ChestAlignmentWeight = + FloatProperty.Bind(animator, component, data.ChestAlignmentWeightFloatProperty); + job.LeftShoulderOffsetWeight = + FloatProperty.Bind(animator, component, data.LeftShoulderWeightFloatProperty); + job.RightShoulderOffsetWeight = + FloatProperty.Bind(animator, component, data.RightShoulderWeightFloatProperty); + job.LeftArmOffsetWeight = FloatProperty.Bind(animator, component, data.LeftArmWeightFloatProperty); + job.RightArmOffsetWeight = FloatProperty.Bind(animator, component, data.RightArmWeightFloatProperty); + job.LeftHandOffsetWeight = FloatProperty.Bind(animator, component, data.LeftHandWeightFloatProperty); + job.RightHandOffsetWeight = FloatProperty.Bind(animator, component, data.RightHandWeightFloatProperty); + job.LeftLegOffsetWeight = FloatProperty.Bind(animator, component, data.LeftLegWeightFloatProperty); + job.RightLegOffsetWeight = FloatProperty.Bind(animator, component, data.RightLegWeightFloatProperty); + job.LeftToesOffsetWeight = FloatProperty.Bind(animator, component, data.LeftToesWeightFloatProperty); + job.RightToesOffsetWeight = FloatProperty.Bind(animator, component, data.RightToesWeightFloatProperty); + job.AlignFeetWeight = FloatProperty.Bind(animator, component, data.AlignFeetWeightFloatProperty); + + job.HipsIndex = (int)HumanBodyBones.Hips; + job.SpineLowerIndex = job.HipsIndex + 1; + job.SpineUpperIndex = animator.GetBoneTransform(HumanBodyBones.Chest) != null ? + job.SpineLowerIndex + 1 : -1; + job.ChestIndex = animator.GetBoneTransform(HumanBodyBones.UpperChest) != null ? + job.SpineUpperIndex + 1 : -1; + job.HeadIndex = data.HipsToHeadBones.Length; + job.LeftToesOriginalLocalPos = data.LeftLeg.ToesLocalPos; + job.RightToesOriginalLocalPos = data.RightLeg.ToesLocalPos; + job.LeftShoulderOriginalLocalPos = data.LeftArm.ShoulderLocalPos; + job.RightShoulderOriginalLocalPos = data.RightArm.ShoulderLocalPos; + job.LeftFootLocalRot = data.LeftLeg.FootLocalRot; + job.RightFootLocalRot = data.RightLeg.FootLocalRot; + + return job; + } + + /// + public override void Update(FullBodyDeformationJob job, ref T data) + { + if (data.IsBoneTransformsDataValid()) + { + data.ShouldUpdate = true; + } + + var currentScale = data.ConstraintCustomSkeleton != null + ? data.ConstraintCustomSkeleton.transform.lossyScale + : data.ConstraintAnimator.transform.lossyScale; + job.ScaleFactor[0] = + DivideVector3(currentScale, data.StartingScale); + base.Update(job, ref data); + + if (!data.IsBoneTransformsDataValid()) + { + data.ShouldUpdate = false; + } + } + + /// + public override void Destroy(FullBodyDeformationJob job) + { + job.StartBones.Dispose(); + job.EndBones.Dispose(); + job.BoneAnimData.Dispose(); + job.HipsToHeadBones.Dispose(); + job.HipsToHeadBoneTargets.Dispose(); + job.UpperBodyOffsets.Dispose(); + job.UpperBodyTargetPositions.Dispose(); + job.BoneDirections.Dispose(); + job.ScaleFactor.Dispose(); + } + + private Vector3 DivideVector3(Vector3 dividend, Vector3 divisor) + { + Vector3 targetScale = Vector3.one; + if (IsNonZero(divisor)) + { + targetScale = new Vector3( + dividend.x / divisor.x, dividend.y / divisor.y, dividend.z / divisor.z); + } + + return targetScale; + } + + private bool IsNonZero(Vector3 v) + { + return v.x != 0 && v.y != 0 && v.z != 0; + } + } +} diff --git a/Runtime/Scripts/AnimationRigging/FullBodyDeformationJob.cs.meta b/Runtime/Scripts/AnimationRigging/FullBodyDeformationJob.cs.meta new file mode 100644 index 00000000..c980bfc0 --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/FullBodyDeformationJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 883a1e82a3dc45e4097514ada3591f83 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/AnimationRigging/FullBodyHandDeformation.cs b/Runtime/Scripts/AnimationRigging/FullBodyHandDeformation.cs new file mode 100644 index 00000000..1b1c1231 --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/FullBodyHandDeformation.cs @@ -0,0 +1,829 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using System; +using System.Collections.Generic; +using Oculus.Interaction; +using UnityEngine; +using static OVRUnityHumanoidSkeletonRetargeter; + +namespace Oculus.Movement.AnimationRigging +{ + /// + /// Used to try to maintain the same proportions in the fingers for both hands. Copied from HandDeformation, + /// but using the full body bone set. + /// + [DefaultExecutionOrder(225)] + public class FullBodyHandDeformation : MonoBehaviour + { + /// + /// Finger class used for deformation. + /// + [Serializable] + public class FingerInfo + { + /// + /// Main constructor. + /// + /// Start transform for finger. + /// End transform for finger. + /// Id of start bone. + /// Id of end bone. + public FingerInfo(Transform startTransform, Transform endTransform, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId startBoneId, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId endBoneId) + { + StartBoneTransform = startTransform; + EndBoneTransform = endTransform; + StartBoneId = startBoneId; + EndBoneId = endBoneId; + } + + /// + /// The start bone transform. + /// + public Transform StartBoneTransform; + + /// + /// The end bone transform. + /// + public Transform EndBoneTransform; + + /// + /// The start transform bone id. + /// + public OVRHumanBodyBonesMappings.FullBodyTrackingBoneId StartBoneId; + + /// + /// The end transform bone id. + /// + public OVRHumanBodyBonesMappings.FullBodyTrackingBoneId EndBoneId; + + /// + /// The position offset based on local space to apply. + /// + public Vector3 EndPosOffset = Vector3.zero; + + /// + /// The rotation offset to apply. + /// + public Quaternion EndRotOffset = Quaternion.identity; + + /// + /// Original distance for bone. + /// + public float Distance; + + /// + /// The direction of the finger bone. + /// + private Vector3 _direction; + + /// + /// Updates the distance between the start and end bone transforms. + /// + public void UpdateDistance() + { + if (!IsValid()) + { + return; + } + Distance = Vector3.Distance(StartBoneTransform.position, EndBoneTransform.position); + } + + /// + /// Updates the direction from the start to the end bone transform. + /// + public void UpdateDirection() + { + if (!IsValid()) + { + return; + } + Vector3 endPos = EndBoneTransform.position + + EndBoneTransform.right * EndPosOffset.x + + EndBoneTransform.up * EndPosOffset.y + + EndBoneTransform.forward * EndPosOffset.z; + _direction = (endPos - StartBoneTransform.position).normalized; + } + + /// + /// Updates the end bone transform position with the direction and distance added to the + /// start bone transform position. + /// + /// The scale to be applied. + public void UpdateBonePosition(Vector3 scaleFactor) + { + if (!IsValid()) + { + return; + } + if (!RiggingUtilities.IsFiniteVector3(StartBoneTransform.position) || + !RiggingUtilities.IsFiniteVector3(EndBoneTransform.position)) + { + return; + } + + var targetPos = StartBoneTransform.position + Vector3.Scale(_direction * Distance, scaleFactor); + + // Make sure to undo the extra bone position. + if (EndBoneId == OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandThumbMetacarpal || + EndBoneId == OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandThumbMetacarpal) + { + targetPos -= EndBoneTransform.parent.position - StartBoneTransform.position; + } + + EndBoneTransform.position = targetPos; + } + + /// + /// Update rotation based on offset relative to bind pose. + /// + public void UpdateRotationBasedOnOffset() + { + if (!IsValid()) + { + return; + } + EndBoneTransform.rotation *= EndRotOffset; + } + + private bool IsValid() + { + return StartBoneTransform != null && EndBoneTransform != null; + } + } + + /// + /// Finger offset class used for deformation. + /// + [Serializable] + public class FingerOffset + { + /// + /// The id of the finger to apply the offset to. + /// + [Tooltip(HandDeformationTooltips.FingerOffset.FingerId)] + public OVRHumanBodyBonesMappings.FullBodyTrackingBoneId FingerId; + + /// + /// Optional finger bone. + /// + [Optional] + public Transform Finger; + + /// + /// The finger position offset. + /// + [Tooltip(HandDeformationTooltips.FingerOffset.FingerPosOffset)] + public Vector3 FingerPosOffset; + + /// + /// The finger rotation offset. + /// + [Tooltip(HandDeformationTooltips.FingerOffset.FingerRotOffset)] + public Vector3 FingerRotOffset; + } + + /// + /// If a finger bone isn't mapped, interpolate the finger bone between two fingers. + /// + [Serializable] + public class InterpolateFinger + { + /// + /// Start of finger. + /// + public Transform StartFinger; + /// + /// Target finger to influence. + /// + public Transform TargetFinger; + /// + /// End of finger. + /// + public Transform EndFinger; + /// + /// Distance between start and target fingers transforms. + /// + public float Distance; + + /// + /// Update distance between start finger and update finger. + /// + public void UpdateDistance() + { + if (StartFinger == null || EndFinger == null) + { + return; + } + + Distance = Vector3.Distance(StartFinger.position, TargetFinger.position); + } + + public void UpdateTargetFinger() + { + if (StartFinger == null || EndFinger == null || TargetFinger == null) + { + return; + } + + var endPosition = EndFinger.position; + var endRotation = EndFinger.rotation; + var startPosition = StartFinger.position; + var startRotation = StartFinger.rotation; + var ratio = Distance / Vector3.Distance(startPosition, endPosition); + TargetFinger.position = Vector3.Lerp(startPosition, endPosition, ratio); + TargetFinger.rotation = Quaternion.Slerp(startRotation, endRotation, ratio); + EndFinger.position = endPosition; + EndFinger.rotation = endRotation; + } + } + + /// + /// The character's animator. + /// + [SerializeField] + [Tooltip(HandDeformationTooltips.Animator)] + protected Animator _animator; + /// + /// The character's animator. + /// + public Animator AnimatorComp + { + get => _animator; + set => _animator = value; + } + + /// + /// The source skeleton. + /// + [SerializeField] + [Tooltip(HandDeformationTooltips.Skeleton)] + protected OVRSkeleton _skeleton; + /// + /// The source skeleton. + /// + public OVRSkeleton Skeleton + { + get => _skeleton; + set => _skeleton = value; + } + + /// + /// The character's left hand bone. + /// + [SerializeField] + [Tooltip(HandDeformationTooltips.LeftHand)] + protected Transform _leftHand; + /// + /// The character's left hand bone. + /// + public Transform LeftHand + { + get => _leftHand; + set => _leftHand = value; + } + + /// + /// The character's right hand bone. + /// + [SerializeField] + [Tooltip(HandDeformationTooltips.RightHand)] + protected Transform _rightHand; + /// + /// The character's right hand bone. + /// + public Transform RightHand + { + get => _rightHand; + set => _rightHand = value; + } + + /// + /// If true, copy the finger offsets data into FingerInfo during every update. + /// + [SerializeField] + [Tooltip(HandDeformationTooltips.CopyFingerDataInUpdate)] + protected bool _copyFingerOffsetsInUpdate; + /// + /// If true, copy the finger offsets data into FingerInfo during every update. + /// + public bool CopyFingerOffsetsInUpdate + { + get => _copyFingerOffsetsInUpdate; + set => _copyFingerOffsetsInUpdate = value; + } + + /// + /// The array of finger offsets to be applied. + /// + [SerializeField] + [Tooltip(HandDeformationTooltips.FingerOffsets)] + protected FingerOffset[] _fingerOffsets; + /// + /// The array of finger offsets to be applied. + /// + public FingerOffset[] FingerOffsets + { + get => _fingerOffsets; + set => _fingerOffsets = value; + } + + /// + /// Possible metacarpal bones. + /// + [SerializeField] + [Tooltip(HandDeformationTooltips.InterpolatedFingers)] + protected InterpolateFinger[] _interpolatedFingers; + /// + /// Possible metacarpal bones. + /// + public InterpolateFinger[] InterpolatedFingers + { + get => _interpolatedFingers; + set => _interpolatedFingers = value; + } + + /// + /// All finger joints. + /// + [SerializeField] + [Tooltip(HandDeformationTooltips.Fingers)] + protected FingerInfo[] _fingers; + /// + /// All finger joints. + /// + public FingerInfo[] Fingers + { + get => _fingers; + set => _fingers = value; + } + + /// + /// If finger data has been calculated or not. + /// + [SerializeField, InspectorButton("CalculateFingerData")] + [Tooltip(HandDeformationTooltips.CalculateFingerData)] + protected bool _calculateFingerData; + + private Vector3 _startingScale; + + /// + /// Initialize the finger offsets. + /// + protected void Awake() + { + if (_fingers == null || _fingers.Length == 0) + { + CalculateFingerData(); + } + } + + /// + /// Calculates all finger data necessary for deformation. + /// + public void CalculateFingerData() + { +#if UNITY_EDITOR + UnityEditor.Undo.RecordObject(this, "Undo Hand Deformation Setup"); +#endif + List leftFingers = SetUpLeftHand(); + List rightFingers = SetUpRightHand(); + List allFingers = new List(); + allFingers.AddRange(leftFingers); + allFingers.AddRange(rightFingers); + _fingers = allFingers.ToArray(); + CopyFingerOffsetData(); + + _skeleton = GetComponent(); + _startingScale = transform.lossyScale; + _leftHand = _animator.GetBoneTransform(HumanBodyBones.LeftHand); + _rightHand = _animator.GetBoneTransform(HumanBodyBones.RightHand); + SetupInterpolatedFingers(); + foreach (var finger in _fingers) + { + finger.UpdateDistance(); + } +#if UNITY_EDITOR + UnityEditor.PrefabUtility.RecordPrefabInstancePropertyModifications(this); +#endif + } + + private void SetupInterpolatedFingers() + { + List interpolatedFingers = new List(); + var leftThumbMetacarpal = CheckPossibleMetacarpal(_leftHand, HumanBodyBones.LeftThumbProximal); + if (leftThumbMetacarpal != null) + { + interpolatedFingers.Add(leftThumbMetacarpal); + } + var leftIndexMetacarpal = CheckPossibleMetacarpal(_leftHand, HumanBodyBones.LeftIndexProximal); + if (leftIndexMetacarpal != null) + { + interpolatedFingers.Add(leftIndexMetacarpal); + } + var leftMiddleMetacarpal = CheckPossibleMetacarpal(_leftHand, HumanBodyBones.LeftMiddleProximal); + if (leftMiddleMetacarpal != null) + { + interpolatedFingers.Add(leftMiddleMetacarpal); + } + var leftRingMetacarpal = CheckPossibleMetacarpal(_leftHand, HumanBodyBones.LeftRingProximal); + if (leftRingMetacarpal != null) + { + interpolatedFingers.Add(leftRingMetacarpal); + } + var leftLittleMetacarpal = CheckPossibleMetacarpal(_leftHand, HumanBodyBones.LeftLittleProximal); + if (leftLittleMetacarpal != null) + { + interpolatedFingers.Add(leftLittleMetacarpal); + } + + var rightThumbMetacarpal = CheckPossibleMetacarpal(_rightHand, HumanBodyBones.RightThumbProximal); + if (rightThumbMetacarpal != null) + { + interpolatedFingers.Add(rightThumbMetacarpal); + } + var rightIndexMetacarpal = CheckPossibleMetacarpal(_rightHand, HumanBodyBones.RightIndexProximal); + if (rightIndexMetacarpal != null) + { + interpolatedFingers.Add(rightIndexMetacarpal); + } + var rightMiddleMetacarpal = CheckPossibleMetacarpal(_rightHand, HumanBodyBones.RightMiddleProximal); + if (rightMiddleMetacarpal != null) + { + interpolatedFingers.Add(rightMiddleMetacarpal); + } + var rightRingMetacarpal = CheckPossibleMetacarpal(_rightHand, HumanBodyBones.RightRingProximal); + if (rightRingMetacarpal != null) + { + interpolatedFingers.Add(rightRingMetacarpal); + } + var rightLittleMetacarpal = CheckPossibleMetacarpal(_rightHand, HumanBodyBones.RightLittleProximal); + if (rightLittleMetacarpal != null) + { + interpolatedFingers.Add(rightLittleMetacarpal); + } + + _interpolatedFingers = interpolatedFingers.ToArray(); + foreach (var interpolatedFinger in _interpolatedFingers) + { + interpolatedFinger.UpdateDistance(); + } + } + + private InterpolateFinger CheckPossibleMetacarpal(Transform hand, HumanBodyBones targetBoneId) + { + var targetBone = _animator.GetBoneTransform(targetBoneId); + var targetBoneParent = targetBone.parent; + if (targetBoneParent != hand) + { + return new InterpolateFinger + { + StartFinger = hand, + TargetFinger = targetBoneParent, + EndFinger = targetBone + }; + } + return null; + } + + private List SetUpLeftHand() + { + List fingers = new List(); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_LeftHandWrist]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_LeftHandThumbMetacarpal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandWrist, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandThumbMetacarpal)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_LeftHandThumbMetacarpal]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_LeftHandThumbProximal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandThumbMetacarpal, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandThumbProximal)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_LeftHandThumbProximal]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_LeftHandThumbDistal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandThumbProximal, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandThumbDistal)); + + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_LeftHandWrist]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_LeftHandIndexProximal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandWrist, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandIndexProximal)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_LeftHandIndexProximal]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_LeftHandIndexIntermediate]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandIndexProximal, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandIndexIntermediate)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_LeftHandIndexIntermediate]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_LeftHandIndexDistal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandIndexIntermediate, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandIndexDistal)); + + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_LeftHandWrist]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_LeftHandMiddleProximal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandWrist, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandMiddleProximal)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_LeftHandMiddleProximal]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_LeftHandMiddleIntermediate]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandMiddleProximal, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandMiddleIntermediate)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_LeftHandMiddleIntermediate]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_LeftHandMiddleDistal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandMiddleIntermediate, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandMiddleDistal)); + + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_LeftHandWrist]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_LeftHandRingProximal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandWrist, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandRingProximal)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_LeftHandRingProximal]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_LeftHandRingIntermediate]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandRingProximal, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandRingIntermediate)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_LeftHandRingIntermediate]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone + [OVRSkeleton.BoneId.FullBody_LeftHandRingDistal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandRingIntermediate, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandRingDistal)); + + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_LeftHandWrist]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_LeftHandLittleProximal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandWrist, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandLittleProximal)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_LeftHandLittleProximal]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_LeftHandLittleIntermediate]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandLittleProximal, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandLittleIntermediate)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_LeftHandLittleIntermediate]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_LeftHandLittleDistal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandLittleIntermediate, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandLittleDistal)); + + for (int i = fingers.Count - 1; i >= 0; i--) + { + if (fingers[i].StartBoneTransform == null || + fingers[i].EndBoneTransform == null) + { + fingers.RemoveAt(i); + } + } + + return fingers; + } + + private List SetUpRightHand() + { + List fingers = new List(); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_RightHandWrist]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_RightHandThumbMetacarpal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandWrist, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandThumbMetacarpal)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_RightHandThumbMetacarpal]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_RightHandThumbProximal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandThumbMetacarpal, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandThumbProximal)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_RightHandThumbProximal]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_RightHandThumbDistal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandThumbProximal, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandThumbDistal)); + + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_RightHandWrist]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_RightHandIndexProximal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandWrist, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandIndexProximal)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_RightHandIndexProximal]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_RightHandIndexIntermediate]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandIndexProximal, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandIndexIntermediate)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_RightHandIndexIntermediate]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_RightHandIndexDistal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandIndexIntermediate, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandIndexDistal)); + + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_RightHandWrist]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_RightHandMiddleProximal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandWrist, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandMiddleProximal)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_RightHandMiddleProximal]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_RightHandMiddleIntermediate]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandMiddleProximal, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandMiddleIntermediate)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_RightHandMiddleIntermediate]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_RightHandMiddleDistal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandMiddleIntermediate, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandMiddleDistal)); + + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_RightHandWrist]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_RightHandRingProximal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandWrist, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandRingProximal)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_RightHandRingProximal]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_RightHandRingIntermediate]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandRingProximal, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandRingIntermediate)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_RightHandRingIntermediate]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_RightHandRingDistal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandRingIntermediate, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandRingDistal)); + + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_RightHandWrist]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_RightHandLittleProximal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandWrist, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandLittleProximal)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_RightHandLittleProximal]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_RightHandLittleIntermediate]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandLittleProximal, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandLittleIntermediate)); + fingers.Add(new FingerInfo + (_animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[OVRSkeleton.BoneId.FullBody_RightHandLittleIntermediate]), + _animator.GetBoneTransform( + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[ + OVRSkeleton.BoneId.FullBody_RightHandLittleDistal]), + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandLittleIntermediate, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandLittleDistal)); + + for (int i = fingers.Count - 1; i >= 0; i--) + { + if (fingers[i].StartBoneTransform == null || + fingers[i].EndBoneTransform == null) + { + fingers.RemoveAt(i); + } + } + + return fingers; + } + + /// + /// Apply the finger offsets. + /// + protected void LateUpdate() + { + var scaleFactor = DivideVector3(transform.lossyScale, _startingScale); + if (_copyFingerOffsetsInUpdate) + { + CopyFingerOffsetData(); + } + + if (_skeleton.Bones == null || _skeleton.Bones.Count == 0) + { + return; + } + + foreach (var fingerOffset in _fingerOffsets) + { + if (fingerOffset.Finger != null) + { + var child = fingerOffset.Finger.GetChild(0); + var childPos = child.position; + var childRot = child.rotation; + var posOffset = fingerOffset.Finger.right * fingerOffset.FingerPosOffset.x + + fingerOffset.Finger.up * fingerOffset.FingerPosOffset.y + + fingerOffset.Finger.forward * fingerOffset.FingerPosOffset.z; + fingerOffset.Finger.localPosition += posOffset; + fingerOffset.Finger.localRotation *= Quaternion.Euler(fingerOffset.FingerRotOffset); + child.position = childPos; + child.rotation = childRot; + } + } + + foreach (var finger in _fingers) + { + finger.UpdateDirection(); + } + + foreach (var finger in _fingers) + { + finger.UpdateRotationBasedOnOffset(); + } + foreach (var finger in _fingers) + { + finger.UpdateBonePosition(scaleFactor); + } + foreach (var interpolatedFinger in _interpolatedFingers) + { + interpolatedFinger.UpdateTargetFinger(); + } + } + + private void CopyFingerOffsetData() + { + foreach (var fingerOffset in _fingerOffsets) + { + if (fingerOffset.Finger != null) + { + continue; + } + + foreach (var finger in _fingers) + { + if (finger.EndBoneId == fingerOffset.FingerId) + { + finger.EndPosOffset = fingerOffset.FingerPosOffset; + finger.EndRotOffset = Quaternion.Euler(fingerOffset.FingerRotOffset); + } + } + } + } + + private Vector3 DivideVector3(Vector3 dividend, Vector3 divisor) + { + Vector3 targetScale = Vector3.one; + if (IsNonZero(divisor)) + { + targetScale = new Vector3( + dividend.x / divisor.x, dividend.y / divisor.y, dividend.z / divisor.z); + } + + return targetScale; + } + + private bool IsNonZero(Vector3 v) + { + return v.x != 0 && v.y != 0 && v.z != 0; + } + } +} diff --git a/Runtime/Scripts/AnimationRigging/FullBodyHandDeformation.cs.meta b/Runtime/Scripts/AnimationRigging/FullBodyHandDeformation.cs.meta new file mode 100644 index 00000000..8a8cc54f --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/FullBodyHandDeformation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 46311f43d60a6be47be85ee4e2860f06 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/AnimationRigging/FullBodyRetargetedBoneTargets.cs b/Runtime/Scripts/AnimationRigging/FullBodyRetargetedBoneTargets.cs new file mode 100644 index 00000000..403a26f1 --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/FullBodyRetargetedBoneTargets.cs @@ -0,0 +1,43 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using System.Linq; +using static OVRUnityHumanoidSkeletonRetargeter; + +namespace Oculus.Movement.AnimationRigging +{ + /// + /// Similar to but applied to full body. + /// + public class FullBodyRetargetedBoneTargets : RetargetedBoneTargets + { + /// + /// Component to auto-add to. + /// + public UnityEngine.Object AutoAdd + { + get => _autoAddTo; + set => _autoAddTo = value; + } + + /// + /// Accessor to base class. + /// + public RetargetedBoneTarget[] RetargetedBoneTargets + { + get => _retargetedBoneTargets; + set => _retargetedBoneTargets = value; + } + + + protected override void Awake() + { + var humanBodyBoneToOVRBoneId = + OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone.ToDictionary( + x => x.Value, x => x.Key); + foreach (var retargetedBoneTarget in _retargetedBoneTargets) + { + retargetedBoneTarget.BoneId = humanBodyBoneToOVRBoneId[retargetedBoneTarget.HumanBodyBone]; + } + } + } +} diff --git a/Runtime/Scripts/AnimationRigging/FullBodyRetargetedBoneTargets.cs.meta b/Runtime/Scripts/AnimationRigging/FullBodyRetargetedBoneTargets.cs.meta new file mode 100644 index 00000000..74eb918f --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/FullBodyRetargetedBoneTargets.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e99c227ec21d72d45b36011069f2b263 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/AnimationRigging/GroundingConstraint.cs b/Runtime/Scripts/AnimationRigging/GroundingConstraint.cs index 2555f71f..1f4daa1d 100644 --- a/Runtime/Scripts/AnimationRigging/GroundingConstraint.cs +++ b/Runtime/Scripts/AnimationRigging/GroundingConstraint.cs @@ -477,7 +477,7 @@ public bool IsBoneTransformsDataValid() /// /// Grounding constraint. /// - [DisallowMultipleComponent] + [DisallowMultipleComponent, AddComponentMenu("Movement Animation Rigging/Grounding Constraint")] public class GroundingConstraint : RigConstraint< GroundingJob, GroundingData, diff --git a/Runtime/Scripts/AnimationRigging/HipPinningConstraint.cs b/Runtime/Scripts/AnimationRigging/HipPinningConstraint.cs index 7cc53940..365c54fa 100644 --- a/Runtime/Scripts/AnimationRigging/HipPinningConstraint.cs +++ b/Runtime/Scripts/AnimationRigging/HipPinningConstraint.cs @@ -276,7 +276,9 @@ public void SetUp() { _bones[i] = _skeleton.CustomBones[i]; } - _root = _bones[(int)OVRSkeleton.BoneId.Body_Hips].parent; + _root = _bones[(int)(IsSkeletonFullBody() ? + OVRSkeleton.BoneId.FullBody_Hips : + OVRSkeleton.BoneId.Body_Hips)].parent; } /// @@ -320,7 +322,9 @@ private void SetUpBonesOVR() { _bones[i] = _skeleton.CustomBones[i]; } - _root = _bones[(int)OVRSkeleton.BoneId.Body_Hips].parent; + _root = _bones[(int)(IsSkeletonFullBody() ? + OVRSkeleton.BoneId.FullBody_Hips : + OVRSkeleton.BoneId.Body_Hips)].parent; _initialHipLocalRotation = GetHipTransform().localRotation; } @@ -423,12 +427,19 @@ public bool IsBoneTransformsDataValid() (_animator != null); } + private bool IsSkeletonFullBody() + { + return _skeleton.GetSkeletonType() == OVRSkeleton.SkeletonType.FullBody; + } + /// public Transform GetHipTransform() { if (_skeleton != null) { - return _bones[(int)OVRSkeleton.BoneId.Body_Hips]; + return _bones[IsSkeletonFullBody() ? + (int)OVRSkeleton.BoneId.FullBody_Hips : + (int)OVRSkeleton.BoneId.Body_Hips]; } else { @@ -441,7 +452,9 @@ public int GetIndexOfFirstBoneAboveHips() { if (_skeleton != null) { - return (int)OVRSkeleton.BoneId.Body_SpineLower; + return IsSkeletonFullBody() ? + (int)OVRSkeleton.BoneId.FullBody_SpineLower : + (int)OVRSkeleton.BoneId.Body_SpineLower; } else { @@ -483,7 +496,7 @@ void IAnimationJobData.SetDefaultValues() /// /// Hip Pinning constraint. /// - [DisallowMultipleComponent] + [DisallowMultipleComponent, AddComponentMenu("Movement Animation Rigging/Hip Pinning Constraint")] public class HipPinningConstraint : RigConstraint< HipPinningJob, HipPinningData, diff --git a/Runtime/Scripts/AnimationRigging/Legacy.meta b/Runtime/Scripts/AnimationRigging/Legacy.meta new file mode 100644 index 00000000..8003d242 --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/Legacy.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d256f20945403cc48b1b3ed1fae4755c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/AnimationRigging/CustomMappings.cs b/Runtime/Scripts/AnimationRigging/Legacy/CustomMappings.cs similarity index 99% rename from Runtime/Scripts/AnimationRigging/CustomMappings.cs rename to Runtime/Scripts/AnimationRigging/Legacy/CustomMappings.cs index 4cd14ef4..0b2dc5b2 100644 --- a/Runtime/Scripts/AnimationRigging/CustomMappings.cs +++ b/Runtime/Scripts/AnimationRigging/Legacy/CustomMappings.cs @@ -4,7 +4,7 @@ using System.Collections.Generic; using UnityEngine; -namespace Oculus.Movement.AnimationRigging +namespace Oculus.Movement.AnimationRigging.Deprecated { /// /// Contains some mappings copied from OVRUnityHumanoidSkeletonRetargeter, @@ -427,6 +427,9 @@ public static readonly Dictionary + /// Maps HumanBodyBone to avatar mask. + /// public static readonly Dictionary HumanBoneToAvatarBodyPart = new Dictionary() { @@ -498,6 +501,9 @@ public static readonly Dictionary { HumanBodyBones.RightLittleDistal, AvatarMaskBodyPart.RightArm } }; + /// + /// Maps OVRSkeleton bone to avatar mask. + /// public static readonly Dictionary OVRSkeletonBoneIdToAvatarBodyPart = new Dictionary() { diff --git a/Runtime/Scripts/AnimationRigging/CustomMappings.cs.meta b/Runtime/Scripts/AnimationRigging/Legacy/CustomMappings.cs.meta similarity index 100% rename from Runtime/Scripts/AnimationRigging/CustomMappings.cs.meta rename to Runtime/Scripts/AnimationRigging/Legacy/CustomMappings.cs.meta diff --git a/Runtime/Scripts/AnimationRigging/Legacy/FullBodyCustomMappings.cs b/Runtime/Scripts/AnimationRigging/Legacy/FullBodyCustomMappings.cs new file mode 100644 index 00000000..270f7290 --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/Legacy/FullBodyCustomMappings.cs @@ -0,0 +1,605 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Oculus.Movement.AnimationRigging.Deprecated +{ + /// + /// Contains some mappings copied from OVRUnityHumanoidSkeletonRetargeter, + /// which are currently inaccessible from non-inheriting classes. + /// + public class FullBodyCustomMappings + { + /// + /// Body tracking bone IDs that should be exposed through the inspector. + /// BoneId has enum values that map to the same integers, which would not work + /// with a serialized field that expects unique integers. FullBodyTrackingBoneId + /// is an enum that restricts BoneId to the values that we care about. + /// + public enum FullBodyTrackingBoneId + { + FullBody_Start = OVRPlugin.BoneId.FullBody_Start, + FullBody_Root = OVRPlugin.BoneId.FullBody_Root, + FullBody_Hips = OVRPlugin.BoneId.FullBody_Hips, + FullBody_SpineLower = OVRPlugin.BoneId.FullBody_SpineLower, + FullBody_SpineMiddle = OVRPlugin.BoneId.FullBody_SpineMiddle, + FullBody_SpineUpper = OVRPlugin.BoneId.FullBody_SpineUpper, + FullBody_Chest = OVRPlugin.BoneId.FullBody_Chest, + FullBody_Neck = OVRPlugin.BoneId.FullBody_Neck, + FullBody_Head = OVRPlugin.BoneId.FullBody_Head, + FullBody_LeftShoulder = OVRPlugin.BoneId.FullBody_LeftShoulder, + FullBody_LeftScapula = OVRPlugin.BoneId.FullBody_LeftScapula, + FullBody_LeftArmUpper = OVRPlugin.BoneId.FullBody_LeftArmUpper, + FullBody_LeftArmLower = OVRPlugin.BoneId.FullBody_LeftArmLower, + FullBody_LeftHandWristTwist = OVRPlugin.BoneId.FullBody_LeftHandWristTwist, + FullBody_RightShoulder = OVRPlugin.BoneId.FullBody_RightShoulder, + FullBody_RightScapula = OVRPlugin.BoneId.FullBody_RightScapula, + FullBody_RightArmUpper = OVRPlugin.BoneId.FullBody_RightArmUpper, + FullBody_RightArmLower = OVRPlugin.BoneId.FullBody_RightArmLower, + FullBody_RightHandWristTwist = OVRPlugin.BoneId.FullBody_RightHandWristTwist, + FullBody_LeftHandPalm = OVRPlugin.BoneId.FullBody_LeftHandPalm, + FullBody_LeftHandWrist = OVRPlugin.BoneId.FullBody_LeftHandWrist, + FullBody_LeftHandThumbMetacarpal = OVRPlugin.BoneId.FullBody_LeftHandThumbMetacarpal, + FullBody_LeftHandThumbProximal = OVRPlugin.BoneId.FullBody_LeftHandThumbProximal, + FullBody_LeftHandThumbDistal = OVRPlugin.BoneId.FullBody_LeftHandThumbDistal, + FullBody_LeftHandThumbTip = OVRPlugin.BoneId.FullBody_LeftHandThumbTip, + FullBody_LeftHandIndexMetacarpal = OVRPlugin.BoneId.FullBody_LeftHandIndexMetacarpal, + FullBody_LeftHandIndexProximal = OVRPlugin.BoneId.FullBody_LeftHandIndexProximal, + FullBody_LeftHandIndexIntermediate = OVRPlugin.BoneId.FullBody_LeftHandIndexIntermediate, + FullBody_LeftHandIndexDistal = OVRPlugin.BoneId.FullBody_LeftHandIndexDistal, + FullBody_LeftHandIndexTip = OVRPlugin.BoneId.FullBody_LeftHandIndexTip, + FullBody_LeftHandMiddleMetacarpal = OVRPlugin.BoneId.FullBody_LeftHandMiddleMetacarpal, + FullBody_LeftHandMiddleProximal = OVRPlugin.BoneId.FullBody_LeftHandMiddleProximal, + FullBody_LeftHandMiddleIntermediate = OVRPlugin.BoneId.FullBody_LeftHandMiddleIntermediate, + FullBody_LeftHandMiddleDistal = OVRPlugin.BoneId.FullBody_LeftHandMiddleDistal, + FullBody_LeftHandMiddleTip = OVRPlugin.BoneId.FullBody_LeftHandMiddleTip, + FullBody_LeftHandRingMetacarpal = OVRPlugin.BoneId.FullBody_LeftHandRingMetacarpal, + FullBody_LeftHandRingProximal = OVRPlugin.BoneId.FullBody_LeftHandRingProximal, + FullBody_LeftHandRingIntermediate = OVRPlugin.BoneId.FullBody_LeftHandRingIntermediate, + FullBody_LeftHandRingDistal = OVRPlugin.BoneId.FullBody_LeftHandRingDistal, + FullBody_LeftHandRingTip = OVRPlugin.BoneId.FullBody_LeftHandRingTip, + FullBody_LeftHandLittleMetacarpal = OVRPlugin.BoneId.FullBody_LeftHandLittleMetacarpal, + FullBody_LeftHandLittleProximal = OVRPlugin.BoneId.FullBody_LeftHandLittleProximal, + FullBody_LeftHandLittleIntermediate = OVRPlugin.BoneId.FullBody_LeftHandLittleIntermediate, + FullBody_LeftHandLittleDistal = OVRPlugin.BoneId.FullBody_LeftHandLittleDistal, + FullBody_LeftHandLittleTip = OVRPlugin.BoneId.FullBody_LeftHandLittleTip, + FullBody_RightHandPalm = OVRPlugin.BoneId.FullBody_RightHandPalm, + FullBody_RightHandWrist = OVRPlugin.BoneId.FullBody_RightHandWrist, + FullBody_RightHandThumbMetacarpal = OVRPlugin.BoneId.FullBody_RightHandThumbMetacarpal, + FullBody_RightHandThumbProximal = OVRPlugin.BoneId.FullBody_RightHandThumbProximal, + FullBody_RightHandThumbDistal = OVRPlugin.BoneId.FullBody_RightHandThumbDistal, + FullBody_RightHandThumbTip = OVRPlugin.BoneId.FullBody_RightHandThumbTip, + FullBody_RightHandIndexMetacarpal = OVRPlugin.BoneId.FullBody_RightHandIndexMetacarpal, + FullBody_RightHandIndexProximal = OVRPlugin.BoneId.FullBody_RightHandIndexProximal, + FullBody_RightHandIndexIntermediate = OVRPlugin.BoneId.FullBody_RightHandIndexIntermediate, + FullBody_RightHandIndexDistal = OVRPlugin.BoneId.FullBody_RightHandIndexDistal, + FullBody_RightHandIndexTip = OVRPlugin.BoneId.FullBody_RightHandIndexTip, + FullBody_RightHandMiddleMetacarpal = OVRPlugin.BoneId.FullBody_RightHandMiddleMetacarpal, + FullBody_RightHandMiddleProximal = OVRPlugin.BoneId.FullBody_RightHandMiddleProximal, + FullBody_RightHandMiddleIntermediate = OVRPlugin.BoneId.FullBody_RightHandMiddleIntermediate, + FullBody_RightHandMiddleDistal = OVRPlugin.BoneId.FullBody_RightHandMiddleDistal, + FullBody_RightHandMiddleTip = OVRPlugin.BoneId.FullBody_RightHandMiddleTip, + FullBody_RightHandRingMetacarpal = OVRPlugin.BoneId.FullBody_RightHandRingMetacarpal, + FullBody_RightHandRingProximal = OVRPlugin.BoneId.FullBody_RightHandRingProximal, + FullBody_RightHandRingIntermediate = OVRPlugin.BoneId.FullBody_RightHandRingIntermediate, + FullBody_RightHandRingDistal = OVRPlugin.BoneId.FullBody_RightHandRingDistal, + FullBody_RightHandRingTip = OVRPlugin.BoneId.FullBody_RightHandRingTip, + FullBody_RightHandLittleMetacarpal = OVRPlugin.BoneId.FullBody_RightHandLittleMetacarpal, + FullBody_RightHandLittleProximal = OVRPlugin.BoneId.FullBody_RightHandLittleProximal, + FullBody_RightHandLittleIntermediate = OVRPlugin.BoneId.FullBody_RightHandLittleIntermediate, + FullBody_RightHandLittleDistal = OVRPlugin.BoneId.FullBody_RightHandLittleDistal, + FullBody_RightHandLittleTip = OVRPlugin.BoneId.FullBody_RightHandLittleTip, + FullBody_LeftUpperLeg = OVRPlugin.BoneId.FullBody_LeftUpperLeg, + FullBody_LeftLowerLeg = OVRPlugin.BoneId.FullBody_LeftLowerLeg, + FullBody_LeftFootAnkleTwist = OVRPlugin.BoneId.FullBody_LeftFootAnkleTwist, + FullBody_LeftFootAnkle = OVRPlugin.BoneId.FullBody_LeftFootAnkle, + FullBody_LeftFootSubtalar = OVRPlugin.BoneId.FullBody_LeftFootSubtalar, + FullBody_LeftFootTransverse = OVRPlugin.BoneId.FullBody_LeftFootTransverse, + FullBody_LeftFootBall = OVRPlugin.BoneId.FullBody_LeftFootBall, + FullBody_RightUpperLeg = OVRPlugin.BoneId.FullBody_RightUpperLeg, + FullBody_RightLowerLeg = OVRPlugin.BoneId.FullBody_RightLowerLeg, + FullBody_RightFootAnkleTwist = OVRPlugin.BoneId.FullBody_RightFootAnkleTwist, + FullBody_RightFootAnkle = OVRPlugin.BoneId.FullBody_RightFootAnkle, + FullBody_RightFootSubtalar = OVRPlugin.BoneId.FullBody_RightFootSubtalar, + FullBody_RightFootTransverse = OVRPlugin.BoneId.FullBody_RightFootTransverse, + FullBody_RightFootBall = OVRPlugin.BoneId.FullBody_RightFootBall, + FullBody_End = OVRPlugin.BoneId.FullBody_End, + + // add new bones here + + NoOverride = OVRPlugin.BoneId.FullBody_End + 1, + Remove = OVRPlugin.BoneId.FullBody_End + 2 + }; + + /// + /// Paired OVRSkeleton bones with human body bones. + /// + public static readonly Dictionary FullBodyBoneIdToHumanBodyBone = + new Dictionary() + { + { OVRSkeleton.BoneId.FullBody_Hips, HumanBodyBones.Hips }, + { OVRSkeleton.BoneId.FullBody_SpineLower, HumanBodyBones.Spine }, + { OVRSkeleton.BoneId.FullBody_SpineUpper, HumanBodyBones.Chest }, + { OVRSkeleton.BoneId.FullBody_Chest, HumanBodyBones.UpperChest }, + { OVRSkeleton.BoneId.FullBody_Neck, HumanBodyBones.Neck }, + { OVRSkeleton.BoneId.FullBody_Head, HumanBodyBones.Head }, + { OVRSkeleton.BoneId.FullBody_LeftShoulder, HumanBodyBones.LeftShoulder }, + { OVRSkeleton.BoneId.FullBody_LeftArmUpper, HumanBodyBones.LeftUpperArm }, + { OVRSkeleton.BoneId.FullBody_LeftArmLower, HumanBodyBones.LeftLowerArm }, + { OVRSkeleton.BoneId.FullBody_LeftHandWrist, HumanBodyBones.LeftHand }, + { OVRSkeleton.BoneId.FullBody_RightShoulder, HumanBodyBones.RightShoulder }, + { OVRSkeleton.BoneId.FullBody_RightArmUpper, HumanBodyBones.RightUpperArm }, + { OVRSkeleton.BoneId.FullBody_RightArmLower, HumanBodyBones.RightLowerArm }, + { OVRSkeleton.BoneId.FullBody_RightHandWrist, HumanBodyBones.RightHand }, + { OVRSkeleton.BoneId.FullBody_LeftHandThumbMetacarpal, HumanBodyBones.LeftThumbProximal }, + { OVRSkeleton.BoneId.FullBody_LeftHandThumbProximal, HumanBodyBones.LeftThumbIntermediate }, + { OVRSkeleton.BoneId.FullBody_LeftHandThumbDistal, HumanBodyBones.LeftThumbDistal }, + { OVRSkeleton.BoneId.FullBody_LeftHandIndexProximal, HumanBodyBones.LeftIndexProximal }, + { OVRSkeleton.BoneId.FullBody_LeftHandIndexIntermediate, HumanBodyBones.LeftIndexIntermediate }, + { OVRSkeleton.BoneId.FullBody_LeftHandIndexDistal, HumanBodyBones.LeftIndexDistal }, + { OVRSkeleton.BoneId.FullBody_LeftHandMiddleProximal, HumanBodyBones.LeftMiddleProximal }, + { OVRSkeleton.BoneId.FullBody_LeftHandMiddleIntermediate, HumanBodyBones.LeftMiddleIntermediate }, + { OVRSkeleton.BoneId.FullBody_LeftHandMiddleDistal, HumanBodyBones.LeftMiddleDistal }, + { OVRSkeleton.BoneId.FullBody_LeftHandRingProximal, HumanBodyBones.LeftRingProximal }, + { OVRSkeleton.BoneId.FullBody_LeftHandRingIntermediate, HumanBodyBones.LeftRingIntermediate }, + { OVRSkeleton.BoneId.FullBody_LeftHandRingDistal, HumanBodyBones.LeftRingDistal }, + { OVRSkeleton.BoneId.FullBody_LeftHandLittleProximal, HumanBodyBones.LeftLittleProximal }, + { OVRSkeleton.BoneId.FullBody_LeftHandLittleIntermediate, HumanBodyBones.LeftLittleIntermediate }, + { OVRSkeleton.BoneId.FullBody_LeftHandLittleDistal, HumanBodyBones.LeftLittleDistal }, + { OVRSkeleton.BoneId.FullBody_RightHandThumbMetacarpal, HumanBodyBones.RightThumbProximal }, + { OVRSkeleton.BoneId.FullBody_RightHandThumbProximal, HumanBodyBones.RightThumbIntermediate }, + { OVRSkeleton.BoneId.FullBody_RightHandThumbDistal, HumanBodyBones.RightThumbDistal }, + { OVRSkeleton.BoneId.FullBody_RightHandIndexProximal, HumanBodyBones.RightIndexProximal }, + { OVRSkeleton.BoneId.FullBody_RightHandIndexIntermediate, HumanBodyBones.RightIndexIntermediate }, + { OVRSkeleton.BoneId.FullBody_RightHandIndexDistal, HumanBodyBones.RightIndexDistal }, + { OVRSkeleton.BoneId.FullBody_RightHandMiddleProximal, HumanBodyBones.RightMiddleProximal }, + { OVRSkeleton.BoneId.FullBody_RightHandMiddleIntermediate, HumanBodyBones.RightMiddleIntermediate }, + { OVRSkeleton.BoneId.FullBody_RightHandMiddleDistal, HumanBodyBones.RightMiddleDistal }, + { OVRSkeleton.BoneId.FullBody_RightHandRingProximal, HumanBodyBones.RightRingProximal }, + { OVRSkeleton.BoneId.FullBody_RightHandRingIntermediate, HumanBodyBones.RightRingIntermediate }, + { OVRSkeleton.BoneId.FullBody_RightHandRingDistal, HumanBodyBones.RightRingDistal }, + { OVRSkeleton.BoneId.FullBody_RightHandLittleProximal, HumanBodyBones.RightLittleProximal }, + { OVRSkeleton.BoneId.FullBody_RightHandLittleIntermediate, HumanBodyBones.RightLittleIntermediate }, + { OVRSkeleton.BoneId.FullBody_RightHandLittleDistal, HumanBodyBones.RightLittleDistal }, + { OVRSkeleton.BoneId.FullBody_LeftUpperLeg, HumanBodyBones.LeftUpperLeg }, + { OVRSkeleton.BoneId.FullBody_LeftLowerLeg, HumanBodyBones.LeftLowerLeg }, + { OVRSkeleton.BoneId.FullBody_LeftFootAnkle, HumanBodyBones.LeftFoot }, + { OVRSkeleton.BoneId.FullBody_LeftFootBall, HumanBodyBones.LeftToes }, + { OVRSkeleton.BoneId.FullBody_RightUpperLeg, HumanBodyBones.RightUpperLeg }, + { OVRSkeleton.BoneId.FullBody_RightLowerLeg, HumanBodyBones.RightLowerLeg }, + { OVRSkeleton.BoneId.FullBody_RightFootAnkle, HumanBodyBones.RightFoot }, + { OVRSkeleton.BoneId.FullBody_RightFootBall, HumanBodyBones.RightToes }, + }; + + /// + /// For each humanoid bone, create a pair that determines the + /// pair of bones that create the joint pair. Used to + /// create the "axis" of the bone. + /// + public static readonly Dictionary> + FullBoneIdToJointPair = new Dictionary>() + { + { + OVRSkeleton.BoneId.FullBody_Neck, new Tuple( + OVRSkeleton.BoneId.FullBody_Neck, + OVRSkeleton.BoneId.FullBody_Head) + }, + { + OVRSkeleton.BoneId.FullBody_Head, new Tuple( + OVRSkeleton.BoneId.FullBody_Head, + OVRSkeleton.BoneId.Invalid) + }, + { + OVRSkeleton.BoneId.FullBody_Root, new Tuple( + OVRSkeleton.BoneId.FullBody_Root, + OVRSkeleton.BoneId.FullBody_Hips) + }, + { + OVRSkeleton.BoneId.FullBody_Hips, new Tuple( + OVRSkeleton.BoneId.FullBody_Hips, + OVRSkeleton.BoneId.FullBody_SpineLower) + }, + { + OVRSkeleton.BoneId.FullBody_SpineLower, new Tuple( + OVRSkeleton.BoneId.FullBody_SpineLower, + OVRSkeleton.BoneId.FullBody_SpineMiddle) + }, + { + OVRSkeleton.BoneId.FullBody_SpineMiddle, new Tuple( + OVRSkeleton.BoneId.FullBody_SpineMiddle, + OVRSkeleton.BoneId.FullBody_SpineUpper) + }, + { + OVRSkeleton.BoneId.FullBody_SpineUpper, new Tuple( + OVRSkeleton.BoneId.FullBody_SpineUpper, + OVRSkeleton.BoneId.FullBody_Chest) + }, + { + OVRSkeleton.BoneId.FullBody_Chest, new Tuple( + OVRSkeleton.BoneId.FullBody_Chest, + OVRSkeleton.BoneId.FullBody_Neck) + }, + { + OVRSkeleton.BoneId.FullBody_LeftShoulder, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftShoulder, + OVRSkeleton.BoneId.FullBody_LeftArmUpper) + }, + { + OVRSkeleton.BoneId.FullBody_LeftScapula, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftScapula, + OVRSkeleton.BoneId.FullBody_LeftArmUpper) + }, + { + OVRSkeleton.BoneId.FullBody_LeftArmUpper, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftArmUpper, + OVRSkeleton.BoneId.FullBody_LeftArmLower) + }, + { + OVRSkeleton.BoneId.FullBody_LeftArmLower, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftArmLower, + OVRSkeleton.BoneId.FullBody_LeftHandWrist) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandWrist, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandWrist, + OVRSkeleton.BoneId.FullBody_LeftHandMiddleMetacarpal) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandPalm, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandPalm, + OVRSkeleton.BoneId.FullBody_LeftHandMiddleMetacarpal) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandWristTwist, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandWristTwist, + OVRSkeleton.BoneId.FullBody_LeftHandMiddleMetacarpal) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandThumbMetacarpal, + new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandThumbMetacarpal, + OVRSkeleton.BoneId.FullBody_LeftHandThumbProximal) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandThumbProximal, + new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandThumbProximal, + OVRSkeleton.BoneId.FullBody_LeftHandThumbDistal) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandThumbDistal, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandThumbDistal, + OVRSkeleton.BoneId.FullBody_LeftHandThumbTip) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandThumbTip, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandThumbDistal, + OVRSkeleton.BoneId.FullBody_LeftHandThumbTip) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandIndexMetacarpal, + new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandIndexMetacarpal, + OVRSkeleton.BoneId.FullBody_LeftHandIndexProximal) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandIndexProximal, + new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandIndexProximal, + OVRSkeleton.BoneId.FullBody_LeftHandIndexIntermediate) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandIndexIntermediate, + new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandIndexIntermediate, + OVRSkeleton.BoneId.FullBody_LeftHandIndexDistal) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandIndexDistal, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandIndexDistal, + OVRSkeleton.BoneId.FullBody_LeftHandIndexTip) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandIndexTip, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandIndexDistal, + OVRSkeleton.BoneId.FullBody_LeftHandIndexTip) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandMiddleMetacarpal, + new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandMiddleMetacarpal, + OVRSkeleton.BoneId.FullBody_LeftHandMiddleProximal) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandMiddleProximal, + new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandMiddleProximal, + OVRSkeleton.BoneId.FullBody_LeftHandMiddleIntermediate) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandMiddleIntermediate, + new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandMiddleIntermediate, + OVRSkeleton.BoneId.FullBody_LeftHandMiddleDistal) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandMiddleDistal, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandMiddleDistal, + OVRSkeleton.BoneId.FullBody_LeftHandMiddleTip) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandMiddleTip, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandMiddleDistal, + OVRSkeleton.BoneId.FullBody_LeftHandMiddleTip) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandRingMetacarpal, + new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandRingMetacarpal, + OVRSkeleton.BoneId.FullBody_LeftHandRingProximal) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandRingProximal, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandRingProximal, + OVRSkeleton.BoneId.FullBody_LeftHandRingIntermediate) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandRingIntermediate, + new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandRingIntermediate, + OVRSkeleton.BoneId.FullBody_LeftHandRingDistal) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandRingDistal, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandRingDistal, + OVRSkeleton.BoneId.FullBody_LeftHandRingTip) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandRingTip, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandRingDistal, + OVRSkeleton.BoneId.FullBody_LeftHandRingTip) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandLittleMetacarpal, + new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandLittleMetacarpal, + OVRSkeleton.BoneId.FullBody_LeftHandLittleProximal) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandLittleProximal, + new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandLittleProximal, + OVRSkeleton.BoneId.FullBody_LeftHandLittleIntermediate) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandLittleIntermediate, + new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandLittleIntermediate, + OVRSkeleton.BoneId.FullBody_LeftHandLittleDistal) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandLittleDistal, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandLittleDistal, + OVRSkeleton.BoneId.FullBody_LeftHandLittleTip) + }, + { + OVRSkeleton.BoneId.FullBody_LeftHandLittleTip, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftHandLittleDistal, + OVRSkeleton.BoneId.FullBody_LeftHandRingTip) + }, + { + OVRSkeleton.BoneId.FullBody_RightShoulder, new Tuple( + OVRSkeleton.BoneId.FullBody_RightShoulder, + OVRSkeleton.BoneId.FullBody_RightArmUpper) + }, + { + OVRSkeleton.BoneId.FullBody_RightScapula, new Tuple( + OVRSkeleton.BoneId.FullBody_RightScapula, + OVRSkeleton.BoneId.FullBody_RightArmUpper) + }, + { + OVRSkeleton.BoneId.FullBody_RightArmUpper, new Tuple( + OVRSkeleton.BoneId.FullBody_RightArmUpper, + OVRSkeleton.BoneId.FullBody_RightArmLower) + }, + { + OVRSkeleton.BoneId.FullBody_RightArmLower, new Tuple( + OVRSkeleton.BoneId.FullBody_RightArmLower, + OVRSkeleton.BoneId.FullBody_RightHandWrist) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandWrist, new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandWrist, + OVRSkeleton.BoneId.FullBody_RightHandMiddleMetacarpal) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandPalm, new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandPalm, + OVRSkeleton.BoneId.FullBody_RightHandMiddleMetacarpal) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandWristTwist, new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandWristTwist, + OVRSkeleton.BoneId.FullBody_RightHandMiddleMetacarpal) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandThumbMetacarpal, + new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandThumbMetacarpal, + OVRSkeleton.BoneId.FullBody_RightHandThumbProximal) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandThumbProximal, + new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandThumbProximal, + OVRSkeleton.BoneId.FullBody_RightHandThumbDistal) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandThumbDistal, new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandThumbDistal, + OVRSkeleton.BoneId.FullBody_RightHandThumbTip) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandThumbTip, new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandThumbDistal, + OVRSkeleton.BoneId.FullBody_RightHandThumbTip) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandIndexMetacarpal, + new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandIndexMetacarpal, + OVRSkeleton.BoneId.FullBody_RightHandIndexProximal) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandIndexProximal, + new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandIndexProximal, + OVRSkeleton.BoneId.FullBody_RightHandIndexIntermediate) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandIndexIntermediate, + new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandIndexIntermediate, + OVRSkeleton.BoneId.FullBody_RightHandIndexDistal) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandIndexDistal, new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandIndexDistal, + OVRSkeleton.BoneId.FullBody_RightHandIndexTip) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandIndexTip, new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandIndexDistal, + OVRSkeleton.BoneId.FullBody_RightHandIndexTip) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandMiddleMetacarpal, + new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandMiddleMetacarpal, + OVRSkeleton.BoneId.FullBody_RightHandMiddleProximal) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandMiddleProximal, + new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandMiddleProximal, + OVRSkeleton.BoneId.FullBody_RightHandMiddleIntermediate) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandMiddleIntermediate, + new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandMiddleIntermediate, + OVRSkeleton.BoneId.FullBody_RightHandMiddleDistal) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandMiddleDistal, + new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandMiddleDistal, + OVRSkeleton.BoneId.FullBody_RightHandMiddleTip) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandMiddleTip, new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandMiddleDistal, + OVRSkeleton.BoneId.FullBody_RightHandMiddleTip) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandRingMetacarpal, + new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandRingMetacarpal, + OVRSkeleton.BoneId.FullBody_RightHandRingProximal) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandRingProximal, + new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandRingProximal, + OVRSkeleton.BoneId.FullBody_RightHandRingIntermediate) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandRingIntermediate, + new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandRingIntermediate, + OVRSkeleton.BoneId.FullBody_RightHandRingDistal) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandRingDistal, new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandRingDistal, + OVRSkeleton.BoneId.FullBody_RightHandRingTip) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandRingTip, new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandRingDistal, + OVRSkeleton.BoneId.FullBody_RightHandRingTip) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandLittleMetacarpal, + new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandLittleMetacarpal, + OVRSkeleton.BoneId.FullBody_RightHandLittleProximal) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandLittleProximal, + new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandLittleProximal, + OVRSkeleton.BoneId.FullBody_RightHandLittleIntermediate) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandLittleIntermediate, + new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandLittleIntermediate, + OVRSkeleton.BoneId.FullBody_RightHandLittleDistal) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandLittleDistal, + new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandLittleDistal, + OVRSkeleton.BoneId.FullBody_RightHandLittleTip) + }, + { + OVRSkeleton.BoneId.FullBody_RightHandLittleTip, new Tuple( + OVRSkeleton.BoneId.FullBody_RightHandLittleDistal, + OVRSkeleton.BoneId.FullBody_RightHandRingTip) + }, + { + OVRSkeleton.BoneId.FullBody_LeftUpperLeg, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftUpperLeg, + OVRSkeleton.BoneId.FullBody_LeftLowerLeg) + }, + { + OVRSkeleton.BoneId.FullBody_LeftLowerLeg, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftLowerLeg, + OVRSkeleton.BoneId.FullBody_LeftFootAnkle) + }, + { + OVRSkeleton.BoneId.FullBody_LeftFootAnkle, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftFootAnkle, + OVRSkeleton.BoneId.FullBody_LeftFootBall) + }, + { + OVRSkeleton.BoneId.FullBody_LeftFootBall, new Tuple( + OVRSkeleton.BoneId.FullBody_LeftFootAnkle, + OVRSkeleton.BoneId.FullBody_LeftFootBall) + }, + { + OVRSkeleton.BoneId.FullBody_RightUpperLeg, new Tuple( + OVRSkeleton.BoneId.FullBody_RightUpperLeg, + OVRSkeleton.BoneId.FullBody_RightLowerLeg) + }, + { + OVRSkeleton.BoneId.FullBody_RightLowerLeg, new Tuple( + OVRSkeleton.BoneId.FullBody_RightLowerLeg, + OVRSkeleton.BoneId.FullBody_RightFootAnkle) + }, + { + OVRSkeleton.BoneId.FullBody_RightFootAnkle, new Tuple( + OVRSkeleton.BoneId.FullBody_RightFootAnkle, + OVRSkeleton.BoneId.FullBody_RightFootBall) + }, + { + OVRSkeleton.BoneId.FullBody_RightFootBall, new Tuple( + OVRSkeleton.BoneId.FullBody_RightFootAnkle, + OVRSkeleton.BoneId.FullBody_RightFootBall) + }, + }; + } +} diff --git a/Runtime/Scripts/AnimationRigging/Legacy/FullBodyCustomMappings.cs.meta b/Runtime/Scripts/AnimationRigging/Legacy/FullBodyCustomMappings.cs.meta new file mode 100644 index 00000000..adf85427 --- /dev/null +++ b/Runtime/Scripts/AnimationRigging/Legacy/FullBodyCustomMappings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: df59d8c8b0e839f44ae6f421d6b43db5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/AnimationRigging/PlaybackAnimationConstraint.cs b/Runtime/Scripts/AnimationRigging/PlaybackAnimationConstraint.cs index 94738d58..e336a9fe 100644 --- a/Runtime/Scripts/AnimationRigging/PlaybackAnimationConstraint.cs +++ b/Runtime/Scripts/AnimationRigging/PlaybackAnimationConstraint.cs @@ -138,7 +138,7 @@ void IAnimationJobData.SetDefaultValues() /// Playback animation constraint. Uses captured animation data to playback the current animator pose /// additively or override. /// - [DisallowMultipleComponent] + [DisallowMultipleComponent, AddComponentMenu("Movement Animation Rigging/Playback Animation Constraint")] public class PlaybackAnimationConstraint : RigConstraint< PlaybackAnimationJob, PlaybackAnimationData, diff --git a/Runtime/Scripts/AnimationRigging/PlaybackAnimationJob.cs b/Runtime/Scripts/AnimationRigging/PlaybackAnimationJob.cs index e28e5115..71903e46 100644 --- a/Runtime/Scripts/AnimationRigging/PlaybackAnimationJob.cs +++ b/Runtime/Scripts/AnimationRigging/PlaybackAnimationJob.cs @@ -44,6 +44,11 @@ public struct PlaybackAnimationJob : IWeightedAnimationJob /// public NativeArray OverrideBoneRotations; + /// + /// The bones that should be skipped. + /// + public NativeArray BonesToSkip; + /// /// Job weight. /// @@ -72,6 +77,12 @@ public void ProcessAnimation(AnimationStream stream) continue; } + if (BonesToSkip[i]) + { + // Skip setting this bone. + continue; + } + var targetBonePosition = Bones[i].GetLocalPosition(stream); var targetBoneRotation = Bones[i].GetLocalRotation(stream); if (playbackType == PlaybackAnimationData.AnimationPlaybackType.Additive) @@ -135,6 +146,8 @@ public override PlaybackAnimationJob Create(Animator animator, ref T data, Compo NativeArrayOptions.UninitializedMemory); job.OverrideBoneRotations = new NativeArray((int)HumanBodyBones.LastBone, Allocator.Persistent, NativeArrayOptions.UninitializedMemory); + job.BonesToSkip = new NativeArray((int)HumanBodyBones.LastBone, Allocator.Persistent, + NativeArrayOptions.UninitializedMemory); for (var i = HumanBodyBones.Hips; i < HumanBodyBones.LastBone; i++) { @@ -146,6 +159,7 @@ public override PlaybackAnimationJob Create(Animator animator, ref T data, Compo job.BoneRotationDeltas[(int)i] = bone != null ? bone.localRotation : Quaternion.identity; job.OverrideBonePositions[(int)i] = bone != null ? bone.localPosition : Vector3.zero; job.OverrideBoneRotations[(int)i] = bone != null ? bone.localRotation : Quaternion.identity; + job.BonesToSkip[(int)i] = bone == null; } return job; @@ -162,10 +176,13 @@ public override void Update(PlaybackAnimationJob job, ref T data) if (playbackType == PlaybackAnimationData.AnimationPlaybackType.None || (data.AnimationMask != null && - !data.AnimationMask.GetHumanoidBodyPartActive(CustomMappings.HumanBoneToAvatarBodyPart[i]))) + !data.AnimationMask.GetHumanoidBodyPartActive(BoneMappingsExtension.HumanBoneToAvatarBodyPart[i]))) { job.BonePositionDeltas[index] = Vector3.zero; job.BoneRotationDeltas[index] = Quaternion.identity; + job.OverrideBonePositions[index] = Vector3.zero; + job.OverrideBoneRotations[index] = Quaternion.identity; + job.BonesToSkip[index] = true; continue; } @@ -173,12 +190,14 @@ public override void Update(PlaybackAnimationJob job, ref T data) { job.BonePositionDeltas[index] = data.SourceConstraint.data.GetBonePositionDelta(i); job.BoneRotationDeltas[index] = data.SourceConstraint.data.GetBoneRotationDelta(i); + job.BonesToSkip[index] = false; } if (playbackType == PlaybackAnimationData.AnimationPlaybackType.Override) { job.OverrideBonePositions[index] = captureAnimationData.CurrentPose[index].LocalPosition; job.OverrideBoneRotations[index] = captureAnimationData.CurrentPose[index].LocalRotation; + job.BonesToSkip[index] = false; } } @@ -189,6 +208,7 @@ public override void Update(PlaybackAnimationJob job, ref T data) public override void Destroy(PlaybackAnimationJob job) { job.Bones.Dispose(); + job.BonesToSkip.Dispose(); job.BonePositionDeltas.Dispose(); job.BoneRotationDeltas.Dispose(); job.OverrideBonePositions.Dispose(); diff --git a/Runtime/Scripts/AnimationRigging/RetargetedBoneTargets.cs b/Runtime/Scripts/AnimationRigging/RetargetedBoneTargets.cs index 6b6ff669..84fc3b50 100644 --- a/Runtime/Scripts/AnimationRigging/RetargetedBoneTargets.cs +++ b/Runtime/Scripts/AnimationRigging/RetargetedBoneTargets.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Linq; using UnityEngine; +using static OVRUnityHumanoidSkeletonRetargeter; namespace Oculus.Movement.AnimationRigging { @@ -44,7 +45,7 @@ public bool EnableSkeletonProcessing } /// - public string SkeletonProcessorLabel => "Retarget Hands"; + public string SkeletonProcessorLabel => "Retargeted Bone Targets"; /// /// The to give self to @@ -86,7 +87,7 @@ private void FindLocalProcessorAggregator() protected virtual void Awake() { var humanBodyBoneToOVRBoneId = - CustomMappings.BoneIdToHumanBodyBone.ToDictionary( + OVRHumanBodyBonesMappings.BoneIdToHumanBodyBone.ToDictionary( x => x.Value, x => x.Key); foreach (var retargetedBoneTarget in _retargetedBoneTargets) { diff --git a/Runtime/Scripts/AnimationRigging/RetargetingLayer.cs b/Runtime/Scripts/AnimationRigging/RetargetingLayer.cs index 639b3c31..9a95fbc2 100644 --- a/Runtime/Scripts/AnimationRigging/RetargetingLayer.cs +++ b/Runtime/Scripts/AnimationRigging/RetargetingLayer.cs @@ -129,7 +129,7 @@ public bool ApplyAnimationConstraintsToCorrectedPositions /// [SerializeField] [Tooltip(RetargetingLayerTooltips.EnableTrackingByProxy)] - protected bool _enableTrackingByProxy = false; + protected bool _enableTrackingByProxy = true; /// public bool EnableTrackingByProxy { @@ -194,7 +194,7 @@ public JointRotationTweaks[] JointRotationTweaksArray /// private Dictionary _humanBoneToAccumulatedRotationTweaks = new Dictionary(); - private List _bonesToRemove = new List (); + private List _bonesToRemove = new List(); private Pose[] _defaultPoses; private IJointConstraint[] _jointConstraints; @@ -228,23 +228,22 @@ protected override void Start() try { base.Start(); - } - catch (Exception e) - { - Debug.LogWarning(e); - } - - ConstructDefaultPoseInformation(); - ConstructBoneAdjustmentInformation(); - CacheJointConstraints(); + ConstructDefaultPoseInformation(); + ConstructBoneAdjustmentInformation(); + CacheJointConstraints(); - ValidateHumanoid(); + ValidateHumanoid(); - PrecomputeJointRotationTweaks(); + PrecomputeJointRotationTweaks(); - foreach (var retargetingProcessor in _retargetingProcessors) + foreach (var retargetingProcessor in _retargetingProcessors) + { + retargetingProcessor.SetupRetargetingProcessor(this); + } + } + catch (Exception e) { - retargetingProcessor.SetupRetargetingProcessor(this); + Debug.LogWarning(e); } } @@ -402,7 +401,7 @@ protected virtual void PrecomputeJointRotationTweaks() _bonesToRemove.Add(bone); } } - foreach(var boneToRemove in _bonesToRemove) + foreach (var boneToRemove in _bonesToRemove) { _humanBoneToAccumulatedRotationTweaks.Remove(boneToRemove); } @@ -448,8 +447,10 @@ protected virtual void LateUpdate() protected virtual bool ShouldUpdatePositionOfBone(HumanBodyBones humanBodyBone) { - var bodySectionOfJoint = OVRHumanBodyBonesMappings.BoneToBodySection[humanBodyBone]; - return IsBodySectionInArray(bodySectionOfJoint, BodySectionToPosition); + var bodySectionOfJoint = + OVRHumanBodyBonesMappings.BoneToBodySection[humanBodyBone]; + return IsBodySectionInArray(bodySectionOfJoint, + _skeletonType == SkeletonType.FullBody ? FullBodySectionToPosition : BodySectionToPosition); } private void RunConstraints() @@ -573,7 +574,7 @@ public void UpdateAdjustments(Quaternion[] rotationOffsets, if (avatarMask != null) { jointFailsMask = !avatarMask.GetHumanoidBodyPartActive( - CustomMappings.HumanBoneToAvatarBodyPart[targetHumanBodyBone]); + BoneMappingsExtension.HumanBoneToAvatarBodyPart[targetHumanBodyBone]); } if (adjustment == null) diff --git a/Runtime/Scripts/AnimationRigging/RiggingUtilities.cs b/Runtime/Scripts/AnimationRigging/RiggingUtilities.cs index 23ccc5a2..aa4c3f72 100644 --- a/Runtime/Scripts/AnimationRigging/RiggingUtilities.cs +++ b/Runtime/Scripts/AnimationRigging/RiggingUtilities.cs @@ -2,6 +2,7 @@ using System; using UnityEngine; +using static OVRUnityHumanoidSkeletonRetargeter; namespace Oculus.Movement.AnimationRigging { @@ -61,16 +62,25 @@ public static Transform FindBoneTransformFromSkeleton( /// /// to query. /// of transform to find. + /// If is full body bone or not. /// public static Transform FindBoneTransformAnimator( Animator animator, - OVRSkeleton.BoneId boneId) + OVRSkeleton.BoneId boneId, + bool isFullBody) { - if (!CustomMappings.BoneIdToHumanBodyBone.ContainsKey(boneId)) + if ((isFullBody && !OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone.ContainsKey(boneId)) || + (!isFullBody && !OVRHumanBodyBonesMappings.BoneIdToHumanBodyBone.ContainsKey(boneId)) + ) { return null; } - return animator.GetBoneTransform(CustomMappings.BoneIdToHumanBodyBone[boneId]); + + if (isFullBody) + { + return animator.GetBoneTransform(OVRHumanBodyBonesMappings.FullBodyBoneIdToHumanBodyBone[boneId]); + } + return animator.GetBoneTransform(OVRHumanBodyBonesMappings.BoneIdToHumanBodyBone[boneId]); } /// diff --git a/Runtime/Scripts/AnimationRigging/TwistDistributionConstraint.cs b/Runtime/Scripts/AnimationRigging/TwistDistributionConstraint.cs index 9abcc767..f2efcf80 100644 --- a/Runtime/Scripts/AnimationRigging/TwistDistributionConstraint.cs +++ b/Runtime/Scripts/AnimationRigging/TwistDistributionConstraint.cs @@ -346,7 +346,7 @@ void IAnimationJobData.SetDefaultValues() /// begin with, so that it can compute metadata before the /// character can begin animating. /// - [DisallowMultipleComponent] + [DisallowMultipleComponent, AddComponentMenu("Movement Animation Rigging/Twist Distribution Constraint")] public class TwistDistributionConstraint : RigConstraint< TwistDistributionJob, TwistDistributionData, diff --git a/Runtime/Scripts/Effects/ExpressionDetection/MacroFacialExpressionDetector.cs b/Runtime/Scripts/Effects/ExpressionDetection/MacroFacialExpressionDetector.cs index 39833a4d..b978e533 100644 --- a/Runtime/Scripts/Effects/ExpressionDetection/MacroFacialExpressionDetector.cs +++ b/Runtime/Scripts/Effects/ExpressionDetection/MacroFacialExpressionDetector.cs @@ -19,13 +19,13 @@ public class MacroFacialExpressionDetector : MonoBehaviour public enum MacroExpressionType { /// - /// Smiling expression. + /// Smile /// - Happy = 0, + Smile = 0, /// - /// Angry or frowning expression. + /// Frowning /// - Angry = 1 + Frown = 1 } /// diff --git a/Runtime/Scripts/Effects/ExpressionDetection/SmileEffect.cs b/Runtime/Scripts/Effects/ExpressionDetection/SmileEffect.cs index ef394b6a..62f54c4a 100644 --- a/Runtime/Scripts/Effects/ExpressionDetection/SmileEffect.cs +++ b/Runtime/Scripts/Effects/ExpressionDetection/SmileEffect.cs @@ -126,7 +126,7 @@ private void MacroExpressionStateChange( { return; } - if (eventArgs.Expression != MacroExpressionType.Happy) + if (eventArgs.Expression != MacroExpressionType.Smile) { return; } @@ -152,12 +152,12 @@ private void Update() _smileTime = -1.0f; } - if (!_facialExpressionDetector.MacroExpressionTypeToStrength.ContainsKey(MacroExpressionType.Happy)) + if (!_facialExpressionDetector.MacroExpressionTypeToStrength.ContainsKey(MacroExpressionType.Smile)) { return; } - var currentStateInfo =_animator.GetCurrentAnimatorStateInfo(0); + var currentStateInfo = _animator.GetCurrentAnimatorStateInfo(0); bool isSmiling = currentStateInfo.IsName(_smileStateName); bool isSmileReversing = currentStateInfo.IsName(_reverseSmileStateName); if (isSmiling || isSmileReversing) @@ -168,7 +168,7 @@ private void Update() // lerp value obtained while smiling. float currentLerpValue = isSmiling ? currentStateInfo.normalizedTime : - _lastLerpValueSmiling*(1.0f - currentStateInfo.normalizedTime); + _lastLerpValueSmiling * (1.0f - currentStateInfo.normalizedTime); if (isSmiling) { _lastLerpValueSmiling = currentLerpValue; diff --git a/Runtime/Scripts/Effects/Legacy/TwistDistribution.cs b/Runtime/Scripts/Effects/Legacy/TwistDistribution.cs index a144356b..5ca55f48 100644 --- a/Runtime/Scripts/Effects/Legacy/TwistDistribution.cs +++ b/Runtime/Scripts/Effects/Legacy/TwistDistribution.cs @@ -1,6 +1,7 @@ // Copyright (c) Meta Platforms, Inc. and affiliates. using Oculus.Interaction; +using Oculus.Movement.AnimationRigging; using UnityEngine; using UnityEngine.Assertions; @@ -144,6 +145,15 @@ public void ApplyTwist() return; } + if (!RiggingUtilities.IsFiniteVector3(_segmentStart.position)) + { + return; + } + if (!RiggingUtilities.IsFiniteVector3(_segmentEnd.position)) + { + return; + } + SpaceJoints(); TwistJoints(); } diff --git a/Runtime/Scripts/Effects/NormalRecalculation/RecalculateNormals.cs b/Runtime/Scripts/Effects/NormalRecalculation/RecalculateNormals.cs index 64209cb6..e9421ee9 100644 --- a/Runtime/Scripts/Effects/NormalRecalculation/RecalculateNormals.cs +++ b/Runtime/Scripts/Effects/NormalRecalculation/RecalculateNormals.cs @@ -22,7 +22,7 @@ public class RecalculateNormals : MonoBehaviour /// The layer of the duplicate mesh with recalculate normals, should /// be on a visible layer. /// - public string DuplicateLayerName { get => _duplicateLayerName; set => _duplicateLayerName = value; } + public int DuplicateLayer { get => _duplicateLayer; set => _duplicateLayer = value; } /// /// Skinned mesh renderer requiring normal recalc. @@ -61,8 +61,8 @@ public class RecalculateNormals : MonoBehaviour /// be on a visible layer. /// [SerializeField] - [Tooltip(RecalculateNormalsTooltips.DuplicateLayerName)] - protected string _duplicateLayerName = "Character"; + [Tooltip(RecalculateNormalsTooltips.DuplicateLayer)] + protected int _duplicateLayer = 11; /// /// The layer of original mesh with invalid normals, should be @@ -121,7 +121,7 @@ private void Awake() Assert.IsNotNull(_skinnedMeshRenderer); Assert.IsTrue(_recalculateMaterialIndices.Length > 0); Assert.IsTrue(LayerMask.NameToLayer(_hiddenMeshLayerName) > -1); - Assert.IsTrue(LayerMask.NameToLayer(_duplicateLayerName) > -1); + Assert.IsTrue(LayerMask.LayerToName(_duplicateLayer) != null); _instantiatedMaterials = _skinnedMeshRenderer.materials; foreach (var recalculateMaterialIndex in _recalculateMaterialIndices) @@ -248,18 +248,17 @@ private void ApplyLayerMask() private void ToggleVisibility(bool showNormalRecalculation) { int hiddenMeshLayer = LayerMask.NameToLayer(_hiddenMeshLayerName); - int visibleMeshLayer = LayerMask.NameToLayer(_duplicateLayerName); if (showNormalRecalculation) { _skinnedMeshRenderer.gameObject.layer = hiddenMeshLayer; if (_recalcObject) { - _recalcObject.gameObject.layer = visibleMeshLayer; + _recalcObject.gameObject.layer = _duplicateLayer; } } else { - _skinnedMeshRenderer.gameObject.layer = visibleMeshLayer; + _skinnedMeshRenderer.gameObject.layer = _duplicateLayer; if (_recalcObject) { _recalcObject.gameObject.layer = hiddenMeshLayer; @@ -282,7 +281,7 @@ private int GetHiddenMeshMask() private (MeshFilter, MeshRenderer) GetDuplicateMeshForNormalRecalculation() { _recalcObject = new GameObject(gameObject.name + "_NormalRecalc"); - _recalcObject.layer = LayerMask.NameToLayer(_duplicateLayerName); + _recalcObject.layer = _duplicateLayer; var meshFilterRecalc = _recalcObject.AddComponent(); var meshRendererRecalc = _recalcObject.AddComponent(); var recalcTransform = _recalcObject.transform; diff --git a/Runtime/Scripts/Locomotion/AnimationConstraintBlender.cs b/Runtime/Scripts/Locomotion/AnimationConstraintBlender.cs new file mode 100644 index 00000000..3399b329 --- /dev/null +++ b/Runtime/Scripts/Locomotion/AnimationConstraintBlender.cs @@ -0,0 +1,216 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using Oculus.Interaction; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Animations.Rigging; + +namespace Oculus.Movement.Locomotion +{ + /// + /// Blends animation playback on an , turning animation on + /// during an activity, and off after the activity stops for a given timeout period. + /// + public class AnimationConstraintBlender : MonoBehaviour + { + /// + /// Seconds of inactivity till entire animator follows body tracking again + /// + [Tooltip(AnimationConstraintBlenderTooltips.ActivityExitTime)] + [SerializeField] + protected float _activityExitTime = 1; + + /// + /// The body being animated + /// + [Tooltip(AnimationConstraintBlenderTooltips.Animator)] + [SerializeField] + protected Animator _animator; + + /// + /// Constraints to deactivate when animation is active. + /// + [Tooltip(AnimationConstraintBlenderTooltips.ConstraintsToDeactivate)] + [Interface(typeof(IRigConstraint)), SerializeField] + protected MonoBehaviour[] _constraintsToDeactivate; + + /// + /// Constraints to blend when animation is active. + /// + [Tooltip(AnimationConstraintBlenderTooltips.ConstraintsToBlend)] + [Interface(typeof(IRigConstraint)), SerializeField] + protected MonoBehaviour[] _constraintsToBlend; + + /// + /// Constraints that need to be turned off only while animating the activity + /// + private List _rigConstraintsToDeactivate; + + /// + /// Constraints that need the weight to be blended while animating the activity + /// + private List _rigConstraintsToBlend; + + /// + /// when the last request for masking ended + /// + private float _timeOfLastActivity; + + /// + /// when to actually stop masking + /// + private float _activityTimeout; + + /// + /// True if any sources requested the animation to activate + /// + private bool _shouldApplyAnim; + + /// + /// True if the animation is being applied + /// + private bool _isApplyingAnim; + + /// + /// True if the animation is being applied + /// + public bool IsApplyingAnimation + { + get => _isApplyingAnim; + set + { + if (value != _isApplyingAnim) + { + if (value) + { + StartApplyingAnim(); + } + else + { + FinishApplyingAnim(); + } + } + _isApplyingAnim = value; + } + } + + /// + /// If the mask should apply to the animator. Instead of setting this directly, use + /// and + /// + public bool ShouldApplyAnim + { + get => _shouldApplyAnim; + set + { + if (!value && _shouldApplyAnim) + { + _timeOfLastActivity = Time.time; + _activityTimeout = _timeOfLastActivity + _activityExitTime; + } + else if (value) + { + IsApplyingAnimation = true; + } + _shouldApplyAnim = value; + } + } + + /// + /// The animator to apply the animator mask to + /// + public Animator Animator + { + get => _animator; + set => SetAnimator(value); + } + +#if UNITY_EDITOR + private void Reset() + { + Animator = GetComponentInParent(); + } +#endif + + /// + protected void Start() + { + SetAnimator(Animator); + } + + /// + protected void Update() + { + if (!IsApplyingAnimation || ShouldApplyAnim) + { + return; + } + + foreach (var rigConstraint in _rigConstraintsToBlend) + { + rigConstraint.weight = Mathf.Clamp01((_activityTimeout - Time.time) / _activityExitTime); + } + if (Time.time >= _activityTimeout) + { + IsApplyingAnimation = false; + } + } + + /// + /// Used to identify that the animation should be applied to the animator + /// + public void StartApplyingAnimFor() + { + ShouldApplyAnim = true; + } + + /// + /// Used to identify that the animation is finished being applied to the animator + /// + public void FinishApplyingAnimFor() + { + ShouldApplyAnim = false; + } + + /// + /// Sets the animator, and recalculates internal variables, like related rig constraints. + /// + /// + private void SetAnimator(Animator value) + { + _animator = value; + FindRigConstraints(_animator); + } + + private void FindRigConstraints(Animator animator) + { + if (animator == null) + { + return; + } + + _rigConstraintsToDeactivate = new List(); + foreach (var constraint in _constraintsToDeactivate) + { + _rigConstraintsToDeactivate.Add(constraint as IRigConstraint); + } + + _rigConstraintsToBlend = new List(); + foreach (var constraint in _constraintsToBlend) + { + _rigConstraintsToBlend.Add(constraint as IRigConstraint); + } + } + + private void StartApplyingAnim() + { + _rigConstraintsToDeactivate.ForEach(c => c.weight = 0); + _rigConstraintsToBlend.ForEach(c => c.weight = 1); + } + + private void FinishApplyingAnim() + { + _rigConstraintsToDeactivate.ForEach(c => c.weight = 1); + } + } +} diff --git a/Runtime/Scripts/Locomotion/AnimationConstraintBlender.cs.meta b/Runtime/Scripts/Locomotion/AnimationConstraintBlender.cs.meta new file mode 100644 index 00000000..eb09abc0 --- /dev/null +++ b/Runtime/Scripts/Locomotion/AnimationConstraintBlender.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4ff1502fa0de15543a539011dffe8033 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Locomotion/Legacy.meta b/Runtime/Scripts/Locomotion/Legacy.meta new file mode 100644 index 00000000..250528d9 --- /dev/null +++ b/Runtime/Scripts/Locomotion/Legacy.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e98ea469fe1d2964895dc84cfbece95b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Locomotion/AnimationConstraintMasker.cs b/Runtime/Scripts/Locomotion/Legacy/AnimationConstraintMasker.cs similarity index 99% rename from Runtime/Scripts/Locomotion/AnimationConstraintMasker.cs rename to Runtime/Scripts/Locomotion/Legacy/AnimationConstraintMasker.cs index c716383e..e1ea7062 100644 --- a/Runtime/Scripts/Locomotion/AnimationConstraintMasker.cs +++ b/Runtime/Scripts/Locomotion/Legacy/AnimationConstraintMasker.cs @@ -5,7 +5,7 @@ using UnityEngine; using UnityEngine.Animations.Rigging; -namespace Oculus.Movement.Locomotion +namespace Oculus.Movement.Locomotion.Deprecated { /// /// Manages animation masking on an , turning masking on diff --git a/Runtime/Scripts/Locomotion/AnimationConstraintMasker.cs.meta b/Runtime/Scripts/Locomotion/Legacy/AnimationConstraintMasker.cs.meta similarity index 100% rename from Runtime/Scripts/Locomotion/AnimationConstraintMasker.cs.meta rename to Runtime/Scripts/Locomotion/Legacy/AnimationConstraintMasker.cs.meta diff --git a/Runtime/Scripts/Locomotion/MovementSDKLocomotion.cs b/Runtime/Scripts/Locomotion/MovementSDKLocomotion.cs index 51495c8b..60bd7186 100644 --- a/Runtime/Scripts/Locomotion/MovementSDKLocomotion.cs +++ b/Runtime/Scripts/Locomotion/MovementSDKLocomotion.cs @@ -193,6 +193,8 @@ public bool SnapTurnRight set => _snapTurnRight = value; } + private bool _canUpdate; + /// private void Awake() { @@ -205,6 +207,7 @@ private void Awake() { _cameraRig = GetComponentInChildren(); } + _canUpdate = true; } /// @@ -216,6 +219,16 @@ private void Start() /// private void FixedUpdate() { + if (!_canUpdate) + { + // Reset the inputs while the locomotion can't receive any updates, so that no erroneous input is + // captured and applied when update is enabled again. + SetJoystickInput(Vector2.zero); + _receivedScriptedJoystickInputThisFrame = false; + _rigidbody.velocity = _rigidbody.angularVelocity = Vector3.zero; + _locomotionDirection = Vector3.zero; + return; + } if (_smoothTurnLeft) { transform.Rotate(0, -_rotationPerSecond * Time.deltaTime, 0); @@ -239,6 +252,13 @@ private void FixedUpdate() } } + private void OnApplicationFocus(bool hasFocus) + { + _canUpdate = hasFocus; + _rigidbody.isKinematic = !hasFocus; + _rigidbody.velocity = _rigidbody.angularVelocity = Vector3.zero; + } + /// /// Calculates the move direction based on input /// @@ -311,7 +331,7 @@ private void UpdateMovement() { if (_rigidbody.isKinematic) { - _rigidbody.MovePosition(_rigidbody.position + _locomotionDirection * _speed * Time.fixedDeltaTime); + _rigidbody.MovePosition(_rigidbody.position + _locomotionDirection * (_speed * Time.fixedDeltaTime)); } else { diff --git a/Runtime/Scripts/Locomotion/SphereColliderStaysBelowHips.cs b/Runtime/Scripts/Locomotion/SphereColliderStaysBelowHips.cs index 6643a335..b219c075 100644 --- a/Runtime/Scripts/Locomotion/SphereColliderStaysBelowHips.cs +++ b/Runtime/Scripts/Locomotion/SphereColliderStaysBelowHips.cs @@ -1,6 +1,5 @@ // Copyright (c) Meta Platforms, Inc. and affiliates. -using System.Collections.Generic; using UnityEngine; namespace Oculus.Movement.Locomotion @@ -39,18 +38,18 @@ public class SphereColliderStaysBelowHips : MonoBehaviour protected LayerMask _floorLayerMask = 1; /// - /// Partial names (in the hierarchy) of Transforms that track the hips + /// Transform that move when the player moves in real life. /// - [Tooltip(SphereColliderStaysBelowHipsTooltips.TrackingHipsNames)] + [Tooltip(SphereColliderStaysBelowHipsTooltips.TrackedHipTransform)] [SerializeField] - protected string[] _trackingHipsNames = { "Hips" }; + protected Transform _trackingHips; /// - /// Partial names (in the hierarchy) of Transforms that track the toes or bottom of feet + /// Transforms belonging to feet, at the ground, that move when the animated character moves. /// - [Tooltip(SphereColliderStaysBelowHipsTooltips.TrackingToesNames)] + [Tooltip(SphereColliderStaysBelowHipsTooltips.TrackingToes)] [SerializeField] - protected string[] _trackingToesNames = { "_ToesEnd", "FootTip" }; + protected Transform[] _trackingToes; /// /// If true, the sphere collider will be influenced by the y-position of toes @@ -64,77 +63,11 @@ public class SphereColliderStaysBelowHips : MonoBehaviour /// private Vector3 _lastPosition; - /// - /// Transform that move when the player moves IRL. - /// - protected Transform _trackingHips; - - /// - /// Transforms belonging to feet, at the ground, that move when the animated character moves. - /// - protected Transform[] _trackingToes; - /// /// Statically allocated memory for collision detection, for performance reasons /// private RaycastHit[] _nonallocSphereCastHits = new RaycastHit[10]; - /// - public Transform CharacterRoot - { - get => _characterRoot; - set - { - _characterRoot = value; - RefreshBodytrackedRoot(); - } - } - - /// - public bool TrackToes - { - get => _colliderFollowsToes; - set => _colliderFollowsToes = value; - } - - /// - /// - /// Automatically set when CharacterRoot is set. Can be manually reset later. - /// - public Transform TrackedToDetermineGroundPosition - { - get => _trackingHips; - set => _trackingHips = value; - } - - /// - /// Discovers an active transform named by - /// - public void RefreshBodytrackedRoot() - { - Transform[] trackingHips = FindTransformsWithNamesContaining(CharacterRoot, _trackingHipsNames); - _trackingHips = trackingHips[0]; - _trackingToes = FindTransformsWithNamesContaining(CharacterRoot, _trackingToesNames); - } - - private static Transform[] FindTransformsWithNamesContaining(Transform root, IEnumerable partialNames) - { - Transform[] transforms = root.GetComponentsInChildren(); - List result = new List(); - foreach (string partialName in partialNames) - { - for (int i = 0; i < transforms.Length; ++i) - { - Transform t = transforms[i]; - if (t.name.Contains(partialName)) - { - result.Add(t); - } - } - } - return result.ToArray(); - } - protected Vector3 GetPlausibleFeetAbsolutePosition() { Vector3 plausibleFeetPosition = _trackingHips.position; @@ -163,11 +96,6 @@ private void GetBestYValueForToes(ref float toesY) } } - private void Start() - { - RefreshBodytrackedRoot(); - } - private void Update() { Transform colliderTransform = _collider.transform; diff --git a/Runtime/Scripts/RetargetingProcessing/RetargetingProcessorCorrectBones.cs b/Runtime/Scripts/RetargetingProcessing/RetargetingProcessorCorrectBones.cs index b6ae25bb..2452cf03 100644 --- a/Runtime/Scripts/RetargetingProcessing/RetargetingProcessorCorrectBones.cs +++ b/Runtime/Scripts/RetargetingProcessing/RetargetingProcessorCorrectBones.cs @@ -120,7 +120,7 @@ public override void ProcessRetargetingLayer(RetargetingLayer retargetingLayer, } var targetCorrectionQuaternion = (Quaternion)nullableTargetCorrectionQuaternion; - var bodyPart = CustomMappings.HumanBoneToAvatarBodyPart[humanBodyBone]; + var bodyPart = BoneMappingsExtension.HumanBoneToAvatarBodyPart[humanBodyBone]; var targetJoint = retargetingLayer.GetOriginalJoint(humanBodyBone); // Make sure body part passes mask, and bone's position should be updated. diff --git a/Runtime/Scripts/RetargetingProcessing/RetargetingProcessorCorrectHand.cs b/Runtime/Scripts/RetargetingProcessing/RetargetingProcessorCorrectHand.cs index 9da181f8..b42a89da 100644 --- a/Runtime/Scripts/RetargetingProcessing/RetargetingProcessorCorrectHand.cs +++ b/Runtime/Scripts/RetargetingProcessing/RetargetingProcessorCorrectHand.cs @@ -138,9 +138,9 @@ public override void SetupRetargetingProcessor(RetargetingLayer retargetingLayer } if ((Handedness == Handedness.Left && - CustomMappings.HumanBoneToAvatarBodyPart[i] == AvatarMaskBodyPart.LeftArm) || + BoneMappingsExtension.HumanBoneToAvatarBodyPart[i] == AvatarMaskBodyPart.LeftArm) || (Handedness == Handedness.Right && - CustomMappings.HumanBoneToAvatarBodyPart[i] == AvatarMaskBodyPart.RightArm)) + BoneMappingsExtension.HumanBoneToAvatarBodyPart[i] == AvatarMaskBodyPart.RightArm)) { armBones.Add(boneTransform); } @@ -157,17 +157,23 @@ public override void PrepareRetargetingProcessor(RetargetingLayer retargetingLay /// public override void ProcessRetargetingLayer(RetargetingLayer retargetingLayer, IList ovrBones) { + var isFullBody = retargetingLayer.GetSkeletonType() == OVRSkeleton.SkeletonType.FullBody; + var leftHandWristIndex = isFullBody ? (int)OVRSkeleton.BoneId.FullBody_LeftHandWrist : + (int)OVRSkeleton.BoneId.Body_LeftHandWrist; + var rightHandWristIndex = isFullBody ? (int)OVRSkeleton.BoneId.FullBody_RightHandWrist : + (int)OVRSkeleton.BoneId.Body_RightHandWrist; + if ((Handedness == Handedness.Left && - ovrBones.Count < (int)OVRSkeleton.BoneId.Body_LeftHandWrist) || + ovrBones.Count < leftHandWristIndex) || (Handedness == Handedness.Right && - ovrBones.Count < (int)OVRSkeleton.BoneId.Body_RightHandWrist)) + ovrBones.Count < rightHandWristIndex)) { return; } var targetHand = ovrBones[Handedness == Handedness.Left ? - (int)OVRSkeleton.BoneId.Body_LeftHandWrist : - (int)OVRSkeleton.BoneId.Body_RightHandWrist]?.Transform; + leftHandWristIndex : + rightHandWristIndex]?.Transform; if (targetHand == null) { return; diff --git a/Runtime/Scripts/SkeletonProcessing/SkeletonTranslateProcessor.cs b/Runtime/Scripts/SkeletonProcessing/SkeletonTranslateProcessor.cs index 60973b0b..cda132ba 100644 --- a/Runtime/Scripts/SkeletonProcessing/SkeletonTranslateProcessor.cs +++ b/Runtime/Scripts/SkeletonProcessing/SkeletonTranslateProcessor.cs @@ -1,5 +1,6 @@ // Copyright (c) Meta Platforms, Inc. and affiliates. +using System; using Oculus.Movement.Utils; using System.Collections.Generic; using UnityEngine; @@ -97,6 +98,11 @@ protected void Start() } } + private void OnApplicationFocus(bool hasFocus) + { + enabled = hasFocus; + } + /// /// Applies transform position and rotation to the given OVRSkeleton data /// diff --git a/Runtime/Scripts/Tooltips.cs b/Runtime/Scripts/Tooltips.cs index 246a684b..b7491e32 100644 --- a/Runtime/Scripts/Tooltips.cs +++ b/Runtime/Scripts/Tooltips.cs @@ -224,7 +224,7 @@ public static class RecalculateNormalsTooltips public const string RecalculateIndependently = "Allows recalculate normals to be calculated independently on LateUpdate, instead of being driven from DriveSkeletalLateUpdateLogic."; - public const string DuplicateLayerName = + public const string DuplicateLayer = "The visible layer of the duplicate mesh with recalculate normals."; public const string HiddenMeshLayerName = @@ -775,6 +775,27 @@ public static class FingerOffset public const string FingerOffsets = "Offsets that will be applied to the fingers."; + + public const string Animator = + "The character's animator."; + + public const string Skeleton = + "The source skeleton."; + + public const string LeftHand = + "The character's left hand bone."; + + public const string RightHand = + "The character's right hand bone."; + + public const string InterpolatedFingers = + "Possible metacarpal bones."; + + public const string Fingers = + "All finger joints."; + + public const string CalculateFingerData = + "If finger data has been calculated or not."; } public static class DeformationLogicTooltips @@ -929,6 +950,9 @@ public static class DeformationDataTooltips public const string SpineAlignmentWeight = "The weight for the spine alignment."; + public const string ChestAlignmentWeight = + "The weight for the chest alignment."; + public const string LeftShoulderWeight = "The weight for the deformation on the left shoulder."; @@ -942,10 +966,25 @@ public static class DeformationDataTooltips "The weight for the deformation on the right arm."; public const string LeftHandWeight = - "The weight for the deformation on hands."; + "The weight for the deformation on the left hand."; public const string RightHandWeight = - "The weight for the deformation on hands."; + "The weight for the deformation on the right hand."; + + public const string LeftLegWeight = + "The weight for the deformation on the left leg."; + + public const string RightLegWeight = + "The weight for the deformation on the right leg."; + + public const string LeftToesWeight = + "The weight for the deformation on the left toe."; + + public const string RightToesWeight = + "The weight for the deformation on the right toe."; + + public const string AlignFeetWeight = + "Weight used for feet alignment."; public const string HipsToHeadBones = "Array of transform bones from hips to head."; @@ -959,6 +998,12 @@ public static class DeformationDataTooltips public const string RightArmData = "Right arm data."; + public const string LeftLegData = + "Left leg data."; + + public const string RightLegData = + "Right leg data."; + public const string BonePairData = "All bone pair data."; @@ -967,6 +1012,15 @@ public static class DeformationDataTooltips public const string HipsToHeadDistance = "Distances between head and hips."; + + public const string HipsToFootDistance = + "Distances between hips and feet."; + } + + public static class FullBodyDeformationConstraintToolTips + { + public const string CalculateBoneData = + "Allows calculating bone data via a button."; } public static class HipPinningDataTooltips @@ -1519,6 +1573,21 @@ public static class AnimationConstraintMaskerTooltips + "example, {\"_Leg\"} will disable all rig constraints with \"_Leg\" in the name."; } + public static class AnimationConstraintBlenderTooltips + { + public const string ActivityExitTime = + "Seconds of inactivity till entire animator follows body tracking again."; + + public const string Animator = + "The body being animated."; + + public const string ConstraintsToDeactivate = + "Constraints to deactivate when animation is active."; + + public const string ConstraintsToBlend = + "Constraints to blend when animation is active."; + } + public static class AnimatorHooksTooltips { public const string AutoAssignAnimatorsFromChildren = @@ -1603,11 +1672,11 @@ public static class SphereColliderStaysBelowHipsTooltips public const string CharacterRoot = "Root of the character object, which has specially named body tracked bones as children somewhere in it's hierarchy"; - public const string TrackingHipsNames = - "Partial names (in the hierarchy) of Transforms that track the hips"; + public const string TrackedHipTransform = + "Transform that move when the player moves in real life."; - public const string TrackingToesNames = - "Partial names (in the hierarchy) of Transforms that track the toes or bottom of feet"; + public const string TrackingToes = + "Transforms belonging to feet, at the ground, that move when the animated character moves."; public const string ColliderFollowsToes = "If true, the sphere collider will be influenced by the y-position of toes"; @@ -1687,4 +1756,56 @@ public static class ToggleConstraintsSkeletonStateTooltips public const string Skeleton = "The skeleton object that needs to be tracked."; } + + public static class BodyTrackingFidelityToggleTooltips + { + public const string CurrentFidelity = + "The current fidelity set."; + + public const string WorldText = + "The text to update after body tracking fidelity is changed."; + } + + public static class SuggestBodyTrackingCalibrationButtonTooltips + { + public const string WorldText = + "The text to modify once height is modified."; + + public const string Height = + "The height to set in meters."; + + public const string CalibrateOnStartup = + "Allows calibration on startup."; + } + + public static class BlendHandConstraintsFullBodyTooltips + { + public const string Constraints = + "Constraints to control the weight of."; + + public const string RetargetingLayer = + "The character's retargeting layer."; + + public const string BoneIdToTest = + "Bone ID, usually the wrist. Can be modified depending " + + "on the skeleton used."; + + public const string HeadTransform = + "Head transform to do distance checks against."; + + public const string AutoAddTo = + "MonoBehaviour to add to."; + + public const string ConstraintsMinDistance = + "Distance where constraints are set to 1.0."; + + public const string ConstraintsMaxDistance = + "Distance where constraints are set to 0.0."; + + public const string BlendCurve = + "Multiplier that influences weight interpolation based on distance."; + + public const string MaxWeight = + "Max constraint weight."; + } } diff --git a/Runtime/Scripts/Tracking/DeformationRig.meta b/Runtime/Scripts/Tracking/DeformationRig.meta new file mode 100644 index 00000000..1c303f15 --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c18e89b2671b24a9f9618b31ab6c9219 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Tracking/DeformationRig/AutoCorrectiveShapeDriver.cs b/Runtime/Scripts/Tracking/DeformationRig/AutoCorrectiveShapeDriver.cs new file mode 100644 index 00000000..5602bf51 --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/AutoCorrectiveShapeDriver.cs @@ -0,0 +1,161 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.Assertions; + +namespace DeformationRig +{ + /// + /// Driver for corrective shapes that automatically finds and drives the appropriate shapes. + /// + /// Only drives correctives that can be derived from already-set driver shapes. Shapes that + /// require the mutation or replacement of driver shapes (i.e. opposing shapes) should use + /// + [ExecuteInEditMode] + public class AutoCorrectiveShapeDriver : MonoBehaviour + { + /// + /// An enumeration of the types of corrective blendshapes that can be driven by this driver. + /// + [Flags] + private enum DriveableTypes + { + /// Required for Unity inspector. + None = 0, + /// A blendshape driven by combining 1 or more driver shapes.. + Combination = 1, + /// A blendshape driven during part of a driver shape signal.. + InBetween = 2, + } + + /// Enum specifying when this driver should update correctives. + private enum UpdateTime + { + /// + /// Don't automatically update correctives. Useful for deactivating the driver or + /// controlling updates manually. + /// + ExternallyDriven, + /// Update correctives during Update(). + Update, + /// Update correctives during LateUpdate(). + LateUpdate, + /// Do not drive the correctives at any time. + Disabled, + } + + /// A simple pairing of a renderer with its configured correctives. + private struct CorrectiveConfig + { + public IBlendshapeInterface BlendshapeInterface; + public List Correctives; + } + + [SerializeField] + [Tooltip("Renderers whose corrective shapes should be driven.")] + private SkinnedMeshRenderer[] _renderers; + + [SerializeField] + [Tooltip("Which shape type or types to drive.")] + private DriveableTypes _drivenShapeTypes = + DriveableTypes.Combination | DriveableTypes.InBetween; + + [SerializeField] + [Tooltip("What lifecycle events this driver should run on.")] + private UpdateTime _updateTime = UpdateTime.LateUpdate; + + private List _perMeshCorrectiveConfigs = null; + + private bool IsDriving(DriveableTypes type) => _drivenShapeTypes.HasFlag(type); + + private bool IsConfigured => _perMeshCorrectiveConfigs is not null; + + private void Awake() + { + Assert.IsNotNull(_renderers); + Configure(); + } + + // Runs when things are changed in editor in EditMode. + private void OnValidate() => Configure(); + + private void Update() => MaybeDriveCorrectives(UpdateTime.Update); + + private void LateUpdate() => MaybeDriveCorrectives(UpdateTime.LateUpdate); + + /// + /// Find all driven shapes and their drivers, and save that information to apply on updates. + /// + [ContextMenu("Configure Driver")] + private void Configure() + { + _perMeshCorrectiveConfigs = _renderers + .Select(renderer => new CorrectiveConfig() + { + BlendshapeInterface = new SkinnedMeshRendererBlendshapeInterface(renderer), + Correctives = NamingSchemes.V0.ParseCorrectives( + GetAllShapeNames(renderer.sharedMesh)), + }) + .ToList(); + } + + /// + /// Gets all blendshape names for a given mesh, stripping a leading geometry name if found. + /// + private List GetAllShapeNames(Mesh mesh) => + Enumerable + .Range(0, mesh.blendShapeCount) + .Select(idx => mesh.GetBlendShapeName(idx)) + .Select( + name => + { + var dotIdx = name.IndexOf("."); + return dotIdx != -1 ? name.Substring(dotIdx + 1) : name; + }) + .Select(name => name.Trim()) + .ToList(); + + /// + /// Drives correctives if the provided update time is the one this driver is configured to + /// update during. Simplifies the update methods above. + /// + private void MaybeDriveCorrectives(UpdateTime updateTime) + { + if (updateTime == _updateTime) + { + DriveCorrectives(); + } + } + + /// + /// Drives correctives. Is a no-op if the driver has not yet been configured. + /// + public void DriveCorrectives() + { + if (!IsConfigured) + { + Debug.LogError("Attempted to drive unconfigured correctives.", this); + return; + } + else if (_updateTime == UpdateTime.Disabled) + { + Debug.LogError("Attempted to drive a disabled correctives driver.", this); + return; + } + + // This would look cleaner as a foreach, but you can't use foreach iterator fields as + // ref arguments. + for (int i = 0; i < _perMeshCorrectiveConfigs.Count; i++) + { + var config = _perMeshCorrectiveConfigs[i]; + foreach (var corrective in config.Correctives) + { + corrective.Apply(config.BlendshapeInterface); + } + } + } + } +} diff --git a/Runtime/Scripts/Tracking/DeformationRig/AutoCorrectiveShapeDriver.cs.meta b/Runtime/Scripts/Tracking/DeformationRig/AutoCorrectiveShapeDriver.cs.meta new file mode 100644 index 00000000..d56626ca --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/AutoCorrectiveShapeDriver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a4e539bfcfffb47a0b39556956a8b609 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Tracking/DeformationRig/BlendshapeInterfaces.cs b/Runtime/Scripts/Tracking/DeformationRig/BlendshapeInterfaces.cs new file mode 100644 index 00000000..cac8f299 --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/BlendshapeInterfaces.cs @@ -0,0 +1,48 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using DeformationRig.Utils; +using UnityEngine; + +namespace DeformationRig +{ + /// + /// An abstraction over the functionality for getting and setting blendshape weights by index. + /// + /// This provides a nice seam to both improve testability as well as separate the implementation + /// of the deformation rig from the exact driving logic. + /// + public interface IBlendshapeInterface + { + /// + /// Get or set the weight of a blendshape at a given index. The returned value (and the + /// value being set) should be in the range [0, 1]. + /// + public float this[int index] { get; set; } + } + + /// + /// An implementation of IBlendshapeInterface for Unity's SkinnedMeshRenderer. + /// + public class SkinnedMeshRendererBlendshapeInterface : IBlendshapeInterface + { + private SkinnedMeshRenderer _renderer; + + public SkinnedMeshRendererBlendshapeInterface(SkinnedMeshRenderer renderer) + { + _renderer = renderer; + } + + /// + public float this[int index] + { + get + { + return ConversionHelpers.PercentToDecimal(_renderer.GetBlendShapeWeight(index)); + } + set + { + _renderer.SetBlendShapeWeight(index, ConversionHelpers.DecimalToPercent(value)); + } + } + } +} diff --git a/Runtime/Scripts/Tracking/DeformationRig/BlendshapeInterfaces.cs.meta b/Runtime/Scripts/Tracking/DeformationRig/BlendshapeInterfaces.cs.meta new file mode 100644 index 00000000..14edc959 --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/BlendshapeInterfaces.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3372e38b8f7eb4cef88087f1e5d59274 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Tracking/DeformationRig/Combination.cs b/Runtime/Scripts/Tracking/DeformationRig/Combination.cs new file mode 100644 index 00000000..62edcc37 --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/Combination.cs @@ -0,0 +1,28 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using System.Linq; + +namespace DeformationRig +{ + /// + /// Defines a combination target. + /// + public class Combination : ICorrectiveShape + { + /// + /// The blendshape index to be driven on the skinned mesh renderer. + /// + public int DrivenIndex; + + /// + /// The blendshape indices used in calculating the blendshape weight for the driven index. + /// + public int[] DriverIndices; + + /// + public void Apply(IBlendshapeInterface blendshapeInterface) => + blendshapeInterface[DrivenIndex] = DriverIndices + .Select(idx => blendshapeInterface[idx]) + .Aggregate(1f, (cur, next) => cur * next); + } +} diff --git a/Runtime/Scripts/Tracking/DeformationRig/Combination.cs.meta b/Runtime/Scripts/Tracking/DeformationRig/Combination.cs.meta new file mode 100644 index 00000000..ad7ba792 --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/Combination.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2e09db5ac2850408581a5dbbe4251369 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Tracking/DeformationRig/DriverShape.cs b/Runtime/Scripts/Tracking/DeformationRig/DriverShape.cs new file mode 100644 index 00000000..a7894a95 --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/DriverShape.cs @@ -0,0 +1,21 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +namespace DeformationRig +{ + /// + /// A faux-Corrective representing a driver shape. + /// + public class DriverShape : ICorrectiveShape + { + /// + /// The driver and driven index of this shape. + /// + public int Index { get; private set; } + + public DriverShape(int index) => Index = index; + + /// + public void Apply(IBlendshapeInterface blendshapeInterface) => + blendshapeInterface[Index] = blendshapeInterface[Index]; + } +} diff --git a/Runtime/Scripts/Tracking/DeformationRig/DriverShape.cs.meta b/Runtime/Scripts/Tracking/DeformationRig/DriverShape.cs.meta new file mode 100644 index 00000000..b9e87d21 --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/DriverShape.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f24c914dd4fa443bb1f16e29edf64f1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Tracking/DeformationRig/ICorrectiveShape.cs b/Runtime/Scripts/Tracking/DeformationRig/ICorrectiveShape.cs new file mode 100644 index 00000000..bbbc8b36 --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/ICorrectiveShape.cs @@ -0,0 +1,20 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +namespace DeformationRig +{ + /// + /// An interface describing a corrective shape. + /// + /// A corrective shape generally operates by taking inputs (previously set shape weights) and + /// updating one or more other shapes' weights. All implementers should implement their version + /// of this logic in their override of the Apply method. + /// + public interface ICorrectiveShape + { + /// + /// Calculate the weight of this corrective shape and apply it to the shape (or shapes) + /// it drives. + /// + void Apply(IBlendshapeInterface blendshapeInterface); + } +} diff --git a/Runtime/Scripts/Tracking/DeformationRig/ICorrectiveShape.cs.meta b/Runtime/Scripts/Tracking/DeformationRig/ICorrectiveShape.cs.meta new file mode 100644 index 00000000..d13e7d3e --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/ICorrectiveShape.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5cc40127329d849ee87917d2aea5b73e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Tracking/DeformationRig/InBetween.cs b/Runtime/Scripts/Tracking/DeformationRig/InBetween.cs new file mode 100644 index 00000000..551d472a --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/InBetween.cs @@ -0,0 +1,93 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +namespace DeformationRig +{ + /// + /// Defines an in-between. More specifically, defines a single in-between (i.e. jawDrop50) that + /// has a single peak. + /// + public class InBetween : ICorrectiveShape + { + /// + /// Constructs a list of independently usable InBetweens by inferring their influence + /// curves' keyframes based on other Partials for the same driver index. + /// + public static List BuildFromPartials(List partials) + { + var partitionedPartials = partials + .GroupBy(partial => partial.DriverIndex) + .ToDictionary( + grouping => grouping.Key, + grouping => grouping.OrderBy(partial => partial.PeakValue).ToList()); + + var inBetweens = new List(partials.Count); + foreach (var (driverIndex, subshapes) in partitionedPartials) + { + for (int i = 0; i < subshapes.Count; i++) + { + var keyframes = new List(); + keyframes.Add(new Keyframe(0, 0)); + if (i != 0) + { + keyframes.Add(new Keyframe(subshapes[i - 1].PeakValue, 0)); + } + keyframes.Add(new Keyframe(subshapes[i].PeakValue, 1)); + if (i < subshapes.Count - 1) + { + keyframes.Add(new Keyframe(subshapes[i + 1].PeakValue, 0)); + } + keyframes.Add(new Keyframe(1, 0)); + + inBetweens.Add(new InBetween() + { + DriverIndex = driverIndex, + DrivenIndex = subshapes[i].DrivenIndex, + InfluenceCurve = new AnimationCurve(keyframes.ToArray()), + }); + } + } + return inBetweens; + } + + /// + /// The target blendshape index used for calculating the blendshape weight. + /// + public int DriverIndex; + + /// + /// The blendshape index to be driven on the skinned mesh renderer. + /// + public int DrivenIndex; + + /// + /// A curve describing how this inbetween's weight should vary with the driver. + /// + public AnimationCurve InfluenceCurve; + + // InBetweens should be constructed via BuildFromPartials to ensure the correct curves are + // being set for groupings of InBetweens. + private InBetween() { } + + /// + public void Apply(IBlendshapeInterface blendshapeInterface) + { + var driverWeight = blendshapeInterface[DriverIndex]; + blendshapeInterface[DrivenIndex] = InfluenceCurve.Evaluate(driverWeight); + } + + /// + /// Parsed data for a single inbetween (that may belong to a group of in-betweens for a + /// shared driver shape). + /// + public class Partial + { + public int DriverIndex; + public int DrivenIndex; + public float PeakValue; + } + } +} diff --git a/Runtime/Scripts/Tracking/DeformationRig/InBetween.cs.meta b/Runtime/Scripts/Tracking/DeformationRig/InBetween.cs.meta new file mode 100644 index 00000000..4bc75051 --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/InBetween.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e24b9e74344fa4691ac1791b64ee134a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Tracking/DeformationRig/NamingSchemes.cs b/Runtime/Scripts/Tracking/DeformationRig/NamingSchemes.cs new file mode 100644 index 00000000..5174fbe2 --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/NamingSchemes.cs @@ -0,0 +1,312 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using DeformationRig.Utils; +using System; +using System.Linq; +using System.Collections.Generic; +using System.Text.RegularExpressions; +using UnityEngine; + +namespace DeformationRig +{ + /// + /// A naming scheme describes how to parse the various corrective shapes' ICorrectiveShape + /// representations from a list of shape names. + /// + public interface INamingScheme + { + /// + /// Parses all provided shape names looking for known corrective shapes. + /// + /// This list is returned IN ORDER. Meaning, if all correctives are driven in the order they + /// are returned, all dependent blendshapes will have their driver values available when + /// needed. + /// + List ParseCorrectives(List shapeNames); + + /// The human-readable name of this parsing version. + string VersionName { get; } + } + + /// + /// Available naming schemes to use when parsing the names of corrective shapes. + /// + public static class NamingSchemes + { + private class NamingSchemeV0 : INamingScheme + { + /// + /// Regex describing the name of a directly driven shape. + /// + /// Group 0, Capture 0: Full matching shape name (unused) + /// Group 1, Capture 0: Shape name + /// Group 2, Capture 0: Suffix (caps expected), prefixed with underscore (unused) + /// Group 3, Capture 0: Suffix (caps expected) + /// + private static readonly Regex DRIVER_PATTERN = new Regex( + @"^([a-zA-Z]{4,}|pc_[0-9]{1,2})(_([A-Z]{1,2}))?$"); + + /// + /// Regex describing the name of a directly driven shape (alternate pattern, used by + /// Mobile Genesis). + /// + /// Group 0, Capture 0: Full matching shape name (unused) + /// Group 1, Capture 0: Shape name + /// + private static readonly Regex ALT_DRIVER_PATTERN = new Regex( + @"^(Blendshape_[0-9]+_0)$"); + + /// + /// Regex describing the name of an inbetween shape. + /// + /// Group 0, Capture 0: Full matching shape name (unused) + /// Group 1, Capture 0: Shape name without value + /// Group 2, Capture 0: Value + /// Group 3, Capture 0: Suffix, prefixed with underscore (unused) + /// Group 4, Capture 0: Suffix + /// + private static readonly Regex IN_BETWEEN_PATTERN = new Regex( + @"^([a-zA-Z]+)([0-9]{2})(_([A-Z]{1,2}))?$"); + + /// + /// Regex describing the name of a combination shape. + /// + /// Group 0, Capture 0: Full matching shape name (unused) + /// Group 1, Capture 0: All non-suffix elements, still joined + /// Group 2, Capture N: Combo element N+1 prefixed with underscore + /// Example: full shape name: mesh.foo_bar_baz, N = 0, returns "_bar" + /// Group 3, Capture 0: Suffix, prefixed with underscore (unused) + /// Group 4, Capture 0: Suffix + /// + private static readonly Regex COMBINATION_PATTERN = new Regex( + @"^([a-zA-Z0-9]{4,25}(_[a-zA-Z0-9]{4,25})+)(_([A-Z]{1,2}))?$"); + + public string VersionName => "V0"; + + /// + public List ParseCorrectives(List shapeNames) + { + var drivers = new List(); + var combinations = new List(); + var partialInBetweens = new List(); + + for (int shapeIdx = 0; shapeIdx < shapeNames.Count; shapeIdx++) + { + if (TryParseDriver(shapeNames, shapeIdx, out var driver)) + { + drivers.Add(driver); + } + else if (TryParseCombination(shapeNames, shapeIdx, out var combination)) + { + combinations.Add(combination); + } + else if (TryParseInBetween(shapeNames, shapeIdx, out var inBetween)) + { + partialInBetweens.Add(inBetween); + } + else + { + Debug.LogWarning($"Found unparseable shape name [{shapeNames[shapeIdx]}]."); + } + } + + var inBetweens = InBetween.BuildFromPartials(partialInBetweens); + var ret = new List( + drivers.Count + combinations.Count + inBetweens.Count); + ret.AddRange(drivers); + ret.AddRange(inBetweens); + ret.AddRange(combinations); + return ret; + } + + private static bool TryParseDriver( + List shapeNames, int index, out DriverShape driver) + { + var shapeName = shapeNames[index]; + var match = DRIVER_PATTERN.Match(shapeName); + if (match.Success) + { + if (match.Groups.Count < 4) + { + throw new MissingMemberException( + $"Matched a standard driver shape [{shapeName}], but was missing " + + "parsed data."); + } + + driver = new DriverShape(index); + return true; + } + + match = ALT_DRIVER_PATTERN.Match(shapeName); + if (match.Success) + { + if (match.Groups.Count < 2) + { + throw new MissingMemberException( + $"Matched an alt driver shape [{shapeName}], but was missing parsed " + + "data."); + } + + driver = new DriverShape(index); + return true; + } + + driver = null; + return false; + } + + private static bool TryParseCombination( + List shapeNames, int index, out Combination combination) + { + var shapeName = shapeNames[index]; + var match = COMBINATION_PATTERN.Match(shapeName); + if (!match.Success) + { + combination = null; + return false; + } + else if (match.Groups.Count < 5) + { + throw new MissingMemberException( + $"Matched a combination shape [{shapeName}], but was missing parsed data."); + } + + var elements = match.Groups[1].Captures[0].ToString().Split("_"); + + var suffix = ""; + if (match.Groups[4].Captures.Count > 0) + { + suffix = match.Groups[4].Captures[0].ToString(); + } + + var driverIndices = elements.Select(element => + { + var idx = FindShape(shapeNames, element, suffix); + if (idx == -1) + { + throw new IndexOutOfRangeException( + $"Invalid named combo: {shapeName}. " + + $"Could not find driver shape {element} with suffix '{suffix}'"); + } + return idx; + }) + .ToArray(); + + combination = new Combination() + { + DrivenIndex = index, + DriverIndices = driverIndices, + }; + return true; + } + + private static bool TryParseInBetween( + List shapeNames, int index, out InBetween.Partial inBetween) + { + var shapeName = shapeNames[index]; + Match match = IN_BETWEEN_PATTERN.Match(shapeName); + if (!match.Success) + { + inBetween = null; + return false; + } + + if (match.Groups.Count < 5) + { + throw new MissingMemberException( + $"Matched an in between shape [{shapeName}], but was missing parsed data."); + } + + var driverName = match.Groups[1].Captures[0].ToString(); + if (!Int32.TryParse(match.Groups[2].Captures[0].ToString(), out int peakValue)) + { + throw new ArgumentException( + $"Could not parse value from in between {shapeName}"); + } + else if (peakValue <= 0 || peakValue >= 100) + { + throw new ArgumentException( + $"Parsed value in {shapeName} is outside of (0, 100): {peakValue}"); + + } + + var suffix = ""; + if (match.Groups[4].Captures.Count > 0) + { + suffix = match.Groups[4].Captures[0].ToString(); + } + + var driverIndex = FindShape(shapeNames, driverName, suffix); + if (driverIndex == -1) + { + throw new IndexOutOfRangeException( + $"Invalid named in between: {shapeName}. " + + $"Could not find driver shape {driverName} with suffix '{suffix}'"); + } + + inBetween = new InBetween.Partial() + { + DrivenIndex = index, + DriverIndex = driverIndex, + PeakValue = ConversionHelpers.PercentToDecimal(peakValue), + }; + return true; + } + + /// + /// Searches a list of shape names for a given shape, trying different combinations of + /// potential suffixes if the shape is not immediately found. + /// + /// TODO: This could be made more elegant to actually construct all possible suffixes + /// from a suffix of arbitrary length, but when we expect a suffix to be 0-2 characters, + /// manually checking each is probably fine. If we start having 3 character suffixes, + /// this should be replaced with the elegant version. + /// + private static int FindShape( + List shapeNames, string shapeName, string fullSuffix) + { + var driverIndex = shapeNames.IndexOf(shapeName); + if (driverIndex != -1) + { + return driverIndex; + } + + if (fullSuffix.Length > 2) + { + throw new ArgumentException($"Expected suffix of length 0-2, got {fullSuffix}"); + } + + if (fullSuffix.Length > 0) + { + driverIndex = shapeNames.IndexOf($"{shapeName}_{fullSuffix[0]}"); + if (driverIndex != -1) + { + return driverIndex; + } + } + + if (fullSuffix.Length > 1) + { + driverIndex = shapeNames.IndexOf($"{shapeName}_{fullSuffix[1]}"); + if (driverIndex != -1) + { + return driverIndex; + } + + driverIndex = shapeNames.IndexOf($"{shapeName}_{fullSuffix}"); + if (driverIndex != -1) + { + return driverIndex; + } + } + + return -1; + } + } + + /// + /// The V0 corrective naming scheme. + /// + public static readonly INamingScheme V0 = new NamingSchemeV0(); + } +} diff --git a/Runtime/Scripts/Tracking/DeformationRig/NamingSchemes.cs.meta b/Runtime/Scripts/Tracking/DeformationRig/NamingSchemes.cs.meta new file mode 100644 index 00000000..77f9ba12 --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/NamingSchemes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7ddca7009de0a4237bc517a5dcd76574 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Tracking/DeformationRig/Utils.meta b/Runtime/Scripts/Tracking/DeformationRig/Utils.meta new file mode 100644 index 00000000..a79d23d0 --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/Utils.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5a79bd1904d62410896dbd581f84655b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Tracking/DeformationRig/Utils/ConversionHelpers.cs b/Runtime/Scripts/Tracking/DeformationRig/Utils/ConversionHelpers.cs new file mode 100644 index 00000000..9bab9b0f --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/Utils/ConversionHelpers.cs @@ -0,0 +1,23 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +namespace DeformationRig.Utils +{ + /// + /// A class with some common conversions used across the library. Since most of these are just + /// multiplication with a constant, this ends up being more readable and tidier than having those + /// constants scattered across classes. + /// + public static class ConversionHelpers { + /// + /// Converts a float representing a percentage (i.e. 100 representing 100%) into its decimal + /// equivalent (i.e. 100f -> 1f). + /// + public static float PercentToDecimal(float percent) => percent * 0.01f; + + /// + /// Converts a float representing a percentage in decimal (i.e. 0.5 representing 50%) + /// into its percentage equivalent (i.e. 0.5f -> 50f). + /// + public static float DecimalToPercent(float dec) => dec * 100f; + } +} diff --git a/Runtime/Scripts/Tracking/DeformationRig/Utils/ConversionHelpers.cs.meta b/Runtime/Scripts/Tracking/DeformationRig/Utils/ConversionHelpers.cs.meta new file mode 100644 index 00000000..997bba98 --- /dev/null +++ b/Runtime/Scripts/Tracking/DeformationRig/Utils/ConversionHelpers.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ce697017bce9842bc8235d7058cabdf1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Tracking/FaceTrackingData/CorrectivesFace.cs b/Runtime/Scripts/Tracking/FaceTrackingData/CorrectivesFace.cs index 33b05774..74431e61 100644 --- a/Runtime/Scripts/Tracking/FaceTrackingData/CorrectivesFace.cs +++ b/Runtime/Scripts/Tracking/FaceTrackingData/CorrectivesFace.cs @@ -1,7 +1,6 @@ // Copyright (c) Meta Platforms, Inc. and affiliates. using Oculus.Interaction; -using System; using UnityEngine; namespace Oculus.Movement.Tracking @@ -27,6 +26,28 @@ public class CorrectivesFace : OVRCustomFace /// public bool FreezeExpressionWeights { get; set; } + /// + /// Forces the jaw to drop to accomodate the tongue if it is being stuck out. + /// + [SerializeField] + [Tooltip("Whether or not to force the jaw open to accomodate an extended tongue")] + protected bool _forceJawDropForTongue = true; + + /// + public bool ForceJawDropForTongue + { + get { return _forceJawDropForTongue; } + set { _forceJawDropForTongue = value; } + } + + [SerializeField] + [Tooltip("Minimum value of TongueOut to force JawDrop open")] + private float _tongueOutThreshold = 0.25f; + + [SerializeField] + [Tooltip("Minimum value of JawDrop to force when the user's tongue is out")] + private float _minJawDrop = 0.5f; + /// /// Optional blendshape modifier component. /// @@ -249,6 +270,16 @@ protected void UpdateCachedMeshValues() { currentWeight += ExpressionWeights[(int)OVRFaceExpressions.FaceExpression.EyesLookDownR]; } + else if (ForceJawDropForTongue && blendShapeToFaceExpression == OVRFaceExpressions.FaceExpression.JawDrop) + { + // Fetch this from the underlying expressions in case the renderer being fixed + // has JawDrop but not TongueOut. + var tongueWeight = _faceExpressions[OVRFaceExpressions.FaceExpression.TongueOut]; + if (tongueWeight > _tongueOutThreshold) + { + currentWeight = Mathf.Max(_minJawDrop, currentWeight); + } + } if (_blendshapeModifier != null) { diff --git a/Runtime/Scripts/UI/CustomAnimToggle.cs b/Runtime/Scripts/UI/CustomAnimToggle.cs index 938ef5fa..6f9c3342 100644 --- a/Runtime/Scripts/UI/CustomAnimToggle.cs +++ b/Runtime/Scripts/UI/CustomAnimToggle.cs @@ -1,4 +1,4 @@ -// Copyright (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. +// Copyright (c) Meta Platforms, Inc. and affiliates. using Oculus.Movement.AnimationRigging; using UnityEngine; diff --git a/Runtime/Scripts/UI/HipPinningConstraintCalibration.cs b/Runtime/Scripts/UI/HipPinningConstraintCalibration.cs index 5ba8c462..89f2eb8a 100644 --- a/Runtime/Scripts/UI/HipPinningConstraintCalibration.cs +++ b/Runtime/Scripts/UI/HipPinningConstraintCalibration.cs @@ -110,7 +110,10 @@ private void ExitHipPinning(HipPinningConstraintTarget target) /// public void Calibrate() { - Vector3 hipTranslation = _skeleton.CustomBones[(int)OVRSkeleton.BoneId.Body_Hips].localPosition; + var isFullBody = _skeleton.GetSkeletonType() == OVRSkeleton.SkeletonType.FullBody; + Vector3 hipTranslation = _skeleton.CustomBones[isFullBody ? + (int)OVRSkeleton.BoneId.FullBody_Hips : + (int)OVRSkeleton.BoneId.Body_Hips].localPosition; var mainChairTransform = _mainHipPinningTargetRenderer.transform; mainChairTransform.localPosition = new Vector3(hipTranslation.x, mainChairTransform.localPosition.y, hipTranslation.z); diff --git a/Runtime/Scripts/UI/RetargetingMenu.cs b/Runtime/Scripts/UI/RetargetingMenu.cs index 03ebe1e6..2b18a62c 100644 --- a/Runtime/Scripts/UI/RetargetingMenu.cs +++ b/Runtime/Scripts/UI/RetargetingMenu.cs @@ -35,13 +35,20 @@ public class RetargetingMenu : MonoBehaviour protected Vector3 _spawnOffset = new Vector3(-1.0f, 0.0f, 0.0f); private const int _characterSpawnLimit = 20; - private Vector3 _currentSpawnOffset; + private Vector3 _currentSpawnOffset, _currentSpawnOffsetNotParented; private List _charactersSpawned = new List(); + /// + /// Move the non-mirrored characters out further so that they don't intersect any menus to the + /// right of the user. + /// + private const float _NON_MIRRORED_OFFSET_MULTIPLIER = 1.5f; + private void Awake() { Assert.IsNotNull(_characterToSpawn); _currentSpawnOffset = _spawnOffset; + _currentSpawnOffsetNotParented = -_spawnOffset * _NON_MIRRORED_OFFSET_MULTIPLIER; } /// @@ -55,9 +62,9 @@ public void AddNormalRetargetedCharacter() return; } GameObject newCharacter = Instantiate(_characterToSpawn); - AddComponentsRuntime.SetupCharacterForRetargeting(newCharacter); + AddComponentsRuntime.SetupCharacterForRetargeting(newCharacter, true); - AdjustSpawnedCharacterTransform(newCharacter); + AdjustSpawnedCharacterTransform(newCharacter, true, _currentSpawnOffset); _currentSpawnOffset += _spawnOffset; _charactersSpawned.Add(newCharacter); } @@ -73,13 +80,31 @@ public void AddRiggedRetargetedCharacter() return; } GameObject newCharacter = Instantiate(_characterToSpawn); - AddComponentsRuntime.SetupCharacterForAnimationRiggingRetargeting(newCharacter); + AddComponentsRuntime.SetupCharacterForAnimationRiggingRetargeting(newCharacter, true, false); - AdjustSpawnedCharacterTransform(newCharacter); + AdjustSpawnedCharacterTransform(newCharacter, true, _currentSpawnOffset); _currentSpawnOffset += _spawnOffset; _charactersSpawned.Add(newCharacter); } + /// + /// Spawn retargeted character with animation rigging support, along with constraints. + /// + public void AddRiggedRetargetedCharacterWithConstraints() + { + if (_charactersSpawned.Count >= _characterSpawnLimit) + { + Debug.LogWarning("Reached the limit of characters to spawn."); + return; + } + GameObject newCharacter = Instantiate(_characterToSpawn); + AddComponentsRuntime.SetupCharacterForAnimationRiggingRetargeting(newCharacter, true, true); + + AdjustSpawnedCharacterTransform(newCharacter, false, -_currentSpawnOffsetNotParented); + _currentSpawnOffsetNotParented -= _spawnOffset * _NON_MIRRORED_OFFSET_MULTIPLIER; + _charactersSpawned.Add(newCharacter); + } + /// /// Removes last character spawned. /// @@ -95,14 +120,15 @@ public void RemoveLastCharacter() _currentSpawnOffset -= _spawnOffset; } - private void AdjustSpawnedCharacterTransform(GameObject newCharacter) + private void AdjustSpawnedCharacterTransform(GameObject newCharacter, + bool reparent, Vector3 offsetToUse) { var characterTransform = newCharacter.transform; - if (_spawnParent != null) + if (_spawnParent != null && reparent) { characterTransform.SetParent(_spawnParent, false); } - characterTransform.localPosition = _currentSpawnOffset; + characterTransform.localPosition = offsetToUse; } } } diff --git a/Runtime/Scripts/Utils/AddComponentsRuntime.cs b/Runtime/Scripts/Utils/AddComponentsRuntime.cs index 861a66fb..a4248d0c 100644 --- a/Runtime/Scripts/Utils/AddComponentsRuntime.cs +++ b/Runtime/Scripts/Utils/AddComponentsRuntime.cs @@ -5,6 +5,12 @@ using UnityEngine.Animations.Rigging; using UnityEngine; using Oculus.Movement.Tracking; +using System.Reflection; +using Oculus.Interaction.Input; +using System.Collections.Generic; +using static Oculus.Movement.AnimationRigging.RetargetedBoneTargets; +using static OVRUnityHumanoidSkeletonRetargeter; +using UnityEditor; namespace Oculus.Movement.Utils { @@ -17,10 +23,18 @@ public class AddComponentsRuntime /// Sets up character for retargeting. /// /// GameObject used for setup process. - public static void SetupCharacterForRetargeting(GameObject selectedGameObject) + /// Allows toggling full body or not. + public static void SetupCharacterForRetargeting(GameObject selectedGameObject, + bool isFullBody = false) { - selectedGameObject.AddComponent(); - selectedGameObject.AddComponent(); + var ovrBodyComponent = selectedGameObject.AddComponent(); + var retargeterComponent = selectedGameObject.AddComponent(); + typeof(RetargetingLayer).GetField( + "_skeletonType", BindingFlags.Instance | BindingFlags.NonPublic)?.SetValue( + retargeterComponent, isFullBody ? OVRSkeleton.SkeletonType.FullBody : OVRSkeleton.SkeletonType.Body); + typeof(OVRBody).GetField( + "_providedSkeletonType", BindingFlags.Instance | BindingFlags.NonPublic)?.SetValue( + ovrBodyComponent, isFullBody ? OVRPlugin.BodyJointSet.FullBody : OVRPlugin.BodyJointSet.UpperBody); } /// @@ -102,8 +116,12 @@ public static void SetupCharacterForARKitFace( /// no undo actions since those are not allowed at runtime. /// /// GameObject to add animation rigging + retargeting too. + /// Allows toggling full body or not. + /// Allows adding constraints or not. public static void SetupCharacterForAnimationRiggingRetargeting( - GameObject selectedGameObject) + GameObject selectedGameObject, + bool isFullBody = false, + bool addConstraints = false) { try { @@ -120,29 +138,147 @@ public static void SetupCharacterForAnimationRiggingRetargeting( var mainParent = selectedGameObject; // Add the retargeting and body tracking components at root first. - RetargetingLayer retargetingLayer = AddMainRetargetingComponents(mainParent); + RetargetingLayer retargetingLayer = AddMainRetargetingComponents(mainParent, isFullBody); GameObject rigObject; RigBuilder rigBuilder; (rigBuilder, rigObject) = AddBasicAnimationRiggingComponents(mainParent); + // disable rig builder. in case we need to set up any constraints, we might need to enable + // the animator. but we don't want the rig to evaluate any constraints, so keep the rig disabled + // until the character has been set up. + rigBuilder.enabled = false; + List constraintMonos = new List(); RetargetingAnimationConstraint retargetConstraint = AddRetargetingConstraint(rigObject, retargetingLayer); retargetingLayer.RetargetingConstraint = retargetConstraint; + constraintMonos.Add(retargetConstraint); + + Animator animatorComp = selectedGameObject.GetComponent(); + + // Body deformation. + if (addConstraints) + { + if (isFullBody) + { + RetargetedBoneTarget[] spineBoneTargets = AddSpineBoneTargets(rigObject, animatorComp); + FullBodyDeformationConstraint deformationConstraint = + AddFullBodyDeformationConstraint(rigObject, animatorComp, spineBoneTargets); + + AddRetargetedFullBodyBoneTargetComponent(selectedGameObject, spineBoneTargets); + + // enable only to get the transform, then disable. + // if blendhand constraint is added on a enabled gameobject, errors might be thrown + // due to Awake being run too early. + animatorComp.gameObject.SetActive(true); + var headTransform = animatorComp.GetBoneTransform(HumanBodyBones.Head); + animatorComp.gameObject.SetActive(false); + AddHandBlendConstraintFullBody(selectedGameObject, null, + retargetingLayer, OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_LeftHandWrist, + headTransform); + + AddHandBlendConstraintFullBody(selectedGameObject, null, + retargetingLayer, OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_RightHandWrist, + headTransform); + } + else + { + RetargetedBoneTarget[] spineBoneTargets = AddSpineBoneTargets(rigObject, animatorComp); + DeformationConstraint deformationConstraint = + AddDeformationConstraint(rigObject, animatorComp, spineBoneTargets); + constraintMonos.Add(deformationConstraint); + + AddRetargetedBoneTargetComponent(selectedGameObject, spineBoneTargets); + + // enable only to get the transform, then disable. + // if blendhand constraint is added on a enabled gameobject, errors might be thrown + // due to Awake being run too early. + animatorComp.gameObject.SetActive(true); + var headTransform = animatorComp.GetBoneTransform(HumanBodyBones.Head); + animatorComp.gameObject.SetActive(false); + AddHandBlendConstraint(selectedGameObject, + retargetingLayer, OVRHumanBodyBonesMappings.BodyTrackingBoneId.Body_LeftHandWrist, + headTransform); + AddHandBlendConstraint(selectedGameObject, + retargetingLayer, OVRHumanBodyBonesMappings.BodyTrackingBoneId.Body_RightHandWrist, + headTransform); + } + } // Add final components to tie everything together. AddAnimationRiggingLayer(mainParent, retargetingLayer, rigBuilder, - retargetConstraint, retargetingLayer); + constraintMonos.ToArray(), retargetingLayer); + + // Add retargeting processors to the retargeting layer. + AddCorrectBonesRetargetingProcessor(retargetingLayer); + AddCorrectHandRetargetingProcessor(retargetingLayer, Handedness.Left); + AddCorrectHandRetargetingProcessor(retargetingLayer, Handedness.Right); + + if (isFullBody) + { + animatorComp.gameObject.SetActive(true); + var leftHand = animatorComp.GetBoneTransform(HumanBodyBones.LeftHand); + var rightHand = animatorComp.GetBoneTransform(HumanBodyBones.RightHand); + animatorComp.gameObject.SetActive(false); + AddFullBodyHandDeformation(selectedGameObject, + animatorComp, retargetingLayer, leftHand, + rightHand); + } + + rigBuilder.enabled = true; selectedGameObject.SetActive(true); } - private static RetargetingLayer AddMainRetargetingComponents(GameObject mainParent) + private static RetargetingLayer AddMainRetargetingComponents( + GameObject mainParent, + bool isFullBody) { RetargetingLayer retargetingLayer = mainParent.GetComponent(); if (!retargetingLayer) { retargetingLayer = mainParent.AddComponent(); } + retargetingLayer.EnableTrackingByProxy = true; + + var bodySectionToPosition = + typeof(OVRUnityHumanoidSkeletonRetargeter).GetField( + isFullBody ? "_fullBodySectionToPosition" : "_bodySectionToPosition", + BindingFlags.Instance | BindingFlags.NonPublic); + + if (bodySectionToPosition != null) + { + if (isFullBody) + { + bodySectionToPosition.SetValue(retargetingLayer, new[] + { + OVRHumanBodyBonesMappings.BodySection.LeftArm, + OVRHumanBodyBonesMappings.BodySection.RightArm, + OVRHumanBodyBonesMappings.BodySection.LeftHand, + OVRHumanBodyBonesMappings.BodySection.RightHand, + OVRHumanBodyBonesMappings.BodySection.Hips, + OVRHumanBodyBonesMappings.BodySection.Back, + OVRHumanBodyBonesMappings.BodySection.Neck, + OVRHumanBodyBonesMappings.BodySection.Head, + OVRHumanBodyBonesMappings.BodySection.LeftLeg, + OVRHumanBodyBonesMappings.BodySection.LeftFoot, + OVRHumanBodyBonesMappings.BodySection.RightLeg, + OVRHumanBodyBonesMappings.BodySection.RightFoot + }); + } + else + { + bodySectionToPosition.SetValue(retargetingLayer, new[] + { + OVRHumanBodyBonesMappings.BodySection.LeftArm, + OVRHumanBodyBonesMappings.BodySection.RightArm, + OVRHumanBodyBonesMappings.BodySection.LeftHand, + OVRHumanBodyBonesMappings.BodySection.RightHand, + OVRHumanBodyBonesMappings.BodySection.Hips, + OVRHumanBodyBonesMappings.BodySection.Neck, + OVRHumanBodyBonesMappings.BodySection.Head + }); + } + } OVRBody bodyComp = mainParent.GetComponent(); if (!bodyComp) @@ -150,6 +286,13 @@ private static RetargetingLayer AddMainRetargetingComponents(GameObject mainPare bodyComp = mainParent.AddComponent(); } + typeof(RetargetingLayer).GetField( + "_skeletonType", BindingFlags.Instance | BindingFlags.NonPublic)?.SetValue( + retargetingLayer, isFullBody ? OVRSkeleton.SkeletonType.FullBody : OVRSkeleton.SkeletonType.Body); + typeof(OVRBody).GetField( + "_providedSkeletonType", BindingFlags.Instance | BindingFlags.NonPublic)?.SetValue( + bodyComp, isFullBody ? OVRPlugin.BodyJointSet.FullBody : OVRPlugin.BodyJointSet.UpperBody); + return retargetingLayer; } @@ -168,7 +311,7 @@ private static (RigBuilder, GameObject) AddBasicAnimationRiggingComponents(GameO if (!rigBuilder) { rigBuilder = mainParent.AddComponent(); - rigBuilder.layers = new System.Collections.Generic.List + rigBuilder.layers = new List { new RigLayer(rigComponent, true) }; @@ -210,9 +353,250 @@ private static RetargetingAnimationConstraint AddRetargetingConstraint( return retargetConstraint; } + private static RetargetedBoneTarget[] AddSpineBoneTargets(GameObject rigObject, + Animator animator) + { + var boneTargets = new List(); + Transform hipsTarget = AddSpineTarget(rigObject, "HipsTarget", + animator.GetBoneTransform(HumanBodyBones.Hips)); + Transform spineLowerTarget = AddSpineTarget(rigObject, "SpineLowerTarget", + animator.GetBoneTransform(HumanBodyBones.Spine)); + Transform spineUpperTarget = AddSpineTarget(rigObject, "SpineUpperTarget", + animator.GetBoneTransform(HumanBodyBones.Chest)); + Transform chestTarget = AddSpineTarget(rigObject, "ChestTarget", + animator.GetBoneTransform(HumanBodyBones.UpperChest)); + Transform neckTarget = AddSpineTarget(rigObject, "NeckTarget", + animator.GetBoneTransform(HumanBodyBones.Neck)); + Transform headTarget = AddSpineTarget(rigObject, "HeadTarget", + animator.GetBoneTransform(HumanBodyBones.Head)); + + Tuple[] bonesToRetarget = + { + new(OVRSkeleton.BoneId.Body_Hips, hipsTarget), + new(OVRSkeleton.BoneId.Body_SpineLower, spineLowerTarget), + new(OVRSkeleton.BoneId.Body_SpineUpper, spineUpperTarget), + new(OVRSkeleton.BoneId.Body_Chest, chestTarget), + new(OVRSkeleton.BoneId.Body_Neck, neckTarget), + new(OVRSkeleton.BoneId.Body_Head, headTarget), + }; + + foreach (var boneToRetarget in bonesToRetarget) + { + RetargetedBoneTarget boneRTTarget = new RetargetedBoneTarget(); + boneRTTarget.BoneId = boneToRetarget.Item1; + boneRTTarget.Target = boneToRetarget.Item2; + boneRTTarget.HumanBodyBone = OVRHumanBodyBonesMappings.BoneIdToHumanBodyBone[boneRTTarget.BoneId]; + boneTargets.Add(boneRTTarget); + } + return boneTargets.ToArray(); + } + + private static Transform AddSpineTarget(GameObject mainParent, + string nameOfTarget, Transform targetTransform = null) + { + Transform spineTarget = + mainParent.transform.FindChildRecursive(nameOfTarget); + if (spineTarget == null) + { + GameObject spineTargetObject = + new GameObject(nameOfTarget); + spineTargetObject.transform.SetParent(mainParent.transform, true); + spineTarget = spineTargetObject.transform; + } + + if (targetTransform != null) + { + spineTarget.position = targetTransform.position; + spineTarget.rotation = targetTransform.rotation; + spineTarget.localScale = targetTransform.localScale; + } + else + { + spineTarget.localPosition = Vector3.zero; + spineTarget.localRotation = Quaternion.identity; + spineTarget.localScale = Vector3.one; + } + return spineTarget; + } + + private static DeformationConstraint AddDeformationConstraint( + GameObject rigObject, Animator animator, RetargetedBoneTarget[] spineBoneTargets) + { + DeformationConstraint deformationConstraint; + GameObject deformationConstraintObject = + new GameObject("Deformation"); + deformationConstraint = + deformationConstraintObject.AddComponent(); + + deformationConstraintObject.transform.SetParent(rigObject.transform, false); + deformationConstraintObject.transform.localPosition = Vector3.zero; + deformationConstraintObject.transform.localRotation = Quaternion.identity; + deformationConstraintObject.transform.localScale = Vector3.one; + + foreach (var spineBoneTarget in spineBoneTargets) + { + spineBoneTarget.Target.SetParent(deformationConstraint.transform, false); + } + + deformationConstraint.data.SpineTranslationCorrectionTypeField + = DeformationData.SpineTranslationCorrectionType.AccurateHipsAndHead; + deformationConstraint.data.SpineLowerAlignmentWeight = 1.0f; + deformationConstraint.data.SpineUpperAlignmentWeight = 0.5f; + deformationConstraint.data.ChestAlignmentWeight = 0.0f; + deformationConstraint.data.LeftShoulderWeight = 0.75f; + deformationConstraint.data.RightShoulderWeight = 0.75f; + deformationConstraint.data.LeftArmWeight = 1.0f; + deformationConstraint.data.RightArmWeight = 1.0f; + deformationConstraint.data.LeftHandWeight = 1.0f; + deformationConstraint.data.RightHandWeight = 1.0f; + + // enable to find bones + animator.gameObject.SetActive(true); + // set up deformation but prevent it from running any code at runtime + deformationConstraint.enabled = false; + deformationConstraint.data.AssignAnimator(animator); + deformationConstraint.data.SetUpLeftArmData(); + deformationConstraint.data.SetUpRightArmData(); + deformationConstraint.data.SetUpHipsToHeadBones(); + deformationConstraint.data.SetUpHipsToHeadBoneTargets(deformationConstraint.transform); + deformationConstraint.data.SetUpBonePairs(); + deformationConstraint.data.InitializeStartingScale(); + animator.gameObject.SetActive(false); + // re-enable deformation so that when the animator game object is turned on, it will activate + deformationConstraint.enabled = true; + + return deformationConstraint; + } + + private static FullBodyDeformationConstraint AddFullBodyDeformationConstraint( + GameObject rigObject, Animator animator, RetargetedBoneTarget[] spineBoneTargets) + { + FullBodyDeformationConstraint deformationConstraint = null; + + GameObject deformationConstraintObject = + new GameObject("Deformation"); + deformationConstraint = + deformationConstraintObject.AddComponent(); + + deformationConstraintObject.transform.SetParent(rigObject.transform, false); + deformationConstraintObject.transform.localPosition = Vector3.zero; + deformationConstraintObject.transform.localRotation = Quaternion.identity; + deformationConstraintObject.transform.localScale = Vector3.one; + + foreach (var spineBoneTarget in spineBoneTargets) + { + spineBoneTarget.Target.SetParent(deformationConstraint.transform, false); + } + + deformationConstraint.data.SpineTranslationCorrectionTypeField + = FullBodyDeformationData.SpineTranslationCorrectionType.AccurateHipsAndHead; + deformationConstraint.data.SpineLowerAlignmentWeight = 1.0f; + deformationConstraint.data.SpineUpperAlignmentWeight = 0.5f; + deformationConstraint.data.ChestAlignmentWeight = 0.0f; + deformationConstraint.data.LeftShoulderWeight = 0.75f; + deformationConstraint.data.RightShoulderWeight = 0.75f; + deformationConstraint.data.LeftArmWeight = 1.0f; + deformationConstraint.data.RightArmWeight = 1.0f; + deformationConstraint.data.LeftHandWeight = 1.0f; + deformationConstraint.data.RightHandWeight = 1.0f; + deformationConstraint.data.LeftLegWeight = 1.0f; + deformationConstraint.data.RightLegWeight = 1.0f; + deformationConstraint.data.LeftToesWeight = 1.0f; + deformationConstraint.data.RightToesWeight = 1.0f; + deformationConstraint.data.AlignFeetWeight = 0.75f; + + // enable to find bones + animator.gameObject.SetActive(true); + // set up deformation but prevent it from running any code at runtime + deformationConstraint.enabled = false; + deformationConstraint.data.AssignAnimator(animator); + deformationConstraint.data.SetUpLeftArmData(); + deformationConstraint.data.SetUpRightArmData(); + deformationConstraint.data.SetUpLeftLegData(); + deformationConstraint.data.SetUpRightLegData(); + deformationConstraint.data.SetUpHipsAndHeadBones(); + deformationConstraint.data.SetUpBonePairs(); + deformationConstraint.data.SetUpBoneTargets(deformationConstraint.transform); + deformationConstraint.data.InitializeStartingScale(); + animator.gameObject.SetActive(false); + // re-enable deformation so that when the animator game object is turned on, it will activate + deformationConstraint.enabled = true; + + return deformationConstraint; + } + + private static RetargetedBoneTargets AddRetargetedBoneTargetComponent(GameObject mainParent, + RetargetedBoneTarget[] boneTargetsArray) + { + RetargetedBoneTargets retargetedBoneTargets = + mainParent.AddComponent(); + + retargetedBoneTargets.AutoAddTo = mainParent.GetComponent(); + retargetedBoneTargets.RetargetedBoneTargetsArray = boneTargetsArray; + return retargetedBoneTargets; + } + + private static FullBodyRetargetedBoneTargets AddRetargetedFullBodyBoneTargetComponent(GameObject mainParent, + RetargetedBoneTarget[] boneTargetsArray) + { + FullBodyRetargetedBoneTargets retargetedBoneTargets = + mainParent.AddComponent(); + + retargetedBoneTargets.AutoAdd = mainParent.GetComponent(); + retargetedBoneTargets.RetargetedBoneTargets = boneTargetsArray; + + return retargetedBoneTargets; + } + + private static FullBodyRetargetedBoneTargets AddFullBodyRetargetedBoneTargetComponent(GameObject mainParent, + RetargetedBoneTarget[] boneTargetsArray) + { + FullBodyRetargetedBoneTargets retargetedBoneTargets = + mainParent.AddComponent(); + + retargetedBoneTargets.AutoAdd = mainParent.GetComponent(); + retargetedBoneTargets.RetargetedBoneTargets = boneTargetsArray; + + return retargetedBoneTargets; + } + + private static BlendHandConstraints AddHandBlendConstraint( + GameObject mainParent, RetargetingLayer retargetingLayer, + OVRHumanBodyBonesMappings.BodyTrackingBoneId boneIdToTest, Transform headTransform) + { + BlendHandConstraints blendConstraint = + mainParent.AddComponent(); + + blendConstraint.Constraints = null; + blendConstraint.RetargetingLayerComp = retargetingLayer; + blendConstraint.BoneIdToTest = boneIdToTest; + blendConstraint.HeadTransform = headTransform; + blendConstraint.AutoAddTo = mainParent.GetComponent(); + blendConstraint.BlendCurve = new AnimationCurve(new Keyframe(0, 0), new Keyframe(1, 1)); + + return blendConstraint; + } + + private static BlendHandConstraintsFullBody AddHandBlendConstraintFullBody( + GameObject mainParent, MonoBehaviour[] constraints, RetargetingLayer retargetingLayer, + OVRHumanBodyBonesMappings.FullBodyTrackingBoneId boneIdToTest, Transform headTransform) + { + BlendHandConstraintsFullBody blendConstraint = + mainParent.AddComponent(); + + blendConstraint.Constraints = null; + blendConstraint.RetargetingLayerComp = retargetingLayer; + blendConstraint.BoneIdToTest = boneIdToTest; + blendConstraint.HeadTransform = headTransform; + blendConstraint.AutoAddTo = mainParent.GetComponent(); + blendConstraint.BlendCurve = new AnimationCurve(new Keyframe(0, 0), new Keyframe(1, 1)); + + return blendConstraint; + } + private static void AddAnimationRiggingLayer(GameObject mainParent, OVRSkeleton skeletalComponent, RigBuilder rigBuilder, - MonoBehaviour constraintComponent, + MonoBehaviour[] constraintComponents, RetargetingLayer retargetingLayer) { AnimationRigSetup rigSetup = mainParent.GetComponent(); @@ -225,14 +609,81 @@ private static void AddAnimationRiggingLayer(GameObject mainParent, rigSetup.Skeleton = skeletalComponent; rigSetup.AnimatorComp = animatorComponent; rigSetup.RigbuilderComp = rigBuilder; - if (constraintComponent != null) + if (constraintComponents != null) { - rigSetup.AddSkeletalConstraint(constraintComponent); + foreach (var constraintComponent in constraintComponents) + { + rigSetup.AddSkeletalConstraint(constraintComponent); + } } rigSetup.RebindAnimator = true; rigSetup.ReEnableRig = true; rigSetup.RetargetingLayerComp = retargetingLayer; + rigSetup.CheckSkeletalUpdatesByProxy = true; + } + + private static void AddCorrectBonesRetargetingProcessor(RetargetingLayer retargetingLayer) + { + bool needCorrectBones = true; + foreach (var processor in retargetingLayer.RetargetingProcessors) + { + if (processor as RetargetingProcessorCorrectBones != null) + { + needCorrectBones = false; + } + } + + if (needCorrectBones) + { + var retargetingProcessorCorrectBones = ScriptableObject.CreateInstance(); + retargetingProcessorCorrectBones.name = "CorrectBones"; + retargetingLayer.AddRetargetingProcessor(retargetingProcessorCorrectBones); + } + } + + private static void AddCorrectHandRetargetingProcessor(RetargetingLayer retargetingLayer, Handedness handedness) + { + bool needCorrectHand = true; + foreach (var processor in retargetingLayer.RetargetingProcessors) + { + var correctHand = processor as RetargetingProcessorCorrectHand; + if (correctHand != null) + { + if (correctHand.Handedness == handedness) + { + needCorrectHand = false; + } + } + } + + if (needCorrectHand) + { + var retargetingProcessorCorrectHand = ScriptableObject.CreateInstance(); + var handednessString = handedness == Handedness.Left ? "Left" : "Right"; + retargetingProcessorCorrectHand.Handedness = handedness; + retargetingProcessorCorrectHand.HandIKType = RetargetingProcessorCorrectHand.IKType.CCDIK; + retargetingProcessorCorrectHand.name = $"Correct{handednessString}Hand"; + retargetingLayer.AddRetargetingProcessor(retargetingProcessorCorrectHand); + } + } + + private static void AddFullBodyHandDeformation(GameObject mainParent, + Animator animatorComp, OVRSkeleton skeletalComponent, Transform leftHand, + Transform rightHand) + { + FullBodyHandDeformation fullBodyHandDeformation = + mainParent.AddComponent(); + + fullBodyHandDeformation.AnimatorComp = animatorComp; + fullBodyHandDeformation.Skeleton = skeletalComponent; + fullBodyHandDeformation.LeftHand = leftHand; + fullBodyHandDeformation.RightHand = rightHand; + fullBodyHandDeformation.FingerOffsets = new FullBodyHandDeformation.FingerOffset[0]; + // enable animator to be able to calculate finger data + animatorComp.gameObject.SetActive(true); + fullBodyHandDeformation.CalculateFingerData(); + animatorComp.gameObject.SetActive(false); } private static void ValidateGameObjectForAnimationRigging(GameObject go) diff --git a/Runtime/Scripts/Utils/AnimatorBoneVisualizer.cs b/Runtime/Scripts/Utils/AnimatorBoneVisualizer.cs index 8a074842..8751a929 100644 --- a/Runtime/Scripts/Utils/AnimatorBoneVisualizer.cs +++ b/Runtime/Scripts/Utils/AnimatorBoneVisualizer.cs @@ -3,6 +3,7 @@ using Oculus.Movement.AnimationRigging; using UnityEngine; using UnityEngine.Assertions; +using static OVRUnityHumanoidSkeletonRetargeter; namespace Oculus.Movement.Utils { @@ -41,7 +42,7 @@ protected override int GetBoneCount() /// protected override BoneTuple GetBoneTuple(int currentBone) { - var boneTuple = CustomMappings.BoneToJointPair[(HumanBodyBones)currentBone]; + var boneTuple = OVRHumanBodyBonesMappings.BoneToJointPair[(HumanBodyBones)currentBone]; return new BoneTuple((int)boneTuple.Item1, (int)boneTuple.Item2); } @@ -70,7 +71,7 @@ protected override bool TryGetBoneTransforms(BoneTuple tupleItem, /// protected override AvatarMaskBodyPart GetAvatarBodyPart(int currentBone) { - return CustomMappings.HumanBoneToAvatarBodyPart[(HumanBodyBones)currentBone]; + return BoneMappingsExtension.HumanBoneToAvatarBodyPart[(HumanBodyBones)currentBone]; } /// diff --git a/Runtime/Scripts/Utils/BodyTrackingFidelityToggle.cs b/Runtime/Scripts/Utils/BodyTrackingFidelityToggle.cs new file mode 100644 index 00000000..0d6844fc --- /dev/null +++ b/Runtime/Scripts/Utils/BodyTrackingFidelityToggle.cs @@ -0,0 +1,57 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using UnityEngine; +using UnityEngine.Assertions; +using static OVRPlugin; + +namespace Oculus.Movement.Utils +{ + /// + /// Allows setting body tracking fidelity. + /// + public class BodyTrackingFidelityToggle : MonoBehaviour + { + /// + /// The current body tracking fidelity set. + /// + [SerializeField] + [Tooltip(BodyTrackingFidelityToggleTooltips.CurrentFidelity)] + protected BodyTrackingFidelity2 _currentFidelity = BodyTrackingFidelity2.Low; + /// + /// The text to update after body tracking fidelity is changed. + /// + [SerializeField] + [Tooltip(BodyTrackingFidelityToggleTooltips.WorldText)] + protected TMPro.TextMeshPro _worldText; + + private const string _LOW_FIDELITY = "Three Point BT"; + private const string _HIGH_FIDELITY = "IOBT"; + + private void Awake() + { + Assert.IsNotNull(_worldText); + } + + private void Start() + { + EnforceFidelity(); + } + + /// + /// Changes the body tracking fidelity from low to high or vice versa. + /// + public void SwapFidelity() + { + _currentFidelity = _currentFidelity == BodyTrackingFidelity2.Low ? + BodyTrackingFidelity2.High : BodyTrackingFidelity2.Low; + EnforceFidelity(); + } + + private void EnforceFidelity() + { + OVRPlugin.RequestBodyTrackingFidelity(_currentFidelity); + _worldText.text = _currentFidelity == BodyTrackingFidelity2.Low ? + _LOW_FIDELITY : _HIGH_FIDELITY; + } + } +} diff --git a/Runtime/Scripts/Utils/BodyTrackingFidelityToggle.cs.meta b/Runtime/Scripts/Utils/BodyTrackingFidelityToggle.cs.meta new file mode 100644 index 00000000..7da8f7b1 --- /dev/null +++ b/Runtime/Scripts/Utils/BodyTrackingFidelityToggle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0f0c3d53485cacb428310b4c5c3d6d9b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Utils/BoneVisualizer.cs b/Runtime/Scripts/Utils/BoneVisualizer.cs index 78a829f9..3b4f0ab4 100644 --- a/Runtime/Scripts/Utils/BoneVisualizer.cs +++ b/Runtime/Scripts/Utils/BoneVisualizer.cs @@ -279,9 +279,10 @@ public CustomBoneVisualData() { } /// Copy constructor /// /// - public CustomBoneVisualData(CustomBoneVisualData original) { + public CustomBoneVisualData(CustomBoneVisualData original) + { BoneTuples = new List(original.BoneTuples.Count); - for(int i = 0; i < original.BoneTuples.Count; ++i) + for (int i = 0; i < original.BoneTuples.Count; ++i) { BoneTuples.Add(new BoneTuple(original.BoneTuples[i])); } @@ -415,7 +416,7 @@ public void Initialize(int jointCount) [SerializeField] [Tooltip(BoneVisualizerTooltips.BoneVisualData)] [Interaction.ConditionalHide("_visualizationGuideType", 1)] - [ContextMenuItem(nameof(UseStandardBones),nameof(UseStandardBones))] + [ContextMenuItem(nameof(UseStandardBones), nameof(UseStandardBones))] protected CustomBoneVisualData _customBoneVisualData; /// @@ -669,7 +670,7 @@ protected bool ShouldVisualizeJoint(int bone) private void VisualizeBoneLines() { - if(!IsShowingLines) + if (!IsShowingLines) { foreach (var tupleItem in _customBoneVisualData.BoneTuples) { @@ -722,7 +723,9 @@ protected bool GetBoneTransforms(BoneTuple tupleItem, { string edge = $"{tupleItem.FirstBone}-{tupleItem.SecondBone}"; int i = _customBoneVisualData.BoneTuples.IndexOf(tupleItem); - Debug.LogWarning($"Cannot find transform for tuple {edge}\n" + + Debug.LogWarning($"Cannot find transform for tuple {edge}, " + + $"first joint null? {(firstJoint != null ? "no" : "yes")}, " + + $"second joint null? {(secondJoint != null ? "no" : "yes")}.\n" + $"Hiding {this}." + $"{nameof(_customBoneVisualData)}." + $"{nameof(_customBoneVisualData.BoneTuples)}[{i}]:" + diff --git a/Runtime/Scripts/Utils/BoneVisualizerLineColor.cs b/Runtime/Scripts/Utils/BoneVisualizerLineColor.cs index ce19c4fc..3ce8739b 100644 --- a/Runtime/Scripts/Utils/BoneVisualizerLineColor.cs +++ b/Runtime/Scripts/Utils/BoneVisualizerLineColor.cs @@ -1,6 +1,7 @@ // Copyright (c) Meta Platforms, Inc. and affiliates. - + using UnityEngine; +using UnityEngine.Assertions; namespace Oculus.Movement.Utils { @@ -67,6 +68,7 @@ private void Awake() Debug.LogWarning($"{nameof(_boneVisualizer)} not initialized, auto-populating"); _boneVisualizer = GetComponent(); } + Assert.IsNotNull(_boneVisualizer); _boneVisualizer.OnNewLine += SetLineColor; } diff --git a/Runtime/Scripts/Utils/FullBodyOVRSkeletonBoneVisualizer.cs b/Runtime/Scripts/Utils/FullBodyOVRSkeletonBoneVisualizer.cs new file mode 100644 index 00000000..a4ac14c2 --- /dev/null +++ b/Runtime/Scripts/Utils/FullBodyOVRSkeletonBoneVisualizer.cs @@ -0,0 +1,109 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using Oculus.Movement.AnimationRigging; +using UnityEngine; +using UnityEngine.Assertions; +using static OVRUnityHumanoidSkeletonRetargeter; + +namespace Oculus.Movement.Utils +{ + /// + /// Allows visualizing bones found in an OVRSkeleton component for full-body characters. + /// + [DefaultExecutionOrder(230)] + public class FullBodyOVRSkeletonBoneVisualizer + : BoneVisualizer + { + /// + /// OVRSkeleton component to visualize bones for. + /// + [SerializeField] + [Tooltip(OVRSkeletonBoneVisualizerTooltips.OVRSkeletonComp)] + protected OVRSkeleton _ovrSkeletonComp; + + /// + /// Whether to visualize bind pose or not. + /// + [SerializeField] + [Tooltip(OVRSkeletonBoneVisualizerTooltips.VisualizeBindPose)] + protected bool _visualizeBindPose = false; + + /// + protected override void Awake() + { + base.Awake(); + } + + protected override void Start() + { + base.Start(); + Assert.IsNotNull(_ovrSkeletonComp); + } + + /// + protected override int GetBoneCount() + { + return (int)OVRSkeleton.BoneId.FullBody_End; + } + + /// + protected override BoneTuple GetBoneTuple(int currentBone) + { + // avoid visualizing root to hips, since we have legs now + if ((OVRSkeleton.BoneId)currentBone == OVRSkeleton.BoneId.FullBody_Root) + { + currentBone = (int)OVRSkeleton.BoneId.FullBody_Hips; + } + // TODO: figure out how to visualize twist joints in foot, + // OVRHumanBodeBonesMapping does not have it right now + if (!OVRHumanBodyBonesMappings.FullBoneIdToJointPair.ContainsKey((OVRSkeleton.BoneId)currentBone)) + { + currentBone = (int)OVRSkeleton.BoneId.FullBody_Hips; + } + + var boneTuple = OVRHumanBodyBonesMappings.FullBoneIdToJointPair[(OVRSkeleton.BoneId)currentBone]; + return new BoneTuple((int)boneTuple.Item1, (int)boneTuple.Item2); + } + + /// + protected override Transform GetBoneTransform(int currentBone) + { + return RiggingUtilities.FindBoneTransformFromSkeleton(_ovrSkeletonComp, + (OVRSkeleton.BoneId)currentBone, _visualizeBindPose); + } + + /// + protected override bool TryGetBoneTransforms(BoneTuple tupleItem, + out Transform firstJoint, out Transform secondJoint) + { + if (!_ovrSkeletonComp.IsDataValid) + { + firstJoint = secondJoint = null; + return false; + } + + firstJoint = RiggingUtilities.FindBoneTransformFromSkeleton( + _ovrSkeletonComp, + (OVRSkeleton.BoneId)tupleItem.FirstBoneId, + _visualizeBindPose); + secondJoint = (tupleItem.SecondBoneId >= (int)OVRHumanBodyBonesMappings.FullBodyTrackingBoneId.FullBody_End) + ? firstJoint.GetChild(0) + : RiggingUtilities.FindBoneTransformFromSkeleton(_ovrSkeletonComp, + (OVRSkeleton.BoneId)tupleItem.SecondBoneId, _visualizeBindPose); + return true; + } + + /// + protected override AvatarMaskBodyPart GetAvatarBodyPart(int currentBone) + { + return BoneMappingsExtension.OVRSkeletonFullBodyBoneIdToAvatarBodyPart[(OVRSkeleton.BoneId)currentBone]; + } + + /// + public override void SetBody(GameObject body) + { + _ovrSkeletonComp = body.GetComponent(); + ResetBoneVisuals(); + } + } +} diff --git a/Runtime/Scripts/Utils/FullBodyOVRSkeletonBoneVisualizer.cs.meta b/Runtime/Scripts/Utils/FullBodyOVRSkeletonBoneVisualizer.cs.meta new file mode 100644 index 00000000..6bb8954c --- /dev/null +++ b/Runtime/Scripts/Utils/FullBodyOVRSkeletonBoneVisualizer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f7ef839cc9cacff4091af449079bbce3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Utils/OVRSkeletonBoneVisualizer.cs b/Runtime/Scripts/Utils/OVRSkeletonBoneVisualizer.cs index 25342fdf..9b4c262c 100644 --- a/Runtime/Scripts/Utils/OVRSkeletonBoneVisualizer.cs +++ b/Runtime/Scripts/Utils/OVRSkeletonBoneVisualizer.cs @@ -3,6 +3,7 @@ using Oculus.Movement.AnimationRigging; using UnityEngine; using UnityEngine.Assertions; +using static OVRUnityHumanoidSkeletonRetargeter; namespace Oculus.Movement.Utils { @@ -11,7 +12,7 @@ namespace Oculus.Movement.Utils /// [DefaultExecutionOrder(230)] public class OVRSkeletonBoneVisualizer - : BoneVisualizer + : BoneVisualizer { /// /// OVRSkeleton component to visualize bones for. @@ -48,7 +49,7 @@ protected override int GetBoneCount() /// protected override BoneTuple GetBoneTuple(int currentBone) { - var boneTuple = CustomMappings.OVRSkeletonBoneIdToJointPair[(OVRSkeleton.BoneId)currentBone]; + var boneTuple = OVRHumanBodyBonesMappings.BoneIdToJointPair[(OVRSkeleton.BoneId)currentBone]; return new BoneTuple((int)boneTuple.Item1, (int)boneTuple.Item2); } @@ -72,7 +73,7 @@ protected override bool TryGetBoneTransforms(BoneTuple tupleItem, _ovrSkeletonComp, (OVRSkeleton.BoneId)tupleItem.FirstBoneId, _visualizeBindPose); - secondJoint = (tupleItem.SecondBoneId >= (int)CustomMappings.BodyTrackingBoneId.Body_End) + secondJoint = (tupleItem.SecondBoneId >= (int)OVRHumanBodyBonesMappings.BodyTrackingBoneId.Body_End) ? firstJoint.GetChild(0) : RiggingUtilities.FindBoneTransformFromSkeleton(_ovrSkeletonComp, (OVRSkeleton.BoneId)tupleItem.SecondBoneId, _visualizeBindPose); @@ -82,7 +83,7 @@ protected override bool TryGetBoneTransforms(BoneTuple tupleItem, /// protected override AvatarMaskBodyPart GetAvatarBodyPart(int currentBone) { - return CustomMappings.OVRSkeletonBoneIdToAvatarBodyPart[(OVRSkeleton.BoneId)currentBone]; + return BoneMappingsExtension.OVRSkeletonBoneIdToAvatarBodyPart[(OVRSkeleton.BoneId)currentBone]; } /// diff --git a/Runtime/Scripts/Utils/SuggestBodyTrackingCalibrationButton.cs b/Runtime/Scripts/Utils/SuggestBodyTrackingCalibrationButton.cs new file mode 100644 index 00000000..1a09e746 --- /dev/null +++ b/Runtime/Scripts/Utils/SuggestBodyTrackingCalibrationButton.cs @@ -0,0 +1,78 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +using UnityEngine; +using UnityEngine.Assertions; +using static OVRPlugin; + +namespace Oculus.Movement.Utils +{ + /// + /// Calls calibration to allow setting one's height. + /// + public class SuggestBodyTrackingCalibrationButton : MonoBehaviour + { + /// + /// The text to modify once height is modified. + /// + [SerializeField] + [Tooltip(SuggestBodyTrackingCalibrationButtonTooltips.WorldText)] + protected TMPro.TextMeshPro _worldText; + /// + /// The height to set in meters. + /// + [SerializeField] + [Tooltip(SuggestBodyTrackingCalibrationButtonTooltips.Height)] + protected float _height = 1.80f; + /// + /// Allows calibration on startup. + /// + [SerializeField] + [Tooltip(SuggestBodyTrackingCalibrationButtonTooltips.CalibrateOnStartup)] + protected bool _calibrateOnStartup = false; + + private const string _BAD_CALIBRATION_TEXT = "Calibration error!"; + + private void Awake() + { + Assert.IsNotNull(_worldText); + Assert.IsTrue(_height > Mathf.Epsilon, "Height must be greater than 0 meters."); + + if (_calibrateOnStartup) + { + CalibrateHeight(); + } + } + + /// + /// Calibrates height to the value specified by this script's field. + /// + public void CalibrateHeight() + { + BodyTrackingCalibrationInfo calibrationInfo; + + calibrationInfo.BodyHeight = _height; + bool calibrationResult = OVRPlugin.SuggestBodyTrackingCalibrationOverride(calibrationInfo); + + UpdateText(calibrationResult); + } + + private void UpdateText(bool calibrationResult) + { + if (!calibrationResult) + { + _worldText.text = _BAD_CALIBRATION_TEXT; + return; + } + + _worldText.text = $"Calibrated.\nHeight: {_height} m, imperial: {GetHeightImperial()}."; + } + + private string GetHeightImperial() + { + const float feetPerMeter = 3.28084f; + float feet = _height * feetPerMeter; + float inches = 12.0f * (feet - (float)System.Math.Floor(feet)); + return $"{(int)feet}'{(int)inches}''"; + } + } +} diff --git a/Runtime/Scripts/Utils/SuggestBodyTrackingCalibrationButton.cs.meta b/Runtime/Scripts/Utils/SuggestBodyTrackingCalibrationButton.cs.meta new file mode 100644 index 00000000..be28beb1 --- /dev/null +++ b/Runtime/Scripts/Utils/SuggestBodyTrackingCalibrationButton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b740bb2e35294494f9eeddeba5e8fb8b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/Models/Aura/Legacy.meta b/Samples/Models/Aura/Legacy.meta new file mode 100644 index 00000000..10f664c8 --- /dev/null +++ b/Samples/Models/Aura/Legacy.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6b603c01cb0cb47ef80d6d6e4e862ff6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/Models/Aura/Legacy/aura_rig.fbx b/Samples/Models/Aura/Legacy/aura_rig.fbx new file mode 100644 index 00000000..4f9a555d Binary files /dev/null and b/Samples/Models/Aura/Legacy/aura_rig.fbx differ diff --git a/Samples/Models/Aura/Legacy/aura_rig.fbx.meta b/Samples/Models/Aura/Legacy/aura_rig.fbx.meta new file mode 100644 index 00000000..9625ffc5 --- /dev/null +++ b/Samples/Models/Aura/Legacy/aura_rig.fbx.meta @@ -0,0 +1,1134 @@ +fileFormatVersion: 2 +guid: 97c33b5b5e467ff4982d18b3cea2fa0e +ModelImporter: + serializedVersion: 20300 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 3 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: + - boneName: Chest + humanName: Hips + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandWrist + humanName: LeftUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandWrist + humanName: RightUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinkyMeta + humanName: LeftLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinkyMeta + humanName: RightLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinkyProximal + humanName: LeftFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinkyProximal + humanName: RightFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Neck + humanName: Spine + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: Head + humanName: Chest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pedalC1_L + humanName: Neck + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pedalC2_L + humanName: Head + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pedalF1_L + humanName: LeftShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pedalD1_R + humanName: RightShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pedalF2_L + humanName: LeftUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pedalD2_R + humanName: RightUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pedalF3_L + humanName: LeftLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pedalD3_R + humanName: RightLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pedalF4_L + humanName: LeftHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pedalD4_R + humanName: RightHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftHandPinkyIntermediate + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightHandPinkyIntermediate + humanName: RightToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: pedalC4_L + humanName: LeftEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + skeleton: + - name: aura_rig(Clone) + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: geom + parentName: aura_rig(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: hands + parentName: geom + position: {x: -0, y: 0, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: head_grp + parentName: geom + position: {x: -0.000000009536743, y: 1.549946, z: 0.038412716} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: head_parts + parentName: head_grp + position: {x: 0.000000009536743, y: -1.549946, z: -0.038412716} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: eye_L_grp + parentName: head_parts + position: {x: -0.0414308, y: 1.6252791, z: 0.124241315} + rotation: {x: 0, y: -0.034899496, z: -0, w: 0.99939084} + scale: {x: 1.4441309, y: 1.4441309, z: 1.4441309} + - name: corneaL_geo + parentName: eye_L_grp + position: {x: -0.000011890424, y: -0.0000000032372087, z: 0.00017004096} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: eye_R_grp + parentName: head_parts + position: {x: 0.041456614, y: 1.6252791, z: 0.124241315} + rotation: {x: 0, y: 0.034899496, z: -0, w: 0.99939084} + scale: {x: 1.4441309, y: 1.4441309, z: 1.4441309} + - name: corneaL_geo 1 + parentName: eye_R_grp + position: {x: -0.000011890424, y: -0.0000000032372087, z: 0.00017004096} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: head_abdomen_ply + parentName: head_parts + position: {x: -0, y: 0, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mouth_ply + parentName: head_parts + position: {x: -0, y: 0, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: tentacles_ply + parentName: head_parts + position: {x: -0, y: 0, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: head_ply + parentName: head_grp + position: {x: 0.000000009536743, y: -1.549946, z: -0.038412716} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: wrists + parentName: geom + position: {x: -0, y: 0, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Root + parentName: aura_rig(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Hips + parentName: Root + position: {x: -0, y: 0.923987, z: 0} + rotation: {x: 0.5, y: -0.5, z: -0.5, w: 0.5} + scale: {x: 1, y: 1, z: 1} + - name: LeftLegUpper + parentName: Hips + position: {x: 0.025498886, y: -0.0052829897, z: 0.079869255} + rotation: {x: -0.07001962, y: -0.0576324, z: 0.9955674, w: 0.024926713} + scale: {x: 1, y: 1, z: 1} + - name: LeftLegLower + parentName: LeftLegUpper + position: {x: -0.41976497, y: -7.457412e-12, z: -1.4210854e-16} + rotation: {x: 0, y: -0, z: -0.022465961, w: 0.99974763} + scale: {x: 1, y: 1, z: 1} + - name: LeftFootAnkle + parentName: LeftLegLower + position: {x: -0.42058298, y: -2.3996404e-11, z: -2.1316282e-16} + rotation: {x: 0.9947561, y: 0.047286812, z: 0.06870718, w: -0.059190925} + scale: {x: 1, y: 1, z: 1} + - name: LeftFootBall + parentName: LeftFootAnkle + position: {x: -0.052942585, y: 0.14392811, z: -0.0000002115523} + rotation: {x: 0.7071068, y: -0.7071068, z: -4.3297806e-17, w: 4.3297806e-17} + scale: {x: 1, y: 1, z: 1} + - name: LeftFootTip + parentName: LeftFootBall + position: {x: -0.05809766, y: -2.8865798e-17, z: 0.00000021195105} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLegLowerTwist1_jnt + parentName: LeftLegLower + position: {x: -0.14999999, y: 2.6645352e-17, z: 2.9698464e-17} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLegLowerTwist2_jnt + parentName: LeftLegLower + position: {x: -0.29999998, y: 8.881784e-18, z: 3.5527136e-17} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLegLowerTwist3_jnt + parentName: LeftLegLower + position: {x: -0.42058298, y: -2.3996386e-11, z: -1.7763567e-16} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLegUpperTwist1_jnt + parentName: LeftLegUpper + position: {x: -0.14999999, y: 1.2212453e-17, z: -1.6792122e-17} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLegUpperTwist2_jnt + parentName: LeftLegUpper + position: {x: -0.29999998, y: 0, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftLegUpperTwist3_jnt + parentName: LeftLegUpper + position: {x: -0.41976497, y: -7.457412e-12, z: -1.4210854e-16} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLegUpper + parentName: Hips + position: {x: 0.025498962, y: -0.0052829897, z: -0.0798693} + rotation: {x: -0.05761964, y: 0.070019074, z: -0.024927199, w: 0.99556816} + scale: {x: 1, y: 1, z: 1} + - name: RightLegLower + parentName: RightLegUpper + position: {x: 0.41976458, y: 1.00299546e-10, z: 1.0658141e-16} + rotation: {x: 0, y: -0, z: -0.02246669, w: 0.99974763} + scale: {x: 1, y: 1, z: 1} + - name: RightFootAnkle + parentName: RightLegLower + position: {x: 0.4205833, y: 7.2067005e-11, z: 2.842171e-16} + rotation: {x: 0.9947569, y: 0.04728803, z: 0.068706885, w: -0.059178196} + scale: {x: 1, y: 1, z: 1} + - name: RightFootBall + parentName: RightFootAnkle + position: {x: 0.052658476, y: -0.14373046, z: 0.00000021875026} + rotation: {x: 0.7071068, y: -0.7071068, z: -5.143256e-16, w: 5.143256e-16} + scale: {x: 1, y: 1, z: 1} + - name: RightFootTip + parentName: RightFootBall + position: {x: 0.05824629, y: 2.160494e-15, z: -0.00000021914859} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLegLowerTwist1_jnt + parentName: RightLegLower + position: {x: 0.14999999, y: 8.881784e-18, z: -3.5527136e-17} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLegLowerTwist2_jnt + parentName: RightLegLower + position: {x: 0.29999998, y: 8.881784e-18, z: -3.5527136e-17} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLegLowerTwist3_jnt + parentName: RightLegLower + position: {x: 0.4205833, y: 7.2067005e-11, z: 2.4868996e-16} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLegUpperTwist1_jnt + parentName: RightLegUpper + position: {x: 0.14999999, y: 8.881784e-18, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLegUpperTwist2_jnt + parentName: RightLegUpper + position: {x: 0.29999998, y: 8.881784e-18, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightLegUpperTwist3_jnt + parentName: RightLegUpper + position: {x: 0.41976458, y: 1.0029955e-10, z: 1.0658141e-16} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: SpineLower + parentName: Hips + position: {x: -0.020219956, y: -0.032535676, z: -1.1714103e-17} + rotation: {x: 0, y: -2.1252826e-32, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: SpineMiddle + parentName: SpineLower + position: {x: -0.11041183, y: 0.0110380715, z: 6.5516754e-17} + rotation: {x: 0, y: -2.1252826e-32, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: SpineUpper + parentName: SpineMiddle + position: {x: -0.109367676, y: -0.025952995, z: 8.437417e-17} + rotation: {x: 0, y: -2.1252826e-32, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Chest + parentName: SpineUpper + position: {x: 0.83148897, y: -0.1138798, z: -1.3817683e-16} + rotation: {x: 0.000000029802322, y: 0.000000029802322, z: -0.04762064, w: 0.99886554} + scale: {x: 1.0000002, y: 1.0000002, z: 1.0000001} + - name: LeftShoulder + parentName: Chest + position: {x: -0.066512585, y: 0.09479429, z: 0.0282178} + rotation: {x: 0.17708462, y: 0.6600202, z: 0.22583653, w: 0.694271} + scale: {x: 1, y: 1, z: 1} + - name: LeftArmUpper + parentName: LeftShoulder + position: {x: -0.17650497, y: 4.4408918e-17, z: 8.5265126e-16} + rotation: {x: -0.093105815, y: 0.4776732, z: -0.18754953, w: 0.8532203} + scale: {x: 1, y: 1, z: 1} + - name: LeftArmLower + parentName: LeftArmUpper + position: {x: -0.25680092, y: -0.000000007970641, z: 5.684342e-16} + rotation: {x: 0.00000017136334, y: -0.000000059604638, z: -0.29681414, w: 0.95493525} + scale: {x: 0.99999994, y: 0.9999999, z: 0.99999964} + - name: LeftArmLowerTwist1_jnt + parentName: LeftArmLower + position: {x: -0.099999994, y: 0, z: -1.4210854e-16} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftArmLowerTwist2_jnt + parentName: LeftArmLower + position: {x: -0.19999999, y: -1.4210854e-16, z: -1.4210854e-16} + rotation: {x: -1.4210853e-14, y: -0, z: 1.021405e-14, w: 1} + scale: {x: 1.0000001, y: 1.0000001, z: 1.0000004} + - name: LeftArmLowerTwist3_jnt + parentName: LeftArmLower + position: {x: -0.25626543, y: 0, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandWrist + parentName: LeftArmLower + position: {x: -0.25626543, y: 0.000000011720011, z: 0} + rotation: {x: 0.66241205, y: 0.12008012, z: -0.034216613, w: 0.73866117} + scale: {x: 1, y: 1.0000007, z: 1.0000005} + - name: LeftHandIndexProximal + parentName: LeftHandWrist + position: {x: -0.09599624, y: 0.0073164543, z: -0.02355068} + rotation: {x: 0.030682534, y: 0.018855821, z: -0.04328146, w: 0.9984137} + scale: {x: 1, y: 1.0000006, z: 1.0000006} + - name: LeftHandIndexIntermediate + parentName: LeftHandIndexProximal + position: {x: -0.0379273, y: -1.4210854e-16, z: 0} + rotation: {x: -0.025852479, y: 0.007115821, z: -0.0032927024, w: 0.99963504} + scale: {x: 1.0000001, y: 1.0000001, z: 1.0000004} + - name: LeftHandIndexDistal + parentName: LeftHandIndexIntermediate + position: {x: -0.024303643, y: 4.2632563e-16, z: 4.2632563e-16} + rotation: {x: -0.016055599, y: 0.027149012, z: 0.07203376, w: 0.99690336} + scale: {x: 1.0000001, y: 0.9999998, z: 0.99999994} + - name: LeftHandIndexTip + parentName: LeftHandIndexDistal + position: {x: -0.011583036, y: -4.2632563e-16, z: -8.5265126e-16} + rotation: {x: -0, y: -0, z: -0.000000002590241, w: 1} + scale: {x: 0.99999976, y: 1, z: 0.99999994} + - name: LeftHandMiddleProximal + parentName: LeftHandWrist + position: {x: -0.09543732, y: 0.002604632, z: -0.0014387579} + rotation: {x: -0.0090666115, y: 0.051465645, z: -0.051835876, w: 0.99728745} + scale: {x: 1, y: 1.0000005, z: 1.0000005} + - name: LeftHandMiddleIntermediate + parentName: LeftHandMiddleProximal + position: {x: -0.04292699, y: -1.4210854e-16, z: 0} + rotation: {x: -0.011228377, y: 0.004379008, z: 0.0019784556, w: 0.9999255} + scale: {x: 0.9999998, y: 0.9999998, z: 0.9999997} + - name: LeftHandMiddleDistal + parentName: LeftHandMiddleIntermediate + position: {x: -0.027549583, y: 5.684342e-16, z: 1.4210854e-16} + rotation: {x: -0.034319606, y: 0.004611688, z: 0.09300699, w: 0.9950631} + scale: {x: 1.0000001, y: 1.0000004, z: 1.0000005} + - name: LeftHandMiddleTip + parentName: LeftHandMiddleDistal + position: {x: -0.0122034745, y: -2.842171e-16, z: 2.842171e-16} + rotation: {x: -0, y: -0, z: -0.00000000136788, w: 1} + scale: {x: 1, y: 1.0000002, z: 1.0000005} + - name: LeftHandPinkyMeta + parentName: LeftHandWrist + position: {x: -0.034073558, y: 0.009419835, z: 0.022998573} + rotation: {x: -0.2007117, y: 0.31314307, z: -0.07369629, w: 0.9253244} + scale: {x: 1, y: 1.0000002, z: 1.0000001} + - name: LeftHandPinkyProximal + parentName: LeftHandPinkyMeta + position: {x: -0.04565054, y: 0.0000009982332, z: -0.0000021940255} + rotation: {x: 0.42929384, y: -0.35590473, z: -0.019633245, w: 0.8298513} + scale: {x: 0.99999994, y: 1, z: 1.0000004} + - name: LeftHandPinkyIntermediate + parentName: LeftHandPinkyProximal + position: {x: -0.030720409, y: 4.2632563e-16, z: 1.4210854e-16} + rotation: {x: -0.03761652, y: 0.042937793, z: 0.013286165, w: 0.998281} + scale: {x: 0.99999994, y: 1.0000001, z: 1.0000001} + - name: LeftHandPinkyDistal + parentName: LeftHandPinkyIntermediate + position: {x: -0.020311384, y: -4.2632563e-16, z: 0} + rotation: {x: 0.000644572, y: -0.049170632, z: 0.024018465, w: 0.99850136} + scale: {x: 1, y: 1.0000001, z: 1.0000002} + - name: LeftHandPinkyTip + parentName: LeftHandPinkyDistal + position: {x: -0.011908775, y: 2.842171e-16, z: -4.2632563e-16} + rotation: {x: -0, y: -0, z: -7.5306145e-10, w: 1} + scale: {x: 1.0000002, y: 1.0000002, z: 1.0000005} + - name: LeftHandRingProximal + parentName: LeftHandWrist + position: {x: -0.08869379, y: 0.006529307, z: 0.017465241} + rotation: {x: -0.053159505, y: 0.12310373, z: -0.049813434, w: 0.98971623} + scale: {x: 1, y: 1.0000004, z: 1.0000005} + - name: LeftHandRingIntermediate + parentName: LeftHandRingProximal + position: {x: -0.0389961, y: 0, z: -4.2632563e-16} + rotation: {x: -0.033632584, y: 0.002789706, z: -0.005676348, w: 0.99941427} + scale: {x: 1.0000001, y: 1.0000004, z: 1.0000006} + - name: LeftHandRingDistal + parentName: LeftHandRingIntermediate + position: {x: -0.026573397, y: -1.4210854e-16, z: 0} + rotation: {x: -0.0034777145, y: -0.029179426, z: 0.025028756, w: 0.9992548} + scale: {x: 1.0000001, y: 1.0000008, z: 1.0000007} + - name: LeftHandRingTip + parentName: LeftHandRingDistal + position: {x: -0.01193941, y: 1.4210854e-16, z: 1.4210854e-16} + rotation: {x: -2.3283059e-10, y: -0, z: 0.0000000010477377, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftHandThumbTrapezium + parentName: LeftHandWrist + position: {x: -0.020069301, y: 0.011554099, z: -0.0104965195} + rotation: {x: 0.37538618, y: -0.4245839, z: 0.0077786148, w: 0.8238649} + scale: {x: 1.0000002, y: 1.0000006, z: 1.0000001} + - name: LeftHandThumbMeta + parentName: LeftHandThumbTrapezium + position: {x: -0.024852559, y: 0, z: -7.105427e-17} + rotation: {x: 0.26023114, y: -0.024330731, z: -0.12567794, w: 0.9570229} + scale: {x: 1.0000002, y: 1.0000001, z: 1} + - name: LeftHandThumbProximal + parentName: LeftHandThumbMeta + position: {x: -0.03251291, y: 0, z: 0} + rotation: {x: -0.082704164, y: 0.076961584, z: 0.084062286, w: 0.9900356} + scale: {x: 1.0000004, y: 1.0000004, z: 1.0000001} + - name: LeftHandThumbDistal + parentName: LeftHandThumbProximal + position: {x: -0.03379309, y: 0, z: -1.4210854e-16} + rotation: {x: 0.08350567, y: -0.06501574, z: 0.05827395, w: 0.9926752} + scale: {x: 1.0000004, y: 1.0000007, z: 1.0000004} + - name: LeftHandThumbTip + parentName: LeftHandThumbDistal + position: {x: -0.014863368, y: 0, z: 2.842171e-16} + rotation: {x: -0, y: -0, z: 4.6566123e-10, w: 1} + scale: {x: 1.0000001, y: 1.0000002, z: 1.0000001} + - name: LeftArmUpperTwist1_jnt + parentName: LeftArmUpper + position: {x: -0.089999996, y: 0, z: -1.4210854e-16} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftArmUpperTwist2_jnt + parentName: LeftArmUpper + position: {x: -0.17999999, y: 0, z: -1.4210854e-16} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: LeftArmUpperTwist3_jnt + parentName: LeftArmUpper + position: {x: -0.25680092, y: -0.000000007970641, z: 7.105427e-16} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Neck + parentName: Chest + position: {x: -0.12540093, y: 0.04045652, z: -8.265321e-17} + rotation: {x: -0, y: -0, z: -8.881783e-16, w: 1} + scale: {x: 1.0000001, y: 1.0000001, z: 1} + - name: Head + parentName: Neck + position: {x: -0.06931999, y: 0.0138437785, z: 6.795974e-17} + rotation: {x: 0.04030306, y: -0.156524, z: 0.13941272, w: 0.9769545} + scale: {x: 1.0000004, y: 1.0000006, z: 1.0000005} + - name: LeftEye + parentName: Head + position: {x: -0.09639899, y: 0.080643415, z: 0.041476633} + rotation: {x: -0.73952055, y: 0.67223424, z: 0.025746575, w: 0.023402775} + scale: {x: 1, y: 0.99999994, z: 1} + - name: pedalA1_L + parentName: Head + position: {x: -0.18901998, y: 0.07407234, z: 0.028385388} + rotation: {x: -0.05962082, y: 0.15862526, z: 0.3473614, w: 0.9222926} + scale: {x: 1.0000001, y: 0.99999994, z: 1.0000001} + - name: pedalA2_L + parentName: pedalA1_L + position: {x: -0.038098708, y: 2.842171e-16, z: 7.105427e-17} + rotation: {x: 0.0007027499, y: -0.005542561, z: 0.12582739, w: 0.99203646} + scale: {x: 1, y: 1, z: 1.0000001} + - name: pedalA3_L + parentName: pedalA2_L + position: {x: -0.034144375, y: 2.842171e-16, z: 1.4210854e-16} + rotation: {x: 0.0021009704, y: -0.023252616, z: 0.08994647, w: 0.99567294} + scale: {x: 1, y: 1, z: 0.99999994} + - name: pedalA4_L + parentName: pedalA3_L + position: {x: -0.036823068, y: -5.684342e-16, z: -2.842171e-16} + rotation: {x: 0.006632045, y: -0.11686568, z: 0.05626597, w: 0.9915305} + scale: {x: 0.99999994, y: 1.0000001, z: 0.9999998} + - name: pedalA5_L + parentName: pedalA4_L + position: {x: -0.03285584, y: -5.684342e-16, z: -7.105427e-17} + rotation: {x: -0, y: -0, z: 6.9849176e-10, w: 1} + scale: {x: 0.99999994, y: 0.99999994, z: 0.99999994} + - name: pedalA1_R + parentName: Head + position: {x: -0.18902488, y: 0.07407208, z: -0.0283854} + rotation: {x: 0.15862525, y: 0.05962076, z: -0.9222926, w: 0.34736133} + scale: {x: 1.0000001, y: 1.0000002, z: 1.0000002} + - name: pedalA2_R + parentName: pedalA1_R + position: {x: 0.038092095, y: 0.0000053548583, z: -0.000002382847} + rotation: {x: 0.0007028281, y: -0.00554252, z: 0.1258275, w: 0.9920364} + scale: {x: 1.0000001, y: 1.0000002, z: 1} + - name: pedalA3_R + parentName: pedalA2_R + position: {x: 0.034147833, y: -0.000004498287, z: 0.0000016172912} + rotation: {x: 0.0021009243, y: -0.023252625, z: 0.08994635, w: 0.99567294} + scale: {x: 1.0000002, y: 1.0000006, z: 1.0000006} + - name: pedalA4_R + parentName: pedalA3_R + position: {x: 0.0368207, y: 0.000004383013, z: -0.0000012474314} + rotation: {x: -0.0066320524, y: 0.11686569, z: -0.056266066, w: -0.9915305} + scale: {x: 1.0000006, y: 1.0000011, z: 1.0000002} + - name: pedalA5_R + parentName: pedalA4_R + position: {x: 0.03285604, y: -0.00000043235696, z: 0.000000014339509} + rotation: {x: -0, y: -0, z: 0.0000000016298142, w: 1} + scale: {x: 1.0000002, y: 1.0000002, z: 1.0000004} + - name: pedalB1_L + parentName: Head + position: {x: -0.15757503, y: 0.05896424, z: 0.06996904} + rotation: {x: 0.31234065, y: 0.45579147, z: 0.2580539, w: 0.79253125} + scale: {x: 1, y: 1.0000002, z: 1.0000005} + - name: pedalB2_L + parentName: pedalB1_L + position: {x: -0.036644474, y: 3.5527136e-17, z: 0} + rotation: {x: -0.0015076696, y: 0.016709385, z: 0.08986209, w: 0.9958129} + scale: {x: 1.0000001, y: 1.0000001, z: 1.0000004} + - name: pedalB3_L + parentName: pedalB2_L + position: {x: -0.040783122, y: 0, z: 0} + rotation: {x: 0.0073505975, y: 0.068240635, z: -0.1068436, w: 0.9919041} + scale: {x: 0.99999994, y: 1.0000002, z: 1.0000002} + - name: pedalB4_L + parentName: pedalB3_L + position: {x: -0.027589377, y: -2.4868996e-16, z: 0} + rotation: {x: 0.0037841368, y: 0.06298778, z: -0.059848454, w: 0.99621105} + scale: {x: 1.0000002, y: 1.0000004, z: 1.0000004} + - name: pedalB5_L + parentName: pedalB4_L + position: {x: -0.031231984, y: 1.4210854e-16, z: 8.5265126e-16} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: pedalB1_R + parentName: Head + position: {x: -0.15757501, y: 0.058964483, z: -0.069969} + rotation: {x: -0.45579147, y: 0.31234074, z: 0.7925312, w: -0.25805387} + scale: {x: 1.0000002, y: 1.0000007, z: 1.0000004} + - name: pedalB2_R + parentName: pedalB1_R + position: {x: 0.036643606, y: 0.00000026341073, z: -0.0000018644686} + rotation: {x: -0.0015077738, y: 0.01670934, z: 0.08986216, w: 0.99581295} + scale: {x: 1, y: 1.0000002, z: 1.0000002} + - name: pedalB3_R + parentName: pedalB2_R + position: {x: 0.040784497, y: -0.00000044807544, z: 0.0000026029657} + rotation: {x: 0.0073506595, y: 0.06824066, z: -0.10684368, w: 0.991904} + scale: {x: 1, y: 1.0000001, z: 1.0000002} + - name: pedalB4_R + parentName: pedalB3_R + position: {x: 0.02758738, y: 0.00000012849632, z: -0.0000054013} + rotation: {x: 0.0037841126, y: 0.06298781, z: -0.059848364, w: 0.99621105} + scale: {x: 1.0000001, y: 1.0000005, z: 1} + - name: pedalB5_R + parentName: pedalB4_R + position: {x: 0.031233242, y: 0.00000021207657, z: 0.0000062550835} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: pedalC1_L + parentName: Head + position: {x: -0.107264124, y: 0.045420088, z: 0.082003996} + rotation: {x: 0.4405881, y: 0.26655972, z: 0.020931562, w: 0.85696566} + scale: {x: 1, y: 1.0000002, z: 1.0000001} + - name: pedalC2_L + parentName: pedalC1_L + position: {x: -0.035671502, y: -1.7763568e-17, z: 0} + rotation: {x: -0.038314994, y: 0.071041696, z: -0.022893054, w: 0.99647427} + scale: {x: 1.0000001, y: 1.0000001, z: 1.0000004} + - name: pedalC3_L + parentName: pedalC2_L + position: {x: -0.036727104, y: -3.5527136e-17, z: -2.842171e-16} + rotation: {x: -0.0026415698, y: -0.05036085, z: -0.052318826, w: 0.99735636} + scale: {x: 1.0000001, y: 1, z: 1.0000002} + - name: pedalC4_L + parentName: pedalC3_L + position: {x: -0.030103153, y: -1.7763568e-17, z: 0} + rotation: {x: 0.0014031789, y: -0.089690246, z: 0.015585746, w: 0.9958468} + scale: {x: 1.0000001, y: 1.0000004, z: 1.0000005} + - name: pedalC5_L + parentName: pedalC4_L + position: {x: -0.033073757, y: 1.7763568e-17, z: -2.842171e-16} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: pedalC1_R + parentName: Head + position: {x: -0.107268296, y: 0.045419693, z: -0.082004} + rotation: {x: -0.52960336, y: 0.41708955, z: 0.6960527, w: -0.2471182} + scale: {x: 1.0000002, y: 1.0000004, z: 1.0000001} + - name: pedalC2_R + parentName: pedalC1_R + position: {x: 0.035671618, y: -0.0000000095021155, z: 0.000000093630184} + rotation: {x: -0.038315088, y: 0.07104172, z: -0.022892952, w: 0.99647427} + scale: {x: 0.99999994, y: 0.99999994, z: 1} + - name: pedalC3_R + parentName: pedalC2_R + position: {x: 0.036725037, y: -0.0000006093943, z: -0.000007657373} + rotation: {x: -0.0026415102, y: -0.050360717, z: -0.05231888, w: 0.9973563} + scale: {x: 1, y: 1.0000001, z: 1.0000001} + - name: pedalC4_R + parentName: pedalC3_R + position: {x: 0.030105362, y: 0.0000010914362, z: 0.000007049058} + rotation: {x: 0.0014030645, y: -0.08969027, z: 0.015585772, w: 0.9958468} + scale: {x: 0.99999994, y: 1.0000001, z: 0.99999994} + - name: pedalC5_R + parentName: pedalC4_R + position: {x: 0.03306995, y: -0.0000013499729, z: -0.0000073903566} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: pedalD1_L + parentName: Head + position: {x: -0.08135567, y: 0.029088823, z: 0.08131405} + rotation: {x: 0.3824446, y: 0.6757835, z: 0.3509121, w: 0.5233674} + scale: {x: 1.0000002, y: 1.0000002, z: 1.0000004} + - name: pedalD2_L + parentName: pedalD1_L + position: {x: -0.04388904, y: 3.5527136e-17, z: -5.684342e-16} + rotation: {x: -0.003189891, y: -0.078433834, z: -0.040514927, w: 0.99609065} + scale: {x: 1, y: 1.0000004, z: 1.0000004} + - name: pedalD3_L + parentName: pedalD2_L + position: {x: -0.03287495, y: 0, z: 0} + rotation: {x: 0.00048070308, y: 0.008389838, z: -0.05724818, w: 0.9983247} + scale: {x: 1.0000001, y: 1, z: 1.0000002} + - name: pedalD4_L + parentName: pedalD3_L + position: {x: -0.025873967, y: 0, z: 2.842171e-16} + rotation: {x: -0.008314494, y: 0.21168374, z: 0.038358793, w: 0.9765498} + scale: {x: 1.0000001, y: 1.0000005, z: 1.0000002} + - name: pedalD5_L + parentName: pedalD4_L + position: {x: -0.031726785, y: 1.4210854e-16, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: pedalD1_R + parentName: Head + position: {x: -0.081357144, y: 0.029088633, z: -0.081314} + rotation: {x: -0.6358174, y: 0.18100674, z: 0.7488734, w: -0.046491127} + scale: {x: 1, y: 1, z: 1.0000002} + - name: pedalD2_R + parentName: pedalD1_R + position: {x: 0.043888584, y: 0.00000093065347, z: 0.0000028985098} + rotation: {x: 0.00031921823, y: -0.07723111, z: -0.08443263, w: 0.9934317} + scale: {x: 1, y: 1, z: 1.0000001} + - name: pedalD3_R + parentName: pedalD2_R + position: {x: 0.032874923, y: -0.0000013607378, z: -0.000004782389} + rotation: {x: 0.0004806979, y: 0.008389874, z: -0.057248246, w: 0.99832463} + scale: {x: 1.0000001, y: 1.0000002, z: 1.0000004} + - name: pedalD4_R + parentName: pedalD3_R + position: {x: 0.025873668, y: 0.000000650432, z: 0.00000095019965} + rotation: {x: -0.019660642, y: 0.08423319, z: 0.06598837, w: 0.9940643} + scale: {x: 1.0000001, y: 1.0000005, z: 1.0000004} + - name: pedalD5_R + parentName: pedalD4_R + position: {x: 0.031727757, y: -0.00000092986284, z: -0.0000012576362} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: pedalE1_L + parentName: Head + position: {x: -0.054470837, y: 0.030261306, z: 0.07645104} + rotation: {x: 0.30201444, y: 0.6835133, z: 0.5251743, w: 0.40717188} + scale: {x: 1.0000001, y: 1, z: 1.0000001} + - name: pedalE2_L + parentName: pedalE1_L + position: {x: -0.035615966, y: 3.5527136e-17, z: -2.842171e-16} + rotation: {x: 0.00013248621, y: 0.030184593, z: -0.004361495, w: 0.99953485} + scale: {x: 0.99999994, y: 1.0000001, z: 1.0000002} + - name: pedalE3_L + parentName: pedalE2_L + position: {x: -0.028844701, y: 3.5527136e-17, z: -2.842171e-16} + rotation: {x: -0.016802592, y: 0.20743491, z: 0.07896706, w: 0.97491163} + scale: {x: 1.0000002, y: 1.0000005, z: 1} + - name: pedalE4_L + parentName: pedalE3_L + position: {x: -0.017558865, y: 4.4408918e-17, z: 2.842171e-16} + rotation: {x: 0.023072949, y: -0.18256979, z: 0.12323801, w: 0.9751658} + scale: {x: 1.0000004, y: 1.0000002, z: 1} + - name: pedalE5_L + parentName: pedalE4_L + position: {x: -0.026840098, y: 7.105427e-17, z: 0} + rotation: {x: -0, y: -0, z: -0, w: 1} + scale: {x: 1.0000001, y: 1.0000005, z: 1.0000001} + - name: pedalE1_R + parentName: Head + position: {x: -0.05446679, y: 0.030261718, z: -0.076450996} + rotation: {x: 0.6835133, y: -0.30201435, z: -0.40717182, w: 0.52517426} + scale: {x: 1.0000002, y: 1.0000004, z: 1.0000004} + - name: pedalE2_R + parentName: pedalE1_R + position: {x: 0.0356149, y: 0.000000006720624, z: 0.000002581053} + rotation: {x: 0.00013250113, y: 0.030184582, z: -0.0043613166, w: 0.99953485} + scale: {x: 1.0000002, y: 1.0000004, z: 1.0000005} + - name: pedalE3_R + parentName: pedalE2_R + position: {x: 0.028843941, y: -0.000000022925304, z: 0.0000013501387} + rotation: {x: 0.016802633, y: -0.2074349, z: -0.078966856, w: -0.9749117} + scale: {x: 1.0000001, y: 1, z: 1.0000001} + - name: pedalE4_R + parentName: pedalE3_R + position: {x: 0.017558595, y: 0.000000052151258, z: 0.0000002622886} + rotation: {x: 0.023072995, y: -0.18256974, z: 0.123238064, w: 0.97516584} + scale: {x: 1.0000001, y: 1.0000004, z: 1.0000001} + - name: pedalE5_R + parentName: pedalE4_R + position: {x: 0.026841117, y: -0.0000006223147, z: -0.000002005182} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: pedalF1_L + parentName: Head + position: {x: -0.04205154, y: 0.023377173, z: 0.06707798} + rotation: {x: -0.14725208, y: 0.74480194, z: 0.40470457, w: 0.509707} + scale: {x: 1.0000001, y: 1, z: 1.0000001} + - name: pedalF2_L + parentName: pedalF1_L + position: {x: -0.027799321, y: 0, z: 5.684342e-16} + rotation: {x: -0.07169218, y: 0.05513628, z: -0.113847025, w: 0.98937315} + scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001} + - name: pedalF3_L + parentName: pedalF2_L + position: {x: -0.018588457, y: 0, z: 1.4210854e-16} + rotation: {x: -0.010598379, y: 0.01686775, z: -0.009406415, w: 0.99975735} + scale: {x: 1.0000005, y: 1.0000004, z: 1} + - name: pedalF4_L + parentName: pedalF3_L + position: {x: -0.016333, y: -7.105427e-17, z: -3.5527136e-17} + rotation: {x: 0.019006247, y: -0.20657596, z: 0.089628205, w: 0.97413135} + scale: {x: 1.0000004, y: 1.0000005, z: 1} + - name: pedalF5_L + parentName: pedalF4_L + position: {x: -0.024877517, y: -2.1316282e-16, z: 1.4210854e-16} + rotation: {x: -0, y: -0, z: 4.6566134e-10, w: 1} + scale: {x: 0.99999994, y: 0.99999994, z: 1} + - name: pedalF1_R + parentName: Head + position: {x: -0.042055514, y: 0.023376817, z: -0.067077994} + rotation: {x: 0.65839666, y: -0.2932288, z: -0.31044427, w: 0.6198025} + scale: {x: 1.0000002, y: 1.0000001, z: 1.0000005} + - name: pedalF2_R + parentName: pedalF1_R + position: {x: 0.027804129, y: -0.00000006092411, z: -0.000007070838} + rotation: {x: 0.034035794, y: -0.24379855, z: -0.1340115, w: -0.9599192} + scale: {x: 0.99999994, y: 1.0000001, z: 0.99999994} + - name: pedalF3_R + parentName: pedalF2_R + position: {x: 0.018582985, y: 0.0000010183843, z: 0.000002968836} + rotation: {x: -0.008092336, y: 0.16204251, z: 0.04921902, w: 0.9855223} + scale: {x: 1.0000004, y: 1, z: 1.0000004} + - name: pedalF4_R + parentName: pedalF3_R + position: {x: 0.016335573, y: -0.00000066251914, z: -0.00000049842987} + rotation: {x: 0.019006249, y: -0.20657587, z: 0.08962831, w: 0.9741314} + scale: {x: 1.0000005, y: 1.0000002, z: 1.0000002} + - name: pedalF5_R + parentName: pedalF4_R + position: {x: 0.024877202, y: 0.00000015386338, z: 0.00000030317432} + rotation: {x: -0.0000000037252894, y: -0, z: -0.000000014901158, w: 1} + scale: {x: 0.99999994, y: 0.9999998, z: 1} + - name: RightEye + parentName: Head + position: {x: -0.09639899, y: 0.080643415, z: -0.041502442} + rotation: {x: 0.6722343, y: 0.7395205, z: -0.023402778, w: 0.025746647} + scale: {x: 1, y: 1.0000001, z: 0.99999994} + - name: Viewpoint + parentName: Head + position: {x: -0.09862352, y: 0.1182949, z: -0.0000049199994} + rotation: {x: 0.52324307, y: -0.47562245, z: -0.52324307, w: -0.47562245} + scale: {x: 1, y: 1, z: 1} + - name: RightShoulder + parentName: Chest + position: {x: -0.066512585, y: 0.09479429, z: -0.0282178} + rotation: {x: -0.66002935, y: 0.1770811, z: 0.69426274, w: -0.22583827} + scale: {x: 1, y: 1, z: 1} + - name: RightArmUpper + parentName: RightShoulder + position: {x: 0.1765048, y: -2.6645352e-17, z: 0} + rotation: {x: -0.09309796, y: 0.4776535, z: -0.1875573, w: 0.8532304} + scale: {x: 1, y: 1, z: 1} + - name: RightArmLower + parentName: RightArmUpper + position: {x: 0.25679636, y: 0.0000000101391375, z: -2.842171e-16} + rotation: {x: -0.00000008940697, y: -0.00000005960464, z: 0.29681027, w: -0.9549365} + scale: {x: 1.0000002, y: 1.0000004, z: 1.0000002} + - name: RightArmLowerTwist1_jnt + parentName: RightArmLower + position: {x: 0.099999994, y: 0, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightArmLowerTwist2_jnt + parentName: RightArmLower + position: {x: 0.19999999, y: 0, z: 2.842171e-16} + rotation: {x: -7.1054265e-15, y: -3.5527133e-15, z: -5.3290697e-15, w: 1} + scale: {x: 0.99999994, y: 1.0000001, z: 1.0000004} + - name: RightArmLowerTwist3_jnt + parentName: RightArmLower + position: {x: 0.25627, y: 0, z: 2.842171e-16} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightHandWrist + parentName: RightArmLower + position: {x: 0.25627, y: -0.000000004506687, z: -0.000000009283036} + rotation: {x: -0.6534106, y: -0.11918222, z: 0.049257997, w: -0.7459383} + scale: {x: 0.9999999, y: 1.0000005, z: 1} + - name: RightHandIndexProximal + parentName: RightHandWrist + position: {x: 0.09599624, y: -0.0073164543, z: 0.02355068} + rotation: {x: 0.030682858, y: 0.018855637, z: -0.043281425, w: 0.9984137} + scale: {x: 1, y: 1, z: 1.0000001} + - name: RightHandIndexIntermediate + parentName: RightHandIndexProximal + position: {x: 0.0379273, y: 1.4210854e-16, z: -1.4210854e-16} + rotation: {x: -0.02585228, y: 0.0071161585, z: -0.0032927745, w: 0.99963504} + scale: {x: 1.0000001, y: 1, z: 1.0000001} + - name: RightHandIndexDistal + parentName: RightHandIndexIntermediate + position: {x: 0.024303643, y: 1.4210854e-16, z: 2.842171e-16} + rotation: {x: -0.016055742, y: 0.027148759, z: 0.072033964, w: 0.9969034} + scale: {x: 1, y: 0.99999994, z: 0.9999998} + - name: RightHandIndexTip + parentName: RightHandIndexDistal + position: {x: 0.011583036, y: -1.4210854e-16, z: -2.842171e-16} + rotation: {x: -0, y: -0, z: -0.0000000026775517, w: 1} + scale: {x: 1.0000001, y: 1.0000001, z: 1.0000001} + - name: RightHandMiddleProximal + parentName: RightHandWrist + position: {x: 0.095646605, y: -0.0025431544, z: 0.0017259055} + rotation: {x: -0.009066285, y: 0.051465582, z: -0.05183547, w: 0.99728745} + scale: {x: 1, y: 0.99999994, z: 1} + - name: RightHandMiddleIntermediate + parentName: RightHandMiddleProximal + position: {x: 0.04292699, y: 0, z: 0} + rotation: {x: -0.011228034, y: 0.004379056, z: 0.0019782057, w: 0.9999255} + scale: {x: 1.0000002, y: 1, z: 1} + - name: RightHandMiddleDistal + parentName: RightHandMiddleIntermediate + position: {x: 0.027549583, y: 0, z: -1.4210854e-16} + rotation: {x: -0.034319926, y: 0.0046116416, z: 0.093006805, w: 0.9950631} + scale: {x: 1, y: 1, z: 0.99999994} + - name: RightHandMiddleTip + parentName: RightHandMiddleDistal + position: {x: 0.0122034745, y: -2.842171e-16, z: 1.4210854e-16} + rotation: {x: -0, y: -4.6566118e-10, z: -0.0000000014551912, w: 1} + scale: {x: 1.0000001, y: 1.0000001, z: 0.99999994} + - name: RightHandPinkyMeta + parentName: RightHandWrist + position: {x: 0.034073558, y: -0.009419835, z: -0.022998573} + rotation: {x: -0.19855496, y: 0.32085145, z: -0.06888354, w: 0.92351794} + scale: {x: 1, y: 1.0000001, z: 0.9999997} + - name: RightHandPinkyProximal + parentName: RightHandPinkyMeta + position: {x: 0.04565054, y: -0.0000009982332, z: 0.0000021940255} + rotation: {x: 0.4397845, y: -0.37552333, z: -0.029564666, w: 0.81529} + scale: {x: 1, y: 1, z: 1} + - name: RightHandPinkyIntermediate + parentName: RightHandPinkyProximal + position: {x: 0.030720409, y: 1.4210854e-16, z: 4.2632563e-16} + rotation: {x: -0.03761653, y: 0.042937733, z: 0.013286147, w: 0.998281} + scale: {x: 1.0000002, y: 0.99999994, z: 1.0000001} + - name: RightHandPinkyDistal + parentName: RightHandPinkyIntermediate + position: {x: 0.020311384, y: -2.842171e-16, z: -2.842171e-16} + rotation: {x: 0.0006446576, y: -0.04917051, z: 0.024018904, w: 0.99850136} + scale: {x: 1, y: 1, z: 1.0000001} + - name: RightHandPinkyTip + parentName: RightHandPinkyDistal + position: {x: 0.011908775, y: 2.842171e-16, z: 1.4210854e-16} + rotation: {x: -0, y: -0, z: -3.456079e-10, w: 1} + scale: {x: 1.0000001, y: 0.99999994, z: 1.0000002} + - name: RightHandRingProximal + parentName: RightHandWrist + position: {x: 0.08869379, y: -0.006529307, z: -0.017465241} + rotation: {x: -0.05315939, y: 0.12310342, z: -0.04981332, w: 0.9897163} + scale: {x: 1, y: 1, z: 0.99999994} + - name: RightHandRingIntermediate + parentName: RightHandRingProximal + position: {x: 0.0389961, y: -2.842171e-16, z: 2.842171e-16} + rotation: {x: -0.0336325, y: 0.0027899144, z: -0.005676227, w: 0.9994143} + scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001} + - name: RightHandRingDistal + parentName: RightHandRingIntermediate + position: {x: 0.026573397, y: 4.2632563e-16, z: -1.4210854e-16} + rotation: {x: -0.0034774202, y: -0.02917929, z: 0.025028776, w: 0.99925476} + scale: {x: 1, y: 0.9999998, z: 0.99999994} + - name: RightHandRingTip + parentName: RightHandRingDistal + position: {x: 0.01193941, y: -4.2632563e-16, z: 0} + rotation: {x: -2.3283062e-10, y: -0, z: 7.9307927e-10, w: 1} + scale: {x: 0.9999998, y: 1, z: 1} + - name: RightHandThumbTrapezium + parentName: RightHandWrist + position: {x: 0.020069301, y: -0.011554099, z: 0.0104965195} + rotation: {x: 0.37538707, y: -0.42458397, z: 0.007779062, w: 0.8238644} + scale: {x: 0.9999998, y: 1, z: 1.0000001} + - name: RightHandThumbMeta + parentName: RightHandThumbTrapezium + position: {x: 0.024852559, y: -1.4210854e-16, z: 1.7763567e-16} + rotation: {x: 0.26023072, y: -0.024331093, z: -0.12567778, w: 0.957023} + scale: {x: 1.0000001, y: 1.0000004, z: 0.9999997} + - name: RightHandThumbProximal + parentName: RightHandThumbMeta + position: {x: 0.03251291, y: 0, z: 1.4210854e-16} + rotation: {x: -0.08270432, y: 0.076961555, z: 0.08406199, w: 0.99003565} + scale: {x: 1.0000002, y: 0.9999998, z: 1.0000001} + - name: RightHandThumbDistal + parentName: RightHandThumbProximal + position: {x: 0.03379309, y: 1.4210854e-16, z: -1.4210854e-16} + rotation: {x: 0.08350631, y: -0.06501554, z: 0.058274046, w: 0.99267507} + scale: {x: 1.0000001, y: 1.0000001, z: 1.0000001} + - name: RightHandThumbTip + parentName: RightHandThumbDistal + position: {x: 0.014863368, y: 0.000000057389798, z: 0.0000000019459812} + rotation: {x: -0.00000013923271, y: 0.000004119705, z: 1, w: -0.00000003073364} + scale: {x: 1.0000001, y: 1.0000001, z: 1} + - name: RightArmUpperTwist1_jnt + parentName: RightArmUpper + position: {x: 0.089999996, y: 1.1046719e-16, z: -3.563816e-16} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightArmUpperTwist2_jnt + parentName: RightArmUpper + position: {x: 0.17999999, y: 1.1046719e-16, z: -3.563816e-16} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: RightArmUpperTwist3_jnt + parentName: RightArmUpper + position: {x: 0.25679636, y: 0.0000000101391375, z: -2.842171e-16} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 1 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 1 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + remapMaterialsIfMaterialImportModeIsNone: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/Models/Aura/aura_rig.fbx b/Samples/Models/Aura/aura_rig.fbx index 4f9a555d..40ab218c 100644 Binary files a/Samples/Models/Aura/aura_rig.fbx and b/Samples/Models/Aura/aura_rig.fbx differ diff --git a/Samples/Models/Aura/aura_rig.fbx.meta b/Samples/Models/Aura/aura_rig.fbx.meta index 9625ffc5..2f3d8aeb 100644 --- a/Samples/Models/Aura/aura_rig.fbx.meta +++ b/Samples/Models/Aura/aura_rig.fbx.meta @@ -1,9 +1,59 @@ fileFormatVersion: 2 -guid: 97c33b5b5e467ff4982d18b3cea2fa0e +guid: 00d0533fd012f490ca15158ab7c3b951 ModelImporter: - serializedVersion: 20300 + serializedVersion: 21300 internalIDToNameTable: [] - externalObjects: {} + externalObjects: + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: aura_eyelash_mat + second: {fileID: 2100000, guid: 911ec2c5e434d184da2c3b3f8fa5f809, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: aura_head_mat + second: {fileID: 2100000, guid: 35c69333000db8a47887cf9431803022, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: eyes_mat + second: {fileID: 2100000, guid: 88bd2515a02cfbd4cadd2b1039155c5e, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: handsSkin_MAT + second: {fileID: 2100000, guid: 2a9488ab25d8e5744abfc0604ab635f7, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: head_abdomen_mat + second: {fileID: 2100000, guid: 887e84e4010f36b42823a4efc9803c0d, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: teeth_mat + second: {fileID: 2100000, guid: cfa09ece4d7119d44a09ddc6e3577659, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: tentacles_mat + second: {fileID: 2100000, guid: 306cef69fb9c0f841ac2eebe97233ed9, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: throat_mat + second: {fileID: 2100000, guid: 085835c2fe4a3de4e917563ea2905592, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: tongue_mat + second: {fileID: 2100000, guid: 085835c2fe4a3de4e917563ea2905592, type: 2} + - first: + type: UnityEngine:Material + assembly: UnityEngine.CoreModule + name: wrists_mat + second: {fileID: 2100000, guid: 810071505f4602f4b81b262ff54812f4, type: 2} materials: materialImportMode: 2 materialName: 0 @@ -14,6 +64,7 @@ ModelImporter: bakeSimulation: 0 resampleCurves: 1 optimizeGameObjects: 0 + removeConstantScaleCurves: 1 motionNodeName: rigImportErrors: rigImportWarnings: @@ -23,7 +74,7 @@ ModelImporter: animationDoRetargetingWarnings: 0 importAnimatedCustomProperties: 0 importConstraints: 0 - animationCompression: 3 + animationCompression: 1 animationRotationError: 0.5 animationPositionError: 0.5 animationScaleError: 0.5 @@ -43,6 +94,7 @@ ModelImporter: importBlendShapes: 1 importCameras: 1 importLights: 1 + nodeNameCollisionStrategy: 1 fileIdsGeneration: 2 swapUVChannels: 0 generateSecondaryUV: 0 @@ -54,6 +106,7 @@ ModelImporter: skinWeightsMode: 0 maxBonesPerVertex: 4 minBoneWeight: 0.001 + optimizeBones: 1 meshOptimizationFlags: -1 indexFormat: 0 secondaryUVAngleDistortion: 8 @@ -76,1039 +129,8 @@ ModelImporter: importAnimation: 1 humanDescription: serializedVersion: 3 - human: - - boneName: Chest - humanName: Hips - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: LeftHandWrist - humanName: LeftUpperLeg - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: RightHandWrist - humanName: RightUpperLeg - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: LeftHandPinkyMeta - humanName: LeftLowerLeg - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: RightHandPinkyMeta - humanName: RightLowerLeg - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: LeftHandPinkyProximal - humanName: LeftFoot - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: RightHandPinkyProximal - humanName: RightFoot - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: Neck - humanName: Spine - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: Head - humanName: Chest - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: pedalC1_L - humanName: Neck - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: pedalC2_L - humanName: Head - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: pedalF1_L - humanName: LeftShoulder - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: pedalD1_R - humanName: RightShoulder - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: pedalF2_L - humanName: LeftUpperArm - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: pedalD2_R - humanName: RightUpperArm - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: pedalF3_L - humanName: LeftLowerArm - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: pedalD3_R - humanName: RightLowerArm - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: pedalF4_L - humanName: LeftHand - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: pedalD4_R - humanName: RightHand - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: LeftHandPinkyIntermediate - humanName: LeftToes - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: RightHandPinkyIntermediate - humanName: RightToes - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - - boneName: pedalC4_L - humanName: LeftEye - limit: - min: {x: 0, y: 0, z: 0} - max: {x: 0, y: 0, z: 0} - value: {x: 0, y: 0, z: 0} - length: 0 - modified: 0 - skeleton: - - name: aura_rig(Clone) - parentName: - position: {x: 0, y: 0, z: 0} - rotation: {x: 0, y: 0, z: 0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: geom - parentName: aura_rig(Clone) - position: {x: -0, y: 0, z: 0} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: hands - parentName: geom - position: {x: -0, y: 0, z: 0} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: head_grp - parentName: geom - position: {x: -0.000000009536743, y: 1.549946, z: 0.038412716} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: head_parts - parentName: head_grp - position: {x: 0.000000009536743, y: -1.549946, z: -0.038412716} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: eye_L_grp - parentName: head_parts - position: {x: -0.0414308, y: 1.6252791, z: 0.124241315} - rotation: {x: 0, y: -0.034899496, z: -0, w: 0.99939084} - scale: {x: 1.4441309, y: 1.4441309, z: 1.4441309} - - name: corneaL_geo - parentName: eye_L_grp - position: {x: -0.000011890424, y: -0.0000000032372087, z: 0.00017004096} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: eye_R_grp - parentName: head_parts - position: {x: 0.041456614, y: 1.6252791, z: 0.124241315} - rotation: {x: 0, y: 0.034899496, z: -0, w: 0.99939084} - scale: {x: 1.4441309, y: 1.4441309, z: 1.4441309} - - name: corneaL_geo 1 - parentName: eye_R_grp - position: {x: -0.000011890424, y: -0.0000000032372087, z: 0.00017004096} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: head_abdomen_ply - parentName: head_parts - position: {x: -0, y: 0, z: 0} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: mouth_ply - parentName: head_parts - position: {x: -0, y: 0, z: 0} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: tentacles_ply - parentName: head_parts - position: {x: -0, y: 0, z: 0} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: head_ply - parentName: head_grp - position: {x: 0.000000009536743, y: -1.549946, z: -0.038412716} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: wrists - parentName: geom - position: {x: -0, y: 0, z: 0} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: Root - parentName: aura_rig(Clone) - position: {x: -0, y: 0, z: 0} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: Hips - parentName: Root - position: {x: -0, y: 0.923987, z: 0} - rotation: {x: 0.5, y: -0.5, z: -0.5, w: 0.5} - scale: {x: 1, y: 1, z: 1} - - name: LeftLegUpper - parentName: Hips - position: {x: 0.025498886, y: -0.0052829897, z: 0.079869255} - rotation: {x: -0.07001962, y: -0.0576324, z: 0.9955674, w: 0.024926713} - scale: {x: 1, y: 1, z: 1} - - name: LeftLegLower - parentName: LeftLegUpper - position: {x: -0.41976497, y: -7.457412e-12, z: -1.4210854e-16} - rotation: {x: 0, y: -0, z: -0.022465961, w: 0.99974763} - scale: {x: 1, y: 1, z: 1} - - name: LeftFootAnkle - parentName: LeftLegLower - position: {x: -0.42058298, y: -2.3996404e-11, z: -2.1316282e-16} - rotation: {x: 0.9947561, y: 0.047286812, z: 0.06870718, w: -0.059190925} - scale: {x: 1, y: 1, z: 1} - - name: LeftFootBall - parentName: LeftFootAnkle - position: {x: -0.052942585, y: 0.14392811, z: -0.0000002115523} - rotation: {x: 0.7071068, y: -0.7071068, z: -4.3297806e-17, w: 4.3297806e-17} - scale: {x: 1, y: 1, z: 1} - - name: LeftFootTip - parentName: LeftFootBall - position: {x: -0.05809766, y: -2.8865798e-17, z: 0.00000021195105} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: LeftLegLowerTwist1_jnt - parentName: LeftLegLower - position: {x: -0.14999999, y: 2.6645352e-17, z: 2.9698464e-17} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: LeftLegLowerTwist2_jnt - parentName: LeftLegLower - position: {x: -0.29999998, y: 8.881784e-18, z: 3.5527136e-17} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: LeftLegLowerTwist3_jnt - parentName: LeftLegLower - position: {x: -0.42058298, y: -2.3996386e-11, z: -1.7763567e-16} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: LeftLegUpperTwist1_jnt - parentName: LeftLegUpper - position: {x: -0.14999999, y: 1.2212453e-17, z: -1.6792122e-17} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: LeftLegUpperTwist2_jnt - parentName: LeftLegUpper - position: {x: -0.29999998, y: 0, z: 0} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: LeftLegUpperTwist3_jnt - parentName: LeftLegUpper - position: {x: -0.41976497, y: -7.457412e-12, z: -1.4210854e-16} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: RightLegUpper - parentName: Hips - position: {x: 0.025498962, y: -0.0052829897, z: -0.0798693} - rotation: {x: -0.05761964, y: 0.070019074, z: -0.024927199, w: 0.99556816} - scale: {x: 1, y: 1, z: 1} - - name: RightLegLower - parentName: RightLegUpper - position: {x: 0.41976458, y: 1.00299546e-10, z: 1.0658141e-16} - rotation: {x: 0, y: -0, z: -0.02246669, w: 0.99974763} - scale: {x: 1, y: 1, z: 1} - - name: RightFootAnkle - parentName: RightLegLower - position: {x: 0.4205833, y: 7.2067005e-11, z: 2.842171e-16} - rotation: {x: 0.9947569, y: 0.04728803, z: 0.068706885, w: -0.059178196} - scale: {x: 1, y: 1, z: 1} - - name: RightFootBall - parentName: RightFootAnkle - position: {x: 0.052658476, y: -0.14373046, z: 0.00000021875026} - rotation: {x: 0.7071068, y: -0.7071068, z: -5.143256e-16, w: 5.143256e-16} - scale: {x: 1, y: 1, z: 1} - - name: RightFootTip - parentName: RightFootBall - position: {x: 0.05824629, y: 2.160494e-15, z: -0.00000021914859} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: RightLegLowerTwist1_jnt - parentName: RightLegLower - position: {x: 0.14999999, y: 8.881784e-18, z: -3.5527136e-17} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: RightLegLowerTwist2_jnt - parentName: RightLegLower - position: {x: 0.29999998, y: 8.881784e-18, z: -3.5527136e-17} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: RightLegLowerTwist3_jnt - parentName: RightLegLower - position: {x: 0.4205833, y: 7.2067005e-11, z: 2.4868996e-16} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: RightLegUpperTwist1_jnt - parentName: RightLegUpper - position: {x: 0.14999999, y: 8.881784e-18, z: 0} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: RightLegUpperTwist2_jnt - parentName: RightLegUpper - position: {x: 0.29999998, y: 8.881784e-18, z: 0} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: RightLegUpperTwist3_jnt - parentName: RightLegUpper - position: {x: 0.41976458, y: 1.0029955e-10, z: 1.0658141e-16} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: SpineLower - parentName: Hips - position: {x: -0.020219956, y: -0.032535676, z: -1.1714103e-17} - rotation: {x: 0, y: -2.1252826e-32, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: SpineMiddle - parentName: SpineLower - position: {x: -0.11041183, y: 0.0110380715, z: 6.5516754e-17} - rotation: {x: 0, y: -2.1252826e-32, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: SpineUpper - parentName: SpineMiddle - position: {x: -0.109367676, y: -0.025952995, z: 8.437417e-17} - rotation: {x: 0, y: -2.1252826e-32, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: Chest - parentName: SpineUpper - position: {x: 0.83148897, y: -0.1138798, z: -1.3817683e-16} - rotation: {x: 0.000000029802322, y: 0.000000029802322, z: -0.04762064, w: 0.99886554} - scale: {x: 1.0000002, y: 1.0000002, z: 1.0000001} - - name: LeftShoulder - parentName: Chest - position: {x: -0.066512585, y: 0.09479429, z: 0.0282178} - rotation: {x: 0.17708462, y: 0.6600202, z: 0.22583653, w: 0.694271} - scale: {x: 1, y: 1, z: 1} - - name: LeftArmUpper - parentName: LeftShoulder - position: {x: -0.17650497, y: 4.4408918e-17, z: 8.5265126e-16} - rotation: {x: -0.093105815, y: 0.4776732, z: -0.18754953, w: 0.8532203} - scale: {x: 1, y: 1, z: 1} - - name: LeftArmLower - parentName: LeftArmUpper - position: {x: -0.25680092, y: -0.000000007970641, z: 5.684342e-16} - rotation: {x: 0.00000017136334, y: -0.000000059604638, z: -0.29681414, w: 0.95493525} - scale: {x: 0.99999994, y: 0.9999999, z: 0.99999964} - - name: LeftArmLowerTwist1_jnt - parentName: LeftArmLower - position: {x: -0.099999994, y: 0, z: -1.4210854e-16} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: LeftArmLowerTwist2_jnt - parentName: LeftArmLower - position: {x: -0.19999999, y: -1.4210854e-16, z: -1.4210854e-16} - rotation: {x: -1.4210853e-14, y: -0, z: 1.021405e-14, w: 1} - scale: {x: 1.0000001, y: 1.0000001, z: 1.0000004} - - name: LeftArmLowerTwist3_jnt - parentName: LeftArmLower - position: {x: -0.25626543, y: 0, z: 0} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: LeftHandWrist - parentName: LeftArmLower - position: {x: -0.25626543, y: 0.000000011720011, z: 0} - rotation: {x: 0.66241205, y: 0.12008012, z: -0.034216613, w: 0.73866117} - scale: {x: 1, y: 1.0000007, z: 1.0000005} - - name: LeftHandIndexProximal - parentName: LeftHandWrist - position: {x: -0.09599624, y: 0.0073164543, z: -0.02355068} - rotation: {x: 0.030682534, y: 0.018855821, z: -0.04328146, w: 0.9984137} - scale: {x: 1, y: 1.0000006, z: 1.0000006} - - name: LeftHandIndexIntermediate - parentName: LeftHandIndexProximal - position: {x: -0.0379273, y: -1.4210854e-16, z: 0} - rotation: {x: -0.025852479, y: 0.007115821, z: -0.0032927024, w: 0.99963504} - scale: {x: 1.0000001, y: 1.0000001, z: 1.0000004} - - name: LeftHandIndexDistal - parentName: LeftHandIndexIntermediate - position: {x: -0.024303643, y: 4.2632563e-16, z: 4.2632563e-16} - rotation: {x: -0.016055599, y: 0.027149012, z: 0.07203376, w: 0.99690336} - scale: {x: 1.0000001, y: 0.9999998, z: 0.99999994} - - name: LeftHandIndexTip - parentName: LeftHandIndexDistal - position: {x: -0.011583036, y: -4.2632563e-16, z: -8.5265126e-16} - rotation: {x: -0, y: -0, z: -0.000000002590241, w: 1} - scale: {x: 0.99999976, y: 1, z: 0.99999994} - - name: LeftHandMiddleProximal - parentName: LeftHandWrist - position: {x: -0.09543732, y: 0.002604632, z: -0.0014387579} - rotation: {x: -0.0090666115, y: 0.051465645, z: -0.051835876, w: 0.99728745} - scale: {x: 1, y: 1.0000005, z: 1.0000005} - - name: LeftHandMiddleIntermediate - parentName: LeftHandMiddleProximal - position: {x: -0.04292699, y: -1.4210854e-16, z: 0} - rotation: {x: -0.011228377, y: 0.004379008, z: 0.0019784556, w: 0.9999255} - scale: {x: 0.9999998, y: 0.9999998, z: 0.9999997} - - name: LeftHandMiddleDistal - parentName: LeftHandMiddleIntermediate - position: {x: -0.027549583, y: 5.684342e-16, z: 1.4210854e-16} - rotation: {x: -0.034319606, y: 0.004611688, z: 0.09300699, w: 0.9950631} - scale: {x: 1.0000001, y: 1.0000004, z: 1.0000005} - - name: LeftHandMiddleTip - parentName: LeftHandMiddleDistal - position: {x: -0.0122034745, y: -2.842171e-16, z: 2.842171e-16} - rotation: {x: -0, y: -0, z: -0.00000000136788, w: 1} - scale: {x: 1, y: 1.0000002, z: 1.0000005} - - name: LeftHandPinkyMeta - parentName: LeftHandWrist - position: {x: -0.034073558, y: 0.009419835, z: 0.022998573} - rotation: {x: -0.2007117, y: 0.31314307, z: -0.07369629, w: 0.9253244} - scale: {x: 1, y: 1.0000002, z: 1.0000001} - - name: LeftHandPinkyProximal - parentName: LeftHandPinkyMeta - position: {x: -0.04565054, y: 0.0000009982332, z: -0.0000021940255} - rotation: {x: 0.42929384, y: -0.35590473, z: -0.019633245, w: 0.8298513} - scale: {x: 0.99999994, y: 1, z: 1.0000004} - - name: LeftHandPinkyIntermediate - parentName: LeftHandPinkyProximal - position: {x: -0.030720409, y: 4.2632563e-16, z: 1.4210854e-16} - rotation: {x: -0.03761652, y: 0.042937793, z: 0.013286165, w: 0.998281} - scale: {x: 0.99999994, y: 1.0000001, z: 1.0000001} - - name: LeftHandPinkyDistal - parentName: LeftHandPinkyIntermediate - position: {x: -0.020311384, y: -4.2632563e-16, z: 0} - rotation: {x: 0.000644572, y: -0.049170632, z: 0.024018465, w: 0.99850136} - scale: {x: 1, y: 1.0000001, z: 1.0000002} - - name: LeftHandPinkyTip - parentName: LeftHandPinkyDistal - position: {x: -0.011908775, y: 2.842171e-16, z: -4.2632563e-16} - rotation: {x: -0, y: -0, z: -7.5306145e-10, w: 1} - scale: {x: 1.0000002, y: 1.0000002, z: 1.0000005} - - name: LeftHandRingProximal - parentName: LeftHandWrist - position: {x: -0.08869379, y: 0.006529307, z: 0.017465241} - rotation: {x: -0.053159505, y: 0.12310373, z: -0.049813434, w: 0.98971623} - scale: {x: 1, y: 1.0000004, z: 1.0000005} - - name: LeftHandRingIntermediate - parentName: LeftHandRingProximal - position: {x: -0.0389961, y: 0, z: -4.2632563e-16} - rotation: {x: -0.033632584, y: 0.002789706, z: -0.005676348, w: 0.99941427} - scale: {x: 1.0000001, y: 1.0000004, z: 1.0000006} - - name: LeftHandRingDistal - parentName: LeftHandRingIntermediate - position: {x: -0.026573397, y: -1.4210854e-16, z: 0} - rotation: {x: -0.0034777145, y: -0.029179426, z: 0.025028756, w: 0.9992548} - scale: {x: 1.0000001, y: 1.0000008, z: 1.0000007} - - name: LeftHandRingTip - parentName: LeftHandRingDistal - position: {x: -0.01193941, y: 1.4210854e-16, z: 1.4210854e-16} - rotation: {x: -2.3283059e-10, y: -0, z: 0.0000000010477377, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: LeftHandThumbTrapezium - parentName: LeftHandWrist - position: {x: -0.020069301, y: 0.011554099, z: -0.0104965195} - rotation: {x: 0.37538618, y: -0.4245839, z: 0.0077786148, w: 0.8238649} - scale: {x: 1.0000002, y: 1.0000006, z: 1.0000001} - - name: LeftHandThumbMeta - parentName: LeftHandThumbTrapezium - position: {x: -0.024852559, y: 0, z: -7.105427e-17} - rotation: {x: 0.26023114, y: -0.024330731, z: -0.12567794, w: 0.9570229} - scale: {x: 1.0000002, y: 1.0000001, z: 1} - - name: LeftHandThumbProximal - parentName: LeftHandThumbMeta - position: {x: -0.03251291, y: 0, z: 0} - rotation: {x: -0.082704164, y: 0.076961584, z: 0.084062286, w: 0.9900356} - scale: {x: 1.0000004, y: 1.0000004, z: 1.0000001} - - name: LeftHandThumbDistal - parentName: LeftHandThumbProximal - position: {x: -0.03379309, y: 0, z: -1.4210854e-16} - rotation: {x: 0.08350567, y: -0.06501574, z: 0.05827395, w: 0.9926752} - scale: {x: 1.0000004, y: 1.0000007, z: 1.0000004} - - name: LeftHandThumbTip - parentName: LeftHandThumbDistal - position: {x: -0.014863368, y: 0, z: 2.842171e-16} - rotation: {x: -0, y: -0, z: 4.6566123e-10, w: 1} - scale: {x: 1.0000001, y: 1.0000002, z: 1.0000001} - - name: LeftArmUpperTwist1_jnt - parentName: LeftArmUpper - position: {x: -0.089999996, y: 0, z: -1.4210854e-16} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: LeftArmUpperTwist2_jnt - parentName: LeftArmUpper - position: {x: -0.17999999, y: 0, z: -1.4210854e-16} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: LeftArmUpperTwist3_jnt - parentName: LeftArmUpper - position: {x: -0.25680092, y: -0.000000007970641, z: 7.105427e-16} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: Neck - parentName: Chest - position: {x: -0.12540093, y: 0.04045652, z: -8.265321e-17} - rotation: {x: -0, y: -0, z: -8.881783e-16, w: 1} - scale: {x: 1.0000001, y: 1.0000001, z: 1} - - name: Head - parentName: Neck - position: {x: -0.06931999, y: 0.0138437785, z: 6.795974e-17} - rotation: {x: 0.04030306, y: -0.156524, z: 0.13941272, w: 0.9769545} - scale: {x: 1.0000004, y: 1.0000006, z: 1.0000005} - - name: LeftEye - parentName: Head - position: {x: -0.09639899, y: 0.080643415, z: 0.041476633} - rotation: {x: -0.73952055, y: 0.67223424, z: 0.025746575, w: 0.023402775} - scale: {x: 1, y: 0.99999994, z: 1} - - name: pedalA1_L - parentName: Head - position: {x: -0.18901998, y: 0.07407234, z: 0.028385388} - rotation: {x: -0.05962082, y: 0.15862526, z: 0.3473614, w: 0.9222926} - scale: {x: 1.0000001, y: 0.99999994, z: 1.0000001} - - name: pedalA2_L - parentName: pedalA1_L - position: {x: -0.038098708, y: 2.842171e-16, z: 7.105427e-17} - rotation: {x: 0.0007027499, y: -0.005542561, z: 0.12582739, w: 0.99203646} - scale: {x: 1, y: 1, z: 1.0000001} - - name: pedalA3_L - parentName: pedalA2_L - position: {x: -0.034144375, y: 2.842171e-16, z: 1.4210854e-16} - rotation: {x: 0.0021009704, y: -0.023252616, z: 0.08994647, w: 0.99567294} - scale: {x: 1, y: 1, z: 0.99999994} - - name: pedalA4_L - parentName: pedalA3_L - position: {x: -0.036823068, y: -5.684342e-16, z: -2.842171e-16} - rotation: {x: 0.006632045, y: -0.11686568, z: 0.05626597, w: 0.9915305} - scale: {x: 0.99999994, y: 1.0000001, z: 0.9999998} - - name: pedalA5_L - parentName: pedalA4_L - position: {x: -0.03285584, y: -5.684342e-16, z: -7.105427e-17} - rotation: {x: -0, y: -0, z: 6.9849176e-10, w: 1} - scale: {x: 0.99999994, y: 0.99999994, z: 0.99999994} - - name: pedalA1_R - parentName: Head - position: {x: -0.18902488, y: 0.07407208, z: -0.0283854} - rotation: {x: 0.15862525, y: 0.05962076, z: -0.9222926, w: 0.34736133} - scale: {x: 1.0000001, y: 1.0000002, z: 1.0000002} - - name: pedalA2_R - parentName: pedalA1_R - position: {x: 0.038092095, y: 0.0000053548583, z: -0.000002382847} - rotation: {x: 0.0007028281, y: -0.00554252, z: 0.1258275, w: 0.9920364} - scale: {x: 1.0000001, y: 1.0000002, z: 1} - - name: pedalA3_R - parentName: pedalA2_R - position: {x: 0.034147833, y: -0.000004498287, z: 0.0000016172912} - rotation: {x: 0.0021009243, y: -0.023252625, z: 0.08994635, w: 0.99567294} - scale: {x: 1.0000002, y: 1.0000006, z: 1.0000006} - - name: pedalA4_R - parentName: pedalA3_R - position: {x: 0.0368207, y: 0.000004383013, z: -0.0000012474314} - rotation: {x: -0.0066320524, y: 0.11686569, z: -0.056266066, w: -0.9915305} - scale: {x: 1.0000006, y: 1.0000011, z: 1.0000002} - - name: pedalA5_R - parentName: pedalA4_R - position: {x: 0.03285604, y: -0.00000043235696, z: 0.000000014339509} - rotation: {x: -0, y: -0, z: 0.0000000016298142, w: 1} - scale: {x: 1.0000002, y: 1.0000002, z: 1.0000004} - - name: pedalB1_L - parentName: Head - position: {x: -0.15757503, y: 0.05896424, z: 0.06996904} - rotation: {x: 0.31234065, y: 0.45579147, z: 0.2580539, w: 0.79253125} - scale: {x: 1, y: 1.0000002, z: 1.0000005} - - name: pedalB2_L - parentName: pedalB1_L - position: {x: -0.036644474, y: 3.5527136e-17, z: 0} - rotation: {x: -0.0015076696, y: 0.016709385, z: 0.08986209, w: 0.9958129} - scale: {x: 1.0000001, y: 1.0000001, z: 1.0000004} - - name: pedalB3_L - parentName: pedalB2_L - position: {x: -0.040783122, y: 0, z: 0} - rotation: {x: 0.0073505975, y: 0.068240635, z: -0.1068436, w: 0.9919041} - scale: {x: 0.99999994, y: 1.0000002, z: 1.0000002} - - name: pedalB4_L - parentName: pedalB3_L - position: {x: -0.027589377, y: -2.4868996e-16, z: 0} - rotation: {x: 0.0037841368, y: 0.06298778, z: -0.059848454, w: 0.99621105} - scale: {x: 1.0000002, y: 1.0000004, z: 1.0000004} - - name: pedalB5_L - parentName: pedalB4_L - position: {x: -0.031231984, y: 1.4210854e-16, z: 8.5265126e-16} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: pedalB1_R - parentName: Head - position: {x: -0.15757501, y: 0.058964483, z: -0.069969} - rotation: {x: -0.45579147, y: 0.31234074, z: 0.7925312, w: -0.25805387} - scale: {x: 1.0000002, y: 1.0000007, z: 1.0000004} - - name: pedalB2_R - parentName: pedalB1_R - position: {x: 0.036643606, y: 0.00000026341073, z: -0.0000018644686} - rotation: {x: -0.0015077738, y: 0.01670934, z: 0.08986216, w: 0.99581295} - scale: {x: 1, y: 1.0000002, z: 1.0000002} - - name: pedalB3_R - parentName: pedalB2_R - position: {x: 0.040784497, y: -0.00000044807544, z: 0.0000026029657} - rotation: {x: 0.0073506595, y: 0.06824066, z: -0.10684368, w: 0.991904} - scale: {x: 1, y: 1.0000001, z: 1.0000002} - - name: pedalB4_R - parentName: pedalB3_R - position: {x: 0.02758738, y: 0.00000012849632, z: -0.0000054013} - rotation: {x: 0.0037841126, y: 0.06298781, z: -0.059848364, w: 0.99621105} - scale: {x: 1.0000001, y: 1.0000005, z: 1} - - name: pedalB5_R - parentName: pedalB4_R - position: {x: 0.031233242, y: 0.00000021207657, z: 0.0000062550835} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: pedalC1_L - parentName: Head - position: {x: -0.107264124, y: 0.045420088, z: 0.082003996} - rotation: {x: 0.4405881, y: 0.26655972, z: 0.020931562, w: 0.85696566} - scale: {x: 1, y: 1.0000002, z: 1.0000001} - - name: pedalC2_L - parentName: pedalC1_L - position: {x: -0.035671502, y: -1.7763568e-17, z: 0} - rotation: {x: -0.038314994, y: 0.071041696, z: -0.022893054, w: 0.99647427} - scale: {x: 1.0000001, y: 1.0000001, z: 1.0000004} - - name: pedalC3_L - parentName: pedalC2_L - position: {x: -0.036727104, y: -3.5527136e-17, z: -2.842171e-16} - rotation: {x: -0.0026415698, y: -0.05036085, z: -0.052318826, w: 0.99735636} - scale: {x: 1.0000001, y: 1, z: 1.0000002} - - name: pedalC4_L - parentName: pedalC3_L - position: {x: -0.030103153, y: -1.7763568e-17, z: 0} - rotation: {x: 0.0014031789, y: -0.089690246, z: 0.015585746, w: 0.9958468} - scale: {x: 1.0000001, y: 1.0000004, z: 1.0000005} - - name: pedalC5_L - parentName: pedalC4_L - position: {x: -0.033073757, y: 1.7763568e-17, z: -2.842171e-16} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: pedalC1_R - parentName: Head - position: {x: -0.107268296, y: 0.045419693, z: -0.082004} - rotation: {x: -0.52960336, y: 0.41708955, z: 0.6960527, w: -0.2471182} - scale: {x: 1.0000002, y: 1.0000004, z: 1.0000001} - - name: pedalC2_R - parentName: pedalC1_R - position: {x: 0.035671618, y: -0.0000000095021155, z: 0.000000093630184} - rotation: {x: -0.038315088, y: 0.07104172, z: -0.022892952, w: 0.99647427} - scale: {x: 0.99999994, y: 0.99999994, z: 1} - - name: pedalC3_R - parentName: pedalC2_R - position: {x: 0.036725037, y: -0.0000006093943, z: -0.000007657373} - rotation: {x: -0.0026415102, y: -0.050360717, z: -0.05231888, w: 0.9973563} - scale: {x: 1, y: 1.0000001, z: 1.0000001} - - name: pedalC4_R - parentName: pedalC3_R - position: {x: 0.030105362, y: 0.0000010914362, z: 0.000007049058} - rotation: {x: 0.0014030645, y: -0.08969027, z: 0.015585772, w: 0.9958468} - scale: {x: 0.99999994, y: 1.0000001, z: 0.99999994} - - name: pedalC5_R - parentName: pedalC4_R - position: {x: 0.03306995, y: -0.0000013499729, z: -0.0000073903566} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: pedalD1_L - parentName: Head - position: {x: -0.08135567, y: 0.029088823, z: 0.08131405} - rotation: {x: 0.3824446, y: 0.6757835, z: 0.3509121, w: 0.5233674} - scale: {x: 1.0000002, y: 1.0000002, z: 1.0000004} - - name: pedalD2_L - parentName: pedalD1_L - position: {x: -0.04388904, y: 3.5527136e-17, z: -5.684342e-16} - rotation: {x: -0.003189891, y: -0.078433834, z: -0.040514927, w: 0.99609065} - scale: {x: 1, y: 1.0000004, z: 1.0000004} - - name: pedalD3_L - parentName: pedalD2_L - position: {x: -0.03287495, y: 0, z: 0} - rotation: {x: 0.00048070308, y: 0.008389838, z: -0.05724818, w: 0.9983247} - scale: {x: 1.0000001, y: 1, z: 1.0000002} - - name: pedalD4_L - parentName: pedalD3_L - position: {x: -0.025873967, y: 0, z: 2.842171e-16} - rotation: {x: -0.008314494, y: 0.21168374, z: 0.038358793, w: 0.9765498} - scale: {x: 1.0000001, y: 1.0000005, z: 1.0000002} - - name: pedalD5_L - parentName: pedalD4_L - position: {x: -0.031726785, y: 1.4210854e-16, z: 0} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: pedalD1_R - parentName: Head - position: {x: -0.081357144, y: 0.029088633, z: -0.081314} - rotation: {x: -0.6358174, y: 0.18100674, z: 0.7488734, w: -0.046491127} - scale: {x: 1, y: 1, z: 1.0000002} - - name: pedalD2_R - parentName: pedalD1_R - position: {x: 0.043888584, y: 0.00000093065347, z: 0.0000028985098} - rotation: {x: 0.00031921823, y: -0.07723111, z: -0.08443263, w: 0.9934317} - scale: {x: 1, y: 1, z: 1.0000001} - - name: pedalD3_R - parentName: pedalD2_R - position: {x: 0.032874923, y: -0.0000013607378, z: -0.000004782389} - rotation: {x: 0.0004806979, y: 0.008389874, z: -0.057248246, w: 0.99832463} - scale: {x: 1.0000001, y: 1.0000002, z: 1.0000004} - - name: pedalD4_R - parentName: pedalD3_R - position: {x: 0.025873668, y: 0.000000650432, z: 0.00000095019965} - rotation: {x: -0.019660642, y: 0.08423319, z: 0.06598837, w: 0.9940643} - scale: {x: 1.0000001, y: 1.0000005, z: 1.0000004} - - name: pedalD5_R - parentName: pedalD4_R - position: {x: 0.031727757, y: -0.00000092986284, z: -0.0000012576362} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: pedalE1_L - parentName: Head - position: {x: -0.054470837, y: 0.030261306, z: 0.07645104} - rotation: {x: 0.30201444, y: 0.6835133, z: 0.5251743, w: 0.40717188} - scale: {x: 1.0000001, y: 1, z: 1.0000001} - - name: pedalE2_L - parentName: pedalE1_L - position: {x: -0.035615966, y: 3.5527136e-17, z: -2.842171e-16} - rotation: {x: 0.00013248621, y: 0.030184593, z: -0.004361495, w: 0.99953485} - scale: {x: 0.99999994, y: 1.0000001, z: 1.0000002} - - name: pedalE3_L - parentName: pedalE2_L - position: {x: -0.028844701, y: 3.5527136e-17, z: -2.842171e-16} - rotation: {x: -0.016802592, y: 0.20743491, z: 0.07896706, w: 0.97491163} - scale: {x: 1.0000002, y: 1.0000005, z: 1} - - name: pedalE4_L - parentName: pedalE3_L - position: {x: -0.017558865, y: 4.4408918e-17, z: 2.842171e-16} - rotation: {x: 0.023072949, y: -0.18256979, z: 0.12323801, w: 0.9751658} - scale: {x: 1.0000004, y: 1.0000002, z: 1} - - name: pedalE5_L - parentName: pedalE4_L - position: {x: -0.026840098, y: 7.105427e-17, z: 0} - rotation: {x: -0, y: -0, z: -0, w: 1} - scale: {x: 1.0000001, y: 1.0000005, z: 1.0000001} - - name: pedalE1_R - parentName: Head - position: {x: -0.05446679, y: 0.030261718, z: -0.076450996} - rotation: {x: 0.6835133, y: -0.30201435, z: -0.40717182, w: 0.52517426} - scale: {x: 1.0000002, y: 1.0000004, z: 1.0000004} - - name: pedalE2_R - parentName: pedalE1_R - position: {x: 0.0356149, y: 0.000000006720624, z: 0.000002581053} - rotation: {x: 0.00013250113, y: 0.030184582, z: -0.0043613166, w: 0.99953485} - scale: {x: 1.0000002, y: 1.0000004, z: 1.0000005} - - name: pedalE3_R - parentName: pedalE2_R - position: {x: 0.028843941, y: -0.000000022925304, z: 0.0000013501387} - rotation: {x: 0.016802633, y: -0.2074349, z: -0.078966856, w: -0.9749117} - scale: {x: 1.0000001, y: 1, z: 1.0000001} - - name: pedalE4_R - parentName: pedalE3_R - position: {x: 0.017558595, y: 0.000000052151258, z: 0.0000002622886} - rotation: {x: 0.023072995, y: -0.18256974, z: 0.123238064, w: 0.97516584} - scale: {x: 1.0000001, y: 1.0000004, z: 1.0000001} - - name: pedalE5_R - parentName: pedalE4_R - position: {x: 0.026841117, y: -0.0000006223147, z: -0.000002005182} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: pedalF1_L - parentName: Head - position: {x: -0.04205154, y: 0.023377173, z: 0.06707798} - rotation: {x: -0.14725208, y: 0.74480194, z: 0.40470457, w: 0.509707} - scale: {x: 1.0000001, y: 1, z: 1.0000001} - - name: pedalF2_L - parentName: pedalF1_L - position: {x: -0.027799321, y: 0, z: 5.684342e-16} - rotation: {x: -0.07169218, y: 0.05513628, z: -0.113847025, w: 0.98937315} - scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001} - - name: pedalF3_L - parentName: pedalF2_L - position: {x: -0.018588457, y: 0, z: 1.4210854e-16} - rotation: {x: -0.010598379, y: 0.01686775, z: -0.009406415, w: 0.99975735} - scale: {x: 1.0000005, y: 1.0000004, z: 1} - - name: pedalF4_L - parentName: pedalF3_L - position: {x: -0.016333, y: -7.105427e-17, z: -3.5527136e-17} - rotation: {x: 0.019006247, y: -0.20657596, z: 0.089628205, w: 0.97413135} - scale: {x: 1.0000004, y: 1.0000005, z: 1} - - name: pedalF5_L - parentName: pedalF4_L - position: {x: -0.024877517, y: -2.1316282e-16, z: 1.4210854e-16} - rotation: {x: -0, y: -0, z: 4.6566134e-10, w: 1} - scale: {x: 0.99999994, y: 0.99999994, z: 1} - - name: pedalF1_R - parentName: Head - position: {x: -0.042055514, y: 0.023376817, z: -0.067077994} - rotation: {x: 0.65839666, y: -0.2932288, z: -0.31044427, w: 0.6198025} - scale: {x: 1.0000002, y: 1.0000001, z: 1.0000005} - - name: pedalF2_R - parentName: pedalF1_R - position: {x: 0.027804129, y: -0.00000006092411, z: -0.000007070838} - rotation: {x: 0.034035794, y: -0.24379855, z: -0.1340115, w: -0.9599192} - scale: {x: 0.99999994, y: 1.0000001, z: 0.99999994} - - name: pedalF3_R - parentName: pedalF2_R - position: {x: 0.018582985, y: 0.0000010183843, z: 0.000002968836} - rotation: {x: -0.008092336, y: 0.16204251, z: 0.04921902, w: 0.9855223} - scale: {x: 1.0000004, y: 1, z: 1.0000004} - - name: pedalF4_R - parentName: pedalF3_R - position: {x: 0.016335573, y: -0.00000066251914, z: -0.00000049842987} - rotation: {x: 0.019006249, y: -0.20657587, z: 0.08962831, w: 0.9741314} - scale: {x: 1.0000005, y: 1.0000002, z: 1.0000002} - - name: pedalF5_R - parentName: pedalF4_R - position: {x: 0.024877202, y: 0.00000015386338, z: 0.00000030317432} - rotation: {x: -0.0000000037252894, y: -0, z: -0.000000014901158, w: 1} - scale: {x: 0.99999994, y: 0.9999998, z: 1} - - name: RightEye - parentName: Head - position: {x: -0.09639899, y: 0.080643415, z: -0.041502442} - rotation: {x: 0.6722343, y: 0.7395205, z: -0.023402778, w: 0.025746647} - scale: {x: 1, y: 1.0000001, z: 0.99999994} - - name: Viewpoint - parentName: Head - position: {x: -0.09862352, y: 0.1182949, z: -0.0000049199994} - rotation: {x: 0.52324307, y: -0.47562245, z: -0.52324307, w: -0.47562245} - scale: {x: 1, y: 1, z: 1} - - name: RightShoulder - parentName: Chest - position: {x: -0.066512585, y: 0.09479429, z: -0.0282178} - rotation: {x: -0.66002935, y: 0.1770811, z: 0.69426274, w: -0.22583827} - scale: {x: 1, y: 1, z: 1} - - name: RightArmUpper - parentName: RightShoulder - position: {x: 0.1765048, y: -2.6645352e-17, z: 0} - rotation: {x: -0.09309796, y: 0.4776535, z: -0.1875573, w: 0.8532304} - scale: {x: 1, y: 1, z: 1} - - name: RightArmLower - parentName: RightArmUpper - position: {x: 0.25679636, y: 0.0000000101391375, z: -2.842171e-16} - rotation: {x: -0.00000008940697, y: -0.00000005960464, z: 0.29681027, w: -0.9549365} - scale: {x: 1.0000002, y: 1.0000004, z: 1.0000002} - - name: RightArmLowerTwist1_jnt - parentName: RightArmLower - position: {x: 0.099999994, y: 0, z: 0} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: RightArmLowerTwist2_jnt - parentName: RightArmLower - position: {x: 0.19999999, y: 0, z: 2.842171e-16} - rotation: {x: -7.1054265e-15, y: -3.5527133e-15, z: -5.3290697e-15, w: 1} - scale: {x: 0.99999994, y: 1.0000001, z: 1.0000004} - - name: RightArmLowerTwist3_jnt - parentName: RightArmLower - position: {x: 0.25627, y: 0, z: 2.842171e-16} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: RightHandWrist - parentName: RightArmLower - position: {x: 0.25627, y: -0.000000004506687, z: -0.000000009283036} - rotation: {x: -0.6534106, y: -0.11918222, z: 0.049257997, w: -0.7459383} - scale: {x: 0.9999999, y: 1.0000005, z: 1} - - name: RightHandIndexProximal - parentName: RightHandWrist - position: {x: 0.09599624, y: -0.0073164543, z: 0.02355068} - rotation: {x: 0.030682858, y: 0.018855637, z: -0.043281425, w: 0.9984137} - scale: {x: 1, y: 1, z: 1.0000001} - - name: RightHandIndexIntermediate - parentName: RightHandIndexProximal - position: {x: 0.0379273, y: 1.4210854e-16, z: -1.4210854e-16} - rotation: {x: -0.02585228, y: 0.0071161585, z: -0.0032927745, w: 0.99963504} - scale: {x: 1.0000001, y: 1, z: 1.0000001} - - name: RightHandIndexDistal - parentName: RightHandIndexIntermediate - position: {x: 0.024303643, y: 1.4210854e-16, z: 2.842171e-16} - rotation: {x: -0.016055742, y: 0.027148759, z: 0.072033964, w: 0.9969034} - scale: {x: 1, y: 0.99999994, z: 0.9999998} - - name: RightHandIndexTip - parentName: RightHandIndexDistal - position: {x: 0.011583036, y: -1.4210854e-16, z: -2.842171e-16} - rotation: {x: -0, y: -0, z: -0.0000000026775517, w: 1} - scale: {x: 1.0000001, y: 1.0000001, z: 1.0000001} - - name: RightHandMiddleProximal - parentName: RightHandWrist - position: {x: 0.095646605, y: -0.0025431544, z: 0.0017259055} - rotation: {x: -0.009066285, y: 0.051465582, z: -0.05183547, w: 0.99728745} - scale: {x: 1, y: 0.99999994, z: 1} - - name: RightHandMiddleIntermediate - parentName: RightHandMiddleProximal - position: {x: 0.04292699, y: 0, z: 0} - rotation: {x: -0.011228034, y: 0.004379056, z: 0.0019782057, w: 0.9999255} - scale: {x: 1.0000002, y: 1, z: 1} - - name: RightHandMiddleDistal - parentName: RightHandMiddleIntermediate - position: {x: 0.027549583, y: 0, z: -1.4210854e-16} - rotation: {x: -0.034319926, y: 0.0046116416, z: 0.093006805, w: 0.9950631} - scale: {x: 1, y: 1, z: 0.99999994} - - name: RightHandMiddleTip - parentName: RightHandMiddleDistal - position: {x: 0.0122034745, y: -2.842171e-16, z: 1.4210854e-16} - rotation: {x: -0, y: -4.6566118e-10, z: -0.0000000014551912, w: 1} - scale: {x: 1.0000001, y: 1.0000001, z: 0.99999994} - - name: RightHandPinkyMeta - parentName: RightHandWrist - position: {x: 0.034073558, y: -0.009419835, z: -0.022998573} - rotation: {x: -0.19855496, y: 0.32085145, z: -0.06888354, w: 0.92351794} - scale: {x: 1, y: 1.0000001, z: 0.9999997} - - name: RightHandPinkyProximal - parentName: RightHandPinkyMeta - position: {x: 0.04565054, y: -0.0000009982332, z: 0.0000021940255} - rotation: {x: 0.4397845, y: -0.37552333, z: -0.029564666, w: 0.81529} - scale: {x: 1, y: 1, z: 1} - - name: RightHandPinkyIntermediate - parentName: RightHandPinkyProximal - position: {x: 0.030720409, y: 1.4210854e-16, z: 4.2632563e-16} - rotation: {x: -0.03761653, y: 0.042937733, z: 0.013286147, w: 0.998281} - scale: {x: 1.0000002, y: 0.99999994, z: 1.0000001} - - name: RightHandPinkyDistal - parentName: RightHandPinkyIntermediate - position: {x: 0.020311384, y: -2.842171e-16, z: -2.842171e-16} - rotation: {x: 0.0006446576, y: -0.04917051, z: 0.024018904, w: 0.99850136} - scale: {x: 1, y: 1, z: 1.0000001} - - name: RightHandPinkyTip - parentName: RightHandPinkyDistal - position: {x: 0.011908775, y: 2.842171e-16, z: 1.4210854e-16} - rotation: {x: -0, y: -0, z: -3.456079e-10, w: 1} - scale: {x: 1.0000001, y: 0.99999994, z: 1.0000002} - - name: RightHandRingProximal - parentName: RightHandWrist - position: {x: 0.08869379, y: -0.006529307, z: -0.017465241} - rotation: {x: -0.05315939, y: 0.12310342, z: -0.04981332, w: 0.9897163} - scale: {x: 1, y: 1, z: 0.99999994} - - name: RightHandRingIntermediate - parentName: RightHandRingProximal - position: {x: 0.0389961, y: -2.842171e-16, z: 2.842171e-16} - rotation: {x: -0.0336325, y: 0.0027899144, z: -0.005676227, w: 0.9994143} - scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001} - - name: RightHandRingDistal - parentName: RightHandRingIntermediate - position: {x: 0.026573397, y: 4.2632563e-16, z: -1.4210854e-16} - rotation: {x: -0.0034774202, y: -0.02917929, z: 0.025028776, w: 0.99925476} - scale: {x: 1, y: 0.9999998, z: 0.99999994} - - name: RightHandRingTip - parentName: RightHandRingDistal - position: {x: 0.01193941, y: -4.2632563e-16, z: 0} - rotation: {x: -2.3283062e-10, y: -0, z: 7.9307927e-10, w: 1} - scale: {x: 0.9999998, y: 1, z: 1} - - name: RightHandThumbTrapezium - parentName: RightHandWrist - position: {x: 0.020069301, y: -0.011554099, z: 0.0104965195} - rotation: {x: 0.37538707, y: -0.42458397, z: 0.007779062, w: 0.8238644} - scale: {x: 0.9999998, y: 1, z: 1.0000001} - - name: RightHandThumbMeta - parentName: RightHandThumbTrapezium - position: {x: 0.024852559, y: -1.4210854e-16, z: 1.7763567e-16} - rotation: {x: 0.26023072, y: -0.024331093, z: -0.12567778, w: 0.957023} - scale: {x: 1.0000001, y: 1.0000004, z: 0.9999997} - - name: RightHandThumbProximal - parentName: RightHandThumbMeta - position: {x: 0.03251291, y: 0, z: 1.4210854e-16} - rotation: {x: -0.08270432, y: 0.076961555, z: 0.08406199, w: 0.99003565} - scale: {x: 1.0000002, y: 0.9999998, z: 1.0000001} - - name: RightHandThumbDistal - parentName: RightHandThumbProximal - position: {x: 0.03379309, y: 1.4210854e-16, z: -1.4210854e-16} - rotation: {x: 0.08350631, y: -0.06501554, z: 0.058274046, w: 0.99267507} - scale: {x: 1.0000001, y: 1.0000001, z: 1.0000001} - - name: RightHandThumbTip - parentName: RightHandThumbDistal - position: {x: 0.014863368, y: 0.000000057389798, z: 0.0000000019459812} - rotation: {x: -0.00000013923271, y: 0.000004119705, z: 1, w: -0.00000003073364} - scale: {x: 1.0000001, y: 1.0000001, z: 1} - - name: RightArmUpperTwist1_jnt - parentName: RightArmUpper - position: {x: 0.089999996, y: 1.1046719e-16, z: -3.563816e-16} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: RightArmUpperTwist2_jnt - parentName: RightArmUpper - position: {x: 0.17999999, y: 1.1046719e-16, z: -3.563816e-16} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} - - name: RightArmUpperTwist3_jnt - parentName: RightArmUpper - position: {x: 0.25679636, y: 0.0000000101391375, z: -2.842171e-16} - rotation: {x: 0, y: -0, z: -0, w: 1} - scale: {x: 1, y: 1, z: 1} + human: [] + skeleton: [] armTwist: 0.5 foreArmTwist: 0.5 upperLegTwist: 0.5 @@ -1119,15 +141,15 @@ ModelImporter: globalScale: 1 rootMotionBoneName: hasTranslationDoF: 0 - hasExtraRoot: 1 + hasExtraRoot: 0 skeletonHasParents: 1 lastHumanDescriptionAvatarSource: {instanceID: 0} autoGenerateAvatarMappingIfUnspecified: 1 - animationType: 3 + animationType: 2 humanoidOversampling: 1 - avatarSetup: 1 + avatarSetup: 0 addHumanoidExtraRootOnlyWhenUsingAvatar: 1 - remapMaterialsIfMaterialImportModeIsNone: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 additionalBone: 0 userData: assetBundleName: diff --git a/Samples/Prefabs/Aura/AuraWithTongue - FirstPerson.prefab b/Samples/Prefabs/Aura/AuraWithTongue - FirstPerson.prefab new file mode 100644 index 00000000..645dbc1f --- /dev/null +++ b/Samples/Prefabs/Aura/AuraWithTongue - FirstPerson.prefab @@ -0,0 +1,122 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &7986394283991802289 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 843904557, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: _blendshapeModifier + value: + objectReference: {fileID: 0} + - target: {fileID: 869131088346887740, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6805427722635360083, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Name + value: AuraWithTongue - FirstPerson + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 908253765, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + - {fileID: 908253762, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + - {fileID: 908253767, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + - {fileID: 908253769, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} +--- !u!1 &1805514783137291426 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8636537841303158035, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 7986394283991802289} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1727280464575251453 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1805514783137291426} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 28dd40a6d175d01498e0477360d6c070, type: 3} + m_Name: + m_EditorClassIdentifier: + Eye: 1 + ConfidenceThreshold: 0 + ApplyPosition: 0 + ApplyRotation: 1 + ReferenceFrame: {fileID: 2879822183606112578} + TrackingMode: 0 +--- !u!4 &2879822183606112578 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5269897990053261555, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 7986394283991802289} + m_PrefabAsset: {fileID: 0} +--- !u!1 &8033380976643437955 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 119646820052554802, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 7986394283991802289} + m_PrefabAsset: {fileID: 0} +--- !u!114 &9219359636438138095 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8033380976643437955} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 28dd40a6d175d01498e0477360d6c070, type: 3} + m_Name: + m_EditorClassIdentifier: + Eye: 0 + ConfidenceThreshold: 0 + ApplyPosition: 0 + ApplyRotation: 1 + ReferenceFrame: {fileID: 2879822183606112578} + TrackingMode: 0 diff --git a/Samples/Prefabs/Aura/AuraWithTongue - FirstPerson.prefab.meta b/Samples/Prefabs/Aura/AuraWithTongue - FirstPerson.prefab.meta new file mode 100644 index 00000000..8271768f --- /dev/null +++ b/Samples/Prefabs/Aura/AuraWithTongue - FirstPerson.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7e1dc9106b4ef4227a0160436ba98ced +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/Prefabs/Aura/AuraWithTongue - Mirrored.prefab b/Samples/Prefabs/Aura/AuraWithTongue - Mirrored.prefab new file mode 100644 index 00000000..d7614273 --- /dev/null +++ b/Samples/Prefabs/Aura/AuraWithTongue - Mirrored.prefab @@ -0,0 +1,1115 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &4586958074314054654 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 843904557, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: _faceExpressions + value: + objectReference: {fileID: 0} + - target: {fileID: 908253762, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: _ovrFaceExpressions + value: + objectReference: {fileID: 0} + - target: {fileID: 908253767, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: _duplicateLayerName + value: MirroredCharacter + objectReference: {fileID: 0} + - target: {fileID: 1148030268, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: _faceExpressions + value: + objectReference: {fileID: 0} + - target: {fileID: 74049967219688545, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 118528947505886864, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 119646820052554802, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 153665023725729072, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 224145648162174478, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 283015123308733547, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 311740972759350922, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 386827104656738250, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 439208326490150574, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 529431700278927718, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 566240200379059556, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 605534620011185648, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 745961330339147757, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 794459677015650725, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 857413943628313907, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 869131088346887740, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1000304773713604881, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1093930744852763788, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1157776800282042439, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1158241425439945308, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1291719120759248513, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1334201964728953477, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1357359163193536185, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1432595287416309425, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1638960394841273732, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1779247091487872276, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1807421551552812759, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1810806181035740610, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1837674896288033529, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1911516088436413081, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1988913533242274581, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2062920148279043650, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2126824905938023402, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2149536801913654565, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2150058818125499861, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2210471340188888672, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2251077720397672694, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2311684165967553280, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2418337792306806378, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2494232498981730089, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2613637064111036097, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2628490292025923946, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2760489799992955608, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2763289309980930536, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2817476488100005803, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2827918957081632155, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2838437542854282514, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2855604362987105491, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2877431785538445201, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2886591267328784620, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2959162534645796842, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2963721737663026021, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2999903248693189977, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 3169054110493745329, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 3227146748073739620, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 3242316007912683244, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 3248336518432537246, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 3289751141833769306, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 3330504799668598168, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 3511945791261688114, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 3573081386394456025, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 3582958703521715555, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 3597147028715313926, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 3626154662605292807, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 3630088939099103813, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 3770431529012783346, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 3771376975364592410, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 3851356669571092894, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4020342480481038901, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4088220486719599306, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4173723693349248765, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4236598415038638762, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4250241066608528350, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4252449883574291969, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4304137794774430471, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4314002648610906104, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4403041871974434120, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4501214080512861202, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4502245707215001553, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4621575407958664350, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4703251304792450460, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4716771243956932617, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4790525481008175005, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4884631947727239541, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 4909382173021845204, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5058356032196749086, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5119613922320847805, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5125542810253987685, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5126902457531905862, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5312425055862163957, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5319071210925421616, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5321598968265469933, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5339048159208937027, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5497529564172579121, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5497702858031666603, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5501729867177329874, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5519975346594975446, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5538084559463564848, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5590998164193405067, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5605361599396980155, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5611029495217200204, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5618400391326249265, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5657723948569980427, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5660630544377888079, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5755469830263317571, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5761692701172777736, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5767626176629492078, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5833347388574845624, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5855025665010895651, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5875214427689306968, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5922454588247953501, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5997613527901905846, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6018683061141748002, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6105564661332426222, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6135464623545193271, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6141340723736669673, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6150708498778673716, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6169470576593669945, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6233129136226455233, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6285439560093124033, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6299412198515547699, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6307493566649777332, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6329750965233301166, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6410531656282777608, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6454080479054029214, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6573652607566349905, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6648706169458316966, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6689336529358012629, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6805427722635360083, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Name + value: AuraWithTongue - Mirrored + objectReference: {fileID: 0} + - target: {fileID: 6805427722635360083, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6811297119214058933, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6833631927649383894, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6873868447711041250, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 6939682085731690198, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7083033545151276370, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7103226107187506448, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7106826718427586342, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7130914041773222903, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7146937943641289251, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7189858974742101081, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7250578709885026264, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7266056493189691563, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7281886716479359433, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7330121820231816633, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7331601373554505485, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7406354485741138314, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7500645959394812849, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7621284665085255797, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7622002563016512267, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7646355678706252309, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7658236492508163452, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7661308290547641729, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7663831614448417068, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7665725577851039658, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7674732393965471578, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7683601090175889886, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7687556324351957489, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7809701005322292308, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7849919211959101337, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7923769013962390945, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 7971849566028282398, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 8025119514424559480, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 8039685790670277650, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 8146786555766312081, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 8177031365125569856, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 8225985912722293236, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 8233867028577265232, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 8396027223327800835, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 8549315493729574629, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 8636537841303158035, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 8815540480774868323, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 9072128315617248955, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 9076336084446966368, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + propertyPath: m_Layer + value: 11 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 908253763, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} +--- !u!4 &686465285796487152 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3904329070637220878, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &736733105935125031 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3859937598849012185, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &757141761675154647 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3830819987583110953, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &1034138632089815931 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3598896770637205637, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &1213291289765763780 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3422278247831372090, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &1594072230638739637 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3005992427230083915, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &1596007284917842544 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2994346451891382670, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &2376493534750305505 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2257189995743065887, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &2778274522199169339 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1812223747632546501, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3172210665934176505 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1418021299970579207, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3194920441808397388 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1440735330008760242, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3490989522449275274 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1142324864039404148, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3567404404089032837 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1020577100832000891, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3689526480303493248 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 908586767777155966, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3918570730952484860 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 705280916094925826, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3927434639022015541 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 660106022922330059, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4013406995184450555 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 583878561129046021, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4077447972099422666 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 521897775873794612, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4116015844866693355 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 483891264865026837, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4551357080254297585 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 36465537841982991, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!114 &4586958074618282422 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 908253768, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7050836453888093357} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 674a40251fe8ad841b18517ac5209957, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &4635662550782876303 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 9222537059492151665, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4690683456867563877 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 9128939177910280859, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4894945970183901895 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8954969687411902777, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &5074190762774184805 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8773860405498878107, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &5551835949387166331 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8260784178361952645, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &6434949764680087120 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7414524395095600558, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &6454510493255468716 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7366517934922882386, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &6730419698328719704 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7120022917516462758, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!1 &7050836453888093357 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 6805427722635360083, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!114 &9113924184540537749 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7050836453888093357} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88d4464cfaf7bd54f8bbe081ec2858c8, type: 3} + m_Name: + m_EditorClassIdentifier: + _skeletonToCopy: {fileID: 0} + _mySkeleton: {fileID: 4586958074618282422} + _mirroredBonePairs: + - Name: RightFootTip + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 6730419698328719704} + - Name: RightFootBall + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 2376493534750305505} + - Name: RightFootAnkle + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 3194920441808397388} + - Name: RightLegLower + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 736733105935125031} + - Name: RightLegUpper + ShouldBeReparented: 1 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 6434949764680087120} + - Name: LeftFootTip + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 1596007284917842544} + - Name: LeftFootBall + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 3918570730952484860} + - Name: LeftFootAnkle + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 4635662550782876303} + - Name: LeftLegLower + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 3172210665934176505} + - Name: LeftLegUpper + ShouldBeReparented: 1 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 1594072230638739637} + - Name: RightArmUpperTwist3_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 9072355591611486591} + - Name: RightArmUpperTwist2_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 4894945970183901895} + - Name: RightArmUpperTwist1_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 5074190762774184805} + - Name: RightArmLowerTwist3_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 7678141648710171471} + - Name: RightArmLowerTwist2_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 3689526480303493248} + - Name: RightArmLowerTwist1_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 4690683456867563877} + - Name: LeftArmUpperTwist3_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 2778274522199169339} + - Name: LeftArmUpperTwist2_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 8714088173187692010} + - Name: LeftArmUpperTwist1_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 4013406995184450555} + - Name: LeftArmLowerTwist3_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 3490989522449275274} + - Name: LeftArmLowerTwist2_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 686465285796487152} + - Name: LeftArmLowerTwist1_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 4116015844866693355} + - Name: RightLegUpperTwist3_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 5551835949387166331} + - Name: RightLegUpperTwist2_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 4551357080254297585} + - Name: RightLegUpperTwist1_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 8392301103519243809} + - Name: RightLegLowerTwist3_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 6454510493255468716} + - Name: RightLegLowerTwist2_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 3567404404089032837} + - Name: RightLegLowerTwist1_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 3927434639022015541} + - Name: LeftLegUpperTwist3_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 1213291289765763780} + - Name: LeftLegUpperTwist2_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 7797360399531655599} + - Name: LeftLegUpperTwist1_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 1034138632089815931} + - Name: LeftLegLowerTwist3_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 8038464032516053291} + - Name: LeftLegLowerTwist2_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 8298505480494692117} + - Name: LeftLegLowerTwist1_jnt + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 757141761675154647} + - Name: RightEye + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 7274321491654204752} + - Name: LeftEye + ShouldBeReparented: 0 + OriginalBone: {fileID: 0} + MirroredBone: {fileID: 4077447972099422666} +--- !u!4 &7274321491654204752 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6583051868888401582, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &7678141648710171471 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6135621465268625585, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &7797360399531655599 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6025235657357597265, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8038464032516053291 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5775438135467360981, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8298505480494692117 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5512987399671377131, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8392301103519243809 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5467184625971054047, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8714088173187692010 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5135949753528462868, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} +--- !u!4 &9072355591611486591 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4778140289205357185, guid: d1c1c3df6bc4b45a195b1167e582a299, type: 3} + m_PrefabInstance: {fileID: 4586958074314054654} + m_PrefabAsset: {fileID: 0} diff --git a/Samples/Prefabs/Aura/AuraWithTongue - Mirrored.prefab.meta b/Samples/Prefabs/Aura/AuraWithTongue - Mirrored.prefab.meta new file mode 100644 index 00000000..2772be55 --- /dev/null +++ b/Samples/Prefabs/Aura/AuraWithTongue - Mirrored.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b2e64c8c2ec8b4b9eb8f461a43f655ef +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/Prefabs/Aura/AuraWithTongue.prefab b/Samples/Prefabs/Aura/AuraWithTongue.prefab new file mode 100644 index 00000000..5a167298 --- /dev/null +++ b/Samples/Prefabs/Aura/AuraWithTongue.prefab @@ -0,0 +1,1417 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &5958497211192674818 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -9187311675338040737, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -9135976255755635936, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -9112162899851204172, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -9059866756016815942, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -8847213311776573770, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -8834057700521198420, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -8824090580276326461, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -8800922488687848399, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -8787781740469012500, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8483060724595547638, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -8330210511580512300, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -8226889819895194400, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -7964220922082757769, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -7669274321156274841, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -7597162764153275178, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -7275191544539839497, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -7250242683770438094, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -7247756668144458257, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -7114155410334496502, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -7102355875840840127, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -7049767359782943532, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -7031263384667599822, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -6978359981551623543, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -6969244799473730765, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -6741728132235619313, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_AABB.m_Extent.x + value: 0.77 + objectReference: {fileID: 0} + - target: {fileID: -6741728132235619313, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_AABB.m_Extent.y + value: 0.39 + objectReference: {fileID: 0} + - target: {fileID: -6741728132235619313, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_AABB.m_Extent.z + value: 0.67 + objectReference: {fileID: 0} + - target: {fileID: -6647341011961215341, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -6623228789760125721, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -6275833182358993055, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -6249027337035606044, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_AABB.m_Extent.x + value: 0.77 + objectReference: {fileID: 0} + - target: {fileID: -6249027337035606044, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_AABB.m_Extent.y + value: 0.39 + objectReference: {fileID: 0} + - target: {fileID: -6249027337035606044, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_AABB.m_Extent.z + value: 0.67 + objectReference: {fileID: 0} + - target: {fileID: -5817161771851515806, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -5760015293192989404, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -5754633688063498478, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -5744678673790311947, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -5693912362640117936, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -5318769512202406438, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -5255769767193543409, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -5179286785850223629, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -5124327918778751101, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -5121802671798308050, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -4939063806295643529, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -4895017703229870052, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -4760825935633101446, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -4696845344897202602, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -4663982866106796125, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -4596807174448504697, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -4516744880628527949, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -4421995551647307195, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -4421914896565340066, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -4369109466740368253, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -4019528200609998693, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -3772444221139886891, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -3738552444315474846, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -3635043825429054732, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -3502007488472250409, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -3417888921271828686, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -3360339094580564375, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -3190868877705097629, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -3123048421995488084, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -3068246765461813402, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -3033105116581368988, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -2785774523018559695, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -2677496477810667534, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -2158308666747434192, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -2078702375780907557, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -2063924548572147452, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -1809436757310643472, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -1694551467935407960, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -1654075460963305211, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -1626152230425487878, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -1581727209567094584, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -1385046003786240496, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -962621173081855742, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -918878582723120024, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -798833301433893910, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -787583832941566255, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -766063482299460205, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -752632295869245543, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -744929758659424855, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -651521477427225405, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -483459348493555021, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -355474614590220453, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -249806993824317542, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: -121649279680299794, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 196589208368137068, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 231972490029580634, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 284271545169117473, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 301829445866603715, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 517502094452491579, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 546441016348547381, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 570656904324732982, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 687532949370539091, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 802016374825675676, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 879964446727780279, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Name + value: AuraWithTongue + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 1037404087217703639, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 1077528731071372452, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 1210210663725047199, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 1338686176135294620, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 1424689787962333707, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 1438226631880634270, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 1477798217482579228, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 1555640984766758212, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 1566214835222321599, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 1776891774444346433, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2032408006933636105, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2035148579832936269, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2227812381793750736, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2232402486875594665, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2232645934766717747, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2264945832587597390, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2268383790481518521, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2348705538820639734, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2374601883188571218, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2579000279508907842, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2696513562693367569, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2752961484680983553, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 3411046842734644409, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 3564413288586655323, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 3575809268042201121, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 3674481763690114260, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 3780909940033665928, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 3920069319273640617, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 3965708993817108411, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 4016824697745884107, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 4040142142603492316, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 4049569322152316248, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 4084090168361365527, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 4094604841364776360, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 4104837714504476542, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 4226470360578124211, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 4284646550958561545, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 4405195559579928080, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 4485680105294507419, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 4640567248020186299, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 4903879512354799494, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 5272272565632825623, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 5332809968238436118, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 5417951504326533371, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 5445295071165155264, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 5625034782739049536, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 5706951741084809704, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 5720809515683333927, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 5885227124409531404, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 5923885189524427955, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_BlendShapeWeights.Array.size + value: 273 + objectReference: {fileID: 0} + - target: {fileID: 5977728229198574600, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_BlendShapeWeights.Array.size + value: 28 + objectReference: {fileID: 0} + - target: {fileID: 5986916506804157586, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 5988036544952753712, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 6260939611825697928, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 6336173898761326024, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 6407208591115249135, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 6464540652572523431, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 6746033335200931470, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 6827197251251715134, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 6868304169964944147, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 6976215515842226247, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 6981254320456765189, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 7136494920470486881, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 7312708399802071095, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 7414696043376941336, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 7476557953841388444, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 7515159913672278492, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 7616546876213642243, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 7736302562235454719, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 7839611609383722451, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 8046361220099247946, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 8083291293905714475, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 8430720343498348762, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 8490677609871296272, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 8559812759662826344, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 8845050780377150190, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 8904061298154248551, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 8908642337312114152, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 9113585226918236006, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 9157892405150321496, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 9197684690013794460, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + propertyPath: m_Layer + value: 10 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} +--- !u!137 &19700516057464330 stripped +SkinnedMeshRenderer: + m_CorrespondingSourceObject: {fileID: 5977728229198574600, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!137 &37448908620078769 stripped +SkinnedMeshRenderer: + m_CorrespondingSourceObject: {fileID: 5923885189524427955, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &212350093796120728 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5783394800387920538, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &516380830273578687 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6168339422179536061, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &707000664419376488 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -2630364969305827478, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &758901172713831459 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6357109309909218849, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &795181761269956707 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6465436499391679073, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &955083707410458949 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6913577617777828679, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &984851672163677696 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6852843402972134402, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &1457155681773549160 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -4141043383235347350, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &1710549222220524011 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -4247524672565025815, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &1861734701157625569 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5433276824401421539, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &2105735966768434709 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -3492042262321003497, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &2181416674842142737 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -3677990310633283053, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &2365906563176453751 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8243195762027945077, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &2429192723721041921 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8288571981961409027, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &2646810688624961043 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -717328083300307951, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &2709321220193578619 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -636796523939928967, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &2749544576043177145 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8401620812480405179, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &2829684828368952597 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8499940660641912599, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &2989519625185054489 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8920573021718922523, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3168899644715599634 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8740049587670682896, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3627133179606460417 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6982549524848992771, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3658704027229410439 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -2272481311773467003, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3732129352646794451 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -2198888584636164399, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3760441664403270005 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7394647125203510135, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3807668403238401120 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -1844404806445466014, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3835252908266019390 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -1762777071539367876, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4025658985667170609 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -1914357357991257293, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!137 &4138605516468963374 stripped +SkinnedMeshRenderer: + m_CorrespondingSourceObject: {fileID: -1450279550107696596, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4391987712531735864 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -1277988569044078790, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4464968837453615951 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8018118334481897805, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4634473240136128226 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1360123919412337888, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4679472325935167079 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1315058708315208805, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!1 &4716771243956932617 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1424689787962333707, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!114 &843904556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4716771243956932617} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a4e539bfcfffb47a0b39556956a8b609, type: 3} + m_Name: + m_EditorClassIdentifier: + _renderers: + - {fileID: 37448908620078769} + _drivenShapeTypes: 3 + _updateTime: 2 +--- !u!114 &843904557 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4716771243956932617} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fbd311f37031484c9a0a5202e7beedb, type: 3} + m_Name: + m_EditorClassIdentifier: + _faceExpressions: {fileID: 908253763} + _blendShapeStrengthMultiplier: 100 + _mappings: 000000000100000002000000030000000400000005000000060000000700000008000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000240000002500000026000000270000002800000029000000320000003200000032000000320000002a0000002b0000002c0000002d0000002e0000002f000000300000003100000033000000340000003500000036000000ffffffffffffffff3700000038000000ffffffffffffffffffffffffffffffff390000003a0000003b0000003c0000003d0000003e000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + retargetingType: 0 + _allowDuplicateMapping: 0 + _blendshapeModifier: {fileID: 908253765} + _combinationShapesTextAsset: {fileID: 0} +--- !u!4 &4745193184451865222 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1399077605911568516, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4831111096749225446 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -7945659987477069852, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &5002575547182775318 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1719357255493219860, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &5047845850698454021 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -7728923895653982713, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &5112408298856068227 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -7763579146615603583, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &5194566646911275178 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -7303119564941387096, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &5352529388243910722 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -7423950089311909312, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!1 &5501729867177329874 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 2227812381793750736, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1148030267 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5501729867177329874} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a4e539bfcfffb47a0b39556956a8b609, type: 3} + m_Name: + m_EditorClassIdentifier: + _renderers: + - {fileID: 19700516057464330} + _drivenShapeTypes: 3 + _updateTime: 2 +--- !u!114 &1148030268 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5501729867177329874} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fbd311f37031484c9a0a5202e7beedb, type: 3} + m_Name: + m_EditorClassIdentifier: + _faceExpressions: {fileID: 908253763} + _blendShapeStrengthMultiplier: 100 + _mappings: 18000000190000001a0000001b0000004300000041000000420000004400000045000000400000003f000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + retargetingType: 0 + _allowDuplicateMapping: 0 + _blendshapeModifier: {fileID: 0} + _combinationShapesTextAsset: {fileID: 0} +--- !u!4 &5747353780870054983 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -7101501009728795067, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &5773204507813147053 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -9030175415902569553, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &5972562824802001701 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 23111296988571943, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &6234044384297918601 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 302607532018576011, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &6298941623924150056 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8801577745799690966, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &6324332101905596780 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8830328322154738834, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &6377102991743393428 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 734316291618870422, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &6804420778746085539 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 927456756156140193, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!1 &6805427722635360083 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!95 &908253766 +Animator: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6805427722635360083} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: f0d8794048bdf144b98e8f73ddbc8616, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!114 &908253762 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6805427722635360083} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1fb2f0ec34e79d14a8de21547a8a80da, type: 3} + m_Name: + m_EditorClassIdentifier: + _ovrFaceExpressions: {fileID: 908253763} + _macroExpressionsToEvaluate: + - Thresholds: + - FaceExpression: 32 + EntryThreshold: 0.5 + ExitThreshold: 0.2 + - FaceExpression: 33 + EntryThreshold: 0.5 + ExitThreshold: 0.2 + MacroExpressionTypeDetected: 0 +--- !u!114 &908253763 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6805427722635360083} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a95044baf65b10c4e89b246d2f881ac9, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &908253764 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6805427722635360083} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 274835e4e2feae04b87f0d000555f8a4, type: 3} + m_Name: + m_EditorClassIdentifier: + _providedSkeletonType: 0 +--- !u!114 &908253765 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6805427722635360083} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d5f898cc52890e478827a817f6f004a, type: 3} + m_Name: + m_EditorClassIdentifier: + _faceExpressionModifiers: [] + _defaultBlendshapeModifierPreset: {fileID: 4900000, guid: 4297b4d2ee369b442805f4d45bb631f7, type: 3} + _globalMultiplier: 1 + _globalClampMin: 0 + _globalClampMax: 2 + _applyGlobalClampingNonMapped: 0 +--- !u!114 &908253767 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6805427722635360083} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6b37171b2b40ef94eb6e5746c8e51e5e, type: 3} + m_Name: + m_EditorClassIdentifier: + _skinnedMeshRenderer: {fileID: 37448908620078769} + _subMesh: 0 + _useUnityFunction: 0 + _recalculateIndependently: 1 + _duplicateLayerName: Character + _hiddenMeshLayerName: HiddenMesh + _recalculateMaterialIndices: 00000000 +--- !u!114 &908253768 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6805427722635360083} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 674a40251fe8ad841b18517ac5209957, type: 3} + m_Name: + m_EditorClassIdentifier: + _skeletonType: 2 + _updateRootPose: 0 + _updateRootScale: 0 + _enablePhysicsCapsules: 0 + _applyBoneTranslations: 1 + _customBones_V2: + - {fileID: 3732129352646794451} + - {fileID: 4464968837453615951} + - {fileID: 2181416674842142737} + - {fileID: 5112408298856068227} + - {fileID: 955083707410458949} + - {fileID: 795181761269956707} + - {fileID: 1861734701157625569} + - {fileID: 2709321220193578619} + - {fileID: 6377102991743393428} + - {fileID: 0} + - {fileID: 5047845850698454021} + - {fileID: 7018536377228668874} + - {fileID: 0} + - {fileID: 6804420778746085539} + - {fileID: 0} + - {fileID: 2646810688624961043} + - {fileID: 3627133179606460417} + - {fileID: 0} + - {fileID: 0} + - {fileID: 5002575547182775318} + - {fileID: 7644991470843722231} + - {fileID: 6874210426000104043} + - {fileID: 7288660620930683909} + - {fileID: 6298941623924150056} + - {fileID: 0} + - {fileID: 4634473240136128226} + - {fileID: 4679472325935167079} + - {fileID: 8853997866789932741} + - {fileID: 4831111096749225446} + - {fileID: 0} + - {fileID: 8957628919636683179} + - {fileID: 2105735966768434709} + - {fileID: 2365906563176453751} + - {fileID: 1457155681773549160} + - {fileID: 0} + - {fileID: 6324332101905596780} + - {fileID: 5352529388243910722} + - {fileID: 707000664419376488} + - {fileID: 4025658985667170609} + - {fileID: 212350093796120728} + - {fileID: 7631084597175797556} + - {fileID: 5972562824802001701} + - {fileID: 8216913049080197472} + - {fileID: 5747353780870054983} + - {fileID: 0} + - {fileID: 758901172713831459} + - {fileID: 984851672163677696} + - {fileID: 3760441664403270005} + - {fileID: 5773204507813147053} + - {fileID: 2429192723721041921} + - {fileID: 0} + - {fileID: 4745193184451865222} + - {fileID: 2989519625185054489} + - {fileID: 2829684828368952597} + - {fileID: 2749544576043177145} + - {fileID: 0} + - {fileID: 7599623031433485414} + - {fileID: 3835252908266019390} + - {fileID: 1710549222220524011} + - {fileID: 3658704027229410439} + - {fileID: 0} + - {fileID: 516380830273578687} + - {fileID: 8447949617352563639} + - {fileID: 3168899644715599634} + - {fileID: 5194566646911275178} + - {fileID: 6234044384297918601} + - {fileID: 8748535508396884069} + - {fileID: 3807668403238401120} + - {fileID: 4391987712531735864} + - {fileID: 8222719742922047850} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + retargetingType: 0 +--- !u!114 &908253769 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6805427722635360083} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 090e3f120851d224c9f4188469fdd8b4, type: 3} + m_Name: + m_EditorClassIdentifier: + _smileEnabled: 1 + _facialExpressionDetector: {fileID: 908253762} + _materialIndex: 0 + _renderer: {fileID: 4138605516468963374} + _glowCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0.80284 + outSlope: 0.80284 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0.057687636 + - serializedVersion: 3 + time: 0.99774873 + value: 0.30478427 + inSlope: -0.0007631472 + outSlope: -0.0007631472 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.06250655 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _animator: {fileID: 908253766} + _smileDelay: 0.7 + _smileStateName: Smile + _reverseSmileStateName: ReverseSmile +--- !u!4 &6874210426000104043 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 997209024318296169, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &7018536377228668874 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3735186147229607368, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &7288660620930683909 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4005480810939948551, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &7599623031433485414 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -4915787548385356188, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &7631084597175797556 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -4947245257301045962, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &7644991470843722231 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4082691836044145653, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8216913049080197472 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -6865593291145348254, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8222719742922047850 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -6869065103342417048, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8447949617352563639 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2850198907067683253, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8748535508396884069 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3159801897392065127, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8853997866789932741 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -6309704144179493689, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8957628919636683179 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3386480068686406569, guid: 00d0533fd012f490ca15158ab7c3b951, type: 3} + m_PrefabInstance: {fileID: 5958497211192674818} + m_PrefabAsset: {fileID: 0} diff --git a/Samples/Prefabs/Aura/AuraWithTongue.prefab.meta b/Samples/Prefabs/Aura/AuraWithTongue.prefab.meta new file mode 100644 index 00000000..4eace6e4 --- /dev/null +++ b/Samples/Prefabs/Aura/AuraWithTongue.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d1c1c3df6bc4b45a195b1167e582a299 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/Prefabs/Aura/AuraFirstPerson.prefab b/Samples/Prefabs/Aura/Legacy/AuraNoTongue - FirstPerson.prefab similarity index 100% rename from Samples/Prefabs/Aura/AuraFirstPerson.prefab rename to Samples/Prefabs/Aura/Legacy/AuraNoTongue - FirstPerson.prefab diff --git a/Samples/Prefabs/Aura/AuraFirstPerson.prefab.meta b/Samples/Prefabs/Aura/Legacy/AuraNoTongue - FirstPerson.prefab.meta similarity index 100% rename from Samples/Prefabs/Aura/AuraFirstPerson.prefab.meta rename to Samples/Prefabs/Aura/Legacy/AuraNoTongue - FirstPerson.prefab.meta diff --git a/Samples/Prefabs/Aura/AuraMirrored.prefab b/Samples/Prefabs/Aura/Legacy/AuraNoTongue - Mirrored.prefab similarity index 100% rename from Samples/Prefabs/Aura/AuraMirrored.prefab rename to Samples/Prefabs/Aura/Legacy/AuraNoTongue - Mirrored.prefab diff --git a/Samples/Prefabs/Aura/AuraMirrored.prefab.meta b/Samples/Prefabs/Aura/Legacy/AuraNoTongue - Mirrored.prefab.meta similarity index 100% rename from Samples/Prefabs/Aura/AuraMirrored.prefab.meta rename to Samples/Prefabs/Aura/Legacy/AuraNoTongue - Mirrored.prefab.meta diff --git a/Samples/Prefabs/Aura/Aura.prefab b/Samples/Prefabs/Aura/Legacy/AuraNoTongue.prefab similarity index 99% rename from Samples/Prefabs/Aura/Aura.prefab rename to Samples/Prefabs/Aura/Legacy/AuraNoTongue.prefab index 91960c4c..445c8670 100644 --- a/Samples/Prefabs/Aura/Aura.prefab +++ b/Samples/Prefabs/Aura/Legacy/AuraNoTongue.prefab @@ -1476,6 +1476,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 274835e4e2feae04b87f0d000555f8a4, type: 3} m_Name: m_EditorClassIdentifier: + _providedSkeletonType: 0 --- !u!114 &2171668725617520317 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Samples/Prefabs/Aura/Aura.prefab.meta b/Samples/Prefabs/Aura/Legacy/AuraNoTongue.prefab.meta similarity index 100% rename from Samples/Prefabs/Aura/Aura.prefab.meta rename to Samples/Prefabs/Aura/Legacy/AuraNoTongue.prefab.meta diff --git a/Samples/Prefabs/BlendshapeMappingExample/BlendshapeMappingExampleARKIT.prefab b/Samples/Prefabs/BlendshapeMappingExample/BlendshapeMappingExampleARKIT.prefab index fd355fd8..d144dc32 100644 --- a/Samples/Prefabs/BlendshapeMappingExample/BlendshapeMappingExampleARKIT.prefab +++ b/Samples/Prefabs/BlendshapeMappingExample/BlendshapeMappingExampleARKIT.prefab @@ -123,6 +123,18 @@ PrefabInstance: propertyPath: m_Materials.Array.data[0] value: objectReference: {fileID: 2100000, guid: e88c1c6d93413254ab36e53cebc1f111, type: 2} + - target: {fileID: -2928199212358554724, guid: aff2ae892ac69124eb8000bd96c5a64e, type: 3} + propertyPath: m_AABB.m_Extent.x + value: 1.06 + objectReference: {fileID: 0} + - target: {fileID: -2928199212358554724, guid: aff2ae892ac69124eb8000bd96c5a64e, type: 3} + propertyPath: m_AABB.m_Extent.y + value: -0.39 + objectReference: {fileID: 0} + - target: {fileID: -2928199212358554724, guid: aff2ae892ac69124eb8000bd96c5a64e, type: 3} + propertyPath: m_AABB.m_Extent.z + value: -0.65 + objectReference: {fileID: 0} - target: {fileID: -2928199212358554724, guid: aff2ae892ac69124eb8000bd96c5a64e, type: 3} propertyPath: m_Materials.Array.data[0] value: @@ -609,6 +621,20 @@ MonoBehaviour: - {fileID: 314159170131016539} - {fileID: 246903650701507460} - {fileID: 3017241077913359691} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} retargetingType: 0 --- !u!114 &341051990 MonoBehaviour: @@ -622,6 +648,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 274835e4e2feae04b87f0d000555f8a4, type: 3} m_Name: m_EditorClassIdentifier: + _providedSkeletonType: 0 --- !u!114 &341051991 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Samples/Prefabs/BodyTracking.meta b/Samples/Prefabs/BodyTracking.meta new file mode 100644 index 00000000..396a7bda --- /dev/null +++ b/Samples/Prefabs/BodyTracking.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e2a44e68924c6244b4c63018fd044b8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/Prefabs/BodyTracking/BTCalibrationButton.prefab b/Samples/Prefabs/BodyTracking/BTCalibrationButton.prefab new file mode 100644 index 00000000..c9c59d2b --- /dev/null +++ b/Samples/Prefabs/BodyTracking/BTCalibrationButton.prefab @@ -0,0 +1,1507 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &85490586341999887 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2017023932235772292} + - component: {fileID: 6477181184594424968} + - component: {fileID: 9003575218129893120} + m_Layer: 0 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2017023932235772292 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 85490586341999887} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3470885984848954877} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -1.2} + m_SizeDelta: {x: 30, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &6477181184594424968 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 85490586341999887} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: -5839354330806206608, guid: b8f5aeb9c6de7614db2631011b869bc3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &9003575218129893120 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 85490586341999887} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Calibrate + + Height' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: b8f5aeb9c6de7614db2631011b869bc3, type: 2} + m_sharedMaterial: {fileID: -5839354330806206608, guid: b8f5aeb9c6de7614db2631011b869bc3, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 34 + m_fontSizeBase: 34 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 6477181184594424968} + m_maskType: 0 +--- !u!1 &800166065368880725 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 820298851145317572} + - component: {fileID: 2507027824127248936} + - component: {fileID: 3248071270641686014} + m_Layer: 0 + m_Name: BasicPokeButtonPressAudio + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &820298851145317572 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 800166065368880725} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4139238253837514319} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &2507027824127248936 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 800166065368880725} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!114 &3248071270641686014 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 800166065368880725} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 925ef87c5bafc37469a2f7ec825dee4b, type: 3} + m_Name: + m_EditorClassIdentifier: + _audioSource: {fileID: 0} + _audioClips: + - {fileID: 8300000, guid: 56fe077fa3d84f24c951589f5d187be2, type: 3} + _volume: 0.5 + _volumeRandomization: + _useRandomRange: 0 + _min: 0 + _max: 0 + _pitch: 1 + _pitchRandomization: + _useRandomRange: 0 + _min: 0 + _max: 0 + _spatialize: 1 + _loop: 0 + _chanceToPlay: 100 + _playOnStart: 0 +--- !u!1 &1375468462847334277 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1375468462847334276} + - component: {fileID: 1912671942346180741} + - component: {fileID: 1832570180788912397} + m_Layer: 0 + m_Name: ToggleButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1375468462847334276 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375468462847334277} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.016, z: -0.01} + m_LocalScale: {x: 0.05, y: 0.05, z: 0.05} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7826803693302913232} + - {fileID: 8931745627679980753} + - {fileID: 4139238253837514319} + m_Father: {fileID: 8443568635789723411} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1912671942346180741 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375468462847334277} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 317e663e2bb60ea408fe22b908b59295, type: 3} + m_Name: + m_EditorClassIdentifier: + _interactorFilters: [] + _maxInteractors: -1 + _maxSelectingInteractors: -1 + _data: {fileID: 0} + _pointableElement: {fileID: 0} + _surfacePatch: {fileID: 7114206576011075027} + _enterHoverNormal: 0.01 + _enterHoverTangent: 0 + _exitHoverNormal: 0.05 + _exitHoverTangent: 0 + _cancelSelectNormal: 0.1 + _cancelSelectTangent: 0.03 + _minThresholds: + Enabled: 0 + MinNormal: 0.01 + _dragThresholds: + Enabled: 1 + DragNormal: 0.01 + DragTangent: 0.01 + DragEaseCurve: + _animationCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _animationLength: 0.05 + _positionPinning: + Enabled: 0 + MaxPinDistance: 0 + PinningEaseCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0.2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ResyncCurve: + _animationCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _animationLength: 0.2 + _recoilAssist: + Enabled: 0 + UseDynamicDecay: 0 + DynamicDecayCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 50 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 0.9 + value: 0.5 + inSlope: -47 + outSlope: -47 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + UseVelocityExpansion: 0 + VelocityExpansionMinSpeed: 0.4 + VelocityExpansionMaxSpeed: 1.4 + VelocityExpansionDistance: 0.055 + VelocityExpansionDecayRate: 0.125 + ExitDistance: 0.02 + ReEnterDistance: 0.02 + _closeDistanceThreshold: 0.001 + _tiebreakerScore: 0 +--- !u!114 &1832570180788912397 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375468462847334277} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2f8f6e9e6f3e114b9bf9a57c2160615, type: 3} + m_Name: + m_EditorClassIdentifier: + _pointable: {fileID: 1912671942346180741} + _whenRelease: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1947441945900689780} + m_TargetAssemblyTypeName: Oculus.Interaction.AudioTrigger, Oculus.Interaction.Samples + m_MethodName: PlayAudio + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 5050709481314298329} + m_TargetAssemblyTypeName: Oculus.Movement.FBS.v59Partner.SuggestBodyTrackingCalibrationButton, + Meta.Movement + m_MethodName: CalibrateHeight + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + _whenHover: + m_PersistentCalls: + m_Calls: [] + _whenUnhover: + m_PersistentCalls: + m_Calls: [] + _whenSelect: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 3248071270641686014} + m_TargetAssemblyTypeName: Oculus.Interaction.AudioTrigger, Oculus.Interaction.Samples + m_MethodName: PlayAudio + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + _whenUnselect: + m_PersistentCalls: + m_Calls: [] + _whenMove: + m_PersistentCalls: + m_Calls: [] + _whenCancel: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &3173529594657639255 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8931745627679980753} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8931745627679980753 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3173529594657639255} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3470885984848954877} + m_Father: {fileID: 1375468462847334276} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3345895682811362175 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7826803693302913232} + m_Layer: 0 + m_Name: Model + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7826803693302913232 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3345895682811362175} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6128741053928652916} + m_Father: {fileID: 1375468462847334276} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3490598539491735239 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5041582813204136948} + - component: {fileID: 6247021390658626564} + - component: {fileID: 3537410949090852273} + m_Layer: 0 + m_Name: CalibStatusText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5041582813204136948 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3490598539491735239} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.02} + m_LocalScale: {x: 0.0050000004, y: 0.0050000004, z: 0.0050000004} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8443568635789723411} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -0.103} + m_SizeDelta: {x: 30, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &6247021390658626564 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3490598539491735239} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: -5839354330806206608, guid: b8f5aeb9c6de7614db2631011b869bc3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &3537410949090852273 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3490598539491735239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: '-' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: b8f5aeb9c6de7614db2631011b869bc3, type: 2} + m_sharedMaterial: {fileID: -5839354330806206608, guid: b8f5aeb9c6de7614db2631011b869bc3, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 34 + m_fontSizeBase: 34 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 6247021390658626564} + m_maskType: 0 +--- !u!1 &4399736946512276191 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4429161353051734094} + - component: {fileID: 1503924343351342754} + - component: {fileID: 1947441945900689780} + m_Layer: 0 + m_Name: BasicPokeButtonReleaseAudio + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4429161353051734094 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4399736946512276191} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4139238253837514319} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &1503924343351342754 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4399736946512276191} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!114 &1947441945900689780 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4399736946512276191} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 925ef87c5bafc37469a2f7ec825dee4b, type: 3} + m_Name: + m_EditorClassIdentifier: + _audioSource: {fileID: 0} + _audioClips: + - {fileID: 8300000, guid: aebed88a33938c74f80e53b1386c2034, type: 3} + _volume: 0.5 + _volumeRandomization: + _useRandomRange: 0 + _min: 0 + _max: 0 + _pitch: 1 + _pitchRandomization: + _useRandomRange: 0 + _min: 0 + _max: 0 + _spatialize: 1 + _loop: 0 + _chanceToPlay: 100 + _playOnStart: 0 +--- !u!1 &5237971129077730901 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8424462412979786637} + - component: {fileID: 39067990202319869} + - component: {fileID: 4210985503583564487} + - component: {fileID: 3238380456024118379} + - component: {fileID: 6293759989729791790} + m_Layer: 0 + m_Name: ButtonPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8424462412979786637 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5237971129077730901} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.5, y: 1.5, z: 1.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3470885984848954877} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &39067990202319869 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5237971129077730901} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &4210985503583564487 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5237971129077730901} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44100ee3b663d774eaf4dece7161e29d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &3238380456024118379 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5237971129077730901} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5e48d93b64a9ae4f9fd5a728c8f51af, type: 3} + m_Name: + m_EditorClassIdentifier: + _renderers: + - {fileID: 4210985503583564487} + _vectorProperties: [] + _colorProperties: [] + _floatProperties: [] + _updateEveryFrame: 1 +--- !u!114 &6293759989729791790 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5237971129077730901} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3266c3d920715b84089935c4ab019210, type: 3} + m_Name: + m_EditorClassIdentifier: + _interactableView: {fileID: 1912671942346180741} + _editor: {fileID: 3238380456024118379} + _colorShaderPropertyName: _Color + _normalColorState: + Color: {r: 1, g: 1, b: 1, a: 0.39215687} + ColorCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ColorTime: 0.1 + _hoverColorState: + Color: {r: 1, g: 1, b: 1, a: 0.5882353} + ColorCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ColorTime: 0.1 + _selectColorState: + Color: {r: 0.30196083, g: 0.64535433, b: 0.9529412, a: 0.78431374} + ColorCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ColorTime: 0.05 + _disabledColorState: + Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + ColorCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ColorTime: 0.1 +--- !u!1 &6092687456279695970 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4139238253837514319} + m_Layer: 0 + m_Name: Audio + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4139238253837514319 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6092687456279695970} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 820298851145317572} + - {fileID: 4429161353051734094} + m_Father: {fileID: 1375468462847334276} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6128741053928652917 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6128741053928652916} + - component: {fileID: 7693601477850287797} + - component: {fileID: 7114206576011075027} + - component: {fileID: 1710961580392061406} + m_Layer: 0 + m_Name: Surface + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6128741053928652916 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6128741053928652917} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7826803693302913232} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7693601477850287797 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6128741053928652917} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9cf2a74d69b1c1e41916d2a7afdff5be, type: 3} + m_Name: + m_EditorClassIdentifier: + _facing: 0 + _doubleSided: 1 +--- !u!114 &7114206576011075027 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6128741053928652917} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: efd927768041afd4d90e5d822283f0f4, type: 3} + m_Name: + m_EditorClassIdentifier: + _planeSurface: {fileID: 7693601477850287797} + _clippers: + - {fileID: 1710961580392061406} +--- !u!114 &1710961580392061406 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6128741053928652917} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e08ab46e8fb05dc46b34e54466dc11e3, type: 3} + m_Name: + m_EditorClassIdentifier: + _position: {x: 0, y: 0, z: 0} + _size: {x: 3, y: 1, z: 1} +--- !u!1 &8443568635401725567 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8443568635401725560} + - component: {fileID: 8443568635401725541} + - component: {fileID: 8443568635401725540} + m_Layer: 0 + m_Name: MenuPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8443568635401725560 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8443568635401725567} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.15, y: 0.15, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8443568635789723411} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8443568635401725541 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8443568635401725567} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &8443568635401725540 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8443568635401725567} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 6a8ed4e5af9074e44a277e70094bbbcf, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &8443568635789723409 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8443568635789723411} + - component: {fileID: 5050709481314298329} + m_Layer: 0 + m_Name: BTCalibrationButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8443568635789723411 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8443568635789723409} + m_LocalRotation: {x: 0.09229593, y: -0.7010574, z: 0.09229593, w: 0.7010574} + m_LocalPosition: {x: -0.875, y: 1, z: -0.026} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8443568635401725560} + - {fileID: 5041582813204136948} + - {fileID: 1375468462847334276} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 15, y: -90, z: 0} +--- !u!114 &5050709481314298329 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8443568635789723409} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b740bb2e35294494f9eeddeba5e8fb8b, type: 3} + m_Name: + m_EditorClassIdentifier: + _worldText: {fileID: 3537410949090852273} + _height: 1.8 + _calibrateOnStartup: 0 +--- !u!1 &9081705363521239611 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3470885984848954877} + - component: {fileID: 6158523176492677175} + - component: {fileID: 6216071149273357452} + m_Layer: 0 + m_Name: ButtonVisual + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3470885984848954877 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9081705363521239611} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8424462412979786637} + - {fileID: 2017023932235772292} + m_Father: {fileID: 8931745627679980753} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6158523176492677175 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9081705363521239611} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b3b3f04ac18184468bedd999e5a6688, type: 3} + m_Name: + m_EditorClassIdentifier: + _pokeInteractable: {fileID: 1912671942346180741} + _buttonBaseTransform: {fileID: 6128741053928652916} +--- !u!33 &6216071149273357452 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9081705363521239611} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Samples/Prefabs/BodyTracking/BTCalibrationButton.prefab.meta b/Samples/Prefabs/BodyTracking/BTCalibrationButton.prefab.meta new file mode 100644 index 00000000..3fd53d8f --- /dev/null +++ b/Samples/Prefabs/BodyTracking/BTCalibrationButton.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c723fc2e86185ec498c4ae6e14c45cd9 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/Prefabs/BodyTracking/BodyTrackingFidelityToggle.prefab b/Samples/Prefabs/BodyTracking/BodyTrackingFidelityToggle.prefab new file mode 100644 index 00000000..b18201f3 --- /dev/null +++ b/Samples/Prefabs/BodyTracking/BodyTrackingFidelityToggle.prefab @@ -0,0 +1,279 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &7362976725013471434 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7362976725013471432} + - component: {fileID: 6147066115701160651} + m_Layer: 0 + m_Name: BodyTrackingFidelityToggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7362976725013471432 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7362976725013471434} + m_LocalRotation: {x: 0.09229593, y: -0.7010574, z: 0.09229593, w: 0.7010574} + m_LocalPosition: {x: -0.875, y: 1, z: -0.407} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7362976725664924067} + - {fileID: 6119768520224863} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 15, y: -90, z: 0} +--- !u!114 &6147066115701160651 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7362976725013471434} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0f0c3d53485cacb428310b4c5c3d6d9b, type: 3} + m_Name: + m_EditorClassIdentifier: + _currentFidelity: 2 + _worldText: {fileID: 8065955003302514907} +--- !u!1 &7362976725664924068 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7362976725664924067} + - component: {fileID: 7362976725664924094} + - component: {fileID: 7362976725664924095} + m_Layer: 0 + m_Name: MenuPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7362976725664924067 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7362976725664924068} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.15, y: 0.15, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7362976725013471432} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7362976725664924094 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7362976725664924068} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &7362976725664924095 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7362976725664924068} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 6a8ed4e5af9074e44a277e70094bbbcf, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1001 &4176701670581757204 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 7362976725013471432} + m_Modifications: + - target: {fileID: 1190592599872860168, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 44100ee3b663d774eaf4dece7161e29d, type: 2} + - target: {fileID: 3533162126377251659, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_AnchoredPosition.y + value: -1.2 + objectReference: {fileID: 0} + - target: {fileID: 3718601612112823234, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: _whenRelease.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3718601612112823234, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: _whenRelease.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3718601612112823234, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: _whenRelease.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 6147066115701160651} + - target: {fileID: 3718601612112823234, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: _whenRelease.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3718601612112823234, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: _whenRelease.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SwapFidelity + objectReference: {fileID: 0} + - target: {fileID: 3718601612112823234, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: _whenRelease.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: Oculus.Movement.Utils.BodyTrackingFidelityToggle, Meta.Movement + objectReference: {fileID: 0} + - target: {fileID: 3718601612112823234, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: _whenRelease.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 4171210596153234762, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_Name + value: ToggleButton + objectReference: {fileID: 0} + - target: {fileID: 4171210596153234763, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4171210596153234763, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4171210596153234763, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_LocalPosition.y + value: 0.016 + objectReference: {fileID: 0} + - target: {fileID: 4171210596153234763, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_LocalPosition.z + value: -0.01 + objectReference: {fileID: 0} + - target: {fileID: 4171210596153234763, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4171210596153234763, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4171210596153234763, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4171210596153234763, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4171210596153234763, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4171210596153234763, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4171210596153234763, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6198825956437652943, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_text + value: Three Point BT + objectReference: {fileID: 0} + - target: {fileID: 6198825956437652943, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_fontSize + value: 34 + objectReference: {fileID: 0} + - target: {fileID: 6198825956437652943, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_fontSizeBase + value: 34 + objectReference: {fileID: 0} + - target: {fileID: 6781307535824638274, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_LocalScale.x + value: 1.5 + objectReference: {fileID: 0} + - target: {fileID: 6781307535824638274, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_LocalScale.y + value: 1.5 + objectReference: {fileID: 0} + - target: {fileID: 6781307535824638274, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: m_LocalScale.z + value: 1.5 + objectReference: {fileID: 0} + - target: {fileID: 9052892711818005985, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: _selectColorState.Color.b + value: 0.9529412 + objectReference: {fileID: 0} + - target: {fileID: 9052892711818005985, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: _selectColorState.Color.g + value: 0.64535433 + objectReference: {fileID: 0} + - target: {fileID: 9052892711818005985, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + propertyPath: _selectColorState.Color.r + value: 0.30196083 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 2778893221137343601, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} +--- !u!4 &6119768520224863 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4171210596153234763, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + m_PrefabInstance: {fileID: 4176701670581757204} + m_PrefabAsset: {fileID: 0} +--- !u!114 &8065955003302514907 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 6198825956437652943, guid: 323cb65d2594c79499a11a99ff0fb347, type: 3} + m_PrefabInstance: {fileID: 4176701670581757204} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Samples/Prefabs/BodyTracking/BodyTrackingFidelityToggle.prefab.meta b/Samples/Prefabs/BodyTracking/BodyTrackingFidelityToggle.prefab.meta new file mode 100644 index 00000000..e220f0c0 --- /dev/null +++ b/Samples/Prefabs/BodyTracking/BodyTrackingFidelityToggle.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0737e3f63e17bac45b774695173860d1 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/Prefabs/HipPinning/HighFidelityHipPinningFirstPerson.prefab b/Samples/Prefabs/HipPinning/HighFidelityHipPinningFirstPerson.prefab index 11ac37fc..05f19cc5 100644 --- a/Samples/Prefabs/HipPinning/HighFidelityHipPinningFirstPerson.prefab +++ b/Samples/Prefabs/HipPinning/HighFidelityHipPinningFirstPerson.prefab @@ -782,9 +782,11 @@ MonoBehaviour: _customSkeleton: {fileID: 729980574542687627} _animator: {fileID: 0} _spineTranslationCorrectionType: 1 - _spineAlignmentWeight: 0 - _leftShoulderWeight: 0 - _rightShoulderWeight: 0 + _spineLowerAlignmentWeight: 0 + _spineUpperAlignmentWeight: 0 + _chestAlignmentWeight: 0 + _leftShoulderWeight: 0.05 + _rightShoulderWeight: 0.05 _leftArmWeight: 0 _rightArmWeight: 0 _leftHandWeight: 0 @@ -823,33 +825,33 @@ MonoBehaviour: - StartBone: {fileID: 8911903714498386270} EndBone: {fileID: 6349585496898920960} Distance: 0.038306892 - HeightProportion: 0.0623864 - LimbProportion: 0.0623864 + HeightProportion: 0.05904745 + LimbProportion: 0.05904745 - StartBone: {fileID: 6349585496898920960} EndBone: {fileID: 47671476499168914} Distance: 0.11096214 - HeightProportion: 0.18071236 - LimbProportion: 0.18071236 + HeightProportion: 0.17104053 + LimbProportion: 0.17104053 - StartBone: {fileID: 47671476499168914} EndBone: {fileID: 5411799685071577940} Distance: 0.11240488 - HeightProportion: 0.183062 - LimbProportion: 0.183062 + HeightProportion: 0.17326443 + LimbProportion: 0.17326443 - StartBone: {fileID: 5411799685071577940} EndBone: {fileID: 5571723699023252082} Distance: 0.1846194 - HeightProportion: 0.30067018 - LimbProportion: 0.30067018 + HeightProportion: 0.28457814 + LimbProportion: 0.28457814 - StartBone: {fileID: 5571723699023252082} EndBone: {fileID: 6885306115466274032} Distance: 0.13176535 - HeightProportion: 0.21459235 - LimbProportion: 0.21459235 + HeightProportion: 0.20310725 + LimbProportion: 0.20310725 - StartBone: {fileID: 6885306115466274032} EndBone: {fileID: 7188521250940347498} Distance: 0.07068894 - HeightProportion: 0.11512364 - LimbProportion: 0.11512364 + HeightProportion: 0.108962156 + LimbProportion: 0.108962156 - StartBone: {fileID: 5571723699023252082} EndBone: {fileID: 2223570764790469765} Distance: 0.119189434 @@ -891,7 +893,7 @@ MonoBehaviour: HeightProportion: 0 LimbProportion: 0 _startingScale: {x: 1, y: 1, z: 1} - _hipsToHeadDistance: 0.6140263 + _hipsToHeadDistance: 0.6487476 --- !u!1 &5157524381134081549 GameObject: m_ObjectHideFlags: 0 diff --git a/Samples/Prefabs/ISDKIntegration/ArmatureSkinningUpdateRetargetSkeletonProcessor.prefab b/Samples/Prefabs/ISDKIntegration/ArmatureSkinningUpdateRetargetSkeletonProcessor.prefab index ad4244d4..cd3cef74 100644 --- a/Samples/Prefabs/ISDKIntegration/ArmatureSkinningUpdateRetargetSkeletonProcessor.prefab +++ b/Samples/Prefabs/ISDKIntegration/ArmatureSkinningUpdateRetargetSkeletonProcessor.prefab @@ -1,5 +1,54 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &5934253929075069038 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6520329247888166650} + - component: {fileID: 5858254439604359654} + m_Layer: 0 + m_Name: PlaybackAnimationConstraint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6520329247888166650 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5934253929075069038} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5579424740586475733} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5858254439604359654 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5934253929075069038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3ac6230484089474898c6890ca09d24e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Weight: 0 + m_Data: + _animationPlaybackType: 2 + _captureAnimationConstraint: {fileID: 5356593900378066967} + _avatarMask: {fileID: 31900000, guid: 7129d5b0eec7de64a93fce9a6ba8f4d7, type: 2} --- !u!1001 &5579424741284206770 PrefabInstance: m_ObjectHideFlags: 0 @@ -83,6 +132,22 @@ PrefabInstance: propertyPath: SkeletonPostProcessing.m_PersistentCalls.m_Calls.Array.data[2].m_Arguments.m_ObjectArgumentAssemblyTypeName value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} + - target: {fileID: 520281171948095653, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_Weight + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2361644816699640067, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3064921622629090106, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3064921622629090106, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: _retargetingLayer + value: + objectReference: {fileID: 2324633634594971607} - target: {fileID: 3817605947884828321, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} propertyPath: m_RootOrder value: 0 @@ -127,6 +192,10 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 5509279618122473931, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 6442339640571472327, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} propertyPath: m_Name value: ArmatureSkinningUpdateRetargetSkeletonProcessor @@ -139,6 +208,26 @@ PrefabInstance: propertyPath: _autoAddTo value: objectReference: {fileID: 0} + - target: {fileID: 7065894658369251356, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: _ovrSkeletonConstraints.Array.size + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 7065894658369251356, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: _ovrSkeletonConstraints.Array.data[3] + value: + objectReference: {fileID: 5858254439604359654} + - target: {fileID: 7819795630976784685, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7819795630976784685, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: _retargetingLayer + value: + objectReference: {fileID: 2324633634594971607} + - target: {fileID: 8041379379990558817, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: _autoAddTo + value: + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} --- !u!1 &1443914921768874357 stripped @@ -158,30 +247,74 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ca8ba73f302887a4a8c206b952a7835f, type: 3} m_Name: m_EditorClassIdentifier: - _autoAddTo: {fileID: 5579424741214871902} + _autoAddTo: {fileID: 2324633634594971607} _skeletonProcessors: - - label: Retarget Hands + - label: Blend Hands Right + Enabled: 0 + Processor: {fileID: 7486900986326145928} + - label: Blend Hands Left + Enabled: 0 + Processor: {fileID: 2444161089806565791} + - label: Retargeted Bone Targets Enabled: 1 - Processor: {fileID: 1483202515538247245} ---- !u!114 &1483202515538247245 stripped + Processor: {fileID: 2519393238448185555} +--- !u!114 &2324633634594971607 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 6483914532100646655, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + m_CorrespondingSourceObject: {fileID: 7866900989153904485, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} m_PrefabInstance: {fileID: 5579424741284206770} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1443914921768874357} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e00344307bbe4d949bfcf8eddb0caf22, type: 3} + m_Script: {fileID: 11500000, guid: 31e3b6438933e1945a67ef8d4db811bf, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!114 &5579424741214871902 stripped +--- !u!114 &2444161089806565791 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 208026092, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + m_CorrespondingSourceObject: {fileID: 7819795630976784685, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + m_PrefabInstance: {fileID: 5579424741284206770} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1443914921768874357} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8359a52c8182ca247b2064624e74dffb, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &2519393238448185555 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 8041379379990558817, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} m_PrefabInstance: {fileID: 5579424741284206770} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1443914921768874357} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 31e3b6438933e1945a67ef8d4db811bf, type: 3} + m_Script: {fileID: 11500000, guid: e99c227ec21d72d45b36011069f2b263, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &5356593900378066967 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 520281171948095653, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + m_PrefabInstance: {fileID: 5579424741284206770} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0e49d877e5db8344aea414f59493991, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &5579424740586475733 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 720078951, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + m_PrefabInstance: {fileID: 5579424741284206770} + m_PrefabAsset: {fileID: 0} +--- !u!114 &7486900986326145928 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3064921622629090106, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + m_PrefabInstance: {fileID: 5579424741284206770} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1443914921768874357} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8359a52c8182ca247b2064624e74dffb, type: 3} m_Name: m_EditorClassIdentifier: diff --git a/Samples/Prefabs/Retargeting/ArmatureSkinningUpdateRetarget.prefab b/Samples/Prefabs/Retargeting/ArmatureSkinningUpdateRetarget.prefab index 0d42d4f7..4ddd6e3f 100644 --- a/Samples/Prefabs/Retargeting/ArmatureSkinningUpdateRetarget.prefab +++ b/Samples/Prefabs/Retargeting/ArmatureSkinningUpdateRetarget.prefab @@ -1,6 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &318886848 +--- !u!1 &720078949 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8,48 +8,48 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 318886849} - - component: {fileID: 318886850} + - component: {fileID: 720078951} + - component: {fileID: 720078950} m_Layer: 0 - m_Name: RetargetingConstraint + m_Name: Rig m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &318886849 + m_IsActive: 1 +--- !u!4 &720078951 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 318886848} + m_GameObject: {fileID: 720078949} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 720078951} + m_Children: + - {fileID: 5037131235962291318} + - {fileID: 7637878859907608630} + - {fileID: 4695418555050452255} + m_Father: {fileID: 3817605947884828321} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &318886850 +--- !u!114 &720078950 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 318886848} + m_GameObject: {fileID: 720078949} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d65fffb91be5d7446a2921b8a1bda1ae, type: 3} + m_Script: {fileID: 11500000, guid: 70b342d8ce5c2fd48b8fa3147d48d1d1, type: 3} m_Name: m_EditorClassIdentifier: m_Weight: 1 - m_Data: - _retargetingLayer: {fileID: 208026092} - _allowDynamicAdjustmentsRuntime: 1 - _avatarMask: {fileID: 0} ---- !u!1 &720078949 + m_Effectors: [] +--- !u!1 &533994187392997040 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -57,51 +57,61 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 720078951} - - component: {fileID: 720078950} + - component: {fileID: 7214641546695587818} m_Layer: 0 - m_Name: Rig + m_Name: NeckTwist m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &720078951 +--- !u!4 &7214641546695587818 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 720078949} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_GameObject: {fileID: 533994187392997040} + m_LocalRotation: {x: 0.060688358, y: -0, z: -0, w: 0.9981568} + m_LocalPosition: {x: 0, y: 1.5604506, z: -0.022289246} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 3328468516607962077} - - {fileID: 7165569085711597175} - - {fileID: 318886849} - - {fileID: 3912856925506536382} - - {fileID: 4800741347203242442} - - {fileID: 3283226229436933477} - m_Father: {fileID: 3817605947884828321} - m_RootOrder: 2 + m_Children: [] + m_Father: {fileID: 3806884962704701568} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &720078950 -MonoBehaviour: +--- !u!1 &2790682583795712339 +GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 720078949} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70b342d8ce5c2fd48b8fa3147d48d1d1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Weight: 1 - m_Effectors: [] ---- !u!1 &533994187392997040 + serializedVersion: 6 + m_Component: + - component: {fileID: 7587183840484842530} + m_Layer: 0 + m_Name: HipsTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7587183840484842530 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2790682583795712339} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.9810986, z: -0.01590455} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4695418555050452255} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3638285599488323782 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -109,30 +119,411 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 7214641546695587818} + - component: {fileID: 3762686855905044433} m_Layer: 0 - m_Name: NeckTwist + m_Name: SpineUpperTarget m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &7214641546695587818 +--- !u!4 &3762686855905044433 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 533994187392997040} - m_LocalRotation: {x: 0.060688358, y: -0, z: -0, w: 0.9981568} - m_LocalPosition: {x: 0, y: 1.5604506, z: -0.022289246} + m_GameObject: {fileID: 3638285599488323782} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.1427323, z: -0.014681594} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 3806884962704701568} + m_Father: {fileID: 4695418555050452255} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5509279618122473931 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5037131235962291318} + - component: {fileID: 520281171948095653} + m_Layer: 0 + m_Name: CaptureAnimationConstraint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &5037131235962291318 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5509279618122473931} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 720078951} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &829442282159543809 +--- !u!114 &520281171948095653 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5509279618122473931} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0e49d877e5db8344aea414f59493991, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Weight: 0 + m_Data: + _animator: {fileID: 4325497552437736820} + _targetAnimatorLayer: 0 + _referencePoseTime: 0 + _referencePose: + - Bone: 0 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 1 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 2 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 3 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 4 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 5 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 6 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 7 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 8 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 9 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 10 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 11 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 12 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 13 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 14 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 15 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 16 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 17 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 18 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 19 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 20 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 21 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 22 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 23 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 24 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 25 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 26 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 27 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 28 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 29 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 30 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 31 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 32 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 33 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 34 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 35 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 36 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 37 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 38 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 39 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 40 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 41 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 42 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 43 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 44 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 45 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 46 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 47 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 48 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 49 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 50 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 51 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 52 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 53 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 54 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + _currentPose: + - Bone: 0 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 1 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 2 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 3 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 4 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 5 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 6 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 7 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 8 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 9 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 10 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 11 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 12 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 13 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 14 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 15 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 16 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 17 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 18 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 19 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 20 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 21 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 22 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 23 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 24 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 25 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 26 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 27 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 28 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 29 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 30 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 31 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 32 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 33 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 34 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 35 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 36 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 37 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 38 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 39 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 40 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 41 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 42 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 43 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 44 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 45 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 46 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 47 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 48 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 49 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 50 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 51 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 52 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 53 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} + - Bone: 54 + LocalPosition: {x: 0, y: 0, z: 0} + LocalRotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!1 &6381604311219588075 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -140,62 +531,67 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4800741347203242442} - - component: {fileID: 8192828327705243424} + - component: {fileID: 4695418555050452255} + - component: {fileID: 4457886994102197209} m_Layer: 0 - m_Name: DeformationConstraint + m_Name: Deformation m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4800741347203242442 +--- !u!4 &4695418555050452255 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 829442282159543809} + m_GameObject: {fileID: 6381604311219588075} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1412694659602386247} - - {fileID: 1482210193954779825} - - {fileID: 4377987539988097003} - - {fileID: 7286058845195241565} - - {fileID: 8486459024193600769} - - {fileID: 68836204495713411} + - {fileID: 7587183840484842530} + - {fileID: 9220256087756010015} + - {fileID: 3762686855905044433} + - {fileID: 7149144802348253193} + - {fileID: 7277339581642933588} + - {fileID: 9174775783855746668} m_Father: {fileID: 720078951} - m_RootOrder: 4 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &8192828327705243424 +--- !u!114 &4457886994102197209 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 829442282159543809} + m_GameObject: {fileID: 6381604311219588075} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: cb86b2c3f58d2d84c97a1b0a27b1a726, type: 3} + m_Script: {fileID: 11500000, guid: da7a4e7762678a941bc75ee4155418d1, type: 3} m_Name: m_EditorClassIdentifier: m_Weight: 1 m_Data: - _customSkeleton: {fileID: 0} - _animator: {fileID: 4325497552437736820} - _spineTranslationCorrectionType: 3 _spineLowerAlignmentWeight: 1 _spineUpperAlignmentWeight: 0.5 - _chestAlignmentWeight: 0.25 + _chestAlignmentWeight: 0 _leftShoulderWeight: 0.75 _rightShoulderWeight: 0.75 _leftArmWeight: 1 _rightArmWeight: 1 _leftHandWeight: 1 _rightHandWeight: 1 + _leftLegWeight: 1 + _rightLegWeight: 1 + _leftToesWeight: 1 + _rightToesWeight: 1 + _alignFeetWeight: 0.75 + _spineTranslationCorrectionType: 3 + _customSkeleton: {fileID: 0} + _animator: {fileID: 4325497552437736820} _hipsToHeadBones: - {fileID: 24668466978050337} - {fileID: 4136407814712997250} @@ -204,12 +600,12 @@ MonoBehaviour: - {fileID: 8568777009844315901} - {fileID: 813562241272511791} _hipsToHeadBoneTargets: - - {fileID: 1412694659602386247} - - {fileID: 1482210193954779825} - - {fileID: 4377987539988097003} - - {fileID: 7286058845195241565} - - {fileID: 8486459024193600769} - - {fileID: 68836204495713411} + - {fileID: 7587183840484842530} + - {fileID: 9220256087756010015} + - {fileID: 3762686855905044433} + - {fileID: 7149144802348253193} + - {fileID: 7277339581642933588} + - {fileID: 9174775783855746668} _leftArmData: ShoulderBone: {fileID: 372011279931233274} UpperArmBone: {fileID: 2853792523736699549} @@ -224,31 +620,47 @@ MonoBehaviour: HandBone: {fileID: 2494227819838822627} ShoulderLocalPos: {x: 0.0009571358, y: 0.19149381, z: -0.008727803} LowerArmToHandAxis: {x: 0.00000006586886, y: -1, z: -0.00000003874639} + _leftLegData: + HipsBone: {fileID: 24668466978050337} + UpperLegBone: {fileID: 7606388188277981105} + LowerLegBone: {fileID: 6575490107108777790} + FootBone: {fileID: 4466782864633229390} + ToesBone: {fileID: 7347710556476194970} + ToesLocalPos: {x: 7.105427e-17, y: 0.07224803, z: -0.118065506} + FootLocalRot: {x: -0.035700943, y: 0.049957633, z: -0.019575214, w: 0.99792105} + _rightLegData: + HipsBone: {fileID: 24668466978050337} + UpperLegBone: {fileID: 7049401827258888227} + LowerLegBone: {fileID: 1058771097002273047} + FootBone: {fileID: 2413530998563704695} + ToesBone: {fileID: 5853368343141817120} + ToesLocalPos: {x: -0.00000015643121, y: -0.07224799, z: 0.11807} + FootLocalRot: {x: -0.035700943, y: 0.049957633, z: -0.019575214, w: 0.99792105} _bonePairData: - StartBone: {fileID: 24668466978050337} EndBone: {fileID: 4136407814712997250} Distance: 0.058242228 - HeightProportion: 0.09043276 + HeightProportion: 0.038177162 LimbProportion: 0.09043276 - StartBone: {fileID: 4136407814712997250} EndBone: {fileID: 4150047613444537597} Distance: 0.10340428 - HeightProportion: 0.16055593 + HeightProportion: 0.06778041 LimbProportion: 0.16055593 - StartBone: {fileID: 4150047613444537597} EndBone: {fileID: 167868239173931932} Distance: 0.10340428 - HeightProportion: 0.16055593 + HeightProportion: 0.06778041 LimbProportion: 0.16055593 - StartBone: {fileID: 167868239173931932} EndBone: {fileID: 8568777009844315901} Distance: 0.25151414 - HeightProportion: 0.39052624 + HeightProportion: 0.16486485 LimbProportion: 0.39052624 - StartBone: {fileID: 8568777009844315901} EndBone: {fileID: 813562241272511791} Distance: 0.12747405 - HeightProportion: 0.19792908 + HeightProportion: 0.08355789 LimbProportion: 0.19792908 - StartBone: {fileID: 167868239173931932} EndBone: {fileID: 372011279931233274} @@ -290,65 +702,41 @@ MonoBehaviour: Distance: 0.24036369 HeightProportion: 0 LimbProportion: 0 + - StartBone: {fileID: 24668466978050337} + EndBone: {fileID: 7606388188277981105} + Distance: 0.10199556 + HeightProportion: 0.066857 + LimbProportion: 0.115701735 + - StartBone: {fileID: 24668466978050337} + EndBone: {fileID: 7049401827258888227} + Distance: 0.10199563 + HeightProportion: 0.066857055 + LimbProportion: 0.115701824 + - StartBone: {fileID: 7606388188277981105} + EndBone: {fileID: 6575490107108777790} + Distance: 0.41334438 + HeightProportion: 0.27094287 + LimbProportion: 0.46888965 + - StartBone: {fileID: 7049401827258888227} + EndBone: {fileID: 1058771097002273047} + Distance: 0.41334414 + HeightProportion: 0.2709427 + LimbProportion: 0.4688894 + - StartBone: {fileID: 6575490107108777790} + EndBone: {fileID: 4466782864633229390} + Distance: 0.4140398 + HeightProportion: 0.2713987 + LimbProportion: 0.46967852 + - StartBone: {fileID: 1058771097002273047} + EndBone: {fileID: 2413530998563704695} + Distance: 0.41403958 + HeightProportion: 0.27139854 + LimbProportion: 0.46967828 _startingScale: {x: 1, y: 1, z: 1} _hipsToHeadDistance: 0.64403903 ---- !u!1 &1595867077748804220 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7165569085711597175} - - component: {fileID: 7207955825035234804} - m_Layer: 0 - m_Name: StraightenRightLeg - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7165569085711597175 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1595867077748804220} - m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} - m_LocalPosition: {x: 0, y: 0, z: 0.97400004} - m_LocalScale: {x: -1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 720078951} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &7207955825035234804 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1595867077748804220} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: aeda7bfbf984f2a4da5ab4b8967b115d, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Weight: 1 - m_Data: - m_Root: {fileID: 7049401827258888227} - m_Mid: {fileID: 1058771097002273047} - m_Tip: {fileID: 2413530998563704695} - m_Target: {fileID: 3322171736777022741} - m_Hint: {fileID: 0} - m_TargetPositionWeight: 1 - m_TargetRotationWeight: 1 - m_HintWeight: 1 - m_MaintainTargetPositionOffset: 0 - m_MaintainTargetRotationOffset: 0 ---- !u!1 &1814648563946786232 + _hipsToFootDistance: 0.8815387 + _calculateBoneData: 0 +--- !u!1 &6569133656184895074 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -356,30 +744,30 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4377987539988097003} + - component: {fileID: 7149144802348253193} m_Layer: 0 - m_Name: SpineUpperTarget + m_Name: ChestTarget m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4377987539988097003 +--- !u!4 &7149144802348253193 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1814648563946786232} + m_GameObject: {fileID: 6569133656184895074} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 1.1427323, z: -0.014681594} + m_LocalPosition: {x: 0, y: 1.2461365, z: -0.014681594} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4800741347203242442} - m_RootOrder: 2 + m_Father: {fileID: 4695418555050452255} + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2614499411421570187 +--- !u!1 &6619589912156159900 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -387,148 +775,48 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 3328468516607962077} - - component: {fileID: 8853966640034974739} + - component: {fileID: 7637878859907608630} + - component: {fileID: 3289871368579812835} m_Layer: 0 - m_Name: StraightenLeftLeg + m_Name: RetargetingConstraint m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3328468516607962077 + m_IsActive: 0 +--- !u!4 &7637878859907608630 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2614499411421570187} - m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} - m_LocalPosition: {x: 0, y: 0, z: 0.97400004} - m_LocalScale: {x: -1, y: 1, z: 1} + m_GameObject: {fileID: 6619589912156159900} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 720078951} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &8853966640034974739 +--- !u!114 &3289871368579812835 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2614499411421570187} + m_GameObject: {fileID: 6619589912156159900} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: aeda7bfbf984f2a4da5ab4b8967b115d, type: 3} + m_Script: {fileID: 11500000, guid: d65fffb91be5d7446a2921b8a1bda1ae, type: 3} m_Name: m_EditorClassIdentifier: m_Weight: 1 m_Data: - m_Root: {fileID: 7606388188277981105} - m_Mid: {fileID: 6575490107108777790} - m_Tip: {fileID: 4466782864633229390} - m_Target: {fileID: 8223565558435501862} - m_Hint: {fileID: 0} - m_TargetPositionWeight: 1 - m_TargetRotationWeight: 1 - m_HintWeight: 1 - m_MaintainTargetPositionOffset: 0 - m_MaintainTargetRotationOffset: 0 ---- !u!1 &3166730603278299432 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3322171736777022741} - m_Layer: 0 - m_Name: RightFootTarget - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3322171736777022741 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3166730603278299432} - m_LocalRotation: {x: -0, y: 0.05064953, z: -0.000000006024493, w: 0.99871653} - m_LocalPosition: {x: 0.11543696, y: -0.87920296, z: -0.043957256} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 24668466978050337} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &3481361541465284818 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8223565558435501862} - m_Layer: 0 - m_Name: LeftFootTarget - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8223565558435501862 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3481361541465284818} - m_LocalRotation: {x: 0.9987165, y: 0.0000000055879354, z: 0.05064953, w: 5.820766e-11} - m_LocalPosition: {x: -0.11543725, y: -0.87920326, z: -0.043957252} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 24668466978050337} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &3907186369688900479 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7286058845195241565} - m_Layer: 0 - m_Name: ChestTarget - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7286058845195241565 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3907186369688900479} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 1.2461365, z: -0.014681594} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4800741347203242442} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &4378031793461084319 + _retargetingLayer: {fileID: 7866900989153904485} + _allowDynamicAdjustmentsRuntime: 1 + _avatarMask: {fileID: 0} +--- !u!1 &7366454608359966986 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -536,30 +824,30 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1412694659602386247} + - component: {fileID: 9174775783855746668} m_Layer: 0 - m_Name: HipsTarget + m_Name: HeadTarget m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1412694659602386247 +--- !u!4 &9174775783855746668 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4378031793461084319} + m_GameObject: {fileID: 7366454608359966986} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.9810986, z: -0.01590455} + m_LocalPosition: {x: 0, y: 1.6237181, z: -0.014567317} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4800741347203242442} - m_RootOrder: 0 + m_Father: {fileID: 4695418555050452255} + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &5973692775097301654 +--- !u!1 &7789488335142133591 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -567,7 +855,7 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1482210193954779825} + - component: {fileID: 9220256087756010015} m_Layer: 0 m_Name: SpineLowerTarget m_TagString: Untagged @@ -575,22 +863,22 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1482210193954779825 +--- !u!4 &9220256087756010015 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5973692775097301654} + m_GameObject: {fileID: 7789488335142133591} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 1.039328, z: -0.014681594} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4800741347203242442} + m_Father: {fileID: 4695418555050452255} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &6834558144956915492 +--- !u!1 &7957083159763866352 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -598,7 +886,7 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 8486459024193600769} + - component: {fileID: 7277339581642933588} m_Layer: 0 m_Name: NeckTarget m_TagString: Untagged @@ -606,134 +894,22 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &8486459024193600769 +--- !u!4 &7277339581642933588 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6834558144956915492} + m_GameObject: {fileID: 7957083159763866352} m_LocalRotation: {x: 0.060688358, y: -0, z: -0, w: 0.9981568} m_LocalPosition: {x: 0, y: 1.4971831, z: -0.030011175} m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4800741347203242442} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &7232450877174583174 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3283226229436933477} - - component: {fileID: 3676716232870504498} - m_Layer: 0 - m_Name: CopyTargetPoseConstraint - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &3283226229436933477 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7232450877174583174} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 720078951} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &3676716232870504498 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7232450877174583174} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a49dfbc95e780564cb45bafc883d024c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Weight: 1 - m_Data: - _animator: {fileID: 4325497552437736820} - _retargetingLayer: {fileID: 208026092} - _copyPoseToOriginal: 0 ---- !u!1 &7415963170722232624 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 68836204495713411} - m_Layer: 0 - m_Name: HeadTarget - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &68836204495713411 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7415963170722232624} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 1.6237181, z: -0.014567317} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4800741347203242442} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &8767510395113025985 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3806884962704701568} - m_Layer: 0 - m_Name: Twists - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3806884962704701568 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8767510395113025985} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 7214641546695587818} - m_Father: {fileID: 3817605947884828321} - m_RootOrder: 3 + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4695418555050452255} + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &9221351095304159911 +--- !u!1 &8767510395113025985 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -741,47 +917,30 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 3912856925506536382} - - component: {fileID: 2405296923516618485} + - component: {fileID: 3806884962704701568} m_Layer: 0 - m_Name: CopyOriginalPoseConstraint + m_Name: Twists m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &3912856925506536382 + m_IsActive: 1 +--- !u!4 &3806884962704701568 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9221351095304159911} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_GameObject: {fileID: 8767510395113025985} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 720078951} + m_Children: + - {fileID: 7214641546695587818} + m_Father: {fileID: 3817605947884828321} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &2405296923516618485 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9221351095304159911} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a49dfbc95e780564cb45bafc883d024c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Weight: 1 - m_Data: - _animator: {fileID: 4325497552437736820} - _retargetingLayer: {fileID: 208026092} - _copyPoseToOriginal: 1 --- !u!1001 &2878048534688545747 PrefabInstance: m_ObjectHideFlags: 0 @@ -997,6 +1156,11 @@ Transform: m_CorrespondingSourceObject: {fileID: 2712436511663056975, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} m_PrefabInstance: {fileID: 2878048534688545747} m_PrefabAsset: {fileID: 0} +--- !u!4 &271489459777286249 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2608824284754742202, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} --- !u!4 &372011279931233274 stripped Transform: m_CorrespondingSourceObject: {fileID: 2511117075805431849, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} @@ -1007,6 +1171,16 @@ Transform: m_CorrespondingSourceObject: {fileID: 3223094540932368124, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} m_PrefabInstance: {fileID: 2878048534688545747} m_PrefabAsset: {fileID: 0} +--- !u!4 &942435568972493560 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3090830320396519723, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &995566969887961654 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3035451466240821733, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} --- !u!4 &1058771097002273047 stripped Transform: m_CorrespondingSourceObject: {fileID: 2972766455213642436, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} @@ -1017,6 +1191,11 @@ Transform: m_CorrespondingSourceObject: {fileID: 3951616662085982338, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} m_PrefabInstance: {fileID: 2878048534688545747} m_PrefabAsset: {fileID: 0} +--- !u!4 &1638702256349537392 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3552556024653799331, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} --- !u!4 &2413530998563704695 stripped Transform: m_CorrespondingSourceObject: {fileID: 472442842363016356, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} @@ -1027,11 +1206,36 @@ Transform: m_CorrespondingSourceObject: {fileID: 391152466220180272, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} m_PrefabInstance: {fileID: 2878048534688545747} m_PrefabAsset: {fileID: 0} +--- !u!4 &2630517260109676806 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 248147018808998613, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &2737802297540386453 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 148127632126715206, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} --- !u!4 &2853792523736699549 stripped Transform: m_CorrespondingSourceObject: {fileID: 29929578043304270, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} m_PrefabInstance: {fileID: 2878048534688545747} m_PrefabAsset: {fileID: 0} +--- !u!4 &2948799431510731612 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1088987727013318799, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3604517069801113574 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1582224486623771701, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3685570744738171001 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1501148882204193706, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} --- !u!4 &3796135998893025026 stripped Transform: m_CorrespondingSourceObject: {fileID: 1395680962295553233, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} @@ -1042,6 +1246,11 @@ Transform: m_CorrespondingSourceObject: {fileID: 1371976685920341362, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} m_PrefabInstance: {fileID: 2878048534688545747} m_PrefabAsset: {fileID: 0} +--- !u!4 &3858117355688848372 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1331421376152326183, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} --- !u!4 &4136407814712997250 stripped Transform: m_CorrespondingSourceObject: {fileID: 2204398875919224401, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} @@ -1057,63 +1266,67 @@ Animator: m_CorrespondingSourceObject: {fileID: 2015256377725734567, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} m_PrefabInstance: {fileID: 2878048534688545747} m_PrefabAsset: {fileID: 0} +--- !u!4 &4341593591503732478 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1995254865806263597, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4455956934440647469 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1884295602380226814, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} --- !u!4 &4466782864633229390 stripped Transform: m_CorrespondingSourceObject: {fileID: 1877388331611999133, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} m_PrefabInstance: {fileID: 2878048534688545747} m_PrefabAsset: {fileID: 0} +--- !u!4 &4605561582185283396 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1736942771008652439, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} --- !u!4 &4776154206678009637 stripped Transform: m_CorrespondingSourceObject: {fileID: 7329800906561977590, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} m_PrefabInstance: {fileID: 2878048534688545747} m_PrefabAsset: {fileID: 0} +--- !u!4 &4985697629920269784 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7115723080690183691, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &5061170491986651002 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7047010109057932457, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &5234591539898098028 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8022565296337689279, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &5492107710739096852 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7766179627964833479, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &5853368343141817120 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8560136290028069107, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &6033772983780806732 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8380254888661822367, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} --- !u!1 &6442339640571472327 stripped GameObject: m_CorrespondingSourceObject: {fileID: 9121803696401781268, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} m_PrefabInstance: {fileID: 2878048534688545747} m_PrefabAsset: {fileID: 0} ---- !u!114 &208026090 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6442339640571472327} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 642f072a06af00f42b49882dbbda8521, type: 3} - m_Name: - m_EditorClassIdentifier: - _skeleton: {fileID: 208026092} - _animator: {fileID: 4325497552437736820} - _rigBuilder: {fileID: 208026091} - _ovrSkeletonConstraints: - - {fileID: 318886850} - - {fileID: 2405296923516618485} - - {fileID: 8192828327705243424} - - {fileID: 3676716232870504498} - _rebindAnimator: 1 - _reEnableRig: 1 - _rigToggleOnFocus: 0 - _retargetingLayer: {fileID: 208026092} - _checkSkeletalUpdatesByProxy: 0 ---- !u!114 &208026091 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6442339640571472327} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fff0960ef4ea6e04eac66b4a7fd2189d, type: 3} - m_Name: - m_EditorClassIdentifier: - m_RigLayers: - - m_Rig: {fileID: 720078950} - m_Active: 1 - m_Effectors: [] ---- !u!114 &208026092 +--- !u!114 &597839387667802579 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1122,39 +1335,11 @@ MonoBehaviour: m_GameObject: {fileID: 6442339640571472327} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 31e3b6438933e1945a67ef8d4db811bf, type: 3} + m_Script: {fileID: 11500000, guid: 274835e4e2feae04b87f0d000555f8a4, type: 3} m_Name: m_EditorClassIdentifier: - _skeletonType: 2 - _updateRootPose: 0 - _updateRootScale: 0 - _enablePhysicsCapsules: 0 - _applyBoneTranslations: 1 - _adjustments: - - Joint: 0 - RotationChange: {x: 0.5, y: 0, z: 0, w: 0.8660254} - DisableRotationTransform: 0 - DisablePositionTransform: 0 - BoneIdOverrideValue: 71 - _bodySectionsToAlign: 0400000006000000050000000700000008000000090000000a0000000b000000 - _bodySectionToPosition: 0400000006000000050000000700000008000000090000000a0000000b000000 - _applyAnimationConstraintsToCorrectedPositions: 1 - _enableTrackingByProxy: 0 - _retargetingAnimationConstraint: {fileID: 318886850} - _retargetingProcessors: - - {fileID: 11400000, guid: 15440560904a85846a7a4b75e1f7b96e, type: 2} - - {fileID: 11400000, guid: 8033477507feea54a9c44eb17a69be20, type: 2} - - {fileID: 11400000, guid: b47ca2dcc0aa6e34484b90e7122d3db4, type: 2} - _jointRotationTweaks: - - Joint: 17 - RotationTweaks: - - {x: 0, y: 0.42261827, z: 0, w: 0.90630776} - - {x: 0, y: 0, z: 0.1736483, w: -0.9848077} - - Joint: 18 - RotationTweaks: - - {x: 0, y: 0.42261827, z: 0, w: 0.90630776} - - {x: 0, y: 0, z: 0.1736483, w: -0.9848077} ---- !u!114 &208026093 + _providedSkeletonType: 1 +--- !u!114 &2361644816699640067 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1163,10 +1348,229 @@ MonoBehaviour: m_GameObject: {fileID: 6442339640571472327} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 274835e4e2feae04b87f0d000555f8a4, type: 3} + m_Script: {fileID: 11500000, guid: 46311f43d60a6be47be85ee4e2860f06, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!114 &1449580700582008528 + _animator: {fileID: 4325497552437736820} + _skeleton: {fileID: 7866900989153904485} + _leftHand: {fileID: 8362296397940282678} + _rightHand: {fileID: 2494227819838822627} + _copyFingerOffsetsInUpdate: 0 + _fingerOffsets: [] + _interpolatedFingers: [] + _fingers: + - StartBoneTransform: {fileID: 8362296397940282678} + EndBoneTransform: {fileID: 4605561582185283396} + StartBoneId: 19 + EndBoneId: 20 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.037202086 + - StartBoneTransform: {fileID: 4605561582185283396} + EndBoneTransform: {fileID: 1638702256349537392} + StartBoneId: 20 + EndBoneId: 21 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.027841328 + - StartBoneTransform: {fileID: 1638702256349537392} + EndBoneTransform: {fileID: 7720621969630590991} + StartBoneId: 21 + EndBoneId: 22 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.045123335 + - StartBoneTransform: {fileID: 8362296397940282678} + EndBoneTransform: {fileID: 4985697629920269784} + StartBoneId: 19 + EndBoneId: 25 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.095930114 + - StartBoneTransform: {fileID: 4985697629920269784} + EndBoneTransform: {fileID: 6033772983780806732} + StartBoneId: 25 + EndBoneId: 26 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.042097833 + - StartBoneTransform: {fileID: 6033772983780806732} + EndBoneTransform: {fileID: 2737802297540386453} + StartBoneId: 26 + EndBoneId: 27 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.025139272 + - StartBoneTransform: {fileID: 8362296397940282678} + EndBoneTransform: {fileID: 5061170491986651002} + StartBoneId: 19 + EndBoneId: 30 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.08711889 + - StartBoneTransform: {fileID: 5061170491986651002} + EndBoneTransform: {fileID: 2948799431510731612} + StartBoneId: 30 + EndBoneId: 31 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.05127931 + - StartBoneTransform: {fileID: 2948799431510731612} + EndBoneTransform: {fileID: 4455956934440647469} + StartBoneId: 31 + EndBoneId: 32 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.028284062 + - StartBoneTransform: {fileID: 8362296397940282678} + EndBoneTransform: {fileID: 8978626515341356355} + StartBoneId: 19 + EndBoneId: 35 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.083076544 + - StartBoneTransform: {fileID: 8978626515341356355} + EndBoneTransform: {fileID: 5492107710739096852} + StartBoneId: 35 + EndBoneId: 36 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.043630574 + - StartBoneTransform: {fileID: 5492107710739096852} + EndBoneTransform: {fileID: 271489459777286249} + StartBoneId: 36 + EndBoneId: 37 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.02711549 + - StartBoneTransform: {fileID: 8362296397940282678} + EndBoneTransform: {fileID: 8394124404083829141} + StartBoneId: 19 + EndBoneId: 40 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.07869815 + - StartBoneTransform: {fileID: 8394124404083829141} + EndBoneTransform: {fileID: 7324593329673566154} + StartBoneId: 40 + EndBoneId: 41 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.03227268 + - StartBoneTransform: {fileID: 7324593329673566154} + EndBoneTransform: {fileID: 7644225670764006185} + StartBoneId: 41 + EndBoneId: 42 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.020224435 + - StartBoneTransform: {fileID: 2494227819838822627} + EndBoneTransform: {fileID: 995566969887961654} + StartBoneId: 45 + EndBoneId: 46 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.03720179 + - StartBoneTransform: {fileID: 995566969887961654} + EndBoneTransform: {fileID: 3685570744738171001} + StartBoneId: 46 + EndBoneId: 47 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.027840983 + - StartBoneTransform: {fileID: 3685570744738171001} + EndBoneTransform: {fileID: 6743035668138834372} + StartBoneId: 47 + EndBoneId: 48 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.04512085 + - StartBoneTransform: {fileID: 2494227819838822627} + EndBoneTransform: {fileID: 7006316547460879866} + StartBoneId: 45 + EndBoneId: 51 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.09592637 + - StartBoneTransform: {fileID: 7006316547460879866} + EndBoneTransform: {fileID: 8702160152427063123} + StartBoneId: 51 + EndBoneId: 52 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.042101394 + - StartBoneTransform: {fileID: 8702160152427063123} + EndBoneTransform: {fileID: 8470191330660502023} + StartBoneId: 52 + EndBoneId: 53 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.02513925 + - StartBoneTransform: {fileID: 2494227819838822627} + EndBoneTransform: {fileID: 5234591539898098028} + StartBoneId: 45 + EndBoneId: 56 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.087118976 + - StartBoneTransform: {fileID: 5234591539898098028} + EndBoneTransform: {fileID: 2630517260109676806} + StartBoneId: 56 + EndBoneId: 57 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.051275894 + - StartBoneTransform: {fileID: 2630517260109676806} + EndBoneTransform: {fileID: 3858117355688848372} + StartBoneId: 57 + EndBoneId: 58 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.028283633 + - StartBoneTransform: {fileID: 2494227819838822627} + EndBoneTransform: {fileID: 942435568972493560} + StartBoneId: 45 + EndBoneId: 61 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.08307547 + - StartBoneTransform: {fileID: 942435568972493560} + EndBoneTransform: {fileID: 6614107610704357342} + StartBoneId: 61 + EndBoneId: 62 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.043628715 + - StartBoneTransform: {fileID: 6614107610704357342} + EndBoneTransform: {fileID: 8140801458842531684} + StartBoneId: 62 + EndBoneId: 63 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.027114639 + - StartBoneTransform: {fileID: 2494227819838822627} + EndBoneTransform: {fileID: 3604517069801113574} + StartBoneId: 45 + EndBoneId: 66 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.07869771 + - StartBoneTransform: {fileID: 3604517069801113574} + EndBoneTransform: {fileID: 4341593591503732478} + StartBoneId: 66 + EndBoneId: 67 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.03226879 + - StartBoneTransform: {fileID: 4341593591503732478} + EndBoneTransform: {fileID: 7052923847903105770} + StartBoneId: 67 + EndBoneId: 68 + EndPosOffset: {x: 0, y: 0, z: 0} + EndRotOffset: {x: 0, y: 0, z: 0, w: 1} + Distance: 0.020225074 + _calculateFingerData: 0 +--- !u!114 &3064921622629090106 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1175,14 +1579,14 @@ MonoBehaviour: m_GameObject: {fileID: 6442339640571472327} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f8679dc9cec9324429dd9c3909e6cac3, type: 3} + m_Script: {fileID: 11500000, guid: 8359a52c8182ca247b2064624e74dffb, type: 3} m_Name: m_EditorClassIdentifier: _constraints: [] - _retargetingLayer: {fileID: 208026092} - _boneIdToTest: 19 + _retargetingLayer: {fileID: 7866900989153904485} + _boneIdToTest: 45 _headTransform: {fileID: 813562241272511791} - _autoAddTo: {fileID: 208026092} + _autoAddTo: {fileID: 7866900989153904485} _constraintsMinDistance: 0.2 _constraintsMaxDistance: 0.5 _blendCurve: @@ -1210,7 +1614,47 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 _maxWeight: 1 ---- !u!114 &6038665039104002591 +--- !u!114 &7065894658369251356 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6442339640571472327} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 642f072a06af00f42b49882dbbda8521, type: 3} + m_Name: + m_EditorClassIdentifier: + _skeleton: {fileID: 7866900989153904485} + _animator: {fileID: 4325497552437736820} + _rigBuilder: {fileID: 7335297518904446665} + _ovrSkeletonConstraints: + - {fileID: 520281171948095653} + - {fileID: 3289871368579812835} + - {fileID: 4457886994102197209} + _rebindAnimator: 1 + _reEnableRig: 1 + _rigToggleOnFocus: 0 + _retargetingLayer: {fileID: 7866900989153904485} + _checkSkeletalUpdatesByProxy: 1 +--- !u!114 &7335297518904446665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6442339640571472327} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fff0960ef4ea6e04eac66b4a7fd2189d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RigLayers: + - m_Rig: {fileID: 720078950} + m_Active: 1 + m_Effectors: [] +--- !u!114 &7819795630976784685 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1219,14 +1663,14 @@ MonoBehaviour: m_GameObject: {fileID: 6442339640571472327} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f8679dc9cec9324429dd9c3909e6cac3, type: 3} + m_Script: {fileID: 11500000, guid: 8359a52c8182ca247b2064624e74dffb, type: 3} m_Name: m_EditorClassIdentifier: _constraints: [] - _retargetingLayer: {fileID: 208026092} - _boneIdToTest: 45 + _retargetingLayer: {fileID: 7866900989153904485} + _boneIdToTest: 19 _headTransform: {fileID: 813562241272511791} - _autoAddTo: {fileID: 208026092} + _autoAddTo: {fileID: 7866900989153904485} _constraintsMinDistance: 0.2 _constraintsMaxDistance: 0.5 _blendCurve: @@ -1254,7 +1698,54 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 _maxWeight: 1 ---- !u!114 &6483914532100646655 +--- !u!114 &7866900989153904485 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6442339640571472327} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31e3b6438933e1945a67ef8d4db811bf, type: 3} + m_Name: + m_EditorClassIdentifier: + _skeletonType: 3 + _updateRootPose: 0 + _updateRootScale: 0 + _enablePhysicsCapsules: 0 + _applyBoneTranslations: 1 + _adjustments: + - Joint: 0 + PositionChange: {x: 0, y: 0, z: 0} + RotationChange: {x: 0.5, y: 0, z: 0, w: 0.8660254} + RotationTweaks: [] + DisableRotationTransform: 0 + DisablePositionTransform: 0 + FullBodyBoneIdOverrideValue: 85 + BoneIdOverrideValue: 71 + _fullBodySectionsToAlign: 0400000006000000050000000700000008000000090000000a0000000b00000000000000010000000200000003000000 + _bodySectionsToAlign: 0400000006000000050000000700000008000000090000000a0000000b000000 + _fullBodySectionToPosition: 0400000006000000050000000700000008000000090000000a0000000b00000000000000010000000200000003000000 + _bodySectionToPosition: 04000000060000000500000007000000080000000a0000000b000000 + _updateType: 1 + _applyAnimationConstraintsToCorrectedPositions: 1 + _enableTrackingByProxy: 1 + _retargetingAnimationConstraint: {fileID: 3289871368579812835} + _retargetingProcessors: + - {fileID: 11400000, guid: 15440560904a85846a7a4b75e1f7b96e, type: 2} + - {fileID: 11400000, guid: 8033477507feea54a9c44eb17a69be20, type: 2} + - {fileID: 11400000, guid: b47ca2dcc0aa6e34484b90e7122d3db4, type: 2} + _jointRotationTweaks: + - Joint: 17 + RotationTweaks: + - {x: 0, y: 0.42261827, z: 0, w: 0.90630776} + - {x: 0, y: 0, z: 0.1736483, w: -0.9848077} + - Joint: 18 + RotationTweaks: + - {x: 0, y: 0.42261827, z: 0, w: 0.90630776} + - {x: 0, y: 0, z: 0.1736483, w: -0.9848077} +--- !u!114 &8041379379990558817 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1263,50 +1754,115 @@ MonoBehaviour: m_GameObject: {fileID: 6442339640571472327} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e00344307bbe4d949bfcf8eddb0caf22, type: 3} + m_Script: {fileID: 11500000, guid: e99c227ec21d72d45b36011069f2b263, type: 3} m_Name: m_EditorClassIdentifier: - _autoAddTo: {fileID: 208026092} + _autoAddTo: {fileID: 7866900989153904485} _retargetedBoneTargets: - HumanBodyBone: 0 - Target: {fileID: 1412694659602386247} + Target: {fileID: 7587183840484842530} - HumanBodyBone: 7 - Target: {fileID: 1482210193954779825} + Target: {fileID: 9220256087756010015} - HumanBodyBone: 8 - Target: {fileID: 4377987539988097003} + Target: {fileID: 3762686855905044433} - HumanBodyBone: 54 - Target: {fileID: 7286058845195241565} + Target: {fileID: 7149144802348253193} - HumanBodyBone: 9 - Target: {fileID: 8486459024193600769} + Target: {fileID: 7277339581642933588} - HumanBodyBone: 10 - Target: {fileID: 68836204495713411} + Target: {fileID: 9174775783855746668} --- !u!4 &6575490107108777790 stripped Transform: m_CorrespondingSourceObject: {fileID: 8984739037707363565, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} m_PrefabInstance: {fileID: 2878048534688545747} m_PrefabAsset: {fileID: 0} +--- !u!4 &6614107610704357342 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8951720307451501581, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} --- !u!4 &6698092073795100007 stripped Transform: m_CorrespondingSourceObject: {fileID: 8864358005623957172, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} m_PrefabInstance: {fileID: 2878048534688545747} m_PrefabAsset: {fileID: 0} +--- !u!4 &6743035668138834372 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8819440954177323543, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &7006316547460879866 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5101327286840946217, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} --- !u!4 &7049401827258888227 stripped Transform: m_CorrespondingSourceObject: {fileID: 5054270750810229744, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} m_PrefabInstance: {fileID: 2878048534688545747} m_PrefabAsset: {fileID: 0} +--- !u!4 &7052923847903105770 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5049068702756301113, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &7324593329673566154 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4780235892836191257, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &7347710556476194970 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4758244557350992713, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} --- !u!4 &7606388188277981105 stripped Transform: m_CorrespondingSourceObject: {fileID: 5656433330203690082, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} m_PrefabInstance: {fileID: 2878048534688545747} m_PrefabAsset: {fileID: 0} +--- !u!4 &7644225670764006185 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5612997358871523578, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &7720621969630590991 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5536552466207327196, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8140801458842531684 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6271559552345033911, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} --- !u!4 &8362296397940282678 stripped Transform: m_CorrespondingSourceObject: {fileID: 6051775358866550501, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} m_PrefabInstance: {fileID: 2878048534688545747} m_PrefabAsset: {fileID: 0} +--- !u!4 &8394124404083829141 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6020479611914883654, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8470191330660502023 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5943849666732716500, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} --- !u!4 &8568777009844315901 stripped Transform: m_CorrespondingSourceObject: {fileID: 5844133748634574126, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} m_PrefabInstance: {fileID: 2878048534688545747} m_PrefabAsset: {fileID: 0} +--- !u!4 &8702160152427063123 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6860294403975076992, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8978626515341356355 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6587249867207382672, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 2878048534688545747} + m_PrefabAsset: {fileID: 0} diff --git a/Samples/Prefabs/Retargeting/ArmatureSkinningUpdateRetargetUserUpperBody.prefab b/Samples/Prefabs/Retargeting/ArmatureSkinningUpdateRetargetUserUpperBody.prefab new file mode 100644 index 00000000..5a95d985 --- /dev/null +++ b/Samples/Prefabs/Retargeting/ArmatureSkinningUpdateRetargetUserUpperBody.prefab @@ -0,0 +1,1122 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &41237796 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 41237797} + m_Layer: 0 + m_Name: SpineLowerTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &41237797 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 41237796} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.039328, z: -0.014681594} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 388136805} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &388136803 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 388136805} + - component: {fileID: 388136804} + m_Layer: 0 + m_Name: Deformation + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &388136805 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 388136803} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1653966953} + - {fileID: 41237797} + - {fileID: 1805178966} + - {fileID: 948545905} + - {fileID: 677977384} + - {fileID: 1977851119} + m_Father: {fileID: 1122120705} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &388136804 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 388136803} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cb86b2c3f58d2d84c97a1b0a27b1a726, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Weight: 1 + m_Data: + _customSkeleton: {fileID: 0} + _animator: {fileID: 585457876304057424} + _spineTranslationCorrectionType: 3 + _spineLowerAlignmentWeight: 1 + _spineUpperAlignmentWeight: 0.5 + _chestAlignmentWeight: 0 + _leftShoulderWeight: 0.75 + _rightShoulderWeight: 0.75 + _leftArmWeight: 1 + _rightArmWeight: 1 + _leftHandWeight: 1 + _rightHandWeight: 1 + _hipsToHeadBones: + - {fileID: 3769253516756971525} + - {fileID: 972723851879224486} + - {fileID: 977098172415352281} + - {fileID: 3912735870831686328} + - {fileID: 4824162826205284313} + - {fileID: 4562970236519078923} + _hipsToHeadBoneTargets: + - {fileID: 1653966953} + - {fileID: 41237797} + - {fileID: 1805178966} + - {fileID: 948545905} + - {fileID: 677977384} + - {fileID: 1977851119} + _leftArmData: + ShoulderBone: {fileID: 3544633643260244702} + UpperArmBone: {fileID: 1405689208918275001} + LowerArmBone: {fileID: 8525588144871335425} + HandBone: {fileID: 4617438155049792530} + ShoulderLocalPos: {x: -0.0009571358, y: 0.19149224, z: -0.0087277945} + LowerArmToHandAxis: {x: -0.00000063156983, y: 1, z: 0.00000006974391} + _rightArmData: + ShoulderBone: {fileID: 7560647181254474819} + UpperArmBone: {fileID: 2683758638816182901} + LowerArmBone: {fileID: 51266213166630438} + HandBone: {fileID: 1622968437178530247} + ShoulderLocalPos: {x: 0.0009571358, y: 0.19149381, z: -0.008727803} + LowerArmToHandAxis: {x: 0.00000004649566, y: -1, z: 0.0000000038746384} + _bonePairData: + - StartBone: {fileID: 3769253516756971525} + EndBone: {fileID: 972723851879224486} + Distance: 0.058242228 + HeightProportion: 0.09043276 + LimbProportion: 0.09043276 + - StartBone: {fileID: 972723851879224486} + EndBone: {fileID: 977098172415352281} + Distance: 0.10340428 + HeightProportion: 0.16055593 + LimbProportion: 0.16055593 + - StartBone: {fileID: 977098172415352281} + EndBone: {fileID: 3912735870831686328} + Distance: 0.10340428 + HeightProportion: 0.16055593 + LimbProportion: 0.16055593 + - StartBone: {fileID: 3912735870831686328} + EndBone: {fileID: 4824162826205284313} + Distance: 0.25151414 + HeightProportion: 0.39052624 + LimbProportion: 0.39052624 + - StartBone: {fileID: 4824162826205284313} + EndBone: {fileID: 4562970236519078923} + Distance: 0.12747405 + HeightProportion: 0.19792908 + LimbProportion: 0.19792908 + - StartBone: {fileID: 3912735870831686328} + EndBone: {fileID: 3544633643260244702} + Distance: 0.19169338 + HeightProportion: 0 + LimbProportion: 0 + - StartBone: {fileID: 3912735870831686328} + EndBone: {fileID: 7560647181254474819} + Distance: 0.19169505 + HeightProportion: 0 + LimbProportion: 0 + - StartBone: {fileID: 3544633643260244702} + EndBone: {fileID: 1405689208918275001} + Distance: 0.16743496 + HeightProportion: 0 + LimbProportion: 0 + - StartBone: {fileID: 7560647181254474819} + EndBone: {fileID: 2683758638816182901} + Distance: 0.1674343 + HeightProportion: 0 + LimbProportion: 0 + - StartBone: {fileID: 1405689208918275001} + EndBone: {fileID: 8525588144871335425} + Distance: 0.28508076 + HeightProportion: 0 + LimbProportion: 0 + - StartBone: {fileID: 2683758638816182901} + EndBone: {fileID: 51266213166630438} + Distance: 0.28508505 + HeightProportion: 0 + LimbProportion: 0 + - StartBone: {fileID: 8525588144871335425} + EndBone: {fileID: 4617438155049792530} + Distance: 0.24036232 + HeightProportion: 0 + LimbProportion: 0 + - StartBone: {fileID: 51266213166630438} + EndBone: {fileID: 1622968437178530247} + Distance: 0.24036375 + HeightProportion: 0 + LimbProportion: 0 + _startingScale: {x: 1, y: 1, z: 1} + _hipsToHeadDistance: 0.64403903 +--- !u!1 &677977383 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 677977384} + m_Layer: 0 + m_Name: NeckTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &677977384 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 677977383} + m_LocalRotation: {x: 0.060688358, y: -0, z: -0, w: 0.9981568} + m_LocalPosition: {x: 0, y: 1.4971831, z: -0.030011175} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 388136805} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &948545904 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 948545905} + m_Layer: 0 + m_Name: ChestTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &948545905 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 948545904} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.2461365, z: -0.014681594} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 388136805} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1122120704 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1122120705} + - component: {fileID: 1122120706} + m_Layer: 0 + m_Name: Rig + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1122120705 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1122120704} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1786491909873928961} + - {fileID: 478076298790879100} + - {fileID: 1412995356} + - {fileID: 388136805} + m_Father: {fileID: 63731746210207621} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1122120706 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1122120704} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 70b342d8ce5c2fd48b8fa3147d48d1d1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Weight: 1 + m_Effectors: [] +--- !u!1 &1412995355 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1412995356} + - component: {fileID: 1412995357} + m_Layer: 0 + m_Name: RetargetingConstraint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1412995356 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1412995355} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1122120705} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1412995357 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1412995355} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d65fffb91be5d7446a2921b8a1bda1ae, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Weight: 1 + m_Data: + _retargetingLayer: {fileID: 1280450773} + _allowDynamicAdjustmentsRuntime: 1 + _avatarMask: {fileID: 0} +--- !u!1 &1653966952 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1653966953} + m_Layer: 0 + m_Name: HipsTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1653966953 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1653966952} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.9810986, z: -0.01590455} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 388136805} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1805178965 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1805178966} + m_Layer: 0 + m_Name: SpineUpperTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1805178966 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1805178965} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.1427323, z: -0.014681594} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 388136805} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1977851118 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1977851119} + m_Layer: 0 + m_Name: HeadTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1977851119 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1977851118} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.6237181, z: -0.014567317} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 388136805} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4820322356105404079 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6810243515838900540} + m_Layer: 0 + m_Name: RightFootTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6810243515838900540 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4820322356105404079} + m_LocalRotation: {x: -0, y: 0.05064953, z: -0.000000006024493, w: 0.99871653} + m_LocalPosition: {x: 0.11543691, y: -0.87920296, z: -0.043957256} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3769253516756971525} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5818404351995240304 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1786491909873928961} + - component: {fileID: 7659827762101700130} + m_Layer: 0 + m_Name: StraightenLeftLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1786491909873928961 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5818404351995240304} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1122120705} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7659827762101700130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5818404351995240304} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: aeda7bfbf984f2a4da5ab4b8967b115d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Weight: 1 + m_Data: + m_Root: {fileID: 6744111909174812309} + m_Mid: {fileID: 8023271195216576026} + m_Tip: {fileID: 713121887241261418} + m_Target: {fileID: 7989201138653081976} + m_Hint: {fileID: 0} + m_TargetPositionWeight: 1 + m_TargetRotationWeight: 1 + m_HintWeight: 1 + m_MaintainTargetPositionOffset: 0 + m_MaintainTargetRotationOffset: 0 +--- !u!1 &6786677909684648780 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7989201138653081976} + m_Layer: 0 + m_Name: LeftFootTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7989201138653081976 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6786677909684648780} + m_LocalRotation: {x: 0.9987165, y: 0.0000000055879354, z: 0.05064953, w: 5.820766e-11} + m_LocalPosition: {x: -0.11543727, y: -0.87920326, z: -0.043957252} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3769253516756971525} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8042623355478229157 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 478076298790879100} + - component: {fileID: 6518872729690528950} + m_Layer: 0 + m_Name: StraightenRightLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &478076298790879100 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8042623355478229157} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1122120705} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6518872729690528950 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8042623355478229157} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: aeda7bfbf984f2a4da5ab4b8967b115d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Weight: 1 + m_Data: + m_Root: {fileID: 6182376113165095175} + m_Mid: {fileID: 4226968543005296691} + m_Tip: {fileID: 1541957764070846035} + m_Target: {fileID: 6810243515838900540} + m_Hint: {fileID: 0} + m_TargetPositionWeight: 1 + m_TargetRotationWeight: 1 + m_HintWeight: 1 + m_MaintainTargetPositionOffset: 0 + m_MaintainTargetRotationOffset: 0 +--- !u!1001 &1434491218122775287 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 298533062856023420, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.x + value: -0.0044382317 + objectReference: {fileID: 0} + - target: {fileID: 298533062856023420, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.y + value: -0.07288166 + objectReference: {fileID: 0} + - target: {fileID: 298533062856023420, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.z + value: 0.029358588 + objectReference: {fileID: 0} + - target: {fileID: 649929397234160867, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.x + value: 0.009525538 + objectReference: {fileID: 0} + - target: {fileID: 649929397234160867, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.y + value: 0.081615545 + objectReference: {fileID: 0} + - target: {fileID: 649929397234160867, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.z + value: -0.01224239 + objectReference: {fileID: 0} + - target: {fileID: 1371976685920341362, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1371976685920341362, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.x + value: 1.85 + objectReference: {fileID: 0} + - target: {fileID: 1371976685920341362, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1371976685920341362, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1371976685920341362, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1371976685920341362, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1371976685920341362, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1371976685920341362, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1371976685920341362, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1371976685920341362, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1371976685920341362, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2136921240105483057, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.x + value: -0.009527459 + objectReference: {fileID: 0} + - target: {fileID: 2136921240105483057, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.y + value: -0.08161424 + objectReference: {fileID: 0} + - target: {fileID: 2136921240105483057, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.z + value: 0.012242139 + objectReference: {fileID: 0} + - target: {fileID: 2566856678452017287, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.x + value: -0.007822358 + objectReference: {fileID: 0} + - target: {fileID: 2566856678452017287, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.y + value: -0.091839485 + objectReference: {fileID: 0} + - target: {fileID: 2566856678452017287, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.z + value: -0.026574552 + objectReference: {fileID: 0} + - target: {fileID: 2678034675711006221, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.x + value: 0.01284784 + objectReference: {fileID: 0} + - target: {fileID: 2678034675711006221, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.y + value: 0.086097755 + objectReference: {fileID: 0} + - target: {fileID: 2678034675711006221, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.z + value: 0.003435417 + objectReference: {fileID: 0} + - target: {fileID: 4596122834257617896, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.x + value: -0.00000007078049 + objectReference: {fileID: 0} + - target: {fileID: 4596122834257617896, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.y + value: 0.24036232 + objectReference: {fileID: 0} + - target: {fileID: 4596122834257617896, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.z + value: 0.000000016763806 + objectReference: {fileID: 0} + - target: {fileID: 4741563609192783373, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.x + value: -0.00000004563479 + objectReference: {fileID: 0} + - target: {fileID: 4741563609192783373, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.y + value: -0.24036391 + objectReference: {fileID: 0} + - target: {fileID: 4741563609192783373, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.z + value: 0.000000028870996 + objectReference: {fileID: 0} + - target: {fileID: 4849444477218521423, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.x + value: 0.004436876 + objectReference: {fileID: 0} + - target: {fileID: 4849444477218521423, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.y + value: 0.072881624 + objectReference: {fileID: 0} + - target: {fileID: 4849444477218521423, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.z + value: -0.029359037 + objectReference: {fileID: 0} + - target: {fileID: 7884909160733160561, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.x + value: -0.012848596 + objectReference: {fileID: 0} + - target: {fileID: 7884909160733160561, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.y + value: -0.08609787 + objectReference: {fileID: 0} + - target: {fileID: 7884909160733160561, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.z + value: -0.0034359773 + objectReference: {fileID: 0} + - target: {fileID: 8911350578850176258, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.x + value: -0.009848176 + objectReference: {fileID: 0} + - target: {fileID: 8911350578850176258, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.y + value: -0.047670566 + objectReference: {fileID: 0} + - target: {fileID: 8911350578850176258, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_LocalPosition.z + value: -0.04101276 + objectReference: {fileID: 0} + - target: {fileID: 9121803696401781268, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_Name + value: ArmatureSkinningUpdateRetargetUserUpperBody + objectReference: {fileID: 0} + - target: {fileID: 9121803696401781268, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} +--- !u!4 &51266213166630438 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1395680962295553233, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &63731746210207621 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1371976685920341362, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!95 &585457876304057424 stripped +Animator: + m_CorrespondingSourceObject: {fileID: 2015256377725734567, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &713121887241261418 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1877388331611999133, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &972723851879224486 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2204398875919224401, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &977098172415352281 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2190737017092966190, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &1405689208918275001 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 29929578043304270, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &1541957764070846035 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 472442842363016356, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &1622968437178530247 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 391152466220180272, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &2683758638816182901 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3951616662085982338, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3544633643260244702 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2511117075805431849, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3769253516756971525 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2857325278740409074, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3912735870831686328 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2712436511663056975, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4226968543005296691 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2972766455213642436, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4562970236519078923 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3223094540932368124, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4617438155049792530 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6051775358866550501, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4824162826205284313 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5844133748634574126, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &6182376113165095175 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5054270750810229744, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &6744111909174812309 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5656433330203690082, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &7560647181254474819 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8864358005623957172, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!1 &7890163646267885795 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 9121803696401781268, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1280450767 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7890163646267885795} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 642f072a06af00f42b49882dbbda8521, type: 3} + m_Name: + m_EditorClassIdentifier: + _skeleton: {fileID: 1280450773} + _animator: {fileID: 585457876304057424} + _rigBuilder: {fileID: 1280450771} + _ovrSkeletonConstraints: + - {fileID: 1412995357} + - {fileID: 388136804} + _rebindAnimator: 1 + _reEnableRig: 1 + _rigToggleOnFocus: 0 + _retargetingLayer: {fileID: 1280450773} + _checkSkeletalUpdatesByProxy: 1 +--- !u!114 &1280450768 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7890163646267885795} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f8679dc9cec9324429dd9c3909e6cac3, type: 3} + m_Name: + m_EditorClassIdentifier: + _constraints: [] + _retargetingLayer: {fileID: 1280450773} + _boneIdToTest: 45 + _headTransform: {fileID: 4562970236519078923} + _autoAddTo: {fileID: 1280450773} + _constraintsMinDistance: 0.2 + _constraintsMaxDistance: 0.5 + _blendCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _maxWeight: 1 +--- !u!114 &1280450769 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7890163646267885795} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f8679dc9cec9324429dd9c3909e6cac3, type: 3} + m_Name: + m_EditorClassIdentifier: + _constraints: [] + _retargetingLayer: {fileID: 1280450773} + _boneIdToTest: 19 + _headTransform: {fileID: 4562970236519078923} + _autoAddTo: {fileID: 1280450773} + _constraintsMinDistance: 0.2 + _constraintsMaxDistance: 0.5 + _blendCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _maxWeight: 1 +--- !u!114 &1280450770 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7890163646267885795} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e00344307bbe4d949bfcf8eddb0caf22, type: 3} + m_Name: + m_EditorClassIdentifier: + _autoAddTo: {fileID: 1280450773} + _retargetedBoneTargets: + - HumanBodyBone: 0 + Target: {fileID: 1653966953} + - HumanBodyBone: 7 + Target: {fileID: 41237797} + - HumanBodyBone: 8 + Target: {fileID: 1805178966} + - HumanBodyBone: 54 + Target: {fileID: 948545905} + - HumanBodyBone: 9 + Target: {fileID: 677977384} + - HumanBodyBone: 10 + Target: {fileID: 1977851119} +--- !u!114 &1280450771 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7890163646267885795} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fff0960ef4ea6e04eac66b4a7fd2189d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RigLayers: + - m_Rig: {fileID: 1122120706} + m_Active: 1 + m_Effectors: [] +--- !u!114 &1280450772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7890163646267885795} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 274835e4e2feae04b87f0d000555f8a4, type: 3} + m_Name: + m_EditorClassIdentifier: + _providedSkeletonType: 0 +--- !u!114 &1280450773 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7890163646267885795} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31e3b6438933e1945a67ef8d4db811bf, type: 3} + m_Name: + m_EditorClassIdentifier: + _skeletonType: 2 + _updateRootPose: 0 + _updateRootScale: 0 + _enablePhysicsCapsules: 0 + _applyBoneTranslations: 1 + _adjustments: + - Joint: 0 + PositionChange: {x: 0, y: 0, z: 0} + RotationChange: {x: 0.5, y: 0, z: 0, w: 0.8660254} + RotationTweaks: [] + DisableRotationTransform: 0 + DisablePositionTransform: 0 + FullBodyBoneIdOverrideValue: 85 + BoneIdOverrideValue: 71 + _fullBodySectionsToAlign: 0400000006000000050000000700000008000000090000000a0000000b00000000000000010000000200000003000000 + _bodySectionsToAlign: 0400000006000000050000000700000008000000090000000a0000000b000000 + _fullBodySectionToPosition: 04000000060000000500000007000000080000000a0000000b00000000000000010000000200000003000000 + _bodySectionToPosition: 0400000006000000050000000700000008000000090000000a0000000b000000 + _updateType: 1 + _applyAnimationConstraintsToCorrectedPositions: 1 + _enableTrackingByProxy: 1 + _retargetingAnimationConstraint: {fileID: 1412995357} + _retargetingProcessors: + - {fileID: 11400000, guid: 15440560904a85846a7a4b75e1f7b96e, type: 2} + - {fileID: 11400000, guid: 8033477507feea54a9c44eb17a69be20, type: 2} + - {fileID: 11400000, guid: b47ca2dcc0aa6e34484b90e7122d3db4, type: 2} + _jointRotationTweaks: [] +--- !u!4 &8023271195216576026 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8984739037707363565, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8525588144871335425 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7329800906561977590, guid: 4d1160b6537bb3e42802d3a5219e72c4, type: 3} + m_PrefabInstance: {fileID: 1434491218122775287} + m_PrefabAsset: {fileID: 0} diff --git a/Samples/Prefabs/Retargeting/ArmatureSkinningUpdateRetargetUserUpperBody.prefab.meta b/Samples/Prefabs/Retargeting/ArmatureSkinningUpdateRetargetUserUpperBody.prefab.meta new file mode 100644 index 00000000..91825897 --- /dev/null +++ b/Samples/Prefabs/Retargeting/ArmatureSkinningUpdateRetargetUserUpperBody.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9085bb280872b4a488fbe0addf928ee7 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/Prefabs/UI/RetargetingMenu.prefab b/Samples/Prefabs/UI/RetargetingMenu.prefab index 00146c61..cd0244c6 100644 --- a/Samples/Prefabs/UI/RetargetingMenu.prefab +++ b/Samples/Prefabs/UI/RetargetingMenu.prefab @@ -259,38 +259,6 @@ Transform: m_Father: {fileID: 194819018211418997} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &872111951155325370 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6621160322830769724} - m_Layer: 0 - m_Name: Visuals - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6621160322830769724 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 872111951155325370} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1169784719407294224} - m_Father: {fileID: 3676727503918658921} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &884186622139581879 GameObject: m_ObjectHideFlags: 0 @@ -368,7 +336,7 @@ MonoBehaviour: m_EditorClassIdentifier: _position: {x: 0, y: 0, z: 0} _size: {x: 3, y: 1, z: 1} ---- !u!1 &1044829674716633490 +--- !u!1 &1278558608965080183 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -376,29 +344,282 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 5516519308894108221} + - component: {fileID: 3428445458957398331} + - component: {fileID: 1439991897071983908} + - component: {fileID: 5599344650878878703} m_Layer: 0 - m_Name: Model + m_Name: Add Rigged Robot Constraints + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3428445458957398331 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1278558608965080183} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.07, z: 0} + m_LocalScale: {x: 0.05, y: 0.05, z: 0.05} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2962082793124004268} + - {fileID: 5458924027632475729} + - {fileID: 7977031090338279666} + m_Father: {fileID: 4755192900336154934} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1439991897071983908 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1278558608965080183} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 317e663e2bb60ea408fe22b908b59295, type: 3} + m_Name: + m_EditorClassIdentifier: + _interactorFilters: [] + _maxInteractors: -1 + _maxSelectingInteractors: -1 + _data: {fileID: 0} + _pointableElement: {fileID: 0} + _surfacePatch: {fileID: 1198025842780766555} + _enterHoverNormal: 0.01 + _enterHoverTangent: 0 + _exitHoverNormal: 0.05 + _exitHoverTangent: 0 + _cancelSelectNormal: 0.1 + _cancelSelectTangent: 0.03 + _minThresholds: + Enabled: 0 + MinNormal: 0.01 + _dragThresholds: + Enabled: 1 + DragNormal: 0.01 + DragTangent: 0.01 + DragEaseCurve: + _animationCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _animationLength: 0.05 + _positionPinning: + Enabled: 0 + MaxPinDistance: 0 + PinningEaseCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0.2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ResyncCurve: + _animationCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _animationLength: 0.2 + _recoilAssist: + Enabled: 0 + UseDynamicDecay: 0 + DynamicDecayCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 50 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 0.9 + value: 0.5 + inSlope: -47 + outSlope: -47 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + UseVelocityExpansion: 0 + VelocityExpansionMinSpeed: 0.4 + VelocityExpansionMaxSpeed: 1.4 + VelocityExpansionDistance: 0.055 + VelocityExpansionDecayRate: 0.125 + ExitDistance: 0.02 + ReEnterDistance: 0.02 + _closeDistanceThreshold: 0.001 + _tiebreakerScore: 0 +--- !u!114 &5599344650878878703 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1278558608965080183} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2f8f6e9e6f3e114b9bf9a57c2160615, type: 3} + m_Name: + m_EditorClassIdentifier: + _pointable: {fileID: 1439991897071983908} + _whenRelease: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1850453743319247403} + m_TargetAssemblyTypeName: Oculus.Interaction.AudioTrigger, Oculus.Interaction.Samples + m_MethodName: PlayAudio + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 4755192900336154933} + m_TargetAssemblyTypeName: Oculus.Movement.UI.RetargetingMenu, Meta.Movement + m_MethodName: AddRiggedRetargetedCharacterWithConstraints + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + _whenHover: + m_PersistentCalls: + m_Calls: [] + _whenUnhover: + m_PersistentCalls: + m_Calls: [] + _whenSelect: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 6235965862014387597} + m_TargetAssemblyTypeName: Oculus.Interaction.AudioTrigger, Oculus.Interaction.Samples + m_MethodName: PlayAudio + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + _whenUnselect: + m_PersistentCalls: + m_Calls: [] + _whenMove: + m_PersistentCalls: + m_Calls: [] + _whenCancel: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1702556641685069118 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7977031090338279666} + m_Layer: 0 + m_Name: Audio m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &5516519308894108221 +--- !u!4 &7977031090338279666 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1044829674716633490} + m_GameObject: {fileID: 1702556641685069118} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: -0, z: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 8438990253971939993} - m_Father: {fileID: 3676727503918658921} - m_RootOrder: 0 + - {fileID: 2478525439814570719} + - {fileID: 5484211908585441615} + m_Father: {fileID: 3428445458957398331} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1840962726374405267 GameObject: @@ -736,7 +957,7 @@ MonoBehaviour: m_EditorClassIdentifier: _position: {x: 0, y: 0, z: 0} _size: {x: 3, y: 1, z: 1} ---- !u!1 &2098668741582178354 +--- !u!1 &2134073342409106288 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -744,41 +965,118 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 2118789282557059747} - - component: {fileID: 3805535432188007503} - - component: {fileID: 4257675475786484633} + - component: {fileID: 1797260609389014227} + - component: {fileID: 865348305720758304} + - component: {fileID: 1198025842780766555} + - component: {fileID: 621182220868049171} m_Layer: 0 - m_Name: BasicPokeButtonReleaseAudio + m_Name: Surface m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &2118789282557059747 +--- !u!4 &1797260609389014227 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2098668741582178354} + m_GameObject: {fileID: 2134073342409106288} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1828881643105883298} - m_RootOrder: 1 + m_Father: {fileID: 2962082793124004268} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!82 &3805535432188007503 -AudioSource: +--- !u!114 &865348305720758304 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2098668741582178354} + m_GameObject: {fileID: 2134073342409106288} m_Enabled: 1 - serializedVersion: 4 - OutputAudioMixerGroup: {fileID: 0} + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9cf2a74d69b1c1e41916d2a7afdff5be, type: 3} + m_Name: + m_EditorClassIdentifier: + _facing: 0 + _doubleSided: 1 +--- !u!114 &1198025842780766555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2134073342409106288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: efd927768041afd4d90e5d822283f0f4, type: 3} + m_Name: + m_EditorClassIdentifier: + _planeSurface: {fileID: 865348305720758304} + _clippers: + - {fileID: 621182220868049171} +--- !u!114 &621182220868049171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2134073342409106288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e08ab46e8fb05dc46b34e54466dc11e3, type: 3} + m_Name: + m_EditorClassIdentifier: + _position: {x: 0, y: 0, z: 0} + _size: {x: 3, y: 1, z: 1} +--- !u!1 &2882098382300715993 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2478525439814570719} + - component: {fileID: 3161992971885771948} + - component: {fileID: 6235965862014387597} + m_Layer: 0 + m_Name: BasicPokeButtonPressAudio + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2478525439814570719 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2882098382300715993} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7977031090338279666} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &3161992971885771948 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2882098382300715993} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} m_audioClip: {fileID: 0} m_PlayOnAwake: 0 m_Volume: 1 @@ -865,13 +1163,13 @@ AudioSource: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 ---- !u!114 &4257675475786484633 +--- !u!114 &6235965862014387597 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2098668741582178354} + m_GameObject: {fileID: 2882098382300715993} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 925ef87c5bafc37469a2f7ec825dee4b, type: 3} @@ -879,7 +1177,7 @@ MonoBehaviour: m_EditorClassIdentifier: _audioSource: {fileID: 0} _audioClips: - - {fileID: 8300000, guid: aebed88a33938c74f80e53b1386c2034, type: 3} + - {fileID: 8300000, guid: 56fe077fa3d84f24c951589f5d187be2, type: 3} _volume: 0.5 _volumeRandomization: _useRandomRange: 0 @@ -894,7 +1192,7 @@ MonoBehaviour: _loop: 0 _chanceToPlay: 100 _playOnStart: 0 ---- !u!1 &2395704260595574754 +--- !u!1 &3479893511335060230 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -902,171 +1200,56 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4318127394589348713} - - component: {fileID: 8787482267840042597} - - component: {fileID: 6693447037349402093} + - component: {fileID: 9108726194356657344} + - component: {fileID: 1960431897217229066} + - component: {fileID: 1729463182598030769} m_Layer: 0 - m_Name: Text (TMP) + m_Name: ButtonVisual m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &4318127394589348713 -RectTransform: +--- !u!4 &9108726194356657344 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2395704260595574754} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.001} - m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_GameObject: {fileID: 3479893511335060230} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.2} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1169784719407294224} - m_RootOrder: 1 + m_Children: + - {fileID: 4227210653647702704} + - {fileID: 6178457975552649401} + m_Father: {fileID: 3868676794485974508} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 30, y: 5} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!23 &8787482267840042597 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2395704260595574754} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: -5839354330806206608, guid: b8f5aeb9c6de7614db2631011b869bc3, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!114 &6693447037349402093 +--- !u!114 &1960431897217229066 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2395704260595574754} + m_GameObject: {fileID: 3479893511335060230} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Script: {fileID: 11500000, guid: 0b3b3f04ac18184468bedd999e5a6688, type: 3} m_Name: m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_text: Add Animation Rigged Robot - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: b8f5aeb9c6de7614db2631011b869bc3, type: 2} - m_sharedMaterial: {fileID: -5839354330806206608, guid: b8f5aeb9c6de7614db2631011b869bc3, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4278190080 - m_fontColor: {r: 0, g: 0, b: 0, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 32 - m_fontSizeBase: 32 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 0 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 1 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - _SortingLayer: 0 - _SortingLayerID: 0 - _SortingOrder: 0 - m_hasFontAssetChanged: 0 - m_renderer: {fileID: 8787482267840042597} - m_maskType: 0 ---- !u!1 &3101356872290809016 + _pokeInteractable: {fileID: 6109289713368551864} + _buttonBaseTransform: {fileID: 1967523122632726857} +--- !u!33 &1729463182598030769 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3479893511335060230} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &4363877779481063049 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1074,9 +1257,9 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 3130758330668228137} - - component: {fileID: 205540423909664965} - - component: {fileID: 937750327430592275} + - component: {fileID: 5929627731669475948} + - component: {fileID: 2658503672041476402} + - component: {fileID: 2231742236105525644} m_Layer: 0 m_Name: BasicPokeButtonPressAudio m_TagString: Untagged @@ -1084,28 +1267,28 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &3130758330668228137 +--- !u!4 &5929627731669475948 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3101356872290809016} + m_GameObject: {fileID: 4363877779481063049} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1828881643105883298} + m_Father: {fileID: 2502071832118734611} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!82 &205540423909664965 +--- !u!82 &2658503672041476402 AudioSource: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3101356872290809016} + m_GameObject: {fileID: 4363877779481063049} m_Enabled: 1 serializedVersion: 4 OutputAudioMixerGroup: {fileID: 0} @@ -1195,13 +1378,13 @@ AudioSource: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 ---- !u!114 &937750327430592275 +--- !u!114 &2231742236105525644 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3101356872290809016} + m_GameObject: {fileID: 4363877779481063049} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 925ef87c5bafc37469a2f7ec825dee4b, type: 3} @@ -1224,7 +1407,7 @@ MonoBehaviour: _loop: 0 _chanceToPlay: 100 _playOnStart: 0 ---- !u!1 &3479893511335060230 +--- !u!1 &4675067971951201953 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1232,98 +1415,41 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 9108726194356657344} - - component: {fileID: 1960431897217229066} - - component: {fileID: 1729463182598030769} + - component: {fileID: 194819018211418997} + - component: {fileID: 3332566153571542050} + - component: {fileID: 3251139294588466155} m_Layer: 0 - m_Name: ButtonVisual + m_Name: RemoveLast m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &9108726194356657344 +--- !u!4 &194819018211418997 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3479893511335060230} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.2} - m_LocalScale: {x: 1, y: 1, z: 1} + m_GameObject: {fileID: 4675067971951201953} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 0.05, y: 0.05, z: 0.05} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 4227210653647702704} - - {fileID: 6178457975552649401} - m_Father: {fileID: 3868676794485974508} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1960431897217229066 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3479893511335060230} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0b3b3f04ac18184468bedd999e5a6688, type: 3} - m_Name: - m_EditorClassIdentifier: - _pokeInteractable: {fileID: 6109289713368551864} - _buttonBaseTransform: {fileID: 1967523122632726857} ---- !u!33 &1729463182598030769 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3479893511335060230} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &3676727503918658920 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3676727503918658921} - - component: {fileID: 4223203923031812712} - - component: {fileID: 4142856143600608224} - m_Layer: 0 - m_Name: Add Rigged Robot - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3676727503918658921 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3676727503918658920} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.07, z: 0} - m_LocalScale: {x: 0.05, y: 0.05, z: 0.05} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 5516519308894108221} - - {fileID: 6621160322830769724} - - {fileID: 1828881643105883298} + - {fileID: 7706727491920732236} + - {fileID: 9107794898092211047} + - {fileID: 2502071832118734611} m_Father: {fileID: 4755192900336154934} - m_RootOrder: 2 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &4223203923031812712 +--- !u!114 &3332566153571542050 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3676727503918658920} + m_GameObject: {fileID: 4675067971951201953} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 317e663e2bb60ea408fe22b908b59295, type: 3} @@ -1334,7 +1460,7 @@ MonoBehaviour: _maxSelectingInteractors: -1 _data: {fileID: 0} _pointableElement: {fileID: 0} - _surfacePatch: {fileID: 4803727101265788734} + _surfacePatch: {fileID: 4020707738441964073} _enterHoverNormal: 0.01 _enterHoverTangent: 0 _exitHoverNormal: 0.05 @@ -1377,29 +1503,109 @@ MonoBehaviour: _positionPinning: Enabled: 0 MaxPinDistance: 0 + PinningEaseCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0.2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ResyncCurve: + _animationCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _animationLength: 0.2 _recoilAssist: Enabled: 0 + UseDynamicDecay: 0 + DynamicDecayCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 50 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 0.9 + value: 0.5 + inSlope: -47 + outSlope: -47 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + UseVelocityExpansion: 0 + VelocityExpansionMinSpeed: 0.4 + VelocityExpansionMaxSpeed: 1.4 + VelocityExpansionDistance: 0.055 + VelocityExpansionDecayRate: 0.125 ExitDistance: 0.02 ReEnterDistance: 0.02 _closeDistanceThreshold: 0.001 _tiebreakerScore: 0 ---- !u!114 &4142856143600608224 +--- !u!114 &3251139294588466155 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3676727503918658920} + m_GameObject: {fileID: 4675067971951201953} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: e2f8f6e9e6f3e114b9bf9a57c2160615, type: 3} m_Name: m_EditorClassIdentifier: - _pointable: {fileID: 4223203923031812712} + _pointable: {fileID: 3332566153571542050} _whenRelease: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 4257675475786484633} + - m_Target: {fileID: 906698699010387789} m_TargetAssemblyTypeName: Oculus.Interaction.AudioTrigger, Oculus.Interaction.Samples m_MethodName: PlayAudio m_Mode: 1 @@ -1413,7 +1619,7 @@ MonoBehaviour: m_CallState: 2 - m_Target: {fileID: 4755192900336154933} m_TargetAssemblyTypeName: Oculus.Movement.Samples.RetargetingMenu, Assembly-CSharp - m_MethodName: AddRiggedRetargetedCharacter + m_MethodName: RemoveLastCharacter m_Mode: 1 m_Arguments: m_ObjectArgument: {fileID: 0} @@ -1432,7 +1638,7 @@ MonoBehaviour: _whenSelect: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 937750327430592275} + - m_Target: {fileID: 2231742236105525644} m_TargetAssemblyTypeName: Oculus.Interaction.AudioTrigger, Oculus.Interaction.Samples m_MethodName: PlayAudio m_Mode: 1 @@ -1453,7 +1659,7 @@ MonoBehaviour: _whenCancel: m_PersistentCalls: m_Calls: [] ---- !u!1 &4363877779481063049 +--- !u!1 &4755192900336154932 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1461,381 +1667,49 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 5929627731669475948} - - component: {fileID: 2658503672041476402} - - component: {fileID: 2231742236105525644} + - component: {fileID: 4755192900336154934} + - component: {fileID: 4755192900336154933} m_Layer: 0 - m_Name: BasicPokeButtonPressAudio + m_Name: RetargetingMenu m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &5929627731669475948 +--- !u!4 &4755192900336154934 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4363877779481063049} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_GameObject: {fileID: 4755192900336154932} + m_LocalRotation: {x: 0.09229593, y: -0.7010574, z: 0.09229593, w: 0.7010574} + m_LocalPosition: {x: -0.84, y: 1.223, z: 0.103} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2502071832118734611} + m_Children: + - {fileID: 1392910777745800631} + - {fileID: 6725289421763366585} + - {fileID: 3428445458957398331} + - {fileID: 194819018211418997} + m_Father: {fileID: 0} m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!82 &2658503672041476402 -AudioSource: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4363877779481063049} - m_Enabled: 1 - serializedVersion: 4 - OutputAudioMixerGroup: {fileID: 0} - m_audioClip: {fileID: 0} - m_PlayOnAwake: 0 - m_Volume: 1 - m_Pitch: 1 - Loop: 0 - Mute: 0 - Spatialize: 0 - SpatializePostEffects: 0 - Priority: 128 - DopplerLevel: 1 - MinDistance: 1 - MaxDistance: 500 - Pan2D: 0 - rolloffMode: 0 - BypassEffects: 0 - BypassListenerEffects: 0 - BypassReverbZones: 0 - rolloffCustomCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - panLevelCustomCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - spreadCustomCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - reverbZoneMixCustomCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 ---- !u!114 &2231742236105525644 + m_LocalEulerAnglesHint: {x: 15, y: -90, z: 0} +--- !u!114 &4755192900336154933 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4363877779481063049} + m_GameObject: {fileID: 4755192900336154932} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 925ef87c5bafc37469a2f7ec825dee4b, type: 3} - m_Name: - m_EditorClassIdentifier: - _audioSource: {fileID: 0} - _audioClips: - - {fileID: 8300000, guid: 56fe077fa3d84f24c951589f5d187be2, type: 3} - _volume: 0.5 - _volumeRandomization: - _useRandomRange: 0 - _min: 0 - _max: 0 - _pitch: 1 - _pitchRandomization: - _useRandomRange: 0 - _min: 0 - _max: 0 - _spatialize: 1 - _loop: 0 - _chanceToPlay: 100 - _playOnStart: 0 ---- !u!1 &4675067971951201953 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 194819018211418997} - - component: {fileID: 3332566153571542050} - - component: {fileID: 3251139294588466155} - m_Layer: 0 - m_Name: RemoveLast - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &194819018211418997 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4675067971951201953} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0} - m_LocalScale: {x: 0.05, y: 0.05, z: 0.05} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 7706727491920732236} - - {fileID: 9107794898092211047} - - {fileID: 2502071832118734611} - m_Father: {fileID: 4755192900336154934} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &3332566153571542050 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4675067971951201953} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 317e663e2bb60ea408fe22b908b59295, type: 3} - m_Name: - m_EditorClassIdentifier: - _interactorFilters: [] - _maxInteractors: -1 - _maxSelectingInteractors: -1 - _data: {fileID: 0} - _pointableElement: {fileID: 0} - _surfacePatch: {fileID: 4020707738441964073} - _enterHoverNormal: 0.01 - _enterHoverTangent: 0 - _exitHoverNormal: 0.05 - _exitHoverTangent: 0 - _cancelSelectNormal: 0.1 - _cancelSelectTangent: 0.03 - _minThresholds: - Enabled: 0 - MinNormal: 0.01 - _dragThresholds: - Enabled: 1 - DragNormal: 0.01 - DragTangent: 0.01 - DragEaseCurve: - _animationCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - _animationLength: 0.05 - _positionPinning: - Enabled: 0 - MaxPinDistance: 0 - _recoilAssist: - Enabled: 0 - ExitDistance: 0.02 - ReEnterDistance: 0.02 - _closeDistanceThreshold: 0.001 - _tiebreakerScore: 0 ---- !u!114 &3251139294588466155 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4675067971951201953} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e2f8f6e9e6f3e114b9bf9a57c2160615, type: 3} - m_Name: - m_EditorClassIdentifier: - _pointable: {fileID: 3332566153571542050} - _whenRelease: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 906698699010387789} - m_TargetAssemblyTypeName: Oculus.Interaction.AudioTrigger, Oculus.Interaction.Samples - m_MethodName: PlayAudio - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 4755192900336154933} - m_TargetAssemblyTypeName: Oculus.Movement.Samples.RetargetingMenu, Assembly-CSharp - m_MethodName: RemoveLastCharacter - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - _whenHover: - m_PersistentCalls: - m_Calls: [] - _whenUnhover: - m_PersistentCalls: - m_Calls: [] - _whenSelect: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 2231742236105525644} - m_TargetAssemblyTypeName: Oculus.Interaction.AudioTrigger, Oculus.Interaction.Samples - m_MethodName: PlayAudio - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - _whenUnselect: - m_PersistentCalls: - m_Calls: [] - _whenMove: - m_PersistentCalls: - m_Calls: [] - _whenCancel: - m_PersistentCalls: - m_Calls: [] ---- !u!1 &4755192900336154932 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4755192900336154934} - - component: {fileID: 4755192900336154933} - m_Layer: 0 - m_Name: RetargetingMenu - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4755192900336154934 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4755192900336154932} - m_LocalRotation: {x: 0.09229593, y: -0.7010574, z: 0.09229593, w: 0.7010574} - m_LocalPosition: {x: -0.84, y: 1.223, z: 0.103} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1392910777745800631} - - {fileID: 6725289421763366585} - - {fileID: 3676727503918658921} - - {fileID: 194819018211418997} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 15, y: -90, z: 0} ---- !u!114 &4755192900336154933 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4755192900336154932} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d376eb07fa664244e9694e33783cdf63, type: 3} + m_Script: {fileID: 11500000, guid: d376eb07fa664244e9694e33783cdf63, type: 3} m_Name: m_EditorClassIdentifier: _characterToSpawn: {fileID: 3095215436059244498, guid: 5d5cf77ca551ff84cb219f05d1f9e349, type: 3} _spawnParent: {fileID: 0} _spawnOffset: {x: -1, y: 0, z: 0} - _positionsToCorrectLateUpdateMask: {fileID: 31900000, guid: 8aaeff1dd84dcdb468f621bf1ecfea63, type: 2} - _tPoseMask: {fileID: 31900000, guid: 7129d5b0eec7de64a93fce9a6ba8f4d7, type: 2} --- !u!1 &4797691732841845106 GameObject: m_ObjectHideFlags: 0 @@ -2040,7 +1914,7 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_renderer: {fileID: 729072134489529748} m_maskType: 0 ---- !u!1 &4997131447421833064 +--- !u!1 &4930540850470529805 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2048,41 +1922,267 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4981521232027198969} - - component: {fileID: 7820890919149851413} - - component: {fileID: 7156454844736113859} + - component: {fileID: 7419488056608105277} + - component: {fileID: 8019156815344769797} + - component: {fileID: 4351798612378256829} + - component: {fileID: 6419215860301465028} + - component: {fileID: 1738942169616285156} m_Layer: 0 - m_Name: BasicPokeButtonPressAudio + m_Name: ButtonPanel m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4981521232027198969 +--- !u!4 &7419488056608105277 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4997131447421833064} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_GameObject: {fileID: 4930540850470529805} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalScale: {x: 3, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 8588968248862584690} + m_Father: {fileID: 6049096318425824116} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!82 &7820890919149851413 -AudioSource: +--- !u!33 &8019156815344769797 +MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4997131447421833064} - m_Enabled: 1 - serializedVersion: 4 - OutputAudioMixerGroup: {fileID: 0} + m_GameObject: {fileID: 4930540850470529805} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &4351798612378256829 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4930540850470529805} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 76a19c8ba767ac4489bc28e88c399433, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &6419215860301465028 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4930540850470529805} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5e48d93b64a9ae4f9fd5a728c8f51af, type: 3} + m_Name: + m_EditorClassIdentifier: + _renderers: + - {fileID: 4351798612378256829} + _vectorProperties: [] + _colorProperties: [] + _floatProperties: [] + _updateEveryFrame: 1 +--- !u!114 &1738942169616285156 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4930540850470529805} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3266c3d920715b84089935c4ab019210, type: 3} + m_Name: + m_EditorClassIdentifier: + _interactableView: {fileID: 1439991897071983908} + _editor: {fileID: 6419215860301465028} + _colorShaderPropertyName: _Color + _normalColorState: + Color: {r: 1, g: 1, b: 1, a: 0.39215687} + ColorCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ColorTime: 0.1 + _hoverColorState: + Color: {r: 1, g: 1, b: 1, a: 0.5882353} + ColorCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ColorTime: 0.1 + _selectColorState: + Color: {r: 0.30196083, g: 0.64535433, b: 0.9529412, a: 0.78431374} + ColorCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ColorTime: 0.05 + _disabledColorState: + Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + ColorCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ColorTime: 0.1 +--- !u!1 &4997131447421833064 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4981521232027198969} + - component: {fileID: 7820890919149851413} + - component: {fileID: 7156454844736113859} + m_Layer: 0 + m_Name: BasicPokeButtonPressAudio + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4981521232027198969 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4997131447421833064} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8588968248862584690} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &7820890919149851413 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4997131447421833064} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} m_audioClip: {fileID: 0} m_PlayOnAwake: 0 m_Volume: 1 @@ -2528,7 +2628,7 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_renderer: {fileID: 1702417451795967413} m_maskType: 0 ---- !u!1 &6725289421763366584 +--- !u!1 &5957457165166594143 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2536,171 +2636,157 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 6725289421763366585} - - component: {fileID: 6109289713368551864} - - component: {fileID: 6281741384999557168} + - component: {fileID: 5484211908585441615} + - component: {fileID: 2826177543550940040} + - component: {fileID: 1850453743319247403} m_Layer: 0 - m_Name: Add Robot + m_Name: BasicPokeButtonReleaseAudio m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &6725289421763366585 +--- !u!4 &5484211908585441615 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6725289421763366584} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.14, z: 0} - m_LocalScale: {x: 0.05, y: 0.05, z: 0.05} + m_GameObject: {fileID: 5957457165166594143} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 2512382020737843693} - - {fileID: 3868676794485974508} - - {fileID: 8588968248862584690} - m_Father: {fileID: 4755192900336154934} + m_Children: [] + m_Father: {fileID: 7977031090338279666} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &6109289713368551864 -MonoBehaviour: +--- !u!82 &2826177543550940040 +AudioSource: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6725289421763366584} + m_GameObject: {fileID: 5957457165166594143} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 317e663e2bb60ea408fe22b908b59295, type: 3} - m_Name: - m_EditorClassIdentifier: - _interactorFilters: [] - _maxInteractors: -1 - _maxSelectingInteractors: -1 - _data: {fileID: 0} - _pointableElement: {fileID: 0} - _surfacePatch: {fileID: 3240655970514371822} - _enterHoverNormal: 0.01 - _enterHoverTangent: 0 - _exitHoverNormal: 0.05 - _exitHoverTangent: 0 - _cancelSelectNormal: 0.1 - _cancelSelectTangent: 0.03 - _minThresholds: - Enabled: 0 - MinNormal: 0.01 - _dragThresholds: - Enabled: 1 - DragNormal: 0.01 - DragTangent: 0.01 - DragEaseCurve: - _animationCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - _animationLength: 0.05 - _positionPinning: - Enabled: 0 - MaxPinDistance: 0 - _recoilAssist: - Enabled: 0 - ExitDistance: 0.02 - ReEnterDistance: 0.02 - _closeDistanceThreshold: 0.001 - _tiebreakerScore: 0 ---- !u!114 &6281741384999557168 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!114 &1850453743319247403 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6725289421763366584} + m_GameObject: {fileID: 5957457165166594143} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e2f8f6e9e6f3e114b9bf9a57c2160615, type: 3} + m_Script: {fileID: 11500000, guid: 925ef87c5bafc37469a2f7ec825dee4b, type: 3} m_Name: m_EditorClassIdentifier: - _pointable: {fileID: 6109289713368551864} - _whenRelease: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 6144342000968298569} - m_TargetAssemblyTypeName: Oculus.Interaction.AudioTrigger, Oculus.Interaction.Samples - m_MethodName: PlayAudio - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - - m_Target: {fileID: 4755192900336154933} - m_TargetAssemblyTypeName: Oculus.Movement.Samples.RetargetingMenu, Assembly-CSharp - m_MethodName: AddNormalRetargetedCharacter - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - _whenHover: - m_PersistentCalls: - m_Calls: [] - _whenUnhover: - m_PersistentCalls: - m_Calls: [] - _whenSelect: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 7156454844736113859} - m_TargetAssemblyTypeName: Oculus.Interaction.AudioTrigger, Oculus.Interaction.Samples - m_MethodName: PlayAudio - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - _whenUnselect: - m_PersistentCalls: - m_Calls: [] - _whenMove: - m_PersistentCalls: - m_Calls: [] - _whenCancel: - m_PersistentCalls: - m_Calls: [] ---- !u!1 &6780252258615367894 + _audioSource: {fileID: 0} + _audioClips: + - {fileID: 8300000, guid: aebed88a33938c74f80e53b1386c2034, type: 3} + _volume: 0.5 + _volumeRandomization: + _useRandomRange: 0 + _min: 0 + _max: 0 + _pitch: 1 + _pitchRandomization: + _useRandomRange: 0 + _min: 0 + _max: 0 + _spatialize: 1 + _loop: 0 + _chanceToPlay: 100 + _playOnStart: 0 +--- !u!1 &6060657674233748457 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2708,56 +2794,171 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1169784719407294224} - - component: {fileID: 8459872656687454938} - - component: {fileID: 8526179059950976609} + - component: {fileID: 6264912874766185974} + - component: {fileID: 2009867996588970253} + - component: {fileID: 1384883439842264498} m_Layer: 0 - m_Name: ButtonVisual + m_Name: Text (TMP) m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1169784719407294224 -Transform: +--- !u!224 &6264912874766185974 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6780252258615367894} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.2} - m_LocalScale: {x: 1, y: 1, z: 1} + m_GameObject: {fileID: 6060657674233748457} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.001} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 6123007111203139936} - - {fileID: 4318127394589348713} - m_Father: {fileID: 6621160322830769724} - m_RootOrder: 0 + m_Children: [] + m_Father: {fileID: 6049096318425824116} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &8459872656687454938 -MonoBehaviour: + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &2009867996588970253 +MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6780252258615367894} + m_GameObject: {fileID: 6060657674233748457} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0b3b3f04ac18184468bedd999e5a6688, type: 3} - m_Name: - m_EditorClassIdentifier: - _pokeInteractable: {fileID: 4223203923031812712} - _buttonBaseTransform: {fileID: 8438990253971939993} ---- !u!33 &8526179059950976609 -MeshFilter: + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: -5839354330806206608, guid: b8f5aeb9c6de7614db2631011b869bc3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &1384883439842264498 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6780252258615367894} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &6930090098547139138 + m_GameObject: {fileID: 6060657674233748457} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Add Anim Rigged Robot (constraints) + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: b8f5aeb9c6de7614db2631011b869bc3, type: 2} + m_sharedMaterial: {fileID: -5839354330806206608, guid: b8f5aeb9c6de7614db2631011b869bc3, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 32 + m_fontSizeBase: 32 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 2009867996588970253} + m_maskType: 0 +--- !u!1 &6206402690742134272 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2765,7 +2966,7 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 2512382020737843693} + - component: {fileID: 2962082793124004268} m_Layer: 0 m_Name: Model m_TagString: Untagged @@ -2773,23 +2974,23 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &2512382020737843693 +--- !u!4 &2962082793124004268 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6930090098547139138} + m_GameObject: {fileID: 6206402690742134272} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: -0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1967523122632726857} - m_Father: {fileID: 6725289421763366585} + - {fileID: 1797260609389014227} + m_Father: {fileID: 3428445458957398331} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &7082198509606359658 +--- !u!1 &6603601737997919136 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2797,31 +2998,56 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 3868676794485974508} + - component: {fileID: 6049096318425824116} + - component: {fileID: 2997180388951138463} + - component: {fileID: 6750794865369471923} m_Layer: 0 - m_Name: Visuals + m_Name: ButtonVisual m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &3868676794485974508 +--- !u!4 &6049096318425824116 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7082198509606359658} + m_GameObject: {fileID: 6603601737997919136} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalPosition: {x: 0, y: 0, z: -0.2} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 9108726194356657344} - m_Father: {fileID: 6725289421763366585} - m_RootOrder: 1 + - {fileID: 7419488056608105277} + - {fileID: 6264912874766185974} + m_Father: {fileID: 5458924027632475729} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &7539583871471348920 +--- !u!114 &2997180388951138463 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6603601737997919136} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b3b3f04ac18184468bedd999e5a6688, type: 3} + m_Name: + m_EditorClassIdentifier: + _pokeInteractable: {fileID: 1439991897071983908} + _buttonBaseTransform: {fileID: 1797260609389014227} +--- !u!33 &6750794865369471923 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6603601737997919136} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &6725289421763366584 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2829,177 +3055,99 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 6123007111203139936} - - component: {fileID: 2349248745677742352} - - component: {fileID: 1900682225575563306} - - component: {fileID: 928287659365561990} - - component: {fileID: 8594860634550005187} + - component: {fileID: 6725289421763366585} + - component: {fileID: 6109289713368551864} + - component: {fileID: 6281741384999557168} m_Layer: 0 - m_Name: ButtonPanel + m_Name: Add Robot m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &6123007111203139936 +--- !u!4 &6725289421763366585 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7539583871471348920} + m_GameObject: {fileID: 6725289421763366584} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 3, y: 1, z: 1} + m_LocalPosition: {x: 0, y: 0.14, z: 0} + m_LocalScale: {x: 0.05, y: 0.05, z: 0.05} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1169784719407294224} - m_RootOrder: 0 + m_Children: + - {fileID: 2512382020737843693} + - {fileID: 3868676794485974508} + - {fileID: 8588968248862584690} + m_Father: {fileID: 4755192900336154934} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &2349248745677742352 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7539583871471348920} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &1900682225575563306 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7539583871471348920} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 76a19c8ba767ac4489bc28e88c399433, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!114 &928287659365561990 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7539583871471348920} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d5e48d93b64a9ae4f9fd5a728c8f51af, type: 3} - m_Name: - m_EditorClassIdentifier: - _renderers: - - {fileID: 1900682225575563306} - _vectorProperties: [] - _colorProperties: [] - _floatProperties: [] - _updateEveryFrame: 1 ---- !u!114 &8594860634550005187 +--- !u!114 &6109289713368551864 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7539583871471348920} + m_GameObject: {fileID: 6725289421763366584} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3266c3d920715b84089935c4ab019210, type: 3} + m_Script: {fileID: 11500000, guid: 317e663e2bb60ea408fe22b908b59295, type: 3} m_Name: m_EditorClassIdentifier: - _interactableView: {fileID: 4223203923031812712} - _editor: {fileID: 928287659365561990} - _colorShaderPropertyName: _Color - _normalColorState: - Color: {r: 1, g: 1, b: 1, a: 0.39215687} - ColorCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - ColorTime: 0.1 - _hoverColorState: - Color: {r: 1, g: 1, b: 1, a: 0.5882353} - ColorCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - ColorTime: 0.1 - _selectColorState: - Color: {r: 0.30196083, g: 0.64535433, b: 0.9529412, a: 0.78431374} - ColorCurve: + _interactorFilters: [] + _maxInteractors: -1 + _maxSelectingInteractors: -1 + _data: {fileID: 0} + _pointableElement: {fileID: 0} + _surfacePatch: {fileID: 3240655970514371822} + _enterHoverNormal: 0.01 + _enterHoverTangent: 0 + _exitHoverNormal: 0.05 + _exitHoverTangent: 0 + _cancelSelectNormal: 0.1 + _cancelSelectTangent: 0.03 + _minThresholds: + Enabled: 0 + MinNormal: 0.01 + _dragThresholds: + Enabled: 1 + DragNormal: 0.01 + DragTangent: 0.01 + DragEaseCurve: + _animationCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _animationLength: 0.05 + _positionPinning: + Enabled: 0 + MaxPinDistance: 0 + PinningEaseCurve: serializedVersion: 2 m_Curve: - serializedVersion: 3 - time: 0 + time: 0.2 value: 0 inSlope: 0 outSlope: 0 @@ -3019,15 +3167,41 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - ColorTime: 0.05 - _disabledColorState: - Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} - ColorCurve: + ResyncCurve: + _animationCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + _animationLength: 0.2 + _recoilAssist: + Enabled: 0 + UseDynamicDecay: 0 + DynamicDecayCurve: serializedVersion: 2 m_Curve: - serializedVersion: 3 time: 0 - value: 0 + value: 50 inSlope: 0 outSlope: 0 tangentMode: 0 @@ -3035,10 +3209,10 @@ MonoBehaviour: inWeight: 0 outWeight: 0 - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 + time: 0.9 + value: 0.5 + inSlope: -47 + outSlope: -47 tangentMode: 0 weightedMode: 0 inWeight: 0 @@ -3046,7 +3220,181 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - ColorTime: 0.1 + UseVelocityExpansion: 0 + VelocityExpansionMinSpeed: 0.4 + VelocityExpansionMaxSpeed: 1.4 + VelocityExpansionDistance: 0.055 + VelocityExpansionDecayRate: 0.125 + ExitDistance: 0.02 + ReEnterDistance: 0.02 + _closeDistanceThreshold: 0.001 + _tiebreakerScore: 0 +--- !u!114 &6281741384999557168 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6725289421763366584} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2f8f6e9e6f3e114b9bf9a57c2160615, type: 3} + m_Name: + m_EditorClassIdentifier: + _pointable: {fileID: 6109289713368551864} + _whenRelease: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 6144342000968298569} + m_TargetAssemblyTypeName: Oculus.Interaction.AudioTrigger, Oculus.Interaction.Samples + m_MethodName: PlayAudio + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 4755192900336154933} + m_TargetAssemblyTypeName: Oculus.Movement.Samples.RetargetingMenu, Assembly-CSharp + m_MethodName: AddNormalRetargetedCharacter + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + _whenHover: + m_PersistentCalls: + m_Calls: [] + _whenUnhover: + m_PersistentCalls: + m_Calls: [] + _whenSelect: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 7156454844736113859} + m_TargetAssemblyTypeName: Oculus.Interaction.AudioTrigger, Oculus.Interaction.Samples + m_MethodName: PlayAudio + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + _whenUnselect: + m_PersistentCalls: + m_Calls: [] + _whenMove: + m_PersistentCalls: + m_Calls: [] + _whenCancel: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &6836745370898204783 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5458924027632475729} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5458924027632475729 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6836745370898204783} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6049096318425824116} + m_Father: {fileID: 3428445458957398331} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6930090098547139138 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2512382020737843693} + m_Layer: 0 + m_Name: Model + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2512382020737843693 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6930090098547139138} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1967523122632726857} + m_Father: {fileID: 6725289421763366585} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7082198509606359658 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3868676794485974508} + m_Layer: 0 + m_Name: Visuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3868676794485974508 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7082198509606359658} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 9108726194356657344} + m_Father: {fileID: 6725289421763366585} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &7975660613610540284 GameObject: m_ObjectHideFlags: 0 @@ -3237,39 +3585,6 @@ MonoBehaviour: _loop: 0 _chanceToPlay: 100 _playOnStart: 0 ---- !u!1 &8402990809417904271 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1828881643105883298} - m_Layer: 0 - m_Name: Audio - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1828881643105883298 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8402990809417904271} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 3130758330668228137} - - {fileID: 2118789282557059747} - m_Father: {fileID: 3676727503918658921} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &8410012317061352610 GameObject: m_ObjectHideFlags: 0 @@ -3327,83 +3642,6 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8410012317061352610} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &8438990253971939992 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8438990253971939993} - - component: {fileID: 5392445518143138904} - - component: {fileID: 4803727101265788734} - - component: {fileID: 4012275257739213619} - m_Layer: 0 - m_Name: Surface - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8438990253971939993 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8438990253971939992} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 5516519308894108221} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &5392445518143138904 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8438990253971939992} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9cf2a74d69b1c1e41916d2a7afdff5be, type: 3} - m_Name: - m_EditorClassIdentifier: - _facing: 0 - _doubleSided: 1 ---- !u!114 &4803727101265788734 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8438990253971939992} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: efd927768041afd4d90e5d822283f0f4, type: 3} - m_Name: - m_EditorClassIdentifier: - _planeSurface: {fileID: 5392445518143138904} - _clippers: - - {fileID: 4012275257739213619} ---- !u!114 &4012275257739213619 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8438990253971939992} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e08ab46e8fb05dc46b34e54466dc11e3, type: 3} - m_Name: - m_EditorClassIdentifier: - _position: {x: 0, y: 0, z: 0} - _size: {x: 3, y: 1, z: 1} --- !u!1 &8751418975657857256 GameObject: m_ObjectHideFlags: 0 @@ -3430,7 +3668,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8751418975657857256} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.07, z: 0.015} + m_LocalPosition: {x: 0, y: 0.075, z: 0.015} m_LocalScale: {x: 0.206, y: 0.25, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] diff --git a/Samples/Prefabs/UtilVisuals/DebugBones.prefab b/Samples/Prefabs/UtilVisuals/DebugBones.prefab new file mode 100644 index 00000000..63ec950e --- /dev/null +++ b/Samples/Prefabs/UtilVisuals/DebugBones.prefab @@ -0,0 +1,226 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &669339439527238449 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 669339439527238463} + - component: {fileID: 669339439527238448} + - component: {fileID: 669339439527238462} + m_Layer: 0 + m_Name: DebugBones + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &669339439527238463 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 669339439527238449} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.81499124, y: 1.347516, z: 0.12875414} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &669339439527238448 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 669339439527238449} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c79d7660e6ccc8a47882b41bfbda4978, type: 3} + m_Name: + m_EditorClassIdentifier: + _whenToRender: 2 + _visualizationGuideType: 0 + _maskToVisualize: {fileID: 31900000, guid: 8267e3d56146c7e43bd0296dc7f86558, type: 2} + _customBoneVisualData: + BoneTuples: + - FirstBone: 0 + SecondBone: 7 + Hide: 0 + - FirstBone: 1 + SecondBone: 3 + Hide: 0 + - FirstBone: 2 + SecondBone: 4 + Hide: 0 + - FirstBone: 3 + SecondBone: 5 + Hide: 0 + - FirstBone: 4 + SecondBone: 6 + Hide: 0 + - FirstBone: 5 + SecondBone: 19 + Hide: 0 + - FirstBone: 6 + SecondBone: 20 + Hide: 0 + - FirstBone: 7 + SecondBone: 8 + Hide: 0 + - FirstBone: 8 + SecondBone: 54 + Hide: 0 + - FirstBone: 9 + SecondBone: 10 + Hide: 0 + - FirstBone: 11 + SecondBone: 13 + Hide: 0 + - FirstBone: 12 + SecondBone: 14 + Hide: 0 + - FirstBone: 13 + SecondBone: 15 + Hide: 0 + - FirstBone: 14 + SecondBone: 16 + Hide: 0 + - FirstBone: 15 + SecondBone: 17 + Hide: 0 + - FirstBone: 16 + SecondBone: 18 + Hide: 0 + - FirstBone: 17 + SecondBone: 30 + Hide: 0 + - FirstBone: 18 + SecondBone: 45 + Hide: 0 + - FirstBone: 10 + SecondBone: 21 + Hide: 0 + - FirstBone: 10 + SecondBone: 22 + Hide: 0 + - FirstBone: 10 + SecondBone: 23 + Hide: 0 + - FirstBone: 24 + SecondBone: 25 + Hide: 0 + - FirstBone: 25 + SecondBone: 26 + Hide: 0 + - FirstBone: 26 + SecondBone: 55 + Hide: 0 + - FirstBone: 27 + SecondBone: 28 + Hide: 0 + - FirstBone: 28 + SecondBone: 29 + Hide: 0 + - FirstBone: 29 + SecondBone: 55 + Hide: 0 + - FirstBone: 30 + SecondBone: 31 + Hide: 0 + - FirstBone: 31 + SecondBone: 32 + Hide: 0 + - FirstBone: 32 + SecondBone: 55 + Hide: 0 + - FirstBone: 33 + SecondBone: 34 + Hide: 0 + - FirstBone: 34 + SecondBone: 35 + Hide: 0 + - FirstBone: 35 + SecondBone: 55 + Hide: 0 + - FirstBone: 36 + SecondBone: 37 + Hide: 0 + - FirstBone: 37 + SecondBone: 38 + Hide: 0 + - FirstBone: 38 + SecondBone: 55 + Hide: 0 + - FirstBone: 39 + SecondBone: 40 + Hide: 0 + - FirstBone: 40 + SecondBone: 41 + Hide: 0 + - FirstBone: 41 + SecondBone: 55 + Hide: 0 + - FirstBone: 42 + SecondBone: 43 + Hide: 0 + - FirstBone: 43 + SecondBone: 44 + Hide: 0 + - FirstBone: 44 + SecondBone: 55 + Hide: 0 + - FirstBone: 45 + SecondBone: 46 + Hide: 0 + - FirstBone: 46 + SecondBone: 47 + Hide: 0 + - FirstBone: 47 + SecondBone: 55 + Hide: 0 + - FirstBone: 48 + SecondBone: 49 + Hide: 0 + - FirstBone: 49 + SecondBone: 50 + Hide: 0 + - FirstBone: 50 + SecondBone: 55 + Hide: 0 + - FirstBone: 51 + SecondBone: 52 + Hide: 0 + - FirstBone: 52 + SecondBone: 53 + Hide: 0 + - FirstBone: 53 + SecondBone: 55 + Hide: 0 + - FirstBone: 54 + SecondBone: 9 + Hide: 0 + _lineRendererPrefab: {fileID: 7812178534108119229, guid: 6d28b0d0a0ff2234cbf60710c8c912dc, type: 3} + _axisRendererPrefab: {fileID: 106719106145556050, guid: 6103ef5d90d602545af4eb910563af03, type: 3} + _visualType: 0 + _animatorComp: {fileID: 0} +--- !u!114 &669339439527238462 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 669339439527238449} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 84fe64f23f2a68b4a86633382680187d, type: 3} + m_Name: + m_EditorClassIdentifier: + _boneVisualizer: {fileID: 669339439527238448} + _lineColor: {r: 0.9959899, g: 1, b: 0, a: 1} diff --git a/Samples/Prefabs/UtilVisuals/DebugBones.prefab.meta b/Samples/Prefabs/UtilVisuals/DebugBones.prefab.meta new file mode 100644 index 00000000..71e2f614 --- /dev/null +++ b/Samples/Prefabs/UtilVisuals/DebugBones.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 83912ab7fbdf5db41822aa92a1698430 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/Prefabs/UtilVisuals/DebugBonesOVRSkeleton.prefab b/Samples/Prefabs/UtilVisuals/DebugBonesOVRSkeleton.prefab new file mode 100644 index 00000000..eb656923 --- /dev/null +++ b/Samples/Prefabs/UtilVisuals/DebugBonesOVRSkeleton.prefab @@ -0,0 +1,56 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1624724815262641718 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1624724815262641716} + - component: {fileID: 1624724815262641707} + m_Layer: 0 + m_Name: DebugBonesOVRSkeleton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1624724815262641716 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1624724815262641718} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.81499124, y: 1.347516, z: 0.12875414} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1624724815262641707 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1624724815262641718} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ab1e3682a8676d84faba89a2aee068e8, type: 3} + m_Name: + m_EditorClassIdentifier: + _whenToRender: 2 + _visualizationGuideType: 0 + _maskToVisualize: {fileID: 0} + _customBoneVisualData: + BoneTuples: [] + _lineRendererPrefab: {fileID: 7812178534108119229, guid: 91a281e92421c464e837420766cafd02, type: 3} + _axisRendererPrefab: {fileID: 106719106145556050, guid: 6103ef5d90d602545af4eb910563af03, type: 3} + _visualType: 0 + _ovrSkeletonComp: {fileID: 0} + _visualizeBindPose: 0 diff --git a/Samples/Prefabs/UtilVisuals/DebugBonesOVRSkeleton.prefab.meta b/Samples/Prefabs/UtilVisuals/DebugBonesOVRSkeleton.prefab.meta new file mode 100644 index 00000000..9b83b59f --- /dev/null +++ b/Samples/Prefabs/UtilVisuals/DebugBonesOVRSkeleton.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4fc27752d2cf86d4282408b4cd7d4675 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/Prefabs/UtilVisuals/DebugBonesOVRSkeletonFullBody.prefab b/Samples/Prefabs/UtilVisuals/DebugBonesOVRSkeletonFullBody.prefab new file mode 100644 index 00000000..d7f12bfb --- /dev/null +++ b/Samples/Prefabs/UtilVisuals/DebugBonesOVRSkeletonFullBody.prefab @@ -0,0 +1,56 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1692031724233491721 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1692031724233491723} + - component: {fileID: 1236458827194487761} + m_Layer: 0 + m_Name: DebugBonesOVRSkeletonFullBody + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1692031724233491723 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1692031724233491721} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.81499124, y: 1.347516, z: 0.12875414} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1236458827194487761 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1692031724233491721} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7ef839cc9cacff4091af449079bbce3, type: 3} + m_Name: + m_EditorClassIdentifier: + _whenToRender: 2 + _visualizationGuideType: 0 + _maskToVisualize: {fileID: 0} + _customBoneVisualData: + BoneTuples: [] + _lineRendererPrefab: {fileID: 7812178534108119229, guid: 91a281e92421c464e837420766cafd02, type: 3} + _axisRendererPrefab: {fileID: 106719106145556050, guid: 6103ef5d90d602545af4eb910563af03, type: 3} + _visualType: 0 + _ovrSkeletonComp: {fileID: 0} + _visualizeBindPose: 0 diff --git a/Samples/Prefabs/UtilVisuals/DebugBonesOVRSkeletonFullBody.prefab.meta b/Samples/Prefabs/UtilVisuals/DebugBonesOVRSkeletonFullBody.prefab.meta new file mode 100644 index 00000000..81c50fef --- /dev/null +++ b/Samples/Prefabs/UtilVisuals/DebugBonesOVRSkeletonFullBody.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8919fa825b25b4544b361623e5d62aba +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples/Presets/BlendshapeModifiers/AuraBlendshapeModifierPreset.json b/Samples/Presets/BlendshapeModifiers/AuraBlendshapeModifierPreset.json index e955b04f..bef1b461 100644 --- a/Samples/Presets/BlendshapeModifiers/AuraBlendshapeModifierPreset.json +++ b/Samples/Presets/BlendshapeModifiers/AuraBlendshapeModifierPreset.json @@ -2,7 +2,7 @@ "FaceExpressionModifiers": [ { "FaceExpressions": [ - 63 + 70 ], "MinValue": 0.0, "MaxValue": 1.0, @@ -301,6 +301,62 @@ "MinValue": 0.0, "MaxValue": 1.0, "Multiplier": 1.5 + }, + { + "FaceExpressions": [ + 63 + ], + "MinValue": 0.0, + "MaxValue": 1.0, + "Multiplier": 2.0 + }, + { + "FaceExpressions": [ + 64 + ], + "MinValue": 0.0, + "MaxValue": 1.0, + "Multiplier": 2.0 + }, + { + "FaceExpressions": [ + 65 + ], + "MinValue": 0.0, + "MaxValue": 1.0, + "Multiplier": 2.0 + }, + { + "FaceExpressions": [ + 66 + ], + "MinValue": 0.0, + "MaxValue": 1.0, + "Multiplier": 2.0 + }, + { + "FaceExpressions": [ + 67 + ], + "MinValue": 0.0, + "MaxValue": 1.0, + "Multiplier": 2.0 + }, + { + "FaceExpressions": [ + 68 + ], + "MinValue": 0.0, + "MaxValue": 1.0, + "Multiplier": 2.0 + }, + { + "FaceExpressions": [ + 69 + ], + "MinValue": 0.0, + "MaxValue": 1.0, + "Multiplier": 2.0 } ] } diff --git a/Samples/Scenes/MovementAura.unity b/Samples/Scenes/MovementAura.unity index a314efac..e74d8928 100644 --- a/Samples/Scenes/MovementAura.unity +++ b/Samples/Scenes/MovementAura.unity @@ -123,6 +123,38 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &12707107 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 12707108} + m_Layer: 0 + m_Name: RightControllerInHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &12707108 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 12707107} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 818423631} + m_Father: {fileID: 2097346132} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &23275527 GameObject: m_ObjectHideFlags: 0 @@ -191,197 +223,384 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &47947179 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 8128128007792444460, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} ---- !u!4 &86349598 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 6239945130830917590, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} ---- !u!4 &295800113 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 8578487884311766621, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} ---- !u!1001 &338789853 +--- !u!1001 &346779796 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 2406909326056993035, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - propertyPath: m_Name - value: AuraFirstPerson - objectReference: {fileID: 0} - - target: {fileID: 3039050048987196337, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} + - target: {fileID: 3730632290436700508, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} + propertyPath: _ovrCameraRig + value: + objectReference: {fileID: 2097346130} + - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} propertyPath: m_RootOrder - value: 11 + value: 4 objectReference: {fileID: 0} - - target: {fileID: 3039050048987196337, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} + - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 3039050048987196337, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} + - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 3039050048987196337, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} + - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 3039050048987196337, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} + - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 3039050048987196337, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} + - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} propertyPath: m_LocalRotation.x - value: -0 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 3039050048987196337, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} + - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} propertyPath: m_LocalRotation.y - value: -0 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 3039050048987196337, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} + - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} propertyPath: m_LocalRotation.z - value: -0 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 3039050048987196337, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} + - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 3039050048987196337, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} + - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 3039050048987196337, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} + - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 6678269571562373685, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} + propertyPath: m_Name + value: OVRInteraction + objectReference: {fileID: 0} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} ---- !u!114 &338789857 stripped + m_SourcePrefab: {fileID: 100100000, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} +--- !u!114 &346779797 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 3533794273248333687, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} + m_CorrespondingSourceObject: {fileID: 8937797799668855672, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} + m_PrefabInstance: {fileID: 346779796} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a95044baf65b10c4e89b246d2f881ac9, type: 3} + m_Script: {fileID: 11500000, guid: 998a5646185efb9488265f3a2f35a99a, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!1001 &346779796 +--- !u!114 &346779798 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3730632290436700508, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} + m_PrefabInstance: {fileID: 346779796} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a7b47e36715521d4e8a30d2c5b6e83e2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &346779799 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} + m_PrefabInstance: {fileID: 346779796} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &390338566 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 3730632290436700508, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} - propertyPath: _ovrCameraRig - value: - objectReference: {fileID: 2097346130} - - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} + - target: {fileID: 3505176259486029538, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + propertyPath: m_Name + value: AuraWithTongue - FirstPerson + objectReference: {fileID: 0} + - target: {fileID: 4318727261365488728, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} propertyPath: m_RootOrder - value: 4 + value: 11 objectReference: {fileID: 0} - - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} + - target: {fileID: 4318727261365488728, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} + - target: {fileID: 4318727261365488728, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} + - target: {fileID: 4318727261365488728, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} + - target: {fileID: 4318727261365488728, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} + - target: {fileID: 4318727261365488728, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} + - target: {fileID: 4318727261365488728, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} + - target: {fileID: 4318727261365488728, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} + - target: {fileID: 4318727261365488728, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} + - target: {fileID: 4318727261365488728, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} + - target: {fileID: 4318727261365488728, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6678269571562373685, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} - propertyPath: m_Name - value: OVRInteraction - objectReference: {fileID: 0} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} ---- !u!114 &346779797 stripped + m_SourcePrefab: {fileID: 100100000, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} +--- !u!114 &390338567 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 8937797799668855672, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} - m_PrefabInstance: {fileID: 346779796} + m_CorrespondingSourceObject: {fileID: 7986394284228639737, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 998a5646185efb9488265f3a2f35a99a, type: 3} + m_Script: {fileID: 11500000, guid: 674a40251fe8ad841b18517ac5209957, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!114 &346779798 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 3730632290436700508, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} - m_PrefabInstance: {fileID: 346779796} +--- !u!4 &390338568 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4319871781508972800, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a7b47e36715521d4e8a30d2c5b6e83e2, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &346779799 stripped +--- !u!4 &390338569 stripped Transform: - m_CorrespondingSourceObject: {fileID: 6357171400049970933, guid: 2f94427b8dd14ea498fd92aee3ec9f0f, type: 3} - m_PrefabInstance: {fileID: 346779796} + m_CorrespondingSourceObject: {fileID: 7083790099656272591, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338570 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1181595226888176426, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338571 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3213883545862531888, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338572 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1338464322197219464, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338573 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1663619109631998250, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338574 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6993814384659194821, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338575 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6411905218465408447, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338576 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7521714804058972836, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} m_PrefabAsset: {fileID: 0} ---- !u!4 &418178501 stripped +--- !u!4 &390338577 stripped Transform: - m_CorrespondingSourceObject: {fileID: 2615749128829108470, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} + m_CorrespondingSourceObject: {fileID: 8643270440885740404, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} m_PrefabAsset: {fileID: 0} ---- !u!4 &461806964 stripped +--- !u!4 &390338578 stripped Transform: - m_CorrespondingSourceObject: {fileID: 3400439068070495373, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} + m_CorrespondingSourceObject: {fileID: 2995967285700267941, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} m_PrefabAsset: {fileID: 0} ---- !u!4 &472370611 stripped +--- !u!4 &390338579 stripped Transform: - m_CorrespondingSourceObject: {fileID: 7847581812954233322, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} + m_CorrespondingSourceObject: {fileID: 7408145670149407156, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} m_PrefabAsset: {fileID: 0} ---- !u!4 &474789949 stripped +--- !u!4 &390338580 stripped Transform: - m_CorrespondingSourceObject: {fileID: 492494068934581955, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} + m_CorrespondingSourceObject: {fileID: 3859283074556241695, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} m_PrefabAsset: {fileID: 0} +--- !u!4 &390338581 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7632325980162130821, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338582 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 590237559207922719, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338583 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2049538296574691380, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338584 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7950210686059532222, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338585 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2668954778363618414, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338586 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6576415999193215080, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338587 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 643590618074184931, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338588 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6988617122292689610, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338589 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7492993243109080698, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338590 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 9019542851784826371, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338591 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8180358943245997742, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338592 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 872071424880093975, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338593 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5143728039558552314, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338594 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4731876549282996363, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338595 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4415973643819662304, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338596 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6855752700826169652, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338597 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 9041131911780874934, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338598 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4536010120253694820, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338599 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2474534056614120794, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338600 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6628332399607492248, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338601 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1236334709570363584, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338602 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7430084000468278707, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!4 &390338603 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5141792950361344063, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} +--- !u!114 &390338604 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 7986394284228639730, guid: 7e1dc9106b4ef4227a0160436ba98ced, type: 3} + m_PrefabInstance: {fileID: 390338566} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a95044baf65b10c4e89b246d2f881ac9, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &432086290 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 432086291} + m_Layer: 0 + m_Name: LeftHandAnchorDetached + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &432086291 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 432086290} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1032955161} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &477545143 PrefabInstance: m_ObjectHideFlags: 0 @@ -392,11 +611,11 @@ PrefabInstance: - target: {fileID: 2798372348693892148, guid: d13bc4c12718d2a4f9222b0d93dd09f0, type: 3} propertyPath: _ovrFaceExpressions value: - objectReference: {fileID: 338789857} + objectReference: {fileID: 390338604} - target: {fileID: 4271415050658874122, guid: d13bc4c12718d2a4f9222b0d93dd09f0, type: 3} propertyPath: _ovrFaceExpressions value: - objectReference: {fileID: 338789857} + objectReference: {fileID: 390338604} - target: {fileID: 8658488230205805792, guid: d13bc4c12718d2a4f9222b0d93dd09f0, type: 3} propertyPath: m_Name value: SceneSelectMenu @@ -447,11 +666,6 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: d13bc4c12718d2a4f9222b0d93dd09f0, type: 3} ---- !u!4 &487908488 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 1814267006412282634, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} --- !u!1001 &564222107 PrefabInstance: m_ObjectHideFlags: 0 @@ -513,16 +727,38 @@ PrefabInstance: objectReference: {fileID: 1853165310} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: caf1104dfe6d01c4e9dabd59f18e535a, type: 3} ---- !u!4 &585751134 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 8160349101843041571, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} +--- !u!1 &568173554 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} ---- !u!4 &637200001 stripped + serializedVersion: 6 + m_Component: + - component: {fileID: 568173555} + m_Layer: 0 + m_Name: LeftControllerInHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &568173555 Transform: - m_CorrespondingSourceObject: {fileID: 4420826698126478553, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 568173554} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 811929954} + m_Father: {fileID: 2097346131} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &642860452 GameObject: m_ObjectHideFlags: 0 @@ -630,21 +866,68 @@ PrefabInstance: objectReference: {fileID: 1853165312} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: caf1104dfe6d01c4e9dabd59f18e535a, type: 3} ---- !u!4 &719847376 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 8565594098525157978, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} +--- !u!1 &811929953 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} ---- !u!4 &732637564 stripped + serializedVersion: 6 + m_Component: + - component: {fileID: 811929954} + m_Layer: 0 + m_Name: LeftHandOnControllerAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &811929954 Transform: - m_CorrespondingSourceObject: {fileID: 8658333499061904492, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} ---- !u!4 &745484609 stripped + m_GameObject: {fileID: 811929953} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 568173555} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &818423630 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 818423631} + m_Layer: 0 + m_Name: RightHandOnControllerAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &818423631 Transform: - m_CorrespondingSourceObject: {fileID: 1869870799671864310, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 818423630} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 12707108} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &851446170 GameObject: m_ObjectHideFlags: 0 @@ -675,26 +958,12 @@ Transform: m_Children: - {fileID: 998197330} - {fileID: 1438888680} + - {fileID: 1171584013} - {fileID: 2094724099} - {fileID: 1686754103} m_Father: {fileID: 0} m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &906841005 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 7363663391121949853, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} ---- !u!4 &929519113 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 4057809391609751628, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} ---- !u!4 &938489071 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 5370529331450009473, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} --- !u!1001 &938568254 PrefabInstance: m_ObjectHideFlags: 0 @@ -756,6 +1025,37 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: b605c55374dd7cb41a35e0bfa7d02148, type: 3} +--- !u!1 &965816506 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 965816507} + m_Layer: 0 + m_Name: RightHandAnchorDetached + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &965816507 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965816506} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1032955161} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &998197329 GameObject: m_ObjectHideFlags: 0 @@ -850,15 +1150,236 @@ Light: m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 ---- !u!4 &1000281984 stripped +--- !u!4 &1032955161 stripped Transform: - m_CorrespondingSourceObject: {fileID: 3716775801310997171, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} + m_CorrespondingSourceObject: {fileID: 459718, guid: 126d619cf4daa52469682f85c1378b4a, type: 3} + m_PrefabInstance: {fileID: 2097346129} m_PrefabAsset: {fileID: 0} ---- !u!4 &1025859825 stripped +--- !u!1001 &1171584012 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 851446171} + m_Modifications: + - target: {fileID: 4586958073313416898, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _faceExpressions + value: + objectReference: {fileID: 390338604} + - target: {fileID: 4586958074552888787, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _faceExpressions + value: + objectReference: {fileID: 390338604} + - target: {fileID: 4586958074618282428, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4586958074618282428, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _ovrFaceExpressions + value: + objectReference: {fileID: 390338604} + - target: {fileID: 7050836453888093357, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: m_Name + value: AuraWithTongue - Mirrored + objectReference: {fileID: 0} + - target: {fileID: 7679282542875227671, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7679282542875227671, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7679282542875227671, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7679282542875227671, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7679282542875227671, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7679282542875227671, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7679282542875227671, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7679282542875227671, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7679282542875227671, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7679282542875227671, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7679282542875227671, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _skeletonToCopy + value: + objectReference: {fileID: 390338567} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[0].OriginalBone + value: + objectReference: {fileID: 390338592} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[1].OriginalBone + value: + objectReference: {fileID: 390338591} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[2].OriginalBone + value: + objectReference: {fileID: 390338590} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[3].OriginalBone + value: + objectReference: {fileID: 390338586} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[4].OriginalBone + value: + objectReference: {fileID: 390338582} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[5].OriginalBone + value: + objectReference: {fileID: 390338603} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[6].OriginalBone + value: + objectReference: {fileID: 390338602} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[7].OriginalBone + value: + objectReference: {fileID: 390338601} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[8].OriginalBone + value: + objectReference: {fileID: 390338597} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[9].OriginalBone + value: + objectReference: {fileID: 390338593} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[10].OriginalBone + value: + objectReference: {fileID: 390338571} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[11].OriginalBone + value: + objectReference: {fileID: 390338572} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[12].OriginalBone + value: + objectReference: {fileID: 390338573} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[13].OriginalBone + value: + objectReference: {fileID: 390338568} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[14].OriginalBone + value: + objectReference: {fileID: 390338569} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[15].OriginalBone + value: + objectReference: {fileID: 390338570} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[16].OriginalBone + value: + objectReference: {fileID: 390338577} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[17].OriginalBone + value: + objectReference: {fileID: 390338578} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[18].OriginalBone + value: + objectReference: {fileID: 390338579} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[19].OriginalBone + value: + objectReference: {fileID: 390338574} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[20].OriginalBone + value: + objectReference: {fileID: 390338575} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[21].OriginalBone + value: + objectReference: {fileID: 390338576} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[22].OriginalBone + value: + objectReference: {fileID: 390338583} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[23].OriginalBone + value: + objectReference: {fileID: 390338584} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[24].OriginalBone + value: + objectReference: {fileID: 390338585} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[25].OriginalBone + value: + objectReference: {fileID: 390338587} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[26].OriginalBone + value: + objectReference: {fileID: 390338588} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[27].OriginalBone + value: + objectReference: {fileID: 390338589} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[28].OriginalBone + value: + objectReference: {fileID: 390338594} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[29].OriginalBone + value: + objectReference: {fileID: 390338595} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[30].OriginalBone + value: + objectReference: {fileID: 390338596} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[31].OriginalBone + value: + objectReference: {fileID: 390338598} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[32].OriginalBone + value: + objectReference: {fileID: 390338599} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[33].OriginalBone + value: + objectReference: {fileID: 390338600} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[34].OriginalBone + value: + objectReference: {fileID: 390338580} + - target: {fileID: 9113924184540537749, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + propertyPath: _mirroredBonePairs.Array.data[35].OriginalBone + value: + objectReference: {fileID: 390338581} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} +--- !u!4 &1171584013 stripped Transform: - m_CorrespondingSourceObject: {fileID: 3803822332041905031, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} + m_CorrespondingSourceObject: {fileID: 7679282542875227671, guid: b2e64c8c2ec8b4b9eb8f461a43f655ef, type: 3} + m_PrefabInstance: {fileID: 1171584012} m_PrefabAsset: {fileID: 0} --- !u!1001 &1235700453 PrefabInstance: @@ -921,16 +1442,6 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 424c2298facd2bf419beffd69e8cc855, type: 3} ---- !u!4 &1249525720 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 2150983583248977150, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} ---- !u!4 &1312182469 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 5685630397771454173, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} --- !u!1001 &1404505943 PrefabInstance: m_ObjectHideFlags: 0 @@ -1044,16 +1555,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 5545149144574972019, guid: ea16c3c8c1688234fa81a4f39339bf1b, type: 3} m_PrefabInstance: {fileID: 1404505943} m_PrefabAsset: {fileID: 0} ---- !u!4 &1428514347 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 118838387238511811, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} ---- !u!4 &1432506149 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 8326383765505920294, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} --- !u!1001 &1438888679 PrefabInstance: m_ObjectHideFlags: 0 @@ -1064,159 +1565,163 @@ PrefabInstance: - target: {fileID: 2267799048079188300, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _faceExpressions value: - objectReference: {fileID: 338789857} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _skeletonToCopy value: - objectReference: {fileID: 2044729478} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[0].OriginalBone value: - objectReference: {fileID: 1249525720} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[1].OriginalBone value: - objectReference: {fileID: 1894828740} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[2].OriginalBone value: - objectReference: {fileID: 472370611} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[3].OriginalBone value: - objectReference: {fileID: 938489071} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[4].OriginalBone value: - objectReference: {fileID: 745484609} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[5].OriginalBone value: - objectReference: {fileID: 86349598} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[6].OriginalBone value: - objectReference: {fileID: 719847376} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[7].OriginalBone value: - objectReference: {fileID: 1770004740} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[8].OriginalBone value: - objectReference: {fileID: 1520363872} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[9].OriginalBone value: - objectReference: {fileID: 1932136559} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[10].OriginalBone value: - objectReference: {fileID: 637200001} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[11].OriginalBone value: - objectReference: {fileID: 1655080565} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[12].OriginalBone value: - objectReference: {fileID: 474789949} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[13].OriginalBone value: - objectReference: {fileID: 2091017508} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[14].OriginalBone value: - objectReference: {fileID: 1432506149} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[15].OriginalBone value: - objectReference: {fileID: 1428514347} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[16].OriginalBone value: - objectReference: {fileID: 906841005} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[17].OriginalBone value: - objectReference: {fileID: 929519113} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[18].OriginalBone value: - objectReference: {fileID: 295800113} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[19].OriginalBone value: - objectReference: {fileID: 47947179} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[20].OriginalBone value: - objectReference: {fileID: 2066700438} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[21].OriginalBone value: - objectReference: {fileID: 2102093178} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[22].OriginalBone value: - objectReference: {fileID: 1836730120} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[23].OriginalBone value: - objectReference: {fileID: 1586760128} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[24].OriginalBone value: - objectReference: {fileID: 1025859825} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[25].OriginalBone value: - objectReference: {fileID: 487908488} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[26].OriginalBone value: - objectReference: {fileID: 585751134} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[27].OriginalBone value: - objectReference: {fileID: 1548674639} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[28].OriginalBone value: - objectReference: {fileID: 1514094813} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[29].OriginalBone value: - objectReference: {fileID: 2027375733} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[30].OriginalBone value: - objectReference: {fileID: 1312182469} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[31].OriginalBone value: - objectReference: {fileID: 461806964} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[32].OriginalBone value: - objectReference: {fileID: 1000281984} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[33].OriginalBone value: - objectReference: {fileID: 2045335701} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[34].OriginalBone value: - objectReference: {fileID: 418178501} + objectReference: {fileID: 0} - target: {fileID: 2536231694802738737, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _mirroredBonePairs.Array.data[35].OriginalBone value: - objectReference: {fileID: 732637564} + objectReference: {fileID: 0} - target: {fileID: 2550476028627066485, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: m_Name value: AuraMirrored objectReference: {fileID: 0} + - target: {fileID: 2550476028627066485, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 2895476751637890255, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: m_RootOrder value: 1 @@ -1264,7 +1769,7 @@ PrefabInstance: - target: {fileID: 3734935905854523833, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _faceExpressions value: - objectReference: {fileID: 338789857} + objectReference: {fileID: 0} - target: {fileID: 8865039754712819280, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: m_Enabled value: 1 @@ -1272,7 +1777,7 @@ PrefabInstance: - target: {fileID: 8865039754712819280, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} propertyPath: _ovrFaceExpressions value: - objectReference: {fileID: 338789857} + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} --- !u!4 &1438888680 stripped @@ -1280,21 +1785,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 2895476751637890255, guid: ba603d7826a9d9344a7c045f1a073390, type: 3} m_PrefabInstance: {fileID: 1438888679} m_PrefabAsset: {fileID: 0} ---- !u!4 &1514094813 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 5794141357479823202, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} ---- !u!4 &1520363872 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 7834963631821954399, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} ---- !u!4 &1548674639 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 8520698193000044947, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} --- !u!1001 &1548721494 PrefabInstance: m_ObjectHideFlags: 0 @@ -1364,16 +1854,6 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 835e735ca71bf78459fb2cababd74112, type: 3} ---- !u!4 &1586760128 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 9193885352273143895, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} ---- !u!4 &1655080565 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 238904423246909281, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} --- !u!1 &1686754102 GameObject: m_ObjectHideFlags: 0 @@ -1404,7 +1884,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 851446171} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 6.693, y: 289.123, z: 72.38} --- !u!108 &1686754104 Light: @@ -1468,11 +1948,6 @@ Light: m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 ---- !u!4 &1770004740 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 66352937753036585, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} --- !u!1001 &1790575144 PrefabInstance: m_ObjectHideFlags: 0 @@ -1534,11 +2009,6 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 424c2298facd2bf419beffd69e8cc855, type: 3} ---- !u!4 &1836730120 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 986992297073405917, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} --- !u!1001 &1853165309 PrefabInstance: m_ObjectHideFlags: 0 @@ -1652,11 +2122,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 83685398960850492, guid: fbfc588a949bb1a42b20e5bddc4cf8cf, type: 3} m_PrefabInstance: {fileID: 1853165309} m_PrefabAsset: {fileID: 0} ---- !u!4 &1894828740 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 6937115062404493639, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} --- !u!1001 &1918804857 PrefabInstance: m_ObjectHideFlags: 0 @@ -1767,37 +2232,6 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 835e735ca71bf78459fb2cababd74112, type: 3} ---- !u!4 &1932136559 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 6242513676157664531, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} ---- !u!4 &2027375733 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 3209761254539533321, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} ---- !u!114 &2044729478 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 3732059742009787979, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 674a40251fe8ad841b18517ac5209957, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &2045335701 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 5350132638922213745, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} ---- !u!4 &2066700438 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 5276043551722242646, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} --- !u!1 &2076536254 GameObject: m_ObjectHideFlags: 0 @@ -1986,11 +2420,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!4 &2091017508 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 3040114485284841193, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} --- !u!1 &2094724098 GameObject: m_ObjectHideFlags: 0 @@ -2021,7 +2450,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 851446171} - m_RootOrder: 2 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 14.671, y: 338.6, z: 78.095} --- !u!108 &2094724100 Light: @@ -2196,11 +2625,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 13b3318f5d2f2d54393fdd91b1970751, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!4 &2102093178 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 8764448769166329165, guid: 1ac7885a83f6c4741addf95e0ceea891, type: 3} - m_PrefabInstance: {fileID: 338789853} - m_PrefabAsset: {fileID: 0} --- !u!1001 &2476541158994686476 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Samples/Scenes/MovementBlendshapeMappingExample.unity b/Samples/Scenes/MovementBlendshapeMappingExample.unity index 63c98f30..c74e06ba 100644 --- a/Samples/Scenes/MovementBlendshapeMappingExample.unity +++ b/Samples/Scenes/MovementBlendshapeMappingExample.unity @@ -2571,6 +2571,24 @@ Transform: m_CorrespondingSourceObject: {fileID: 3206834323034422351, guid: 70c1ec55e63be294f92b377695e53302, type: 3} m_PrefabInstance: {fileID: 1844149371} m_PrefabAsset: {fileID: 0} +--- !u!1 &1844149373 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 2867427915179452149, guid: 70c1ec55e63be294f92b377695e53302, type: 3} + m_PrefabInstance: {fileID: 1844149371} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1844149374 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844149373} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 274835e4e2feae04b87f0d000555f8a4, type: 3} + m_Name: + m_EditorClassIdentifier: + _providedSkeletonType: 0 --- !u!1001 &1853165309 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Samples/Scenes/MovementHighFidelity.unity b/Samples/Scenes/MovementHighFidelity.unity index cb08fe0f..d34668cb 100644 --- a/Samples/Scenes/MovementHighFidelity.unity +++ b/Samples/Scenes/MovementHighFidelity.unity @@ -1993,6 +1993,63 @@ Transform: m_CorrespondingSourceObject: {fileID: 237930284793799618, guid: 566315f3a83d28341a878d894d4feca3, type: 3} m_PrefabInstance: {fileID: 645097915} m_PrefabAsset: {fileID: 0} +--- !u!1001 &1929693008 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_RootOrder + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalPosition.x + value: -0.875 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalPosition.z + value: -0.407 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7010574 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.x + value: 0.09229593 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.y + value: -0.7010574 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.z + value: 0.09229593 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 15 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -90 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471434, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_Name + value: BodyTrackingFidelityToggle + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0737e3f63e17bac45b774695173860d1, type: 3} --- !u!1001 &1951164776 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Samples/Scenes/MovementHipPinning.unity b/Samples/Scenes/MovementHipPinning.unity index 112d7b32..738dea17 100644 --- a/Samples/Scenes/MovementHipPinning.unity +++ b/Samples/Scenes/MovementHipPinning.unity @@ -2613,6 +2613,63 @@ Transform: m_CorrespondingSourceObject: {fileID: 1632928558548522276, guid: bc3f0e03432171b4a934d508d7df1bca, type: 3} m_PrefabInstance: {fileID: 804730340} m_PrefabAsset: {fileID: 0} +--- !u!1001 &1745391659 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_RootOrder + value: 14 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalPosition.x + value: -0.875 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalPosition.z + value: -0.407 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7010574 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.x + value: 0.09229593 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.y + value: -0.7010574 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.z + value: 0.09229593 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 15 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -90 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471434, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_Name + value: BodyTrackingFidelityToggle + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0737e3f63e17bac45b774695173860d1, type: 3} --- !u!4 &1778452685 stripped Transform: m_CorrespondingSourceObject: {fileID: 5504533049474937555, guid: d58e14a8ab54f24428fbc3e051bf50f5, type: 3} diff --git a/Samples/Scenes/MovementISDKIntegration.unity b/Samples/Scenes/MovementISDKIntegration.unity index a84eaa5f..f1bc613e 100644 --- a/Samples/Scenes/MovementISDKIntegration.unity +++ b/Samples/Scenes/MovementISDKIntegration.unity @@ -228,20 +228,68 @@ Transform: m_CorrespondingSourceObject: {fileID: 6966857970010877544, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} m_PrefabInstance: {fileID: 1077107416} m_PrefabAsset: {fileID: 0} +--- !u!1001 &50906629 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 8443568635789723409, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_Name + value: BTCalibrationButton + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_RootOrder + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalPosition.x + value: -0.875 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalPosition.z + value: -0.275 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7010574 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalRotation.x + value: 0.09229593 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalRotation.y + value: -0.7010574 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalRotation.z + value: 0.09229593 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 15 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -90 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} --- !u!4 &51472184 stripped Transform: m_CorrespondingSourceObject: {fileID: 7074563621144590399, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} m_PrefabInstance: {fileID: 1077107416} m_PrefabAsset: {fileID: 0} ---- !u!319 &52514089 -AvatarMask: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: - m_Mask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 - m_Elements: [] --- !u!4 &93568388 stripped Transform: m_CorrespondingSourceObject: {fileID: 3599611966401181169, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} @@ -1368,7 +1416,7 @@ MonoBehaviour: OnActivate: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 1313465879} + - m_Target: {fileID: 947634417} m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[UnityEngine.HumanBodyBones, UnityEngine m_MethodName: set_IsShowingLines @@ -1384,7 +1432,7 @@ MonoBehaviour: OnDeactivate: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 1313465879} + - m_Target: {fileID: 947634417} m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[UnityEngine.HumanBodyBones, UnityEngine m_MethodName: set_IsShowingLines @@ -1403,7 +1451,7 @@ MonoBehaviour: OnActivate: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 1313465879} + - m_Target: {fileID: 947634417} m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[UnityEngine.HumanBodyBones, UnityEngine m_MethodName: set_IsShowingAxes @@ -1419,7 +1467,7 @@ MonoBehaviour: OnDeactivate: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 1313465879} + - m_Target: {fileID: 947634417} m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[UnityEngine.HumanBodyBones, UnityEngine m_MethodName: set_IsShowingAxes @@ -1438,7 +1486,7 @@ MonoBehaviour: OnActivate: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 1313465879} + - m_Target: {fileID: 947634417} m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[UnityEngine.HumanBodyBones, UnityEngine m_MethodName: set_IsShowingAxes @@ -1451,7 +1499,7 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 - - m_Target: {fileID: 1313465879} + - m_Target: {fileID: 947634417} m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[UnityEngine.HumanBodyBones, UnityEngine m_MethodName: set_IsShowingLines @@ -1467,7 +1515,7 @@ MonoBehaviour: OnDeactivate: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 1313465879} + - m_Target: {fileID: 947634417} m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[UnityEngine.HumanBodyBones, UnityEngine m_MethodName: set_IsShowingAxes @@ -1480,7 +1528,7 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 - - m_Target: {fileID: 1313465879} + - m_Target: {fileID: 947634417} m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[UnityEngine.HumanBodyBones, UnityEngine m_MethodName: set_IsShowingLines @@ -1714,6 +1762,106 @@ Transform: m_CorrespondingSourceObject: {fileID: 3715466454324626421, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} m_PrefabInstance: {fileID: 1077107416} m_PrefabAsset: {fileID: 0} +--- !u!1001 &800006208 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1803550042} + m_Modifications: + - target: {fileID: 1236458827194487761, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: _maskToVisualize + value: + objectReference: {fileID: 31900000, guid: 8267e3d56146c7e43bd0296dc7f86558, type: 2} + - target: {fileID: 1236458827194487761, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: _ovrSkeletonComp + value: + objectReference: {fileID: 1320817568} + - target: {fileID: 1692031724233491721, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_Name + value: DebugBonesOVRSkeletonFullBody + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} +--- !u!4 &800006209 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + m_PrefabInstance: {fileID: 800006208} + m_PrefabAsset: {fileID: 0} +--- !u!1 &800006210 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1692031724233491721, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + m_PrefabInstance: {fileID: 800006208} + m_PrefabAsset: {fileID: 0} +--- !u!114 &800006211 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 1236458827194487761, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + m_PrefabInstance: {fileID: 800006208} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 800006210} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7ef839cc9cacff4091af449079bbce3, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &800006212 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 800006210} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 84fe64f23f2a68b4a86633382680187d, type: 3} + m_Name: + m_EditorClassIdentifier: + _boneVisualizer: {fileID: 800006211} + _lineColor: {r: 0.6037736, g: 0.6037736, b: 0.6037736, a: 0.5019608} --- !u!4 &801156447 stripped Transform: m_CorrespondingSourceObject: {fileID: 7706974062571457071, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} @@ -1830,6 +1978,95 @@ Transform: m_CorrespondingSourceObject: {fileID: 8251760988216600566, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} m_PrefabInstance: {fileID: 1077107416} m_PrefabAsset: {fileID: 0} +--- !u!1001 &947634415 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1803550042} + m_Modifications: + - target: {fileID: 669339439527238448, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: _animatorComp + value: + objectReference: {fileID: 1313172172} + - target: {fileID: 669339439527238449, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_Name + value: DebugBones + objectReference: {fileID: 0} + - target: {fileID: 669339439527238462, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: _lineColor.b + value: 0.0627451 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238462, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: _lineColor.g + value: 0.6039216 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238462, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: _lineColor.r + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} +--- !u!4 &947634416 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + m_PrefabInstance: {fileID: 947634415} + m_PrefabAsset: {fileID: 0} +--- !u!114 &947634417 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 669339439527238448, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + m_PrefabInstance: {fileID: 947634415} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c79d7660e6ccc8a47882b41bfbda4978, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!4 &1026697025 stripped Transform: m_CorrespondingSourceObject: {fileID: 6969163518431648179, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} @@ -1854,39 +2091,39 @@ PrefabInstance: m_Modifications: - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.size - value: 6 + value: 8 objectReference: {fileID: 0} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[0].label - value: DrawOVRSkeletonBones Initial + value: DebugBonesOVRSkeletonFullBody objectReference: {fileID: 0} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[1].label - value: LeftHandISDK + value: LeftHandSynthetic objectReference: {fileID: 0} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[2].label - value: RightHandISDK + value: RightHandSynthetic objectReference: {fileID: 0} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[3].label - value: LeftControllerHand + value: LeftControllerHandSynthentic objectReference: {fileID: 0} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[4].label - value: RightControllerHand + value: RightControllerHandSynthetic objectReference: {fileID: 0} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[5].label - value: Retarget Hands + value: Blend Hands Right objectReference: {fileID: 0} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[6].label - value: Retarget Hands + value: Blend Hands Left objectReference: {fileID: 0} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[7].label - value: DebugBonesOVRSkeleton Processed + value: Retargeted Bone Targets objectReference: {fileID: 0} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[0].Enabled @@ -1910,11 +2147,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[5].Enabled - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[6].Enabled - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[7].Enabled @@ -1923,7 +2160,7 @@ PrefabInstance: - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[0].Processor value: - objectReference: {fileID: 1639108944} + objectReference: {fileID: 800006211} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[1].Processor value: @@ -1943,19 +2180,31 @@ PrefabInstance: - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[5].Processor value: - objectReference: {fileID: 1313172174} + objectReference: {fileID: 1077107420} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[6].Processor value: - objectReference: {fileID: 1313172174} + objectReference: {fileID: 1077107419} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[7].Processor value: - objectReference: {fileID: 0} + objectReference: {fileID: 1077107418} - target: {fileID: 1443914921768874357, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: m_Name value: ArmatureSkinningUpdateRetargetSkeletonProcessor objectReference: {fileID: 0} + - target: {fileID: 2444161089806565791, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7486900986326145928, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7901607669017022897, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} - target: {fileID: 8760844189829344787, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: m_RootOrder value: 0 @@ -2007,6 +2256,39 @@ Transform: m_CorrespondingSourceObject: {fileID: 8760844189829344787, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} m_PrefabInstance: {fileID: 1077107416} m_PrefabAsset: {fileID: 0} +--- !u!114 &1077107418 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 2519393238448185555, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} + m_PrefabInstance: {fileID: 1077107416} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e99c227ec21d72d45b36011069f2b263, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1077107419 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 2444161089806565791, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} + m_PrefabInstance: {fileID: 1077107416} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8359a52c8182ca247b2064624e74dffb, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1077107420 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 7486900986326145928, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} + m_PrefabInstance: {fileID: 1077107416} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8359a52c8182ca247b2064624e74dffb, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!114 &1080009793 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 2143258140644656283, guid: e7fbb376593cff24f9db4ecf8d465aaf, type: 3} @@ -2216,6 +2498,63 @@ Transform: m_CorrespondingSourceObject: {fileID: 5208342001094232904, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} m_PrefabInstance: {fileID: 1077107416} m_PrefabAsset: {fileID: 0} +--- !u!1001 &1284353486 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalPosition.x + value: -0.875 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalPosition.z + value: -0.446 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7010574 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.x + value: 0.09229593 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.y + value: -0.7010574 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.z + value: 0.09229593 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 15 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -90 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471434, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_Name + value: BodyTrackingFidelityToggle + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0737e3f63e17bac45b774695173860d1, type: 3} --- !u!114 &1289915232 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 3744647067011934911, guid: ea16c3c8c1688234fa81a4f39339bf1b, type: 3} @@ -2242,257 +2581,22 @@ Transform: m_CorrespondingSourceObject: {fileID: 8590939900806535248, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} m_PrefabInstance: {fileID: 1077107416} m_PrefabAsset: {fileID: 0} ---- !u!114 &1313172171 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 5579424741214871902, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} - m_PrefabInstance: {fileID: 1077107416} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 31e3b6438933e1945a67ef8d4db811bf, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!95 &1313172172 stripped Animator: m_CorrespondingSourceObject: {fileID: 8172159923276885446, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} m_PrefabInstance: {fileID: 1077107416} m_PrefabAsset: {fileID: 0} ---- !u!114 &1313172174 stripped +--- !u!114 &1320817568 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 1483202515538247245, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} + m_CorrespondingSourceObject: {fileID: 2324633634594971607, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} m_PrefabInstance: {fileID: 1077107416} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e00344307bbe4d949bfcf8eddb0caf22, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &1313465878 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1313465880} - - component: {fileID: 1313465879} - - component: {fileID: 1313465881} - m_Layer: 0 - m_Name: DrawRetargetedBones - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1313465879 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1313465878} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c79d7660e6ccc8a47882b41bfbda4978, type: 3} - m_Name: - m_EditorClassIdentifier: - _whenToRender: 0 - _visualizationGuideType: 0 - _maskToVisualize: {fileID: 31900000, guid: 8267e3d56146c7e43bd0296dc7f86558, type: 2} - _customBoneVisualData: - BoneTuples: - - FirstBone: 0 - SecondBone: 7 - Hide: 0 - - FirstBone: 1 - SecondBone: 3 - Hide: 0 - - FirstBone: 2 - SecondBone: 4 - Hide: 0 - - FirstBone: 3 - SecondBone: 5 - Hide: 0 - - FirstBone: 4 - SecondBone: 6 - Hide: 0 - - FirstBone: 5 - SecondBone: 19 - Hide: 0 - - FirstBone: 6 - SecondBone: 20 - Hide: 0 - - FirstBone: 7 - SecondBone: 8 - Hide: 0 - - FirstBone: 8 - SecondBone: 54 - Hide: 0 - - FirstBone: 9 - SecondBone: 10 - Hide: 0 - - FirstBone: 11 - SecondBone: 13 - Hide: 0 - - FirstBone: 12 - SecondBone: 14 - Hide: 0 - - FirstBone: 13 - SecondBone: 15 - Hide: 0 - - FirstBone: 14 - SecondBone: 16 - Hide: 0 - - FirstBone: 15 - SecondBone: 17 - Hide: 0 - - FirstBone: 16 - SecondBone: 18 - Hide: 0 - - FirstBone: 17 - SecondBone: 30 - Hide: 0 - - FirstBone: 18 - SecondBone: 45 - Hide: 0 - - FirstBone: 10 - SecondBone: 21 - Hide: 0 - - FirstBone: 10 - SecondBone: 22 - Hide: 0 - - FirstBone: 10 - SecondBone: 23 - Hide: 0 - - FirstBone: 24 - SecondBone: 25 - Hide: 0 - - FirstBone: 25 - SecondBone: 26 - Hide: 0 - - FirstBone: 26 - SecondBone: 55 - Hide: 0 - - FirstBone: 27 - SecondBone: 28 - Hide: 0 - - FirstBone: 28 - SecondBone: 29 - Hide: 0 - - FirstBone: 29 - SecondBone: 55 - Hide: 0 - - FirstBone: 30 - SecondBone: 31 - Hide: 0 - - FirstBone: 31 - SecondBone: 32 - Hide: 0 - - FirstBone: 32 - SecondBone: 55 - Hide: 0 - - FirstBone: 33 - SecondBone: 34 - Hide: 0 - - FirstBone: 34 - SecondBone: 35 - Hide: 0 - - FirstBone: 35 - SecondBone: 55 - Hide: 0 - - FirstBone: 36 - SecondBone: 37 - Hide: 0 - - FirstBone: 37 - SecondBone: 38 - Hide: 0 - - FirstBone: 38 - SecondBone: 55 - Hide: 0 - - FirstBone: 39 - SecondBone: 40 - Hide: 0 - - FirstBone: 40 - SecondBone: 41 - Hide: 0 - - FirstBone: 41 - SecondBone: 55 - Hide: 0 - - FirstBone: 42 - SecondBone: 43 - Hide: 0 - - FirstBone: 43 - SecondBone: 44 - Hide: 0 - - FirstBone: 44 - SecondBone: 55 - Hide: 0 - - FirstBone: 45 - SecondBone: 46 - Hide: 0 - - FirstBone: 46 - SecondBone: 47 - Hide: 0 - - FirstBone: 47 - SecondBone: 55 - Hide: 0 - - FirstBone: 48 - SecondBone: 49 - Hide: 0 - - FirstBone: 49 - SecondBone: 50 - Hide: 0 - - FirstBone: 50 - SecondBone: 55 - Hide: 0 - - FirstBone: 51 - SecondBone: 52 - Hide: 0 - - FirstBone: 52 - SecondBone: 53 - Hide: 0 - - FirstBone: 53 - SecondBone: 55 - Hide: 0 - - FirstBone: 54 - SecondBone: 9 - Hide: 0 - _lineRendererPrefab: {fileID: 7812178534108119229, guid: 6d28b0d0a0ff2234cbf60710c8c912dc, type: 3} - _axisRendererPrefab: {fileID: 106719106145556050, guid: 6103ef5d90d602545af4eb910563af03, type: 3} - _visualType: 0 - _animatorComp: {fileID: 1313172172} ---- !u!4 &1313465880 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1313465878} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.81499124, y: 1.347516, z: 0.12875414} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1803550042} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1313465881 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1313465878} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 84fe64f23f2a68b4a86633382680187d, type: 3} + m_Script: {fileID: 11500000, guid: 31e3b6438933e1945a67ef8d4db811bf, type: 3} m_Name: m_EditorClassIdentifier: - _boneVisualizer: {fileID: 1313465879} - _lineColor: {r: 0, g: 0.6037736, b: 0.061561298, a: 1} --- !u!4 &1324704613 stripped Transform: m_CorrespondingSourceObject: {fileID: 417454297435961822, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} @@ -2946,75 +3050,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 2004115084450931551, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} m_PrefabInstance: {fileID: 1077107416} m_PrefabAsset: {fileID: 0} ---- !u!1 &1639108941 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1639108943} - - component: {fileID: 1639108944} - - component: {fileID: 1639108945} - m_Layer: 0 - m_Name: DrawOVRSkeletonBones Initial - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1639108943 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1639108941} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.81499124, y: 1.347516, z: 0.12875414} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1803550042} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1639108944 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1639108941} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ab1e3682a8676d84faba89a2aee068e8, type: 3} - m_Name: - m_EditorClassIdentifier: - _whenToRender: 0 - _visualizationGuideType: 0 - _maskToVisualize: {fileID: 52514089} - _customBoneVisualData: - BoneTuples: [] - _lineRendererPrefab: {fileID: 7812178534108119229, guid: 91a281e92421c464e837420766cafd02, type: 3} - _axisRendererPrefab: {fileID: 106719106145556050, guid: 6103ef5d90d602545af4eb910563af03, type: 3} - _visualType: 0 - _ovrSkeletonComp: {fileID: 1313172171} - _visualizeBindPose: 0 ---- !u!114 &1639108945 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1639108941} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 84fe64f23f2a68b4a86633382680187d, type: 3} - m_Name: - m_EditorClassIdentifier: - _boneVisualizer: {fileID: 1639108944} - _lineColor: {r: 0.6037736, g: 0.6037736, b: 0.6037736, a: 0.5019608} --- !u!4 &1666254363 stripped Transform: m_CorrespondingSourceObject: {fileID: 5709010148866722606, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} @@ -3269,8 +3304,8 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1313465880} - - {fileID: 1639108943} + - {fileID: 947634416} + - {fileID: 800006209} m_Father: {fileID: 0} m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -5696,9 +5731,9 @@ MonoBehaviour: OnActivate: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 1639108944} - m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[Oculus.Movement.AnimationRigging.CustomMappings+BodyTrackingBoneId, - Meta.Movement + - m_Target: {fileID: 800006211} + m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[OVRUnityHumanoidSkeletonRetargeter+OVRHumanBodyBonesMappings+BodyTrackingBoneId, + Oculus.VR m_MethodName: set_IsShowingLines m_Mode: 6 m_Arguments: @@ -5712,9 +5747,9 @@ MonoBehaviour: OnDeactivate: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 1639108944} - m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[Oculus.Movement.AnimationRigging.CustomMappings+BodyTrackingBoneId, - Meta.Movement + - m_Target: {fileID: 800006211} + m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[OVRUnityHumanoidSkeletonRetargeter+OVRHumanBodyBonesMappings+BodyTrackingBoneId, + Oculus.VR m_MethodName: set_IsShowingLines m_Mode: 6 m_Arguments: @@ -5731,9 +5766,9 @@ MonoBehaviour: OnActivate: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 1639108944} - m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[Oculus.Movement.AnimationRigging.CustomMappings+BodyTrackingBoneId, - Meta.Movement + - m_Target: {fileID: 800006211} + m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[OVRUnityHumanoidSkeletonRetargeter+OVRHumanBodyBonesMappings+BodyTrackingBoneId, + Oculus.VR m_MethodName: set_IsShowingAxes m_Mode: 6 m_Arguments: @@ -5747,9 +5782,9 @@ MonoBehaviour: OnDeactivate: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 1639108944} - m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[Oculus.Movement.AnimationRigging.CustomMappings+BodyTrackingBoneId, - Meta.Movement + - m_Target: {fileID: 800006211} + m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[OVRUnityHumanoidSkeletonRetargeter+OVRHumanBodyBonesMappings+BodyTrackingBoneId, + Oculus.VR m_MethodName: set_IsShowingAxes m_Mode: 6 m_Arguments: @@ -5766,9 +5801,9 @@ MonoBehaviour: OnActivate: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 1639108944} - m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[Oculus.Movement.AnimationRigging.CustomMappings+BodyTrackingBoneId, - Meta.Movement + - m_Target: {fileID: 800006211} + m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[OVRUnityHumanoidSkeletonRetargeter+OVRHumanBodyBonesMappings+BodyTrackingBoneId, + Oculus.VR m_MethodName: set_IsShowingAxes m_Mode: 6 m_Arguments: @@ -5779,9 +5814,9 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 - - m_Target: {fileID: 1639108944} - m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[Oculus.Movement.AnimationRigging.CustomMappings+BodyTrackingBoneId, - Meta.Movement + - m_Target: {fileID: 800006211} + m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[OVRUnityHumanoidSkeletonRetargeter+OVRHumanBodyBonesMappings+BodyTrackingBoneId, + Oculus.VR m_MethodName: set_IsShowingLines m_Mode: 6 m_Arguments: @@ -5795,9 +5830,9 @@ MonoBehaviour: OnDeactivate: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 1639108944} - m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[Oculus.Movement.AnimationRigging.CustomMappings+BodyTrackingBoneId, - Meta.Movement + - m_Target: {fileID: 800006211} + m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[OVRUnityHumanoidSkeletonRetargeter+OVRHumanBodyBonesMappings+BodyTrackingBoneId, + Oculus.VR m_MethodName: set_IsShowingAxes m_Mode: 6 m_Arguments: @@ -5808,9 +5843,9 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 - - m_Target: {fileID: 1639108944} - m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[Oculus.Movement.AnimationRigging.CustomMappings+BodyTrackingBoneId, - Meta.Movement + - m_Target: {fileID: 800006211} + m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[OVRUnityHumanoidSkeletonRetargeter+OVRHumanBodyBonesMappings+BodyTrackingBoneId, + Oculus.VR m_MethodName: set_IsShowingLines m_Mode: 6 m_Arguments: diff --git a/Samples/Scenes/MovementLocomotion.unity b/Samples/Scenes/MovementLocomotion.unity index cdd290a3..db9e6232 100644 --- a/Samples/Scenes/MovementLocomotion.unity +++ b/Samples/Scenes/MovementLocomotion.unity @@ -308,11 +308,11 @@ MonoBehaviour: OnStartMove: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 657627064} - m_TargetAssemblyTypeName: Oculus.Movement.Locomotion.AnimatorBodyTrackingActivityMask, - Assembly-CSharp - m_MethodName: StartApplyingMaskFor - m_Mode: 5 + - m_Target: {fileID: 657627065} + m_TargetAssemblyTypeName: Oculus.Movement.Locomotion.AnimationConstraintBlender, + Meta.Movement + m_MethodName: StartApplyingAnimFor + m_Mode: 1 m_Arguments: m_ObjectArgument: {fileID: 0} m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine @@ -336,11 +336,11 @@ MonoBehaviour: OnStopMove: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 657627064} - m_TargetAssemblyTypeName: Oculus.Movement.Locomotion.AnimatorBodyTrackingActivityMask, - Assembly-CSharp - m_MethodName: FinishApplyingMaskFor - m_Mode: 5 + - m_Target: {fileID: 657627065} + m_TargetAssemblyTypeName: Oculus.Movement.Locomotion.AnimationConstraintBlender, + Meta.Movement + m_MethodName: FinishApplyingAnimFor + m_Mode: 1 m_Arguments: m_ObjectArgument: {fileID: 0} m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine @@ -422,11 +422,9 @@ MonoBehaviour: _floorLayerMask: serializedVersion: 2 m_Bits: 1 - _trackingHipsNames: - - Hips - _trackingToesNames: - - _ToesEnd - - FootTip + _trackingHips: {fileID: 314474975} + _trackingToes: + - {fileID: 2122434358} _colliderFollowsToes: 0 --- !u!1001 &51453787 PrefabInstance: @@ -864,7 +862,7 @@ MeshRenderer: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 307227082} - m_Enabled: 1 + m_Enabled: 0 m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 @@ -1277,19 +1275,6 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 - - m_Target: {fileID: 0} - m_TargetAssemblyTypeName: Oculus.Movement.Experimental.Effects.SkeletonPostprocess.VelocityIndicator, - Assembly-CSharp - m_MethodName: SetVector2Local - m_Mode: 0 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 _onUpdate: 0 _onFixedUpdate: 1 --- !u!114 &317372563 @@ -1639,6 +1624,63 @@ MonoBehaviour: _myTransform: {fileID: 396246438} _mirroredTransformPairs: [] _mirrorScale: 0 +--- !u!1001 &398028469 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalPosition.x + value: -0.875 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalPosition.z + value: -0.407 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7010574 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.x + value: 0.09229593 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.y + value: -0.7010574 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.z + value: 0.09229593 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 15 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -90 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471434, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_Name + value: BodyTrackingFidelityToggle + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0737e3f63e17bac45b774695173860d1, type: 3} --- !u!4 &417665234 stripped Transform: m_CorrespondingSourceObject: {fileID: 1091656508850216855, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} @@ -2590,9 +2632,9 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 657627063} - - component: {fileID: 657627064} + - component: {fileID: 657627065} m_Layer: 0 - m_Name: LocomotionAnimationConstraintMaskForLegs + m_Name: LocomotionAnimationConstraintBlender m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -2613,7 +2655,7 @@ Transform: m_Father: {fileID: 39895793} m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &657627064 +--- !u!114 &657627065 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2622,14 +2664,14 @@ MonoBehaviour: m_GameObject: {fileID: 657627062} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4154875e392cb344d9dd4d74b39327fb, type: 3} + m_Script: {fileID: 11500000, guid: 4ff1502fa0de15543a539011dffe8033, type: 3} m_Name: m_EditorClassIdentifier: - _mask: {fileID: 31900000, guid: d4369de8655fb8440998832adc6fb866, type: 2} _activityExitTime: 1 _animator: {fileID: 1313172172} - _constraintsToDeactivate: - - Leg + _constraintsToDeactivate: [] + _constraintsToBlend: + - {fileID: 1077107419} --- !u!1 &674130230 GameObject: m_ObjectHideFlags: 0 @@ -3803,7 +3845,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[5].label - value: Retarget Hands + value: Retargeted Bone Targets objectReference: {fileID: 0} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[6].label @@ -3868,11 +3910,11 @@ PrefabInstance: - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[5].Processor value: - objectReference: {fileID: 1313172174} + objectReference: {fileID: 1077107418} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[6].Processor value: - objectReference: {fileID: 1313172174} + objectReference: {fileID: 0} - target: {fileID: 490024389854361152, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} propertyPath: _skeletonProcessors.Array.data[7].Processor value: @@ -4120,6 +4162,28 @@ Transform: m_CorrespondingSourceObject: {fileID: 8760844189829344787, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} m_PrefabInstance: {fileID: 1077107416} m_PrefabAsset: {fileID: 0} +--- !u!114 &1077107418 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 2519393238448185555, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} + m_PrefabInstance: {fileID: 1077107416} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e99c227ec21d72d45b36011069f2b263, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1077107419 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 5858254439604359654, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} + m_PrefabInstance: {fileID: 1077107416} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3ac6230484089474898c6890ca09d24e, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!114 &1080009793 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 2143258140644656283, guid: e7fbb376593cff24f9db4ecf8d465aaf, type: 3} @@ -5175,17 +5239,6 @@ Animator: m_CorrespondingSourceObject: {fileID: 8172159923276885446, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} m_PrefabInstance: {fileID: 1077107416} m_PrefabAsset: {fileID: 0} ---- !u!114 &1313172174 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 1483202515538247245, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} - m_PrefabInstance: {fileID: 1077107416} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e00344307bbe4d949bfcf8eddb0caf22, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!4 &1324704613 stripped Transform: m_CorrespondingSourceObject: {fileID: 417454297435961822, guid: 1d0c5ce9ae27cab4b88cd35738a08552, type: 3} @@ -5245,7 +5298,7 @@ MeshRenderer: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1335521943} - m_Enabled: 1 + m_Enabled: 0 m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 @@ -6510,7 +6563,7 @@ MeshRenderer: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1836032976} - m_Enabled: 1 + m_Enabled: 0 m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 @@ -6826,7 +6879,7 @@ MeshRenderer: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2056065453} - m_Enabled: 1 + m_Enabled: 0 m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 @@ -7134,7 +7187,7 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 - - m_Target: {fileID: 657627064} + - m_Target: {fileID: 0} m_TargetAssemblyTypeName: Oculus.Movement.Locomotion.AnimatorBodyTrackingActivityMask, Assembly-CSharp m_MethodName: StartApplyingMaskFor @@ -7208,7 +7261,7 @@ MonoBehaviour: OnJumpFinished: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 657627064} + - m_Target: {fileID: 0} m_TargetAssemblyTypeName: Oculus.Movement.Locomotion.AnimatorBodyTrackingActivityMask, Assembly-CSharp m_MethodName: FinishApplyingMaskFor diff --git a/Samples/Scenes/MovementLocomotion/Lightmap-0_comp_dir.png.meta b/Samples/Scenes/MovementLocomotion/Lightmap-0_comp_dir.png.meta index ef0e8edd..26d5d01a 100644 --- a/Samples/Scenes/MovementLocomotion/Lightmap-0_comp_dir.png.meta +++ b/Samples/Scenes/MovementLocomotion/Lightmap-0_comp_dir.png.meta @@ -33,8 +33,8 @@ TextureImporter: maxTextureSize: 2048 textureSettings: serializedVersion: 2 - filterMode: 1 - aniso: 3 + filterMode: 2 + aniso: 16 mipBias: 0 wrapU: 1 wrapV: 1 diff --git a/Samples/Scenes/MovementLocomotion/Lightmap-0_comp_light.exr.meta b/Samples/Scenes/MovementLocomotion/Lightmap-0_comp_light.exr.meta index f4886749..b5e72022 100644 --- a/Samples/Scenes/MovementLocomotion/Lightmap-0_comp_light.exr.meta +++ b/Samples/Scenes/MovementLocomotion/Lightmap-0_comp_light.exr.meta @@ -33,8 +33,8 @@ TextureImporter: maxTextureSize: 2048 textureSettings: serializedVersion: 2 - filterMode: 1 - aniso: 3 + filterMode: 2 + aniso: 16 mipBias: 0 wrapU: 1 wrapV: 1 diff --git a/Samples/Scenes/MovementRetargeting.unity b/Samples/Scenes/MovementRetargeting.unity index 9279871a..c15f82b4 100644 --- a/Samples/Scenes/MovementRetargeting.unity +++ b/Samples/Scenes/MovementRetargeting.unity @@ -449,15 +449,6 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 23758205} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!319 &52514089 -AvatarMask: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: - m_Mask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 - m_Elements: [] --- !u!4 &87392205 stripped Transform: m_CorrespondingSourceObject: {fileID: 942435568972493560, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} @@ -893,6 +884,17 @@ Transform: m_CorrespondingSourceObject: {fileID: 2494227819838822627, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} m_PrefabInstance: {fileID: 2878048534481306165} m_PrefabAsset: {fileID: 0} +--- !u!114 &295473228 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3289871368579812835, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + m_PrefabInstance: {fileID: 2878048534481306165} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d65fffb91be5d7446a2921b8a1bda1ae, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!4 &299974520 stripped Transform: m_CorrespondingSourceObject: {fileID: 3303786657718698241, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} @@ -1684,6 +1686,63 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1001 &352180557 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 8443568635789723409, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_Name + value: BTCalibrationButton + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_RootOrder + value: 18 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalPosition.x + value: -0.875 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalPosition.z + value: -0.267 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7010574 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalRotation.x + value: 0.09229593 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalRotation.y + value: -0.7010574 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalRotation.z + value: 0.09229593 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 15 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -90 + objectReference: {fileID: 0} + - target: {fileID: 8443568635789723411, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c723fc2e86185ec498c4ae6e14c45cd9, type: 3} --- !u!1 &356626756 GameObject: m_ObjectHideFlags: 0 @@ -2931,6 +2990,15 @@ Transform: m_CorrespondingSourceObject: {fileID: 1855708941750506061, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} m_PrefabInstance: {fileID: 2878048534481306165} m_PrefabAsset: {fileID: 0} +--- !u!319 &987056034 +AvatarMask: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Mask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + m_Elements: [] --- !u!4 &1007903587 stripped Transform: m_CorrespondingSourceObject: {fileID: 7367197533957481950, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} @@ -3635,9 +3703,9 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 - - m_Target: {fileID: 1639108944} - m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[Oculus.Movement.AnimationRigging.CustomMappings+BodyTrackingBoneId, - Meta.Movement + - m_Target: {fileID: 6481326281037284172} + m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[OVRUnityHumanoidSkeletonRetargeter+OVRHumanBodyBonesMappings+BodyTrackingBoneId, + Oculus.VR m_MethodName: set_IsShowingAxes m_Mode: 6 m_Arguments: @@ -3816,230 +3884,17 @@ Transform: m_CorrespondingSourceObject: {fileID: 4150047613444537597, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} m_PrefabInstance: {fileID: 2878048534481306165} m_PrefabAsset: {fileID: 0} ---- !u!1 &1313465878 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1313465880} - - component: {fileID: 1313465879} - - component: {fileID: 1313465881} - m_Layer: 0 - m_Name: DebugBones - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1313465879 +--- !u!114 &1313465879 stripped MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 669339439527238448, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + m_PrefabInstance: {fileID: 669339440638328103} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1313465878} + m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: c79d7660e6ccc8a47882b41bfbda4978, type: 3} m_Name: m_EditorClassIdentifier: - _whenToRender: 2 - _visualizationGuideType: 0 - _maskToVisualize: {fileID: 31900000, guid: 8267e3d56146c7e43bd0296dc7f86558, type: 2} - _customBoneVisualData: - BoneTuples: - - FirstBone: 0 - SecondBone: 7 - Hide: 0 - - FirstBone: 1 - SecondBone: 3 - Hide: 0 - - FirstBone: 2 - SecondBone: 4 - Hide: 0 - - FirstBone: 3 - SecondBone: 5 - Hide: 0 - - FirstBone: 4 - SecondBone: 6 - Hide: 0 - - FirstBone: 5 - SecondBone: 19 - Hide: 0 - - FirstBone: 6 - SecondBone: 20 - Hide: 0 - - FirstBone: 7 - SecondBone: 8 - Hide: 0 - - FirstBone: 8 - SecondBone: 54 - Hide: 0 - - FirstBone: 9 - SecondBone: 10 - Hide: 0 - - FirstBone: 11 - SecondBone: 13 - Hide: 0 - - FirstBone: 12 - SecondBone: 14 - Hide: 0 - - FirstBone: 13 - SecondBone: 15 - Hide: 0 - - FirstBone: 14 - SecondBone: 16 - Hide: 0 - - FirstBone: 15 - SecondBone: 17 - Hide: 0 - - FirstBone: 16 - SecondBone: 18 - Hide: 0 - - FirstBone: 17 - SecondBone: 30 - Hide: 0 - - FirstBone: 18 - SecondBone: 45 - Hide: 0 - - FirstBone: 10 - SecondBone: 21 - Hide: 0 - - FirstBone: 10 - SecondBone: 22 - Hide: 0 - - FirstBone: 10 - SecondBone: 23 - Hide: 0 - - FirstBone: 24 - SecondBone: 25 - Hide: 0 - - FirstBone: 25 - SecondBone: 26 - Hide: 0 - - FirstBone: 26 - SecondBone: 55 - Hide: 0 - - FirstBone: 27 - SecondBone: 28 - Hide: 0 - - FirstBone: 28 - SecondBone: 29 - Hide: 0 - - FirstBone: 29 - SecondBone: 55 - Hide: 0 - - FirstBone: 30 - SecondBone: 31 - Hide: 0 - - FirstBone: 31 - SecondBone: 32 - Hide: 0 - - FirstBone: 32 - SecondBone: 55 - Hide: 0 - - FirstBone: 33 - SecondBone: 34 - Hide: 0 - - FirstBone: 34 - SecondBone: 35 - Hide: 0 - - FirstBone: 35 - SecondBone: 55 - Hide: 0 - - FirstBone: 36 - SecondBone: 37 - Hide: 0 - - FirstBone: 37 - SecondBone: 38 - Hide: 0 - - FirstBone: 38 - SecondBone: 55 - Hide: 0 - - FirstBone: 39 - SecondBone: 40 - Hide: 0 - - FirstBone: 40 - SecondBone: 41 - Hide: 0 - - FirstBone: 41 - SecondBone: 55 - Hide: 0 - - FirstBone: 42 - SecondBone: 43 - Hide: 0 - - FirstBone: 43 - SecondBone: 44 - Hide: 0 - - FirstBone: 44 - SecondBone: 55 - Hide: 0 - - FirstBone: 45 - SecondBone: 46 - Hide: 0 - - FirstBone: 46 - SecondBone: 47 - Hide: 0 - - FirstBone: 47 - SecondBone: 55 - Hide: 0 - - FirstBone: 48 - SecondBone: 49 - Hide: 0 - - FirstBone: 49 - SecondBone: 50 - Hide: 0 - - FirstBone: 50 - SecondBone: 55 - Hide: 0 - - FirstBone: 51 - SecondBone: 52 - Hide: 0 - - FirstBone: 52 - SecondBone: 53 - Hide: 0 - - FirstBone: 53 - SecondBone: 55 - Hide: 0 - - FirstBone: 54 - SecondBone: 9 - Hide: 0 - _lineRendererPrefab: {fileID: 7812178534108119229, guid: 6d28b0d0a0ff2234cbf60710c8c912dc, type: 3} - _axisRendererPrefab: {fileID: 106719106145556050, guid: 6103ef5d90d602545af4eb910563af03, type: 3} - _visualType: 0 - _animatorComp: {fileID: 2878048534481306166} ---- !u!4 &1313465880 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1313465878} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.81499124, y: 1.347516, z: 0.12875414} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 13 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1313465881 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1313465878} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 84fe64f23f2a68b4a86633382680187d, type: 3} - m_Name: - m_EditorClassIdentifier: - _boneVisualizer: {fileID: 1313465879} - _lineColor: {r: 0.9959899, g: 1, b: 0, a: 1} --- !u!4 &1329645809 stripped Transform: m_CorrespondingSourceObject: {fileID: 4455956934440647469, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} @@ -4421,6 +4276,63 @@ Transform: m_CorrespondingSourceObject: {fileID: 5254371722432579583, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} m_PrefabInstance: {fileID: 2878048534481306165} m_PrefabAsset: {fileID: 0} +--- !u!1001 &1578172461 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_RootOrder + value: 17 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalPosition.x + value: -0.875 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalPosition.z + value: -0.436 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7010574 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.x + value: 0.09229593 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.y + value: -0.7010574 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalRotation.z + value: 0.09229593 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 15 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -90 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471432, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7362976725013471434, guid: 0737e3f63e17bac45b774695173860d1, type: 3} + propertyPath: m_Name + value: BodyTrackingFidelityToggle + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0737e3f63e17bac45b774695173860d1, type: 3} --- !u!4 &1582590828 stripped Transform: m_CorrespondingSourceObject: {fileID: 8978626515341356355, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} @@ -4431,60 +4343,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 8702160152427063123, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} m_PrefabInstance: {fileID: 2878048534481306165} m_PrefabAsset: {fileID: 0} ---- !u!1 &1639108941 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1639108943} - - component: {fileID: 1639108944} - m_Layer: 0 - m_Name: DebugBonesOVRSkeleton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1639108943 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1639108941} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.81499124, y: 1.347516, z: 0.12875414} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 14 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1639108944 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1639108941} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ab1e3682a8676d84faba89a2aee068e8, type: 3} - m_Name: - m_EditorClassIdentifier: - _whenToRender: 2 - _visualizationGuideType: 0 - _maskToVisualize: {fileID: 52514089} - _customBoneVisualData: - BoneTuples: [] - _lineRendererPrefab: {fileID: 7812178534108119229, guid: 91a281e92421c464e837420766cafd02, type: 3} - _axisRendererPrefab: {fileID: 106719106145556050, guid: 6103ef5d90d602545af4eb910563af03, type: 3} - _visualType: 0 - _ovrSkeletonComp: {fileID: 2878048534481306169} - _visualizeBindPose: 0 --- !u!4 &1648597920 stripped Transform: m_CorrespondingSourceObject: {fileID: 5429506017946967965, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} @@ -6501,6 +6359,71 @@ Transform: m_Father: {fileID: 6932637666278664614} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &669339440638328103 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 669339439527238448, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: _visualType + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238448, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: _animatorComp + value: + objectReference: {fileID: 2878048534481306166} + - target: {fileID: 669339439527238449, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_Name + value: DebugBones + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_RootOrder + value: 14 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalPosition.x + value: 0.81499124 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalPosition.y + value: 1.347516 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalPosition.z + value: 0.12875414 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 669339439527238463, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 83912ab7fbdf5db41822aa92a1698430, type: 3} --- !u!1 &877835744124044847 GameObject: m_ObjectHideFlags: 0 @@ -6646,6 +6569,71 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1001 &1434491219403225674 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1412995357, guid: 9085bb280872b4a488fbe0addf928ee7, type: 3} + propertyPath: m_Data._avatarMask + value: + objectReference: {fileID: 987056034} + - target: {fileID: 63731746210207621, guid: 9085bb280872b4a488fbe0addf928ee7, type: 3} + propertyPath: m_RootOrder + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 63731746210207621, guid: 9085bb280872b4a488fbe0addf928ee7, type: 3} + propertyPath: m_LocalPosition.x + value: 1.85 + objectReference: {fileID: 0} + - target: {fileID: 63731746210207621, guid: 9085bb280872b4a488fbe0addf928ee7, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 63731746210207621, guid: 9085bb280872b4a488fbe0addf928ee7, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 63731746210207621, guid: 9085bb280872b4a488fbe0addf928ee7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 63731746210207621, guid: 9085bb280872b4a488fbe0addf928ee7, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 63731746210207621, guid: 9085bb280872b4a488fbe0addf928ee7, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 63731746210207621, guid: 9085bb280872b4a488fbe0addf928ee7, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 63731746210207621, guid: 9085bb280872b4a488fbe0addf928ee7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 63731746210207621, guid: 9085bb280872b4a488fbe0addf928ee7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 63731746210207621, guid: 9085bb280872b4a488fbe0addf928ee7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7890163646267885795, guid: 9085bb280872b4a488fbe0addf928ee7, type: 3} + propertyPath: m_Name + value: ArmatureSkinningUpdateRetargetUserUpperBody + objectReference: {fileID: 0} + - target: {fileID: 7890163646267885795, guid: 9085bb280872b4a488fbe0addf928ee7, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9085bb280872b4a488fbe0addf928ee7, type: 3} --- !u!4 &1563781490043725217 Transform: m_ObjectHideFlags: 0 @@ -6903,9 +6891,61 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 1745238009211328571, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.x + value: -0.00000007450578 + objectReference: {fileID: 0} + - target: {fileID: 1745238009211328571, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.y + value: 0.24036232 + objectReference: {fileID: 0} + - target: {fileID: 1745238009211328571, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.z + value: 0.000000001862645 + objectReference: {fileID: 0} + - target: {fileID: 2060949857227676731, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.x + value: 0.007815528 + objectReference: {fileID: 0} + - target: {fileID: 2060949857227676731, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.y + value: 0.09184417 + objectReference: {fileID: 0} + - target: {fileID: 2060949857227676731, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.z + value: 0.026573163 + objectReference: {fileID: 0} + - target: {fileID: 2581824662108350127, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.x + value: -0.004438231 + objectReference: {fileID: 0} + - target: {fileID: 2581824662108350127, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.y + value: -0.0728816 + objectReference: {fileID: 0} + - target: {fileID: 2581824662108350127, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.z + value: 0.029358594 + objectReference: {fileID: 0} + - target: {fileID: 3383859954259095344, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.x + value: 0.009525553 + objectReference: {fileID: 0} + - target: {fileID: 3383859954259095344, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.y + value: 0.08161542 + objectReference: {fileID: 0} + - target: {fileID: 3383859954259095344, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.z + value: -0.012242372 + objectReference: {fileID: 0} - target: {fileID: 3817605947884828321, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} propertyPath: m_RootOrder - value: 12 + value: 13 + objectReference: {fileID: 0} + - target: {fileID: 3817605947884828321, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalScale.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 3817605947884828321, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} propertyPath: m_LocalPosition.x @@ -6925,7 +6965,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3817605947884828321, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} propertyPath: m_LocalRotation.x - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 3817605947884828321, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} propertyPath: m_LocalRotation.y @@ -6933,7 +6973,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3817605947884828321, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} propertyPath: m_LocalRotation.z - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 3817605947884828321, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -6947,10 +6987,46 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 4203898523299135714, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.x + value: -0.0095274765 + objectReference: {fileID: 0} + - target: {fileID: 4203898523299135714, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.z + value: 0.012242121 + objectReference: {fileID: 0} + - target: {fileID: 6278560457517021353, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.x + value: 0.0098464815 + objectReference: {fileID: 0} + - target: {fileID: 6278560457517021353, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.z + value: 0.041012727 + objectReference: {fileID: 0} - target: {fileID: 6442339640571472327, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} propertyPath: m_Name value: ArmatureSkinningUpdateRetargetUser objectReference: {fileID: 0} + - target: {fileID: 7258766765732575900, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.x + value: 0.004436876 + objectReference: {fileID: 0} + - target: {fileID: 7258766765732575900, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.y + value: 0.07288174 + objectReference: {fileID: 0} + - target: {fileID: 7258766765732575900, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.z + value: -0.029359046 + objectReference: {fileID: 0} + - target: {fileID: 7367197533957481950, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.x + value: -0.000000028870987 + objectReference: {fileID: 0} + - target: {fileID: 7367197533957481950, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + propertyPath: m_LocalPosition.z + value: 0.000000008381902 + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} --- !u!95 &2878048534481306166 stripped @@ -6958,20 +7034,9 @@ Animator: m_CorrespondingSourceObject: {fileID: 4325497552437736820, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} m_PrefabInstance: {fileID: 2878048534481306165} m_PrefabAsset: {fileID: 0} ---- !u!114 &2878048534481306167 stripped +--- !u!114 &2878048534481306177 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 318886850, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} - m_PrefabInstance: {fileID: 2878048534481306165} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d65fffb91be5d7446a2921b8a1bda1ae, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!114 &2878048534481306169 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 208026092, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} + m_CorrespondingSourceObject: {fileID: 7866900989153904485, guid: eb6bc10f92728a546a3d8c144d0ef787, type: 3} m_PrefabInstance: {fileID: 2878048534481306165} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} @@ -7467,9 +7532,9 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 - - m_Target: {fileID: 1639108944} - m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[Oculus.Movement.AnimationRigging.CustomMappings+BodyTrackingBoneId, - Meta.Movement + - m_Target: {fileID: 6481326281037284172} + m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[OVRUnityHumanoidSkeletonRetargeter+OVRHumanBodyBonesMappings+BodyTrackingBoneId, + Oculus.VR m_MethodName: set_IsShowingLines m_Mode: 6 m_Arguments: @@ -8336,9 +8401,9 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 - - m_Target: {fileID: 1639108944} - m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[Oculus.Movement.AnimationRigging.CustomMappings+BodyTrackingBoneId, - Meta.Movement + - m_Target: {fileID: 6481326281037284172} + m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[OVRUnityHumanoidSkeletonRetargeter+OVRHumanBodyBonesMappings+BodyTrackingBoneId, + Oculus.VR m_MethodName: set_IsShowingAxes m_Mode: 6 m_Arguments: @@ -8362,9 +8427,9 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 - - m_Target: {fileID: 1639108944} - m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[Oculus.Movement.AnimationRigging.CustomMappings+BodyTrackingBoneId, - Meta.Movement + - m_Target: {fileID: 6481326281037284172} + m_TargetAssemblyTypeName: Oculus.Movement.Utils.BoneVisualizer`1[[OVRUnityHumanoidSkeletonRetargeter+OVRHumanBodyBonesMappings+BodyTrackingBoneId, + Oculus.VR m_MethodName: set_IsShowingLines m_Mode: 6 m_Arguments: @@ -8600,7 +8665,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4755192900336154934, guid: 8927ceeb08d3b2543babf177db8ea1f2, type: 3} propertyPath: m_LocalPosition.x - value: -0.84 + value: -0.836 objectReference: {fileID: 0} - target: {fileID: 4755192900336154934, guid: 8927ceeb08d3b2543babf177db8ea1f2, type: 3} propertyPath: m_LocalPosition.y @@ -8655,6 +8720,86 @@ Transform: m_Father: {fileID: 2083264274152527379} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &6481326281037284171 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1236458827194487761, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: _visualType + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1236458827194487761, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: _maskToVisualize + value: + objectReference: {fileID: 31900000, guid: 8267e3d56146c7e43bd0296dc7f86558, type: 2} + - target: {fileID: 1236458827194487761, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: _ovrSkeletonComp + value: + objectReference: {fileID: 2878048534481306177} + - target: {fileID: 1692031724233491721, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_Name + value: DebugBonesOVRSkeletonFullBody + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_RootOrder + value: 15 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalPosition.x + value: 0.81499124 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalPosition.y + value: 1.347516 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalPosition.z + value: 0.12875414 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1692031724233491723, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} +--- !u!114 &6481326281037284172 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 1236458827194487761, guid: 8919fa825b25b4544b361623e5d62aba, type: 3} + m_PrefabInstance: {fileID: 6481326281037284171} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7ef839cc9cacff4091af449079bbce3, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!4 &6643409581859610071 Transform: m_ObjectHideFlags: 0 @@ -8839,7 +8984,7 @@ PrefabInstance: m_Modifications: - target: {fileID: 4563516835585250313, guid: dd042bb7a7e67464c8a82b2c0a32c07c, type: 3} propertyPath: m_RootOrder - value: 15 + value: 16 objectReference: {fileID: 0} - target: {fileID: 4563516835585250313, guid: dd042bb7a7e67464c8a82b2c0a32c07c, type: 3} propertyPath: m_LocalPosition.x @@ -8892,7 +9037,7 @@ PrefabInstance: - target: {fileID: 7026069999455447086, guid: dd042bb7a7e67464c8a82b2c0a32c07c, type: 3} propertyPath: _retargetingConstraints.Array.data[0] value: - objectReference: {fileID: 2878048534481306167} + objectReference: {fileID: 295473228} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: dd042bb7a7e67464c8a82b2c0a32c07c, type: 3} --- !u!1 &7652572205201101483