Unidad, Video y VR Móvil

Como la persona que produce la concentración de Udacity 360 y Immersive Media para VR NanoDegree, una de las cosas que pasé un tiempo investigando son las diferentes opciones actuales para mostrar un video 360, en Unity, en VR. Cubriré un flujo de trabajo de desarrollador común, en el que intentas hacer algo que nunca antes habías hecho y no estás realmente seguro de si el motor que estás usando puede hacerlo o si hay soluciones de terceros. Tienes un tiempo limitado para resolver esto, así que este es mi proceso, al menos, para resolver nuevos problemas.

Como desarrollador de realidad virtual, a veces se le asignará la tarea de lograr algo específico y nuevo para usted que puede requerir que escriba un código personalizado o encuentre opciones de terceros para resolver su problema. Esto es algo que es bastante común en el desarrollo, y aunque en ocasiones la solución será escribir su propio código, a menudo hay una solución de terceros que puede ayudarlo a hacer lo mismo mucho más rápido.

Cuando estás haciendo este tipo de investigación, hay algunas cosas a tener en cuenta.

  • No trabaje en la rama maestra de su código. Esto es experimental, las cosas se romperán, habrá que cambiar las cosas, lo último que quieres es que algo se rompa permanentemente. El control de versiones es importante!
  • Averigua cuáles son tus prioridades y objetivos exactos. ¿Qué problema estás buscando resolver? ¿Cuál es tu presupuesto? ¿Cuáles son tus limitaciones? Definir claramente el problema ayudará a largo plazo.
  • Timebox: la investigación debe limitarse a una cantidad de tiempo específica. Esto no es de final abierto. Date una fecha límite para decidir la mejor solución.

Entonces, ¿cuáles fueron las prioridades, objetivos y limitaciones para este proyecto?

  • Agregue video 360 a Unity, para que los estudiantes puedan hacer videos interactivos
  • Debe poder verse con Google Cardboard
  • Debe ser gratuito (sin complementos de terceros pagados)
  • Debe ser relativamente fácil de usar y funcionar tanto para Android como para iPhone

Opción 1: ¿Puede Unity hacer esto de forma nativa?

La primera opción a considerar en este caso fue “¿Puedo hacer esto en Unity sin ningún software de terceros?”. En este caso, la respuesta es “bueno, tal vez”. En Unity 5.4, las texturas de video son compatibles con el uso de MovieTexture. Dado que ya tengo mi video 360, ¿es tan simple como poner eso como una textura en una esfera y luego colocar la cámara en el centro de la esfera? Hay algunas cosas a tener en cuenta aquí: si coloco la cámara en la esfera, las normales estarán orientadas en la dirección incorrecta.

Las normales son la propiedad de un vértice que le dice a un renderizador en qué dirección debe reflejarse la luz. Cuando creas una esfera 360, esas normales apuntan hacia afuera, para que puedas ver la esfera. Si mueve la cámara dentro de ella, no verá nada, incluida su hermosa textura de película 360. Aún así, este es un problema bastante simple de resolver. Esta opción es gratuita, por lo que no hay ningún problema allí. Pero el punto clave aquí es mi restricción de que pueda ver esto usando Google Cardboard. MovieTextures no funciona en dispositivos móviles, lo que significa que tampoco funcionan en Cardboard. Por lo tanto, la solución integrada no es una opción en este caso. También hay algunos problemas adicionales con MovieTexture, ya que requiere que Quicktime esté instalado en su máquina, pero dado que Apple ya no es compatible con Quicktime para versiones posteriores de Windows, esto sería un desafío para algunos usuarios.

Unity Video Sphere

Opción 2: ¿podrá Unity hacer esto en una versión futura?

La siguiente opción que miré fueron los próximos lanzamientos de Unity. Resulta que en la hoja de ruta para sus futuros lanzamientos, mencionan una nueva API de video, que (con suerte) incluirá soporte para dispositivos móviles. Lamentablemente, en mi caso, esta tampoco es una opción en este momento, ya que ese lanzamiento no está abierto al público. Aún así, si esto era algo que buscaba para un proyecto a más largo plazo, verificar si la funcionalidad que desea está en una próxima compilación es siempre una excelente segunda opción para el software que está en desarrollo activo. Pasar una cantidad significativa de tiempo desarrollando algo sorprendente para resolver un problema que tienes, solo para darte cuenta de que la próxima versión del motor que estás usando hace exactamente eso puede ser una experiencia frustrante, así como una pérdida de tiempo que podrías tener Pasé trabajando en una función diferente.

Opción 3: MediaDecoder

Mi siguiente opción fue comenzar a buscar en la tienda de Unity Asset para ver si podía encontrar algún gran paquete de video de realidad virtual. Me encontré con este increíble paquete creado por el equipo de I + D de HTC Vive llamado MediaDecoder. Pasé un poco de tiempo probándolo, y funciona exactamente como lo prometí, pero al igual que con la opción MovieTexture, no está diseñado para dispositivos móviles, solo para PC, por lo que una vez más, no es una solución a mi problema. Aunque no fue una solución en este caso específico, saber que existe y cómo funciona podría ser valioso para mí en el futuro, por lo que pasar media hora probando sigue siendo un uso valioso de mi tiempo.

Paquete de HTC Vive MediaDecoder

Opción 4: PopMovie

Otro gran paquete que he usado antes en Unity es PopMovie. En este caso, este es un paquete de Unity que sé que funciona bien en realidad virtual para todas las opciones de hardware que necesitaría, y es extremadamente fácil de usar. Sin embargo, en este caso, el problema es que este paquete cuesta $ 100. Si bien esto sería genial para un proyecto comercial donde los $ 100 podrían ahorrarme días o incluso meses de tiempo de desarrollo, en este caso, exigir a mis estudiantes que compren un paquete de $ 100 para completar el curso no es realmente una opción.

PopMovie para Unity

Opción 5: AVPro

Finalmente, uno de los otros desarrolladores de cursos de VRND, Matt Sonic, le recomendó algo con lo que había trabajado antes: AVPro. Si bien esto tampoco es gratuito como una versión completa, que cuesta $ 450, hay una versión de prueba del paquete que agrega marcas de agua a los videos. Dado que el propósito de mis pruebas fue encontrar algo que los estudiantes puedan usar para crear proyectos educativos, las marcas de agua no son un problema para mí. Lo probé, y el paquete hace lo que quiero y necesito que haga, y cumple con todos mis requisitos. ¡Menos de un día después y resolví mi problema, encontré una solución que encaja, y ahora todo lo que tengo que hacer es enseñarle a los estudiantes de Udacity Virtual Reality NanoDegree cómo usarlo!

Demostración de AVPro que muestra Big Buck Bunny

Con suerte, esto le dará una idea de cómo es ser un desarrollador: muchas veces, no conoce automáticamente las respuestas a cada problema, sino que pasa mucho tiempo con google, probando y volviendo a probar hasta que tengas un camino sólido hacia la victoria.