Llego tarde, pero más vale tarde que nunca. Aunque ya hace tiempo que estoy interesado en VR (realidad virtual) y AR (realidad aumentada) apenas he tenido tiempo de estudiar al respecto y realizar pruebas. Hasta el momento he estado más interesado en capturar live action para VR que en generar contenido 3D, aunque ahora también estoy empezando a estudiar al respecto.
Hace un par de días tuve la oportunidad de probar el HTC Vive durante unas cuantas horas y definitivamente, poco a poco iré realizando más pruebas relacionadas con realidad virtual, al tiempo que voy estudiando la materia. Me interesa especialmente la evolución que sufrirá la narrativa, y los cambios que veremos en el lenguaje cinematográfico tal cual lo conocemos hoy.
Como primer ejercicio tanto de captura como de generación de contenido 3D, he realizado una prueba muy sencilla, pero que me sirve como primer contacto para renderizar imágenes estereoscópicas mediante estereográfica y probarlas utilizando el headset más simple y barato del mercado, Google Cardboard y UMI 3D. (más info abajo).
Antes de explicar la sencillísima forma de renderizar este tipo de imágenes, vamos a explicar un poco del contexto necesario para entender de forma muy básica algunos principio de VR.
Existen dos tipo de sistemas de realidad virtual. Aquellos en los que podemos rotar la cabeza alrededor de un mundo virtual, y aquellos en los que además de rotar, también podemos trasladarnos por el espacio, incluso interactuar con el. En el caso de las Google Cardboard y otros headsets para smartphones, solo podemos rotar la cabeza para inspeccionar alrededor del entorno. Para ello, nos servimos del giroscopio y del acelerómetro que incorporan los teléfonos hoy en día.
Hoy por hoy utilizamos dos tipos de formatos de imagen. Cuando hablamos de contenido pre-renderizado. Por un lado tenemos las imágenes lat-long, o también llamadas equirectangular, y por otro lado las imágenes cúbicas. Las dos se mapean de forma esférica para crear un mundo virtual. Básicamente necesitaremos generar dos imágenes esféricas, una para cada ojo.
Las imágenes lat-long son geniales, porque podemos ver todo el mundo en un solo golpe de vista. El problema que acarrean, es que el 66% de la imagen corresponde a los polos de la esfera virtual donde se mapean, y en esos polos hay demasiada distorsión.
Las imágenes cúbicas para este tipo de contenido son quizás más efectivas que las lat-long, ya que las imágenes se mapean virtualmente en el interior de un cubo, de tal forma que los polos estarán proyectados en dos caras del cubo, lo que corresponde a un 33% del total de la imagen. Esto significa menos distorsión cuando se convierte a espacio esférico.
Estereografía. Es el acto de proporcionar dos imágenes desde dos cámaras distintas. Entre cada una de las dos cámaras existe un desfase que representa la distancia entre un ojo y el otro. En el caso de cine stereo, esto se realiza renderizando una imagen para el ojo izquierdo y otra para el derecho, y ambas se proyectan en una pantalla plana.
En el caso de VR, necesitamos renderizar no solo izquierda y derecha, si no también frontal y trasera, siempre manteniendo el mismo desfase entre cámaras, para así poder rotar en todas direcciones.
Por supuesto, hay mucha teoría y conceptos básicos que necesitamos conocer a la hora de trabajar con VR, pero para este simple ejercicio, creo que este es contexto suficiente.
Trabajando en software 3D
- En esta ocasión, voy a combinar material rodado con material generado mediante VFX.
- Ya tendremos tiempo en otra ocasión para hablar sobre sistemas y metodologías de captura de fotografía y video. Hoy nos basta con saber que he capturado una imagen panorámica utilizando un rig Nodal Ninja y un fisheye lens, montado sobre una Canon 5 Mark III. La resolución capturada es de alrededor de 12k
- Con esa imagen puedo fácilmente crearme un mundo virtual fotorrealista, ya que está basado en fotografías. Como este es un ejemplo sencillo, no quiero perder tiempo en crearme un mundo virtual por completo empezando desde cero. Además, lo que más me interesa en VR es precisamente combinar elementos reales con elementos virtuales.
- Esta imagen de arriba es el panorama que he creado a partir de varias fotografías realizadas en Tate Modern, aquí en Londres. Puedes descargarte este panorama y otros completamente gratuitos aquí. Además, son imágenes HDRI, con lo que podré utilizar el mismo mapa para iluminar mi escena, al menos en parte.
- Como el mapa panorámico es 360 x 180 puedo cubrir todo el campo de visión para posteriormente rotar mi cabeza con el headset de VR y mirar en cualquier dirección.
- El siguiente paso es crear los elementos virtuales de mi escena. En este ejercicio simplemente voy a posicionar un robot en el centro de la escena y un par de esferas.
- Lo ideal es colocar la cámara virtual en aquella posición del entorno donde quieres que los espectadores estén colocados posteriormente en la experiencia de realidad virtual. Recuerda que en este ejemplo utilizamos un headset de smartphone, con lo que el espectador no podrá caminar alrededor del entorno, solo mirar en todas direcciones.
- Como podéis ver más abajo, la escena es muy simple. Utilizo el propio HDRI panorámico para iluminar. También estoy utilizando un par de softboxes como key lights.
- Vray no renderiza el fondo en sus environment lights (how clever...). Así que como quiero ver el entorno en el render tengo que crear un environment override con la misma imagen panorámica que utilizo para iluminar, asegurándome que está en la misma orientación.
- Tambien utilizo un shadow catcher para proyectar las sombras de mis assets 3D en el entorno live action.
- En este punto, si realizo un render, deberia de obtener el resultado esperado. Simplemente trabajo mi escena como lo haria en cualquier otra ocasion. En este caso con una camara rectilinear y con resolucion HD.
- El siguiente paso es añadir un Vray extra attribute para convertir nuestra cámara en una cámara estereoscópica. Por defecto dejamos la distancia entre ojos A 6.5cm que es más o menos lo normal en el ser humano. También dejamos desactivada la opción de especificar un punto de enfoque concreto, a menos que creativamente queramos dirigir la mirada del espectador a un lugar concreto del entorno.
- Si volvemos a renderizar, obtendremos un render para cada ojo. Ya tenemos estereoscopía.
- Ahora que ya tenemos un render para cada ojo, lo siguiente que tenemos que hacer es renderizarlo de forma esférica para poder mapearlo en un mundo virtual. En este caso vamos a utilizar una proyección cúbica, que como vimos anteriormente tiene menos distorsión.
- Para ello basta con crear un override de camara tipo cube 6x1
- Finalmente tenemos que indicar la resolución del render. Esto depende del dispositivo VR que vayas a utilizar, aplicación, soporte, etc. Los desarrolladores de hardware tienen documentación al respecto, recurre a ella. En este caso, para Google Cardboard y similares utilizamos una resolución de 9216x1536.
- Como buena práctica es recomendable desactivar el filtrado, para así no acentuar los posibles errores de stitching.
- Si chequeamos el render en Nuke obtendremos algo similar a esta imagen.
- Perfecto, ya solo nos queda publicar nuestra imagen para visualizarla en un dispositivo VR.
- Estoy utilizando irisVR que permite subir las imágenes a través de una aplicación web, para posteriormente visualizarlas a través de su propia app (apple y android) utilizando tu VR headset.
- Simplemente tienes que crearte una cuenta gratuita y subir las imágenes.
- Una vez subidas las imagenes, apareceran en tu libreria.
- Ya utilizando tu smartphone, ejecuta la app de irisVR llamada Scope y en tu libreria podras ver todas tus imagenes subidas a traves de la web.
- Selecciona cualquier de ellas y la propia app te indicara que coloques tu movil en el VR headset.
- En este caso estoy utilizando dos diferentes, Google Cardboard y UMI Box 3.
- Y con esto ya tenemos nuestros renders 3D y fotografias listas para ver en un VR headset.
- Asi es como se ven el el movil cuando no tenemos el headset puesto.
- Obviamente esta experiencia dista mucho de interactuar con contenido digital o fotogrametría dentro de un headset como el HTC Vive, pero como primer ejercicio no estaámal. Seguiremos hablando de VR en el futuro a medida que aprendamos mas al respecto.