Hoy vamos a echar un vistazo al desenfoque de movimiento en War Thunder — qué es, cómo se implementa en el juego y a qué retos nos enfrentamos. ¡War Thunder va al cine!
¿Qué es el Desenfoque de Movimiento?
En un videojuego, las imágenes se crean desde cero, cada fotograma muestra un único punto en el tiempo.
Las cámaras reales o incluso nuestros ojos no funcionan así. Hacer una foto lleva tiempo, y durante ese tiempo el mundo no siempre está quieto. Si un objeto se mueve mientras hacemos la foto, aparecerá en todos esos lugares al mismo tiempo en la imagen final. Esto es lo que llamamos desenfoque de movimiento.
Explicación de los Conceptos Básicos
Para simular el efecto de desenfoque de movimiento, necesitamos saber cómo se ha movido cada píxel desde el último fotograma. Esto requiere que todas las animaciones y efectos en movimiento informen de sus posiciones actual y anterior. Puede ser una de las partes más difíciles de hacer funcionar esta función. Pero, afortunadamente, ya teníamos esto funcionando para las técnicas de antialiasing. Las pocas animaciones que no lo soportaban eran muy fáciles de detectar porque el desenfoque de movimiento las convertía en una gran mancha borrosa. Así que las arreglamos rápidamente.
Como punto de partida, utilizamos una técnica probada para aplicar el efecto, sobre la que puedes leer más aquí. Básicamente, comprobamos dónde estaba un píxel en el último fotograma y dónde está ahora, y luego lo difuminamos a lo largo de la línea intermedia.
Para que los cálculos sean más eficientes y suavizar algunos bordes, la línea también se difumina en la dirección de avance, extendiendo la línea más allá de la posición actual del píxel. Para acelerar aún más las cosas, tomamos algunas decisiones conjuntamente para bloques de píxeles más grandes, basándonos en su dirección general.
También hay que tener en cuenta la distancia de cada píxel a la cámara para que podamos desenfocar el fondo y el primer plano por separado. A veces, la línea difuminada de un píxel del fondo puede pasar por detrás de un objeto en primer plano que aún se mantiene nítido. Otras veces necesitamos mantener nítido el fondo mientras un píxel del primer plano se difumina por encima. Cuando dos objetos se desenfocan juntos en un solo píxel, su velocidad individual también es importante, porque a veces ninguno de los dos debe permanecer nítido.
Desafíos Técnicos En War Thunder
Por supuesto, tuvimos que hacer algunos ajustes para adaptarlo a nuestras necesidades. Para decidir cómo desenfocar un píxel necesitamos conocer su velocidad. Pero, ¿y si no hay una respuesta única porque hay más de una cosa visible en el mismo punto? Sin un cuidado especial, la transparencia es invisible para el algoritmo.
En War Thunder, tenemos cabinas de cristal y bombillas de colores acopladas a aviones que vuelan sobre árboles mientras rompen la barrera del sonido. Así que necesitábamos tratar las superficies de cristal de alguna manera. Aquí, tenemos velocidades completamente diferentes en el mismo píxel. El cristal está firme, pero el bosque que hay detrás es muy rápido.
Acabamos utilizando un truco similar al de la separación fondo-primer plano. Si vemos algo a través del cristal, lo tratamos como una categoría, mientras que los objetos directamente visibles son otra. No difuminamos una categoría sobre otra, sino que permitimos la mezcla dentro de las categorías.
Así conseguimos imágenes en las que el fondo se difumina a través del cristal, pero el propio cristal puede mantener su silueta nítida.
Nota: en el momento de escribir este post, el tratamiento especial de la transparencia sólo se activa si el Desenfoque de Movimiento está al máximo.
Limitaciones
Como sólo tenemos una velocidad conocida para cada píxel, los objetos transparentes que se mueven rápidamente no se difuminarán, sólo los objetos del fondo que puedas ver a través de ellos. Esto también significa que los reflejos en dichas superficies sólo pueden difuminarse en función del fondo.
Para crear un efecto perfecto necesitaríamos información perfecta. Aunque conozcamos la posición en pantalla de un píxel tanto en el fotograma pasado como en el actual, no sabemos qué camino siguió entre ambos. Nos limitamos a difuminarlo en una línea, como si se moviera en línea recta, lo que casi siempre es suficiente. Una excepción importante son las ruedas de los vehículos. Aquí, un punto de la rueda puede desplazarse hacia el lado opuesto en el tiempo de un solo fotograma. Suponer un movimiento rectilíneo en este caso dista mucho de la realidad.
Por el momento este problema no está resuelto, las ruedas necesitarán un método personalizado para corregir el desenfoque de movimiento que funcione con principios diferentes.
¿Es Realista?
El desenfoque de movimiento es visible no sólo en los objetos que se mueven rápidamente, sino también si la propia cámara se mueve. En el cine es un efecto muy común, pero en nuestra visión natural el ojo suele fijarse en los objetos manteniendo el mundo más estable para nosotros. El desenfoque de movimiento de los videojuegos es cinematográfico — parece una película real hecha con cámaras reales. Pero no es como ver el mundo con tus propios ojos.
Para simular mejor la visión humana, hemos añadido una opción para desactivar el desenfoque de movimiento causado por el movimiento de la cámara. Esto seguirá desenfocando los objetos que se mueven rápido, como aviones que pasan volando o escombros que explotan, pero mantendrá la imagen nítida cuando sólo estés mirando a tu alrededor.
Desenfoque de cámara desactivado, sólo se mueve la torreta
Girando la torreta con desenfoque total de movimiento
¿Es Bueno El Desenfoque De Movimiento Para Nuestros Juegos?
Oímos mucho esta pregunta e internamente también hemos tenido conversaciones al respecto. Algunos dicen que da la sensación de movimiento y hace que la experiencia sea más inmersiva. Mientras que otros dicen que hace más difícil apuntar a objetivos en movimiento, elimina la claridad que es importante para el juego competitivo. Pues bien, ambos tienen razón. Es cuestión de gustos y de lo que quieras del juego. Si lo que más te interesa es ganar y subir en la clasificación, puede que no sea para ti — siéntete libre de desactivarlo. Nos parece muy bien. Pero si ya has ganado y estás haciendo un vídeo de tus repeticiones, o simplemente quieres sentir la velocidad mientras vuelas, puedes ponerlo al máximo y utilizarlo para conseguir un efecto de calidad cinematográfica.