À propos du projet

## Plugin MediaPipe Unity Ceci est un plugin natif Unity (>= 2022.3) pour utiliser MediaPipe (0.10.22). L'objectif est de porter l'API C++ de MediaPipe une par une vers C# afin qu'elle puisse être appelée depuis Unity. Cette approche peut sacrifier les performances lors de l'appel de plusieurs API dans une boucle, mais offre de la flexibilité. ### Fonctionnalités - Écrire du code MediaPipe en C#. - Exécuter les solutions officielles de MediaPipe sur Unity. - Exécuter des `Calculator` et `CalculatorGraph` personnalisés sur Unity (peut nécessiter du C++ pour certains types d'entrée/sortie). ### Exemple Hello World ```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(); } } ``` Pour une utilisation plus détaillée, consultez l'aperçu de l'API ou les tutoriels. ### Installation Téléchargez le package pré-construit depuis la page des versions : | fichier | contenu | | --- | --- | | MediaPipeUnityPlugin-all.zip | Tout le code source avec les bibliothèques requises. | | MediaPipeUnityPlugin-all-stripped.zip | Identique à ci-dessus mais avec les symboles supprimés. | | com.github.homuler.mediapipe-*.tgz | Package tarball pour Unity Package Manager. | | MediaPipeUnityPlugin.*.unitypackage | Fichier de package Unity. | Pour les scènes d'exemple mobiles, préférez `MediaPipeUnityPlugin-all.zip` ou `-stripped.zip` car ils incluent les modèles et la configuration requis. ### Construire le Plugin Vous-même Dans la plupart des cas, vous n'avez pas besoin de construire le plugin vous-même. Seulement si le package pré-construit ne fonctionne pas, suivez le guide de construction. Le dépôt n'inclut pas les bibliothèques ou modèles requis, donc le clonage nécessite une construction. ### Construire un Package - **Package Unity** : Ouvrez le projet, cliquez sur `Tools > Export Unitypackage`. - **Tarball** : Installez `npm`, puis exécutez `npm pack` dans `Packages/com.github.homuler.mediapipe`. ### Plateformes Prises en Charge Le mode GPU n'est pas pris en charge sur macOS et Windows. Les plateformes prises en charge incluent Linux (x86_64), macOS (x86_64/ARM64), Windows (x86_64), Android, iOS et WebGL (avec des limitations). ### Solutions Prises en Charge Le plugin implémente des API C# pour plusieurs tâches MediaPipe, notamment : - Détection d'objets - Segmentation d'images - Détection de repères de main - Reconnaissance de gestes - Détection de visages - Détection de repères faciaux - Détection de repères de pose - Classification audio Les solutions héritées via le framework MediaPipe sont également disponibles mais leur support a pris fin. ### Utilisation Importez le plugin dans votre projet en utilisant `.unitypackage` ou `.tar.gz`. #### Note Android Pour les builds Android, assurez-vous que `libstdc++_shared.so` est inclus dans votre APK, sinon une `DllNotFoundException` sera levée. Placez-le dans `Assets/Plugins/Android` ou ajoutez du code Gradle pour l'inclure au moment de la construction. #### Application Exemple Consultez les scènes d'exemple sous `Assets/MediaPipeUnity/Samples/Scenes`. Dans l'inspecteur, sélectionnez le mode d'inférence approprié (CPU ou GPU) et le type de chargeur d'actifs (Local pour l'éditeur, StreamingAssets pour les appareils). ### Limitations Techniques - Le plugin utilise des bibliothèques natives ; des bugs peuvent faire planter UnityEditor ou l'application. Sur Linux/macOS, `SIGABRT` est géré pour éviter les plantages, mais sur Windows ce n'est pas possible. - Pour l'inférence GPU, l'API OpenGL Core n'est pas prise en charge ; utilisez Vulkan sur les builds autonomes PC. ### Licence MIT, avec certains fichiers sous d'autres licences (MediaPipe Apache 2.0, emscripten MIT, FontAwesome). Voir les avis tiers pour plus de détails.