Cómo creamos una aplicación de iOS para grabar un video en 3D (estudio de caso)
Publicado: 2022-03-10Nuestro equipo también se sintió atraído por la filmación en 3D. Estudiamos a fondo las características del aparato visual humano y los detalles técnicos de la fotografía estereoscópica. Luego, decidimos desarrollar una aplicación iOS para grabar videos en 3D y subirlos a YouTube. La idea detrás de la aplicación era facilitar la grabación de videos en 3D montando dos iPhones en un marco especial, ¡y lo logramos! Así fue como apareció la aplicación Stereo Video Recorder.
Hemos decidido compartir con los lectores de Smashing Magazine nuestra investigación sobre la creación de video 3D. También nos gustaría hablar sobre las características técnicas de la creación de la aplicación y proporcionar dibujos detallados del marco utilizado para montar los iPhones.
Cómo todo empezó
En nuestro estudio de funciones de video 3D, comenzamos con experimentos en realidad virtual. Construimos un marco de cartón y miramos al mundo a través de dos iPhones en formato 3D. Los detalles de nuestra investigación se pueden encontrar en nuestro blog. Iremos más lejos aquí.

Continuando con esta investigación, decidimos crear otro prototipo de la aplicación, uno que permite grabar video 3D estereoscópico y subirlo a YouTube.
La estereoscopia es una forma de crear la ilusión de profundidad en una imagen plana. La grabación estéreo se conoce desde el siglo XIX. Al crear video 3D estereoscópico, simulamos la visión binocular. Debido a la distancia entre las pupilas, es mucho más fácil para el cerebro humano analizar el volumen del espacio circundante: la distancia a los objetos. La estereoscopia binocular es ampliamente utilizada en la industria cinematográfica. Es difícil encontrar una obra maestra de Hollywood que no utilice el formato estéreo.
El propósito de nuestro prototipo de aplicación era grabar video simultáneamente con dos cámaras de iPhone diferentes y luego fusionar los archivos de video resultantes en uno para verlo con cualquier anteojo 3D, por ejemplo, Google Cardboard, un casco de realidad virtual o un televisor 3D.
Imagen estéreo y nuestra percepción de una imagen 3D
Permítanme profundizar en las imágenes estéreo y nuestra percepción de las imágenes en 3D. De hecho, la estereografía funciona como nuestros ojos, que evolucionaron con el tiempo. Debido a que existe una distancia entre nuestros dos ojos, las imágenes proyectadas en las retinas de los ojos izquierdo y derecho son un poco diferentes. Esta diferencia se denomina paralaje (un efecto en el que la posición de un objeto parece ser diferente cuando se ve desde dos posiciones diferentes). Sin embargo, el observador no ve dos imágenes separadas. El aparato visual forma una percepción de una sola imagen espacial y puede sentir volumen, distancia, etc. Es importante entender que el aparato visual detecta, procesa y proyecta imágenes espaciales y objetos ubicados en el espacio en ciertos puntos.

Una comprensión de cómo funciona el aparato visual humano permite una investigación exhaustiva de cómo se debe preparar y reproducir el material visual para que el espectador pueda tener una idea de una imagen 3D completa.
Veamos todo en orden.
Como cualquier dispositivo que opera bajo las leyes de la física, el aparato visual humano tiene sus propias características y limitaciones.
En primer lugar, debemos entender que, en términos de nuestro proceso visual, enfocamos nuestra mirada en un solo punto, llamado punto de vista (POV). De hecho, POV es el punto donde se enfocan los ojos y por donde pasan las líneas de visión izquierda y derecha. Dependiendo de la distancia al POV, el ángulo entre las líneas de visión de los ojos izquierdo y derecho será diferente. Los ojos están dirigidos de manera que las líneas convergen en el POV. Estas líneas son paralelas cuando la persona mira a lo lejos o, en otras palabras, al infinito.

Las imágenes proyectadas en la retina difieren ligeramente debido al pequeño desplazamiento de los ojos. Esto generalmente se manifiesta en forma de desplazamiento de la imagen que la persona está mirando: hacia la izquierda para el ojo izquierdo y hacia la derecha para el ojo derecho. Este fenómeno, ya mencionado, se llama paralaje.
Sin embargo, el aparato visual puede percibir el volumen solo en ciertos valores de paralaje. Dependiendo de la distancia al objeto, el paralaje será diferente para objetos cercanos y lejanos. Puede ser que el paralaje exceda el valor del límite y la persona no vea un objeto 3D, sino una imagen bifurcada. Un experimento que involucre el cambio de la vista de objetos cercanos a objetos lejanos podría ofrecer una mejor comprensión de los detalles de esto.

Como se puede ver en la figura, si fija su vista en el primer plano, los objetos de fondo comenzarán a bifurcarse. Si fija su vista en el fondo, la imagen de primer plano se bifurcará. Esta característica del aparato visual juega un papel esencial en las características de la filmación en 3D y la reproducción de imágenes estéreo.
En la vida ordinaria, no notamos este efecto porque estamos acostumbrados a seguir un solo objeto, y cuando cambias tu vista, tu vista se adapta rápidamente a las nuevas condiciones. Sin embargo, cuando intentamos proyectar artificialmente una imagen volumétrica utilizando dos imágenes con un paralaje predeterminado, el aparato visual ya no puede adaptarse tan rápido como lo hace habitualmente. Para que el aparato visual funcione en un modo normal, el equipo de video 3D debe ajustarse a los ojos del espectador, analizando dónde se encuentra el punto de observación. Este equipo también debería crear imágenes estéreo con el paralaje requerido.
Sin embargo, implementar esto es técnicamente muy difícil. Por lo general, se utiliza un esquema simple con parámetros de tiro geométricos y técnicos fijos. Estos parámetros serán diferentes para las vistas de cerca y de lejos. Por parámetros geométricos y técnicos, nos referimos al campo de visión de las cámaras, el desplazamiento horizontal de las cámaras desde el centro, el ángulo de rotación de las cámaras y el punto de convergencia de las cámaras.
Por lo tanto, no podría fotografiar objetos cercanos y distantes por igual si solo tiene un equipo de disparo (dos cámaras y un marco). Más precisamente, podría disparar, pero sería extremadamente incómodo para una persona ver un video en el que, por ejemplo, el equipo está ajustado para una vista lejana pero filma una vista cercana, o viceversa, con el efecto estéreo. débilmente expresado en el fondo.

De la idea a la práctica: cómo montar los iPhones
Volvamos a nuestra idea. Decidimos desarrollar un prototipo de aplicación móvil que pueda grabar video 3D estéreo. Teniendo en cuenta todo lo anterior, necesitábamos evaluar lo siguiente:
- la posibilidad básica de tomar una imagen estéreo usando dos iPhones;
- el rango efectivo de distancias que garantizaría una percepción estéreo cómoda y de alta calidad, teniendo en cuenta las condiciones habituales de uso de una cámara.
Cuando estuvimos muy cerca de crear un prototipo, lo primero que hicimos fue evaluar el potencial de la cámara del iPhone para nuestra tarea. Nos sorprendió gratamente descubrir que el iPhone ofrece un ángulo de visión aceptable para una toma de primer plano. Como ya se mencionó, colocar dos cámaras una al lado de la otra no es suficiente para obtener un buen efecto estéreo. Por lo general, el algoritmo para calcular el disparo comienza con la configuración de los parámetros del plan, es decir, las distancias a los objetos más cercanos y más lejanos, y las distancias entre los objetos en el plano del encuadre. A continuación, se seleccionan los parámetros de instalación en función de estos datos.
Se puede hacer un cálculo simplificado de la distancia entre cámaras basado en esta fórmula:

-
Parallax<sub>fore</sub>
establece el desplazamiento máximo de la imagen de primer plano cuando los fotogramas del par estéreo se superponen entre sí. -
L<sub>fore</sub>
= distancia al objeto en primer plano -
f
= distancia focal de la lente -
L
= distancia al punto focal de la lente -
M
= zoom de cuadro
En nuestro caso, tuvimos que cambiar ligeramente el algoritmo, porque estábamos usando una cámara estándar y, en consecuencia, la distancia focal de la lente está fijada de manera rígida. Nuestra tarea era conseguir un efecto estéreo cómodo y un rango aceptable de distancias al objeto de disparo. Por lo tanto, necesitábamos realizar varios experimentos, colocando ambas cámaras entre sí, para encontrar la distancia requerida entre sus centros (la distancia entre los centros de las cámaras) y los ángulos de convergencia.
Para simplificar la tarea en el proceso de creación de prototipos, decidimos no rotar las cámaras para lograr la convergencia en un punto determinado, sino utilizar la convergencia en el infinito. Resultó que, para obtener el mejor resultado, es necesario ajustar con precisión el ángulo de convergencia de las cámaras. Y si tenemos en cuenta que planeábamos hacer un marco de cartón para montar los iPhones, entonces ajustar el ángulo de convergencia de las cámaras se vuelve prácticamente imposible. Entonces, después de una serie de experimentos, llegamos a un compromiso, obteniendo el equilibrio óptimo entre la distancia entre las cámaras para permitir disparar en la zona cercana y obtener un buen efecto estéreo.


Nuestro objetivo era desarrollar el marco más simple para los iPhones, uno que fuera fácil de fabricar, conveniente para operar, proporcionar los parámetros de disparo necesarios y tener la rigidez requerida. Entonces, elegimos un modelo 3D que puede estar hecho de material plástico o espuma (poliestireno, en este caso) mediante fresado o impresión 3D. En el futuro, por supuesto, querremos desarrollar un dispositivo que sea más simple de fabricar, por ejemplo, un dispositivo de cartón.
La única limitación de hardware en este momento es que necesita usar los mismos dispositivos, con cámaras absolutamente idénticas.


A continuación, se muestran dibujos detallados del marco para diferentes versiones de dispositivos con tamaños de pantalla de 4,0, 4,7 y 5,5 pulgadas, adecuados para el iPhone 6+ y 6S+, para el 6, 6S y 7, y para el 5 y 5S.



Aplicación para grabación de video 3D estereoscópico
La aplicación se ejecuta simultáneamente en dos dispositivos, pero el disparo se controla desde solo uno de los dispositivos, por lo que no es necesario controlar el proceso de disparo de alguna manera especial.
De forma simplificada, el escenario de uso estándar de la aplicación consta de la siguiente secuencia de acciones:
- Monta los dos iPhones en el marco.
- Ejecute la aplicación en los dos dispositivos.
- Determine cuál de los dispositivos servirá como maestro y cuál como esclavo. Comience a grabar desde el dispositivo maestro. (No realice ninguna acción adicional en el segundo dispositivo).
- Después de grabar, espere la sincronización de los fragmentos grabados y la reproducción de un video listo para subir a YouTube.
- Sube el video a YouTube en cualquier momento después de la sincronización y luego míralo en tu TV 3D o con gafas de realidad virtual.
Vale la pena señalar que el trabajo principal se realiza solo en uno de los iPhones, el dispositivo maestro. Es en este iPhone que iniciamos el disparo. El video se procesa y se sube a YouTube también en el dispositivo maestro. Toma algún tiempo preparar el video para subirlo a YouTube. Esto dependerá del rendimiento de los dispositivos utilizados y de la calidad de la conexión entre los dispositivos maestro y esclavo.
El segundo iPhone, que actúa como esclavo, se usa solo como una segunda cámara. Al final de la filmación, envía el fragmento de video al dispositivo maestro.

Las capturas de pantalla de la pantalla principal de la aplicación, que muestran la galería de videos tomados, se muestran a continuación. Los videos se pueden ver tanto a través de un reproductor integrado como en YouTube. Aquí, también puede ver cómo se asignan otros roles de disparo (maestro y esclavo) a los dispositivos.


Obstáculos técnicos
desincronización
Todas las manipulaciones con los fragmentos de video se realizan con la ayuda del poderoso framework AVFoundation, usando, si es posible, aceleración de hardware.
Para subir a YouTube, los fragmentos de video se pegan cuadro por cuadro, uno al lado del otro. Obviamente, cada cuadro de la izquierda debe coincidir con el cuadro de la derecha en el tiempo. Con el más mínimo retraso en los fotogramas de una de las fuentes, el efecto estéreo se perderá o distorsionará (especialmente en escenas dinámicas) y la imagen aparecerá duplicada.
Para resolver este problema, comenzamos a grabar video en los dispositivos al mismo tiempo. De hecho, la grabación no comienza inmediatamente después de presionar el botón de inicio, sino después de un breve retraso dentro del cual se activa cierto algoritmo, muy similar a cómo el protocolo de tiempo de precisión (PTP) mide la desviación del reloj. Entonces, pudimos iniciar la grabación de video con una divergencia de 30 a 50 milisegundos, lo que, en el peor de los casos, corresponde a aproximadamente 1 cuadro de desincronización.
Errores en la conectividad multipar de iOS
Usamos la biblioteca nativa de iOS Multipeer Connectivity para establecer la comunicación entre los dos dispositivos. Esta biblioteca establece una conexión directa entre dispositivos en la misma red Wi-Fi, así como a través de Bluetooth o usando algo similar a Wi-Fi Direct en el iPhone. Por lo tanto, puede grabar y sincronizar fragmentos de video incluso en un campo abierto, sin una red de Internet inalámbrica o móvil. Pero se necesita una conexión a Internet para enviar el video a YouTube desde el dispositivo principal.
La razón principal por la que decidimos usar esta biblioteca es que establece la comunicación entre los dos dispositivos cuando no están conectados a la misma red. Obviamente, bajo malas condiciones de filmación en 3D estéreo, lo más que se puede esperar es una conexión 3G. Para grabar un video en 3D, es fundamental poder, con un retraso mínimo, transmitir paquetes de datos para la sincronización. Además, si no hubiera conexión a Internet, no podríamos disparar. Por lo tanto, la biblioteca Multipeer Connectivity se convirtió en un salvavidas. Además, es una solución nativa para la plataforma Apple.
Sin embargo, vale la pena señalar que no todo salió exactamente como queríamos. Durante la integración con Multipeer Connectivity, se detectaron muchos errores y toda la biblioteca era extremadamente inestable en su funcionamiento. La mayoría de las características declaradas solo estaban allí en teoría. Cuando los dispositivos operan dentro del mismo segmento de red, la conectividad multipar opera de manera más efectiva; la conexión se establece por un período de tiempo aceptable; se logra la dispersión permisible del tiempo de entrega del mensaje.
Sin embargo, si tenemos, en términos relativos, malas condiciones de grabación en 3D estéreo o, por ejemplo, hay muchos dispositivos móviles en un solo lugar, entonces establecer una conexión se vuelve similar a una lotería. Uno tiene la sensación de que la biblioteca de Apple aún no está completamente desarrollada y todavía está bastante cruda.
Vinculación de los dispositivos
Implementamos el protocolo de enlace automático en la primera versión de nuestro prototipo. El protocolo en sí consta de un conjunto de reglas mediante las cuales se elige un coordinador entre los dispositivos pares, en base a una mayoría, en el punto de tiempo inicial.
A continuación, el coordinador recopila periódicamente estadísticas de telemetría de cada dispositivo pasando un marcador especial en un círculo entre los dispositivos esclavos. Con base en estos datos de telemetría, se comparan pares de dispositivos montados en el marco. Una vez que se ha identificado un par, se asignan un maestro y un esclavo en el par y se establece una conexión directa entre ellos. En esta etapa, la vinculación está completa.
Búsquedas Automáticas e Independientes
Cuando fue necesario, se realizaron búsquedas automáticas e independientes (basadas en identificadores únicos) de los dispositivos que habían participado en las sesiones anteriores para su sincronización (obteniendo pistas de video grabadas en caso de que los datos no se cargaran en el dispositivo maestro en el momento de la grabación). Las lecturas del acelerómetro se utilizaron principalmente para identificar qué dispositivos correspondían al par. El coordinador calculó la correlación entre pares potenciales. Si la correlación superaba un cierto umbral, los dispositivos se consideraban pares potenciales y, posteriormente, se probaban las características secundarias.
Debido a que no pudimos superar por completo los problemas mencionados anteriormente con la conectividad multipar, decidimos abandonar temporalmente la vinculación automática, ya que esto habría afectado muy negativamente al usuario promedio y arruinado la experiencia del usuario.
Con lo que terminamos
Al final, logramos una aplicación muy interesante y de alta calidad. Ver un video grabado a través de esta aplicación te da la misma sensación que tienes al ver películas en 3D en el cine.
Por supuesto, el ojo humano funciona de manera un poco diferente: sus líneas convergen en un cierto punto en el espacio y dependen del punto de enfoque. En nuestro caso, los ojos siempre miran en paralelo. Sin embargo, incluso con este hecho, el efecto estéreo es muy pronunciado: el volumen del espacio se siente en el primer plano, en el medio y en el fondo casi igual que en la pantalla.
Necesita gafas VR o TV 3D para ver este video correctamente.
Por lo tanto, hemos hecho posible el uso de la aplicación Stereo Video Recorder para grabar videos estéreo en 3D por su cuenta para las necesidades de su negocio o simplemente por diversión.
Trabajando en errores y planes futuros
Nuestro objetivo se logró: estudiamos los criterios para crear videos en 3D y creamos una aplicación que permite a cualquier usuario crear un video estéreo. Pero no todo es tan fácil como parece. Tenemos que trabajar en algunas cosas. Tuvimos muchos problemas con la biblioteca Multipeer Connectivity. Queremos reemplazarlo o encontrar una solución para que la aplicación funcione bien con acceso limitado a Internet.
También necesitamos:
- implementar el enfoque síncrono y la medición de la exposición en los dos dispositivos, así como implementar la grabación de pistas de audio estéreo;
- desarrollar un marco más pragmático para los dispositivos;
- integrar el mecanismo automático de emparejamiento de dispositivos;
- proporcionar soporte para diferentes opciones de dispositivos y poder manejar diferentes resoluciones de video (por el momento, podemos grabar videos solo con las mismas versiones de iPhone; por ejemplo, un iPhone 5S solo se puede emparejar con otro iPhone 5S);
- crear una versión de Android de la aplicación.
Nuestra aplicación Stereo Video Recorder ya está en la App Store. Puede usarlo para crear videos en 3D. Estamos seguros de que la tecnología continuará desarrollándose y que eventualmente habrá muchas más soluciones para crear videos estereoscópicos. Intentaremos seguir el ritmo de los tiempos.
Deje sus comentarios e ideas sobre su uso de esta aplicación. Le agradeceríamos su opinión y comentarios.
Lectura adicional en SmashingMag:
- Cuatro formas de crear una aplicación móvil, parte 1: iOS nativo
- Creación de prototipos de aplicaciones iOS y Android con Sketch (con un obsequio)
- El futuro del video en el diseño web
- Los fundamentos de la automatización de pruebas para aplicaciones, juegos y la web móvil