Leap + Unity3D Básico 1

Comienzo con el primero de una serie de tutoriales básicos para que puedas sacar de la caja tu Leap Motion y comenzar a programar tus primeras lineas de código. Este tutorial está realizado para aquellos que no posean la versión de pago de Unity3D. Más adelante os colgaré otro para los que sí posean la versión de pago.

El material contenido en este tutorial está extraído de la página oficial de Leap Motion y de sus documentos de ayuda para desarrolladores.

La licencia standard de Unity (Free) no soporta plugins, pero gracias a la comunidad de desarrolladores de Leap Motion es posible utilizar las librerias del Leap con esta versión de Unity3D. Esto requiere una serie de pasos manuales que hay que seguir:

Para hacer funcionar un proyecto con las librerias del Leap debes ponerlas en un lugar donde puedan ser encontradas en runtime. Este lugar es distinto dependiendo de donde estés ejecutando el proyecto, en el editor de Unity o en el ejecutable después de exportarlo.

Dado que la versión estándar de Unity no es compatible con plug-ins, la clave está en poner las librerías en un lugar donde el sistema operativo puede encontrarlas.

Colocación de las librerías durante el desarrollo

Mientras estemos en desarrollo podemos colocar las librerías de .NET3.5 en la carpeta Assets de nuestro proyecto Unity y las librerías del Leap y LeapCSharp en la raíz del proyecto.

Por ejemplo, si tu proyecto Unity se llama UnicornSlam, entonces debes de usar la siguiente estructura

Windows:

UnicornSlam/

    Assets/

        LeapCSharp.NET3.5.dll

        OneMillionUnicorns.unity

        Scripts/

            LeapControl.cs

    Library/    

    ProjectSettings/

    Leap.dll

    LeapCSharp.dll

    msvcp100.dll

    msvcr100.dll

En Windows, usar solo las librerías de 32-bit en la carpeta x86 con el editor.

OS X:

UnicornSlam/

    Assets/

        LeapCSharp.NET3.5.dll

        OneMillionUnicorns.unity

        Scripts/

            LeapControl.cs

    Library/    

    ProjectSettings/

    libLeap.dylib

    libLeapCSharp.dylib

En Mac, no usar el archivo LeapCSharp.bundle desde el Leap SDK. Las librerías deben de copiarse por separado.

Colocación de las librerías después de exportar

Despúes de exportar nuestro proyecto Unity, también debemos copiar las librerías del Leap y sus dependencias en la carpeta exportada junto a la aplicación. Por ejemplo, si tú exportas tu proyecto a una carpeta llamada UnicornSlamExport, el contenido de la carpeta final quedará de la siguiente forma

Windows:

UnicornSlamExport/

    Leap.dll

    LeapCSharp.dll

    msvcp100.dll

    msvcr100.dll

    Unicorn_Slam_Data/

    UnicornSlam.exe

Hay que asegurarse de que estamos usando las librerías de la carpeta x86 en el SDK para Windows 32-bit y las librerías de la carpeta x64 para los Windows de 64-bit.

OS X:

UnicornSlamExport/

    libLeap.dylib

    libLeapCSharp.dylib

    UnicornSlam.app

Ahora podemos hacer un instalador para distribuir nuestra aplicación de la misma forma que podríamos hacerlo para una aplicación que no estuviera preparada para usar con el Leap.

Colocación de las librerías del Leap dentro del paquete de la aplicación en Mac

Es conveniente colocar todas las dependencias dentro del paquete de la aplicación en el Mac. Para ello, debes identificar la ruta donde se encuentran las librerías. Puedes utilizar la utilidad install_name_tool para agregar la ruta a tu binario y copiar las librerías en la carpeta del Framework en el paquete de la aplicación. Por ejemplo, el paquete para la supuesta aplicación UnicornSlam quedaría de la siguiente manera después de exportarla con Unity:

UnicornSlam.app/

    Data/

    Frameworks/

        MonoEmbedRuntime/

    Info.plist

    MacOS/

        UnicornSlam

    PkgInfo

    Resources/

Primero, debes agregar una ruta de acceso relativa al binario de la aplicación utilizando install_name_tool. Desde la carpeta de exportación, ejecuta el siguiente comando en una ventana del Terminal:

install_name_tool -add_rpath @executable_path/../Frameworks UnicornSlam.app/Contents/MacOS/UnicornSlam

A continuación, copia libLeap.dylib y libLeapCSharp.dylib en la carpeta de los Frameworks dentro del paquete. Después de todo esto, el paquete de la app debería quedar así:

UnicornSlam.app/

    Data/

    Frameworks/

        libLeap.dylib

        libLeapCSharp.dylib

        MonoEmbedRuntime/

    Info.plist

    MacOS/

        UnicornSlam

    PkgInfo

    Resources/

 

Bibliografía:

Leap Motion Developer Portal

Pierre Semaan Blog

About Pablo Marcos

Soy ingeniero informático y apasionado de la programación y la tecnología. Actualmente viviendo en Alemania y trabajando como desarrollador interactivo en Stoll Von Gáti GmbH. Mi twitter @pablo_marcos