Sobre el proyecto
## Plugin de MediaPipe para Unity
Este es un plugin nativo de Unity (>= 2022.3) para usar MediaPipe (0.10.22). El objetivo es portar la API C++ de MediaPipe a C# de forma individual para que pueda llamarse desde Unity. Este enfoque puede sacrificar rendimiento al llamar a varias API en un bucle, pero ofrece flexibilidad.
### Características
- Escribir código de MediaPipe en C#.
- Ejecutar las soluciones oficiales de MediaPipe en Unity.
- Ejecutar `Calculator` y `CalculatorGraph` personalizados en Unity (puede requerir C++ para ciertos tipos de entrada/salida).
### Ejemplo 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 un uso más detallado, consulta la Vista General de la API o los tutoriales.
### Instalación
Descarga el paquete precompilado desde la página de versiones:
| archivo | contenido |
| --- | --- |
| MediaPipeUnityPlugin-all.zip | Todo el código fuente con las bibliotecas necesarias. |
| MediaPipeUnityPlugin-all-stripped.zip | Igual que el anterior, pero con los símbolos eliminados. |
| com.github.homuler.mediapipe-*.tgz | Paquete tarball para el Gestor de Paquetes de Unity. |
| MediaPipeUnityPlugin.*.unitypackage | Archivo de paquete de Unity. |
Para las escenas de muestra móviles, se recomienda `MediaPipeUnityPlugin-all.zip` o `-stripped.zip`, ya que incluyen los modelos y la configuración necesarios.
### Compilar el plugin por tu cuenta
En la mayoría de los casos, no necesitas compilar el plugin por tu cuenta. Solo si el paquete precompilado no funciona, sigue la guía de compilación. El repositorio no incluye las bibliotecas o modelos necesarios, por lo que clonarlo requiere una compilación.
### Compilar un paquete
- **Paquete de Unity**: abre el proyecto y haz clic en `Tools > Export Unitypackage`.
- **Tarball**: instala `npm` y luego ejecuta `npm pack` en `Packages/com.github.homuler.mediapipe`.
### Plataformas compatibles
El modo GPU no es compatible con macOS y Windows. Las plataformas compatibles incluyen Linux (x86_64), macOS (x86_64/ARM64), Windows (x86_64), Android, iOS y WebGL (con limitaciones).
### Soluciones compatibles
El plugin implementa API en C# para varias Tareas de MediaPipe, entre ellas:
- Detección de objetos
- Segmentación de imágenes
- Detección de puntos clave de manos
- Reconocimiento de gestos
- Detección de rostros
- Detección de puntos clave de rostro
- Detección de puntos clave de postura
- Clasificación de audio
También están disponibles las Soluciones heredadas a través del Framework de MediaPipe, pero su soporte ha finalizado.
### Uso
Importa el plugin en tu proyecto usando `.unitypackage` o `.tar.gz`.
#### Nota para Android
Para las compilaciones de Android, asegúrate de que `libstdc++_shared.so` esté incluido en tu APK; de lo contrario, se lanzará `DllNotFoundException`. Colócalo en `Assets/Plugins/Android` o añade código Gradle para incluirlo en tiempo de compilación.
#### Aplicación de muestra
Consulta las escenas de muestra en `Assets/MediaPipeUnity/Samples/Scenes`. En el Inspector, selecciona el Modo de Inferencia adecuado (CPU o GPU) y el Tipo de Cargador de Activos (Local para el Editor, StreamingAssets para dispositivos).
### Limitaciones técnicas
- El plugin utiliza bibliotecas nativas; los errores pueden provocar que UnityEditor o la aplicación se cierren de forma inesperada. En Linux/macOS, `SIGABRT` se maneja para evitar cierres, pero en Windows no es posible.
- Para la inferencia con GPU, la API Core de OpenGL no es compatible; usa Vulkan en las compilaciones independientes para PC.
### Licencia
MIT, con algunos archivos bajo otras licencias (MediaPipe Apache 2.0, emscripten MIT, FontAwesome). Consulta los Avisos de Terceros para obtener más detalles.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.