la magia de VFX en evolución que dio vida a Atropos - PlayStation.Blog
Además de una jugabilidad cautivadora, Housemarque es conocido por sus efectos de partículas exagerados.. Títulos como Resogun, Alienación, Matterfall y Nex Machina usaron tecnología VFX patentada para traer coloridas explosiones a la pantalla para recompensar a los jugadores por destruir enemigos o completar niveles.. en retorno, Housemarque cambió de arriba hacia abajo a una cámara en tercera persona, pero también a un estilo de arte más profundo y oscuro que antes.. In this article, Risto Jankkila, Artista principal de efectos visuales, y Sharman Jagadeesan, Programador senior de gráficos, Danos una mirada más cercana a cómo utilizaron su tecnología VFX para hacer que el planeta alienígena de Atropos y sus habitantes cobren vida..
A continuación, puede encontrar el video de desglose completo que cubre algunas de las características de exhibición de VFX de Returnal. Además de eso, entraremos un poco más en detalles con algunas de esas características en este artículo.
La historia de nuestra tecnología VFX
Hemos estado trabajando en nuestra tecnología VFX patentada desde Resogun (2013 Título de lanzamiento de PS4), donde se usó el primer prototipo de nuestro sistema de partículas actual en algunos de los efectos de exhibición. Después de Resogún, el sistema de partículas obtuvo una interfaz gráfica de usuario y comenzamos a referirnos a él como Sistema de partículas de próxima generación (NGP). En 2014 tomamos la decisión de producir todos los efectos de partículas para Alienation con NGP. Después del envío Alienación, el sistema se usó para Nex Machina y se transfirió a Unreal Engine para Matterfall.
NGP está diseñado para ser un sistema de creación de VFX solo para GPU con una sobrecarga mínima de CPU. El foco está en el buen rendimiento y la flexibilidad.. La creación de partículas la realizan artistas de VFX que escriben fragmentos de sombreado de cómputo que definen el comportamiento y los datos de las partículas.. NGP se encarga de la asignación de memoria y la mayor parte del código repetitivo, mientras que los artistas pueden centrarse en el comportamiento y las imágenes..
Actualmente, NGP no está diseñado para manejar solo efectos de partículas.. También se puede utilizar para controlar el comportamiento de vóxeles en volúmenes o para generar geometría de procedimiento dinámica.. También tenemos varios módulos que generan datos para ser utilizados como entrada para efectos..
Por ejemplo, tenemos nuestro propio módulo de simulación de fluidos que puede alimentar sus datos de simulación a NGP. Otro ejemplo es un módulo llamado voxeliser que puede convertir una malla animada en vóxeles.. Esos datos se pueden usar para efectos de caracteres volumétricos.. Otros recursos como texturas, las matrices óseas y los búferes de vértices también se pueden usar como entradas para efectos de partículas.
La magia VFX detrás de los tentáculos enemigos y las estelas de bala: partículas de nodo
Desde el principio en el desarrollo de Returnal, estaba claro que queríamos hacer algo especial con las criaturas enemigas en Atropos. El director del juego, Harry Krueger, quería que parecieran criaturas de aguas profundas con propiedades como bioluminiscencia y tentáculos..
Los animadores de nuestro equipo enemigo experimentaron brevemente haciendo tentáculos utilizando la física de cuerpo rígido tradicional para simular cadenas de huesos unidos a esqueletos enemigos.. Este enfoque parecía demasiado limitado ya que el costo de rendimiento de hacer múltiples cadenas muy largas era demasiado alto., sino también porque carecíamos de medios para expresar estados enemigos a través de simulaciones físicas únicamente. Luego se asignó a VFX la tarea de crear tentáculos dinámicos que pudieran unirse a mallas y esqueletos enemigos..
Por suerte ya teníamos una solución en mente. El equipo había estado experimentando con vegetación de partículas para proyectos anteriores y se había desarrollado un tipo de partículas especial para la vegetación ramificada, como los árboles.. Llamamos a este tipo de partícula "Partícula de nodo" para reflejar sus propiedades y comportamiento..
Este tipo de partícula nos permite crear unidireccional, conexiones padre-hijo. Una partícula puede ser padre de varios hijos, pero una partícula solo puede tener un padre. Al leer la partícula principal, los datos principales tienen un marco de antigüedad, i.e. no los datos que se están escribiendo en el cuadro actual. Esto hace que sea imposible "seguir" al padre estrictamente y da como resultado un efecto secundario que hace que el movimiento de las partículas parezca "orgánico".. Este efecto secundario se usa ampliamente en efectos de partículas en Returnal, y fue especialmente útil para cosas como tentáculos.
Pero antes de que empezáramos a trabajar en el comportamiento del tentáculo, necesitábamos decidir cómo los renderizaríamos. Primero, experimentamos con renderizar tiras planas de polígonos. La calidad era casi aceptable., pero falta en algunas áreas como sombras. Después de un tiempo, decidimos renderizar los tentáculos como mallas cilíndricas que se construyeron a partir de NGP durante el tiempo de ejecución.
Después de decidirnos por el renderizado de tubos, podríamos comenzar a centrarnos en el comportamiento de los tentáculos.. Ser capaz de controlar el comportamiento de las partículas., ya no estábamos limitados solo por simulaciones físicas, sino que podíamos cambiar convenientemente el movimiento del tentáculo según el estado del enemigo. Esto nos facilitó experimentar con cosas como obligar a los tentáculos a moverse de cierta manera cuando el enemigo se está preparando para un ataque.. Repetimos los tiempos con el equipo enemigo y los diseñadores para asegurarnos de que el comportamiento del tentáculo ayudaría a telegrafiar los estados enemigos junto con la animación y otros efectos visuales..
Las partículas de nodo también fueron útiles para las numerosas cintas y senderos que tenemos en el juego.. Queríamos que algunas de las balas de referencia tuvieran un rastro largo que permaneciera en la pantalla por un tiempo detrás de la bala.. También los rastros de ataque cuerpo a cuerpo del enemigo usaron partículas de nodo. A continuación puede ver un video de partículas de nodo siguiendo a su padre, creando un rastro de cinta, seguido de un ataque de bala dirigido por Phrike.
Simulaciones de fluidos
Uno de nuestros principios clave en Housemarque con respecto a los efectos visuales es simular tanto como sea posible durante el tiempo de ejecución., utilizando la menor cantidad posible de datos precocidos. Como habíamos usado simulaciones de fluidos en nuestros títulos anteriores como Alienation y Matterfall, Para nosotros fue claro desde el principio que no deberíamos conformarnos con campos de velocidad precocidos para Returnal.
En su lugar, usamos una simulación de fluidos en tiempo real alrededor del jugador para simular el flujo de aire que afecta el movimiento de las partículas., vegetación y otros elementos VFX. Además de esa simulación (al que nos referimos como Simulación Global de Fluidos), podemos tener simulaciones adicionales adjuntas a diferentes actores en el juego.
Cualquier evento de juego se puede programar para agregar fuerzas a la simulación fluida y hacer que los elementos VFX cercanos reaccionen.. Por ejemplo, estas fuerzas se pueden incluir en las animaciones enemigas para que cuando un enemigo aterrice un ataque de salto, agregamos un impulso radial a la simulación de fluidos en ese momento y en esa ubicación. Esto hace que las partículas cercanas, como hojas o chispas, salgan volando del punto de impacto.. En el video a continuación, puede ver impulsos fluidos desencadenados por animaciones enemigas y acciones de jugadores que afectan la vegetación de partículas..
Si bien usar solo velocidades de fluidos fue suficiente para cosas como la vegetación, en los casos en que se pueden ver partículas puntuales discretas, sintió que el campo de velocidad de simulación de fluido global carecía de detalles. Para obtener más detalles, decidimos implementar cálculos de vorticidad opcionales para la simulación de fluidos y, en la actualización de partículas, agregamos un campo de ruido a la velocidad de las partículas., proporcional a la magnitud de la velocidad del fluido en la ubicación de la partícula. En el juego, esta técnica se utilizó para los hologramas de Xeno-archivo y en el efecto de teletransportación del jugador., que puedes ver a continuación.
Voxeliser y efectos volumétricos
Uno de los elementos ambientales que queríamos tener en el bioma de apertura de Returnal (Ruinas cubiertas de maleza) era grueso, niebla volumétrica tipo cementerio. Debido a las diferencias de altura en nuestros niveles., la colocación procedimental de la niebla resultó ser problemática. En lugar, decidimos colocar los volúmenes de niebla manualmente. Con un elevado número de volúmenes a colocar por parte del equipo de medio ambiente, teníamos que hacer el proceso lo más sencillo posible.
La flexibilidad de nuestro sistema de partículas nos permitió construir estos volúmenes en NGP. Dado que los datos y el comportamiento de las partículas se pueden personalizar completamente, podemos almacenar un índice tridimensional para un número de partículas y hacer que representen un volumen. Los límites de volumen se pueden pasar como datos constantes de la CPU a NGP. Junto con el índice tridimensional, también podemos almacenar cualquier otro dato por vóxel. Esto nos da la posibilidad de almacenar diferentes estados para cada vóxel dentro de un volumen.. Además de poder almacenar estados de vóxel, también podemos cambiar su lógica de actualización según su posición en el mundo del juego o dentro del volumen.
Tener vóxeles que son conscientes de su estado y posición, podríamos hacer que emitieran automáticamente más densidad cerca de superficies como pisos y paredes, pero también se desvanecieran suavemente cerca de los bordes de los volúmenes. Esto hizo que el proceso de colocar volúmenes de niebla fuera mucho más rápido., ya que la niebla se adaptó automáticamente a su entorno. También podríamos probar la simulación global de fluidos en la posición de vóxel., y hacer que la niebla se mueva por cosas como el viento, balas y acciones del jugador. En el siguiente vídeo, puede ver uno de estos volúmenes de niebla NGP colocados en un nivel. La densidad de niebla se crea adaptativamente solo cerca de las superficies., y advección por simulación de fluidos en el juego.
Poniendo todo junto para crear esa batalla contra el jefe Phrike
Para el encuentro con el jefe Phrike, queríamos poder emitir niebla volumétrica desde la malla esquelética de Phrike. Esto planteó un problema ya que la niebla volumétrica y las mallas esqueléticas se construyen a partir de diferentes tipos de elementos.. La malla esquelética es un conjunto de vértices., puntos animados en el espacio 3D que se ordenan para formar triángulos que se pueden representar. Los vértices se pueden colocar arbitrariamente para formar todo tipo de formas diferentes, desde árboles hasta humanoides.. La niebla volumétrica, por otro lado, usa cajas que se denominan volúmenes.. Estos volúmenes consisten en elementos más pequeños llamados vóxeles.. A diferencia de las mallas esqueléticas, Los volúmenes de niebla en Unreal Engine siempre tienen forma de cajas, al igual que los vóxeles a partir de los cuales se construyen..
Si quisiéramos usar los vértices de Phrike para emitir niebla volumétrica, tendríamos que averiguar en qué vóxel del volumen de niebla se encuentra cada vértice de la malla esquelética. Esto fue trivial de resolver, pero el mayor problema era el hecho de que solo podíamos manejar un vértice por vóxel. Tener dos vértices ocupando el mismo vóxel conduciría a un comportamiento indefinido y posiblemente colapsaría el juego.. Empeorar la situación, era mucho más probable tener múltiples vértices dentro de un solo vóxel que tener solo uno.
La solución a esto fue un voxelizador en tiempo real.. El voxelizador toma una malla esquelética como entrada y genera un volumen donde cada vóxel que está dentro de la malla esquelética se marca como ocupado. Esto simplificó el proceso de emisión de niebla, ya que solo teníamos que verificar la salida del voxelizador y ver si el vóxel dado está marcado como ocupado o no.. En el video a continuación, puede ver la salida del voxelizador usando la malla de Phrike como entrada.
Con la capacidad de emitir niebla desde la malla de Phrike., Pudimos combinar mejor al personaje con el entorno cuando se movía.. También hizo que las acciones especiales de Phrike, como teletransportarse y generarse, fueran más fáciles de ejecutar, ya que podíamos ocultar estas transiciones con la niebla.. A continuación, puede encontrar un video de comparación de la secuencia de generación de Phrike con niebla volumétrica y otros efectos y sin ellos..
Esto concluye nuestra inmersión profunda en los efectos visuales de Returnal. Esperamos que hayas disfrutado leyendo esto y desees compartir más de nuestros trucos y técnicas en el futuro..