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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.