jueves, 24 de julio de 2014

Realidad Virtual de cartón con tu smartphone (Parte II)


Hace unas semanas publiqué la entrada Realidad Virtual de cartón con tu smartphone sobre el Google Cardboard, una prueba de concepto de headset de realidad virtual para construir uno mismo con una caja de cartón, un par de lentes, dos imanes y otros componentes.

Tan pronto como fue publicado algunas empresas empezaron a fabricar y vender kits con todos los componentes necesarios. Dodocase fue la primera en anunciar un kit y actualmente está disponible para envíos a España en unas 4 o 6 semanas.

El pasado fin de semana compré un kit disponible en Amazon por unos 20€ (sin pegatina NFC) el cual recibí ayer por la tarde. Aunque no deja de ser un simple cartón, tiene mejor acabado al ser cortado por láser y con los pliegues preparados para un montaje rápido y sencillo. Además, incluye el componente más importante, el par de lentes biconvexas con las medidas necesarias.

Kit Cardboard Google sin NFC.
El montaje del Kit es muy sencillo.


La visión con las lentes del kit es relativamente buena. La imagen se ve muy bien en la parte central, sin embargo alrededor se nota algo difuminado, en especial se notan los textos. Otra aspecto a destacar es que en función de la resolución del móvil se notarán en mayor o menor medida los píxeles.

Las letras en el menú de la demo Cardboard que aparecen en la parte inferior no se ven con claridad. Me imagino que se debe a la calidad de la lente o bien a que la posición del móvil está algo más baja de lo normal.

Menú de la demo Cardboard.
La función de la goma elástica es sujetar el móvil para que no se deslice fuera de las ranuras, pero al inclinar la pantalla para salir al menú el móvil se ha salido en algún momento.

El mejor resultado de sensación en 3D que he visto ha sido con la demo de Windy Day, un corto animado de Spotlight Stories.

Windy Day de Spotlight Stories.


En Google Earth podemos viajar través del globo terráqueo dando la sensación de volar sobre montañas o rascacielos.

Desde el menú de Cardboard también se puede acceder a las fotografías del móvil realizadas con la función de la cámara Photo Sphere.

Foto de la Torre de Hércules con la cámara Photo Sphere de Nexus.
Una demostración similar es la visita guiada al palacio de Versalles, con varias imágenes en 360 grados con el audio de un guía que nos presenta cada una de las salas del palacio.

Chrome Experiments

Desde el navegador de Chrome instalado en el dispositivo móvil se puede acceder a Chrome Experiments, una demostración para visualizar aplicaciones en HTML5. Al acceder a la url en el móvil nos pide aumentar el volumen y girar la pantalla para activar el móvil de visualización para la Cardboard.

Acceso a la url de chrome extensions desde el navegador del dispositivo.
Una vez habilitado aparece un menú con varias opciones que se escogen pulsando con el imán.

Menú de Chrome Experimentes.
Una de las opciones es la demo realizada con Tree.js vista en el vídeo de Google I/O Cardboard. La demo de la montaña rusa virtual me ha gustado bastante, dando la mayor sensación tridimensional completa con movimiento y sonido que varía en función de la proximidad a otros objetos del escenario.

Demo de montaña rusa.
Otras de las opciones del menú son vídeos en 360 grados por Airpano. Se puede ver cualquier parte del vídeo girando la cabeza.

Vídeo de osos en Kamchatka de Airpano.


Demo Treasure Hunt

Para probar la demo de Treasure Hunt con la nueva versión SDK para Android que ya incluye la API Level 20, es necesario cambiar la configuración de Gradle, en CardboardSample/build.gradle, para que no dé un error de compilación
  • Modificar la versión de buildToolsVersion por la última versión de la API Level 19 instalada en el SDK, en mi caso es la 19.1.0:
    buildToolsVersion '19.1.0'

  • Cambiar la última versión disponible para la librería support-v4, indicada con el símbolo más, por la versión 19.1.0:
    compile 'com.android.support:support-v4:19.1.0'
Tras compilar y ejecutar la demo vemos un escenario 3D donde el usuario tiene que buscar un cubo de colores y pulsar el imán cuando lo encuentre para que cambie de posición.

Captura de Treasure Hunt.

lunes, 7 de julio de 2014

Realidad Virtual de cartón con tu smartphone

Mientras se espera la llegada del headset de realidad virtual Oculus Rift en 2015, Google presentó a finales de Junio el Cardboard, una prueba de concepto de realidad virtual para smartphones Android hechas con cartón.

En el sitio web se puede encontrar un ejemplo del resultado del headset de RV junto con un manual de como construirlo en casa a partir de una plantilla en pdf y con la lista de materiales necesarios.

Cardboad de Google


Además, está disponible para Android una demo con aplicaciones diferentes para usar con el Cardboard como ver las fotografías realizadas en photo sphere, ver los canales de youtube, realizar la visita a un museo o ver las calles con street channel en formato estereoscópico.

Funcionamiento

Cardboard utiliza 3 componentes: Un par de lentes ópticas biconvexas, dos imanes y una etiqueta NFC, esta última opcional.

Efecto de la las lentes en el Cardboard. Fuente Google I/O 2014 - Cardboard: VR for Android


Para poder tener una visión inmersa en RV es necesario utilizar lentes ópticas. Google recomienda que sean de 45mm de distancia focal (F/L) biconvexas y de 25mm de diámetro.

Las lentes hacen que nuestra visión se centre en cada una de las mitades de la pantalla, haciendo que nuestro cerebro interprete de forma estereoscópica. Las aplicaciones se encargan de renderizar las dos imágenes ajustadas para la distorsión recibida por la lente.

Los imanes realizan la función de un botón de acción. Ya que la pantalla queda inaccesible, el movimiento de uno de los imanes ejerce un campo magnético que activa el sensor del magnetómetro, incluido en la mayoría de smartphones actuales.

La etiqueta de NFC, con la url cardboard://v.1.0.0, sirve para que cuando se coloque el smartphone cerca, en el Cardboard, le indique a la aplicaciones que se muestren en modo de RV.


Finalmente, el smartphone facilita el hardware y los sensores como el acelerómetro y el giroscopio.

Montaje

Para crear el Cardboard se puede imprimir el pdf de la plantilla. Hay que imprimirla en formato vertical o apaisado y activar en las propiedades de impresión el auto centrado de la imagen, ya que la plantilla ocupa casi toda la página de A4 y podría no salir alguna línea cercana a los bordes.

Plantilla de Cardboard recortada.

Luego pegar la plantilla impresa sobre un cartón, uniendo las partes 1 y 2 con fondo blanco sobre las partes 1 y 2 con fondo negro.

Para recortar utilicé un cúter y una regla con algo debajo para no marcar la mesa. Hay algunas partes centrales que resulta algo complicado recortar, pero que con paciencia se puede hacer usando el cúter a modo de punzón.

El cartón debe ser fino para que resulte cómodo de recortar.

Una vez recortadas todas las partes hay que ensamblarlas. El proceso es muy simple, incluso hay vídeos en youtube que explican los pasos necesarios.

Cardboard hecho a partir de la plantilla en pdf con una caja de zapatos.

Una vez montado todavía faltaría añadir el velcro para la sujeción del smarthphone en la parte delantera, la etiqueta NFC, los imanes y las lentes. Pero es un ejemplo de como podría ser y lo fácil que es hacerse un headset de RV en casa.

Con un acabado más profesional, hecho con una cortadora láser, en Dodocase se puede obtener el kit completo por unos 25$, ó 20$ sin etiqueta NFC, disponible para envíos a España.

Desarrollo

En el vídeo de la conferencia de Google I/O 2014 - Cardboard: VR for Android se puede ver la explicación en detalle del funcionamiento del Cardboard así como el desarrollo de aplicaciones tanto para Android como Html5 con frameworks webGL como Three.js.

En la página de desarrollo de google hay un tutorial de desarrollo para la Cardboard con la demostración del juego Treasure Hunt disponible en GitHub.

Durovis Dive

En mayo de 2013 Stefan Welker presentó la Durovis OpenDive, un headset de realidad virtual creado desde una impresora 3D para acoplarle un smarthphone. Adaptó el juego de Quake 2 a partir del port para Android para que detectase de los movimientos de la cabeza del jugador utilizando los sensores del smarthphone.

Actualmente se puede adquirir una versión comercial, el headset de RV Durovis Dive por unos 60€ en la página oficial de la compañía. También tiene disponible un plugin para Unity3D compatible con Android y iOS, además del código fuente del port de Quake 2 adaptado y los drivers para jugar con un mando por Bluetooth. También han publicado una lista de smarthphones compatibles, Android y iOS, una lista de juegos con soporte para el headset de RV y la sala de juegos Dive Launcher para Android.

Actualización (19/07/2014): El proyecto de ejemplo para el cardboard, Treasure Hunter, es un proyecto de Gradle. Para compilarlo se puede utilizar Android Studio, adaptando el proyecto a Eclipse con el plugin Grandle IDE.

Desde un terminal se puede compilar ejecutando desde el directorio del proyecto Cardboard el script ./gradlew.

Requiere tener configurada la variable de entorno ANDROID_HOME apuntando a la ruta donde está el SDK, requiere la librería support-v4.jar la cual ya está en el SDK incluído en Android Studio en la ruta sdk/extras/android/m2repository.

Con ./grandlew se compila el proyecto.

Ejecutando ./grandlew desde una terminal GNU/Linux.
El proyecto está configurado para compilar en la versión SDK Android 19.0.3. Será necesarios instalarlo desde el Android SDK Manager en sdk/tools/android. En la sección de paquetes seleccionar e instalar Android SDK Build-tools 19.0.3.

Para indicar que utiliza support-v4 19, editar el fichero de configuración de Gradle CardboardSample/build.gradle y cambiar la línea de dependencias compile 'com.android.support:support-v4:+' por compile 'com.android.support:support-v4:19.0.1'.

Con ./gradlew assembleRelease se empaqueta el apk.

Compilando con ./gradlew assembleRelease desde terminal de GNU/Linux.
 El apk se encuentra en la ruta cardboar/CardboardSample/build/apk/CardboardSample-release-unsigned.apk.

En el blog de Alexander Lin hay un tutorial de como integrar el proyecto y ejecutarlo con Android Studio.