camera_shakes_cover

en Tutoriales, UE4

Movimientos de cámara

Los movimientos de cámara o de pantalla es una técnica utilizada en muchos videojuegos para simular eventos del mundo o movimientos del personaje obteniendo así un juego más realista o impactante. En este tutorial vamos a ver algunos de los movimientos de cámara más utilizados y como utilizarlos en un proyecto de Unreal Engine 4.

Configuración en UE4

El primer pasó es crear un blueprint para cada uno de los tipos de movimiento de cámara, solo con modificar los parámetros de este objeto podemos cambiar el comportamiento del movimiento de la cámara.

Haciendo click derecho en el explorador de contenido elegimos Blueprint Class, y buscamos MatineeCameraShake

matinee_camera_shake

Una vez hecho esto podemos abrir el blueprint de este objeto y ver los múltiples parámetros que se pueden configurar en su pestaña de Detalles. Oscillation Duration controla la duración en segundos del efecto, también podemos aplicarle un efecto de aparición y desaparición, igual que se hace en ciertas canciones al principio y final, utilizando los parámetros Blend in/out TIme para conseguir una transición más suave hasta el efecto de la cámara.

Después de estos parámetros tenemos 3 secciones de modificadores: Rot, Loc and FOV Oscillation, cada una de ellas correspondería a las 3 maneras diferentes de aplicar transformaciones de geometría, rotación, translación and escala.

camera_shakes_params

En vez de utilizar valores fijos estamos utilizando funciones que cambian con el tiempo (Seno o Perlin Noise), como hacemos en los nodos Timeline, para definir el comportamiento del movimiento de la cámara.

config_sample_shake

anim_shake

El la próxima sección del tutorial definiremos varios ejemplos de lo que podemos poner en estos parámetros para simular diferentes efectos sobre el personaje.

Cuando el evento principal ocurra tendremos que obtener el camera manager de nuestro jugador y utilizar el nodo Start Camera Shake con el anterior Blueprint como Shake Class. Este nodo devuelve una instancia de Camera Shake, nos será útil para parar el movimiento de la cámara, utilizándolo con el nodo Stop Camera Shake, en cualquier momento.

camera_shake_event

Pero ¿qué ocurre con los eventos que no son generados por nuestro personaje?, para cubrir estos caso tenemos el nodo Play World Camera Shake.

play_world_camera_shake_node

Utilizando este nodo podemos definir el punto de origen del movimiento o sacudida, como por ejemplo un barril explosivo, y el anillo en el que será perceptible el efecto con su pérdida de intensidad cuanto más cerca se encuentra la cámara del personaje al radio exterior. Todas las cámaras que se encuentren por dentro del radio interior no se verán afectadas. Tenemos que recordar que el efecto afecta a la cámara del personaje, no al personaje en si, por lo tanto deberemos tener en cuenta la distancia que hay entre la cámara y el personaje para aplicar el efecto o no.

shake_effect_diagram

Ahora vamos a ver como definir algunos parámetros para conseguir algunos de los movimientos de cámara más comunes.

Explosiones

El primero de los eventos en los que solemos pensar al hablar de sacudidas de cámara son las explosiones. Cuando algo explota cerca del personaje la onda expansiva golpea y desorienta al jugador. La magnitud de la sacudida puede variar dependiendo de la distancia, esto también podría ajustarse dinámicamente utilizando el parámetro Scale del nodo Star Camera Shake. Sacudidas breves con una amplitud y frecuencia altas obtenemos una buena aproximación.

shake_explosion_params
anim_explosion
Explosion Falloff effect

Impactos

Otro sencillo efecto que deberíamos añadir a nuestros juegos es el relacionado con los impactos. Cuando nuestro personaje es golpeado por un enemigo o un objeto, o incluso cuando nuestro personaje es el que golpea al enemigo con un ataque cuerpo a cuerpo, una sacudida breve puede servir para transmitir esta información al jugador. Este efecto puede usarse con múltiples variaciones en diferentes situaciones, por ejemplo para simular el retroceso de un arma, o cuando golpea el nuevo cargador que acaba de ponerle al arma, hay un montón de situaciones que mejorar con un pequeña sacudida de la cámara.

shake_hit_params
anim_hit
Hit effect

Movimientos del personaje

El siguiente efecto es muy situacional, pero obligatorio si nuestro personaje puede emborracharse. Cuando su nivel de alcohol alcanza una tasa demasiado elevada podemos simular un efecto de balanceo en la cámara. El balanceo puede acompañarse con un efecto de post procesado que nuble la visión del jugador hasta que el nivel de alcohol descienda.

shake_drunk_params
anim_intoxicate
Intoxicated effect

Durante el juego nuestro personaje puede ejecutar un montón de movimientos que pueden acompañarse también con algún pequeño movimiento de la cámara, como pueden ser saltar, aterrizar después de un salto, correr… Tendremos que ajustar la amplitud del efecto dependiendo de la fuerza del personaje o de energía del movimiento para hacer sentir al jugador esa misma fuerza. Por ejemplo, para añadir algo de efecto al correr podemos cambiar el FOV para dar la sensación de aceleración en conjunción con una oscilación sutil de altura, también le podríamos añadir un post procesado con desenfoque de movimiento por los laterales, si nuestro personaje con sigue correr muy, muy rápido.

shake_run_params
anim_run
Running effect

El cabeceo es un efecto muy sutil que puede añadirse en los juegos con cámara en primera persona. Cuando el personaje camina o corre podemos añadir una pequeña oscilación en el eje vertical. No nos olvidemos que podemos ir controlando la velocidad del personaje para saber cuando está en movimiento para activar sólo entonces el efecto de cabeceo.

shake_head_bobbing_params
anim_head_bobbing
Head bobbing effect

Vehículos

Estando en vehículos también nos encontramos con un montón de oportunidades para añadir efectos de cámara. Además de las sacudidas o temblores que pueden producirse con el propio movimiento mecánico del vehículo y su interacción con los diferentes terrenos podemos añadir también los que se producen con la manipulación de sus controles, como palancas y botones, por ejemplo en un coche podemos añadir una pequeña sacudida al cambiar de marcha.

shake_gear_params
anim_gear_change
Gear change effect

Entorno

En la naturaleza nos encontramos algunos de los eventos más poderosos que pueden ocurrir. Una manera de transmitir esta fuerza al jugador es mediante movimientos de cámara. El primero de ellos en el que solemos pensar es un terremoto. Como con en el caso de las explosiones podemos realizar oscilaciones cortas con una frecuencia alta para simular este efecto, pero con un poco de guiñada y mayor duración.

shake_quake_params
anim_quake
Earthquake effect

Cuando nos encontramos en un barco nos vemos afectados también por un movimiento continuo a causa de la marejada. Este efecto puede conseguirse fácilmente mediante oscilaciones de rotación. Cuanto mayor sea el oleaje mayor tendrá que ser la amplitud de estas oscilaciones. Utilizar un valor negativo en el campo Oscillation Duration hará que la duración del efecto sea infinita.

shake_sea_params
anim_sea
Sea effect

El último efecto de esta sección es el relacionado con el viento. Hemos encontrado los mejores resultados cuando asociamos la frecuencia del efecto en vez de su amplitud con la fuerza del viento. Si quisiéramos controlar la orientación del movimiento podríamos utilizar el nodo Play World Camera Shake y activar Orient Shake to the Epicenter ajustando la oscilación adecuadamente para que encaje con la dirección del viento.

shake_wind_params
anim_wind
Wind effect

Con este tutorial hemos sido capaces de ver diferentes maneras de realizar movimientos de cámara para mejorar la experiencia del jugador y aportarle una inmersión más realista durante el tiempo de juego. Los movimientos de cámara o pantalla son un recurso muy barato que contribuye enormemente a incrementar la conexión del jugador con el personaje de nuestro juego. Así que no lo olvides, haz movimientos de cámara!.

youtube_video_camera_shake

Ayudanos con este blog!

El último año he estado dedicando cada vez más tiempo a la creación de tutoriales, en su mayoria sobre desarrollo de videojuegos. Si crees que estos posts te han ayudado de alguna manera o incluso inspirado, por favor considera ayudarnos a mantener este blog con alguna de estas opciones. Gracias por hacerlo posible!


Escribe un comentario

Comentario

veinte − 10 =