├── .gitignore ├── .yamato └── sonar.yml ├── ArmRobot ├── Assets │ ├── Materials.meta │ ├── Materials │ │ ├── Blue.mat │ │ ├── Blue.mat.meta │ │ ├── Green.mat │ │ ├── Green.mat.meta │ │ ├── NavyFloor.mat │ │ ├── NavyFloor.mat.meta │ │ ├── Orange.mat │ │ ├── Orange.mat.meta │ │ ├── Red.mat │ │ ├── Red.mat.meta │ │ ├── White.mat │ │ └── White.mat.meta │ ├── Meshes.meta │ ├── Meshes │ │ ├── HandE.fbx │ │ ├── HandE.fbx.meta │ │ ├── Robotiq_EPick_2Cup.fbx │ │ ├── Robotiq_EPick_2Cup.fbx.meta │ │ ├── Robotiq_EPick_4Cup.fbx │ │ ├── Robotiq_EPick_4Cup.fbx.meta │ │ ├── Table.fbx │ │ ├── Table.fbx.meta │ │ ├── UnityRobotics_RF3_s1.fbx │ │ ├── UnityRobotics_RF3_s1.fbx.meta │ │ ├── WristCamera.fbx │ │ └── WristCamera.fbx.meta │ ├── PhysicsMaterials.meta │ ├── PhysicsMaterials │ │ ├── CubeMaterial.physicMaterial │ │ ├── CubeMaterial.physicMaterial.meta │ │ ├── GripperMaterial.physicMaterial │ │ ├── GripperMaterial.physicMaterial.meta │ │ ├── Slippery.physicMaterial │ │ └── Slippery.physicMaterial.meta │ ├── Scenes.meta │ ├── Scenes │ │ ├── ArticulationRobot.unity │ │ ├── ArticulationRobot.unity.meta │ │ ├── GripperScene.unity │ │ └── GripperScene.unity.meta │ ├── Scripts.meta │ └── Scripts │ │ ├── ArticulationHandManualInput.cs │ │ ├── ArticulationHandManualInput.cs.meta │ │ ├── ArticulationJointController.cs │ │ ├── ArticulationJointController.cs.meta │ │ ├── GripperDemoController.cs │ │ ├── GripperDemoController.cs.meta │ │ ├── GripperDemoManualInput.cs │ │ ├── GripperDemoManualInput.cs.meta │ │ ├── PincherController.cs │ │ ├── PincherController.cs.meta │ │ ├── PincherFingerController.cs │ │ ├── PincherFingerController.cs.meta │ │ ├── RobotController.cs │ │ ├── RobotController.cs.meta │ │ ├── RobotManualInput.cs │ │ └── RobotManualInput.cs.meta ├── Packages │ └── manifest.json ├── ProjectSettings │ ├── AudioManager.asset │ ├── ClusterInputManager.asset │ ├── DynamicsManager.asset │ ├── EditorBuildSettings.asset │ ├── EditorSettings.asset │ ├── GraphicsSettings.asset │ ├── InputManager.asset │ ├── NavMeshAreas.asset │ ├── Physics2DSettings.asset │ ├── PresetManager.asset │ ├── ProjectSettings.asset │ ├── ProjectVersion.txt │ ├── QualitySettings.asset │ ├── TagManager.asset │ ├── TimeManager.asset │ ├── UnityConnectSettings.asset │ ├── VFXManager.asset │ ├── VersionControlSettings.asset │ └── XRSettings.asset └── UserSettings │ └── EditorUserSettings.asset ├── LICENSE ├── README.md └── docs ├── Building-With-Articulations.md └── images ├── RobotHandDemo.gif ├── articulation_base.png ├── articulation_other.png ├── hand-e.gif ├── parent-child.png └── robot_still.png /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # This .gitignore file should be placed at the root of your Unity project directory 3 | # 4 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 5 | # 6 | **/[Ll]ibrary/ 7 | **/[Tt]emp/ 8 | **/[Oo]bj/ 9 | **/[Bb]uild/ 10 | **/[Bb]uilds/ 11 | **/[Ll]ogs/ 12 | **/[Mm]emoryCaptures/ 13 | 14 | # ignore log files 15 | *.log 16 | 17 | # ignore mlagents training files 18 | summaries 19 | models 20 | 21 | 22 | # Never ignore Asset meta data 23 | !**/[Aa]ssets/**/*.meta 24 | 25 | # Uncomment this line if you wish to ignore the asset store tools plugin 26 | # /[Aa]ssets/AssetStoreTools* 27 | 28 | # Autogenerated Jetbrains Rider plugin 29 | **/[Aa]ssets/Plugins/Editor/JetBrains* 30 | 31 | # Visual Studio cache directory 32 | **/.vs/ 33 | 34 | # Gradle cache directory 35 | **/.gradle/ 36 | 37 | # Autogenerated VS/MD/Consulo solution and project files 38 | **/ExportedObj/ 39 | **/.consulo/ 40 | *.csproj 41 | *.unityproj 42 | *.sln 43 | *.suo 44 | *.tmp 45 | *.user 46 | *.userprefs 47 | *.pidb 48 | *.booproj 49 | *.svd 50 | *.pdb 51 | *.mdb 52 | *.opendb 53 | *.VC.db 54 | *.DS_Store 55 | **/.vscode/ 56 | 57 | # Unity3D generated meta files 58 | *.pidb.meta 59 | *.pdb.meta 60 | *.mdb.meta 61 | 62 | # Unity3D generated file on crash reports 63 | sysinfo.txt 64 | 65 | # Builds 66 | *.apk 67 | *.unitypackage 68 | 69 | # Crashlytics generated file 70 | crashlytics-build.properties -------------------------------------------------------------------------------- /.yamato/sonar.yml: -------------------------------------------------------------------------------- 1 | name: Sonarqube Scan C# 2 | agent: 3 | type: Unity::metal::macmini 4 | image: package-ci/mac 5 | flavor: m1.mac 6 | variables: 7 | PROJECT_PATH: ArmRobot 8 | SONARQUBE_PROJECT_KEY: ai-robotics-articulations-robot-demo-csharp 9 | SONARQUBE_PROJECT_BASE_DIR: /Users/bokken/build/output/Unity-Technologies/articulations-robot-demo/ArmRobot 10 | MSBUILD_SLN_PATH: ./ArmRobot/ArmRobot.sln 11 | commands: 12 | - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.it.unity3d.com/artifactory/api/npm/upm-npm 13 | - unity-downloader-cli -u 2020.3.11f1 -c Editor 14 | - brew install mono corretto 15 | - curl https://github.com/SonarSource/sonar-scanner-msbuild/releases/download/5.2.1.31210/sonar-scanner-msbuild-5.2.1.31210-net46.zip -o sonar-scanner-msbuild-net46.zip -L 16 | - unzip sonar-scanner-msbuild-net46.zip -d ~/sonar-scanner-msbuild 17 | - chmod a+x ~/sonar-scanner-msbuild/sonar-scanner-4.6.1.2450/bin/sonar-scanner 18 | - .Editor/Unity.app/Contents/MacOS/Unity -projectPath $PROJECT_PATH -batchmode -quit -nographics -logFile - -executeMethod "UnityEditor.SyncVS.SyncSolution" 19 | - command: | 20 | cd $PROJECT_PATH 21 | for file in *.csproj; do sed -i.backup "s/^[[:blank:]]*false<\/ReferenceOutputAssembly>/true<\/ReferenceOutputAssembly>/g" $file; rm $file.backup; done 22 | cd ../ 23 | - mono ~/sonar-scanner-msbuild/SonarScanner.MSBuild.exe begin /k:$SONARQUBE_PROJECT_KEY /d:sonar.host.url=$SONARQUBE_ENDPOINT_URL_PRD /d:sonar.login=$SONARQUBE_TOKEN_PRD /d:sonar.projectBaseDir=$SONARQUBE_PROJECT_BASE_DIR 24 | - msbuild $MSBUILD_SLN_PATH 25 | - mono ~/sonar-scanner-msbuild/SonarScanner.MSBuild.exe end /d:sonar.login=$SONARQUBE_TOKEN_PRD 26 | triggers: 27 | cancel_old_ci: true 28 | expression: | 29 | ((pull_request.target eq "main" OR pull_request.target eq "dev") 30 | AND NOT pull_request.push.changes.all match "**/*.md") OR 31 | (push.branch eq "main" OR push.branch eq "dev") -------------------------------------------------------------------------------- /ArmRobot/Assets/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fa9a21829d8fc4d53813984aabc2a544 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Materials/Blue.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Blue 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 1, b: 1, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Materials/Blue.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4cc17d72108b14f1baaa4273535327b6 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Materials/Green.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Green 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.25690112, g: 0.8584906, b: 0.24701849, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Materials/Green.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 57c541320a8284fd9b12f825e193757b 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Materials/NavyFloor.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: NavyFloor 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.11 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.12486649, g: 0.18491678, b: 0.4339623, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Materials/NavyFloor.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c524ca7c24e1d478daab91c8156f6070 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Materials/Orange.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Orange 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.9150943, g: 0.6215488, b: 0.09927912, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Materials/Orange.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 85df92d311ba24813a1e4ea89e96a712 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Materials/Red.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Red 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.9339623, g: 0.36565503, b: 0.36565503, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Materials/Red.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 351a807c5fbdd4ff19fde1c2c5449e8c 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Materials/White.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: White 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 1, b: 1, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Materials/White.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 86badf78b6bcb4dcfa17d0032fea8134 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Meshes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9555cb81416d9452086af6b4efdff886 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Meshes/HandE.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/articulations-robot-demo/111705a8a4417fb7fe1816f46daa67ef01342464/ArmRobot/Assets/Meshes/HandE.fbx -------------------------------------------------------------------------------- /ArmRobot/Assets/Meshes/HandE.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f795b5118c0744de3bcac7a83315a637 3 | ModelImporter: 4 | serializedVersion: 20100 5 | internalIDToNameTable: [] 6 | externalObjects: {} 7 | materials: 8 | materialImportMode: 1 9 | materialName: 0 10 | materialSearch: 1 11 | materialLocation: 1 12 | animations: 13 | legacyGenerateAnimations: 4 14 | bakeSimulation: 0 15 | resampleCurves: 1 16 | optimizeGameObjects: 0 17 | motionNodeName: 18 | rigImportErrors: 19 | rigImportWarnings: 20 | animationImportErrors: 21 | animationImportWarnings: 22 | animationRetargetingWarnings: 23 | animationDoRetargetingWarnings: 0 24 | importAnimatedCustomProperties: 0 25 | importConstraints: 0 26 | animationCompression: 1 27 | animationRotationError: 0.5 28 | animationPositionError: 0.5 29 | animationScaleError: 0.5 30 | animationWrapMode: 0 31 | extraExposedTransformPaths: [] 32 | extraUserProperties: [] 33 | clipAnimations: [] 34 | isReadable: 1 35 | meshes: 36 | lODScreenPercentages: [] 37 | globalScale: 1 38 | meshCompression: 0 39 | addColliders: 0 40 | useSRGBMaterialColor: 1 41 | sortHierarchyByName: 1 42 | importVisibility: 1 43 | importBlendShapes: 1 44 | importCameras: 1 45 | importLights: 1 46 | swapUVChannels: 0 47 | generateSecondaryUV: 0 48 | useFileUnits: 1 49 | keepQuads: 0 50 | weldVertices: 1 51 | bakeAxisConversion: 0 52 | preserveHierarchy: 0 53 | skinWeightsMode: 0 54 | maxBonesPerVertex: 4 55 | minBoneWeight: 0.001 56 | meshOptimizationFlags: -1 57 | indexFormat: 0 58 | secondaryUVAngleDistortion: 8 59 | secondaryUVAreaDistortion: 15.000001 60 | secondaryUVHardAngle: 88 61 | secondaryUVMarginMethod: 0 62 | secondaryUVMinLightmapResolution: 40 63 | secondaryUVMinObjectScale: 1 64 | secondaryUVPackMargin: 4 65 | useFileScale: 1 66 | tangentSpace: 67 | normalSmoothAngle: 60 68 | normalImportMode: 0 69 | tangentImportMode: 3 70 | normalCalculationMode: 4 71 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 72 | blendShapeNormalImportMode: 1 73 | normalSmoothingSource: 0 74 | referencedClips: [] 75 | importAnimation: 1 76 | humanDescription: 77 | serializedVersion: 3 78 | human: [] 79 | skeleton: [] 80 | armTwist: 0.5 81 | foreArmTwist: 0.5 82 | upperLegTwist: 0.5 83 | legTwist: 0.5 84 | armStretch: 0.05 85 | legStretch: 0.05 86 | feetSpacing: 0 87 | globalScale: 1 88 | rootMotionBoneName: 89 | hasTranslationDoF: 0 90 | hasExtraRoot: 0 91 | skeletonHasParents: 1 92 | lastHumanDescriptionAvatarSource: {instanceID: 0} 93 | autoGenerateAvatarMappingIfUnspecified: 1 94 | animationType: 2 95 | humanoidOversampling: 1 96 | avatarSetup: 1 97 | additionalBone: 0 98 | userData: 99 | assetBundleName: 100 | assetBundleVariant: 101 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Meshes/Robotiq_EPick_2Cup.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/articulations-robot-demo/111705a8a4417fb7fe1816f46daa67ef01342464/ArmRobot/Assets/Meshes/Robotiq_EPick_2Cup.fbx -------------------------------------------------------------------------------- /ArmRobot/Assets/Meshes/Robotiq_EPick_2Cup.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7c1541e5c45cb4213bbdf61d5eae494f 3 | ModelImporter: 4 | serializedVersion: 26 5 | internalIDToNameTable: [] 6 | externalObjects: {} 7 | materials: 8 | importMaterials: 1 9 | materialName: 0 10 | materialSearch: 1 11 | materialLocation: 1 12 | animations: 13 | legacyGenerateAnimations: 4 14 | bakeSimulation: 0 15 | resampleCurves: 1 16 | optimizeGameObjects: 0 17 | motionNodeName: 18 | rigImportErrors: 19 | rigImportWarnings: 20 | animationImportErrors: 21 | animationImportWarnings: 22 | animationRetargetingWarnings: 23 | animationDoRetargetingWarnings: 0 24 | importAnimatedCustomProperties: 0 25 | importConstraints: 0 26 | animationCompression: 1 27 | animationRotationError: 0.5 28 | animationPositionError: 0.5 29 | animationScaleError: 0.5 30 | animationWrapMode: 0 31 | extraExposedTransformPaths: [] 32 | extraUserProperties: [] 33 | clipAnimations: [] 34 | isReadable: 1 35 | meshes: 36 | lODScreenPercentages: [] 37 | globalScale: 1 38 | meshCompression: 0 39 | addColliders: 0 40 | useSRGBMaterialColor: 1 41 | sortHierarchyByName: 1 42 | importVisibility: 1 43 | importBlendShapes: 1 44 | importCameras: 1 45 | importLights: 1 46 | swapUVChannels: 0 47 | generateSecondaryUV: 0 48 | useFileUnits: 1 49 | keepQuads: 0 50 | weldVertices: 1 51 | preserveHierarchy: 0 52 | skinWeightsMode: 0 53 | maxBonesPerVertex: 4 54 | minBoneWeight: 0.001 55 | meshOptimizationFlags: -1 56 | indexFormat: 0 57 | secondaryUVAngleDistortion: 8 58 | secondaryUVAreaDistortion: 15.000001 59 | secondaryUVHardAngle: 88 60 | secondaryUVPackMargin: 4 61 | useFileScale: 1 62 | tangentSpace: 63 | normalSmoothAngle: 60 64 | normalImportMode: 0 65 | tangentImportMode: 3 66 | normalCalculationMode: 4 67 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 68 | blendShapeNormalImportMode: 1 69 | normalSmoothingSource: 0 70 | referencedClips: [] 71 | importAnimation: 1 72 | copyAvatar: 0 73 | humanDescription: 74 | serializedVersion: 3 75 | human: [] 76 | skeleton: [] 77 | armTwist: 0.5 78 | foreArmTwist: 0.5 79 | upperLegTwist: 0.5 80 | legTwist: 0.5 81 | armStretch: 0.05 82 | legStretch: 0.05 83 | feetSpacing: 0 84 | globalScale: 1 85 | rootMotionBoneName: 86 | hasTranslationDoF: 0 87 | hasExtraRoot: 0 88 | skeletonHasParents: 1 89 | lastHumanDescriptionAvatarSource: {instanceID: 0} 90 | animationType: 0 91 | humanoidOversampling: 1 92 | additionalBone: 0 93 | userData: 94 | assetBundleName: 95 | assetBundleVariant: 96 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Meshes/Robotiq_EPick_4Cup.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/articulations-robot-demo/111705a8a4417fb7fe1816f46daa67ef01342464/ArmRobot/Assets/Meshes/Robotiq_EPick_4Cup.fbx -------------------------------------------------------------------------------- /ArmRobot/Assets/Meshes/Robotiq_EPick_4Cup.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a43032036699c4d738cddcefac29dea0 3 | ModelImporter: 4 | serializedVersion: 26 5 | internalIDToNameTable: [] 6 | externalObjects: {} 7 | materials: 8 | importMaterials: 1 9 | materialName: 0 10 | materialSearch: 1 11 | materialLocation: 1 12 | animations: 13 | legacyGenerateAnimations: 4 14 | bakeSimulation: 0 15 | resampleCurves: 1 16 | optimizeGameObjects: 0 17 | motionNodeName: 18 | rigImportErrors: 19 | rigImportWarnings: 20 | animationImportErrors: 21 | animationImportWarnings: 22 | animationRetargetingWarnings: 23 | animationDoRetargetingWarnings: 0 24 | importAnimatedCustomProperties: 0 25 | importConstraints: 0 26 | animationCompression: 1 27 | animationRotationError: 0.5 28 | animationPositionError: 0.5 29 | animationScaleError: 0.5 30 | animationWrapMode: 0 31 | extraExposedTransformPaths: [] 32 | extraUserProperties: [] 33 | clipAnimations: [] 34 | isReadable: 1 35 | meshes: 36 | lODScreenPercentages: [] 37 | globalScale: 1 38 | meshCompression: 0 39 | addColliders: 0 40 | useSRGBMaterialColor: 1 41 | sortHierarchyByName: 1 42 | importVisibility: 1 43 | importBlendShapes: 1 44 | importCameras: 1 45 | importLights: 1 46 | swapUVChannels: 0 47 | generateSecondaryUV: 0 48 | useFileUnits: 1 49 | keepQuads: 0 50 | weldVertices: 1 51 | preserveHierarchy: 0 52 | skinWeightsMode: 0 53 | maxBonesPerVertex: 4 54 | minBoneWeight: 0.001 55 | meshOptimizationFlags: -1 56 | indexFormat: 0 57 | secondaryUVAngleDistortion: 8 58 | secondaryUVAreaDistortion: 15.000001 59 | secondaryUVHardAngle: 88 60 | secondaryUVPackMargin: 4 61 | useFileScale: 1 62 | tangentSpace: 63 | normalSmoothAngle: 60 64 | normalImportMode: 0 65 | tangentImportMode: 3 66 | normalCalculationMode: 4 67 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 68 | blendShapeNormalImportMode: 1 69 | normalSmoothingSource: 0 70 | referencedClips: [] 71 | importAnimation: 1 72 | copyAvatar: 0 73 | humanDescription: 74 | serializedVersion: 3 75 | human: [] 76 | skeleton: [] 77 | armTwist: 0.5 78 | foreArmTwist: 0.5 79 | upperLegTwist: 0.5 80 | legTwist: 0.5 81 | armStretch: 0.05 82 | legStretch: 0.05 83 | feetSpacing: 0 84 | globalScale: 1 85 | rootMotionBoneName: 86 | hasTranslationDoF: 0 87 | hasExtraRoot: 0 88 | skeletonHasParents: 1 89 | lastHumanDescriptionAvatarSource: {instanceID: 0} 90 | animationType: 0 91 | humanoidOversampling: 1 92 | additionalBone: 0 93 | userData: 94 | assetBundleName: 95 | assetBundleVariant: 96 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Meshes/Table.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/articulations-robot-demo/111705a8a4417fb7fe1816f46daa67ef01342464/ArmRobot/Assets/Meshes/Table.fbx -------------------------------------------------------------------------------- /ArmRobot/Assets/Meshes/Table.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3fba682e7b5a0444eb5e51e6fc772147 3 | ModelImporter: 4 | serializedVersion: 26 5 | internalIDToNameTable: [] 6 | externalObjects: {} 7 | materials: 8 | importMaterials: 1 9 | materialName: 0 10 | materialSearch: 1 11 | materialLocation: 1 12 | animations: 13 | legacyGenerateAnimations: 4 14 | bakeSimulation: 0 15 | resampleCurves: 1 16 | optimizeGameObjects: 0 17 | motionNodeName: 18 | rigImportErrors: 19 | rigImportWarnings: 20 | animationImportErrors: 21 | animationImportWarnings: 22 | animationRetargetingWarnings: 23 | animationDoRetargetingWarnings: 0 24 | importAnimatedCustomProperties: 0 25 | importConstraints: 0 26 | animationCompression: 1 27 | animationRotationError: 0.5 28 | animationPositionError: 0.5 29 | animationScaleError: 0.5 30 | animationWrapMode: 0 31 | extraExposedTransformPaths: [] 32 | extraUserProperties: [] 33 | clipAnimations: [] 34 | isReadable: 1 35 | meshes: 36 | lODScreenPercentages: [] 37 | globalScale: 1 38 | meshCompression: 0 39 | addColliders: 0 40 | useSRGBMaterialColor: 1 41 | sortHierarchyByName: 1 42 | importVisibility: 1 43 | importBlendShapes: 1 44 | importCameras: 1 45 | importLights: 1 46 | swapUVChannels: 0 47 | generateSecondaryUV: 0 48 | useFileUnits: 1 49 | keepQuads: 0 50 | weldVertices: 1 51 | preserveHierarchy: 0 52 | skinWeightsMode: 0 53 | maxBonesPerVertex: 4 54 | minBoneWeight: 0.001 55 | meshOptimizationFlags: -1 56 | indexFormat: 0 57 | secondaryUVAngleDistortion: 8 58 | secondaryUVAreaDistortion: 15.000001 59 | secondaryUVHardAngle: 88 60 | secondaryUVPackMargin: 4 61 | useFileScale: 1 62 | tangentSpace: 63 | normalSmoothAngle: 60 64 | normalImportMode: 0 65 | tangentImportMode: 3 66 | normalCalculationMode: 4 67 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 68 | blendShapeNormalImportMode: 1 69 | normalSmoothingSource: 0 70 | referencedClips: [] 71 | importAnimation: 1 72 | copyAvatar: 0 73 | humanDescription: 74 | serializedVersion: 3 75 | human: [] 76 | skeleton: [] 77 | armTwist: 0.5 78 | foreArmTwist: 0.5 79 | upperLegTwist: 0.5 80 | legTwist: 0.5 81 | armStretch: 0.05 82 | legStretch: 0.05 83 | feetSpacing: 0 84 | globalScale: 1 85 | rootMotionBoneName: 86 | hasTranslationDoF: 0 87 | hasExtraRoot: 0 88 | skeletonHasParents: 1 89 | lastHumanDescriptionAvatarSource: {instanceID: 0} 90 | animationType: 0 91 | humanoidOversampling: 1 92 | additionalBone: 0 93 | userData: 94 | assetBundleName: 95 | assetBundleVariant: 96 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Meshes/UnityRobotics_RF3_s1.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/articulations-robot-demo/111705a8a4417fb7fe1816f46daa67ef01342464/ArmRobot/Assets/Meshes/UnityRobotics_RF3_s1.fbx -------------------------------------------------------------------------------- /ArmRobot/Assets/Meshes/UnityRobotics_RF3_s1.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 583fc14d55e195d4db06bf5785fd6fa6 3 | ModelImporter: 4 | serializedVersion: 26 5 | internalIDToNameTable: [] 6 | externalObjects: {} 7 | materials: 8 | importMaterials: 1 9 | materialName: 0 10 | materialSearch: 1 11 | materialLocation: 1 12 | animations: 13 | legacyGenerateAnimations: 4 14 | bakeSimulation: 0 15 | resampleCurves: 1 16 | optimizeGameObjects: 0 17 | motionNodeName: 18 | rigImportErrors: 19 | rigImportWarnings: 20 | animationImportErrors: 21 | animationImportWarnings: 22 | animationRetargetingWarnings: 23 | animationDoRetargetingWarnings: 0 24 | importAnimatedCustomProperties: 0 25 | importConstraints: 0 26 | animationCompression: 1 27 | animationRotationError: 0.5 28 | animationPositionError: 0.5 29 | animationScaleError: 0.5 30 | animationWrapMode: 0 31 | extraExposedTransformPaths: [] 32 | extraUserProperties: [] 33 | clipAnimations: [] 34 | isReadable: 1 35 | meshes: 36 | lODScreenPercentages: [] 37 | globalScale: 0.01 38 | meshCompression: 0 39 | addColliders: 0 40 | useSRGBMaterialColor: 1 41 | sortHierarchyByName: 1 42 | importVisibility: 1 43 | importBlendShapes: 1 44 | importCameras: 1 45 | importLights: 1 46 | swapUVChannels: 0 47 | generateSecondaryUV: 0 48 | useFileUnits: 1 49 | keepQuads: 0 50 | weldVertices: 1 51 | preserveHierarchy: 0 52 | skinWeightsMode: 0 53 | maxBonesPerVertex: 4 54 | minBoneWeight: 0.001 55 | meshOptimizationFlags: -1 56 | indexFormat: 0 57 | secondaryUVAngleDistortion: 8 58 | secondaryUVAreaDistortion: 15.000001 59 | secondaryUVHardAngle: 88 60 | secondaryUVPackMargin: 4 61 | useFileScale: 1 62 | tangentSpace: 63 | normalSmoothAngle: 60 64 | normalImportMode: 0 65 | tangentImportMode: 3 66 | normalCalculationMode: 4 67 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 68 | blendShapeNormalImportMode: 1 69 | normalSmoothingSource: 0 70 | referencedClips: [] 71 | importAnimation: 1 72 | copyAvatar: 0 73 | humanDescription: 74 | serializedVersion: 3 75 | human: [] 76 | skeleton: [] 77 | armTwist: 0.5 78 | foreArmTwist: 0.5 79 | upperLegTwist: 0.5 80 | legTwist: 0.5 81 | armStretch: 0.05 82 | legStretch: 0.05 83 | feetSpacing: 0 84 | globalScale: 0.01 85 | rootMotionBoneName: 86 | hasTranslationDoF: 0 87 | hasExtraRoot: 0 88 | skeletonHasParents: 1 89 | lastHumanDescriptionAvatarSource: {instanceID: 0} 90 | animationType: 2 91 | humanoidOversampling: 1 92 | additionalBone: 0 93 | userData: 94 | assetBundleName: 95 | assetBundleVariant: 96 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Meshes/WristCamera.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/articulations-robot-demo/111705a8a4417fb7fe1816f46daa67ef01342464/ArmRobot/Assets/Meshes/WristCamera.fbx -------------------------------------------------------------------------------- /ArmRobot/Assets/Meshes/WristCamera.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fea7e50b6a1d04b2d8d9d314cb55fbf3 3 | ModelImporter: 4 | serializedVersion: 26 5 | internalIDToNameTable: [] 6 | externalObjects: {} 7 | materials: 8 | importMaterials: 1 9 | materialName: 0 10 | materialSearch: 1 11 | materialLocation: 1 12 | animations: 13 | legacyGenerateAnimations: 4 14 | bakeSimulation: 0 15 | resampleCurves: 1 16 | optimizeGameObjects: 0 17 | motionNodeName: 18 | rigImportErrors: 19 | rigImportWarnings: 20 | animationImportErrors: 21 | animationImportWarnings: 22 | animationRetargetingWarnings: 23 | animationDoRetargetingWarnings: 0 24 | importAnimatedCustomProperties: 0 25 | importConstraints: 0 26 | animationCompression: 1 27 | animationRotationError: 0.5 28 | animationPositionError: 0.5 29 | animationScaleError: 0.5 30 | animationWrapMode: 0 31 | extraExposedTransformPaths: [] 32 | extraUserProperties: [] 33 | clipAnimations: [] 34 | isReadable: 1 35 | meshes: 36 | lODScreenPercentages: [] 37 | globalScale: 1 38 | meshCompression: 0 39 | addColliders: 0 40 | useSRGBMaterialColor: 1 41 | sortHierarchyByName: 1 42 | importVisibility: 1 43 | importBlendShapes: 1 44 | importCameras: 1 45 | importLights: 1 46 | swapUVChannels: 0 47 | generateSecondaryUV: 0 48 | useFileUnits: 1 49 | keepQuads: 0 50 | weldVertices: 1 51 | preserveHierarchy: 0 52 | skinWeightsMode: 0 53 | maxBonesPerVertex: 4 54 | minBoneWeight: 0.001 55 | meshOptimizationFlags: -1 56 | indexFormat: 0 57 | secondaryUVAngleDistortion: 8 58 | secondaryUVAreaDistortion: 15.000001 59 | secondaryUVHardAngle: 88 60 | secondaryUVPackMargin: 4 61 | useFileScale: 1 62 | tangentSpace: 63 | normalSmoothAngle: 60 64 | normalImportMode: 0 65 | tangentImportMode: 3 66 | normalCalculationMode: 4 67 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 68 | blendShapeNormalImportMode: 1 69 | normalSmoothingSource: 0 70 | referencedClips: [] 71 | importAnimation: 1 72 | copyAvatar: 0 73 | humanDescription: 74 | serializedVersion: 3 75 | human: [] 76 | skeleton: [] 77 | armTwist: 0.5 78 | foreArmTwist: 0.5 79 | upperLegTwist: 0.5 80 | legTwist: 0.5 81 | armStretch: 0.05 82 | legStretch: 0.05 83 | feetSpacing: 0 84 | globalScale: 1 85 | rootMotionBoneName: 86 | hasTranslationDoF: 0 87 | hasExtraRoot: 0 88 | skeletonHasParents: 1 89 | lastHumanDescriptionAvatarSource: {instanceID: 0} 90 | animationType: 0 91 | humanoidOversampling: 1 92 | additionalBone: 0 93 | userData: 94 | assetBundleName: 95 | assetBundleVariant: 96 | -------------------------------------------------------------------------------- /ArmRobot/Assets/PhysicsMaterials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8df2cebadec594e70beeb104665afdc3 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ArmRobot/Assets/PhysicsMaterials/CubeMaterial.physicMaterial: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!134 &13400000 4 | PhysicMaterial: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: CubeMaterial 10 | dynamicFriction: 0.5 11 | staticFriction: 0.5 12 | bounciness: 0.5 13 | frictionCombine: 0 14 | bounceCombine: 0 15 | -------------------------------------------------------------------------------- /ArmRobot/Assets/PhysicsMaterials/CubeMaterial.physicMaterial.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3d0bf61d361114f57882dd46e8074bae 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ArmRobot/Assets/PhysicsMaterials/GripperMaterial.physicMaterial: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!134 &13400000 4 | PhysicMaterial: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: GripperMaterial 10 | dynamicFriction: 1 11 | staticFriction: 1 12 | bounciness: 0 13 | frictionCombine: 0 14 | bounceCombine: 1 15 | -------------------------------------------------------------------------------- /ArmRobot/Assets/PhysicsMaterials/GripperMaterial.physicMaterial.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 71dfc7ae434434d0489d7d2d4dd29ba0 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ArmRobot/Assets/PhysicsMaterials/Slippery.physicMaterial: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!134 &13400000 4 | PhysicMaterial: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: Slippery 10 | dynamicFriction: 0.3 11 | staticFriction: 0.3 12 | bounciness: 0 13 | frictionCombine: 1 14 | bounceCombine: 0 15 | -------------------------------------------------------------------------------- /ArmRobot/Assets/PhysicsMaterials/Slippery.physicMaterial.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 72b68d28ca8474d0e9642c0181f97f40 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6e54cd18bed414236b0bddd72835cf16 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scenes/ArticulationRobot.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 94fa6bc4b68eb4fd0b73c109f3ff4e02 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scenes/GripperScene.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 12 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 1 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 512 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 256 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 1 83 | m_PVRDenoiserTypeDirect: 1 84 | m_PVRDenoiserTypeIndirect: 1 85 | m_PVRDenoiserTypeAO: 1 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 1 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 0} 101 | m_LightingSettings: {fileID: 0} 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 2 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | accuratePlacement: 0 121 | maxJobWorkers: 0 122 | preserveTilesOutsideBounds: 0 123 | debug: 124 | m_Flags: 0 125 | m_NavMeshData: {fileID: 0} 126 | --- !u!1 &59415533 127 | GameObject: 128 | m_ObjectHideFlags: 0 129 | m_CorrespondingSourceObject: {fileID: 0} 130 | m_PrefabInstance: {fileID: 0} 131 | m_PrefabAsset: {fileID: 0} 132 | serializedVersion: 6 133 | m_Component: 134 | - component: {fileID: 59415535} 135 | - component: {fileID: 59415534} 136 | m_Layer: 0 137 | m_Name: Directional Light 138 | m_TagString: Untagged 139 | m_Icon: {fileID: 0} 140 | m_NavMeshLayer: 0 141 | m_StaticEditorFlags: 0 142 | m_IsActive: 1 143 | --- !u!108 &59415534 144 | Light: 145 | m_ObjectHideFlags: 0 146 | m_CorrespondingSourceObject: {fileID: 0} 147 | m_PrefabInstance: {fileID: 0} 148 | m_PrefabAsset: {fileID: 0} 149 | m_GameObject: {fileID: 59415533} 150 | m_Enabled: 1 151 | serializedVersion: 10 152 | m_Type: 1 153 | m_Shape: 0 154 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 155 | m_Intensity: 1 156 | m_Range: 10 157 | m_SpotAngle: 30 158 | m_InnerSpotAngle: 21.80208 159 | m_CookieSize: 10 160 | m_Shadows: 161 | m_Type: 2 162 | m_Resolution: -1 163 | m_CustomResolution: -1 164 | m_Strength: 1 165 | m_Bias: 0.05 166 | m_NormalBias: 0.4 167 | m_NearPlane: 0.2 168 | m_CullingMatrixOverride: 169 | e00: 1 170 | e01: 0 171 | e02: 0 172 | e03: 0 173 | e10: 0 174 | e11: 1 175 | e12: 0 176 | e13: 0 177 | e20: 0 178 | e21: 0 179 | e22: 1 180 | e23: 0 181 | e30: 0 182 | e31: 0 183 | e32: 0 184 | e33: 1 185 | m_UseCullingMatrixOverride: 0 186 | m_Cookie: {fileID: 0} 187 | m_DrawHalo: 0 188 | m_Flare: {fileID: 0} 189 | m_RenderMode: 0 190 | m_CullingMask: 191 | serializedVersion: 2 192 | m_Bits: 4294967295 193 | m_RenderingLayerMask: 1 194 | m_Lightmapping: 4 195 | m_LightShadowCasterMode: 0 196 | m_AreaSize: {x: 1, y: 1} 197 | m_BounceIntensity: 1 198 | m_ColorTemperature: 6570 199 | m_UseColorTemperature: 0 200 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 201 | m_UseBoundingSphereOverride: 0 202 | m_ShadowRadius: 0 203 | m_ShadowAngle: 0 204 | --- !u!4 &59415535 205 | Transform: 206 | m_ObjectHideFlags: 0 207 | m_CorrespondingSourceObject: {fileID: 0} 208 | m_PrefabInstance: {fileID: 0} 209 | m_PrefabAsset: {fileID: 0} 210 | m_GameObject: {fileID: 59415533} 211 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 212 | m_LocalPosition: {x: 0, y: 3, z: 0} 213 | m_LocalScale: {x: 1, y: 1, z: 1} 214 | m_Children: [] 215 | m_Father: {fileID: 0} 216 | m_RootOrder: 1 217 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 218 | --- !u!1 &103178607 219 | GameObject: 220 | m_ObjectHideFlags: 0 221 | m_CorrespondingSourceObject: {fileID: 0} 222 | m_PrefabInstance: {fileID: 0} 223 | m_PrefabAsset: {fileID: 0} 224 | serializedVersion: 6 225 | m_Component: 226 | - component: {fileID: 103178611} 227 | - component: {fileID: 103178610} 228 | - component: {fileID: 103178609} 229 | - component: {fileID: 103178608} 230 | m_Layer: 0 231 | m_Name: Floor 232 | m_TagString: Untagged 233 | m_Icon: {fileID: 0} 234 | m_NavMeshLayer: 0 235 | m_StaticEditorFlags: 0 236 | m_IsActive: 1 237 | --- !u!65 &103178608 238 | BoxCollider: 239 | m_ObjectHideFlags: 0 240 | m_CorrespondingSourceObject: {fileID: 0} 241 | m_PrefabInstance: {fileID: 0} 242 | m_PrefabAsset: {fileID: 0} 243 | m_GameObject: {fileID: 103178607} 244 | m_Material: {fileID: 0} 245 | m_IsTrigger: 0 246 | m_Enabled: 1 247 | serializedVersion: 2 248 | m_Size: {x: 1, y: 1, z: 1} 249 | m_Center: {x: 0, y: 0, z: 0} 250 | --- !u!23 &103178609 251 | MeshRenderer: 252 | m_ObjectHideFlags: 0 253 | m_CorrespondingSourceObject: {fileID: 0} 254 | m_PrefabInstance: {fileID: 0} 255 | m_PrefabAsset: {fileID: 0} 256 | m_GameObject: {fileID: 103178607} 257 | m_Enabled: 1 258 | m_CastShadows: 1 259 | m_ReceiveShadows: 1 260 | m_DynamicOccludee: 1 261 | m_MotionVectors: 1 262 | m_LightProbeUsage: 1 263 | m_ReflectionProbeUsage: 1 264 | m_RayTracingMode: 2 265 | m_RayTraceProcedural: 0 266 | m_RenderingLayerMask: 1 267 | m_RendererPriority: 0 268 | m_Materials: 269 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 270 | m_StaticBatchInfo: 271 | firstSubMesh: 0 272 | subMeshCount: 0 273 | m_StaticBatchRoot: {fileID: 0} 274 | m_ProbeAnchor: {fileID: 0} 275 | m_LightProbeVolumeOverride: {fileID: 0} 276 | m_ScaleInLightmap: 1 277 | m_ReceiveGI: 1 278 | m_PreserveUVs: 0 279 | m_IgnoreNormalsForChartDetection: 0 280 | m_ImportantGI: 0 281 | m_StitchLightmapSeams: 1 282 | m_SelectedEditorRenderState: 3 283 | m_MinimumChartSize: 4 284 | m_AutoUVMaxDistance: 0.5 285 | m_AutoUVMaxAngle: 89 286 | m_LightmapParameters: {fileID: 0} 287 | m_SortingLayerID: 0 288 | m_SortingLayer: 0 289 | m_SortingOrder: 0 290 | m_AdditionalVertexStreams: {fileID: 0} 291 | --- !u!33 &103178610 292 | MeshFilter: 293 | m_ObjectHideFlags: 0 294 | m_CorrespondingSourceObject: {fileID: 0} 295 | m_PrefabInstance: {fileID: 0} 296 | m_PrefabAsset: {fileID: 0} 297 | m_GameObject: {fileID: 103178607} 298 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 299 | --- !u!4 &103178611 300 | Transform: 301 | m_ObjectHideFlags: 0 302 | m_CorrespondingSourceObject: {fileID: 0} 303 | m_PrefabInstance: {fileID: 0} 304 | m_PrefabAsset: {fileID: 0} 305 | m_GameObject: {fileID: 103178607} 306 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 307 | m_LocalPosition: {x: 0, y: 0, z: 0} 308 | m_LocalScale: {x: 10, y: 0.1, z: 10} 309 | m_Children: [] 310 | m_Father: {fileID: 0} 311 | m_RootOrder: 2 312 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 313 | --- !u!1 &382827568 stripped 314 | GameObject: 315 | m_CorrespondingSourceObject: {fileID: 505950275963751659, guid: f795b5118c0744de3bcac7a83315a637, 316 | type: 3} 317 | m_PrefabInstance: {fileID: 1675751553} 318 | m_PrefabAsset: {fileID: 0} 319 | --- !u!171741748 &382827569 320 | ArticulationBody: 321 | m_ObjectHideFlags: 0 322 | m_CorrespondingSourceObject: {fileID: 0} 323 | m_PrefabInstance: {fileID: 0} 324 | m_PrefabAsset: {fileID: 0} 325 | m_GameObject: {fileID: 382827568} 326 | m_Enabled: 1 327 | m_Mass: 1 328 | m_ParentAnchorPosition: {x: -0.52300054, y: 11.505005, z: -1.3914006} 329 | m_ParentAnchorRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} 330 | m_AnchorPosition: {x: 0, y: 0, z: 0} 331 | m_AnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} 332 | m_ComputeParentAnchor: 1 333 | m_ArticulationJointType: 1 334 | m_LinearX: 0 335 | m_LinearY: 0 336 | m_LinearZ: 1 337 | m_SwingY: 2 338 | m_SwingZ: 2 339 | m_Twist: 2 340 | m_XDrive: 341 | lowerLimit: 0 342 | upperLimit: 0 343 | stiffness: 0 344 | damping: 0 345 | forceLimit: 3.4028235e+38 346 | target: 0 347 | targetVelocity: 0 348 | m_YDrive: 349 | lowerLimit: 0 350 | upperLimit: 0 351 | stiffness: 0 352 | damping: 0 353 | forceLimit: 3.4028235e+38 354 | target: 0 355 | targetVelocity: 0 356 | m_ZDrive: 357 | lowerLimit: 0 358 | upperLimit: 0 359 | stiffness: 100000 360 | damping: 9000 361 | forceLimit: 3.4028235e+38 362 | target: 0 363 | targetVelocity: 0 364 | m_LinearDamping: 0.05 365 | m_AngularDamping: 0.05 366 | m_JointFriction: 0.05 367 | m_Immovable: 0 368 | m_UseGravity: 1 369 | --- !u!65 &382827570 370 | BoxCollider: 371 | m_ObjectHideFlags: 0 372 | m_CorrespondingSourceObject: {fileID: 0} 373 | m_PrefabInstance: {fileID: 0} 374 | m_PrefabAsset: {fileID: 0} 375 | m_GameObject: {fileID: 382827568} 376 | m_Material: {fileID: 0} 377 | m_IsTrigger: 0 378 | m_Enabled: 1 379 | serializedVersion: 2 380 | m_Size: {x: 1.7284993, y: 6.1900034, z: 1.1918553} 381 | m_Center: {x: 0.70775217, y: 0.0000047683716, z: -1.6640732} 382 | --- !u!114 &382827571 383 | MonoBehaviour: 384 | m_ObjectHideFlags: 0 385 | m_CorrespondingSourceObject: {fileID: 0} 386 | m_PrefabInstance: {fileID: 0} 387 | m_PrefabAsset: {fileID: 0} 388 | m_GameObject: {fileID: 382827568} 389 | m_Enabled: 1 390 | m_EditorHideFlags: 0 391 | m_Script: {fileID: 11500000, guid: 14b97b98ba87b42d6b91eb37a8f31c50, type: 3} 392 | m_Name: 393 | m_EditorClassIdentifier: 394 | closedZ: 11 395 | --- !u!1 &657713067 stripped 396 | GameObject: 397 | m_CorrespondingSourceObject: {fileID: -1051544179896239664, guid: f795b5118c0744de3bcac7a83315a637, 398 | type: 3} 399 | m_PrefabInstance: {fileID: 1675751553} 400 | m_PrefabAsset: {fileID: 0} 401 | --- !u!171741748 &657713068 402 | ArticulationBody: 403 | m_ObjectHideFlags: 0 404 | m_CorrespondingSourceObject: {fileID: 0} 405 | m_PrefabInstance: {fileID: 0} 406 | m_PrefabAsset: {fileID: 0} 407 | m_GameObject: {fileID: 657713067} 408 | m_Enabled: 1 409 | m_Mass: 1 410 | m_ParentAnchorPosition: {x: 0.52300054, y: 11.505005, z: 1.3914006} 411 | m_ParentAnchorRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} 412 | m_AnchorPosition: {x: 0, y: 0, z: 0} 413 | m_AnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} 414 | m_ComputeParentAnchor: 1 415 | m_ArticulationJointType: 1 416 | m_LinearX: 0 417 | m_LinearY: 0 418 | m_LinearZ: 1 419 | m_SwingY: 2 420 | m_SwingZ: 2 421 | m_Twist: 2 422 | m_XDrive: 423 | lowerLimit: 0 424 | upperLimit: 0 425 | stiffness: 0 426 | damping: 0 427 | forceLimit: 3.4028235e+38 428 | target: 0 429 | targetVelocity: 0 430 | m_YDrive: 431 | lowerLimit: 0 432 | upperLimit: 0 433 | stiffness: 0 434 | damping: 0 435 | forceLimit: 3.4028235e+38 436 | target: 0 437 | targetVelocity: 0 438 | m_ZDrive: 439 | lowerLimit: 0 440 | upperLimit: 0 441 | stiffness: 100000 442 | damping: 9000 443 | forceLimit: 3.4028235e+38 444 | target: 0 445 | targetVelocity: 0 446 | m_LinearDamping: 0.05 447 | m_AngularDamping: 0.05 448 | m_JointFriction: 0.05 449 | m_Immovable: 0 450 | m_UseGravity: 1 451 | --- !u!65 &657713069 452 | BoxCollider: 453 | m_ObjectHideFlags: 0 454 | m_CorrespondingSourceObject: {fileID: 0} 455 | m_PrefabInstance: {fileID: 0} 456 | m_PrefabAsset: {fileID: 0} 457 | m_GameObject: {fileID: 657713067} 458 | m_Material: {fileID: 0} 459 | m_IsTrigger: 0 460 | m_Enabled: 1 461 | serializedVersion: 2 462 | m_Size: {x: 1.9711787, y: 6.1900034, z: 1.2197936} 463 | m_Center: {x: -0.58641225, y: 0.0000047683716, z: 1.6501062} 464 | --- !u!114 &657713070 465 | MonoBehaviour: 466 | m_ObjectHideFlags: 0 467 | m_CorrespondingSourceObject: {fileID: 0} 468 | m_PrefabInstance: {fileID: 0} 469 | m_PrefabAsset: {fileID: 0} 470 | m_GameObject: {fileID: 657713067} 471 | m_Enabled: 1 472 | m_EditorHideFlags: 0 473 | m_Script: {fileID: 11500000, guid: 14b97b98ba87b42d6b91eb37a8f31c50, type: 3} 474 | m_Name: 475 | m_EditorClassIdentifier: 476 | closedZ: -11 477 | --- !u!1 &827560843 stripped 478 | GameObject: 479 | m_CorrespondingSourceObject: {fileID: -927199367670048503, guid: f795b5118c0744de3bcac7a83315a637, 480 | type: 3} 481 | m_PrefabInstance: {fileID: 1675751553} 482 | m_PrefabAsset: {fileID: 0} 483 | --- !u!114 &827560844 484 | MonoBehaviour: 485 | m_ObjectHideFlags: 0 486 | m_CorrespondingSourceObject: {fileID: 0} 487 | m_PrefabInstance: {fileID: 0} 488 | m_PrefabAsset: {fileID: 0} 489 | m_GameObject: {fileID: 827560843} 490 | m_Enabled: 1 491 | m_EditorHideFlags: 0 492 | m_Script: {fileID: 11500000, guid: caa6ad71f110149099d51ebf19edb294, type: 3} 493 | m_Name: 494 | m_EditorClassIdentifier: 495 | fingerA: {fileID: 657713067} 496 | fingerB: {fileID: 382827568} 497 | grip: 0 498 | gripSpeed: 1 499 | gripState: 0 500 | --- !u!136 &827560845 501 | CapsuleCollider: 502 | m_ObjectHideFlags: 0 503 | m_CorrespondingSourceObject: {fileID: 0} 504 | m_PrefabInstance: {fileID: 0} 505 | m_PrefabAsset: {fileID: 0} 506 | m_GameObject: {fileID: 827560843} 507 | m_Material: {fileID: 0} 508 | m_IsTrigger: 0 509 | m_Enabled: 1 510 | m_Radius: 3.750002 511 | m_Height: 9.920005 512 | m_Direction: 1 513 | m_Center: {x: -0.00000035762795, y: 4.940003, z: -8.526514e-14} 514 | --- !u!171741748 &827560848 515 | ArticulationBody: 516 | m_ObjectHideFlags: 0 517 | m_CorrespondingSourceObject: {fileID: 0} 518 | m_PrefabInstance: {fileID: 0} 519 | m_PrefabAsset: {fileID: 0} 520 | m_GameObject: {fileID: 827560843} 521 | m_Enabled: 1 522 | m_Mass: 1 523 | m_ParentAnchorPosition: {x: 0, y: 0, z: 0} 524 | m_ParentAnchorRotation: {x: 0.5, y: -0.5, z: -0.5, w: 0.5} 525 | m_AnchorPosition: {x: 0, y: 0, z: 0} 526 | m_AnchorRotation: {x: 0, y: 0, z: 0.70710677, w: 0.70710677} 527 | m_ComputeParentAnchor: 1 528 | m_ArticulationJointType: 1 529 | m_LinearX: 2 530 | m_LinearY: 0 531 | m_LinearZ: 0 532 | m_SwingY: 2 533 | m_SwingZ: 2 534 | m_Twist: 2 535 | m_XDrive: 536 | lowerLimit: 0 537 | upperLimit: 0 538 | stiffness: 100000 539 | damping: 9000 540 | forceLimit: 3.4028235e+38 541 | target: 0 542 | targetVelocity: 0 543 | m_YDrive: 544 | lowerLimit: 0 545 | upperLimit: 0 546 | stiffness: 100000 547 | damping: 9000 548 | forceLimit: 3.4028235e+38 549 | target: 0 550 | targetVelocity: 0 551 | m_ZDrive: 552 | lowerLimit: 0 553 | upperLimit: 0 554 | stiffness: 0 555 | damping: 0 556 | forceLimit: 3.4028235e+38 557 | target: 0 558 | targetVelocity: 0 559 | m_LinearDamping: 0.05 560 | m_AngularDamping: 0.05 561 | m_JointFriction: 0.05 562 | m_Immovable: 1 563 | m_UseGravity: 1 564 | --- !u!4 &827560850 stripped 565 | Transform: 566 | m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: f795b5118c0744de3bcac7a83315a637, 567 | type: 3} 568 | m_PrefabInstance: {fileID: 1675751553} 569 | m_PrefabAsset: {fileID: 0} 570 | --- !u!114 &827560851 571 | MonoBehaviour: 572 | m_ObjectHideFlags: 0 573 | m_CorrespondingSourceObject: {fileID: 0} 574 | m_PrefabInstance: {fileID: 0} 575 | m_PrefabAsset: {fileID: 0} 576 | m_GameObject: {fileID: 827560843} 577 | m_Enabled: 1 578 | m_EditorHideFlags: 0 579 | m_Script: {fileID: 11500000, guid: b2f9c0044a46c454890ba0552c06a205, type: 3} 580 | m_Name: 581 | m_EditorClassIdentifier: 582 | moveState: 0 583 | speed: 2 584 | --- !u!1 &1028258929 585 | GameObject: 586 | m_ObjectHideFlags: 0 587 | m_CorrespondingSourceObject: {fileID: 0} 588 | m_PrefabInstance: {fileID: 0} 589 | m_PrefabAsset: {fileID: 0} 590 | serializedVersion: 6 591 | m_Component: 592 | - component: {fileID: 1028258932} 593 | - component: {fileID: 1028258931} 594 | - component: {fileID: 1028258930} 595 | m_Layer: 0 596 | m_Name: Main Camera 597 | m_TagString: MainCamera 598 | m_Icon: {fileID: 0} 599 | m_NavMeshLayer: 0 600 | m_StaticEditorFlags: 0 601 | m_IsActive: 1 602 | --- !u!81 &1028258930 603 | AudioListener: 604 | m_ObjectHideFlags: 0 605 | m_CorrespondingSourceObject: {fileID: 0} 606 | m_PrefabInstance: {fileID: 0} 607 | m_PrefabAsset: {fileID: 0} 608 | m_GameObject: {fileID: 1028258929} 609 | m_Enabled: 1 610 | --- !u!20 &1028258931 611 | Camera: 612 | m_ObjectHideFlags: 0 613 | m_CorrespondingSourceObject: {fileID: 0} 614 | m_PrefabInstance: {fileID: 0} 615 | m_PrefabAsset: {fileID: 0} 616 | m_GameObject: {fileID: 1028258929} 617 | m_Enabled: 1 618 | serializedVersion: 2 619 | m_ClearFlags: 1 620 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 621 | m_projectionMatrixMode: 1 622 | m_GateFitMode: 2 623 | m_FOVAxisMode: 0 624 | m_SensorSize: {x: 36, y: 24} 625 | m_LensShift: {x: 0, y: 0} 626 | m_FocalLength: 50 627 | m_NormalizedViewPortRect: 628 | serializedVersion: 2 629 | x: 0 630 | y: 0 631 | width: 1 632 | height: 1 633 | near clip plane: 0.3 634 | far clip plane: 1000 635 | field of view: 60 636 | orthographic: 0 637 | orthographic size: 5 638 | m_Depth: -1 639 | m_CullingMask: 640 | serializedVersion: 2 641 | m_Bits: 4294967295 642 | m_RenderingPath: -1 643 | m_TargetTexture: {fileID: 0} 644 | m_TargetDisplay: 0 645 | m_TargetEye: 3 646 | m_HDR: 1 647 | m_AllowMSAA: 1 648 | m_AllowDynamicResolution: 0 649 | m_ForceIntoRT: 0 650 | m_OcclusionCulling: 1 651 | m_StereoConvergence: 10 652 | m_StereoSeparation: 0.022 653 | --- !u!4 &1028258932 654 | Transform: 655 | m_ObjectHideFlags: 0 656 | m_CorrespondingSourceObject: {fileID: 0} 657 | m_PrefabInstance: {fileID: 0} 658 | m_PrefabAsset: {fileID: 0} 659 | m_GameObject: {fileID: 1028258929} 660 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 661 | m_LocalPosition: {x: 0, y: 1, z: -3.62} 662 | m_LocalScale: {x: 1, y: 1, z: 1} 663 | m_Children: [] 664 | m_Father: {fileID: 0} 665 | m_RootOrder: 0 666 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 667 | --- !u!1 &1277722515 668 | GameObject: 669 | m_ObjectHideFlags: 0 670 | m_CorrespondingSourceObject: {fileID: 0} 671 | m_PrefabInstance: {fileID: 0} 672 | m_PrefabAsset: {fileID: 0} 673 | serializedVersion: 6 674 | m_Component: 675 | - component: {fileID: 1277722519} 676 | - component: {fileID: 1277722518} 677 | - component: {fileID: 1277722517} 678 | - component: {fileID: 1277722516} 679 | - component: {fileID: 1277722520} 680 | m_Layer: 0 681 | m_Name: Cube 682 | m_TagString: Untagged 683 | m_Icon: {fileID: 0} 684 | m_NavMeshLayer: 0 685 | m_StaticEditorFlags: 0 686 | m_IsActive: 1 687 | --- !u!65 &1277722516 688 | BoxCollider: 689 | m_ObjectHideFlags: 0 690 | m_CorrespondingSourceObject: {fileID: 0} 691 | m_PrefabInstance: {fileID: 0} 692 | m_PrefabAsset: {fileID: 0} 693 | m_GameObject: {fileID: 1277722515} 694 | m_Material: {fileID: 0} 695 | m_IsTrigger: 0 696 | m_Enabled: 1 697 | serializedVersion: 2 698 | m_Size: {x: 1, y: 1, z: 1} 699 | m_Center: {x: 0, y: 0, z: 0} 700 | --- !u!23 &1277722517 701 | MeshRenderer: 702 | m_ObjectHideFlags: 0 703 | m_CorrespondingSourceObject: {fileID: 0} 704 | m_PrefabInstance: {fileID: 0} 705 | m_PrefabAsset: {fileID: 0} 706 | m_GameObject: {fileID: 1277722515} 707 | m_Enabled: 1 708 | m_CastShadows: 1 709 | m_ReceiveShadows: 1 710 | m_DynamicOccludee: 1 711 | m_MotionVectors: 1 712 | m_LightProbeUsage: 1 713 | m_ReflectionProbeUsage: 1 714 | m_RayTracingMode: 2 715 | m_RayTraceProcedural: 0 716 | m_RenderingLayerMask: 1 717 | m_RendererPriority: 0 718 | m_Materials: 719 | - {fileID: 2100000, guid: 351a807c5fbdd4ff19fde1c2c5449e8c, type: 2} 720 | m_StaticBatchInfo: 721 | firstSubMesh: 0 722 | subMeshCount: 0 723 | m_StaticBatchRoot: {fileID: 0} 724 | m_ProbeAnchor: {fileID: 0} 725 | m_LightProbeVolumeOverride: {fileID: 0} 726 | m_ScaleInLightmap: 1 727 | m_ReceiveGI: 1 728 | m_PreserveUVs: 0 729 | m_IgnoreNormalsForChartDetection: 0 730 | m_ImportantGI: 0 731 | m_StitchLightmapSeams: 1 732 | m_SelectedEditorRenderState: 3 733 | m_MinimumChartSize: 4 734 | m_AutoUVMaxDistance: 0.5 735 | m_AutoUVMaxAngle: 89 736 | m_LightmapParameters: {fileID: 0} 737 | m_SortingLayerID: 0 738 | m_SortingLayer: 0 739 | m_SortingOrder: 0 740 | m_AdditionalVertexStreams: {fileID: 0} 741 | --- !u!33 &1277722518 742 | MeshFilter: 743 | m_ObjectHideFlags: 0 744 | m_CorrespondingSourceObject: {fileID: 0} 745 | m_PrefabInstance: {fileID: 0} 746 | m_PrefabAsset: {fileID: 0} 747 | m_GameObject: {fileID: 1277722515} 748 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 749 | --- !u!4 &1277722519 750 | Transform: 751 | m_ObjectHideFlags: 0 752 | m_CorrespondingSourceObject: {fileID: 0} 753 | m_PrefabInstance: {fileID: 0} 754 | m_PrefabAsset: {fileID: 0} 755 | m_GameObject: {fileID: 1277722515} 756 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 757 | m_LocalPosition: {x: 0, y: 0.25, z: 0} 758 | m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} 759 | m_Children: [] 760 | m_Father: {fileID: 0} 761 | m_RootOrder: 5 762 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 763 | --- !u!54 &1277722520 764 | Rigidbody: 765 | m_ObjectHideFlags: 0 766 | m_CorrespondingSourceObject: {fileID: 0} 767 | m_PrefabInstance: {fileID: 0} 768 | m_PrefabAsset: {fileID: 0} 769 | m_GameObject: {fileID: 1277722515} 770 | serializedVersion: 2 771 | m_Mass: 1 772 | m_Drag: 0 773 | m_AngularDrag: 0.05 774 | m_UseGravity: 1 775 | m_IsKinematic: 0 776 | m_Interpolate: 0 777 | m_Constraints: 0 778 | m_CollisionDetection: 0 779 | --- !u!1001 &1675751553 780 | PrefabInstance: 781 | m_ObjectHideFlags: 0 782 | serializedVersion: 2 783 | m_Modification: 784 | m_TransformParent: {fileID: 1735637830} 785 | m_Modifications: 786 | - target: {fileID: -4216859302048453862, guid: f795b5118c0744de3bcac7a83315a637, 787 | type: 3} 788 | propertyPath: m_LocalPosition.x 789 | value: 0 790 | objectReference: {fileID: 0} 791 | - target: {fileID: -4216859302048453862, guid: f795b5118c0744de3bcac7a83315a637, 792 | type: 3} 793 | propertyPath: m_LocalPosition.y 794 | value: 0 795 | objectReference: {fileID: 0} 796 | - target: {fileID: -4216859302048453862, guid: f795b5118c0744de3bcac7a83315a637, 797 | type: 3} 798 | propertyPath: m_LocalPosition.z 799 | value: 0 800 | objectReference: {fileID: 0} 801 | - target: {fileID: -4216859302048453862, guid: f795b5118c0744de3bcac7a83315a637, 802 | type: 3} 803 | propertyPath: m_LocalRotation.x 804 | value: 0.7071068 805 | objectReference: {fileID: 0} 806 | - target: {fileID: -4216859302048453862, guid: f795b5118c0744de3bcac7a83315a637, 807 | type: 3} 808 | propertyPath: m_LocalRotation.y 809 | value: -0 810 | objectReference: {fileID: 0} 811 | - target: {fileID: -4216859302048453862, guid: f795b5118c0744de3bcac7a83315a637, 812 | type: 3} 813 | propertyPath: m_LocalRotation.z 814 | value: -0.7071068 815 | objectReference: {fileID: 0} 816 | - target: {fileID: -4216859302048453862, guid: f795b5118c0744de3bcac7a83315a637, 817 | type: 3} 818 | propertyPath: m_LocalRotation.w 819 | value: 0 820 | objectReference: {fileID: 0} 821 | - target: {fileID: -4216859302048453862, guid: f795b5118c0744de3bcac7a83315a637, 822 | type: 3} 823 | propertyPath: m_RootOrder 824 | value: 0 825 | objectReference: {fileID: 0} 826 | - target: {fileID: -4216859302048453862, guid: f795b5118c0744de3bcac7a83315a637, 827 | type: 3} 828 | propertyPath: m_LocalEulerAnglesHint.x 829 | value: 180 830 | objectReference: {fileID: 0} 831 | - target: {fileID: -4216859302048453862, guid: f795b5118c0744de3bcac7a83315a637, 832 | type: 3} 833 | propertyPath: m_LocalEulerAnglesHint.y 834 | value: 90 835 | objectReference: {fileID: 0} 836 | - target: {fileID: -4216859302048453862, guid: f795b5118c0744de3bcac7a83315a637, 837 | type: 3} 838 | propertyPath: m_LocalEulerAnglesHint.z 839 | value: 0 840 | objectReference: {fileID: 0} 841 | - target: {fileID: -4216859302048453862, guid: f795b5118c0744de3bcac7a83315a637, 842 | type: 3} 843 | propertyPath: m_LocalScale.x 844 | value: 0.10000001 845 | objectReference: {fileID: 0} 846 | - target: {fileID: -4216859302048453862, guid: f795b5118c0744de3bcac7a83315a637, 847 | type: 3} 848 | propertyPath: m_LocalScale.y 849 | value: 0.1 850 | objectReference: {fileID: 0} 851 | - target: {fileID: -4216859302048453862, guid: f795b5118c0744de3bcac7a83315a637, 852 | type: 3} 853 | propertyPath: m_LocalScale.z 854 | value: 0.10000001 855 | objectReference: {fileID: 0} 856 | - target: {fileID: -927199367670048503, guid: f795b5118c0744de3bcac7a83315a637, 857 | type: 3} 858 | propertyPath: m_Name 859 | value: HandE 860 | objectReference: {fileID: 0} 861 | m_RemovedComponents: [] 862 | m_SourcePrefab: {fileID: 100100000, guid: f795b5118c0744de3bcac7a83315a637, type: 3} 863 | --- !u!1 &1735637829 864 | GameObject: 865 | m_ObjectHideFlags: 0 866 | m_CorrespondingSourceObject: {fileID: 0} 867 | m_PrefabInstance: {fileID: 0} 868 | m_PrefabAsset: {fileID: 0} 869 | serializedVersion: 6 870 | m_Component: 871 | - component: {fileID: 1735637830} 872 | - component: {fileID: 1735637831} 873 | m_Layer: 0 874 | m_Name: Root 875 | m_TagString: Untagged 876 | m_Icon: {fileID: 0} 877 | m_NavMeshLayer: 0 878 | m_StaticEditorFlags: 0 879 | m_IsActive: 1 880 | --- !u!4 &1735637830 881 | Transform: 882 | m_ObjectHideFlags: 0 883 | m_CorrespondingSourceObject: {fileID: 0} 884 | m_PrefabInstance: {fileID: 0} 885 | m_PrefabAsset: {fileID: 0} 886 | m_GameObject: {fileID: 1735637829} 887 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 888 | m_LocalPosition: {x: 0, y: 2, z: 0} 889 | m_LocalScale: {x: 1, y: 1, z: 1} 890 | m_Children: 891 | - {fileID: 827560850} 892 | m_Father: {fileID: 0} 893 | m_RootOrder: 4 894 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 895 | --- !u!171741748 &1735637831 896 | ArticulationBody: 897 | m_ObjectHideFlags: 0 898 | m_CorrespondingSourceObject: {fileID: 0} 899 | m_PrefabInstance: {fileID: 0} 900 | m_PrefabAsset: {fileID: 0} 901 | m_GameObject: {fileID: 1735637829} 902 | m_Enabled: 1 903 | m_Mass: 1 904 | m_ParentAnchorPosition: {x: 0, y: 0, z: 0} 905 | m_ParentAnchorRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} 906 | m_AnchorPosition: {x: 0, y: 0, z: 0} 907 | m_AnchorRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} 908 | m_ComputeParentAnchor: 1 909 | m_ArticulationJointType: 0 910 | m_LinearX: 2 911 | m_LinearY: 2 912 | m_LinearZ: 2 913 | m_SwingY: 2 914 | m_SwingZ: 2 915 | m_Twist: 2 916 | m_XDrive: 917 | lowerLimit: 0 918 | upperLimit: 0 919 | stiffness: 0 920 | damping: 0 921 | forceLimit: 3.4028235e+38 922 | target: 0 923 | targetVelocity: 0 924 | m_YDrive: 925 | lowerLimit: 0 926 | upperLimit: 0 927 | stiffness: 0 928 | damping: 0 929 | forceLimit: 3.4028235e+38 930 | target: 0 931 | targetVelocity: 0 932 | m_ZDrive: 933 | lowerLimit: 0 934 | upperLimit: 0 935 | stiffness: 0 936 | damping: 0 937 | forceLimit: 3.4028235e+38 938 | target: 0 939 | targetVelocity: 0 940 | m_LinearDamping: 0.05 941 | m_AngularDamping: 0.05 942 | m_JointFriction: 0.05 943 | m_Immovable: 1 944 | m_UseGravity: 1 945 | --- !u!1 &2094037056 946 | GameObject: 947 | m_ObjectHideFlags: 0 948 | m_CorrespondingSourceObject: {fileID: 0} 949 | m_PrefabInstance: {fileID: 0} 950 | m_PrefabAsset: {fileID: 0} 951 | serializedVersion: 6 952 | m_Component: 953 | - component: {fileID: 2094037057} 954 | - component: {fileID: 2094037058} 955 | - component: {fileID: 2094037059} 956 | m_Layer: 0 957 | m_Name: ManualInput 958 | m_TagString: Untagged 959 | m_Icon: {fileID: 0} 960 | m_NavMeshLayer: 0 961 | m_StaticEditorFlags: 0 962 | m_IsActive: 1 963 | --- !u!4 &2094037057 964 | Transform: 965 | m_ObjectHideFlags: 0 966 | m_CorrespondingSourceObject: {fileID: 0} 967 | m_PrefabInstance: {fileID: 0} 968 | m_PrefabAsset: {fileID: 0} 969 | m_GameObject: {fileID: 2094037056} 970 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 971 | m_LocalPosition: {x: 1.7478678, y: 0.9529653, z: -0.6497492} 972 | m_LocalScale: {x: 1, y: 1, z: 1} 973 | m_Children: [] 974 | m_Father: {fileID: 0} 975 | m_RootOrder: 3 976 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 977 | --- !u!114 &2094037058 978 | MonoBehaviour: 979 | m_ObjectHideFlags: 0 980 | m_CorrespondingSourceObject: {fileID: 0} 981 | m_PrefabInstance: {fileID: 0} 982 | m_PrefabAsset: {fileID: 0} 983 | m_GameObject: {fileID: 2094037056} 984 | m_Enabled: 1 985 | m_EditorHideFlags: 0 986 | m_Script: {fileID: 11500000, guid: 8a603dc7cc2b845edbf00fa4121d548f, type: 3} 987 | m_Name: 988 | m_EditorClassIdentifier: 989 | hand: {fileID: 827560843} 990 | --- !u!114 &2094037059 991 | MonoBehaviour: 992 | m_ObjectHideFlags: 0 993 | m_CorrespondingSourceObject: {fileID: 0} 994 | m_PrefabInstance: {fileID: 0} 995 | m_PrefabAsset: {fileID: 0} 996 | m_GameObject: {fileID: 2094037056} 997 | m_Enabled: 1 998 | m_EditorHideFlags: 0 999 | m_Script: {fileID: 11500000, guid: c24e7bcf5e18946699078aa9b65374af, type: 3} 1000 | m_Name: 1001 | m_EditorClassIdentifier: 1002 | hand: {fileID: 827560843} 1003 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scenes/GripperScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 996f630712a85489291f1a1dee37a289 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 796e8d51c74074f28b60ed253f673324 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts/ArticulationHandManualInput.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class ArticulationHandManualInput : MonoBehaviour 6 | { 7 | public GameObject hand; 8 | 9 | void Update() 10 | { 11 | // manual input 12 | float input = Input.GetAxis("Fingers"); 13 | PincherController pincherController = hand.GetComponent(); 14 | pincherController.gripState = GripStateForInput(input); 15 | } 16 | 17 | // INPUT HELPERS 18 | 19 | static GripState GripStateForInput(float input) 20 | { 21 | if (input > 0) 22 | { 23 | return GripState.Closing; 24 | } 25 | else if (input < 0) 26 | { 27 | return GripState.Opening; 28 | } 29 | else 30 | { 31 | return GripState.Fixed; 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts/ArticulationHandManualInput.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8a603dc7cc2b845edbf00fa4121d548f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts/ArticulationJointController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | 6 | public enum RotationDirection { None = 0, Positive = 1, Negative = -1 }; 7 | 8 | public class ArticulationJointController : MonoBehaviour 9 | { 10 | public RotationDirection rotationState = RotationDirection.None; 11 | public float speed = 300.0f; 12 | 13 | private ArticulationBody articulation; 14 | 15 | 16 | // LIFE CYCLE 17 | 18 | void Start() 19 | { 20 | articulation = GetComponent(); 21 | } 22 | 23 | void FixedUpdate() 24 | { 25 | if (rotationState != RotationDirection.None) { 26 | float rotationChange = (float)rotationState * speed * Time.fixedDeltaTime; 27 | float rotationGoal = CurrentPrimaryAxisRotation() + rotationChange; 28 | RotateTo(rotationGoal); 29 | } 30 | 31 | 32 | } 33 | 34 | 35 | // MOVEMENT HELPERS 36 | 37 | float CurrentPrimaryAxisRotation() 38 | { 39 | float currentRotationRads = articulation.jointPosition[0]; 40 | float currentRotation = Mathf.Rad2Deg * currentRotationRads; 41 | return currentRotation; 42 | } 43 | 44 | void RotateTo(float primaryAxisRotation) 45 | { 46 | var drive = articulation.xDrive; 47 | drive.target = primaryAxisRotation; 48 | articulation.xDrive = drive; 49 | } 50 | 51 | 52 | 53 | } 54 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts/ArticulationJointController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aadac9b07c97b442ba4339c192aefe69 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts/GripperDemoController.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public enum BigHandState { Fixed = 0, MovingUp = 1, MovingDown = -1 }; 6 | 7 | public class GripperDemoController : MonoBehaviour 8 | { 9 | 10 | public BigHandState moveState = BigHandState.Fixed; 11 | public float speed = 1.0f; 12 | 13 | private void FixedUpdate() 14 | { 15 | if (moveState != BigHandState.Fixed) 16 | { 17 | ArticulationBody articulation = GetComponent(); 18 | 19 | //get jointPosition along y axis 20 | float xDrivePostion = articulation.jointPosition[0]; 21 | Debug.Log(xDrivePostion); 22 | 23 | //increment this y position 24 | float targetPosition = xDrivePostion + -(float)moveState * Time.fixedDeltaTime * speed; 25 | 26 | //set joint Drive to new position 27 | var drive = articulation.xDrive; 28 | drive.target = targetPosition; 29 | articulation.xDrive = drive; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts/GripperDemoController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b2f9c0044a46c454890ba0552c06a205 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts/GripperDemoManualInput.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class GripperDemoManualInput : MonoBehaviour 6 | { 7 | public GameObject hand; 8 | 9 | 10 | void Update() 11 | { 12 | float input = Input.GetAxis("BigHandVertical"); 13 | BigHandState moveState = MoveStateForInput(input); 14 | GripperDemoController controller = hand.GetComponent(); 15 | controller.moveState = moveState; 16 | } 17 | 18 | BigHandState MoveStateForInput(float input) 19 | { 20 | if (input > 0) 21 | { 22 | return BigHandState.MovingUp; 23 | } 24 | else if (input < 0) 25 | { 26 | return BigHandState.MovingDown; 27 | } 28 | else 29 | { 30 | return BigHandState.Fixed; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts/GripperDemoManualInput.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c24e7bcf5e18946699078aa9b65374af 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts/PincherController.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public enum GripState { Fixed = 0, Opening = -1, Closing = 1 }; 6 | 7 | public class PincherController : MonoBehaviour 8 | { 9 | public GameObject fingerA; 10 | public GameObject fingerB; 11 | 12 | PincherFingerController fingerAController; 13 | PincherFingerController fingerBController; 14 | 15 | // Grip - the extent to which the pincher is closed. 0: fully open, 1: fully closed. 16 | public float grip; 17 | public float gripSpeed = 3.0f; 18 | public GripState gripState = GripState.Fixed; 19 | 20 | 21 | 22 | void Start() 23 | { 24 | fingerAController = fingerA.GetComponent(); 25 | fingerBController = fingerB.GetComponent(); 26 | } 27 | 28 | void FixedUpdate() 29 | { 30 | UpdateGrip(); 31 | UpdateFingersForGrip(); 32 | } 33 | 34 | 35 | // READ 36 | 37 | public float CurrentGrip() 38 | { 39 | // TODO - we can't really assume the fingers agree, need to think about that 40 | float meanGrip = (fingerAController.CurrentGrip() + fingerBController.CurrentGrip()) / 2.0f; 41 | return meanGrip; 42 | } 43 | 44 | 45 | public Vector3 CurrentGraspCenter() 46 | { 47 | /* Gets the point directly between the middle of the pincher fingers, 48 | * in the global coordinate system. 49 | */ 50 | Vector3 localCenterPoint = (fingerAController.GetOpenPosition() + fingerBController.GetOpenPosition()) / 2.0f; 51 | Vector3 globalCenterPoint = transform.TransformPoint(localCenterPoint); 52 | return globalCenterPoint; 53 | } 54 | 55 | 56 | // CONTROL 57 | 58 | public void ResetGripToOpen() 59 | { 60 | grip = 0.0f; 61 | fingerAController.ForceOpen(transform); 62 | fingerBController.ForceOpen(transform); 63 | gripState = GripState.Fixed; 64 | } 65 | 66 | // GRIP HELPERS 67 | 68 | void UpdateGrip() 69 | { 70 | if (gripState != GripState.Fixed) 71 | { 72 | float gripChange = (float)gripState * gripSpeed * Time.fixedDeltaTime; 73 | float gripGoal = CurrentGrip() + gripChange; 74 | grip = Mathf.Clamp01(gripGoal); 75 | } 76 | } 77 | 78 | void UpdateFingersForGrip() 79 | { 80 | fingerAController.UpdateGrip(grip); 81 | fingerBController.UpdateGrip(grip); 82 | } 83 | 84 | 85 | 86 | 87 | 88 | } 89 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts/PincherController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: caa6ad71f110149099d51ebf19edb294 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts/PincherFingerController.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class PincherFingerController : MonoBehaviour 6 | { 7 | 8 | public float closedZ; 9 | 10 | Vector3 openPosition; 11 | ArticulationBody articulation; 12 | 13 | 14 | // INIT 15 | 16 | void Start() 17 | { 18 | openPosition = transform.localPosition; 19 | articulation = GetComponent(); 20 | SetLimits(); 21 | } 22 | 23 | void SetLimits() 24 | { 25 | float openZTarget = ZDriveTarget(0.0f); 26 | float closedZTarget = ZDriveTarget(1.0f); 27 | float min = Mathf.Min(openZTarget, closedZTarget); 28 | float max = Mathf.Max(openZTarget, closedZTarget); 29 | 30 | var drive = articulation.zDrive; 31 | drive.lowerLimit = min; 32 | drive.upperLimit = max; 33 | articulation.zDrive = drive; 34 | } 35 | 36 | 37 | // READ 38 | 39 | public float CurrentGrip() 40 | { 41 | float grip = Mathf.InverseLerp(openPosition.z, closedZ, transform.localPosition.z); 42 | return grip; 43 | } 44 | 45 | public Vector3 GetOpenPosition() 46 | { 47 | return openPosition; 48 | } 49 | 50 | // CONTROL 51 | 52 | public void UpdateGrip(float grip) 53 | { 54 | float targetZ = ZDriveTarget(grip); 55 | var drive = articulation.zDrive; 56 | drive.target = targetZ; 57 | articulation.zDrive = drive; 58 | } 59 | 60 | public void ForceOpen(Transform transform) 61 | { 62 | transform.localPosition = openPosition; 63 | UpdateGrip(0.0f); 64 | } 65 | 66 | // HELPERS 67 | 68 | float ZDriveTarget(float grip) 69 | { 70 | float zPosition = Mathf.Lerp(openPosition.z, closedZ, grip); 71 | float targetZ = (zPosition - openPosition.z) * transform.parent.localScale.z; 72 | return targetZ; 73 | } 74 | 75 | 76 | } 77 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts/PincherFingerController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 14b97b98ba87b42d6b91eb37a8f31c50 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts/RobotController.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | 6 | public class RobotController : MonoBehaviour 7 | { 8 | [System.Serializable] 9 | public struct Joint 10 | { 11 | public string inputAxis; 12 | public GameObject robotPart; 13 | } 14 | public Joint[] joints; 15 | 16 | 17 | // CONTROL 18 | 19 | public void StopAllJointRotations() 20 | { 21 | for (int i = 0; i < joints.Length; i++) 22 | { 23 | GameObject robotPart = joints[i].robotPart; 24 | UpdateRotationState(RotationDirection.None, robotPart); 25 | } 26 | } 27 | 28 | public void RotateJoint(int jointIndex, RotationDirection direction) 29 | { 30 | StopAllJointRotations(); 31 | Joint joint = joints[jointIndex]; 32 | UpdateRotationState(direction, joint.robotPart); 33 | } 34 | 35 | // HELPERS 36 | 37 | static void UpdateRotationState(RotationDirection direction, GameObject robotPart) 38 | { 39 | ArticulationJointController jointController = robotPart.GetComponent(); 40 | jointController.rotationState = direction; 41 | } 42 | 43 | 44 | 45 | } 46 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts/RobotController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e4559886895d244498b588caf505de6a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts/RobotManualInput.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class RobotManualInput : MonoBehaviour 6 | { 7 | public GameObject robot; 8 | 9 | 10 | void Update() 11 | { 12 | RobotController robotController = robot.GetComponent(); 13 | for (int i = 0; i < robotController.joints.Length; i++) 14 | { 15 | float inputVal = Input.GetAxis(robotController.joints[i].inputAxis); 16 | if (Mathf.Abs(inputVal) > 0) 17 | { 18 | RotationDirection direction = GetRotationDirection(inputVal); 19 | robotController.RotateJoint(i, direction); 20 | return; 21 | } 22 | } 23 | robotController.StopAllJointRotations(); 24 | 25 | } 26 | 27 | 28 | // HELPERS 29 | 30 | static RotationDirection GetRotationDirection(float inputVal) 31 | { 32 | if (inputVal > 0) 33 | { 34 | return RotationDirection.Positive; 35 | } 36 | else if (inputVal < 0) 37 | { 38 | return RotationDirection.Negative; 39 | } 40 | else 41 | { 42 | return RotationDirection.None; 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /ArmRobot/Assets/Scripts/RobotManualInput.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4bcb110d4ad9c421ca4ed32eaee6cfc2 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ArmRobot/Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.ext.nunit": "1.0.0", 4 | "com.unity.ide.rider": "2.0.1", 5 | "com.unity.ide.vscode": "1.2.0", 6 | "com.unity.test-framework": "1.1.13", 7 | "com.unity.textmeshpro": "3.0.0-preview.1", 8 | "com.unity.ugui": "1.0.0", 9 | "com.unity.modules.ai": "1.0.0", 10 | "com.unity.modules.androidjni": "1.0.0", 11 | "com.unity.modules.animation": "1.0.0", 12 | "com.unity.modules.assetbundle": "1.0.0", 13 | "com.unity.modules.audio": "1.0.0", 14 | "com.unity.modules.cloth": "1.0.0", 15 | "com.unity.modules.director": "1.0.0", 16 | "com.unity.modules.imageconversion": "1.0.0", 17 | "com.unity.modules.imgui": "1.0.0", 18 | "com.unity.modules.jsonserialize": "1.0.0", 19 | "com.unity.modules.particlesystem": "1.0.0", 20 | "com.unity.modules.physics": "1.0.0", 21 | "com.unity.modules.physics2d": "1.0.0", 22 | "com.unity.modules.screencapture": "1.0.0", 23 | "com.unity.modules.terrain": "1.0.0", 24 | "com.unity.modules.terrainphysics": "1.0.0", 25 | "com.unity.modules.tilemap": "1.0.0", 26 | "com.unity.modules.ui": "1.0.0", 27 | "com.unity.modules.uielements": "1.0.0", 28 | "com.unity.modules.umbra": "1.0.0", 29 | "com.unity.modules.unityanalytics": "1.0.0", 30 | "com.unity.modules.unitywebrequest": "1.0.0", 31 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 32 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 33 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 34 | "com.unity.modules.unitywebrequestwww": "1.0.0", 35 | "com.unity.modules.vehicles": "1.0.0", 36 | "com.unity.modules.video": "1.0.0", 37 | "com.unity.modules.vr": "1.0.0", 38 | "com.unity.modules.wind": "1.0.0", 39 | "com.unity.modules.xr": "1.0.0" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 1024 20 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 10 10 | m_DefaultMaxDepenetrationVelocity: 10 11 | m_SleepThreshold: 0.005 12 | m_DefaultContactOffset: 0.01 13 | m_DefaultSolverIterations: 10 14 | m_DefaultSolverVelocityIterations: 10 15 | m_QueriesHitBackfaces: 0 16 | m_QueriesHitTriggers: 1 17 | m_EnableAdaptiveForce: 1 18 | m_ClothInterCollisionDistance: 0 19 | m_ClothInterCollisionStiffness: 0 20 | m_ContactsGeneration: 1 21 | m_LayerCollisionMatrix: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 22 | m_AutoSimulation: 1 23 | m_AutoSyncTransforms: 1 24 | m_ReuseCollisionCallbacks: 1 25 | m_ClothInterCollisionSettingsToggle: 0 26 | m_ClothGravity: {x: 0, y: -9.81, z: 0} 27 | m_ContactPairsMode: 0 28 | m_BroadphaseType: 0 29 | m_WorldBounds: 30 | m_Center: {x: 0, y: 0, z: 0} 31 | m_Extent: {x: 50, y: 50, z: 50} 32 | m_WorldSubdivisions: 8 33 | m_FrictionType: 2 34 | m_EnableEnhancedDeterminism: 1 35 | m_EnableUnifiedHeightmaps: 1 36 | m_SolverType: 1 37 | m_DefaultMaxAngularSpeed: 7 38 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 0 9 | path: Assets/Scenes/RobotWithHand.unity 10 | guid: ba85471f9074a496ca00dc9fb80078d0 11 | - enabled: 1 12 | path: Assets/Scenes/MovingHandSolo.unity 13 | guid: d7c40e5832a6949f5b3a1ea2adb7fdc7 14 | m_configObjects: {} 15 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 9 7 | m_ExternalVersionControlSupport: Hidden Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 1 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 1 30 | m_AssetPipelineMode: 1 31 | m_CacheServerMode: 0 32 | m_CacheServerEndpoint: 33 | m_CacheServerNamespacePrefix: default 34 | m_CacheServerEnableDownload: 1 35 | m_CacheServerEnableUpload: 1 36 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0} 40 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} 41 | m_PreloadedShaders: [] 42 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 43 | type: 0} 44 | m_CustomRenderPipeline: {fileID: 0} 45 | m_TransparencySortMode: 0 46 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 47 | m_DefaultRenderingPath: 1 48 | m_DefaultMobileRenderingPath: 1 49 | m_TierSettings: [] 50 | m_LightmapStripping: 0 51 | m_FogStripping: 0 52 | m_InstancingStripping: 0 53 | m_LightmapKeepPlain: 1 54 | m_LightmapKeepDirCombined: 1 55 | m_LightmapKeepDynamicPlain: 1 56 | m_LightmapKeepDynamicDirCombined: 1 57 | m_LightmapKeepShadowMask: 1 58 | m_LightmapKeepSubtractive: 1 59 | m_FogKeepLinear: 1 60 | m_FogKeepExp: 1 61 | m_FogKeepExp2: 1 62 | m_AlbedoSwatchInfos: [] 63 | m_LightsUseLinearIntensity: 0 64 | m_LightsUseColorTemperature: 0 65 | m_LogWhenShaderIsCompiled: 0 66 | m_AllowEnlightenSupportForUpgradedProject: 1 67 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Base 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.19 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Shoulder 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Elbow 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: 46 | altNegativeButton: q 47 | altPositiveButton: e 48 | gravity: 3 49 | dead: 0.001 50 | sensitivity: 3 51 | snap: 1 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Wrist1 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: 62 | altNegativeButton: o 63 | altPositiveButton: p 64 | gravity: 3 65 | dead: 0.001 66 | sensitivity: 3 67 | snap: 1 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Wrist2 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: 78 | altNegativeButton: k 79 | altPositiveButton: l 80 | gravity: 3 81 | dead: 0.001 82 | sensitivity: 3 83 | snap: 1 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Wrist3 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: 94 | altNegativeButton: n 95 | altPositiveButton: m 96 | gravity: 3 97 | dead: 0.001 98 | sensitivity: 3 99 | snap: 1 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Hand 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: v 111 | altPositiveButton: b 112 | gravity: 3 113 | dead: 0.001 114 | sensitivity: 3 115 | snap: 1 116 | invert: 0 117 | type: 0 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Fingers 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: z 127 | altPositiveButton: x 128 | gravity: 3 129 | dead: 0.001 130 | sensitivity: 3 131 | snap: 1 132 | invert: 0 133 | type: 0 134 | axis: 0 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: BigHandVertical 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: g 143 | altPositiveButton: h 144 | gravity: 3 145 | dead: 0.001 146 | sensitivity: 3 147 | snap: 1 148 | invert: 0 149 | type: 0 150 | axis: 0 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: PS4_LeftStickX 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 1 164 | invert: 1 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: PS4_LeftStickY 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 1 180 | invert: 0 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: PS4_RightStickX 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 0 193 | dead: 0.19 194 | sensitivity: 1 195 | snap: 1 196 | invert: 1 197 | type: 2 198 | axis: 2 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: PS4_RightStickY 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 0 209 | dead: 0.19 210 | sensitivity: 1 211 | snap: 1 212 | invert: 0 213 | type: 2 214 | axis: 3 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fingers 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: joystick button 2 221 | positiveButton: joystick button 0 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 3 225 | dead: 0.001 226 | sensitivity: 3 227 | snap: 1 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: PS4_Vertical 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: joystick button 1 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 3 241 | dead: 0.001 242 | sensitivity: 3 243 | snap: 1 244 | invert: 1 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: [] 7 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 18 7 | productGUID: b0affbe664f6d4a1481433a8930ce94b 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: DefaultCompany 16 | productName: ArmRobot 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 53 | iosShowActivityIndicatorOnLoading: -1 54 | androidShowActivityIndicatorOnLoading: -1 55 | displayResolutionDialog: 0 56 | iosUseCustomAppBackgroundBehavior: 0 57 | iosAllowHTTPDownload: 1 58 | allowedAutorotateToPortrait: 1 59 | allowedAutorotateToPortraitUpsideDown: 1 60 | allowedAutorotateToLandscapeRight: 1 61 | allowedAutorotateToLandscapeLeft: 1 62 | useOSAutorotation: 1 63 | use32BitDisplayBuffer: 1 64 | preserveFramebufferAlpha: 0 65 | disableDepthAndStencilBuffers: 0 66 | androidStartInFullscreen: 1 67 | androidRenderOutsideSafeArea: 1 68 | androidUseSwappy: 0 69 | androidBlitType: 0 70 | defaultIsNativeResolution: 1 71 | macRetinaSupport: 1 72 | runInBackground: 1 73 | captureSingleScreen: 0 74 | muteOtherAudioSources: 0 75 | Prepare IOS For Recording: 0 76 | Force IOS Speakers When Recording: 0 77 | deferSystemGesturesMode: 0 78 | hideHomeButton: 0 79 | submitAnalytics: 1 80 | usePlayerLog: 1 81 | bakeCollisionMeshes: 0 82 | forceSingleInstance: 0 83 | useFlipModelSwapchain: 1 84 | resizableWindow: 0 85 | useMacAppStoreValidation: 0 86 | macAppStoreCategory: public.app-category.games 87 | gpuSkinning: 1 88 | graphicsJobs: 0 89 | xboxPIXTextureCapture: 0 90 | xboxEnableAvatar: 0 91 | xboxEnableKinect: 0 92 | xboxEnableKinectAutoTracking: 0 93 | xboxEnableFitness: 0 94 | visibleInBackground: 1 95 | allowFullscreenSwitch: 1 96 | graphicsJobMode: 0 97 | fullscreenMode: 1 98 | xboxSpeechDB: 0 99 | xboxEnableHeadOrientation: 0 100 | xboxEnableGuest: 0 101 | xboxEnablePIXSampling: 0 102 | metalFramebufferOnly: 0 103 | xboxOneResolution: 0 104 | xboxOneSResolution: 0 105 | xboxOneXResolution: 3 106 | xboxOneMonoLoggingLevel: 0 107 | xboxOneLoggingLevel: 1 108 | xboxOneDisableEsram: 0 109 | xboxOnePresentImmediateThreshold: 0 110 | switchQueueCommandMemory: 0 111 | switchQueueControlMemory: 16384 112 | switchQueueComputeMemory: 262144 113 | switchNVNShaderPoolsGranularity: 33554432 114 | switchNVNDefaultPoolsGranularity: 16777216 115 | switchNVNOtherPoolsGranularity: 16777216 116 | vulkanEnableSetSRGBWrite: 0 117 | m_SupportedAspectRatios: 118 | 4:3: 1 119 | 5:4: 1 120 | 16:10: 1 121 | 16:9: 1 122 | Others: 1 123 | bundleVersion: 0.1 124 | preloadedAssets: [] 125 | metroInputSource: 0 126 | wsaTransparentSwapchain: 0 127 | m_HolographicPauseOnTrackingLoss: 1 128 | xboxOneDisableKinectGpuReservation: 1 129 | xboxOneEnable7thCore: 1 130 | vrSettings: 131 | cardboard: 132 | depthFormat: 0 133 | enableTransitionView: 0 134 | daydream: 135 | depthFormat: 0 136 | useSustainedPerformanceMode: 0 137 | enableVideoLayer: 0 138 | useProtectedVideoMemory: 0 139 | minimumSupportedHeadTracking: 0 140 | maximumSupportedHeadTracking: 1 141 | hololens: 142 | depthFormat: 1 143 | depthBufferSharingEnabled: 1 144 | lumin: 145 | depthFormat: 0 146 | frameTiming: 2 147 | enableGLCache: 0 148 | glCacheMaxBlobSize: 524288 149 | glCacheMaxFileSize: 8388608 150 | oculus: 151 | sharedDepthBuffer: 1 152 | dashSupport: 1 153 | lowOverheadMode: 0 154 | enable360StereoCapture: 0 155 | isWsaHolographicRemotingEnabled: 0 156 | protectGraphicsMemory: 0 157 | enableFrameTimingStats: 0 158 | useHDRDisplay: 0 159 | m_ColorGamuts: 00000000 160 | targetPixelDensity: 30 161 | resolutionScalingMode: 0 162 | androidSupportedAspectRatio: 1 163 | androidMaxAspectRatio: 2.1 164 | applicationIdentifier: {} 165 | buildNumber: {} 166 | AndroidBundleVersionCode: 1 167 | AndroidMinSdkVersion: 19 168 | AndroidTargetSdkVersion: 0 169 | AndroidPreferredInstallLocation: 1 170 | aotOptions: 171 | stripEngineCode: 1 172 | iPhoneStrippingLevel: 0 173 | iPhoneScriptCallOptimization: 0 174 | ForceInternetPermission: 0 175 | ForceSDCardPermission: 0 176 | CreateWallpaper: 0 177 | APKExpansionFiles: 0 178 | keepLoadedShadersAlive: 0 179 | StripUnusedMeshComponents: 1 180 | VertexChannelCompressionMask: 4054 181 | iPhoneSdkVersion: 988 182 | iOSTargetOSVersionString: 10.0 183 | tvOSSdkVersion: 0 184 | tvOSRequireExtendedGameController: 0 185 | tvOSTargetOSVersionString: 10.0 186 | uIPrerenderedIcon: 0 187 | uIRequiresPersistentWiFi: 0 188 | uIRequiresFullScreen: 1 189 | uIStatusBarHidden: 1 190 | uIExitOnSuspend: 0 191 | uIStatusBarStyle: 0 192 | iPhoneSplashScreen: {fileID: 0} 193 | iPhoneHighResSplashScreen: {fileID: 0} 194 | iPhoneTallHighResSplashScreen: {fileID: 0} 195 | iPhone47inSplashScreen: {fileID: 0} 196 | iPhone55inPortraitSplashScreen: {fileID: 0} 197 | iPhone55inLandscapeSplashScreen: {fileID: 0} 198 | iPhone58inPortraitSplashScreen: {fileID: 0} 199 | iPhone58inLandscapeSplashScreen: {fileID: 0} 200 | iPadPortraitSplashScreen: {fileID: 0} 201 | iPadHighResPortraitSplashScreen: {fileID: 0} 202 | iPadLandscapeSplashScreen: {fileID: 0} 203 | iPadHighResLandscapeSplashScreen: {fileID: 0} 204 | iPhone65inPortraitSplashScreen: {fileID: 0} 205 | iPhone65inLandscapeSplashScreen: {fileID: 0} 206 | iPhone61inPortraitSplashScreen: {fileID: 0} 207 | iPhone61inLandscapeSplashScreen: {fileID: 0} 208 | appleTVSplashScreen: {fileID: 0} 209 | appleTVSplashScreen2x: {fileID: 0} 210 | tvOSSmallIconLayers: [] 211 | tvOSSmallIconLayers2x: [] 212 | tvOSLargeIconLayers: [] 213 | tvOSLargeIconLayers2x: [] 214 | tvOSTopShelfImageLayers: [] 215 | tvOSTopShelfImageLayers2x: [] 216 | tvOSTopShelfImageWideLayers: [] 217 | tvOSTopShelfImageWideLayers2x: [] 218 | iOSLaunchScreenType: 0 219 | iOSLaunchScreenPortrait: {fileID: 0} 220 | iOSLaunchScreenLandscape: {fileID: 0} 221 | iOSLaunchScreenBackgroundColor: 222 | serializedVersion: 2 223 | rgba: 0 224 | iOSLaunchScreenFillPct: 100 225 | iOSLaunchScreenSize: 100 226 | iOSLaunchScreenCustomXibPath: 227 | iOSLaunchScreeniPadType: 0 228 | iOSLaunchScreeniPadImage: {fileID: 0} 229 | iOSLaunchScreeniPadBackgroundColor: 230 | serializedVersion: 2 231 | rgba: 0 232 | iOSLaunchScreeniPadFillPct: 100 233 | iOSLaunchScreeniPadSize: 100 234 | iOSLaunchScreeniPadCustomXibPath: 235 | iOSUseLaunchScreenStoryboard: 0 236 | iOSLaunchScreenCustomStoryboardPath: 237 | iOSDeviceRequirements: [] 238 | iOSURLSchemes: [] 239 | iOSBackgroundModes: 0 240 | iOSMetalForceHardShadows: 0 241 | metalEditorSupport: 1 242 | metalAPIValidation: 1 243 | iOSRenderExtraFrameOnPause: 0 244 | appleDeveloperTeamID: 245 | iOSManualSigningProvisioningProfileID: 246 | tvOSManualSigningProvisioningProfileID: 247 | iOSManualSigningProvisioningProfileType: 0 248 | tvOSManualSigningProvisioningProfileType: 0 249 | appleEnableAutomaticSigning: 0 250 | iOSRequireARKit: 0 251 | iOSAutomaticallyDetectAndAddCapabilities: 1 252 | appleEnableProMotion: 0 253 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea 254 | templatePackageId: com.unity.template.3d@3.1.0 255 | templateDefaultScene: Assets/Scenes/SampleScene.unity 256 | AndroidTargetArchitectures: 1 257 | AndroidSplashScreenScale: 0 258 | androidSplashScreen: {fileID: 0} 259 | AndroidKeystoreName: '{inproject}: ' 260 | AndroidKeyaliasName: 261 | AndroidBuildApkPerCpuArchitecture: 0 262 | AndroidTVCompatibility: 0 263 | AndroidIsGame: 1 264 | AndroidEnableTango: 0 265 | androidEnableBanner: 1 266 | androidUseLowAccuracyLocation: 0 267 | androidUseCustomKeystore: 0 268 | m_AndroidBanners: 269 | - width: 320 270 | height: 180 271 | banner: {fileID: 0} 272 | androidGamepadSupportLevel: 0 273 | AndroidValidateAppBundleSize: 1 274 | AndroidAppBundleSizeToValidate: 150 275 | resolutionDialogBanner: {fileID: 0} 276 | m_BuildTargetIcons: [] 277 | m_BuildTargetPlatformIcons: [] 278 | m_BuildTargetBatching: 279 | - m_BuildTarget: Standalone 280 | m_StaticBatching: 1 281 | m_DynamicBatching: 0 282 | - m_BuildTarget: tvOS 283 | m_StaticBatching: 1 284 | m_DynamicBatching: 0 285 | - m_BuildTarget: Android 286 | m_StaticBatching: 1 287 | m_DynamicBatching: 0 288 | - m_BuildTarget: iPhone 289 | m_StaticBatching: 1 290 | m_DynamicBatching: 0 291 | - m_BuildTarget: WebGL 292 | m_StaticBatching: 0 293 | m_DynamicBatching: 0 294 | m_BuildTargetGraphicsAPIs: 295 | - m_BuildTarget: AndroidPlayer 296 | m_APIs: 150000000b000000 297 | m_Automatic: 0 298 | - m_BuildTarget: iOSSupport 299 | m_APIs: 10000000 300 | m_Automatic: 1 301 | - m_BuildTarget: AppleTVSupport 302 | m_APIs: 10000000 303 | m_Automatic: 0 304 | - m_BuildTarget: WebGLSupport 305 | m_APIs: 0b000000 306 | m_Automatic: 1 307 | m_BuildTargetVRSettings: 308 | - m_BuildTarget: Standalone 309 | m_Enabled: 0 310 | m_Devices: 311 | - Oculus 312 | - OpenVR 313 | openGLRequireES31: 0 314 | openGLRequireES31AEP: 0 315 | openGLRequireES32: 0 316 | vuforiaEnabled: 0 317 | m_TemplateCustomTags: {} 318 | mobileMTRendering: 319 | Android: 1 320 | iPhone: 1 321 | tvOS: 1 322 | m_BuildTargetGroupLightmapEncodingQuality: [] 323 | m_BuildTargetGroupLightmapSettings: [] 324 | playModeTestRunnerEnabled: 0 325 | runPlayModeTestAsEditModeTest: 0 326 | actionOnDotNetUnhandledException: 1 327 | enableInternalProfiler: 0 328 | logObjCUncaughtExceptions: 1 329 | enableCrashReportAPI: 0 330 | cameraUsageDescription: 331 | locationUsageDescription: 332 | microphoneUsageDescription: 333 | switchNetLibKey: 334 | switchSocketMemoryPoolSize: 6144 335 | switchSocketAllocatorPoolSize: 128 336 | switchSocketConcurrencyLimit: 14 337 | switchScreenResolutionBehavior: 2 338 | switchUseCPUProfiler: 0 339 | switchApplicationID: 0x01004b9000490000 340 | switchNSODependencies: 341 | switchTitleNames_0: 342 | switchTitleNames_1: 343 | switchTitleNames_2: 344 | switchTitleNames_3: 345 | switchTitleNames_4: 346 | switchTitleNames_5: 347 | switchTitleNames_6: 348 | switchTitleNames_7: 349 | switchTitleNames_8: 350 | switchTitleNames_9: 351 | switchTitleNames_10: 352 | switchTitleNames_11: 353 | switchTitleNames_12: 354 | switchTitleNames_13: 355 | switchTitleNames_14: 356 | switchPublisherNames_0: 357 | switchPublisherNames_1: 358 | switchPublisherNames_2: 359 | switchPublisherNames_3: 360 | switchPublisherNames_4: 361 | switchPublisherNames_5: 362 | switchPublisherNames_6: 363 | switchPublisherNames_7: 364 | switchPublisherNames_8: 365 | switchPublisherNames_9: 366 | switchPublisherNames_10: 367 | switchPublisherNames_11: 368 | switchPublisherNames_12: 369 | switchPublisherNames_13: 370 | switchPublisherNames_14: 371 | switchIcons_0: {fileID: 0} 372 | switchIcons_1: {fileID: 0} 373 | switchIcons_2: {fileID: 0} 374 | switchIcons_3: {fileID: 0} 375 | switchIcons_4: {fileID: 0} 376 | switchIcons_5: {fileID: 0} 377 | switchIcons_6: {fileID: 0} 378 | switchIcons_7: {fileID: 0} 379 | switchIcons_8: {fileID: 0} 380 | switchIcons_9: {fileID: 0} 381 | switchIcons_10: {fileID: 0} 382 | switchIcons_11: {fileID: 0} 383 | switchIcons_12: {fileID: 0} 384 | switchIcons_13: {fileID: 0} 385 | switchIcons_14: {fileID: 0} 386 | switchSmallIcons_0: {fileID: 0} 387 | switchSmallIcons_1: {fileID: 0} 388 | switchSmallIcons_2: {fileID: 0} 389 | switchSmallIcons_3: {fileID: 0} 390 | switchSmallIcons_4: {fileID: 0} 391 | switchSmallIcons_5: {fileID: 0} 392 | switchSmallIcons_6: {fileID: 0} 393 | switchSmallIcons_7: {fileID: 0} 394 | switchSmallIcons_8: {fileID: 0} 395 | switchSmallIcons_9: {fileID: 0} 396 | switchSmallIcons_10: {fileID: 0} 397 | switchSmallIcons_11: {fileID: 0} 398 | switchSmallIcons_12: {fileID: 0} 399 | switchSmallIcons_13: {fileID: 0} 400 | switchSmallIcons_14: {fileID: 0} 401 | switchManualHTML: 402 | switchAccessibleURLs: 403 | switchLegalInformation: 404 | switchMainThreadStackSize: 1048576 405 | switchPresenceGroupId: 406 | switchLogoHandling: 0 407 | switchReleaseVersion: 0 408 | switchDisplayVersion: 1.0.0 409 | switchStartupUserAccount: 0 410 | switchTouchScreenUsage: 0 411 | switchSupportedLanguagesMask: 0 412 | switchLogoType: 0 413 | switchApplicationErrorCodeCategory: 414 | switchUserAccountSaveDataSize: 0 415 | switchUserAccountSaveDataJournalSize: 0 416 | switchApplicationAttribute: 0 417 | switchCardSpecSize: -1 418 | switchCardSpecClock: -1 419 | switchRatingsMask: 0 420 | switchRatingsInt_0: 0 421 | switchRatingsInt_1: 0 422 | switchRatingsInt_2: 0 423 | switchRatingsInt_3: 0 424 | switchRatingsInt_4: 0 425 | switchRatingsInt_5: 0 426 | switchRatingsInt_6: 0 427 | switchRatingsInt_7: 0 428 | switchRatingsInt_8: 0 429 | switchRatingsInt_9: 0 430 | switchRatingsInt_10: 0 431 | switchRatingsInt_11: 0 432 | switchLocalCommunicationIds_0: 433 | switchLocalCommunicationIds_1: 434 | switchLocalCommunicationIds_2: 435 | switchLocalCommunicationIds_3: 436 | switchLocalCommunicationIds_4: 437 | switchLocalCommunicationIds_5: 438 | switchLocalCommunicationIds_6: 439 | switchLocalCommunicationIds_7: 440 | switchParentalControl: 0 441 | switchAllowsScreenshot: 1 442 | switchAllowsVideoCapturing: 1 443 | switchAllowsRuntimeAddOnContentInstall: 0 444 | switchDataLossConfirmation: 0 445 | switchUserAccountLockEnabled: 0 446 | switchSystemResourceMemory: 16777216 447 | switchSupportedNpadStyles: 3 448 | switchNativeFsCacheSize: 32 449 | switchIsHoldTypeHorizontal: 0 450 | switchSupportedNpadCount: 8 451 | switchSocketConfigEnabled: 0 452 | switchTcpInitialSendBufferSize: 32 453 | switchTcpInitialReceiveBufferSize: 64 454 | switchTcpAutoSendBufferSizeMax: 256 455 | switchTcpAutoReceiveBufferSizeMax: 256 456 | switchUdpSendBufferSize: 9 457 | switchUdpReceiveBufferSize: 42 458 | switchSocketBufferEfficiency: 4 459 | switchSocketInitializeEnabled: 1 460 | switchNetworkInterfaceManagerInitializeEnabled: 1 461 | switchPlayerConnectionEnabled: 1 462 | ps4NPAgeRating: 12 463 | ps4NPTitleSecret: 464 | ps4NPTrophyPackPath: 465 | ps4ParentalLevel: 11 466 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 467 | ps4Category: 0 468 | ps4MasterVersion: 01.00 469 | ps4AppVersion: 01.00 470 | ps4AppType: 0 471 | ps4ParamSfxPath: 472 | ps4VideoOutPixelFormat: 0 473 | ps4VideoOutInitialWidth: 1920 474 | ps4VideoOutBaseModeInitialWidth: 1920 475 | ps4VideoOutReprojectionRate: 60 476 | ps4PronunciationXMLPath: 477 | ps4PronunciationSIGPath: 478 | ps4BackgroundImagePath: 479 | ps4StartupImagePath: 480 | ps4StartupImagesFolder: 481 | ps4IconImagesFolder: 482 | ps4SaveDataImagePath: 483 | ps4SdkOverride: 484 | ps4BGMPath: 485 | ps4ShareFilePath: 486 | ps4ShareOverlayImagePath: 487 | ps4PrivacyGuardImagePath: 488 | ps4NPtitleDatPath: 489 | ps4RemotePlayKeyAssignment: -1 490 | ps4RemotePlayKeyMappingDir: 491 | ps4PlayTogetherPlayerCount: 0 492 | ps4EnterButtonAssignment: 1 493 | ps4ApplicationParam1: 0 494 | ps4ApplicationParam2: 0 495 | ps4ApplicationParam3: 0 496 | ps4ApplicationParam4: 0 497 | ps4DownloadDataSize: 0 498 | ps4GarlicHeapSize: 2048 499 | ps4ProGarlicHeapSize: 2560 500 | playerPrefsMaxSize: 32768 501 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 502 | ps4pnSessions: 1 503 | ps4pnPresence: 1 504 | ps4pnFriends: 1 505 | ps4pnGameCustomData: 1 506 | playerPrefsSupport: 0 507 | enableApplicationExit: 0 508 | resetTempFolder: 1 509 | restrictedAudioUsageRights: 0 510 | ps4UseResolutionFallback: 0 511 | ps4ReprojectionSupport: 0 512 | ps4UseAudio3dBackend: 0 513 | ps4SocialScreenEnabled: 0 514 | ps4ScriptOptimizationLevel: 0 515 | ps4Audio3dVirtualSpeakerCount: 14 516 | ps4attribCpuUsage: 0 517 | ps4PatchPkgPath: 518 | ps4PatchLatestPkgPath: 519 | ps4PatchChangeinfoPath: 520 | ps4PatchDayOne: 0 521 | ps4attribUserManagement: 0 522 | ps4attribMoveSupport: 0 523 | ps4attrib3DSupport: 0 524 | ps4attribShareSupport: 0 525 | ps4attribExclusiveVR: 0 526 | ps4disableAutoHideSplash: 0 527 | ps4videoRecordingFeaturesUsed: 0 528 | ps4contentSearchFeaturesUsed: 0 529 | ps4attribEyeToEyeDistanceSettingVR: 0 530 | ps4IncludedModules: [] 531 | monoEnv: 532 | splashScreenBackgroundSourceLandscape: {fileID: 0} 533 | splashScreenBackgroundSourcePortrait: {fileID: 0} 534 | blurSplashScreenBackground: 1 535 | spritePackerPolicy: 536 | webGLMemorySize: 16 537 | webGLExceptionSupport: 1 538 | webGLNameFilesAsHashes: 0 539 | webGLDataCaching: 1 540 | webGLDebugSymbols: 0 541 | webGLEmscriptenArgs: 542 | webGLModulesDirectory: 543 | webGLTemplate: APPLICATION:Default 544 | webGLAnalyzeBuildSize: 0 545 | webGLUseEmbeddedResources: 0 546 | webGLCompressionFormat: 1 547 | webGLLinkerTarget: 1 548 | webGLThreadsSupport: 0 549 | webGLWasmStreaming: 0 550 | scriptingDefineSymbols: {} 551 | platformArchitecture: {} 552 | scriptingBackend: {} 553 | il2cppCompilerConfiguration: {} 554 | managedStrippingLevel: {} 555 | incrementalIl2cppBuild: {} 556 | allowUnsafeCode: 0 557 | additionalIl2CppArgs: 558 | scriptingRuntimeVersion: 1 559 | gcIncremental: 0 560 | gcWBarrierValidation: 0 561 | apiCompatibilityLevelPerPlatform: {} 562 | m_RenderingPath: 1 563 | m_MobileRenderingPath: 1 564 | metroPackageName: Template_3D 565 | metroPackageVersion: 566 | metroCertificatePath: 567 | metroCertificatePassword: 568 | metroCertificateSubject: 569 | metroCertificateIssuer: 570 | metroCertificateNotAfter: 0000000000000000 571 | metroApplicationDescription: Template_3D 572 | wsaImages: {} 573 | metroTileShortName: 574 | metroTileShowName: 0 575 | metroMediumTileShowName: 0 576 | metroLargeTileShowName: 0 577 | metroWideTileShowName: 0 578 | metroSupportStreamingInstall: 0 579 | metroLastRequiredScene: 0 580 | metroDefaultTileSize: 1 581 | metroTileForegroundText: 2 582 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 583 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 584 | a: 1} 585 | metroSplashScreenUseBackgroundColor: 0 586 | platformCapabilities: {} 587 | metroTargetDeviceFamilies: {} 588 | metroFTAName: 589 | metroFTAFileTypes: [] 590 | metroProtocolName: 591 | XboxOneProductId: 592 | XboxOneUpdateKey: 593 | XboxOneSandboxId: 594 | XboxOneContentId: 595 | XboxOneTitleId: 596 | XboxOneSCId: 597 | XboxOneGameOsOverridePath: 598 | XboxOnePackagingOverridePath: 599 | XboxOneAppManifestOverridePath: 600 | XboxOneVersion: 1.0.0.0 601 | XboxOnePackageEncryption: 0 602 | XboxOnePackageUpdateGranularity: 2 603 | XboxOneDescription: 604 | XboxOneLanguage: 605 | - enus 606 | XboxOneCapability: [] 607 | XboxOneGameRating: {} 608 | XboxOneIsContentPackage: 0 609 | XboxOneEnableGPUVariability: 1 610 | XboxOneSockets: {} 611 | XboxOneSplashScreen: {fileID: 0} 612 | XboxOneAllowedProductIds: [] 613 | XboxOnePersistentLocalStorageSize: 0 614 | XboxOneXTitleMemory: 8 615 | xboxOneScriptCompiler: 1 616 | XboxOneOverrideIdentityName: 617 | vrEditorSettings: 618 | daydream: 619 | daydreamIconForeground: {fileID: 0} 620 | daydreamIconBackground: {fileID: 0} 621 | cloudServicesEnabled: 622 | UNet: 1 623 | luminIcon: 624 | m_Name: 625 | m_ModelFolderPath: 626 | m_PortalFolderPath: 627 | luminCert: 628 | m_CertPath: 629 | m_SignPackage: 1 630 | luminIsChannelApp: 0 631 | luminVersion: 632 | m_VersionCode: 1 633 | m_VersionName: 634 | facebookSdkVersion: 635 | facebookAppId: 636 | facebookCookies: 1 637 | facebookLogging: 1 638 | facebookStatus: 1 639 | facebookXfbml: 0 640 | facebookFrictionlessRequests: 1 641 | apiCompatibilityLevel: 6 642 | cloudProjectId: bc555b03-4f25-4d13-95ec-d07f9f1198ac 643 | framebufferDepthMemorylessMode: 0 644 | projectName: ArmRobot 645 | organizationId: sarahw_unity 646 | cloudEnabled: 0 647 | enableNativePlatformBackendsForNewInputSystem: 0 648 | disableOldInputManagerSupport: 0 649 | legacyClampBlendShapeWeights: 1 650 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2020.1.0b5 2 | m_EditorVersionWithRevision: 2020.1.0b5 (f017efceb459) 3 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | streamingMipmapsActive: 0 33 | streamingMipmapsAddAllCameras: 1 34 | streamingMipmapsMemoryBudget: 512 35 | streamingMipmapsRenderersPerFrame: 512 36 | streamingMipmapsMaxLevelReduction: 2 37 | streamingMipmapsMaxFileIORequests: 1024 38 | particleRaycastBudget: 4 39 | asyncUploadTimeSlice: 2 40 | asyncUploadBufferSize: 16 41 | asyncUploadPersistentBuffer: 1 42 | resolutionScalingFixedDPIFactor: 1 43 | excludedTargetPlatforms: [] 44 | - serializedVersion: 2 45 | name: Low 46 | pixelLightCount: 0 47 | shadows: 0 48 | shadowResolution: 0 49 | shadowProjection: 1 50 | shadowCascades: 1 51 | shadowDistance: 20 52 | shadowNearPlaneOffset: 3 53 | shadowCascade2Split: 0.33333334 54 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 55 | shadowmaskMode: 0 56 | blendWeights: 2 57 | textureQuality: 0 58 | anisotropicTextures: 0 59 | antiAliasing: 0 60 | softParticles: 0 61 | softVegetation: 0 62 | realtimeReflectionProbes: 0 63 | billboardsFaceCameraPosition: 0 64 | vSyncCount: 0 65 | lodBias: 0.4 66 | maximumLODLevel: 0 67 | streamingMipmapsActive: 0 68 | streamingMipmapsAddAllCameras: 1 69 | streamingMipmapsMemoryBudget: 512 70 | streamingMipmapsRenderersPerFrame: 512 71 | streamingMipmapsMaxLevelReduction: 2 72 | streamingMipmapsMaxFileIORequests: 1024 73 | particleRaycastBudget: 16 74 | asyncUploadTimeSlice: 2 75 | asyncUploadBufferSize: 16 76 | asyncUploadPersistentBuffer: 1 77 | resolutionScalingFixedDPIFactor: 1 78 | excludedTargetPlatforms: [] 79 | - serializedVersion: 2 80 | name: Medium 81 | pixelLightCount: 1 82 | shadows: 1 83 | shadowResolution: 0 84 | shadowProjection: 1 85 | shadowCascades: 1 86 | shadowDistance: 20 87 | shadowNearPlaneOffset: 3 88 | shadowCascade2Split: 0.33333334 89 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 90 | shadowmaskMode: 0 91 | blendWeights: 2 92 | textureQuality: 0 93 | anisotropicTextures: 1 94 | antiAliasing: 0 95 | softParticles: 0 96 | softVegetation: 0 97 | realtimeReflectionProbes: 0 98 | billboardsFaceCameraPosition: 0 99 | vSyncCount: 1 100 | lodBias: 0.7 101 | maximumLODLevel: 0 102 | streamingMipmapsActive: 0 103 | streamingMipmapsAddAllCameras: 1 104 | streamingMipmapsMemoryBudget: 512 105 | streamingMipmapsRenderersPerFrame: 512 106 | streamingMipmapsMaxLevelReduction: 2 107 | streamingMipmapsMaxFileIORequests: 1024 108 | particleRaycastBudget: 64 109 | asyncUploadTimeSlice: 2 110 | asyncUploadBufferSize: 16 111 | asyncUploadPersistentBuffer: 1 112 | resolutionScalingFixedDPIFactor: 1 113 | excludedTargetPlatforms: [] 114 | - serializedVersion: 2 115 | name: High 116 | pixelLightCount: 2 117 | shadows: 2 118 | shadowResolution: 1 119 | shadowProjection: 1 120 | shadowCascades: 2 121 | shadowDistance: 40 122 | shadowNearPlaneOffset: 3 123 | shadowCascade2Split: 0.33333334 124 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 125 | shadowmaskMode: 1 126 | blendWeights: 2 127 | textureQuality: 0 128 | anisotropicTextures: 1 129 | antiAliasing: 0 130 | softParticles: 0 131 | softVegetation: 1 132 | realtimeReflectionProbes: 1 133 | billboardsFaceCameraPosition: 1 134 | vSyncCount: 1 135 | lodBias: 1 136 | maximumLODLevel: 0 137 | streamingMipmapsActive: 0 138 | streamingMipmapsAddAllCameras: 1 139 | streamingMipmapsMemoryBudget: 512 140 | streamingMipmapsRenderersPerFrame: 512 141 | streamingMipmapsMaxLevelReduction: 2 142 | streamingMipmapsMaxFileIORequests: 1024 143 | particleRaycastBudget: 256 144 | asyncUploadTimeSlice: 2 145 | asyncUploadBufferSize: 16 146 | asyncUploadPersistentBuffer: 1 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Very High 151 | pixelLightCount: 3 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 2 156 | shadowDistance: 70 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 2 164 | antiAliasing: 2 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 1.5 171 | maximumLODLevel: 0 172 | streamingMipmapsActive: 0 173 | streamingMipmapsAddAllCameras: 1 174 | streamingMipmapsMemoryBudget: 512 175 | streamingMipmapsRenderersPerFrame: 512 176 | streamingMipmapsMaxLevelReduction: 2 177 | streamingMipmapsMaxFileIORequests: 1024 178 | particleRaycastBudget: 1024 179 | asyncUploadTimeSlice: 2 180 | asyncUploadBufferSize: 16 181 | asyncUploadPersistentBuffer: 1 182 | resolutionScalingFixedDPIFactor: 1 183 | excludedTargetPlatforms: [] 184 | - serializedVersion: 2 185 | name: Ultra 186 | pixelLightCount: 4 187 | shadows: 2 188 | shadowResolution: 2 189 | shadowProjection: 1 190 | shadowCascades: 4 191 | shadowDistance: 150 192 | shadowNearPlaneOffset: 3 193 | shadowCascade2Split: 0.33333334 194 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 195 | shadowmaskMode: 1 196 | blendWeights: 4 197 | textureQuality: 0 198 | anisotropicTextures: 2 199 | antiAliasing: 2 200 | softParticles: 1 201 | softVegetation: 1 202 | realtimeReflectionProbes: 1 203 | billboardsFaceCameraPosition: 1 204 | vSyncCount: 1 205 | lodBias: 2 206 | maximumLODLevel: 0 207 | streamingMipmapsActive: 0 208 | streamingMipmapsAddAllCameras: 1 209 | streamingMipmapsMemoryBudget: 512 210 | streamingMipmapsRenderersPerFrame: 512 211 | streamingMipmapsMaxLevelReduction: 2 212 | streamingMipmapsMaxFileIORequests: 1024 213 | particleRaycastBudget: 4096 214 | asyncUploadTimeSlice: 2 215 | asyncUploadBufferSize: 16 216 | asyncUploadPersistentBuffer: 1 217 | resolutionScalingFixedDPIFactor: 1 218 | excludedTargetPlatforms: [] 219 | m_PerPlatformDefaultQuality: 220 | Android: 2 221 | Lumin: 5 222 | Nintendo 3DS: 5 223 | Nintendo Switch: 5 224 | PS4: 5 225 | PSP2: 2 226 | Standalone: 5 227 | WebGL: 3 228 | Windows Store Apps: 5 229 | XboxOne: 5 230 | iPhone: 2 231 | tvOS: 2 232 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: 7 | - Base01 8 | layers: 9 | - Default 10 | - TransparentFX 11 | - Ignore Raycast 12 | - 13 | - Water 14 | - UI 15 | - 16 | - 17 | - Base 18 | - Base01 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | - 41 | m_SortingLayers: 42 | - name: Default 43 | uniqueID: 0 44 | locked: 0 45 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.0133 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 1 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_RenderPipeSettingsPath: 10 | m_FixedTimeStep: 0.016666668 11 | m_MaxDeltaTime: 0.05 12 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /ArmRobot/ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /ArmRobot/UserSettings/EditorUserSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!162 &1 4 | EditorUserSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_ConfigSettings: 8 | vcSharedLogLevel: 9 | value: 0d5e400f0650 10 | flags: 0 11 | m_VCAutomaticAdd: 1 12 | m_VCDebugCom: 0 13 | m_VCDebugCmd: 0 14 | m_VCDebugOut: 0 15 | m_SemanticMergeMode: 2 16 | m_VCShowFailedCheckout: 1 17 | m_VCOverwriteFailedCheckoutAssets: 1 18 | m_VCOverlayIcons: 1 19 | m_VCAllowAsyncUpdate: 0 20 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Unity Robotics Demos 2 | 3 | The recent integration of [Nvidia's PhysX 4](https://news.developer.nvidia.com/announcing-physx-sdk-4-0-an-open-source-physics-engine/) into Unity has dramatically improved the quality of robotics simulation that is possible in Unity. 4 | 5 | * The new [articulation joint system](https://docs.unity3d.com/2020.1/Documentation/ScriptReference/ArticulationBody.html) (available in 2020.1) is much better suited to building things like robot arms than the older joint types available in Unity. It uses Featherstone's algorithm and a reduced coordinate representation to gaurantee no unwanted stretch in the joints. In practice, this means that we can now chain many joints in a row and still achieve stable and precise movement. 6 | 7 | * The new [Temporal Gauss Seidel (TGS) solver](https://gameworksdocs.nvidia.com/PhysX/4.0/documentation/PhysXGuide/Manual/RigidBodyDynamics.html#temporal-gauss-seidel) also supports more accurate simulation. 8 | 9 | ## Installation 10 | 11 | Unity 2020.10b1 or later is needed for the new joint system. 12 | 13 | #### Install Unity 14 | 15 | If you do not have Unity 2020.1.0b1 or later, add the latest 2020.1 beta release 16 | through [Unity Hub](https://unity3d.com/get-unity/download). This demo has been 17 | last tested on Unity 2020.1.0b5. 18 | 19 | #### Clone the Articulations Robot Demo Repo 20 | 21 | Clone this repository: 22 | ```sh 23 | git clone https://github.com/Unity-Technologies/articulations-robot-demo.git 24 | ``` 25 | 26 | Then, open the `ArmRobot` project in Unity. 27 | 28 | ## UR3 Robot Arm 29 | 30 | 31 | 32 | This is a simulation of the [Universal Robotics UR3e](https://www.universal-robots.com/products/ur3-robot/) robot. You can steer it by directly rotating all six joints of the arm. You can also rotate the end effector, and open and close the pincher. 33 | 34 | Open `Scenes` > `ArticulationRobot`, and press play. 35 | 36 | #### Manual Controls 37 | 38 | You can move the robot around manually using the following keyboard commands: 39 | 40 | ``` 41 | A/D - rotate base joint 42 | S/W - rotate shoulder joint 43 | Q/E - rotate elbow joint 44 | O/P - rotate wrist1 45 | K/L - rotate wrist2 46 | N/M - rotate wrist3 47 | V/B - rotate hand 48 | X - close pincher 49 | Z - open pincher 50 | ``` 51 | 52 | All manual control is handled through the scripts on the `ManualInput` object. To disable 53 | manual input, just uncheck this object in the Hierarchy window. 54 | 55 | You can learn more about how this robot was built with articulations by following our guide [here](docs/Building-With-Articulations.md). 56 | 57 | ## Robotiq Hand-E Gripper 58 | 59 | 60 | 61 | This simulation focuses on picking up objects with the [Robotiq Hand-E Gripper](https://robotiq.com/products/hand-e-adaptive-robot-gripper). 62 | 63 | Open `Scenes` > `GripperScene`, and press play. Try to pick up the cube and drop it! 64 | 65 | #### Manual Controls 66 | 67 | Use the following keyboard commands: 68 | 69 | ``` 70 | G - down 71 | H - up 72 | X - close pinhcer 73 | Z - open pincher 74 | ``` 75 | 76 | ## ML-Agents Integration 77 | 78 | The Articulation Robot Demo has been integrated with the [ML-Agents Toolkit](https://github.com/Unity-Technologies/ml-agents) on [this branch.](https://github.com/Unity-Technologies/articulations-robot-demo/tree/mlagents) 79 | __Note:__ The integration is not up to date with the latest `master` branch. 80 | 81 | ## Survey 82 | 83 | Your opinion matters a great deal to us. Only by hearing your thoughts can we continue to make Unity a better simulator for robotics. Please take a few minutes to let us know about it. 84 | 85 | [Fill out the survey](https://docs.google.com/forms/d/e/1FAIpQLSc77ah4azt6D4AOxCWhjpCBgM6Si6f0DA_dunM-ZhDf5xJlgg/viewform) 86 | 87 | ## License 88 | 89 | [Apache License 2.0](LICENSE) 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /docs/Building-With-Articulations.md: -------------------------------------------------------------------------------- 1 | # Building with Articulations 2 | 3 | Here we will walk through how the UR3 in the `ArticulationRobot` scene was put together. 4 | 5 | When building a robot arm with articulation joints, each movable part of the robot should be a child of the previous part. You can see these successive parent-child relationships by expanding the `UR3` object in the Hierarchy window. 6 | 7 | 8 | 9 | Next, you must add an `ArticulationBody` component to each of the game objects that compose the robot arm. You will not need to add `Rigidbody` components to any parts of the robot arm, but you may still want to add them to other objects in the environment that the robot will interact with. In our example, there are `Rigidbody` components only on the cube and the table. You do still need to add colliders though. 10 | 11 | ### The Root Body 12 | 13 | If you examine the `ArticulationBody` component on the base of the robot (the `UR3` game object), you will notice that it has a very simple interface. This is the root body of the articulation, which plays a special role. The `immovable` property should be checked if you do not intend this part of the robot to move around. 14 | 15 | 16 | 17 | The successive `ArticulationBody` components on your robot arm are much more customizable. We will dive into these settings next. 18 | 19 | 20 | 21 | ### Articulation Joint Types 22 | 23 | The most important setting here is `Articulation Joint Type`. The available types are: 24 | * `Fixed` - does not allow any relative movement of the connected bodies 25 | * `Prismatic` - only allows relative translation of the connection bodies along one specified axis 26 | * `Revolute` - allows rotational movement around the X axis of the parent's anchor 27 | * `Spherical` - allows relative rotations (but not translations) of the two connected bodies 28 | 29 | Since all the joints on our robot arm rotate on only one axis, all of our arm's articulation joints are `Revolute`. Although `Revolute` joints are contrained to only rotate around the X axis, you can use the `Angular Rotation` property to rotate the entire articulation body such that its X axis points in the desired direction. The two pincher fingers on the hand are `Prismatic` because they slide back and forth on one axis. 30 | 31 | ### Damping and Friction 32 | All the joint types have the following physical parameters: 33 | 34 | * `Linear Damping` - Resistance that will slow down linear motion of the joint 35 | * `Angular Damping` - Resistance that will slow down angular motion of the joint 36 | * `Joint Friction` - Amount of friction that is applied as a result of connected bodies moving relative to this body 37 | 38 | ### Drives 39 | There are two ways to move articulation joints - by applying forces, or by using drives. In this project, we use drives. A drive attempts to move the joint to the specified `target` or at the specified `target velocity`. Here, we move our revolute joints by updating the `target` to the desired rotation in degrees. You can see this being done in the `RotateTo` method in the `ArticulationJointController` script. 40 | 41 | The drive acts like a spring in its attempt to achieve and maintain the `target`. 42 | 43 | On the drive, you can also specify: 44 | * `Stiffness` - The stiffness of the spring connected to this drive. 45 | * `Damping` - The damping of the spring attached to this drive. 46 | * `Force Limit` - The maximum force this drive can apply to a body. 47 | 48 | ### Limits 49 | 50 | By default, the `Motion` property on the articulation components will be set to `Free`. For a revolute joint, this means that the joint can rotate indefinitely. However, real systems rarely act this way. In the real UR3 robot, safeguards prevent the joints from moving beyond two full revolutions in either direction. Exceeding this limit in the real robot would twist the wires inside and damage the hardware. 51 | 52 | We can mimic this in simulation by adding limits to our joints. To do this, change the `Motion` selection to `Limited` in the dropdown. Doing so on the revolute joint will add two new properties to the drive - a `Lower Limit` and an `Upper Limit`, defined in degrees. -------------------------------------------------------------------------------- /docs/images/RobotHandDemo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/articulations-robot-demo/111705a8a4417fb7fe1816f46daa67ef01342464/docs/images/RobotHandDemo.gif -------------------------------------------------------------------------------- /docs/images/articulation_base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/articulations-robot-demo/111705a8a4417fb7fe1816f46daa67ef01342464/docs/images/articulation_base.png -------------------------------------------------------------------------------- /docs/images/articulation_other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/articulations-robot-demo/111705a8a4417fb7fe1816f46daa67ef01342464/docs/images/articulation_other.png -------------------------------------------------------------------------------- /docs/images/hand-e.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/articulations-robot-demo/111705a8a4417fb7fe1816f46daa67ef01342464/docs/images/hand-e.gif -------------------------------------------------------------------------------- /docs/images/parent-child.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/articulations-robot-demo/111705a8a4417fb7fe1816f46daa67ef01342464/docs/images/parent-child.png -------------------------------------------------------------------------------- /docs/images/robot_still.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/articulations-robot-demo/111705a8a4417fb7fe1816f46daa67ef01342464/docs/images/robot_still.png --------------------------------------------------------------------------------