diff --git a/.vsconfig b/.vsconfig new file mode 100644 index 0000000..d70cd98 --- /dev/null +++ b/.vsconfig @@ -0,0 +1,6 @@ +{ + "version": "1.0", + "components": [ + "Microsoft.VisualStudio.Workload.ManagedGame" + ] +} diff --git a/Assets/DreCon.meta b/Assets/DreCon.meta new file mode 100644 index 0000000..6928b58 --- /dev/null +++ b/Assets/DreCon.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 776c34a4e6c0e42488823c8f7254c194 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DreCon/Editor.meta b/Assets/DreCon/Editor.meta new file mode 100644 index 0000000..5b80156 --- /dev/null +++ b/Assets/DreCon/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8b35c1d2ebfe61f41b1a6e407a37bf66 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DreCon/Editor/FindMissingScripts.cs b/Assets/DreCon/Editor/FindMissingScripts.cs new file mode 100644 index 0000000..559b6c5 --- /dev/null +++ b/Assets/DreCon/Editor/FindMissingScripts.cs @@ -0,0 +1,46 @@ +using UnityEngine; +using UnityEditor; +public class FindMissingScripts : EditorWindow +{ + [MenuItem("Window/FindMissingScripts")] + public static void ShowWindow() + { + EditorWindow.GetWindow(typeof(FindMissingScripts)); + } + + public void OnGUI() + { + if (GUILayout.Button("Find Missing Scripts in selected prefabs")) + { + FindInSelected(); + } + } + private static void FindInSelected() + { + GameObject[] go = Selection.gameObjects; + int go_count = 0, components_count = 0, missing_count = 0; + foreach (GameObject g in go) + { + go_count++; + Component[] components = g.GetComponents(); + for (int i = 0; i < components.Length; i++) + { + components_count++; + if (components[i] == null) + { + missing_count++; + string s = g.name; + Transform t = g.transform; + while (t.parent != null) + { + s = t.parent.name + "/" + s; + t = t.parent; + } + Debug.Log(s + " has an empty script attached in position: " + i, g); + } + } + } + + Debug.Log(string.Format("Searched {0} GameObjects, {1} components, found {2} missing", go_count, components_count, missing_count)); + } +} \ No newline at end of file diff --git a/Assets/DreCon/Editor/FindMissingScripts.cs.meta b/Assets/DreCon/Editor/FindMissingScripts.cs.meta new file mode 100644 index 0000000..9aabee2 --- /dev/null +++ b/Assets/DreCon/Editor/FindMissingScripts.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f0d934a6bc24a4ccc82186b44f16a343 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DreCon/_TerrainAutoUpgrade.meta b/Assets/DreCon/_TerrainAutoUpgrade.meta new file mode 100644 index 0000000..cace0ec --- /dev/null +++ b/Assets/DreCon/_TerrainAutoUpgrade.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7ee34fd637d821c4fad00ba27a0f37d5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DreCon/_TerrainAutoUpgrade/layer_(10.000,10.000)(-8.000,-8.000)(0.000,0.000,0.000),0.000,0.460.terrainlayer b/Assets/DreCon/_TerrainAutoUpgrade/layer_(10.000,10.000)(-8.000,-8.000)(0.000,0.000,0.000),0.000,0.460.terrainlayer new file mode 100644 index 0000000..da9d187 --- /dev/null +++ b/Assets/DreCon/_TerrainAutoUpgrade/layer_(10.000,10.000)(-8.000,-8.000)(0.000,0.000,0.000),0.000,0.460.terrainlayer @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1953259897 &8574412962073106934 +TerrainLayer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: layer_(10.000,10.000)(-8.000,-8.000)(0.000,0.000,0.000),0.000,0.460 + m_DiffuseTexture: {fileID: 2800000, guid: b6a6551ec416c408e9353670dc7e6635, type: 3} + m_NormalMapTexture: {fileID: 0} + m_MaskMapTexture: {fileID: 0} + m_TileSize: {x: 10, y: 10} + m_TileOffset: {x: 0, y: 0} + m_Specular: {r: 0, g: 0, b: 0, a: 0} + m_Metallic: 0 + m_Smoothness: 0.46 + m_NormalScale: 1 + m_DiffuseRemapMin: {x: 0, y: 0, z: 0, w: 0} + m_DiffuseRemapMax: {x: 1, y: 1, z: 1, w: 1} + m_MaskMapRemapMin: {x: 0, y: 0, z: 0, w: 0} + m_MaskMapRemapMax: {x: 1, y: 1, z: 1, w: 1} diff --git a/Assets/DreCon/_TerrainAutoUpgrade/layer_(10.000,10.000)(-8.000,-8.000)(0.000,0.000,0.000),0.000,0.460.terrainlayer.meta b/Assets/DreCon/_TerrainAutoUpgrade/layer_(10.000,10.000)(-8.000,-8.000)(0.000,0.000,0.000),0.000,0.460.terrainlayer.meta new file mode 100644 index 0000000..7e0fa03 --- /dev/null +++ b/Assets/DreCon/_TerrainAutoUpgrade/layer_(10.000,10.000)(-8.000,-8.000)(0.000,0.000,0.000),0.000,0.460.terrainlayer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8656354215ef37f4e821bd52c6fad0e2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 8574412962073106934 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents.meta b/Assets/ML-Agents.meta new file mode 100644 index 0000000..1e1e9fc --- /dev/null +++ b/Assets/ML-Agents.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d909489b885c4f54bb2356c8aea99dec +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents/Timers.meta b/Assets/ML-Agents/Timers.meta new file mode 100644 index 0000000..96bb1ea --- /dev/null +++ b/Assets/ML-Agents/Timers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a919e5fd77e6ff14a802c5cf62d81a2a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents/Timers/DreconDemo_timers.json b/Assets/ML-Agents/Timers/DreconDemo_timers.json new file mode 100644 index 0000000..b779128 --- /dev/null +++ b/Assets/ML-Agents/Timers/DreconDemo_timers.json @@ -0,0 +1 @@ +{"count":1,"self":18.401020799999998,"total":19.0026631,"children":{"InitializeActuators":{"count":1,"self":0.0009998,"total":0.0009998,"children":null},"InitializeSensors":{"count":1,"self":0.0010048,"total":0.0010048,"children":null},"AgentSendState":{"count":1117,"self":0.0080398999999999991,"total":0.1468565,"children":{"CollectObservations":{"count":559,"self":0.1277893,"total":0.1277893,"children":null},"WriteActionMask":{"count":559,"self":0.0005045,"total":0.0005045,"children":null},"RequestDecision":{"count":559,"self":0.010522799999999999,"total":0.010522799999999999,"children":null}}},"DecideAction":{"count":1117,"self":0.28126829999999997,"total":0.28126829999999997,"children":null},"AgentAct":{"count":1117,"self":0.1705073,"total":0.1705073,"children":null}},"gauges":{"DReCon-v0.CumulativeReward":{"count":3,"max":197.241531,"min":70.88822,"runningAverage":143.552612,"value":197.241531,"weightedAverage":119.659027}},"metadata":{"timer_format_version":"0.1.0","start_time_seconds":"1711034456","unity_version":"2022.3.5f1","command_line_arguments":"C:\\Program Files\\Unity\\Hub\\Editor\\2022.3.5f1\\Editor\\Unity.exe -projectpath C:\\Users\\caile\\Desktop\\Projects\\24_3-Moloch\\2_Unity\\Expeirments\\Upgrade Demo -useHub -hubIPC -cloudEnvironment production -licensingIpc LicenseClient-caile -hubSessionId 585fb154-c60e-4d06-858f-da51882ef412 -accessToken uYlRmxZm8yQI0ljQ6TREamLSDSVcPFPnk5wEHmLEyOE005f","communication_protocol_version":"1.5.0","com.unity.ml-agents_version":"2.0.1","scene_name":"DreconDemo","end_time_seconds":"1711034475"}} \ No newline at end of file diff --git a/Assets/ML-Agents/Timers/DreconDemo_timers.json.meta b/Assets/ML-Agents/Timers/DreconDemo_timers.json.meta new file mode 100644 index 0000000..3a324a0 --- /dev/null +++ b/Assets/ML-Agents/Timers/DreconDemo_timers.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a310a0758fd311245aad0375def7bcc8 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ML-Agents/Timers/SampleScene_timers.json b/Assets/ML-Agents/Timers/SampleScene_timers.json new file mode 100644 index 0000000..a01981e --- /dev/null +++ b/Assets/ML-Agents/Timers/SampleScene_timers.json @@ -0,0 +1 @@ +{"count":1,"self":43.5624288,"total":45.140246,"children":{"InitializeActuators":{"count":1,"self":0.0009999,"total":0.0009999,"children":null},"InitializeSensors":{"count":1,"self":0.0009996,"total":0.0009996,"children":null},"AgentSendState":{"count":3201,"self":0.018505999999999998,"total":0.42292569999999996,"children":{"CollectObservations":{"count":1601,"self":0.3853658,"total":0.3853658,"children":null},"WriteActionMask":{"count":1601,"self":0.0055122999999999995,"total":0.0055122999999999995,"children":null},"RequestDecision":{"count":1601,"self":0.013541599999999999,"total":0.013541599999999999,"children":null}}},"DecideAction":{"count":3201,"self":0.6847188,"total":0.6847188,"children":null},"AgentAct":{"count":3201,"self":0.4681722,"total":0.4681722,"children":null}},"gauges":{"DReCon-v0.CumulativeReward":{"count":6,"max":1306.72473,"min":13.3789816,"runningAverage":295.601318,"value":141.747467,"weightedAverage":200.906891}},"metadata":{"timer_format_version":"0.1.0","start_time_seconds":"1711034109","unity_version":"2022.3.5f1","command_line_arguments":"C:\\Program Files\\Unity\\Hub\\Editor\\2022.3.5f1\\Editor\\Unity.exe -projectpath C:\\Users\\caile\\Desktop\\Projects\\24_3-Moloch\\2_Unity\\Expeirments\\Upgrade Demo -useHub -hubIPC -cloudEnvironment production -licensingIpc LicenseClient-caile -hubSessionId 585fb154-c60e-4d06-858f-da51882ef412 -accessToken gjBs-QzUiOMTdyqRQ553oxjojRRpG4-lOs_aadZonB8005f","communication_protocol_version":"1.5.0","com.unity.ml-agents_version":"2.0.1","scene_name":"SampleScene","end_time_seconds":"1711034154"}} \ No newline at end of file diff --git a/Assets/ML-Agents/Timers/SampleScene_timers.json.meta b/Assets/ML-Agents/Timers/SampleScene_timers.json.meta new file mode 100644 index 0000000..0732b8e --- /dev/null +++ b/Assets/ML-Agents/Timers/SampleScene_timers.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b494e22e3b9efd1439eeb04b86d290ff +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController.meta b/Assets/MarathonController.meta new file mode 100644 index 0000000..06afb7c --- /dev/null +++ b/Assets/MarathonController.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ea29cd7abf68e734e9e547f2161e5ed7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Editor.meta b/Assets/MarathonController/Editor.meta new file mode 100644 index 0000000..36c40f1 --- /dev/null +++ b/Assets/MarathonController/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f468a3c0191e6747a78245c2f63de0e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Editor/MusclesEditor.cs b/Assets/MarathonController/Editor/MusclesEditor.cs new file mode 100644 index 0000000..69dce15 --- /dev/null +++ b/Assets/MarathonController/Editor/MusclesEditor.cs @@ -0,0 +1,53 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + + + +[CustomEditor(typeof(Muscles))] +public class MusclesEditor : Editor +{ + + [SerializeField] + SerializedProperty Muscles; + + void OnEnable() + { + Muscles = serializedObject.FindProperty("Muscles"); + + } + + + + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + + GUILayout.Label(""); + + + + + base.OnInspectorGUI(); + + /* + if (GUILayout.Button("Recalculate Center of Masses")) + { + Muscles t = target as Muscles; + t.CenterABMasses(); + }*/ + + + + serializedObject.ApplyModifiedProperties(); + + } + + + + + +} diff --git a/Assets/MarathonController/Editor/MusclesEditor.cs.meta b/Assets/MarathonController/Editor/MusclesEditor.cs.meta new file mode 100644 index 0000000..7d60245 --- /dev/null +++ b/Assets/MarathonController/Editor/MusclesEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f8a6234c58fa4a4abe62d80512988dd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Editor/ROMparserSwingTwistEditor.cs b/Assets/MarathonController/Editor/ROMparserSwingTwistEditor.cs new file mode 100644 index 0000000..68d726e --- /dev/null +++ b/Assets/MarathonController/Editor/ROMparserSwingTwistEditor.cs @@ -0,0 +1,145 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + + +//This script assumes information was stored as SwingTwist +//This means the script goes together with ROMparserSwingTwist + +//we assume the articulationBodies have a name structure of hte form ANYNAME:something-in-the-targeted-joint + +[CustomEditor(typeof(ROMparserSwingTwist))] +public class ROMparserSwingTwistEditor : Editor +{ + + [SerializeField] + SerializedProperty ROMparserSwingTwist; + + //NOT USED ANYMORE + //[SerializeField] + //string keyword4prefabs = "Constrained-procedurally"; + //[SerializeField] + //RangeOfMotion004 theRagdollPrefab; + + + + void OnEnable() + { + ROMparserSwingTwist = serializedObject.FindProperty("ROMparserSwingTwist"); + + } + + + + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + + GUILayout.Label(""); + + + + + base.OnInspectorGUI(); + + /* + if (GUILayout.Button("0.Debug: Set Joints To Max ROM")) + { + ROMparserSwingTwist t = target as ROMparserSwingTwist; + t.SetJointsToMaxROM(); + } + + + + if (GUILayout.Button("1.Store ROM info ")) + { + ROMparserSwingTwist t = target as ROMparserSwingTwist; + EditorUtility.SetDirty(t.info2store); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + + + GUILayout.Label("Prefab Ragdoll:"); + + + + GUILayout.Label("How to use:"); + + GUILayout.TextArea( + "Step 1: execute in play mode until the values in the Range Of Motion Preview do not change any more" + + // " \n Step 2: click on button 1 to apply the constraints to check if the ragdoll looks reasonable" + + // " \n Step 3: in edit mode, click on button 1, and then on button 2, to generate a new constrained ragdoll. If a template for a SpawnableEnv is provided, also a new environment for training"); + " \n Step 2: open the Ragdoll on which you want to apply the range of motion, and use the script ApplyRangeOfMotion004"); + */ + + serializedObject.ApplyModifiedProperties(); + + } + + + + void storeNewPrefabWithROM(ProcRagdollAgent rda, ManyWorlds.SpawnableEnv envPrefab = null) + { + ROMparserSwingTwist t = target as ROMparserSwingTwist; + + //ROMinfoCollector infoStored = t.info2store; + + Transform targetRoot = t.targetRagdollRoot.transform; + + + //string add2prefabs = keyword4prefabs; + + + + // Set the path, + // and name it as the GameObject's name with the .Prefab format + string localPath = "Assets/MarathonEnvs/Agents/Characters/MarathonMan004/" + targetRoot.name + ".prefab"; + + // Make sure the file name is unique, in case an existing Prefab has the same name. + string uniqueLocalPath = AssetDatabase.GenerateUniqueAssetPath(localPath); + + + if (PrefabUtility.IsAnyPrefabInstanceRoot(targetRoot.gameObject)) + //We want to store it independently from the current prefab. Therefore: + PrefabUtility.UnpackPrefabInstance(targetRoot.gameObject, PrefabUnpackMode.Completely, InteractionMode.AutomatedAction); + + + // Create the new Prefab. + PrefabUtility.SaveAsPrefabAsset(targetRoot.gameObject, uniqueLocalPath); + + Debug.Log("Saved new CharacterPrefab at: " + uniqueLocalPath); + + + if (envPrefab != null) + { + Transform targetEnv = envPrefab.transform; + + targetEnv.name = "ControllerMarathonManEnv"; + + string localEnvPath = "Assets/MarathonController/Environments/" + targetEnv.name + ".prefab"; + + // Make sure the file name is unique, in case an existing Prefab has the same name. + string uniqueLocalEnvPath = AssetDatabase.GenerateUniqueAssetPath(localEnvPath); + + if (PrefabUtility.IsAnyPrefabInstanceRoot(targetEnv.gameObject)) + //We want to store it independently from the current prefab. Therefore: + PrefabUtility.UnpackPrefabInstance(targetEnv.gameObject, PrefabUnpackMode.Completely, InteractionMode.AutomatedAction); + + + // Create the new Prefab. + PrefabUtility.SaveAsPrefabAsset(targetEnv.gameObject, uniqueLocalEnvPath); + + Debug.Log("Saved new Environment Prefab at: " + uniqueLocalEnvPath); + + } + + + + } + + +} diff --git a/Assets/MarathonController/Editor/ROMparserSwingTwistEditor.cs.meta b/Assets/MarathonController/Editor/ROMparserSwingTwistEditor.cs.meta new file mode 100644 index 0000000..99cfd4e --- /dev/null +++ b/Assets/MarathonController/Editor/ROMparserSwingTwistEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c871e0208cc70214e856b80d03e2025c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Editor/TrainingEnvironmentGeneratorEditor.cs b/Assets/MarathonController/Editor/TrainingEnvironmentGeneratorEditor.cs new file mode 100644 index 0000000..0afef26 --- /dev/null +++ b/Assets/MarathonController/Editor/TrainingEnvironmentGeneratorEditor.cs @@ -0,0 +1,109 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + + +[CustomEditor(typeof(TrainingEnvironmentGenerator))] +public class TrainingEnvironmentGeneratorEditor : Editor +{ + + + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + + + + + if (GUILayout.Button("1.Generate training environment ")) + { + TrainingEnvironmentGenerator t = target as TrainingEnvironmentGenerator; + t.GenerateTrainingEnv(); + } + + + + + + if (GUILayout.Button("2 (optional) Generate ROM values")) + { + TrainingEnvironmentGenerator t = target as TrainingEnvironmentGenerator; + t.GenerateRangeOfMotionParser(); + + t.Prepare4RangeOfMotionParsing(); + + + + } + GUILayout.Label("If (2), press play until the values in the ROM file do not change. Then press stop."); + + if (GUILayout.Button("3.Configure and Store")) { + TrainingEnvironmentGenerator t = target as TrainingEnvironmentGenerator; + + //"3.We Configure Ragdoll and learning agent" + t.Prepare4EnvironmentStorage(); + + t.ApplyROMasConstraintsAndConfigure(); + + + + //instructions below stores them, it can only be done in an editor script + + storeEnvAsPrefab(t.Outcome); + //once stored we can destroy them to keep the scene clean + //DestroyImmediate(t.Outcome.gameObject); + + + EditorUtility.SetDirty(t.info2store); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + + } + //GUILayout.Label("After (3), activate the Ragdoll game object within the hierarchy of the training environment generated."); + + + GUILayout.Label(""); + + base.OnInspectorGUI(); + + + + + + serializedObject.ApplyModifiedProperties(); + + } + + + + void storeEnvAsPrefab(ManyWorlds.SpawnableEnv env) + { + + + // Set the path, + // and name it as the GameObject's name with the .Prefab format + string localPath = "Assets/MarathonController/GeneratedEnvironments/" + env.name + ".prefab"; + + // Make sure the file name is unique, in case an existing Prefab has the same name. + string uniqueLocalPath = AssetDatabase.GenerateUniqueAssetPath(localPath); + + + if (PrefabUtility.IsAnyPrefabInstanceRoot(env.gameObject)) + //We want to store it independently from the current prefab. Therefore: + PrefabUtility.UnpackPrefabInstance(env.gameObject, PrefabUnpackMode.Completely, InteractionMode.AutomatedAction); + + + // Create the new Prefab. + PrefabUtility.SaveAsPrefabAsset(env.gameObject, uniqueLocalPath); + + Debug.Log("Saved new Training Environment at: " + uniqueLocalPath); + + + + } + + +} diff --git a/Assets/MarathonController/Editor/TrainingEnvironmentGeneratorEditor.cs.meta b/Assets/MarathonController/Editor/TrainingEnvironmentGeneratorEditor.cs.meta new file mode 100644 index 0000000..3ffc520 --- /dev/null +++ b/Assets/MarathonController/Editor/TrainingEnvironmentGeneratorEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f334119640072547b9ed56881d813da +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts.meta b/Assets/MarathonController/Scripts.meta new file mode 100644 index 0000000..dee619e --- /dev/null +++ b/Assets/MarathonController/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b14787b743d2b0144ae2b3106595f5ac +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/AnimationController.cs b/Assets/MarathonController/Scripts/AnimationController.cs new file mode 100644 index 0000000..ab5fdbe --- /dev/null +++ b/Assets/MarathonController/Scripts/AnimationController.cs @@ -0,0 +1,357 @@ + +using UnityEngine; + + +public class AnimationController : MonoBehaviour, IAnimationController +{ + public float MaxForwardVelocity = 1f; // Max run speed. + public float MinTurnVelocity = 400f; // Turn velocity when moving at maximum speed. + public float MaxTurnVelocity = 1400f; // Turn velocity when stationary. + public float JumpSpeed = 5f; // + public bool debugForceJump; + + + [SerializeField] + Animator _anim; + + + [SerializeField] + CharacterController _characterController; + + + [SerializeField] + InputController _inputController; + + bool _isGrounded; + bool _previouslyGrounded; + const float kAirborneTurnSpeedProportion = 5.4f; + const float kGroundTurnSpeedProportion = 200f / 2; + const float kGroundedRayDistance = 1f; + const float kJumpAbortSpeed = 10f; + + const float kInverseOneEighty = 1f / 180f; + const float kStickingGravityProportion = 0.3f; + + float _forwardVelocity; + Vector3 _lastGroundForwardVelocity; + float _desiredForwardSpeed; + float _verticalVelocity = -1f; + + Quaternion _targetDirection; // direction we want to move towards + float _angleDiff; // delta between targetRotation and current roataion + Quaternion _targetRotation; + bool _readyToJump; + bool _inCombo; + + [SerializeField] + Material materialUnderFoot; + + public LayerMask IgnoreLayers; + + + [Tooltip("for debugging, we disable this when setTpose in MarathonTestBedController is on")] + public bool doFixedUpdate = true; + + protected bool IsMoveInput + { + get { return !Mathf.Approximately(_inputController.MovementVector.sqrMagnitude, 0f); } + } + + public void OnEnable() + { + + OnAgentInitialize(); + } + + + //TODO: this is also called from RagdollAgent004. Dependency should be removed, somehow. + public void OnAgentInitialize() + { + if (!_anim) + _anim = GetComponent(); + + if (!_characterController) + _characterController = GetComponent(); + + + if (!_inputController) //if it is used without a ragdoll agent (for example, for ROM extraction), we still need to initialize it + _inputController = GetComponent(); + + + _targetDirection = Quaternion.Euler(0, 90, 0); + + + + //Moved to Training Environment Generator + /* + var ragDoll = _spawnableEnv.GetComponentInChildren( true);//we include inactive childs + if (ragDoll)//in the ROM extraction case we do not have any ragdoll agent + { + _layerMask = 1 << ragDoll.gameObject.layer; + _layerMask |= 1 << this.gameObject.layer; + _layerMask = ~(_layerMask); + } + + */ + } + public Vector3 GetDesiredVelocity() + { + Vector3 desiredVelocity = new Vector3( + _inputController.DesiredHorizontalVelocity.x, + 0f, + _inputController.DesiredHorizontalVelocity.y); + return desiredVelocity; + } + + void FixedUpdate() + { + OnFixedUpdate(); + } + + + void OnFixedUpdate() + { + // RotateTarget(Time.fixedDeltaTime); + SetTargetFromMoveInput(); + CalculateForwardMovement(Time.fixedDeltaTime); + CalculateVerticalMovement(Time.fixedDeltaTime); + + if (this.IsMoveInput) + SetTargetRotation(); + + UpdateOrientation(Time.fixedDeltaTime); + + // PlayAudio(); + + // TimeoutToIdle(); + + _previouslyGrounded = _isGrounded; + } + + public void OnReset() + { + } + void OldOnReset() + { + _isGrounded = true; + _previouslyGrounded = true; + _inCombo = false; + _readyToJump = false; + _forwardVelocity = 0f; + _lastGroundForwardVelocity = Vector3.zero; + _desiredForwardSpeed = 0f; + _verticalVelocity = 0f; + _angleDiff = 0f; + + if (!doFixedUpdate) + return; + + _anim.SetBool("onGround", _isGrounded); + // _anim.SetFloat("verticalVelocity", _verticalVelocity); + _anim.SetFloat("angleDeltaRad", _angleDiff * Mathf.Deg2Rad); + _anim.SetFloat("forwardVelocity", _forwardVelocity); + _anim.SetBool("backflip", false); + _anim.Rebind(); + _anim.SetBool("onGround", _isGrounded); + // _anim.SetFloat("verticalVelocity", _verticalVelocity); + _anim.SetFloat("angleDeltaRad", _angleDiff * Mathf.Deg2Rad); + _anim.SetFloat("forwardVelocity", _forwardVelocity); + _anim.SetBool("backflip", false); + + + OnFixedUpdate(); + _anim.Update(0f); + } + + + // Called each physics step (so long as the Animator component is set to Animate Physics) after FixedUpdate to override root motion. + void OnAnimatorMove() + { + if (_anim == null) + return; + Vector3 movement; + float verticalVelocity = _verticalVelocity; + if (_isGrounded) + { + // find ground + RaycastHit hit; + var rayStart = transform.position + ((Vector3.up * kGroundedRayDistance) * 0.5f); + Ray ray = new Ray(rayStart, -Vector3.up); + if (Physics.Raycast(ray, out hit, kGroundedRayDistance, ~IgnoreLayers, QueryTriggerInteraction.Ignore)) + { + // project velocity on plane + movement = _anim.deltaPosition; + movement.y = 0f; + movement = Vector3.ProjectOnPlane(_anim.deltaPosition, hit.normal); + + // store material under foot + Renderer groundRenderer = hit.collider.GetComponentInChildren(); + materialUnderFoot = groundRenderer ? groundRenderer.sharedMaterial : null; + } + else + { + // fail safe incase ray does not collide + movement = _anim.deltaPosition; + materialUnderFoot = null; + } + _lastGroundForwardVelocity = movement / Time.fixedDeltaTime; + } + else + { + movement = _lastGroundForwardVelocity * Time.fixedDeltaTime; + } + // Rotate the transform of the character controller by the animation's root rotation. + _characterController.transform.rotation *= _anim.deltaRotation; + // print ($"delta:{_anim.deltaPosition.magnitude} movement:{movement.magnitude} delta:{_anim.deltaPosition} movement:{movement}"); + + // Add to the movement with the calculated vertical speed. + movement += verticalVelocity * Vector3.up * Time.fixedDeltaTime; + + // Move the character controller. + _characterController.Move(movement); + + // After the movement store whether or not the character controller is grounded. + _isGrounded = _characterController.isGrounded; + + // If Ellen is not on the ground then send the vertical speed to the animator. + // This is so the vertical speed is kept when landing so the correct landing animation is played. + + if (!_isGrounded) + _anim.SetFloat("verticalVelocity", verticalVelocity); + + // Send whether or not Ellen is on the ground to the animator. + _anim.SetBool("onGround", _isGrounded); + } + + void RotateTarget(float deltaTime) + { + if (!Mathf.Approximately(_inputController.CameraRotation.x * _inputController.CameraRotation.x, 0f)) + { + float roation = _targetDirection.eulerAngles.y; + float delta = _inputController.CameraRotation.x * kGroundTurnSpeedProportion * deltaTime; + roation += delta; + // print($"{_targetDirection.eulerAngles.y} delta:{delta}, {roation}"); + _targetDirection = Quaternion.Euler(0f, roation, 0f); + } + } + void SetTargetFromMoveInput() + { + if (!_inputController) //if it is used without a ragdoll agent (for example, for ROM extraction), we still need to initialize it + OnAgentInitialize(); + + Vector2 moveInput = _inputController.MovementVector; + Vector3 localMovementDirection = new Vector3(moveInput.x, 0f, moveInput.y).normalized; + _targetDirection = Quaternion.Euler(localMovementDirection); + } + + void SetTargetRotation() + { + // Create three variables, move input local to the player, flattened forward direction of the camera and a local target rotation. + Vector2 moveInput = _inputController.MovementVector; + Vector3 localMovementDirection = new Vector3(moveInput.x, 0f, moveInput.y).normalized; + + Vector3 forward = _targetDirection * Vector3.forward; + forward.y = 0f; + forward.Normalize(); + + Quaternion targetRotation; + + // // If the local movement direction is the opposite of forward then the target rotation should be towards the camera. + // if (Mathf.Approximately(Vector3.Dot(localMovementDirection, Vector3.forward), -1.0f)) + // { + // targetRotation = Quaternion.LookRotation(-forward); + // } + // else + // { + // // Otherwise the rotation should be the offset of the input from the camera's forward. + // Quaternion cameraToInputOffset = Quaternion.FromToRotation(Vector3.forward, localMovementDirection); + // targetRotation = Quaternion.LookRotation(cameraToInputOffset * forward); + // } + // targetRotation = Quaternion.LookRotation(-forward); + Quaternion cameraToInputOffset = Quaternion.FromToRotation(Vector3.forward, localMovementDirection); + targetRotation = Quaternion.LookRotation(cameraToInputOffset * forward); + + + // The desired forward direction. + Vector3 resultingForward = targetRotation * Vector3.forward; + + // Find the difference between the current rotation of the player and the desired rotation of the player in radians. + float angleCurrent = Mathf.Atan2(transform.forward.x, transform.forward.z) * Mathf.Rad2Deg; + float targetAngle = Mathf.Atan2(resultingForward.x, resultingForward.z) * Mathf.Rad2Deg; + + _angleDiff = Mathf.DeltaAngle(angleCurrent, targetAngle); + _targetRotation = targetRotation; + } + void UpdateOrientation(float deltaTime) + { + _anim.SetFloat("angleDeltaRad", _angleDiff * Mathf.Deg2Rad); + + Vector3 localInput = new Vector3(_inputController.MovementVector.x, 0f, _inputController.MovementVector.y); + float groundedTurnSpeed = Mathf.Lerp(MaxTurnVelocity, MinTurnVelocity, _forwardVelocity / _desiredForwardSpeed); + float actualTurnSpeed = _isGrounded ? groundedTurnSpeed : Vector3.Angle(transform.forward, localInput) * kInverseOneEighty * kAirborneTurnSpeedProportion * groundedTurnSpeed; + _targetRotation = Quaternion.RotateTowards(transform.rotation, _targetRotation, actualTurnSpeed * deltaTime); + bool hasNan = float.IsNaN(_targetRotation.x) || float.IsNaN(_targetRotation.y) || float.IsNaN(_targetRotation.z); + if (!hasNan) + transform.rotation = _targetRotation; + } + + void CalculateForwardMovement(float deltaTime) + { + // Cache the move input and cap it's magnitude at 1. + Vector2 moveInput = _inputController.MovementVector; + if (moveInput.sqrMagnitude > 1f) + moveInput.Normalize(); + + // Calculate the speed intended by input. + _desiredForwardSpeed = moveInput.magnitude * MaxForwardVelocity; + + // Note: acceleration is handle in InputController + _forwardVelocity = _desiredForwardSpeed; + + // Set the animator parameter to control what animation is being played. + _anim.SetFloat("forwardVelocity", _forwardVelocity); + } + void CalculateVerticalMovement(float deltaTime) + { + // If jump is not currently held and is on the ground then ready to jump. + if (!_inputController.Jump && _isGrounded) + _readyToJump = true; + + _anim.SetBool("backflip", _inputController.Backflip); + + if (_isGrounded) + { + // When grounded we apply a slight negative vertical speed to make Ellen "stick" to the ground. + _verticalVelocity = Physics.gravity.y * kStickingGravityProportion; + + // If jump is held, Ellen is ready to jump and not currently in the middle of a melee combo... + if (_inputController.Jump && _readyToJump && !_inCombo) + { + // ... then override the previously set vertical speed and make sure she cannot jump again. + _verticalVelocity = JumpSpeed; + _isGrounded = false; + _readyToJump = false; + _anim.SetBool("onGround", false); + } + } + else + { + // If Ellen is airborne, the jump button is not held and Ellen is currently moving upwards... + if (!_inputController.Jump && _verticalVelocity > 0.0f) + { + // ... decrease Ellen's vertical speed. + // This is what causes holding jump to jump higher that tapping jump. + _verticalVelocity -= kJumpAbortSpeed * deltaTime; + } + + // If a jump is approximately peaking, make it absolute. + if (Mathf.Approximately(_verticalVelocity, 0f)) + { + _verticalVelocity = 0f; + } + + // If Ellen is airborne, apply gravity. + _verticalVelocity += Physics.gravity.y * deltaTime; + } + } +} \ No newline at end of file diff --git a/Assets/MarathonController/Scripts/AnimationController.cs.meta b/Assets/MarathonController/Scripts/AnimationController.cs.meta new file mode 100644 index 0000000..9d1870b --- /dev/null +++ b/Assets/MarathonController/Scripts/AnimationController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 83f0f0517c63942fcb11f8a22d799597 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/AnimationMocapController.cs b/Assets/MarathonController/Scripts/AnimationMocapController.cs new file mode 100644 index 0000000..78479d4 --- /dev/null +++ b/Assets/MarathonController/Scripts/AnimationMocapController.cs @@ -0,0 +1,50 @@ +using UnityEngine; + + +public class AnimationMocapController : MonoBehaviour, IAnimationController +{ + Animator _anim; + + CharacterController _characterController; + + Quaternion _targetDirection; // direction we want to move towards + + public Vector3 MovementVelocity; + + public void OnEnable() + { + OnAgentInitialize(); + } + + public void OnAgentInitialize() + { + if (!_anim) + _anim = GetComponent(); + + if (!_characterController) + _characterController = GetComponent(); + + _targetDirection = Quaternion.Euler(0, 90, 0); + MovementVelocity = Vector3.zero; + } + public void OnReset() + { + _targetDirection = Quaternion.Euler(0, 90, 0); + // MovementVelocity = Vector3.zero; + // _anim.Rebind(); + // _anim.Update(0f); + } + void OnAnimatorMove() + { + if (_anim == null) + return; + var movement = _anim.deltaPosition; + movement.y = 0f; + MovementVelocity = movement / Time.deltaTime; + this.transform.position += movement; + } + public Vector3 GetDesiredVelocity() + { + return MovementVelocity; + } +} \ No newline at end of file diff --git a/Assets/MarathonController/Scripts/AnimationMocapController.cs.meta b/Assets/MarathonController/Scripts/AnimationMocapController.cs.meta new file mode 100644 index 0000000..0c30bb6 --- /dev/null +++ b/Assets/MarathonController/Scripts/AnimationMocapController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fda6ef4d268493b4db068ca6e63c3b45 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/DebugArticulationBody.cs b/Assets/MarathonController/Scripts/DebugArticulationBody.cs new file mode 100644 index 0000000..5dc65d3 --- /dev/null +++ b/Assets/MarathonController/Scripts/DebugArticulationBody.cs @@ -0,0 +1,88 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +public class DebugArticulationBody : MonoBehaviour +{ + public Vector3 jointAcceleration; + public Vector3 jointForce; + public Vector3 jointPosition; + public Vector3 jointVelocity; + public ArticulationJacobian jacobian; + public List dofStartIndices; + public List driveTargets; + public List driveTargetVelocities; + public List jointAccelerations; + public List jointForces; + public List jointPositions; + public List jointVelocities; + ArticulationBody _articulationBody; + // Start is called before the first frame update + void Start() + { + _articulationBody = GetComponent(); + foreach (var ab in this.GetComponentsInChildren()) + { + if (ab.GetComponent() == null) + { + ab.gameObject.AddComponent(); + } + } + } + + // Update is called once per frame + void Update() + { + if (_articulationBody == null) + return; + if (_articulationBody.isRoot) + { + if (dofStartIndices == null) + { + dofStartIndices = Enumerable.Range(0,_articulationBody.dofCount).ToList(); + driveTargets = Enumerable.Range(0,_articulationBody.dofCount) + .Select(x=>0f).ToList(); + driveTargetVelocities = Enumerable.Range(0,_articulationBody.dofCount) + .Select(x=>0f).ToList(); + jointAccelerations = Enumerable.Range(0,_articulationBody.dofCount) + .Select(x=>0f).ToList(); + jointForces = Enumerable.Range(0,_articulationBody.dofCount) + .Select(x=>0f).ToList(); + jointPositions = Enumerable.Range(0,_articulationBody.dofCount) + .Select(x=>0f).ToList(); + jointVelocities = Enumerable.Range(0,_articulationBody.dofCount) + .Select(x=>0f).ToList(); + } + // _articulationBody.GetDenseJacobian(ref jacobian); + _articulationBody.GetDofStartIndices(dofStartIndices); + _articulationBody.GetDriveTargets(driveTargets); + _articulationBody.GetDriveTargetVelocities(driveTargetVelocities); + _articulationBody.GetJointAccelerations(jointAccelerations); + _articulationBody.GetJointForces(jointForces); + _articulationBody.GetJointPositions(jointPositions); + _articulationBody.GetJointVelocities(jointVelocities); + } + if (_articulationBody.dofCount > 0) + { + jointAcceleration.x = _articulationBody.jointAcceleration[0]; + jointForce.x = _articulationBody.jointForce[0]; + jointPosition.x = _articulationBody.jointPosition[0]; + jointVelocity.x = _articulationBody.jointVelocity[0]; + } + if (_articulationBody.dofCount > 1) + { + jointAcceleration.y = _articulationBody.jointAcceleration[1]; + jointForce.y = _articulationBody.jointForce[1]; + jointPosition.y = _articulationBody.jointPosition[1]; + jointVelocity.y = _articulationBody.jointVelocity[1]; + } + if (_articulationBody.dofCount > 2) + { + jointAcceleration.z = _articulationBody.jointAcceleration[2]; + jointForce.z = _articulationBody.jointForce[2]; + jointPosition.z = _articulationBody.jointPosition[2]; + jointVelocity.z = _articulationBody.jointVelocity[2]; + } + } +} diff --git a/Assets/MarathonController/Scripts/DebugArticulationBody.cs.meta b/Assets/MarathonController/Scripts/DebugArticulationBody.cs.meta new file mode 100644 index 0000000..54d4d92 --- /dev/null +++ b/Assets/MarathonController/Scripts/DebugArticulationBody.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c3ff624b5f0d04045a1c2fe7658c3fdf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/DefaultAnimationController.cs b/Assets/MarathonController/Scripts/DefaultAnimationController.cs new file mode 100644 index 0000000..25e7014 --- /dev/null +++ b/Assets/MarathonController/Scripts/DefaultAnimationController.cs @@ -0,0 +1,60 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + + + +//This is a very simple animation controller that does nothing. +//We will use it when we generate a physics ragdoll from an animated character +//that has no specific animationController (i.e., a component that implements the IAnimaitonController interface) +public class DefaultAnimationController : MonoBehaviour, IAnimationController +{ + + + [SerializeField] + Animator _anim; + + + + public void OnEnable() + { + + OnAgentInitialize(); + } + + + + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } + + + public void OnAgentInitialize() { + + if (!_anim) + _anim = GetComponent(); + + + } + public void OnReset() { + + + + } + public Vector3 GetDesiredVelocity() { + //TODO: check if this is really what we want, we may need the root velocity + return _anim.angularVelocity; + + + } + + +} diff --git a/Assets/MarathonController/Scripts/DefaultAnimationController.cs.meta b/Assets/MarathonController/Scripts/DefaultAnimationController.cs.meta new file mode 100644 index 0000000..3328e11 --- /dev/null +++ b/Assets/MarathonController/Scripts/DefaultAnimationController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 483dd03a765994d47aa7b4c23af4636e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/IAnimationController.cs b/Assets/MarathonController/Scripts/IAnimationController.cs new file mode 100644 index 0000000..9ebdd8d --- /dev/null +++ b/Assets/MarathonController/Scripts/IAnimationController.cs @@ -0,0 +1,9 @@ +using UnityEngine; + + +public interface IAnimationController +{ + void OnAgentInitialize(); + void OnReset(); + Vector3 GetDesiredVelocity(); +} \ No newline at end of file diff --git a/Assets/MarathonController/Scripts/IAnimationController.cs.meta b/Assets/MarathonController/Scripts/IAnimationController.cs.meta new file mode 100644 index 0000000..a4d9c0d --- /dev/null +++ b/Assets/MarathonController/Scripts/IAnimationController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a031743a3ca1c084da6715804ea7f77d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/IgnoreColliderForObservation.cs b/Assets/MarathonController/Scripts/IgnoreColliderForObservation.cs new file mode 100644 index 0000000..b753871 --- /dev/null +++ b/Assets/MarathonController/Scripts/IgnoreColliderForObservation.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class IgnoreColliderForObservation : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + +} diff --git a/Assets/MarathonController/Scripts/IgnoreColliderForObservation.cs.meta b/Assets/MarathonController/Scripts/IgnoreColliderForObservation.cs.meta new file mode 100644 index 0000000..f40ad59 --- /dev/null +++ b/Assets/MarathonController/Scripts/IgnoreColliderForObservation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eebc76d5f8d6545e2a99489d15e426be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/IgnoreColliderForReward.cs b/Assets/MarathonController/Scripts/IgnoreColliderForReward.cs new file mode 100644 index 0000000..1552974 --- /dev/null +++ b/Assets/MarathonController/Scripts/IgnoreColliderForReward.cs @@ -0,0 +1,8 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class IgnoreColliderForReward : MonoBehaviour +{ + +} diff --git a/Assets/MarathonController/Scripts/IgnoreColliderForReward.cs.meta b/Assets/MarathonController/Scripts/IgnoreColliderForReward.cs.meta new file mode 100644 index 0000000..0bf0beb --- /dev/null +++ b/Assets/MarathonController/Scripts/IgnoreColliderForReward.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 28433c7e35a934e9993f0337e2aacd4e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/MapAnim2Ragdoll.cs b/Assets/MarathonController/Scripts/MapAnim2Ragdoll.cs new file mode 100644 index 0000000..4042513 --- /dev/null +++ b/Assets/MarathonController/Scripts/MapAnim2Ragdoll.cs @@ -0,0 +1,594 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using Unity.MLAgents; +using UnityEngine; +using UnityEngine.Assertions; +using UnityEngine.AI; +using System.Linq.Expressions; + +public class MapAnim2Ragdoll : MonoBehaviour, IOnSensorCollision +{//previously Mocap Controller Artanim + public List SensorIsInTouch; + List _sensors; + + internal Animator anim; + + [Range(0f,1f)] + public float NormalizedTime; + public float Lenght; + public bool IsLoopingAnimation; + + [SerializeField] + Rigidbody _rigidbodyRoot; + + List _animTransforms; + + public List _ragdollTransforms; + List _ragDollRigidbody; + + + // private List _rigidbodies; + // private List _transforms; + + public bool RequestCamera; + public bool CameraFollowMe; + public Transform CameraTarget; + + Vector3 _resetPosition; + Quaternion _resetRotation; + + [Space(20)] + [Header("Stats")] + public Vector3 CenterOfMassVelocity; + public float CenterOfMassVelocityMagnitude; + public Vector3 CenterOfMassVelocityInRootSpace; + public float CenterOfMassVelocityMagnitudeInRootSpace; + public Vector3 LastCenterOfMassInWorldSpace; + public Vector3 LastRootPositionInWorldSpace; + public Vector3 LastHeadPositionInWorldSpace; + public Vector3 HorizontalDirection; + + public List LastPosition; + public List LastRotation; + public List Velocities; + public List AngularVelocities; + + + //TODO: find a way to remove this dependency (otherwise, not fully procedural) + private bool _usingMocapAnimatorController = false; + + IAnimationController _mocapAnimController; + + // [SerializeField] + // float _debugDistance = 0.0f; + + private List _offsetsSource2RB = null; + + //for debugging, we disable this when setTpose in MarathonTestBedController is on + [HideInInspector] + public bool doFixedUpdate = true; + + bool _hasLazyInitialized; + + bool _hackyNavAgentMode; + + Collider _root; + Collider _head; + + public void OnAgentInitialize() + { + LazyInitialize(); + } + void LazyInitialize() + { + if (_hasLazyInitialized) + return; + + // check if we need to create our ragdoll + var ragdoll4Mocap = GetComponentsInChildren() + .Where(x=>x.name == "RagdollForMocap") + .FirstOrDefault(); + if (ragdoll4Mocap == null) + DynamicallyCreateRagdollForMocap(); + + _mocapAnimController = GetComponent(); + _usingMocapAnimatorController = _mocapAnimController != null; + if (!_usingMocapAnimatorController) + { + Debug.LogWarning("Mocap Controller is working WITHOUT AnimationController"); + } + + var ragdollTransforms = + GetComponentsInChildren() + .Where(x=>x.name.StartsWith("articulation")) + .ToList(); + var ragdollNames = ragdollTransforms + .Select(x=>x.name) + .ToList(); + var animNames = ragdollNames + .Select(x=>x.Replace("articulation:","")) + .ToList(); + var animTransforms = animNames + .Select(x=>GetComponentsInChildren().FirstOrDefault(y=>y.name == x)) + .Where(x=>x!=null) + .ToList(); + _animTransforms = new List(); + _ragdollTransforms = new List(); + // first time, copy position and rotation + foreach (var animTransform in animTransforms) + { + var ragdollTransform = ragdollTransforms + .First(x=>x.name == $"articulation:{animTransform.name}"); + ragdollTransform.position = animTransform.position; + ragdollTransform.rotation = animTransform.rotation; + _animTransforms.Add(animTransform); + _ragdollTransforms.Add(ragdollTransform); + } + _ragDollRigidbody = _ragdollTransforms + .Select(x=>x.GetComponent()) + .Where(x=> x != null) + .ToList(); + + SetupSensors(); + + if (RequestCamera && CameraTarget != null) + { + var instances = FindObjectsOfType().ToList(); + if (instances.Count(x=>x.CameraFollowMe) < 1) + CameraFollowMe = true; + } + if (CameraFollowMe){ + var camera = FindObjectOfType(); + var follow = camera.GetComponent(); + follow.target = CameraTarget; + } + var navAgent = GetComponent(); + if (navAgent) + { + var radius = 16f; + Vector3 randomDirection = UnityEngine.Random.insideUnitSphere * radius; + NavMeshHit hit; + Vector3 finalPosition = Vector3.zero; + if (NavMesh.SamplePosition(randomDirection, out hit, radius, 1)) + { + finalPosition = hit.position; + } + transform.position = finalPosition; + _hackyNavAgentMode = true; + } + _resetPosition = transform.position; + _resetRotation = transform.rotation; + + _hasLazyInitialized = true; + + // NOTE: do after setting _hasLazyInitialized as can trigger infinate loop + anim = GetComponent(); + if (_usingMocapAnimatorController) + { + anim.Update(0f); + } + var colliders = GetComponentsInChildren().ToList(); + _root = colliders.FirstOrDefault(); + _head = colliders.FirstOrDefault(x=>x.name.ToLower().Contains("head")); + if (_head == null) + { + Debug.LogWarning($"{nameof(MapAnim2Ragdoll)}.{nameof(LazyInitialize)}() can not find the head. "); + } + + } + + public void DynamicallyCreateRagdollForMocap() + { + // Find Ragdoll in parent + Transform parent = this.transform.parent; + ProcRagdollAgent[] ragdolls = parent.GetComponentsInChildren(true); + Assert.AreEqual(ragdolls.Length, 1, "code only supports one RagDollAgent"); + ProcRagdollAgent ragDoll = ragdolls[0]; + var ragdollForMocap = new GameObject("RagdollForMocap"); + ragdollForMocap.transform.SetParent(this.transform, false); + Assert.AreEqual(ragDoll.transform.childCount, 1, "code only supports 1 child"); + var ragdollRoot = ragDoll.transform.GetChild(0); + // clone the ragdoll root + var clone = Instantiate(ragdollRoot); + // remove '(clone)' from names + foreach (var t in clone.GetComponentsInChildren()) + { + t.name = t.name.Replace("(Clone)", ""); + } + + + // swap ArticulatedBody for RidgedBody + List bodiesNamesToDelete = new List(); + foreach (var abody in clone.GetComponentsInChildren()) + { + var bodyGameobject = abody.gameObject; + var rb = bodyGameobject.AddComponent(); + rb.mass = abody.mass; + rb.useGravity = abody.useGravity; + // it makes no sense but if i do not set the layer here, then some objects dont have the correct layer + rb.gameObject.layer = this.gameObject.layer; + bodiesNamesToDelete.Add(abody.name); + } + foreach (var name in bodiesNamesToDelete) + { + var abody = clone + .GetComponentsInChildren() + .First(x=>x.name == name); + DestroyImmediate(abody); + + } + // make Kinematic + foreach (var rb in clone.GetComponentsInChildren()) + { + rb.isKinematic = true; + } + + + //we do this after removing the ArticulationBody, since moving the root in the articulationBody creates TROUBLE + clone.transform.SetParent(ragdollForMocap.transform, false); + + + // setup HandleOverlap + foreach (var rb in clone.GetComponentsInChildren()) + { + // remove cloned HandledOverlap + var oldHandleOverlap = rb.GetComponent(); + if (oldHandleOverlap != null) + { + DestroyImmediate(oldHandleOverlap); + } + var handleOverlap = rb.gameObject.AddComponent(); + handleOverlap.Parent = clone.gameObject; + } + + // set the root + this._rigidbodyRoot = clone.GetComponent(); + // set the layers + ragdollForMocap.layer = this.gameObject.layer; + foreach (Transform child in ragdollForMocap.GetComponentInChildren()) + { + child.gameObject.layer = this.gameObject.layer; + } + var triggers = ragdollForMocap + .GetComponentsInChildren() + .Where(x=>x.isTrigger); + foreach (var trigger in triggers) + { + trigger.gameObject.SetActive(false); + trigger.gameObject.SetActive(true); + } + } + void SetupSensors() + { + _sensors = GetComponentsInChildren() + .Select(x=>x.gameObject) + .ToList(); + SensorIsInTouch = Enumerable.Range(0,_sensors.Count).Select(x=>0f).ToList(); + } + + public void OnStep(float timeDelta) { + LazyInitialize(); + + if (_lastPositionTime == Time.time) + return; + + //if (!_usesMotionMatching) + { + AnimatorStateInfo stateInfo = anim.GetCurrentAnimatorStateInfo(0); + AnimatorClipInfo[] clipInfo = anim.GetCurrentAnimatorClipInfo(0); + Lenght = stateInfo.length; + NormalizedTime = stateInfo.normalizedTime; + IsLoopingAnimation = stateInfo.loop; + var timeStep = stateInfo.length * stateInfo.normalizedTime; + } + MimicAnimation(); + // get Center Of Mass velocity in f space + var newCOM = GetCenterOfMass(); + var lastCOM = LastCenterOfMassInWorldSpace; + LastCenterOfMassInWorldSpace = newCOM; + var velocity = newCOM - lastCOM; + velocity -= _snapOffset; + velocity /= timeDelta; + CenterOfMassVelocity = velocity; + CenterOfMassVelocityMagnitude = CenterOfMassVelocity.magnitude; + CenterOfMassVelocityInRootSpace = transform.InverseTransformVector(velocity); + CenterOfMassVelocityMagnitudeInRootSpace = CenterOfMassVelocityInRootSpace.magnitude; + HorizontalDirection = new Vector3(0f, transform.eulerAngles.y, 0f); + LastRootPositionInWorldSpace = _root.transform.position; + LastHeadPositionInWorldSpace = _head.transform.position; + + var newPosition = _ragDollRigidbody + .Select(x=>x.position) + .ToList(); + var newRotation = _ragDollRigidbody + .Select(x=>x.transform.localRotation) + .ToList(); + Velocities = LastPosition + // .Zip(newPosition, (last, cur)=> (cur-last)/timeDelta) + .Zip(newPosition, (last, cur)=> (cur-last-_snapOffset)/timeDelta) + .ToList(); + AngularVelocities = LastRotation + .Zip(newRotation, (last, cur)=> Utils.GetAngularVelocity(cur, last, timeDelta)) + .ToList(); + LastPosition = newPosition; + LastRotation = newRotation; + _snapOffset = Vector3.zero; + _lastPositionTime = Time.time; + } + + float _lastPositionTime = float.MinValue; + Vector3 _snapOffset = Vector3.zero; + void MimicAnimation() { + if (!anim.enabled) + return; + // copy position for root (assume first target is root) + _ragdollTransforms[0].position = _animTransforms[0].position; + // copy rotation + for (int i = 0; i < _animTransforms.Count; i++) + { + _ragdollTransforms[i].rotation = _animTransforms[i].rotation; + } + } + + + public Vector3 GetCenterOfMass() + { + var centerOfMass = Vector3.zero; + float totalMass = 0f; + foreach (Rigidbody ab in _ragDollRigidbody) + { + centerOfMass += ab.worldCenterOfMass * ab.mass; + totalMass += ab.mass; + } + centerOfMass /= totalMass; + // centerOfMass -= _spawnableEnv.transform.position; + return centerOfMass; + } + + + public void OnReset(Quaternion resetRotation) + { + LazyInitialize(); + + if (!doFixedUpdate) + return; + + if (!_hackyNavAgentMode) + { + transform.position = _resetPosition; + // handle character controller skin width + var characterController = GetComponent(); + if (characterController != null) + { + var pos = transform.position; + pos.y += characterController.skinWidth; + transform.position = pos; + } + transform.rotation = resetRotation; + } + MimicAnimation(); + _snapOffset = Vector3.zero; + LastCenterOfMassInWorldSpace = GetCenterOfMass(); + LastRootPositionInWorldSpace = _root.transform.position; + LastHeadPositionInWorldSpace = _head.transform.position; + LastPosition = _ragDollRigidbody + .Select(x=>x.position) + .ToList(); + LastRotation = _ragDollRigidbody + .Select(x=>x.transform.localRotation) + .ToList(); + } + + public void OnSensorCollisionEnter(Collider sensorCollider, GameObject other) + { + LazyInitialize(); + + //if (string.Compare(other.name, "Terrain", true) !=0) + if (other.layer != LayerMask.NameToLayer("Ground")) + return; + var sensor = _sensors + .FirstOrDefault(x=>x == sensorCollider.gameObject); + if (sensor != null) { + var idx = _sensors.IndexOf(sensor); + SensorIsInTouch[idx] = 1f; + } + } + public void OnSensorCollisionExit(Collider sensorCollider, GameObject other) + { + LazyInitialize(); + + if (other.layer != LayerMask.NameToLayer("Ground")) + return; + var sensor = _sensors + .FirstOrDefault(x=>x == sensorCollider.gameObject); + if (sensor != null) { + var idx = _sensors.IndexOf(sensor); + SensorIsInTouch[idx] = 0f; + } + } + public void CopyStatesTo(GameObject target) + { + LazyInitialize(); + + + var targets = target.GetComponentsInChildren().ToList(); + if (targets?.Count == 0) + return; + var root = targets.First(x=>x.isRoot); + // root.gameObject.SetActive(false); + var rstat = _ragDollRigidbody.First(x=>x.name == root.name); + root.TeleportRoot(rstat.position, rstat.rotation); + root.transform.position = rstat.position; + root.transform.rotation = rstat.rotation; + // root.gameObject.SetActive(true); + foreach (var targetRb in targets) + { + var stat = _ragDollRigidbody.First(x=>x.name == targetRb.name); + if (targetRb.isRoot) + continue; + // bool shouldDebug = targetRb.name == "articulation:mixamorig:RightArm"; + // bool didDebug = false; + + if (targetRb.jointType == ArticulationJointType.SphericalJoint) + { + float stiffness = 0f; + float damping = float.MaxValue; + float forceLimit = 0f; + // if (shouldDebug) + // didDebug = true; + Vector3 decomposedRotation = Utils.GetSwingTwist(stat.transform.localRotation); + int j=0; + List thisJointPosition = Enumerable.Range(0,targetRb.dofCount).Select(x=>0f).ToList(); + + if (targetRb.twistLock == ArticulationDofLock.LimitedMotion) + { + var drive = targetRb.xDrive; + var deg = decomposedRotation.x; + thisJointPosition[j++] = deg * Mathf.Deg2Rad; + drive.stiffness = stiffness; + drive.damping = damping; + drive.forceLimit = forceLimit; + drive.target = deg; + targetRb.xDrive = drive; + } + if (targetRb.swingYLock == ArticulationDofLock.LimitedMotion) + { + var drive = targetRb.yDrive; + var deg = decomposedRotation.y; + thisJointPosition[j++] = deg * Mathf.Deg2Rad; + drive.stiffness = stiffness; + drive.damping = damping; + drive.forceLimit = forceLimit; + drive.target = deg; + targetRb.yDrive = drive; + } + if (targetRb.swingZLock == ArticulationDofLock.LimitedMotion) + { + var drive = targetRb.zDrive; + var deg = decomposedRotation.z; + thisJointPosition[j++] = deg * Mathf.Deg2Rad; + drive.stiffness = stiffness; + drive.damping = damping; + drive.forceLimit = forceLimit; + drive.target = deg; + targetRb.zDrive = drive; + } + switch (targetRb.dofCount) + { + case 1: + targetRb.jointPosition = new ArticulationReducedSpace(thisJointPosition[0]); + break; + case 2: + targetRb.jointPosition = new ArticulationReducedSpace( + thisJointPosition[0], + thisJointPosition[1]); + break; + case 3: + targetRb.jointPosition = new ArticulationReducedSpace( + thisJointPosition[0], + thisJointPosition[1], + thisJointPosition[2]); + break; + default: + break; + } + } + } + foreach (var childAb in root.GetComponentsInChildren()) + { + childAb.angularVelocity = Vector3.zero; + childAb.velocity = Vector3.zero; + } + } + public void CopyVelocityTo(GameObject targetGameObject, Vector3 velocity) + { + LazyInitialize(); + + var targets = targetGameObject.GetComponentsInChildren().ToList(); + if (targets?.Count == 0) + return; + var root = targets.First(x=>x.isRoot); + + if (Velocities == null || Velocities.Count == 0) + return; + + Vector3 aveVelocity = Vector3.zero; + Vector3 aveAngularVelocity = Vector3.zero; + for (int i = 0; i < _ragDollRigidbody.Count; i++) + { + var source = _ragDollRigidbody[i]; + var target = targets.First(x=>x.name == source.name); + var vel = Velocities[i]; + var angVel = AngularVelocities[i]; + foreach (var childAb in target.GetComponentsInChildren()) + { + if (childAb == target) + continue; + childAb.transform.localPosition = Vector3.zero; + childAb.transform.localEulerAngles = Vector3.zero; + childAb.angularVelocity = Vector3.zero; + childAb.velocity = Vector3.zero; + } + if (target.jointType == ArticulationJointType.SphericalJoint && !target.isRoot) + { + int j=0; + List thisJointVelocity = Enumerable.Range(0, target.dofCount).Select(x=>0f).ToList(); + + if (target.twistLock == ArticulationDofLock.LimitedMotion) + { + thisJointVelocity[j++] = angVel.x; + } + if (target.swingYLock == ArticulationDofLock.LimitedMotion) + { + thisJointVelocity[j++] = angVel.y; + } + if (target.swingZLock == ArticulationDofLock.LimitedMotion) + { + thisJointVelocity[j++] = angVel.z; + } + switch (target.dofCount) + { + case 1: + target.jointVelocity = new ArticulationReducedSpace(thisJointVelocity[0]); + break; + case 2: + target.jointVelocity = new ArticulationReducedSpace( + thisJointVelocity[0], + thisJointVelocity[1]); + break; + case 3: + target.jointVelocity = new ArticulationReducedSpace( + thisJointVelocity[0], + thisJointVelocity[1], + thisJointVelocity[2]); + break; + default: + break; + } + + } + target.velocity = vel; + aveVelocity += Velocities[i]; + aveAngularVelocity += AngularVelocities[i]; + } + var c = (float)_ragDollRigidbody.Count; + aveVelocity = aveVelocity / c; + aveAngularVelocity = aveAngularVelocity / c; + c = c; + } + public Vector3 SnapTo(Vector3 snapPosition) + { + snapPosition.y = transform.position.y; + var snapDistance = snapPosition-transform.position; + transform.position = snapPosition; + _snapOffset += snapDistance; + return snapDistance; + } + public List GetRigidBodies() + { + LazyInitialize(); + return GetComponentsInChildren().ToList(); + } +} \ No newline at end of file diff --git a/Assets/MarathonController/Scripts/MapAnim2Ragdoll.cs.meta b/Assets/MarathonController/Scripts/MapAnim2Ragdoll.cs.meta new file mode 100644 index 0000000..d63bdb4 --- /dev/null +++ b/Assets/MarathonController/Scripts/MapAnim2Ragdoll.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: efc73e620e6b44de198ad1fc443291bb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/MapRagdoll2Anim.cs b/Assets/MarathonController/Scripts/MapRagdoll2Anim.cs new file mode 100644 index 0000000..c2b2120 --- /dev/null +++ b/Assets/MarathonController/Scripts/MapRagdoll2Anim.cs @@ -0,0 +1,66 @@ +using System; +using System.Linq; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MapRagdoll2Anim : MonoBehaviour + +//this class does exactly the symetrical of MocapControllerArtanim: it maps animations from a ragdoll to a rigged character +{ + + [SerializeField] + ArticulationBody _articulationBodyRoot; + + List _animTransforms; + List _ragdollTransforms; + + //to generate an environment automatically from a rigged character and an animation (see folder ROM-extraction) + public ArticulationBody ArticulationBodyRoot + { + set => _articulationBodyRoot = value; + get => _articulationBodyRoot; + } + + // use LateUpdate as physics runs at 2x and we only need to run once per render + private void LateUpdate() + { + // MimicAnimationArtanim(); + if (_animTransforms == null) + { + var ragdollTransforms = + _articulationBodyRoot.GetComponentsInChildren() + .Where(x=>x.name.StartsWith("articulation")) + .ToList(); + var ragdollNames = ragdollTransforms + .Select(x=>x.name) + .ToList(); + var animNames = ragdollNames + .Select(x=>x.Replace("articulation:","")) + .ToList(); + var animTransforms = animNames + .Select(x=>GetComponentsInChildren().FirstOrDefault(y=>y.name == x)) + .Where(x=>x!=null) + .ToList(); + _animTransforms = new List(); + _ragdollTransforms = new List(); + // first time, copy position and rotation + foreach (var animTransform in animTransforms) + { + var ragdollTransform = ragdollTransforms + .First(x=>x.name == $"articulation:{animTransform.name}"); + animTransform.position = ragdollTransform.position; + animTransform.rotation = ragdollTransform.rotation; + _animTransforms.Add(animTransform); + _ragdollTransforms.Add(ragdollTransform); + } + } + // copy position for root (assume first target is root) + _animTransforms[0].position = _ragdollTransforms[0].position; + // copy rotation + for (int i = 0; i < _animTransforms.Count; i++) + { + _animTransforms[i].rotation = _ragdollTransforms[i].rotation; + } + } +} diff --git a/Assets/MarathonController/Scripts/MapRagdoll2Anim.cs.meta b/Assets/MarathonController/Scripts/MapRagdoll2Anim.cs.meta new file mode 100644 index 0000000..452cf65 --- /dev/null +++ b/Assets/MarathonController/Scripts/MapRagdoll2Anim.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 66999d97560d741a482b847c01b03a33 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/MarConObservations2Learn.cs b/Assets/MarathonController/Scripts/MarConObservations2Learn.cs new file mode 100644 index 0000000..d537457 --- /dev/null +++ b/Assets/MarathonController/Scripts/MarConObservations2Learn.cs @@ -0,0 +1,148 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using Unity.MLAgents; +using UnityEngine; +using ManyWorlds; +using UnityEngine.Assertions; +using Unity.Collections; + +public class MarConObservations2Learn : MonoBehaviour +{ + public string[] JointNames; + [Header("Observations")] + + [Tooltip("Kinematic character center of mass velocity, Vector3")] + public Vector3 MocapCOMVelocity; + + [Tooltip("RagDoll character center of mass velocity, Vector3")] + public Vector3 RagDollCOMVelocity; + + [Tooltip("User-input desired horizontal CM velocity. Vector2")] + public Vector2 InputDesiredHorizontalVelocity; + + [Tooltip("User-input requests jump, bool")] + public bool InputJump; + + [Tooltip("User-input requests backflip, bool")] + public bool InputBackflip; + + [Tooltip("User-input requests stand, bool")] + public bool InputStand; + + [Tooltip("User-input requests walk or run, bool")] + public bool InputWalkOrRun; + [Tooltip("Difference between RagDoll character horizontal CM velocity and user-input desired horizontal CM velocity. Vector2")] + public Vector2 HorizontalVelocityDifference; + + [Tooltip("Positions and velocities for subset of bodies")] + public Vector3[] DifferenceInPositions; + public Vector3[] DifferenceInVelocities; + public float[] DifferenceInDofRotationWithinRangeOfMotion; + public float[] DifferenceInDofAngularVelocity; + public float[] DifferenceInDofRotationInRad; + + + [Tooltip("Smoothed actions produced in the previous step of the policy are collected in t −1")] + public float[] PreviousActions; + + + MarConObservationsStats _mocapStats; + MarConObservationsStats _ragdollStats; + ArticulationBody[] _joints; + InputController _inputController; + SpawnableEnv _spawnableEnv; + public void OnAgentInitialize(GameObject ragdoll, MapAnim2Ragdoll mocap, ArticulationBody[] joints) + { + joints = joints + .Where(x => x.jointType == ArticulationJointType.SphericalJoint) + .Where(x => !x.isRoot) + .Distinct() + .ToArray(); + JointNames = joints + .Select(x=>x.name) + .Select(x=>x.Replace("articulation:", "")) + .Select(x=>x.Replace("mixamorig:", "")) + .ToArray(); + var articulationRoot = GetComponentsInChildren() + .First(x=>x.isRoot); + + _spawnableEnv = GetComponentInParent(); + _inputController = _spawnableEnv.GetComponentInChildren(); + + _joints = joints; + _mocapStats = new GameObject("MocapObservationStats").AddComponent(); + _ragdollStats = new GameObject("RagdollObservationStats").AddComponent(); + _mocapStats.transform.SetParent(_spawnableEnv.transform); + _ragdollStats.transform.SetParent(_spawnableEnv.transform); + _mocapStats.OnAgentInitialize(mocap.transform, _joints, articulationRoot); + _ragdollStats.OnAgentInitialize(ragdoll.transform, _joints, articulationRoot); + + + int dof = 0; + foreach (var m in joints) + { + if (m.twistLock == ArticulationDofLock.LimitedMotion) + dof++; + if (m.swingYLock == ArticulationDofLock.LimitedMotion) + dof++; + if (m.swingZLock == ArticulationDofLock.LimitedMotion) + dof++; + } + PreviousActions = Enumerable.Range(0,dof).Select(x=>0f).ToArray(); + DifferenceInPositions = Enumerable.Range(0,_mocapStats.Positions.Length).Select(x=>Vector3.zero).ToArray(); + DifferenceInVelocities = Enumerable.Range(0,_mocapStats.Positions.Length).Select(x=>Vector3.zero).ToArray(); + DifferenceInDofRotationWithinRangeOfMotion = Enumerable.Range(0,dof).Select(x=>0f).ToArray(); + DifferenceInDofAngularVelocity = Enumerable.Range(0,dof).Select(x=>0f).ToArray(); + DifferenceInDofRotationInRad = Enumerable.Range(0,dof).Select(x=>0f).ToArray(); + } + public void OnStep(float timeDelta) + { + _mocapStats.OnStep(timeDelta); + _ragdollStats.OnStep(timeDelta); + MocapCOMVelocity = _mocapStats.CenterOfMassVelocity; + RagDollCOMVelocity = _ragdollStats.CenterOfMassVelocity; + InputDesiredHorizontalVelocity = new Vector2( + _ragdollStats.DesiredCenterOfMassVelocity.x, + _ragdollStats.DesiredCenterOfMassVelocity.z); + if (_inputController != null) + { + InputJump = _inputController.Jump; + InputBackflip = _inputController.Backflip; + InputStand = _inputController.Stand; + InputWalkOrRun = _inputController.WalkOrRun; + } + HorizontalVelocityDifference = new Vector2( + _ragdollStats.CenterOfMassVelocityDifference.x, + _ragdollStats.CenterOfMassVelocityDifference.z); + for (int i = 0; i < _mocapStats.Positions.Length; i++) + { + DifferenceInPositions[i] = _mocapStats.Positions[i] - _ragdollStats.Positions[i]; + DifferenceInVelocities[i] = _mocapStats.Velocities[i] - _ragdollStats.Velocities[i]; + } + for (int i = 0; i < _mocapStats.DofRotationWithinRangeOfMotion.Length; i++) + { + DifferenceInDofRotationWithinRangeOfMotion[i] = + _mocapStats.DofRotationWithinRangeOfMotion[i] - _ragdollStats.DofRotationWithinRangeOfMotion[i]; + DifferenceInDofAngularVelocity[i] = + _mocapStats.DofAngularVelocity[i] - _ragdollStats.DofAngularVelocity[i]; + DifferenceInDofRotationInRad[i] = + _mocapStats.DofRotationInRad[i] - _ragdollStats.DofRotationInRad[i]; + } + } + public void OnReset() + { + // _mocapStats.OnReset(); + // _RagdollStats.OnReset(); + _ragdollStats.transform.position = _mocapStats.transform.position; + _ragdollStats.transform.rotation = _mocapStats.transform.rotation; + var timeDelta = float.MinValue; + OnStep(timeDelta); + } + public MarConObservationsStats GetRagdollStats() => _ragdollStats; + public Transform GetRagDollCOM() + { + return _ragdollStats.transform; + } + +} diff --git a/Assets/MarathonController/Scripts/MarConObservations2Learn.cs.meta b/Assets/MarathonController/Scripts/MarConObservations2Learn.cs.meta new file mode 100644 index 0000000..64a6c58 --- /dev/null +++ b/Assets/MarathonController/Scripts/MarConObservations2Learn.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9af1acc9cb24942f18be90d74f309aa7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/MarConObservationsStats.cs b/Assets/MarathonController/Scripts/MarConObservationsStats.cs new file mode 100644 index 0000000..9f50a15 --- /dev/null +++ b/Assets/MarathonController/Scripts/MarConObservationsStats.cs @@ -0,0 +1,363 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; + + +using ManyWorlds; +using Unity.Collections; +using UnityEngine; + +public class MarConObservationsStats : MonoBehaviour +{ + [Header("Anchor stats")] + public Vector3 HorizontalDirection; // Normalized vector in direction of travel (assume right angle to floor) + public Vector3 AngualrVelocity; + + [Header("Stats, relative to HorizontalDirection & Center Of Mass")] + public Vector3 CenterOfMassVelocity; + public Vector3 CenterOfMassHorizontalVelocity; + public float CenterOfMassVelocityMagnitude; + public Vector3 CenterOfMassVelocityInRootSpace; + public float CenterOfMassVelocityMagnitudeInRootSpace; + public float CenterOfMassHorizontalVelocityMagnitude; + public Vector3 DesiredCenterOfMassVelocity; + public Vector3 CenterOfMassVelocityDifference; + [HideInInspector] public Vector3 LastCenterOfMassInWorldSpace; + [HideInInspector] public Quaternion LastRotation; + [Header("Stats, in local joint space")] + public float[] DofRotationWithinRangeOfMotion; + public float[] DofAngularVelocity; + public float[] DofRotationInRad; + [HideInInspector] public float[] DofLastRotationInRad; + + ArticulationBody[] _articulationBodyJoints; + Rigidbody[] _rigidBodyJoints; + GameObject[] _jointsToTrack; + Collider[] _collidersToTrack; + GameObject[] _jointForTrackedColliders; + public Vector3[] Positions; + public Quaternion[] Rotations; + public Vector3[] Velocities; + public Vector3[] AngualrVelocities; + [HideInInspector] + public Vector3[] LastLocalPositions; + [HideInInspector] + public Quaternion[] LastLocalRotations; + bool LastIsSet; + MapAnim2Ragdoll _mapAnim2Ragdoll; + GameObject _root; + IAnimationController _animationController; + SpawnableEnv _spawnableEnv; + + public void OnAgentInitialize( + Transform defaultTransform, + ArticulationBody[] articulationBodyJoints, + ArticulationBody articulationBodyRoot) + { + _mapAnim2Ragdoll = defaultTransform.GetComponent(); + _spawnableEnv = GetComponentInParent(); + _animationController = _spawnableEnv.GetComponentInChildren(); + + var jointNames = articulationBodyJoints + .Select(x=>x.name) + .Select(x=>x.Replace("articulation:", "")) + .Select(x=>x.Replace("mixamorig:", "")) + .ToArray(); + _articulationBodyJoints = articulationBodyJoints; + _rigidBodyJoints = GetComponentsInChildren(); + if (_rigidBodyJoints.Length > 0) + { + _jointsToTrack = jointNames + .Select(x=>_rigidBodyJoints.First(y => y.name.EndsWith(x))) + .Select(x=>x.gameObject) + .ToArray(); + } + else + { + _jointsToTrack = jointNames + .Select(x=>articulationBodyJoints.First(y => y.name.EndsWith(x))) + .Select(x=>x.gameObject) + .ToArray(); + } + _collidersToTrack = _jointsToTrack + .SelectMany(x=>x.GetComponentsInChildren()) + .Where(x => x.enabled) + .Where(x => !x.isTrigger) + .Where(x=> { + var ignoreCollider = x.GetComponent(); + if (ignoreCollider == null) + return true; + return !ignoreCollider.enabled;}) + .Distinct() + .ToArray(); + + if (_rigidBodyJoints.Length > 0) + { + _jointForTrackedColliders = _collidersToTrack + .Select(x=>x.GetComponentsInParent().First()) + .Select(x=>x.gameObject) + .ToArray(); + } + else + { + _jointForTrackedColliders = _collidersToTrack + .Select(x=>x.GetComponentsInParent().First()) + .Select(x=>x.gameObject) + .ToArray(); + } + Positions = Enumerable.Range(0, _collidersToTrack.Length).Select(x=>Vector3.zero).ToArray(); + Rotations = Enumerable.Range(0, _collidersToTrack.Length).Select(x=>Quaternion.identity).ToArray(); + Velocities = Enumerable.Range(0, _collidersToTrack.Length).Select(x=>Vector3.zero).ToArray(); + AngualrVelocities = Enumerable.Range(0, _collidersToTrack.Length).Select(x=>Vector3.zero).ToArray(); + LastLocalPositions = Enumerable.Range(0, _collidersToTrack.Length).Select(x=>Vector3.zero).ToArray(); + LastLocalRotations = Enumerable.Range(0, _collidersToTrack.Length).Select(x=>Quaternion.identity).ToArray(); + + int dof = 0; + foreach (var m in _articulationBodyJoints) + { + if (m.twistLock == ArticulationDofLock.LimitedMotion) + dof++; + if (m.swingYLock == ArticulationDofLock.LimitedMotion) + dof++; + if (m.swingZLock == ArticulationDofLock.LimitedMotion) + dof++; + } + DofRotationWithinRangeOfMotion = Enumerable.Range(0, dof).Select(x=>0f).ToArray(); + DofAngularVelocity = Enumerable.Range(0, dof).Select(x=>0f).ToArray(); + DofRotationInRad = Enumerable.Range(0, dof).Select(x=>0f).ToArray(); + DofLastRotationInRad = Enumerable.Range(0, dof).Select(x=>0f).ToArray(); + + if (_root == null) + { + Debug.Log("in game object: " + name + "my rootname is: " + articulationBodyRoot.name); + if (_rigidBodyJoints.Length > 0) + _root = _rigidBodyJoints.First(x => x.name == articulationBodyRoot.name).gameObject; + else + _root = articulationBodyRoot.gameObject; + } + transform.position = defaultTransform.position; + transform.rotation = defaultTransform.rotation; + LastIsSet = false; + } + public void OnStep(float timeDelta) + { + // get Center Of Mass velocity in f space + Vector3 newCOM; + // if Moocap, then get from anim2Ragdoll + if (_mapAnim2Ragdoll != null) + { + newCOM = _mapAnim2Ragdoll.LastCenterOfMassInWorldSpace; + var newHorizontalDirection = _mapAnim2Ragdoll.HorizontalDirection; + HorizontalDirection = newHorizontalDirection / 180f; + if (!LastIsSet) + { + LastCenterOfMassInWorldSpace = newCOM; + } + transform.position = newCOM; + transform.rotation = Quaternion.Euler(newHorizontalDirection); + CenterOfMassVelocity = _mapAnim2Ragdoll.CenterOfMassVelocity; + CenterOfMassVelocityMagnitude = _mapAnim2Ragdoll.CenterOfMassVelocityMagnitude; + CenterOfMassVelocityInRootSpace = transform.InverseTransformVector(CenterOfMassVelocity); + CenterOfMassVelocityMagnitudeInRootSpace = CenterOfMassVelocityInRootSpace.magnitude; + } + else + { + newCOM = GetCenterOfMass(); + var newHorizontalDirection = new Vector3(0f, _root.transform.eulerAngles.y, 0f); + HorizontalDirection = newHorizontalDirection / 180f; + if (!LastIsSet) + { + LastCenterOfMassInWorldSpace = newCOM; + } + transform.position = newCOM; + transform.rotation = Quaternion.Euler(newHorizontalDirection); + var velocity = newCOM - LastCenterOfMassInWorldSpace; + velocity /= timeDelta; + CenterOfMassVelocity = velocity; + CenterOfMassVelocityMagnitude = CenterOfMassVelocity.magnitude; + CenterOfMassVelocityInRootSpace = transform.InverseTransformVector(CenterOfMassVelocity); + CenterOfMassVelocityMagnitudeInRootSpace = CenterOfMassVelocityInRootSpace.magnitude; + } + LastCenterOfMassInWorldSpace = newCOM; + + // get Center Of Mass horizontal velocity in f space + var comHorizontalDirection = new Vector3(CenterOfMassVelocity.x, 0f, CenterOfMassVelocity.z); + CenterOfMassHorizontalVelocity = transform.InverseTransformVector(comHorizontalDirection); + CenterOfMassHorizontalVelocityMagnitude = CenterOfMassHorizontalVelocity.magnitude; + + // get Desired Center Of Mass horizontal velocity in f space + Vector3 desiredCom = _animationController.GetDesiredVelocity(); + DesiredCenterOfMassVelocity = transform.InverseTransformVector(desiredCom); + + // get Desired Center Of Mass horizontal velocity in f space + CenterOfMassVelocityDifference = DesiredCenterOfMassVelocity - CenterOfMassHorizontalVelocity; + + if (!LastIsSet) + { + LastRotation = transform.rotation; + } + AngualrVelocity = Utils.GetAngularVelocity(LastRotation, transform.rotation, timeDelta); + LastRotation = transform.rotation; + + TrackUsingColliders(timeDelta); + // TrackUsingJointsForTrackedColliders(timeDelta); + TrackUsingDof(timeDelta); + + LastIsSet = true; + } + + void TrackUsingJointsForTrackedColliders(float timeDelta) + { + // track in local space + for (int i = 0; i < _jointForTrackedColliders.Length; i++) + { + Transform joint = _jointForTrackedColliders[i].transform; + Vector3 worldPosition = joint.position; + Quaternion worldRotation = transform.rotation; + Vector3 localPosition = transform.InverseTransformPoint(worldPosition); + Quaternion localRotation = Utils.FromToRotation(transform.rotation, worldRotation); + if (!LastIsSet) + { + LastLocalPositions[i] = localPosition; + LastLocalRotations[i] = localRotation; + } + + Positions[i] = localPosition; + Rotations[i] = localRotation; + Velocities[i] = (localPosition - LastLocalPositions[i]) / timeDelta; + AngualrVelocities[i] = Utils.GetAngularVelocity(LastLocalRotations[i], localRotation, timeDelta); + LastLocalPositions[i] = localPosition; + LastLocalRotations[i] = localRotation; + } + } + void TrackUsingColliders(float timeDelta) + { + // track in local space + for (int i = 0; i < _collidersToTrack.Length; i++) + { + Vector3 c = Vector3.zero; + CapsuleCollider capsule = _collidersToTrack[i] as CapsuleCollider; + BoxCollider box = _collidersToTrack[i] as BoxCollider; + SphereCollider sphere = _collidersToTrack[i] as SphereCollider; + Bounds b = new Bounds(c, c); + if (capsule != null) + { + c = capsule.center; + var r = capsule.radius * 2; + var h = capsule.height; + h = Mathf.Max(r, h); // capsules height is clipped at r + if (capsule.direction == 0) + b = new Bounds(c, new Vector3(h, r, r)); + else if (capsule.direction == 1) + b = new Bounds(c, new Vector3(r, h, r)); + else if (capsule.direction == 2) + b = new Bounds(c, new Vector3(r, r, h)); + else throw new NotImplementedException(); + } + else if (box != null) + { + c = box.center; + b = new Bounds(c, box.size); + } + else if (sphere != null) + { + c = sphere.center; + var r = sphere.radius * 2; + b = new Bounds(c, new Vector3(r, r, r)); + } + else + throw new NotImplementedException(); + + Vector3 worldPosition = _collidersToTrack[i].transform.TransformPoint(c); + + Quaternion worldRotation = _collidersToTrack[i].transform.rotation; + Vector3 localPosition = transform.InverseTransformPoint(worldPosition); + Quaternion localRotation = Utils.FromToRotation(transform.rotation, worldRotation); + if (!LastIsSet) + { + LastLocalPositions[i] = localPosition; + LastLocalRotations[i] = localRotation; + } + + Positions[i] = localPosition; + Rotations[i] = localRotation; + Velocities[i] = (localPosition - LastLocalPositions[i]) / timeDelta; + AngualrVelocities[i] = Utils.GetAngularVelocity(LastLocalRotations[i], localRotation, timeDelta); + LastLocalPositions[i] = localPosition; + LastLocalRotations[i] = localRotation; + } + } + + void TrackUsingDof(float timeDelta) + { + // track in local space + int i = 0; + for (int j = 0; j < _jointForTrackedColliders.Length; j++) + { + var joint = _jointsToTrack[j]; + var reference = _articulationBodyJoints[j]; + Vector3 decomposedRotation = Utils.GetSwingTwist(joint.transform.localRotation); + if (reference.twistLock == ArticulationDofLock.LimitedMotion) + { + var drive = reference.xDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + var deg = decomposedRotation.x; + var pos = (deg - midpoint) / scale; + DofRotationInRad[i] = deg * Mathf.Deg2Rad; + DofRotationWithinRangeOfMotion[i++] = pos; + } + if (reference.swingYLock == ArticulationDofLock.LimitedMotion) + { + var drive = reference.yDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + var deg = decomposedRotation.y; + var pos = (deg - midpoint) / scale; + DofRotationInRad[i] = deg * Mathf.Deg2Rad; + DofRotationWithinRangeOfMotion[i++] = pos; + } + if (reference.swingZLock == ArticulationDofLock.LimitedMotion) + { + var drive = reference.zDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + var deg = decomposedRotation.z; + var pos = (deg - midpoint) / scale; + DofRotationInRad[i] = deg * Mathf.Deg2Rad; + DofRotationWithinRangeOfMotion[i++] = pos; + } + } + + for (i = 0; i < DofRotationInRad.Length; i++) + { + if (!LastIsSet) + { + DofLastRotationInRad[i] = DofRotationInRad[i]; + } + DofAngularVelocity[i] = DofRotationInRad[i] - DofLastRotationInRad[i]; + DofAngularVelocity[i] /= timeDelta; + DofLastRotationInRad[i] = DofRotationInRad[i]; + } + } + + public void OnReset() + { + OnStep(float.Epsilon); + LastIsSet = false; + } + Vector3 GetCenterOfMass() + { + var centerOfMass = Vector3.zero; + float totalMass = 0f; + foreach (ArticulationBody ab in _articulationBodyJoints) + { + centerOfMass += ab.worldCenterOfMass * ab.mass; + totalMass += ab.mass; + } + centerOfMass /= totalMass; + // centerOfMass -= _spawnableEnv.transform.position; + return centerOfMass; + } +} \ No newline at end of file diff --git a/Assets/MarathonController/Scripts/MarConObservationsStats.cs.meta b/Assets/MarathonController/Scripts/MarConObservationsStats.cs.meta new file mode 100644 index 0000000..13f058e --- /dev/null +++ b/Assets/MarathonController/Scripts/MarConObservationsStats.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cbb599f18ba7f4970aa9c0f7f9b87046 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/Muscles.cs b/Assets/MarathonController/Scripts/Muscles.cs new file mode 100644 index 0000000..6f76673 --- /dev/null +++ b/Assets/MarathonController/Scripts/Muscles.cs @@ -0,0 +1,702 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +using System; + +public class Muscles : MonoBehaviour +{ + + + + [SerializeField] + public MotorMode MotorUpdateMode; + + + + [System.Serializable] + public class MusclePower + { + public string Muscle; + public Vector3 PowerVector; + } + + + + [Header("Parameters for Legacy and PD:")] + public List MusclePowers; + + // public float MotorScale = 1f; + public float Stiffness = 50f; + public float Damping = 100f; + public float ForceLimit = float.MaxValue; + public float DampingRatio = 1.0f; + + + [Header("Extra Parameters for PD:")] + + public float NaturalFrequency = 40f; + public float ForceScale = .3f; + + + + + [Header("Parameters for StablePD:")] + public float KP_Stiffness = 50; + public float ForceScaleSPD = .3f; + + + + + + + [Header("Debug Collisions")] + [SerializeField] + bool skipCollisionSetup; + + + + [Header("Debug Values, Read Only")] + public bool updateDebugValues; + + + [SerializeField] + Vector3[] jointVelocityInReducedSpace; + List _motors; + + + + private class LastPos + { + public string name; + //public ArticulationReducedSpace pos; + public ArticulationReducedSpace vel; + } + + + List _lastPos = new List(); + + + public enum MotorMode { + + legacy, + PD, + stablePD, + force, + PDopenloop //this is a PD combined with the kinematic input processed as an openloop, see in DReCon + + } + + //for the PDopenloop case: + public List _referenceTransforms; + + + public delegate void MotorDelegate(ArticulationBody joint, Vector3 targetNormalizedRotation, float actionTimeDelta); + + public MotorDelegate UpdateMotor; + + //only used in PDopenloop + public void SetKinematicReference(MapAnim2Ragdoll kinematicRoot) + { + + _referenceTransforms = kinematicRoot._ragdollTransforms; + + + } + + + // Use this for initialization + void Start() + { + Setup(); + + _motors = GetComponentsInChildren() + .Where(x => x.jointType == ArticulationJointType.SphericalJoint) + .Where(x => !x.isRoot) + .Distinct() + .ToList(); + + foreach (ArticulationBody m in _motors) + { + LastPos l = new LastPos(); + + l.name = m.name; + //l.pos = m.jointPosition; + l.vel = m.jointVelocity; + + _lastPos.Add(l); + } + + + + + + if (updateDebugValues) + { + + + + jointVelocityInReducedSpace = new Vector3[_motors.Count]; + + + } + + + + + + + + switch (MotorUpdateMode) { + + case (MotorMode.force): + UpdateMotor = DirectForce; + break; + + case (MotorMode.PD): + UpdateMotor = UpdateMotorPDWithVelocity; + break; + + case (MotorMode.legacy): + UpdateMotor = LegacyUpdateMotor; + break; + + case (MotorMode.stablePD): + UpdateMotor = null; + + //UpdateMotor = StablePD; + //NOTE: this is not yet working, the implementaiton is in progress + + break; + + case (MotorMode.PDopenloop): + UpdateMotor = UpdateMotorPDopenloop; + break; + + + } + + + + + } + + // Update is called once per frame + void Update() + { + + if (updateDebugValues) { + + int i = 0; + foreach(ArticulationBody m in _motors) { + //DEBUG: to keep track of the values, and see if they seem reasonable + + + Vector3 temp = Utils.GetArticulationReducedSpaceInVector3(m.jointVelocity); + + jointVelocityInReducedSpace[i] = temp; + i++; + } + + + } + + + } + + void Setup() + { + + if (!skipCollisionSetup) + { + + // handle collision overlaps + IgnoreCollision("articulation:Spine2", new[] { "LeftArm", "RightArm" }); + IgnoreCollision("articulation:Hips", new[] { "RightUpLeg", "LeftUpLeg" }); + + IgnoreCollision("LeftForeArm", new[] { "LeftArm" }); + IgnoreCollision("RightForeArm", new[] { "RightArm" }); + IgnoreCollision("RightLeg", new[] { "RightUpLeg" }); + IgnoreCollision("LeftLeg", new[] { "LeftUpLeg" }); + + IgnoreCollision("RightLeg", new[] { "RightFoot" }); + IgnoreCollision("LeftLeg", new[] { "LeftFoot" }); + + } + + // + var joints = GetComponentsInChildren().ToList(); + foreach (var joint in joints) + joint.enablePreprocessing = false; + } + void IgnoreCollision(string first, string[] seconds) + { + foreach (var second in seconds) + { + IgnoreCollision(first, second); + } + } + void IgnoreCollision(string first, string second) + { + var rigidbodies = GetComponentsInChildren().ToList(); + var colliderOnes = rigidbodies.FirstOrDefault(x => x.name.Contains(first))?.GetComponents(); + var colliderTwos = rigidbodies.FirstOrDefault(x => x.name.Contains(second))?.GetComponents(); + if (colliderOnes == null || colliderTwos == null) + return; + foreach (var c1 in colliderOnes) + foreach (var c2 in colliderTwos) + Physics.IgnoreCollision(c1, c2); + } + + //this is a simple way to center the masses + public void CenterABMasses() + { + ArticulationBody[] abs = GetComponentsInChildren(); + foreach (ArticulationBody ab in abs) + { + if (!ab.isRoot) + { + Vector3 currentCoF = ab.centerOfMass; + + Vector3 newCoF = Vector3.zero; + //generally 1, sometimes 2: + foreach (Transform child in ab.transform) { + newCoF += child.localPosition; + + } + newCoF /= ab.transform.childCount; + + ArticulationBody ab2 = ab.GetComponentInChildren(); + + newCoF = (ab.transform.parent.localPosition + newCoF) / 2.0f; + ab.centerOfMass = newCoF; + Debug.Log("AB: " + ab.name + " old CoF: " + currentCoF + " new CoF: " + ab.centerOfMass); + } + } + + } + + + + private static Vector3 GetTargetVelocity(ArticulationBody joint, Vector3 targetNormalizedRotation, float timeDelta) + { + + Vector3 targetVelocity = new Vector3(0, 0, 0); + + Vector3 currentRotationValues = Utils.GetSwingTwist(joint.transform.localRotation); + + + Vector3 target = new Vector3(); + if (joint.twistLock == ArticulationDofLock.LimitedMotion) + { + var drive = joint.xDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + target.x = midpoint + (targetNormalizedRotation.x * scale); + + } + + if (joint.swingYLock == ArticulationDofLock.LimitedMotion) + { + var drive = joint.yDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + target.y = midpoint + (targetNormalizedRotation.y * scale); + + + } + + if (joint.swingZLock == ArticulationDofLock.LimitedMotion) + { + var drive = joint.zDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + target.z = midpoint + (targetNormalizedRotation.z * scale); + + } + + //this is how you calculate the angular velocity in MapAnim2Ragdoll + //Utils.GetAngularVelocity(cur, last, timeDelta) + + //Utils.GetArticulationReducedSpaceInVector3(joint.jointVelocity) + + + + targetVelocity = Utils.AngularVelocityInReducedCoordinates(Utils.GetSwingTwist(joint.transform.localRotation), target, timeDelta); + + targetVelocity = Vector3.ClampMagnitude(targetVelocity, joint.maxAngularVelocity); + + + return targetVelocity; + + + + } + + + void UpdateMotorPDWithVelocity(ArticulationBody joint, Vector3 targetNormalizedRotation, float actionTimeDelta) + { + + var m = joint.mass; + var d = DampingRatio; // d should be 0..1. + var n = NaturalFrequency; // n should be in the range 1..20 + var k = Mathf.Pow(n, 2) * m; + var c = d * (2 * Mathf.Sqrt(k * m)); + var stiffness = k; + var damping = c; + + + + Vector3 power = Vector3.zero; + try + { + power = MusclePowers.First(x => x.Muscle == joint.name).PowerVector; + + } + catch + { + Debug.Log("there is no muscle for joint " + joint.name); + + } + + classicPD(joint, targetNormalizedRotation, actionTimeDelta, power); + + } + + void classicPD(ArticulationBody joint, Vector3 targetNormalizedRotation, float actionTimeDelta, Vector3 power) { + + + var m = joint.mass; + var d = DampingRatio; // d should be 0..1. + var n = NaturalFrequency; // n should be in the range 1..20 + var k = Mathf.Pow(n, 2) * m; + var c = d * (2 * Mathf.Sqrt(k * m)); + var stiffness = k; + var damping = c; + + + //why do you never set up the targetVelocity? + // F = stiffness * (currentPosition - target) - damping * (currentVelocity - targetVelocity) + + + Vector3 targetVel = GetTargetVelocity(joint, targetNormalizedRotation, actionTimeDelta); + + + + if (joint.twistLock == ArticulationDofLock.LimitedMotion) + { + var drive = joint.xDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + var target = midpoint + (targetNormalizedRotation.x * scale); + drive.target = target; + + drive.targetVelocity = targetVel.x; + + + drive.stiffness = stiffness; + drive.damping = damping; + drive.forceLimit = power.x * ForceScale; + joint.xDrive = drive; + } + + if (joint.swingYLock == ArticulationDofLock.LimitedMotion) + { + var drive = joint.yDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + var target = midpoint + (targetNormalizedRotation.y * scale); + drive.target = target; + // drive.targetVelocity = (target - currentRotationValues.y) / (_decisionPeriod * Time.fixedDeltaTime); + drive.targetVelocity = targetVel.y; + + + drive.stiffness = stiffness; + drive.damping = damping; + drive.forceLimit = power.y * ForceScale; + joint.yDrive = drive; + } + + if (joint.swingZLock == ArticulationDofLock.LimitedMotion) + { + var drive = joint.zDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + var target = midpoint + (targetNormalizedRotation.z * scale); + + drive.target = target; + //drive.targetVelocity = (target - currentRotationValues.z) / (_decisionPeriod * Time.fixedDeltaTime); + drive.targetVelocity = targetVel.z; + + drive.stiffness = stiffness; + drive.damping = damping; + drive.forceLimit = power.z * ForceScale; + joint.zDrive = drive; + } + + + + } + + + + void UpdateMotorPDopenloop(ArticulationBody joint, Vector3 targetRot, float actionTimeDelta) + { + + + Vector3 refRot = Mathf.Deg2Rad * Utils.GetSwingTwist( _referenceTransforms.First(x => x.name == joint.name).localRotation); + + Vector3 power = 40* Vector3.one; + + + Vector3 targetNormalizedRotation = refRot + targetRot; + + //From the DReCon paper: (not implemented) + // Velocity basedconstraints are used to simulate PD servo motors at the joints, + // withmotor constraint torques clamped to 200 Nm.All coeicients of fric-tion + // are given a value of 1, except rolling friction which is disabled. + + + classicPD(joint, targetNormalizedRotation, actionTimeDelta, power); + } + + + + + + + void LegacyUpdateMotor(ArticulationBody joint, Vector3 targetNormalizedRotation, float actionTimeDelta) + { + + + + Vector3 power = Vector3.zero; + try + { + power = MusclePowers.First(x => x.Muscle == joint.name).PowerVector; + + } + catch + { + Debug.Log("there is no muscle for joint " + joint.name); + + } + + + + power *= Stiffness; + float damping = Damping; + float forceLimit = ForceLimit; + + if (joint.twistLock == ArticulationDofLock.LimitedMotion) + { + var drive = joint.xDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + var target = midpoint + (targetNormalizedRotation.x * scale); + drive.target = target; + drive.stiffness = power.x; + drive.damping = damping; + drive.forceLimit = forceLimit; + joint.xDrive = drive; + } + + if (joint.swingYLock == ArticulationDofLock.LimitedMotion) + { + var drive = joint.yDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + var target = midpoint + (targetNormalizedRotation.y * scale); + drive.target = target; + drive.stiffness = power.y; + drive.damping = damping; + drive.forceLimit = forceLimit; + joint.yDrive = drive; + } + + if (joint.swingZLock == ArticulationDofLock.LimitedMotion) + { + var drive = joint.zDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + var target = midpoint + (targetNormalizedRotation.z * scale); + drive.target = target; + drive.stiffness = power.z; + drive.damping = damping; + drive.forceLimit = forceLimit; + joint.zDrive = drive; + } + } + + + + //NOT TESTED + void DirectForce(ArticulationBody joint, Vector3 targetNormalizedRotation, float actionTimeDelta) + { + + + Vector3 result = 0.05f * targetNormalizedRotation; + joint.AddRelativeTorque(result); + + } + + + + static ArticulationReducedSpace AccelerationInReducedSpace(ArticulationReducedSpace currentVel, ArticulationReducedSpace lastVel, float deltaTime) + { + ArticulationReducedSpace result = new ArticulationReducedSpace(); + + + result.dofCount = currentVel.dofCount; + + for(int i = 0; i< result.dofCount; i++) + result[i] = (currentVel[i] - lastVel[i]) / deltaTime; + + return result; + + } + + + void StablePD(ArticulationBody joint, Vector3 input, float actionTimeDelta) + { + + + Vector3 targetNormalizedRotation = input; + + + //A PD controller uses: + // F = stiffness * (currentPosition - target) - damping * (currentVelocity - targetVelocity) + + //A stable PD controller, instead: + //f = - Kp (pos + dt* v -targetPos)- Kd(v + dt*a ) + + //kd towards infinity + //kd = kp * dt + //Kd >= Kp * dt to ensure stability + + //example in video: KP = 30.000, KD 600, update 1/60 + + + //float Kp = 30000; + + + LastPos lastPos = null; + try + { + lastPos = _lastPos.First(x => x.name.Equals(joint.name)); + } + + catch + { + Debug.Log("there is no lastPos for joint " + joint.name); + + } + + + + + + float Kp = KP_Stiffness; + + + float Kd = Kp * actionTimeDelta; + + //Vector3 currentSwingTwist = Utils.GetSwingTwist(joint.transform.localRotation); + //Vector3 targetVelocity = Utils.AngularVelocityInReducedCoordinates(currentSwingTwist, targetNormalizedRotation, actionTimeDelta); + //Vector3 currentVelocity = Utils.GetArticulationReducedSpaceInVector3(joint.jointVelocity); + // Vector3 targetAcceleration = Utils.AngularVelocityInReducedCoordinates(currentVelocity, targetVelocity, actionTimeDelta); + + + + ArticulationReducedSpace forceInReducedSpace = new ArticulationReducedSpace(); + forceInReducedSpace.dofCount = joint.dofCount; + + ArticulationReducedSpace acceleration = AccelerationInReducedSpace(joint.jointVelocity, lastPos.vel, actionTimeDelta); + + + + + if (joint.twistLock == ArticulationDofLock.LimitedMotion) { + //f = - Kp (pos + dt* v -targetPos)- Kd(v + dt*a ) + + //forceInReducedSpace[0] = -Kp * (currentSwingTwist.x + actionTimeDelta * currentVelocity.x - targetNormalizedRotation.x) - Kd * (currentVelocity.x + actionTimeDelta * targetAcceleration.x); + var drive = joint.xDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + var target = midpoint + (targetNormalizedRotation.x * scale); + + + + + + forceInReducedSpace[0] = -Kp * (joint.jointPosition[0] + actionTimeDelta * joint.jointVelocity[0] - target) - Kd * (joint.jointVelocity[0] + actionTimeDelta * acceleration[0]); + + forceInReducedSpace[0] *= ForceScaleSPD; + + } + + if (joint.swingYLock == ArticulationDofLock.LimitedMotion) + { + //f = - Kp (pos + dt* v -targetPos)- Kd(v + dt*a ) + // forceInReducedSpace[1] = -Kp * (currentSwingTwist.y + actionTimeDelta * currentVelocity.y - targetNormalizedRotation.y) - Kd * (currentVelocity.y + actionTimeDelta * targetAcceleration.y); + + var drive = joint.yDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + var target = midpoint + (targetNormalizedRotation.y * scale); + + + if(joint.dofCount == 1) { + // forceInReducedSpace[0] = -Kp * (Mathf.Deg2Rad * joint.jointPosition[0] + actionTimeDelta * Mathf.Deg2Rad * joint.jointVelocity[0] - target) - Kd * (Mathf.Deg2Rad * joint.jointVelocity[0] + actionTimeDelta * Mathf.Deg2Rad * acceleration[0]); + // forceInReducedSpace[0] *= ForceScaleSPD; + + + } + else { + forceInReducedSpace[1] = -Kp * (Mathf.Deg2Rad * joint.jointPosition[1] + actionTimeDelta * Mathf.Deg2Rad * joint.jointVelocity[1] - target) - Kd * (Mathf.Deg2Rad * joint.jointVelocity[1] + actionTimeDelta * Mathf.Deg2Rad * acceleration[1]); + forceInReducedSpace[1] *= ForceScaleSPD; + } + + + } + + if (joint.swingZLock == ArticulationDofLock.LimitedMotion) + { + //f = - Kp (pos + dt* v -targetPos)- Kd(v + dt*a ) + // forceInReducedSpace[2] = -Kp * (currentSwingTwist.z + actionTimeDelta * currentVelocity.z - targetNormalizedRotation.z) - Kd * (currentVelocity.z + actionTimeDelta * targetAcceleration.z); + + var drive = joint.zDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + var target = midpoint + (targetNormalizedRotation.z * scale); + + + forceInReducedSpace[2] = -Kp * (Mathf.Deg2Rad * joint.jointPosition[2] + actionTimeDelta * Mathf.Deg2Rad * joint.jointVelocity[2] - target) - Kd * (Mathf.Deg2Rad * joint.jointVelocity[2] + actionTimeDelta * Mathf.Deg2Rad * acceleration[2]); + + forceInReducedSpace[2] *= ForceScaleSPD; + + } + + // Vector3 result = Utils.GetArticulationReducedSpaceInVector3(forceInReducedSpace); + Vector3 result =KP_Stiffness* input; + + if (joint.dofCount < 3) + { + result = Vector3.zero; + } + + joint.AddRelativeTorque(result); + //joint.AddRelativeTorque(Vector3.zero); + + // joint.jointForce = forceInReducedSpace; + + + lastPos.vel = joint.jointVelocity; + //lastPos.pos = joint.jointPosition; + + } + + + +} diff --git a/Assets/MarathonController/Scripts/Muscles.cs.meta b/Assets/MarathonController/Scripts/Muscles.cs.meta new file mode 100644 index 0000000..cb538d3 --- /dev/null +++ b/Assets/MarathonController/Scripts/Muscles.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 652394cd365ee4cd0b8f8318777d8161 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/Observations2Learn.cs b/Assets/MarathonController/Scripts/Observations2Learn.cs new file mode 100644 index 0000000..f74dbbe --- /dev/null +++ b/Assets/MarathonController/Scripts/Observations2Learn.cs @@ -0,0 +1,344 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using Unity.MLAgents; +using UnityEngine; +using ManyWorlds; +using UnityEngine.Assertions; + +public class Observations2Learn : MonoBehaviour +{ + [Header("Observations")] + + [Tooltip("Kinematic character center of mass velocity, Vector3")] + public Vector3 MocapCOMVelocity; + + [Tooltip("RagDoll character center of mass velocity, Vector3")] + public Vector3 RagDollCOMVelocity; + + [Tooltip("User-input desired horizontal CM velocity. Vector2")] + public Vector2 InputDesiredHorizontalVelocity; + + [Tooltip("User-input requests jump, bool")] + public bool InputJump; + + [Tooltip("User-input requests backflip, bool")] + public bool InputBackflip; + + [Tooltip("Difference between RagDoll character horizontal CM velocity and user-input desired horizontal CM velocity. Vector2")] + public Vector2 HorizontalVelocityDifference; + + [Tooltip("Positions and velocities for subset of bodies")] + public List BodyPartDifferenceStats; + public List MocapBodyStats; + public List RagDollBodyStats; + + [Tooltip("Smoothed actions produced in the previous step of the policy are collected in t −1")] + public float[] PreviousActions; + + //[Tooltip("RagDoll ArticulationBody joint positions in reduced space")] + //public float[] RagDollJointPositions; +// [Tooltip("RagDoll ArticulationBody joint velocity in reduced space")] +// public float[] RagDollJointVelocities; + + + // [Tooltip("RagDoll ArticulationBody joint accelerations in reduced space")] + // public float[] RagDollJointAccelerations; + [Tooltip("RagDoll ArticulationBody joint forces in reduced space")] + public float[] RagDollJointForces; + + + [Tooltip("Macap: ave of joint angular velocity")] + public float EnergyAngularMocap; + [Tooltip("RagDoll: ave of joint angular velocity")] + public float EnergyAngularRagDoll; + [Tooltip("RagDoll-Macap: ave of joint angular velocity")] + public float EnergyDifferenceAngular; + + [Tooltip("Macap: ave of joint velocity in local space")] + public float EnergyPositionalMocap; + [Tooltip("RagDoll: ave of joint velocity in local space")] + public float EnergyPositionalRagDoll; + [Tooltip("RagDoll-Macap: ave of joint velocity in local space")] + public float EnergyDifferencePositional; + + + [Header("Gizmos")] + public bool VelocityInWorldSpace = true; + public bool PositionInWorldSpace = true; + + + public string targetedRootName = "articulation:Hips"; + + + + InputController _inputController; + SpawnableEnv _spawnableEnv; + ObservationStats _mocapBodyStats; + ObservationStats _ragDollBodyStats; + bool _hasLazyInitialized; + List _motors; + + public void OnAgentInitialize() + { + Assert.IsFalse(_hasLazyInitialized); + _hasLazyInitialized = true; + + _spawnableEnv = GetComponentInParent(); + _inputController = _spawnableEnv.GetComponentInChildren(); + + _mocapBodyStats = new GameObject("MocapDReConObservationStats").AddComponent(); + _mocapBodyStats.setRootName(targetedRootName); + + + + _mocapBodyStats.ObjectToTrack = _spawnableEnv.GetComponentInChildren(); + + _mocapBodyStats.transform.SetParent(_spawnableEnv.transform); + _mocapBodyStats.OnAgentInitialize(_mocapBodyStats.ObjectToTrack.transform); + + _ragDollBodyStats = new GameObject("RagDollDReConObservationStats").AddComponent(); + _ragDollBodyStats.setRootName(targetedRootName); + + _ragDollBodyStats.ObjectToTrack = this; + _ragDollBodyStats.transform.SetParent(_spawnableEnv.transform); + _ragDollBodyStats.OnAgentInitialize(transform); + + BodyPartDifferenceStats = _mocapBodyStats.Stats + .Select(x => new BodyPartDifferenceStats { Name = x.Name }) + .ToList(); + + int numJoints = 0; + _motors = GetComponentsInChildren() + .Where(x => x.jointType == ArticulationJointType.SphericalJoint) + .Where(x => !x.isRoot) + .Distinct() + .ToList(); + foreach (var m in _motors) + { + if (m.twistLock == ArticulationDofLock.LimitedMotion) + numJoints++; + if (m.swingYLock == ArticulationDofLock.LimitedMotion) + numJoints++; + if (m.swingZLock == ArticulationDofLock.LimitedMotion) + numJoints++; + } + PreviousActions = Enumerable.Range(0,numJoints).Select(x=>0f).ToArray(); + //RagDollJointPositions = Enumerable.Range(0,numJoints).Select(x=>0f).ToArray(); + // RagDollJointVelocities = Enumerable.Range(0,numJoints).Select(x=>0f).ToArray(); + // RagDollJointAccelerations = Enumerable.Range(0,numJoints).Select(x=>0f).ToArray(); + RagDollJointForces = Enumerable.Range(0,numJoints).Select(x=>0f).ToArray(); + } + + public List EstimateBodyPartsForObservation() + { + var colliders = GetComponentsInChildren() + .Where(x => x.enabled) + .Where(x => !x.isTrigger) + .Where(x=> { + var ignoreCollider = x.GetComponent(); + if (ignoreCollider == null) + return true; + return !ignoreCollider.enabled;}) + .Distinct() + .ToList(); + return colliders; + } + public List EstimateBodyPartsForReward() + { + var colliders = GetComponentsInChildren() + .Where(x => x.enabled) + .Where(x => !x.isTrigger) + .Where(x=> { + var ignoreCollider = x.GetComponent(); + if (ignoreCollider == null) + return true; + return !ignoreCollider.enabled;}) + .Distinct() + .ToList(); + return colliders; + } + + + public void OnStep(float timeDelta) + { + Assert.IsTrue(_hasLazyInitialized); + _mocapBodyStats.SetStatusForStep(timeDelta); + _ragDollBodyStats.SetStatusForStep(timeDelta); + UpdateObservations(timeDelta); + } + public void OnReset() + { + Assert.IsTrue(_hasLazyInitialized); + _mocapBodyStats.OnReset(); + _ragDollBodyStats.OnReset(); + _ragDollBodyStats.transform.position = _mocapBodyStats.transform.position; + _ragDollBodyStats.transform.rotation = _mocapBodyStats.transform.rotation; + var timeDelta = float.MinValue; + UpdateObservations(timeDelta); + } + + public void UpdateObservations(float timeDelta) + { + + MocapCOMVelocity = _mocapBodyStats.CenterOfMassVelocity; + RagDollCOMVelocity = _ragDollBodyStats.CenterOfMassVelocity; + InputDesiredHorizontalVelocity = new Vector2( + _ragDollBodyStats.DesiredCenterOfMassVelocity.x, + _ragDollBodyStats.DesiredCenterOfMassVelocity.z); + if (_inputController != null) + { + InputJump = _inputController.Jump; + InputBackflip = _inputController.Backflip; + } + HorizontalVelocityDifference = new Vector2( + _ragDollBodyStats.CenterOfMassVelocityDifference.x, + _ragDollBodyStats.CenterOfMassVelocityDifference.z); + + MocapBodyStats = _mocapBodyStats.Stats.ToList(); + RagDollBodyStats = MocapBodyStats + .Select(x => _ragDollBodyStats.Stats.First(y => y.Name == x.Name)) + .ToList(); + // BodyPartStats = + foreach (var differenceStats in BodyPartDifferenceStats) + { + var mocapStats = _mocapBodyStats.Stats.First(x => x.Name == differenceStats.Name); + var ragDollStats = _ragDollBodyStats.Stats.First(x => x.Name == differenceStats.Name); + + differenceStats.Position = mocapStats.Position - ragDollStats.Position; + differenceStats.Velocity = mocapStats.Velocity - ragDollStats.Velocity; + differenceStats.AngualrVelocity = mocapStats.AngularVelocity - ragDollStats.AngularVelocity; + differenceStats.Rotation = ObservationStats.GetAngularVelocity(mocapStats.Rotation, ragDollStats.Rotation, timeDelta); + } + int i = 0; + foreach (var m in _motors) + { + int j = 0; + if (m.twistLock == ArticulationDofLock.LimitedMotion) + { + //RagDollJointPositions[i] = m.jointPosition[j]; + // RagDollJointVelocities[i] = m.jointVelocity[j]; + // RagDollJointAccelerations[i] = m.jointAcceleration[j]; + RagDollJointForces[i++] = m.jointForce[j++]; + } + if (m.swingYLock == ArticulationDofLock.LimitedMotion) + { + // RagDollJointPositions[i] = m.jointPosition[j]; + // RagDollJointVelocities[i] = m.jointVelocity[j]; + // RagDollJointAccelerations[i] = m.jointAcceleration[j]; + RagDollJointForces[i++] = m.jointForce[j++]; + } + if (m.swingZLock == ArticulationDofLock.LimitedMotion) + { + // RagDollJointPositions[i] = m.jointPosition[j]; + // RagDollJointVelocities[i] = m.jointVelocity[j]; + // RagDollJointAccelerations[i] = m.jointAcceleration[j]; + RagDollJointForces[i++] = m.jointForce[j++]; + } + } + EnergyAngularMocap = MocapBodyStats + .Select(x=>x.AngularVelocity.magnitude) + .Average(); + EnergyAngularRagDoll = RagDollBodyStats + .Select(x=>x.AngularVelocity.magnitude) + .Average(); + EnergyDifferenceAngular = RagDollBodyStats + .Zip(MocapBodyStats, (x,y) => x.AngularVelocity.magnitude-y.AngularVelocity.magnitude) + .Average(); + EnergyPositionalMocap = MocapBodyStats + .Select(x=>x.Velocity.magnitude) + .Average(); + EnergyPositionalRagDoll = RagDollBodyStats + .Select(x=>x.Velocity.magnitude) + .Average(); + EnergyDifferencePositional = RagDollBodyStats + .Zip(MocapBodyStats, (x,y) => x.Velocity.magnitude-y.Velocity.magnitude) + .Average(); + + } + public Transform GetRagDollCOM() + { + return _ragDollBodyStats.transform; + } + public Vector3 GetMocapCOMVelocityInWorldSpace() + { + var velocity = _mocapBodyStats.CenterOfMassVelocity; + var velocityInWorldSpace = _mocapBodyStats.transform.TransformVector(velocity); + return velocityInWorldSpace; + } + void OnDrawGizmos() + { + if (_mocapBodyStats == null) + return; + // MocapCOMVelocity + Vector3 pos = new Vector3(transform.position.x, .3f, transform.position.z); + Vector3 vector = MocapCOMVelocity; + if (VelocityInWorldSpace) + vector = _mocapBodyStats.transform.TransformVector(vector); + DrawArrow(pos, vector, Color.grey); + + // RagDollCOMVelocity; + vector = RagDollCOMVelocity; + if (VelocityInWorldSpace) + vector = _ragDollBodyStats.transform.TransformVector(vector); + DrawArrow(pos, vector, Color.blue); + Vector3 actualPos = pos + vector; + + // InputDesiredHorizontalVelocity; + vector = new Vector3(InputDesiredHorizontalVelocity.x, 0f, InputDesiredHorizontalVelocity.y); + if (VelocityInWorldSpace) + vector = _ragDollBodyStats.transform.TransformVector(vector); + DrawArrow(pos, vector, Color.green); + + // HorizontalVelocityDifference; + vector = new Vector3(HorizontalVelocityDifference.x, 0f, HorizontalVelocityDifference.y); + if (VelocityInWorldSpace) + vector = _ragDollBodyStats.transform.TransformVector(vector); + DrawArrow(actualPos, vector, Color.red); + + for (int i = 0; i < RagDollBodyStats.Count; i++) + { + var stat = RagDollBodyStats[i]; + var differenceStat = BodyPartDifferenceStats[i]; + pos = stat.Position; + vector = stat.Velocity; + if (PositionInWorldSpace) + pos = _ragDollBodyStats.transform.TransformPoint(pos); + if (VelocityInWorldSpace) + vector = _ragDollBodyStats.transform.TransformVector(vector); + DrawArrow(pos, vector, Color.cyan); + Vector3 velocityPos = pos + vector; + + pos = stat.Position; + vector = differenceStat.Position; + if (PositionInWorldSpace) + pos = _ragDollBodyStats.transform.TransformPoint(pos); + if (VelocityInWorldSpace) + vector = _ragDollBodyStats.transform.TransformVector(vector); + Gizmos.color = Color.magenta; + Gizmos.DrawRay(pos, vector); + Vector3 differencePos = pos + vector; + + vector = differenceStat.Velocity; + if (VelocityInWorldSpace) + vector = _ragDollBodyStats.transform.TransformVector(vector); + DrawArrow(velocityPos, vector, Color.red); + } + + } + void DrawArrow(Vector3 start, Vector3 vector, Color color) + { + float headSize = 0.25f; + float headAngle = 20.0f; + Gizmos.color = color; + Gizmos.DrawRay(start, vector); + + if (vector.magnitude > 0f) + { + Vector3 right = Quaternion.LookRotation(vector) * Quaternion.Euler(0, 180 + headAngle, 0) * new Vector3(0, 0, 1); + Vector3 left = Quaternion.LookRotation(vector) * Quaternion.Euler(0, 180 - headAngle, 0) * new Vector3(0, 0, 1); + Gizmos.DrawRay(start + vector, right * headSize); + Gizmos.DrawRay(start + vector, left * headSize); + } + } +} diff --git a/Assets/MarathonController/Scripts/Observations2Learn.cs.meta b/Assets/MarathonController/Scripts/Observations2Learn.cs.meta new file mode 100644 index 0000000..2c1e8cd --- /dev/null +++ b/Assets/MarathonController/Scripts/Observations2Learn.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ee2847361b53424aab5705f58c521d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/ObservationsStats.cs b/Assets/MarathonController/Scripts/ObservationsStats.cs new file mode 100644 index 0000000..953292f --- /dev/null +++ b/Assets/MarathonController/Scripts/ObservationsStats.cs @@ -0,0 +1,347 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using Unity.MLAgents; +using UnityEngine; +using ManyWorlds; +using UnityEngine.Assertions; + +public class ObservationStats : MonoBehaviour +{ + [System.Serializable] + public class Stat + { + public string Name; + public Vector3 Position; + public Quaternion Rotation; + public Vector3 Velocity; + public Vector3 AngularVelocity; + [HideInInspector] + public Vector3 LastLocalPosition; + [HideInInspector] + public Quaternion LastLocalRotation; + [HideInInspector] + public bool LastIsSet; + } + + public MonoBehaviour ObjectToTrack; + + [Header("Anchor stats")] + public Vector3 HorizontalDirection; // Normalized vector in direction of travel (assume right angle to floor) + // public Vector3 CenterOfMassInWorldSpace; + public Vector3 AngualrVelocity; + + [Header("Stats, relative to HorizontalDirection & Center Of Mass")] + public Vector3 CenterOfMassVelocity; + public Vector3 CenterOfMassHorizontalVelocity; + public float CenterOfMassVelocityMagnitude; + public Vector3 CenterOfMassVelocityInRootSpace; + public float CenterOfMassVelocityMagnitudeInRootSpace; + public float CenterOfMassHorizontalVelocityMagnitude; + public Vector3 DesiredCenterOfMassVelocity; + public Vector3 CenterOfMassVelocityDifference; + public List Stats; + + // [Header("... for debugging")] + [Header("Gizmos")] + public bool VelocityInWorldSpace = true; + public bool HorizontalVelocity = true; + + [HideInInspector] + public Vector3 LastCenterOfMassInWorldSpace; + [HideInInspector] + public Quaternion LastRotation; + [HideInInspector] + public bool LastIsSet; + + + SpawnableEnv _spawnableEnv; + List _bodyParts; + internal List _rigidbodyParts; + internal List _articulationBodyParts; + GameObject _root; + IAnimationController _animationController; + bool _hasLazyInitialized; + MapAnim2Ragdoll _mapAnim2Ragdoll; + + string rootName = "articulation:Hips"; + + public void setRootName(string s) + { + rootName = s; + + } + + public void OnAgentInitialize(Transform defaultTransform) + { + Assert.IsFalse(_hasLazyInitialized); + _hasLazyInitialized = true; + + _mapAnim2Ragdoll = defaultTransform.GetComponent(); + _spawnableEnv = GetComponentInParent(); + _animationController = _spawnableEnv.GetComponentInChildren(); + _rigidbodyParts = ObjectToTrack.GetComponentsInChildren().ToList(); + _articulationBodyParts = ObjectToTrack.GetComponentsInChildren().ToList(); + + if (_rigidbodyParts?.Count > 0) + _bodyParts = _rigidbodyParts + .SelectMany(x=>x.GetComponentsInChildren()) + .Distinct() + .ToList(); + else + _bodyParts = _articulationBodyParts + .SelectMany(x=>x.GetComponentsInChildren()) + .Distinct() + .ToList(); + + + _bodyParts = _bodyParts + .Where(x => x.enabled) + .Where(x => !x.isTrigger) + .Where(x=> { + var ignoreCollider = x.GetComponent(); + if (ignoreCollider == null) + return true; + return !ignoreCollider.enabled;}) + .Distinct() + .ToList(); + + + + Stats = _bodyParts + .Select(x => new Stat { Name = x.name }) + .ToList(); + + //TODO: this is quite sketchy, we should have a better way to deal with this + if (_root == null) + { + // Debug.Log("in game object: " + name + " my rootname is: " + rootName); + if (_rigidbodyParts?.Count > 0) + _root = _rigidbodyParts.First(x => x.name == rootName).gameObject; + else + _root = _articulationBodyParts.First(x => x.name == rootName).gameObject; + } + transform.position = defaultTransform.position; + transform.rotation = defaultTransform.rotation; + } + + public void OnReset() + { + Assert.IsTrue(_hasLazyInitialized); + ResetStatus(); + LastIsSet = false; + } + void ResetStatus() + { + LastIsSet = false; + var timeDelta = float.MinValue; + SetStatusForStep(timeDelta); + } + + + // Return rotation from one rotation to another + public static Quaternion FromToRotation(Quaternion from, Quaternion to) + { + if (to == from) return Quaternion.identity; + + return to * Quaternion.Inverse(from); + } + + // Adjust the value of an angle to lie within [-pi, +pi]. + public static float NormalizedAngle(float angle) + { + if (angle < 180) + { + return angle * Mathf.Deg2Rad; + } + return (angle - 360) * Mathf.Deg2Rad; + } + + // Calculate rotation between two rotations in radians. Adjusts the value to lie within [-pi, +pi]. + public static Vector3 NormalizedEulerAngles(Vector3 eulerAngles) + { + var x = NormalizedAngle(eulerAngles.x); + var y = NormalizedAngle(eulerAngles.y); + var z = NormalizedAngle(eulerAngles.z); + return new Vector3(x, y, z); + } + + // Find angular velocity. The delta rotation is converted to radians within [-pi, +pi]. + public static Vector3 GetAngularVelocity(Quaternion from, Quaternion to, float timeDelta) + { + var rotationVelocity = FromToRotation(from, to); + var angularVelocity = NormalizedEulerAngles(rotationVelocity.eulerAngles) / timeDelta; + return angularVelocity; + } + + public void SetStatusForStep(float timeDelta) + { + // get Center Of Mass velocity in f space + Vector3 newCOM; + // if Moocap, then get from anim2Ragdoll + if (_mapAnim2Ragdoll != null) + { + newCOM = _mapAnim2Ragdoll.LastCenterOfMassInWorldSpace; + var newHorizontalDirection = _mapAnim2Ragdoll.HorizontalDirection; + HorizontalDirection = newHorizontalDirection / 180f; + if (!LastIsSet) + { + LastCenterOfMassInWorldSpace = newCOM; + } + transform.position = newCOM; + transform.rotation = Quaternion.Euler(newHorizontalDirection); + CenterOfMassVelocity = _mapAnim2Ragdoll.CenterOfMassVelocity; + CenterOfMassVelocityMagnitude = _mapAnim2Ragdoll.CenterOfMassVelocityMagnitude; + CenterOfMassVelocityInRootSpace = transform.InverseTransformVector(CenterOfMassVelocity); + CenterOfMassVelocityMagnitudeInRootSpace = CenterOfMassVelocityInRootSpace.magnitude; + } + else + { + newCOM = GetCenterOfMass(); + var newHorizontalDirection = new Vector3(0f, _root.transform.eulerAngles.y, 0f); + HorizontalDirection = newHorizontalDirection / 180f; + if (!LastIsSet) + { + LastCenterOfMassInWorldSpace = newCOM; + } + transform.position = newCOM; + transform.rotation = Quaternion.Euler(newHorizontalDirection); + var velocity = newCOM - LastCenterOfMassInWorldSpace; + velocity /= timeDelta; + CenterOfMassVelocity = velocity; + CenterOfMassVelocityMagnitude = CenterOfMassVelocity.magnitude; + CenterOfMassVelocityInRootSpace = transform.InverseTransformVector(CenterOfMassVelocity); + CenterOfMassVelocityMagnitudeInRootSpace = CenterOfMassVelocityInRootSpace.magnitude; + } + LastCenterOfMassInWorldSpace = newCOM; + + // get Center Of Mass horizontal velocity in f space + var comHorizontalDirection = new Vector3(CenterOfMassVelocity.x, 0f, CenterOfMassVelocity.z); + CenterOfMassHorizontalVelocity = transform.InverseTransformVector(comHorizontalDirection); + CenterOfMassHorizontalVelocityMagnitude = CenterOfMassHorizontalVelocity.magnitude; + + // get Desired Center Of Mass horizontal velocity in f space + Vector3 desiredCom = _animationController.GetDesiredVelocity(); + DesiredCenterOfMassVelocity = transform.InverseTransformVector(desiredCom); + + // get Desired Center Of Mass horizontal velocity in f space + CenterOfMassVelocityDifference = DesiredCenterOfMassVelocity - CenterOfMassHorizontalVelocity; + + if (!LastIsSet) + { + LastRotation = transform.rotation; + } + AngualrVelocity = GetAngularVelocity(LastRotation, transform.rotation, timeDelta); + LastRotation = transform.rotation; + + // get bodyParts stats in local space + foreach (var bodyPart in _bodyParts) + { + Stat bodyPartStat = Stats.First(x => x.Name == bodyPart.name); + + Vector3 c = Vector3.zero; + CapsuleCollider capsule = bodyPart as CapsuleCollider; + BoxCollider box = bodyPart as BoxCollider; + SphereCollider sphere = bodyPart as SphereCollider; + if (capsule != null) + c = capsule.center; + else if (box != null) + c = box.center; + else if (sphere != null) + c = sphere.center; + Vector3 worldPosition = bodyPart.transform.TransformPoint(c); + + Quaternion worldRotation = bodyPart.transform.rotation; + Vector3 localPosition = transform.InverseTransformPoint(worldPosition); + Quaternion localRotation = FromToRotation(transform.rotation, worldRotation); + if (!bodyPartStat.LastIsSet || !LastIsSet) + { + bodyPartStat.LastLocalPosition = localPosition; + bodyPartStat.LastLocalRotation = localRotation; + } + + bodyPartStat.Position = localPosition; + bodyPartStat.Rotation = localRotation; + bodyPartStat.Velocity = (localPosition - bodyPartStat.LastLocalPosition) / timeDelta; + bodyPartStat.AngularVelocity = GetAngularVelocity(bodyPartStat.LastLocalRotation, localRotation, timeDelta); + bodyPartStat.LastLocalPosition = localPosition; + bodyPartStat.LastLocalRotation = localRotation; + bodyPartStat.LastIsSet = true; + } + LastIsSet = true; + } + + Vector3 GetCenterOfMass() + { + var centerOfMass = Vector3.zero; + float totalMass = 0f; + foreach (ArticulationBody ab in _articulationBodyParts) + { + centerOfMass += ab.worldCenterOfMass * ab.mass; + totalMass += ab.mass; + } + centerOfMass /= totalMass; + // centerOfMass -= _spawnableEnv.transform.position; + return centerOfMass; + } + + void OnDrawGizmosSelected() + { + if (_bodyParts == null || _bodyParts.Count ==0) + return; + // draw arrow for desired input velocity + // Vector3 pos = new Vector3(transform.position.x, transform.position.y, transform.position.z); + Vector3 pos = new Vector3(transform.position.x, .3f, transform.position.z); + Vector3 vector = DesiredCenterOfMassVelocity; + if (VelocityInWorldSpace) + vector = transform.TransformVector(vector); + DrawArrow(pos, vector, Color.green); + Vector3 desiredInputPos = pos + vector; + + if (HorizontalVelocity) + { + // arrow for actual velocity + vector = CenterOfMassHorizontalVelocity; + if (VelocityInWorldSpace) + vector = transform.TransformVector(vector); + DrawArrow(pos, vector, Color.blue); + Vector3 actualPos = pos + vector; + + // arrow for actual velocity difference + vector = CenterOfMassVelocityDifference; + if (VelocityInWorldSpace) + vector = transform.TransformVector(vector); + DrawArrow(actualPos, vector, Color.red); + } + else + { + vector = CenterOfMassVelocity; + if (VelocityInWorldSpace) + vector = transform.TransformVector(vector); + DrawArrow(pos, vector, Color.blue); + Vector3 actualPos = pos + vector; + + // arrow for actual velocity difference + vector = DesiredCenterOfMassVelocity - CenterOfMassVelocity; + if (VelocityInWorldSpace) + vector = transform.TransformVector(vector); + DrawArrow(actualPos, vector, Color.red); + + } + } + void DrawArrow(Vector3 start, Vector3 vector, Color color) + { + float headSize = 0.25f; + float headAngle = 20.0f; + Gizmos.color = color; + Gizmos.DrawRay(start, vector); + + if (vector.magnitude > 0f) + { + Vector3 right = Quaternion.LookRotation(vector) * Quaternion.Euler(0, 180 + headAngle, 0) * new Vector3(0, 0, 1); + Vector3 left = Quaternion.LookRotation(vector) * Quaternion.Euler(0, 180 - headAngle, 0) * new Vector3(0, 0, 1); + Gizmos.DrawRay(start + vector, right * headSize); + Gizmos.DrawRay(start + vector, left * headSize); + } + } +} diff --git a/Assets/MarathonController/Scripts/ObservationsStats.cs.meta b/Assets/MarathonController/Scripts/ObservationsStats.cs.meta new file mode 100644 index 0000000..943f9f1 --- /dev/null +++ b/Assets/MarathonController/Scripts/ObservationsStats.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 87e306564e6a646399aa6640e5e7447c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/ProcRagdollAgent.cs b/Assets/MarathonController/Scripts/ProcRagdollAgent.cs new file mode 100644 index 0000000..5878ef8 --- /dev/null +++ b/Assets/MarathonController/Scripts/ProcRagdollAgent.cs @@ -0,0 +1,566 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using Unity.MLAgents; +using Unity.MLAgents.Actuators; +using Unity.MLAgents.Sensors; +using UnityEngine; +using ManyWorlds; +using UnityEngine.Assertions; + +using System; + +public class ProcRagdollAgent : Agent +{ + [Header("Settings")] + public float FixedDeltaTime = 1f / 60f; + public float ActionSmoothingBeta = 0.2f; + public bool ReproduceDReCon = true; + + + [Header("Camera")] + + public bool RequestCamera; + public bool CameraFollowMe; + public Transform CameraTarget; + + [Header("... debug")] + public bool SkipActionSmoothing; + public bool debugCopyMocap; + public bool ignorActions; + public bool dontResetOnZeroReward; + public bool dontSnapMocapToRagdoll = true; + public bool DebugPauseOnReset; + public bool dontResetWhenOutOfBounds; + + + + + + + + //List _mocapBodyParts; + SpawnableEnv _spawnableEnv; + Observations2Learn _observations2Learn; + Rewards2Learn _rewards2Learn; + Muscles _ragDollMuscles; + List _motors; + + + + MarathonTestBedController _debugController; + InputController _inputController; + SensorObservations _sensorObservations; + DecisionRequester _decisionRequester; + IAnimationController _controllerToMimic; + + + + bool _hasLazyInitialized; + //float[] _smoothedActions; + float[] _mocapTargets; + + [Space(16)] + [SerializeField] + bool _hasAwake = false; + MapAnim2Ragdoll _mapAnim2Ragdoll; + + + + + + float observationTimeDelta; + float actionTimeDelta; + void Awake() + { + if (RequestCamera && CameraTarget != null) + { + // Will follow the last object to be spawned + var camera = FindObjectOfType(); + if (camera != null) + { + var follow = camera.GetComponent(); + if (follow != null) + follow.target = CameraTarget; + } + } + + + _hasAwake = true; + } + void Update() + { + if (debugCopyMocap) + { + EndEpisode(); + } + + Assert.IsTrue(_hasLazyInitialized); + + // hadle mocap going out of bounds + bool isOutOfBounds = !_spawnableEnv.IsPointWithinBoundsInWorldSpace(_mapAnim2Ragdoll.transform.position+new Vector3(0f, .1f, 0f)); + bool reset = isOutOfBounds && dontResetWhenOutOfBounds == false; + if (reset) + { + _mapAnim2Ragdoll.transform.position = _spawnableEnv.transform.position; + EndEpisode(); + } + } + override public void CollectObservations(VectorSensor sensor) + { + Assert.IsTrue(_hasLazyInitialized); + + observationTimeDelta = Time.fixedDeltaTime * _decisionRequester.DecisionPeriod; + _mapAnim2Ragdoll.OnStep(observationTimeDelta); + _observations2Learn.OnStep(observationTimeDelta); + + + if (ReproduceDReCon) + { + AddDReConObservations(sensor); + return; + } + + sensor.AddObservation(_observations2Learn.MocapCOMVelocity); + sensor.AddObservation(_observations2Learn.RagDollCOMVelocity); + sensor.AddObservation(_observations2Learn.RagDollCOMVelocity - _observations2Learn.MocapCOMVelocity); + sensor.AddObservation(_observations2Learn.InputDesiredHorizontalVelocity); + sensor.AddObservation(_observations2Learn.InputJump); + sensor.AddObservation(_observations2Learn.InputBackflip); + sensor.AddObservation(_observations2Learn.HorizontalVelocityDifference); + // foreach (var stat in _dReConObservations.MocapBodyStats) + // { + // sensor.AddObservation(stat.Position); + // sensor.AddObservation(stat.Velocity); + // } + foreach (var stat in _observations2Learn.RagDollBodyStats) + { + sensor.AddObservation(stat.Position); + sensor.AddObservation(stat.Velocity); + } + foreach (var stat in _observations2Learn.BodyPartDifferenceStats) + { + sensor.AddObservation(stat.Position); + sensor.AddObservation(stat.Velocity); + } + sensor.AddObservation(_observations2Learn.PreviousActions); + + // add sensors (feet etc) + sensor.AddObservation(_sensorObservations.SensorIsInTouch); + } + void AddDReConObservations(VectorSensor sensor) + { + sensor.AddObservation(_observations2Learn.MocapCOMVelocity); + sensor.AddObservation(_observations2Learn.RagDollCOMVelocity); + sensor.AddObservation(_observations2Learn.RagDollCOMVelocity - _observations2Learn.MocapCOMVelocity); + sensor.AddObservation(_observations2Learn.InputDesiredHorizontalVelocity); + sensor.AddObservation(_observations2Learn.InputJump); + sensor.AddObservation(_observations2Learn.InputBackflip); + sensor.AddObservation(_observations2Learn.HorizontalVelocityDifference); + // foreach (var stat in _dReConObservations.MocapBodyStats) + // { + // sensor.AddObservation(stat.Position); + // sensor.AddObservation(stat.Velocity); + // } + foreach (var stat in _observations2Learn.RagDollBodyStats) + { + sensor.AddObservation(stat.Position); + sensor.AddObservation(stat.Velocity); + } + foreach (var stat in _observations2Learn.BodyPartDifferenceStats) + { + sensor.AddObservation(stat.Position); + sensor.AddObservation(stat.Velocity); + } + sensor.AddObservation(_observations2Learn.PreviousActions); + } + + //adapted from previous function (Collect Observations) + public int calculateDreConObservationsize() + { + int size = 0; + + size += + 3 //sensor.AddObservation(_dReConObservations.MocapCOMVelocity); + + 3 //sensor.AddObservation(_dReConObservations.RagDollCOMVelocity); + + 3 //sensor.AddObservation(_dReConObservations.RagDollCOMVelocity - _dReConObservations.MocapCOMVelocity); + + 2 //sensor.AddObservation(_dReConObservations.InputDesiredHorizontalVelocity); + + 1 //sensor.AddObservation(_dReConObservations.InputJump); + + 1 //sensor.AddObservation(_dReConObservations.InputBackflip); + + 2;//sensor.AddObservation(_dReConObservations.HorizontalVelocityDifference); + + + Observations2Learn _checkDrecon = GetComponent(); + + + //foreach (var stat in _dReConObservations.RagDollBodyStats) + + foreach (var collider in _checkDrecon.EstimateBodyPartsForObservation()) + + { + size += + 3 //sensor.AddObservation(stat.Position); + + 3; //sensor.AddObservation(stat.Velocity); + } + //foreach (var stat in _dReConObservations.BodyPartDifferenceStats) + foreach (var collider in _checkDrecon.EstimateBodyPartsForObservation()) + + { + size += + +3 // sensor.AddObservation(stat.Position); + + 3; // sensor.AddObservation(stat.Velocity); + } + + //action size and sensor size are calculated separately, we do not use: + //sensor.AddObservation(_dReConObservations.PreviousActions); + //sensor.AddObservation(_sensorObservations.SensorIsInTouch); + + return size; + } + + public override void OnActionReceived(ActionBuffers actionBuffers) + { + Assert.IsTrue(_hasLazyInitialized); + float[] vectorAction = actionBuffers.ContinuousActions.Select(x=>x).ToArray(); + + actionTimeDelta = Time.fixedDeltaTime; + if (!_decisionRequester.TakeActionsBetweenDecisions) + actionTimeDelta = actionTimeDelta*_decisionRequester.DecisionPeriod; + _mapAnim2Ragdoll.OnStep(actionTimeDelta); + _rewards2Learn.OnStep(actionTimeDelta); + + bool shouldDebug = _debugController != null; + bool dontUpdateMotor = false; + if (_debugController != null) + { + dontUpdateMotor = _debugController.DontUpdateMotor; + dontUpdateMotor &= _debugController.isActiveAndEnabled; + dontUpdateMotor &= _debugController.gameObject.activeInHierarchy; + shouldDebug &= _debugController.isActiveAndEnabled; + shouldDebug &= _debugController.gameObject.activeInHierarchy; + } + if (shouldDebug) + { + vectorAction = GetDebugActions(vectorAction); + } + + if (!SkipActionSmoothing) + vectorAction = SmoothActions(vectorAction); + + + int i = 0;//keeps track of hte number of actions + + int j = 0;//keeps track of the number of motoros + foreach (var m in _motors) + { + if (m.isRoot) + continue; + if (dontUpdateMotor) + continue; + Vector3 targetNormalizedRotation = Vector3.zero; + if (m.jointType != ArticulationJointType.SphericalJoint) + continue; + if (m.twistLock == ArticulationDofLock.LimitedMotion) + targetNormalizedRotation.x = vectorAction[i++]; + if (m.swingYLock == ArticulationDofLock.LimitedMotion) + targetNormalizedRotation.y = vectorAction[i++]; + if (m.swingZLock == ArticulationDofLock.LimitedMotion) + targetNormalizedRotation.z = vectorAction[i++]; + if (!ignorActions) + { + + _ragDollMuscles.UpdateMotor(m, targetNormalizedRotation, actionTimeDelta); + } + + + + j++; + + } + + _observations2Learn.PreviousActions = vectorAction; + + AddReward(_rewards2Learn.Reward); + + if (ReproduceDReCon) + { + // DReCon Logic + if (_rewards2Learn.HeadHeightDistance > 1f || _rewards2Learn.Reward <= 0f) + { + if (!dontResetOnZeroReward) + EndEpisode(); + } + else if (_rewards2Learn.Reward <= 0.1f && !dontSnapMocapToRagdoll) + { + Transform ragDollCom = _observations2Learn.GetRagDollCOM(); + Vector3 snapPosition = ragDollCom.position; + // snapPosition.y = 0f; + var snapDistance = _mapAnim2Ragdoll.SnapTo(snapPosition); + // AddReward(-.5f); + } + } + else + { + // Our Logic + bool terminate = false; + terminate = terminate || _rewards2Learn.PositionReward < 1E-5f; + if (StepCount > 4) // HACK + terminate = terminate || _rewards2Learn.ComVelocityReward < 1E-50f; + // terminate = terminate || _dReConRewards.ComDirectionReward < .01f; + if (_rewards2Learn.VelDifferenceReward > 0f && StepCount > 4) // HACK + terminate = terminate || _rewards2Learn.VelDifferenceReward < 1E-10f; + terminate = terminate || _rewards2Learn.LocalPoseReward < 1E-5f; + // terminate = terminate || _dReConRewards.PositionReward < .01f; + // // terminate = terminate || _dReConRewards.ComVelocityReward < .01f; + // terminate = terminate || _dReConRewards.ComDirectionReward < .01f; + // if (_dReConRewards.VelDifferenceReward > 0f) // HACK + // terminate = terminate || _dReConRewards.VelDifferenceReward < .01f; + // terminate = terminate || _dReConRewards.LocalPoseReward < .01f; + if (dontResetOnZeroReward) + terminate = false; + if (terminate) + { + EndEpisode(); + } + else if (!dontSnapMocapToRagdoll) + { + Transform ragDollCom = _observations2Learn.GetRagDollCOM(); + Vector3 snapPosition = ragDollCom.position; + // snapPosition.y = 0f; + var snapDistance = _mapAnim2Ragdoll.SnapTo(snapPosition); + // AddReward(-.5f); + } + } + } + float[] GetDebugActions(float[] vectorAction) + { + var debugActions = new List(); + foreach (var m in _motors) + { + if (m.isRoot) + continue; + DebugMotor debugMotor = m.GetComponent(); + if (debugMotor == null) + { + debugMotor = m.gameObject.AddComponent(); + } + // clip to -1/+1 + debugMotor.Actions = new Vector3( + Mathf.Clamp(debugMotor.Actions.x, -1f, 1f), + Mathf.Clamp(debugMotor.Actions.y, -1f, 1f), + Mathf.Clamp(debugMotor.Actions.z, -1f, 1f) + ); + Vector3 targetNormalizedRotation = debugMotor.Actions; + + if (m.jointType != ArticulationJointType.SphericalJoint) + continue; + if (m.twistLock == ArticulationDofLock.LimitedMotion) + debugActions.Add(targetNormalizedRotation.x); + if (m.swingYLock == ArticulationDofLock.LimitedMotion) + debugActions.Add(targetNormalizedRotation.y); + if (m.swingZLock == ArticulationDofLock.LimitedMotion) + debugActions.Add(targetNormalizedRotation.z); + } + + debugActions = debugActions.Select(x => Mathf.Clamp(x, -1f, 1f)).ToList(); + if (_debugController.ApplyRandomActions) + { + debugActions = debugActions + .Select(x => UnityEngine.Random.Range(-_debugController.RandomRange, _debugController.RandomRange)) + .ToList(); + } + + _debugController.Actions = debugActions.ToArray(); + return debugActions.ToArray(); + } + + float[] SmoothActions(float[] vectorAction) + { + // yt =β at +(1−β)yt−1 + var smoothedActions = vectorAction + .Zip(_observations2Learn.PreviousActions, (a, y) => ActionSmoothingBeta * a + (1f - ActionSmoothingBeta) * y) + .ToArray(); + return smoothedActions; + } + float[] GetActionsFromRagdollState() + { + var vectorActions = new List(); + foreach (var m in _motors) + { + if (m.isRoot) + continue; + int i = 0; + if (m.jointType != ArticulationJointType.SphericalJoint) + continue; + if (m.twistLock == ArticulationDofLock.LimitedMotion) + { + var drive = m.xDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + var deg = m.jointPosition[i++] * Mathf.Rad2Deg; + var target = (deg - midpoint) / scale; + vectorActions.Add(target); + } + if (m.swingYLock == ArticulationDofLock.LimitedMotion) + { + var drive = m.yDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + var deg = m.jointPosition[i++] * Mathf.Rad2Deg; + var target = (deg - midpoint) / scale; + vectorActions.Add(target); + } + if (m.swingZLock == ArticulationDofLock.LimitedMotion) + { + var drive = m.zDrive; + var scale = (drive.upperLimit - drive.lowerLimit) / 2f; + var midpoint = drive.lowerLimit + scale; + var deg = m.jointPosition[i++] * Mathf.Rad2Deg; + var target = (deg - midpoint) / scale; + vectorActions.Add(target); + } + } + return vectorActions.ToArray(); + } + public override void Initialize() + { + Assert.IsTrue(_hasAwake); + Assert.IsFalse(_hasLazyInitialized); + _hasLazyInitialized = true; + + _decisionRequester = GetComponent(); + _debugController = FindObjectOfType(); + Time.fixedDeltaTime = FixedDeltaTime; + _spawnableEnv = GetComponentInParent(); + + if (_debugController != null) + { + dontResetOnZeroReward = true; + dontSnapMocapToRagdoll = true; + } + + _mapAnim2Ragdoll = _spawnableEnv.GetComponentInChildren(); + //_mocapBodyParts = _mapAnim2Ragdoll.GetRigidBodies(); + + _observations2Learn = GetComponent(); + _rewards2Learn = GetComponent(); + + _ragDollMuscles = GetComponent(); + + + + + _inputController = _spawnableEnv.GetComponentInChildren(); + _sensorObservations = GetComponent(); + + + _motors = GetComponentsInChildren() + .Where(x => x.jointType == ArticulationJointType.SphericalJoint) + .Where(x => !x.isRoot) + .Distinct() + .ToList(); + //var individualMotors = new List(); + + + + + + + _observations2Learn.PreviousActions = GetActionsFromRagdollState(); + + _controllerToMimic = _mapAnim2Ragdoll.GetComponent(); + + + + _mapAnim2Ragdoll.OnAgentInitialize(); + //it can only be used AFTER _mapAnim2Ragdoll is initialzed. + _ragDollMuscles.SetKinematicReference(_mapAnim2Ragdoll);//only used in mode PDopenloop + + _observations2Learn.OnAgentInitialize(); + _rewards2Learn.OnAgentInitialize(ReproduceDReCon); + _controllerToMimic.OnAgentInitialize(); + + + _hasLazyInitialized = true; + } + public override void OnEpisodeBegin() + { + Assert.IsTrue(_hasAwake); + //_smoothedActions = null; + debugCopyMocap = false; + + Vector3 resetVelocity = Vector3.zero; + if (_inputController != null) + { + // _inputController.OnReset(); + _controllerToMimic.OnReset(); + // resets to source anim + // var angle = Vector3.SignedAngle(Vector3.forward, _inputController.HorizontalDirection, Vector3.up); + // var rotation = Quaternion.Euler(0f, angle, 0f); + var rotation = _mapAnim2Ragdoll.transform.rotation; + _mapAnim2Ragdoll.OnReset(rotation); + _mapAnim2Ragdoll.CopyStatesTo(this.gameObject); + resetVelocity = _controllerToMimic.GetDesiredVelocity(); + _mapAnim2Ragdoll.CopyVelocityTo(this.gameObject, resetVelocity); + } + else + { + _controllerToMimic.OnReset(); + // source anim is continious + var rotation = _mapAnim2Ragdoll.transform.rotation; + _mapAnim2Ragdoll.OnReset(rotation); + resetVelocity = _controllerToMimic.GetDesiredVelocity(); + _mapAnim2Ragdoll.CopyStatesTo(this.gameObject); + _mapAnim2Ragdoll.CopyVelocityTo(this.gameObject, resetVelocity); + } + + _observations2Learn.OnReset(); + _rewards2Learn.OnReset(); + // float timeDelta = float.Epsilon; + // _dReConObservations.OnStep(timeDelta); + // _dReConRewards.OnStep(timeDelta); +#if UNITY_EDITOR + if (DebugPauseOnReset) + { + UnityEditor.EditorApplication.isPaused = true; + } +#endif + if (_debugController != null && _debugController.isActiveAndEnabled) + { + _debugController.OnAgentEpisodeBegin(); + } + _observations2Learn.PreviousActions = GetActionsFromRagdollState(); + } + + + void FixedUpdate() + { + if (debugCopyMocap) + { + EndEpisode(); + } + } + void OnDrawGizmos() + { + if (_rewards2Learn == null || _inputController == null) + return; + var comTransform = _rewards2Learn._ragDollBodyStats.transform; + var vector = new Vector3(_inputController.MovementVector.x, 0f, _inputController.MovementVector.y); + var pos = new Vector3(comTransform.position.x, 0.001f, comTransform.position.z); + DrawArrow(pos, vector, Color.black); + } + void DrawArrow(Vector3 start, Vector3 vector, Color color) + { + float headSize = 0.25f; + float headAngle = 20.0f; + Gizmos.color = color; + Gizmos.DrawRay(start, vector); + if (vector != Vector3.zero) + { + Vector3 right = Quaternion.LookRotation(vector) * Quaternion.Euler(0, 180 + headAngle, 0) * new Vector3(0, 0, 1); + Vector3 left = Quaternion.LookRotation(vector) * Quaternion.Euler(0, 180 - headAngle, 0) * new Vector3(0, 0, 1); + Gizmos.DrawRay(start + vector, right * headSize); + Gizmos.DrawRay(start + vector, left * headSize); + } + } +} diff --git a/Assets/MarathonController/Scripts/ProcRagdollAgent.cs.meta b/Assets/MarathonController/Scripts/ProcRagdollAgent.cs.meta new file mode 100644 index 0000000..65ad203 --- /dev/null +++ b/Assets/MarathonController/Scripts/ProcRagdollAgent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 80fc21710754c439fb9c67d9e4e30294 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/ROMparserSwingTwist.cs b/Assets/MarathonController/Scripts/ROMparserSwingTwist.cs new file mode 100644 index 0000000..75fdc10 --- /dev/null +++ b/Assets/MarathonController/Scripts/ROMparserSwingTwist.cs @@ -0,0 +1,479 @@ +using System.Collections; +using System.Collections.Generic; +using System; + +using UnityEngine; +using System.Linq; + + +public class ROMparserSwingTwist : MonoBehaviour +{ + + //we assume a decomposition where the twist is in the X axis. + //This seems consistent with how ArticulationBody works (see constraints in the inspector and definition of ReducedCoordinates) + + public + Animator theAnimator; + + public + Transform skeletonRoot; + + Transform[] joints; + + + float duration; + + + [SerializeField] + //public ROMinfoCollector info2store; + public RangeOfMotionValues info2store; + + + //those are to generate a prefab from a bunch of articulated bodies and the constraints parsed + + //[SerializeField] + public ArticulationBody targetRagdollRoot; + + + [Tooltip("Learning Environment where to integrate the constrained ragdoll. Leave blanc if you do not want to generate any training environment")] + public + ManyWorlds.SpawnableEnv trainingEnv; + + + + [Tooltip("Leave blanc if you want to apply on all the children of targetRoot")] + [SerializeField] + ArticulationBody[] targetJoints; + + string animationEndMessage = "First animation played.If there are no more animations, the constraints have been stored.If there are, wait until the ROM info collector file does not update anymore"; + + + +// [SerializeField] + + // public RangeOfMotionValue[] RangeOfMotionPreview; + + MapAnim2Ragdoll _mocapControllerArtanim; + Vector3 _rootStartPosition; + Quaternion _rootStartRotation; + + public bool MimicMocap; + [Range(0, 359)] + public int MaxROM = 180; + + [Range(0, 500)] + public int MimicSkipPhysicsSteps = 50; + int _physicsStepsToNextMimic = 0; + public float stiffness = 40000f; + public float damping = 0f; + public float forceLimit = float.MaxValue; + + + + // Start is called before the first frame update + void Start() + { + + + + joints = skeletonRoot.GetComponentsInChildren(); + + + foreach (Transform j in joints) { + info2store.addJoint(j); + + } + + + try + { + + AnimatorClipInfo[] info = theAnimator.GetCurrentAnimatorClipInfo(0); + AnimationClip theClip = info[0].clip; + duration = theClip.length; + Debug.Log("The animation " + theClip.name + " has a duration of: " + duration); + + } + catch { + Debug.Log("the character does not seem to have an animator. Make sure it is moving in some way to extract the Range of Motion"); + + } + + + _mocapControllerArtanim = theAnimator.GetComponent(); + + // get root start position and rotation + var articulationBodies = targetRagdollRoot.GetComponentsInChildren(true); + if (articulationBodies.Length == 0) + return; + var root = articulationBodies.First(x => x.isRoot); + _rootStartPosition = root.transform.position; + _rootStartRotation = root.transform.rotation; + + // if no joints specified get joints using + // not root (is static), begins with 'articulation:' + if (targetJoints.Length == 0) + { + targetJoints = targetRagdollRoot + .GetComponentsInChildren(true) + .Where(x => x.isRoot == false) + .Where(x => x.name.StartsWith("articulation:")) + .ToArray(); + SetJointsToMaxROM(); + } + } + + + void CopyMocap() + { + if (_mocapControllerArtanim != null && + targetRagdollRoot != null && + _mocapControllerArtanim.enabled) + { + var atriculationBodies = targetRagdollRoot.GetComponentsInChildren(); + if (atriculationBodies.Length == 0) + return; + var root = atriculationBodies.First(x => x.isRoot); + CopyMocapStatesTo(root.gameObject, _rootStartPosition); + // teleport back to start position + // var curRotation = root.transform.rotation; + // root.TeleportRoot(_rootStartPosition, curRotation); + // Vector3 offset = _rootStartPosition - root.transform.position; + // root.gameObject.SetActive(false); + // foreach (var t in root.GetComponentsInChildren()) + // { + // t.position = t.position + offset; + // } + // root.transform.position = _rootStartPosition; + // root.gameObject.SetActive(true); + + // foreach (var body in atriculationBodies) + // { + // if (body.twistLock == ArticulationDofLock.LimitedMotion) + // { + // var xDrive = body.xDrive; + // List targets = new List(); + // var bb = body.GetDriveTargets(targets); + // var cc = 22; + // } + // } + } + } + void CopyMocapStatesTo(GameObject target, Vector3 rootPosition) + { + + var targets = target.GetComponentsInChildren().ToList(); + if (targets?.Count == 0) + return; + var root = targets.First(x => x.isRoot); + root.gameObject.SetActive(false); + var mocapRoot = _mocapControllerArtanim.GetComponentsInChildren().First(x => x.name == root.name); + Vector3 offset = rootPosition - mocapRoot.transform.position; + foreach (var body in targets) + { + var stat = _mocapControllerArtanim.GetComponentsInChildren().First(x => x.name == body.name); + body.transform.position = stat.position + offset; + body.transform.rotation = stat.rotation; + if (body.isRoot) + { + body.TeleportRoot(stat.position + offset, stat.rotation); + } + } + root.gameObject.SetActive(true); + foreach (var body in targets) + { + // body.AddForce(new Vector3(0.1f, -200f, 3f)); + // body.AddTorque(new Vector3(0.1f, 200f, 3f)); + body.velocity = (new Vector3(0.1f, 4f, .3f)); + body.angularVelocity = (new Vector3(0.1f, 20f, 3f)); + } + } + + + + + void FixedUpdate() + { + for (int i = 0; i < joints.Length; i++) + { + + + Quaternion localRotation = joints[i].localRotation; + + Vector3 candidates4storage = Utils.GetSwingTwist(localRotation); + + + + if (info2store.Values[i].upper.x < candidates4storage.x) + info2store.Values[i].upper.x = candidates4storage.x; + if (info2store.Values[i].upper.y < candidates4storage.y) + info2store.Values[i].upper.y = candidates4storage.y; + if (info2store.Values[i].upper.z < candidates4storage.z) + info2store.Values[i].upper.z = candidates4storage.z; + + + if (info2store.Values[i].lower.x > candidates4storage.x) + info2store.Values[i].lower.x = candidates4storage.x; + if (info2store.Values[i].lower.y > candidates4storage.y) + info2store.Values[i].lower.y = candidates4storage.y; + if (info2store.Values[i].lower.z > candidates4storage.z) + info2store.Values[i].lower.z = candidates4storage.z; + + + + } + + if (duration < Time.time) + { + if(animationEndMessage.Length > 0) { + Debug.Log(animationEndMessage); + animationEndMessage = ""; + } + + } + + // CalcPreview();//this only stores the ROM value? + + + CalculateOscillatorParameters(); + + + } + // void FixedUpdate() + void OnRenderObject() + { + if (MimicMocap) + { + if (_physicsStepsToNextMimic-- < 1) + { + CopyMocap(); + _physicsStepsToNextMimic = MimicSkipPhysicsSteps; + } + } + } + + // preview range of motion + + /* + void CalcPreview() + { + ArticulationBody[] articulationBodies = targetJoints; + //we want them all: + if (articulationBodies.Length == 0) + articulationBodies = targetRagdollRoot.GetComponentsInChildren(true); + + List preview = new List(); + + //List jNames = new List(info2store.jointNames); + List jNames = new List(info2store.getNames()); + for (int i = 0; i < articulationBodies.Length; i++) + { + string s = articulationBodies[i].name; + string[] parts = s.Split(':'); + //we assume the articulationBodies have a name structure of hte form ANYNAME:something-in-the-targeted-joint + + int index = -1; + + index = jNames.FindIndex(x => x.Contains(parts[1])); + + if (index < 0) + Debug.Log("Could not find a joint name matching " + s + " and specifically: " + parts[1]); + else + { + preview.Add(info2store.Values[index]); + } + } + // RangeOfMotionPreview = preview.ToArray(); + } + */ + + //Not needed, the previous function already does that + //public void WriteRangeOfMotion() + //{ + // if (RangeOfMotion2Store == null) + // RangeOfMotion2Store = RangeOfMotion004.CreateInstance(); + // RangeOfMotion2Store.Values = RangeOfMotionPreview; + //} + + // Make all joints use Max Range of Motion + public void SetJointsToMaxROM() + { + //these are the articulationBodies that we want to parse and apply the constraints to + ArticulationBody[] articulationBodies; + + ArticulationBody[] joints = targetJoints; + //we want them all: + if (joints.Length == 0) + joints = targetRagdollRoot.GetComponentsInChildren(); + + articulationBodies = joints.ToArray(); + + foreach (var body in articulationBodies) + { + // root has no DOF + if (body.isRoot) + continue; + body.jointType = ArticulationJointType.SphericalJoint; + body.twistLock = ArticulationDofLock.LimitedMotion; + body.swingYLock = ArticulationDofLock.LimitedMotion; + body.swingZLock = ArticulationDofLock.LimitedMotion; + + var drive = new ArticulationDrive(); + drive.lowerLimit = -(float)MaxROM; + drive.upperLimit = (float)MaxROM; + drive.stiffness = stiffness; + drive.damping = damping; + drive.forceLimit = forceLimit; + body.xDrive = drive; + + drive = new ArticulationDrive(); + drive.lowerLimit = -(float)MaxROM; + drive.upperLimit = (float)MaxROM; + drive.stiffness = stiffness; + drive.damping = damping; + drive.forceLimit = forceLimit; + body.yDrive = drive; + + drive = new ArticulationDrive(); + drive.lowerLimit = -(float)MaxROM; + drive.upperLimit = (float)MaxROM; + drive.stiffness = stiffness; + drive.damping = damping; + drive.forceLimit = forceLimit; + body.zDrive = drive; + + // body.useGravity = false; + } + } + + + + + public void CalculateOscillatorParameters() { + + + + + } + + + + //we assume the constraints have been well applied + //This function is called from an Editor Script + public void Prepare4PrefabStorage(out ProcRagdollAgent rda, out ManyWorlds.SpawnableEnv envPrefab) + { + + + ArticulationBody targetRagdollPrefab = GameObject.Instantiate(targetRagdollRoot); + + //if there is a spawnableEnv, there is a ragdollAgent: + rda = targetRagdollPrefab.GetComponent(); + + if (rda != null) + Debug.Log("Setting up the ragdoll agent"); + + envPrefab = null; + + + + + + //these are all the articulationBodies in the ragdoll prefab + ArticulationBody[] articulationBodies; + + Transform[] joints = targetRagdollPrefab.GetComponentsInChildren(); + + + List temp = new List(); + for (int i = 0; i < joints.Length; i++) + { + ArticulationBody a = joints[i].GetComponent(); + if (a != null) + temp.Add(a); + } + + articulationBodies = temp.ToArray(); + + + //We also prepare everything inside the ragdoll agent : + for (int i = 0; i < articulationBodies.Length; i++) + { + articulationBodies[i].transform.localRotation = Quaternion.identity; + if (articulationBodies[i].isRoot) + { + articulationBodies[i].immovable = false; + if (rda != null) + rda.CameraTarget = articulationBodies[i].transform; + + + if (trainingEnv) + { + envPrefab = GameObject.Instantiate(trainingEnv); + + Animator target = envPrefab.transform.GetComponentInChildren(); + + + + //we assume the environment has an animated character, and in this there is a son which is the root of a bunch of rigidBodies forming a humanoid. + //TODO: replace this function with something that creates the rigidBody humanoid such a thing procedurally + activateMarathonManTarget(target); + + //we also need our target animation to have this: + TrackBodyStatesInWorldSpace tracker = target.GetComponent(); + if (tracker == null) + target.gameObject.AddComponent(); + + + + if (rda != null) + { + rda.transform.parent = envPrefab.transform; + rda.name = targetRagdollRoot.name; + rda.enabled = true;//this should already be the case, but just ot be cautious + } + + MapRagdoll2Anim agentOutcome = envPrefab.GetComponentInChildren(true); + if (agentOutcome != null) + { + agentOutcome.gameObject.SetActive(true); + //agentOutcome.enabled = true; + agentOutcome.ArticulationBodyRoot = articulationBodies[i]; + } + } + } + + } + + } + + + + static void activateMarathonManTarget(Animator target) + { + + Transform[] rbs = target.GetComponentsInChildren(true); + + + //Rigidbody[] rbs = target.GetComponentsInChildren(true); + for (int i = 0; i < rbs.Length; i++) + { + rbs[i].gameObject.SetActive(true); + + } + + + + //the animation source is a son of the SpawnableEnv, or it does not find the MocapControllerArtanim when it initializes + MapAnim2Ragdoll mca = target.GetComponent(); + mca.enabled = true; + + + + + + + } + + + +} diff --git a/Assets/MarathonController/Scripts/ROMparserSwingTwist.cs.meta b/Assets/MarathonController/Scripts/ROMparserSwingTwist.cs.meta new file mode 100644 index 0000000..063d8be --- /dev/null +++ b/Assets/MarathonController/Scripts/ROMparserSwingTwist.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2ab97429936402d4b8e61f401f945174 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/RangeOfMotionValues.cs b/Assets/MarathonController/Scripts/RangeOfMotionValues.cs new file mode 100644 index 0000000..8628898 --- /dev/null +++ b/Assets/MarathonController/Scripts/RangeOfMotionValues.cs @@ -0,0 +1,91 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +using Unity.Barracuda; + +[System.Serializable] +public class RangeOfMotionValue +{ + // [HideInInspector] + public string name; + public Vector3 lower; + public Vector3 upper; + public Vector3 rangeOfMotion { get { + var diff = upper - lower; + var rom = new Vector3( + Mathf.Abs(diff.x), + Mathf.Abs(diff.y), + Mathf.Abs(diff.z) + ); + return rom; + }} +} + + +public class OscillationParameters +{ + public string name; + + public float dampingRatio; + public float natFreq; + + +} + +[CreateAssetMenu(fileName = "RangeOfMotion", menuName = "Parser/CreateRangeOfMotionFile")] +public class RangeOfMotionValues : ScriptableObject +{ + public RangeOfMotionValue[] Values { get { return _values.ToArray(); } } + + + //[HideInInspector] + [SerializeField] + List _values = new List(); + + + List _osc = new List(); + + + public void addJoint(Transform joint) + { + RangeOfMotionValue r = new RangeOfMotionValue(); + r.name = joint.name; + + _values.Add(r); + + + OscillationParameters o = new OscillationParameters(); + o.name = joint.name; + _osc.Add(o); + + + } + + //public + //a model trained with these constraints + //NNModel InferenceModel; + + public string[] getNames() + { + + + string[] temp = new string[Values.Length]; + + for (int i = 0; i < Values.Length; i++) + { + temp[i] = (Values[i].name); + + + } + return temp; + + } + + + + + + +} + diff --git a/Assets/MarathonController/Scripts/RangeOfMotionValues.cs.meta b/Assets/MarathonController/Scripts/RangeOfMotionValues.cs.meta new file mode 100644 index 0000000..cba5e74 --- /dev/null +++ b/Assets/MarathonController/Scripts/RangeOfMotionValues.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2774db094247c4810922f4534abbb6a2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/RewardStats.cs b/Assets/MarathonController/Scripts/RewardStats.cs new file mode 100644 index 0000000..c402296 --- /dev/null +++ b/Assets/MarathonController/Scripts/RewardStats.cs @@ -0,0 +1,385 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using Unity.MLAgents; +using UnityEngine; +using UnityEngine.Assertions; +using ManyWorlds; + +public class RewardStats : MonoBehaviour +{ + [Header("Settings")] + + public MonoBehaviour ObjectToTrack; + + [Header("Stats")] + public Vector3 CenterOfMassVelocity; + public float CenterOfMassVelocityMagnitude; + public Vector3 CenterOfMassVelocityInRootSpace; + public float CenterOfMassVelocityMagnitudeInRootSpace; + + [HideInInspector] public Vector3 LastCenterOfMassInWorldSpace; + [HideInInspector] public Vector3 HeadPositionInWorldSpace; + [HideInInspector] public Vector3 RootPositionInWorldSpace; + [HideInInspector] public bool LastIsSet; + + SpawnableEnv _spawnableEnv; + List _colliders; + List _rigidbodyParts; + List _articulationBodyParts; + List _bodyParts; + GameObject _root; + GameObject _head; + MapAnim2Ragdoll _mapAnim2Ragdoll; + List _trackRotations; + public List Rotations; + public Vector3[] Points; + Vector3[] _lastPoints; + public Vector3[] PointVelocity; + + [Header("Stats")] + public List ColliderNames; + public List RotationNames; + public List BodyPartNames; + bool _hasLazyInitialized; + + + string rootName = "articulation:Hips"; + string headName = ""; + + public void setRootName(string s) + { + rootName = s; + } + public void setHeadName(string s) + { + headName = s; + } + + + public void OnAgentInitialize(Transform defaultTransform, RewardStats orderToCopy = null) + { + Assert.IsFalse(_hasLazyInitialized); + _hasLazyInitialized = true; + + _mapAnim2Ragdoll = defaultTransform.GetComponent(); + _spawnableEnv = GetComponentInParent(); + _articulationBodyParts = ObjectToTrack + .GetComponentsInChildren() + .Distinct() + .ToList(); + _rigidbodyParts = ObjectToTrack + .GetComponentsInChildren() + .Distinct() + .ToList(); + if (_rigidbodyParts?.Count > 0) + _bodyParts = _rigidbodyParts.Select(x => x.gameObject).ToList(); + else + _bodyParts = _articulationBodyParts.Select(x => x.gameObject).ToList(); + _trackRotations = _bodyParts + .SelectMany(x => x.GetComponentsInChildren()) + .Select(x => x.gameObject) + .Distinct() + .Where(x => x.GetComponent() != null || x.GetComponent() != null) + .Where(x=>x.name.StartsWith("articulation:")) + .ToList(); + _colliders = _bodyParts + .SelectMany(x => x.GetComponentsInChildren()) + .Where(x => x.enabled) + .Where(x => !x.isTrigger) + .Where(x=> { + var ignoreCollider = x.GetComponent(); + if (ignoreCollider == null) + return true; + return !ignoreCollider.enabled;}) + .Distinct() + .ToList(); + if (orderToCopy != null) + { + _bodyParts = orderToCopy._bodyParts + .Select(x => _bodyParts.First(y => y.name == x.name)) + .ToList(); + _trackRotations = orderToCopy._trackRotations + .Select(x => _trackRotations.First(y => y.name == x.name)) + .ToList(); + _colliders = orderToCopy._colliders + .Select(x => _colliders.First(y => y.name == x.name)) + .ToList(); + } + Points = Enumerable.Range(0, _colliders.Count * 6) + .Select(x => Vector3.zero) + .ToArray(); + _lastPoints = Enumerable.Range(0, _colliders.Count * 6) + .Select(x => Vector3.zero) + .ToArray(); + PointVelocity = Enumerable.Range(0, _colliders.Count * 6) + .Select(x => Vector3.zero) + .ToArray(); + Rotations = Enumerable.Range(0, _trackRotations.Count) + .Select(x => Quaternion.identity) + .ToList(); + _root = _bodyParts.First(x => x.name == rootName); + _head = _bodyParts.First(x => x.name == headName); + transform.position = defaultTransform.position; + transform.rotation = defaultTransform.rotation; + LastCenterOfMassInWorldSpace = transform.position; + HeadPositionInWorldSpace = _head.transform.position; + RootPositionInWorldSpace = _root.transform.position; + ColliderNames = _colliders + .Select(x => x.name) + .ToList(); + RotationNames = _trackRotations + .Select(x => x.name) + .ToList(); + BodyPartNames = _bodyParts + .Select(x => x.name) + .ToList(); + } + public void OnReset() + { + Assert.IsTrue(_hasLazyInitialized); + ResetStatus(); + LastIsSet = false; + } + public void ResetStatus() + { + LastIsSet = false; + var timeDelta = float.MinValue; + SetStatusForStep(timeDelta); + } + + public void SetStatusForStep(float timeDelta) + { + // get Center Of Mass velocity in f space + Vector3 newCOM; + // if Moocap, then get from anim2Ragdoll + if (_mapAnim2Ragdoll != null) + { + newCOM = _mapAnim2Ragdoll.LastCenterOfMassInWorldSpace; + var newHorizontalDirection = _mapAnim2Ragdoll.HorizontalDirection; + if (!LastIsSet) + { + LastCenterOfMassInWorldSpace = newCOM; + } + transform.position = newCOM; + transform.rotation = Quaternion.Euler(newHorizontalDirection); + CenterOfMassVelocity = _mapAnim2Ragdoll.CenterOfMassVelocity; + CenterOfMassVelocityMagnitude = _mapAnim2Ragdoll.CenterOfMassVelocityMagnitude; + CenterOfMassVelocityInRootSpace = transform.InverseTransformVector(CenterOfMassVelocity); + CenterOfMassVelocityMagnitudeInRootSpace = CenterOfMassVelocityInRootSpace.magnitude; + HeadPositionInWorldSpace = _mapAnim2Ragdoll.LastHeadPositionInWorldSpace; + RootPositionInWorldSpace = _mapAnim2Ragdoll.LastRootPositionInWorldSpace; + } + else + { + newCOM = GetCenterOfMass(); + var newHorizontalDirection = new Vector3(0f, _root.transform.eulerAngles.y, 0f); + if (!LastIsSet) + { + LastCenterOfMassInWorldSpace = newCOM; + } + transform.position = newCOM; + transform.rotation = Quaternion.Euler(newHorizontalDirection); + var velocity = newCOM - LastCenterOfMassInWorldSpace; + velocity /= timeDelta; + CenterOfMassVelocity = velocity; + CenterOfMassVelocityMagnitude = CenterOfMassVelocity.magnitude; + CenterOfMassVelocityInRootSpace = transform.InverseTransformVector(CenterOfMassVelocity); + CenterOfMassVelocityMagnitudeInRootSpace = CenterOfMassVelocityInRootSpace.magnitude; + HeadPositionInWorldSpace = _head.transform.position; + RootPositionInWorldSpace = _root.transform.position; + } + LastCenterOfMassInWorldSpace = newCOM; + + GetAllPoints(Points); + if (!LastIsSet) + { + Array.Copy(Points, 0, _lastPoints, 0, Points.Length); + } + for (int i = 0; i < Points.Length; i++) + { + PointVelocity[i] = (Points[i] - _lastPoints[i]) / timeDelta; + } + Array.Copy(Points, 0, _lastPoints, 0, Points.Length); + + for (int i = 0; i < _trackRotations.Count; i++) + { + Quaternion localRotation = _trackRotations[i].transform.localRotation; + if (_trackRotations[i].gameObject == _root) + localRotation = Quaternion.Inverse(transform.rotation) * _trackRotations[i].transform.rotation; + Rotations[i] = localRotation; + } + + LastIsSet = true; + } + + public List GetPointDistancesFrom(RewardStats target) + { + List distances = new List(); + for (int i = 0; i < Points.Length; i++) + { + float distance = (Points[i] - target.Points[i]).magnitude; + distances.Add(distance); + } + return distances; + } + + public List GetPointVelocityDistancesFrom(RewardStats target) + { + List distances = new List(); + for (int i = 0; i < PointVelocity.Length; i++) + { + float distance = (PointVelocity[i] - target.PointVelocity[i]).magnitude; + distances.Add(distance); + } + return distances; + } + + public void AssertIsCompatible(RewardStats target) + { + Assert.AreEqual(Points.Length, target.Points.Length); + Assert.AreEqual(_lastPoints.Length, target._lastPoints.Length); + Assert.AreEqual(PointVelocity.Length, target.PointVelocity.Length); + Assert.AreEqual(Points.Length, _lastPoints.Length); + Assert.AreEqual(Points.Length, PointVelocity.Length); + Assert.AreEqual(_colliders.Count, target._colliders.Count); + for (int i = 0; i < _colliders.Count; i++) + { + string debugStr = $" _colliders.{_colliders[i].name} vs target._colliders.{target._colliders[i].name}"; + Assert.AreEqual(_colliders[i].name, target._colliders[i].name, $"name:{debugStr}"); + // Assert.AreEqual(_colliders[i].direction, target._colliders[i].direction, $"direction:{debugStr}"); + // Assert.AreEqual(_colliders[i].height, target._colliders[i].height, $"height:{debugStr}"); + // Assert.AreEqual(_colliders[i].radius, target._colliders[i].radius, $"radius:{debugStr}"); + } + Assert.AreEqual(ColliderNames.Count, target.ColliderNames.Count); + Assert.AreEqual(RotationNames.Count, target.RotationNames.Count); + Assert.AreEqual(BodyPartNames.Count, target.BodyPartNames.Count); + for (int i = 0; i < ColliderNames.Count; i++) + Assert.AreEqual(ColliderNames[i], target.ColliderNames[i]); + for (int i = 0; i < RotationNames.Count; i++) + Assert.AreEqual(RotationNames[i], target.RotationNames[i]); + for (int i = 0; i < BodyPartNames.Count; i++) + Assert.AreEqual(BodyPartNames[i], target.BodyPartNames[i]); + } + + void GetAllPoints(Vector3[] pointBuffer) + { + int idx = 0; + foreach (var collider in _colliders) + { + CapsuleCollider capsule = collider as CapsuleCollider; + BoxCollider box = collider as BoxCollider; + SphereCollider sphere = collider as SphereCollider; + Vector3 c = Vector3.zero; + Bounds b = new Bounds(c, c); + + if (collider.name == "head") + { + c = c; + } + + if (capsule != null) + { + c = capsule.center; + var r = capsule.radius * 2; + var h = capsule.height; + h = Mathf.Max(r, h); // capsules height is clipped at r + if (capsule.direction == 0) + b = new Bounds(c, new Vector3(h, r, r)); + else if (capsule.direction == 1) + b = new Bounds(c, new Vector3(r, h, r)); + else if (capsule.direction == 2) + b = new Bounds(c, new Vector3(r, r, h)); + else throw new NotImplementedException(); + } + else if (box != null) + { + c = box.center; + b = new Bounds(c, box.size); + } + else if (sphere != null) + { + c = sphere.center; + var r = sphere.radius * 2; + b = new Bounds(c, new Vector3(r, r, r)); + } + else + throw new NotImplementedException(); + + Vector3 point1, point2, point3, point4, point5, point6; + point1 = new Vector3(b.max.x, c.y, c.z); + point2 = new Vector3(b.min.x, c.y, c.z); + point3 = new Vector3(c.x, b.max.y, c.z); + point4 = new Vector3(c.x, b.min.y, c.z); + point5 = new Vector3(c.x, c.y, b.max.z); + point6 = new Vector3(c.x, c.y, b.min.z); + // from local collider space to world space + point1 = collider.transform.TransformPoint(point1); + point2 = collider.transform.TransformPoint(point2); + point3 = collider.transform.TransformPoint(point3); + point4 = collider.transform.TransformPoint(point4); + point5 = collider.transform.TransformPoint(point5); + point6 = collider.transform.TransformPoint(point6); + // transform from world space, into local space + point1 = this.transform.InverseTransformPoint(point1); + point2 = this.transform.InverseTransformPoint(point2); + point3 = this.transform.InverseTransformPoint(point3); + point4 = this.transform.InverseTransformPoint(point4); + point5 = this.transform.InverseTransformPoint(point5); + point6 = this.transform.InverseTransformPoint(point6); + + pointBuffer[idx++] = point1; + pointBuffer[idx++] = point2; + pointBuffer[idx++] = point3; + pointBuffer[idx++] = point4; + pointBuffer[idx++] = point5; + pointBuffer[idx++] = point6; + } + } + Vector3 GetCenterOfMass() + { + var centerOfMass = Vector3.zero; + float totalMass = 0f; + foreach (ArticulationBody ab in _articulationBodyParts) + { + centerOfMass += ab.worldCenterOfMass * ab.mass; + totalMass += ab.mass; + } + centerOfMass /= totalMass; + // centerOfMass -= _spawnableEnv.transform.position; + return centerOfMass; + } + public void DrawPointDistancesFrom(RewardStats target, int objIdex) + { + int start = 0; + int end = Points.Length - 1; + if (objIdex >= 0) + { + start = objIdex * 6; + end = (objIdex * 6) + 6; + } + for (int i = start; i < end; i++) + { + Gizmos.color = Color.white; + var from = Points[i]; + var to = target.Points[i]; + var toTarget = target.Points[i]; + // transform to this object's world space + from = this.transform.TransformPoint(from); + to = this.transform.TransformPoint(to); + // transform to target's world space + toTarget = target.transform.TransformPoint(toTarget); + Gizmos.color = Color.white; + Gizmos.DrawLine(from, toTarget); + // show this objects velocity + Vector3 velocity = PointVelocity[i]; + Gizmos.color = Color.blue; + Gizmos.DrawRay(from, velocity); + // show targets velocity + Vector3 velocityTarget = target.PointVelocity[i]; + Gizmos.color = Color.green; + Gizmos.DrawRay(toTarget, velocityTarget); + } + } +} diff --git a/Assets/MarathonController/Scripts/RewardStats.cs.meta b/Assets/MarathonController/Scripts/RewardStats.cs.meta new file mode 100644 index 0000000..7c446f3 --- /dev/null +++ b/Assets/MarathonController/Scripts/RewardStats.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 96614916e0da54eff9656e7271dac845 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/Rewards2Learn.cs b/Assets/MarathonController/Scripts/Rewards2Learn.cs new file mode 100644 index 0000000..51adba2 --- /dev/null +++ b/Assets/MarathonController/Scripts/Rewards2Learn.cs @@ -0,0 +1,432 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using Unity.MLAgents; +using UnityEngine; +using UnityEngine.Assertions; +using ManyWorlds; + +public class Rewards2Learn : MonoBehaviour +{ + [Header("Reward")] + public float SumOfSubRewards; + public float Reward; + + [Header("Position Reward")] + public float SumOfDistances; + public float SumOfSqrDistances; + public float PositionReward; + + [Header("Velocity Reward")] + public float PointsVelocityDifferenceSquared; + public float PointsVelocityReward; + + [Header("Local Pose Reward")] + public List RotationDifferences; + public float SumOfRotationDifferences; + public float SumOfRotationSqrDifferences; + public float LocalPoseReward; + + + + [Header("Center of Mass Velocity Reward")] + public Vector3 MocapCOMVelocity; + public Vector3 RagDollCOMVelocity; + + public float COMVelocityDifference; + public float ComVelocityReward; + public float ComReward; + + [Header("Center of Mass Direction Reward")] + public float ComDirectionDistance; + public float ComDirectionReward; + + [Header("Center of Mass Position Reward")] + public float ComDistance; + public float DistanceFactor; + public float ComPositionReward; + + // [Header("Direction Factor")] + // public float DirectionDistance; + // public float DirectionFactor; + [Header("Velocity Difference Reward")] + public float VelDifferenceError; + public float VelAvDiffTwoStepsError; + public float VelAvDiffFourStepsError; + public float VelDifferenceReward; + public float VelDiffTwoStepsReward; + public float VelDiffFourStepsReward; + float [][] _velHistoryTwoSteps; + float [][] _velHistoryFourSteps; + + + [Header("Minimize Energy Reward")] + public float KineticEnergyMetric; + public float EnergyMinimReward; + + + + [Header("Misc")] + public float HeadHeightDistance; + + [Header("Gizmos")] + public int ObjectForPointDistancesGizmo; + + SpawnableEnv _spawnableEnv; + MapAnim2Ragdoll _mocap; + GameObject _ragDoll; + InputController _inputController; + + internal RewardStats _mocapBodyStats; + internal RewardStats _ragDollBodyStats; + + // List _mocapBodyParts; + // List _ragDollBodyParts; + Transform _mocapHead; + Transform _ragDollHead; + + bool _hasLazyInitialized; + bool _reproduceDReCon; + + [Header("Things to check for rewards")] + public string headname = "head"; + + public string targetedRootName = "articulation:Hips"; + + + public void OnAgentInitialize(bool reproduceDReCon) + { + Assert.IsFalse(_hasLazyInitialized); + + _hasLazyInitialized = true; + _reproduceDReCon = reproduceDReCon; + + _spawnableEnv = GetComponentInParent(); + Assert.IsNotNull(_spawnableEnv); + + _mocap = _spawnableEnv.GetComponentInChildren(); + + _ragDoll = _spawnableEnv.GetComponentInChildren().gameObject; + Assert.IsNotNull(_mocap); + Assert.IsNotNull(_ragDoll); + _inputController = _spawnableEnv.GetComponentInChildren(); + // _mocapBodyParts = _mocap.GetComponentsInChildren().ToList(); + // _ragDollBodyParts = _ragDoll.GetComponentsInChildren().ToList(); + // Assert.AreEqual(_mocapBodyParts.Count, _ragDollBodyParts.Count); + _mocapHead = _mocap + .GetComponentsInChildren() + .First(x => x.name == headname); + _ragDollHead = _ragDoll + .GetComponentsInChildren() + .First(x => x.name == headname); + _mocapBodyStats = new GameObject("MocapDReConRewardStats").AddComponent(); + _mocapBodyStats.setRootName(targetedRootName); + _mocapBodyStats.setHeadName(headname); + + _mocapBodyStats.ObjectToTrack = _mocap; + + _mocapBodyStats.transform.SetParent(_spawnableEnv.transform); + _mocapBodyStats.OnAgentInitialize(_mocapBodyStats.ObjectToTrack.transform); + + _ragDollBodyStats = new GameObject("RagDollDReConRewardStats").AddComponent(); + _ragDollBodyStats.setRootName(targetedRootName); + _ragDollBodyStats.setHeadName(headname); + + + _ragDollBodyStats.ObjectToTrack = this; + _ragDollBodyStats.transform.SetParent(_spawnableEnv.transform); + _ragDollBodyStats.OnAgentInitialize(transform, _mocapBodyStats); + + _velHistoryTwoSteps = new float[][]{ + _ragDollBodyStats.PointVelocity + .Zip(_mocapBodyStats.PointVelocity, (x,y) => x.magnitude-y.magnitude) + .ToArray(), + _ragDollBodyStats.PointVelocity + .Zip(_mocapBodyStats.PointVelocity, (x,y) => x.magnitude-y.magnitude) + .ToArray() + }; + _velHistoryFourSteps = new float[][]{ + _ragDollBodyStats.PointVelocity + .Zip(_mocapBodyStats.PointVelocity, (x,y) => x.magnitude-y.magnitude) + .ToArray(), + _ragDollBodyStats.PointVelocity + .Zip(_mocapBodyStats.PointVelocity, (x,y) => x.magnitude-y.magnitude) + .ToArray(), + _ragDollBodyStats.PointVelocity + .Zip(_mocapBodyStats.PointVelocity, (x,y) => x.magnitude-y.magnitude) + .ToArray(), + _ragDollBodyStats.PointVelocity + .Zip(_mocapBodyStats.PointVelocity, (x,y) => x.magnitude-y.magnitude) + .ToArray() + }; + + _mocapBodyStats.AssertIsCompatible(_ragDollBodyStats); + } + + // Update is called once per frame + public void OnStep(float timeDelta) + { + _mocapBodyStats.SetStatusForStep(timeDelta); + _ragDollBodyStats.SetStatusForStep(timeDelta); + + if (_reproduceDReCon) + { + DReConRewards(timeDelta); + return; + } + + // deep sort scales + float num_points = _ragDollBodyStats.Points.Length; + float num_joints = num_points / 6f; + float pose_scale = 2.0f / 15f * num_joints; + float vel_scale = 0.1f / 15f * num_joints; + // note is 10 in code, but 40 in paper. + const float position_scale = 10f; // was end_eff_scale + // const float root_scale = 5f; + const float com_scale = 5f; + + // DeepMimic + // const float pose_w = 0.5f; + // const float vel_w = 0.05f; + // const float position_w = 0.15f; // was end_eff_w + // // const float root_w = 0.2f; + // const float com_w = 0.2f; // * 2 + // const float energy_w = 0.2f; + + // // UniCon + // const float pose_w = 0.4f; + // const float vel_w = 0.1f; + // const float position_w = 0.1f; + // // const float com_direction_w = 0.1f; + // const float com_direction_w = 0.2f; + // const float com_velocity_w = 0.1f; + // const float energy_w = 0.2f; + + // MarCon + const float pose_w = 0.2f; + const float position_w = 0.2f; + const float com_direction_w = 0.1f; + const float com_velocity_w = 0.3f; + const float energy_w = 0.2f; + + // position reward + List distances = _mocapBodyStats.GetPointDistancesFrom(_ragDollBodyStats); + List sqrDistances = distances.Select(x=> x*x).ToList(); + SumOfDistances = distances.Sum(); + SumOfSqrDistances = sqrDistances.Sum(); + var deepMimicScaledDistance = SumOfSqrDistances / (num_points / 4); + PositionReward = Mathf.Exp(-position_scale * (deepMimicScaledDistance)); + if (PositionReward == 0f) + { + PositionReward = 0f; + } + + // center of mass velocity reward + MocapCOMVelocity = _mocapBodyStats.CenterOfMassVelocity; + RagDollCOMVelocity = _ragDollBodyStats.CenterOfMassVelocity; + COMVelocityDifference = (MocapCOMVelocity-RagDollCOMVelocity).magnitude; + ComVelocityReward = Mathf.Pow(COMVelocityDifference,2); + ComVelocityReward = Mathf.Exp(-com_scale*ComVelocityReward); + + // points velocity + List velocityDistances = _mocapBodyStats.GetPointVelocityDistancesFrom(_ragDollBodyStats); + List sqrVelocityDistances = velocityDistances.Select(x=> x*x).ToList(); + PointsVelocityDifferenceSquared = sqrVelocityDistances.Sum(); + var deepMimicScaledVelocityDistanceSquared = PointsVelocityDifferenceSquared / (num_points / 4); + PointsVelocityReward = Mathf.Exp(-vel_scale * deepMimicScaledVelocityDistanceSquared); + + // local pose reward + if (RotationDifferences == null || RotationDifferences.Count < _mocapBodyStats.Rotations.Count) + RotationDifferences = Enumerable.Range(0,_mocapBodyStats.Rotations.Count) + .Select(x=>0f) + .ToList(); + SumOfRotationDifferences = 0f; + SumOfRotationSqrDifferences = 0f; + for (int i = 0; i < _mocapBodyStats.Rotations.Count; i++) + { + var angle = Quaternion.Angle(_mocapBodyStats.Rotations[i], _ragDollBodyStats.Rotations[i]); + Assert.IsTrue(angle <= 180f); + angle = DReConObservationStats.NormalizedAngle(angle); + angle = Mathf.Abs(angle); + angle = angle / Mathf.PI; + var sqrAngle = angle * angle; + RotationDifferences[i] = angle; + SumOfRotationDifferences += angle; + SumOfRotationSqrDifferences += sqrAngle; + } + LocalPoseReward = Mathf.Exp(-pose_scale * SumOfRotationSqrDifferences); + + // center of mass direction reward (from 0f to 1f) + ComDirectionDistance = Vector3.Dot( + _mocapBodyStats.transform.forward, + _ragDollBodyStats.transform.forward); + ComDirectionDistance = 1f-((ComDirectionDistance + 1f)/2f); + ComDirectionReward = ComDirectionDistance; + ComDirectionReward = Mathf.Exp(-com_scale*ComDirectionReward); + + // // COM velocity factor + // var comVelocityFactor = COMVelocityDifference; + // comVelocityFactor = comVelocityFactor / 2f; + // comVelocityFactor = 1.01f - comVelocityFactor; + // comVelocityFactor = Mathf.Clamp(comVelocityFactor, 0f, 1f); + + // Calc Velocity difference Error + VelDifferenceError = _ragDollBodyStats.PointVelocity + .Zip(_mocapBodyStats.PointVelocity, (x,y) => (x-y).magnitude) + .Average(); + VelDifferenceError = Mathf.Abs(VelDifferenceError); + VelDifferenceReward = Mathf.Exp(-10f * VelDifferenceError); + VelDifferenceReward = Mathf.Clamp(VelDifferenceReward, 0f, 1f); + // roll history + var oldestTwoSteps = _velHistoryTwoSteps[1]; + _velHistoryTwoSteps[1] = _velHistoryTwoSteps[0]; + _velHistoryTwoSteps[0] = oldestTwoSteps; + var oldestFourSteps = _velHistoryFourSteps[3]; + _velHistoryFourSteps[3] = _velHistoryFourSteps[2]; + _velHistoryFourSteps[2] = _velHistoryFourSteps[1]; + _velHistoryFourSteps[1] = _velHistoryFourSteps[0]; + _velHistoryFourSteps[0] = oldestFourSteps; + int velRows = _ragDollBodyStats.PointVelocity.Length; + for (int i = 0; i < velRows; i++) + { + var diff = _ragDollBodyStats.PointVelocity[i]-_mocapBodyStats.PointVelocity[i]; + var sqDiff = diff.magnitude*diff.magnitude; + var absDiff = Mathf.Abs(diff.magnitude); + oldestTwoSteps[i] = absDiff; + oldestFourSteps[i] = absDiff; + // oldestTwoSteps[i] = sqDiff; + // oldestFourSteps[i] = sqDiff; + } + VelAvDiffTwoStepsError = + _velHistoryTwoSteps[0].Sum() + + _velHistoryTwoSteps[1].Sum(); + VelAvDiffTwoStepsError /= velRows*2f; + VelAvDiffFourStepsError = + _velHistoryFourSteps[0].Sum() + + _velHistoryFourSteps[1].Sum() + + _velHistoryFourSteps[2].Sum() + + _velHistoryFourSteps[3].Sum(); + VelAvDiffFourStepsError /= velRows*4f; + VelDiffTwoStepsReward = Mathf.Exp(-10 * VelAvDiffTwoStepsError); + VelDiffFourStepsReward = Mathf.Exp(-10 * VelAvDiffFourStepsError); + + // calculate energy: + //we obviate the masses, we want this to be important all across + List es = _ragDollBodyStats.PointVelocity.Select(x => x.magnitude * x.magnitude).ToList(); + KineticEnergyMetric = es.Sum() / es.Count; + //a quick run suggests the input values range between 0 and 10, with most values near 0, so a simple way to get a reward value between 0 and 1 seems: + EnergyMinimReward = Mathf.Exp(-KineticEnergyMetric); + + + // misc + HeadHeightDistance = (_mocapHead.position.y - _ragDollHead.position.y); + HeadHeightDistance = Mathf.Abs(HeadHeightDistance); + + // reward + // SumOfSubRewards = ComPositionReward+ComVelocityReward+ComDirectionReward+PositionReward+LocalPoseReward+PointsVelocityReward+VelDifferenceReward; + SumOfSubRewards = ComVelocityReward+ComDirectionReward+PositionReward+LocalPoseReward+VelDifferenceReward; + Reward = 0f + + (ComVelocityReward * com_velocity_w) + // com_w) + + (ComDirectionReward * com_direction_w) + // com_w) + + (PositionReward * position_w) + + (LocalPoseReward * pose_w) + + // (PointsVelocityReward * vel_w) + + (VelDifferenceReward * energy_w); + + + // Reward = Reward + EnergyMinimReward; + + // var sqrtComVelocityReward = Mathf.Sqrt(ComVelocityReward); + // var sqrtComDirectionReward = Mathf.Sqrt(ComDirectionReward); + // Reward *= (sqrtComVelocityReward*sqrtComDirectionReward); + } + + void DReConRewards(float timeDelta) + { + // position reward + List distances = _mocapBodyStats.GetPointDistancesFrom(_ragDollBodyStats); + PositionReward = -7.37f / (distances.Count / 6f); + List sqrDistances = distances.Select(x => x * x).ToList(); + SumOfDistances = distances.Sum(); + SumOfSqrDistances = sqrDistances.Sum(); + PositionReward *= SumOfSqrDistances; + PositionReward = Mathf.Exp(PositionReward); + + // center of mass velocity reward + MocapCOMVelocity = _mocapBodyStats.CenterOfMassVelocity; + RagDollCOMVelocity = _ragDollBodyStats.CenterOfMassVelocity; + COMVelocityDifference = (MocapCOMVelocity - RagDollCOMVelocity).magnitude; + ComReward = -Mathf.Pow(COMVelocityDifference, 2); + ComReward = Mathf.Exp(ComReward); + + // points velocity + List velocityDistances = _mocapBodyStats.GetPointVelocityDistancesFrom(_ragDollBodyStats); + List sqrVelocityDistances = velocityDistances.Select(x => x * x).ToList(); + PointsVelocityDifferenceSquared = sqrVelocityDistances.Sum(); + PointsVelocityReward = (-1f / _mocapBodyStats.PointVelocity.Length) * PointsVelocityDifferenceSquared; + PointsVelocityReward = Mathf.Exp(PointsVelocityReward); + + // local pose reward + if (RotationDifferences == null || RotationDifferences.Count < _mocapBodyStats.Rotations.Count) + RotationDifferences = Enumerable.Range(0, _mocapBodyStats.Rotations.Count) + .Select(x => 0f) + .ToList(); + SumOfRotationDifferences = 0f; + SumOfRotationSqrDifferences = 0f; + for (int i = 0; i < _mocapBodyStats.Rotations.Count; i++) + { + var angle = Quaternion.Angle(_mocapBodyStats.Rotations[i], _ragDollBodyStats.Rotations[i]); + Assert.IsTrue(angle <= 180f); + angle = ObservationStats.NormalizedAngle(angle); + var sqrAngle = angle * angle; + RotationDifferences[i] = angle; + SumOfRotationDifferences += angle; + SumOfRotationSqrDifferences += sqrAngle; + } + LocalPoseReward = -6.5f / RotationDifferences.Count; + LocalPoseReward *= SumOfRotationSqrDifferences; + LocalPoseReward = Mathf.Exp(LocalPoseReward); + + // distance factor + ComDistance = (_mocapBodyStats.LastCenterOfMassInWorldSpace - _ragDollBodyStats.LastCenterOfMassInWorldSpace).magnitude; + HeadHeightDistance = (_mocapHead.position.y - _ragDollHead.position.y); + HeadHeightDistance = Mathf.Abs(HeadHeightDistance); + var headDistance = (_mocapBodyStats.HeadPositionInWorldSpace - _ragDollBodyStats.HeadPositionInWorldSpace).magnitude; + DistanceFactor = Mathf.Pow(headDistance, 2); + DistanceFactor = 1.4f * DistanceFactor; + DistanceFactor = 1.3f - DistanceFactor; + DistanceFactor = Mathf.Clamp(DistanceFactor, 0f, 1f); + + // // direction factor + // Vector3 desiredDirection = _inputController.HorizontalDirection; + // var curDirection = _ragDollBodyStats.transform.forward; + // // cosAngle + // var directionDifference = Vector3.Dot(desiredDirection, curDirection); + // DirectionDistance = (1f + directionDifference) /2f; // normalize the error + // DirectionFactor = Mathf.Pow(DirectionDistance,2); + // DirectionFactor = Mathf.Clamp(DirectionFactor, 0f, 1f); + + // misc + + // reward + SumOfSubRewards = PositionReward + ComReward + PointsVelocityReward + LocalPoseReward; + Reward = DistanceFactor * SumOfSubRewards; + // Reward = (DirectionFactor*SumOfSubRewards) * DistanceFactor; + } + public void OnReset() + { + Assert.IsTrue(_hasLazyInitialized); + + _mocapBodyStats.OnReset(); + _ragDollBodyStats.OnReset(); + } + void OnDrawGizmos() + { + if (_ragDollBodyStats == null) + return; + var max = (_ragDollBodyStats.Points.Length / 6) - 1; + ObjectForPointDistancesGizmo = Mathf.Clamp(ObjectForPointDistancesGizmo, -1, max); + // _mocapBodyStats.DrawPointDistancesFrom(_ragDollBodyStats, ObjectForPointDistancesGizmo); + _ragDollBodyStats.DrawPointDistancesFrom(_mocapBodyStats, ObjectForPointDistancesGizmo); + } +} diff --git a/Assets/MarathonController/Scripts/Rewards2Learn.cs.meta b/Assets/MarathonController/Scripts/Rewards2Learn.cs.meta new file mode 100644 index 0000000..0f7fabd --- /dev/null +++ b/Assets/MarathonController/Scripts/Rewards2Learn.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 30315637017c648e4966045b4e088c22 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/TrainingEnvironmentGenerator.cs b/Assets/MarathonController/Scripts/TrainingEnvironmentGenerator.cs new file mode 100644 index 0000000..231890d --- /dev/null +++ b/Assets/MarathonController/Scripts/TrainingEnvironmentGenerator.cs @@ -0,0 +1,960 @@ +using System.Collections; +using System.Collections.Generic; +//using System; + +using UnityEngine; + + +using Unity.MLAgents.Policies; +using Unity.MLAgents; +using System.Linq; +using Unity.Barracuda; +using System.ComponentModel; + +public class TrainingEnvironmentGenerator : MonoBehaviour +{ + + + + [Header("The animated character:")] + + + [SerializeField] + Animator characterReference; + + [SerializeField] + Transform characterReferenceHead; + + [SerializeField] + Transform characterReferenceRoot; + + [Tooltip("do not include the root nor the neck")] + [SerializeField] + Transform[] characterSpine; + + + [Tooltip("fingers will be excluded from physics-learning")] + [SerializeField] + Transform[] characterReferenceHands; + + //we assume here is the end-effector, but feet have an articulaiton (sensors will be placed on these and their immediate parents) + //strategy to be checked: if for a quadruped we add the 4 feet here, does it work? + [Tooltip("same as above but not taking into account fingers. Put the last joint")] + [SerializeField] + Transform[] characterReferenceFeet; + + + [Header("How we want the generated assets stored:")] + + [SerializeField] + string AgentName; + + [SerializeField] + string TrainingEnvName; + + + + [Header("Configuration options:")] + [SerializeField] + string LearningConfigName; + + [Range(0, 359)] + public int MinROMNeededForJoint = 0; + + + [Tooltip("body mass in grams/ml")] + [SerializeField] + float massdensity = 1.01f; + + + + [SerializeField] + string trainingLayerName = "marathon"; + + //[SerializeField] + //ROMparserSwingTwist ROMparser; + + [SerializeField] + public RangeOfMotionValues info2store; + + + [Header("Prefabs to generate training environment:")] + [SerializeField] + ManyWorlds.SpawnableEnv referenceSpawnableEnvironment; + + [SerializeField] + Material trainerMaterial; + + [SerializeField] + PhysicMaterial colliderMaterial; + + + + //things generated procedurally that we store to configure after the generation of the environment: + [HideInInspector] + [SerializeField] + Animator character4training; + + [HideInInspector] + [SerializeField] + Animator character4synthesis; + + [HideInInspector][SerializeField] + ManyWorlds.SpawnableEnv _outcome; + + + + + + [HideInInspector] + [SerializeField] + List articulatedJoints; + + [HideInInspector] + [SerializeField] + Muscles muscleteam; + + public ManyWorlds.SpawnableEnv Outcome{ get { return _outcome; } } + + + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } + + + public void GenerateTrainingEnv() { + + character4training = Instantiate(characterReference.gameObject).GetComponent(); + character4training.gameObject.SetActive(true); + + //we assume there is an animated controller + // + // + //possibly, we will need to add controllers): + + + + if (character4training.GetComponent() == null) + character4training.gameObject.AddComponent(); + + + + MapAnim2Ragdoll mca =character4training.gameObject.AddComponent(); + //mca.IsGeneratedProcedurally = true; + + character4training.gameObject.AddComponent(); + character4training.name = "Source:" + AgentName; + + SkinnedMeshRenderer[] renderers = character4training.GetComponentsInChildren(); + foreach (SkinnedMeshRenderer r in renderers) { + + Material[] mats = r.sharedMaterials; + for (int i =0; i < mats.Length; i++) { + mats[i] = trainerMaterial; + } + r.sharedMaterials = mats; + } + + + + + + character4synthesis = Instantiate(characterReference.gameObject).GetComponent(); + character4synthesis.gameObject.SetActive(true); + + character4synthesis.name = "Result:" + AgentName ; + + + //we remove everything except the transform + UnityEngine.Component[] list = character4synthesis.GetComponents(typeof(UnityEngine.Component)); + foreach (UnityEngine.Component c in list) + { + + if (c is Transform || c is Animator || c is CharacterController) + { + } + else + { + DestroyImmediate(c); + + } + + } + + character4synthesis.GetComponent().runtimeAnimatorController = null; + + + + + MapRagdoll2Anim rca = character4synthesis.gameObject.AddComponent(); + + + _outcome = Instantiate(referenceSpawnableEnvironment).GetComponent(); + _outcome.name = TrainingEnvName; + + + ProcRagdollAgent ragdollMarathon = generateRagDollFromAnimatedSource(rca, _outcome); + + + Transform[] ts= ragdollMarathon.transform.GetComponentsInChildren(); + foreach (Transform t in ts) { + t.gameObject.layer = LayerMask.NameToLayer(trainingLayerName); + } + + + + + + + + addTrainingParameters(rca, ragdollMarathon); + + + //UNITY BUG + //This below seems to make it crash. My guess is that: + /* + ArticulationBody is a normal component, but it also does some odd thing: it affects the physical simluation, since it is a rigidBody plus an articulatedJoint. The way it is defined is that it has the properties of a rigidBody, but it ALSO uses the hierarchy of transforms to define a chain of articulationJoints, with their rotation constraints, etc. Most notably, the ArticulationBody that is highest in the root gets assigned a property automatically, "isRoot", which means it's physics constraints are different.My guess is that when you change the hierarchy in the editor, at some point in the future the chain of ArticulationBody recalculates who is the root, and changes its properties. However since this relates to physics, it is not done in the same thread. +If the script doing this is short, it works because this is finished before the update of the ArticulationBody chain is triggered. But when I add more functionality, the script lasts longer, and then it crashes. This is why I kept getting those Physx errors, and why it kept happening in a not-so-reliable way, because we do not have any way to know when this recalculation is done.The fact that ArticulationBody is a fairly recent addition to Unity also makes me suspect they did not debug it properly.The solution seems to be to do all the setup while having the game objects that have articulationBody components with no hierarchy changes, and also having the rootgameobject inactive. When I do this, I am guessing it does not trigger the update of the ArticulationBody chain. + + I seem to have a reliable crash: + + 1.if I use ragdollroot.gameObject.SetActive(true) at the end of my configuration script, it crashes. + 2.if I comment that line, it does not. + 3.if I set it to active manually, through the editor, after running the script with that line commented, it works. + + */ + //ragdoll4training.gameObject.SetActive(true); + + + _outcome.GetComponent().ragdollcontroller = ragdollMarathon.gameObject; + + + character4training.transform.SetParent(_outcome.transform); + _outcome.GetComponent().movementsource = character4training.gameObject; + + character4synthesis.transform.SetParent(_outcome.transform); + + + //ragdoll4training.gameObject.SetActive(true); + + + + + } + + + /* + public void activateRagdoll() { + + RagDollAgent ragdoll4training = _outcome.GetComponentInChildren(true); + if(ragdoll4training!=null) + ragdoll4training.gameObject.SetActive(true); + + + } + */ + + +ProcRagdollAgent generateRagDollFromAnimatedSource( MapRagdoll2Anim target, ManyWorlds.SpawnableEnv trainingenv) { + + + GameObject temp = GameObject.Instantiate(target.gameObject); + + + //1. we remove everything we do not need: + + //1.1 we remove meshes + SkinnedMeshRenderer[] renderers = temp.GetComponentsInChildren(); + foreach (SkinnedMeshRenderer rend in renderers) + { + + if(rend.gameObject != null) + DestroyImmediate(rend.gameObject); + + } + + + //1.2 we remove everything except the transforms + UnityEngine.Component[] list = temp.GetComponents(typeof(UnityEngine.Component)); + foreach (UnityEngine.Component c in list) { + + if (c is Transform) + { + } + else { + DestroyImmediate(c); + + } + + } + + //1.3 we also remove any renderers from the ragdoll + var meshNamesToDelete = temp.GetComponentsInChildren() + .Select(x=>x.name) + .ToArray(); + foreach (var name in meshNamesToDelete) + { + var toDel = temp.GetComponentsInChildren().First(x=>x.name == name); + toDel.transform.parent = null; + GameObject.DestroyImmediate(toDel.gameObject); + } + + + temp.name = "Ragdoll:" + AgentName ; + muscleteam= temp.AddComponent(); + temp.transform.position = target.transform.position; + temp.transform.rotation = target.transform.rotation; + + + //1.4 we drop the sons of the limbs (to avoid including fingers in the following procedural steps) + + Transform[] pack = temp.GetComponentsInChildren(); + Transform root = pack.First(x => x.name == characterReferenceRoot.name); + Transform[] joints = root.transform.GetComponentsInChildren(); + List childstodelete = new List(); + + foreach (Transform t in characterReferenceHands) { + string limbname = t.name;// + "(Clone)"; + //Debug.Log("checking sons of: " + limbname); + Transform limb = joints.First(x => x.name == limbname); + + Transform[] sons = limb.GetComponentsInChildren(); + foreach (Transform t2 in sons) + { + if(t2.name != limb.name) + childstodelete.Add(t2); + + } + } + + Transform headJoint = joints.First(x => x.name == characterReferenceHead.name); + //if there are eyes or head top, we also remove them + foreach (Transform child in headJoint) + { + childstodelete.Add(child); + + } + + + + + + + + List listofjoints = new List(joints); + foreach (Transform t2 in childstodelete) + { + listofjoints.Remove(t2); + t2.DetachChildren();//otherwise, it tries to destroy the children later, and fails. + DestroyImmediate(t2.gameObject); + } + + + + //2. We add articulationBody and Collider components + + //2.1 for each remaining joint we add an articulationBody and a collider for each bone + joints = listofjoints.ToArray(); + articulatedJoints = new List(); + + List colliders = new List(); + + List hos = new List(); + + foreach (Transform j in joints) { + + + ArticulationBody ab = j.gameObject.AddComponent(); + ab.anchorRotation = Quaternion.identity; + ab.mass = 0.1f; + ab.jointType = ArticulationJointType.FixedJoint; + articulatedJoints.Add(ab); + + string namebase = j.name.Replace("(Clone)", "");//probably not needed + + j.name = "articulation:" + namebase; + + GameObject go = new GameObject(); + go.transform.position = j.gameObject.transform.position; + go.transform.parent = j.gameObject.transform; + go.name = "collider:" + namebase; + CapsuleCollider c = go.AddComponent(); + c.material = colliderMaterial; + c.height = .06f; + c.radius = c.height; + colliders.Add(c); + + + HandleOverlap ho= go.AddComponent(); + hos.Add(ho); + + go.AddComponent(); + + } + + + //2.1bis we also handle the Parents in HandleOverlap: + foreach (HandleOverlap ho in hos) { + + + + //the dad is the articulationBody, the grandDad is the articulationBody's parent + string nameDadRef = ho.transform.parent.parent.name; + + if (nameDadRef == null) { + //Debug.Log("my name is: " + ho.name + "and I have no granddad"); + continue; + } + + + string nameColliderDadRef = "collider:" + nameDadRef.Replace("articulation:", ""); + + + + Collider colliderDad = colliders.FirstOrDefault(c => c.name.Equals(nameColliderDadRef)); + if (colliderDad == null) + { + //Debug.Log("my name is: " + ho.name + " and I have no collider Dad named " + nameColliderDadRef); + //this should happen only with the hips collider, because the granddad is not part of the articulationBody hierarchy + continue; + + } + + ho.Parent = colliderDad.gameObject; + //Debug.Log("set up " + ho.name + " with dad: " + colliderDad.name); + + } + + + + + //CAUTION! it is important to deactivate the hierarchy BEFORE we add ArticulationBody members, + // Doing it afterwards, and having it active, makes the entire thing crash + temp.transform.parent = trainingenv.transform; + temp.gameObject.SetActive(false); + + + //2.2 we configure the colliders, in general + + // List colliderNamesToDelete = new List(); + foreach (CapsuleCollider c in colliders) + { + string namebase = c.name.Replace("collider:", ""); + Transform j = joints.First(x=>x.name=="articulation:" + namebase); + // if not ArticulationBody, skip + var articulatedDad = j.GetComponent(); + if (articulatedDad == null) + continue; + + + //this works when childCount = 1 + j = joints.FirstOrDefault(x=>x.transform.parent.name=="articulation:" + namebase); + if (j==null) //these are the end points: feets and hands and head + + { + if (namebase == characterReferenceHead.name) + { + //neck displacement, relative to spine2: + Vector3 displacement = c.transform.parent.position - c.transform.parent.parent.position; + c.transform.position += displacement; + c.radius = 2 * c.radius; + + } + + //Debug.Log("no joint found associated with: " + "articulation:" + namebase); + // mark to delete as is an end point + //colliderNamesToDelete.Add(c.name); + continue; + } + + ArticulationBody ab = j.GetComponent(); + if (ab == null || ab.transform == joints[0]) + continue; + Vector3 dadPosition = articulatedDad.transform.position; + + Vector3 sonPosition = j.transform.position; + + if (articulatedDad.transform.childCount > 2) //2 is the next AB plus the collider + { + sonPosition = Vector3.zero; + int i = 0; + foreach (ArticulationBody tmp in articulatedDad.GetComponentsInChildren()) { + sonPosition += tmp.transform.position; + i++; + } + sonPosition /= i; + } + + + + + //ugly but it seems to work. + Vector3 direction = (dadPosition - sonPosition).normalized; + float[] directionarray = new float[3] { Mathf.Abs(direction.x), Mathf.Abs(direction.y), Mathf.Abs(direction.z) }; + float maxdir = Mathf.Max(directionarray); + List directionlist = new List(directionarray); + c.direction = directionlist.IndexOf(maxdir); + + if(namebase != characterReferenceRoot.name) + c.center = (sonPosition - dadPosition) / 2.0f; + + //to calculate the weight + c.height = Vector3.Distance(dadPosition, sonPosition); + c.radius = c.height / 7; + ab = c.transform.parent.GetComponent(); + ab.mass = massdensity * Mathf.PI * c.radius *c.radius *c.height * Mathf.Pow(10,3); //we are aproximating as a cylinder, assuming it wants it in kg + + + + + + } + // we do not delete end colliders as seams to delete feet + // foreach (var name in colliderNamesToDelete) + // { + // var toDel = colliders.First(x=>x.name == name); + // colliders.Remove(toDel); + // GameObject.DestroyImmediate(toDel); + // } + + + //2.3 we add a special treatment for the elements in the spine to have larger colliders: + + + //we estimate the width of the character: + float bodyWidth = 0; + + foreach (Transform spineJoint in characterSpine) { + + int childCount = spineJoint.childCount; + + + if (childCount > 1)//so, shoulders plus neck + { + int testIndex = 0; + + Vector2 range = Vector2.zero; + foreach (Transform child in spineJoint) + { + + if (child.localPosition.x < range[0]) + range[0] = child.localPosition.x; + if (child.localPosition.x > range[1]) + range[1] = child.localPosition.x; + + testIndex++; + } + + bodyWidth = 2.5f * (range[1] - range[0]); + + Debug.Log("spineJoint " + spineJoint.name + "has " + childCount + "childs and iterates" + testIndex + "which gives a body width estimated at: " + bodyWidth); + + //TODO: remove colliders in shoulders. + + } + + + } + + + //we put the right orientation and size: + foreach (CapsuleCollider c in colliders) + { + + string namebase = c.name.Replace("collider:", ""); + + Transform spineJoint = characterSpine.FirstOrDefault(x => x.name == namebase); + if (spineJoint == null) { + if (namebase == characterReferenceRoot.name)//we check if it is the root + spineJoint = characterReferenceRoot; + else + continue; + + } + + Transform j = joints.First(x => x.name == "articulation:" + namebase); + // if not ArticulationBody, skip + var aDad = j.GetComponent(); + Vector3 dadPosition = aDad.transform.position; + + + + //we put it horizontal + c.direction = 0;// direction.x; + + + float wide = c.height;//the height was previously calculated as a distance between successors + c.radius = wide / 2; + + + //c.height = 2 * wide; + c.height = bodyWidth; + + + + + aDad.mass = massdensity * Mathf.PI * c.radius * c.radius * c.height * Mathf.Pow(10, 3); //we are aproximating as a cylinder, assuming it wants it in kg + + + } + + + + //we remove colliders from the shoulders, since they interfer with the collision structure + foreach (Transform spineJoint in characterSpine) + { + + int childCount = spineJoint.childCount; + + + if (childCount > 1)//so, shoulders plus neck + { + + foreach (Transform child in spineJoint) + { + + //a.we find the corresponding collider + + string nameRef = child.name; + + + string nameColliderRef = "collider:" + nameRef; + + Collider C2delete = colliders.FirstOrDefault(x => x.name.Equals(nameColliderRef)); + + + //b.we find the collider corresponding to its child, update the Parent chain to skip the reference cllider + Transform t = child.GetChild(0); + Collider Cson = colliders.FirstOrDefault(x => x.name.Equals("collider:" + t.name)); + + Cson.GetComponent().Parent = C2delete.GetComponent().Parent; + + //c.we destruct the corresponding collider + colliders.Remove(C2delete); + DestroyImmediate(C2delete.gameObject); + + } + + } + + + } + + + + + + + + + + //2.4 we add sensors in feet to detect collisions + addSensorsInFeet(root); + + //since we replaced 2 capsulecollider by two box collideR: + colliders = new List(root.GetComponentsInChildren()); + + + + //2.5 we make sure the key elements are added in the observations: + + + foreach (Collider c in colliders) + { + + string namebase = c.name.Replace("collider:", ""); + + List stuff2observe = new List(characterReferenceHands); + stuff2observe.AddRange(characterReferenceFeet); + stuff2observe.Add(characterReferenceHead); + stuff2observe.Add(characterReferenceRoot); + Transform observationJoint = stuff2observe.FirstOrDefault(x => x.name == namebase); + if (observationJoint == null) + { + continue; + + } + + IgnoreColliderForObservation ig = c.GetComponent(); + if (ig != null) + DestroyImmediate(ig); + + } + + + + //I add reference to the ragdoll, the articulationBodyRoot: + target.ArticulationBodyRoot = root.GetComponent(); + + foreach (var articulationBody in root.GetComponentsInChildren()) + { + var overlap = articulationBody.gameObject.AddComponent(); + overlap.Parent = target.ArticulationBodyRoot.gameObject; + } + + + + + //at this stage, every single articulatedBody is root. Check it out with the script below + /* + foreach (Transform j in joints) + { + ArticulationBody ab = j.transform.GetComponent(); + if (ab.isRoot) + { + Debug.Log(ab.name + "is root "); + } + } + */ + + + + + ProcRagdollAgent _ragdoll4training = temp.AddComponent(); + // _ragdoll4training.transform.parent = trainingenv.transform; + //_ragdoll4training.transform.SetParent(trainingenv.transform); + + _ragdoll4training.CameraTarget = root; + + + // add the muscles. WE DID EARLIER + //generateMuscles(); + + + // center the articulationBody masses: + + muscleteam.CenterABMasses(); + + // choose the motor update mode + //muscleteam.MotorUpdateMode = Muscles.MotorMode.PDopenloop; + muscleteam.MotorUpdateMode = Muscles.MotorMode.PD; + + + return _ragdoll4training; + + } + + + void addSensorsInFeet(Transform root) { + + //I add the sensors in the feet: + Transform[] pack2 = root.GetComponentsInChildren(); + foreach (Transform t in characterReferenceFeet) + { + + Transform footDadRef = t.parent; + Transform footDad = pack2.First(x => x.name == "articulation:" + footDadRef.name); + Collider[] footColliders = footDad.GetComponentsInChildren(); + + + Transform foot = pack2.First(x => x.name == "articulation:" + t.name); + + // the sensor is based on the collider + //Collider[] footColliders = foot.GetComponentsInChildren(); + Collider footCollider = footColliders.First(x => x.name.Contains(t.name)); + + BoxCollider myBox = footCollider.gameObject.AddComponent(); + myBox.size = new Vector3(0.08f, 0.03f, 0.08f);//these is totally adjusted by hand + + + myBox.name = footCollider.name; + DestroyImmediate(footCollider); + + + addSensor2FootCollider(myBox); + + //we update the list: + footColliders = footDad.GetComponentsInChildren(); + + //we also add it to its father: + Collider footColliderDad = footColliders.First(x => x.name.Contains(footDadRef.name)); + + BoxCollider myBoxDad = footColliderDad.gameObject.AddComponent(); + myBoxDad.size = new Vector3(0.08f, 0.05f, 0.15f);//these is totally adjusted by hand + + + myBoxDad.transform.position = new Vector3(myBoxDad.transform.position.x, myBox.transform.position.y, myBoxDad.transform.position.z); + + myBoxDad.name = footColliderDad.name; + DestroyImmediate(footColliderDad); + + + addSensor2FootCollider(myBoxDad); + + + + } + } + + + void addSensor2FootCollider(Collider footCollider) { + + GameObject sensorGameObject = GameObject.Instantiate(footCollider.gameObject); + + sensorGameObject.name = sensorGameObject.name.Replace("(Clone)", ""); + sensorGameObject.name += "_sensor"; + Collider sensor = sensorGameObject.GetComponent(); + sensor.isTrigger = true; + // sensorGameObject.AddComponent(); + sensorGameObject.AddComponent(); + sensorGameObject.transform.parent = footCollider.transform.parent; + sensorGameObject.transform.position = footCollider.transform.position; + sensorGameObject.transform.rotation = footCollider.transform.rotation; + + + } + + + //it needs to go after adding ragdollAgent or it automatically ads an Agent, which generates conflict + void addTrainingParameters(MapRagdoll2Anim target, ProcRagdollAgent temp) { + + + + BehaviorParameters bp = temp.gameObject.GetComponent(); + + bp.BehaviorName = LearningConfigName; + + + + DecisionRequester dr =temp.gameObject.AddComponent(); + dr.DecisionPeriod = 2; + dr.TakeActionsBetweenDecisions = true; + + + + Rewards2Learn dcrew = temp.gameObject.AddComponent(); + dcrew.headname = "articulation:" + characterReferenceHead.name; + dcrew.targetedRootName = "articulation:" + characterReferenceRoot.name; //it should be it's son, but let's see + + + + temp.MaxStep = 2000; + temp.FixedDeltaTime = 0.0125f; + temp.RequestCamera = true; + + + temp.gameObject.AddComponent(); + Observations2Learn dcobs = temp.gameObject.AddComponent(); + dcobs.targetedRootName = characterReferenceRoot.name; // target.ArticulationBodyRoot.name; + + dcobs.targetedRootName = "articulation:" + characterReferenceRoot.name; //it should be it's son, but let's see + + MapRangeOfMotion2Constraints rom = temp.gameObject.AddComponent(); + + //used when we do not parse + rom.info2store = info2store; + + + } + + + + + + + public void GenerateRangeOfMotionParser() { + + + ROMparserSwingTwist rom = gameObject.GetComponentInChildren(); + if (rom == null) { + GameObject go = new GameObject(); + go.name = "ROM-parser"; + go.transform.parent = gameObject.transform; + rom = go.AddComponent(); + + + + } + + + rom.info2store = info2store; + rom.theAnimator = characterReference; + rom.skeletonRoot = characterReferenceRoot; + + rom.targetRagdollRoot = character4synthesis.GetComponent().ArticulationBodyRoot; + + rom.trainingEnv = _outcome; + + } + + void generateMuscles() { + + //muscles + + foreach(ArticulationBody ab in articulatedJoints) { + + Muscles.MusclePower muscle = new Muscles.MusclePower(); + muscle.PowerVector = new Vector3(40, 40, 40); + + + muscle.Muscle = ab.name; + + if (muscleteam.MusclePowers == null) + muscleteam.MusclePowers = new List(); + + muscleteam.MusclePowers.Add(muscle); + + } + + + + + } + + + + + + + public void Prepare4RangeOfMotionParsing() + { + _outcome.gameObject.SetActive(false); + characterReference.gameObject.SetActive(true); + + } + + + public void Prepare4EnvironmentStorage() + { + + characterReference.gameObject.SetActive(false); + + _outcome.gameObject.SetActive(true); + + // RagDollAgent ra = _outcome.GetComponentInChildren(true); + // ra.gameObject.SetActive(true); + + + + + + } + + public void ApplyROMasConstraintsAndConfigure() { + + MapRangeOfMotion2Constraints ROMonRagdoll = Outcome.GetComponentInChildren(true); + //ROMonRagdoll.MinROMNeededForJoint = MinROMNeededForJoint; + + if (ROMonRagdoll.info2store == null) { + ROMonRagdoll.info2store = this.info2store; + + } + + ROMonRagdoll.ConfigureTrainingForRagdoll(MinROMNeededForJoint); + + + generateMuscles(); + + ROMonRagdoll.GetComponent().DecisionPeriod = 2; + + ROMonRagdoll.gameObject.SetActive(true); + } +} diff --git a/Assets/MarathonController/Scripts/TrainingEnvironmentGenerator.cs.meta b/Assets/MarathonController/Scripts/TrainingEnvironmentGenerator.cs.meta new file mode 100644 index 0000000..d372f81 --- /dev/null +++ b/Assets/MarathonController/Scripts/TrainingEnvironmentGenerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1898a29c838a8f445af23e017c73e97a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonController/Scripts/Utils.cs b/Assets/MarathonController/Scripts/Utils.cs new file mode 100644 index 0000000..15ad659 --- /dev/null +++ b/Assets/MarathonController/Scripts/Utils.cs @@ -0,0 +1,132 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public static class Utils +{ + + + + // Find angular velocity. The delta rotation is converted to radians within [-pi, +pi]. + // Vector3 OldGetAngularVelocity(Quaternion from, Quaternion to, float timeDelta) + // { + // var rotationVelocity = FromToRotation(from, to); + // var angularVelocityInDeg = NormalizedEulerAngles(rotationVelocity.eulerAngles) / timeDelta; + // var angularVelocity = angularVelocityInDeg * Mathf.Deg2Rad; + // return angularVelocity; + // } + + + public static Vector3 GetAngularVelocity(Quaternion from, Quaternion to, float timeDelta = 1f) + { + Vector3 fromInDeg = Utils.GetSwingTwist(from); + Vector3 toInDeg = Utils.GetSwingTwist(to); + + return AngularVelocityInReducedCoordinates(fromInDeg, toInDeg, timeDelta); + } + + + //you can also use this to calculate acceleration, right? + public static Vector3 AngularVelocityInReducedCoordinates(Vector3 fromIn, Vector3 toIn, float timeDelta = 1f) + { + Vector3 diff = (fromIn - toIn)*Mathf.Deg2Rad; + Vector3 angularVelocity = diff / timeDelta; + return angularVelocity; + } + + + + public static Vector3 GetSwingTwist(Quaternion localRotation) + { + + + Quaternion a = new Quaternion(); + Quaternion b = new Quaternion(); + + + return GetSwingTwist(localRotation, out a, out b); + + } + + + + + + + public static Vector3 GetSwingTwist(Quaternion localRotation, out Quaternion swing, out Quaternion twist) + { + + //the decomposition in swing-twist, typically works like this: + + swing = new Quaternion(0.0f, localRotation.y, localRotation.z, localRotation.w); + swing = swing.normalized; + + //Twist: assuming q_localRotation = q_swing * q_twist + + twist = Quaternion.Inverse(swing) * localRotation; + + + //double check: + Quaternion temp = swing * twist; + + bool isTheSame = (Mathf.Abs(Quaternion.Angle(temp, localRotation)) < 0.001f); + + + if (!isTheSame) + Debug.LogError("I have: " + temp + "which does not match: " + localRotation + "because their angle is: " + Quaternion.Angle(temp, localRotation)); + + + Vector3 InReducedCoord = new Vector3(twist.eulerAngles.x, swing.eulerAngles.y, swing.eulerAngles.z); //this is consistent with how the values are stored in ArticulationBody: + + + //we make sure we keep the values nearest to 0 (with a modulus) + if (Mathf.Abs(InReducedCoord.x - 360) < Mathf.Abs(InReducedCoord.x)) + InReducedCoord.x = (InReducedCoord.x - 360); + if (Mathf.Abs(InReducedCoord.y - 360) < Mathf.Abs(InReducedCoord.y)) + InReducedCoord.y = (InReducedCoord.y - 360); + if (Mathf.Abs(InReducedCoord.z - 360) < Mathf.Abs(InReducedCoord.z)) + InReducedCoord.z = (InReducedCoord.z - 360); + + return InReducedCoord; + + + + } + + + public static ArticulationReducedSpace GetReducedSpaceFromTargetVector3(Vector3 target) { + + ArticulationReducedSpace ars = new ArticulationReducedSpace(); + ars.dofCount = 3; + ars[0] = target.x; + ars[1] = target.y; + ars[2] = target.z; + + return ars; + + } + + + public static Vector3 GetArticulationReducedSpaceInVector3(ArticulationReducedSpace ars) + { + Vector3 result = Vector3.zero;// new Vector3(); + + if (ars.dofCount > 0) + result.x = ars[0]; + if (ars.dofCount > 1) + result.y = ars[1]; + if (ars.dofCount > 2) + result.z = ars[2]; + + return result; + } + // Return rotation from one rotation to another + public static Quaternion FromToRotation(Quaternion from, Quaternion to) + { + if (to == from) return Quaternion.identity; + + return to * Quaternion.Inverse(from); + } + + +} diff --git a/Assets/MarathonController/Scripts/Utils.cs.meta b/Assets/MarathonController/Scripts/Utils.cs.meta new file mode 100644 index 0000000..4bc516b --- /dev/null +++ b/Assets/MarathonController/Scripts/Utils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b67d65de35f2748819254ca104721cac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs.meta b/Assets/MarathonEnvs.meta new file mode 100644 index 0000000..159fc64 --- /dev/null +++ b/Assets/MarathonEnvs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44d80858b3698f643b3645028b1d9f6b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Agents.meta b/Assets/MarathonEnvs/Agents.meta new file mode 100644 index 0000000..6759b52 --- /dev/null +++ b/Assets/MarathonEnvs/Agents.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 73fe48d040d7678408c5ec479120ef9f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Agents/Characters.meta b/Assets/MarathonEnvs/Agents/Characters.meta new file mode 100644 index 0000000..7b2ba47 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: adefb1536f25634478a6f7b9819d02de +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004.meta b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004.meta new file mode 100644 index 0000000..fb041d3 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6709a25fd276d6a42885e29ad59a2183 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/AgentMove-outcome.prefab b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/AgentMove-outcome.prefab new file mode 100644 index 0000000..536696c --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/AgentMove-outcome.prefab @@ -0,0 +1,2520 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &161227863359003662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8600940905037178393} + m_Layer: 3 + m_Name: mixamorig:RightHandMiddle3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8600940905037178393 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 161227863359003662} + serializedVersion: 2 + m_LocalRotation: {x: -0.036095407, y: 0.034940347, z: -0.21942091, w: 0.9743361} + m_LocalPosition: {x: 0.029509215, y: -0.000000003113245, z: -0.0000000030340255} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 454720939049401084} + m_Father: {fileID: 4188289388191304861} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &212026845543190845 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1218731300768487097} + m_Layer: 3 + m_Name: mixamorig:RightForeArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1218731300768487097 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212026845543190845} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.2784152, y: -0.00000033079218, z: 0.000000116763104} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2675050577185743141} + m_Father: {fileID: 3192857308659796769} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &247433028873884665 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 723381811665153623} + m_Layer: 3 + m_Name: mixamorig:LeftEye + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &723381811665153623 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 247433028873884665} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.030675607, y: 0.06409507, z: 0.09283554} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6858170280566243505} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &306696037656357132 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6877447306015196480} + m_Layer: 3 + m_Name: mixamorig:RightFoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6877447306015196480 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306696037656357132} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.000000009644582, y: -0.4442773, z: -0.02983789} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 761318265474940137} + m_Father: {fileID: 9192183071538891233} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &380778450955083824 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2209666220319531871} + m_Layer: 3 + m_Name: mixamorig:RightHandIndex3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2209666220319531871 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 380778450955083824} + serializedVersion: 2 + m_LocalRotation: {x: -0.0000000063313275, y: 0.01609932, z: -0.13261928, w: 0.9910363} + m_LocalPosition: {x: 0.028830625, y: -0.00000049601215, z: 0.00000040448975} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1669420649433881162} + m_Father: {fileID: 8081789266139957499} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &392232339659560021 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3686799810742117958} + - component: {fileID: 6746435283200658236} + - component: {fileID: 8009678217738464586} + - component: {fileID: 8490727564501632366} + m_Layer: 3 + m_Name: AgentMove-outcome + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3686799810742117958 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 392232339659560021} + serializedVersion: 2 + 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: 4828823746749587089} + - {fileID: 421823017497324388} + - {fileID: 3805812208281142464} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!95 &6746435283200658236 +Animator: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 392232339659560021} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: 322dd9329a42ba34b9b08e13d7098017, type: 3} + m_Controller: {fileID: 0} + m_CullingMode: 1 + m_UpdateMode: 0 + m_ApplyRootMotion: 1 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!143 &8009678217738464586 +CharacterController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 392232339659560021} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Height: 1.5 + m_Radius: 0.2 + m_SlopeLimit: 45 + m_StepOffset: 0.3 + m_SkinWidth: 0.08 + m_MinMoveDistance: 0.001 + m_Center: {x: 0, y: 0.75, z: 0} +--- !u!114 &8490727564501632366 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 392232339659560021} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9cf757e03aeee494fb67ce8859dc8590, type: 3} + m_Name: + m_EditorClassIdentifier: + _articulationBodyRoot: {fileID: 0} + _debugDistance: 0 + _isGeneratedProcedurally: 0 + _debugWithRigidBody: 0 + _rigidbodyRoot: {fileID: 0} +--- !u!1 &444617061942146252 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3735778438020533013} + m_Layer: 3 + m_Name: mixamorig:LeftHandRing3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3735778438020533013 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 444617061942146252} + serializedVersion: 2 + m_LocalRotation: {x: 0.0000000154596, y: -0.025943844, z: 0.21579821, w: 0.9760933} + m_LocalPosition: {x: -0.029376723, y: -0.00000045458617, z: -0.00000006864757} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7177790093131442537} + m_Father: {fileID: 1958849286551222787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &724470905308507085 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4828823746749587089} + - component: {fileID: 8788194693339964004} + m_Layer: 3 + m_Name: Beta_Joints + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4828823746749587089 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 724470905308507085} + serializedVersion: 2 + 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: 3686799810742117958} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!137 &8788194693339964004 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 724470905308507085} + 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: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 4f5046ec1d1fb3d4696fd5f2f91b12d7, 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 2497106002754787046, guid: d67d76a0f1d165e439c33842a4e6d829, type: 3} + m_Bones: + - {fileID: 3805812208281142464} + - {fileID: 3816809303915888998} + - {fileID: 61719458373122324} + - {fileID: 3424731480843698993} + - {fileID: 2475311671635326929} + - {fileID: 6858170280566243505} + - {fileID: 7288190062760050595} + - {fileID: 3956686809651453} + - {fileID: 1780579492469979430} + - {fileID: 4798817816114295550} + - {fileID: 7364871531713363585} + - {fileID: 5783046257887648325} + - {fileID: 2049863306711867418} + - {fileID: 2326447331854836237} + - {fileID: 7843489935681131426} + - {fileID: 3247648011332746829} + - {fileID: 7220185058596356659} + - {fileID: 240765491400414561} + - {fileID: 5089762581670983761} + - {fileID: 7426597033592169978} + - {fileID: 1958849286551222787} + - {fileID: 3735778438020533013} + - {fileID: 3139645161957259186} + - {fileID: 4513844269592712687} + - {fileID: 4368280097208132861} + - {fileID: 7601562289139286854} + - {fileID: 3192857308659796769} + - {fileID: 1218731300768487097} + - {fileID: 2675050577185743141} + - {fileID: 6823969981923611242} + - {fileID: 5114058502360463468} + - {fileID: 3814908135962981319} + - {fileID: 1143666513682358808} + - {fileID: 8090734985734702672} + - {fileID: 5207799685715001297} + - {fileID: 8315411906559011575} + - {fileID: 4188289388191304861} + - {fileID: 8600940905037178393} + - {fileID: 8387281877113627033} + - {fileID: 8081789266139957499} + - {fileID: 2209666220319531871} + - {fileID: 6377256832505512678} + - {fileID: 8701100832392348522} + - {fileID: 4418331433281850283} + - {fileID: 5264828162436470825} + - {fileID: 3426563212883501225} + - {fileID: 6985435197592493118} + - {fileID: 6971595779586446085} + - {fileID: 1883103756443790753} + - {fileID: 9192183071538891233} + - {fileID: 6877447306015196480} + - {fileID: 761318265474940137} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 3805812208281142464} + m_AABB: + m_Center: {x: -0.029226333, y: -0.23296213, z: 0.006073512} + m_Extent: {x: 0.28855243, y: 0.7848079, z: 0.17378044} + m_DirtyAABB: 0 +--- !u!1 &1081226756411146176 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9192183071538891233} + m_Layer: 3 + m_Name: mixamorig:RightLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9192183071538891233 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1081226756411146176} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -8.435572e-10, y: -0.44370535, z: 0.0028615638} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6877447306015196480} + m_Father: {fileID: 1883103756443790753} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1104816053762190129 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5783046257887648325} + m_Layer: 3 + m_Name: mixamorig:LeftHandThumb2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5783046257887648325 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1104816053762190129} + serializedVersion: 2 + m_LocalRotation: {x: 0.034243487, y: -0.06583692, z: -0.009060019, w: 0.9972015} + m_LocalPosition: {x: -0.032298036, y: -0.018646907, z: 0.018646812} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2049863306711867418} + m_Father: {fileID: 7364871531713363585} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1291939702580505375 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 761318265474940137} + m_Layer: 3 + m_Name: mixamorig:RightToeBase + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &761318265474940137 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1291939702580505375} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.00000002360438, y: -0.08728669, z: 0.107105605} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2241869972018169020} + m_Father: {fileID: 6877447306015196480} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1662035981661035203 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6985435197592493118} + m_Layer: 3 + m_Name: mixamorig:LeftFoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6985435197592493118 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1662035981661035203} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.0000000047163935, y: -0.44427872, z: -0.029821906} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6971595779586446085} + m_Father: {fileID: 3426563212883501225} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1696944734262636515 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4418331433281850283} + m_Layer: 3 + m_Name: mixamorig:RightHandThumb3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4418331433281850283 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1696944734262636515} + serializedVersion: 2 + m_LocalRotation: {x: -0.018880373, y: -0.05791284, z: -0.018992314, w: 0.9979624} + m_LocalPosition: {x: 0.02652605, y: -0.015314492, z: 0.015314456} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1399220495936973381} + m_Father: {fileID: 8701100832392348522} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1746651327064696276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4400746077549366836} + m_Layer: 3 + m_Name: mixamorig:HeadTop_End + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4400746077549366836 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1746651327064696276} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.0000000065082415, y: 0.17815155, z: 0.025849855} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6858170280566243505} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1928419221442771365 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 240765491400414561} + m_Layer: 3 + m_Name: mixamorig:LeftHandMiddle2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &240765491400414561 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1928419221442771365} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000083408274, y: -0.014846245, z: 0.123489566, w: 0.9922348} + m_LocalPosition: {x: -0.036982365, y: 0.00000001961359, z: 0.00000017916967} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5089762581670983761} + m_Father: {fileID: 7220185058596356659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2578412409195557823 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3816809303915888998} + m_Layer: 3 + m_Name: mixamorig:Spine + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3816809303915888998 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2578412409195557823} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.00000009234152, y: 0.10181588, z: 0.0013152092} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 61719458373122324} + m_Father: {fileID: 3805812208281142464} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2792710561182766282 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7177790093131442537} + m_Layer: 3 + m_Name: mixamorig:LeftHandRing4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7177790093131442537 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2792710561182766282} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.026474526, y: -0.00000049804413, z: 7.0705153e-10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3735778438020533013} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2854151855260882899 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4809394055445825325} + m_Layer: 3 + m_Name: mixamorig:LeftHandIndex4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4809394055445825325 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2854151855260882899} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.023927199, y: 0.00000037025907, z: 0.00000033554434} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3247648011332746829} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2900455889734779221 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5264828162436470825} + m_Layer: 3 + m_Name: mixamorig:LeftUpLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5264828162436470825 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2900455889734779221} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.082077816, y: -0.06751714, z: -0.015995556} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3426563212883501225} + m_Father: {fileID: 3805812208281142464} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2907376412662452474 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3247648011332746829} + m_Layer: 3 + m_Name: mixamorig:LeftHandIndex3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3247648011332746829 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2907376412662452474} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000030632222, y: -0.016264305, z: 0.13528493, w: 0.99067324} + m_LocalPosition: {x: -0.028830625, y: 0.00000038511968, z: -0.00000042764816} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4809394055445825325} + m_Father: {fileID: 7843489935681131426} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3013217516278236914 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2475311671635326929} + m_Layer: 3 + m_Name: mixamorig:Neck + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2475311671635326929 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3013217516278236914} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.0000000063342855, y: 0.16671668, z: -0.025161678} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6858170280566243505} + m_Father: {fileID: 3424731480843698993} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3122352407652995055 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6971595779586446085} + m_Layer: 3 + m_Name: mixamorig:LeftToeBase + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6971595779586446085 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3122352407652995055} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.000000029609879, y: -0.087286696, z: 0.1071056} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1098406920803643505} + m_Father: {fileID: 6985435197592493118} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3293136439187358539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1143666513682358808} + m_Layer: 3 + m_Name: mixamorig:RightHandRing1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1143666513682358808 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3293136439187358539} + serializedVersion: 2 + m_LocalRotation: {x: 0.00037377691, y: 0.022988131, z: -0.17173363, w: 0.98487514} + m_LocalPosition: {x: 0.09103588, y: -0.00043914348, z: -0.018650724} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8090734985734702672} + m_Father: {fileID: 2675050577185743141} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3917772976201597546 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3424731480843698993} + m_Layer: 3 + m_Name: mixamorig:Spine2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3424731480843698993 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3917772976201597546} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.0000000034574863, y: 0.09100011, z: -0.013734171} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7288190062760050595} + - {fileID: 2475311671635326929} + - {fileID: 7601562289139286854} + m_Father: {fileID: 61719458373122324} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3962680521647541795 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6377256832505512678} + m_Layer: 3 + m_Name: mixamorig:RightHandThumb1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6377256832505512678 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3962680521647541795} + serializedVersion: 2 + m_LocalRotation: {x: -0.012513812, y: 0.07155021, z: 0.12621665, w: 0.9893398} + m_LocalPosition: {x: 0.024648061, y: -0.015727142, z: 0.026826264} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8701100832392348522} + m_Father: {fileID: 2675050577185743141} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4025274283745166823 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2049863306711867418} + m_Layer: 3 + m_Name: mixamorig:LeftHandThumb3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2049863306711867418 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4025274283745166823} + serializedVersion: 2 + m_LocalRotation: {x: -0.08035521, y: -0.03169351, z: 0.03012685, w: 0.9958067} + m_LocalPosition: {x: -0.02652565, y: -0.015314929, z: 0.015314716} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3587699784822628112} + m_Father: {fileID: 5783046257887648325} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4117469313355784630 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3814908135962981319} + m_Layer: 3 + m_Name: mixamorig:RightHandPinky3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3814908135962981319 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4117469313355784630} + serializedVersion: 2 + m_LocalRotation: {x: 0.00000002017436, y: 0.023305127, z: -0.19197693, w: 0.9811227} + m_LocalPosition: {x: 0.021142116, y: 0.00000015137925, z: 0.00000014793768} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 890191578504795341} + m_Father: {fileID: 5114058502360463468} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4363621251177238990 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1669420649433881162} + m_Layer: 3 + m_Name: mixamorig:RightHandIndex4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1669420649433881162 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4363621251177238990} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.023927199, y: 0.000000268147, z: 0.00000028020133} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2209666220319531871} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4596267223529255526 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7364871531713363585} + m_Layer: 3 + m_Name: mixamorig:LeftHandThumb1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7364871531713363585 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4596267223529255526} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.024661401, y: -0.015750492, z: 0.026824135} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5783046257887648325} + m_Father: {fileID: 4798817816114295550} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4758716929184199912 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3192857308659796769} + m_Layer: 3 + m_Name: mixamorig:RightArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3192857308659796769 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4758716929184199912} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.105928436, y: -0.0052479836, z: -0.022320986} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1218731300768487097} + m_Father: {fileID: 7601562289139286854} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4768597898316900781 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 61719458373122324} + m_Layer: 3 + m_Name: mixamorig:Spine1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &61719458373122324 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4768597898316900781} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.000000002519403, y: 0.10083451, z: -0.010008043} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3424731480843698993} + m_Father: {fileID: 3816809303915888998} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4957717358231367155 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4368280097208132861} + m_Layer: 3 + m_Name: mixamorig:LeftHandPinky3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4368280097208132861 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4957717358231367155} + serializedVersion: 2 + m_LocalRotation: {x: 0.00000006974694, y: -0.01088136, z: 0.090509206, w: 0.9958362} + m_LocalPosition: {x: -0.021142116, y: 0.00000019538281, z: -0.00000002864415} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4637356422106919981} + m_Father: {fileID: 4513844269592712687} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5293427872956757107 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 890191578504795341} + m_Layer: 3 + m_Name: mixamorig:RightHandPinky4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &890191578504795341 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5293427872956757107} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.019756826, y: -0.00000018521958, z: -0.000000009839841} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3814908135962981319} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5336639211969966393 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8315411906559011575} + m_Layer: 3 + m_Name: mixamorig:RightHandMiddle1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8315411906559011575 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5336639211969966393} + serializedVersion: 2 + m_LocalRotation: {x: -0.00012333371, y: 0.013151798, z: -0.11697145, w: 0.9930482} + m_LocalPosition: {x: 0.09532503, y: -0.00000016312302, z: 0.00000016791842} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4188289388191304861} + m_Father: {fileID: 2675050577185743141} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5441213614762409711 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8387281877113627033} + m_Layer: 3 + m_Name: mixamorig:RightHandIndex1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8387281877113627033 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5441213614762409711} + serializedVersion: 2 + m_LocalRotation: {x: 0.0019225597, y: 0.032910965, z: -0.1896791, w: 0.98129255} + m_LocalPosition: {x: 0.09108281, y: -0.0051678894, z: 0.022601163} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8081789266139957499} + m_Father: {fileID: 2675050577185743141} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5459023565741966369 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6858170280566243505} + m_Layer: 3 + m_Name: mixamorig:Head + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6858170280566243505 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5459023565741966369} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.0000000042423185, y: 0.09617875, z: 0.016850075} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4400746077549366836} + - {fileID: 723381811665153623} + - {fileID: 1847373816753268944} + m_Father: {fileID: 2475311671635326929} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5569334918067133812 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3426563212883501225} + m_Layer: 3 + m_Name: mixamorig:LeftLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3426563212883501225 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5569334918067133812} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.000000004110158, y: -0.44370472, z: 0.0028464263} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6985435197592493118} + m_Father: {fileID: 5264828162436470825} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5651953071623678070 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3139645161957259186} + m_Layer: 3 + m_Name: mixamorig:LeftHandPinky1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3139645161957259186 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5651953071623678070} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.08077778, y: -0.004886682, z: -0.03806067} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4513844269592712687} + m_Father: {fileID: 4798817816114295550} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5676151649762533924 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8081789266139957499} + m_Layer: 3 + m_Name: mixamorig:RightHandIndex2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8081789266139957499 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5676151649762533924} + serializedVersion: 2 + m_LocalRotation: {x: -0.000000015226174, y: 0.010892153, z: -0.08972404, w: 0.9959071} + m_LocalPosition: {x: 0.036764093, y: 0.00000019227156, z: 0.0000003235567} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2209666220319531871} + m_Father: {fileID: 8387281877113627033} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5801069702607921655 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5207799685715001297} + m_Layer: 3 + m_Name: mixamorig:RightHandRing3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5207799685715001297 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5801069702607921655} + serializedVersion: 2 + m_LocalRotation: {x: -0.10274525, y: 0.03787521, z: -0.16529457, w: 0.9801462} + m_LocalPosition: {x: 0.029376723, y: -0.00000041600654, z: -0.00000039660634} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3912600874599212585} + m_Father: {fileID: 8090734985734702672} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5872363739066950147 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1847373816753268944} + m_Layer: 3 + m_Name: mixamorig:RightEye + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1847373816753268944 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5872363739066950147} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.030675504, y: 0.064095, z: 0.09283547} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6858170280566243505} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5974174787270471391 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6823969981923611242} + m_Layer: 3 + m_Name: mixamorig:RightHandPinky1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6823969981923611242 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5974174787270471391} + serializedVersion: 2 + m_LocalRotation: {x: 0.0005596059, y: 0.019995429, z: -0.12958263, w: 0.99136686} + m_LocalPosition: {x: 0.080766745, y: -0.0048845927, z: -0.038060103} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5114058502360463468} + m_Father: {fileID: 2675050577185743141} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5979837354695625278 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8090734985734702672} + m_Layer: 3 + m_Name: mixamorig:RightHandRing2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8090734985734702672 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5979837354695625278} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000016135926, y: 0.011741795, z: -0.09672358, w: 0.99524206} + m_LocalPosition: {x: 0.031540267, y: 0.00000023997296, z: 0.0000004885121} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5207799685715001297} + m_Father: {fileID: 1143666513682358808} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6010239916914329564 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3956686809651453} + m_Layer: 3 + m_Name: mixamorig:LeftArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3956686809651453 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6010239916914329564} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.1059237, y: -0.005245829, z: -0.0223212} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1780579492469979430} + m_Father: {fileID: 7288190062760050595} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6044068824342469848 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1780579492469979430} + m_Layer: 3 + m_Name: mixamorig:LeftForeArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1780579492469979430 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6044068824342469848} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.2784152, y: -0.0000008942865, z: 0.0000003745891} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4798817816114295550} + m_Father: {fileID: 3956686809651453} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6097283951273913703 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5089762581670983761} + m_Layer: 3 + m_Name: mixamorig:LeftHandMiddle3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5089762581670983761 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6097283951273913703} + serializedVersion: 2 + m_LocalRotation: {x: -0.000000059060614, y: -0.017707754, z: 0.14729121, w: 0.9889347} + m_LocalPosition: {x: -0.029509215, y: -0.00000039376084, z: 0.0000001644796} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7794264093985034514} + m_Father: {fileID: 240765491400414561} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6102496864276470840 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5114058502360463468} + m_Layer: 3 + m_Name: mixamorig:RightHandPinky2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5114058502360463468 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6102496864276470840} + serializedVersion: 2 + m_LocalRotation: {x: 0.0000017364068, y: 0.015117919, z: -0.124647975, w: 0.9920859} + m_LocalPosition: {x: 0.036000345, y: 0.00000039676655, z: 0.0000005081442} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3814908135962981319} + m_Father: {fileID: 6823969981923611242} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6198220811016572574 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1883103756443790753} + m_Layer: 3 + m_Name: mixamorig:RightUpLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1883103756443790753 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6198220811016572574} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.08207796, y: -0.06751662, z: -0.015995594} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 9192183071538891233} + m_Father: {fileID: 3805812208281142464} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6308702033820786464 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7288190062760050595} + m_Layer: 3 + m_Name: mixamorig:LeftShoulder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7288190062760050595 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6308702033820786464} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.045704465, y: 0.10945985, z: -0.02627988} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3956686809651453} + m_Father: {fileID: 3424731480843698993} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6518549214661000384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1958849286551222787} + m_Layer: 3 + m_Name: mixamorig:LeftHandRing2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1958849286551222787 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6518549214661000384} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000012804522, y: -0.01702194, z: 0.14158715, w: 0.9897794} + m_LocalPosition: {x: -0.031540267, y: -0.00000006553468, z: 0.00000010425744} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3735778438020533013} + m_Father: {fileID: 7426597033592169978} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6542974291887257375 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7843489935681131426} + m_Layer: 3 + m_Name: mixamorig:LeftHandIndex2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7843489935681131426 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6542974291887257375} + serializedVersion: 2 + m_LocalRotation: {x: -0.000000013486236, y: -0.013445388, z: 0.111837275, w: 0.9936356} + m_LocalPosition: {x: -0.036764093, y: -0.00000006939138, z: 0.00000029242517} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3247648011332746829} + m_Father: {fileID: 2326447331854836237} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6712799453818868151 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1399220495936973381} + m_Layer: 3 + m_Name: mixamorig:RightHandThumb4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1399220495936973381 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6712799453818868151} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.019545805, y: -0.011284617, z: 0.01128507} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4418331433281850283} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6745280359009486461 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7794264093985034514} + m_Layer: 3 + m_Name: mixamorig:LeftHandMiddle4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7794264093985034514 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6745280359009486461} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.028339025, y: -0.0000003893482, z: -0.00000009504223} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5089762581670983761} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6829629720762085909 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7220185058596356659} + m_Layer: 3 + m_Name: mixamorig:LeftHandMiddle1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7220185058596356659 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6829629720762085909} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.095334016, y: -0.00000033924047, z: 0.00000013937026} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 240765491400414561} + m_Father: {fileID: 4798817816114295550} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7089348582567304270 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 421823017497324388} + - component: {fileID: 7778793721715045614} + m_Layer: 3 + m_Name: Beta_Surface + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &421823017497324388 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7089348582567304270} + serializedVersion: 2 + 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: 3686799810742117958} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!137 &7778793721715045614 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7089348582567304270} + 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: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 2357ec65c9eceb94a98f3916931656d0, 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 6796121518194019630, guid: d67d76a0f1d165e439c33842a4e6d829, type: 3} + m_Bones: + - {fileID: 3805812208281142464} + - {fileID: 3816809303915888998} + - {fileID: 61719458373122324} + - {fileID: 3424731480843698993} + - {fileID: 2475311671635326929} + - {fileID: 6858170280566243505} + - {fileID: 7288190062760050595} + - {fileID: 3956686809651453} + - {fileID: 1780579492469979430} + - {fileID: 4798817816114295550} + - {fileID: 7364871531713363585} + - {fileID: 5783046257887648325} + - {fileID: 2049863306711867418} + - {fileID: 2326447331854836237} + - {fileID: 7843489935681131426} + - {fileID: 3247648011332746829} + - {fileID: 7220185058596356659} + - {fileID: 240765491400414561} + - {fileID: 5089762581670983761} + - {fileID: 7426597033592169978} + - {fileID: 1958849286551222787} + - {fileID: 3735778438020533013} + - {fileID: 3139645161957259186} + - {fileID: 4513844269592712687} + - {fileID: 4368280097208132861} + - {fileID: 3192857308659796769} + - {fileID: 1218731300768487097} + - {fileID: 2675050577185743141} + - {fileID: 6823969981923611242} + - {fileID: 5114058502360463468} + - {fileID: 3814908135962981319} + - {fileID: 1143666513682358808} + - {fileID: 8090734985734702672} + - {fileID: 5207799685715001297} + - {fileID: 8315411906559011575} + - {fileID: 4188289388191304861} + - {fileID: 8600940905037178393} + - {fileID: 8387281877113627033} + - {fileID: 8081789266139957499} + - {fileID: 2209666220319531871} + - {fileID: 6377256832505512678} + - {fileID: 8701100832392348522} + - {fileID: 4418331433281850283} + - {fileID: 3426563212883501225} + - {fileID: 6985435197592493118} + - {fileID: 6971595779586446085} + - {fileID: 1883103756443790753} + - {fileID: 9192183071538891233} + - {fileID: 6877447306015196480} + - {fileID: 761318265474940137} + - {fileID: 7601562289139286854} + - {fileID: 5264828162436470825} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 3805812208281142464} + m_AABB: + m_Center: {x: -0.038425133, y: -0.1257366, z: 0.0028004125} + m_Extent: {x: 0.31848902, y: 0.9007354, z: 0.19759041} + m_DirtyAABB: 0 +--- !u!1 &7110939478451486097 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4513844269592712687} + m_Layer: 3 + m_Name: mixamorig:LeftHandPinky2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4513844269592712687 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7110939478451486097} + serializedVersion: 2 + m_LocalRotation: {x: 0.004209028, y: 0.021044666, z: 0.12154534, w: 0.99235386} + m_LocalPosition: {x: -0.036000345, y: -0.000000022522151, z: -0.00000026238794} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4368280097208132861} + m_Father: {fileID: 3139645161957259186} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7279326562145781845 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3587699784822628112} + m_Layer: 3 + m_Name: mixamorig:LeftHandThumb4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3587699784822628112 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7279326562145781845} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.019545669, y: -0.0112850005, z: 0.011284921} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2049863306711867418} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7463559024257613972 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3805812208281142464} + m_Layer: 3 + m_Name: mixamorig:Hips + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3805812208281142464 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7463559024257613972} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1.05, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5264828162436470825} + - {fileID: 1883103756443790753} + - {fileID: 3816809303915888998} + m_Father: {fileID: 3686799810742117958} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7613912752943233747 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2326447331854836237} + m_Layer: 3 + m_Name: mixamorig:LeftHandIndex1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2326447331854836237 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7613912752943233747} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.09109301, y: -0.005170834, z: 0.02260073} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7843489935681131426} + m_Father: {fileID: 4798817816114295550} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7765160336623160502 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2241869972018169020} + m_Layer: 3 + m_Name: mixamorig:RightToe_End + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2241869972018169020 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7765160336623160502} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.000000020942645, y: -0.000006763694, z: 0.0927812} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 761318265474940137} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7804154089244218065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7601562289139286854} + m_Layer: 3 + m_Name: mixamorig:RightShoulder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7601562289139286854 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7804154089244218065} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.045699697, y: 0.10946176, z: -0.026280174} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3192857308659796769} + m_Father: {fileID: 3424731480843698993} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8037975242611709879 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7426597033592169978} + m_Layer: 3 + m_Name: mixamorig:LeftHandRing1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7426597033592169978 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8037975242611709879} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.091045275, y: -0.00043939505, z: -0.018650847} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1958849286551222787} + m_Father: {fileID: 4798817816114295550} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8127525394544048877 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8701100832392348522} + m_Layer: 3 + m_Name: mixamorig:RightHandThumb2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8701100832392348522 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8127525394544048877} + serializedVersion: 2 + m_LocalRotation: {x: 0.04307745, y: 0.19562133, z: 0.042173576, w: 0.9788248} + m_LocalPosition: {x: 0.03229772, y: -0.018647088, z: 0.018647185} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4418331433281850283} + m_Father: {fileID: 6377256832505512678} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8254005159064179398 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3912600874599212585} + m_Layer: 3 + m_Name: mixamorig:RightHandRing4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3912600874599212585 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8254005159064179398} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.026474526, y: 0.00000024608212, z: -0.000000022949234} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5207799685715001297} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8388813412827367547 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1098406920803643505} + m_Layer: 3 + m_Name: mixamorig:LeftToe_End + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1098406920803643505 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8388813412827367547} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.000000025080618, y: -0.0000067668298, z: 0.09278136} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6971595779586446085} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8521703566600512502 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4798817816114295550} + m_Layer: 3 + m_Name: mixamorig:LeftHand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4798817816114295550 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8521703566600512502} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.2832884, y: -0.00000017440718, z: 0.00000037804523} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2326447331854836237} + - {fileID: 7220185058596356659} + - {fileID: 3139645161957259186} + - {fileID: 7426597033592169978} + - {fileID: 7364871531713363585} + m_Father: {fileID: 1780579492469979430} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8602321274763542817 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 454720939049401084} + m_Layer: 3 + m_Name: mixamorig:RightHandMiddle4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &454720939049401084 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8602321274763542817} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.028339025, y: 0.00000008053241, z: 0.00000053787704} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8600940905037178393} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &9032816581713627685 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4188289388191304861} + m_Layer: 3 + m_Name: mixamorig:RightHandMiddle2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4188289388191304861 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9032816581713627685} + serializedVersion: 2 + m_LocalRotation: {x: -0.000000012622392, y: 0.0141155105, z: -0.11627735, w: 0.9931165} + m_LocalPosition: {x: 0.036982365, y: 0.00000015066959, z: -0.00000022545524} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8600940905037178393} + m_Father: {fileID: 8315411906559011575} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &9126847540449310610 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4637356422106919981} + m_Layer: 3 + m_Name: mixamorig:LeftHandPinky4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4637356422106919981 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9126847540449310610} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.019756826, y: 0.00000012405657, z: -0.00000044301405} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4368280097208132861} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &9161153345938391024 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2675050577185743141} + m_Layer: 3 + m_Name: mixamorig:RightHand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2675050577185743141 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9161153345938391024} + serializedVersion: 2 + m_LocalRotation: {x: 0.14572193, y: -0.010789281, z: -0.0033966785, w: 0.9892609} + m_LocalPosition: {x: 0.2832884, y: -0.0000000015814171, z: 0.00000055816014} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8387281877113627033} + - {fileID: 8315411906559011575} + - {fileID: 6823969981923611242} + - {fileID: 1143666513682358808} + - {fileID: 6377256832505512678} + m_Father: {fileID: 1218731300768487097} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/AgentMove-outcome.prefab.meta b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/AgentMove-outcome.prefab.meta new file mode 100644 index 0000000..aaa8170 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/AgentMove-outcome.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c4813c0eb838d1b4fa513c76f6b99f5f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/AgentMove-source.prefab b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/AgentMove-source.prefab new file mode 100644 index 0000000..3d3cbe8 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/AgentMove-source.prefab @@ -0,0 +1,2560 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &161227863359003662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8600940905037178393} + m_Layer: 3 + m_Name: mixamorig:RightHandMiddle3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8600940905037178393 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 161227863359003662} + serializedVersion: 2 + m_LocalRotation: {x: -0.036095407, y: 0.034940347, z: -0.21942091, w: 0.9743361} + m_LocalPosition: {x: 0.029509215, y: -0.000000003113245, z: -0.0000000030340255} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 454720939049401084} + m_Father: {fileID: 4188289388191304861} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &212026845543190845 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1218731300768487097} + m_Layer: 3 + m_Name: mixamorig:RightForeArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1218731300768487097 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212026845543190845} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.2784152, y: -0.00000033079218, z: 0.000000116763104} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2675050577185743141} + m_Father: {fileID: 3192857308659796769} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &247433028873884665 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 723381811665153623} + m_Layer: 3 + m_Name: mixamorig:LeftEye + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &723381811665153623 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 247433028873884665} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.030675607, y: 0.06409507, z: 0.09283554} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6858170280566243505} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &306696037656357132 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6877447306015196480} + m_Layer: 3 + m_Name: mixamorig:RightFoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6877447306015196480 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306696037656357132} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.000000009644582, y: -0.4442773, z: -0.02983789} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 761318265474940137} + m_Father: {fileID: 9192183071538891233} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &380778450955083824 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2209666220319531871} + m_Layer: 3 + m_Name: mixamorig:RightHandIndex3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2209666220319531871 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 380778450955083824} + serializedVersion: 2 + m_LocalRotation: {x: -0.0000000063313275, y: 0.01609932, z: -0.13261928, w: 0.9910363} + m_LocalPosition: {x: 0.028830625, y: -0.00000049601215, z: 0.00000040448975} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1669420649433881162} + m_Father: {fileID: 8081789266139957499} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &392232339659560021 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3686799810742117958} + - component: {fileID: 8009678217738464586} + - component: {fileID: 6746435283200658236} + - component: {fileID: 9078412577694927551} + - component: {fileID: 4224271577064884915} + - component: {fileID: 555854875840444148} + m_Layer: 3 + m_Name: AgentMove-source + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3686799810742117958 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 392232339659560021} + serializedVersion: 2 + 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: 4828823746749587089} + - {fileID: 421823017497324388} + - {fileID: 3805812208281142464} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!143 &8009678217738464586 +CharacterController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 392232339659560021} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Height: 1.68 + m_Radius: 0.15 + m_SlopeLimit: 45 + m_StepOffset: 0.3 + m_SkinWidth: 0.08 + m_MinMoveDistance: 0.001 + m_Center: {x: 0, y: 0.86, z: 0} +--- !u!95 &6746435283200658236 +Animator: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 392232339659560021} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: 65a3c32d6ec98fc479df350fa87900c7, type: 3} + m_Controller: {fileID: 9100000, guid: 302de0a71ea44470782418460ee6b832, type: 2} + m_CullingMode: 0 + m_UpdateMode: 1 + m_ApplyRootMotion: 1 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!114 &9078412577694927551 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 392232339659560021} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ddcd176a32835474d9ddbce9eb0273af, type: 3} + m_Name: + m_EditorClassIdentifier: + MaxForwardVelocity: 1 + MinTurnVelocity: 400 + MaxTurnVelocity: 1200 + JumpSpeed: 5 + debugForceJump: 0 + doFixedUpdate: 1 + _isGeneratedProcedurally: 0 +--- !u!114 &4224271577064884915 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 392232339659560021} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f59f726c3dcc1c4287d40a0e3156276, type: 3} + m_Name: + m_EditorClassIdentifier: + SensorIsInTouch: [] + NormalizedTime: 0 + Lenght: 0 + IsLoopingAnimation: 0 + _rigidbodyRoot: {fileID: 0} + RequestCamera: 0 + CameraFollowMe: 0 + CameraTarget: {fileID: 0} + _isGeneratedProcedurally: 0 + _debugDistance: 0 + doFixedUpdate: 1 +--- !u!114 &555854875840444148 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 392232339659560021} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 25f24ef536e54416c9c95e2d222138e5, type: 3} + m_Name: + m_EditorClassIdentifier: + Stats: [] +--- !u!1 &444617061942146252 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3735778438020533013} + m_Layer: 3 + m_Name: mixamorig:LeftHandRing3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3735778438020533013 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 444617061942146252} + serializedVersion: 2 + m_LocalRotation: {x: 0.0000000154596, y: -0.025943844, z: 0.21579821, w: 0.9760933} + m_LocalPosition: {x: -0.029376723, y: -0.00000045458617, z: -0.00000006864757} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7177790093131442537} + m_Father: {fileID: 1958849286551222787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &724470905308507085 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4828823746749587089} + - component: {fileID: 8788194693339964004} + m_Layer: 3 + m_Name: Beta_Joints + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4828823746749587089 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 724470905308507085} + serializedVersion: 2 + 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: 3686799810742117958} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!137 &8788194693339964004 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 724470905308507085} + 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: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7c75b8d76b8c90345b5654cf72a22ec9, 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 2497106002754787046, guid: d67d76a0f1d165e439c33842a4e6d829, type: 3} + m_Bones: + - {fileID: 3805812208281142464} + - {fileID: 3816809303915888998} + - {fileID: 61719458373122324} + - {fileID: 3424731480843698993} + - {fileID: 2475311671635326929} + - {fileID: 6858170280566243505} + - {fileID: 7288190062760050595} + - {fileID: 3956686809651453} + - {fileID: 1780579492469979430} + - {fileID: 4798817816114295550} + - {fileID: 7364871531713363585} + - {fileID: 5783046257887648325} + - {fileID: 2049863306711867418} + - {fileID: 2326447331854836237} + - {fileID: 7843489935681131426} + - {fileID: 3247648011332746829} + - {fileID: 7220185058596356659} + - {fileID: 240765491400414561} + - {fileID: 5089762581670983761} + - {fileID: 7426597033592169978} + - {fileID: 1958849286551222787} + - {fileID: 3735778438020533013} + - {fileID: 3139645161957259186} + - {fileID: 4513844269592712687} + - {fileID: 4368280097208132861} + - {fileID: 7601562289139286854} + - {fileID: 3192857308659796769} + - {fileID: 1218731300768487097} + - {fileID: 2675050577185743141} + - {fileID: 6823969981923611242} + - {fileID: 5114058502360463468} + - {fileID: 3814908135962981319} + - {fileID: 1143666513682358808} + - {fileID: 8090734985734702672} + - {fileID: 5207799685715001297} + - {fileID: 8315411906559011575} + - {fileID: 4188289388191304861} + - {fileID: 8600940905037178393} + - {fileID: 8387281877113627033} + - {fileID: 8081789266139957499} + - {fileID: 2209666220319531871} + - {fileID: 6377256832505512678} + - {fileID: 8701100832392348522} + - {fileID: 4418331433281850283} + - {fileID: 5264828162436470825} + - {fileID: 3426563212883501225} + - {fileID: 6985435197592493118} + - {fileID: 6971595779586446085} + - {fileID: 1883103756443790753} + - {fileID: 9192183071538891233} + - {fileID: 6877447306015196480} + - {fileID: 761318265474940137} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 3805812208281142464} + m_AABB: + m_Center: {x: -0.029226333, y: -0.23296213, z: 0.006073512} + m_Extent: {x: 0.28855243, y: 0.7848079, z: 0.17378044} + m_DirtyAABB: 0 +--- !u!1 &1081226756411146176 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9192183071538891233} + m_Layer: 3 + m_Name: mixamorig:RightLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9192183071538891233 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1081226756411146176} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -8.435572e-10, y: -0.44370535, z: 0.0028615638} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6877447306015196480} + m_Father: {fileID: 1883103756443790753} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1104816053762190129 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5783046257887648325} + m_Layer: 3 + m_Name: mixamorig:LeftHandThumb2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5783046257887648325 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1104816053762190129} + serializedVersion: 2 + m_LocalRotation: {x: 0.034243487, y: -0.06583692, z: -0.009060019, w: 0.9972015} + m_LocalPosition: {x: -0.032298036, y: -0.018646907, z: 0.018646812} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2049863306711867418} + m_Father: {fileID: 7364871531713363585} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1291939702580505375 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 761318265474940137} + m_Layer: 3 + m_Name: mixamorig:RightToeBase + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &761318265474940137 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1291939702580505375} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.00000002360438, y: -0.08728669, z: 0.107105605} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2241869972018169020} + m_Father: {fileID: 6877447306015196480} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1662035981661035203 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6985435197592493118} + m_Layer: 3 + m_Name: mixamorig:LeftFoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6985435197592493118 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1662035981661035203} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.0000000047163935, y: -0.44427872, z: -0.029821906} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6971595779586446085} + m_Father: {fileID: 3426563212883501225} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1696944734262636515 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4418331433281850283} + m_Layer: 3 + m_Name: mixamorig:RightHandThumb3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4418331433281850283 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1696944734262636515} + serializedVersion: 2 + m_LocalRotation: {x: -0.018880373, y: -0.05791284, z: -0.018992314, w: 0.9979624} + m_LocalPosition: {x: 0.02652605, y: -0.015314492, z: 0.015314456} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1399220495936973381} + m_Father: {fileID: 8701100832392348522} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1746651327064696276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4400746077549366836} + m_Layer: 3 + m_Name: mixamorig:HeadTop_End + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4400746077549366836 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1746651327064696276} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.0000000065082415, y: 0.17815155, z: 0.025849855} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6858170280566243505} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1928419221442771365 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 240765491400414561} + m_Layer: 3 + m_Name: mixamorig:LeftHandMiddle2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &240765491400414561 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1928419221442771365} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000083408274, y: -0.014846245, z: 0.123489566, w: 0.9922348} + m_LocalPosition: {x: -0.036982365, y: 0.00000001961359, z: 0.00000017916967} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5089762581670983761} + m_Father: {fileID: 7220185058596356659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2578412409195557823 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3816809303915888998} + m_Layer: 3 + m_Name: mixamorig:Spine + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3816809303915888998 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2578412409195557823} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.00000009234152, y: 0.10181588, z: 0.0013152092} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 61719458373122324} + m_Father: {fileID: 3805812208281142464} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2792710561182766282 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7177790093131442537} + m_Layer: 3 + m_Name: mixamorig:LeftHandRing4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7177790093131442537 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2792710561182766282} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.026474526, y: -0.00000049804413, z: 7.0705153e-10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3735778438020533013} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2854151855260882899 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4809394055445825325} + m_Layer: 3 + m_Name: mixamorig:LeftHandIndex4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4809394055445825325 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2854151855260882899} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.023927199, y: 0.00000037025907, z: 0.00000033554434} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3247648011332746829} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2900455889734779221 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5264828162436470825} + m_Layer: 3 + m_Name: mixamorig:LeftUpLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5264828162436470825 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2900455889734779221} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.082077816, y: -0.06751714, z: -0.015995556} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3426563212883501225} + m_Father: {fileID: 3805812208281142464} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2907376412662452474 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3247648011332746829} + m_Layer: 3 + m_Name: mixamorig:LeftHandIndex3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3247648011332746829 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2907376412662452474} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000030632222, y: -0.016264305, z: 0.13528493, w: 0.99067324} + m_LocalPosition: {x: -0.028830625, y: 0.00000038511968, z: -0.00000042764816} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4809394055445825325} + m_Father: {fileID: 7843489935681131426} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3013217516278236914 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2475311671635326929} + m_Layer: 3 + m_Name: mixamorig:Neck + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2475311671635326929 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3013217516278236914} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.0000000063342855, y: 0.16671668, z: -0.025161678} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6858170280566243505} + m_Father: {fileID: 3424731480843698993} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3122352407652995055 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6971595779586446085} + m_Layer: 3 + m_Name: mixamorig:LeftToeBase + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6971595779586446085 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3122352407652995055} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.000000029609879, y: -0.087286696, z: 0.1071056} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1098406920803643505} + m_Father: {fileID: 6985435197592493118} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3293136439187358539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1143666513682358808} + m_Layer: 3 + m_Name: mixamorig:RightHandRing1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1143666513682358808 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3293136439187358539} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.09103588, y: -0.00043914348, z: -0.018650724} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8090734985734702672} + m_Father: {fileID: 2675050577185743141} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3917772976201597546 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3424731480843698993} + m_Layer: 3 + m_Name: mixamorig:Spine2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3424731480843698993 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3917772976201597546} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.0000000034574863, y: 0.09100011, z: -0.013734171} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7288190062760050595} + - {fileID: 2475311671635326929} + - {fileID: 7601562289139286854} + m_Father: {fileID: 61719458373122324} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3962680521647541795 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6377256832505512678} + m_Layer: 3 + m_Name: mixamorig:RightHandThumb1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6377256832505512678 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3962680521647541795} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.024648061, y: -0.015727142, z: 0.026826264} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8701100832392348522} + m_Father: {fileID: 2675050577185743141} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4025274283745166823 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2049863306711867418} + m_Layer: 3 + m_Name: mixamorig:LeftHandThumb3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2049863306711867418 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4025274283745166823} + serializedVersion: 2 + m_LocalRotation: {x: -0.08035521, y: -0.03169351, z: 0.03012685, w: 0.9958067} + m_LocalPosition: {x: -0.02652565, y: -0.015314929, z: 0.015314716} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3587699784822628112} + m_Father: {fileID: 5783046257887648325} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4117469313355784630 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3814908135962981319} + m_Layer: 3 + m_Name: mixamorig:RightHandPinky3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3814908135962981319 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4117469313355784630} + serializedVersion: 2 + m_LocalRotation: {x: 0.00000002017436, y: 0.023305127, z: -0.19197693, w: 0.9811227} + m_LocalPosition: {x: 0.021142116, y: 0.00000015137925, z: 0.00000014793768} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 890191578504795341} + m_Father: {fileID: 5114058502360463468} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4363621251177238990 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1669420649433881162} + m_Layer: 3 + m_Name: mixamorig:RightHandIndex4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1669420649433881162 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4363621251177238990} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.023927199, y: 0.000000268147, z: 0.00000028020133} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2209666220319531871} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4596267223529255526 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7364871531713363585} + m_Layer: 3 + m_Name: mixamorig:LeftHandThumb1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7364871531713363585 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4596267223529255526} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.024661401, y: -0.015750492, z: 0.026824135} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5783046257887648325} + m_Father: {fileID: 4798817816114295550} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4758716929184199912 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3192857308659796769} + m_Layer: 3 + m_Name: mixamorig:RightArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3192857308659796769 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4758716929184199912} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.105928436, y: -0.0052479836, z: -0.022320986} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1218731300768487097} + m_Father: {fileID: 7601562289139286854} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4768597898316900781 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 61719458373122324} + m_Layer: 3 + m_Name: mixamorig:Spine1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &61719458373122324 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4768597898316900781} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.000000002519403, y: 0.10083451, z: -0.010008043} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3424731480843698993} + m_Father: {fileID: 3816809303915888998} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4957717358231367155 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4368280097208132861} + m_Layer: 3 + m_Name: mixamorig:LeftHandPinky3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4368280097208132861 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4957717358231367155} + serializedVersion: 2 + m_LocalRotation: {x: 0.00000006974694, y: -0.01088136, z: 0.090509206, w: 0.9958362} + m_LocalPosition: {x: -0.021142116, y: 0.00000019538281, z: -0.00000002864415} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4637356422106919981} + m_Father: {fileID: 4513844269592712687} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5293427872956757107 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 890191578504795341} + m_Layer: 3 + m_Name: mixamorig:RightHandPinky4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &890191578504795341 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5293427872956757107} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.019756826, y: -0.00000018521958, z: -0.000000009839841} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3814908135962981319} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5336639211969966393 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8315411906559011575} + m_Layer: 3 + m_Name: mixamorig:RightHandMiddle1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8315411906559011575 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5336639211969966393} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.09532503, y: -0.00000016312302, z: 0.00000016791842} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4188289388191304861} + m_Father: {fileID: 2675050577185743141} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5441213614762409711 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8387281877113627033} + m_Layer: 3 + m_Name: mixamorig:RightHandIndex1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8387281877113627033 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5441213614762409711} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.09108281, y: -0.0051678894, z: 0.022601163} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8081789266139957499} + m_Father: {fileID: 2675050577185743141} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5459023565741966369 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6858170280566243505} + m_Layer: 3 + m_Name: mixamorig:Head + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6858170280566243505 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5459023565741966369} + serializedVersion: 2 + m_LocalRotation: {x: -0.08819713, y: 0.010719821, z: -0.004734955, w: 0.99603415} + m_LocalPosition: {x: 0.0000000042423185, y: 0.09617875, z: 0.016850075} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4400746077549366836} + - {fileID: 723381811665153623} + - {fileID: 1847373816753268944} + m_Father: {fileID: 2475311671635326929} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5569334918067133812 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3426563212883501225} + m_Layer: 3 + m_Name: mixamorig:LeftLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3426563212883501225 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5569334918067133812} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.000000004110158, y: -0.44370472, z: 0.0028464263} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6985435197592493118} + m_Father: {fileID: 5264828162436470825} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5651953071623678070 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3139645161957259186} + m_Layer: 3 + m_Name: mixamorig:LeftHandPinky1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3139645161957259186 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5651953071623678070} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.08077778, y: -0.004886682, z: -0.03806067} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4513844269592712687} + m_Father: {fileID: 4798817816114295550} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5676151649762533924 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8081789266139957499} + m_Layer: 3 + m_Name: mixamorig:RightHandIndex2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8081789266139957499 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5676151649762533924} + serializedVersion: 2 + m_LocalRotation: {x: -0.000000015226174, y: 0.010892153, z: -0.08972404, w: 0.9959071} + m_LocalPosition: {x: 0.036764093, y: 0.00000019227156, z: 0.0000003235567} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2209666220319531871} + m_Father: {fileID: 8387281877113627033} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5801069702607921655 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5207799685715001297} + m_Layer: 3 + m_Name: mixamorig:RightHandRing3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5207799685715001297 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5801069702607921655} + serializedVersion: 2 + m_LocalRotation: {x: -0.10274525, y: 0.03787521, z: -0.16529457, w: 0.9801462} + m_LocalPosition: {x: 0.029376723, y: -0.00000041600654, z: -0.00000039660634} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3912600874599212585} + m_Father: {fileID: 8090734985734702672} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5872363739066950147 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1847373816753268944} + m_Layer: 3 + m_Name: mixamorig:RightEye + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1847373816753268944 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5872363739066950147} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.030675504, y: 0.064095, z: 0.09283547} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6858170280566243505} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5974174787270471391 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6823969981923611242} + m_Layer: 3 + m_Name: mixamorig:RightHandPinky1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6823969981923611242 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5974174787270471391} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.080766745, y: -0.0048845927, z: -0.038060103} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5114058502360463468} + m_Father: {fileID: 2675050577185743141} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5979837354695625278 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8090734985734702672} + m_Layer: 3 + m_Name: mixamorig:RightHandRing2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8090734985734702672 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5979837354695625278} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000016135926, y: 0.011741795, z: -0.09672358, w: 0.99524206} + m_LocalPosition: {x: 0.031540267, y: 0.00000023997296, z: 0.0000004885121} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5207799685715001297} + m_Father: {fileID: 1143666513682358808} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6010239916914329564 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3956686809651453} + m_Layer: 3 + m_Name: mixamorig:LeftArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3956686809651453 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6010239916914329564} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.1059237, y: -0.005245829, z: -0.0223212} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1780579492469979430} + m_Father: {fileID: 7288190062760050595} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6044068824342469848 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1780579492469979430} + m_Layer: 3 + m_Name: mixamorig:LeftForeArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1780579492469979430 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6044068824342469848} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.2784152, y: -0.0000008942865, z: 0.0000003745891} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4798817816114295550} + m_Father: {fileID: 3956686809651453} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6097283951273913703 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5089762581670983761} + m_Layer: 3 + m_Name: mixamorig:LeftHandMiddle3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5089762581670983761 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6097283951273913703} + serializedVersion: 2 + m_LocalRotation: {x: -0.000000059060614, y: -0.017707754, z: 0.14729121, w: 0.9889347} + m_LocalPosition: {x: -0.029509215, y: -0.00000039376084, z: 0.0000001644796} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7794264093985034514} + m_Father: {fileID: 240765491400414561} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6102496864276470840 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5114058502360463468} + m_Layer: 3 + m_Name: mixamorig:RightHandPinky2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5114058502360463468 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6102496864276470840} + serializedVersion: 2 + m_LocalRotation: {x: 0.0000017364068, y: 0.015117919, z: -0.124647975, w: 0.9920859} + m_LocalPosition: {x: 0.036000345, y: 0.00000039676655, z: 0.0000005081442} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3814908135962981319} + m_Father: {fileID: 6823969981923611242} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6198220811016572574 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1883103756443790753} + m_Layer: 3 + m_Name: mixamorig:RightUpLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1883103756443790753 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6198220811016572574} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.08207796, y: -0.06751662, z: -0.015995594} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 9192183071538891233} + m_Father: {fileID: 3805812208281142464} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6308702033820786464 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7288190062760050595} + m_Layer: 3 + m_Name: mixamorig:LeftShoulder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7288190062760050595 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6308702033820786464} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.045704465, y: 0.10945985, z: -0.02627988} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3956686809651453} + m_Father: {fileID: 3424731480843698993} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6518549214661000384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1958849286551222787} + m_Layer: 3 + m_Name: mixamorig:LeftHandRing2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1958849286551222787 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6518549214661000384} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000012804522, y: -0.01702194, z: 0.14158715, w: 0.9897794} + m_LocalPosition: {x: -0.031540267, y: -0.00000006553468, z: 0.00000010425744} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3735778438020533013} + m_Father: {fileID: 7426597033592169978} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6542974291887257375 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7843489935681131426} + m_Layer: 3 + m_Name: mixamorig:LeftHandIndex2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7843489935681131426 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6542974291887257375} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0.11182449, w: 0.993728} + m_LocalPosition: {x: -0.036764093, y: -0.00000006939138, z: 0.00000029242517} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3247648011332746829} + m_Father: {fileID: 2326447331854836237} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 12.841} +--- !u!1 &6712799453818868151 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1399220495936973381} + m_Layer: 3 + m_Name: mixamorig:RightHandThumb4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1399220495936973381 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6712799453818868151} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.019545805, y: -0.011284617, z: 0.01128507} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4418331433281850283} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6745280359009486461 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7794264093985034514} + m_Layer: 3 + m_Name: mixamorig:LeftHandMiddle4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7794264093985034514 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6745280359009486461} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.028339025, y: -0.0000003893482, z: -0.00000009504223} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5089762581670983761} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6829629720762085909 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7220185058596356659} + m_Layer: 3 + m_Name: mixamorig:LeftHandMiddle1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7220185058596356659 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6829629720762085909} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.095334016, y: -0.00000033924047, z: 0.00000013937026} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 240765491400414561} + m_Father: {fileID: 4798817816114295550} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7089348582567304270 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 421823017497324388} + - component: {fileID: 7778793721715045614} + m_Layer: 3 + m_Name: Beta_Surface + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &421823017497324388 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7089348582567304270} + serializedVersion: 2 + 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: 3686799810742117958} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!137 &7778793721715045614 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7089348582567304270} + 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: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 2f6fa6aa88fbef742bf021e621193eaf, 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 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 6796121518194019630, guid: d67d76a0f1d165e439c33842a4e6d829, type: 3} + m_Bones: + - {fileID: 3805812208281142464} + - {fileID: 3816809303915888998} + - {fileID: 61719458373122324} + - {fileID: 3424731480843698993} + - {fileID: 2475311671635326929} + - {fileID: 6858170280566243505} + - {fileID: 7288190062760050595} + - {fileID: 3956686809651453} + - {fileID: 1780579492469979430} + - {fileID: 4798817816114295550} + - {fileID: 7364871531713363585} + - {fileID: 5783046257887648325} + - {fileID: 2049863306711867418} + - {fileID: 2326447331854836237} + - {fileID: 7843489935681131426} + - {fileID: 3247648011332746829} + - {fileID: 7220185058596356659} + - {fileID: 240765491400414561} + - {fileID: 5089762581670983761} + - {fileID: 7426597033592169978} + - {fileID: 1958849286551222787} + - {fileID: 3735778438020533013} + - {fileID: 3139645161957259186} + - {fileID: 4513844269592712687} + - {fileID: 4368280097208132861} + - {fileID: 3192857308659796769} + - {fileID: 1218731300768487097} + - {fileID: 2675050577185743141} + - {fileID: 6823969981923611242} + - {fileID: 5114058502360463468} + - {fileID: 3814908135962981319} + - {fileID: 1143666513682358808} + - {fileID: 8090734985734702672} + - {fileID: 5207799685715001297} + - {fileID: 8315411906559011575} + - {fileID: 4188289388191304861} + - {fileID: 8600940905037178393} + - {fileID: 8387281877113627033} + - {fileID: 8081789266139957499} + - {fileID: 2209666220319531871} + - {fileID: 6377256832505512678} + - {fileID: 8701100832392348522} + - {fileID: 4418331433281850283} + - {fileID: 3426563212883501225} + - {fileID: 6985435197592493118} + - {fileID: 6971595779586446085} + - {fileID: 1883103756443790753} + - {fileID: 9192183071538891233} + - {fileID: 6877447306015196480} + - {fileID: 761318265474940137} + - {fileID: 7601562289139286854} + - {fileID: 5264828162436470825} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 3805812208281142464} + m_AABB: + m_Center: {x: -0.038425133, y: -0.1257366, z: 0.0028004125} + m_Extent: {x: 0.31848902, y: 0.9007354, z: 0.19759041} + m_DirtyAABB: 0 +--- !u!1 &7110939478451486097 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4513844269592712687} + m_Layer: 3 + m_Name: mixamorig:LeftHandPinky2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4513844269592712687 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7110939478451486097} + serializedVersion: 2 + m_LocalRotation: {x: 0.004209028, y: 0.021044666, z: 0.12154534, w: 0.99235386} + m_LocalPosition: {x: -0.036000345, y: -0.000000022522151, z: -0.00000026238794} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4368280097208132861} + m_Father: {fileID: 3139645161957259186} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7279326562145781845 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3587699784822628112} + m_Layer: 3 + m_Name: mixamorig:LeftHandThumb4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3587699784822628112 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7279326562145781845} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.019545669, y: -0.0112850005, z: 0.011284921} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2049863306711867418} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7463559024257613972 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3805812208281142464} + m_Layer: 3 + m_Name: mixamorig:Hips + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3805812208281142464 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7463559024257613972} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.004121775, y: 1.05, z: 0.020950764} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5264828162436470825} + - {fileID: 1883103756443790753} + - {fileID: 3816809303915888998} + m_Father: {fileID: 3686799810742117958} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7613912752943233747 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2326447331854836237} + m_Layer: 3 + m_Name: mixamorig:LeftHandIndex1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2326447331854836237 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7613912752943233747} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.09109301, y: -0.005170834, z: 0.02260073} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7843489935681131426} + m_Father: {fileID: 4798817816114295550} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7765160336623160502 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2241869972018169020} + m_Layer: 3 + m_Name: mixamorig:RightToe_End + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2241869972018169020 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7765160336623160502} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.000000020942645, y: -0.000006763694, z: 0.0927812} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 761318265474940137} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7804154089244218065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7601562289139286854} + m_Layer: 3 + m_Name: mixamorig:RightShoulder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7601562289139286854 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7804154089244218065} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.045699697, y: 0.10946176, z: -0.026280174} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3192857308659796769} + m_Father: {fileID: 3424731480843698993} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8037975242611709879 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7426597033592169978} + m_Layer: 3 + m_Name: mixamorig:LeftHandRing1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7426597033592169978 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8037975242611709879} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.091045275, y: -0.00043939505, z: -0.018650847} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1958849286551222787} + m_Father: {fileID: 4798817816114295550} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8127525394544048877 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8701100832392348522} + m_Layer: 3 + m_Name: mixamorig:RightHandThumb2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8701100832392348522 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8127525394544048877} + serializedVersion: 2 + m_LocalRotation: {x: 0.04307745, y: 0.19562133, z: 0.042173576, w: 0.9788248} + m_LocalPosition: {x: 0.03229772, y: -0.018647088, z: 0.018647185} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4418331433281850283} + m_Father: {fileID: 6377256832505512678} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8254005159064179398 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3912600874599212585} + m_Layer: 3 + m_Name: mixamorig:RightHandRing4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3912600874599212585 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8254005159064179398} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.026474526, y: 0.00000024608212, z: -0.000000022949234} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5207799685715001297} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8388813412827367547 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1098406920803643505} + m_Layer: 3 + m_Name: mixamorig:LeftToe_End + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1098406920803643505 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8388813412827367547} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.000000025080618, y: -0.0000067668298, z: 0.09278136} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6971595779586446085} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8521703566600512502 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4798817816114295550} + m_Layer: 3 + m_Name: mixamorig:LeftHand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4798817816114295550 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8521703566600512502} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.2832884, y: -0.00000017440718, z: 0.00000037804523} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2326447331854836237} + - {fileID: 7220185058596356659} + - {fileID: 3139645161957259186} + - {fileID: 7426597033592169978} + - {fileID: 7364871531713363585} + m_Father: {fileID: 1780579492469979430} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8602321274763542817 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 454720939049401084} + m_Layer: 3 + m_Name: mixamorig:RightHandMiddle4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &454720939049401084 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8602321274763542817} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.028339025, y: 0.00000008053241, z: 0.00000053787704} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8600940905037178393} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &9032816581713627685 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4188289388191304861} + m_Layer: 3 + m_Name: mixamorig:RightHandMiddle2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4188289388191304861 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9032816581713627685} + serializedVersion: 2 + m_LocalRotation: {x: -0.000000012622392, y: 0.0141155105, z: -0.11627735, w: 0.9931165} + m_LocalPosition: {x: 0.036982365, y: 0.00000015066959, z: -0.00000022545524} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8600940905037178393} + m_Father: {fileID: 8315411906559011575} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &9126847540449310610 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4637356422106919981} + m_Layer: 3 + m_Name: mixamorig:LeftHandPinky4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4637356422106919981 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9126847540449310610} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.019756826, y: 0.00000012405657, z: -0.00000044301405} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4368280097208132861} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &9161153345938391024 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2675050577185743141} + m_Layer: 3 + m_Name: mixamorig:RightHand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2675050577185743141 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9161153345938391024} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.2832884, y: -0.0000000015814171, z: 0.00000055816014} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8387281877113627033} + - {fileID: 8315411906559011575} + - {fileID: 6823969981923611242} + - {fileID: 1143666513682358808} + - {fileID: 6377256832505512678} + m_Father: {fileID: 1218731300768487097} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/AgentMove-source.prefab.meta b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/AgentMove-source.prefab.meta new file mode 100644 index 0000000..a5807d2 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/AgentMove-source.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0db68a8912718904d967ab56e13a1785 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/BlueJoints.mat b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/BlueJoints.mat new file mode 100644 index 0000000..23c622e --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/BlueJoints.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3821349114274997365 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BlueJoints + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0, g: 0.58620685, b: 1, a: 1} + - _Color: {r: 0, g: 0.58620685, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/BlueJoints.mat.meta b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/BlueJoints.mat.meta new file mode 100644 index 0000000..246e952 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/BlueJoints.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4f5046ec1d1fb3d4696fd5f2f91b12d7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/BlueSurface.mat b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/BlueSurface.mat new file mode 100644 index 0000000..e1b8bf8 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/BlueSurface.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6923165206544234797 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BlueSurface + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0, g: 0.42068955, b: 1, a: 1} + - _Color: {r: 0, g: 0.42068952, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/BlueSurface.mat.meta b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/BlueSurface.mat.meta new file mode 100644 index 0000000..1b1261a --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/BlueSurface.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2357ec65c9eceb94a98f3916931656d0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/Idle.fbx b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/Idle.fbx new file mode 100644 index 0000000..5a11143 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/Idle.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:775ab057f4b92e79407772cb17fdc4841b3ecf27418a523a1456c827235404a9 +size 3246512 diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/Idle.fbx.meta b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/Idle.fbx.meta new file mode 100644 index 0000000..b0963cd --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/Idle.fbx.meta @@ -0,0 +1,896 @@ +fileFormatVersion: 2 +guid: d67d76a0f1d165e439c33842a4e6d829 +ModelImporter: + serializedVersion: 20101 + internalIDToNameTable: + - first: + 74: -203655887218126122 + second: mixamo.com + externalObjects: {} + materials: + materialImportMode: 1 + 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: 0 + humanDescription: + serializedVersion: 3 + human: + - boneName: mixamorig:Hips + 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: mixamorig:LeftUpLeg + 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: mixamorig:RightUpLeg + 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: mixamorig:LeftLeg + 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: mixamorig:RightLeg + 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: mixamorig:LeftFoot + 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: mixamorig:RightFoot + 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: mixamorig:Spine + 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: mixamorig:Spine1 + 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: mixamorig:Neck + 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: mixamorig:Head + 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: mixamorig:LeftShoulder + 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: mixamorig:RightShoulder + 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: mixamorig:LeftArm + 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: mixamorig:RightArm + 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: mixamorig:LeftForeArm + 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: mixamorig:RightForeArm + 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: mixamorig:LeftHand + 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: mixamorig:RightHand + 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: mixamorig:LeftToeBase + 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: mixamorig:RightToeBase + 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: mixamorig:LeftHandThumb1 + humanName: Left Thumb Proximal + 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: mixamorig:LeftHandThumb2 + humanName: Left Thumb Intermediate + 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: mixamorig:LeftHandThumb3 + humanName: Left Thumb Distal + 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: mixamorig:LeftHandIndex1 + humanName: Left Index Proximal + 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: mixamorig:LeftHandIndex2 + humanName: Left Index Intermediate + 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: mixamorig:LeftHandIndex3 + humanName: Left Index Distal + 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: mixamorig:LeftHandMiddle1 + humanName: Left Middle Proximal + 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: mixamorig:LeftHandMiddle2 + humanName: Left Middle Intermediate + 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: mixamorig:LeftHandMiddle3 + humanName: Left Middle Distal + 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: mixamorig:LeftHandRing1 + humanName: Left Ring Proximal + 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: mixamorig:LeftHandRing2 + humanName: Left Ring Intermediate + 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: mixamorig:LeftHandRing3 + humanName: Left Ring Distal + 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: mixamorig:LeftHandPinky1 + humanName: Left Little Proximal + 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: mixamorig:LeftHandPinky2 + humanName: Left Little Intermediate + 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: mixamorig:LeftHandPinky3 + humanName: Left Little Distal + 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: mixamorig:RightHandThumb1 + humanName: Right Thumb Proximal + 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: mixamorig:RightHandThumb2 + humanName: Right Thumb Intermediate + 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: mixamorig:RightHandThumb3 + humanName: Right Thumb Distal + 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: mixamorig:RightHandIndex1 + humanName: Right Index Proximal + 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: mixamorig:RightHandIndex2 + humanName: Right Index Intermediate + 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: mixamorig:RightHandIndex3 + humanName: Right Index Distal + 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: mixamorig:RightHandMiddle1 + humanName: Right Middle Proximal + 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: mixamorig:RightHandMiddle2 + humanName: Right Middle Intermediate + 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: mixamorig:RightHandMiddle3 + humanName: Right Middle Distal + 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: mixamorig:RightHandRing1 + humanName: Right Ring Proximal + 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: mixamorig:RightHandRing2 + humanName: Right Ring Intermediate + 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: mixamorig:RightHandRing3 + humanName: Right Ring Distal + 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: mixamorig:RightHandPinky1 + humanName: Right Little Proximal + 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: mixamorig:RightHandPinky2 + humanName: Right Little Intermediate + 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: mixamorig:RightHandPinky3 + humanName: Right Little Distal + 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: mixamorig:Spine2 + humanName: UpperChest + 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: Idle(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: Beta_Joints + parentName: Idle(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: Beta_Surface + parentName: Idle(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: mixamorig:Hips + parentName: Idle(Clone) + position: {x: -0.004121775, y: 1.0720447, z: 0.020950764} + rotation: {x: -0, y: -0, z: -0.000000013460522, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:Spine + parentName: mixamorig:Hips + position: {x: -0.00000009234152, y: 0.10181588, z: 0.0013152092} + rotation: {x: -0.000000005820766, y: -0.0000000029103835, z: 0.000000013096724, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:Spine1 + parentName: mixamorig:Spine + position: {x: -0.000000002519403, y: 0.10083451, z: -0.010008043} + rotation: {x: 0.000000005820766, y: 0.0000000029103835, z: 1.8189894e-10, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:Spine2 + parentName: mixamorig:Spine1 + position: {x: -0.0000000034574863, y: 0.09100011, z: -0.013734171} + rotation: {x: -0.000000002910383, y: 0.000000002910383, z: -0.0000000018189894, + w: 1} + scale: {x: 0.99999994, y: 1, z: 1} + - name: mixamorig:Neck + parentName: mixamorig:Spine2 + position: {x: -0.0000000063342855, y: 0.16671668, z: -0.025161678} + rotation: {x: 0.0000000021827873, y: -0.000000002910383, z: 0.0000000017507773, + w: 1} + scale: {x: 1, y: 0.9999999, z: 1} + - name: mixamorig:Head + parentName: mixamorig:Neck + position: {x: 0.0000000042423185, y: 0.09617875, z: 0.016850075} + rotation: {x: 7.2759576e-10, y: -0, z: 0.0000000017053026, w: 1} + scale: {x: 1, y: 0.99999994, z: 1} + - name: mixamorig:HeadTop_End + parentName: mixamorig:Head + position: {x: 0.0000000065082415, y: 0.17815155, z: 0.025849855} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftEye + parentName: mixamorig:Head + position: {x: -0.030675607, y: 0.06409507, z: 0.09283554} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightEye + parentName: mixamorig:Head + position: {x: 0.030675504, y: 0.064095, z: 0.09283547} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftShoulder + parentName: mixamorig:Spine2 + position: {x: -0.045704465, y: 0.10945985, z: -0.02627988} + rotation: {x: 0.0000000043655746, y: -0.000000002910383, z: -9.094947e-10, w: 1} + scale: {x: 1, y: 0.99999994, z: 0.99999994} + - name: mixamorig:LeftArm + parentName: mixamorig:LeftShoulder + position: {x: -0.1059237, y: -0.005245829, z: -0.0223212} + rotation: {x: -0.0000000014551915, y: 0.0000000014551915, z: 0.000000008367351, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftForeArm + parentName: mixamorig:LeftArm + position: {x: -0.2784152, y: -0.0000008942865, z: 0.0000003745891} + rotation: {x: -0.0000000014551915, y: -0.0000000014551915, z: -0.000000003274181, + w: 1} + scale: {x: 1.0000002, y: 1.0000004, z: 1.0000001} + - name: mixamorig:LeftHand + parentName: mixamorig:LeftForeArm + position: {x: -0.2832884, y: -0.00000017440718, z: 0.00000037804523} + rotation: {x: 0.0000000014551915, y: -0, z: -0.0000000021827873, w: 1} + scale: {x: 1.0000002, y: 1.0000001, z: 1} + - name: mixamorig:LeftHandThumb1 + parentName: mixamorig:LeftHand + position: {x: -0.024661401, y: -0.015750492, z: 0.026824135} + rotation: {x: -0.11863639, y: 0.08685272, z: -0.118636325, w: 0.9819916} + scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001} + - name: mixamorig:LeftHandThumb2 + parentName: mixamorig:LeftHandThumb1 + position: {x: -0.032298036, y: -0.018646907, z: 0.018646812} + rotation: {x: 0.000000029103827, y: -0.000000005820766, z: 0.000000014551915, + w: 1} + scale: {x: 1.0000002, y: 1.0000001, z: 1} + - name: mixamorig:LeftHandThumb3 + parentName: mixamorig:LeftHandThumb2 + position: {x: -0.02652565, y: -0.015314929, z: 0.015314716} + rotation: {x: -0.00000003201421, y: -0.0000000058207643, z: -0.000000029831426, + w: 1} + scale: {x: 1.0000002, y: 1.0000002, z: 1.0000001} + - name: mixamorig:LeftHandThumb4 + parentName: mixamorig:LeftHandThumb3 + position: {x: -0.019545669, y: -0.0112850005, z: 0.011284921} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandIndex1 + parentName: mixamorig:LeftHand + position: {x: -0.09109301, y: -0.005170834, z: 0.02260073} + rotation: {x: -0.000000011641532, y: -0.00000001164153, z: 1.6940656e-17, w: 1} + scale: {x: 1.0000002, y: 1.0000001, z: 1} + - name: mixamorig:LeftHandIndex2 + parentName: mixamorig:LeftHandIndex1 + position: {x: -0.036764093, y: -0.00000006939138, z: 0.00000029242517} + rotation: {x: -0.000000011641532, y: 0.0000000116415295, z: 0.000000011641532, + w: 1} + scale: {x: 1.0000005, y: 1.0000004, z: 1} + - name: mixamorig:LeftHandIndex3 + parentName: mixamorig:LeftHandIndex2 + position: {x: -0.028830625, y: 0.00000038511968, z: -0.00000042764816} + rotation: {x: -0, y: 0.000000005820767, z: -0.000000029103829, w: 1} + scale: {x: 1.0000005, y: 1.0000004, z: 1.0000001} + - name: mixamorig:LeftHandIndex4 + parentName: mixamorig:LeftHandIndex3 + position: {x: -0.023927199, y: 0.00000037025907, z: 0.00000033554434} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandMiddle1 + parentName: mixamorig:LeftHand + position: {x: -0.095334016, y: -0.00000033924047, z: 0.00000013937026} + rotation: {x: 0.000000011641534, y: 0.000000011641534, z: -1.6940662e-17, w: 1} + scale: {x: 1.0000002, y: 1.0000002, z: 1.0000001} + - name: mixamorig:LeftHandMiddle2 + parentName: mixamorig:LeftHandMiddle1 + position: {x: -0.036982365, y: 0.00000001961359, z: 0.00000017916967} + rotation: {x: -1.7763568e-15, y: -0.000000011641534, z: 0.000000005820766, w: 1} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: mixamorig:LeftHandMiddle3 + parentName: mixamorig:LeftHandMiddle2 + position: {x: -0.029509215, y: -0.00000039376084, z: 0.0000001644796} + rotation: {x: -0.000000011641532, y: 0.0000000058207656, z: -0.000000014551915, + w: 1} + scale: {x: 1.0000002, y: 1.0000004, z: 1.0000001} + - name: mixamorig:LeftHandMiddle4 + parentName: mixamorig:LeftHandMiddle3 + position: {x: -0.028339025, y: -0.0000003893482, z: -0.00000009504223} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandRing1 + parentName: mixamorig:LeftHand + position: {x: -0.091045275, y: -0.00043939505, z: -0.018650847} + rotation: {x: -3.330669e-16, y: 0.0000000349246, z: -0.000000005820767, w: 1} + scale: {x: 1.0000002, y: 1.0000002, z: 1.0000001} + - name: mixamorig:LeftHandRing2 + parentName: mixamorig:LeftHandRing1 + position: {x: -0.031540267, y: -0.00000006553468, z: 0.00000010425744} + rotation: {x: 0.000000023283068, y: -0.000000029103834, z: 0.000000005820768, + w: 1} + scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001} + - name: mixamorig:LeftHandRing3 + parentName: mixamorig:LeftHandRing2 + position: {x: -0.029376723, y: -0.00000045458617, z: -0.00000006864757} + rotation: {x: -0.000000046566132, y: 0.000000010186342, z: 0.00000003274181, + w: 1} + scale: {x: 1, y: 1.0000001, z: 1} + - name: mixamorig:LeftHandRing4 + parentName: mixamorig:LeftHandRing3 + position: {x: -0.026474526, y: -0.00000049804413, z: 7.0705153e-10} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandPinky1 + parentName: mixamorig:LeftHand + position: {x: -0.08077778, y: -0.004886682, z: -0.03806067} + rotation: {x: 0.00000002328306, y: 0.000000011641532, z: -1.6940659e-17, w: 1} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: mixamorig:LeftHandPinky2 + parentName: mixamorig:LeftHandPinky1 + position: {x: -0.036000345, y: -0.000000022522151, z: -0.00000026238794} + rotation: {x: 3.5527137e-15, y: 0.000000005820768, z: -0.0000000029103842, w: 1} + scale: {x: 1.0000004, y: 1.0000004, z: 1} + - name: mixamorig:LeftHandPinky3 + parentName: mixamorig:LeftHandPinky2 + position: {x: -0.021142116, y: 0.00000019538281, z: -0.00000002864415} + rotation: {x: -0.000000023283064, y: -0.000000020372685, z: -0.000000017462298, + w: 1} + scale: {x: 1.0000005, y: 1.0000005, z: 1.0000001} + - name: mixamorig:LeftHandPinky4 + parentName: mixamorig:LeftHandPinky3 + position: {x: -0.019756826, y: 0.00000012405657, z: -0.00000044301405} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightShoulder + parentName: mixamorig:Spine2 + position: {x: 0.045699697, y: 0.10946176, z: -0.026280174} + rotation: {x: 4.440892e-16, y: -0.0000000043655746, z: -0.000000005638867, w: 1} + scale: {x: 1.0000001, y: 0.99999994, z: 0.99999994} + - name: mixamorig:RightArm + parentName: mixamorig:RightShoulder + position: {x: 0.105928436, y: -0.0052479836, z: -0.022320986} + rotation: {x: 0.0000000029103826, y: 0.0000000043655746, z: 0.0000000136424205, + w: 1} + scale: {x: 1, y: 1.0000004, z: 1.0000001} + - name: mixamorig:RightForeArm + parentName: mixamorig:RightArm + position: {x: 0.2784152, y: -0.00000033079218, z: 0.000000116763104} + rotation: {x: -0.0000000029103826, y: 0.000000032014214, z: -1.8189905e-10, + w: 1} + scale: {x: 1.0000001, y: 1.0000001, z: 1.0000001} + - name: mixamorig:RightHand + parentName: mixamorig:RightForeArm + position: {x: 0.2832884, y: -0.0000000015814171, z: 0.00000055816014} + rotation: {x: 0.0000000145519135, y: -0.00000006984919, z: -0.0000000058207656, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandPinky1 + parentName: mixamorig:RightHand + position: {x: 0.080766745, y: -0.0048845927, z: -0.038060103} + rotation: {x: 2.6645353e-15, y: 0.000000034924597, z: -0.000000005820767, w: 1} + scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001} + - name: mixamorig:RightHandPinky2 + parentName: mixamorig:RightHandPinky1 + position: {x: 0.036000345, y: 0.00000039676655, z: 0.0000005081442} + rotation: {x: 0.0000000116415295, y: -0.000000011641532, z: -0.000000005820766, + w: 1} + scale: {x: 1.0000006, y: 1.0000005, z: 1} + - name: mixamorig:RightHandPinky3 + parentName: mixamorig:RightHandPinky2 + position: {x: 0.021142116, y: 0.00000015137925, z: 0.00000014793768} + rotation: {x: -0.00000006984919, y: 0.0000000029103822, z: -0.000000014551912, + w: 1} + scale: {x: 0.9999998, y: 0.99999994, z: 1} + - name: mixamorig:RightHandPinky4 + parentName: mixamorig:RightHandPinky3 + position: {x: 0.019756826, y: -0.00000018521958, z: -0.000000009839841} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandRing1 + parentName: mixamorig:RightHand + position: {x: 0.09103588, y: -0.00043914348, z: -0.018650724} + rotation: {x: -0.000000034924597, y: 0.000000034924597, z: 0.000000005820767, + w: 1} + scale: {x: 1.0000002, y: 1.0000001, z: 1} + - name: mixamorig:RightHandRing2 + parentName: mixamorig:RightHandRing1 + position: {x: 0.031540267, y: 0.00000023997296, z: 0.0000004885121} + rotation: {x: 0.00000004656613, y: 0.000000005820766, z: 0.0000000029103817, + w: 1} + scale: {x: 1.0000002, y: 1.0000001, z: 1} + - name: mixamorig:RightHandRing3 + parentName: mixamorig:RightHandRing2 + position: {x: 0.029376723, y: -0.00000041600654, z: -0.00000039660634} + rotation: {x: -0.000000011641529, y: -0.0000000058207665, z: -0.000000011641532, + w: 1} + scale: {x: 1.0000004, y: 1.0000004, z: 1} + - name: mixamorig:RightHandRing4 + parentName: mixamorig:RightHandRing3 + position: {x: 0.026474526, y: 0.00000024608212, z: -0.000000022949234} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandMiddle1 + parentName: mixamorig:RightHand + position: {x: 0.09532503, y: -0.00000016312302, z: 0.00000016791842} + rotation: {x: 1.7763568e-15, y: 0.000000023283064, z: 0.000000005820765, w: 1} + scale: {x: 1.0000001, y: 1.0000001, z: 1} + - name: mixamorig:RightHandMiddle2 + parentName: mixamorig:RightHandMiddle1 + position: {x: 0.036982365, y: 0.00000015066959, z: -0.00000022545524} + rotation: {x: -0.000000011641532, y: 0.000000005820766, z: -0.000000017462295, + w: 1} + scale: {x: 1.0000004, y: 1.0000004, z: 1.0000001} + - name: mixamorig:RightHandMiddle3 + parentName: mixamorig:RightHandMiddle2 + position: {x: 0.029509215, y: -0.000000003113245, z: -0.0000000030340255} + rotation: {x: -0, y: 0.000000011641532, z: 0.0000000145519135, w: 1} + scale: {x: 1.0000001, y: 1.0000001, z: 1} + - name: mixamorig:RightHandMiddle4 + parentName: mixamorig:RightHandMiddle3 + position: {x: 0.028339025, y: 0.00000008053241, z: 0.00000053787704} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandIndex1 + parentName: mixamorig:RightHand + position: {x: 0.09108281, y: -0.0051678894, z: 0.022601163} + rotation: {x: -0.00000001164153, y: 0.000000034924597, z: 6.4130506e-17, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandIndex2 + parentName: mixamorig:RightHandIndex1 + position: {x: 0.036764093, y: 0.00000019227156, z: 0.0000003235567} + rotation: {x: -0, y: -0.000000005820766, z: -0.000000011641531, w: 1} + scale: {x: 1.0000001, y: 1, z: 1} + - name: mixamorig:RightHandIndex3 + parentName: mixamorig:RightHandIndex2 + position: {x: 0.028830625, y: -0.00000049601215, z: 0.00000040448975} + rotation: {x: -0.000000023283063, y: -0.000000001455192, z: 0.000000043655746, + w: 1} + scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001} + - name: mixamorig:RightHandIndex4 + parentName: mixamorig:RightHandIndex3 + position: {x: 0.023927199, y: 0.000000268147, z: 0.00000028020133} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandThumb1 + parentName: mixamorig:RightHand + position: {x: 0.024648061, y: -0.015727142, z: 0.026826264} + rotation: {x: -0.11863704, y: -0.086847514, z: 0.1186371, w: 0.9819919} + scale: {x: 1, y: 1, z: 1.0000001} + - name: mixamorig:RightHandThumb2 + parentName: mixamorig:RightHandThumb1 + position: {x: 0.03229772, y: -0.018647088, z: 0.018647185} + rotation: {x: 0.000000011641534, y: 0.000000020372681, z: -0.000000016734703, + w: 1} + scale: {x: 1.0000001, y: 1, z: 1} + - name: mixamorig:RightHandThumb3 + parentName: mixamorig:RightHandThumb2 + position: {x: 0.02652605, y: -0.015314492, z: 0.015314456} + rotation: {x: -0.000000011641534, y: 0.000000002910383, z: 0.000000016734703, + w: 1} + scale: {x: 1.0000001, y: 1.0000001, z: 1.0000001} + - name: mixamorig:RightHandThumb4 + parentName: mixamorig:RightHandThumb3 + position: {x: 0.019545805, y: -0.011284617, z: 0.01128507} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightUpLeg + parentName: mixamorig:Hips + position: {x: 0.08207796, y: -0.06751662, z: -0.015995594} + rotation: {x: 0.000000005820767, y: -0.00000001164153, z: 0.000000013460522, + w: 1} + scale: {x: 0.99999994, y: 1, z: 1} + - name: mixamorig:RightLeg + parentName: mixamorig:RightUpLeg + position: {x: -8.435572e-10, y: -0.44370535, z: 0.0028615638} + rotation: {x: -0.000000011641532, y: 0.00000001164153, z: 4.560602e-25, w: 1} + scale: {x: 1.0000001, y: 1.0000001, z: 1} + - name: mixamorig:RightFoot + parentName: mixamorig:RightLeg + position: {x: -0.000000009644582, y: -0.4442773, z: -0.02983789} + rotation: {x: 0.000000005820765, y: 0.000000011641532, z: -1.6408316e-15, w: 1} + scale: {x: 1.0000001, y: 1, z: 1} + - name: mixamorig:RightToeBase + parentName: mixamorig:RightFoot + position: {x: 0.00000002360438, y: -0.08728669, z: 0.107105605} + rotation: {x: -7.275953e-10, y: -0.000000011641532, z: 1.819007e-10, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightToe_End + parentName: mixamorig:RightToeBase + position: {x: 0.000000020942645, y: -0.000006763694, z: 0.0927812} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftUpLeg + parentName: mixamorig:Hips + position: {x: -0.082077816, y: -0.06751714, z: -0.015995556} + rotation: {x: -9.529121e-18, y: 0.0000000029103826, z: 0.000000014915713, w: 1} + scale: {x: 1, y: 1, z: 1.0000001} + - name: mixamorig:LeftLeg + parentName: mixamorig:LeftUpLeg + position: {x: 0.000000004110158, y: -0.44370472, z: 0.0028464263} + rotation: {x: -0.000000011641532, y: -0.0000000029103826, z: 0.0000000014551917, + w: 1} + scale: {x: 1.0000001, y: 1, z: 1} + - name: mixamorig:LeftFoot + parentName: mixamorig:LeftLeg + position: {x: -0.0000000047163935, y: -0.44427872, z: -0.029821906} + rotation: {x: 0.000000011641532, y: -0, z: -0.0000000028876457, w: 1} + scale: {x: 1.0000001, y: 1, z: 1} + - name: mixamorig:LeftToeBase + parentName: mixamorig:LeftFoot + position: {x: 0.000000029609879, y: -0.087286696, z: 0.1071056} + rotation: {x: -0, y: 7.940934e-19, z: 6.82121e-11, w: 1} + scale: {x: 1, y: 0.99999994, z: 1} + - name: mixamorig:LeftToe_End + parentName: mixamorig:LeftToeBase + position: {x: 0.000000025080618, y: -0.0000067668298, z: 0.09278136} + 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 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/MarathonMan004.prefab b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/MarathonMan004.prefab new file mode 100644 index 0000000..8267aea --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/MarathonMan004.prefab @@ -0,0 +1,4850 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &48886002445976411 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3158603780280599340} + - component: {fileID: 6375075948559094595} + - component: {fileID: 8483029907086489337} + - component: {fileID: 8687440762908259137} + m_Layer: 6 + m_Name: left_foot_toe_senor_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3158603780280599340 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 48886002445976411} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.02, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7200902519591220141} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &6375075948559094595 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 48886002445976411} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.03 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &8483029907086489337 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 48886002445976411} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d041794481cd24f4d92e5f3da728fe64, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &8687440762908259137 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 48886002445976411} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 0} +--- !u!1 &963486602752053430 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5287265992975624110} + - component: {fileID: 837786529545343070} + - component: {fileID: 4201493407406561921} + m_Layer: 6 + m_Name: articulation:LeftArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5287265992975624110 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963486602752053430} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.1059237, y: -0.005245829, z: -0.0223212} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8726915850983127639} + - {fileID: 982461226543410} + m_Father: {fileID: 1662403427464287594} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!171741748 &837786529545343070 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963486602752053430} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 0.1 + m_ParentAnchorPosition: {x: -0.10592371, y: -0.005245805, z: -0.022321211} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -39.02838 + upperLimit: 45.707645 + stiffness: 10 + damping: 0.8 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -52.24655 + upperLimit: 84.082306 + stiffness: 10 + damping: 0.8 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -35.551025 + upperLimit: 89.50324 + stiffness: 10 + damping: 0.8 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &4201493407406561921 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963486602752053430} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &1499194022771185243 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6236938740036876889} + - component: {fileID: 2361656389384067892} + - component: {fileID: 7131768230493309819} + - component: {fileID: 5764981685078331935} + m_Layer: 6 + m_Name: LeftFoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6236938740036876889 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1499194022771185243} + serializedVersion: 2 + m_LocalRotation: {x: 0.013965797, y: -0.04032425, z: 0.0061997985, w: 0.99906987} + m_LocalPosition: {x: 0.0012178792, y: -0.051369626, z: 0.009642508} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7244107296329441007} + m_Father: {fileID: 4176204633534038840} + m_LocalEulerAnglesHint: {x: -2.381, y: -4.472, z: 0.342} +--- !u!114 &2361656389384067892 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1499194022771185243} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!65 &7131768230493309819 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1499194022771185243} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 0.08, y: 0.04, z: 0.11} + m_Center: {x: 0, y: -0.008, z: 0.01} +--- !u!171741748 &5764981685078331935 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1499194022771185243} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 1 + m_ParentAnchorPosition: {x: -0.0014052682, y: 0.14263964, z: 0.0149619775} + m_ParentAnchorRotation: {x: -0.018638238, y: -0.03838886, z: 0.710833, w: 0.70206517} + m_AnchorPosition: {x: -0.0000000018626451, y: 0.19409993, z: 0.000000044703484} + m_AnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_MatchAnchors: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 0 + m_Twist: 0 + m_XDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -130 + upperLimit: 20 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -2 + upperLimit: 160 + stiffness: 80000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!1 &1994225063198175274 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1662403427464287594} + - component: {fileID: 2015231249865073876} + - component: {fileID: 6660338583867514660} + m_Layer: 6 + m_Name: articulation:LeftShoulder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1662403427464287594 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1994225063198175274} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.045704465, y: 0.10945985, z: -0.02627988} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5287265992975624110} + m_Father: {fileID: 8719916423667245899} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!171741748 &2015231249865073876 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1994225063198175274} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 0.1 + m_ParentAnchorPosition: {x: -0.04570447, y: 0.10945985, z: -0.026279887} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -5.1231995 + upperLimit: 9.474642 + stiffness: 10 + damping: 0.8 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -14.627563 + upperLimit: 37.523808 + stiffness: 10 + damping: 0.8 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -53.567993 + upperLimit: 19.39701 + stiffness: 10 + damping: 0.8 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &6660338583867514660 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1994225063198175274} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &2171824147109647371 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1271494809415718833} + - component: {fileID: 1127414539557790481} + - component: {fileID: 3960999987232551125} + m_Layer: 6 + m_Name: articulation:LeftToeBase + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1271494809415718833 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2171824147109647371} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000033527602, y: -0, z: 6.111802e-10, w: 1} + m_LocalPosition: {x: -0.00021497154, y: -0.0833113, z: 0.10032687} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7200902519591220141} + m_Father: {fileID: 4176204633534038840} + m_LocalEulerAnglesHint: {x: 1.904, y: 0, z: 0} +--- !u!171741748 &1127414539557790481 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2171824147109647371} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 0.43 + m_ParentAnchorPosition: {x: -0.00021497099, y: -0.08331132, z: 0.10032688} + m_ParentAnchorRotation: {x: 0.000000033527602, y: 0, z: 6.111802e-10, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -36.826538 + upperLimit: 6.3134046 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -0.000000035529183 + upperLimit: 0.0000000058857963 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0.00000010677379 + stiffness: 80000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &3960999987232551125 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2171824147109647371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &2689048127048375752 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3209880959380516652} + - component: {fileID: 689695163126716068} + - component: {fileID: 1290925815246772676} + m_Layer: 6 + m_Name: articulation:LeftLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3209880959380516652 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2689048127048375752} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.000000004110158, y: -0.44370472, z: 0.0028464263} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8719785513307943279} + - {fileID: 4176204633534038840} + m_Father: {fileID: 7863943792880575272} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!171741748 &689695163126716068 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2689048127048375752} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 0.1 + m_ParentAnchorPosition: {x: 0.000000007450581, y: -0.44370475, z: 0.0028464254} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: 0 + upperLimit: 89.68349 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -34.556 + upperLimit: 20.493767 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -16.610535 + upperLimit: 23.423319 + stiffness: 80000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &1290925815246772676 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2689048127048375752} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &3618667955577488616 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4748051902078584840} + - component: {fileID: 1823160748685434914} + - component: {fileID: 5345799157171613954} + m_Layer: 6 + m_Name: RightToeBase + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4748051902078584840 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3618667955577488616} + serializedVersion: 2 + m_LocalRotation: {x: 0.014421649, y: 0.04016044, z: 0.00506055, w: 0.9990764} + m_LocalPosition: {x: 0.0074659903, y: 0.025514223, z: 0.03958959} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2124878856526149443} + - {fileID: 7975277504178560973} + m_Father: {fileID: 7330895667309991548} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1823160748685434914 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3618667955577488616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 0} +--- !u!65 &5345799157171613954 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3618667955577488616} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 0.08, y: 0.04, z: 0.04} + m_Center: {x: 0, y: 0, z: -0.000000007450581} +--- !u!1 &3733874705092467647 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8014189354646165340} + - component: {fileID: 8544866305300810863} + - component: {fileID: 7190292769614457407} + - component: {fileID: 5084748273341808788} + m_Layer: 6 + m_Name: left_foot_toe_senor_l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8014189354646165340 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3733874705092467647} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.02, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7200902519591220141} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &8544866305300810863 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3733874705092467647} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.03 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &7190292769614457407 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3733874705092467647} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d041794481cd24f4d92e5f3da728fe64, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &5084748273341808788 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3733874705092467647} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 0} +--- !u!1 &4049109848645304093 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4239193890641791696} + - component: {fileID: 6499578195492720033} + - component: {fileID: 2247839371280604527} + m_Layer: 6 + m_Name: articulation:RightLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4239193890641791696 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4049109848645304093} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -8.435572e-10, y: -0.44370535, z: 0.0028615638} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8727345808408514215} + - {fileID: 6587772823425485998} + m_Father: {fileID: 5551475452946298458} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!171741748 &6499578195492720033 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4049109848645304093} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 0.1 + m_ParentAnchorPosition: {x: 0, y: -0.44370532, z: 0.002861563} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: 0 + upperLimit: 88.329185 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -24.389618 + upperLimit: 32.333534 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -24.646301 + upperLimit: 16.180906 + stiffness: 80000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &2247839371280604527 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4049109848645304093} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &4190549850654841206 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 982461226543410} + - component: {fileID: 1808420173214174992} + - component: {fileID: 6242672257749564432} + m_Layer: 6 + m_Name: articulation:LeftForeArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &982461226543410 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4190549850654841206} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.2784152, y: -0.0000008942865, z: 0.0000003745891} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8727169760970726795} + - {fileID: 8719610834567201839} + m_Father: {fileID: 5287265992975624110} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!171741748 &1808420173214174992 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4190549850654841206} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 0.1 + m_ParentAnchorPosition: {x: -0.27841526, y: -0.00000092945993, z: 0.00000036880374} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -39.932983 + upperLimit: 42.126442 + stiffness: 40000 + damping: 100 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -2.1197205 + upperLimit: 154.17801 + stiffness: 0 + damping: 0 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -37.012787 + upperLimit: 14.80548 + stiffness: 20000 + damping: 100 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &6242672257749564432 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4190549850654841206} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &4226232852625651408 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7863943792880575272} + - component: {fileID: 2971074736974418861} + - component: {fileID: 7675549159314929443} + m_Layer: 6 + m_Name: articulation:LeftUpLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7863943792880575272 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4226232852625651408} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.082077816, y: -0.06751714, z: -0.015995556} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8727133215876659327} + - {fileID: 3209880959380516652} + m_Father: {fileID: 8719972220993353125} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!171741748 &2971074736974418861 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4226232852625651408} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 0.1 + m_ParentAnchorPosition: {x: -0.082077816, y: -0.06751716, z: -0.015995556} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -87.77893 + upperLimit: 35.09535 + stiffness: 40000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -38.14801 + upperLimit: 15.416456 + stiffness: 40000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -65.19919 + upperLimit: 23.16159 + stiffness: 120000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &7675549159314929443 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4226232852625651408} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &4791384792183454201 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5551475452946298458} + - component: {fileID: 1279219593241357561} + - component: {fileID: 5371255058742018447} + m_Layer: 6 + m_Name: articulation:RightUpLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5551475452946298458 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4791384792183454201} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.08207796, y: -0.06751662, z: -0.015995594} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8719625710430969117} + - {fileID: 4239193890641791696} + m_Father: {fileID: 8719972220993353125} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!171741748 &1279219593241357561 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4791384792183454201} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 0.1 + m_ParentAnchorPosition: {x: 0.08207796, y: -0.067516625, z: -0.015995594} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -88.51416 + upperLimit: 35.580242 + stiffness: 40000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -20.447327 + upperLimit: 32.77133 + stiffness: 40000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -28.28543 + upperLimit: 58.45759 + stiffness: 120000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &5371255058742018447 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4791384792183454201} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &5607761610354034812 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 799287010776281540} + - component: {fileID: 8149641315181257463} + - component: {fileID: 5332134630415139608} + m_Layer: 6 + m_Name: articulation:RightArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &799287010776281540 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5607761610354034812} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.105928436, y: -0.0052479836, z: -0.022320986} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8727146830054938469} + - {fileID: 1198069920422691408} + m_Father: {fileID: 7275751957409819602} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!171741748 &8149641315181257463 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5607761610354034812} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 0.1 + m_ParentAnchorPosition: {x: 0.10592845, y: -0.005247958, z: -0.022320991} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -38.633026 + upperLimit: 42.542076 + stiffness: 10 + damping: 0.8 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -69.69336 + upperLimit: 69.44282 + stiffness: 10 + damping: 0.8 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -83.01849 + upperLimit: 16.186922 + stiffness: 10 + damping: 0.8 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &5332134630415139608 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5607761610354034812} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &5630317162333729115 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7330895667309991548} + - component: {fileID: 2768223422526478394} + - component: {fileID: 3415177543469731393} + m_Layer: 6 + m_Name: articulation:RightToeBase + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7330895667309991548 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5630317162333729115} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.00000002360438, y: -0.08728669, z: 0.107105605} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4748051902078584840} + m_Father: {fileID: 6587772823425485998} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!171741748 &2768223422526478394 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5630317162333729115} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 0.43 + m_ParentAnchorPosition: {x: 0.0000000253893, y: -0.08728659, z: 0.107105605} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -65.488464 + upperLimit: 37.631844 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -2.1962581e-12 + upperLimit: 4.1454166e-12 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -0.0000000016675266 + upperLimit: 0 + stiffness: 80000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &3415177543469731393 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5630317162333729115} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &6094053739594975242 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7275751957409819602} + - component: {fileID: 1856326131723110599} + - component: {fileID: 731609966799716163} + m_Layer: 6 + m_Name: articulation:RightShoulder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7275751957409819602 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6094053739594975242} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.045699697, y: 0.10946176, z: -0.026280174} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 799287010776281540} + m_Father: {fileID: 8719916423667245899} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!171741748 &1856326131723110599 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6094053739594975242} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 0.1 + m_ParentAnchorPosition: {x: 0.0456997, y: 0.109461755, z: -0.026280178} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -5.1863403 + upperLimit: 8.787041 + stiffness: 10 + damping: 0.8 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -30.036896 + upperLimit: 23.630144 + stiffness: 10 + damping: 0.8 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -22.975433 + upperLimit: 49.699715 + stiffness: 10 + damping: 0.8 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &731609966799716163 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6094053739594975242} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &6620903151815319636 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1073130774394724074} + - component: {fileID: 2854261312110378733} + - component: {fileID: 4961048942146317338} + - component: {fileID: 1340527944349289928} + m_Layer: 6 + m_Name: RightFoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1073130774394724074 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6620903151815319636} + serializedVersion: 2 + m_LocalRotation: {x: 0.014421649, y: 0.04016044, z: 0.00506055, w: 0.9990764} + m_LocalPosition: {x: -0.0013827014, y: -0.05172925, z: 0.010792955} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4844628543646996709} + m_Father: {fileID: 6587772823425485998} + m_LocalEulerAnglesHint: {x: 1.628, y: 4.613, z: 0.646} +--- !u!114 &2854261312110378733 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6620903151815319636} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!65 &4961048942146317338 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6620903151815319636} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 0.08, y: 0.04, z: 0.11} + m_Center: {x: 0, y: -0.008, z: 0.01} +--- !u!171741748 &1340527944349289928 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6620903151815319636} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 1 + m_ParentAnchorPosition: {x: -0.003120546, y: 0.14228001, z: 0.016465202} + m_ParentAnchorRotation: {x: 0.038595363, y: 0.018200073, z: 0.71003205, w: 0.7028753} + m_AnchorPosition: {x: -0.0000000018626451, y: 0.19409993, z: 0.000000044703484} + m_AnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_MatchAnchors: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 0 + m_Twist: 0 + m_XDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -130 + upperLimit: 20 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -2 + upperLimit: 160 + stiffness: 80000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!1 &6849119433119751032 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6587772823425485998} + - component: {fileID: 4079613823659954323} + - component: {fileID: 2161473540212576310} + m_Layer: 6 + m_Name: articulation:RightFoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6587772823425485998 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6849119433119751032} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.000000009644582, y: -0.4442773, z: -0.02983789} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1073130774394724074} + - {fileID: 7330895667309991548} + m_Father: {fileID: 4239193890641791696} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!171741748 &4079613823659954323 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6849119433119751032} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 0.1 + m_ParentAnchorPosition: {x: -0.0000000066070234, y: -0.44427726, z: -0.029837893} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -50.36508 + upperLimit: 46.474327 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -18.532745 + upperLimit: 20.546387 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -34.593506 + upperLimit: 18.047752 + stiffness: 80000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &2161473540212576310 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6849119433119751032} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &6867810242215521029 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 582342769611828735} + - component: {fileID: 3770211905496810946} + - component: {fileID: 3411291576965625666} + m_Layer: 6 + m_Name: articulation:Neck + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &582342769611828735 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6867810242215521029} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.16671668, z: -0.025161678} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8727036802277262371} + m_Father: {fileID: 8719916423667245899} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!171741748 &3770211905496810946 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6867810242215521029} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 0.1 + m_ParentAnchorPosition: {x: 0, y: 0.16671667, z: -0.025161682} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -45.407745 + upperLimit: 32.374496 + stiffness: 10 + damping: 0.8 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -10.113281 + upperLimit: 24.615047 + stiffness: 10 + damping: 0.8 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -36.44565 + upperLimit: 26.645346 + stiffness: 10 + damping: 0.8 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &3411291576965625666 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6867810242215521029} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &7489089680692072573 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4844628543646996709} + - component: {fileID: 507438470525538877} + - component: {fileID: 3040214527863831954} + - component: {fileID: 1139824957143500863} + m_Layer: 6 + m_Name: right_foot_heal_senor_l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4844628543646996709 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7489089680692072573} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.01, z: -0.04} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1073130774394724074} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &507438470525538877 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7489089680692072573} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.03 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &3040214527863831954 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7489089680692072573} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d041794481cd24f4d92e5f3da728fe64, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1139824957143500863 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7489089680692072573} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 0} +--- !u!1 &7723264387037259005 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2124878856526149443} + - component: {fileID: 5092232706459421326} + - component: {fileID: 6564977407413426340} + - component: {fileID: 5230546732845201068} + m_Layer: 6 + m_Name: right_foot_toe_senor_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2124878856526149443 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7723264387037259005} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.02, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4748051902078584840} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &5092232706459421326 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7723264387037259005} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.03 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &6564977407413426340 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7723264387037259005} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d041794481cd24f4d92e5f3da728fe64, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &5230546732845201068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7723264387037259005} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 0} +--- !u!1 &7922785383300859302 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1198069920422691408} + - component: {fileID: 9173802407982569481} + - component: {fileID: 2896841057666015045} + m_Layer: 6 + m_Name: articulation:RightForeArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1198069920422691408 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7922785383300859302} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.2784152, y: -0.00000033079218, z: 0.000000116763104} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8727310058112905241} + - {fileID: 8719986123157941757} + m_Father: {fileID: 799287010776281540} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!171741748 &9173802407982569481 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7922785383300859302} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 0.1 + m_ParentAnchorPosition: {x: 0.2784152, y: -0.0000003320165, z: 0.00000010617077} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -34.16513 + upperLimit: 26.5044 + stiffness: 0 + damping: 0 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -149.99785 + upperLimit: 3.6872184 + stiffness: 20000 + damping: 100 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -15.978027 + upperLimit: 34.969135 + stiffness: 20000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &2896841057666015045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7922785383300859302} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &8659199053165400752 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7975277504178560973} + - component: {fileID: 4038028182170445727} + - component: {fileID: 4530735733054983234} + - component: {fileID: 305935908308082129} + m_Layer: 6 + m_Name: right_foot_toe_senor_l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7975277504178560973 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8659199053165400752} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.02, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4748051902078584840} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &4038028182170445727 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8659199053165400752} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.03 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &4530735733054983234 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8659199053165400752} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d041794481cd24f4d92e5f3da728fe64, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &305935908308082129 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8659199053165400752} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 0} +--- !u!1 &8721257505423050027 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8727133215876659327} + - component: {fileID: 8713267639091722053} + - component: {fileID: 1239497654434244758} + - component: {fileID: 2293727454787031320} + m_Layer: 6 + m_Name: LeftUpLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8727133215876659327 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721257505423050027} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0.0002762922, w: 1} + m_LocalPosition: {x: 0.005633332, y: -0.20588422, z: 0.0027651554} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7863943792880575272} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -0.032} +--- !u!136 &8713267639091722053 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721257505423050027} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.05 + m_Height: 0.5 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!171741748 &1239497654434244758 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721257505423050027} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 9.4 + m_ParentAnchorPosition: {x: 0.005738318, y: -0.015884243, z: 0.0027651545} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0.7069114, w: 0.70730215} + m_AnchorPosition: {x: 0, y: 0.19, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_MatchAnchors: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -30 + upperLimit: 10 + stiffness: 40000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -20 + upperLimit: 110 + stiffness: 40000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -40 + upperLimit: 20 + stiffness: 120000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &2293727454787031320 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721257505423050027} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &8721382153573412577 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8719625710430969117} + - component: {fileID: 8712619329714692303} + - component: {fileID: 6032172806317267978} + - component: {fileID: 3512670218709648495} + - component: {fileID: 1672917857352392559} + m_Layer: 6 + m_Name: RightUpLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8719625710430969117 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721382153573412577} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0.0002762922, w: 1} + m_LocalPosition: {x: 0.0026100948, y: -0.2058847, z: 0.0027651917} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5551475452946298458} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -0.032} +--- !u!136 &8712619329714692303 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721382153573412577} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.05 + m_Height: 0.5 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!171741748 &6032172806317267978 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721382153573412577} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 9.4 + m_ParentAnchorPosition: {x: 0.0027150884, y: -0.015884705, z: 0.0027651908} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0.7069114, w: 0.70730215} + m_AnchorPosition: {x: 0, y: 0.19, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_MatchAnchors: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -10 + upperLimit: 30 + stiffness: 40000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -20 + upperLimit: 110 + stiffness: 40000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -20 + upperLimit: 40 + stiffness: 120000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &3512670218709648495 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721382153573412577} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9cdefdb10ded44c16a6a038694a4f530, type: 3} + m_Name: + m_EditorClassIdentifier: + SphereSize: 0.03 + TargetRotationInJointSpace: {x: 0, y: 0, z: 0} + RotationInJointSpace: {x: 0, y: 0, z: 0} + RotationInJointSpaceError: {x: 0, y: 0, z: 0} + RotationInJointSpaceErrorRad: {x: 0, y: 0, z: 0} + JointPositionDeg: {x: 0, y: 0, z: 0} + JointTargetDeg: {x: 0, y: 0, z: 0} + JointPositionRad: {x: 0, y: 0, z: 0} + JointTargetRad: {x: 0, y: 0, z: 0} +--- !u!114 &1672917857352392559 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721382153573412577} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &8721563140769238539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8727036802277262371} + - component: {fileID: 260939356137283678} + - component: {fileID: 3604489950590612974} + - component: {fileID: 2572251234220683469} + m_Layer: 6 + m_Name: head + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8727036802277262371 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721563140769238539} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.1967539, z: 0.003929313} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 582342769611828735} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!171741748 &260939356137283678 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721563140769238539} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 7.5 + m_ParentAnchorPosition: {x: 0, y: 1.2567537, z: 0.003929306} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_AnchorPosition: {x: 0, y: 1.06, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_MatchAnchors: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 2 + m_SwingZ: 2 + m_Twist: 2 + m_XDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!136 &3604489950590612974 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721563140769238539} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.09 + m_Height: 0.18 + m_Direction: 2 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &2572251234220683469 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721563140769238539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &8721655427382561055 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8720055471826721631} + - component: {fileID: 8713129793612010291} + - component: {fileID: 7916655283506230889} + - component: {fileID: 3167475662087845531} + m_Layer: 6 + m_Name: articulation:Spine + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8720055471826721631 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721655427382561055} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.1018159, z: 0.001315209} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8726994228778927931} + m_Father: {fileID: 8719972220993353125} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!136 &8713129793612010291 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721655427382561055} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.12 + m_Height: 0.13 + m_Direction: 0 + m_Center: {x: 0, y: 0.13, z: 0.015} +--- !u!171741748 &7916655283506230889 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721655427382561055} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 7 + m_ParentAnchorPosition: {x: 0, y: 0.10181594, z: 0.001315209} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -6.2253113 + upperLimit: 15.555734 + stiffness: 0 + damping: 0 + forceLimit: 40 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -22.083008 + upperLimit: 25.77473 + stiffness: 40000 + damping: 100 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -13.635132 + upperLimit: 13.837361 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &3167475662087845531 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721655427382561055} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &8721681659342934139 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8719916423667245899} + - component: {fileID: 8712313686797083303} + - component: {fileID: 7179770322580443774} + - component: {fileID: 2544420391391284434} + - component: {fileID: 3861834763236872774} + m_Layer: 6 + m_Name: articulation:Spine2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8719916423667245899 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721681659342934139} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.0000000034574863, y: 0.09100011, z: -0.013734171} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1662403427464287594} + - {fileID: 582342769611828735} + - {fileID: 7275751957409819602} + m_Father: {fileID: 8726994228778927931} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!136 &8712313686797083303 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721681659342934139} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.07 + m_Height: 0.4 + m_Direction: 0 + m_Center: {x: 0, y: 0.1, z: -0.05} +--- !u!171741748 &7179770322580443774 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721681659342934139} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 7 + m_ParentAnchorPosition: {x: -0.0000000034574863, y: 0.09100009, z: -0.013734173} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -4.9473267 + upperLimit: 26.336067 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -8.957581 + upperLimit: 10.593676 + stiffness: 0 + damping: 0 + forceLimit: 40 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -12.026062 + upperLimit: 9.640167 + stiffness: 0 + damping: 0 + forceLimit: 40 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &2544420391391284434 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721681659342934139} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9cdefdb10ded44c16a6a038694a4f530, type: 3} + m_Name: + m_EditorClassIdentifier: + SphereSize: 0.03 + TargetRotationInJointSpace: {x: 0, y: 0, z: 0} + RotationInJointSpace: {x: 0, y: 0, z: 0} + RotationInJointSpaceError: {x: 0, y: 0, z: 0} + RotationInJointSpaceErrorRad: {x: 0, y: 0, z: 0} + JointPositionDeg: {x: 0, y: 0, z: 0} + JointTargetDeg: {x: 0, y: 0, z: 0} + JointPositionRad: {x: 0, y: 0, z: 0} + JointTargetRad: {x: 0, y: 0, z: 0} +--- !u!114 &3861834763236872774 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721681659342934139} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &8721717119359763167 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8719785513307943279} + - component: {fileID: 8713091803424204879} + - component: {fileID: 4028625926059442890} + - component: {fileID: 4711162523850988799} + m_Layer: 6 + m_Name: LeftLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8719785513307943279 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721717119359763167} + serializedVersion: 2 + m_LocalRotation: {x: 0.03465261, y: -0.0012203482, z: 0.005413673, w: 0.99938405} + m_LocalPosition: {x: 0.002868019, y: -0.22391981, z: -0.013853559} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3209880959380516652} + m_LocalEulerAnglesHint: {x: 3.972, y: -0.119, z: 0.617} +--- !u!136 &8713091803424204879 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721717119359763167} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.03 + m_Height: 0.5 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!171741748 &4028625926059442890 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721717119359763167} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 4.3 + m_ParentAnchorPosition: {x: 0.00075130496, y: -0.030297428, z: -0.0004122276} + m_ParentAnchorRotation: {x: 0.023640178, y: -0.025366012, z: 0.7104993, w: 0.7028432} + m_AnchorPosition: {x: -0.0000000018626451, y: 0.19409993, z: 0.000000044703484} + m_AnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_MatchAnchors: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 0 + m_Twist: 0 + m_XDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -130 + upperLimit: 20 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -2 + upperLimit: 160 + stiffness: 80000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &4711162523850988799 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721717119359763167} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &8721736883762993261 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8719610834567201839} + - component: {fileID: 7641843802677264542} + - component: {fileID: 753357962654151138} + m_Layer: 6 + m_Name: LeftHand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8719610834567201839 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721736883762993261} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.2832884, y: -0.00000017440718, z: 0.00000037804523} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 982461226543410} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7641843802677264542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721736883762993261} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!65 &753357962654151138 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721736883762993261} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 0.18, y: 0.03, z: 0.1} + m_Center: {x: -0.09, y: -0.008, z: 0.025} +--- !u!1 &8721795517134667573 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8719986123157941757} + - component: {fileID: 5371229505169230644} + - component: {fileID: 1012036716365501883} + m_Layer: 6 + m_Name: RightHand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8719986123157941757 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721795517134667573} + serializedVersion: 2 + m_LocalRotation: {x: 0.14572193, y: -0.010789281, z: -0.0033966785, w: 0.9892609} + m_LocalPosition: {x: 0.2832884, y: -0.0000000015814171, z: 0.00000055816014} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1198069920422691408} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &5371229505169230644 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721795517134667573} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 0.18, y: 0.03, z: 0.1} + m_Center: {x: 0.09, y: -0.008, z: 0.025} +--- !u!114 &1012036716365501883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721795517134667573} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &8721806364151867171 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8719972220993353125} + - component: {fileID: 8712435887441142449} + - component: {fileID: 2819076709843220300} + - component: {fileID: 3411150119855789431} + m_Layer: 6 + m_Name: articulation:Hips + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8719972220993353125 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721806364151867171} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.05, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7863943792880575272} + - {fileID: 5551475452946298458} + - {fileID: 8720055471826721631} + m_Father: {fileID: 8719875636317608491} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!136 &8712435887441142449 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721806364151867171} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.125 + m_Height: 0.2 + m_Direction: 0 + m_Center: {x: 0, y: 0, z: 0} +--- !u!171741748 &2819076709843220300 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721806364151867171} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 11 + m_ParentAnchorPosition: {x: 0, y: 0, z: 0} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &3411150119855789431 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8721806364151867171} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &8722076229893094739 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8719875636317608491} + - component: {fileID: 8690789666678175709} + - component: {fileID: 114263248370519032} + - component: {fileID: 114275564199513312} + - component: {fileID: 4177175816300940728} + - component: {fileID: 4606487679878347701} + - component: {fileID: 6615205430042084611} + - component: {fileID: 6001081406238583533} + m_Layer: 6 + m_Name: MarathonMan004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8719875636317608491 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722076229893094739} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.0000005, y: 1, z: 1.0000005} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8719972220993353125} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8690789666678175709 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722076229893094739} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2f99f5d487864414a2cc1394839d407, type: 3} + m_Name: + m_EditorClassIdentifier: + MusclePowers: + - Muscle: articulation:Spine + PowerVector: {x: 40, y: 40, z: 40} + - Muscle: articulation:Spine1 + PowerVector: {x: 40, y: 40, z: 40} + - Muscle: articulation:RightUpLeg + PowerVector: {x: 120, y: 40, z: 40} + - Muscle: articulation:Spine2 + PowerVector: {x: 40, y: 40, z: 40} + - Muscle: articulation:RightLeg + PowerVector: {x: 80, y: 80, z: 80} + - Muscle: articulation:RightFoot + PowerVector: {x: 40, y: 20, z: 20} + - Muscle: articulation:LeftUpLeg + PowerVector: {x: 120, y: 40, z: 40} + - Muscle: articulation:LeftLeg + PowerVector: {x: 80, y: 80, z: 80} + - Muscle: articulation:LeftFoot + PowerVector: {x: 40, y: 20, z: 20} + - Muscle: articulation:LeftShoulder + PowerVector: {x: 20, y: 20, z: 20} + - Muscle: articulation:LeftArm + PowerVector: {x: 40, y: 40, z: 40} + - Muscle: articulation:LeftForeArm + PowerVector: {x: 20, y: 20, z: 20} + - Muscle: articulation:LeftToeBase + PowerVector: {x: 40, y: 40, z: 40} + - Muscle: articulation:RightShoulder + PowerVector: {x: 20, y: 20, z: 20} + - Muscle: articulation:RightArm + PowerVector: {x: 20, y: 20, z: 20} + - Muscle: articulation:RightForeArm + PowerVector: {x: 20, y: 20, z: 20} + - Muscle: articulation:RightToeBase + PowerVector: {x: 20, y: 20, z: 20} + - Muscle: articulation:Neck + PowerVector: {x: 20, y: 20, z: 20} + MotorScale: 1 + Stiffness: 50 + Damping: 100 + ForceLimit: 3.4028235e+38 + skipCollisionSetup: 0 +--- !u!114 &114263248370519032 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722076229893094739} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d1c4e0b1822b495aa52bc52839ecb30, type: 3} + m_Name: + m_EditorClassIdentifier: + m_BrainParameters: + VectorObservationSize: 303 + NumStackedVectorObservations: 1 + m_ActionSpec: + m_NumContinuousActions: 54 + BranchSizes: + VectorActionSize: 36000000 + VectorActionDescriptions: [] + VectorActionSpaceType: 1 + hasUpgradedBrainParametersWithActionSpec: 1 + m_Model: {fileID: 5022602860645237092, guid: 0e791689cf0300c4fbe8be76f09fccff, type: 3} + m_InferenceDevice: 0 + m_BehaviorType: 0 + m_BehaviorName: DReCon-v0 + TeamId: 0 + m_UseChildSensors: 1 + m_UseChildActuators: 1 + m_ObservableAttributeHandling: 0 +--- !u!114 &114275564199513312 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722076229893094739} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3a5c9d521e5ef4759a8246a07d52221e, type: 3} + m_Name: + m_EditorClassIdentifier: + DecisionPeriod: 2 + TakeActionsBetweenDecisions: 0 +--- !u!114 &4177175816300940728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722076229893094739} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ddf48037c6c1455a8a163a00e342e36, type: 3} + m_Name: + m_EditorClassIdentifier: + agentParameters: + maxStep: 0 + hasUpgradedFromAgentParameters: 1 + MaxStep: 2000 + FixedDeltaTime: 0.0125 + SmoothBeta: 0.2 + RequestCamera: 1 + CameraFollowMe: 0 + CameraTarget: {fileID: 8719972220993353125} + SkipRewardSmoothing: 0 + debugCopyMocap: 0 + ignorActions: 0 + dontResetOnZeroReward: 0 + dontSnapMocapToRagdoll: 0 + DebugPauseOnReset: 0 + UsePDControl: 0 + _hasAwake: 0 +--- !u!114 &4606487679878347701 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722076229893094739} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1ec1e370542a14f3da19024594e4c394, type: 3} + m_Name: + m_EditorClassIdentifier: + SumOfSubRewards: 0 + Reward: 0 + SumOfDistances: 0 + SumOfSqrDistances: 0 + PositionReward: 0 + PointsVelocityDifferenceSquared: 0 + PointsVelocityReward: 0 + RotationDifferences: [] + SumOfRotationDifferences: 0 + SumOfRotationSqrDifferences: 0 + LocalPoseReward: 0 + MocapCOMVelocity: {x: 0, y: 0, z: 0} + RagDollCOMVelocity: {x: 0, y: 0, z: 0} + COMVelocityDifference: 0 + ComReward: 0 + ComDistance: 0 + DistanceFactor: 0 + HeadHeightDistance: 0 + ObjectForPointDistancesGizmo: 12 + headname: head + targetedRootName: articulation:Hips +--- !u!114 &6615205430042084611 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722076229893094739} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9ad1013fcfea94c78bd38ee533603b89, type: 3} + m_Name: + m_EditorClassIdentifier: + SensorIsInTouch: [] +--- !u!114 &6001081406238583533 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722076229893094739} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81f30d0638fe74d3faa981d3a313928f, type: 3} + m_Name: + m_EditorClassIdentifier: + MocapCOMVelocity: {x: 0, y: 0, z: 0} + RagDollCOMVelocity: {x: 0, y: 0, z: 0} + InputDesiredHorizontalVelocity: {x: 0, y: 0} + InputJump: 0 + InputBackflip: 0 + HorizontalVelocityDifference: {x: 0, y: 0} + BodyPartDifferenceStats: [] + MocapBodyStats: [] + RagDollBodyStats: [] + PreviousActions: [] + BodyPartsToTrack: + - articulation:Hips + - articulation:Spine + - articulation:Spine1 + - articulation:Spine2 + - head + - LeftArm + - LeftForeArm + - LeftHand + - RightArm + - RightForeArm + - RightHand + - LeftUpLeg + - LeftLeg + - LeftFoot + - LeftToeBase + - RightUpLeg + - RightLeg + - RightFoot + - RightToeBase + VelocityInWorldSpace: 1 + PositionInWorldSpace: 1 + targetedRootName: articulation:Hips +--- !u!1 &8722159205191571325 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8727310058112905241} + - component: {fileID: 8713149678546857583} + - component: {fileID: 7079208600320329709} + - component: {fileID: 3120305894318277066} + - component: {fileID: 7441406051802486673} + m_Layer: 6 + m_Name: RightForeArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8727310058112905241 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722159205191571325} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.14068204, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1198069920422691408} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!136 &8713149678546857583 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722159205191571325} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.016 + m_Height: 0.3 + m_Direction: 0 + m_Center: {x: 0, y: 0, z: 0} +--- !u!171741748 &7079208600320329709 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722159205191571325} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 2.07 + m_ParentAnchorPosition: {x: 0.1406821, y: -0.000000001224322, z: -0.000000010592331} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_MatchAnchors: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 0 + m_SwingZ: 0 + m_Twist: 1 + m_XDrive: + lowerLimit: -150 + upperLimit: 8 + stiffness: 40000 + damping: 100 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -140 + upperLimit: 20 + stiffness: 0 + damping: 0 + forceLimit: 40 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -160 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &3120305894318277066 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722159205191571325} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9cdefdb10ded44c16a6a038694a4f530, type: 3} + m_Name: + m_EditorClassIdentifier: + SphereSize: 0.03 + TargetRotationInJointSpace: {x: 0, y: 0, z: 0} + RotationInJointSpace: {x: 0, y: 0, z: 0} + RotationInJointSpaceError: {x: 0, y: 0, z: 0} + RotationInJointSpaceErrorRad: {x: 0, y: 0, z: 0} + JointPositionDeg: {x: 0, y: 0, z: 0} + JointTargetDeg: {x: 0, y: 0, z: 0} + JointPositionRad: {x: 0, y: 0, z: 0} + JointTargetRad: {x: 0, y: 0, z: 0} +--- !u!114 &7441406051802486673 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722159205191571325} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &8722238855668260183 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8726915850983127639} + - component: {fileID: 8713208573898039469} + - component: {fileID: 348096294373738880} + - component: {fileID: 8388011530406128861} + m_Layer: 6 + m_Name: LeftArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8726915850983127639 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722238855668260183} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.143, y: 0, z: 0.0018831305} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5287265992975624110} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!136 &8713208573898039469 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722238855668260183} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.04 + m_Height: 0.35 + m_Direction: 0 + m_Center: {x: 0, y: 0, z: 0} +--- !u!171741748 &348096294373738880 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722238855668260183} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 3.67 + m_ParentAnchorPosition: {x: -0.14300004, y: 0.000000024214387, z: 0.0018831305} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_MatchAnchors: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 0 + m_XDrive: + lowerLimit: 65 + upperLimit: 210 + stiffness: 0 + damping: 0 + forceLimit: 20 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -60 + upperLimit: 180 + stiffness: 20000 + damping: 100 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -90 + upperLimit: 0 + stiffness: 20000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &8388011530406128861 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722238855668260183} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &8722317409419288527 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8727146830054938469} + - component: {fileID: 8712330760681827479} + - component: {fileID: 9218996436316437763} + - component: {fileID: 4610443426903110661} + m_Layer: 6 + m_Name: RightArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8727146830054938469 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722317409419288527} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.143, y: 0.00016438961, z: -0.004404865} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 799287010776281540} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!136 &8712330760681827479 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722317409419288527} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.04 + m_Height: 0.35 + m_Direction: 0 + m_Center: {x: 0, y: 0, z: 0} +--- !u!171741748 &9218996436316437763 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722317409419288527} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 3.67 + m_ParentAnchorPosition: {x: 0.14300004, y: 0.00016441522, z: -0.004404871} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_MatchAnchors: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 0 + m_XDrive: + lowerLimit: 65 + upperLimit: 210 + stiffness: 0 + damping: 0 + forceLimit: 20 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -60 + upperLimit: 180 + stiffness: 20000 + damping: 100 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: 0 + upperLimit: 90 + stiffness: 20000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &4610443426903110661 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722317409419288527} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &8722331107733138825 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8727345808408514215} + - component: {fileID: 8712459531509080483} + - component: {fileID: 1496666803027742699} + - component: {fileID: 713077432748778641} + m_Layer: 6 + m_Name: RightLeg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8727345808408514215 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722331107733138825} + serializedVersion: 2 + m_LocalRotation: {x: 0.034652606, y: -0.0012203482, z: 0.0054136724, w: 0.99938405} + m_LocalPosition: {x: 0.005387321, y: -0.22392002, z: -0.013867458} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4239193890641791696} + m_LocalEulerAnglesHint: {x: 3.972, y: -0.119, z: 0.617} +--- !u!136 &8712459531509080483 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722331107733138825} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.03 + m_Height: 0.5 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!171741748 &1496666803027742699 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722331107733138825} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 4.3 + m_ParentAnchorPosition: {x: 0.003270612, y: -0.030297607, z: -0.00042612827} + m_ParentAnchorRotation: {x: 0.023640174, y: -0.025366008, z: 0.7104993, w: 0.7028432} + m_AnchorPosition: {x: -0.0000000018626451, y: 0.19409993, z: 0.000000044703484} + m_AnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_MatchAnchors: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 0 + m_Twist: 0 + m_XDrive: + lowerLimit: 0 + upperLimit: 0 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -130 + upperLimit: 20 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -2 + upperLimit: 160 + stiffness: 80000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &713077432748778641 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8722331107733138825} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &8723104234892138299 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8726994228778927931} + - component: {fileID: 5211957500806173422} + - component: {fileID: 6567217719409461366} + - component: {fileID: 2284281414075353883} + - component: {fileID: 2217115071777248624} + m_Layer: 6 + m_Name: articulation:Spine1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8726994228778927931 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8723104234892138299} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.000000002519403, y: 0.10083451, z: -0.010008043} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8719916423667245899} + m_Father: {fileID: 8720055471826721631} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!136 &5211957500806173422 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8723104234892138299} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.08 + m_Height: 0.25 + m_Direction: 0 + m_Center: {x: 0, y: 0.1, z: 0.04} +--- !u!171741748 &6567217719409461366 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8723104234892138299} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 7 + m_ParentAnchorPosition: {x: -0.000000002519403, y: 0.100834526, z: -0.010008043} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -4.947296 + upperLimit: 26.3361 + stiffness: 40000 + damping: 100 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -8.957581 + upperLimit: 10.593702 + stiffness: 0 + damping: 0 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -12.026093 + upperLimit: 9.640181 + stiffness: 40000 + damping: 100 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &2284281414075353883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8723104234892138299} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9cdefdb10ded44c16a6a038694a4f530, type: 3} + m_Name: + m_EditorClassIdentifier: + SphereSize: 0.03 + TargetRotationInJointSpace: {x: 0, y: 0, z: 0} + RotationInJointSpace: {x: 0, y: 0, z: 0} + RotationInJointSpaceError: {x: 0, y: 0, z: 0} + RotationInJointSpaceErrorRad: {x: 0, y: 0, z: 0} + JointPositionDeg: {x: 0, y: 0, z: 0} + JointTargetDeg: {x: 0, y: 0, z: 0} + JointPositionRad: {x: 0, y: 0, z: 0} + JointTargetRad: {x: 0, y: 0, z: 0} +--- !u!114 &2217115071777248624 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8723104234892138299} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &8723185548267139965 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8727169760970726795} + - component: {fileID: 8712485077113848517} + - component: {fileID: 6114793560261688705} + - component: {fileID: 5846944434897309697} + m_Layer: 6 + m_Name: LeftForeArm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8727169760970726795 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8723185548267139965} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.14123856, y: 0.0002654791, z: -0.0020053014} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 982461226543410} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!136 &8712485077113848517 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8723185548267139965} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.016 + m_Height: 0.3 + m_Direction: 0 + m_Center: {x: 0, y: 0, z: 0} +--- !u!171741748 &6114793560261688705 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8723185548267139965} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 2.07 + m_ParentAnchorPosition: {x: -0.14123863, y: 0.0002654439, z: -0.0020053072} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} + m_MatchAnchors: 1 + m_ArticulationJointType: 0 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 0 + m_SwingZ: 0 + m_Twist: 1 + m_XDrive: + lowerLimit: -150 + upperLimit: 8 + stiffness: 40000 + damping: 100 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -180 + upperLimit: -15 + stiffness: 0 + damping: 0 + forceLimit: 40 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -70 + upperLimit: 90 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &5846944434897309697 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8723185548267139965} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} +--- !u!1 &8957262758816587079 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7244107296329441007} + - component: {fileID: 645781955086815288} + - component: {fileID: 7352800360747332016} + - component: {fileID: 2072727049993933493} + m_Layer: 6 + m_Name: left_foot_heal_senor_l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7244107296329441007 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8957262758816587079} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.01, z: -0.04} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6236938740036876889} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &645781955086815288 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8957262758816587079} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.03 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &7352800360747332016 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8957262758816587079} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d041794481cd24f4d92e5f3da728fe64, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &2072727049993933493 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8957262758816587079} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 0} +--- !u!1 &9031411401833641881 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7200902519591220141} + - component: {fileID: 1323335513679077856} + - component: {fileID: 7864867399915072629} + m_Layer: 6 + m_Name: LeftToeBase + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7200902519591220141 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9031411401833641881} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.0010333424, y: 0.024781257, z: 0.0452814} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3158603780280599340} + - {fileID: 8014189354646165340} + m_Father: {fileID: 1271494809415718833} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1323335513679077856 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9031411401833641881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 0} +--- !u!65 &7864867399915072629 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9031411401833641881} + m_Material: {fileID: 13400000, guid: 38b7ea504254a4fa986e42a7bb16c8df, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 0.08, y: 0.04, z: 0.04} + m_Center: {x: 0, y: 0, z: -0.000000007450581} +--- !u!1 &9088690635566039525 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4176204633534038840} + - component: {fileID: 8208509521937967625} + - component: {fileID: 5042636445878820648} + m_Layer: 6 + m_Name: articulation:LeftFoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4176204633534038840 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9088690635566039525} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.0000000047163935, y: -0.44427872, z: -0.029821906} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6236938740036876889} + - {fileID: 1271494809415718833} + m_Father: {fileID: 3209880959380516652} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!171741748 &8208509521937967625 +ArticulationBody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9088690635566039525} + m_Enabled: 1 + serializedVersion: 5 + m_Mass: 0.1 + m_ParentAnchorPosition: {x: -0.000000004110158, y: -0.44427872, z: -0.02982191} + m_ParentAnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_AnchorPosition: {x: 0, y: 0, z: 0} + m_AnchorRotation: {x: 0, y: 0, z: 0, w: 1} + m_MatchAnchors: 1 + m_ArticulationJointType: 3 + m_LinearX: 2 + m_LinearY: 2 + m_LinearZ: 2 + m_SwingY: 1 + m_SwingZ: 1 + m_Twist: 1 + m_XDrive: + lowerLimit: -41.13678 + upperLimit: 41.8212 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_YDrive: + lowerLimit: -27.376251 + upperLimit: 16.009623 + stiffness: 0 + damping: 0 + forceLimit: 3.4028235e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_ZDrive: + lowerLimit: -20.541473 + upperLimit: 36.66286 + stiffness: 80000 + damping: 100 + forceLimit: 3.402823e+38 + target: 0 + targetVelocity: 0 + driveType: 0 + m_LinearDamping: 0.05 + m_AngularDamping: 0.05 + m_JointFriction: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_Immovable: 0 + m_UseGravity: 1 + m_CollisionDetectionMode: 0 +--- !u!114 &5042636445878820648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9088690635566039525} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da87b37fe0ae0475a99808928afad49b, type: 3} + m_Name: + m_EditorClassIdentifier: + Parent: {fileID: 8721806364151867171} diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/MarathonMan004.prefab.meta b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/MarathonMan004.prefab.meta new file mode 100644 index 0000000..f9fd592 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/MarathonMan004.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6a7e84e6b4b64c744857753e3e544b81 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/RedJoints.mat b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/RedJoints.mat new file mode 100644 index 0000000..1c34bee --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/RedJoints.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2464581126296511126 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RedJoints + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - DepthOnly + - SHADOWCASTER + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 1 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 10 + - _DstBlendAlpha: 10 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 3 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 1 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0.3333333, g: 0.12452885, b: 0.101014696, a: 0.24705882} + - _Color: {r: 0.33333328, g: 0.12452882, b: 0.101014666, a: 0.24705882} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/RedJoints.mat.meta b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/RedJoints.mat.meta new file mode 100644 index 0000000..07cc1ff --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/RedJoints.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7c75b8d76b8c90345b5654cf72a22ec9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/RedSurface.mat b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/RedSurface.mat new file mode 100644 index 0000000..ee10739 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/RedSurface.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RedSurface + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - DepthOnly + - SHADOWCASTER + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 1 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 10 + - _DstBlendAlpha: 10 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 3 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 1 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0.837, g: 0.302308, b: 0.26365498, a: 0.24705882} + - _Color: {r: 0.837, g: 0.30230796, b: 0.26365495, a: 0.24705882} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &229737655439550173 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/RedSurface.mat.meta b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/RedSurface.mat.meta new file mode 100644 index 0000000..5dec508 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/RedSurface.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f6fa6aa88fbef742bf021e621193eaf +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/T-Pose.fbx b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/T-Pose.fbx new file mode 100644 index 0000000..8bded81 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/T-Pose.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e716036953a13c17b5c9a06c906efb50569251c294eecefda85dccbecbe524c +size 1871424 diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/T-Pose.fbx.meta b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/T-Pose.fbx.meta new file mode 100644 index 0000000..da84358 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/T-Pose.fbx.meta @@ -0,0 +1,914 @@ +fileFormatVersion: 2 +guid: 65a3c32d6ec98fc479df350fa87900c7 +ModelImporter: + serializedVersion: 20101 + internalIDToNameTable: + - first: + 74: -203655887218126122 + second: mixamo.com + externalObjects: {} + materials: + materialImportMode: 1 + 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: + - serializedVersion: 16 + name: mixamo.com + takeName: mixamo.com + internalID: 0 + firstFrame: 0 + lastFrame: 1 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 0 + loopBlend: 0 + loopBlendOrientation: 1 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 1 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 1 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 3 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + 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: mixamorig:Hips + 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: mixamorig:LeftUpLeg + 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: mixamorig:RightUpLeg + 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: mixamorig:LeftLeg + 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: mixamorig:RightLeg + 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: mixamorig:LeftFoot + 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: mixamorig:RightFoot + 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: mixamorig:Spine + 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: mixamorig:Spine1 + 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: mixamorig:Neck + 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: mixamorig:Head + 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: mixamorig:LeftShoulder + 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: mixamorig:RightShoulder + 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: mixamorig:LeftArm + 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: mixamorig:RightArm + 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: mixamorig:LeftForeArm + 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: mixamorig:RightForeArm + 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: mixamorig:LeftHand + 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: mixamorig:RightHand + 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: mixamorig:LeftToeBase + 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: mixamorig:RightToeBase + 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: mixamorig:LeftHandThumb1 + humanName: Left Thumb Proximal + 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: mixamorig:LeftHandThumb2 + humanName: Left Thumb Intermediate + 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: mixamorig:LeftHandThumb3 + humanName: Left Thumb Distal + 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: mixamorig:LeftHandIndex1 + humanName: Left Index Proximal + 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: mixamorig:LeftHandIndex2 + humanName: Left Index Intermediate + 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: mixamorig:LeftHandIndex3 + humanName: Left Index Distal + 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: mixamorig:LeftHandMiddle1 + humanName: Left Middle Proximal + 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: mixamorig:LeftHandMiddle2 + humanName: Left Middle Intermediate + 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: mixamorig:LeftHandMiddle3 + humanName: Left Middle Distal + 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: mixamorig:LeftHandRing1 + humanName: Left Ring Proximal + 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: mixamorig:LeftHandRing2 + humanName: Left Ring Intermediate + 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: mixamorig:LeftHandRing3 + humanName: Left Ring Distal + 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: mixamorig:LeftHandPinky1 + humanName: Left Little Proximal + 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: mixamorig:LeftHandPinky2 + humanName: Left Little Intermediate + 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: mixamorig:LeftHandPinky3 + humanName: Left Little Distal + 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: mixamorig:RightHandThumb1 + humanName: Right Thumb Proximal + 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: mixamorig:RightHandThumb2 + humanName: Right Thumb Intermediate + 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: mixamorig:RightHandThumb3 + humanName: Right Thumb Distal + 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: mixamorig:RightHandIndex1 + humanName: Right Index Proximal + 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: mixamorig:RightHandIndex2 + humanName: Right Index Intermediate + 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: mixamorig:RightHandIndex3 + humanName: Right Index Distal + 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: mixamorig:RightHandMiddle1 + humanName: Right Middle Proximal + 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: mixamorig:RightHandMiddle2 + humanName: Right Middle Intermediate + 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: mixamorig:RightHandMiddle3 + humanName: Right Middle Distal + 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: mixamorig:RightHandRing1 + humanName: Right Ring Proximal + 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: mixamorig:RightHandRing2 + humanName: Right Ring Intermediate + 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: mixamorig:RightHandRing3 + humanName: Right Ring Distal + 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: mixamorig:RightHandPinky1 + humanName: Right Little Proximal + 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: mixamorig:RightHandPinky2 + humanName: Right Little Intermediate + 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: mixamorig:RightHandPinky3 + humanName: Right Little Distal + 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: mixamorig:Spine2 + humanName: UpperChest + 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: T-Pose(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: Beta_Joints + parentName: T-Pose(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: Beta_Surface + parentName: T-Pose(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: mixamorig:Hips + parentName: T-Pose(Clone) + position: {x: 0.00000007727291, y: 1.0427487, z: 0.015543158} + rotation: {x: 5.5795913e-16, y: 0.00000002135681, z: -0.00000070372965, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:Spine + parentName: mixamorig:Hips + position: {x: -0.00000009234152, y: 0.10181588, z: 0.0013152092} + rotation: {x: -5.5794124e-16, y: -0.00000002135681, z: 0.00000070372874, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:Spine1 + parentName: mixamorig:Spine + position: {x: -0.000000002519403, y: 0.10083451, z: -0.010008043} + rotation: {x: 3.8774097e-26, y: -4.2632574e-14, z: 6.82121e-13, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:Spine2 + parentName: mixamorig:Spine1 + position: {x: -0.0000000034574863, y: 0.09100011, z: -0.013734171} + rotation: {x: 0, y: -0, z: -1.8055514e-34, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:Neck + parentName: mixamorig:Spine2 + position: {x: -0.0000000063342855, y: 0.16671668, z: -0.025161678} + rotation: {x: -5.2041704e-18, y: 4.2632927e-14, z: 2.273737e-13, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:Head + parentName: mixamorig:Neck + position: {x: 0.0000000042423185, y: 0.09617875, z: 0.016850075} + rotation: {x: 0, y: -0, z: -2.3142172e-36, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:HeadTop_End + parentName: mixamorig:Head + position: {x: 0.0000000065082415, y: 0.17815155, z: 0.025849855} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftEye + parentName: mixamorig:Head + position: {x: -0.030675607, y: 0.06409507, z: 0.09283554} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightEye + parentName: mixamorig:Head + position: {x: 0.030675504, y: 0.064095, z: 0.09283547} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftShoulder + parentName: mixamorig:Spine2 + position: {x: -0.045704465, y: 0.10945985, z: -0.02627988} + rotation: {x: -0.000000044703484, y: 3.8567765e-14, z: -0.00000013563118, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftArm + parentName: mixamorig:LeftShoulder + position: {x: -0.1059237, y: -0.005245829, z: -0.0223212} + rotation: {x: 0.000000044703484, y: 8.4346904e-14, z: -0.0000016602488, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftForeArm + parentName: mixamorig:LeftArm + position: {x: -0.2784152, y: -0.0000008942865, z: 0.0000003745891} + rotation: {x: -0.000000059604645, y: 0.0000000038620516, z: 0.0000017958803, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHand + parentName: mixamorig:LeftForeArm + position: {x: -0.2832884, y: -0.00000017440718, z: 0.00000037804523} + rotation: {x: 0.00022562433, y: 0.000000044703473, z: -1.0083181e-11, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandThumb1 + parentName: mixamorig:LeftHand + position: {x: -0.024661401, y: -0.015750492, z: 0.026824135} + rotation: {x: -0.118723094, y: 0.08687735, z: -0.11875274, w: 0.9819648} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandThumb2 + parentName: mixamorig:LeftHandThumb1 + position: {x: -0.032298036, y: -0.018646907, z: 0.018646812} + rotation: {x: 0.00000010496793, y: -0.000004944398, z: -0.000004780959, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandThumb3 + parentName: mixamorig:LeftHandThumb2 + position: {x: -0.02652565, y: -0.015314929, z: 0.015314716} + rotation: {x: 4.661964e-12, y: 0.00000059509927, z: 0.00000063981753, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandThumb4 + parentName: mixamorig:LeftHandThumb3 + position: {x: -0.019545669, y: -0.0112850005, z: 0.011284921} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandIndex1 + parentName: mixamorig:LeftHand + position: {x: -0.09109301, y: -0.005170834, z: 0.02260073} + rotation: {x: 0.00000007450579, y: -6.7234625e-12, z: -0.000000014901159, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandIndex2 + parentName: mixamorig:LeftHandIndex1 + position: {x: -0.036764093, y: -0.00000006939138, z: 0.00000029242517} + rotation: {x: -0.00000010430811, y: 0.000000014901151, z: -6.7230145e-12, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandIndex3 + parentName: mixamorig:LeftHandIndex2 + position: {x: -0.028830625, y: 0.00000038511968, z: -0.00000042764816} + rotation: {x: 8.452564e-15, y: 0.0000000148742725, z: -0.00000005961137, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandIndex4 + parentName: mixamorig:LeftHandIndex3 + position: {x: -0.023927199, y: 0.00000037025907, z: 0.00000033554434} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandMiddle1 + parentName: mixamorig:LeftHand + position: {x: -0.095334016, y: -0.00000033924047, z: 0.00000013937026} + rotation: {x: 0.000000014901157, y: -0.00000004469004, z: 0.00000002982249, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandMiddle2 + parentName: mixamorig:LeftHandMiddle1 + position: {x: -0.036982365, y: 0.00000001961359, z: 0.00000017916967} + rotation: {x: -0.0000000149011585, y: 0.000000014901165, z: -6.7261296e-12, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandMiddle3 + parentName: mixamorig:LeftHandMiddle2 + position: {x: -0.029509215, y: -0.00000039376084, z: 0.0000001644796} + rotation: {x: 5.594566e-16, y: -6.7223536e-12, z: -0.000000014901161, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandMiddle4 + parentName: mixamorig:LeftHandMiddle3 + position: {x: -0.028339025, y: -0.0000003893482, z: -0.00000009504223} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandRing1 + parentName: mixamorig:LeftHand + position: {x: -0.091045275, y: -0.00043939505, z: -0.018650847} + rotation: {x: 0.000000029802315, y: -0.000000029795597, z: 0.000000014914605, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandRing2 + parentName: mixamorig:LeftHandRing1 + position: {x: -0.031540267, y: -0.00000006553468, z: 0.00000010425744} + rotation: {x: -0.000000029802314, y: 0.000000029782148, z: -0.000000044716913, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandRing3 + parentName: mixamorig:LeftHandRing2 + position: {x: -0.029376723, y: -0.00000045458617, z: -0.00000006864757} + rotation: {x: 0.00000005960463, y: -0.0000000148944315, z: 0.000000014907876, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandRing4 + parentName: mixamorig:LeftHandRing3 + position: {x: -0.026474526, y: -0.00000049804413, z: 7.0705153e-10} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandPinky1 + parentName: mixamorig:LeftHand + position: {x: -0.08077778, y: -0.004886682, z: -0.03806067} + rotation: {x: 0.000000029802317, y: -0.000000014907881, z: -0.000000014894434, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandPinky2 + parentName: mixamorig:LeftHandPinky1 + position: {x: -0.036000345, y: -0.000000022522151, z: -0.00000026238794} + rotation: {x: 0.000000029802315, y: -0.000000014894437, z: 0.000000014907881, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandPinky3 + parentName: mixamorig:LeftHandPinky2 + position: {x: -0.021142116, y: 0.00000019538281, z: -0.00000002864415} + rotation: {x: -0.00000005960463, y: -0.000000029815762, z: -0.000000029788868, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftHandPinky4 + parentName: mixamorig:LeftHandPinky3 + position: {x: -0.019756826, y: 0.00000012405657, z: -0.00000044301405} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightShoulder + parentName: mixamorig:Spine2 + position: {x: 0.045699697, y: 0.10946176, z: -0.026280174} + rotation: {x: -0.000000014901161, y: 4.3930442e-14, z: 0.000000042395698, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightArm + parentName: mixamorig:RightShoulder + position: {x: 0.105928436, y: -0.0052479836, z: -0.022320986} + rotation: {x: 0.000000014901161, y: -1.2978756e-15, z: -0.000000042395467, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightForeArm + parentName: mixamorig:RightArm + position: {x: 0.2784152, y: -0.00000033079218, z: 0.000000116763104} + rotation: {x: -0.000000059604638, y: 0.0000017611261, z: -1.09214605e-13, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHand + parentName: mixamorig:RightForeArm + position: {x: 0.2832884, y: -0.0000000015814171, z: 0.00000055816014} + rotation: {x: 0.00023261023, y: -0.0000018096918, z: 4.2094897e-10, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandPinky1 + parentName: mixamorig:RightHand + position: {x: 0.080766745, y: -0.0048845927, z: -0.038060103} + rotation: {x: 0.000000074505586, y: 0.0000138888945, z: 0.000000014902197, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandPinky2 + parentName: mixamorig:RightHandPinky1 + position: {x: 0.036000345, y: 0.00000039676655, z: 0.0000005081442} + rotation: {x: -0.000000014900952, y: -0.000013859092, z: -0.00000001491523, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandPinky3 + parentName: mixamorig:RightHandPinky2 + position: {x: 0.021142116, y: 0.00000015137925, z: 0.00000014793768} + rotation: {x: -0.000000089406946, y: -6.1947887e-19, z: -1.3318336e-15, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandPinky4 + parentName: mixamorig:RightHandPinky3 + position: {x: 0.019756826, y: -0.00000018521958, z: -0.000000009839841} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandRing1 + parentName: mixamorig:RightHand + position: {x: 0.09103588, y: -0.00043914348, z: -0.018650724} + rotation: {x: 0.000000029802315, y: 0.000000029795387, z: -0.00000001491502, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandRing2 + parentName: mixamorig:RightHandRing1 + position: {x: 0.031540267, y: 0.00000023997296, z: 0.0000004885121} + rotation: {x: -0.000000029802314, y: -0.000000029781521, z: 0.000000044717336, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandRing3 + parentName: mixamorig:RightHandRing2 + position: {x: 0.029376723, y: -0.00000041600654, z: -0.00000039660634} + rotation: {x: 0.000000059604627, y: 0.0000000148664965, z: -0.00000007451271, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandRing4 + parentName: mixamorig:RightHandRing3 + position: {x: 0.026474526, y: 0.00000024608212, z: -0.000000022949234} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandMiddle1 + parentName: mixamorig:RightHand + position: {x: 0.09532503, y: -0.00000016312302, z: 0.00000016791842} + rotation: {x: 0.000000014901157, y: 0.000000044689624, z: -0.000000029823113, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandMiddle2 + parentName: mixamorig:RightHandMiddle1 + position: {x: 0.036982365, y: 0.00000015066959, z: -0.00000022545524} + rotation: {x: -0.0000000149011585, y: -0.000000014901165, z: 6.930773e-12, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandMiddle3 + parentName: mixamorig:RightHandMiddle2 + position: {x: 0.029509215, y: -0.000000003113245, z: -0.0000000030340255} + rotation: {x: 0.000000059603845, y: 0.000017673352, z: 0.00000004469067, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandMiddle4 + parentName: mixamorig:RightHandMiddle3 + position: {x: 0.028339025, y: 0.00000008053241, z: 0.00000053787704} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandIndex1 + parentName: mixamorig:RightHand + position: {x: 0.09108281, y: -0.0051678894, z: 0.022601163} + rotation: {x: 0.000000014901159, y: 6.934323e-12, z: 0.0000000149011585, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandIndex2 + parentName: mixamorig:RightHandIndex1 + position: {x: 0.036764093, y: 0.00000019227156, z: 0.0000003235567} + rotation: {x: -0.000000044703473, y: -0.000000014901154, z: 6.9321007e-12, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandIndex3 + parentName: mixamorig:RightHandIndex2 + position: {x: 0.028830625, y: -0.00000049601215, z: 0.00000040448975} + rotation: {x: 0.000000029802319, y: 0.000000014915011, z: 0.000000029795393, + w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandIndex4 + parentName: mixamorig:RightHandIndex3 + position: {x: 0.023927199, y: 0.000000268147, z: 0.00000028020133} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandThumb1 + parentName: mixamorig:RightHand + position: {x: 0.024648061, y: -0.015727142, z: 0.026826264} + rotation: {x: -0.118725814, y: -0.086873986, z: 0.11875655, w: 0.9819644} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandThumb2 + parentName: mixamorig:RightHandThumb1 + position: {x: 0.03229772, y: -0.018647088, z: 0.018647185} + rotation: {x: 0.000000029786868, y: -0.0000065657905, z: -0.0000065806976, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandThumb3 + parentName: mixamorig:RightHandThumb2 + position: {x: 0.02652605, y: -0.015314492, z: 0.015314456} + rotation: {x: 0.000000029804987, y: 0.000010714707, z: 0.000010640214, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightHandThumb4 + parentName: mixamorig:RightHandThumb3 + position: {x: 0.019545805, y: -0.011284617, z: 0.01128507} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightUpLeg + parentName: mixamorig:Hips + position: {x: 0.08207796, y: -0.06751662, z: -0.015995594} + rotation: {x: -0.0006736767, y: -0.000000022158684, z: 0.0000007132908, w: 0.99999976} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightLeg + parentName: mixamorig:RightUpLeg + position: {x: -8.435572e-10, y: -0.44370535, z: 0.0028615638} + rotation: {x: 0.0013461137, y: 0.00000001453026, z: 0.0000000017475387, w: 0.9999991} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightFoot + parentName: mixamorig:RightLeg + position: {x: -0.000000009644582, y: -0.4442773, z: -0.02983789} + rotation: {x: -0.0006724375, y: 6.846273e-10, z: -0.000000011323817, w: 0.99999976} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightToeBase + parentName: mixamorig:RightFoot + position: {x: 0.00000002360438, y: -0.08728669, z: 0.107105605} + rotation: {x: 0.000000014650141, y: 6.5304206e-11, z: -3.3796616e-12, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:RightToe_End + parentName: mixamorig:RightToeBase + position: {x: 0.000000020942645, y: -0.000006763694, z: 0.0927812} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftUpLeg + parentName: mixamorig:Hips + position: {x: -0.082077816, y: -0.06751714, z: -0.015995556} + rotation: {x: -0.0007022143, y: -0.000000022163992, z: 0.0000007135213, w: 0.99999976} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftLeg + parentName: mixamorig:LeftUpLeg + position: {x: 0.000000004110158, y: -0.44370472, z: 0.0028464263} + rotation: {x: 0.0014022698, y: -3.3268402e-10, z: -1.3309691e-10, w: 0.99999905} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftFoot + parentName: mixamorig:LeftLeg + position: {x: -0.0000000047163935, y: -0.44427872, z: -0.029821906} + rotation: {x: -0.0007000565, y: 6.3139166e-10, z: -0.000000010605688, w: 0.99999976} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftToeBase + parentName: mixamorig:LeftFoot + position: {x: 0.000000029609879, y: -0.087286696, z: 0.1071056} + rotation: {x: 2.4374452e-10, y: 1.1699966e-10, z: 9.293838e-10, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftToe_End + parentName: mixamorig:LeftToeBase + position: {x: 0.000000025080618, y: -0.0000067668298, z: 0.09278136} + 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 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/TargetDebug.mat b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/TargetDebug.mat new file mode 100644 index 0000000..76d87c6 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/TargetDebug.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2951126682242351315 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: TargetDebug + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _UVSec: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.5849056, g: 0.5849056, b: 0.5849056, a: 1} + - _Color: {r: 0.5849056, g: 0.5849056, b: 0.5849056, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/TargetDebug.mat.meta b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/TargetDebug.mat.meta new file mode 100644 index 0000000..5151ed5 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Characters/MarathonMan004/TargetDebug.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 627fb1f9c85d0ab498c358b8ff0d6de6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Agents/Models.meta b/Assets/MarathonEnvs/Agents/Models.meta new file mode 100644 index 0000000..834a437 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 59ac31a5d62fe484ab3049c9aa046883 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Agents/Models/DReCon-v0.onnx b/Assets/MarathonEnvs/Agents/Models/DReCon-v0.onnx new file mode 100644 index 0000000..28e097f Binary files /dev/null and b/Assets/MarathonEnvs/Agents/Models/DReCon-v0.onnx differ diff --git a/Assets/MarathonEnvs/Agents/Models/DReCon-v0.onnx.meta b/Assets/MarathonEnvs/Agents/Models/DReCon-v0.onnx.meta new file mode 100644 index 0000000..e763637 --- /dev/null +++ b/Assets/MarathonEnvs/Agents/Models/DReCon-v0.onnx.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 0e791689cf0300c4fbe8be76f09fccff +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3} + optimizeModel: 1 + forceArbitraryBatchSize: 1 + treatErrorsAsWarnings: 0 diff --git a/Assets/MarathonEnvs/Animations.meta b/Assets/MarathonEnvs/Animations.meta new file mode 100644 index 0000000..238b4d5 --- /dev/null +++ b/Assets/MarathonEnvs/Animations.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 47b3f2697844b6943a49ac0ee8c0dbac +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Animations/Locomotion Pack.meta b/Assets/MarathonEnvs/Animations/Locomotion Pack.meta new file mode 100644 index 0000000..2fa921d --- /dev/null +++ b/Assets/MarathonEnvs/Animations/Locomotion Pack.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 34dfde91388b827469e7eca847c581f3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Animations/Locomotion Pack/idle.fbx b/Assets/MarathonEnvs/Animations/Locomotion Pack/idle.fbx new file mode 100644 index 0000000..421dba9 --- /dev/null +++ b/Assets/MarathonEnvs/Animations/Locomotion Pack/idle.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfccaad545770a3dcf961728619b85e3196fbdf902bb221b3d77716b229bd955 +size 602209 diff --git a/Assets/MarathonEnvs/Animations/Locomotion Pack/idle.fbx.meta b/Assets/MarathonEnvs/Animations/Locomotion Pack/idle.fbx.meta new file mode 100644 index 0000000..e11efe4 --- /dev/null +++ b/Assets/MarathonEnvs/Animations/Locomotion Pack/idle.fbx.meta @@ -0,0 +1,767 @@ +fileFormatVersion: 2 +guid: 2d10b50dc653e4052a4407c743c3da5c +ModelImporter: + serializedVersion: 20200 + internalIDToNameTable: + - first: + 1: 100000 + second: //RootNode + - first: + 1: 100002 + second: mixamorig:Head + - first: + 1: 100004 + second: mixamorig:HeadTop_End + - first: + 1: 100006 + second: mixamorig:Hips + - first: + 1: 100008 + second: mixamorig:LeftArm + - first: + 1: 100010 + second: mixamorig:LeftFoot + - first: + 1: 100012 + second: mixamorig:LeftForeArm + - first: + 1: 100014 + second: mixamorig:LeftHand + - first: + 1: 100016 + second: mixamorig:LeftLeg + - first: + 1: 100018 + second: mixamorig:LeftShoulder + - first: + 1: 100020 + second: mixamorig:LeftToe_End + - first: + 1: 100022 + second: mixamorig:LeftToeBase + - first: + 1: 100024 + second: mixamorig:LeftUpLeg + - first: + 1: 100026 + second: mixamorig:Neck + - first: + 1: 100028 + second: mixamorig:RightArm + - first: + 1: 100030 + second: mixamorig:RightFoot + - first: + 1: 100032 + second: mixamorig:RightForeArm + - first: + 1: 100034 + second: mixamorig:RightHand + - first: + 1: 100036 + second: mixamorig:RightLeg + - first: + 1: 100038 + second: mixamorig:RightShoulder + - first: + 1: 100040 + second: mixamorig:RightToe_End + - first: + 1: 100042 + second: mixamorig:RightToeBase + - first: + 1: 100044 + second: mixamorig:RightUpLeg + - first: + 1: 100046 + second: mixamorig:Spine + - first: + 1: 100048 + second: mixamorig:Spine1 + - first: + 1: 100050 + second: mixamorig:Spine2 + - first: + 4: 400000 + second: //RootNode + - first: + 4: 400002 + second: mixamorig:Head + - first: + 4: 400004 + second: mixamorig:HeadTop_End + - first: + 4: 400006 + second: mixamorig:Hips + - first: + 4: 400008 + second: mixamorig:LeftArm + - first: + 4: 400010 + second: mixamorig:LeftFoot + - first: + 4: 400012 + second: mixamorig:LeftForeArm + - first: + 4: 400014 + second: mixamorig:LeftHand + - first: + 4: 400016 + second: mixamorig:LeftLeg + - first: + 4: 400018 + second: mixamorig:LeftShoulder + - first: + 4: 400020 + second: mixamorig:LeftToe_End + - first: + 4: 400022 + second: mixamorig:LeftToeBase + - first: + 4: 400024 + second: mixamorig:LeftUpLeg + - first: + 4: 400026 + second: mixamorig:Neck + - first: + 4: 400028 + second: mixamorig:RightArm + - first: + 4: 400030 + second: mixamorig:RightFoot + - first: + 4: 400032 + second: mixamorig:RightForeArm + - first: + 4: 400034 + second: mixamorig:RightHand + - first: + 4: 400036 + second: mixamorig:RightLeg + - first: + 4: 400038 + second: mixamorig:RightShoulder + - first: + 4: 400040 + second: mixamorig:RightToe_End + - first: + 4: 400042 + second: mixamorig:RightToeBase + - first: + 4: 400044 + second: mixamorig:RightUpLeg + - first: + 4: 400046 + second: mixamorig:Spine + - first: + 4: 400048 + second: mixamorig:Spine1 + - first: + 4: 400050 + second: mixamorig:Spine2 + - first: + 74: 7400000 + second: Idle + - first: + 95: 9500000 + second: //RootNode + externalObjects: {} + materials: + materialImportMode: 1 + 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: + - serializedVersion: 16 + name: Idle + takeName: mixamo.com + internalID: 0 + firstFrame: 0 + lastFrame: 500 + wrapMode: 0 + orientationOffsetY: 0 + level: 0.07 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 0 + loopBlendOrientation: 0 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 1 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 1 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 3 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 1 + 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: 0 + 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: mixamorig:Hips + 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: mixamorig:LeftUpLeg + 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: mixamorig:RightUpLeg + 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: mixamorig:LeftLeg + 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: mixamorig:RightLeg + 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: mixamorig:LeftFoot + 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: mixamorig:RightFoot + 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: mixamorig:Spine + 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: mixamorig:Spine1 + 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: mixamorig:Neck + 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: mixamorig:Head + 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: mixamorig:LeftShoulder + 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: mixamorig:RightShoulder + 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: mixamorig:LeftArm + 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: mixamorig:RightArm + 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: mixamorig:LeftForeArm + 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: mixamorig:RightForeArm + 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: mixamorig:LeftHand + 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: mixamorig:RightHand + 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: mixamorig:LeftToeBase + 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: mixamorig:RightToeBase + 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: mixamorig:Spine2 + humanName: UpperChest + 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: Backflip(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: humanoidT + parentName: Backflip(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: butt + parentName: humanoidT + position: {x: 0.028619736, y: 1.0587679, z: 0.002142583} + rotation: {x: 0.7049101, y: -0.026212664, z: 0.013773171, w: 0.70867836} + scale: {x: 1, y: 1, z: 1} + - name: lower_waist + parentName: butt + position: {x: -0.021319339, y: 0.00040355325, z: -0.16483356} + rotation: {x: 0.0031044185, y: 0.0020000096, z: -0.000018799677, w: 0.9999932} + scale: {x: 1, y: 1, z: 1} + - name: abdomen_y + parentName: lower_waist + position: {x: -0.0000723721, y: 0.000012806966, z: -0.0017823265} + rotation: {x: 0.00014829637, y: 0.0018769234, z: -0.02827898, w: 0.9995983} + scale: {x: 1, y: 1.0000005, z: 1.0000002} + - name: upper_waist + parentName: lower_waist + position: {x: -0.0019383731, y: 0.00014567096, z: -0.14226863} + rotation: {x: -0.0004889473, y: 0.007208624, z: -0.028266912, w: 0.9995743} + scale: {x: 1, y: 1, z: 1} + - name: torso + parentName: upper_waist + position: {x: -0.010000003, y: 0, z: -0.12} + rotation: {x: -0, y: -0, z: 5.134097e-10, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: head + parentName: torso + position: {x: 0.00012124982, y: -0.00066340127, z: -0.20378074} + rotation: {x: -0.7070211, y: -0.00034404645, z: -0.00035778637, w: 0.70719224} + scale: {x: 0.18, y: 0.18000005, z: 0.18000005} + - name: left_upper_arm + parentName: torso + position: {x: -0.00805471, y: -0.3095426, z: -0.046386097} + rotation: {x: -0.050138354, y: -0.15586165, z: -0.020825602, w: 0.9862858} + scale: {x: 1, y: 1, z: 1} + - name: left_larm + parentName: left_upper_arm + position: {x: -0.05012562, y: -0.3203213, z: 0.013551146} + rotation: {x: -0.1464947, y: -0.69702035, z: -0.08435819, w: 0.6968398} + scale: {x: 1, y: 1, z: 1} + - name: left_hand + parentName: left_larm + position: {x: -0.000015493482, y: -0.15598094, z: -0.000019282103} + rotation: {x: 0.6276541, y: -0.0002503395, z: 0.628233, w: 0.45975387} + scale: {x: 0.08000005, y: 0.08000001, z: 0.08000004} + - name: left_shoulder2 + parentName: left_upper_arm + position: {x: 0.023122678, y: 0.03264472, z: 0.08629361} + rotation: {x: -0.33152154, y: -0.00000017136335, z: 0.08883171, w: 0.9392563} + scale: {x: 1.0000001, y: 1.0000002, z: 1.0000001} + - name: right_upper_arm + parentName: torso + position: {x: -0.0065300968, y: 0.3054909, z: -0.028148612} + rotation: {x: 0.9821227, y: 0.0047237636, z: 0.14654115, w: -0.118061} + scale: {x: 1, y: 1, z: 1} + - name: right_larm + parentName: right_upper_arm + position: {x: -0.05019078, y: -0.32017505, z: -0.013448662} + rotation: {x: 0.14644656, y: 0.69692343, z: -0.08455098, w: 0.69692343} + scale: {x: 1, y: 1, z: 1} + - name: right_hand + parentName: right_larm + position: {x: -0.00003791973, y: -0.15599604, z: 0.00002259016} + rotation: {x: -0.6275729, y: 0.0003462434, z: 0.6282862, w: 0.459792} + scale: {x: 0.079999946, y: 0.080000006, z: 0.07999995} + - name: right_shoulder2 + parentName: right_upper_arm + position: {x: 0.018984409, y: 0.021175496, z: -0.07061822} + rotation: {x: 0.26393244, y: -0.0016188326, z: 0.07030048, w: 0.9619745} + scale: {x: 1.0000001, y: 1.0000002, z: 1.0000001} + - name: Shoulder + parentName: torso + position: {x: -0.001, y: -0.001, z: -0.075} + rotation: {x: 0.001067541, y: -0.707106, z: 0.707106, w: 0.001067541} + scale: {x: 0.050000057, y: 0.05000001, z: 0.3} + - name: Spine + parentName: butt + position: {x: -0.033886682, y: 0.0012130737, z: -0.29749244} + rotation: {x: 0.010788803, y: -0.0027317873, z: 0.99953836, w: 0.028269844} + scale: {x: 0.05000011, y: 0.05000005, z: 0.6000004} + - name: left_thigh + parentName: humanoidT + position: {x: 0.022163205, y: 0.8473689, z: -0.09560348} + rotation: {x: -0.008197911, y: -0.008591415, z: 0.024315646, w: 0.99963385} + scale: {x: 1, y: 1, z: 1} + - name: left_hip_y + parentName: left_thigh + position: {x: -0.00018789193, y: 0.00050958304, z: 0.0037600398} + rotation: {x: -0.011198115, y: -0.019681891, z: -0.00040819624, w: 0.9997435} + scale: {x: 1, y: 1, z: 1} + - name: left_hip_z + parentName: left_thigh + position: {x: 0.000009631686, y: 0.00050954695, z: 0.0037639162} + rotation: {x: -0.011199301, y: 0.00007027015, z: -0.00004858979, w: 0.9999373} + scale: {x: 1, y: 1, z: 1} + - name: left_shin + parentName: left_thigh + position: {x: 0.0069502685, y: -0.38283935, z: -0.006257828} + rotation: {x: 0.014698038, y: -0.0003006309, z: 0.020444054, w: 0.9996829} + scale: {x: 1, y: 1, z: 1} + - name: left_left_foot + parentName: left_shin + position: {x: -0.04318934, y: -0.23842703, z: -0.026194116} + rotation: {x: 0.033987474, y: -0.015081191, z: -0.73684585, w: 0.6750375} + scale: {x: 1, y: 1, z: 1} + - name: left_ankle_x + parentName: left_left_foot + position: {x: 0.0028956856, y: 0.0075475774, z: -0.000414714} + rotation: {x: -0.0043921056, y: 0.0034287455, z: 0.046523295, w: 0.99890167} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: left_right_foot + parentName: left_left_foot + position: {x: -0.012464729, y: 0.005532327, z: 0.21164574} + rotation: {x: 0.0533601, y: 0.06701755, z: -0.0019481222, w: 0.99632204} + scale: {x: 1, y: 1, z: 1} + - name: LeftLeg__1_ + parentName: left_thigh + position: {x: -0.040999997, y: -0.30899996, z: 0.19} + rotation: {x: 0.009720462, y: 0.71269727, z: -0.7010641, w: -0.02184826} + scale: {x: 0.05000017, y: 0.050000105, z: 0.6000013} + - name: right_thigh + parentName: humanoidT + position: {x: 0.010520758, y: 0.84846205, z: 0.09885497} + rotation: {x: 0.0074896533, y: -0.027545288, z: 0.022941835, w: 0.9993292} + scale: {x: 1, y: 1, z: 1} + - name: right_hip_y + parentName: right_thigh + position: {x: 0.000021025491, y: 0.0009465131, z: -0.0013828418} + rotation: {x: 0.0036728394, y: -0.00037535836, z: -0.00008118107, w: 0.9999932} + scale: {x: 1, y: 1, z: 1} + - name: right_hip_z + parentName: right_thigh + position: {x: -0.0000000049330993, y: 0.0000052593314, z: -0.0013360521} + rotation: {x: 0.003927878, y: 1.3571037e-25, z: -0.000000013460522, w: 0.9999923} + scale: {x: 1, y: 1, z: 1} + - name: right_shin + parentName: right_thigh + position: {x: 0.0068513784, y: -0.38295454, z: 0.006241403} + rotation: {x: -0.014669814, y: 0.0003177673, z: 0.020145983, w: 0.9996894} + scale: {x: 1, y: 1, z: 1} + - name: right_right_foot + parentName: right_shin + position: {x: -0.043461975, y: -0.239265, z: 0.02424076} + rotation: {x: -0.017235627, y: 0.021577317, z: -0.735891, w: 0.6765366} + scale: {x: 1, y: 1, z: 1} + - name: right_ankle_x + parentName: right_right_foot + position: {x: 0.0029095989, y: 0.0074111656, z: 0.00041196973} + rotation: {x: 0.004348083, y: -0.0036474187, z: 0.04522145, w: 0.9989609} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: right_left_foot + parentName: right_right_foot + position: {x: -0.003858014, y: 0.01637404, z: -0.21142484} + rotation: {x: -0.0532643, y: -0.0675717, z: -0.0010922394, w: 0.99629104} + scale: {x: 1, y: 1, z: 1} + - name: RightLeg + parentName: right_thigh + position: {x: -0.043, y: -0.316, z: -0.18299998} + rotation: {x: 0.004674896, y: -0.701414, z: 0.7119129, w: 0.03430193} + scale: {x: 0.05000008, y: 0.05000004, z: 0.6000004} + - name: mixamorig:Hips + parentName: Backflip(Clone) + position: {x: -0.005175761, y: 0.9335466, z: -0.0036196744} + rotation: {x: 0.000000008326478, y: 0.71872675, z: -0.000000014373027, w: 0.69529265} + scale: {x: 1, y: 1.0000002, z: 1} + - name: mixamorig:RightUpLeg + parentName: mixamorig:Hips + position: {x: -0.008040293, y: -0.05244598, z: 0.10175739} + rotation: {x: -0.000096233984, y: -0.007695467, z: 0.99989223, w: -0.012503546} + scale: {x: 1.0000052, y: 1.0000025, z: 1} + - name: mixamorig:RightLeg + parentName: mixamorig:RightUpLeg + position: {x: 4.440892e-18, y: 0.4222232, z: 0} + rotation: {x: 0.019863136, y: 0.0010614229, z: 0.053350624, w: 0.9983777} + scale: {x: 1.0000031, y: 1.0000021, z: 1.0000019} + - name: mixamorig:RightFoot + parentName: mixamorig:RightLeg + position: {x: -0, y: 0.38956782, z: 0} + rotation: {x: -0.42334923, y: -0.5705113, z: 0.4392357, w: -0.5498767} + scale: {x: 1.0000018, y: 1.0000029, z: 1.0000002} + - name: mixamorig:RightToeBase + parentName: mixamorig:RightFoot + position: {x: -0, y: 0.12412127, z: 7.105427e-17} + rotation: {x: -0.20302476, y: 0.0002567768, z: 0.0012378544, w: -0.9791728} + scale: {x: 1.0000008, y: 0.9999995, z: 1.0000048} + - name: mixamorig:RightToe_End + parentName: mixamorig:RightToeBase + position: {x: -0, y: 0.060296334, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftUpLeg + parentName: mixamorig:Hips + position: {x: 0.0035344027, y: -0.05244598, z: -0.10175739} + rotation: {x: 0.00008969172, y: 0.007695548, z: 0.9999024, w: -0.011660735} + scale: {x: 1.000008, y: 1.0000052, z: 1} + - name: mixamorig:LeftLeg + parentName: mixamorig:LeftUpLeg + position: {x: -0, y: 0.42220598, z: 0} + rotation: {x: -0.019789819, y: -0.001283939, z: 0.06472981, w: 0.9977058} + scale: {x: 1.0000039, y: 1.000004, z: 1.0000007} + - name: mixamorig:LeftFoot + parentName: mixamorig:LeftLeg + position: {x: -0, y: 0.3907465, z: 0} + rotation: {x: 0.45038655, y: 0.54181254, z: -0.4355745, w: 0.5602374} + scale: {x: 1.0000029, y: 1.0000026, z: 1.0000019} + - name: mixamorig:LeftToeBase + parentName: mixamorig:LeftFoot + position: {x: -0, y: 0.1308076, z: 0} + rotation: {x: 0.19264501, y: 0.00046184653, z: 0.002352476, w: 0.9812656} + scale: {x: 1.000001, y: 0.99999976, z: 1.0000021} + - name: mixamorig:LeftToe_End + parentName: mixamorig:LeftToeBase + position: {x: -0, y: 0.061049044, z: -3.5527136e-17} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:Spine + parentName: mixamorig:Hips + position: {x: -0.0024581861, y: 0.094537124, z: 1.110223e-18} + rotation: {x: -0.0000000011847465, y: 0.000000027988655, z: 0.012997864, w: 0.99991554} + scale: {x: 1, y: 0.9999999, z: 1} + - name: mixamorig:Spine1 + parentName: mixamorig:Spine + position: {x: 8.881784e-18, y: 0.1103307, z: 0} + rotation: {x: 0.000000004352489, y: -0.000000046559435, z: 0.000000027008355, + w: 1} + scale: {x: 1, y: 0.9999999, z: 1} + - name: mixamorig:Spine2 + parentName: mixamorig:Spine1 + position: {x: 8.881784e-18, y: 0.12609196, z: 0} + rotation: {x: 0.000000058169196, y: 0.000000018020504, z: -9.31326e-10, w: 1} + scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001} + - name: mixamorig:Neck + parentName: mixamorig:Spine2 + position: {x: 0.000000007613613, y: 0.14185366, z: -5.551115e-19} + rotation: {x: 0.000000015957266, y: 0.000000016797909, z: -0.012997881, w: 0.99991554} + scale: {x: 0.9999999, y: 1, z: 1} + - name: mixamorig:Head + parentName: mixamorig:Neck + position: {x: -0.0008683859, y: 0.053217314, z: 5.551115e-19} + rotation: {x: -0.000000007200165, y: 0.0000000015158257, z: -0.000000024214387, + w: 1} + scale: {x: 1.0000002, y: 1, z: 1.0000004} + - name: mixamorig:HeadTop_End + parentName: mixamorig:Head + position: {x: -0.0022724792, y: 0.13926437, z: 1.110223e-18} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftShoulder + parentName: mixamorig:Spine2 + position: {x: 0.00020240633, y: 0.13515088, z: -0.04127286} + rotation: {x: -0.0019427737, y: -0.64387274, z: 0.7651283, w: -0.0016816484} + scale: {x: 1.0000032, y: 1.0000012, z: 1.0000011} + - name: mixamorig:LeftArm + parentName: mixamorig:LeftShoulder + position: {x: -0, y: 0.0791558, z: 2.842171e-16} + rotation: {x: -0.052307434, y: 0.0017309872, z: -0.0049234666, w: 0.9986174} + scale: {x: 1.0000021, y: 1.0000029, z: 1.0000021} + - name: mixamorig:LeftForeArm + parentName: mixamorig:LeftArm + position: {x: 4.440892e-18, y: 0.3525264, z: 0} + rotation: {x: -0.03167211, y: 0.0079971645, z: -0.016885435, w: 0.9993237} + scale: {x: 1.0000007, y: 1.0000013, z: 1.0000008} + - name: mixamorig:LeftHand + parentName: mixamorig:LeftForeArm + position: {x: 1.7763568e-17, y: 0.29053873, z: 0} + rotation: {x: -0, y: -2.3283064e-10, z: -1.3096724e-10, w: 1} + scale: {x: 1.0000012, y: 1.0000001, z: 0.99999976} + - name: mixamorig:RightShoulder + parentName: mixamorig:Spine2 + position: {x: -0.0005504584, y: 0.13517044, z: 0.04127286} + rotation: {x: 0.7649505, y: -0.004635785, z: 0.005321747, w: 0.6440504} + scale: {x: 1.0000002, y: 1.0000006, z: 1.0000019} + - name: mixamorig:RightArm + parentName: mixamorig:RightShoulder + position: {x: -0, y: 0.079155795, z: 0} + rotation: {x: -0.04782623, y: -0.0011201247, z: 0.016020544, w: 0.9987266} + scale: {x: 0.9999999, y: 1.0000025, z: 1.0000014} + - name: mixamorig:RightForeArm + parentName: mixamorig:RightArm + position: {x: -0, y: 0.3522625, z: 0} + rotation: {x: -0.03519323, y: -0.0078160325, z: 0.030223342, w: 0.99889284} + scale: {x: 1.0000007, y: 1.0000008, z: 1.0000008} + - name: mixamorig:RightHand + parentName: mixamorig:RightForeArm + position: {x: 8.881784e-18, y: 0.2879794, z: 2.842171e-16} + rotation: {x: -0, y: -0, z: -0, w: 1} + scale: {x: 1.0000001, y: 1.0000005, z: 1.0000005} + 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: {fileID: 9000000, guid: fa0773caae34843268db7f12c1421ce5, + type: 3} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 2 + addHumanoidExtraRootOnlyWhenUsingAvatar: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Animations/Locomotion Pack/jump.fbx b/Assets/MarathonEnvs/Animations/Locomotion Pack/jump.fbx new file mode 100644 index 0000000..58a9f44 --- /dev/null +++ b/Assets/MarathonEnvs/Animations/Locomotion Pack/jump.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43569b86e9b47f53e34098ed2a430674d9a6dfd38457bb193eab812e58add96f +size 236689 diff --git a/Assets/MarathonEnvs/Animations/Locomotion Pack/jump.fbx.meta b/Assets/MarathonEnvs/Animations/Locomotion Pack/jump.fbx.meta new file mode 100644 index 0000000..9d1201e --- /dev/null +++ b/Assets/MarathonEnvs/Animations/Locomotion Pack/jump.fbx.meta @@ -0,0 +1,705 @@ +fileFormatVersion: 2 +guid: 9c569166600d641efacce54b9444fdd9 +ModelImporter: + serializedVersion: 23 + fileIDToRecycleName: + 100000: //RootNode + 100002: mixamorig:Head + 100004: mixamorig:HeadTop_End + 100006: mixamorig:Hips + 100008: mixamorig:LeftArm + 100010: mixamorig:LeftFoot + 100012: mixamorig:LeftForeArm + 100014: mixamorig:LeftHand + 100016: mixamorig:LeftLeg + 100018: mixamorig:LeftShoulder + 100020: mixamorig:LeftToe_End + 100022: mixamorig:LeftToeBase + 100024: mixamorig:LeftUpLeg + 100026: mixamorig:Neck + 100028: mixamorig:RightArm + 100030: mixamorig:RightFoot + 100032: mixamorig:RightForeArm + 100034: mixamorig:RightHand + 100036: mixamorig:RightLeg + 100038: mixamorig:RightShoulder + 100040: mixamorig:RightToe_End + 100042: mixamorig:RightToeBase + 100044: mixamorig:RightUpLeg + 100046: mixamorig:Spine + 100048: mixamorig:Spine1 + 100050: mixamorig:Spine2 + 400000: //RootNode + 400002: mixamorig:Head + 400004: mixamorig:HeadTop_End + 400006: mixamorig:Hips + 400008: mixamorig:LeftArm + 400010: mixamorig:LeftFoot + 400012: mixamorig:LeftForeArm + 400014: mixamorig:LeftHand + 400016: mixamorig:LeftLeg + 400018: mixamorig:LeftShoulder + 400020: mixamorig:LeftToe_End + 400022: mixamorig:LeftToeBase + 400024: mixamorig:LeftUpLeg + 400026: mixamorig:Neck + 400028: mixamorig:RightArm + 400030: mixamorig:RightFoot + 400032: mixamorig:RightForeArm + 400034: mixamorig:RightHand + 400036: mixamorig:RightLeg + 400038: mixamorig:RightShoulder + 400040: mixamorig:RightToe_End + 400042: mixamorig:RightToeBase + 400044: mixamorig:RightUpLeg + 400046: mixamorig:Spine + 400048: mixamorig:Spine1 + 400050: mixamorig:Spine2 + 7400000: jump + 7400002: jumpLaunch + 7400004: jumpFalling + 9500000: //RootNode + externalObjects: {} + materials: + importMaterials: 1 + 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: + - serializedVersion: 16 + name: jump + takeName: mixamo.com + firstFrame: 0 + lastFrame: 130 + wrapMode: 0 + orientationOffsetY: 0 + level: 0.07 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 0 + loopBlend: 0 + loopBlendOrientation: 1 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 1 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 0 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 3 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: jumpLaunch + takeName: mixamo.com + firstFrame: 53 + lastFrame: 70 + wrapMode: 0 + orientationOffsetY: 0 + level: 0.07 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 1 + loopBlendOrientation: 1 + loopBlendPositionY: 1 + loopBlendPositionXZ: 1 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 1 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 3 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: jumpFalling + takeName: mixamo.com + firstFrame: 70 + lastFrame: 86 + wrapMode: 0 + orientationOffsetY: 0 + level: 0.07 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 0 + loopBlend: 0 + loopBlendOrientation: 1 + loopBlendPositionY: 1 + loopBlendPositionXZ: 1 + keepOriginalOrientation: 0 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 1 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 3 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + previousCalculatedGlobalScale: 0.01 + hasPreviousCalculatedGlobalScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + importAnimation: 1 + copyAvatar: 1 + humanDescription: + serializedVersion: 2 + human: + - boneName: mixamorig:Hips + 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: mixamorig:LeftUpLeg + 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: mixamorig:RightUpLeg + 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: mixamorig:LeftLeg + 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: mixamorig:RightLeg + 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: mixamorig:LeftFoot + 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: mixamorig:RightFoot + 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: mixamorig:Spine + 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: mixamorig:Spine1 + 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: mixamorig:Neck + 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: mixamorig:Head + 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: mixamorig:LeftShoulder + 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: mixamorig:RightShoulder + 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: mixamorig:LeftArm + 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: mixamorig:RightArm + 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: mixamorig:LeftForeArm + 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: mixamorig:RightForeArm + 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: mixamorig:LeftHand + 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: mixamorig:RightHand + 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: mixamorig:LeftToeBase + 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: mixamorig:RightToeBase + 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: mixamorig:Spine2 + humanName: UpperChest + 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: Backflip(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: humanoidT + parentName: Backflip(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: butt + parentName: humanoidT + position: {x: 0.028619736, y: 1.0587679, z: 0.002142583} + rotation: {x: 0.7049101, y: -0.026212664, z: 0.013773171, w: 0.70867836} + scale: {x: 1, y: 1, z: 1} + - name: lower_waist + parentName: butt + position: {x: -0.021319339, y: 0.00040355325, z: -0.16483356} + rotation: {x: 0.0031044185, y: 0.0020000096, z: -0.000018799677, w: 0.9999932} + scale: {x: 1, y: 1, z: 1} + - name: abdomen_y + parentName: lower_waist + position: {x: -0.0000723721, y: 0.000012806966, z: -0.0017823265} + rotation: {x: 0.00014829637, y: 0.0018769234, z: -0.02827898, w: 0.9995983} + scale: {x: 1, y: 1.0000005, z: 1.0000002} + - name: upper_waist + parentName: lower_waist + position: {x: -0.0019383731, y: 0.00014567096, z: -0.14226863} + rotation: {x: -0.0004889473, y: 0.007208624, z: -0.028266912, w: 0.9995743} + scale: {x: 1, y: 1, z: 1} + - name: torso + parentName: upper_waist + position: {x: -0.010000003, y: 0, z: -0.12} + rotation: {x: -0, y: -0, z: 5.134097e-10, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: head + parentName: torso + position: {x: 0.00012124982, y: -0.00066340127, z: -0.20378074} + rotation: {x: -0.7070211, y: -0.00034404645, z: -0.00035778637, w: 0.70719224} + scale: {x: 0.18, y: 0.18000005, z: 0.18000005} + - name: left_upper_arm + parentName: torso + position: {x: -0.00805471, y: -0.3095426, z: -0.046386097} + rotation: {x: -0.050138354, y: -0.15586165, z: -0.020825602, w: 0.9862858} + scale: {x: 1, y: 1, z: 1} + - name: left_larm + parentName: left_upper_arm + position: {x: -0.05012562, y: -0.3203213, z: 0.013551146} + rotation: {x: -0.1464947, y: -0.69702035, z: -0.08435819, w: 0.6968398} + scale: {x: 1, y: 1, z: 1} + - name: left_hand + parentName: left_larm + position: {x: -0.000015493482, y: -0.15598094, z: -0.000019282103} + rotation: {x: 0.6276541, y: -0.0002503395, z: 0.628233, w: 0.45975387} + scale: {x: 0.08000005, y: 0.08000001, z: 0.08000004} + - name: left_shoulder2 + parentName: left_upper_arm + position: {x: 0.023122678, y: 0.03264472, z: 0.08629361} + rotation: {x: -0.33152154, y: -0.00000017136335, z: 0.08883171, w: 0.9392563} + scale: {x: 1.0000001, y: 1.0000002, z: 1.0000001} + - name: right_upper_arm + parentName: torso + position: {x: -0.0065300968, y: 0.3054909, z: -0.028148612} + rotation: {x: 0.9821227, y: 0.0047237636, z: 0.14654115, w: -0.118061} + scale: {x: 1, y: 1, z: 1} + - name: right_larm + parentName: right_upper_arm + position: {x: -0.05019078, y: -0.32017505, z: -0.013448662} + rotation: {x: 0.14644656, y: 0.69692343, z: -0.08455098, w: 0.69692343} + scale: {x: 1, y: 1, z: 1} + - name: right_hand + parentName: right_larm + position: {x: -0.00003791973, y: -0.15599604, z: 0.00002259016} + rotation: {x: -0.6275729, y: 0.0003462434, z: 0.6282862, w: 0.459792} + scale: {x: 0.079999946, y: 0.080000006, z: 0.07999995} + - name: right_shoulder2 + parentName: right_upper_arm + position: {x: 0.018984409, y: 0.021175496, z: -0.07061822} + rotation: {x: 0.26393244, y: -0.0016188326, z: 0.07030048, w: 0.9619745} + scale: {x: 1.0000001, y: 1.0000002, z: 1.0000001} + - name: Shoulder + parentName: torso + position: {x: -0.001, y: -0.001, z: -0.075} + rotation: {x: 0.001067541, y: -0.707106, z: 0.707106, w: 0.001067541} + scale: {x: 0.050000057, y: 0.05000001, z: 0.3} + - name: Spine + parentName: butt + position: {x: -0.033886682, y: 0.0012130737, z: -0.29749244} + rotation: {x: 0.010788803, y: -0.0027317873, z: 0.99953836, w: 0.028269844} + scale: {x: 0.05000011, y: 0.05000005, z: 0.6000004} + - name: left_thigh + parentName: humanoidT + position: {x: 0.022163205, y: 0.8473689, z: -0.09560348} + rotation: {x: -0.008197911, y: -0.008591415, z: 0.024315646, w: 0.99963385} + scale: {x: 1, y: 1, z: 1} + - name: left_hip_y + parentName: left_thigh + position: {x: -0.00018789193, y: 0.00050958304, z: 0.0037600398} + rotation: {x: -0.011198115, y: -0.019681891, z: -0.00040819624, w: 0.9997435} + scale: {x: 1, y: 1, z: 1} + - name: left_hip_z + parentName: left_thigh + position: {x: 0.000009631686, y: 0.00050954695, z: 0.0037639162} + rotation: {x: -0.011199301, y: 0.00007027015, z: -0.00004858979, w: 0.9999373} + scale: {x: 1, y: 1, z: 1} + - name: left_shin + parentName: left_thigh + position: {x: 0.0069502685, y: -0.38283935, z: -0.006257828} + rotation: {x: 0.014698038, y: -0.0003006309, z: 0.020444054, w: 0.9996829} + scale: {x: 1, y: 1, z: 1} + - name: left_left_foot + parentName: left_shin + position: {x: -0.04318934, y: -0.23842703, z: -0.026194116} + rotation: {x: 0.033987474, y: -0.015081191, z: -0.73684585, w: 0.6750375} + scale: {x: 1, y: 1, z: 1} + - name: left_ankle_x + parentName: left_left_foot + position: {x: 0.0028956856, y: 0.0075475774, z: -0.000414714} + rotation: {x: -0.0043921056, y: 0.0034287455, z: 0.046523295, w: 0.99890167} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: left_right_foot + parentName: left_left_foot + position: {x: -0.012464729, y: 0.005532327, z: 0.21164574} + rotation: {x: 0.0533601, y: 0.06701755, z: -0.0019481222, w: 0.99632204} + scale: {x: 1, y: 1, z: 1} + - name: LeftLeg__1_ + parentName: left_thigh + position: {x: -0.040999997, y: -0.30899996, z: 0.19} + rotation: {x: 0.009720462, y: 0.71269727, z: -0.7010641, w: -0.02184826} + scale: {x: 0.05000017, y: 0.050000105, z: 0.6000013} + - name: right_thigh + parentName: humanoidT + position: {x: 0.010520758, y: 0.84846205, z: 0.09885497} + rotation: {x: 0.0074896533, y: -0.027545288, z: 0.022941835, w: 0.9993292} + scale: {x: 1, y: 1, z: 1} + - name: right_hip_y + parentName: right_thigh + position: {x: 0.000021025491, y: 0.0009465131, z: -0.0013828418} + rotation: {x: 0.0036728394, y: -0.00037535836, z: -0.00008118107, w: 0.9999932} + scale: {x: 1, y: 1, z: 1} + - name: right_hip_z + parentName: right_thigh + position: {x: -0.0000000049330993, y: 0.0000052593314, z: -0.0013360521} + rotation: {x: 0.003927878, y: 1.3571037e-25, z: -0.000000013460522, w: 0.9999923} + scale: {x: 1, y: 1, z: 1} + - name: right_shin + parentName: right_thigh + position: {x: 0.0068513784, y: -0.38295454, z: 0.006241403} + rotation: {x: -0.014669814, y: 0.0003177673, z: 0.020145983, w: 0.9996894} + scale: {x: 1, y: 1, z: 1} + - name: right_right_foot + parentName: right_shin + position: {x: -0.043461975, y: -0.239265, z: 0.02424076} + rotation: {x: -0.017235627, y: 0.021577317, z: -0.735891, w: 0.6765366} + scale: {x: 1, y: 1, z: 1} + - name: right_ankle_x + parentName: right_right_foot + position: {x: 0.0029095989, y: 0.0074111656, z: 0.00041196973} + rotation: {x: 0.004348083, y: -0.0036474187, z: 0.04522145, w: 0.9989609} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: right_left_foot + parentName: right_right_foot + position: {x: -0.003858014, y: 0.01637404, z: -0.21142484} + rotation: {x: -0.0532643, y: -0.0675717, z: -0.0010922394, w: 0.99629104} + scale: {x: 1, y: 1, z: 1} + - name: RightLeg + parentName: right_thigh + position: {x: -0.043, y: -0.316, z: -0.18299998} + rotation: {x: 0.004674896, y: -0.701414, z: 0.7119129, w: 0.03430193} + scale: {x: 0.05000008, y: 0.05000004, z: 0.6000004} + - name: mixamorig:Hips + parentName: Backflip(Clone) + position: {x: -0.005175761, y: 0.9335466, z: -0.0036196744} + rotation: {x: 0.000000008326478, y: 0.71872675, z: -0.000000014373027, w: 0.69529265} + scale: {x: 1, y: 1.0000002, z: 1} + - name: mixamorig:RightUpLeg + parentName: mixamorig:Hips + position: {x: -0.008040293, y: -0.05244598, z: 0.10175739} + rotation: {x: -0.000096233984, y: -0.007695467, z: 0.99989223, w: -0.012503546} + scale: {x: 1.0000052, y: 1.0000025, z: 1} + - name: mixamorig:RightLeg + parentName: mixamorig:RightUpLeg + position: {x: 4.440892e-18, y: 0.4222232, z: 0} + rotation: {x: 0.019863136, y: 0.0010614229, z: 0.053350624, w: 0.9983777} + scale: {x: 1.0000031, y: 1.0000021, z: 1.0000019} + - name: mixamorig:RightFoot + parentName: mixamorig:RightLeg + position: {x: -0, y: 0.38956782, z: 0} + rotation: {x: -0.42334923, y: -0.5705113, z: 0.4392357, w: -0.5498767} + scale: {x: 1.0000018, y: 1.0000029, z: 1.0000002} + - name: mixamorig:RightToeBase + parentName: mixamorig:RightFoot + position: {x: -0, y: 0.12412127, z: 7.105427e-17} + rotation: {x: -0.20302476, y: 0.0002567768, z: 0.0012378544, w: -0.9791728} + scale: {x: 1.0000008, y: 0.9999995, z: 1.0000048} + - name: mixamorig:RightToe_End + parentName: mixamorig:RightToeBase + position: {x: -0, y: 0.060296334, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftUpLeg + parentName: mixamorig:Hips + position: {x: 0.0035344027, y: -0.05244598, z: -0.10175739} + rotation: {x: 0.00008969172, y: 0.007695548, z: 0.9999024, w: -0.011660735} + scale: {x: 1.000008, y: 1.0000052, z: 1} + - name: mixamorig:LeftLeg + parentName: mixamorig:LeftUpLeg + position: {x: -0, y: 0.42220598, z: 0} + rotation: {x: -0.019789819, y: -0.001283939, z: 0.06472981, w: 0.9977058} + scale: {x: 1.0000039, y: 1.000004, z: 1.0000007} + - name: mixamorig:LeftFoot + parentName: mixamorig:LeftLeg + position: {x: -0, y: 0.3907465, z: 0} + rotation: {x: 0.45038655, y: 0.54181254, z: -0.4355745, w: 0.5602374} + scale: {x: 1.0000029, y: 1.0000026, z: 1.0000019} + - name: mixamorig:LeftToeBase + parentName: mixamorig:LeftFoot + position: {x: -0, y: 0.1308076, z: 0} + rotation: {x: 0.19264501, y: 0.00046184653, z: 0.002352476, w: 0.9812656} + scale: {x: 1.000001, y: 0.99999976, z: 1.0000021} + - name: mixamorig:LeftToe_End + parentName: mixamorig:LeftToeBase + position: {x: -0, y: 0.061049044, z: -3.5527136e-17} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:Spine + parentName: mixamorig:Hips + position: {x: -0.0024581861, y: 0.094537124, z: 1.110223e-18} + rotation: {x: -0.0000000011847465, y: 0.000000027988655, z: 0.012997864, w: 0.99991554} + scale: {x: 1, y: 0.9999999, z: 1} + - name: mixamorig:Spine1 + parentName: mixamorig:Spine + position: {x: 8.881784e-18, y: 0.1103307, z: 0} + rotation: {x: 0.000000004352489, y: -0.000000046559435, z: 0.000000027008355, + w: 1} + scale: {x: 1, y: 0.9999999, z: 1} + - name: mixamorig:Spine2 + parentName: mixamorig:Spine1 + position: {x: 8.881784e-18, y: 0.12609196, z: 0} + rotation: {x: 0.000000058169196, y: 0.000000018020504, z: -9.31326e-10, w: 1} + scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001} + - name: mixamorig:Neck + parentName: mixamorig:Spine2 + position: {x: 0.000000007613613, y: 0.14185366, z: -5.551115e-19} + rotation: {x: 0.000000015957266, y: 0.000000016797909, z: -0.012997881, w: 0.99991554} + scale: {x: 0.9999999, y: 1, z: 1} + - name: mixamorig:Head + parentName: mixamorig:Neck + position: {x: -0.0008683859, y: 0.053217314, z: 5.551115e-19} + rotation: {x: -0.000000007200165, y: 0.0000000015158257, z: -0.000000024214387, + w: 1} + scale: {x: 1.0000002, y: 1, z: 1.0000004} + - name: mixamorig:HeadTop_End + parentName: mixamorig:Head + position: {x: -0.0022724792, y: 0.13926437, z: 1.110223e-18} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftShoulder + parentName: mixamorig:Spine2 + position: {x: 0.00020240633, y: 0.13515088, z: -0.04127286} + rotation: {x: -0.0019427737, y: -0.64387274, z: 0.7651283, w: -0.0016816484} + scale: {x: 1.0000032, y: 1.0000012, z: 1.0000011} + - name: mixamorig:LeftArm + parentName: mixamorig:LeftShoulder + position: {x: -0, y: 0.0791558, z: 2.842171e-16} + rotation: {x: -0.052307434, y: 0.0017309872, z: -0.0049234666, w: 0.9986174} + scale: {x: 1.0000021, y: 1.0000029, z: 1.0000021} + - name: mixamorig:LeftForeArm + parentName: mixamorig:LeftArm + position: {x: 4.440892e-18, y: 0.3525264, z: 0} + rotation: {x: -0.03167211, y: 0.0079971645, z: -0.016885435, w: 0.9993237} + scale: {x: 1.0000007, y: 1.0000013, z: 1.0000008} + - name: mixamorig:LeftHand + parentName: mixamorig:LeftForeArm + position: {x: 1.7763568e-17, y: 0.29053873, z: 0} + rotation: {x: -0, y: -2.3283064e-10, z: -1.3096724e-10, w: 1} + scale: {x: 1.0000012, y: 1.0000001, z: 0.99999976} + - name: mixamorig:RightShoulder + parentName: mixamorig:Spine2 + position: {x: -0.0005504584, y: 0.13517044, z: 0.04127286} + rotation: {x: 0.7649505, y: -0.004635785, z: 0.005321747, w: 0.6440504} + scale: {x: 1.0000002, y: 1.0000006, z: 1.0000019} + - name: mixamorig:RightArm + parentName: mixamorig:RightShoulder + position: {x: -0, y: 0.079155795, z: 0} + rotation: {x: -0.04782623, y: -0.0011201247, z: 0.016020544, w: 0.9987266} + scale: {x: 0.9999999, y: 1.0000025, z: 1.0000014} + - name: mixamorig:RightForeArm + parentName: mixamorig:RightArm + position: {x: -0, y: 0.3522625, z: 0} + rotation: {x: -0.03519323, y: -0.0078160325, z: 0.030223342, w: 0.99889284} + scale: {x: 1.0000007, y: 1.0000008, z: 1.0000008} + - name: mixamorig:RightHand + parentName: mixamorig:RightForeArm + position: {x: 8.881784e-18, y: 0.2879794, z: 2.842171e-16} + rotation: {x: -0, y: -0, z: -0, w: 1} + scale: {x: 1.0000001, y: 1.0000005, z: 1.0000005} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 1 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {fileID: 9000000, guid: fa0773caae34843268db7f12c1421ce5, + type: 3} + animationType: 3 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Animations/Locomotion Pack/running.fbx b/Assets/MarathonEnvs/Animations/Locomotion Pack/running.fbx new file mode 100644 index 0000000..c655985 --- /dev/null +++ b/Assets/MarathonEnvs/Animations/Locomotion Pack/running.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ce35ea0e59e8742333989d0af5413799f4f2572dac29881a87b8692f0ebbc09 +size 148001 diff --git a/Assets/MarathonEnvs/Animations/Locomotion Pack/running.fbx.meta b/Assets/MarathonEnvs/Animations/Locomotion Pack/running.fbx.meta new file mode 100644 index 0000000..8c2ad6f --- /dev/null +++ b/Assets/MarathonEnvs/Animations/Locomotion Pack/running.fbx.meta @@ -0,0 +1,647 @@ +fileFormatVersion: 2 +guid: 7cebe89af92024b3aa1f5ca92436b252 +ModelImporter: + serializedVersion: 23 + fileIDToRecycleName: + 100000: mixamorig:Head + 100002: mixamorig:HeadTop_End + 100004: mixamorig:Hips + 100006: mixamorig:LeftArm + 100008: mixamorig:LeftFoot + 100010: mixamorig:LeftForeArm + 100012: mixamorig:LeftHand + 100014: mixamorig:LeftLeg + 100016: mixamorig:LeftShoulder + 100018: mixamorig:LeftToe_End + 100020: mixamorig:LeftToeBase + 100022: mixamorig:LeftUpLeg + 100024: mixamorig:Neck + 100026: mixamorig:RightArm + 100028: mixamorig:RightFoot + 100030: mixamorig:RightForeArm + 100032: mixamorig:RightHand + 100034: mixamorig:RightLeg + 100036: mixamorig:RightShoulder + 100038: mixamorig:RightToe_End + 100040: mixamorig:RightToeBase + 100042: mixamorig:RightUpLeg + 100044: mixamorig:Spine + 100046: mixamorig:Spine1 + 100048: mixamorig:Spine2 + 100050: //RootNode + 400000: mixamorig:Head + 400002: mixamorig:HeadTop_End + 400004: mixamorig:Hips + 400006: mixamorig:LeftArm + 400008: mixamorig:LeftFoot + 400010: mixamorig:LeftForeArm + 400012: mixamorig:LeftHand + 400014: mixamorig:LeftLeg + 400016: mixamorig:LeftShoulder + 400018: mixamorig:LeftToe_End + 400020: mixamorig:LeftToeBase + 400022: mixamorig:LeftUpLeg + 400024: mixamorig:Neck + 400026: mixamorig:RightArm + 400028: mixamorig:RightFoot + 400030: mixamorig:RightForeArm + 400032: mixamorig:RightHand + 400034: mixamorig:RightLeg + 400036: mixamorig:RightShoulder + 400038: mixamorig:RightToe_End + 400040: mixamorig:RightToeBase + 400042: mixamorig:RightUpLeg + 400044: mixamorig:Spine + 400046: mixamorig:Spine1 + 400048: mixamorig:Spine2 + 400050: //RootNode + 7400000: running + 9500000: //RootNode + externalObjects: {} + materials: + importMaterials: 1 + 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: + - serializedVersion: 16 + name: running + takeName: mixamo.com + firstFrame: 0 + lastFrame: 42 + wrapMode: 0 + orientationOffsetY: 0 + level: 0.07 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 0 + loopBlendOrientation: 1 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 1 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 1 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 3 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + previousCalculatedGlobalScale: 0.01 + hasPreviousCalculatedGlobalScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + importAnimation: 1 + copyAvatar: 1 + humanDescription: + serializedVersion: 2 + human: + - boneName: mixamorig:Hips + 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: mixamorig:LeftUpLeg + 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: mixamorig:RightUpLeg + 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: mixamorig:LeftLeg + 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: mixamorig:RightLeg + 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: mixamorig:LeftFoot + 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: mixamorig:RightFoot + 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: mixamorig:Spine + 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: mixamorig:Spine1 + 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: mixamorig:Neck + 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: mixamorig:Head + 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: mixamorig:LeftShoulder + 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: mixamorig:RightShoulder + 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: mixamorig:LeftArm + 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: mixamorig:RightArm + 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: mixamorig:LeftForeArm + 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: mixamorig:RightForeArm + 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: mixamorig:LeftHand + 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: mixamorig:RightHand + 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: mixamorig:LeftToeBase + 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: mixamorig:RightToeBase + 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: mixamorig:Spine2 + humanName: UpperChest + 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: Backflip(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: humanoidT + parentName: Backflip(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: butt + parentName: humanoidT + position: {x: 0.028619736, y: 1.0587679, z: 0.002142583} + rotation: {x: 0.7049101, y: -0.026212664, z: 0.013773171, w: 0.70867836} + scale: {x: 1, y: 1, z: 1} + - name: lower_waist + parentName: butt + position: {x: -0.021319339, y: 0.00040355325, z: -0.16483356} + rotation: {x: 0.0031044185, y: 0.0020000096, z: -0.000018799677, w: 0.9999932} + scale: {x: 1, y: 1, z: 1} + - name: abdomen_y + parentName: lower_waist + position: {x: -0.0000723721, y: 0.000012806966, z: -0.0017823265} + rotation: {x: 0.00014829637, y: 0.0018769234, z: -0.02827898, w: 0.9995983} + scale: {x: 1, y: 1.0000005, z: 1.0000002} + - name: upper_waist + parentName: lower_waist + position: {x: -0.0019383731, y: 0.00014567096, z: -0.14226863} + rotation: {x: -0.0004889473, y: 0.007208624, z: -0.028266912, w: 0.9995743} + scale: {x: 1, y: 1, z: 1} + - name: torso + parentName: upper_waist + position: {x: -0.010000003, y: 0, z: -0.12} + rotation: {x: -0, y: -0, z: 5.134097e-10, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: head + parentName: torso + position: {x: 0.00012124982, y: -0.00066340127, z: -0.20378074} + rotation: {x: -0.7070211, y: -0.00034404645, z: -0.00035778637, w: 0.70719224} + scale: {x: 0.18, y: 0.18000005, z: 0.18000005} + - name: left_upper_arm + parentName: torso + position: {x: -0.00805471, y: -0.3095426, z: -0.046386097} + rotation: {x: -0.050138354, y: -0.15586165, z: -0.020825602, w: 0.9862858} + scale: {x: 1, y: 1, z: 1} + - name: left_larm + parentName: left_upper_arm + position: {x: -0.05012562, y: -0.3203213, z: 0.013551146} + rotation: {x: -0.1464947, y: -0.69702035, z: -0.08435819, w: 0.6968398} + scale: {x: 1, y: 1, z: 1} + - name: left_hand + parentName: left_larm + position: {x: -0.000015493482, y: -0.15598094, z: -0.000019282103} + rotation: {x: 0.6276541, y: -0.0002503395, z: 0.628233, w: 0.45975387} + scale: {x: 0.08000005, y: 0.08000001, z: 0.08000004} + - name: left_shoulder2 + parentName: left_upper_arm + position: {x: 0.023122678, y: 0.03264472, z: 0.08629361} + rotation: {x: -0.33152154, y: -0.00000017136335, z: 0.08883171, w: 0.9392563} + scale: {x: 1.0000001, y: 1.0000002, z: 1.0000001} + - name: right_upper_arm + parentName: torso + position: {x: -0.0065300968, y: 0.3054909, z: -0.028148612} + rotation: {x: 0.9821227, y: 0.0047237636, z: 0.14654115, w: -0.118061} + scale: {x: 1, y: 1, z: 1} + - name: right_larm + parentName: right_upper_arm + position: {x: -0.05019078, y: -0.32017505, z: -0.013448662} + rotation: {x: 0.14644656, y: 0.69692343, z: -0.08455098, w: 0.69692343} + scale: {x: 1, y: 1, z: 1} + - name: right_hand + parentName: right_larm + position: {x: -0.00003791973, y: -0.15599604, z: 0.00002259016} + rotation: {x: -0.6275729, y: 0.0003462434, z: 0.6282862, w: 0.459792} + scale: {x: 0.079999946, y: 0.080000006, z: 0.07999995} + - name: right_shoulder2 + parentName: right_upper_arm + position: {x: 0.018984409, y: 0.021175496, z: -0.07061822} + rotation: {x: 0.26393244, y: -0.0016188326, z: 0.07030048, w: 0.9619745} + scale: {x: 1.0000001, y: 1.0000002, z: 1.0000001} + - name: Shoulder + parentName: torso + position: {x: -0.001, y: -0.001, z: -0.075} + rotation: {x: 0.001067541, y: -0.707106, z: 0.707106, w: 0.001067541} + scale: {x: 0.050000057, y: 0.05000001, z: 0.3} + - name: Spine + parentName: butt + position: {x: -0.033886682, y: 0.0012130737, z: -0.29749244} + rotation: {x: 0.010788803, y: -0.0027317873, z: 0.99953836, w: 0.028269844} + scale: {x: 0.05000011, y: 0.05000005, z: 0.6000004} + - name: left_thigh + parentName: humanoidT + position: {x: 0.022163205, y: 0.8473689, z: -0.09560348} + rotation: {x: -0.008197911, y: -0.008591415, z: 0.024315646, w: 0.99963385} + scale: {x: 1, y: 1, z: 1} + - name: left_hip_y + parentName: left_thigh + position: {x: -0.00018789193, y: 0.00050958304, z: 0.0037600398} + rotation: {x: -0.011198115, y: -0.019681891, z: -0.00040819624, w: 0.9997435} + scale: {x: 1, y: 1, z: 1} + - name: left_hip_z + parentName: left_thigh + position: {x: 0.000009631686, y: 0.00050954695, z: 0.0037639162} + rotation: {x: -0.011199301, y: 0.00007027015, z: -0.00004858979, w: 0.9999373} + scale: {x: 1, y: 1, z: 1} + - name: left_shin + parentName: left_thigh + position: {x: 0.0069502685, y: -0.38283935, z: -0.006257828} + rotation: {x: 0.014698038, y: -0.0003006309, z: 0.020444054, w: 0.9996829} + scale: {x: 1, y: 1, z: 1} + - name: left_left_foot + parentName: left_shin + position: {x: -0.04318934, y: -0.23842703, z: -0.026194116} + rotation: {x: 0.033987474, y: -0.015081191, z: -0.73684585, w: 0.6750375} + scale: {x: 1, y: 1, z: 1} + - name: left_ankle_x + parentName: left_left_foot + position: {x: 0.0028956856, y: 0.0075475774, z: -0.000414714} + rotation: {x: -0.0043921056, y: 0.0034287455, z: 0.046523295, w: 0.99890167} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: left_right_foot + parentName: left_left_foot + position: {x: -0.012464729, y: 0.005532327, z: 0.21164574} + rotation: {x: 0.0533601, y: 0.06701755, z: -0.0019481222, w: 0.99632204} + scale: {x: 1, y: 1, z: 1} + - name: LeftLeg__1_ + parentName: left_thigh + position: {x: -0.040999997, y: -0.30899996, z: 0.19} + rotation: {x: 0.009720462, y: 0.71269727, z: -0.7010641, w: -0.02184826} + scale: {x: 0.05000017, y: 0.050000105, z: 0.6000013} + - name: right_thigh + parentName: humanoidT + position: {x: 0.010520758, y: 0.84846205, z: 0.09885497} + rotation: {x: 0.0074896533, y: -0.027545288, z: 0.022941835, w: 0.9993292} + scale: {x: 1, y: 1, z: 1} + - name: right_hip_y + parentName: right_thigh + position: {x: 0.000021025491, y: 0.0009465131, z: -0.0013828418} + rotation: {x: 0.0036728394, y: -0.00037535836, z: -0.00008118107, w: 0.9999932} + scale: {x: 1, y: 1, z: 1} + - name: right_hip_z + parentName: right_thigh + position: {x: -0.0000000049330993, y: 0.0000052593314, z: -0.0013360521} + rotation: {x: 0.003927878, y: 1.3571037e-25, z: -0.000000013460522, w: 0.9999923} + scale: {x: 1, y: 1, z: 1} + - name: right_shin + parentName: right_thigh + position: {x: 0.0068513784, y: -0.38295454, z: 0.006241403} + rotation: {x: -0.014669814, y: 0.0003177673, z: 0.020145983, w: 0.9996894} + scale: {x: 1, y: 1, z: 1} + - name: right_right_foot + parentName: right_shin + position: {x: -0.043461975, y: -0.239265, z: 0.02424076} + rotation: {x: -0.017235627, y: 0.021577317, z: -0.735891, w: 0.6765366} + scale: {x: 1, y: 1, z: 1} + - name: right_ankle_x + parentName: right_right_foot + position: {x: 0.0029095989, y: 0.0074111656, z: 0.00041196973} + rotation: {x: 0.004348083, y: -0.0036474187, z: 0.04522145, w: 0.9989609} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: right_left_foot + parentName: right_right_foot + position: {x: -0.003858014, y: 0.01637404, z: -0.21142484} + rotation: {x: -0.0532643, y: -0.0675717, z: -0.0010922394, w: 0.99629104} + scale: {x: 1, y: 1, z: 1} + - name: RightLeg + parentName: right_thigh + position: {x: -0.043, y: -0.316, z: -0.18299998} + rotation: {x: 0.004674896, y: -0.701414, z: 0.7119129, w: 0.03430193} + scale: {x: 0.05000008, y: 0.05000004, z: 0.6000004} + - name: mixamorig:Hips + parentName: Backflip(Clone) + position: {x: -0.005175761, y: 0.9335466, z: -0.0036196744} + rotation: {x: 0.000000008326478, y: 0.71872675, z: -0.000000014373027, w: 0.69529265} + scale: {x: 1, y: 1.0000002, z: 1} + - name: mixamorig:RightUpLeg + parentName: mixamorig:Hips + position: {x: -0.008040293, y: -0.05244598, z: 0.10175739} + rotation: {x: -0.000096233984, y: -0.007695467, z: 0.99989223, w: -0.012503546} + scale: {x: 1.0000052, y: 1.0000025, z: 1} + - name: mixamorig:RightLeg + parentName: mixamorig:RightUpLeg + position: {x: 4.440892e-18, y: 0.4222232, z: 0} + rotation: {x: 0.019863136, y: 0.0010614229, z: 0.053350624, w: 0.9983777} + scale: {x: 1.0000031, y: 1.0000021, z: 1.0000019} + - name: mixamorig:RightFoot + parentName: mixamorig:RightLeg + position: {x: -0, y: 0.38956782, z: 0} + rotation: {x: -0.42334923, y: -0.5705113, z: 0.4392357, w: -0.5498767} + scale: {x: 1.0000018, y: 1.0000029, z: 1.0000002} + - name: mixamorig:RightToeBase + parentName: mixamorig:RightFoot + position: {x: -0, y: 0.12412127, z: 7.105427e-17} + rotation: {x: -0.20302476, y: 0.0002567768, z: 0.0012378544, w: -0.9791728} + scale: {x: 1.0000008, y: 0.9999995, z: 1.0000048} + - name: mixamorig:RightToe_End + parentName: mixamorig:RightToeBase + position: {x: -0, y: 0.060296334, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftUpLeg + parentName: mixamorig:Hips + position: {x: 0.0035344027, y: -0.05244598, z: -0.10175739} + rotation: {x: 0.00008969172, y: 0.007695548, z: 0.9999024, w: -0.011660735} + scale: {x: 1.000008, y: 1.0000052, z: 1} + - name: mixamorig:LeftLeg + parentName: mixamorig:LeftUpLeg + position: {x: -0, y: 0.42220598, z: 0} + rotation: {x: -0.019789819, y: -0.001283939, z: 0.06472981, w: 0.9977058} + scale: {x: 1.0000039, y: 1.000004, z: 1.0000007} + - name: mixamorig:LeftFoot + parentName: mixamorig:LeftLeg + position: {x: -0, y: 0.3907465, z: 0} + rotation: {x: 0.45038655, y: 0.54181254, z: -0.4355745, w: 0.5602374} + scale: {x: 1.0000029, y: 1.0000026, z: 1.0000019} + - name: mixamorig:LeftToeBase + parentName: mixamorig:LeftFoot + position: {x: -0, y: 0.1308076, z: 0} + rotation: {x: 0.19264501, y: 0.00046184653, z: 0.002352476, w: 0.9812656} + scale: {x: 1.000001, y: 0.99999976, z: 1.0000021} + - name: mixamorig:LeftToe_End + parentName: mixamorig:LeftToeBase + position: {x: -0, y: 0.061049044, z: -3.5527136e-17} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:Spine + parentName: mixamorig:Hips + position: {x: -0.0024581861, y: 0.094537124, z: 1.110223e-18} + rotation: {x: -0.0000000011847465, y: 0.000000027988655, z: 0.012997864, w: 0.99991554} + scale: {x: 1, y: 0.9999999, z: 1} + - name: mixamorig:Spine1 + parentName: mixamorig:Spine + position: {x: 8.881784e-18, y: 0.1103307, z: 0} + rotation: {x: 0.000000004352489, y: -0.000000046559435, z: 0.000000027008355, + w: 1} + scale: {x: 1, y: 0.9999999, z: 1} + - name: mixamorig:Spine2 + parentName: mixamorig:Spine1 + position: {x: 8.881784e-18, y: 0.12609196, z: 0} + rotation: {x: 0.000000058169196, y: 0.000000018020504, z: -9.31326e-10, w: 1} + scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001} + - name: mixamorig:Neck + parentName: mixamorig:Spine2 + position: {x: 0.000000007613613, y: 0.14185366, z: -5.551115e-19} + rotation: {x: 0.000000015957266, y: 0.000000016797909, z: -0.012997881, w: 0.99991554} + scale: {x: 0.9999999, y: 1, z: 1} + - name: mixamorig:Head + parentName: mixamorig:Neck + position: {x: -0.0008683859, y: 0.053217314, z: 5.551115e-19} + rotation: {x: -0.000000007200165, y: 0.0000000015158257, z: -0.000000024214387, + w: 1} + scale: {x: 1.0000002, y: 1, z: 1.0000004} + - name: mixamorig:HeadTop_End + parentName: mixamorig:Head + position: {x: -0.0022724792, y: 0.13926437, z: 1.110223e-18} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftShoulder + parentName: mixamorig:Spine2 + position: {x: 0.00020240633, y: 0.13515088, z: -0.04127286} + rotation: {x: -0.0019427737, y: -0.64387274, z: 0.7651283, w: -0.0016816484} + scale: {x: 1.0000032, y: 1.0000012, z: 1.0000011} + - name: mixamorig:LeftArm + parentName: mixamorig:LeftShoulder + position: {x: -0, y: 0.0791558, z: 2.842171e-16} + rotation: {x: -0.052307434, y: 0.0017309872, z: -0.0049234666, w: 0.9986174} + scale: {x: 1.0000021, y: 1.0000029, z: 1.0000021} + - name: mixamorig:LeftForeArm + parentName: mixamorig:LeftArm + position: {x: 4.440892e-18, y: 0.3525264, z: 0} + rotation: {x: -0.03167211, y: 0.0079971645, z: -0.016885435, w: 0.9993237} + scale: {x: 1.0000007, y: 1.0000013, z: 1.0000008} + - name: mixamorig:LeftHand + parentName: mixamorig:LeftForeArm + position: {x: 1.7763568e-17, y: 0.29053873, z: 0} + rotation: {x: -0, y: -2.3283064e-10, z: -1.3096724e-10, w: 1} + scale: {x: 1.0000012, y: 1.0000001, z: 0.99999976} + - name: mixamorig:RightShoulder + parentName: mixamorig:Spine2 + position: {x: -0.0005504584, y: 0.13517044, z: 0.04127286} + rotation: {x: 0.7649505, y: -0.004635785, z: 0.005321747, w: 0.6440504} + scale: {x: 1.0000002, y: 1.0000006, z: 1.0000019} + - name: mixamorig:RightArm + parentName: mixamorig:RightShoulder + position: {x: -0, y: 0.079155795, z: 0} + rotation: {x: -0.04782623, y: -0.0011201247, z: 0.016020544, w: 0.9987266} + scale: {x: 0.9999999, y: 1.0000025, z: 1.0000014} + - name: mixamorig:RightForeArm + parentName: mixamorig:RightArm + position: {x: -0, y: 0.3522625, z: 0} + rotation: {x: -0.03519323, y: -0.0078160325, z: 0.030223342, w: 0.99889284} + scale: {x: 1.0000007, y: 1.0000008, z: 1.0000008} + - name: mixamorig:RightHand + parentName: mixamorig:RightForeArm + position: {x: 8.881784e-18, y: 0.2879794, z: 2.842171e-16} + rotation: {x: -0, y: -0, z: -0, w: 1} + scale: {x: 1.0000001, y: 1.0000005, z: 1.0000005} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 1 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {fileID: 9000000, guid: fa0773caae34843268db7f12c1421ce5, + type: 3} + animationType: 3 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Animations/Locomotion Pack/walking.fbx b/Assets/MarathonEnvs/Animations/Locomotion Pack/walking.fbx new file mode 100644 index 0000000..aa4d7db --- /dev/null +++ b/Assets/MarathonEnvs/Animations/Locomotion Pack/walking.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7615d27edc3cd4d2944716836f95cf1c87491131048b9547e42402ef880952b6 +size 177521 diff --git a/Assets/MarathonEnvs/Animations/Locomotion Pack/walking.fbx.meta b/Assets/MarathonEnvs/Animations/Locomotion Pack/walking.fbx.meta new file mode 100644 index 0000000..9340fa9 --- /dev/null +++ b/Assets/MarathonEnvs/Animations/Locomotion Pack/walking.fbx.meta @@ -0,0 +1,647 @@ +fileFormatVersion: 2 +guid: 3cbf7c59af8d94019b750c41a6942bb0 +ModelImporter: + serializedVersion: 23 + fileIDToRecycleName: + 100000: mixamorig:Head + 100002: mixamorig:HeadTop_End + 100004: mixamorig:Hips + 100006: mixamorig:LeftArm + 100008: mixamorig:LeftFoot + 100010: mixamorig:LeftForeArm + 100012: mixamorig:LeftHand + 100014: mixamorig:LeftLeg + 100016: mixamorig:LeftShoulder + 100018: mixamorig:LeftToe_End + 100020: mixamorig:LeftToeBase + 100022: mixamorig:LeftUpLeg + 100024: mixamorig:Neck + 100026: mixamorig:RightArm + 100028: mixamorig:RightFoot + 100030: mixamorig:RightForeArm + 100032: mixamorig:RightHand + 100034: mixamorig:RightLeg + 100036: mixamorig:RightShoulder + 100038: mixamorig:RightToe_End + 100040: mixamorig:RightToeBase + 100042: mixamorig:RightUpLeg + 100044: mixamorig:Spine + 100046: mixamorig:Spine1 + 100048: mixamorig:Spine2 + 100050: //RootNode + 400000: mixamorig:Head + 400002: mixamorig:HeadTop_End + 400004: mixamorig:Hips + 400006: mixamorig:LeftArm + 400008: mixamorig:LeftFoot + 400010: mixamorig:LeftForeArm + 400012: mixamorig:LeftHand + 400014: mixamorig:LeftLeg + 400016: mixamorig:LeftShoulder + 400018: mixamorig:LeftToe_End + 400020: mixamorig:LeftToeBase + 400022: mixamorig:LeftUpLeg + 400024: mixamorig:Neck + 400026: mixamorig:RightArm + 400028: mixamorig:RightFoot + 400030: mixamorig:RightForeArm + 400032: mixamorig:RightHand + 400034: mixamorig:RightLeg + 400036: mixamorig:RightShoulder + 400038: mixamorig:RightToe_End + 400040: mixamorig:RightToeBase + 400042: mixamorig:RightUpLeg + 400044: mixamorig:Spine + 400046: mixamorig:Spine1 + 400048: mixamorig:Spine2 + 400050: //RootNode + 7400000: walking + 9500000: //RootNode + externalObjects: {} + materials: + importMaterials: 1 + 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: + - serializedVersion: 16 + name: walking + takeName: mixamo.com + firstFrame: 1 + lastFrame: 63 + wrapMode: 0 + orientationOffsetY: 0 + level: 0.07 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 0 + loopBlendOrientation: 1 + loopBlendPositionY: 1 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 1 + keepOriginalPositionY: 0 + keepOriginalPositionXZ: 1 + heightFromFeet: 1 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 3 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 1 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + previousCalculatedGlobalScale: 0.01 + hasPreviousCalculatedGlobalScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + importAnimation: 1 + copyAvatar: 1 + humanDescription: + serializedVersion: 2 + human: + - boneName: mixamorig:Hips + 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: mixamorig:LeftUpLeg + 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: mixamorig:RightUpLeg + 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: mixamorig:LeftLeg + 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: mixamorig:RightLeg + 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: mixamorig:LeftFoot + 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: mixamorig:RightFoot + 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: mixamorig:Spine + 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: mixamorig:Spine1 + 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: mixamorig:Neck + 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: mixamorig:Head + 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: mixamorig:LeftShoulder + 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: mixamorig:RightShoulder + 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: mixamorig:LeftArm + 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: mixamorig:RightArm + 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: mixamorig:LeftForeArm + 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: mixamorig:RightForeArm + 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: mixamorig:LeftHand + 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: mixamorig:RightHand + 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: mixamorig:LeftToeBase + 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: mixamorig:RightToeBase + 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: mixamorig:Spine2 + humanName: UpperChest + 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: Backflip(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: humanoidT + parentName: Backflip(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: butt + parentName: humanoidT + position: {x: 0.028619736, y: 1.0587679, z: 0.002142583} + rotation: {x: 0.7049101, y: -0.026212664, z: 0.013773171, w: 0.70867836} + scale: {x: 1, y: 1, z: 1} + - name: lower_waist + parentName: butt + position: {x: -0.021319339, y: 0.00040355325, z: -0.16483356} + rotation: {x: 0.0031044185, y: 0.0020000096, z: -0.000018799677, w: 0.9999932} + scale: {x: 1, y: 1, z: 1} + - name: abdomen_y + parentName: lower_waist + position: {x: -0.0000723721, y: 0.000012806966, z: -0.0017823265} + rotation: {x: 0.00014829637, y: 0.0018769234, z: -0.02827898, w: 0.9995983} + scale: {x: 1, y: 1.0000005, z: 1.0000002} + - name: upper_waist + parentName: lower_waist + position: {x: -0.0019383731, y: 0.00014567096, z: -0.14226863} + rotation: {x: -0.0004889473, y: 0.007208624, z: -0.028266912, w: 0.9995743} + scale: {x: 1, y: 1, z: 1} + - name: torso + parentName: upper_waist + position: {x: -0.010000003, y: 0, z: -0.12} + rotation: {x: -0, y: -0, z: 5.134097e-10, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: head + parentName: torso + position: {x: 0.00012124982, y: -0.00066340127, z: -0.20378074} + rotation: {x: -0.7070211, y: -0.00034404645, z: -0.00035778637, w: 0.70719224} + scale: {x: 0.18, y: 0.18000005, z: 0.18000005} + - name: left_upper_arm + parentName: torso + position: {x: -0.00805471, y: -0.3095426, z: -0.046386097} + rotation: {x: -0.050138354, y: -0.15586165, z: -0.020825602, w: 0.9862858} + scale: {x: 1, y: 1, z: 1} + - name: left_larm + parentName: left_upper_arm + position: {x: -0.05012562, y: -0.3203213, z: 0.013551146} + rotation: {x: -0.1464947, y: -0.69702035, z: -0.08435819, w: 0.6968398} + scale: {x: 1, y: 1, z: 1} + - name: left_hand + parentName: left_larm + position: {x: -0.000015493482, y: -0.15598094, z: -0.000019282103} + rotation: {x: 0.6276541, y: -0.0002503395, z: 0.628233, w: 0.45975387} + scale: {x: 0.08000005, y: 0.08000001, z: 0.08000004} + - name: left_shoulder2 + parentName: left_upper_arm + position: {x: 0.023122678, y: 0.03264472, z: 0.08629361} + rotation: {x: -0.33152154, y: -0.00000017136335, z: 0.08883171, w: 0.9392563} + scale: {x: 1.0000001, y: 1.0000002, z: 1.0000001} + - name: right_upper_arm + parentName: torso + position: {x: -0.0065300968, y: 0.3054909, z: -0.028148612} + rotation: {x: 0.9821227, y: 0.0047237636, z: 0.14654115, w: -0.118061} + scale: {x: 1, y: 1, z: 1} + - name: right_larm + parentName: right_upper_arm + position: {x: -0.05019078, y: -0.32017505, z: -0.013448662} + rotation: {x: 0.14644656, y: 0.69692343, z: -0.08455098, w: 0.69692343} + scale: {x: 1, y: 1, z: 1} + - name: right_hand + parentName: right_larm + position: {x: -0.00003791973, y: -0.15599604, z: 0.00002259016} + rotation: {x: -0.6275729, y: 0.0003462434, z: 0.6282862, w: 0.459792} + scale: {x: 0.079999946, y: 0.080000006, z: 0.07999995} + - name: right_shoulder2 + parentName: right_upper_arm + position: {x: 0.018984409, y: 0.021175496, z: -0.07061822} + rotation: {x: 0.26393244, y: -0.0016188326, z: 0.07030048, w: 0.9619745} + scale: {x: 1.0000001, y: 1.0000002, z: 1.0000001} + - name: Shoulder + parentName: torso + position: {x: -0.001, y: -0.001, z: -0.075} + rotation: {x: 0.001067541, y: -0.707106, z: 0.707106, w: 0.001067541} + scale: {x: 0.050000057, y: 0.05000001, z: 0.3} + - name: Spine + parentName: butt + position: {x: -0.033886682, y: 0.0012130737, z: -0.29749244} + rotation: {x: 0.010788803, y: -0.0027317873, z: 0.99953836, w: 0.028269844} + scale: {x: 0.05000011, y: 0.05000005, z: 0.6000004} + - name: left_thigh + parentName: humanoidT + position: {x: 0.022163205, y: 0.8473689, z: -0.09560348} + rotation: {x: -0.008197911, y: -0.008591415, z: 0.024315646, w: 0.99963385} + scale: {x: 1, y: 1, z: 1} + - name: left_hip_y + parentName: left_thigh + position: {x: -0.00018789193, y: 0.00050958304, z: 0.0037600398} + rotation: {x: -0.011198115, y: -0.019681891, z: -0.00040819624, w: 0.9997435} + scale: {x: 1, y: 1, z: 1} + - name: left_hip_z + parentName: left_thigh + position: {x: 0.000009631686, y: 0.00050954695, z: 0.0037639162} + rotation: {x: -0.011199301, y: 0.00007027015, z: -0.00004858979, w: 0.9999373} + scale: {x: 1, y: 1, z: 1} + - name: left_shin + parentName: left_thigh + position: {x: 0.0069502685, y: -0.38283935, z: -0.006257828} + rotation: {x: 0.014698038, y: -0.0003006309, z: 0.020444054, w: 0.9996829} + scale: {x: 1, y: 1, z: 1} + - name: left_left_foot + parentName: left_shin + position: {x: -0.04318934, y: -0.23842703, z: -0.026194116} + rotation: {x: 0.033987474, y: -0.015081191, z: -0.73684585, w: 0.6750375} + scale: {x: 1, y: 1, z: 1} + - name: left_ankle_x + parentName: left_left_foot + position: {x: 0.0028956856, y: 0.0075475774, z: -0.000414714} + rotation: {x: -0.0043921056, y: 0.0034287455, z: 0.046523295, w: 0.99890167} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: left_right_foot + parentName: left_left_foot + position: {x: -0.012464729, y: 0.005532327, z: 0.21164574} + rotation: {x: 0.0533601, y: 0.06701755, z: -0.0019481222, w: 0.99632204} + scale: {x: 1, y: 1, z: 1} + - name: LeftLeg__1_ + parentName: left_thigh + position: {x: -0.040999997, y: -0.30899996, z: 0.19} + rotation: {x: 0.009720462, y: 0.71269727, z: -0.7010641, w: -0.02184826} + scale: {x: 0.05000017, y: 0.050000105, z: 0.6000013} + - name: right_thigh + parentName: humanoidT + position: {x: 0.010520758, y: 0.84846205, z: 0.09885497} + rotation: {x: 0.0074896533, y: -0.027545288, z: 0.022941835, w: 0.9993292} + scale: {x: 1, y: 1, z: 1} + - name: right_hip_y + parentName: right_thigh + position: {x: 0.000021025491, y: 0.0009465131, z: -0.0013828418} + rotation: {x: 0.0036728394, y: -0.00037535836, z: -0.00008118107, w: 0.9999932} + scale: {x: 1, y: 1, z: 1} + - name: right_hip_z + parentName: right_thigh + position: {x: -0.0000000049330993, y: 0.0000052593314, z: -0.0013360521} + rotation: {x: 0.003927878, y: 1.3571037e-25, z: -0.000000013460522, w: 0.9999923} + scale: {x: 1, y: 1, z: 1} + - name: right_shin + parentName: right_thigh + position: {x: 0.0068513784, y: -0.38295454, z: 0.006241403} + rotation: {x: -0.014669814, y: 0.0003177673, z: 0.020145983, w: 0.9996894} + scale: {x: 1, y: 1, z: 1} + - name: right_right_foot + parentName: right_shin + position: {x: -0.043461975, y: -0.239265, z: 0.02424076} + rotation: {x: -0.017235627, y: 0.021577317, z: -0.735891, w: 0.6765366} + scale: {x: 1, y: 1, z: 1} + - name: right_ankle_x + parentName: right_right_foot + position: {x: 0.0029095989, y: 0.0074111656, z: 0.00041196973} + rotation: {x: 0.004348083, y: -0.0036474187, z: 0.04522145, w: 0.9989609} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: right_left_foot + parentName: right_right_foot + position: {x: -0.003858014, y: 0.01637404, z: -0.21142484} + rotation: {x: -0.0532643, y: -0.0675717, z: -0.0010922394, w: 0.99629104} + scale: {x: 1, y: 1, z: 1} + - name: RightLeg + parentName: right_thigh + position: {x: -0.043, y: -0.316, z: -0.18299998} + rotation: {x: 0.004674896, y: -0.701414, z: 0.7119129, w: 0.03430193} + scale: {x: 0.05000008, y: 0.05000004, z: 0.6000004} + - name: mixamorig:Hips + parentName: Backflip(Clone) + position: {x: -0.005175761, y: 0.9335466, z: -0.0036196744} + rotation: {x: 0.000000008326478, y: 0.71872675, z: -0.000000014373027, w: 0.69529265} + scale: {x: 1, y: 1.0000002, z: 1} + - name: mixamorig:RightUpLeg + parentName: mixamorig:Hips + position: {x: -0.008040293, y: -0.05244598, z: 0.10175739} + rotation: {x: -0.000096233984, y: -0.007695467, z: 0.99989223, w: -0.012503546} + scale: {x: 1.0000052, y: 1.0000025, z: 1} + - name: mixamorig:RightLeg + parentName: mixamorig:RightUpLeg + position: {x: 4.440892e-18, y: 0.4222232, z: 0} + rotation: {x: 0.019863136, y: 0.0010614229, z: 0.053350624, w: 0.9983777} + scale: {x: 1.0000031, y: 1.0000021, z: 1.0000019} + - name: mixamorig:RightFoot + parentName: mixamorig:RightLeg + position: {x: -0, y: 0.38956782, z: 0} + rotation: {x: -0.42334923, y: -0.5705113, z: 0.4392357, w: -0.5498767} + scale: {x: 1.0000018, y: 1.0000029, z: 1.0000002} + - name: mixamorig:RightToeBase + parentName: mixamorig:RightFoot + position: {x: -0, y: 0.12412127, z: 7.105427e-17} + rotation: {x: -0.20302476, y: 0.0002567768, z: 0.0012378544, w: -0.9791728} + scale: {x: 1.0000008, y: 0.9999995, z: 1.0000048} + - name: mixamorig:RightToe_End + parentName: mixamorig:RightToeBase + position: {x: -0, y: 0.060296334, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftUpLeg + parentName: mixamorig:Hips + position: {x: 0.0035344027, y: -0.05244598, z: -0.10175739} + rotation: {x: 0.00008969172, y: 0.007695548, z: 0.9999024, w: -0.011660735} + scale: {x: 1.000008, y: 1.0000052, z: 1} + - name: mixamorig:LeftLeg + parentName: mixamorig:LeftUpLeg + position: {x: -0, y: 0.42220598, z: 0} + rotation: {x: -0.019789819, y: -0.001283939, z: 0.06472981, w: 0.9977058} + scale: {x: 1.0000039, y: 1.000004, z: 1.0000007} + - name: mixamorig:LeftFoot + parentName: mixamorig:LeftLeg + position: {x: -0, y: 0.3907465, z: 0} + rotation: {x: 0.45038655, y: 0.54181254, z: -0.4355745, w: 0.5602374} + scale: {x: 1.0000029, y: 1.0000026, z: 1.0000019} + - name: mixamorig:LeftToeBase + parentName: mixamorig:LeftFoot + position: {x: -0, y: 0.1308076, z: 0} + rotation: {x: 0.19264501, y: 0.00046184653, z: 0.002352476, w: 0.9812656} + scale: {x: 1.000001, y: 0.99999976, z: 1.0000021} + - name: mixamorig:LeftToe_End + parentName: mixamorig:LeftToeBase + position: {x: -0, y: 0.061049044, z: -3.5527136e-17} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:Spine + parentName: mixamorig:Hips + position: {x: -0.0024581861, y: 0.094537124, z: 1.110223e-18} + rotation: {x: -0.0000000011847465, y: 0.000000027988655, z: 0.012997864, w: 0.99991554} + scale: {x: 1, y: 0.9999999, z: 1} + - name: mixamorig:Spine1 + parentName: mixamorig:Spine + position: {x: 8.881784e-18, y: 0.1103307, z: 0} + rotation: {x: 0.000000004352489, y: -0.000000046559435, z: 0.000000027008355, + w: 1} + scale: {x: 1, y: 0.9999999, z: 1} + - name: mixamorig:Spine2 + parentName: mixamorig:Spine1 + position: {x: 8.881784e-18, y: 0.12609196, z: 0} + rotation: {x: 0.000000058169196, y: 0.000000018020504, z: -9.31326e-10, w: 1} + scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001} + - name: mixamorig:Neck + parentName: mixamorig:Spine2 + position: {x: 0.000000007613613, y: 0.14185366, z: -5.551115e-19} + rotation: {x: 0.000000015957266, y: 0.000000016797909, z: -0.012997881, w: 0.99991554} + scale: {x: 0.9999999, y: 1, z: 1} + - name: mixamorig:Head + parentName: mixamorig:Neck + position: {x: -0.0008683859, y: 0.053217314, z: 5.551115e-19} + rotation: {x: -0.000000007200165, y: 0.0000000015158257, z: -0.000000024214387, + w: 1} + scale: {x: 1.0000002, y: 1, z: 1.0000004} + - name: mixamorig:HeadTop_End + parentName: mixamorig:Head + position: {x: -0.0022724792, y: 0.13926437, z: 1.110223e-18} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftShoulder + parentName: mixamorig:Spine2 + position: {x: 0.00020240633, y: 0.13515088, z: -0.04127286} + rotation: {x: -0.0019427737, y: -0.64387274, z: 0.7651283, w: -0.0016816484} + scale: {x: 1.0000032, y: 1.0000012, z: 1.0000011} + - name: mixamorig:LeftArm + parentName: mixamorig:LeftShoulder + position: {x: -0, y: 0.0791558, z: 2.842171e-16} + rotation: {x: -0.052307434, y: 0.0017309872, z: -0.0049234666, w: 0.9986174} + scale: {x: 1.0000021, y: 1.0000029, z: 1.0000021} + - name: mixamorig:LeftForeArm + parentName: mixamorig:LeftArm + position: {x: 4.440892e-18, y: 0.3525264, z: 0} + rotation: {x: -0.03167211, y: 0.0079971645, z: -0.016885435, w: 0.9993237} + scale: {x: 1.0000007, y: 1.0000013, z: 1.0000008} + - name: mixamorig:LeftHand + parentName: mixamorig:LeftForeArm + position: {x: 1.7763568e-17, y: 0.29053873, z: 0} + rotation: {x: -0, y: -2.3283064e-10, z: -1.3096724e-10, w: 1} + scale: {x: 1.0000012, y: 1.0000001, z: 0.99999976} + - name: mixamorig:RightShoulder + parentName: mixamorig:Spine2 + position: {x: -0.0005504584, y: 0.13517044, z: 0.04127286} + rotation: {x: 0.7649505, y: -0.004635785, z: 0.005321747, w: 0.6440504} + scale: {x: 1.0000002, y: 1.0000006, z: 1.0000019} + - name: mixamorig:RightArm + parentName: mixamorig:RightShoulder + position: {x: -0, y: 0.079155795, z: 0} + rotation: {x: -0.04782623, y: -0.0011201247, z: 0.016020544, w: 0.9987266} + scale: {x: 0.9999999, y: 1.0000025, z: 1.0000014} + - name: mixamorig:RightForeArm + parentName: mixamorig:RightArm + position: {x: -0, y: 0.3522625, z: 0} + rotation: {x: -0.03519323, y: -0.0078160325, z: 0.030223342, w: 0.99889284} + scale: {x: 1.0000007, y: 1.0000008, z: 1.0000008} + - name: mixamorig:RightHand + parentName: mixamorig:RightForeArm + position: {x: 8.881784e-18, y: 0.2879794, z: 2.842171e-16} + rotation: {x: -0, y: -0, z: -0, w: 1} + scale: {x: 1.0000001, y: 1.0000005, z: 1.0000005} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 1 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {fileID: 9000000, guid: fa0773caae34843268db7f12c1421ce5, + type: 3} + animationType: 3 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Animations/MarathonManBackflip.fbx b/Assets/MarathonEnvs/Animations/MarathonManBackflip.fbx new file mode 100644 index 0000000..ebac5d1 --- /dev/null +++ b/Assets/MarathonEnvs/Animations/MarathonManBackflip.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e4af86131a9737bfc2713494382d9948b3a289673a68120e2dc5766adc7a844 +size 1705872 diff --git a/Assets/MarathonEnvs/Animations/MarathonManBackflip.fbx.meta b/Assets/MarathonEnvs/Animations/MarathonManBackflip.fbx.meta new file mode 100644 index 0000000..2f00cb6 --- /dev/null +++ b/Assets/MarathonEnvs/Animations/MarathonManBackflip.fbx.meta @@ -0,0 +1,760 @@ +fileFormatVersion: 2 +guid: fa0773caae34843268db7f12c1421ce5 +ModelImporter: + serializedVersion: 23 + fileIDToRecycleName: + 100000: abdomen_y + 100002: //RootNode + 100004: butt + 100006: head + 100008: humanoidT + 100010: left_ankle_x + 100012: left_hand + 100014: left_hip_y + 100016: left_hip_z + 100018: left_larm + 100020: left_left_foot + 100022: left_right_foot + 100024: left_shin + 100026: left_shoulder2 + 100028: left_thigh + 100030: left_upper_arm + 100032: LeftLeg__1_ + 100034: lower_waist + 100036: mixamorig:Head + 100038: mixamorig:HeadTop_End + 100040: mixamorig:Hips + 100042: mixamorig:LeftArm + 100044: mixamorig:LeftFoot + 100046: mixamorig:LeftForeArm + 100048: mixamorig:LeftHand + 100050: mixamorig:LeftLeg + 100052: mixamorig:LeftShoulder + 100054: mixamorig:LeftToe_End + 100056: mixamorig:LeftToeBase + 100058: mixamorig:LeftUpLeg + 100060: mixamorig:Neck + 100062: mixamorig:RightArm + 100064: mixamorig:RightFoot + 100066: mixamorig:RightForeArm + 100068: mixamorig:RightHand + 100070: mixamorig:RightLeg + 100072: mixamorig:RightShoulder + 100074: mixamorig:RightToe_End + 100076: mixamorig:RightToeBase + 100078: mixamorig:RightUpLeg + 100080: mixamorig:Spine + 100082: mixamorig:Spine1 + 100084: mixamorig:Spine2 + 100086: right_ankle_x + 100088: right_hand + 100090: right_hip_y + 100092: right_hip_z + 100094: right_larm + 100096: right_left_foot + 100098: right_right_foot + 100100: right_shin + 100102: right_shoulder2 + 100104: right_thigh + 100106: right_upper_arm + 100108: RightLeg + 100110: Shoulder + 100112: Spine + 100114: torso + 100116: upper_waist + 400000: abdomen_y + 400002: //RootNode + 400004: butt + 400006: head + 400008: humanoidT + 400010: left_ankle_x + 400012: left_hand + 400014: left_hip_y + 400016: left_hip_z + 400018: left_larm + 400020: left_left_foot + 400022: left_right_foot + 400024: left_shin + 400026: left_shoulder2 + 400028: left_thigh + 400030: left_upper_arm + 400032: LeftLeg__1_ + 400034: lower_waist + 400036: mixamorig:Head + 400038: mixamorig:HeadTop_End + 400040: mixamorig:Hips + 400042: mixamorig:LeftArm + 400044: mixamorig:LeftFoot + 400046: mixamorig:LeftForeArm + 400048: mixamorig:LeftHand + 400050: mixamorig:LeftLeg + 400052: mixamorig:LeftShoulder + 400054: mixamorig:LeftToe_End + 400056: mixamorig:LeftToeBase + 400058: mixamorig:LeftUpLeg + 400060: mixamorig:Neck + 400062: mixamorig:RightArm + 400064: mixamorig:RightFoot + 400066: mixamorig:RightForeArm + 400068: mixamorig:RightHand + 400070: mixamorig:RightLeg + 400072: mixamorig:RightShoulder + 400074: mixamorig:RightToe_End + 400076: mixamorig:RightToeBase + 400078: mixamorig:RightUpLeg + 400080: mixamorig:Spine + 400082: mixamorig:Spine1 + 400084: mixamorig:Spine2 + 400086: right_ankle_x + 400088: right_hand + 400090: right_hip_y + 400092: right_hip_z + 400094: right_larm + 400096: right_left_foot + 400098: right_right_foot + 400100: right_shin + 400102: right_shoulder2 + 400104: right_thigh + 400106: right_upper_arm + 400108: RightLeg + 400110: Shoulder + 400112: Spine + 400114: torso + 400116: upper_waist + 2100000: MarathonMat + 2100002: Default_Line + 4300000: butt + 4300002: lower_waist + 4300004: upper_waist + 4300006: torso + 4300008: head + 4300010: left_upper_arm + 4300012: left_larm + 4300014: left_hand + 4300016: right_upper_arm + 4300018: right_larm + 4300020: right_hand + 4300022: Shoulder + 4300024: Spine + 4300026: left_thigh + 4300028: left_shin + 4300030: left_left_foot + 4300032: left_right_foot + 4300034: LeftLeg__1_ + 4300036: right_thigh + 4300038: right_shin + 4300040: right_right_foot + 4300042: right_left_foot + 4300044: RightLeg + 7400000: MarathonManBackflip + 9500000: //RootNode + 13700000: butt + 13700002: head + 13700004: left_hand + 13700006: left_larm + 13700008: left_left_foot + 13700010: left_right_foot + 13700012: left_shin + 13700014: left_thigh + 13700016: left_upper_arm + 13700018: LeftLeg__1_ + 13700020: lower_waist + 13700022: right_hand + 13700024: right_larm + 13700026: right_left_foot + 13700028: right_right_foot + 13700030: right_shin + 13700032: right_thigh + 13700034: right_upper_arm + 13700036: RightLeg + 13700038: Shoulder + 13700040: Spine + 13700042: torso + 13700044: upper_waist + externalObjects: {} + materials: + importMaterials: 1 + 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: + - serializedVersion: 16 + name: MarathonManBackflip + takeName: mixamo.com + firstFrame: 0 + lastFrame: 129 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 0 + loopBlend: 0 + loopBlendOrientation: 1 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 3 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + previousCalculatedGlobalScale: 0.01 + hasPreviousCalculatedGlobalScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: + - boneName: mixamorig:Hips + 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: mixamorig:LeftUpLeg + 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: mixamorig:RightUpLeg + 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: mixamorig:LeftLeg + 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: mixamorig:RightLeg + 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: mixamorig:LeftFoot + 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: mixamorig:RightFoot + 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: mixamorig:Spine + 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: mixamorig:Spine1 + 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: mixamorig:Neck + 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: mixamorig:Head + 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: mixamorig:LeftShoulder + 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: mixamorig:RightShoulder + 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: mixamorig:LeftArm + 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: mixamorig:RightArm + 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: mixamorig:LeftForeArm + 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: mixamorig:RightForeArm + 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: mixamorig:LeftHand + 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: mixamorig:RightHand + 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: mixamorig:LeftToeBase + 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: mixamorig:RightToeBase + 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: mixamorig:Spine2 + humanName: UpperChest + 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: Backflip(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: humanoidT + parentName: Backflip(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: butt + parentName: humanoidT + position: {x: 0.028619736, y: 1.0587679, z: 0.002142583} + rotation: {x: 0.7049101, y: -0.026212664, z: 0.013773171, w: 0.70867836} + scale: {x: 1, y: 1, z: 1} + - name: lower_waist + parentName: butt + position: {x: -0.021319339, y: 0.00040355325, z: -0.16483356} + rotation: {x: 0.0031044185, y: 0.0020000096, z: -0.000018799677, w: 0.9999932} + scale: {x: 1, y: 1, z: 1} + - name: abdomen_y + parentName: lower_waist + position: {x: -0.0000723721, y: 0.000012806966, z: -0.0017823265} + rotation: {x: 0.00014829637, y: 0.0018769234, z: -0.02827898, w: 0.9995983} + scale: {x: 1, y: 1.0000005, z: 1.0000002} + - name: upper_waist + parentName: lower_waist + position: {x: -0.0019383731, y: 0.00014567096, z: -0.14226863} + rotation: {x: -0.0004889473, y: 0.007208624, z: -0.028266912, w: 0.9995743} + scale: {x: 1, y: 1, z: 1} + - name: torso + parentName: upper_waist + position: {x: -0.010000003, y: 0, z: -0.12} + rotation: {x: -0, y: -0, z: 5.134097e-10, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: head + parentName: torso + position: {x: 0.00012124982, y: -0.00066340127, z: -0.20378074} + rotation: {x: -0.7070211, y: -0.00034404645, z: -0.00035778637, w: 0.70719224} + scale: {x: 0.18, y: 0.18000005, z: 0.18000005} + - name: left_upper_arm + parentName: torso + position: {x: -0.00805471, y: -0.3095426, z: -0.046386097} + rotation: {x: -0.050138354, y: -0.15586165, z: -0.020825602, w: 0.9862858} + scale: {x: 1, y: 1, z: 1} + - name: left_larm + parentName: left_upper_arm + position: {x: -0.05012562, y: -0.3203213, z: 0.013551146} + rotation: {x: -0.1464947, y: -0.69702035, z: -0.08435819, w: 0.6968398} + scale: {x: 1, y: 1, z: 1} + - name: left_hand + parentName: left_larm + position: {x: -0.000015493482, y: -0.15598094, z: -0.000019282103} + rotation: {x: 0.6276541, y: -0.0002503395, z: 0.628233, w: 0.45975387} + scale: {x: 0.08000005, y: 0.08000001, z: 0.08000004} + - name: left_shoulder2 + parentName: left_upper_arm + position: {x: 0.023122678, y: 0.03264472, z: 0.08629361} + rotation: {x: -0.33152154, y: -0.00000017136335, z: 0.08883171, w: 0.9392563} + scale: {x: 1.0000001, y: 1.0000002, z: 1.0000001} + - name: right_upper_arm + parentName: torso + position: {x: -0.0065300968, y: 0.3054909, z: -0.028148612} + rotation: {x: 0.9821227, y: 0.0047237636, z: 0.14654115, w: -0.118061} + scale: {x: 1, y: 1, z: 1} + - name: right_larm + parentName: right_upper_arm + position: {x: -0.05019078, y: -0.32017505, z: -0.013448662} + rotation: {x: 0.14644656, y: 0.69692343, z: -0.08455098, w: 0.69692343} + scale: {x: 1, y: 1, z: 1} + - name: right_hand + parentName: right_larm + position: {x: -0.00003791973, y: -0.15599604, z: 0.00002259016} + rotation: {x: -0.6275729, y: 0.0003462434, z: 0.6282862, w: 0.459792} + scale: {x: 0.079999946, y: 0.080000006, z: 0.07999995} + - name: right_shoulder2 + parentName: right_upper_arm + position: {x: 0.018984409, y: 0.021175496, z: -0.07061822} + rotation: {x: 0.26393244, y: -0.0016188326, z: 0.07030048, w: 0.9619745} + scale: {x: 1.0000001, y: 1.0000002, z: 1.0000001} + - name: Shoulder + parentName: torso + position: {x: -0.001, y: -0.001, z: -0.075} + rotation: {x: 0.001067541, y: -0.707106, z: 0.707106, w: 0.001067541} + scale: {x: 0.050000057, y: 0.05000001, z: 0.3} + - name: Spine + parentName: butt + position: {x: -0.033886682, y: 0.0012130737, z: -0.29749244} + rotation: {x: 0.010788803, y: -0.0027317873, z: 0.99953836, w: 0.028269844} + scale: {x: 0.05000011, y: 0.05000005, z: 0.6000004} + - name: left_thigh + parentName: humanoidT + position: {x: 0.022163205, y: 0.8473689, z: -0.09560348} + rotation: {x: -0.008197911, y: -0.008591415, z: 0.024315646, w: 0.99963385} + scale: {x: 1, y: 1, z: 1} + - name: left_hip_y + parentName: left_thigh + position: {x: -0.00018789193, y: 0.00050958304, z: 0.0037600398} + rotation: {x: -0.011198115, y: -0.019681891, z: -0.00040819624, w: 0.9997435} + scale: {x: 1, y: 1, z: 1} + - name: left_hip_z + parentName: left_thigh + position: {x: 0.000009631686, y: 0.00050954695, z: 0.0037639162} + rotation: {x: -0.011199301, y: 0.00007027015, z: -0.00004858979, w: 0.9999373} + scale: {x: 1, y: 1, z: 1} + - name: left_shin + parentName: left_thigh + position: {x: 0.0069502685, y: -0.38283935, z: -0.006257828} + rotation: {x: 0.014698038, y: -0.0003006309, z: 0.020444054, w: 0.9996829} + scale: {x: 1, y: 1, z: 1} + - name: left_left_foot + parentName: left_shin + position: {x: -0.04318934, y: -0.23842703, z: -0.026194116} + rotation: {x: 0.033987474, y: -0.015081191, z: -0.73684585, w: 0.6750375} + scale: {x: 1, y: 1, z: 1} + - name: left_ankle_x + parentName: left_left_foot + position: {x: 0.0028956856, y: 0.0075475774, z: -0.000414714} + rotation: {x: -0.0043921056, y: 0.0034287455, z: 0.046523295, w: 0.99890167} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: left_right_foot + parentName: left_left_foot + position: {x: -0.012464729, y: 0.005532327, z: 0.21164574} + rotation: {x: 0.0533601, y: 0.06701755, z: -0.0019481222, w: 0.99632204} + scale: {x: 1, y: 1, z: 1} + - name: LeftLeg__1_ + parentName: left_thigh + position: {x: -0.040999997, y: -0.30899996, z: 0.19} + rotation: {x: 0.009720462, y: 0.71269727, z: -0.7010641, w: -0.02184826} + scale: {x: 0.05000017, y: 0.050000105, z: 0.6000013} + - name: right_thigh + parentName: humanoidT + position: {x: 0.010520758, y: 0.84846205, z: 0.09885497} + rotation: {x: 0.0074896533, y: -0.027545288, z: 0.022941835, w: 0.9993292} + scale: {x: 1, y: 1, z: 1} + - name: right_hip_y + parentName: right_thigh + position: {x: 0.000021025491, y: 0.0009465131, z: -0.0013828418} + rotation: {x: 0.0036728394, y: -0.00037535836, z: -0.00008118107, w: 0.9999932} + scale: {x: 1, y: 1, z: 1} + - name: right_hip_z + parentName: right_thigh + position: {x: -0.0000000049330993, y: 0.0000052593314, z: -0.0013360521} + rotation: {x: 0.003927878, y: 1.3571037e-25, z: -0.000000013460522, w: 0.9999923} + scale: {x: 1, y: 1, z: 1} + - name: right_shin + parentName: right_thigh + position: {x: 0.0068513784, y: -0.38295454, z: 0.006241403} + rotation: {x: -0.014669814, y: 0.0003177673, z: 0.020145983, w: 0.9996894} + scale: {x: 1, y: 1, z: 1} + - name: right_right_foot + parentName: right_shin + position: {x: -0.043461975, y: -0.239265, z: 0.02424076} + rotation: {x: -0.017235627, y: 0.021577317, z: -0.735891, w: 0.6765366} + scale: {x: 1, y: 1, z: 1} + - name: right_ankle_x + parentName: right_right_foot + position: {x: 0.0029095989, y: 0.0074111656, z: 0.00041196973} + rotation: {x: 0.004348083, y: -0.0036474187, z: 0.04522145, w: 0.9989609} + scale: {x: 1.0000002, y: 1.0000002, z: 1} + - name: right_left_foot + parentName: right_right_foot + position: {x: -0.003858014, y: 0.01637404, z: -0.21142484} + rotation: {x: -0.0532643, y: -0.0675717, z: -0.0010922394, w: 0.99629104} + scale: {x: 1, y: 1, z: 1} + - name: RightLeg + parentName: right_thigh + position: {x: -0.043, y: -0.316, z: -0.18299998} + rotation: {x: 0.004674896, y: -0.701414, z: 0.7119129, w: 0.03430193} + scale: {x: 0.05000008, y: 0.05000004, z: 0.6000004} + - name: mixamorig:Hips + parentName: Backflip(Clone) + position: {x: -0.005175761, y: 0.9335466, z: -0.0036196744} + rotation: {x: 0.000000008326478, y: 0.71872675, z: -0.000000014373027, w: 0.69529265} + scale: {x: 1, y: 1.0000002, z: 1} + - name: mixamorig:RightUpLeg + parentName: mixamorig:Hips + position: {x: -0.008040293, y: -0.05244598, z: 0.10175739} + rotation: {x: -0.000096233984, y: -0.007695467, z: 0.99989223, w: -0.012503546} + scale: {x: 1.0000052, y: 1.0000025, z: 1} + - name: mixamorig:RightLeg + parentName: mixamorig:RightUpLeg + position: {x: 4.440892e-18, y: 0.4222232, z: 0} + rotation: {x: 0.019863136, y: 0.0010614229, z: 0.053350624, w: 0.9983777} + scale: {x: 1.0000031, y: 1.0000021, z: 1.0000019} + - name: mixamorig:RightFoot + parentName: mixamorig:RightLeg + position: {x: -0, y: 0.38956782, z: 0} + rotation: {x: -0.42334923, y: -0.5705113, z: 0.4392357, w: -0.5498767} + scale: {x: 1.0000018, y: 1.0000029, z: 1.0000002} + - name: mixamorig:RightToeBase + parentName: mixamorig:RightFoot + position: {x: -0, y: 0.12412127, z: 7.105427e-17} + rotation: {x: -0.20302476, y: 0.0002567768, z: 0.0012378544, w: -0.9791728} + scale: {x: 1.0000008, y: 0.9999995, z: 1.0000048} + - name: mixamorig:RightToe_End + parentName: mixamorig:RightToeBase + position: {x: -0, y: 0.060296334, z: 0} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftUpLeg + parentName: mixamorig:Hips + position: {x: 0.0035344027, y: -0.05244598, z: -0.10175739} + rotation: {x: 0.00008969172, y: 0.007695548, z: 0.9999024, w: -0.011660735} + scale: {x: 1.000008, y: 1.0000052, z: 1} + - name: mixamorig:LeftLeg + parentName: mixamorig:LeftUpLeg + position: {x: -0, y: 0.42220598, z: 0} + rotation: {x: -0.019789819, y: -0.001283939, z: 0.06472981, w: 0.9977058} + scale: {x: 1.0000039, y: 1.000004, z: 1.0000007} + - name: mixamorig:LeftFoot + parentName: mixamorig:LeftLeg + position: {x: -0, y: 0.3907465, z: 0} + rotation: {x: 0.45038655, y: 0.54181254, z: -0.4355745, w: 0.5602374} + scale: {x: 1.0000029, y: 1.0000026, z: 1.0000019} + - name: mixamorig:LeftToeBase + parentName: mixamorig:LeftFoot + position: {x: -0, y: 0.1308076, z: 0} + rotation: {x: 0.19264501, y: 0.00046184653, z: 0.002352476, w: 0.9812656} + scale: {x: 1.000001, y: 0.99999976, z: 1.0000021} + - name: mixamorig:LeftToe_End + parentName: mixamorig:LeftToeBase + position: {x: -0, y: 0.061049044, z: -3.5527136e-17} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:Spine + parentName: mixamorig:Hips + position: {x: -0.0024581861, y: 0.094537124, z: 1.110223e-18} + rotation: {x: -0.0000000011847465, y: 0.000000027988655, z: 0.012997864, w: 0.99991554} + scale: {x: 1, y: 0.9999999, z: 1} + - name: mixamorig:Spine1 + parentName: mixamorig:Spine + position: {x: 8.881784e-18, y: 0.1103307, z: 0} + rotation: {x: 0.000000004352489, y: -0.000000046559435, z: 0.000000027008355, + w: 1} + scale: {x: 1, y: 0.9999999, z: 1} + - name: mixamorig:Spine2 + parentName: mixamorig:Spine1 + position: {x: 8.881784e-18, y: 0.12609196, z: 0} + rotation: {x: 0.000000058169196, y: 0.000000018020504, z: -9.31326e-10, w: 1} + scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001} + - name: mixamorig:Neck + parentName: mixamorig:Spine2 + position: {x: 0.000000007613613, y: 0.14185366, z: -5.551115e-19} + rotation: {x: 0.000000015957266, y: 0.000000016797909, z: -0.012997881, w: 0.99991554} + scale: {x: 0.9999999, y: 1, z: 1} + - name: mixamorig:Head + parentName: mixamorig:Neck + position: {x: -0.0008683859, y: 0.053217314, z: 5.551115e-19} + rotation: {x: -0.000000007200165, y: 0.0000000015158257, z: -0.000000024214387, + w: 1} + scale: {x: 1.0000002, y: 1, z: 1.0000004} + - name: mixamorig:HeadTop_End + parentName: mixamorig:Head + position: {x: -0.0022724792, y: 0.13926437, z: 1.110223e-18} + rotation: {x: 0, y: -0, z: -0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: mixamorig:LeftShoulder + parentName: mixamorig:Spine2 + position: {x: 0.00020240633, y: 0.13515088, z: -0.04127286} + rotation: {x: -0.0019427737, y: -0.64387274, z: 0.7651283, w: -0.0016816484} + scale: {x: 1.0000032, y: 1.0000012, z: 1.0000011} + - name: mixamorig:LeftArm + parentName: mixamorig:LeftShoulder + position: {x: -0, y: 0.0791558, z: 2.842171e-16} + rotation: {x: -0.052307434, y: 0.0017309872, z: -0.0049234666, w: 0.9986174} + scale: {x: 1.0000021, y: 1.0000029, z: 1.0000021} + - name: mixamorig:LeftForeArm + parentName: mixamorig:LeftArm + position: {x: 4.440892e-18, y: 0.3525264, z: 0} + rotation: {x: -0.03167211, y: 0.0079971645, z: -0.016885435, w: 0.9993237} + scale: {x: 1.0000007, y: 1.0000013, z: 1.0000008} + - name: mixamorig:LeftHand + parentName: mixamorig:LeftForeArm + position: {x: 1.7763568e-17, y: 0.29053873, z: 0} + rotation: {x: -0, y: -2.3283064e-10, z: -1.3096724e-10, w: 1} + scale: {x: 1.0000012, y: 1.0000001, z: 0.99999976} + - name: mixamorig:RightShoulder + parentName: mixamorig:Spine2 + position: {x: -0.0005504584, y: 0.13517044, z: 0.04127286} + rotation: {x: 0.7649505, y: -0.004635785, z: 0.005321747, w: 0.6440504} + scale: {x: 1.0000002, y: 1.0000006, z: 1.0000019} + - name: mixamorig:RightArm + parentName: mixamorig:RightShoulder + position: {x: -0, y: 0.079155795, z: 0} + rotation: {x: -0.04782623, y: -0.0011201247, z: 0.016020544, w: 0.9987266} + scale: {x: 0.9999999, y: 1.0000025, z: 1.0000014} + - name: mixamorig:RightForeArm + parentName: mixamorig:RightArm + position: {x: -0, y: 0.3522625, z: 0} + rotation: {x: -0.03519323, y: -0.0078160325, z: 0.030223342, w: 0.99889284} + scale: {x: 1.0000007, y: 1.0000008, z: 1.0000008} + - name: mixamorig:RightHand + parentName: mixamorig:RightForeArm + position: {x: 8.881784e-18, y: 0.2879794, z: 2.842171e-16} + rotation: {x: -0, y: -0, z: -0, w: 1} + scale: {x: 1.0000001, y: 1.0000005, z: 1.0000005} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 1 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 3 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Animations/MocapAnimator.controller b/Assets/MarathonEnvs/Animations/MocapAnimator.controller new file mode 100644 index 0000000..9aa3839 --- /dev/null +++ b/Assets/MarathonEnvs/Animations/MocapAnimator.controller @@ -0,0 +1,544 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: MocapAnimator + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: forwardVelocity + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: angleDeltaRad + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: verticalVelocity + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: onGround + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: backflip + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 1107058548493582758} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!206 &206157808458599786 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BlendTree + m_Childs: [] + m_BlendParameter: forwardVelocity + m_BlendParameterY: forwardVelocity + m_MinThreshold: 0 + m_MaxThreshold: 1 + m_UseAutomaticThresholds: 1 + m_NormalizedBlendValues: 0 + m_BlendType: 0 +--- !u!206 &206664786030821926 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Blend Tree + m_Childs: [] + m_BlendParameter: Blend + m_BlendParameterY: Blend + m_MinThreshold: 0 + m_MaxThreshold: 1 + m_UseAutomaticThresholds: 1 + m_NormalizedBlendValues: 0 + m_BlendType: 0 +--- !u!206 &206696511503391770 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Blend Tree + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: 7400002, guid: 9c569166600d641efacce54b9444fdd9, type: 3} + m_Threshold: -5 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: forwardVelocity + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400004, guid: 9c569166600d641efacce54b9444fdd9, type: 3} + m_Threshold: 5 + m_Position: {x: 0, y: 0} + m_TimeScale: 0.1 + m_CycleOffset: 0 + m_DirectBlendParameter: forwardVelocity + m_Mirror: 0 + m_BlendParameter: verticalVelocity + m_BlendParameterY: forwardVelocity + m_MinThreshold: -5 + m_MaxThreshold: 5 + m_UseAutomaticThresholds: 0 + m_NormalizedBlendValues: 0 + m_BlendType: 0 +--- !u!206 &206719268591965826 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Blend Tree + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 3cbf7c59af8d94019b750c41a6942bb0, type: 3} + m_Threshold: 0 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: vertical + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 7cebe89af92024b3aa1f5ca92436b252, type: 3} + m_Threshold: 1 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: forwardVelocity + m_Mirror: 0 + m_BlendParameter: forwardVelocity + m_BlendParameterY: vertical + m_MinThreshold: 0 + m_MaxThreshold: 1 + m_UseAutomaticThresholds: 0 + m_NormalizedBlendValues: 0 + m_BlendType: 0 +--- !u!1101 &1101033215877470050 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102989415181925958} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.88372093 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101237206443710754 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 2 + m_ConditionEvent: onGround + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102338459823081104} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.7289157 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101253284072432862 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: onGround + m_EventTreshold: 0 + - m_ConditionMode: 4 + m_ConditionEvent: forwardVelocity + m_EventTreshold: 0.1 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102989415181925958} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.1 + m_TransitionOffset: 0 + m_ExitTime: 0.9 + m_HasExitTime: 0 + m_HasFixedDuration: 0 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101280419691705128 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 3 + m_ConditionEvent: forwardVelocity + m_EventTreshold: 0.1 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102421071454505862} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.94 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101426064788353138 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: backflip + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102321781453514832} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.24999994 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101440308263575544 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 3 + m_ConditionEvent: forwardVelocity + m_EventTreshold: 0.1 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102421071454505862} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.88372093 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101554019461341286 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 3 + m_ConditionEvent: forwardVelocity + m_EventTreshold: 0.1 + - m_ConditionMode: 1 + m_ConditionEvent: onGround + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102421071454505862} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.1 + m_TransitionOffset: 0 + m_ExitTime: 0.9 + m_HasExitTime: 0 + m_HasFixedDuration: 0 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101623484301534992 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 4 + m_ConditionEvent: forwardVelocity + m_EventTreshold: 0.1 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102989415181925958} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.75 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101863413995211506 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 2 + m_ConditionEvent: onGround + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102338459823081104} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.97 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101997494127427236 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: backflip + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102321781453514832} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0.017237527 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &1102321781453514832 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Backflip + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101033215877470050} + - {fileID: 1101440308263575544} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 1 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: fa0773caae34843268db7f12c1421ce5, type: 3} + m_Tag: + m_SpeedParameter: forwardVelocity + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &1102338459823081104 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Blend Tree + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101253284072432862} + - {fileID: 1101554019461341286} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 1 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 206696511503391770} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &1102421071454505862 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Forward + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101623484301534992} + - {fileID: 1101237206443710754} + - {fileID: 1101426064788353138} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 1 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 206719268591965826} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &1102989415181925958 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Idle + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101280419691705128} + - {fileID: 1101863413995211506} + - {fileID: 1101997494127427236} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 1 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 2d10b50dc653e4052a4407c743c3da5c, type: 3} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &1107058548493582758 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 1102989415181925958} + m_Position: {x: -120, y: 140, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1102421071454505862} + m_Position: {x: -180, y: -12, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1102338459823081104} + m_Position: {x: 110, y: 20, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1102321781453514832} + m_Position: {x: -384, y: 72, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 48, y: -60, z: 0} + m_EntryPosition: {x: 36, y: 204, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 1102989415181925958} diff --git a/Assets/MarathonEnvs/Animations/MocapAnimator.controller.meta b/Assets/MarathonEnvs/Animations/MocapAnimator.controller.meta new file mode 100644 index 0000000..1dc2985 --- /dev/null +++ b/Assets/MarathonEnvs/Animations/MocapAnimator.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 302de0a71ea44470782418460ee6b832 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Environments.meta b/Assets/MarathonEnvs/Environments.meta new file mode 100644 index 0000000..107e994 --- /dev/null +++ b/Assets/MarathonEnvs/Environments.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7208111bcfe6fa84c83030227186e55e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Environments/DReCon-v0.prefab b/Assets/MarathonEnvs/Environments/DReCon-v0.prefab new file mode 100644 index 0000000..fd144b3 --- /dev/null +++ b/Assets/MarathonEnvs/Environments/DReCon-v0.prefab @@ -0,0 +1,821 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3989728765861935376 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5601182598464780559} + - component: {fileID: 1578564315674380699} + m_Layer: 0 + m_Name: Input + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5601182598464780559 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3989728765861935376} + serializedVersion: 2 + 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: 1714340263721781765} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1578564315674380699 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3989728765861935376} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b028a18f3817e4b768154fd94047e4d7, type: 3} + m_Name: + m_EditorClassIdentifier: + MaxVelocity: 8 + ClipInput: 0 + NoJumpsInMockMode: 1 + TargetMovementVector: {x: 0, y: 0} + TargetMovementMagnatude: 0 + MovementVector: {x: 0, y: 0} + MovementMagnatude: 0 + CameraRotation: {x: 0, y: 0} + Jump: 0 + Backflip: 0 + Stand: 0 + WalkOrRun: 0 + DesiredHorizontalVelocity: {x: 0, y: 0} + HorizontalDirection: {x: 0, y: 0, z: 0} + UseHumanInput: 1 + DemoMockIfNoInput: 1 +--- !u!1 &5370464465988772728 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5370464465988772612} + - component: {fileID: 5370464465988772613} + - component: {fileID: 5370464465988772614} + - component: {fileID: 5370464465988772615} + m_Layer: 0 + m_Name: AgentTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5370464465988772612 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5370464465988772728} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 6.76, y: 0.22, z: 5.74} + m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1714340263721781765} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5370464465988772613 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5370464465988772728} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &5370464465988772614 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5370464465988772728} + 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: 627fb1f9c85d0ab498c358b8ff0d6de6, 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!65 &5370464465988772615 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5370464465988772728} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 0 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1001 &3745292643924379816 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 371211994496726598, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3499865627114767964, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3617279857455892011, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4220755503070646539, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4220755503070646539, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_LocalPosition.x + value: -100 + objectReference: {fileID: 0} + - target: {fileID: 4220755503070646539, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4220755503070646539, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_LocalPosition.z + value: -100 + objectReference: {fileID: 0} + - target: {fileID: 4475872956784911638, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 4810550302162678093, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 5965315998760433598, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_Layer + value: 16 + objectReference: {fileID: 0} + - target: {fileID: 5965315998760433598, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6392590009493042066, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 6734805552995975707, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_ProvidesContacts + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6734805552995975707, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_EnableTreeColliders + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8081357739622870871, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_Name + value: DReCon-v0 + objectReference: {fileID: 0} + - target: {fileID: 8081357739622870871, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8087028546548217645, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8087028546548217645, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: _groundRoot + value: + objectReference: {fileID: 0} + - target: {fileID: 8087028546548217645, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: _useTerrain + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8087028546548217645, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: _updatebounds + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8087028546548217645, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: _groundRootName + value: CommonGround + objectReference: {fileID: 0} + - target: {fileID: 8087028546548217645, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: inactiveAgents.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8087028546548217645, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: inactiveAgents.Array.data[0] + value: + objectReference: {fileID: 9028912518352089956} + - target: {fileID: 8087028546548217645, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: inactiveAgents.Array.data[1] + value: + objectReference: {fileID: 0} + - target: {fileID: 8686670818618531365, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + insertIndex: -1 + addedObject: {fileID: 5601182598464780559} + - targetCorrespondingSourceObject: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + insertIndex: -1 + addedObject: {fileID: 5370464465988772612} + - targetCorrespondingSourceObject: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + insertIndex: -1 + addedObject: {fileID: 5410650273635025271} + - targetCorrespondingSourceObject: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + insertIndex: -1 + addedObject: {fileID: 1976157281100074716} + - targetCorrespondingSourceObject: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + insertIndex: -1 + addedObject: {fileID: 877578399104125776} + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 8081357739622870871, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + insertIndex: -1 + addedObject: {fileID: 5437849642330803184} + m_SourcePrefab: {fileID: 100100000, guid: c7f549aabbce548e7aae2b2101ae3062, type: 3} +--- !u!4 &1714340263721781765 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2608565721708774061, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + m_PrefabInstance: {fileID: 3745292643924379816} + m_PrefabAsset: {fileID: 0} +--- !u!1 &4890684744258037759 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8081357739622870871, guid: c7f549aabbce548e7aae2b2101ae3062, + type: 3} + m_PrefabInstance: {fileID: 3745292643924379816} + m_PrefabAsset: {fileID: 0} +--- !u!114 &5437849642330803184 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4890684744258037759} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c35bb009193589147a32f492be74a1a1, type: 3} + m_Name: + m_EditorClassIdentifier: + renderOnlyTarget: 0 + movementsource: {fileID: 9028912518352089956} + ragdollcontroller: {fileID: 1973854535028386212} +--- !u!1001 &4541858248741530902 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1714340263721781765} + m_Modifications: + - target: {fileID: 392232339659560021, guid: c4813c0eb838d1b4fa513c76f6b99f5f, + type: 3} + propertyPath: m_Name + value: AgentMove-outcome + objectReference: {fileID: 0} + - target: {fileID: 3686799810742117958, guid: c4813c0eb838d1b4fa513c76f6b99f5f, + type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 3686799810742117958, guid: c4813c0eb838d1b4fa513c76f6b99f5f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3686799810742117958, guid: c4813c0eb838d1b4fa513c76f6b99f5f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3686799810742117958, guid: c4813c0eb838d1b4fa513c76f6b99f5f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8490727564501632366, guid: c4813c0eb838d1b4fa513c76f6b99f5f, + type: 3} + propertyPath: data4constraints + value: + objectReference: {fileID: 0} + - target: {fileID: 8490727564501632366, guid: c4813c0eb838d1b4fa513c76f6b99f5f, + type: 3} + propertyPath: _articulationBodyRoot + value: + objectReference: {fileID: 5003744890765894587} + - target: {fileID: 8490727564501632366, guid: c4813c0eb838d1b4fa513c76f6b99f5f, + type: 3} + propertyPath: SetUpConstraintsFromData + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c4813c0eb838d1b4fa513c76f6b99f5f, type: 3} +--- !u!4 &877578399104125776 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3686799810742117958, guid: c4813c0eb838d1b4fa513c76f6b99f5f, + type: 3} + m_PrefabInstance: {fileID: 4541858248741530902} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &7093028827085853943 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1714340263721781765} + m_Modifications: + - target: {fileID: 114263248370519032, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_Model + value: + objectReference: {fileID: 0} + - target: {fileID: 260939356137283678, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: 0.0039293133 + objectReference: {fileID: 0} + - target: {fileID: 348096294373738880, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.x + value: -0.143 + objectReference: {fileID: 0} + - target: {fileID: 689695163126716068, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: 0.0028464263 + objectReference: {fileID: 0} + - target: {fileID: 837786529545343070, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.x + value: -0.1059237 + objectReference: {fileID: 0} + - target: {fileID: 837786529545343070, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: -0.022321204 + objectReference: {fileID: 0} + - target: {fileID: 1127414539557790481, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: 0.100326866 + objectReference: {fileID: 0} + - target: {fileID: 1239497654434244758, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.x + value: 0.0057383254 + objectReference: {fileID: 0} + - target: {fileID: 1239497654434244758, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: 0.0027651554 + objectReference: {fileID: 0} + - target: {fileID: 1340527944349289928, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.x + value: -0.0031205534 + objectReference: {fileID: 0} + - target: {fileID: 1340527944349289928, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: 0.016465206 + objectReference: {fileID: 0} + - target: {fileID: 1496666803027742699, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: -0.00042612734 + objectReference: {fileID: 0} + - target: {fileID: 1808420173214174992, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.x + value: -0.2784152 + objectReference: {fileID: 0} + - target: {fileID: 1808420173214174992, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: 0.00000037625432 + objectReference: {fileID: 0} + - target: {fileID: 1856326131723110599, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.x + value: 0.045699697 + objectReference: {fileID: 0} + - target: {fileID: 1856326131723110599, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: -0.02628017 + objectReference: {fileID: 0} + - target: {fileID: 2015231249865073876, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.x + value: -0.045704465 + objectReference: {fileID: 0} + - target: {fileID: 2015231249865073876, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: -0.02627988 + objectReference: {fileID: 0} + - target: {fileID: 2762019965930867294, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: applyROMInGamePlay + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2762019965930867294, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: debugWithLargestROM + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3770211905496810946, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: -0.025161674 + objectReference: {fileID: 0} + - target: {fileID: 4028625926059442890, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: -0.00041222665 + objectReference: {fileID: 0} + - target: {fileID: 4079613823659954323, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: -0.02983789 + objectReference: {fileID: 0} + - target: {fileID: 4177175816300940728, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: RequestCamera + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5764981685078331935, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: 0.014961979 + objectReference: {fileID: 0} + - target: {fileID: 6032172806317267978, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: 0.0027651917 + objectReference: {fileID: 0} + - target: {fileID: 6114793560261688705, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.x + value: -0.14123857 + objectReference: {fileID: 0} + - target: {fileID: 6114793560261688705, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: -0.0020052998 + objectReference: {fileID: 0} + - target: {fileID: 6499578195492720033, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: 0.002861564 + objectReference: {fileID: 0} + - target: {fileID: 7079208600320329709, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.x + value: 0.14068204 + objectReference: {fileID: 0} + - target: {fileID: 7079208600320329709, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: -0.00000000314175 + objectReference: {fileID: 0} + - target: {fileID: 7179770322580443774, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: -0.013734171 + objectReference: {fileID: 0} + - target: {fileID: 8149641315181257463, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.x + value: 0.105928436 + objectReference: {fileID: 0} + - target: {fileID: 8149641315181257463, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: -0.022320984 + objectReference: {fileID: 0} + - target: {fileID: 8208509521937967625, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: -0.029821906 + objectReference: {fileID: 0} + - target: {fileID: 8719875636317608491, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 8719875636317608491, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8719875636317608491, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8719875636317608491, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8719875636317608491, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8719875636317608491, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8719875636317608491, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8719875636317608491, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8719875636317608491, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8719875636317608491, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8719875636317608491, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8722076229893094739, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_Name + value: MarathonMan004 + objectReference: {fileID: 0} + - target: {fileID: 9173802407982569481, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: 0.000000113621354 + objectReference: {fileID: 0} + - target: {fileID: 9218996436316437763, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.x + value: 0.143 + objectReference: {fileID: 0} + - target: {fileID: 9218996436316437763, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + propertyPath: m_ParentAnchorPosition.z + value: -0.0044048633 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 2762019965930867294, guid: 6a7e84e6b4b64c744857753e3e544b81, type: 3} + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 8722076229893094739, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + insertIndex: -1 + addedObject: {fileID: 7412007324369319300} + m_SourcePrefab: {fileID: 100100000, guid: 6a7e84e6b4b64c744857753e3e544b81, type: 3} +--- !u!1 &1973854535028386212 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8722076229893094739, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + m_PrefabInstance: {fileID: 7093028827085853943} + m_PrefabAsset: {fileID: 0} +--- !u!114 &7412007324369319300 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1973854535028386212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: df87ca71a84fd44d9a8ffe3f75f024db, type: 3} + m_Name: + m_EditorClassIdentifier: + info2store: {fileID: 0} + debugWithLargestROM: 0 + extraoffset: 10 +--- !u!4 &1976157281100074716 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8719875636317608491, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + m_PrefabInstance: {fileID: 7093028827085853943} + m_PrefabAsset: {fileID: 0} +--- !u!171741748 &5003744890765894587 stripped +ArticulationBody: + m_CorrespondingSourceObject: {fileID: 2819076709843220300, guid: 6a7e84e6b4b64c744857753e3e544b81, + type: 3} + m_PrefabInstance: {fileID: 7093028827085853943} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &8663897799653336881 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1714340263721781765} + m_Modifications: + - target: {fileID: 392232339659560021, guid: 0db68a8912718904d967ab56e13a1785, + type: 3} + propertyPath: m_Name + value: AgentMove-source + objectReference: {fileID: 0} + - target: {fileID: 3686799810742117958, guid: 0db68a8912718904d967ab56e13a1785, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 3686799810742117958, guid: 0db68a8912718904d967ab56e13a1785, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3686799810742117958, guid: 0db68a8912718904d967ab56e13a1785, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3686799810742117958, guid: 0db68a8912718904d967ab56e13a1785, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0db68a8912718904d967ab56e13a1785, type: 3} +--- !u!4 &5410650273635025271 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3686799810742117958, guid: 0db68a8912718904d967ab56e13a1785, + type: 3} + m_PrefabInstance: {fileID: 8663897799653336881} + m_PrefabAsset: {fileID: 0} +--- !u!1 &9028912518352089956 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 392232339659560021, guid: 0db68a8912718904d967ab56e13a1785, + type: 3} + m_PrefabInstance: {fileID: 8663897799653336881} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/MarathonEnvs/Environments/DReCon-v0.prefab.meta b/Assets/MarathonEnvs/Environments/DReCon-v0.prefab.meta new file mode 100644 index 0000000..6d625a9 --- /dev/null +++ b/Assets/MarathonEnvs/Environments/DReCon-v0.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 039f5bf4e1cc0214ea4f370014f59897 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Environments/TrackEnv-v0.prefab b/Assets/MarathonEnvs/Environments/TrackEnv-v0.prefab new file mode 100644 index 0000000..b06ec06 --- /dev/null +++ b/Assets/MarathonEnvs/Environments/TrackEnv-v0.prefab @@ -0,0 +1,410 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3499865627114767964 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4810550302162678093} + - component: {fileID: 1051232446198004159} + - component: {fileID: 5042751036087727410} + - component: {fileID: 4594414822486591350} + m_Layer: 0 + m_Name: Terrain + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &4810550302162678093 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3499865627114767964} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -10, y: 0, z: -0.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2608565721708774061} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!218 &1051232446198004159 +Terrain: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3499865627114767964} + m_Enabled: 1 + serializedVersion: 6 + m_TerrainData: {fileID: 15600000, guid: 655b00e2b1d9d48a3ba520773f6bf706, type: 2} + m_TreeDistance: 2000 + m_TreeBillboardDistance: 50 + m_TreeCrossFadeLength: 5 + m_TreeMaximumFullLODCount: 50 + m_DetailObjectDistance: 0 + m_DetailObjectDensity: 1 + m_HeightmapPixelError: 5 + m_SplatMapDistance: 1000 + m_HeightmapMaximumLOD: 0 + m_ShadowCastingMode: 2 + m_DrawHeightmap: 1 + m_DrawInstanced: 0 + m_DrawTreesAndFoliage: 0 + m_ReflectionProbeUsage: 1 + m_MaterialTemplate: {fileID: 10652, guid: 0000000000000000f000000000000000, type: 0} + m_BakeLightProbesForTrees: 0 + m_PreserveTreePrototypeLayers: 0 + m_DeringLightProbesForTrees: 0 + m_ScaleInLightmap: 0.4 + m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0} + m_GroupingID: 0 + m_RenderingLayerMask: 1 + m_AllowAutoConnect: 1 +--- !u!154 &5042751036087727410 +TerrainCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3499865627114767964} + m_Material: {fileID: 13400000, guid: b9c123ed1464e44adbfe0f4b3a874890, type: 2} + m_Enabled: 1 + m_TerrainData: {fileID: 15600000, guid: 655b00e2b1d9d48a3ba520773f6bf706, type: 2} + m_EnableTreeColliders: 1 +--- !u!114 &4594414822486591350 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3499865627114767964} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 68231b96042614ce992397230a3bb5fd, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &3670844839002173321 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6392590009493042066} + - component: {fileID: 4606189183019907195} + - component: {fileID: 2749422264313137166} + - component: {fileID: 473651587987859469} + m_Layer: 0 + m_Name: 500x1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 0 +--- !u!4 &6392590009493042066 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3670844839002173321} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -10, y: 0, z: -0.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2608565721708774061} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!218 &4606189183019907195 +Terrain: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3670844839002173321} + m_Enabled: 1 + serializedVersion: 6 + m_TerrainData: {fileID: 15600000, guid: cfe2f6982d41d43f1981909e78e77df2, type: 2} + m_TreeDistance: 5000 + m_TreeBillboardDistance: 50 + m_TreeCrossFadeLength: 5 + m_TreeMaximumFullLODCount: 50 + m_DetailObjectDistance: 80 + m_DetailObjectDensity: 1 + m_HeightmapPixelError: 5 + m_SplatMapDistance: 1000 + m_HeightmapMaximumLOD: 0 + m_ShadowCastingMode: 2 + m_DrawHeightmap: 1 + m_DrawInstanced: 0 + m_DrawTreesAndFoliage: 0 + m_ReflectionProbeUsage: 1 + m_MaterialTemplate: {fileID: 10652, guid: 0000000000000000f000000000000000, type: 0} + m_BakeLightProbesForTrees: 0 + m_PreserveTreePrototypeLayers: 0 + m_DeringLightProbesForTrees: 0 + m_ScaleInLightmap: 0.4 + m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0} + m_GroupingID: 0 + m_RenderingLayerMask: 1 + m_AllowAutoConnect: 1 +--- !u!154 &2749422264313137166 +TerrainCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3670844839002173321} + m_Material: {fileID: 13400000, guid: b9c123ed1464e44adbfe0f4b3a874890, type: 2} + m_Enabled: 1 + m_TerrainData: {fileID: 15600000, guid: cfe2f6982d41d43f1981909e78e77df2, type: 2} + m_EnableTreeColliders: 1 +--- !u!114 &473651587987859469 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3670844839002173321} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 68231b96042614ce992397230a3bb5fd, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &5965315998760433598 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4220755503070646539} + - component: {fileID: 7414326445189651963} + - component: {fileID: 6734805552995975707} + - component: {fileID: 6547520909157655661} + m_Layer: 0 + m_Name: 200x200 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 0 +--- !u!4 &4220755503070646539 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5965315998760433598} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -10, y: 0, z: -100} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2608565721708774061} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!218 &7414326445189651963 +Terrain: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5965315998760433598} + m_Enabled: 1 + serializedVersion: 6 + m_TerrainData: {fileID: 15600000, guid: 3d8ea6d1c66b94880891dd6eecead370, type: 2} + m_TreeDistance: 5000 + m_TreeBillboardDistance: 50 + m_TreeCrossFadeLength: 5 + m_TreeMaximumFullLODCount: 50 + m_DetailObjectDistance: 80 + m_DetailObjectDensity: 1 + m_HeightmapPixelError: 5 + m_SplatMapDistance: 1000 + m_HeightmapMaximumLOD: 0 + m_ShadowCastingMode: 2 + m_DrawHeightmap: 1 + m_DrawInstanced: 0 + m_DrawTreesAndFoliage: 0 + m_ReflectionProbeUsage: 1 + m_MaterialTemplate: {fileID: 10652, guid: 0000000000000000f000000000000000, type: 0} + m_BakeLightProbesForTrees: 0 + m_PreserveTreePrototypeLayers: 0 + m_DeringLightProbesForTrees: 0 + m_ScaleInLightmap: 0.4 + m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0} + m_GroupingID: 0 + m_RenderingLayerMask: 1 + m_AllowAutoConnect: 1 +--- !u!154 &6734805552995975707 +TerrainCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5965315998760433598} + m_Material: {fileID: 13400000, guid: b9c123ed1464e44adbfe0f4b3a874890, type: 2} + m_Enabled: 1 + m_TerrainData: {fileID: 15600000, guid: 3d8ea6d1c66b94880891dd6eecead370, type: 2} + m_EnableTreeColliders: 1 +--- !u!114 &6547520909157655661 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5965315998760433598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 68231b96042614ce992397230a3bb5fd, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &8081357739622870871 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2608565721708774061} + - component: {fileID: 8087028546548217645} + m_Layer: 0 + m_Name: TrackEnv-v0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2608565721708774061 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8081357739622870871} + 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_Children: + - {fileID: 4810550302162678093} + - {fileID: 4220755503070646539} + - {fileID: 6392590009493042066} + - {fileID: 371211994496726598} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8087028546548217645 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8081357739622870871} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a5ee228c95df445dfb46077fb9d6a66d, type: 3} + m_Name: + m_EditorClassIdentifier: + UseManyWorlds: 0 + paddingBetweenEnvs: 1 + bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} +--- !u!1 &8686670818618531365 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 371211994496726598} + - component: {fileID: 1062859615773466043} + - component: {fileID: 5126846877394047990} + - component: {fileID: 9013813216508276979} + m_Layer: 0 + m_Name: 500x3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 0 +--- !u!4 &371211994496726598 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8686670818618531365} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -10, y: 0, z: -1.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2608565721708774061} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!218 &1062859615773466043 +Terrain: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8686670818618531365} + m_Enabled: 1 + serializedVersion: 6 + m_TerrainData: {fileID: 15600000, guid: 99bc30d6ea40ed3479f074807921bf10, type: 2} + m_TreeDistance: 5000 + m_TreeBillboardDistance: 50 + m_TreeCrossFadeLength: 5 + m_TreeMaximumFullLODCount: 50 + m_DetailObjectDistance: 80 + m_DetailObjectDensity: 1 + m_HeightmapPixelError: 5 + m_SplatMapDistance: 1000 + m_HeightmapMaximumLOD: 0 + m_ShadowCastingMode: 2 + m_DrawHeightmap: 1 + m_DrawInstanced: 0 + m_DrawTreesAndFoliage: 0 + m_ReflectionProbeUsage: 1 + m_MaterialTemplate: {fileID: 10652, guid: 0000000000000000f000000000000000, type: 0} + m_BakeLightProbesForTrees: 0 + m_PreserveTreePrototypeLayers: 0 + m_DeringLightProbesForTrees: 0 + m_ScaleInLightmap: 0.0512 + m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0} + m_GroupingID: 0 + m_RenderingLayerMask: 1 + m_AllowAutoConnect: 1 +--- !u!154 &5126846877394047990 +TerrainCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8686670818618531365} + m_Material: {fileID: 13400000, guid: b9c123ed1464e44adbfe0f4b3a874890, type: 2} + m_Enabled: 1 + m_TerrainData: {fileID: 15600000, guid: 99bc30d6ea40ed3479f074807921bf10, type: 2} + m_EnableTreeColliders: 0 +--- !u!114 &9013813216508276979 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8686670818618531365} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 68231b96042614ce992397230a3bb5fd, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/MarathonEnvs/Environments/TrackEnv-v0.prefab.meta b/Assets/MarathonEnvs/Environments/TrackEnv-v0.prefab.meta new file mode 100644 index 0000000..97fe5ca --- /dev/null +++ b/Assets/MarathonEnvs/Environments/TrackEnv-v0.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c7f549aabbce548e7aae2b2101ae3062 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/PhysicsMaterials.meta b/Assets/MarathonEnvs/PhysicsMaterials.meta new file mode 100644 index 0000000..41fac28 --- /dev/null +++ b/Assets/MarathonEnvs/PhysicsMaterials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ff22533e50558b540bf2ae9ced967e9c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/PhysicsMaterials/Actor.physicMaterial b/Assets/MarathonEnvs/PhysicsMaterials/Actor.physicMaterial new file mode 100644 index 0000000..35b0f80 --- /dev/null +++ b/Assets/MarathonEnvs/PhysicsMaterials/Actor.physicMaterial @@ -0,0 +1,13 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!134 &13400000 +PhysicMaterial: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Actor + dynamicFriction: 2 + staticFriction: 2 + bounciness: 0 + frictionCombine: 3 + bounceCombine: 0 diff --git a/Assets/MarathonEnvs/PhysicsMaterials/Actor.physicMaterial.meta b/Assets/MarathonEnvs/PhysicsMaterials/Actor.physicMaterial.meta new file mode 100644 index 0000000..2874bb1 --- /dev/null +++ b/Assets/MarathonEnvs/PhysicsMaterials/Actor.physicMaterial.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 38b7ea504254a4fa986e42a7bb16c8df +timeCreated: 1515892485 +licenseType: Free +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 13400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/PhysicsMaterials/Ground.physicMaterial b/Assets/MarathonEnvs/PhysicsMaterials/Ground.physicMaterial new file mode 100644 index 0000000..d0b4492 --- /dev/null +++ b/Assets/MarathonEnvs/PhysicsMaterials/Ground.physicMaterial @@ -0,0 +1,13 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!134 &13400000 +PhysicMaterial: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Ground + dynamicFriction: 1000 + staticFriction: 1000 + bounciness: 0 + frictionCombine: 2 + bounceCombine: 0 diff --git a/Assets/MarathonEnvs/PhysicsMaterials/Ground.physicMaterial.meta b/Assets/MarathonEnvs/PhysicsMaterials/Ground.physicMaterial.meta new file mode 100644 index 0000000..4d5dce7 --- /dev/null +++ b/Assets/MarathonEnvs/PhysicsMaterials/Ground.physicMaterial.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b9c123ed1464e44adbfe0f4b3a874890 +timeCreated: 1515892465 +licenseType: Free +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 13400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts.meta b/Assets/MarathonEnvs/Scripts.meta new file mode 100644 index 0000000..9de3bcf --- /dev/null +++ b/Assets/MarathonEnvs/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2af4f7d7b13cb8a4da714983df8eaded +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents.meta b/Assets/MarathonEnvs/Scripts/OriginalAgents.meta new file mode 100644 index 0000000..0b1d954 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4add1e84a05e3234d886e655a3f598ce +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/DeepMindHopperAgent.cs b/Assets/MarathonEnvs/Scripts/OriginalAgents/DeepMindHopperAgent.cs new file mode 100644 index 0000000..0e3de7d --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/DeepMindHopperAgent.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using Unity.MLAgents; +using Unity.MLAgents.Actuators; +using Unity.MLAgents.Sensors; +public class DeepMindHopperAgent : MarathonAgent +{ + + public List RewardHackingVector; + + public override void OnEpisodeBegin() + { + base.OnEpisodeBegin(); + + // set to true this to show monitor while training + //Monitor.SetActive(true); + + StepRewardFunction = StepRewardHopper101; + TerminateFunction = TerminateOnNonFootHitTerrain; + ObservationsFunction = ObservationsDefault; + + BodyParts["pelvis"] = GetComponentsInChildren().FirstOrDefault(x => x.name == "torso"); + BodyParts["foot"] = GetComponentsInChildren().FirstOrDefault(x => x.name == "foot"); + SetupBodyParts(); + } + + void ObservationsDefault(VectorSensor sensor) + { + if (ShowMonitor) + { + } + + var pelvis = BodyParts["pelvis"]; + Vector3 normalizedVelocity = this.GetNormalizedVelocity(pelvis.velocity); + sensor.AddObservation(normalizedVelocity); + sensor.AddObservation(pelvis.transform.forward); // gyroscope + sensor.AddObservation(pelvis.transform.up); + + sensor.AddObservation(SensorIsInTouch); + JointRotations.ForEach(x => sensor.AddObservation(x)); + sensor.AddObservation(JointVelocity); + var foot = BodyParts["foot"]; + Vector3 normalizedFootPosition = this.GetNormalizedPosition(foot.transform.position); + sensor.AddObservation(normalizedFootPosition.y); + } + + float GetRewardOnEpisodeComplete() + { + return FocalPoint.transform.position.x; + } + + void UpdateRewardHackingVector() + { + // float uprightBonus = GetForwardBonus("pelvis"); + float uprightBonus = GetDirectionBonus("pelvis", Vector3.forward, 1f); + uprightBonus = Mathf.Clamp(uprightBonus, 0f, 1f); + float velocity = Mathf.Clamp(GetNormalizedVelocity("pelvis").x, 0f, 1f); + float position = Mathf.Clamp(GetNormalizedPosition("pelvis").x, 0f, 1f); + float effort = 1f - GetEffortNormalized(); + + if (RewardHackingVector?.Count == 0) + RewardHackingVector = Enumerable.Range(0, 6).Select(x => 0f).ToList(); + RewardHackingVector[0] = velocity; + RewardHackingVector[1] = position; + RewardHackingVector[2] = effort; + RewardHackingVector[3] = uprightBonus; + } + + float StepRewardHopper101() + { + UpdateRewardHackingVector(); + float uprightBonus = GetDirectionBonus("pelvis", Vector3.forward, 1f); + uprightBonus = Mathf.Clamp(uprightBonus, 0f, 1f); + float velocity = Mathf.Clamp(GetNormalizedVelocity("pelvis").x, 0f, 1f); + // float position = Mathf.Clamp(GetNormalizedPosition("pelvis").x, 0f, 1f); + float effort = 1f - GetEffortNormalized(); + + uprightBonus *= 0.05f; + velocity *= 0.7f; + if (velocity >= .25f) + effort *= 0.25f; + else + effort *= velocity; + + var reward = velocity + + uprightBonus + + effort; + if (ShowMonitor) + { + //var hist = new[] {reward, velocity, uprightBonus, effort}; + //Monitor.Log("rewardHist", hist, displayType: Monitor.DisplayType.Independent); + } + + return reward; + } +} \ No newline at end of file diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/DeepMindHopperAgent.cs.meta b/Assets/MarathonEnvs/Scripts/OriginalAgents/DeepMindHopperAgent.cs.meta new file mode 100644 index 0000000..87002d6 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/DeepMindHopperAgent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c8e0e8a6cb2e04a0b89d72c85942082d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/DeepMindWalkerAgent.cs b/Assets/MarathonEnvs/Scripts/OriginalAgents/DeepMindWalkerAgent.cs new file mode 100644 index 0000000..bbea7cc --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/DeepMindWalkerAgent.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using Unity.MLAgents; +using Unity.MLAgents.Actuators; +using Unity.MLAgents.Sensors; + +public class DeepMindWalkerAgent : MarathonAgent +{ + public override void OnEpisodeBegin() + { + base.OnEpisodeBegin(); + + // set to true this to show monitor while training + //Monitor.SetActive(true); + + StepRewardFunction = StepRewardWalker106; + TerminateFunction = TerminateOnNonFootHitTerrain; + ObservationsFunction = ObservationsDefault; + + BodyParts["pelvis"] = GetComponentsInChildren().FirstOrDefault(x => x.name == "torso"); + BodyParts["left_thigh"] = GetComponentsInChildren().FirstOrDefault(x => x.name == "left_thigh"); + BodyParts["right_thigh"] = GetComponentsInChildren().FirstOrDefault(x => x.name == "right_thigh"); + BodyParts["right_foot"] = GetComponentsInChildren().FirstOrDefault(x => x.name == "right_foot"); + BodyParts["left_foot"] = GetComponentsInChildren().FirstOrDefault(x => x.name == "left_foot"); + SetupBodyParts(); + } + + void ObservationsDefault(VectorSensor sensor) + { + if (ShowMonitor) + { + } + + var pelvis = BodyParts["pelvis"]; + Vector3 normalizedVelocity = this.GetNormalizedVelocity(pelvis.velocity); + sensor.AddObservation(normalizedVelocity); + sensor.AddObservation(pelvis.transform.forward); // gyroscope + sensor.AddObservation(pelvis.transform.up); + + sensor.AddObservation(SensorIsInTouch); + JointRotations.ForEach(x => sensor.AddObservation(x)); + sensor.AddObservation(JointVelocity); + sensor.AddObservation(new []{ + this.GetNormalizedPosition(BodyParts["left_foot"].transform.position).y, + this.GetNormalizedPosition(BodyParts["right_foot"].transform.position).y + }); + } + + float StepRewardWalker106() + { + float heightPenality = 1f-GetHeightPenality(1.1f); + heightPenality = Mathf.Clamp(heightPenality, 0f, 1f); + float uprightBonus = GetDirectionBonus("pelvis", Vector3.forward, 1f); + uprightBonus = Mathf.Clamp(uprightBonus, 0f, 1f); + float velocity = Mathf.Clamp(GetNormalizedVelocity("pelvis").x, 0f, 1f); + float effort = 1f - GetEffortNormalized(); + + //if (ShowMonitor) + //{ + // var hist = new[] {velocity, uprightBonus, heightPenality, effort}.ToList(); + // Monitor.Log("rewardHist", hist.ToArray(), displayType: Monitor.DisplayType.Independent); + //} + + heightPenality *= 0.05f; + uprightBonus *= 0.05f; + velocity *= 0.4f; + if (velocity >= .4f) + effort *= 0.4f; + else + effort *= velocity; + + var reward = velocity + + uprightBonus + + heightPenality + + effort; + + return reward; + } +} \ No newline at end of file diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/DeepMindWalkerAgent.cs.meta b/Assets/MarathonEnvs/Scripts/OriginalAgents/DeepMindWalkerAgent.cs.meta new file mode 100644 index 0000000..26a0073 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/DeepMindWalkerAgent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9077dc2f53ed9427e995a11ce8489a1b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/MarathonManAgent.cs b/Assets/MarathonEnvs/Scripts/OriginalAgents/MarathonManAgent.cs new file mode 100644 index 0000000..f6a6e2e --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/MarathonManAgent.cs @@ -0,0 +1,197 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Unity.MLAgents; +using Unity.MLAgents.Actuators; +using Unity.MLAgents.Sensors; +using System.Linq; +using static BodyHelper002; + +public class MarathonManAgent : Agent, IOnTerrainCollision +{ + BodyManager002 _bodyManager; + bool _isDone; + bool _hasLazyInitialized; + + public static BodyConfig BodyConfig = new BodyConfig + { + GetBodyPartGroup = (name) => + { + name = name.ToLower(); + if (name.Contains("mixamorig")) + return BodyPartGroup.None; + + if (name.Contains("butt")) + return BodyPartGroup.Hips; + if (name.Contains("torso")) + return BodyPartGroup.Torso; + if (name.Contains("head")) + return BodyPartGroup.Head; + if (name.Contains("waist")) + return BodyPartGroup.Spine; + + if (name.Contains("thigh")) + return BodyPartGroup.LegUpper; + if (name.Contains("shin")) + return BodyPartGroup.LegLower; + if (name.Contains("right_right_foot") || name.Contains("left_left_foot")) + return BodyPartGroup.Foot; + if (name.Contains("upper_arm")) + return BodyPartGroup.ArmUpper; + if (name.Contains("larm")) + return BodyPartGroup.ArmLower; + if (name.Contains("hand")) + return BodyPartGroup.Hand; + + return BodyPartGroup.None; + }, + GetMuscleGroup = (name) => + { + name = name.ToLower(); + if (name.Contains("mixamorig")) + return MuscleGroup.None; + if (name.Contains("butt")) + return MuscleGroup.Hips; + if (name.Contains("lower_waist") + || name.Contains("abdomen_y")) + return MuscleGroup.Spine; + if (name.Contains("thigh") + || name.Contains("hip")) + return MuscleGroup.LegUpper; + if (name.Contains("shin")) + return MuscleGroup.LegLower; + if (name.Contains("right_right_foot") + || name.Contains("left_left_foot") + || name.Contains("ankle_x")) + return MuscleGroup.Foot; + if (name.Contains("upper_arm")) + return MuscleGroup.ArmUpper; + if (name.Contains("larm")) + return MuscleGroup.ArmLower; + if (name.Contains("hand")) + return MuscleGroup.Hand; + + return MuscleGroup.None; + }, + GetRootBodyPart = () => BodyPartGroup.Hips, + GetRootMuscle = () => MuscleGroup.Hips + }; + + + + override public void CollectObservations(VectorSensor sensor) + { + if (!_hasLazyInitialized) + { + OnEpisodeBegin(); + } + + Vector3 normalizedVelocity = _bodyManager.GetNormalizedVelocity(); + var pelvis = _bodyManager.GetFirstBodyPart(BodyPartGroup.Hips); + var shoulders = _bodyManager.GetFirstBodyPart(BodyPartGroup.Torso); + + sensor.AddObservation(normalizedVelocity); + sensor.AddObservation(pelvis.Rigidbody.transform.forward); // gyroscope + sensor.AddObservation(pelvis.Rigidbody.transform.up); + + sensor.AddObservation(shoulders.Rigidbody.transform.forward); // gyroscope + sensor.AddObservation(shoulders.Rigidbody.transform.up); + + sensor.AddObservation(_bodyManager.GetSensorIsInTouch()); + foreach (var bodyPart in _bodyManager.BodyParts) + { + bodyPart.UpdateObservations(); + sensor.AddObservation(bodyPart.ObsLocalPosition); + sensor.AddObservation(bodyPart.ObsRotation); + sensor.AddObservation(bodyPart.ObsRotationVelocity); + sensor.AddObservation(bodyPart.ObsVelocity); + } + sensor.AddObservation(_bodyManager.GetSensorObservations()); + + // _bodyManager.OnCollectObservationsHandleDebug(GetInfo()); + } + + public override void OnActionReceived(ActionBuffers actions) + { + float[] vectorAction = actions.ContinuousActions.Select(x=>x).ToArray(); + + if (!_hasLazyInitialized) + { + return; + } + _isDone = false; + // apply actions to body + _bodyManager.OnAgentAction(vectorAction); + + // manage reward + float velocity = Mathf.Clamp(_bodyManager.GetNormalizedVelocity().x, 0f, 1f); + var actionDifference = _bodyManager.GetActionDifference(); + var actionsAbsolute = vectorAction.Select(x=>Mathf.Abs(x)).ToList(); + var actionsAtLimit = actionsAbsolute.Select(x=> x>=1f ? 1f : 0f).ToList(); + float actionaAtLimitCount = actionsAtLimit.Sum(); + float notAtLimitBonus = 1f - (actionaAtLimitCount / (float) actionsAbsolute.Count); + float reducedPowerBonus = 1f - actionsAbsolute.Average(); + + // velocity *= 0.85f; + // reducedPowerBonus *=0f; + // notAtLimitBonus *=.1f; + // actionDifference *=.05f; + // var reward = velocity + // + notAtLimitBonus + // + reducedPowerBonus + // + actionDifference; + var pelvis = _bodyManager.GetFirstBodyPart(BodyPartGroup.Hips); + if (pelvis.Transform.position.y<0){ + EndEpisode(); + } + + var reward = velocity; + + AddReward(reward); + _bodyManager.SetDebugFrameReward(reward); + } + + public override void OnEpisodeBegin() + { + if (!_hasLazyInitialized) + { + _bodyManager = GetComponent(); + _bodyManager.BodyConfig = MarathonManAgent.BodyConfig; + _bodyManager.OnInitializeAgent(); + _hasLazyInitialized = true; + } + _isDone = true; + _bodyManager.OnAgentReset(); + } + public virtual void OnTerrainCollision(GameObject other, GameObject terrain) + { + // if (string.Compare(terrain.name, "Terrain", true) != 0) + if (terrain.GetComponent() == null) + return; + // if (!_styleAnimator.AnimationStepsReady) + // return; + // HACK - for when agent has not been initialized + if (_bodyManager == null) + return; + var bodyPart = _bodyManager.BodyParts.FirstOrDefault(x=>x.Transform.gameObject == other); + if (bodyPart == null) + return; + switch (bodyPart.Group) + { + case BodyHelper002.BodyPartGroup.None: + case BodyHelper002.BodyPartGroup.Foot: + // case BodyHelper002.BodyPartGroup.LegUpper: + case BodyHelper002.BodyPartGroup.LegLower: + case BodyHelper002.BodyPartGroup.Hand: + // case BodyHelper002.BodyPartGroup.ArmLower: + // case BodyHelper002.BodyPartGroup.ArmUpper: + break; + default: + // AddReward(-100f); + if (!_isDone){ + EndEpisode(); + } + break; + } + } +} diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/MarathonManAgent.cs.meta b/Assets/MarathonEnvs/Scripts/OriginalAgents/MarathonManAgent.cs.meta new file mode 100644 index 0000000..161606f --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/MarathonManAgent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 92cfc2ffe17d245ee822312e5451327c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/MarathonTestBedDecision.cs b/Assets/MarathonEnvs/Scripts/OriginalAgents/MarathonTestBedDecision.cs new file mode 100644 index 0000000..adaa152 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/MarathonTestBedDecision.cs @@ -0,0 +1,51 @@ +using System.Collections.Generic; +using System.Linq; +using Unity.MLAgents; +using UnityEngine; + +public class MarathonTestBedDecision //: Decision +{ + // Brain _brain; + + // MarathonTestBedController _controller; + + + // // [Tooltip("Lock the top most element")] + // // /**< \brief Lock the top most element*/ + // // public bool FreezeTop = false; + // // bool _lastFreezeTop; + + // public override float[] Decide( + // List vectorObs, + // List visualObs, + // float reward, + // bool done, + // List memory) + // { + // // lazy init + // if (_controller == null) + // { + // _controller = FindObjectOfType(); + // // _brain = GetComponent(); + // // Actions = Enumerable.Repeat(0f, _brain.brainParameters.vectorActionSize[0]).ToArray(); + // // Actions = Enumerable.Repeat(0f, 100).ToArray(); + // } + // if (_controller.ApplyRandomActions) + // { + // for (int i = 0; i < _controller.Actions.Length; i++) + // _controller.Actions[i] = Random.value * 2 - 1; + // } + + // return _controller.Actions; + // } + + // public override List MakeMemory( + // List vectorObs, + // List visualObs, + // float reward, + // bool done, + // List memory) + // { + // return new List(); + // } +} \ No newline at end of file diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/MarathonTestBedDecision.cs.meta b/Assets/MarathonEnvs/Scripts/OriginalAgents/MarathonTestBedDecision.cs.meta new file mode 100644 index 0000000..903ef74 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/MarathonTestBedDecision.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fae7c31d3f13347d1bc0aab79eb5bf1f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/OpenAIAntAgent.cs b/Assets/MarathonEnvs/Scripts/OriginalAgents/OpenAIAntAgent.cs new file mode 100644 index 0000000..18ddf40 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/OpenAIAntAgent.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using Unity.MLAgents; +using Unity.MLAgents.Actuators; +using Unity.MLAgents.Sensors; + +public class OpenAIAntAgent : MarathonAgent +{ + public override void OnEpisodeBegin() + { + base.OnEpisodeBegin(); + + // set to true this to show monitor while training + //Monitor.SetActive(true); + + StepRewardFunction = StepRewardAnt101; + TerminateFunction = TerminateAnt; + ObservationsFunction = ObservationsDefault; + + BodyParts["pelvis"] = GetComponentsInChildren().FirstOrDefault(x => x.name == "torso_geom"); + SetupBodyParts(); + } + + void ObservationsDefault(VectorSensor sensor) + { + if (ShowMonitor) + { + } + + var pelvis = BodyParts["pelvis"]; + Vector3 normalizedVelocity = GetNormalizedVelocity(pelvis.velocity); + sensor.AddObservation(normalizedVelocity); + sensor.AddObservation(pelvis.transform.forward); // gyroscope + sensor.AddObservation(pelvis.transform.up); + + sensor.AddObservation(SensorIsInTouch); + JointRotations.ForEach(x => sensor.AddObservation(x)); + sensor.AddObservation(JointVelocity); + Vector3 normalizedFootPosition = this.GetNormalizedPosition(pelvis.transform.position); + sensor.AddObservation(normalizedFootPosition.y); + + } + + bool TerminateAnt() + { + var pelvis = BodyParts["pelvis"]; + if (pelvis.transform.position.y<0){ + return true; + } + + var angle = GetForwardBonus("pelvis"); + bool endOnAngle = (angle < .2f); + return endOnAngle; + } + + float StepRewardAnt101() + { + float velocity = Mathf.Clamp(GetNormalizedVelocity("pelvis").x, 0f, 1f); + float effort = 1f - GetEffortNormalized(); + + velocity *= 0.7f; + if (velocity >= .3f) + effort *= 0.3f; + else + effort *= velocity; + + + var reward = velocity + + effort; + //if (ShowMonitor) + //{ + // var hist = new[] {reward, velocity}.ToList(); + // Monitor.Log("rewardHist", hist.ToArray(), displayType: Monitor.DisplayType.Independent); + //} + + return reward; + } +} \ No newline at end of file diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/OpenAIAntAgent.cs.meta b/Assets/MarathonEnvs/Scripts/OriginalAgents/OpenAIAntAgent.cs.meta new file mode 100644 index 0000000..1e544db --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/OpenAIAntAgent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b072f3c2a55bd48149bbbd9701c7c6af +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/SparceMarathonManAgent.cs b/Assets/MarathonEnvs/Scripts/OriginalAgents/SparceMarathonManAgent.cs new file mode 100644 index 0000000..fa9086b --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/SparceMarathonManAgent.cs @@ -0,0 +1,216 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Unity.MLAgents; +using Unity.MLAgents.Actuators; +using Unity.MLAgents.Sensors; +using System.Linq; +using static BodyHelper002; +using System; + +public class RollingAverage +{ + List _window; + int _size; + int _count; + double _sum; + double _sumOfSquares; + public double Mean; + public double StandardDeviation; + + public RollingAverage(int size) + { + _window = new List(size); + _size = size; + _count = 0; + _sum = 0; + _sumOfSquares = 0; + } + public double Normalize(double val) + { + Add(val); + double normalized = val; + if (StandardDeviation != 0) + normalized = (val - Mean) / StandardDeviation; + return normalized; + } + void Add (double val) + { + if (_count >= _size) + { + var removedVal = _window[0]; + _window.RemoveAt(0); + _count--; + _sum -= removedVal; + _sumOfSquares -= removedVal * removedVal; + } + _window.Add(val); + _count++; + _sum += val; + _sumOfSquares += val * val; + // set Mean to Sum / Count, + Mean = _sum / _count; + // set StandardDeviation to Math.Sqrt(SumOfSquares / Count - Mean * Mean). + StandardDeviation = Math.Sqrt(_sumOfSquares / _count - Mean * Mean); + } +} + +public class SparceMarathonManAgent : Agent, IOnTerrainCollision +{ + BodyManager002 _bodyManager; + public float _heightReward; + public float _torsoUprightReward; + public float _torsoForwardReward; + public float _hipsUprightReward; + public float _hipsForwardReward; + public float _notAtLimitBonus; + public float _reducedPowerBonus; + public float _episodeMaxDistance; + + static RollingAverage rollingAverage; + + bool _isDone; + bool _hasLazyInitialized; + + override public void CollectObservations(VectorSensor sensor) + { + if (!_hasLazyInitialized) + { + OnEpisodeBegin(); + } + + Vector3 normalizedVelocity = _bodyManager.GetNormalizedVelocity(); + var pelvis = _bodyManager.GetFirstBodyPart(BodyPartGroup.Hips); + var shoulders = _bodyManager.GetFirstBodyPart(BodyPartGroup.Torso); + + sensor.AddObservation(normalizedVelocity); + sensor.AddObservation(pelvis.Rigidbody.transform.forward); // gyroscope + sensor.AddObservation(pelvis.Rigidbody.transform.up); + + sensor.AddObservation(shoulders.Rigidbody.transform.forward); // gyroscope + sensor.AddObservation(shoulders.Rigidbody.transform.up); + + sensor.AddObservation(_bodyManager.GetSensorIsInTouch()); + foreach (var bodyPart in _bodyManager.BodyParts) + { + bodyPart.UpdateObservations(); + sensor.AddObservation(bodyPart.ObsLocalPosition); + sensor.AddObservation(bodyPart.ObsRotation); + sensor.AddObservation(bodyPart.ObsRotationVelocity); + sensor.AddObservation(bodyPart.ObsVelocity); + } + sensor.AddObservation(_bodyManager.GetSensorObservations()); + + sensor.AddObservation(_notAtLimitBonus); + sensor.AddObservation(_reducedPowerBonus); + // _bodyManager.OnCollectObservationsHandleDebug(GetInfo()); + } + + public override void OnActionReceived(ActionBuffers actions) + { + float[] vectorAction = actions.ContinuousActions.Select(x=>x).ToArray(); + + if (!_hasLazyInitialized) + { + return; + } + _isDone = false; + // apply actions to body + _bodyManager.OnAgentAction(vectorAction); + + // manage reward + var actionDifference = _bodyManager.GetActionDifference(); + var actionsAbsolute = vectorAction.Select(x=>Mathf.Abs(x)).ToList(); + var actionsAtLimit = actionsAbsolute.Select(x=> x>=1f ? 1f : 0f).ToList(); + float actionaAtLimitCount = actionsAtLimit.Sum(); + _notAtLimitBonus = 1f - (actionaAtLimitCount / (float) actionsAbsolute.Count); + _reducedPowerBonus = 1f - actionsAbsolute.Average(); + _heightReward = _bodyManager.GetHeightNormalizedReward(1.2f); + _torsoUprightReward = _bodyManager.GetUprightNormalizedReward(BodyPartGroup.Torso); + _torsoForwardReward = _bodyManager.GetDirectionNormalizedReward(BodyPartGroup.Torso, Vector3.forward); + _hipsUprightReward = _bodyManager.GetUprightNormalizedReward(BodyPartGroup.Hips); + _hipsForwardReward = _bodyManager.GetDirectionNormalizedReward(BodyPartGroup.Hips, Vector3.forward); + _torsoUprightReward = Mathf.Clamp(_torsoUprightReward, 0f, 1f); + _torsoForwardReward = Mathf.Clamp(_torsoForwardReward, 0f, 1f); + _hipsUprightReward = Mathf.Clamp(_hipsUprightReward, 0f, 1f); + _hipsForwardReward = Mathf.Clamp(_hipsForwardReward, 0f, 1f); + + var stepCount = StepCount > 0 ? StepCount : 1; + if ((stepCount >= MaxStep) + && (MaxStep > 0)) + { + AddEpisodeEndReward(); + } + else{ + var pelvis = _bodyManager.GetFirstBodyPart(BodyPartGroup.Hips); + if (pelvis.Transform.position.y<0){ + AddEpisodeEndReward(); + EndEpisode(); + } + } + } + + public override void OnEpisodeBegin() + { + if (!_hasLazyInitialized) + { + _bodyManager = GetComponent(); + _bodyManager.BodyConfig = MarathonManAgent.BodyConfig; + _bodyManager.OnInitializeAgent(); + _hasLazyInitialized = true; + } + _isDone = true; + _bodyManager.OnAgentReset(); + _episodeMaxDistance = 0f; + if (rollingAverage == null) + rollingAverage = new RollingAverage(100); + } + public virtual void OnTerrainCollision(GameObject other, GameObject terrain) + { + // if (string.Compare(terrain.name, "Terrain", true) != 0) + if (terrain.GetComponent() == null) + return; + // if (!_styleAnimator.AnimationStepsReady) + // return; + // HACK - for when agent has not been initialized + if (_bodyManager == null) + return; + var bodyPart = _bodyManager.BodyParts.FirstOrDefault(x=>x.Transform.gameObject == other); + if (bodyPart == null) + return; + switch (bodyPart.Group) + { + case BodyHelper002.BodyPartGroup.Foot: + _episodeMaxDistance = _bodyManager.GetNormalizedPosition().x; + break; + case BodyHelper002.BodyPartGroup.None: + // case BodyHelper002.BodyPartGroup.LegUpper: + case BodyHelper002.BodyPartGroup.LegLower: + case BodyHelper002.BodyPartGroup.Hand: + // case BodyHelper002.BodyPartGroup.ArmLower: + // case BodyHelper002.BodyPartGroup.ArmUpper: + break; + default: + // AddReward(-100f); + if (!_isDone){ + AddEpisodeEndReward(); + EndEpisode(); + } + break; + } + } + + void AddEpisodeEndReward() + { + var reward = _episodeMaxDistance; + + AddReward(reward); + _bodyManager.SetDebugFrameReward(reward); + + // # normalized reward + // float normalizedReward = (float)rollingAverage.Normalize(reward); + // normalizedReward += (float)rollingAverage.Mean; + // AddReward(normalizedReward); + // _bodyManager.SetDebugFrameReward(normalizedReward); + } +} diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/SparceMarathonManAgent.cs.meta b/Assets/MarathonEnvs/Scripts/OriginalAgents/SparceMarathonManAgent.cs.meta new file mode 100644 index 0000000..f5d4820 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/SparceMarathonManAgent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4ab14e49bdf8644ca9c2a67e85f3a11e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainAntAgent.cs b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainAntAgent.cs new file mode 100644 index 0000000..6691f1f --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainAntAgent.cs @@ -0,0 +1,152 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using Unity.MLAgents; +using Unity.MLAgents.Actuators; +using Unity.MLAgents.Sensors; + +public class TerrainAntAgent : MarathonAgent { + + TerrainGenerator _terrainGenerator; + int _lastXPosInMeters; + int _stepCountAtLastMeter; + float _pain; + Vector3 _centerOfMass; + + public override void OnEpisodeBegin() + { + base.OnEpisodeBegin(); + + BodyParts["pelvis"] = GetComponentsInChildren().FirstOrDefault(x => x.name == "torso_geom"); + + SetCenterOfMass(); + + if (_terrainGenerator == null) + _terrainGenerator = GetComponent(); + _lastXPosInMeters = (int) BodyParts["pelvis"].transform.position.x; + _terrainGenerator.Reset(); + + // set to true this to show monitor while training + //Monitor.SetActive(true); + + StepRewardFunction = StepRewardAnt101; + TerminateFunction = LocalTerminate; + ObservationsFunction = ObservationsDefault; + OnTerminateRewardValue = 0f; + // OnTerminateRewardValue = -100f; + _pain = 0f; + + base.SetupBodyParts(); + SetCenterOfMass(); + } + + bool LocalTerminate() + { + int newXPosInMeters = (int) BodyParts["pelvis"].transform.position.x; + if (newXPosInMeters > _lastXPosInMeters) { + _lastXPosInMeters = newXPosInMeters; + _stepCountAtLastMeter = this.StepCount; + } + + SetCenterOfMass(); + var xpos = _centerOfMass.x; + var terminate = false; + if (_terrainGenerator.IsPointOffEdge(BodyParts["pelvis"].transform.position)){ + terminate = true; + AddReward(-1f); + } + if (this.StepCount-_stepCountAtLastMeter >= (200*5)) + terminate = true; + else if (xpos < 4f && _pain > 1f) + terminate = true; + else if (xpos < 2f && _pain > 0f) + terminate = true; + + return terminate; + } + public override void OnTerrainCollision(GameObject other, GameObject terrain) { + if (terrain.GetComponent() == null) + return; + + switch (other.name.ToLowerInvariant().Trim()) + { + case "pelvis": // dm_hopper + _pain += 5f; + NonFootHitTerrain = true; + break; + case "left_ankle_geom": // oai_ant + case "right_ankle_geom": // oai_ant + case "third_ankle_geom": // oai_ant + case "fourth_ankle_geom": // oai_ant + FootHitTerrain = true; + break; + default: + _pain += 5f; + NonFootHitTerrain = true; + break; + } + } + + void ObservationsDefault(VectorSensor sensor) + { + var pelvis = BodyParts["pelvis"]; + Vector3 normalizedVelocity = GetNormalizedVelocity(pelvis.velocity); + sensor.AddObservation(normalizedVelocity); + sensor.AddObservation(pelvis.transform.forward); // gyroscope + sensor.AddObservation(pelvis.transform.up); + + sensor.AddObservation(SensorIsInTouch); + JointRotations.ForEach(x => sensor.AddObservation(x)); + sensor.AddObservation(JointVelocity); + // Vector3 normalizedFootPosition = this.GetNormalizedPosition(pelvis.transform.position); + // sensor.AddObservation(normalizedFootPosition.y); + + (List distances, float fraction) = + _terrainGenerator.GetDistances2d( + pelvis.transform.position, ShowMonitor); + + sensor.AddObservation(distances); + sensor.AddObservation(fraction); + } + + + void SetCenterOfMass() + { + _centerOfMass = Vector3.zero; + float c = 0f; + var bodyParts = this.gameObject.GetComponentsInChildren(); + + foreach (var part in bodyParts) + { + _centerOfMass += part.worldCenterOfMass * part.mass; + c += part.mass; + } + _centerOfMass /= c; + } + + float StepRewardAnt101() + { + float velocity = Mathf.Clamp(GetNormalizedVelocity("pelvis").x, 0f, 1f); + float effort = 1f - GetEffortNormalized(); + + // velocity *= 0.7f; + // if (velocity >= .25f) + // effort *= 0.25f; + // else + // effort *= velocity; + + // var reward = velocity + // + effort; + // if (ShowMonitor) + // { + // var hist = new[] {reward, velocity, effort}; + // Monitor.Log("rewardHist", hist, displayType: Monitor.DisplayType.Independent); + // } + _pain = 0f; + var reward = velocity; + return reward; + // return 0f; + } +} diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainAntAgent.cs.meta b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainAntAgent.cs.meta new file mode 100644 index 0000000..8eb3c0e --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainAntAgent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 01dc2865764654ce99be0a7f7842997f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainGenerator.cs b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainGenerator.cs new file mode 100644 index 0000000..c9d881a --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainGenerator.cs @@ -0,0 +1,229 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Unity.MLAgents; +using System.Linq; +using ManyWorlds; + +public class TerrainGenerator : MonoBehaviour +{ + + Terrain terrain; + Agent _agent; + DecisionRequester _decisionRequester; + public int posXInTerrain; + public int posYInTerrain; + float[,] _heights; + float[,] _rowHeight; + + public int heightIndex; + public float curHeight; + public float actionReward; + + internal const float _minHeight = 0f; + internal const float _maxHeight = 10f; + internal const float _minSpawnHeight = 0f;//2f; + internal const float _maxSpawnHeight = 10f;//8f; + const float _midHeight = 5f; + float _mapScaleY; + float[,] _heightMap; + public List debugLastHeights; + public List debugLastNormHeights; + public float debugLastFraction; + + PhysicsScene physicsScene; + + // Start is called before the first frame update + void Start() + { + physicsScene = (GetComponentInParent().GetPhysicsScene()); + } + + // Update is called once per frame + void Update() + { + + } + + public void Reset() + { + if (this.terrain == null) + { + var parent = gameObject.transform.parent; + terrain = parent.GetComponentInChildren(); + var sharedTerrainData = terrain.terrainData; + terrain.terrainData = new TerrainData(); + terrain.terrainData.heightmapResolution = sharedTerrainData.heightmapResolution; + terrain.terrainData.baseMapResolution = sharedTerrainData.baseMapResolution; + terrain.terrainData.SetDetailResolution(sharedTerrainData.detailResolution, sharedTerrainData.detailResolutionPerPatch); + terrain.terrainData.size = sharedTerrainData.size; + //terrain.terrainData.thickness = sharedTerrainData.thickness; + // terrain.terrainData.splatPrototypes = sharedTerrainData.splatPrototypes; + terrain.terrainData.terrainLayers = sharedTerrainData.terrainLayers; + var collider = terrain.GetComponent(); + collider.terrainData = terrain.terrainData; + _rowHeight = new float[terrain.terrainData.heightmapResolution,1]; + } + if (this._agent == null) + { + _agent = GetComponent(); + _decisionRequester = GetComponent(); + } + //print($"HeightMap {this.terrain.terrainData.heightmapWidth}, {this.terrain.terrainData.heightmapHeight}. + // Scale {this.terrain.terrainData.heightmapScale}. Resolution {this.terrain.terrainData.heightmapResolution}"); + _mapScaleY = this.terrain.terrainData.heightmapScale.y; + // get the normalized position of this game object relative to the terrain + Vector3 tempCoord = (transform.position - terrain.gameObject.transform.position); + Vector3 coord; + tempCoord.x = Mathf.Clamp(tempCoord.x,0f, terrain.terrainData.size.x-0.000001f); + tempCoord.z = Mathf.Clamp(tempCoord.z,0f, terrain.terrainData.size.z-0.000001f); + coord.x = (tempCoord.x-1) / terrain.terrainData.size.x; + coord.y = tempCoord.y / terrain.terrainData.size.y; + coord.z = tempCoord.z / terrain.terrainData.size.z; + // get the position of the terrain heightmap where this game object is + posXInTerrain = (int) (coord.x * terrain.terrainData.heightmapResolution); + posYInTerrain = (int) (coord.z * terrain.terrainData.heightmapResolution); + // we set an offset so that all the raising terrain is under this game object + int offset = 0 / 2; + // get the heights of the terrain under this game object + _heights = terrain.terrainData.GetHeights(posXInTerrain-offset,posYInTerrain-offset, 100,1); + curHeight = _midHeight; + heightIndex = posXInTerrain; + actionReward = 0f; + + ResetHeights(); + } + void ResetHeights() + { + if (_heightMap == null){ + _heightMap = new float [terrain.terrainData.heightmapResolution, terrain.terrainData.heightmapResolution]; + } + heightIndex = 0; + while(heightIndex _maxSpawnHeight) + { + curHeight = _maxSpawnHeight; + actionSize = 0; + } + } + + float height = curHeight / _mapScaleY; + // var unit = terrain.terrainData.heightmapWidth / (int)_mapScaleY; + int unit = 1; + int startH = heightIndex * unit; + for (int h = startH; h < startH+unit; h++) + { + for (int w = 0; w < terrain.terrainData.heightmapResolution; w++){ + _heightMap[w,h] = height; + } + height += 1/300f/_mapScaleY; + } + heightIndex++; + } + + public List GetDistances2d(IEnumerable points) + { + List distances = points + .Select(x=> GetDistance2d(x)) + .ToList(); + return distances; + } + float GetDistance2d(Vector3 point) + { + int layerMask = ~(1 << 14); + RaycastHit hit; + if (!physicsScene.Raycast(point, Vector3.down, out hit,_maxHeight,layerMask)) + return 1f; + float distance = hit.distance; + distance = Mathf.Clamp(distance, -1f, 1f); + return distance; + } + + public bool IsPointOffEdge(Vector3 point) + { + Vector3 localPos = (point - terrain.gameObject.transform.position); + bool isOffEdge = false; + isOffEdge |= (localPos.z < 0f); + isOffEdge |= (localPos.z >= terrain.terrainData.size.z); + return isOffEdge; + } + + public (List, float) GetDistances2d(Vector3 pos, bool showDebug) + { + int layerMask = ~(1 << 14); + var xpos = pos.x; + xpos -= 2f; + float fraction = (xpos - (Mathf.Floor(xpos*5)/5)) * 5; + float ypos = pos.y; + List rays = Enumerable.Range(0, 5*7).Select(x => new Ray(new Vector3(xpos+(x*.2f), TerrainGenerator._maxHeight, pos.z), Vector3.down)).ToList(); + RaycastHit hit; + List distances = rays.Select + ( ray=> { + if (!physicsScene.Raycast(ray.origin, ray.direction, out hit,_maxHeight,layerMask)) + return _maxHeight; + return ypos - (_maxHeight - hit.distance); + }).ToList(); + if (Application.isEditor && showDebug) + { + var view = distances.Skip(10).Take(20).Select(x=>x).ToList(); + //Monitor.Log("distances", view.ToArray()); + var time = Time.deltaTime; + if (_decisionRequester?.DecisionPeriod > 1) + time *= _decisionRequester.DecisionPeriod; + for (int i = 0; i < rays.Count; i++) + { + var distance = distances[i]; + var origin = new Vector3(rays[i].origin.x, ypos,0f); + var direction = distance > 0 ? Vector3.down : Vector3.up; + var color = distance > 0 ? Color.yellow : Color.red; + Debug.DrawRay(origin, direction*Mathf.Abs(distance), color, time, false); + } + } + List normalizedDistances = distances + .Select(x => Mathf.Clamp(x, -10f, 10f)) + .Select(x => x/10f) + .ToList(); + ; + debugLastNormHeights = normalizedDistances; + debugLastHeights = distances; + debugLastFraction = fraction; + + return (normalizedDistances, fraction); + } +} diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainGenerator.cs.meta b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainGenerator.cs.meta new file mode 100644 index 0000000..ae60741 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainGenerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4da94542694fa499d98d191423809c64 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainHopperAgent.cs b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainHopperAgent.cs new file mode 100644 index 0000000..9d54c80 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainHopperAgent.cs @@ -0,0 +1,167 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using Unity.MLAgents; +using Unity.MLAgents.Actuators; +using Unity.MLAgents.Sensors; + +public class TerrainHopperAgent : MarathonAgent { + + TerrainGenerator _terrainGenerator; + int _lastXPosInMeters; + int _stepCountAtLastMeter; + float _pain; + Vector3 _centerOfMass; + + public override void OnEpisodeBegin() + { + base.OnEpisodeBegin(); + + BodyParts["pelvis"] = GetComponentsInChildren().FirstOrDefault(x=>x.name=="torso"); + BodyParts["foot"] = GetComponentsInChildren().FirstOrDefault(x=>x.name=="foot"); + + SetCenterOfMass(); + + if (_terrainGenerator == null) + _terrainGenerator = GetComponent(); + _lastXPosInMeters = (int) BodyParts["foot"].transform.position.x; + _terrainGenerator.Reset(); + _stepCountAtLastMeter = 0; + + // set to true this to show monitor while training + //Monitor.SetActive(true); + + StepRewardFunction = StepRewardHopper101; + TerminateFunction = LocalTerminate; + ObservationsFunction = ObservationsDefault; + OnTerminateRewardValue = 0f; + _pain = 0f; + + base.SetupBodyParts(); + SetCenterOfMass(); + } + + bool LocalTerminate() + { + int newXPosInMeters = (int) BodyParts["foot"].transform.position.x; + if (newXPosInMeters > _lastXPosInMeters) { + _lastXPosInMeters = newXPosInMeters; + _stepCountAtLastMeter = this.StepCount; + } + + SetCenterOfMass(); + var xpos = _centerOfMass.x; + var terminate = false; + if (this.StepCount-_stepCountAtLastMeter >= (100*5)) + terminate = true; + else if (xpos < 2f && _pain > 0f) + terminate = true; + else if (_pain > 1f) + terminate = true; + + return terminate; + } + public override void OnTerrainCollision(GameObject other, GameObject terrain) { + if (terrain.GetComponent() == null) + return; + + switch (other.name.ToLowerInvariant().Trim()) + { + // case "torso": // dm_hopper + // _pain += 5f; + // NonFootHitTerrain = true; + // break; + case "foot": // dm_hopper + case "calf": // dm_hopper + FootHitTerrain = true; + break; + default: + case "thigh": // dm_hopper + case "pelvis": // dm_hopper + case "torso": // dm_hopper + _pain += .5f; + NonFootHitTerrain = true; + break; + } + } + + void ObservationsDefault(VectorSensor sensor) + { + // var pelvis = BodyParts["pelvis"]; + // sensor.AddObservation(pelvis.velocity); + // sensor.AddObservation(pelvis.transform.forward); // gyroscope + // sensor.AddObservation(pelvis.transform.up); + + // sensor.AddObservation(SensorIsInTouch); + // JointRotations.ForEach(x=>sensor.AddObservation(x)); + // sensor.AddObservation(JointVelocity); + // var foot = BodyParts["foot"]; + // sensor.AddObservation(foot.transform.position.y); + + var pelvis = BodyParts["pelvis"]; + Vector3 normalizedVelocity = this.GetNormalizedVelocity(pelvis.velocity); + sensor.AddObservation(normalizedVelocity); + sensor.AddObservation(pelvis.transform.forward); // gyroscope + sensor.AddObservation(pelvis.transform.up); + + sensor.AddObservation(SensorIsInTouch); + JointRotations.ForEach(x => sensor.AddObservation(x)); + sensor.AddObservation(JointVelocity); + var foot = BodyParts["foot"]; + Vector3 normalizedFootPosition = this.GetNormalizedPosition(foot.transform.position); + sensor.AddObservation(normalizedFootPosition.y); + + (List distances, float fraction) = + _terrainGenerator.GetDistances2d( + pelvis.transform.position, ShowMonitor); + + sensor.AddObservation(distances); + sensor.AddObservation(fraction); + } + + + void SetCenterOfMass() + { + _centerOfMass = Vector3.zero; + float c = 0f; + var bodyParts = this.gameObject.GetComponentsInChildren(); + + foreach (var part in bodyParts) + { + _centerOfMass += part.worldCenterOfMass * part.mass; + c += part.mass; + } + _centerOfMass /= c; + } + + float StepRewardHopper101() + { + float uprightBonus = GetDirectionBonus("pelvis", Vector3.forward, 1f); + uprightBonus = Mathf.Clamp(uprightBonus, 0f, 1f); + float velocity = Mathf.Clamp(GetNormalizedVelocity("pelvis").x, 0f, 1f); + // float position = Mathf.Clamp(GetNormalizedPosition("pelvis").x, 0f, 1f); + float effort = 1f - GetEffortNormalized(); + + // uprightBonus *= 0.05f; + // velocity *= 0.7f; + // if (velocity >= .25f) + // effort *= 0.25f; + // else + // effort *= velocity; + + // var reward = velocity + // + uprightBonus + // + effort; + // if (ShowMonitor) + // { + // var hist = new[] {reward, velocity, uprightBonus, effort}; + // Monitor.Log("rewardHist", hist, displayType: Monitor.DisplayType.Independent); + // } + var reward = velocity; + + _pain = 0f; + return reward; + } +} diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainHopperAgent.cs.meta b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainHopperAgent.cs.meta new file mode 100644 index 0000000..9cdb6e4 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainHopperAgent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 152acbc2f18ab45f7a82449fec55784e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainMarathonManAgent.cs b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainMarathonManAgent.cs new file mode 100644 index 0000000..a7263b5 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainMarathonManAgent.cs @@ -0,0 +1,183 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Unity.MLAgents; +using Unity.MLAgents.Actuators; +using Unity.MLAgents.Sensors; +using System.Linq; +using static BodyHelper002; +using ManyWorlds; + +public class TerrainMarathonManAgent : Agent, IOnTerrainCollision +{ + BodyManager002 _bodyManager; + + TerrainGenerator _terrainGenerator; + SpawnableEnv _spawnableEnv; + int _stepCountAtLastMeter; + public int lastXPosInMeters; + public int maxXPosInMeters; + float _pain; + + List distances; + float fraction; + bool _hasLazyInitialized; + + override public void CollectObservations(VectorSensor sensor) + { + if (!_hasLazyInitialized) + { + OnEpisodeBegin(); + } + + Vector3 normalizedVelocity = _bodyManager.GetNormalizedVelocity(); + var pelvis = _bodyManager.GetFirstBodyPart(BodyPartGroup.Hips); + var shoulders = _bodyManager.GetFirstBodyPart(BodyPartGroup.Torso); + + sensor.AddObservation(normalizedVelocity); + sensor.AddObservation(pelvis.Rigidbody.transform.forward); // gyroscope + sensor.AddObservation(pelvis.Rigidbody.transform.up); + + sensor.AddObservation(shoulders.Rigidbody.transform.forward); // gyroscope + sensor.AddObservation(shoulders.Rigidbody.transform.up); + + sensor.AddObservation(_bodyManager.GetSensorIsInTouch()); + foreach (var bodyPart in _bodyManager.BodyParts) + { + bodyPart.UpdateObservations(); + sensor.AddObservation(bodyPart.ObsLocalPosition); + sensor.AddObservation(bodyPart.ObsRotation); + sensor.AddObservation(bodyPart.ObsRotationVelocity); + sensor.AddObservation(bodyPart.ObsVelocity); + } + sensor.AddObservation(_bodyManager.GetSensorObservations()); + + (distances, fraction) = + _terrainGenerator.GetDistances2d( + pelvis.Rigidbody.transform.position, _bodyManager.ShowMonitor); + + sensor.AddObservation(distances); + sensor.AddObservation(fraction); + // _bodyManager.OnCollectObservationsHandleDebug(GetInfo()); + } + + public override void OnActionReceived(ActionBuffers actions) + { + float[] vectorAction = actions.ContinuousActions.Select(x=>x).ToArray(); + + if (!_hasLazyInitialized) + { + return; + } + // apply actions to body + _bodyManager.OnAgentAction(vectorAction); + + // manage reward + float velocity = Mathf.Clamp(_bodyManager.GetNormalizedVelocity().x, 0f, 1f); + var actionDifference = _bodyManager.GetActionDifference(); + var actionsAbsolute = vectorAction.Select(x=>Mathf.Abs(x)).ToList(); + var actionsAtLimit = actionsAbsolute.Select(x=> x>=1f ? 1f : 0f).ToList(); + float actionaAtLimitCount = actionsAtLimit.Sum(); + float notAtLimitBonus = 1f - (actionaAtLimitCount / (float) actionsAbsolute.Count); + float reducedPowerBonus = 1f - actionsAbsolute.Average(); + + // velocity *= 0.85f; + // reducedPowerBonus *=0f; + // notAtLimitBonus *=.1f; + // actionDifference *=.05f; + // var reward = velocity + // + notAtLimitBonus + // + reducedPowerBonus + // + actionDifference; + var reward = velocity; + AddReward(reward); + _bodyManager.SetDebugFrameReward(reward); + + var pelvis = _bodyManager.GetFirstBodyPart(BodyPartGroup.Hips); + float xpos = + _bodyManager.GetBodyParts(BodyPartGroup.Foot) + .Average(x=>x.Transform.position.x); + int newXPosInMeters = (int) xpos; + if (newXPosInMeters > lastXPosInMeters) { + lastXPosInMeters = newXPosInMeters; + _stepCountAtLastMeter = this.StepCount; + } + if (newXPosInMeters > maxXPosInMeters) + maxXPosInMeters = newXPosInMeters; + var terminate = false; + // bool isInBounds = _spawnableEnv.IsPointWithinBoundsInWorldSpace(pelvis.Transform.position); + // if (!isInBounds) + // if (pelvis.Rigidbody.transform.position.y < 0f) + if (_terrainGenerator.IsPointOffEdge(pelvis.Transform.position)){ + terminate = true; + AddReward(-1f); + } + if (this.StepCount-_stepCountAtLastMeter >= (200*5)) + terminate = true; + else if (xpos < 4f && _pain > 1f) + terminate = true; + else if (xpos < 2f && _pain > 0f) + terminate = true; + else if (_pain > 2f) + terminate = true; + if (terminate){ + EndEpisode(); + } + _pain = 0f; + } + + public override void OnEpisodeBegin() + { + if (!_hasLazyInitialized) + { + _bodyManager = GetComponent(); + _bodyManager.BodyConfig = MarathonManAgent.BodyConfig; + _bodyManager.OnInitializeAgent(); + _hasLazyInitialized = true; + } + + if (_bodyManager == null) + _bodyManager = GetComponent(); + _bodyManager.OnAgentReset(); + if (_terrainGenerator == null) + _terrainGenerator = GetComponent(); + if (_spawnableEnv == null) + _spawnableEnv = GetComponentInParent(); + _terrainGenerator.Reset(); + lastXPosInMeters = (int) + _bodyManager.GetBodyParts(BodyPartGroup.Foot) + .Average(x=>x.Transform.position.x); + _pain = 0f; + } + public virtual void OnTerrainCollision(GameObject other, GameObject terrain) + { + // if (string.Compare(terrain.name, "Terrain", true) != 0) + if (terrain.GetComponent() == null) + return; + // if (!_styleAnimator.AnimationStepsReady) + // return; + // HACK - for when agent has not been initialized + if (_bodyManager == null) + return; + var bodyPart = _bodyManager.BodyParts.FirstOrDefault(x=>x.Transform.gameObject == other); + if (bodyPart == null) + return; + switch (bodyPart.Group) + { + case BodyHelper002.BodyPartGroup.None: + case BodyHelper002.BodyPartGroup.Foot: + case BodyHelper002.BodyPartGroup.LegLower: + break; + case BodyHelper002.BodyPartGroup.LegUpper: + case BodyHelper002.BodyPartGroup.Hand: + case BodyHelper002.BodyPartGroup.ArmLower: + case BodyHelper002.BodyPartGroup.ArmUpper: + _pain += .1f; + break; + default: + // AddReward(-100f); + _pain += 5f; + break; + } + } +} diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainMarathonManAgent.cs.meta b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainMarathonManAgent.cs.meta new file mode 100644 index 0000000..12761da --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainMarathonManAgent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cf9d05032146a423c9add69cc32051f0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainWalkerAgent.cs b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainWalkerAgent.cs new file mode 100644 index 0000000..fef91d7 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainWalkerAgent.cs @@ -0,0 +1,159 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using Unity.MLAgents; +using Unity.MLAgents.Actuators; +using Unity.MLAgents.Sensors; + +public class TerrainWalkerAgent : MarathonAgent { + + TerrainGenerator _terrainGenerator; + + int _lastXPosInMeters; + int _stepCountAtLastMeter; + float _pain; + Vector3 _centerOfMass; + + public override void OnEpisodeBegin() + { + base.OnEpisodeBegin(); + + BodyParts["pelvis"] = GetComponentsInChildren().FirstOrDefault(x => x.name == "torso"); + BodyParts["left_thigh"] = GetComponentsInChildren().FirstOrDefault(x => x.name == "left_thigh"); + BodyParts["right_thigh"] = GetComponentsInChildren().FirstOrDefault(x => x.name == "right_thigh"); + BodyParts["right_foot"] = GetComponentsInChildren().FirstOrDefault(x => x.name == "right_foot"); + BodyParts["left_foot"] = GetComponentsInChildren().FirstOrDefault(x => x.name == "left_foot"); + + SetCenterOfMass(); + + if (_terrainGenerator == null) + _terrainGenerator = GetComponent(); + _lastXPosInMeters = (int) BodyParts["pelvis"].transform.position.x; + _terrainGenerator.Reset(); + _stepCountAtLastMeter = 0; + + // set to true this to show monitor while training + //Monitor.SetActive(true); + + StepRewardFunction = StepRewardWalker106; + TerminateFunction = LocalTerminate; + ObservationsFunction = ObservationsDefault; + OnTerminateRewardValue = 0f; + _pain = 0f; + + base.SetupBodyParts(); + SetCenterOfMass(); + } + + bool LocalTerminate() + { + int newXPosInMeters = (int) BodyParts["pelvis"].transform.position.x; + if (newXPosInMeters > _lastXPosInMeters) { + _lastXPosInMeters = newXPosInMeters; + _stepCountAtLastMeter = this.StepCount; + } + + SetCenterOfMass(); + var xpos = _centerOfMass.x; + var terminate = false; + if (this.StepCount-_stepCountAtLastMeter >= (100*5)) + terminate = true; + else if (xpos < 4f && _pain > 1f) + terminate = true; + else if (xpos < 2f && _pain > 0f) + terminate = true; + + return terminate; + } + public override void OnTerrainCollision(GameObject other, GameObject terrain) { + if (terrain.GetComponent() == null) + return; + + switch (other.name.ToLowerInvariant().Trim()) + { + case "pelvis": // dm_hopper + _pain += 5f; + NonFootHitTerrain = true; + break; + case "right_leg": // dm_walker + case "left_leg": // dm_walker + case "right_foot": // dm_walker + case "left_foot": // dm_walker + FootHitTerrain = true; + break; + default: + _pain += 5f; + NonFootHitTerrain = true; + break; + } + } + + void ObservationsDefault(VectorSensor sensor) + { + var pelvis = BodyParts["pelvis"]; + Vector3 normalizedVelocity = this.GetNormalizedVelocity(pelvis.velocity); + sensor.AddObservation(normalizedVelocity); + sensor.AddObservation(pelvis.transform.forward); // gyroscope + sensor.AddObservation(pelvis.transform.up); + + sensor.AddObservation(SensorIsInTouch); + JointRotations.ForEach(x => sensor.AddObservation(x)); + sensor.AddObservation(JointVelocity); + // sensor.AddObservation(new []{ + // this.GetNormalizedPosition(BodyParts["left_foot"].transform.position).y, + // this.GetNormalizedPosition(BodyParts["right_foot"].transform.position).y + // }); + + (List distances, float fraction) = + _terrainGenerator.GetDistances2d( + pelvis.transform.position, ShowMonitor); + + sensor.AddObservation(distances); + sensor.AddObservation(fraction); + } + + + void SetCenterOfMass() + { + _centerOfMass = Vector3.zero; + float c = 0f; + var bodyParts = this.gameObject.GetComponentsInChildren(); + + foreach (var part in bodyParts) + { + _centerOfMass += part.worldCenterOfMass * part.mass; + c += part.mass; + } + _centerOfMass /= c; + } + + float StepRewardWalker106() + { + float uprightBonus = GetDirectionBonus("pelvis", Vector3.forward, 1f); + uprightBonus = Mathf.Clamp(uprightBonus, 0f, 1f); + float velocity = Mathf.Clamp(GetNormalizedVelocity("pelvis").x, 0f, 1f); + float effort = 1f - GetEffortNormalized(); + + //if (ShowMonitor) + //{ + // var hist = new[] {velocity, uprightBonus, effort}.ToList(); + // Monitor.Log("rewardHist", hist.ToArray(), displayType: Monitor.DisplayType.Independent); + //} + + // uprightBonus *= 0.1f; + // velocity *= 0.45f; + // if (velocity >= .45f) + // effort *= 0.45f; + // else + // effort *= velocity; + + // var reward = velocity + // + uprightBonus + // + effort; + var reward = velocity; + _pain = 0f; + return reward; + } +} diff --git a/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainWalkerAgent.cs.meta b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainWalkerAgent.cs.meta new file mode 100644 index 0000000..cfa3d32 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/OriginalAgents/TerrainWalkerAgent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8c5a501017f084d2682727a59b227fe8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002.meta b/Assets/MarathonEnvs/Scripts/Ragdoll002.meta new file mode 100644 index 0000000..fe6bcd4 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bdc7ea2698158f74b9e797210e567d04 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyConfig.cs b/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyConfig.cs new file mode 100644 index 0000000..601bd69 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyConfig.cs @@ -0,0 +1,11 @@ +using System; +using static BodyHelper002; + +public class BodyConfig +{ + public Func GetBodyPartGroup; + public Func GetMuscleGroup; + public Func GetRootBodyPart; + public Func GetRootMuscle; + +} diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyConfig.cs.meta b/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyConfig.cs.meta new file mode 100644 index 0000000..49fa941 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 03e1cab076cd94a488d1decc5d843de7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyHelper002.cs b/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyHelper002.cs new file mode 100644 index 0000000..2f8b192 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyHelper002.cs @@ -0,0 +1,33 @@ + +public static class BodyHelper002 +{ + [System.Serializable] + public enum BodyPartGroup { + None, + Hips, + Torso, + Spine, + Head, + ArmUpper, + ArmLower, + Hand, + LegUpper, + LegLower, + Foot, + } + + [System.Serializable] + public enum MuscleGroup { + None, + Hips, + Torso, + Spine, + Head, + ArmUpper, + ArmLower, + Hand, + LegUpper, + LegLower, + Foot, + } +} \ No newline at end of file diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyHelper002.cs.meta b/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyHelper002.cs.meta new file mode 100644 index 0000000..d71779d --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyHelper002.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bf75e597c351b12498957c0ec1d646fd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyManager002.cs b/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyManager002.cs new file mode 100644 index 0000000..7ceb355 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyManager002.cs @@ -0,0 +1,594 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Unity.MLAgents; +using Unity.MLAgents.Actuators; +using Unity.MLAgents.Sensors; +using System.Linq; +using static BodyHelper002; +using System; +using ManyWorlds; + +public class BodyManager002 : MonoBehaviour, IOnSensorCollision +{ + // Options / Configurables global properties + public Transform CameraTarget; + public float FixedDeltaTime = 0.005f; + public bool ShowMonitor = false; + public bool DebugDisableMotor; + public bool DebugShowWithOffset; + + + // Observations / Read only global properties + public List Muscles; + public List BodyParts; + public List SensorIsInTouch; + public List Observations; + public int ObservationNormalizedErrors; + public int MaxObservationNormalizedErrors; + public List Sensors; + public float FrameReward; + public float AverageReward; + + + // private properties + Vector3 startPosition; + + Dictionary transformsPosition; + Dictionary transformsRotation; + + Agent _agent; + SpawnableEnv _spawnableEnv; + TerrainGenerator _terrainGenerator; + DecisionRequester _decisionRequester; + + static int _startCount; + + float[] lastVectorAction; + float[] vectorDifference; + List mphBuffer; + + [Tooltip("Max distance travelled across all episodes")] + /**< \brief Max distance travelled across all episodes*/ + public float MaxDistanceTraveled; + + [Tooltip("Distance travelled this episode")] + /**< \brief Distance travelled this episode*/ + public float DistanceTraveled; + + List sensorColliders; + static int _spawnCount; + + // static ScoreHistogramData _scoreHistogramData; + + + // void FixedUpdate() + // { + // foreach (var muscle in Muscles) + // { + // // var i = Muscles.IndexOf(muscle); + // // muscle.UpdateObservations(); + // // if (!DebugShowWithOffset && !DebugDisableMotor) + // // muscle.UpdateMotor(); + // // if (!muscle.Rigidbody.useGravity) + // // continue; // skip sub joints + // // } + // } + + public BodyConfig BodyConfig; + + // Start is called before the first frame update + void Start() + { + } + + // Update is called once per frame + void Update() + { + } + + public void OnInitializeAgent() + { + _spawnableEnv = GetComponentInParent(); + _terrainGenerator = GetComponentInParent(); + SetupBody(); + DistanceTraveled = float.MinValue; + } + + public void OnAgentReset() + { + if (DistanceTraveled != float.MinValue) + { + var scorer = FindObjectOfType(); + scorer?.ReportScore(DistanceTraveled, "Distance Traveled"); + } + HandleModelReset(); + Sensors = _agent.GetComponentsInChildren() + .Select(x=>x.gameObject) + .ToList(); + sensorColliders = Sensors + .Select(x=>x.GetComponent()) + .ToList(); + SensorIsInTouch = Enumerable.Range(0,Sensors.Count).Select(x=>0f).ToList(); + // HACK first spawned agent should grab the camera + var smoothFollow = GameObject.FindObjectOfType(); + if (smoothFollow != null && smoothFollow.target == null) { + if (_spawnCount == 0) // HACK follow nth agent + { + smoothFollow.target = CameraTarget; + ShowMonitor = true; + } + else + _spawnCount++; + } + lastVectorAction = null; + vectorDifference = null; + mphBuffer = new List(); + } + + public void OnAgentAction(float[] vectorAction) + { + if (lastVectorAction == null){ + lastVectorAction = vectorAction.Select(x=>0f).ToArray(); + vectorDifference = vectorAction.Select(x=>0f).ToArray(); + } + int i = 0; + foreach (var muscle in Muscles) + { + // if(muscle.Parent == null) + // continue; + if (muscle.ConfigurableJoint.angularXMotion != ConfigurableJointMotion.Locked){ + vectorDifference[i] = Mathf.Abs(vectorAction[i]-lastVectorAction[i]); + muscle.TargetNormalizedRotationX = vectorAction[i++]; + } + if (muscle.ConfigurableJoint.angularYMotion != ConfigurableJointMotion.Locked){ + vectorDifference[i] = Mathf.Abs(vectorAction[i]-lastVectorAction[i]); + muscle.TargetNormalizedRotationY = vectorAction[i++]; + } + if (muscle.ConfigurableJoint.angularZMotion != ConfigurableJointMotion.Locked){ + vectorDifference[i] = Mathf.Abs(vectorAction[i]-lastVectorAction[i]); + muscle.TargetNormalizedRotationZ = vectorAction[i++]; + } + if (!DebugDisableMotor) + muscle.UpdateMotor(); + } + + if (ShowMonitor) + { + // var hist = new[] {velocity, uprightBonus, heightPenality, effort}.ToList(); + // Monitor.Log("rewardHist", hist.ToArray(), displayType: Monitor.DisplayType.Independent); + } + } + + public BodyPart002 GetFirstBodyPart(BodyPartGroup bodyPartGroup) + { + var bodyPart = BodyParts.FirstOrDefault(x=>x.Group == bodyPartGroup); + return bodyPart; + } + public List GetBodyParts() + { + return BodyParts; + } + public List GetBodyParts(BodyPartGroup bodyPartGroup) + { + return BodyParts.Where(x=>x.Group == bodyPartGroup).ToList(); + } + + public float GetActionDifference() + { + float actionDifference = 1f - vectorDifference.Average(); + actionDifference = Mathf.Clamp(actionDifference, 0, 1); + actionDifference = Mathf.Pow(actionDifference,2); + return actionDifference; + } + + void SetupBody() + { + _agent = GetComponent(); + _decisionRequester = GetComponent(); + Time.fixedDeltaTime = FixedDeltaTime; + + BodyParts = new List (); + BodyPart002 root = null; + foreach (var t in GetComponentsInChildren()) + { + if (BodyConfig.GetBodyPartGroup(t.name) == BodyHelper002.BodyPartGroup.None) + continue; + + var bodyPart = new BodyPart002{ + Rigidbody = t.GetComponent(), + Transform = t, + Name = t.name, + Group = BodyConfig.GetBodyPartGroup(t.name), + }; + if (bodyPart.Group == BodyConfig.GetRootBodyPart()) + root = bodyPart; + bodyPart.Root = root; + bodyPart.Init(); + BodyParts.Add(bodyPart); + } + var partCount = BodyParts.Count; + + Muscles = new List (); + var muscles = GetComponentsInChildren(); + ConfigurableJoint rootConfigurableJoint = null; + var ragDoll = GetComponent(); + foreach (var m in muscles) + { + var maximumForce = ragDoll.MusclePowers.First(x=>x.Muscle == m.name).PowerVector; + maximumForce *= ragDoll.MotorScale; + var muscle = new Muscle002{ + Rigidbody = m.GetComponent(), + Transform = m.GetComponent(), + ConfigurableJoint = m, + Name = m.name, + Group = BodyConfig.GetMuscleGroup(m.name), + MaximumForce = maximumForce + }; + if (muscle.Group == BodyConfig.GetRootMuscle()) + rootConfigurableJoint = muscle.ConfigurableJoint; + muscle.RootConfigurableJoint = rootConfigurableJoint; + muscle.Init(); + + Muscles.Add(muscle); + } + _startCount++; + } + + + + void HandleModelReset() + { + Transform[] allChildren = _agent.GetComponentsInChildren(); + if (transformsPosition != null) + { + foreach (var child in allChildren) + { + child.position = transformsPosition[child.gameObject]; + child.rotation = transformsRotation[child.gameObject]; + var childRb = child.GetComponent(); + if (childRb != null) + { + childRb.angularVelocity = Vector3.zero; + childRb.velocity = Vector3.zero; + } + } + + } + else + { + startPosition = _agent.transform.position; + transformsPosition = new Dictionary(); + transformsRotation = new Dictionary(); + foreach (Transform child in allChildren) + { + transformsPosition[child.gameObject] = child.position; + transformsRotation[child.gameObject] = child.rotation; + } + } + } + + public float GetHeightNormalizedReward(float maxHeight) + { + var height = GetHeight(); + var heightPenality = maxHeight - height; + heightPenality = Mathf.Clamp(heightPenality, 0f, maxHeight); + var reward = 1f - heightPenality; + reward = Mathf.Clamp(reward, 0f, 1f); + return reward; + } + internal float GetHeight() + { + var feetYpos = BodyParts + .Where(x => x.Group == BodyPartGroup.Foot) + .Select(x => x.Transform.position.y) + .OrderBy(x => x) + .ToList(); + float lowestFoot = 0f; + if (feetYpos != null && feetYpos.Count != 0) + lowestFoot = feetYpos[0]; + var height = GetFirstBodyPart(BodyPartGroup.Head).Transform.position.y - lowestFoot; + return height; + } + public float GetDirectionNormalizedReward(BodyPartGroup bodyPartGroup, Vector3 direction) + { + BodyPart002 bodyPart = GetFirstBodyPart(bodyPartGroup); + float maxBonus = 1f; + var toFocalAngle = bodyPart.ToFocalRoation * bodyPart.Transform.right; + var angle = Vector3.Angle(toFocalAngle, direction); + var qpos2 = (angle % 180) / 180; + var bonus = maxBonus * (2 - (Mathf.Abs(qpos2) * 2) - 1); + return bonus; + } + + public float GetUprightNormalizedReward(BodyPartGroup bodyPartGroup) + { + BodyPart002 bodyPart = GetFirstBodyPart(bodyPartGroup); + float maxBonus = 1f; + var toFocalAngle = bodyPart.ToFocalRoation * -bodyPart.Transform.forward; + var angleFromUp = Vector3.Angle(toFocalAngle, Vector3.up); + var qpos2 = (angleFromUp % 180) / 180; + var uprightBonus = maxBonus * (2 - (Mathf.Abs(qpos2) * 2) - 1); + return uprightBonus; + } + public float GetEffortNormalized(string[] ignorJoints = null) + { + double effort = 0; + double jointEffort = 0; + double joints = 0; + foreach (var muscle in Muscles) + { + if(muscle.Parent == null) + continue; + var name = muscle.Name; + if (ignorJoints != null && ignorJoints.Contains(name)) + continue; + if (muscle.ConfigurableJoint.angularXMotion != ConfigurableJointMotion.Locked) { + jointEffort = Mathf.Pow(Mathf.Abs(muscle.TargetNormalizedRotationX),2); + effort += jointEffort; + joints++; + } + if (muscle.ConfigurableJoint.angularYMotion != ConfigurableJointMotion.Locked) { + jointEffort = Mathf.Pow(Mathf.Abs(muscle.TargetNormalizedRotationY),2); + effort += jointEffort; + joints++; + } + if (muscle.ConfigurableJoint.angularZMotion != ConfigurableJointMotion.Locked) { + jointEffort = Mathf.Pow(Mathf.Abs(muscle.TargetNormalizedRotationZ),2); + effort += jointEffort; + joints++; + } + } + + return (float) (effort / joints); + } + public void OnSensorCollisionEnter(Collider sensorCollider, GameObject other) { + // if (string.Compare(other.name, "Terrain", true) !=0) + if (other.GetComponent() == null) + return; + var sensor = Sensors + .FirstOrDefault(x=>x == sensorCollider.gameObject); + if (sensor != null) { + var idx = Sensors.IndexOf(sensor); + SensorIsInTouch[idx] = 1f; + } + } + public void OnSensorCollisionExit(Collider sensorCollider, GameObject other) + { + // if (string.Compare(other.gameObject.name, "Terrain", true) !=0) + if (other.GetComponent() == null) + return; + var sensor = Sensors + .FirstOrDefault(x=>x == sensorCollider.gameObject); + if (sensor != null) { + var idx = Sensors.IndexOf(sensor); + SensorIsInTouch[idx] = 0f; + } + } + public Vector3 GetLocalCenterOfMass() + { + var centerOfMass = GetCenterOfMass(); + centerOfMass -= transform.position; + return centerOfMass; + } + public Vector3 GetCenterOfMass() + { + var centerOfMass = Vector3.zero; + float totalMass = 0f; + var bodies = BodyParts + .Select(x=>x.Rigidbody) + .Where(x=>x!=null) + .ToList(); + foreach (Rigidbody rb in bodies) + { + centerOfMass += rb.worldCenterOfMass * rb.mass; + totalMass += rb.mass; + } + centerOfMass /= totalMass; + return centerOfMass; + } + + public Vector3 GetNormalizedVelocity() + { + var pelvis = GetFirstBodyPart(BodyConfig.GetRootBodyPart()); + Vector3 metersPerSecond = pelvis.Rigidbody.velocity; + var n = GetNormalizedVelocity(metersPerSecond); + return n; + } + + public Vector3 GetNormalizedPosition() + { + // var position = GetCenterOfMass(); + var pelvis = GetFirstBodyPart(BodyConfig.GetRootBodyPart()); + var position = pelvis.Transform.position; + var normalizedPosition = GetNormalizedPosition(position - startPosition); + return normalizedPosition; + } + public void SetDebugFrameReward(float reward) + { + FrameReward = reward; + var stepCount = _agent.StepCount > 0 ? _agent.StepCount : 1; + if (_decisionRequester?.DecisionPeriod > 1) + stepCount /= _decisionRequester.DecisionPeriod; + AverageReward = _agent.GetCumulativeReward() / (float) stepCount; + } + + + public List GetSensorIsInTouch() + { + return SensorIsInTouch; + } + // public List GetBodyPartsObservations() + // { + // List vectorObservation = new List(); + // foreach (var bodyPart in BodyParts) + // { + // bodyPart.UpdateObservations(); + // // _agent.sensor.AddObservation(bodyPart.ObsRotation); + // vectorObservation.Add(bodyPart.ObsRotation.x); + // vectorObservation.Add(bodyPart.ObsRotation.y); + // vectorObservation.Add(bodyPart.ObsRotation.z); + // vectorObservation.Add(bodyPart.ObsRotation.w); + + // // _agent.sensor.AddObservation(bodyPart.ObsRotationVelocity); + // vectorObservation.Add(bodyPart.ObsRotationVelocity.x); + // vectorObservation.Add(bodyPart.ObsRotationVelocity.y); + // vectorObservation.Add(bodyPart.ObsRotationVelocity.z); + + // // _agent.sensor.AddObservation(GetNormalizedVelocity(bodyPart.ObsVelocity)); + // var normalizedVelocity = GetNormalizedVelocity(bodyPart.ObsVelocity); + // vectorObservation.Add(normalizedVelocity.x); + // vectorObservation.Add(normalizedVelocity.y); + // vectorObservation.Add(normalizedVelocity.z); + // } + // return vectorObservation; + // } + public List GetMusclesObservations() + { + List vectorObservation = new List(); + foreach (var muscle in Muscles) + { + muscle.UpdateObservations(); + if (muscle.ConfigurableJoint.angularXMotion != ConfigurableJointMotion.Locked) + vectorObservation.Add(muscle.TargetNormalizedRotationX); + if (muscle.ConfigurableJoint.angularYMotion != ConfigurableJointMotion.Locked) + vectorObservation.Add(muscle.TargetNormalizedRotationY); + if (muscle.ConfigurableJoint.angularZMotion != ConfigurableJointMotion.Locked) + vectorObservation.Add(muscle.TargetNormalizedRotationZ); + } + return vectorObservation; + } + [Obsolete("use GetSensorObservations()")] + public List GetSensorYPositions() + { + var sensorYpositions = Sensors + .Select(x=> this.GetNormalizedPosition(x.transform.position - startPosition)) + .Select(x=>x.y) + .ToList(); + return sensorYpositions; + } + [Obsolete("use GetSensorObservations()")] + public List GetSensorZPositions() + { + var sensorYpositions = Sensors + .Select(x=> this.GetNormalizedPosition(x.transform.position - startPosition)) + .Select(x=>x.z) + .ToList(); + return sensorYpositions; + } + + public List GetSensorObservations() + { + var localSensorsPos = new Vector3[Sensors.Count]; + var globalSensorsPos = new Vector3[Sensors.Count]; + for (int i = 0; i < Sensors.Count; i++) { + globalSensorsPos[i] = sensorColliders[i].transform.TransformPoint(sensorColliders[i].center); + localSensorsPos[i] = globalSensorsPos[i] - startPosition; + } + + // get heights based on global senor position + var sensorsPos = Sensors + .Select(x=>x.transform.position).ToList(); + var senorHeights = _terrainGenerator != null + ? _terrainGenerator.GetDistances2d(globalSensorsPos) + : Enumerable.Range(0, globalSensorsPos.Length).Select(x=>0f).ToList(); + for (int i = 0; i < Sensors.Count; i++) { + senorHeights[i] -= sensorColliders[i].radius; + if (senorHeights[i] >= 1f) + senorHeights[i] = 1f; + } + + // get z positions based on local positions + var bounds = _spawnableEnv.bounds; + var normalizedZ = localSensorsPos + .Select(x=>x.z / (bounds.extents.z)) + .ToList(); + var observations = senorHeights + .Concat(normalizedZ) + .ToList(); + return observations; + } + + // public void OnCollectObservationsHandleDebug(AgentInfo info) + // { + // if (Observations?.Count != info.vectorObservation.Count) + // Observations = Enumerable.Range(0, info.vectorObservation.Count).Select(x => 0f).ToList(); + // ObservationNormalizedErrors = 0; + // for (int i = 0; i < Observations.Count; i++) + // { + // Observations[i] = info.vectorObservation[i]; + // var x = Mathf.Abs(Observations[i]); + // var e = Mathf.Epsilon; + // bool is1 = Mathf.Approximately(x, 1f); + // if ((x > 1f + e) && !is1) + // ObservationNormalizedErrors++; + // } + // if (ObservationNormalizedErrors > MaxObservationNormalizedErrors) + // MaxObservationNormalizedErrors = ObservationNormalizedErrors; + + // var pelvis = GetFirstBodyPart(BodyPartGroup.Hips); + // DistanceTraveled = pelvis.Transform.position.x; + // MaxDistanceTraveled = Mathf.Max(MaxDistanceTraveled, DistanceTraveled); + // Vector3 metersPerSecond = pelvis.Rigidbody.velocity; + // Vector3 mph = metersPerSecond * 2.236936f; + // mphBuffer.Add(mph); + // if (mphBuffer.Count > 100) + // mphBuffer.RemoveAt(0); + // var aveMph = new Vector3( + // mphBuffer.Select(x=>x.x).Average(), + // mphBuffer.Select(x=>x.y).Average(), + // mphBuffer.Select(x=>x.z).Average() + // ); + // if (ShowMonitor) + // { + // Monitor.Log("MaxDistance", MaxDistanceTraveled.ToString()); + // Monitor.Log("NormalizedPos", GetNormalizedPosition().ToString()); + // Monitor.Log("MPH: ", (aveMph).ToString()); + // } + // } + + float NextGaussian(float mu = 0, float sigma = 1) + { + var u1 = UnityEngine.Random.value; + var u2 = UnityEngine.Random.value; + + var rand_std_normal = Mathf.Sqrt(-2.0f * Mathf.Log(u1)) * + Mathf.Sin(2.0f * Mathf.PI * u2); + + var rand_normal = mu + sigma * rand_std_normal; + + return rand_normal; + } + public Vector3 GetNormalizedVelocity(Vector3 metersPerSecond) + { + var maxMetersPerSecond = _spawnableEnv.bounds.size + / _agent.MaxStep + / Time.fixedDeltaTime; + var maxXZ = Mathf.Max(maxMetersPerSecond.x, maxMetersPerSecond.z); + maxMetersPerSecond.x = maxXZ; + maxMetersPerSecond.z = maxXZ; + maxMetersPerSecond.y = 53; // override with + float x = metersPerSecond.x / maxMetersPerSecond.x; + float y = metersPerSecond.y / maxMetersPerSecond.y; + float z = metersPerSecond.z / maxMetersPerSecond.z; + // clamp result + x = Mathf.Clamp(x, -1f, 1f); + y = Mathf.Clamp(y, -1f, 1f); + z = Mathf.Clamp(z, -1f, 1f); + Vector3 normalizedVelocity = new Vector3(x,y,z); + return normalizedVelocity; + } + public Vector3 GetNormalizedPosition(Vector3 pos) + { + var maxPos = _spawnableEnv.bounds.size; + float x = pos.x / maxPos.x; + float y = pos.y / maxPos.y; + float z = pos.z / maxPos.z; + // clamp result + x = Mathf.Clamp(x, -1f, 1f); + y = Mathf.Clamp(y, -1f, 1f); + z = Mathf.Clamp(z, -1f, 1f); + Vector3 normalizedPos = new Vector3(x,y,z); + return normalizedPos; + } +} diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyManager002.cs.meta b/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyManager002.cs.meta new file mode 100644 index 0000000..4e08368 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyManager002.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 776799f55314f4500bc35f859c94e2fe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyPart002.cs b/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyPart002.cs new file mode 100644 index 0000000..cc29f26 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyPart002.cs @@ -0,0 +1,239 @@ +// A class that describes a body part of an Agent or an Animator. The object +// stores the rigid body associated with an Agent's body part. Along with some +// important data like root bone, i. e. 'butt' for a marathonMan. Implments methods +// to calculate distance to the characteristics of an animation being mimiced. + +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using Unity.MLAgents; + + +[System.Serializable] +public class BodyPart002 +{ + + public string Name; + public BodyHelper002.BodyPartGroup Group; + + public Vector3 ObsLocalPosition; + public Quaternion ObsRotation; + public Quaternion ObsRotationFromBase; + public Vector3 ObsRotationVelocity; + public Vector3 ObsVelocity; + public float ObsAngleDeltaFromAnimationRotation; + public Vector3 ObsDeltaFromAnimationPosition; + + public Vector3 ObsDeltaFromAnimationVelocity; + public Vector3 ObsDeltaFromAnimationAngularVelocity; + public Vector3 ObsDeltaFromAnimationAngularVelocityWorld; + public Vector3 DebugMaxRotationVelocity; + public Vector3 DebugMaxVelocity; + + public Quaternion DefaultLocalRotation; + public Quaternion ToJointSpaceInverse; + public Quaternion ToJointSpaceDefault; + + public Rigidbody Rigidbody; + public Transform Transform; + public BodyPart002 Root; + public Quaternion InitialRootRotation; + public Vector3 InitialRootPosition; + + // base = from where to measure rotation and position from + public Quaternion BaseRotation; + public Vector3 BasePosition; + // + public Quaternion ToFocalRoation; + + + Quaternion _lastObsRotation; + Quaternion _lastWorldRotation; + Vector3 _lastLocalPosition; + Vector3 _lastWorldPosition; + Vector3 _animationAngularVelocity; + Vector3 _animationAngularVelocityWorld; + Vector3 _animationVelocityWorld; + + DecisionRequester _decisionRequester; + + float _lastUpdateObsTime; + bool _firstRunComplete; + bool _hasRanVeryFirstInit; + private Vector3 _animationPositionWorld; + private Quaternion _animationRotation; + + static Vector3 Vector3Max (Vector3 a, Vector3 b) + { + var answer = new Vector3( + Mathf.Max(Mathf.Abs(a.x), Mathf.Abs(b.x)), + Mathf.Max(Mathf.Abs(a.y), Mathf.Abs(b.y)), + Mathf.Max(Mathf.Abs(a.z), Mathf.Abs(b.z))); + return answer; + } + + // Initialize + public void Init() + { + _decisionRequester = GameObject.Find("MarathonMan").GetComponent(); + + _firstRunComplete = false; + if (Rigidbody != null){ + Rigidbody.angularVelocity = Vector3.zero; + Rigidbody.velocity = Vector3.zero; + } + + if (!_hasRanVeryFirstInit) { + + InitialRootRotation = Root.Transform.transform.rotation; + InitialRootPosition = Root.Transform.transform.position; + BaseRotation = Root.Transform.transform.rotation; + BasePosition = Root.Transform.transform.position; + + DefaultLocalRotation = LocalRotation; + Vector3 forward = this.Transform.forward; + Vector3 up = this.Transform.up; + Quaternion toJointSpace = Quaternion.LookRotation(forward, up); + + ToJointSpaceInverse = Quaternion.Inverse(toJointSpace); + ToJointSpaceDefault = DefaultLocalRotation * toJointSpace; + + // set body part direction + Vector3 focalOffset = new Vector3(10,0,0); + if (Rigidbody != null){ + var focalPoint = Rigidbody.position + focalOffset; + ToFocalRoation = Rigidbody.rotation; + ToFocalRoation.SetLookRotation(focalPoint - Rigidbody.position); + } + + _hasRanVeryFirstInit = true; + + } + } + + // Update values like ObsLocalPosition, ObsRotation, ... that will be accessed + // by the agent as observations for the neural network. Also calculates distances + // to an animation being mimicked + public void UpdateObservations() + { + Quaternion rotation; + Vector3 position; + if (this == Root) { + rotation = Quaternion.Inverse(InitialRootRotation) * Transform.rotation; + position = Transform.position - InitialRootPosition; + } + else { + rotation = Quaternion.Inverse(Root.Transform.rotation) * Transform.rotation; + position = Transform.position - Root.Transform.position; + } + + if (_firstRunComplete == false){ + _lastUpdateObsTime = Time.time; + _lastLocalPosition = position; + _lastWorldPosition = Transform.position; + _lastObsRotation = rotation; + _lastWorldRotation = Transform.rotation; + } + + var dt = Time.fixedDeltaTime * _decisionRequester.DecisionPeriod; + + var velocity = (position - _lastLocalPosition)/dt; + var velocityWorld = (Transform.position - _lastWorldPosition)/dt; + var angularVelocity = JointHelper002.CalcDeltaRotationNormalizedEuler(_lastObsRotation, rotation)/dt; + var angularVelocityWorld = JointHelper002.CalcDeltaRotationNormalizedEuler(_lastWorldRotation, Transform.rotation)/dt; + + // old calulation for observation vector + //angularVelocity = NormalizedEulerAngles(rotationVelocity.eulerAngles); + //angularVelocity /= 128f; + // old calculation end + + _lastUpdateObsTime = Time.time; + _lastLocalPosition = position; + _lastWorldPosition = Transform.position; + _lastObsRotation = rotation; + _lastWorldRotation = Transform.rotation; + + //if (Name == "right_right_foot") { + // Debug.Log("^^^^^^^^^^^^"); + // Debug.Log("body part name: " + Name); + // Debug.Log("animation angular velocity:" + _animationAngularVelocity); + // Debug.Log("angular velocity:" + angularVelocity); + // Debug.Log("animation angular velocity world:" + _animationAngularVelocityWorld); + // Debug.Log("angular velocity world:" + angularVelocityWorld); + // Debug.Log("rotation local:" + rotation.eulerAngles); + // Debug.Log("animation rotation local: " + _animationRotation.eulerAngles); + // Debug.Log("velocity world: " + velocityWorld); + // Debug.Log("animation velocity world:" + _animationVelocityWorld); + // Debug.Log("transform position:" + Transform.position); + // Debug.Log("animation position world: " + _animationPositionWorld); + // Debug.Log("dt:" + dt); + //} + + ObsLocalPosition = position; + ObsRotation = rotation; + ObsRotationVelocity = angularVelocity; + ObsVelocity = velocity; + + ObsDeltaFromAnimationPosition = _animationPositionWorld - Transform.position; + + ObsAngleDeltaFromAnimationRotation = Quaternion.Angle(_animationRotation, rotation); + ObsAngleDeltaFromAnimationRotation = JointHelper002.NormalizedAngle(ObsAngleDeltaFromAnimationRotation); + + ObsDeltaFromAnimationVelocity = _animationVelocityWorld - velocityWorld; + ObsDeltaFromAnimationAngularVelocity = (_animationAngularVelocity - angularVelocity); + ObsDeltaFromAnimationAngularVelocityWorld = (_animationAngularVelocityWorld - angularVelocityWorld); + + DebugMaxRotationVelocity = Vector3Max(DebugMaxRotationVelocity, angularVelocity); + DebugMaxVelocity = Vector3Max(DebugMaxVelocity, velocity); + + _firstRunComplete = true; + } + + // returns local rotation + public Quaternion LocalRotation { + get { + return Quaternion.Inverse(RootRotation) * Transform.rotation; + } + } + + // retuns root rotation + public Quaternion RootRotation{ + get { + return InitialRootRotation; + } + } + + // Set the position, rotation of a body part to match animation's position and + // rotation. Also sets the rigid body's position and velocity, which is used + // in angular momentum calculation + public void MoveToAnim(Vector3 animPosition, Quaternion animRotation, Vector3 angularVelocity, Vector3 velocity) + { + Transform.position = animPosition; + Transform.rotation = animRotation; + if (Rigidbody != null){ + foreach (var childRb in Rigidbody.GetComponentsInChildren()) + { + if (childRb == Rigidbody) + continue; + childRb.transform.localPosition = Vector3.zero; + childRb.transform.localEulerAngles = Vector3.zero; + childRb.angularVelocity = Vector3.zero; + childRb.velocity = Vector3.zero; + } + Rigidbody.angularVelocity = angularVelocity; + Rigidbody.velocity = velocity; + } + } + + // Set the position of the animation being mimicked + public void SetAnimationPosition(Vector3 animPositionWorld, Quaternion animRotationLocal, Vector3 animVelocityWorld, Vector3 animAngularVelocityLocal, Vector3 animAngularVelocityWorld) + { + _animationPositionWorld = animPositionWorld; + _animationRotation = animRotationLocal; + + _animationVelocityWorld = animVelocityWorld; + _animationAngularVelocity = animAngularVelocityLocal; + _animationAngularVelocityWorld = animAngularVelocityWorld; + } +} \ No newline at end of file diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyPart002.cs.meta b/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyPart002.cs.meta new file mode 100644 index 0000000..6998c1b --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/BodyPart002.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d6e9d3ad85936e6459222f0017b88b80 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/DomainRandomization.cs b/Assets/MarathonEnvs/Scripts/Ragdoll002/DomainRandomization.cs new file mode 100644 index 0000000..f0cd080 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/DomainRandomization.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using Unity.MLAgents; +using UnityEngine; + +public class DomainRandomization : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/DomainRandomization.cs.meta b/Assets/MarathonEnvs/Scripts/Ragdoll002/DomainRandomization.cs.meta new file mode 100644 index 0000000..85e011c --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/DomainRandomization.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e04e2081c5c5647a9993dcdc05765cd0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/JointHelper002.cs b/Assets/MarathonEnvs/Scripts/Ragdoll002/JointHelper002.cs new file mode 100644 index 0000000..696f279 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/JointHelper002.cs @@ -0,0 +1,107 @@ +// Helper Utilities to work with agent's rigid bodies charateristics. Allows to +// calculate Angles between rotations in radians, find center of mass of an agent, +// and find Angular Momentum of an agent. + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System; + +public static class JointHelper002 { + + // Return rotation from one rotation to another + public static Quaternion FromToRotation(Quaternion from, Quaternion to) { + if (to == from) return Quaternion.identity; + + return to * Quaternion.Inverse(from); + } + + // Calculate rotation between two rotations in radians. Adjusts the value to lie within [-pi, +pi]. + public static Vector3 NormalizedEulerAngles(Vector3 eulerAngles) { + var x = eulerAngles.x < 180f ? + eulerAngles.x : + -360 + eulerAngles.x; + var y = eulerAngles.y < 180f ? + eulerAngles.y : + -360 + eulerAngles.y; + var z = eulerAngles.z < 180f ? + eulerAngles.z : + -360 + eulerAngles.z; + x = x * Mathf.Deg2Rad; + y = y * Mathf.Deg2Rad; + z = z * Mathf.Deg2Rad; + return new Vector3(x, y, z); + } + + // Adjust the value of an angle to lie within [-pi, +pi]. + public static float NormalizedAngle(float angle) { + if (angle < 180) { + return angle * Mathf.Deg2Rad; + } + return (angle - 360) * Mathf.Deg2Rad; + } + + // Find rotation and convert to radians within [-pi, +pi]. + public static Vector3 CalcDeltaRotationNormalizedEuler(Quaternion from, Quaternion to) { + var rotationVelocity = FromToRotation(from, to); + var angularVelocity = NormalizedEulerAngles(rotationVelocity.eulerAngles); + return angularVelocity; + } + + // Find the center of mass of a list of Body Parts beloning to an agent. Relative to the root bone, i. e. "butt" for humanoid. + public static Vector3 GetCenterOfMassRelativeToRoot(List BodyParts) { + var centerOfMass = Vector3.zero; + float totalMass = 0f; + var bodies = BodyParts + .Select(x => x.Rigidbody) + .Where(x => x != null) + .ToList(); + var rootBone = BodyParts[0]; + foreach (Rigidbody rb in bodies) { + centerOfMass += rb.worldCenterOfMass * rb.mass; + totalMass += rb.mass; + } + centerOfMass /= totalMass; + centerOfMass -= rootBone.InitialRootPosition; + return centerOfMass; + } + + // Find the center of mass of a List of Body Parts relative to the world coordinate system. + public static Vector3 GetCenterOfMassWorld(List BodyParts) { + var centerOfMass = GetCenterOfMassRelativeToRoot(BodyParts) + BodyParts[0].InitialRootPosition; + return centerOfMass; + } + + // Calculate Angular Momentum of a List of Body Parts. In the world coordinate system about the center + // of mass of the Body Parts. Formulas at https://ocw.mit.edu/courses/aeronautics-and-astronautics/16-07-dynamics-fall-2009/lecture-notes/MIT16_07F09_Lec11.pdf + public static Vector3 GetAngularMoment(List BodyParts) { + var centerOfMass = GetCenterOfMassWorld(BodyParts); + var bodies = BodyParts + .Select(x => x.Rigidbody) + .Where(x => x != null) + .ToList(); + Vector3 totalAngularMoment = Vector3.zero; + foreach (Rigidbody rb in bodies) { + + var w_local = rb.transform.rotation * rb.angularVelocity; + var w_inertiaFrame = rb.inertiaTensorRotation * w_local; + + Vector3 L_inertiaFrame = Vector3.zero; + L_inertiaFrame[0] = w_inertiaFrame[0] * rb.inertiaTensor[0]; + L_inertiaFrame[1] = w_inertiaFrame[1] * rb.inertiaTensor[1]; + L_inertiaFrame[2] = w_inertiaFrame[2] * rb.inertiaTensor[2]; + + Vector3 L_world = Quaternion.Inverse(rb.transform.rotation) * Quaternion.Inverse(rb.inertiaTensorRotation) * L_inertiaFrame; + + Vector3 bodyPartCenterOfMassRelativeTobodyPartsCenterOfMass = rb.worldCenterOfMass - centerOfMass; + Vector3 LofBodyPartCenterOfMass = rb.mass * Vector3.Cross(bodyPartCenterOfMassRelativeTobodyPartsCenterOfMass, rb.velocity); + + totalAngularMoment += L_world + LofBodyPartCenterOfMass; + + } + return totalAngularMoment; + } +} + + diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/JointHelper002.cs.meta b/Assets/MarathonEnvs/Scripts/Ragdoll002/JointHelper002.cs.meta new file mode 100644 index 0000000..a2bd4e4 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/JointHelper002.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 168784be71eb147fd92601f19593c1b3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonHelper.cs b/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonHelper.cs new file mode 100644 index 0000000..b80fea5 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonHelper.cs @@ -0,0 +1,195 @@ +using System.Linq; +using UnityEngine; + +namespace Unity.MLAgents +{ + public static class MarathonHelper + { + static readonly bool FlipMarathonX = false; + + public static Vector3 RightToLeft(Vector3 rightHanded, bool hackFlipZ = false) + { + if (FlipMarathonX) + return new Vector3(rightHanded.x, rightHanded.z, + rightHanded.y); // use if fliping marathon's X direction + return new Vector3(-rightHanded.x, rightHanded.z, -rightHanded.y); // use to maintain marathon's X direction + } + + static char[] _delimiterChars = {' ', ',', ':', '\t'}; + + static string RemoveDuplicateWhitespace(string input) + { + while (input.Contains(" ")) + input = input.Replace(" ", " "); + while (input.Contains("\t\t")) + input = input.Replace("\t\t", "\t"); + return input; + } + + static float Evaluate(string expression) + { + var doc = new System.Xml.XPath.XPathDocument(new System.IO.StringReader("")); + var nav = doc.CreateNavigator(); + var newString = expression; + newString = (new System.Text.RegularExpressions.Regex(@"([\+\-\*])")).Replace(newString, " ${1} "); + newString = newString.Replace("/", " div ").Replace("%", " mod "); + var res = nav.Evaluate("number(" + newString + ")"); + double d = (double) res; + return (float) d; + } + + + static public Vector3 ParseVector3NoFlipYZ(string str) + { + str = RemoveDuplicateWhitespace(str); + string[] words = str.Split(_delimiterChars); + float x = Evaluate(words[0]); + float y = Evaluate(words[1]); + float z = Evaluate(words[2]); + var vec3 = new Vector3(x, y, z); + return vec3; + } + + static public Quaternion ParseQuaternion(string str) + { + str = RemoveDuplicateWhitespace(str); + string[] words = str.Split(_delimiterChars); + float w = Evaluate(words[0]); + float x = Evaluate(words[1]); + float y = Evaluate(words[2]); + float z = Evaluate(words[3]); + var q = new Quaternion(x, y, z, w); + return q; + } + + static public Vector3 ParseAxis(string str) + { + var axis = MarathonHelper.ParseVector3NoFlipYZ(str); + if (FlipMarathonX) + axis = new Vector3(-axis.x, -axis.z, -axis.y); // use if fliping marathon's X direction + else + axis = new Vector3(axis.x, -axis.z, axis.y); // use to maintain marathon's X direction + return axis; + } + + static public Vector3 JointParsePosition(string str, bool hackFlipZ) + { + str = RemoveDuplicateWhitespace(str); + string[] words = str.Split(_delimiterChars); + float x = Evaluate(words[0]); + float y = Evaluate(words[1]); + float z = Evaluate(words[2]); + Vector3 vec3 = new Vector3(x, y, z); + return RightToLeft(vec3, hackFlipZ); + } + + public static Vector3 ParsePosition(string str) + { + str = RemoveDuplicateWhitespace(str); + string[] words = str.Split(_delimiterChars); + float x = Evaluate(words[0]); + float y = Evaluate(words[1]); + float z = Evaluate(words[2]); + Vector3 vec3 = new Vector3(x, y, z); + return RightToLeft(vec3); + } + + public static Vector3 ParseFrom(string fromTo) + { + return ParseVector3NoFlipYZ(fromTo); + } + + public static Vector3 ParseTo(string fromTo) + { + fromTo = RemoveDuplicateWhitespace(fromTo); + string[] words = fromTo.Split(_delimiterChars); + float x = Evaluate(words[3]); + float y = Evaluate(words[4]); + float z = Evaluate(words[5]); + Vector3 vec3 = new Vector3(x, y, z); + return vec3; + } + + public static Vector2 ParseVector2(string str) + { + str = RemoveDuplicateWhitespace(str); + string[] words = str.Split(_delimiterChars); + float x = Evaluate(words[0]); + float y = Evaluate(words[1]); + var vec2 = new Vector2(x, y); + return vec2; + } + + public static float ParseGetMin(string rangeAsText) + { + rangeAsText = RemoveDuplicateWhitespace(rangeAsText); + string[] words = rangeAsText.Split(_delimiterChars); + var range = words.Select(x => Evaluate(x)); + return range.Min(); + } + + public static float ParseGetMax(string rangeAsText) + { + rangeAsText = RemoveDuplicateWhitespace(rangeAsText); + string[] words = rangeAsText.Split(_delimiterChars); + var range = words.Select(x => Evaluate(x)); + return range.Max(); + } + + + public static GameObject CreateBetweenPoints(this GameObject parent, Vector3 start, Vector3 end, float width, + bool useWorldSpace, GameObject root) + { + start = RightToLeft(start); + end = RightToLeft(end); + var instance = new GameObject(); + var procCap = instance.AddComponent(); + var handleOverlap = instance.AddComponent(); + handleOverlap.Parent = root; + var collider = instance.AddComponent(); + var offset = start - end; + var position = start - (offset / 2.0f); + var height = offset.magnitude; + collider.height = height + (width * 2) * .90f; + collider.radius = width * .90f; + procCap.height = height + (width); + procCap.radius = width; + procCap.CreateMesh(); + + instance.transform.parent = root.transform; + instance.transform.up = offset; + if (useWorldSpace) + { + instance.transform.position = position; + } + else + { + instance.transform.position = position + parent.transform.position; + instance.transform.rotation = instance.transform.rotation * parent.transform.rotation; + } + + // UnityEngine.GameObject.Destroy(handleOverlap); + return instance; + } + + public static GameObject CreateAtPoint(this GameObject parent, Vector3 position, float width, + bool useWorldSpace, GameObject root) + { + var scale = new Vector3(width, width, width); + var instance = GameObject.CreatePrimitive(PrimitiveType.Sphere); + instance.transform.parent = root.transform; + instance.transform.localScale = scale * 2; + if (useWorldSpace) + { + instance.transform.position = position; + } + else + { + instance.transform.position = position + parent.transform.position; + instance.transform.rotation = instance.transform.rotation * parent.transform.rotation; + } + + return instance; + } + } +} \ No newline at end of file diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonHelper.cs.meta b/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonHelper.cs.meta new file mode 100644 index 0000000..07191fd --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonHelper.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: badf427d082e546a0b2b91e0b251f39d +timeCreated: 1515352351 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonJoint.cs b/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonJoint.cs new file mode 100644 index 0000000..203070a --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonJoint.cs @@ -0,0 +1,18 @@ +using UnityEngine; + +namespace Unity.MLAgents +{ + [System.Serializable] + public class MarathonJoint + { + public Joint Joint; + public string Name; + public string JointName; + public Vector2 CtrlRange; + public bool? CtrlLimited; + public float? Gear; + public ConfigurableJoint TrueBase; + public Transform TrueTarget; + public float MaximumForce; + } +} diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonJoint.cs.meta b/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonJoint.cs.meta new file mode 100644 index 0000000..de81495 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonJoint.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 7e8c7f9aa73bc4a34bb844acd8d4dc68 +timeCreated: 1515741765 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonSensor.cs b/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonSensor.cs new file mode 100644 index 0000000..96ebd21 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonSensor.cs @@ -0,0 +1,12 @@ +using UnityEngine; + +namespace Unity.MLAgents +{ + [System.Serializable] + public class MarathonSensor + { + public Collider SiteObject; + public string Name; + public string SiteName; + } +} \ No newline at end of file diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonSensor.cs.meta b/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonSensor.cs.meta new file mode 100644 index 0000000..e0e8fd8 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonSensor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: c363fa98af67a4ed8b4ce15b4baefc8d +timeCreated: 1520405313 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonSpawner.cs b/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonSpawner.cs new file mode 100644 index 0000000..7d58221 --- /dev/null +++ b/Assets/MarathonEnvs/Scripts/Ragdoll002/MarathonSpawner.cs @@ -0,0 +1,1270 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml.Linq; +using UnityEngine; + +namespace Unity.MLAgents +{ + public class MarathonSpawner : MonoBehaviour + { + [Tooltip("The MuJoCo xml file to parse")] + /**< \brief The MuJoCo xml file to parse*/ + public TextAsset Xml; + + public Material Material; + public PhysicMaterial PhysicMaterial; + + [Tooltip("When True, UnityEngine.Time.fixedDeltaTime is set by