Ingenieros de Oculus, el equipo de Realidad Virtual de Facebook, han desarrollado el Flick, una nueva unidad de tiempo para medir con mayor precisión la velocidad de fotogramas por segundo (frame rate) y su relación con la frecuencia de actualización de las pantallas digitales.
Si alguna vez has probado un casco de realidad virtual (HMD), unas gafas Cardboard o Samsung Gear, habrás notado que algunas imágenes dejan una especie de estela al hacer giros rápidos y que después de un tiempo visualizando contenidos en estos dispositivos es posible experimentar cierta sensación de náusea y mareo. Estas sensación era mucho más aguda en los primeros HMD y se ha ido mitigando con las nuevas generaciones de displays.
1. Persistencia, latencia y tasa de refresco
Este desagradable efecto básicamente se produce debido a 3 factores: la persistencia, la latencia y la tasa de refresco.
En la realidad virtual, la persistencia es el tiempo que un píxel permanece encendido. Cuanto mayor es la persistencia, mayor es el efecto de desenfoque o parpadeo de las imágenes. Para obtener sensaciones realistas, se requiere una persistencia muy baja, por debajo de 3 milisegundos.
La latencia es el tiempo transcurrido desde que se produce un movimiento (por ejemplo un giro de cabeza) hasta que la imagen refleja dichos cambios. Si la imagen tarda demasiado en acompañar este movimiento (latencia alta), el cerebro sufre una contradicción entre lo que está viendo y la realidad, aunque esta diferencia sea de unos pocos milisegundos.
La tasa de refresco es la frecuencia o número de veces por segundo que una pantalla puede actualizar una imagen para dar la sensación de movimiento y se expresa en Hercios (Hz). Aumentando la tasa de refresco del monitor se puede reducir la latencia. Por ejemplo, un monitor con una tasa de refresco de 60Hz tiene la mitad de latencia que uno de 30Hz.
2. ¿Pero qué es exactamente el Flick?
El Flick es la abreviación de “frame-tick”, que se podría traducir como “marca de fotograma”. Es una unidad de tiempo muy pequeña, concretamente 1/705600000 segundos.
Según la propia definición de sus creadores, el Flick es “la unidad de tiempo más pequeña que es más grande que un nanosegundo y puede expresar en números enteros la duración de un fotograma para frecuencias de 24 Hz, 25 Hz, 30 Hz, 48 Hz, 50 Hz, 60 Hz, 90 Hz, 100 Hz y 120 Hz”. También es aplicable a las frecuencias más utilizadas en audio: 8 kHz, 16 kHz, 22.05 kHz, 24 kHz, 32 kHz, 44.1 kHz, 48 kHz, 88.2 kHz, 96 kHz y 192 kHz.
El Flick está basado en un trabajo de 2004 de la Universidad de La Sorbona y el Institut National de l’Audiovisuel (INA) de Francia en el que se establecía una unidad de medida denominada TimeRef (1/14112000 segundos). 1 TimeRef equivale a 50 Flicks.
3. ¿Por qué se ha creado el Flick?
Hasta ahora, para medir el tiempo concreto que un fotograma aparece en pantalla, las unidades habituales (milisegundos y nanosegundos) daban resultados fraccionados en lugar de números enteros. Por ejemplo, en las películas que habitualmente se ruedan a 24 fotogramas por segundo, cada fotograma se muestra en pantalla 0,0416666666666667 segundos o 41666666.669 nanosegundos.
Esto puede dar lugar a ligeras imprecisiones o desincronizaciones cuando se trabaja en programación, efectos visuales, realidad virtual o vídeo 360. El Flick está especialmente formulado para estos ámbitos, ya que es muy importante mostrar una frecuencia de fotogramas exacta para evitar experiencias incómodas como mareos, pérdida de realidad o parpadeo de gráficos.
Si utilizamos el Flick para medir cuánto tiempo dura en pantalla cada fotograma con las frecuencias más comunes en películas y vídeos, obtendríamos los siguientes resultados:
- 1 fotograma, a 24 fps = 29.400.000 Flicks
- 1 fotograma, a 25 fps = 28.224.000 Flicks
- 1 fotograma, a 30 fps = 23.520.000 Flicks
- 1 fotograma, a 48 fps = 14.700.000 Flicks
- 1 fotograma, a 50 fps = 14.112.000 Flicks
- 1 fotograma, a 60 fps = 11.760.000 Flicks
- 1 fotograma, a 90 fps = 7.840.000 Flicks
- 1 fotograma, a 100 fps = 7.056.000 Flicks
- 1 fotograma, a 120 fps = 5.880.000 Flicks
- 1 fotograma, a 8.000 fps = 88.200 Flicks
- 1 fotograma, a 16.000 fps = 44.100 Flicks
- 1 fotograma, a 22.050 fps = 32.000 Flicks
- 1 fotograma, a 24.000 fps = 29.400 Flicks
- 1 fotograma, a 32.000 fps = 22.050 Flicks
- 1 fotograma, a 44.100 fps = 16.000 Flicks
- 1 fotograma, a 48.000 fps = 14.700 Flicks
- 1 fotograma, a 88.200 fps = 8.000 Flicks
- 1 fotograma, a 96.000 fps = 7.350 Flicks
- 1 fotograma, a 192.000 fps = 3.675 Flicks
Como vemos en la tabla, un fotograma en una velocidad de 60 fotogramas por segundo (muy habitual en videojuegos), dura 11.760.000 Flicks. En definitiva, el Flick es una manera más clara de medir el tiempo y nos permite calcular con mayor exactitud la persistencia de las imágenes en pantalla.
4. ¿Cómo puedes utilizar el Flick?
Los mismos ingenieros que han creado el Flick también han desarrollado una librería en lenguaje C++ para que se pueda integrar en los sistemas estándar que utilizan relojes basados en nanosegundos. Realmente se trata de una única línea que se copia directamente en el código header de los archivos C++.
Por el momento no está disponible para el sistema Windows, así que habrá que esperar a ver si otros desarrolladores de software deciden adoptarlo para esta plataforma.
5. Conclusión
A medida que la resolución de los HMD y cámaras 360 va en aumento, acercándose cada vez más a la definición del ojo humano, las experiencias inmersivas todavía se enfrentan a varios problemas relacionados con la latencia, la persistencia y la frecuencia de refresco.
El Flick es un concepto interesante ya que sienta una base para abordar estos problemas y desarrollar experiencias inmersivas cada vez más realistas. La verdad es que sería interesante verlo implantado en programas como Adobe CC, Unreal Engine o Unity y poder así experimentar de primera mano con líneas de tiempo basadas en el Flick. ¿Qué ventajas nos podría traer? Básicamente, experiencias más realistas gracias a dispositivos con tiempos de respuesta más parecidos a los del sistema visual humano.
Deja una respuesta