diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..9d0abff --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,17 @@ +name: Publish to NPM +on: + release: + types: [published] + workflow_dispatch: +jobs: + npm: + runs-on: ubuntu-latest + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + registry-url: 'https://registry.npmjs.org' + - run: npm publish --access public + working-directory: Packages/ai.natml.vision.blazepose-detector \ No newline at end of file diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index b1a1323..671c290 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -22,7 +22,7 @@ full false Temp\bin\Debug\ - DEBUG;TRACE;UNITY_2021_3_4;UNITY_2021_3;UNITY_2021;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;UNITY_2021_1_OR_NEWER;UNITY_2021_2_OR_NEWER;UNITY_2021_3_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;USE_SEARCH_TABLE;USE_SEARCH_MODULE;USE_PROPERTY_DATABASE;USE_SEARCH_EXTENSION_API;SCENE_TEMPLATE_MODULE;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_VIRTUALTEXTURING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_NATIVE_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;ENABLE_MANAGED_UNITYTLS;INCLUDE_DYNAMIC_GI;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;ENABLE_ACCELERATOR_CLIENT_DEBUGGING;PLATFORM_STANDALONE;TEXTCORE_1_0_OR_NEWER;PLATFORM_STANDALONE_OSX;UNITY_STANDALONE_OSX;UNITY_STANDALONE;ENABLE_GAMECENTER;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_SPATIALTRACKING;PLATFORM_UPDATES_TIME_OUTSIDE_OF_PLAYER_LOOP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_STANDARD_2_0;NET_STANDARD;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_OSX;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;UNITY_PRO_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_LEGACY_INPUT_MANAGER;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER + DEBUG;TRACE;UNITY_2021_3_4;UNITY_2021_3;UNITY_2021;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_2020_1_OR_NEWER;UNITY_2020_2_OR_NEWER;UNITY_2020_3_OR_NEWER;UNITY_2021_1_OR_NEWER;UNITY_2021_2_OR_NEWER;UNITY_2021_3_OR_NEWER;UNITY_INCLUDE_TESTS;USE_SEARCH_ENGINE_API;USE_SEARCH_TABLE;USE_SEARCH_MODULE;USE_PROPERTY_DATABASE;USE_SEARCH_EXTENSION_API;SCENE_TEMPLATE_MODULE;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;ENABLE_ENGINE_CODE_STRIPPING;ENABLE_MANAGED_UNITYTLS;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;ENABLE_ACCELERATOR_CLIENT_DEBUGGING;PLATFORM_WEBGL;TEXTCORE_1_0_OR_NEWER;UNITY_WEBGL;UNITY_WEBGL_API;UNITY_DISABLE_WEB_VERIFICATION;UNITY_GFX_USE_PLATFORM_VSYNC;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_SPATIALTRACKING;ENABLE_MONO;NET_STANDARD_2_0;NET_STANDARD;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_OSX;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;UNITY_PRO_LICENSE;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_LEGACY_INPUT_MANAGER;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER prompt 4 0169 @@ -44,9 +44,6 @@ /Applications/Unity/Hub/Editor/2021.3.4f1/Unity.app/Contents/Managed/UnityEngine/UnityEngine.AIModule.dll - - /Applications/Unity/Hub/Editor/2021.3.4f1/Unity.app/Contents/Managed/UnityEngine/UnityEngine.ARModule.dll - /Applications/Unity/Hub/Editor/2021.3.4f1/Unity.app/Contents/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll @@ -65,12 +62,6 @@ /Applications/Unity/Hub/Editor/2021.3.4f1/Unity.app/Contents/Managed/UnityEngine/UnityEngine.ClothModule.dll - - /Applications/Unity/Hub/Editor/2021.3.4f1/Unity.app/Contents/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll - - - /Applications/Unity/Hub/Editor/2021.3.4f1/Unity.app/Contents/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll - /Applications/Unity/Hub/Editor/2021.3.4f1/Unity.app/Contents/Managed/UnityEngine/UnityEngine.CoreModule.dll @@ -227,8 +218,8 @@ /Applications/Unity/Hub/Editor/2021.3.4f1/Unity.app/Contents/Managed/UnityEngine/UnityEngine.VideoModule.dll - - /Applications/Unity/Hub/Editor/2021.3.4f1/Unity.app/Contents/Managed/UnityEngine/UnityEngine.VirtualTexturingModule.dll + + /Applications/Unity/Hub/Editor/2021.3.4f1/PlaybackEngines/WebGLSupport/Managed/UnityEngine.WebGLModule.dll /Applications/Unity/Hub/Editor/2021.3.4f1/Unity.app/Contents/Managed/UnityEngine/UnityEngine.WindModule.dll diff --git a/Assets/BlazePoseDetectorSample.cs b/Assets/BlazePoseDetectorSample.cs index 384c8cf..17ac60f 100644 --- a/Assets/BlazePoseDetectorSample.cs +++ b/Assets/BlazePoseDetectorSample.cs @@ -1,5 +1,5 @@ /* -* BlazePose +* BlazePose Detector * Copyright (c) 2022 NatML Inc. All Rights Reserved. */ @@ -49,15 +49,14 @@ void Update () { // Check that the detector has been loaded if (predictor == null) return; - // Create input feature - var previewTexture = previewTextureOutput.texture; - var imageFeature = new MLImageFeature(previewTexture.GetRawTextureData(), previewTexture.width, previewTexture.height); + // Create image feature + var imageFeature = new MLImageFeature(previewTextureOutput.texture); (imageFeature.mean, imageFeature.std) = modelData.normalization; imageFeature.aspectMode = modelData.aspectMode; - // Predict - var poses = predictor.Predict(imageFeature); - // Visualize - visualizer.Render(poses); + // Detect people in the image + var detections = predictor.Predict(imageFeature); + // Visualize detections + visualizer.Render(detections); } } } \ No newline at end of file diff --git a/Assets/DetectionVisualizer.cs b/Assets/DetectionVisualizer.cs index 7fbaed8..2f3f08e 100644 --- a/Assets/DetectionVisualizer.cs +++ b/Assets/DetectionVisualizer.cs @@ -1,5 +1,5 @@ /* -* BlazePose +* BlazePose Detector * Copyright (c) 2022 NatML Inc. All Rights Reserved. */ @@ -24,6 +24,9 @@ public sealed class DetectionVisualizer : MonoBehaviour { #region --Client API-- + /// + /// Detection source image. + /// public Texture2D image { get => rawImage.texture as Texture2D; set { diff --git a/Assets/StreamingAssets.meta b/Assets/StreamingAssets.meta new file mode 100644 index 0000000..918b7fa --- /dev/null +++ b/Assets/StreamingAssets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 46d3a962a6bed4890a35b8295e25499c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/ai.natml.vision.blazepose-detector/Changelog.md b/Packages/ai.natml.vision.blazepose.detector/Changelog.md similarity index 100% rename from Packages/ai.natml.vision.blazepose-detector/Changelog.md rename to Packages/ai.natml.vision.blazepose.detector/Changelog.md diff --git a/Packages/ai.natml.vision.blazepose-detector/Changelog.md.meta b/Packages/ai.natml.vision.blazepose.detector/Changelog.md.meta similarity index 100% rename from Packages/ai.natml.vision.blazepose-detector/Changelog.md.meta rename to Packages/ai.natml.vision.blazepose.detector/Changelog.md.meta diff --git a/Packages/ai.natml.vision.blazepose-detector/LICENSE b/Packages/ai.natml.vision.blazepose.detector/LICENSE similarity index 100% rename from Packages/ai.natml.vision.blazepose-detector/LICENSE rename to Packages/ai.natml.vision.blazepose.detector/LICENSE diff --git a/Packages/ai.natml.vision.blazepose-detector/LICENSE.meta b/Packages/ai.natml.vision.blazepose.detector/LICENSE.meta similarity index 100% rename from Packages/ai.natml.vision.blazepose-detector/LICENSE.meta rename to Packages/ai.natml.vision.blazepose.detector/LICENSE.meta diff --git a/Packages/ai.natml.vision.blazepose-detector/README.md b/Packages/ai.natml.vision.blazepose.detector/README.md similarity index 99% rename from Packages/ai.natml.vision.blazepose-detector/README.md rename to Packages/ai.natml.vision.blazepose.detector/README.md index bff32be..ed65b22 100644 --- a/Packages/ai.natml.vision.blazepose-detector/README.md +++ b/Packages/ai.natml.vision.blazepose.detector/README.md @@ -44,12 +44,12 @@ BlazePoseDetector.Detection[] faces = predictor.Predict(imageFeature); ___ ## Requirements -- Unity 2020.3+ +- Unity 2021.2+ ## Quick Tips +- Join the [NatML community on Discord](https://hub.natml.ai/community). - Discover more ML models on [NatML Hub](https://hub.natml.ai). - See the [NatML documentation](https://docs.natml.ai/unity). -- Join the [NatML community on Discord](https://hub.natml.ai/community). - Discuss [NatML on Unity Forums](https://forum.unity.com/threads/open-beta-natml-machine-learning-runtime.1109339/). - Contact us at [hi@natml.ai](mailto:hi@natml.ai). diff --git a/Packages/ai.natml.vision.blazepose-detector/README.md.meta b/Packages/ai.natml.vision.blazepose.detector/README.md.meta similarity index 100% rename from Packages/ai.natml.vision.blazepose-detector/README.md.meta rename to Packages/ai.natml.vision.blazepose.detector/README.md.meta diff --git a/Packages/ai.natml.vision.blazepose-detector/Runtime.meta b/Packages/ai.natml.vision.blazepose.detector/Runtime.meta similarity index 100% rename from Packages/ai.natml.vision.blazepose-detector/Runtime.meta rename to Packages/ai.natml.vision.blazepose.detector/Runtime.meta diff --git a/Packages/ai.natml.vision.blazepose-detector/Runtime/BlazePoseDetector.cs b/Packages/ai.natml.vision.blazepose.detector/Runtime/BlazePoseDetector.cs similarity index 93% rename from Packages/ai.natml.vision.blazepose-detector/Runtime/BlazePoseDetector.cs rename to Packages/ai.natml.vision.blazepose.detector/Runtime/BlazePoseDetector.cs index 16ea60f..41d7e9c 100644 --- a/Packages/ai.natml.vision.blazepose-detector/Runtime/BlazePoseDetector.cs +++ b/Packages/ai.natml.vision.blazepose.detector/Runtime/BlazePoseDetector.cs @@ -31,7 +31,7 @@ public BlazePoseDetector (MLModel model, float minScore = 0.4f, float maxIoU = 0 this.maxIoU = maxIoU; this.anchors = GenerateAnchors( model.inputs[0] as MLImageType, - new [] { 8, 16, 16, 16 }, //new [] { 8, 16, 32, 32, 32 }, + new [] { 8, 16, 16, 16 }, 0.1484375f, 0.75f ); @@ -112,20 +112,14 @@ public Detection[] Predict (params MLFeature[] inputs) { private readonly MLEdgeModel model; private readonly float minScore; private readonly float maxIoU; + private readonly Vector2[] anchors; private readonly List candidateBoxes; private readonly List candidateScores; private readonly List candidatePoints; - private readonly Vector2[] anchors; void IDisposable.Dispose () { } // Not used - private static Vector2[] GenerateAnchors ( - MLImageType type, - int[] strides, - float minScale, - float maxScale, - float aspect = 1f - ) { + private static Vector2[] GenerateAnchors (MLImageType type, int[] strides, float minScale, float maxScale, float aspect = 1f) { var result = new List(); var layerId = 0; while (layerId < strides.Length) { @@ -154,13 +148,8 @@ private static Vector2[] GenerateAnchors ( } return result.ToArray(); } - - private static float CalculateScale ( - float minScale, - float maxScale, - int strideIdx, - int strideCount - ) { + + private static float CalculateScale (float minScale, float maxScale, int strideIdx, int strideCount) { if (strideCount == 1) return (minScale + maxScale) * 0.5f; else diff --git a/Packages/ai.natml.vision.blazepose-detector/Runtime/BlazePoseDetector.cs.meta b/Packages/ai.natml.vision.blazepose.detector/Runtime/BlazePoseDetector.cs.meta similarity index 100% rename from Packages/ai.natml.vision.blazepose-detector/Runtime/BlazePoseDetector.cs.meta rename to Packages/ai.natml.vision.blazepose.detector/Runtime/BlazePoseDetector.cs.meta diff --git a/Packages/ai.natml.vision.blazepose-detector/Runtime/Pose.cs b/Packages/ai.natml.vision.blazepose.detector/Runtime/Detection.cs similarity index 100% rename from Packages/ai.natml.vision.blazepose-detector/Runtime/Pose.cs rename to Packages/ai.natml.vision.blazepose.detector/Runtime/Detection.cs diff --git a/Packages/ai.natml.vision.blazepose-detector/Runtime/Pose.cs.meta b/Packages/ai.natml.vision.blazepose.detector/Runtime/Detection.cs.meta similarity index 83% rename from Packages/ai.natml.vision.blazepose-detector/Runtime/Pose.cs.meta rename to Packages/ai.natml.vision.blazepose.detector/Runtime/Detection.cs.meta index 7e9a8a8..118eed4 100644 --- a/Packages/ai.natml.vision.blazepose-detector/Runtime/Pose.cs.meta +++ b/Packages/ai.natml.vision.blazepose.detector/Runtime/Detection.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 73e1edb7c62564dc7bdb53e5072f0d6e +guid: 3d8820b024a424079b010b780274c79d MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Packages/ai.natml.vision.blazepose-detector/Runtime/NatML.Vision.BlazePose.Detector.asmdef b/Packages/ai.natml.vision.blazepose.detector/Runtime/NatML.Vision.BlazePose.Detector.asmdef similarity index 100% rename from Packages/ai.natml.vision.blazepose-detector/Runtime/NatML.Vision.BlazePose.Detector.asmdef rename to Packages/ai.natml.vision.blazepose.detector/Runtime/NatML.Vision.BlazePose.Detector.asmdef diff --git a/Packages/ai.natml.vision.blazepose-detector/Runtime/NatML.Vision.BlazePose.Detector.asmdef.meta b/Packages/ai.natml.vision.blazepose.detector/Runtime/NatML.Vision.BlazePose.Detector.asmdef.meta similarity index 100% rename from Packages/ai.natml.vision.blazepose-detector/Runtime/NatML.Vision.BlazePose.Detector.asmdef.meta rename to Packages/ai.natml.vision.blazepose.detector/Runtime/NatML.Vision.BlazePose.Detector.asmdef.meta diff --git a/Packages/ai.natml.vision.blazepose-detector/package.json b/Packages/ai.natml.vision.blazepose.detector/package.json similarity index 91% rename from Packages/ai.natml.vision.blazepose-detector/package.json rename to Packages/ai.natml.vision.blazepose.detector/package.json index 6d7a6e6..d7026fa 100644 --- a/Packages/ai.natml.vision.blazepose-detector/package.json +++ b/Packages/ai.natml.vision.blazepose.detector/package.json @@ -3,9 +3,9 @@ "version": "1.0.2", "displayName": "BlazePose Detector", "description": "Pose detection with MediaPipe BlazePose.", - "unity": "2020.3", + "unity": "2021.2", "dependencies": { - "ai.natml.natml": "1.0.17" + "ai.natml.natml": "1.0.18" }, "keywords": [ "natml", diff --git a/Packages/ai.natml.vision.blazepose-detector/package.json.meta b/Packages/ai.natml.vision.blazepose.detector/package.json.meta similarity index 100% rename from Packages/ai.natml.vision.blazepose-detector/package.json.meta rename to Packages/ai.natml.vision.blazepose.detector/package.json.meta diff --git a/Packages/manifest.json b/Packages/manifest.json index 31a5fdd..9bdc94f 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -7,7 +7,7 @@ } ], "dependencies": { - "ai.natml.natdevice": "1.2.3", + "ai.natml.natdevice": "1.2.5", "com.unity.collab-proxy": "1.15.17", "com.unity.feature.development": "1.0.1", "com.unity.ide.rider": "3.0.14", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 669b205..13fb5ca 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -2,22 +2,22 @@ "dependencies": { "ai.natml.hub": { "version": "1.0.12", - "depth": 2, + "depth": 1, "source": "registry", "dependencies": {}, "url": "https://registry.npmjs.com" }, "ai.natml.natdevice": { - "version": "1.2.3", + "version": "1.2.5", "depth": 0, "source": "registry", "dependencies": { - "ai.natml.hub": "1.0.10" + "ai.natml.hub": "1.0.12" }, "url": "https://registry.npmjs.com" }, "ai.natml.natml": { - "version": "1.0.17", + "version": "1.0.18", "depth": 1, "source": "registry", "dependencies": { @@ -26,11 +26,11 @@ "url": "https://registry.npmjs.com" }, "ai.natml.vision.blazepose.detector": { - "version": "file:ai.natml.vision.blazepose-detector", + "version": "file:ai.natml.vision.blazepose.detector", "depth": 0, "source": "embedded", "dependencies": { - "ai.natml.natml": "1.0.17" + "ai.natml.natml": "1.0.18" } }, "com.unity.collab-proxy": { diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index c3e22cb..1dfc27a 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -137,7 +137,8 @@ PlayerSettings: 16:9: 1 Others: 1 bundleVersion: 0.1 - preloadedAssets: [] + preloadedAssets: + - {fileID: 0} metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1 @@ -791,12 +792,12 @@ PlayerSettings: webGLNameFilesAsHashes: 0 webGLDataCaching: 1 webGLDebugSymbols: 0 - webGLEmscriptenArgs: + webGLEmscriptenArgs: ' --bind ' webGLModulesDirectory: webGLTemplate: APPLICATION:Default webGLAnalyzeBuildSize: 0 webGLUseEmbeddedResources: 0 - webGLCompressionFormat: 1 + webGLCompressionFormat: 2 webGLWasmArithmeticExceptions: 0 webGLLinkerTarget: 1 webGLThreadsSupport: 0 diff --git a/README.md b/README.md index 4056a91..a3f24c5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,37 @@ -# BlazePose Detector Sample +# BlazePose Detector ![demo](demo.gif) -*INCOMPLETE* \ No newline at end of file +Pose detection from Google MediaPipe. + +## Running the Sample +Retrieve your access key from [NatML Hub](https://hub.natml.ai/profile) and add it to your Project Settings. Note that running the sample code requires an active [NatML Cloud](https://www.natml.ai/pricing) subscription: + +![project settings](https://github.com/natmlx/NatDevice/raw/main/.media/key.png) + +## Using the Predictor in a Different Project +[See the predictor README for more details](Packages/ai.natml.vision.blazepose.detector/README.md). + +## Requirements +- Unity 2021.2+ + +## Supported Platforms +- Android API level 24+ +- iOS 13+ +- macOS 10.15+ (Apple Silicon and Intel) +- Windows 10+ (64-bit only) +- WebGL: + - Chrome 91+ + - Firefox 90+ + +## Resources +- Join the [NatML community on Discord](https://hub.natml.ai/community). +- See the [NatML documentation](https://docs.natml.ai/unity). +- See the [NatDevice documentation](https://docs.natml.ai/natdevice). +- Check out [NatML on GitHub](https://github.com/natmlx). +- Read the [NatML blog](https://blog.natml.ai/). +- Discuss [NatML on Unity Forums](https://forum.unity.com/threads/open-beta-natml-machine-learning-runtime.1109339/). +- Discuss [NatDevice on Unity Forums](https://forum.unity.com/threads/natdevice-media-device-api.374690/). +- Contact us at [hi@natml.ai](mailto:hi@natml.ai). + +Thank you very much! \ No newline at end of file diff --git a/UserSettings/Layouts/CurrentMaximizeLayout.dwlt b/UserSettings/Layouts/CurrentMaximizeLayout.dwlt index 048c8dc..96e5f05 100644 --- a/UserSettings/Layouts/CurrentMaximizeLayout.dwlt +++ b/UserSettings/Layouts/CurrentMaximizeLayout.dwlt @@ -21,12 +21,12 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 30 - width: 1440 - height: 745 + width: 1366 + height: 974 m_MinSize: {x: 400, y: 200} m_MaxSize: {x: 32384, y: 16192} vertical: 0 - controlID: 17 + controlID: 315 --- !u!114 &2 MonoBehaviour: m_ObjectHideFlags: 52 @@ -43,20 +43,20 @@ MonoBehaviour: m_MaxSize: {x: 4000, y: 4000} m_TitleContent: m_Text: Project Settings - m_Image: {fileID: -5712115415447495865, guid: 0000000000000000d000000000000000, type: 0} + m_Image: {fileID: 866346219090771560, guid: 0000000000000000d000000000000000, type: 0} m_Tooltip: m_Pos: serializedVersion: 2 - x: 1110.5 - y: 83 - width: 328.5 - height: 724 + x: 2493.5 + y: 30 + width: 311.5 + height: 953 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default m_SaveData: [] m_PosLeft: {x: 0, y: 0} - m_PosRight: {x: 0, y: 0} + m_PosRight: {x: 0, y: 117} m_Scope: 1 m_SplitterFlex: 0.2 m_SearchText: @@ -99,10 +99,10 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 410.5 - height: 745 - m_MinSize: {x: 201, y: 221} - m_MaxSize: {x: 4001, y: 4021} + width: 389.5 + height: 974 + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} m_ActualView: {fileID: 4} m_Panes: - {fileID: 4} @@ -124,14 +124,14 @@ MonoBehaviour: m_MaxSize: {x: 4000, y: 4000} m_TitleContent: m_Text: Scene - m_Image: {fileID: 2593428753322112591, guid: 0000000000000000d000000000000000, type: 0} + m_Image: {fileID: 8634526014445323508, guid: 0000000000000000d000000000000000, type: 0} m_Tooltip: m_Pos: serializedVersion: 2 - x: 0 - y: 83 - width: 409.5 - height: 724 + x: 1440 + y: 30 + width: 388.5 + height: 953 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default @@ -386,9 +386,9 @@ MonoBehaviour: speed: 2 m_Value: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} m_Size: - m_Target: 10 + m_Target: 10.015 speed: 2 - m_Value: 10 + m_Value: 10.015 m_Ortho: m_Target: 0 speed: 2 @@ -428,12 +428,12 @@ MonoBehaviour: m_Children: [] m_Position: serializedVersion: 2 - x: 410.5 + x: 389.5 y: 0 - width: 391.5 - height: 745 - m_MinSize: {x: 202, y: 221} - m_MaxSize: {x: 4002, y: 4021} + width: 371.5 + height: 974 + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} m_ActualView: {fileID: 6} m_Panes: - {fileID: 6} @@ -455,14 +455,14 @@ MonoBehaviour: m_MaxSize: {x: 4000, y: 4000} m_TitleContent: m_Text: Game - m_Image: {fileID: -6423792434712278376, guid: 0000000000000000d000000000000000, type: 0} + m_Image: {fileID: 4621777727084837110, guid: 0000000000000000d000000000000000, type: 0} m_Tooltip: m_Pos: serializedVersion: 2 - x: 410.5 - y: 83 - width: 389.5 - height: 724 + x: 1829.5 + y: 30 + width: 369.5 + height: 953 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default @@ -473,7 +473,7 @@ MonoBehaviour: m_ShowGizmos: 0 m_TargetDisplay: 0 m_ClearColor: {r: 0, g: 0, b: 0, a: 0} - m_TargetSize: {x: 779, y: 1406} + m_TargetSize: {x: 739, y: 1864} m_TextureFilterMode: 0 m_TextureHideFlags: 61 m_RenderIMGUI: 1 @@ -488,10 +488,10 @@ MonoBehaviour: m_VRangeLocked: 0 hZoomLockedByDefault: 0 vZoomLockedByDefault: 0 - m_HBaseRangeMin: -194.75 - m_HBaseRangeMax: 194.75 - m_VBaseRangeMin: -351.5 - m_VBaseRangeMax: 351.5 + m_HBaseRangeMin: -184.75 + m_HBaseRangeMax: 184.75 + m_VBaseRangeMin: -466 + m_VBaseRangeMax: 466 m_HAllowExceedBaseRangeMin: 1 m_HAllowExceedBaseRangeMax: 1 m_VAllowExceedBaseRangeMin: 1 @@ -509,23 +509,23 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 21 - width: 389.5 - height: 703 + width: 369.5 + height: 932 m_Scale: {x: 1, y: 1} - m_Translation: {x: 194.75, y: 351.5} + m_Translation: {x: 184.75, y: 466} m_MarginLeft: 0 m_MarginRight: 0 m_MarginTop: 0 m_MarginBottom: 0 m_LastShownAreaInsideMargins: serializedVersion: 2 - x: -194.75 - y: -351.5 - width: 389.5 - height: 703 + x: -184.75 + y: -466 + width: 369.5 + height: 932 m_MinimalGUI: 1 m_defaultScale: 1 - m_LastWindowPixelSize: {x: 779, y: 1448} + m_LastWindowPixelSize: {x: 739, y: 1906} m_ClearInEditMode: 1 m_NoCameraWarning: 1 m_LowResolutionForAspectRatios: 00000000000000000000 @@ -548,14 +548,14 @@ MonoBehaviour: - {fileID: 11} m_Position: serializedVersion: 2 - x: 802 + x: 761 y: 0 - width: 308.5 - height: 745 + width: 292.5 + height: 974 m_MinSize: {x: 100, y: 200} m_MaxSize: {x: 8096, y: 16192} vertical: 1 - controlID: 58 + controlID: 341 --- !u!114 &8 MonoBehaviour: m_ObjectHideFlags: 52 @@ -573,10 +573,10 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 308.5 - height: 328 - m_MinSize: {x: 202, y: 221} - m_MaxSize: {x: 4002, y: 4021} + width: 292.5 + height: 429 + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} m_ActualView: {fileID: 9} m_Panes: - {fileID: 9} @@ -599,14 +599,14 @@ MonoBehaviour: m_MaxSize: {x: 4000, y: 4000} m_TitleContent: m_Text: Hierarchy - m_Image: {fileID: 7966133145522015247, guid: 0000000000000000d000000000000000, type: 0} + m_Image: {fileID: -3734745235275155857, guid: 0000000000000000d000000000000000, type: 0} m_Tooltip: m_Pos: serializedVersion: 2 - x: 802 - y: 83 - width: 306.5 - height: 307 + x: 2201 + y: 30 + width: 290.5 + height: 408 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default @@ -616,7 +616,7 @@ MonoBehaviour: scrollPos: {x: 0, y: 0} m_SelectedIDs: m_LastClickedID: 0 - m_ExpandedIDs: aed1ffff + m_ExpandedIDs: eefaffff m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -656,7 +656,7 @@ MonoBehaviour: m_MaxSize: {x: 4000, y: 4000} m_TitleContent: m_Text: Console - m_Image: {fileID: -4327648978806127646, guid: 0000000000000000d000000000000000, type: 0} + m_Image: {fileID: -4950941429401207979, guid: 0000000000000000d000000000000000, type: 0} m_Tooltip: m_Pos: serializedVersion: 2 @@ -684,9 +684,9 @@ MonoBehaviour: m_Position: serializedVersion: 2 x: 0 - y: 328 - width: 308.5 - height: 417 + y: 429 + width: 292.5 + height: 545 m_MinSize: {x: 232, y: 271} m_MaxSize: {x: 10002, y: 10021} m_ActualView: {fileID: 12} @@ -710,14 +710,14 @@ MonoBehaviour: m_MaxSize: {x: 10000, y: 10000} m_TitleContent: m_Text: Project - m_Image: {fileID: -5467254957812901981, guid: 0000000000000000d000000000000000, type: 0} + m_Image: {fileID: -5179483145760003458, guid: 0000000000000000d000000000000000, type: 0} m_Tooltip: m_Pos: serializedVersion: 2 - x: 802 - y: 411 - width: 306.5 - height: 396 + x: 2201 + y: 459 + width: 290.5 + height: 524 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default @@ -748,9 +748,9 @@ MonoBehaviour: m_IsLocked: 0 m_FolderTreeState: scrollPos: {x: 0, y: 0} - m_SelectedIDs: 5a820000 - m_LastClickedID: 33370 - m_ExpandedIDs: 000000005a82000000ca9a3bffffff7f + m_SelectedIDs: 2a5b0000 + m_LastClickedID: 23338 + m_ExpandedIDs: 000000002a5b00002c5b000000ca9a3bffffff7f m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -778,7 +778,7 @@ MonoBehaviour: scrollPos: {x: 0, y: 0} m_SelectedIDs: m_LastClickedID: 0 - m_ExpandedIDs: + m_ExpandedIDs: 000000002a5b00002c5b000000ca9a3bffffff7f m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -849,10 +849,10 @@ MonoBehaviour: m_Children: [] m_Position: serializedVersion: 2 - x: 1110.5 + x: 1053.5 y: 0 - width: 329.5 - height: 745 + width: 312.5 + height: 974 m_MinSize: {x: 311, y: 221} m_MaxSize: {x: 4001, y: 4021} m_ActualView: {fileID: 2} @@ -881,10 +881,10 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: 1110.5 - y: 83 - width: 328.5 - height: 724 + x: 2493.5 + y: 30 + width: 311.5 + height: 953 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default diff --git a/UserSettings/Layouts/default-2021.dwlt b/UserSettings/Layouts/default-2021.dwlt index ec057b5..c9dd9ac 100644 --- a/UserSettings/Layouts/default-2021.dwlt +++ b/UserSettings/Layouts/default-2021.dwlt @@ -14,10 +14,10 @@ MonoBehaviour: m_EditorClassIdentifier: m_PixelRect: serializedVersion: 2 - x: 0 - y: 53 - width: 1440 - height: 795 + x: 1440 + y: 0 + width: 1366 + height: 1024 m_ShowMode: 4 m_Title: Inspector m_RootView: {fileID: 2} @@ -44,8 +44,8 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 1440 - height: 795 + width: 1366 + height: 1024 m_MinSize: {x: 875, y: 300} m_MaxSize: {x: 10000, y: 10000} m_UseTopView: 1 @@ -69,7 +69,7 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 1440 + width: 1366 height: 30 m_MinSize: {x: 0, y: 0} m_MaxSize: {x: 0, y: 0} @@ -90,8 +90,8 @@ MonoBehaviour: m_Position: serializedVersion: 2 x: 0 - y: 775 - width: 1440 + y: 1004 + width: 1366 height: 20 m_MinSize: {x: 0, y: 0} m_MaxSize: {x: 0, y: 0} @@ -116,12 +116,12 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 30 - width: 1440 - height: 745 + width: 1366 + height: 974 m_MinSize: {x: 400, y: 200} m_MaxSize: {x: 32384, y: 16192} vertical: 0 - controlID: 357 + controlID: 1266 --- !u!114 &6 MonoBehaviour: m_ObjectHideFlags: 52 @@ -139,8 +139,8 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 410.5 - height: 745 + width: 389.5 + height: 974 m_MinSize: {x: 201, y: 221} m_MaxSize: {x: 4001, y: 4021} m_ActualView: {fileID: 13} @@ -163,10 +163,10 @@ MonoBehaviour: m_Children: [] m_Position: serializedVersion: 2 - x: 410.5 + x: 389.5 y: 0 - width: 391.5 - height: 745 + width: 371.5 + height: 974 m_MinSize: {x: 202, y: 221} m_MaxSize: {x: 4002, y: 4021} m_ActualView: {fileID: 14} @@ -191,14 +191,14 @@ MonoBehaviour: - {fileID: 10} m_Position: serializedVersion: 2 - x: 802 + x: 761 y: 0 - width: 308.5 - height: 745 + width: 292.5 + height: 974 m_MinSize: {x: 100, y: 200} m_MaxSize: {x: 8096, y: 16192} vertical: 1 - controlID: 318 + controlID: 1247 --- !u!114 &9 MonoBehaviour: m_ObjectHideFlags: 52 @@ -216,8 +216,8 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 308.5 - height: 328 + width: 292.5 + height: 429 m_MinSize: {x: 201, y: 221} m_MaxSize: {x: 4001, y: 4021} m_ActualView: {fileID: 15} @@ -242,9 +242,9 @@ MonoBehaviour: m_Position: serializedVersion: 2 x: 0 - y: 328 - width: 308.5 - height: 417 + y: 429 + width: 292.5 + height: 545 m_MinSize: {x: 232, y: 271} m_MaxSize: {x: 10002, y: 10021} m_ActualView: {fileID: 17} @@ -267,10 +267,10 @@ MonoBehaviour: m_Children: [] m_Position: serializedVersion: 2 - x: 1110.5 + x: 1053.5 y: 0 - width: 329.5 - height: 745 + width: 312.5 + height: 974 m_MinSize: {x: 276, y: 71} m_MaxSize: {x: 4001, y: 4021} m_ActualView: {fileID: 18} @@ -295,20 +295,20 @@ MonoBehaviour: m_MaxSize: {x: 4000, y: 4000} m_TitleContent: m_Text: Project Settings - m_Image: {fileID: -5712115415447495865, guid: 0000000000000000d000000000000000, type: 0} + m_Image: {fileID: 866346219090771560, guid: 0000000000000000d000000000000000, type: 0} m_Tooltip: m_Pos: serializedVersion: 2 - x: 1110.5 - y: 83 - width: 328.5 - height: 724 + x: 2493.5 + y: 30 + width: 311.5 + height: 953 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default m_SaveData: [] m_PosLeft: {x: 0, y: 0} - m_PosRight: {x: 0, y: 11.999817} + m_PosRight: {x: 0, y: 0} m_Scope: 1 m_SplitterFlex: 0.2 m_SearchText: @@ -354,10 +354,10 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: 0 - y: 83 - width: 409.5 - height: 724 + x: 1440 + y: 30 + width: 388.5 + height: 953 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default @@ -612,9 +612,9 @@ MonoBehaviour: speed: 2 m_Value: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} m_Size: - m_Target: 10 + m_Target: 10.015 speed: 2 - m_Value: 10 + m_Value: 10.015 m_Ortho: m_Target: 0 speed: 2 @@ -659,10 +659,10 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: 410.5 - y: 83 - width: 389.5 - height: 724 + x: 1829.5 + y: 30 + width: 369.5 + height: 953 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default @@ -673,7 +673,7 @@ MonoBehaviour: m_ShowGizmos: 0 m_TargetDisplay: 0 m_ClearColor: {r: 0, g: 0, b: 0, a: 0} - m_TargetSize: {x: 779, y: 1406} + m_TargetSize: {x: 739, y: 1864} m_TextureFilterMode: 0 m_TextureHideFlags: 61 m_RenderIMGUI: 1 @@ -688,10 +688,10 @@ MonoBehaviour: m_VRangeLocked: 0 hZoomLockedByDefault: 0 vZoomLockedByDefault: 0 - m_HBaseRangeMin: -194.75 - m_HBaseRangeMax: 194.75 - m_VBaseRangeMin: -351.5 - m_VBaseRangeMax: 351.5 + m_HBaseRangeMin: -184.75 + m_HBaseRangeMax: 184.75 + m_VBaseRangeMin: -466 + m_VBaseRangeMax: 466 m_HAllowExceedBaseRangeMin: 1 m_HAllowExceedBaseRangeMax: 1 m_VAllowExceedBaseRangeMin: 1 @@ -709,23 +709,23 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 21 - width: 389.5 - height: 703 + width: 369.5 + height: 932 m_Scale: {x: 1, y: 1} - m_Translation: {x: 194.75, y: 351.5} + m_Translation: {x: 184.75, y: 466} m_MarginLeft: 0 m_MarginRight: 0 m_MarginTop: 0 m_MarginBottom: 0 m_LastShownAreaInsideMargins: serializedVersion: 2 - x: -194.75 - y: -351.5 - width: 389.5 - height: 703 + x: -184.75 + y: -466 + width: 369.5 + height: 932 m_MinimalGUI: 1 m_defaultScale: 1 - m_LastWindowPixelSize: {x: 779, y: 1448} + m_LastWindowPixelSize: {x: 739, y: 1906} m_ClearInEditMode: 1 m_NoCameraWarning: 1 m_LowResolutionForAspectRatios: 00000000000000000000 @@ -751,10 +751,10 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: 802 - y: 83 - width: 306.5 - height: 307 + x: 2201 + y: 30 + width: 290.5 + height: 408 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default @@ -762,9 +762,9 @@ MonoBehaviour: m_SceneHierarchy: m_TreeViewState: scrollPos: {x: 0, y: 0} - m_SelectedIDs: f2820000 - m_LastClickedID: 33522 - m_ExpandedIDs: e4cfffffaed1ffff + m_SelectedIDs: 64660000 + m_LastClickedID: 26212 + m_ExpandedIDs: eefaffff m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -836,10 +836,10 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: 802 - y: 411 - width: 306.5 - height: 396 + x: 2201 + y: 459 + width: 290.5 + height: 524 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default @@ -869,10 +869,10 @@ MonoBehaviour: m_LockTracker: m_IsLocked: 0 m_FolderTreeState: - scrollPos: {x: 0, y: 60} - m_SelectedIDs: 5a820000 - m_LastClickedID: 33370 - m_ExpandedIDs: 000000005a8200006a82000000ca9a3bffffff7f + scrollPos: {x: 0, y: 0} + m_SelectedIDs: 2a5b0000 + m_LastClickedID: 23338 + m_ExpandedIDs: 000000002a5b00002c5b000000ca9a3bffffff7f m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -900,7 +900,7 @@ MonoBehaviour: scrollPos: {x: 0, y: 0} m_SelectedIDs: m_LastClickedID: 0 - m_ExpandedIDs: 000000005a82000000ca9a3bffffff7f + m_ExpandedIDs: 000000002a5b00002c5b000000ca9a3bffffff7f m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -927,7 +927,7 @@ MonoBehaviour: m_ListAreaState: m_SelectedInstanceIDs: m_LastClickedInstanceID: 0 - m_HadKeyboardFocusLastEvent: 1 + m_HadKeyboardFocusLastEvent: 0 m_ExpandedInstanceIDs: c6230000 m_RenameOverlay: m_UserAcceptedRename: 0 @@ -976,10 +976,10 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: 1110.5 - y: 83 - width: 328.5 - height: 724 + x: 2493.5 + y: 30 + width: 311.5 + height: 953 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default