├── ProjectSettings ├── ProjectVersion.txt ├── ClusterInputManager.asset ├── PresetManager.asset ├── XRSettings.asset ├── VersionControlSettings.asset ├── TimeManager.asset ├── EditorBuildSettings.asset ├── VFXManager.asset ├── TimelineSettings.asset ├── AudioManager.asset ├── TagManager.asset ├── UnityConnectSettings.asset ├── EditorSettings.asset ├── PackageManagerSettings.asset ├── DynamicsManager.asset ├── NavMeshAreas.asset ├── Physics2DSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── QualitySettings.asset └── ProjectSettings.asset ├── Thumbnails ├── Player.png ├── Record.png ├── Timeline.png ├── thumbnail.gif ├── ARKitFacialControl.png └── ZigSimFacialControl.png ├── Assets ├── Models │ ├── sloth_all_1001_Normal.png │ ├── sloth_head_blendshapes5.fbx │ ├── sloth_all_1001_AlbedoTransparency.png │ ├── sloth_all_1001_MetallicSmoothness.png │ ├── LICENSE.md.meta │ ├── sloth_all_1001_AlbedoTransparency.mat.meta │ ├── LICENSE.md │ ├── sloth_all_1001_Normal.png.meta │ ├── sloth_all_1001_AlbedoTransparency.png.meta │ ├── sloth_all_1001_MetallicSmoothness.png.meta │ ├── sloth_all_1001_AlbedoTransparency.mat │ └── sloth_head_blendshapes5.fbx.meta ├── SampleRecordData │ ├── FaceCapture_2020-19-7-17-03-23.bytes │ └── FaceCapture_2020-19-7-17-03-23.bytes.meta ├── package.json.meta ├── Models.meta ├── Scenes.meta ├── Scenes │ ├── PlayerScene.unity.meta │ ├── RecorderScene.unity.meta │ └── PlayerScene.unity ├── Scripts.meta ├── Scripts │ ├── Core.meta │ ├── Util.meta │ ├── Core │ │ ├── Editor.meta │ │ ├── Editor │ │ │ ├── com.kodai100.ar-kit-facial-capture.Editor.asmdef.meta │ │ │ ├── ZigSimFacialControlEditor.cs.meta │ │ │ ├── com.kodai100.ar-kit-facial-capture.Editor.asmdef │ │ │ └── ZigSimFacialControlEditor.cs │ │ ├── UdpUtility.cs.meta │ │ ├── ARKitBlendShape.cs.meta │ │ ├── ARKitFacialControl.cs.meta │ │ ├── ARKitFacialRecorder.cs.meta │ │ ├── ARKitFacialValues.cs.meta │ │ ├── FaceRecordDataReader.cs.meta │ │ ├── ZigSimFacialControl.cs.meta │ │ ├── ARKitBlendshapeRemapper.cs.meta │ │ ├── ZeroFormatterGenerated.cs.meta │ │ ├── ARKitFacialControl.cs │ │ ├── FaceRecordDataReader.cs │ │ ├── UdpUtility.cs │ │ ├── ZigSimFacialControl.cs │ │ ├── ARKitFacialRecorder.cs │ │ ├── ARKitBlendshapeRemapper.cs │ │ ├── ARKitBlendShape.cs │ │ └── ARKitFacialValues.cs │ ├── com.kodai100.ar-kit-facial-capture.asmdef.meta │ ├── Util │ │ ├── Logger.cs.meta │ │ ├── RecorderUI.cs.meta │ │ ├── RecorderUI.cs │ │ └── Logger.cs │ └── com.kodai100.ar-kit-facial-capture.asmdef ├── Timelines.meta ├── SampleRecordData.meta ├── Timelines │ ├── SampleTimeline.playable.meta │ └── SampleTimeline.playable └── package.json ├── UserSettings └── EditorUserSettings.asset ├── .gitignore ├── LICENSE.md ├── .gitattributes ├── Packages ├── manifest.json └── packages-lock.json └── README.md /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2021.1.10f1 2 | m_EditorVersionWithRevision: 2021.1.10f1 (b15f561b2cef) 3 | -------------------------------------------------------------------------------- /Thumbnails/Player.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:47725f2aa2e45a2cddc3472afb04cb0f3f6d761ecc2e38188400d88d5072d4bd 3 | size 16049 4 | -------------------------------------------------------------------------------- /Thumbnails/Record.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6905d16ca0154c854db03f2d60044e737abb95ccbec1f89cecbdb111a186a10b 3 | size 316197 4 | -------------------------------------------------------------------------------- /Thumbnails/Timeline.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0cfdc4cb550ede30e32be38559d570b5af3ae113ec828110a8f5aab1b81e2013 3 | size 152547 4 | -------------------------------------------------------------------------------- /Thumbnails/thumbnail.gif: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f2554beac572dc1590c2432183628b6bfd1e00d5b36144d7ad250840b12d264f 3 | size 3766116 4 | -------------------------------------------------------------------------------- /Thumbnails/ARKitFacialControl.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e748fc8b09e05dca58e4fcf93b02ded9c6c1385180f1471be17e5f2ffa64bc27 3 | size 145935 4 | -------------------------------------------------------------------------------- /Thumbnails/ZigSimFacialControl.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1c7c49a476bcde06170f9d04527bcc6a5e36f917f3f38702ca32dcc127788596 3 | size 9986 4 | -------------------------------------------------------------------------------- /Assets/Models/sloth_all_1001_Normal.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ebd437437c3201c7b8b0ce41a11301563fced2da46775a9b4de6b2490439e550 3 | size 2950896 4 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Assets/Models/sloth_head_blendshapes5.fbx: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3781211db628f7d3ebc1c44c61d19d5cefd6b56744e7c5f56e82312c16bd9939 3 | size 643696 4 | -------------------------------------------------------------------------------- /Assets/SampleRecordData/FaceCapture_2020-19-7-17-03-23.bytes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodai100/Unity_ARKitFacialCapture/HEAD/Assets/SampleRecordData/FaceCapture_2020-19-7-17-03-23.bytes -------------------------------------------------------------------------------- /Assets/Models/sloth_all_1001_AlbedoTransparency.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b1f8162d454db2c7d3a5f6dd86095a5b8f1042b84afd33e19e702d5cd67f944b 3 | size 3935660 4 | -------------------------------------------------------------------------------- /Assets/Models/sloth_all_1001_MetallicSmoothness.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ff0bb3d9dff2f217f6009e4d8173df04be267cad7793f1c2c00d4c1b412ec39c 3 | size 1002125 4 | -------------------------------------------------------------------------------- /Assets/package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fdf0a781a2d1d4a49ab536d452ad656c 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /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 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /Assets/Models/LICENSE.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2f44dd138d0f7294192a24cc1af595d4 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Models.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 54639887ba2ef724c80f9c2dc471553d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0458e4ebc89457144bd5ef139dc15e41 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/PlayerScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1aca12afd7b927c4ab8468d04c8f09d8 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scenes/RecorderScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f3f94e97f5bc495478b71e8cc9fbf96a 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a76a1ff8af368264cb5701622da59f0c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Core.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 97f60132ecb342041b1424bcd8131b91 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Util.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7821a062018a0f441ab920b12a4929cb 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Timelines.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 60bdf09f81ceb3941bc66fad5f1addee 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/SampleRecordData.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e5f1ba63ddb73a842b1ef9182159ba43 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a6f9ea6547cd5d94aaee47e70fd1ced0 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /Assets/SampleRecordData/FaceCapture_2020-19-7-17-03-23.bytes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 98c2a1e6646fc8148995b8ebcbf67527 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scripts/com.kodai100.ar-kit-facial-capture.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a4c6aea579405b64194c870af60ef737 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Timelines/SampleTimeline.playable.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6ac1397648ed21e4494e4dd2c8dae697 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/Editor/com.kodai100.ar-kit-facial-capture.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aa0f6580005498e438d874a331b73c93 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /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.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /Assets/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.kodai100.ar-kit-facial-capture", 3 | "displayName": "ARKit Facial Capture", 4 | "version": "1.0.8", 5 | "unity": "2021.1", 6 | "description": "ARKit Facial Capture", 7 | "keywords": [ 8 | "Facial" 9 | ], 10 | "unityRelease": "6f1" 11 | } -------------------------------------------------------------------------------- /Assets/Models/sloth_all_1001_AlbedoTransparency.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0eafc0c8e166e4cd2b0f64b71fda0c45 3 | timeCreated: 1511933011 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | mainObjectFileID: 2100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Scripts/Util/Logger.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4541690aa05ed314ebaca6b30cb650cc 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/UdpUtility.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1092834ca58c33a488c1d22ccbfb3c72 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Util/RecorderUI.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5749a6e60d70ed648aca698430b35653 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/ARKitBlendShape.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e93f55309ce456c4cb3f9c719f40df8b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/ARKitFacialControl.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8439459483d6c8541b7e81b63c2c3d45 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 700 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/ARKitFacialRecorder.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ff173e01302b4ad489e6e3aea673be6a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/ARKitFacialValues.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d2d0be04d3c004047aa85c97095d21a2 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/FaceRecordDataReader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a0ff958bf3b51274aac783962fc4d1a1 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/ZigSimFacialControl.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 962fa02c198e1da4f9a6df66bffdb49d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/ARKitBlendshapeRemapper.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b7fb1fd647489fb44ba7b72e1dca8156 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/ZeroFormatterGenerated.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bc7ff45301b9bb446b87fa2ca3760a6e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /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: 1 9 | path: Assets/Scenes/RecorderScene.unity 10 | guid: f3f94e97f5bc495478b71e8cc9fbf96a 11 | m_configObjects: {} 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/Editor/ZigSimFacialControlEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 904127d6c244efe4f93a53d5aa6de759 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /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_StripUpdateShader: {fileID: 0} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | -------------------------------------------------------------------------------- /Assets/Models/LICENSE.md: -------------------------------------------------------------------------------- 1 | AR Foundation Samples copyright © 2019 Unity Technologies ApS 2 | 3 | Licensed under the Unity Companion License for Unity-dependent projects--see Unity Companion License. 4 | 5 | Unless expressly provided otherwise, the Software under this license is made available strictly on an “AS IS” BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. Please review the license for details on these and other terms and conditions. -------------------------------------------------------------------------------- /ProjectSettings/TimelineSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: a287be6c49135cd4f9b2b8666c39d999, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | assetDefaultFramerate: 60 16 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/Editor/com.kodai100.ar-kit-facial-capture.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.kodai100.ar-kit-facial-capture.Editor", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:a4c6aea579405b64194c870af60ef737" 6 | ], 7 | "includePlatforms": [ 8 | "Editor" 9 | ], 10 | "excludePlatforms": [], 11 | "allowUnsafeCode": false, 12 | "overrideReferences": false, 13 | "precompiledReferences": [], 14 | "autoReferenced": true, 15 | "defineConstraints": [], 16 | "versionDefines": [], 17 | "noEngineReferences": false 18 | } -------------------------------------------------------------------------------- /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 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /Assets/Scripts/com.kodai100.ar-kit-facial-capture.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.kodai100.ar-kit-facial-capture", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:560b04d1a97f54a4e82edc0cbbb69285", 6 | "GUID:f06555f75b070af458a003d92f9efb00", 7 | "GUID:58249fe59878cec4db92981e3c2858cb" 8 | ], 9 | "includePlatforms": [], 10 | "excludePlatforms": [], 11 | "allowUnsafeCode": false, 12 | "overrideReferences": false, 13 | "precompiledReferences": [], 14 | "autoReferenced": true, 15 | "defineConstraints": [], 16 | "versionDefines": [], 17 | "noEngineReferences": false 18 | } -------------------------------------------------------------------------------- /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 | RecentlyUsedScenePath-0: 9 | value: 224247031146466b0c0d072317264c5f37253323380e273324281110edee202aedeb79dae43f31392a4ddd390731133bf7183a08f3050f450400f41a08 10 | flags: 0 11 | vcSharedLogLevel: 12 | value: 0d5e400f0650 13 | flags: 0 14 | m_VCAutomaticAdd: 1 15 | m_VCDebugCom: 0 16 | m_VCDebugCmd: 0 17 | m_VCDebugOut: 0 18 | m_SemanticMergeMode: 2 19 | m_VCShowFailedCheckout: 1 20 | m_VCOverwriteFailedCheckoutAssets: 1 21 | m_VCProjectOverlayIcons: 1 22 | m_VCHierarchyOverlayIcons: 1 23 | m_VCOtherOverlayIcons: 1 24 | m_VCAllowAsyncUpdate: 0 25 | -------------------------------------------------------------------------------- /Assets/Scripts/Util/RecorderUI.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | using UnityEngine.UI; 6 | 7 | using UniRx; 8 | 9 | namespace ProjectBlue.FacialCapture 10 | { 11 | 12 | using Core; 13 | 14 | public class RecorderUI : MonoBehaviour 15 | { 16 | 17 | [SerializeField] 18 | Button recordButton; 19 | 20 | [SerializeField] 21 | Button stopButton; 22 | 23 | [SerializeField] 24 | ZigSimFacialControl zigSimFacialControl; 25 | 26 | 27 | void Start() 28 | { 29 | 30 | 31 | recordButton.OnClickAsObservable().Subscribe(_ => 32 | { 33 | zigSimFacialControl.StartRecording(); 34 | 35 | }).AddTo(this); 36 | 37 | 38 | stopButton.OnClickAsObservable().Subscribe(_ => 39 | { 40 | 41 | zigSimFacialControl.StopRecording(); 42 | 43 | }).AddTo(this); 44 | 45 | } 46 | 47 | } 48 | 49 | } 50 | 51 | -------------------------------------------------------------------------------- /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: 0 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 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /[Ll]ibrary/ 2 | /[Tt]emp/ 3 | /[Oo]bj/ 4 | /[Bb]uild/ 5 | /[Bb]uilds/ 6 | /Assets/AssetStoreTools* 7 | /.vs/ 8 | 9 | # Autogenerated VS/MD solution and project files 10 | ExportedObj/ 11 | *.csproj 12 | *.unityproj 13 | *.sln 14 | *.suo 15 | *.tmp 16 | *.user 17 | *.userprefs 18 | *.pidb 19 | *.booproj 20 | *.svd 21 | 22 | 23 | # Unity3D generated meta files 24 | *.pidb.meta 25 | 26 | # Unity3D Generated File On Crash Reports 27 | sysinfo.txt 28 | 29 | # Builds 30 | *.apk 31 | *.unitypackage 32 | 33 | Assets/StreamingAssets/AssetBundle/ 34 | Assets/StreamingAssets/AssetBundle.meta 35 | 36 | /AssetBundle/ 37 | 38 | *.atmcuser 39 | 40 | *.log 41 | .idea/ 42 | Assets/Plugins/Editor.meta 43 | Assets/Plugins/Editor/JetBrains.meta 44 | Assets/Plugins/Editor/JetBrains/JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll.meta 45 | Assets/Plugins/Editor/JetBrains/JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll 46 | 47 | Assets/UnityEngine.AssetGraph/Cache* 48 | Assets/UnityEngine.AssetGraph/SavedSettings* 49 | Assets/UnityEngine.AssetGraph/TemporalSettingFiles* 50 | Assets/UnityEngine.AssetGraph/Generated* 51 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Kodai Takao - ProjectBLUE 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /Assets/Scripts/Core/ARKitFacialControl.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | using System; 4 | using UniRx; 5 | 6 | namespace ProjectBlue.FacialCapture.Core 7 | { 8 | 9 | public class ARKitFacialControl : MonoBehaviour 10 | { 11 | 12 | public SkinnedMeshRenderer skin; 13 | 14 | // For editor 15 | public List blendShapeList = new List(); 16 | public int[] indexList = new int[Enum.GetNames(typeof(ARKitBlendShape)).Length]; 17 | public float[] strengthMultiplierList = new float[Enum.GetNames(typeof(ARKitBlendShape)).Length]; 18 | 19 | 20 | ARKitToBlendshapeRemapper remapper; 21 | 22 | private void Start() 23 | { 24 | 25 | remapper = new ARKitToBlendshapeRemapper(skin, blendShapeList, indexList, strengthMultiplierList); 26 | 27 | } 28 | 29 | public void ApplyExternal(ARKitFacialValues arkitFacialValues) 30 | { 31 | if(remapper == null) 32 | { 33 | remapper = new ARKitToBlendshapeRemapper(skin, blendShapeList, indexList, strengthMultiplierList); 34 | } 35 | 36 | remapper.Apply(arkitFacialValues); 37 | } 38 | 39 | } 40 | 41 | } -------------------------------------------------------------------------------- /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: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 0 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;rsp;asmref 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: 0 30 | m_AssetPipelineMode: 1 31 | m_CacheServerMode: 0 32 | m_CacheServerEndpoint: 33 | m_CacheServerNamespacePrefix: default 34 | m_CacheServerEnableDownload: 1 35 | m_CacheServerEnableUpload: 1 36 | -------------------------------------------------------------------------------- /ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreReleasePackages: 0 16 | m_EnablePackageDependencies: 0 17 | m_AdvancedSettingsExpanded: 1 18 | m_ScopedRegistriesSettingsExpanded: 1 19 | m_SeeAllPackageVersions: 0 20 | oneTimeWarningShown: 0 21 | m_Registries: 22 | - m_Id: main 23 | m_Name: 24 | m_Url: https://packages.unity.com 25 | m_Scopes: [] 26 | m_IsDefault: 1 27 | m_Capabilities: 7 28 | m_UserSelectedRegistryName: 29 | m_UserAddingNewScopedRegistry: 0 30 | m_RegistryInfoDraft: 31 | m_ErrorMessage: 32 | m_Original: 33 | m_Id: 34 | m_Name: 35 | m_Url: 36 | m_Scopes: [] 37 | m_IsDefault: 0 38 | m_Capabilities: 0 39 | m_Modified: 0 40 | m_Name: 41 | m_Url: 42 | m_Scopes: 43 | - 44 | m_SelectedScopeIndex: 0 45 | m_LoadAssets: 0 46 | -------------------------------------------------------------------------------- /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: 11 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | m_FrictionType: 0 32 | m_EnableEnhancedDeterminism: 0 33 | m_EnableUnifiedHeightmaps: 1 34 | m_DefaultMaxAngluarSpeed: 7 35 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/FaceRecordDataReader.cs: -------------------------------------------------------------------------------- 1 | using ProjectBlue.FacialCapture; 2 | using System; 3 | using System.Diagnostics; 4 | using UnityEngine; 5 | using UnityEngine.Timeline; 6 | using ZeroFormatter; 7 | 8 | namespace ProjectBlue.FacialCapture.Core 9 | { 10 | 11 | public class FaceRecordDataReader : MonoBehaviour, ITimeControl 12 | { 13 | 14 | static readonly int bufferLength = 436; 15 | 16 | [SerializeField] 17 | ARKitFacialControl facialControl; 18 | 19 | [SerializeField] 20 | TextAsset asset; 21 | 22 | public void OnControlTimeStart() 23 | { 24 | ZeroFormatterInitializer.Register(); 25 | } 26 | 27 | public void OnControlTimeStop() 28 | { 29 | 30 | } 31 | 32 | public void SetTime(double time) 33 | { 34 | if (!asset) return; 35 | 36 | var bytes = asset.bytes; 37 | int totalFrames = bytes.Length / bufferLength; 38 | 39 | ARKitFacialValues value = null; 40 | 41 | for (int i = 0; i < totalFrames; i++) 42 | { 43 | 44 | var buffer = new byte[bufferLength]; 45 | 46 | Buffer.BlockCopy(bytes, i * bufferLength, buffer, 0, buffer.Length); 47 | 48 | value = ZeroFormatterSerializer.Deserialize(buffer); 49 | 50 | double sec = (double)value.elapsedTicks / Stopwatch.Frequency; 51 | 52 | if (sec >= time) 53 | { 54 | break; 55 | } 56 | 57 | 58 | } 59 | 60 | if (value != null) 61 | { 62 | facialControl.ApplyExternal(value); 63 | } 64 | else 65 | { 66 | 67 | } 68 | 69 | } 70 | 71 | 72 | 73 | 74 | } 75 | 76 | } -------------------------------------------------------------------------------- /Assets/Models/sloth_all_1001_Normal.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 27a1657365e7440158436bc8e151d931 3 | timeCreated: 1510333583 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 4 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | sRGBTexture: 0 12 | linearTexture: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 6 25 | cubemapConvolution: 0 26 | seamlessCubemap: 0 27 | textureFormat: 1 28 | maxTextureSize: 2048 29 | textureSettings: 30 | filterMode: -1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: -1 34 | nPOTScale: 1 35 | lightmap: 0 36 | compressionQuality: 50 37 | spriteMode: 0 38 | spriteExtrude: 1 39 | spriteMeshType: 1 40 | alignment: 0 41 | spritePivot: {x: 0.5, y: 0.5} 42 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 43 | spritePixelsToUnits: 100 44 | alphaUsage: 1 45 | alphaIsTransparency: 0 46 | spriteTessellationDetail: -1 47 | textureType: 1 48 | textureShape: 1 49 | maxTextureSizeSet: 0 50 | compressionQualitySet: 0 51 | textureFormatSet: 0 52 | platformSettings: 53 | - buildTarget: DefaultTexturePlatform 54 | maxTextureSize: 4096 55 | textureFormat: -1 56 | textureCompression: 1 57 | compressionQuality: 50 58 | crunchedCompression: 0 59 | allowsAlphaSplitting: 0 60 | overridden: 0 61 | - buildTarget: Standalone 62 | maxTextureSize: 4096 63 | textureFormat: -1 64 | textureCompression: 1 65 | compressionQuality: 50 66 | crunchedCompression: 0 67 | allowsAlphaSplitting: 0 68 | overridden: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | spritePackingTag: 74 | userData: 75 | assetBundleName: 76 | assetBundleVariant: 77 | -------------------------------------------------------------------------------- /Assets/Models/sloth_all_1001_AlbedoTransparency.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b0a9b07b207264316bf3be95cdcf6a08 3 | timeCreated: 1510333546 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 4 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | sRGBTexture: 1 12 | linearTexture: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 6 25 | cubemapConvolution: 0 26 | seamlessCubemap: 0 27 | textureFormat: 1 28 | maxTextureSize: 2048 29 | textureSettings: 30 | filterMode: -1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: -1 34 | nPOTScale: 1 35 | lightmap: 0 36 | compressionQuality: 50 37 | spriteMode: 0 38 | spriteExtrude: 1 39 | spriteMeshType: 1 40 | alignment: 0 41 | spritePivot: {x: 0.5, y: 0.5} 42 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 43 | spritePixelsToUnits: 100 44 | alphaUsage: 1 45 | alphaIsTransparency: 0 46 | spriteTessellationDetail: -1 47 | textureType: 0 48 | textureShape: 1 49 | maxTextureSizeSet: 0 50 | compressionQualitySet: 0 51 | textureFormatSet: 0 52 | platformSettings: 53 | - buildTarget: DefaultTexturePlatform 54 | maxTextureSize: 4096 55 | textureFormat: -1 56 | textureCompression: 1 57 | compressionQuality: 50 58 | crunchedCompression: 0 59 | allowsAlphaSplitting: 0 60 | overridden: 0 61 | - buildTarget: Standalone 62 | maxTextureSize: 4096 63 | textureFormat: -1 64 | textureCompression: 1 65 | compressionQuality: 50 66 | crunchedCompression: 0 67 | allowsAlphaSplitting: 0 68 | overridden: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | spritePackingTag: 74 | userData: 75 | assetBundleName: 76 | assetBundleVariant: 77 | -------------------------------------------------------------------------------- /Assets/Models/sloth_all_1001_MetallicSmoothness.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 433a9cacc6e034c25a6a14eb6af1b09c 3 | timeCreated: 1510333569 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 4 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | sRGBTexture: 1 12 | linearTexture: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 6 25 | cubemapConvolution: 0 26 | seamlessCubemap: 0 27 | textureFormat: 1 28 | maxTextureSize: 2048 29 | textureSettings: 30 | filterMode: -1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: -1 34 | nPOTScale: 1 35 | lightmap: 0 36 | compressionQuality: 50 37 | spriteMode: 0 38 | spriteExtrude: 1 39 | spriteMeshType: 1 40 | alignment: 0 41 | spritePivot: {x: 0.5, y: 0.5} 42 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 43 | spritePixelsToUnits: 100 44 | alphaUsage: 1 45 | alphaIsTransparency: 0 46 | spriteTessellationDetail: -1 47 | textureType: 0 48 | textureShape: 1 49 | maxTextureSizeSet: 0 50 | compressionQualitySet: 0 51 | textureFormatSet: 0 52 | platformSettings: 53 | - buildTarget: DefaultTexturePlatform 54 | maxTextureSize: 4096 55 | textureFormat: -1 56 | textureCompression: 1 57 | compressionQuality: 50 58 | crunchedCompression: 0 59 | allowsAlphaSplitting: 0 60 | overridden: 0 61 | - buildTarget: Standalone 62 | maxTextureSize: 4096 63 | textureFormat: -1 64 | textureCompression: 1 65 | compressionQuality: 50 66 | crunchedCompression: 0 67 | allowsAlphaSplitting: 0 68 | overridden: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | spritePackingTag: 74 | userData: 75 | assetBundleName: 76 | assetBundleVariant: 77 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | LightingData.asset 2 | ## Unity ## 3 | *.cs diff=csharp text 4 | *.cginc text 5 | *.shader text 6 | *.mat merge=unityyamlmerge eol=lf 7 | *.anim merge=unityyamlmerge eol=lf 8 | *.unity merge=unityyamlmerge eol=lf 9 | *.prefab merge=unityyamlmerge eol=lf 10 | *.physicsMaterial2D merge=unityyamlmerge eol=lf 11 | *.physicsMaterial merge=unityyamlmerge eol=lf 12 | *.asset merge=unityyamlmerge eol=lf 13 | *.meta merge=unityyamlmerge eol=lf 14 | *.controller merge=unityyamlmerge eol=lf 15 | ## git-lfs ## 16 | #Image 17 | *.jpg filter=lfs diff=lfs merge=lfs -text 18 | *.jpeg filter=lfs diff=lfs merge=lfs -text 19 | *.png filter=lfs diff=lfs merge=lfs -text 20 | *.gif filter=lfs diff=lfs merge=lfs -text 21 | *.psd filter=lfs diff=lfs merge=lfs -text 22 | *.ai filter=lfs diff=lfs merge=lfs -text 23 | *.tiff filter=lfs diff=lfs merge=lfs -text 24 | *.hdr filter=lfs diff=lfs merge=lfs -text 25 | #Audio 26 | *.mp3 filter=lfs diff=lfs merge=lfs -text 27 | *.wav filter=lfs diff=lfs merge=lfs -text 28 | *.ogg filter=lfs diff=lfs merge=lfs -text 29 | #Video 30 | *.mp4 filter=lfs diff=lfs merge=lfs -text 31 | *.mov filter=lfs diff=lfs merge=lfs -text 32 | #3D Object 33 | *.FBX filter=lfs diff=lfs merge=lfs -text 34 | *.fbx filter=lfs diff=lfs merge=lfs -text 35 | *.blend filter=lfs diff=lfs merge=lfs -text 36 | *.obj filter=lfs diff=lfs merge=lfs -text 37 | *.vwx filter=lfs diff=lfs merge=lfs -text 38 | #Substance 39 | *.sbsar filter=lfs diff=lfs merge=lfs -text 40 | #ETC 41 | *.a filter=lfs diff=lfs merge=lfs -text 42 | *.exr filter=lfs diff=lfs merge=lfs -text 43 | *.tga filter=lfs diff=lfs merge=lfs -text 44 | *.pdf filter=lfs diff=lfs merge=lfs -text 45 | *.zip filter=lfs diff=lfs merge=lfs -text 46 | *.dll filter=lfs diff=lfs merge=lfs -text 47 | *.unitypackage filter=lfs diff=lfs merge=lfs -text 48 | *.aif filter=lfs diff=lfs merge=lfs -text 49 | *.ttf filter=lfs diff=lfs merge=lfs -text 50 | *.rns filter=lfs diff=lfs merge=lfs -text 51 | *.reason filter=lfs diff=lfs merge=lfs -text 52 | *.lxo filter=lfs diff=lfs merge=lfs -text 53 | *mlt filter=lfs diff=lfs merge=lfs -text 54 | -------------------------------------------------------------------------------- /Assets/Scripts/Util/Logger.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Concurrent; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | namespace ProjectBlue.FacialCapture 7 | { 8 | 9 | public class Logger : MonoBehaviour 10 | { 11 | 12 | [SerializeField] 13 | Text logText; 14 | 15 | [SerializeField] 16 | int numHoldLines = 5; 17 | 18 | FixedSizedQueue queue; 19 | 20 | int logLine = 1; 21 | 22 | private void Awake() 23 | { 24 | Application.logMessageReceived += OnLogMessage; 25 | 26 | 27 | queue = new FixedSizedQueue(); 28 | queue.Limit = numHoldLines; 29 | 30 | 31 | } 32 | 33 | private void OnDestroy() 34 | { 35 | Application.logMessageReceived -= OnLogMessage; 36 | } 37 | 38 | 39 | private void OnLogMessage(string i_logText, string i_stackTrace, LogType i_type) 40 | { 41 | if (string.IsNullOrEmpty(i_logText)) 42 | { 43 | return; 44 | } 45 | 46 | 47 | queue.Enqueue($"{logLine} : {i_logText}"); 48 | 49 | string str = ""; 50 | foreach (var elem in queue.Get()) 51 | { 52 | str += $"{elem}\n\n"; 53 | } 54 | 55 | logText.text = str; 56 | 57 | logLine++; 58 | } 59 | } 60 | 61 | 62 | public class FixedSizedQueue 63 | { 64 | ConcurrentQueue q = new ConcurrentQueue(); 65 | private object lockObject = new object(); 66 | 67 | public int Limit { get; set; } 68 | public void Enqueue(T obj) 69 | { 70 | q.Enqueue(obj); 71 | lock (lockObject) 72 | { 73 | T overflow; 74 | while (q.Count > Limit && q.TryDequeue(out overflow)) ; 75 | } 76 | } 77 | 78 | public IEnumerable Get() 79 | { 80 | return q; 81 | } 82 | } 83 | 84 | } -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.kodai100.osc": "https://github.com/kodai100/UPM_Osc.git?path=Assets#1.0.3", 4 | "com.kodai100.zero-formatter": "https://github.com/kodai100/UPM_ZeroFormatter.git?path=Assets", 5 | "com.neuecc.unirx": "https://github.com/neuecc/UniRx.git?path=Assets/Plugins/UniRx/Scripts", 6 | "com.unity.collab-proxy": "1.5.7", 7 | "com.unity.ide.rider": "3.0.6", 8 | "com.unity.ide.visualstudio": "2.0.8", 9 | "com.unity.ide.vscode": "1.2.3", 10 | "com.unity.test-framework": "1.1.24", 11 | "com.unity.textmeshpro": "3.0.6", 12 | "com.unity.timeline": "1.5.5", 13 | "com.unity.ugui": "1.0.0", 14 | "com.unity.modules.ai": "1.0.0", 15 | "com.unity.modules.androidjni": "1.0.0", 16 | "com.unity.modules.animation": "1.0.0", 17 | "com.unity.modules.assetbundle": "1.0.0", 18 | "com.unity.modules.audio": "1.0.0", 19 | "com.unity.modules.cloth": "1.0.0", 20 | "com.unity.modules.director": "1.0.0", 21 | "com.unity.modules.imageconversion": "1.0.0", 22 | "com.unity.modules.imgui": "1.0.0", 23 | "com.unity.modules.jsonserialize": "1.0.0", 24 | "com.unity.modules.particlesystem": "1.0.0", 25 | "com.unity.modules.physics": "1.0.0", 26 | "com.unity.modules.physics2d": "1.0.0", 27 | "com.unity.modules.screencapture": "1.0.0", 28 | "com.unity.modules.terrain": "1.0.0", 29 | "com.unity.modules.terrainphysics": "1.0.0", 30 | "com.unity.modules.tilemap": "1.0.0", 31 | "com.unity.modules.ui": "1.0.0", 32 | "com.unity.modules.uielements": "1.0.0", 33 | "com.unity.modules.umbra": "1.0.0", 34 | "com.unity.modules.unityanalytics": "1.0.0", 35 | "com.unity.modules.unitywebrequest": "1.0.0", 36 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 37 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 38 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 39 | "com.unity.modules.unitywebrequestwww": "1.0.0", 40 | "com.unity.modules.vehicles": "1.0.0", 41 | "com.unity.modules.video": "1.0.0", 42 | "com.unity.modules.vr": "1.0.0", 43 | "com.unity.modules.wind": "1.0.0", 44 | "com.unity.modules.xr": "1.0.0" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Assets/Models/sloth_all_1001_AlbedoTransparency.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_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: sloth_all_1001_AlbedoTransparency 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: _METALLICGLOSSMAP _NORMALMAP 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _BumpMap: 22 | m_Texture: {fileID: 2800000, guid: 27a1657365e7440158436bc8e151d931, type: 3} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedoMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailMask: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailNormalMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _EmissionMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _MainTex: 42 | m_Texture: {fileID: 2800000, guid: b0a9b07b207264316bf3be95cdcf6a08, type: 3} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MetallicGlossMap: 46 | m_Texture: {fileID: 2800000, guid: 433a9cacc6e034c25a6a14eb6af1b09c, type: 3} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _OcclusionMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _ParallaxMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | m_Floats: 58 | - _BumpScale: 1 59 | - _Cutoff: 0.5 60 | - _DetailNormalMapScale: 1 61 | - _DstBlend: 0 62 | - _GlossMapScale: 1 63 | - _Glossiness: 0.5 64 | - _GlossyReflections: 1 65 | - _Metallic: 0 66 | - _Mode: 0 67 | - _OcclusionStrength: 1 68 | - _Parallax: 0.02 69 | - _SmoothnessTextureChannel: 0 70 | - _SpecularHighlights: 1 71 | - _SrcBlend: 1 72 | - _UVSec: 0 73 | - _ZWrite: 1 74 | m_Colors: 75 | - _Color: {r: 1, g: 1, b: 1, a: 1} 76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 77 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/UdpUtility.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading.Tasks; 3 | using System.Collections.Concurrent; 4 | using System.Net; 5 | using System.Net.Sockets; 6 | using System.Threading; 7 | using UniRx; 8 | using Debug = UnityEngine.Debug; 9 | 10 | 11 | namespace ProjectBlue.NetworkCommunication 12 | { 13 | public sealed class UdpServerProxy : IDisposable 14 | { 15 | volatile bool loopFlg = true; 16 | UdpClient udpClient = default; 17 | 18 | private Thread thread; 19 | 20 | private CompositeDisposable disposable = new CompositeDisposable(); 21 | 22 | ConcurrentQueue<(byte[] buffer, IPEndPoint endPoint)> queue = 23 | new ConcurrentQueue<(byte[] buffer, IPEndPoint endPoint)>(); 24 | 25 | public UdpServerProxy(int port, Action proccess) 26 | { 27 | var ip = new IPEndPoint(IPAddress.Any, port); 28 | udpClient = new UdpClient(ip); 29 | 30 | thread = new Thread(Thread) {IsBackground = true}; 31 | thread.Start(); 32 | 33 | Observable.EveryUpdate().Subscribe(_ => 34 | { 35 | while (queue.TryDequeue(out var result)) 36 | { 37 | proccess(result.buffer, result.endPoint); 38 | } 39 | }).AddTo(disposable); 40 | 41 | Observable.OnceApplicationQuit().Subscribe(_ => Dispose()); 42 | } 43 | 44 | private void Thread() 45 | { 46 | using (udpClient) 47 | { 48 | while (loopFlg) 49 | { 50 | try 51 | { 52 | var result = udpClient.ReceiveAsync(); 53 | if (result.Result.Buffer.Length > 0) 54 | { 55 | queue.Enqueue((result.Result.Buffer, result.Result.RemoteEndPoint)); 56 | } 57 | } 58 | catch (Exception e) 59 | { 60 | Debug.LogException(e); 61 | } 62 | } 63 | 64 | Debug.Log("Dispose"); 65 | } 66 | } 67 | 68 | public void Dispose() 69 | { 70 | if (loopFlg) 71 | { 72 | loopFlg = false; 73 | disposable.Dispose(); 74 | } 75 | 76 | if(thread != null) 77 | { 78 | thread.Abort(); 79 | thread = null; 80 | } 81 | } 82 | } 83 | } -------------------------------------------------------------------------------- /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: 0 67 | -------------------------------------------------------------------------------- /Assets/Models/sloth_head_blendshapes5.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 203593b6d31641148905039b663e43d9 3 | ModelImporter: 4 | serializedVersion: 19301 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: 0 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 | fileIdsGeneration: 2 47 | swapUVChannels: 0 48 | generateSecondaryUV: 0 49 | useFileUnits: 1 50 | keepQuads: 0 51 | weldVertices: 1 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 | secondaryUVPackMargin: 4 62 | useFileScale: 1 63 | tangentSpace: 64 | normalSmoothAngle: 60 65 | normalImportMode: 0 66 | tangentImportMode: 3 67 | normalCalculationMode: 4 68 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 69 | blendShapeNormalImportMode: 1 70 | normalSmoothingSource: 0 71 | referencedClips: [] 72 | importAnimation: 1 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 | autoGenerateAvatarMappingIfUnspecified: 1 91 | animationType: 2 92 | humanoidOversampling: 1 93 | avatarSetup: 0 94 | additionalBone: 0 95 | userData: 96 | assetBundleName: 97 | assetBundleVariant: 98 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/ZigSimFacialControl.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | using UnityEngine.UI; 4 | using System; 5 | using Osc; 6 | using UniRx; 7 | using UnityEngine.UIElements; 8 | 9 | namespace ProjectBlue.FacialCapture.Core 10 | { 11 | using NetworkCommunication; 12 | 13 | 14 | public class ZigSimFacialControl : MonoBehaviour 15 | { 16 | public int port = 8888; 17 | 18 | public ARKitFacialControl arkitFacialControl; 19 | 20 | public Text text; 21 | 22 | ARKitFacialValues arkitFacialValues; 23 | 24 | ARKitFacialRecorder recorder; 25 | 26 | private void Start() 27 | { 28 | arkitFacialValues = new ARKitFacialValues(); 29 | 30 | recorder = new ARKitFacialRecorder(); 31 | 32 | var oscParser = new Parser(); 33 | 34 | var server = new UdpServerProxy(port, (bytes, endPoint) => 35 | { 36 | oscParser.FeedData(bytes, bytes.Length); 37 | 38 | while (0 < oscParser.MessageCount) 39 | { 40 | var msg = oscParser.PopMessage(); 41 | OnReceivedOsc(msg); 42 | } 43 | }); 44 | 45 | Observable 46 | .EveryUpdate() 47 | .Subscribe(_ => 48 | { 49 | recorder.RecordUpdate(arkitFacialValues); 50 | 51 | arkitFacialControl.ApplyExternal(arkitFacialValues); 52 | 53 | if (text) 54 | { 55 | text.text = arkitFacialValues.ToString(); 56 | } 57 | }).AddTo(this); 58 | } 59 | 60 | public void StartRecording() 61 | { 62 | recorder.StartRecording(); 63 | } 64 | 65 | public void StopRecording() 66 | { 67 | recorder.StopRecording(); 68 | } 69 | 70 | 71 | public void OnReceivedOsc(Message msg) 72 | { 73 | try 74 | { 75 | var path = msg.path; 76 | 77 | var pathSplitted = path.Split('/'); 78 | 79 | 80 | if (pathSplitted.Length == 4) 81 | { 82 | var param = path.Split('/')[3]; 83 | 84 | if (!param.Contains("position") && !param.Contains("rotation")) 85 | { 86 | var arkitBlendShapeType = 87 | ARKitBlendShapeUtil.ARKitBlendShapeDictionary[param.Replace("face", string.Empty)]; 88 | 89 | arkitFacialValues.SetValueFromIndex((int) arkitBlendShapeType, 90 | Mathf.Min(100, (float) msg.data[0] * 100)); 91 | } 92 | } 93 | } 94 | catch (Exception e) 95 | { 96 | } 97 | } 98 | } 99 | } -------------------------------------------------------------------------------- /Assets/Scripts/Core/ARKitFacialRecorder.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.IO; 4 | using UniRx; 5 | using ZeroFormatter; 6 | 7 | using Debug = UnityEngine.Debug; 8 | 9 | namespace ProjectBlue.FacialCapture.Core 10 | { 11 | 12 | public class ARKitFacialRecorder : IDisposable 13 | { 14 | 15 | 16 | bool record = false; 17 | 18 | Stopwatch stopwatch; 19 | 20 | SingleAssignmentDisposable disposable = new SingleAssignmentDisposable(); 21 | 22 | public ARKitFacialRecorder() 23 | { 24 | 25 | stopwatch = new Stopwatch(); 26 | 27 | // disposable.Disposable = Observable.EveryUpdate().Subscribe(_ => RecordUpdate()); 28 | 29 | Observable 30 | .OnceApplicationQuit() 31 | .Subscribe(_ => Dispose()); 32 | } 33 | 34 | MemoryStream memoryStream; 35 | 36 | public void RecordUpdate(ARKitFacialValues arkitFacialValues) 37 | { 38 | 39 | if (!record) return; 40 | 41 | var elapsedTicks = stopwatch.ElapsedTicks; 42 | 43 | arkitFacialValues.elapsedTicks = elapsedTicks; 44 | 45 | var bytes = ZeroFormatterSerializer.Serialize(arkitFacialValues); 46 | 47 | memoryStream.Write(bytes, 0, bytes.Length); 48 | } 49 | 50 | public void StartRecording() 51 | { 52 | 53 | Debug.Log("Record started."); 54 | 55 | if (!record) 56 | { 57 | 58 | record = true; 59 | 60 | memoryStream = new MemoryStream(); 61 | 62 | stopwatch.Reset(); 63 | stopwatch.Start(); 64 | } 65 | 66 | } 67 | 68 | public void StopRecording() 69 | { 70 | if (!record) return; 71 | 72 | record = false; 73 | 74 | string savePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), $"FaceCapture_{DateTime.Now.ToString("yyyy-dd-M-HH-mm-ss")}.bytes"); 75 | 76 | using (var fileStream = new FileStream(savePath, FileMode.CreateNew, FileAccess.ReadWrite)) 77 | { 78 | 79 | if (memoryStream != null) 80 | { 81 | 82 | memoryStream.Position = 0; 83 | memoryStream.CopyTo(fileStream); 84 | 85 | Debug.Log($"File saved as [{savePath}] : {fileStream.Length} bytes."); 86 | 87 | memoryStream.Close(); 88 | memoryStream = null; 89 | } 90 | 91 | } 92 | 93 | stopwatch.Stop(); 94 | 95 | Debug.Log("Record finished."); 96 | } 97 | 98 | public void Dispose() 99 | { 100 | StopRecording(); 101 | } 102 | 103 | } 104 | 105 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ARKit Facial Controller / Recorder 2 | 3 | ![thumbnail](https://github.com/ProjectBLUE-000/Unity_ARKitFacialCapture/blob/master/Thumbnails/thumbnail.gif) 4 | 5 | ## ZigSim Controller 6 | We can control character's blendshape with [ZigSim](https://zig-project.com/) OSC signals. 7 | 8 | ### ARKit Facial Control script 9 | First, we have to register mappings between ARKit's blendshape and Character's blendshapes. 10 | Attatch a ARKitFacialControl.cs to arbitrary object. 11 | 12 | ![ARKitFacialControl](https://github.com/ProjectBLUE-000/Unity_ARKitFacialCapture/blob/master/Thumbnails/ARKitFacialControl.png) 13 | 14 | And next, set a SkinnedMeshRenderer component you want to drive with ARKit and push update button. 15 | Then in the Blend Shape Mappting folding field, you should set all blendshape mappings and strength with each pulldown and float field. 16 | 17 | ### ZigSim Facial Control script 18 | Second, we have to attatch a ZigSimFacialControl.cs to arbitrary object to communicate with ZigSim using OSC. 19 | 20 | ![ZigSimFacialControl](https://github.com/ProjectBLUE-000/Unity_ARKitFacialCapture/blob/master/Thumbnails/ZigSimFacialControl.png) 21 | 22 | Set a open port number and ARKit Facial Control created in previous section. 23 | Text is for debbung use. 24 | 25 | Finally we can drive with character's blendshape with ZigSim. 26 | More information must be found in RecorderScene.unity. 27 | 28 | ## Recorder 29 | ZigSimFacialControl.cs has a recording functionality. 30 | To record your facial expression, simply call Record Start/Stop function externally. 31 | 32 | In the sample scene, I called these functions with uGUI button components. 33 | ![Record](https://github.com/ProjectBLUE-000/Unity_ARKitFacialCapture/blob/master/Thumbnails/Record.png) 34 | 35 | Recorded file (.byte) will be generated in user's Desktop when stop recording. 36 | 37 | ## Player 38 | We can drive facial expression with recorded data. 39 | 40 | First, we need ARKitFacialControl component described in [ARKit Facial Control script section](# ARKit Facial Control script). 41 | 42 | ![Player](https://github.com/ProjectBLUE-000/Unity_ARKitFacialCapture/blob/master/Thumbnails/Player.png) 43 | 44 | Attatch a FaceRecordDataReader.cs and fill Facial Control field with ARKitFacialControl component we created. 45 | And add recorded bytes files to your unity project, we can put these asset in Asset field. 46 | 47 | Once you chosed bytes file you want to playback, drag drop this GameObject to your timeline. 48 | Control Track will be automatically created and we can playback with moving timeline cursor. 49 | 50 | ![Timeline](https://github.com/ProjectBLUE-000/Unity_ARKitFacialCapture/blob/master/Thumbnails/Timeline.png) 51 | 52 | # LICENSE 53 | This project is distributed as [MIT License](https://github.com/ProjectBLUE-000/Unity_ARKitFacialCapture/blob/master/LICENSE.md). 54 | 55 | But we use some package in this project, so please see each licence.md files. 56 | 57 | * OSC : [https://github.com/nobnak/unity-osc](https://github.com/nobnak/unity-osc) 58 | * UniRx : [https://github.com/neuecc/UniRx](https://github.com/neuecc/UniRx) 59 | * ZeroFormatter : [https://github.com/neuecc/ZeroFormatter](https://github.com/neuecc/ZeroFormatter) 60 | * Sloth Model : [https://github.com/Unity-Technologies/arfoundation-samples](https://github.com/Unity-Technologies/arfoundation-samples) -------------------------------------------------------------------------------- /Assets/Scripts/Core/Editor/ZigSimFacialControlEditor.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEditor; 3 | using System; 4 | 5 | namespace ProjectBlue.FacialCapture.Core 6 | { 7 | 8 | [CustomEditor(typeof(ARKitFacialControl))] 9 | public class ARKitFacialControlEditor : Editor 10 | { 11 | 12 | ARKitFacialControl script; 13 | 14 | private SerializedProperty faceSkinProperty; 15 | 16 | bool folding = false; 17 | 18 | private int offset; 19 | 20 | private void OnEnable() 21 | { 22 | script = target as ARKitFacialControl; 23 | 24 | faceSkinProperty = serializedObject.FindProperty("skin"); 25 | 26 | InitializeSkin(); 27 | } 28 | 29 | public override void OnInspectorGUI() 30 | { 31 | 32 | serializedObject.Update(); 33 | 34 | using (new EditorGUILayout.VerticalScope()) 35 | { 36 | 37 | EditorGUILayout.PropertyField(faceSkinProperty); 38 | 39 | 40 | if (GUILayout.Button("Update")) 41 | { 42 | ResetParameters(); 43 | InitializeSkin(); 44 | } 45 | 46 | 47 | if (script.skin) 48 | { 49 | 50 | if (folding = EditorGUILayout.Foldout(folding, "Blend Shape Mappings")) 51 | { 52 | using (new EditorGUILayout.VerticalScope()) 53 | { 54 | 55 | using (new EditorGUILayout.HorizontalScope()) 56 | { 57 | offset= EditorGUILayout.IntField(offset); 58 | if (GUILayout.Button("Map with offset")) 59 | { 60 | Map(offset); 61 | } 62 | } 63 | 64 | for (int i = 0; i < Enum.GetValues(typeof(ARKitBlendShape)).Length; i++) 65 | { 66 | 67 | if (script.blendShapeList.Count <= 0) break; 68 | 69 | using (new EditorGUI.IndentLevelScope(1)) 70 | { 71 | using (new EditorGUILayout.HorizontalScope()) 72 | { 73 | EditorGUILayout.LabelField(Enum.GetValues(typeof(ARKitBlendShape)).GetValue(i).ToString()); 74 | 75 | script.indexList[i] = EditorGUILayout.Popup(script.indexList[i], script.blendShapeList.ToArray()); 76 | 77 | script.strengthMultiplierList[i] = EditorGUILayout.FloatField(script.strengthMultiplierList[i]); 78 | } 79 | } 80 | 81 | 82 | } 83 | } 84 | } 85 | 86 | } 87 | 88 | } 89 | 90 | serializedObject.ApplyModifiedProperties(); 91 | } 92 | 93 | void InitializeSkin() 94 | { 95 | 96 | if (!script.skin) return; 97 | 98 | script.blendShapeList.Clear(); 99 | 100 | script.blendShapeList.Add("None"); 101 | 102 | for (int i = 0; i < script.skin.sharedMesh.blendShapeCount; i++) 103 | { 104 | script.blendShapeList.Add(script.skin.sharedMesh.GetBlendShapeName(i)); 105 | } 106 | 107 | } 108 | 109 | void ResetParameters() 110 | { 111 | 112 | for (int i = 0; i < Enum.GetNames(typeof(ARKitBlendShape)).Length; i++) 113 | { 114 | 115 | script.indexList[i] = 0; 116 | 117 | } 118 | 119 | for (int i = 0; i < script.strengthMultiplierList.Length; i++) 120 | { 121 | if (script.strengthMultiplierList[i] == 0) 122 | { 123 | script.strengthMultiplierList[i] = 1; 124 | } 125 | } 126 | 127 | } 128 | 129 | private void Map(int offset) 130 | { 131 | for (var i = 0; i < Enum.GetNames(typeof(ARKitBlendShape)).Length; i++) 132 | { 133 | if (i + (offset+1) < Enum.GetNames(typeof(ARKitBlendShape)).Length) 134 | { 135 | script.indexList[i] = i + (offset+1); 136 | } 137 | else 138 | { 139 | script.indexList[i] = 0; 140 | } 141 | 142 | } 143 | } 144 | } 145 | 146 | } -------------------------------------------------------------------------------- /Assets/Timelines/SampleTimeline.playable: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-765093816240913841 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 1 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 15e0374501f39d54eb30235764636e0e, type: 3} 13 | m_Name: Control Track 14 | m_EditorClassIdentifier: 15 | m_Version: 3 16 | m_AnimClip: {fileID: 0} 17 | m_Locked: 0 18 | m_Muted: 0 19 | m_CustomPlayableFullTypename: 20 | m_Curves: {fileID: 0} 21 | m_Parent: {fileID: 11400000} 22 | m_Children: [] 23 | m_Clips: 24 | - m_Version: 1 25 | m_Start: 0 26 | m_ClipIn: 0 27 | m_Asset: {fileID: 5899542595656499484} 28 | m_Duration: 9.416666666666666 29 | m_TimeScale: 1 30 | m_ParentTrack: {fileID: -765093816240913841} 31 | m_EaseInDuration: 0 32 | m_EaseOutDuration: 0 33 | m_BlendInDuration: 0 34 | m_BlendOutDuration: 0 35 | m_MixInCurve: 36 | serializedVersion: 2 37 | m_Curve: 38 | - serializedVersion: 3 39 | time: 0 40 | value: 0 41 | inSlope: 0 42 | outSlope: 0 43 | tangentMode: 0 44 | weightedMode: 0 45 | inWeight: 0 46 | outWeight: 0 47 | - serializedVersion: 3 48 | time: 1 49 | value: 1 50 | inSlope: 0 51 | outSlope: 0 52 | tangentMode: 0 53 | weightedMode: 0 54 | inWeight: 0 55 | outWeight: 0 56 | m_PreInfinity: 2 57 | m_PostInfinity: 2 58 | m_RotationOrder: 4 59 | m_MixOutCurve: 60 | serializedVersion: 2 61 | m_Curve: 62 | - serializedVersion: 3 63 | time: 0 64 | value: 1 65 | inSlope: 0 66 | outSlope: 0 67 | tangentMode: 0 68 | weightedMode: 0 69 | inWeight: 0 70 | outWeight: 0 71 | - serializedVersion: 3 72 | time: 1 73 | value: 0 74 | inSlope: 0 75 | outSlope: 0 76 | tangentMode: 0 77 | weightedMode: 0 78 | inWeight: 0 79 | outWeight: 0 80 | m_PreInfinity: 2 81 | m_PostInfinity: 2 82 | m_RotationOrder: 4 83 | m_BlendInCurveMode: 0 84 | m_BlendOutCurveMode: 0 85 | m_ExposedParameterNames: [] 86 | m_AnimationCurves: {fileID: 0} 87 | m_Recordable: 0 88 | m_PostExtrapolationMode: 0 89 | m_PreExtrapolationMode: 0 90 | m_PostExtrapolationTime: 0 91 | m_PreExtrapolationTime: 0 92 | m_DisplayName: FacePlayer 93 | m_Markers: 94 | m_Objects: [] 95 | --- !u!114 &11400000 96 | MonoBehaviour: 97 | m_ObjectHideFlags: 0 98 | m_CorrespondingSourceObject: {fileID: 0} 99 | m_PrefabInstance: {fileID: 0} 100 | m_PrefabAsset: {fileID: 0} 101 | m_GameObject: {fileID: 0} 102 | m_Enabled: 1 103 | m_EditorHideFlags: 0 104 | m_Script: {fileID: 11500000, guid: bfda56da833e2384a9677cd3c976a436, type: 3} 105 | m_Name: SampleTimeline 106 | m_EditorClassIdentifier: 107 | m_Version: 0 108 | m_Tracks: 109 | - {fileID: -765093816240913841} 110 | m_FixedDuration: 0 111 | m_EditorSettings: 112 | m_Framerate: 60 113 | m_DurationMode: 0 114 | m_MarkerTrack: {fileID: 3378855903368307286} 115 | --- !u!114 &3378855903368307286 116 | MonoBehaviour: 117 | m_ObjectHideFlags: 1 118 | m_CorrespondingSourceObject: {fileID: 0} 119 | m_PrefabInstance: {fileID: 0} 120 | m_PrefabAsset: {fileID: 0} 121 | m_GameObject: {fileID: 0} 122 | m_Enabled: 1 123 | m_EditorHideFlags: 0 124 | m_Script: {fileID: 11500000, guid: 2a16748d9461eae46a725db9776d5390, type: 3} 125 | m_Name: Markers 126 | m_EditorClassIdentifier: 127 | m_Version: 3 128 | m_AnimClip: {fileID: 0} 129 | m_Locked: 0 130 | m_Muted: 0 131 | m_CustomPlayableFullTypename: 132 | m_Curves: {fileID: 0} 133 | m_Parent: {fileID: 11400000} 134 | m_Children: [] 135 | m_Clips: [] 136 | m_Markers: 137 | m_Objects: [] 138 | --- !u!114 &5899542595656499484 139 | MonoBehaviour: 140 | m_ObjectHideFlags: 1 141 | m_CorrespondingSourceObject: {fileID: 0} 142 | m_PrefabInstance: {fileID: 0} 143 | m_PrefabAsset: {fileID: 0} 144 | m_GameObject: {fileID: 0} 145 | m_Enabled: 1 146 | m_EditorHideFlags: 0 147 | m_Script: {fileID: 11500000, guid: 48853ae485fa386428341ac1ea122570, type: 3} 148 | m_Name: ControlPlayableAsset 149 | m_EditorClassIdentifier: 150 | sourceGameObject: 151 | exposedName: f9a3251d9dd61004c98878f84ec7fc12 152 | defaultValue: {fileID: 0} 153 | prefabGameObject: {fileID: 0} 154 | updateParticle: 1 155 | particleRandomSeed: 6931 156 | updateDirector: 1 157 | updateITimeControl: 1 158 | searchHierarchy: 0 159 | active: 0 160 | postPlayback: 2 161 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/ARKitBlendshapeRemapper.cs: -------------------------------------------------------------------------------- 1 | using ProjectBlue.FacialCapture; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace ProjectBlue.FacialCapture.Core 6 | { 7 | public class ARKitToBlendshapeRemapper 8 | { 9 | 10 | SkinnedMeshRenderer skin; 11 | 12 | List blendShapeList; 13 | int[] indexList; 14 | float[] strengthMultiplierList; 15 | 16 | public ARKitToBlendshapeRemapper(SkinnedMeshRenderer skinnedMeshRenderer, List blendShapeList, int[] indexList, float[] strengthMultiplierList) 17 | { 18 | 19 | this.skin = skinnedMeshRenderer; 20 | 21 | this.blendShapeList = blendShapeList; 22 | this.indexList = indexList; 23 | this.strengthMultiplierList = strengthMultiplierList; 24 | 25 | } 26 | 27 | public void Apply(ARKitFacialValues arkitFacialValues) 28 | { 29 | 30 | SetWithShapeTypeWith(ARKitBlendShape.noseSneer_R, arkitFacialValues.noseSneer_R); 31 | SetWithShapeTypeWith(ARKitBlendShape.noseSneer_L, arkitFacialValues.noseSneer_L); 32 | 33 | SetWithShapeTypeWith(ARKitBlendShape.mouthUpperUp_R, arkitFacialValues.mouthUpperUp_R); 34 | SetWithShapeTypeWith(ARKitBlendShape.mouthUpperUp_L, arkitFacialValues.mouthUpperUp_L); 35 | 36 | SetWithShapeTypeWith(ARKitBlendShape.mouthLowerDown_R, arkitFacialValues.mouthLowerDown_R); 37 | SetWithShapeTypeWith(ARKitBlendShape.mouthLowerDown_L, arkitFacialValues.mouthLowerDown_L); 38 | 39 | SetWithShapeTypeWith(ARKitBlendShape.mouthPress_R, arkitFacialValues.mouthPress_R); 40 | SetWithShapeTypeWith(ARKitBlendShape.mouthPress_L, arkitFacialValues.mouthPress_L); 41 | 42 | SetWithShapeTypeWith(ARKitBlendShape.mouthStretch_R, arkitFacialValues.mouthStretch_R); 43 | SetWithShapeTypeWith(ARKitBlendShape.mouthStretch_L, arkitFacialValues.mouthStretch_L); 44 | 45 | SetWithShapeTypeWith(ARKitBlendShape.mouth_R, arkitFacialValues.mouth_R); 46 | SetWithShapeTypeWith(ARKitBlendShape.mouth_L, arkitFacialValues.mouth_L); 47 | 48 | SetWithShapeTypeWith(ARKitBlendShape.mouthDimple_R, arkitFacialValues.mouthDimple_R); 49 | SetWithShapeTypeWith(ARKitBlendShape.mouthDimple_L, arkitFacialValues.mouthDimple_L); 50 | 51 | SetWithShapeTypeWith(ARKitBlendShape.mouthFrown_R, arkitFacialValues.mouthFrown_R); 52 | SetWithShapeTypeWith(ARKitBlendShape.mouthFrown_L, arkitFacialValues.mouthFrown_L); 53 | 54 | SetWithShapeTypeWith(ARKitBlendShape.mouthFunnel, arkitFacialValues.mouthFunnel); 55 | SetWithShapeTypeWith(ARKitBlendShape.mouthPucker, arkitFacialValues.mouthPucker); 56 | 57 | SetWithShapeTypeWith(ARKitBlendShape.mouthSmile_R, arkitFacialValues.mouthSmile_R); 58 | SetWithShapeTypeWith(ARKitBlendShape.mouthSmile_L, arkitFacialValues.mouthSmile_L); 59 | 60 | SetWithShapeTypeWith(ARKitBlendShape.mouthClose, arkitFacialValues.mouthClose); 61 | 62 | SetWithShapeTypeWith(ARKitBlendShape.jaw_R, arkitFacialValues.jaw_R); 63 | SetWithShapeTypeWith(ARKitBlendShape.jaw_L, arkitFacialValues.jaw_L); 64 | 65 | SetWithShapeTypeWith(ARKitBlendShape.jawOpen, arkitFacialValues.jawOpen); 66 | SetWithShapeTypeWith(ARKitBlendShape.jawForward, arkitFacialValues.jawForward); 67 | 68 | SetWithShapeTypeWith(ARKitBlendShape.eyeLookUp_R, arkitFacialValues.eyeLookUp_R); 69 | SetWithShapeTypeWith(ARKitBlendShape.eyeLookUp_L, arkitFacialValues.eyeLookUp_L); 70 | 71 | SetWithShapeTypeWith(ARKitBlendShape.eyeLookOut_R, arkitFacialValues.eyeLookOut_R); 72 | SetWithShapeTypeWith(ARKitBlendShape.eyeLookOut_L, arkitFacialValues.eyeLookOut_L); 73 | 74 | SetWithShapeTypeWith(ARKitBlendShape.eyeLookIn_R, arkitFacialValues.eyeLookIn_R); 75 | SetWithShapeTypeWith(ARKitBlendShape.eyeLookIn_L, arkitFacialValues.eyeLookIn_L); 76 | 77 | SetWithShapeTypeWith(ARKitBlendShape.eyeLookDown_R, arkitFacialValues.eyeLookDown_R); 78 | SetWithShapeTypeWith(ARKitBlendShape.eyeLookDown_L, arkitFacialValues.eyeLookDown_L); 79 | 80 | SetWithShapeTypeWith(ARKitBlendShape.eyeSquint_R, arkitFacialValues.eyeSquint_R); 81 | SetWithShapeTypeWith(ARKitBlendShape.eyeSquint_L, arkitFacialValues.eyeSquint_L); 82 | 83 | SetWithShapeTypeWith(ARKitBlendShape.eyeWide_R, arkitFacialValues.eyeWide_R); 84 | SetWithShapeTypeWith(ARKitBlendShape.eyeWide_L, arkitFacialValues.eyeWide_L); 85 | 86 | SetWithShapeTypeWith(ARKitBlendShape.eyeBlink_R, arkitFacialValues.eyeBlink_R); 87 | SetWithShapeTypeWith(ARKitBlendShape.eyeBlink_L, arkitFacialValues.eyeBlink_L); 88 | 89 | SetWithShapeTypeWith(ARKitBlendShape.cheekSquint_R, arkitFacialValues.cheekSquint_R); 90 | SetWithShapeTypeWith(ARKitBlendShape.cheekSquint_L, arkitFacialValues.cheekSquint_L); 91 | 92 | SetWithShapeTypeWith(ARKitBlendShape.cheekPuff, arkitFacialValues.cheekPuff); 93 | 94 | SetWithShapeTypeWith(ARKitBlendShape.browOuterUp_R, arkitFacialValues.browOuterUp_R); 95 | SetWithShapeTypeWith(ARKitBlendShape.browOuterUp_L, arkitFacialValues.browOuterUp_L); 96 | 97 | SetWithShapeTypeWith(ARKitBlendShape.browDown_R, arkitFacialValues.browDown_R); 98 | SetWithShapeTypeWith(ARKitBlendShape.browDown_L, arkitFacialValues.browDown_L); 99 | 100 | SetWithShapeTypeWith(ARKitBlendShape.browInnerUp, arkitFacialValues.browInnerUp); 101 | 102 | SetWithShapeTypeWith(ARKitBlendShape.tongueOut, arkitFacialValues.tongueOut); 103 | SetWithShapeTypeWith(ARKitBlendShape.mouthRollLower, arkitFacialValues.mouthRollLower); 104 | SetWithShapeTypeWith(ARKitBlendShape.mouthRollUpper, arkitFacialValues.mouthRollUpper); 105 | SetWithShapeTypeWith(ARKitBlendShape.mouthShrugLower, arkitFacialValues.mouthShrugLower); 106 | SetWithShapeTypeWith(ARKitBlendShape.mouthShrugUpper, arkitFacialValues.mouthShrugUpper); 107 | 108 | } 109 | 110 | void SetWithShapeTypeWith(ARKitBlendShape shapeType, float value) 111 | { 112 | int targetBlendShapeIndex = indexList[(int)shapeType]; 113 | string targetBlendShapeName = blendShapeList[targetBlendShapeIndex]; 114 | var index = skin.sharedMesh.GetBlendShapeIndex(targetBlendShapeName); 115 | 116 | if (index >= 0) 117 | { 118 | 119 | skin.SetBlendShapeWeight(index, value); 120 | } 121 | 122 | } 123 | 124 | } 125 | 126 | } -------------------------------------------------------------------------------- /Assets/Scripts/Core/ARKitBlendShape.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace ProjectBlue.FacialCapture.Core 4 | { 5 | 6 | public enum ARKitBlendShape 7 | { 8 | noseSneer_R = 0, 9 | noseSneer_L = 1, 10 | mouthUpperUp_R = 2, 11 | mouthUpperUp_L = 3, 12 | mouthLowerDown_R = 4, 13 | mouthLowerDown_L = 5, 14 | mouthPress_R = 6, 15 | mouthPress_L = 7, 16 | mouthStretch_R = 8, 17 | mouthStretch_L = 9, 18 | mouth_R = 10, 19 | mouth_L = 11, 20 | mouthDimple_R = 12, 21 | mouthDimple_L =13, 22 | mouthFrown_R = 14, 23 | mouthFrown_L = 15, 24 | mouthFunnel = 16, 25 | mouthPucker = 17, 26 | mouthSmile_R = 18, 27 | mouthSmile_L = 19, 28 | mouthClose = 20, 29 | jaw_R = 21, 30 | jaw_L = 22, 31 | jawOpen = 23, 32 | jawForward = 24, 33 | eyeLookUp_R = 25, 34 | eyeLookUp_L = 26, 35 | eyeLookOut_R = 27, 36 | eyeLookOut_L = 28, 37 | eyeLookIn_R = 29, 38 | eyeLookIn_L = 30, 39 | eyeLookDown_R = 31, 40 | eyeLookDown_L = 32, 41 | eyeSquint_R = 33, 42 | eyeSquint_L = 34, 43 | eyeWide_R = 35, 44 | eyeWide_L = 36, 45 | eyeBlink_R = 37, 46 | eyeBlink_L = 38, 47 | cheekSquint_R = 39, 48 | cheekSquint_L = 40, 49 | cheekPuff = 41, 50 | browOuterUp_R = 42, 51 | browOuterUp_L = 43, 52 | browDown_R = 44, 53 | browDown_L = 45, 54 | browInnerUp = 46, 55 | tongueOut = 47, 56 | mouthRollLower = 48, 57 | mouthRollUpper = 49, 58 | mouthShrugLower = 50, 59 | mouthShrugUpper = 51 60 | } 61 | 62 | public class ARKitBlendShapeUtil 63 | { 64 | public static Dictionary ARKitBlendShapeDictionary = new Dictionary() { 65 | { EnumToString(ARKitBlendShape.noseSneer_R), ARKitBlendShape.noseSneer_R }, 66 | { EnumToString(ARKitBlendShape.noseSneer_L), ARKitBlendShape.noseSneer_L }, 67 | { EnumToString(ARKitBlendShape.mouthUpperUp_R), ARKitBlendShape.mouthUpperUp_R }, 68 | { EnumToString(ARKitBlendShape.mouthUpperUp_L), ARKitBlendShape.mouthUpperUp_L }, 69 | { EnumToString(ARKitBlendShape.mouthLowerDown_R), ARKitBlendShape.mouthLowerDown_R }, 70 | { EnumToString(ARKitBlendShape.mouthLowerDown_L), ARKitBlendShape.mouthLowerDown_L }, 71 | { EnumToString(ARKitBlendShape.mouthPress_R), ARKitBlendShape.mouthPress_R }, 72 | { EnumToString(ARKitBlendShape.mouthPress_L), ARKitBlendShape.mouthPress_L }, 73 | { EnumToString(ARKitBlendShape.mouthStretch_R), ARKitBlendShape.mouthStretch_R }, 74 | { EnumToString(ARKitBlendShape.mouthStretch_L), ARKitBlendShape.mouthStretch_L }, 75 | { EnumToString(ARKitBlendShape.mouth_R), ARKitBlendShape.mouth_R }, 76 | { EnumToString(ARKitBlendShape.mouth_L), ARKitBlendShape.mouth_L }, 77 | { EnumToString(ARKitBlendShape.mouthDimple_R), ARKitBlendShape.mouthDimple_R }, 78 | { EnumToString(ARKitBlendShape.mouthDimple_L), ARKitBlendShape.mouthDimple_L }, 79 | { EnumToString(ARKitBlendShape.mouthFrown_R), ARKitBlendShape.mouthFrown_R }, 80 | { EnumToString(ARKitBlendShape.mouthFrown_L), ARKitBlendShape.mouthFrown_L }, 81 | { EnumToString(ARKitBlendShape.mouthFunnel), ARKitBlendShape.mouthFunnel }, 82 | { EnumToString(ARKitBlendShape.mouthPucker), ARKitBlendShape.mouthPucker }, 83 | { EnumToString(ARKitBlendShape.mouthSmile_R), ARKitBlendShape.mouthSmile_R }, 84 | { EnumToString(ARKitBlendShape.mouthSmile_L), ARKitBlendShape.mouthSmile_L }, 85 | { EnumToString(ARKitBlendShape.mouthClose), ARKitBlendShape.mouthClose }, 86 | { EnumToString(ARKitBlendShape.jaw_R), ARKitBlendShape.jaw_R }, 87 | { EnumToString(ARKitBlendShape.jaw_L), ARKitBlendShape.jaw_L }, 88 | { EnumToString(ARKitBlendShape.jawOpen), ARKitBlendShape.jawOpen }, 89 | { EnumToString(ARKitBlendShape.jawForward), ARKitBlendShape.jawForward }, 90 | { EnumToString(ARKitBlendShape.eyeLookUp_R), ARKitBlendShape.eyeLookUp_R }, 91 | { EnumToString(ARKitBlendShape.eyeLookUp_L), ARKitBlendShape.eyeLookUp_L }, 92 | { EnumToString(ARKitBlendShape.eyeLookOut_R), ARKitBlendShape.eyeLookOut_R }, 93 | { EnumToString(ARKitBlendShape.eyeLookOut_L), ARKitBlendShape.eyeLookOut_L }, 94 | { EnumToString(ARKitBlendShape.eyeLookIn_R), ARKitBlendShape.eyeLookIn_R }, 95 | { EnumToString(ARKitBlendShape.eyeLookIn_L), ARKitBlendShape.eyeLookIn_L }, 96 | { EnumToString(ARKitBlendShape.eyeLookDown_R), ARKitBlendShape.eyeLookDown_R }, 97 | { EnumToString(ARKitBlendShape.eyeLookDown_L), ARKitBlendShape.eyeLookDown_L }, 98 | { EnumToString(ARKitBlendShape.eyeSquint_R), ARKitBlendShape.eyeSquint_R }, 99 | { EnumToString(ARKitBlendShape.eyeSquint_L), ARKitBlendShape.eyeSquint_L }, 100 | { EnumToString(ARKitBlendShape.eyeWide_R), ARKitBlendShape.eyeWide_R }, 101 | { EnumToString(ARKitBlendShape.eyeWide_L), ARKitBlendShape.eyeWide_L }, 102 | { EnumToString(ARKitBlendShape.eyeBlink_R), ARKitBlendShape.eyeBlink_R }, 103 | { EnumToString(ARKitBlendShape.eyeBlink_L), ARKitBlendShape.eyeBlink_L }, 104 | { EnumToString(ARKitBlendShape.cheekSquint_R), ARKitBlendShape.cheekSquint_R }, 105 | { EnumToString(ARKitBlendShape.cheekSquint_L), ARKitBlendShape.cheekSquint_L }, 106 | { EnumToString(ARKitBlendShape.cheekPuff), ARKitBlendShape.cheekPuff }, 107 | { EnumToString(ARKitBlendShape.browOuterUp_R), ARKitBlendShape.browOuterUp_R }, 108 | { EnumToString(ARKitBlendShape.browOuterUp_L), ARKitBlendShape.browOuterUp_L }, 109 | { EnumToString(ARKitBlendShape.browDown_R), ARKitBlendShape.browDown_R }, 110 | { EnumToString(ARKitBlendShape.browDown_L), ARKitBlendShape.browDown_L }, 111 | { EnumToString(ARKitBlendShape.browInnerUp), ARKitBlendShape.browInnerUp }, 112 | { EnumToString(ARKitBlendShape.mouthRollLower), ARKitBlendShape.mouthRollLower}, 113 | { EnumToString(ARKitBlendShape.mouthRollUpper), ARKitBlendShape.mouthRollUpper}, 114 | { EnumToString(ARKitBlendShape.tongueOut), ARKitBlendShape.tongueOut}, 115 | { EnumToString(ARKitBlendShape.mouthShrugLower), ARKitBlendShape.mouthShrugLower}, 116 | { EnumToString(ARKitBlendShape.mouthShrugUpper), ARKitBlendShape.mouthShrugUpper} 117 | }; 118 | 119 | static string EnumToString(ARKitBlendShape blendShapeType) 120 | { 121 | return blendShapeType.ToString().Replace("_L", "Left").Replace("_R", "Right").ToLower(); 122 | } 123 | } 124 | } -------------------------------------------------------------------------------- /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: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 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: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /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 | Stadia: 5 227 | Standalone: 5 228 | WebGL: 3 229 | Windows Store Apps: 5 230 | XboxOne: 5 231 | iPhone: 2 232 | tvOS: 2 233 | -------------------------------------------------------------------------------- /Packages/packages-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.kodai100.osc": { 4 | "version": "https://github.com/kodai100/UPM_Osc.git?path=Assets#1.0.3", 5 | "depth": 0, 6 | "source": "git", 7 | "dependencies": {}, 8 | "hash": "41db5435124f3901874d591d0b0171dc05fdfe48" 9 | }, 10 | "com.kodai100.zero-formatter": { 11 | "version": "https://github.com/kodai100/UPM_ZeroFormatter.git?path=Assets", 12 | "depth": 0, 13 | "source": "git", 14 | "dependencies": {}, 15 | "hash": "0f894e6e5e92723e896e8319c5c7bacb5c0c499e" 16 | }, 17 | "com.neuecc.unirx": { 18 | "version": "https://github.com/neuecc/UniRx.git?path=Assets/Plugins/UniRx/Scripts", 19 | "depth": 0, 20 | "source": "git", 21 | "dependencies": {}, 22 | "hash": "284d5c50d3f1ddd9fa7df3d382ea904732a9c2ff" 23 | }, 24 | "com.unity.collab-proxy": { 25 | "version": "1.5.7", 26 | "depth": 0, 27 | "source": "registry", 28 | "dependencies": { 29 | "com.unity.nuget.newtonsoft-json": "2.0.0" 30 | }, 31 | "url": "https://packages.unity.com" 32 | }, 33 | "com.unity.ext.nunit": { 34 | "version": "1.0.6", 35 | "depth": 1, 36 | "source": "registry", 37 | "dependencies": {}, 38 | "url": "https://packages.unity.com" 39 | }, 40 | "com.unity.ide.rider": { 41 | "version": "3.0.6", 42 | "depth": 0, 43 | "source": "registry", 44 | "dependencies": { 45 | "com.unity.ext.nunit": "1.0.6" 46 | }, 47 | "url": "https://packages.unity.com" 48 | }, 49 | "com.unity.ide.visualstudio": { 50 | "version": "2.0.8", 51 | "depth": 0, 52 | "source": "registry", 53 | "dependencies": { 54 | "com.unity.test-framework": "1.1.9" 55 | }, 56 | "url": "https://packages.unity.com" 57 | }, 58 | "com.unity.ide.vscode": { 59 | "version": "1.2.3", 60 | "depth": 0, 61 | "source": "registry", 62 | "dependencies": {}, 63 | "url": "https://packages.unity.com" 64 | }, 65 | "com.unity.nuget.newtonsoft-json": { 66 | "version": "2.0.0", 67 | "depth": 1, 68 | "source": "registry", 69 | "dependencies": {}, 70 | "url": "https://packages.unity.com" 71 | }, 72 | "com.unity.test-framework": { 73 | "version": "1.1.24", 74 | "depth": 0, 75 | "source": "registry", 76 | "dependencies": { 77 | "com.unity.ext.nunit": "1.0.6", 78 | "com.unity.modules.imgui": "1.0.0", 79 | "com.unity.modules.jsonserialize": "1.0.0" 80 | }, 81 | "url": "https://packages.unity.com" 82 | }, 83 | "com.unity.textmeshpro": { 84 | "version": "3.0.6", 85 | "depth": 0, 86 | "source": "registry", 87 | "dependencies": { 88 | "com.unity.ugui": "1.0.0" 89 | }, 90 | "url": "https://packages.unity.com" 91 | }, 92 | "com.unity.timeline": { 93 | "version": "1.5.5", 94 | "depth": 0, 95 | "source": "registry", 96 | "dependencies": { 97 | "com.unity.modules.director": "1.0.0", 98 | "com.unity.modules.animation": "1.0.0", 99 | "com.unity.modules.audio": "1.0.0", 100 | "com.unity.modules.particlesystem": "1.0.0" 101 | }, 102 | "url": "https://packages.unity.com" 103 | }, 104 | "com.unity.ugui": { 105 | "version": "1.0.0", 106 | "depth": 0, 107 | "source": "builtin", 108 | "dependencies": { 109 | "com.unity.modules.ui": "1.0.0", 110 | "com.unity.modules.imgui": "1.0.0" 111 | } 112 | }, 113 | "com.unity.modules.ai": { 114 | "version": "1.0.0", 115 | "depth": 0, 116 | "source": "builtin", 117 | "dependencies": {} 118 | }, 119 | "com.unity.modules.androidjni": { 120 | "version": "1.0.0", 121 | "depth": 0, 122 | "source": "builtin", 123 | "dependencies": {} 124 | }, 125 | "com.unity.modules.animation": { 126 | "version": "1.0.0", 127 | "depth": 0, 128 | "source": "builtin", 129 | "dependencies": {} 130 | }, 131 | "com.unity.modules.assetbundle": { 132 | "version": "1.0.0", 133 | "depth": 0, 134 | "source": "builtin", 135 | "dependencies": {} 136 | }, 137 | "com.unity.modules.audio": { 138 | "version": "1.0.0", 139 | "depth": 0, 140 | "source": "builtin", 141 | "dependencies": {} 142 | }, 143 | "com.unity.modules.cloth": { 144 | "version": "1.0.0", 145 | "depth": 0, 146 | "source": "builtin", 147 | "dependencies": { 148 | "com.unity.modules.physics": "1.0.0" 149 | } 150 | }, 151 | "com.unity.modules.director": { 152 | "version": "1.0.0", 153 | "depth": 0, 154 | "source": "builtin", 155 | "dependencies": { 156 | "com.unity.modules.audio": "1.0.0", 157 | "com.unity.modules.animation": "1.0.0" 158 | } 159 | }, 160 | "com.unity.modules.imageconversion": { 161 | "version": "1.0.0", 162 | "depth": 0, 163 | "source": "builtin", 164 | "dependencies": {} 165 | }, 166 | "com.unity.modules.imgui": { 167 | "version": "1.0.0", 168 | "depth": 0, 169 | "source": "builtin", 170 | "dependencies": {} 171 | }, 172 | "com.unity.modules.jsonserialize": { 173 | "version": "1.0.0", 174 | "depth": 0, 175 | "source": "builtin", 176 | "dependencies": {} 177 | }, 178 | "com.unity.modules.particlesystem": { 179 | "version": "1.0.0", 180 | "depth": 0, 181 | "source": "builtin", 182 | "dependencies": {} 183 | }, 184 | "com.unity.modules.physics": { 185 | "version": "1.0.0", 186 | "depth": 0, 187 | "source": "builtin", 188 | "dependencies": {} 189 | }, 190 | "com.unity.modules.physics2d": { 191 | "version": "1.0.0", 192 | "depth": 0, 193 | "source": "builtin", 194 | "dependencies": {} 195 | }, 196 | "com.unity.modules.screencapture": { 197 | "version": "1.0.0", 198 | "depth": 0, 199 | "source": "builtin", 200 | "dependencies": { 201 | "com.unity.modules.imageconversion": "1.0.0" 202 | } 203 | }, 204 | "com.unity.modules.subsystems": { 205 | "version": "1.0.0", 206 | "depth": 1, 207 | "source": "builtin", 208 | "dependencies": { 209 | "com.unity.modules.jsonserialize": "1.0.0" 210 | } 211 | }, 212 | "com.unity.modules.terrain": { 213 | "version": "1.0.0", 214 | "depth": 0, 215 | "source": "builtin", 216 | "dependencies": {} 217 | }, 218 | "com.unity.modules.terrainphysics": { 219 | "version": "1.0.0", 220 | "depth": 0, 221 | "source": "builtin", 222 | "dependencies": { 223 | "com.unity.modules.physics": "1.0.0", 224 | "com.unity.modules.terrain": "1.0.0" 225 | } 226 | }, 227 | "com.unity.modules.tilemap": { 228 | "version": "1.0.0", 229 | "depth": 0, 230 | "source": "builtin", 231 | "dependencies": { 232 | "com.unity.modules.physics2d": "1.0.0" 233 | } 234 | }, 235 | "com.unity.modules.ui": { 236 | "version": "1.0.0", 237 | "depth": 0, 238 | "source": "builtin", 239 | "dependencies": {} 240 | }, 241 | "com.unity.modules.uielements": { 242 | "version": "1.0.0", 243 | "depth": 0, 244 | "source": "builtin", 245 | "dependencies": { 246 | "com.unity.modules.ui": "1.0.0", 247 | "com.unity.modules.imgui": "1.0.0", 248 | "com.unity.modules.jsonserialize": "1.0.0", 249 | "com.unity.modules.uielementsnative": "1.0.0" 250 | } 251 | }, 252 | "com.unity.modules.uielementsnative": { 253 | "version": "1.0.0", 254 | "depth": 1, 255 | "source": "builtin", 256 | "dependencies": { 257 | "com.unity.modules.ui": "1.0.0", 258 | "com.unity.modules.imgui": "1.0.0", 259 | "com.unity.modules.jsonserialize": "1.0.0" 260 | } 261 | }, 262 | "com.unity.modules.umbra": { 263 | "version": "1.0.0", 264 | "depth": 0, 265 | "source": "builtin", 266 | "dependencies": {} 267 | }, 268 | "com.unity.modules.unityanalytics": { 269 | "version": "1.0.0", 270 | "depth": 0, 271 | "source": "builtin", 272 | "dependencies": { 273 | "com.unity.modules.unitywebrequest": "1.0.0", 274 | "com.unity.modules.jsonserialize": "1.0.0" 275 | } 276 | }, 277 | "com.unity.modules.unitywebrequest": { 278 | "version": "1.0.0", 279 | "depth": 0, 280 | "source": "builtin", 281 | "dependencies": {} 282 | }, 283 | "com.unity.modules.unitywebrequestassetbundle": { 284 | "version": "1.0.0", 285 | "depth": 0, 286 | "source": "builtin", 287 | "dependencies": { 288 | "com.unity.modules.assetbundle": "1.0.0", 289 | "com.unity.modules.unitywebrequest": "1.0.0" 290 | } 291 | }, 292 | "com.unity.modules.unitywebrequestaudio": { 293 | "version": "1.0.0", 294 | "depth": 0, 295 | "source": "builtin", 296 | "dependencies": { 297 | "com.unity.modules.unitywebrequest": "1.0.0", 298 | "com.unity.modules.audio": "1.0.0" 299 | } 300 | }, 301 | "com.unity.modules.unitywebrequesttexture": { 302 | "version": "1.0.0", 303 | "depth": 0, 304 | "source": "builtin", 305 | "dependencies": { 306 | "com.unity.modules.unitywebrequest": "1.0.0", 307 | "com.unity.modules.imageconversion": "1.0.0" 308 | } 309 | }, 310 | "com.unity.modules.unitywebrequestwww": { 311 | "version": "1.0.0", 312 | "depth": 0, 313 | "source": "builtin", 314 | "dependencies": { 315 | "com.unity.modules.unitywebrequest": "1.0.0", 316 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 317 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 318 | "com.unity.modules.audio": "1.0.0", 319 | "com.unity.modules.assetbundle": "1.0.0", 320 | "com.unity.modules.imageconversion": "1.0.0" 321 | } 322 | }, 323 | "com.unity.modules.vehicles": { 324 | "version": "1.0.0", 325 | "depth": 0, 326 | "source": "builtin", 327 | "dependencies": { 328 | "com.unity.modules.physics": "1.0.0" 329 | } 330 | }, 331 | "com.unity.modules.video": { 332 | "version": "1.0.0", 333 | "depth": 0, 334 | "source": "builtin", 335 | "dependencies": { 336 | "com.unity.modules.audio": "1.0.0", 337 | "com.unity.modules.ui": "1.0.0", 338 | "com.unity.modules.unitywebrequest": "1.0.0" 339 | } 340 | }, 341 | "com.unity.modules.vr": { 342 | "version": "1.0.0", 343 | "depth": 0, 344 | "source": "builtin", 345 | "dependencies": { 346 | "com.unity.modules.jsonserialize": "1.0.0", 347 | "com.unity.modules.physics": "1.0.0", 348 | "com.unity.modules.xr": "1.0.0" 349 | } 350 | }, 351 | "com.unity.modules.wind": { 352 | "version": "1.0.0", 353 | "depth": 0, 354 | "source": "builtin", 355 | "dependencies": {} 356 | }, 357 | "com.unity.modules.xr": { 358 | "version": "1.0.0", 359 | "depth": 0, 360 | "source": "builtin", 361 | "dependencies": { 362 | "com.unity.modules.physics": "1.0.0", 363 | "com.unity.modules.jsonserialize": "1.0.0", 364 | "com.unity.modules.subsystems": "1.0.0" 365 | } 366 | } 367 | } 368 | } 369 | -------------------------------------------------------------------------------- /Assets/Scripts/Core/ARKitFacialValues.cs: -------------------------------------------------------------------------------- 1 | using ProjectBlue.FacialCapture; 2 | using System; 3 | using System.Text; 4 | using ZeroFormatter; 5 | 6 | namespace ProjectBlue.FacialCapture.Core 7 | { 8 | 9 | [ZeroFormattable] 10 | public class ARKitFacialValues 11 | { 12 | [Index(0)] 13 | public virtual Single noseSneer_R { get; set; } 14 | [Index(1)] 15 | public virtual Single noseSneer_L { get; set; } 16 | [Index(2)] 17 | public virtual Single mouthUpperUp_R { get; set; } 18 | [Index(3)] 19 | public virtual Single mouthUpperUp_L { get; set; } 20 | [Index(4)] 21 | public virtual Single mouthLowerDown_R { get; set; } 22 | [Index(5)] 23 | public virtual Single mouthLowerDown_L { get; set; } 24 | [Index(6)] 25 | public virtual Single mouthPress_R { get; set; } 26 | [Index(7)] 27 | public virtual Single mouthPress_L { get; set; } 28 | [Index(8)] 29 | public virtual Single mouthStretch_R { get; set; } 30 | [Index(9)] 31 | public virtual Single mouthStretch_L { get; set; } 32 | [Index(10)] 33 | public virtual Single mouth_R { get; set; } 34 | [Index(11)] 35 | public virtual Single mouth_L { get; set; } 36 | [Index(12)] 37 | public virtual Single mouthDimple_R { get; set; } 38 | [Index(13)] 39 | public virtual Single mouthDimple_L { get; set; } 40 | [Index(14)] 41 | public virtual Single mouthFrown_R { get; set; } 42 | [Index(15)] 43 | public virtual Single mouthFrown_L { get; set; } 44 | [Index(16)] 45 | public virtual Single mouthFunnel { get; set; } 46 | [Index(17)] 47 | public virtual Single mouthPucker { get; set; } 48 | [Index(18)] 49 | public virtual Single mouthSmile_R { get; set; } 50 | [Index(19)] 51 | public virtual Single mouthSmile_L { get; set; } 52 | [Index(20)] 53 | public virtual Single mouthClose { get; set; } 54 | [Index(21)] 55 | public virtual Single jaw_R { get; set; } 56 | [Index(22)] 57 | public virtual Single jaw_L { get; set; } 58 | [Index(23)] 59 | public virtual Single jawOpen { get; set; } 60 | [Index(24)] 61 | public virtual Single jawForward { get; set; } 62 | [Index(25)] 63 | public virtual Single eyeLookUp_R { get; set; } 64 | [Index(26)] 65 | public virtual Single eyeLookUp_L { get; set; } 66 | [Index(27)] 67 | public virtual Single eyeLookOut_R { get; set; } 68 | [Index(28)] 69 | public virtual Single eyeLookOut_L { get; set; } 70 | [Index(29)] 71 | public virtual Single eyeLookIn_R { get; set; } 72 | [Index(30)] 73 | public virtual Single eyeLookIn_L { get; set; } 74 | [Index(31)] 75 | public virtual Single eyeLookDown_R { get; set; } 76 | [Index(32)] 77 | public virtual Single eyeLookDown_L { get; set; } 78 | [Index(33)] 79 | public virtual Single eyeSquint_R { get; set; } 80 | [Index(34)] 81 | public virtual Single eyeSquint_L { get; set; } 82 | [Index(35)] 83 | public virtual Single eyeWide_R { get; set; } 84 | [Index(36)] 85 | public virtual Single eyeWide_L { get; set; } 86 | [Index(37)] 87 | public virtual Single eyeBlink_R { get; set; } 88 | [Index(38)] 89 | public virtual Single eyeBlink_L { get; set; } 90 | [Index(39)] 91 | public virtual Single cheekSquint_R { get; set; } 92 | [Index(40)] 93 | public virtual Single cheekSquint_L { get; set; } 94 | [Index(41)] 95 | public virtual Single cheekPuff { get; set; } 96 | [Index(42)] 97 | public virtual Single browOuterUp_R { get; set; } 98 | [Index(43)] 99 | public virtual Single browOuterUp_L { get; set; } 100 | [Index(44)] 101 | public virtual Single browDown_R { get; set; } 102 | [Index(45)] 103 | public virtual Single browDown_L { get; set; } 104 | [Index(46)] 105 | public virtual Single browInnerUp { get; set; } 106 | [Index(47)] 107 | public virtual Single tongueOut { get; set; } 108 | [Index(48)] 109 | public virtual Single mouthRollLower { get; set; } 110 | [Index(49)] 111 | public virtual Single mouthRollUpper { get; set; } 112 | [Index(50)] 113 | public virtual Single mouthShrugLower { get; set; } 114 | [Index(51)] 115 | public virtual Single mouthShrugUpper { get; set; } 116 | 117 | [Index(52)] 118 | public virtual Int64 elapsedTicks { get; set; } 119 | 120 | 121 | public void SetValueFromIndex(int index, float value) 122 | { 123 | 124 | switch (index) 125 | { 126 | case 0: 127 | noseSneer_R = value; 128 | break; 129 | case 1: 130 | noseSneer_L = value; 131 | break; 132 | case 2: 133 | mouthUpperUp_R = value; 134 | break; 135 | case 3: 136 | mouthUpperUp_L = value; 137 | break; 138 | case 4: 139 | mouthLowerDown_R = value; 140 | break; 141 | case 5: 142 | mouthLowerDown_L = value; 143 | break; 144 | case 6: 145 | mouthPress_R = value; 146 | break; 147 | case 7: 148 | mouthPress_L = value; 149 | break; 150 | case 8: 151 | mouthStretch_R = value; 152 | break; 153 | case 9: 154 | mouthStretch_L = value; 155 | break; 156 | case 10: 157 | mouth_R = value; 158 | break; 159 | case 11: 160 | mouth_L = value; 161 | break; 162 | case 12: 163 | mouthDimple_R = value; 164 | break; 165 | case 13: 166 | mouthDimple_L = value; 167 | break; 168 | case 14: 169 | mouthFrown_R = value; 170 | break; 171 | case 15: 172 | mouthFrown_L = value; 173 | break; 174 | case 16: 175 | mouthFunnel = value; 176 | break; 177 | case 17: 178 | mouthPucker = value; 179 | break; 180 | case 18: 181 | mouthSmile_R = value; 182 | break; 183 | case 19: 184 | mouthSmile_L = value; 185 | break; 186 | case 20: 187 | mouthClose = value; 188 | break; 189 | case 21: 190 | jaw_R = value; 191 | break; 192 | case 22: 193 | jaw_L = value; 194 | break; 195 | case 23: 196 | jawOpen = value; 197 | break; 198 | case 24: 199 | jawForward = value; 200 | break; 201 | case 25: 202 | eyeLookUp_R = value; 203 | break; 204 | case 26: 205 | eyeLookUp_L = value; 206 | break; 207 | case 27: 208 | eyeLookOut_R = value; 209 | break; 210 | case 28: 211 | eyeLookOut_L = value; 212 | break; 213 | case 29: 214 | eyeLookIn_R = value; 215 | break; 216 | case 30: 217 | eyeLookIn_L = value; 218 | break; 219 | case 31: 220 | eyeLookDown_R = value; 221 | break; 222 | case 32: 223 | eyeLookDown_L = value; 224 | break; 225 | case 33: 226 | eyeSquint_R = value; 227 | break; 228 | case 34: 229 | eyeSquint_L = value; 230 | break; 231 | case 35: 232 | eyeWide_R = value; 233 | break; 234 | case 36: 235 | eyeWide_L = value; 236 | break; 237 | case 37: 238 | eyeBlink_R = value; 239 | break; 240 | case 38: 241 | eyeBlink_L = value; 242 | break; 243 | case 39: 244 | cheekSquint_R = value; 245 | break; 246 | case 40: 247 | cheekSquint_L = value; 248 | break; 249 | case 41: 250 | cheekPuff = value; 251 | break; 252 | case 42: 253 | browOuterUp_R = value; 254 | break; 255 | case 43: 256 | browOuterUp_L = value; 257 | break; 258 | case 44: 259 | browDown_R = value; 260 | break; 261 | case 45: 262 | browDown_L = value; 263 | break; 264 | case 46: 265 | browInnerUp = value; 266 | break; 267 | case 47: 268 | tongueOut = value; 269 | break; 270 | case 48: 271 | mouthRollLower = value; 272 | break; 273 | case 49: 274 | mouthRollUpper = value; 275 | break; 276 | case 50: 277 | mouthShrugLower = value; 278 | break; 279 | case 51: 280 | mouthShrugUpper = value; 281 | break; 282 | } 283 | 284 | 285 | } 286 | 287 | public float GetValueFromIndex(int index) 288 | { 289 | 290 | switch (index) 291 | { 292 | case 0: 293 | return noseSneer_R; 294 | case 1: 295 | return noseSneer_L; 296 | case 2: 297 | return mouthUpperUp_R; 298 | case 3: 299 | return mouthUpperUp_L; 300 | case 4: 301 | return mouthLowerDown_R; 302 | case 5: 303 | return mouthLowerDown_L; 304 | case 6: 305 | return mouthPress_R; 306 | case 7: 307 | return mouthPress_L; 308 | case 8: 309 | return mouthStretch_R; 310 | case 9: 311 | return mouthStretch_L; 312 | case 10: 313 | return mouth_R; 314 | case 11: 315 | return mouth_L; 316 | case 12: 317 | return mouthDimple_R; 318 | case 13: 319 | return mouthDimple_L; 320 | case 14: 321 | return mouthFrown_R; 322 | case 15: 323 | return mouthFrown_L; 324 | case 16: 325 | return mouthFunnel; 326 | case 17: 327 | return mouthPucker; 328 | case 18: 329 | return mouthSmile_R; 330 | case 19: 331 | return mouthSmile_L; 332 | case 20: 333 | return mouthClose; 334 | case 21: 335 | return jaw_R; 336 | case 22: 337 | return jaw_L; 338 | case 23: 339 | return jawOpen; 340 | case 24: 341 | return jawForward; 342 | case 25: 343 | return eyeLookUp_R; 344 | case 26: 345 | return eyeLookUp_L; 346 | case 27: 347 | return eyeLookOut_R; 348 | case 28: 349 | return eyeLookOut_L; 350 | case 29: 351 | return eyeLookIn_R; 352 | case 30: 353 | return eyeLookIn_L; 354 | case 31: 355 | return eyeLookDown_R; 356 | case 32: 357 | return eyeLookDown_L; 358 | case 33: 359 | return eyeSquint_R; 360 | case 34: 361 | return eyeSquint_L; 362 | case 35: 363 | return eyeWide_R; 364 | case 36: 365 | return eyeWide_L; 366 | case 37: 367 | return eyeBlink_R; 368 | case 38: 369 | return eyeBlink_L; 370 | case 39: 371 | return cheekSquint_R; 372 | case 40: 373 | return cheekSquint_L; 374 | case 41: 375 | return cheekPuff; 376 | case 42: 377 | return browOuterUp_R; 378 | case 43: 379 | return browOuterUp_L; 380 | case 44: 381 | return browDown_R; 382 | case 45: 383 | return browDown_L; 384 | case 46: 385 | return browInnerUp; 386 | case 47: 387 | return tongueOut; 388 | case 48: 389 | return mouthRollLower; 390 | case 49: 391 | return mouthRollUpper; 392 | case 50: 393 | return mouthShrugLower; 394 | case 51: 395 | return mouthShrugUpper; 396 | default: 397 | return 0; 398 | } 399 | 400 | } 401 | 402 | 403 | public string ToString() 404 | { 405 | 406 | StringBuilder builder = new StringBuilder(); 407 | 408 | foreach (ARKitBlendShape blendShapeType in Enum.GetValues(typeof(ARKitBlendShape))) 409 | { 410 | int index = (int)blendShapeType; 411 | float value = GetValueFromIndex(index); 412 | 413 | string name = Enum.GetName(typeof(ARKitBlendShape), blendShapeType); 414 | 415 | builder.Append($"{name} : {value.ToString()}\n"); 416 | } 417 | 418 | return builder.ToString(); 419 | } 420 | 421 | 422 | } 423 | 424 | } -------------------------------------------------------------------------------- /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: 20 7 | productGUID: fa096bd0c6d5c174d808fd970ba011b9 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: ProjectBlue 16 | productName: Unity_FacialCapture 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: 0 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: 1280 46 | defaultScreenHeight: 720 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 1 51 | m_MTRendering: 1 52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 53 | iosShowActivityIndicatorOnLoading: -1 54 | androidShowActivityIndicatorOnLoading: -1 55 | iosUseCustomAppBackgroundBehavior: 0 56 | iosAllowHTTPDownload: 1 57 | allowedAutorotateToPortrait: 1 58 | allowedAutorotateToPortraitUpsideDown: 1 59 | allowedAutorotateToLandscapeRight: 1 60 | allowedAutorotateToLandscapeLeft: 1 61 | useOSAutorotation: 1 62 | use32BitDisplayBuffer: 1 63 | preserveFramebufferAlpha: 0 64 | disableDepthAndStencilBuffers: 0 65 | androidStartInFullscreen: 1 66 | androidRenderOutsideSafeArea: 1 67 | androidUseSwappy: 0 68 | androidBlitType: 0 69 | defaultIsNativeResolution: 1 70 | macRetinaSupport: 1 71 | runInBackground: 1 72 | captureSingleScreen: 0 73 | muteOtherAudioSources: 0 74 | Prepare IOS For Recording: 0 75 | Force IOS Speakers When Recording: 0 76 | deferSystemGesturesMode: 0 77 | hideHomeButton: 0 78 | submitAnalytics: 1 79 | usePlayerLog: 1 80 | bakeCollisionMeshes: 0 81 | forceSingleInstance: 0 82 | useFlipModelSwapchain: 1 83 | resizableWindow: 0 84 | useMacAppStoreValidation: 0 85 | macAppStoreCategory: public.app-category.games 86 | gpuSkinning: 1 87 | xboxPIXTextureCapture: 0 88 | xboxEnableAvatar: 0 89 | xboxEnableKinect: 0 90 | xboxEnableKinectAutoTracking: 0 91 | xboxEnableFitness: 0 92 | visibleInBackground: 1 93 | allowFullscreenSwitch: 1 94 | fullscreenMode: 3 95 | xboxSpeechDB: 0 96 | xboxEnableHeadOrientation: 0 97 | xboxEnableGuest: 0 98 | xboxEnablePIXSampling: 0 99 | metalFramebufferOnly: 0 100 | xboxOneResolution: 0 101 | xboxOneSResolution: 0 102 | xboxOneXResolution: 3 103 | xboxOneMonoLoggingLevel: 0 104 | xboxOneLoggingLevel: 1 105 | xboxOneDisableEsram: 0 106 | xboxOneEnableTypeOptimization: 0 107 | xboxOnePresentImmediateThreshold: 0 108 | switchQueueCommandMemory: 0 109 | switchQueueControlMemory: 16384 110 | switchQueueComputeMemory: 262144 111 | switchNVNShaderPoolsGranularity: 33554432 112 | switchNVNDefaultPoolsGranularity: 16777216 113 | switchNVNOtherPoolsGranularity: 16777216 114 | stadiaPresentMode: 0 115 | stadiaTargetFramerate: 0 116 | vulkanNumSwapchainBuffers: 3 117 | vulkanEnableSetSRGBWrite: 0 118 | m_SupportedAspectRatios: 119 | 4:3: 1 120 | 5:4: 1 121 | 16:10: 1 122 | 16:9: 1 123 | Others: 1 124 | bundleVersion: 0.1 125 | preloadedAssets: [] 126 | metroInputSource: 0 127 | wsaTransparentSwapchain: 0 128 | m_HolographicPauseOnTrackingLoss: 1 129 | xboxOneDisableKinectGpuReservation: 1 130 | xboxOneEnable7thCore: 1 131 | vrSettings: 132 | cardboard: 133 | depthFormat: 0 134 | enableTransitionView: 0 135 | daydream: 136 | depthFormat: 0 137 | useSustainedPerformanceMode: 0 138 | enableVideoLayer: 0 139 | useProtectedVideoMemory: 0 140 | minimumSupportedHeadTracking: 0 141 | maximumSupportedHeadTracking: 1 142 | hololens: 143 | depthFormat: 1 144 | depthBufferSharingEnabled: 1 145 | lumin: 146 | depthFormat: 0 147 | frameTiming: 2 148 | enableGLCache: 0 149 | glCacheMaxBlobSize: 524288 150 | glCacheMaxFileSize: 8388608 151 | oculus: 152 | sharedDepthBuffer: 1 153 | dashSupport: 1 154 | lowOverheadMode: 0 155 | protectedContext: 0 156 | v2Signing: 1 157 | enable360StereoCapture: 0 158 | isWsaHolographicRemotingEnabled: 0 159 | enableFrameTimingStats: 0 160 | useHDRDisplay: 0 161 | D3DHDRBitDepth: 0 162 | m_ColorGamuts: 00000000 163 | targetPixelDensity: 30 164 | resolutionScalingMode: 0 165 | androidSupportedAspectRatio: 1 166 | androidMaxAspectRatio: 2.1 167 | applicationIdentifier: {} 168 | buildNumber: {} 169 | AndroidBundleVersionCode: 1 170 | AndroidMinSdkVersion: 19 171 | AndroidTargetSdkVersion: 0 172 | AndroidPreferredInstallLocation: 1 173 | aotOptions: 174 | stripEngineCode: 1 175 | iPhoneStrippingLevel: 0 176 | iPhoneScriptCallOptimization: 0 177 | ForceInternetPermission: 0 178 | ForceSDCardPermission: 0 179 | CreateWallpaper: 0 180 | APKExpansionFiles: 0 181 | keepLoadedShadersAlive: 0 182 | StripUnusedMeshComponents: 1 183 | VertexChannelCompressionMask: 4054 184 | iPhoneSdkVersion: 988 185 | iOSTargetOSVersionString: 10.0 186 | tvOSSdkVersion: 0 187 | tvOSRequireExtendedGameController: 0 188 | tvOSTargetOSVersionString: 10.0 189 | uIPrerenderedIcon: 0 190 | uIRequiresPersistentWiFi: 0 191 | uIRequiresFullScreen: 1 192 | uIStatusBarHidden: 1 193 | uIExitOnSuspend: 0 194 | uIStatusBarStyle: 0 195 | appleTVSplashScreen: {fileID: 0} 196 | appleTVSplashScreen2x: {fileID: 0} 197 | tvOSSmallIconLayers: [] 198 | tvOSSmallIconLayers2x: [] 199 | tvOSLargeIconLayers: [] 200 | tvOSLargeIconLayers2x: [] 201 | tvOSTopShelfImageLayers: [] 202 | tvOSTopShelfImageLayers2x: [] 203 | tvOSTopShelfImageWideLayers: [] 204 | tvOSTopShelfImageWideLayers2x: [] 205 | iOSLaunchScreenType: 0 206 | iOSLaunchScreenPortrait: {fileID: 0} 207 | iOSLaunchScreenLandscape: {fileID: 0} 208 | iOSLaunchScreenBackgroundColor: 209 | serializedVersion: 2 210 | rgba: 0 211 | iOSLaunchScreenFillPct: 100 212 | iOSLaunchScreenSize: 100 213 | iOSLaunchScreenCustomXibPath: 214 | iOSLaunchScreeniPadType: 0 215 | iOSLaunchScreeniPadImage: {fileID: 0} 216 | iOSLaunchScreeniPadBackgroundColor: 217 | serializedVersion: 2 218 | rgba: 0 219 | iOSLaunchScreeniPadFillPct: 100 220 | iOSLaunchScreeniPadSize: 100 221 | iOSLaunchScreeniPadCustomXibPath: 222 | iOSUseLaunchScreenStoryboard: 0 223 | iOSLaunchScreenCustomStoryboardPath: 224 | iOSDeviceRequirements: [] 225 | iOSURLSchemes: [] 226 | iOSBackgroundModes: 0 227 | iOSMetalForceHardShadows: 0 228 | metalEditorSupport: 1 229 | metalAPIValidation: 1 230 | iOSRenderExtraFrameOnPause: 0 231 | appleDeveloperTeamID: 232 | iOSManualSigningProvisioningProfileID: 233 | tvOSManualSigningProvisioningProfileID: 234 | iOSManualSigningProvisioningProfileType: 0 235 | tvOSManualSigningProvisioningProfileType: 0 236 | appleEnableAutomaticSigning: 0 237 | iOSRequireARKit: 0 238 | iOSAutomaticallyDetectAndAddCapabilities: 1 239 | appleEnableProMotion: 0 240 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea 241 | templatePackageId: com.unity.template.3d@4.2.8 242 | templateDefaultScene: Assets/Scenes/SampleScene.unity 243 | AndroidTargetArchitectures: 1 244 | AndroidSplashScreenScale: 0 245 | androidSplashScreen: {fileID: 0} 246 | AndroidKeystoreName: 247 | AndroidKeyaliasName: 248 | AndroidBuildApkPerCpuArchitecture: 0 249 | AndroidTVCompatibility: 0 250 | AndroidIsGame: 1 251 | AndroidEnableTango: 0 252 | androidEnableBanner: 1 253 | androidUseLowAccuracyLocation: 0 254 | androidUseCustomKeystore: 0 255 | m_AndroidBanners: 256 | - width: 320 257 | height: 180 258 | banner: {fileID: 0} 259 | androidGamepadSupportLevel: 0 260 | AndroidValidateAppBundleSize: 1 261 | AndroidAppBundleSizeToValidate: 150 262 | m_BuildTargetIcons: [] 263 | m_BuildTargetPlatformIcons: [] 264 | m_BuildTargetBatching: 265 | - m_BuildTarget: Standalone 266 | m_StaticBatching: 1 267 | m_DynamicBatching: 0 268 | - m_BuildTarget: tvOS 269 | m_StaticBatching: 1 270 | m_DynamicBatching: 0 271 | - m_BuildTarget: Android 272 | m_StaticBatching: 1 273 | m_DynamicBatching: 0 274 | - m_BuildTarget: iPhone 275 | m_StaticBatching: 1 276 | m_DynamicBatching: 0 277 | - m_BuildTarget: WebGL 278 | m_StaticBatching: 0 279 | m_DynamicBatching: 0 280 | m_BuildTargetGraphicsJobs: 281 | - m_BuildTarget: MacStandaloneSupport 282 | m_GraphicsJobs: 0 283 | - m_BuildTarget: Switch 284 | m_GraphicsJobs: 1 285 | - m_BuildTarget: MetroSupport 286 | m_GraphicsJobs: 1 287 | - m_BuildTarget: AppleTVSupport 288 | m_GraphicsJobs: 0 289 | - m_BuildTarget: BJMSupport 290 | m_GraphicsJobs: 1 291 | - m_BuildTarget: LinuxStandaloneSupport 292 | m_GraphicsJobs: 1 293 | - m_BuildTarget: PS4Player 294 | m_GraphicsJobs: 1 295 | - m_BuildTarget: iOSSupport 296 | m_GraphicsJobs: 0 297 | - m_BuildTarget: WindowsStandaloneSupport 298 | m_GraphicsJobs: 1 299 | - m_BuildTarget: XboxOnePlayer 300 | m_GraphicsJobs: 1 301 | - m_BuildTarget: LuminSupport 302 | m_GraphicsJobs: 0 303 | - m_BuildTarget: AndroidPlayer 304 | m_GraphicsJobs: 0 305 | - m_BuildTarget: WebGLSupport 306 | m_GraphicsJobs: 0 307 | m_BuildTargetGraphicsJobMode: 308 | - m_BuildTarget: PS4Player 309 | m_GraphicsJobMode: 0 310 | - m_BuildTarget: XboxOnePlayer 311 | m_GraphicsJobMode: 0 312 | m_BuildTargetGraphicsAPIs: 313 | - m_BuildTarget: AndroidPlayer 314 | m_APIs: 150000000b000000 315 | m_Automatic: 0 316 | - m_BuildTarget: iOSSupport 317 | m_APIs: 10000000 318 | m_Automatic: 1 319 | - m_BuildTarget: AppleTVSupport 320 | m_APIs: 10000000 321 | m_Automatic: 0 322 | - m_BuildTarget: WebGLSupport 323 | m_APIs: 0b000000 324 | m_Automatic: 1 325 | m_BuildTargetVRSettings: 326 | - m_BuildTarget: Standalone 327 | m_Enabled: 0 328 | m_Devices: 329 | - Oculus 330 | - OpenVR 331 | openGLRequireES31: 0 332 | openGLRequireES31AEP: 0 333 | openGLRequireES32: 0 334 | m_TemplateCustomTags: {} 335 | mobileMTRendering: 336 | Android: 1 337 | iPhone: 1 338 | tvOS: 1 339 | m_BuildTargetGroupLightmapEncodingQuality: [] 340 | m_BuildTargetGroupLightmapSettings: [] 341 | playModeTestRunnerEnabled: 0 342 | runPlayModeTestAsEditModeTest: 0 343 | actionOnDotNetUnhandledException: 1 344 | enableInternalProfiler: 0 345 | logObjCUncaughtExceptions: 1 346 | enableCrashReportAPI: 0 347 | cameraUsageDescription: 348 | locationUsageDescription: 349 | microphoneUsageDescription: 350 | switchNetLibKey: 351 | switchSocketMemoryPoolSize: 6144 352 | switchSocketAllocatorPoolSize: 128 353 | switchSocketConcurrencyLimit: 14 354 | switchScreenResolutionBehavior: 2 355 | switchUseCPUProfiler: 0 356 | switchApplicationID: 0x01004b9000490000 357 | switchNSODependencies: 358 | switchTitleNames_0: 359 | switchTitleNames_1: 360 | switchTitleNames_2: 361 | switchTitleNames_3: 362 | switchTitleNames_4: 363 | switchTitleNames_5: 364 | switchTitleNames_6: 365 | switchTitleNames_7: 366 | switchTitleNames_8: 367 | switchTitleNames_9: 368 | switchTitleNames_10: 369 | switchTitleNames_11: 370 | switchTitleNames_12: 371 | switchTitleNames_13: 372 | switchTitleNames_14: 373 | switchPublisherNames_0: 374 | switchPublisherNames_1: 375 | switchPublisherNames_2: 376 | switchPublisherNames_3: 377 | switchPublisherNames_4: 378 | switchPublisherNames_5: 379 | switchPublisherNames_6: 380 | switchPublisherNames_7: 381 | switchPublisherNames_8: 382 | switchPublisherNames_9: 383 | switchPublisherNames_10: 384 | switchPublisherNames_11: 385 | switchPublisherNames_12: 386 | switchPublisherNames_13: 387 | switchPublisherNames_14: 388 | switchIcons_0: {fileID: 0} 389 | switchIcons_1: {fileID: 0} 390 | switchIcons_2: {fileID: 0} 391 | switchIcons_3: {fileID: 0} 392 | switchIcons_4: {fileID: 0} 393 | switchIcons_5: {fileID: 0} 394 | switchIcons_6: {fileID: 0} 395 | switchIcons_7: {fileID: 0} 396 | switchIcons_8: {fileID: 0} 397 | switchIcons_9: {fileID: 0} 398 | switchIcons_10: {fileID: 0} 399 | switchIcons_11: {fileID: 0} 400 | switchIcons_12: {fileID: 0} 401 | switchIcons_13: {fileID: 0} 402 | switchIcons_14: {fileID: 0} 403 | switchSmallIcons_0: {fileID: 0} 404 | switchSmallIcons_1: {fileID: 0} 405 | switchSmallIcons_2: {fileID: 0} 406 | switchSmallIcons_3: {fileID: 0} 407 | switchSmallIcons_4: {fileID: 0} 408 | switchSmallIcons_5: {fileID: 0} 409 | switchSmallIcons_6: {fileID: 0} 410 | switchSmallIcons_7: {fileID: 0} 411 | switchSmallIcons_8: {fileID: 0} 412 | switchSmallIcons_9: {fileID: 0} 413 | switchSmallIcons_10: {fileID: 0} 414 | switchSmallIcons_11: {fileID: 0} 415 | switchSmallIcons_12: {fileID: 0} 416 | switchSmallIcons_13: {fileID: 0} 417 | switchSmallIcons_14: {fileID: 0} 418 | switchManualHTML: 419 | switchAccessibleURLs: 420 | switchLegalInformation: 421 | switchMainThreadStackSize: 1048576 422 | switchPresenceGroupId: 423 | switchLogoHandling: 0 424 | switchReleaseVersion: 0 425 | switchDisplayVersion: 1.0.0 426 | switchStartupUserAccount: 0 427 | switchTouchScreenUsage: 0 428 | switchSupportedLanguagesMask: 0 429 | switchLogoType: 0 430 | switchApplicationErrorCodeCategory: 431 | switchUserAccountSaveDataSize: 0 432 | switchUserAccountSaveDataJournalSize: 0 433 | switchApplicationAttribute: 0 434 | switchCardSpecSize: -1 435 | switchCardSpecClock: -1 436 | switchRatingsMask: 0 437 | switchRatingsInt_0: 0 438 | switchRatingsInt_1: 0 439 | switchRatingsInt_2: 0 440 | switchRatingsInt_3: 0 441 | switchRatingsInt_4: 0 442 | switchRatingsInt_5: 0 443 | switchRatingsInt_6: 0 444 | switchRatingsInt_7: 0 445 | switchRatingsInt_8: 0 446 | switchRatingsInt_9: 0 447 | switchRatingsInt_10: 0 448 | switchRatingsInt_11: 0 449 | switchRatingsInt_12: 0 450 | switchLocalCommunicationIds_0: 451 | switchLocalCommunicationIds_1: 452 | switchLocalCommunicationIds_2: 453 | switchLocalCommunicationIds_3: 454 | switchLocalCommunicationIds_4: 455 | switchLocalCommunicationIds_5: 456 | switchLocalCommunicationIds_6: 457 | switchLocalCommunicationIds_7: 458 | switchParentalControl: 0 459 | switchAllowsScreenshot: 1 460 | switchAllowsVideoCapturing: 1 461 | switchAllowsRuntimeAddOnContentInstall: 0 462 | switchDataLossConfirmation: 0 463 | switchUserAccountLockEnabled: 0 464 | switchSystemResourceMemory: 16777216 465 | switchSupportedNpadStyles: 22 466 | switchNativeFsCacheSize: 32 467 | switchIsHoldTypeHorizontal: 0 468 | switchSupportedNpadCount: 8 469 | switchSocketConfigEnabled: 0 470 | switchTcpInitialSendBufferSize: 32 471 | switchTcpInitialReceiveBufferSize: 64 472 | switchTcpAutoSendBufferSizeMax: 256 473 | switchTcpAutoReceiveBufferSizeMax: 256 474 | switchUdpSendBufferSize: 9 475 | switchUdpReceiveBufferSize: 42 476 | switchSocketBufferEfficiency: 4 477 | switchSocketInitializeEnabled: 1 478 | switchNetworkInterfaceManagerInitializeEnabled: 1 479 | switchPlayerConnectionEnabled: 1 480 | ps4NPAgeRating: 12 481 | ps4NPTitleSecret: 482 | ps4NPTrophyPackPath: 483 | ps4ParentalLevel: 11 484 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 485 | ps4Category: 0 486 | ps4MasterVersion: 01.00 487 | ps4AppVersion: 01.00 488 | ps4AppType: 0 489 | ps4ParamSfxPath: 490 | ps4VideoOutPixelFormat: 0 491 | ps4VideoOutInitialWidth: 1920 492 | ps4VideoOutBaseModeInitialWidth: 1920 493 | ps4VideoOutReprojectionRate: 60 494 | ps4PronunciationXMLPath: 495 | ps4PronunciationSIGPath: 496 | ps4BackgroundImagePath: 497 | ps4StartupImagePath: 498 | ps4StartupImagesFolder: 499 | ps4IconImagesFolder: 500 | ps4SaveDataImagePath: 501 | ps4SdkOverride: 502 | ps4BGMPath: 503 | ps4ShareFilePath: 504 | ps4ShareOverlayImagePath: 505 | ps4PrivacyGuardImagePath: 506 | ps4NPtitleDatPath: 507 | ps4RemotePlayKeyAssignment: -1 508 | ps4RemotePlayKeyMappingDir: 509 | ps4PlayTogetherPlayerCount: 0 510 | ps4EnterButtonAssignment: 1 511 | ps4ApplicationParam1: 0 512 | ps4ApplicationParam2: 0 513 | ps4ApplicationParam3: 0 514 | ps4ApplicationParam4: 0 515 | ps4DownloadDataSize: 0 516 | ps4GarlicHeapSize: 2048 517 | ps4ProGarlicHeapSize: 2560 518 | playerPrefsMaxSize: 32768 519 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 520 | ps4pnSessions: 1 521 | ps4pnPresence: 1 522 | ps4pnFriends: 1 523 | ps4pnGameCustomData: 1 524 | playerPrefsSupport: 0 525 | enableApplicationExit: 0 526 | resetTempFolder: 1 527 | restrictedAudioUsageRights: 0 528 | ps4UseResolutionFallback: 0 529 | ps4ReprojectionSupport: 0 530 | ps4UseAudio3dBackend: 0 531 | ps4UseLowGarlicFragmentationMode: 1 532 | ps4SocialScreenEnabled: 0 533 | ps4ScriptOptimizationLevel: 0 534 | ps4Audio3dVirtualSpeakerCount: 14 535 | ps4attribCpuUsage: 0 536 | ps4PatchPkgPath: 537 | ps4PatchLatestPkgPath: 538 | ps4PatchChangeinfoPath: 539 | ps4PatchDayOne: 0 540 | ps4attribUserManagement: 0 541 | ps4attribMoveSupport: 0 542 | ps4attrib3DSupport: 0 543 | ps4attribShareSupport: 0 544 | ps4attribExclusiveVR: 0 545 | ps4disableAutoHideSplash: 0 546 | ps4videoRecordingFeaturesUsed: 0 547 | ps4contentSearchFeaturesUsed: 0 548 | ps4attribEyeToEyeDistanceSettingVR: 0 549 | ps4IncludedModules: [] 550 | ps4attribVROutputEnabled: 0 551 | monoEnv: 552 | splashScreenBackgroundSourceLandscape: {fileID: 0} 553 | splashScreenBackgroundSourcePortrait: {fileID: 0} 554 | blurSplashScreenBackground: 1 555 | spritePackerPolicy: 556 | webGLMemorySize: 16 557 | webGLExceptionSupport: 1 558 | webGLNameFilesAsHashes: 0 559 | webGLDataCaching: 1 560 | webGLDebugSymbols: 0 561 | webGLEmscriptenArgs: 562 | webGLModulesDirectory: 563 | webGLTemplate: APPLICATION:Default 564 | webGLAnalyzeBuildSize: 0 565 | webGLUseEmbeddedResources: 0 566 | webGLCompressionFormat: 1 567 | webGLLinkerTarget: 1 568 | webGLThreadsSupport: 0 569 | webGLWasmStreaming: 0 570 | scriptingDefineSymbols: {} 571 | platformArchitecture: {} 572 | scriptingBackend: {} 573 | il2cppCompilerConfiguration: {} 574 | managedStrippingLevel: {} 575 | incrementalIl2cppBuild: {} 576 | allowUnsafeCode: 0 577 | additionalIl2CppArgs: 578 | scriptingRuntimeVersion: 1 579 | gcIncremental: 0 580 | gcWBarrierValidation: 0 581 | apiCompatibilityLevelPerPlatform: 582 | Standalone: 3 583 | m_RenderingPath: 1 584 | m_MobileRenderingPath: 1 585 | metroPackageName: Template_3D 586 | metroPackageVersion: 587 | metroCertificatePath: 588 | metroCertificatePassword: 589 | metroCertificateSubject: 590 | metroCertificateIssuer: 591 | metroCertificateNotAfter: 0000000000000000 592 | metroApplicationDescription: Template_3D 593 | wsaImages: {} 594 | metroTileShortName: 595 | metroTileShowName: 0 596 | metroMediumTileShowName: 0 597 | metroLargeTileShowName: 0 598 | metroWideTileShowName: 0 599 | metroSupportStreamingInstall: 0 600 | metroLastRequiredScene: 0 601 | metroDefaultTileSize: 1 602 | metroTileForegroundText: 2 603 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 604 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 605 | a: 1} 606 | metroSplashScreenUseBackgroundColor: 0 607 | platformCapabilities: {} 608 | metroTargetDeviceFamilies: {} 609 | metroFTAName: 610 | metroFTAFileTypes: [] 611 | metroProtocolName: 612 | XboxOneProductId: 613 | XboxOneUpdateKey: 614 | XboxOneSandboxId: 615 | XboxOneContentId: 616 | XboxOneTitleId: 617 | XboxOneSCId: 618 | XboxOneGameOsOverridePath: 619 | XboxOnePackagingOverridePath: 620 | XboxOneAppManifestOverridePath: 621 | XboxOneVersion: 1.0.0.0 622 | XboxOnePackageEncryption: 0 623 | XboxOnePackageUpdateGranularity: 2 624 | XboxOneDescription: 625 | XboxOneLanguage: 626 | - enus 627 | XboxOneCapability: [] 628 | XboxOneGameRating: {} 629 | XboxOneIsContentPackage: 0 630 | XboxOneEnableGPUVariability: 1 631 | XboxOneSockets: {} 632 | XboxOneSplashScreen: {fileID: 0} 633 | XboxOneAllowedProductIds: [] 634 | XboxOnePersistentLocalStorageSize: 0 635 | XboxOneXTitleMemory: 8 636 | XboxOneOverrideIdentityName: 637 | XboxOneOverrideIdentityPublisher: 638 | vrEditorSettings: 639 | daydream: 640 | daydreamIconForeground: {fileID: 0} 641 | daydreamIconBackground: {fileID: 0} 642 | cloudServicesEnabled: 643 | UNet: 1 644 | luminIcon: 645 | m_Name: 646 | m_ModelFolderPath: 647 | m_PortalFolderPath: 648 | luminCert: 649 | m_CertPath: 650 | m_SignPackage: 1 651 | luminIsChannelApp: 0 652 | luminVersion: 653 | m_VersionCode: 1 654 | m_VersionName: 655 | apiCompatibilityLevel: 6 656 | cloudProjectId: 657 | framebufferDepthMemorylessMode: 0 658 | projectName: 659 | organizationId: 660 | cloudEnabled: 0 661 | enableNativePlatformBackendsForNewInputSystem: 0 662 | disableOldInputManagerSupport: 0 663 | legacyClampBlendShapeWeights: 0 664 | -------------------------------------------------------------------------------- /Assets/Scenes/PlayerScene.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: 11 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_UseShadowmask: 1 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 | debug: 122 | m_Flags: 0 123 | m_NavMeshData: {fileID: 0} 124 | --- !u!1 &762458580 125 | GameObject: 126 | m_ObjectHideFlags: 0 127 | m_CorrespondingSourceObject: {fileID: 0} 128 | m_PrefabInstance: {fileID: 0} 129 | m_PrefabAsset: {fileID: 0} 130 | serializedVersion: 6 131 | m_Component: 132 | - component: {fileID: 762458582} 133 | - component: {fileID: 762458581} 134 | m_Layer: 0 135 | m_Name: Directional Light 136 | m_TagString: Untagged 137 | m_Icon: {fileID: 0} 138 | m_NavMeshLayer: 0 139 | m_StaticEditorFlags: 0 140 | m_IsActive: 1 141 | --- !u!108 &762458581 142 | Light: 143 | m_ObjectHideFlags: 0 144 | m_CorrespondingSourceObject: {fileID: 0} 145 | m_PrefabInstance: {fileID: 0} 146 | m_PrefabAsset: {fileID: 0} 147 | m_GameObject: {fileID: 762458580} 148 | m_Enabled: 1 149 | serializedVersion: 10 150 | m_Type: 1 151 | m_Shape: 0 152 | m_Color: {r: 1, g: 1, b: 1, a: 1} 153 | m_Intensity: 1 154 | m_Range: 10 155 | m_SpotAngle: 30 156 | m_InnerSpotAngle: 21.80208 157 | m_CookieSize: 10 158 | m_Shadows: 159 | m_Type: 2 160 | m_Resolution: -1 161 | m_CustomResolution: -1 162 | m_Strength: 1 163 | m_Bias: 0.05 164 | m_NormalBias: 0.4 165 | m_NearPlane: 0.2 166 | m_CullingMatrixOverride: 167 | e00: 1 168 | e01: 0 169 | e02: 0 170 | e03: 0 171 | e10: 0 172 | e11: 1 173 | e12: 0 174 | e13: 0 175 | e20: 0 176 | e21: 0 177 | e22: 1 178 | e23: 0 179 | e30: 0 180 | e31: 0 181 | e32: 0 182 | e33: 1 183 | m_UseCullingMatrixOverride: 0 184 | m_Cookie: {fileID: 0} 185 | m_DrawHalo: 0 186 | m_Flare: {fileID: 0} 187 | m_RenderMode: 0 188 | m_CullingMask: 189 | serializedVersion: 2 190 | m_Bits: 4294967295 191 | m_RenderingLayerMask: 1 192 | m_Lightmapping: 4 193 | m_LightShadowCasterMode: 0 194 | m_AreaSize: {x: 1, y: 1} 195 | m_BounceIntensity: 1 196 | m_ColorTemperature: 6570 197 | m_UseColorTemperature: 0 198 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 199 | m_UseBoundingSphereOverride: 0 200 | m_ShadowRadius: 0 201 | m_ShadowAngle: 0 202 | --- !u!4 &762458582 203 | Transform: 204 | m_ObjectHideFlags: 0 205 | m_CorrespondingSourceObject: {fileID: 0} 206 | m_PrefabInstance: {fileID: 0} 207 | m_PrefabAsset: {fileID: 0} 208 | m_GameObject: {fileID: 762458580} 209 | m_LocalRotation: {x: 0.0003739196, y: -0.9932669, z: 0.115803406, w: 0.0032071767} 210 | m_LocalPosition: {x: 0, y: 3, z: 0} 211 | m_LocalScale: {x: 1, y: 1, z: 1} 212 | m_Children: [] 213 | m_Father: {fileID: 0} 214 | m_RootOrder: 1 215 | m_LocalEulerAnglesHint: {x: 13.3, y: -179.63, z: 0} 216 | --- !u!1 &889356286 217 | GameObject: 218 | m_ObjectHideFlags: 0 219 | m_CorrespondingSourceObject: {fileID: 0} 220 | m_PrefabInstance: {fileID: 0} 221 | m_PrefabAsset: {fileID: 0} 222 | serializedVersion: 6 223 | m_Component: 224 | - component: {fileID: 889356289} 225 | - component: {fileID: 889356288} 226 | - component: {fileID: 889356287} 227 | m_Layer: 0 228 | m_Name: Timeline 229 | m_TagString: Untagged 230 | m_Icon: {fileID: 0} 231 | m_NavMeshLayer: 0 232 | m_StaticEditorFlags: 0 233 | m_IsActive: 1 234 | --- !u!95 &889356287 235 | Animator: 236 | serializedVersion: 3 237 | m_ObjectHideFlags: 0 238 | m_CorrespondingSourceObject: {fileID: 0} 239 | m_PrefabInstance: {fileID: 0} 240 | m_PrefabAsset: {fileID: 0} 241 | m_GameObject: {fileID: 889356286} 242 | m_Enabled: 1 243 | m_Avatar: {fileID: 0} 244 | m_Controller: {fileID: 0} 245 | m_CullingMode: 0 246 | m_UpdateMode: 0 247 | m_ApplyRootMotion: 0 248 | m_LinearVelocityBlending: 0 249 | m_WarningMessage: 250 | m_HasTransformHierarchy: 1 251 | m_AllowConstantClipSamplingOptimization: 1 252 | m_KeepAnimatorControllerStateOnDisable: 0 253 | --- !u!320 &889356288 254 | PlayableDirector: 255 | m_ObjectHideFlags: 0 256 | m_CorrespondingSourceObject: {fileID: 0} 257 | m_PrefabInstance: {fileID: 0} 258 | m_PrefabAsset: {fileID: 0} 259 | m_GameObject: {fileID: 889356286} 260 | m_Enabled: 1 261 | serializedVersion: 3 262 | m_PlayableAsset: {fileID: 11400000, guid: 6ac1397648ed21e4494e4dd2c8dae697, type: 2} 263 | m_InitialState: 1 264 | m_WrapMode: 0 265 | m_DirectorUpdateMode: 1 266 | m_InitialTime: 0 267 | m_SceneBindings: 268 | - key: {fileID: -6858008350627344047, guid: 6ac1397648ed21e4494e4dd2c8dae697, type: 2} 269 | value: {fileID: 0} 270 | - key: {fileID: -765093816240913841, guid: 6ac1397648ed21e4494e4dd2c8dae697, type: 2} 271 | value: {fileID: 0} 272 | m_ExposedReferences: 273 | m_References: 274 | - 45bfd6c1ffc50b14f96eb015cd09a30f: {fileID: 1792475852} 275 | - 44bcfafd18f70314ea17ca24f8441567: {fileID: 1792475852} 276 | - f9a3251d9dd61004c98878f84ec7fc12: {fileID: 1792475852} 277 | - 2276f32c58f651948af9387d486fdc5d: {fileID: 1792475852} 278 | --- !u!4 &889356289 279 | Transform: 280 | m_ObjectHideFlags: 0 281 | m_CorrespondingSourceObject: {fileID: 0} 282 | m_PrefabInstance: {fileID: 0} 283 | m_PrefabAsset: {fileID: 0} 284 | m_GameObject: {fileID: 889356286} 285 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 286 | m_LocalPosition: {x: 0, y: 0, z: 0} 287 | m_LocalScale: {x: 1, y: 1, z: 1} 288 | m_Children: [] 289 | m_Father: {fileID: 0} 290 | m_RootOrder: 3 291 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 292 | --- !u!1 &1472096725 293 | GameObject: 294 | m_ObjectHideFlags: 0 295 | m_CorrespondingSourceObject: {fileID: 0} 296 | m_PrefabInstance: {fileID: 0} 297 | m_PrefabAsset: {fileID: 0} 298 | serializedVersion: 6 299 | m_Component: 300 | - component: {fileID: 1472096728} 301 | - component: {fileID: 1472096727} 302 | - component: {fileID: 1472096726} 303 | m_Layer: 0 304 | m_Name: Main Camera 305 | m_TagString: MainCamera 306 | m_Icon: {fileID: 0} 307 | m_NavMeshLayer: 0 308 | m_StaticEditorFlags: 0 309 | m_IsActive: 1 310 | --- !u!81 &1472096726 311 | AudioListener: 312 | m_ObjectHideFlags: 0 313 | m_CorrespondingSourceObject: {fileID: 0} 314 | m_PrefabInstance: {fileID: 0} 315 | m_PrefabAsset: {fileID: 0} 316 | m_GameObject: {fileID: 1472096725} 317 | m_Enabled: 1 318 | --- !u!20 &1472096727 319 | Camera: 320 | m_ObjectHideFlags: 0 321 | m_CorrespondingSourceObject: {fileID: 0} 322 | m_PrefabInstance: {fileID: 0} 323 | m_PrefabAsset: {fileID: 0} 324 | m_GameObject: {fileID: 1472096725} 325 | m_Enabled: 1 326 | serializedVersion: 2 327 | m_ClearFlags: 2 328 | m_BackGroundColor: {r: 0.05660379, g: 0.05660379, b: 0.05660379, a: 0} 329 | m_projectionMatrixMode: 1 330 | m_GateFitMode: 2 331 | m_FOVAxisMode: 0 332 | m_SensorSize: {x: 36, y: 24} 333 | m_LensShift: {x: 0, y: 0} 334 | m_FocalLength: 50 335 | m_NormalizedViewPortRect: 336 | serializedVersion: 2 337 | x: 0 338 | y: 0 339 | width: 1 340 | height: 1 341 | near clip plane: 0.3 342 | far clip plane: 1000 343 | field of view: 45.4 344 | orthographic: 1 345 | orthographic size: 2.2 346 | m_Depth: -1 347 | m_CullingMask: 348 | serializedVersion: 2 349 | m_Bits: 4294967295 350 | m_RenderingPath: -1 351 | m_TargetTexture: {fileID: 0} 352 | m_TargetDisplay: 0 353 | m_TargetEye: 3 354 | m_HDR: 1 355 | m_AllowMSAA: 1 356 | m_AllowDynamicResolution: 0 357 | m_ForceIntoRT: 0 358 | m_OcclusionCulling: 1 359 | m_StereoConvergence: 10 360 | m_StereoSeparation: 0.022 361 | --- !u!4 &1472096728 362 | Transform: 363 | m_ObjectHideFlags: 0 364 | m_CorrespondingSourceObject: {fileID: 0} 365 | m_PrefabInstance: {fileID: 0} 366 | m_PrefabAsset: {fileID: 0} 367 | m_GameObject: {fileID: 1472096725} 368 | m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} 369 | m_LocalPosition: {x: 0, y: 0.16, z: 3.6} 370 | m_LocalScale: {x: 1, y: 1, z: 1} 371 | m_Children: [] 372 | m_Father: {fileID: 0} 373 | m_RootOrder: 0 374 | m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} 375 | --- !u!1 &1792475852 376 | GameObject: 377 | m_ObjectHideFlags: 0 378 | m_CorrespondingSourceObject: {fileID: 0} 379 | m_PrefabInstance: {fileID: 0} 380 | m_PrefabAsset: {fileID: 0} 381 | serializedVersion: 6 382 | m_Component: 383 | - component: {fileID: 1792475855} 384 | - component: {fileID: 1792475854} 385 | - component: {fileID: 1792475853} 386 | m_Layer: 0 387 | m_Name: FacePlayer 388 | m_TagString: Untagged 389 | m_Icon: {fileID: 0} 390 | m_NavMeshLayer: 0 391 | m_StaticEditorFlags: 0 392 | m_IsActive: 1 393 | --- !u!114 &1792475853 394 | MonoBehaviour: 395 | m_ObjectHideFlags: 0 396 | m_CorrespondingSourceObject: {fileID: 0} 397 | m_PrefabInstance: {fileID: 0} 398 | m_PrefabAsset: {fileID: 0} 399 | m_GameObject: {fileID: 1792475852} 400 | m_Enabled: 1 401 | m_EditorHideFlags: 0 402 | m_Script: {fileID: 11500000, guid: a0ff958bf3b51274aac783962fc4d1a1, type: 3} 403 | m_Name: 404 | m_EditorClassIdentifier: 405 | facialControl: {fileID: 1792475854} 406 | asset: {fileID: 4900000, guid: 98c2a1e6646fc8148995b8ebcbf67527, type: 3} 407 | --- !u!114 &1792475854 408 | MonoBehaviour: 409 | m_ObjectHideFlags: 0 410 | m_CorrespondingSourceObject: {fileID: 0} 411 | m_PrefabInstance: {fileID: 0} 412 | m_PrefabAsset: {fileID: 0} 413 | m_GameObject: {fileID: 1792475852} 414 | m_Enabled: 1 415 | m_EditorHideFlags: 0 416 | m_Script: {fileID: 11500000, guid: 8439459483d6c8541b7e81b63c2c3d45, type: 3} 417 | m_Name: 418 | m_EditorClassIdentifier: 419 | skin: {fileID: 1869528874} 420 | blendShapeList: 421 | - None 422 | - blendShape2.eyeBlink_L 423 | - blendShape2.eyeLookDown_L 424 | - blendShape2.eyeLookIn_L 425 | - blendShape2.eyeLookOut_L 426 | - blendShape2.eyeLookUp_L 427 | - blendShape2.eyeSquint_L 428 | - blendShape2.eyeWide_L 429 | - blendShape2.eyeBlink_R 430 | - blendShape2.eyeLookDown_R 431 | - blendShape2.eyeLookIn_R 432 | - blendShape2.eyeLookOut_R 433 | - blendShape2.eyeLookUp_R 434 | - blendShape2.eyeWide_R 435 | - blendShape2.jawForward 436 | - blendShape2.jawLeft 437 | - blendShape2.jawOpen 438 | - blendShape2.jawRight 439 | - blendShape2.mouthPucker 440 | - blendShape2.mouthFunnel 441 | - blendShape2.mouthClose 442 | - blendShape2.mouthSmile_R 443 | - blendShape2.mouthLeft 444 | - blendShape2.mouthRight 445 | - blendShape2.mouthSmile_L 446 | - blendShape2.mouthFrown_R 447 | - blendShape2.mouthFrown_L 448 | - blendShape2.mouthDimple_L 449 | - blendShape2.mouthDimple_R 450 | - blendShape2.mouthStretch_R 451 | - blendShape2.mouthStretch_L 452 | - blendShape2.mouthRollUpper 453 | - blendShape2.mouthRollLower 454 | - blendShape2.mouthShrugUpper 455 | - blendShape2.mouthShrugLower 456 | - blendShape2.mouthPress_L 457 | - blendShape2.mouthPress_R 458 | - blendShape2.mouthLowerDown_L 459 | - blendShape2.mouthLowerDown_R 460 | - blendShape2.mouthUpperUp_R 461 | - blendShape2.mouthUpperUp_L 462 | - blendShape2.browDown_L 463 | - blendShape2.browDown_R 464 | - blendShape2.browInnerUp 465 | - blendShape2.browOuterUp_R 466 | - blendShape2.browOuterUp_L 467 | - blendShape2.cheekPuff 468 | - blendShape2.cheekSquint_L 469 | - blendShape2.cheekSquint_R 470 | - blendShape2.noseSneer_L 471 | - blendShape2.noseSneer_R 472 | indexList: 32000000310000002700000028000000260000002500000024000000230000001d0000001e00000017000000160000001c0000001b000000190000001a0000001300000012000000150000001800000014000000110000000f000000100000000e0000000c000000050000000b000000040000000a00000003000000090000000200000000000000060000000d000000070000000800000001000000300000002f0000002e0000002c0000002d0000002a000000290000002b0000000000000000000000000000000000000000000000 473 | strengthMultiplierList: 474 | - 1 475 | - 1 476 | - 1 477 | - 1 478 | - 1 479 | - 1 480 | - 1 481 | - 1 482 | - 1 483 | - 1 484 | - 1 485 | - 1 486 | - 1 487 | - 1 488 | - 1 489 | - 1 490 | - 1 491 | - 1 492 | - 1 493 | - 1 494 | - 1 495 | - 1 496 | - 1 497 | - 1 498 | - 1 499 | - 1 500 | - 1 501 | - 1 502 | - 1 503 | - 1 504 | - 1 505 | - 1 506 | - 1 507 | - 1 508 | - 1 509 | - 1 510 | - 1 511 | - 1 512 | - 1 513 | - 1 514 | - 1 515 | - 1 516 | - 1 517 | - 1 518 | - 1 519 | - 1 520 | - 1 521 | - 1 522 | - 1 523 | - 1 524 | - 1 525 | - 1 526 | --- !u!4 &1792475855 527 | Transform: 528 | m_ObjectHideFlags: 0 529 | m_CorrespondingSourceObject: {fileID: 0} 530 | m_PrefabInstance: {fileID: 0} 531 | m_PrefabAsset: {fileID: 0} 532 | m_GameObject: {fileID: 1792475852} 533 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 534 | m_LocalPosition: {x: 0, y: 0, z: 0} 535 | m_LocalScale: {x: 1, y: 1, z: 1} 536 | m_Children: [] 537 | m_Father: {fileID: 0} 538 | m_RootOrder: 2 539 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 540 | --- !u!1001 &1869528873 541 | PrefabInstance: 542 | m_ObjectHideFlags: 0 543 | serializedVersion: 2 544 | m_Modification: 545 | m_TransformParent: {fileID: 0} 546 | m_Modifications: 547 | - target: {fileID: -8679921383154817045, guid: 203593b6d31641148905039b663e43d9, 548 | type: 3} 549 | propertyPath: m_LocalPosition.x 550 | value: 0 551 | objectReference: {fileID: 0} 552 | - target: {fileID: -8679921383154817045, guid: 203593b6d31641148905039b663e43d9, 553 | type: 3} 554 | propertyPath: m_LocalPosition.y 555 | value: 0 556 | objectReference: {fileID: 0} 557 | - target: {fileID: -8679921383154817045, guid: 203593b6d31641148905039b663e43d9, 558 | type: 3} 559 | propertyPath: m_LocalPosition.z 560 | value: 0 561 | objectReference: {fileID: 0} 562 | - target: {fileID: -8679921383154817045, guid: 203593b6d31641148905039b663e43d9, 563 | type: 3} 564 | propertyPath: m_LocalRotation.x 565 | value: 0 566 | objectReference: {fileID: 0} 567 | - target: {fileID: -8679921383154817045, guid: 203593b6d31641148905039b663e43d9, 568 | type: 3} 569 | propertyPath: m_LocalRotation.y 570 | value: 0 571 | objectReference: {fileID: 0} 572 | - target: {fileID: -8679921383154817045, guid: 203593b6d31641148905039b663e43d9, 573 | type: 3} 574 | propertyPath: m_LocalRotation.z 575 | value: 0 576 | objectReference: {fileID: 0} 577 | - target: {fileID: -8679921383154817045, guid: 203593b6d31641148905039b663e43d9, 578 | type: 3} 579 | propertyPath: m_LocalRotation.w 580 | value: 1 581 | objectReference: {fileID: 0} 582 | - target: {fileID: -8679921383154817045, guid: 203593b6d31641148905039b663e43d9, 583 | type: 3} 584 | propertyPath: m_RootOrder 585 | value: 4 586 | objectReference: {fileID: 0} 587 | - target: {fileID: -8679921383154817045, guid: 203593b6d31641148905039b663e43d9, 588 | type: 3} 589 | propertyPath: m_LocalEulerAnglesHint.x 590 | value: 0 591 | objectReference: {fileID: 0} 592 | - target: {fileID: -8679921383154817045, guid: 203593b6d31641148905039b663e43d9, 593 | type: 3} 594 | propertyPath: m_LocalEulerAnglesHint.y 595 | value: 0 596 | objectReference: {fileID: 0} 597 | - target: {fileID: -8679921383154817045, guid: 203593b6d31641148905039b663e43d9, 598 | type: 3} 599 | propertyPath: m_LocalEulerAnglesHint.z 600 | value: 0 601 | objectReference: {fileID: 0} 602 | - target: {fileID: -8679921383154817045, guid: 203593b6d31641148905039b663e43d9, 603 | type: 3} 604 | propertyPath: m_LocalScale.x 605 | value: 100 606 | objectReference: {fileID: 0} 607 | - target: {fileID: -8679921383154817045, guid: 203593b6d31641148905039b663e43d9, 608 | type: 3} 609 | propertyPath: m_LocalScale.y 610 | value: 100 611 | objectReference: {fileID: 0} 612 | - target: {fileID: -8679921383154817045, guid: 203593b6d31641148905039b663e43d9, 613 | type: 3} 614 | propertyPath: m_LocalScale.z 615 | value: 100 616 | objectReference: {fileID: 0} 617 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 618 | type: 3} 619 | propertyPath: m_BlendShapeWeights.Array.size 620 | value: 50 621 | objectReference: {fileID: 0} 622 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 623 | type: 3} 624 | propertyPath: m_AABB.m_Center.y 625 | value: -0.0015557217 626 | objectReference: {fileID: 0} 627 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 628 | type: 3} 629 | propertyPath: m_AABB.m_Extent.x 630 | value: 0.0113363005 631 | objectReference: {fileID: 0} 632 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 633 | type: 3} 634 | propertyPath: m_AABB.m_Extent.y 635 | value: 0.013194084 636 | objectReference: {fileID: 0} 637 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 638 | type: 3} 639 | propertyPath: m_AABB.m_Extent.z 640 | value: 0.0133940475 641 | objectReference: {fileID: 0} 642 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 643 | type: 3} 644 | propertyPath: m_DirtyAABB 645 | value: 0 646 | objectReference: {fileID: 0} 647 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 648 | type: 3} 649 | propertyPath: m_BlendShapeWeights.Array.data[1] 650 | value: 0 651 | objectReference: {fileID: 0} 652 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 653 | type: 3} 654 | propertyPath: m_BlendShapeWeights.Array.data[2] 655 | value: 4.668231 656 | objectReference: {fileID: 0} 657 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 658 | type: 3} 659 | propertyPath: m_BlendShapeWeights.Array.data[5] 660 | value: 11.70104 661 | objectReference: {fileID: 0} 662 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 663 | type: 3} 664 | propertyPath: m_BlendShapeWeights.Array.data[6] 665 | value: 1.3247651 666 | objectReference: {fileID: 0} 667 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 668 | type: 3} 669 | propertyPath: m_BlendShapeWeights.Array.data[7] 670 | value: 0.30870324 671 | objectReference: {fileID: 0} 672 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 673 | type: 3} 674 | propertyPath: m_BlendShapeWeights.Array.data[8] 675 | value: 0 676 | objectReference: {fileID: 0} 677 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 678 | type: 3} 679 | propertyPath: m_BlendShapeWeights.Array.data[9] 680 | value: 6.4812 681 | objectReference: {fileID: 0} 682 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 683 | type: 3} 684 | propertyPath: m_BlendShapeWeights.Array.data[12] 685 | value: 1.3370571 686 | objectReference: {fileID: 0} 687 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 688 | type: 3} 689 | propertyPath: m_BlendShapeWeights.Array.data[13] 690 | value: 2.7543197 691 | objectReference: {fileID: 0} 692 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 693 | type: 3} 694 | propertyPath: m_BlendShapeWeights.Array.data[14] 695 | value: 0.00000010384258 696 | objectReference: {fileID: 0} 697 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 698 | type: 3} 699 | propertyPath: m_BlendShapeWeights.Array.data[15] 700 | value: 3.3539004 701 | objectReference: {fileID: 0} 702 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 703 | type: 3} 704 | propertyPath: m_BlendShapeWeights.Array.data[16] 705 | value: 0.86925083 706 | objectReference: {fileID: 0} 707 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 708 | type: 3} 709 | propertyPath: m_BlendShapeWeights.Array.data[17] 710 | value: 5.932465 711 | objectReference: {fileID: 0} 712 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 713 | type: 3} 714 | propertyPath: m_BlendShapeWeights.Array.data[18] 715 | value: 5.4026594 716 | objectReference: {fileID: 0} 717 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 718 | type: 3} 719 | propertyPath: m_BlendShapeWeights.Array.data[19] 720 | value: 2.884279 721 | objectReference: {fileID: 0} 722 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 723 | type: 3} 724 | propertyPath: m_BlendShapeWeights.Array.data[20] 725 | value: 0.32277584 726 | objectReference: {fileID: 0} 727 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 728 | type: 3} 729 | propertyPath: m_BlendShapeWeights.Array.data[21] 730 | value: 0.62867975 731 | objectReference: {fileID: 0} 732 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 733 | type: 3} 734 | propertyPath: m_BlendShapeWeights.Array.data[22] 735 | value: 0.00000045174798 736 | objectReference: {fileID: 0} 737 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 738 | type: 3} 739 | propertyPath: m_BlendShapeWeights.Array.data[23] 740 | value: 2.0148506 741 | objectReference: {fileID: 0} 742 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 743 | type: 3} 744 | propertyPath: m_BlendShapeWeights.Array.data[24] 745 | value: 0.149765 746 | objectReference: {fileID: 0} 747 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 748 | type: 3} 749 | propertyPath: m_BlendShapeWeights.Array.data[25] 750 | value: 0.000020153506 751 | objectReference: {fileID: 0} 752 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 753 | type: 3} 754 | propertyPath: m_BlendShapeWeights.Array.data[26] 755 | value: 8.749941 756 | objectReference: {fileID: 0} 757 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 758 | type: 3} 759 | propertyPath: m_BlendShapeWeights.Array.data[27] 760 | value: 8.180113 761 | objectReference: {fileID: 0} 762 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 763 | type: 3} 764 | propertyPath: m_BlendShapeWeights.Array.data[28] 765 | value: 21.932816 766 | objectReference: {fileID: 0} 767 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 768 | type: 3} 769 | propertyPath: m_BlendShapeWeights.Array.data[29] 770 | value: 19.71526 771 | objectReference: {fileID: 0} 772 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 773 | type: 3} 774 | propertyPath: m_BlendShapeWeights.Array.data[34] 775 | value: 5.2985096 776 | objectReference: {fileID: 0} 777 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 778 | type: 3} 779 | propertyPath: m_BlendShapeWeights.Array.data[35] 780 | value: 4.6794405 781 | objectReference: {fileID: 0} 782 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 783 | type: 3} 784 | propertyPath: m_BlendShapeWeights.Array.data[36] 785 | value: 4.129877 786 | objectReference: {fileID: 0} 787 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 788 | type: 3} 789 | propertyPath: m_BlendShapeWeights.Array.data[37] 790 | value: 4.8231897 791 | objectReference: {fileID: 0} 792 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 793 | type: 3} 794 | propertyPath: m_BlendShapeWeights.Array.data[38] 795 | value: 2.3383868 796 | objectReference: {fileID: 0} 797 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 798 | type: 3} 799 | propertyPath: m_BlendShapeWeights.Array.data[39] 800 | value: 2.4283462 801 | objectReference: {fileID: 0} 802 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 803 | type: 3} 804 | propertyPath: m_BlendShapeWeights.Array.data[40] 805 | value: 0.05879717 806 | objectReference: {fileID: 0} 807 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 808 | type: 3} 809 | propertyPath: m_BlendShapeWeights.Array.data[41] 810 | value: 0.058576558 811 | objectReference: {fileID: 0} 812 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 813 | type: 3} 814 | propertyPath: m_BlendShapeWeights.Array.data[42] 815 | value: 24.706741 816 | objectReference: {fileID: 0} 817 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 818 | type: 3} 819 | propertyPath: m_BlendShapeWeights.Array.data[43] 820 | value: 3.2518222 821 | objectReference: {fileID: 0} 822 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 823 | type: 3} 824 | propertyPath: m_BlendShapeWeights.Array.data[44] 825 | value: 3.1539857 826 | objectReference: {fileID: 0} 827 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 828 | type: 3} 829 | propertyPath: m_BlendShapeWeights.Array.data[45] 830 | value: 5.250906 831 | objectReference: {fileID: 0} 832 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 833 | type: 3} 834 | propertyPath: m_BlendShapeWeights.Array.data[46] 835 | value: 4.693918 836 | objectReference: {fileID: 0} 837 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 838 | type: 3} 839 | propertyPath: m_BlendShapeWeights.Array.data[47] 840 | value: 4.5603724 841 | objectReference: {fileID: 0} 842 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 843 | type: 3} 844 | propertyPath: m_BlendShapeWeights.Array.data[48] 845 | value: 11.200872 846 | objectReference: {fileID: 0} 847 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 848 | type: 3} 849 | propertyPath: m_BlendShapeWeights.Array.data[49] 850 | value: 11.159108 851 | objectReference: {fileID: 0} 852 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 853 | type: 3} 854 | propertyPath: m_BlendShapeWeights.Array.data[4] 855 | value: 11.823413 856 | objectReference: {fileID: 0} 857 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 858 | type: 3} 859 | propertyPath: m_BlendShapeWeights.Array.data[10] 860 | value: 0 861 | objectReference: {fileID: 0} 862 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 863 | type: 3} 864 | propertyPath: m_BlendShapeWeights.Array.data[11] 865 | value: 11.762678 866 | objectReference: {fileID: 0} 867 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 868 | type: 3} 869 | propertyPath: m_BlendShapeWeights.Array.data[3] 870 | value: 0 871 | objectReference: {fileID: 0} 872 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 873 | type: 3} 874 | propertyPath: m_BlendShapeWeights.Array.data[0] 875 | value: 0.31114736 876 | objectReference: {fileID: 0} 877 | - target: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 878 | type: 3} 879 | propertyPath: m_Materials.Array.data[0] 880 | value: 881 | objectReference: {fileID: 2100000, guid: 0eafc0c8e166e4cd2b0f64b71fda0c45, type: 2} 882 | - target: {fileID: 919132149155446097, guid: 203593b6d31641148905039b663e43d9, 883 | type: 3} 884 | propertyPath: m_Name 885 | value: sloth_head_blendshapes5 886 | objectReference: {fileID: 0} 887 | m_RemovedComponents: [] 888 | m_SourcePrefab: {fileID: 100100000, guid: 203593b6d31641148905039b663e43d9, type: 3} 889 | --- !u!137 &1869528874 stripped 890 | SkinnedMeshRenderer: 891 | m_CorrespondingSourceObject: {fileID: -4275627791819746688, guid: 203593b6d31641148905039b663e43d9, 892 | type: 3} 893 | m_PrefabInstance: {fileID: 1869528873} 894 | m_PrefabAsset: {fileID: 0} 895 | --------------------------------------------------------------------------------