Publicado por Nikolai Khabarov, Embedded Expert DataArt, Smart Home Technology Evangelist, Inventor.Este artículo es una breve digresión sobre los conceptos básicos del trabajo con realidad virtual y aumentada. No establecí la tarea de revelar completamente todas las características del SDK de Google VR y planeé dar una base mínima a aquellos que estén interesados en estas tecnologías y quisieran comenzar a trabajar con ellas.
De la historia del 3D
Para ver una imagen tridimensional, lo primero que debemos hacer es organizar la transferencia de dos imágenes diferentes para el ojo izquierdo y derecho. Está claro que cuando miramos cualquier objeto en la vida ordinaria, nuestros ojos lo ven desde diferentes ángulos, porque están a cierta distancia el uno del otro. En realidad, debido a esto, percibimos un espacio tridimensional alrededor.
La idea misma de la imagen en 3D es bastante antigua, hay muchas tecnologías que le permiten reproducir una imagen tridimensional. Por ejemplo, todos vieron gafas anaglifo con lentes de diferentes colores en las salas de cine. La imagen se muestra en la pantalla desde dos ángulos y un espectro de color dividido en dos partes. En este caso, cada ángulo se pasa a través de uno de los filtros, debido a lo cual aparece la ilusión de volumen. La principal desventaja de este método es una notable pérdida de reproducción del color.
En la siguiente etapa del desarrollo de la tecnología, aparecieron las llamadas gafas de obturación, que también se llaman gafas de válvula de luz, también se usan en cines. El dispositivo de estas gafas es diferente: cada lente tiene una pantalla pequeña con una resolución de un píxel, puede cerrar completamente la imagen o saltearla por completo. Las gafas alternan alternativamente entre pantallas, lo que nos permite ver la imagen con uno u otro ojo. Al mismo tiempo, para ver una imagen tridimensional, necesitamos sincronizar el cambio de gafas con un televisor o pantalla de cine. Esto se puede hacer a través del canal de radio o, como suele suceder, con la ayuda de un receptor de infrarrojos y un transmisor instalado en las gafas, ubicado cerca de la pantalla. Otro inconveniente de este método es la pérdida de brillo: durante la mitad del tiempo no vemos nada con un solo ojo. Además, el equipo de reproducción requiere una alta velocidad de cuadros.
Un desarrollo interesante de la idea fue la tecnología de polarización: con la ayuda de un filtro, podemos cortar solo la parte necesaria de las ondas polarizadas en diferentes direcciones. Seguramente todos están familiarizados con los filtros polarizadores para cámaras que pueden eliminar el deslumbramiento. En el caso de una imagen en 3D, se prepara una pantalla de una manera especial, algunas líneas de las cuales comienzan a emitir luz polarizada verticalmente, otras, la luz polarizada horizontalmente. En los cines, la polarización circular también se usa cuando la luz se gira hacia la derecha o hacia la izquierda.
La simplicidad es la clave del éxito.
Los inventores de Google Cardboard hicieron todo simple e ingenioso, y decidieron usar un teléfono inteligente común para transferir imágenes tridimensionales. Antes de esto, había muchas opciones para gafas equipadas con varias pantallas, pero la resolución de la matriz de tales pantallas era muy modesta. Además, tales gafas eran muy caras. Y el Google Cardboard propuesto es un trozo de cartón ordinario con dos lentes, en el que queda para colocar su teléfono. Esto es suficiente para ver una imagen tridimensional con tus propios ojos.
Otro desarrollo de Cardboard fue la aparición de
Ensueño - el dispositivo no difiere del predecesor por el principio de funcionamiento, pero, en comparación con él, tiene ventajas significativas. En particular, el material del que está hecho Daydream ya no es solo cartón, es de una calidad mucho mayor. Otra ventaja indiscutible es el soporte de software de Daydream.
La pantalla de cualquier teléfono tiene un conjunto de características, como lentes de cartón. El Cartón clásico está marcado en forma de un código QR, y antes de colocar su teléfono en él, tenía que leer este código para ingresar los parámetros de la lente en el teléfono. Al combinar los parámetros, el dispositivo podría calcular cómo mostrar la imagen para que llegue a usted con una distorsión mínima.
Cuando se usa Daydream, es suficiente con poner el dispositivo para que lea los parámetros de las gafas usando NFC. La etiqueta en sí está oculta en la tapa posterior.
El cartón también tiene un pequeño panel de control; muchos fabricantes han lanzado análogos de cartón y sus controles remotos, los más diversos: inerciales, gravitacionales, solo joysticks. Daydream tiene dos botones y un pequeño panel táctil que le permite mover objetos en el espacio o moverse usted mismo moviendo su dedo. El Cardboard solo tenía un botón, en el caso de las gafas, que simplemente grababa la prensa y transmitía esta información a la pantalla del teléfono.
El cartón se podía usar con cualquier teléfono que encajara físicamente en la caja y era muy barato. Para trabajar con Daydream al momento de escribir, solo se han certificado tres teléfonos: ZTE Axon 7, Google Pixel y Motorola Moto Z, planean agregarles nuevos modelos, pero para usar Daydream, se requiere un sistema operativo de al menos Android 7.0.
Interacción con la realidad virtual.
La parte más interesante comienza cuando no solo miramos una imagen tridimensional (también se puede ver en 3D en la televisión), sino que comenzamos a volver la cabeza.
Cualquier teléfono moderno está equipado con sensores microelectromecánicos. Estos son dispositivos microscópicos en los que la electrónica y las pequeñas piezas mecánicas móviles se recogen en un cristal, lo que permite rastrear varios factores externos. Probablemente todos sepan qué es un giroscopio: un dispositivo con el que puedes averiguar el ángulo de rotación. En el caso de los sensores MEMS, el giroscopio no proporciona el ángulo de rotación en sí, sino la velocidad angular. En su interior hay un pequeño elemento que se mueve bajo la influencia de la fuerza de Coriolis (espero que recuerde lo que es, desde el punto de vista de la física). Esto le permite conocer la velocidad angular, y ya integrándola, podemos determinar el ángulo de rotación. Es cierto que este método es malo porque, al girar el teléfono en diferentes direcciones, lo más probable es que no podamos volver al mismo punto donde estábamos originalmente.
El segundo sensor interesante es el acelerómetro. Determina las fuerzas que actúan en el teléfono, en particular, la aceleración de la gravedad. En un estado de calma, mostrará la aceleración de gravedad habitual en nuestro planeta, que corresponde a aproximadamente 9.8 m / s². Pero, si comenzamos a mover o rotar el teléfono, le daremos aceleración. Como resultado, en estos momentos, el sensor no dará las lecturas necesarias. Solo cuando dejamos de movernos el sistema se calmará y podremos reconocer la fuerza dirigida hacia la tierra. Como puede ver, para determinar simplemente la posición del teléfono en el espacio, ninguno de los dos sensores que mencionamos es adecuado.
Sin embargo, dado que el giroscopio "se escapa" con el tiempo y el acelerómetro "se escapa" solo en el momento de la rotación, es posible calcular la posición del dispositivo utilizando varios métodos matemáticos, por ejemplo, el filtro de Kalman. Si programó para Android, probablemente notó que en el SDK de Android en la lista de sensores no solo hay un acelerómetro y un giroscopio, sino también el llamado TYPE_ORIENTATION. Este es solo uno de esos métodos matemáticos que calculan la posición del teléfono utilizando la información de ambos sensores. Ellos mismos, como regla, se ensamblan en un microcircuito, muy a menudo se coloca un sensor de campo magnético, es decir, una brújula.
Aquellos que estén interesados en los quadrocopters, probablemente notaron que la inscripción "barómetro" apareció en los nuevos modelos. Obviamente, este dispositivo no está diseñado para el análisis del clima. Tal sensor se usa para medir la presión atmosférica para determinar la altura. También funciona en el teléfono, y podemos calcular su movimiento a lo largo del eje vertical hasta el centímetro más cercano. Naturalmente, las lecturas deben suavizarse con un filtro.
Practica
Google ha lanzado el SDK de Google VR para sus dispositivos Cardboard y Daydream. Este último es un conjunto de componentes que nos ayudan a desarrollar aplicaciones específicamente para mostrar la realidad 3D, está disponible tanto en iOS como en Android. Este SDK facilita la creación de aplicaciones para realidad virtual y aumentada.
Google VR SDK se encarga de todo el trabajo con sensores, gracias a él, no necesitamos calcular cuaterniones para entender cómo rotar una escena en OpenGL cuando volvemos la cabeza. Simplemente ponga Ver en la actividad, y el SDK lo hará todo por sí solo.
Echemos un vistazo rápido a cómo podemos comenzar rápidamente con el SDK de Google VR y cómo crear una aplicación de Android simple. Primero, necesitará Android Studio preinstalado.
Descargue el SDK del
repositorio oficial de
git . La documentación del SDK está disponible
aquí .
Ahora solo abra el directorio raíz del repositorio usando Android Studio. Allí puede encontrar ejemplos que se pueden compilar desde la fuente y ejecutar en su dispositivo Android. El proyecto tiene inmediatamente configuraciones para ejecutar ejemplos.

Daydream también tiene su propio controlador pequeño, con el que también es compatible el SDK. Tiene un conjunto de funciones de devolución de llamada, y puede usar este controlador de forma segura en sus diseños. Hay un ejemplo especial en el SDK 'sdk-controllerclient'.
Para la percepción más realista, me gustaría sentir el sonido, y para que quede claro de dónde viene, a dónde se dirige y en qué entorno se distribuye. Hay un GvrAudioEngine en la biblioteca para esto, que se asemeja a una Biblioteca de audio abierta simplificada o Direct3D Sound. Es suficiente para comunicar las coordenadas de la fuente de sonido en el espacio, y la biblioteca misma mezclará el sonido según lo necesite. Puede especificar varios materiales del entorno, por ejemplo, puede construir una escena en la que se reproduzca música diferente de las columnas a la derecha e izquierda, y puede especificar más fuentes de sonido.
El ejemplo 'sdk-treasurehunt' es un juego bastante simple implementado en OpenGL puro. También utiliza GvrAudioEngine para dar al juego efectos de sonido envolvente.
Hay un SDK de Google VR y un conjunto de vistas maravilloso, aunque pequeño, que puede incrustar en sus aplicaciones. En particular, VrPanoramaView es un componente para mostrar fotos panorámicas a 360 grados y una pantalla estereográfica. Simplemente puede poner la foto en los recursos de la aplicación y llamar a VrPanoramaView.loadImageFromBitmap () en una sola línea para tomar esta imagen en particular y mostrarla. Como resultado, obtienes un componente listo para usar que el usuario puede ver en su aplicación; esta es una vista normal, igual que todos los demás en Android.
Puede mostrar varios de estos componentes a la vez en una pantalla, puede mostrar uno en pantalla completa y, al mismo tiempo, para cambiar entre gafas y pantalla simple, solo tiene que hacer clic en el botón que dibujará la biblioteca. También es posible agregar video usando el componente VrVideoView. Y si te cansas de mirar en algún momento, puedes rebobinar el video.
Dos ejemplos de SDK 'sdk-simplepanowidget' y 'sdk-simplevideowidget' muestran lo sencillo que es crear aplicaciones con tales objetos integrados.
Surge la pregunta, ¿dónde conseguir esos videos e imágenes? Pero algunas compañías ya han comenzado a producir cámaras en forma de pequeñas baratijas con lentes en ambos lados. Con su ayuda, puede tomar fotos panorámicas a 360 grados, incluso pueden conectarlas independientemente, pero el video no funcionará. Para hacer esto, necesitará un diseño bastante costoso y un software especial que pueda pegar las imágenes resultantes y convertirlas en contenido adecuado para mostrar en realidad virtual.

La solución
Odyssey incluye 16 cámaras sincronizadas.
Solicitud
¿Dónde se pueden aplicar las tecnologías descritas? La primera opción es obviamente un juego. Como regla general, OpenGL son juegos de disparos y otros juegos en los que necesitamos una sensación de profundidad. Netflix lanzó recientemente un servicio para mostrar contenido en 3D, esta biblioteca también puede ayudarlo a escribir algún tipo de solución personalizada de visualización de películas.
Puede permitir que los clientes en la tienda que usan teléfonos vean su descripción adicional junto a las etiquetas de precio.
Puede aplicarlos en ventas inmobiliarias. Conocer al comprador y al vendedor suele ser inconveniente. Y con la ayuda de un video de este tipo, será mucho más fácil para el comprador evaluar de antemano si debería incluso mirar este o aquel objeto.
Los museos son otro lugar ideal para aplicar tecnología. En los museos modernos, dentro del salón a menudo hay computadoras a través de las cuales puedes acceder a información adicional, escuchar algo. Pero estas computadoras están ocupadas regularmente, y el teléfono siempre está al alcance de todos, y él puede agregar elementos de realidad aumentada a la exposición. La biblioteca funcionará con casi cualquier modelo de dispositivo y, si lo desea, podemos transmitir más información a los visitantes del museo.
Aquí hay un pequeño anuncio de Google que demuestra cómo se ve Google Earth en gafas de realidad virtual. Puede ver estos videos en un monitor normal, pero las mismas imágenes en gafas se verán voluminosas. El movimiento en el espacio se lleva a cabo usando el control remoto Daydream, también para algunos teléfonos es posible usar el barómetro y moverse simplemente girando la cabeza.
Otra idea muy interesante de usar tales tecnologías es la impresión 3D.
Una startup sugirió que los usuarios usen la realidad aumentada para construir modelos junto con cualquier otra herramienta de modelado. Con un controlador convencional, no puede obtener modelos de alta precisión: el error será muy grande. Pero podemos crear un pequeño recuerdo con la ayuda de dichos controladores y ordenarlo directamente desde la aplicación para imprimirlo en una impresora 3D. Esta idea es buena y se monetizará muy pronto, especialmente porque las impresoras para tales productos se están volviendo cada vez más baratas.