Sobre o projeto

## Plugin MediaPipe para Unity Este é um plugin nativo para Unity (>= 2022.3) para usar o MediaPipe (0.10.22). O objetivo é portar a API C++ do MediaPipe um a um para C#, para que possa ser chamada a partir do Unity. Essa abordagem pode sacrificar o desempenho ao chamar várias APIs em um loop, mas oferece flexibilidade. ### Recursos - Escreva código MediaPipe em C#. - Execute as soluções oficiais do MediaPipe no Unity. - Execute `Calculator` e `CalculatorGraph` personalizados no Unity (pode exigir C++ para certos tipos de entrada/saída). ### Exemplo 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(); } } ``` Para uso mais detalhado, consulte a Visão Geral da API ou os tutoriais. ### Instalação Baixe o pacote pré-compilado da página de releases: | arquivo | conteúdo | | --- | --- | | MediaPipeUnityPlugin-all.zip | Todo o código-fonte com bibliotecas necessárias. | | MediaPipeUnityPlugin-all-stripped.zip | Igual ao acima, mas com símbolos removidos. | | com.github.homuler.mediapipe-*.tgz | Pacote tar para o Unity Package Manager. | | MediaPipeUnityPlugin.*.unitypackage | Arquivo de pacote Unity. | Para cenas de exemplo móveis, prefira `MediaPipeUnityPlugin-all.zip` ou `-stripped.zip`, pois incluem modelos e configuração necessários. ### Compilando o Plugin Você Mesmo Na maioria dos casos, você não precisa compilar o plugin. Somente se o pacote pré-compilado não funcionar, siga o guia de compilação. O repositório não inclui bibliotecas ou modelos necessários, então clonar requer compilação. ### Compilando um Pacote - **Pacote Unity**: Abra o projeto, clique em `Tools > Export Unitypackage`. - **Tarball**: Instale o `npm`, depois execute `npm pack` em `Packages/com.github.homuler.mediapipe`. ### Plataformas Suportadas O modo GPU não é suportado no macOS e Windows. As plataformas suportadas incluem Linux (x86_64), macOS (x86_64/ARM64), Windows (x86_64), Android, iOS e WebGL (com limitações). ### Soluções Suportadas O plugin implementa APIs C# para várias tarefas do MediaPipe, incluindo: - Detecção de objetos - Segmentação de imagem - Detecção de landmarks de mãos - Reconhecimento de gestos - Detecção de faces - Detecção de landmarks faciais - Detecção de landmarks de pose - Classificação de áudio Soluções legadas via MediaPipe Framework também estão disponíveis, mas o suporte foi encerrado. ### Uso Importe o plugin no seu projeto usando `.unitypackage` ou `.tar.gz`. #### Nota para Android Para builds Android, certifique-se de que `libstdc++_shared.so` está incluído no seu APK, caso contrário, uma `DllNotFoundException` será lançada. Coloque-o em `Assets/Plugins/Android` ou adicione código Gradle para incluí-lo no momento da compilação. #### Aplicativo de Exemplo Verifique as cenas de exemplo em `Assets/MediaPipeUnity/Samples/Scenes`. No Inspetor, selecione o Modo de Inferência adequado (CPU ou GPU) e o Tipo de Carregador de Assets (Local para Editor, StreamingAssets para dispositivos). ### Limitações Técnicas - O plugin usa bibliotecas nativas; bugs podem travar o UnityEditor ou o aplicativo. No Linux/macOS, o `SIGABRT` é tratado para evitar travamentos, mas no Windows não é possível. - Para inferência GPU, a API OpenGL Core não é suportada; use Vulkan em builds standalone para PC. ### Licença MIT, com alguns arquivos sob outras licenças (MediaPipe Apache 2.0, emscripten MIT, FontAwesome). Consulte os Avisos de Terceiros para detalhes.