इस प्रोजेक्ट के बारे में

## MediaPipe Unity प्लगइन यह MediaPipe (0.10.22) का उपयोग करने के लिए एक Unity (>= 2022.3) नेटिव प्लगइन है। लक्ष्य MediaPipe C++ API को एक-एक करके C# में पोर्ट करना है ताकि इसे Unity से कॉल किया जा सके। यह दृष्टिकोण लूप में कई API कॉल करते समय प्रदर्शन को प्रभावित कर सकता है, लेकिन लचीलापन प्रदान करता है। ### विशेषताएँ - C# में MediaPipe कोड लिखें। - Unity पर MediaPipe के आधिकारिक समाधान चलाएँ। - Unity पर कस्टम `Calculator` और `CalculatorGraph` चलाएँ (कुछ इनपुट/आउटपुट प्रकारों के लिए C++ की आवश्यकता हो सकती है)। ### हैलो वर्ल्ड उदाहरण ```cs using Mediapipe; using UnityEngine; public sealed class HelloWorld : MonoBehaviour { private const string _ConfigText = @" input_stream: ""in"" output_stream: ""out"" node { calculator: ""PassThroughCalculator"" input_stream: ""in"" output_stream: ""out1"" } node { calculator: ""PassThroughCalculator"" input_stream: ""out1"" output_stream: ""out"" } "; private void Start() { using var graph = new CalculatorGraph(_ConfigText); using var poller = graph.AddOutputStreamPoller<string>("out"); graph.StartRun(); for (var i = 0; i < 10; i++) { graph.AddPacketToInputStream("in", Packet.CreateStringAt("Hello World!", i)); } graph.CloseInputStream("in"); var packet = new Packet<string>(); while (poller.Next(packet)) { Debug.Log(packet.Get()); } graph.WaitUntilDone(); } } ``` अधिक विस्तृत उपयोग के लिए, API अवलोकन या ट्यूटोरियल देखें। ### स्थापना रिलीज़ पृष्ठ से पूर्व-निर्मित पैकेज डाउनलोड करें: | फ़ाइल | सामग्री | | --- | --- | | MediaPipeUnityPlugin-all.zip | आवश्यक लाइब्रेरी के साथ सभी स्रोत कोड। | | MediaPipeUnityPlugin-all-stripped.zip | उपरोक्त के समान लेकिन प्रतीक हटाए गए। | | com.github.homuler.mediapipe-*.tgz | Unity पैकेज मैनेजर के लिए टारबॉल पैकेज। | | MediaPipeUnityPlugin.*.unitypackage | Unity पैकेज फ़ाइल। | मोबाइल नमूना दृश्यों के लिए, `MediaPipeUnityPlugin-all.zip` या `-stripped.zip` पसंद करें क्योंकि उनमें आवश्यक मॉडल और सेटअप शामिल हैं। ### प्लगइन स्वयं बनाना अधिकांश मामलों में, आपको प्लगइन स्वयं बनाने की आवश्यकता नहीं है। केवल यदि पूर्व-निर्मित पैकेज काम नहीं करता है, तो बिल्ड गाइड का पालन करें। रिपॉजिटरी में आवश्यक लाइब्रेरी या मॉडल शामिल नहीं हैं, इसलिए क्लोनिंग के लिए बिल्डिंग की आवश्यकता होती है। ### पैकेज बनाना - **Unity पैकेज**: प्रोजेक्ट खोलें, `Tools > Export Unitypackage` पर क्लिक करें। - **टारबॉल**: `npm` स्थापित करें, फिर `Packages/com.github.homuler.mediapipe` में `npm pack` चलाएँ। ### समर्थित प्लेटफ़ॉर्म GPU मोड macOS और Windows पर समर्थित नहीं है। समर्थित प्लेटफ़ॉर्म में Linux (x86_64), macOS (x86_64/ARM64), Windows (x86_64), Android, iOS और WebGL (सीमाओं के साथ) शामिल हैं। ### समर्थित समाधान प्लगइन कई MediaPipe कार्यों के लिए C# API लागू करता है, जिनमें शामिल हैं: - वस्तु पहचान - छवि विभाजन - हाथ लैंडमार्क पहचान - हावभाव पहचान - चेहरा पहचान - चेहरा लैंडमार्क पहचान - मुद्रा लैंडमार्क पहचान - ऑडियो वर्गीकरण MediaPipe फ्रेमवर्क के माध्यम से विरासत समाधान भी उपलब्ध हैं लेकिन उनका समर्थन समाप्त हो गया है। ### उपयोग `.unitypackage` या `.tar.gz` का उपयोग करके प्लगइन को अपने प्रोजेक्ट में आयात करें। #### Android नोट Android बिल्ड के लिए, सुनिश्चित करें कि `libstdc++_shared.so` आपके APK में शामिल है, अन्यथा `DllNotFoundException` फेंका जाएगा। इसे `Assets/Plugins/Android` में रखें या बिल्ड समय पर इसे शामिल करने के लिए Gradle कोड जोड़ें। #### नमूना ऐप `Assets/MediaPipeUnity/Samples/Scenes` के अंतर्गत नमूना दृश्य देखें। इंस्पेक्टर में, उचित इन्फ़रेंस मोड (CPU या GPU) और एसेट लोडर प्रकार (संपादक के लिए स्थानीय, उपकरणों के लिए StreamingAssets) चुनें। ### तकनीकी सीमाएँ - प्लगइन नेटिव लाइब्रेरी का उपयोग करता है; बग UnityEditor या ऐप को क्रैश कर सकते हैं। Linux/macOS पर, क्रैश से बचने के लिए `SIGABRT` को संभाला जाता है, लेकिन Windows पर यह संभव नहीं है। - GPU इन्फ़रेंस के लिए, OpenGL Core API समर्थित नहीं है; पीसी स्टैंडअलोन बिल्ड पर Vulkan का उपयोग करें। ### लाइसेंस MIT, कुछ फ़ाइलें अन्य लाइसेंस के अंतर्गत (MediaPipe Apache 2.0, emscripten MIT, FontAwesome)। विवरण के लिए तृतीय पक्ष सूचनाएँ देखें।