Marek Rosa – blog del desarrollador: VRAGE: agua volumétrica

RESUMEN:

  • Ha comenzado la investigación sobre nuestro nuevo motor VRAGE 3
  • Agua VRAGE
    • Escala planetaria (o estanque pequeño)
    • 3D volumétrico (sin plano 2D ni campo de altura)
    • Simulación de flujo, gravedad arbitraria
    • Flotabilidad, presión, tensión superficial y más
  • Descripción general de las tecnologías existentes
  • Ejemplos de experimentos en curso y próximos pasos

Publicación de invitado de Petr Minařík, programador principal sénior de Keen Software House

¡Hola, Ingenieros!

VRAGE™ es un motor de juego interno desarrollado por Keen Software House. VERDADERO significa “rabia volumétrica” ​​y/o “rabia de vóxel”.

La característica central de VRAGE es la volumetría dentro del entorno. Los objetos volumétricos son estructuras compuestas por módulos en forma de bloques entrelazados en una cuadrícula.

Los objetos volumétricos se comportan como objetos físicos reales con masa, inercia y velocidad. Los módulos individuales tienen un volumen y una capacidad de almacenamiento reales y se pueden montar, desmontar, deformar y destruir.

Para nuestra próxima generación de motor VRAGE (VRAGE 3.0) hemos iniciado la investigación del agua y su simulación. Nuestra expectativa es que el agua se convierta en una parte importante de las funciones de juego disponibles en nuestros juegos futuros. Nuestro objetivo de investigación actual es respaldar el comportamiento realista del agua volumétrica, manteniendo un buen rendimiento y calidad visual.

Para obtener una visión más detallada de nuestra investigación sobre VRAGE “Agua volumétrica”, mire el video a continuación:

Requisitos de características

Cualquier tipo de simplificación como la aproximación de un plano o una esfera es imposible para nosotros. Cualquier simplificación como esa reduce las posibilidades de interactividad del jugador.

El agua volumétrica debe simularse con todos los fenómenos naturales posibles, a escala planetaria, creando flujos como ríos y cascadas, todo mientras sigue siendo interactivo y permite a los jugadores interactuar y manipularla por completo.

Estas son las características que consideramos de máxima prioridad:

  • Volumetricidad: simulación completamente en 3D, sin planos 2D ni campos de altura
  • Simulación de flujo: con una gravedad arbitraria, rendimiento basado en el tamaño del orificio, conservación de la masa
  • Flotabilidad: principio de Arquímedes, detección de agujeros, navegación en barcos
  • Escala: desde un pequeño estanque hasta un planeta acuático.
  • Presión – igualación de nivel, alta presión hidrostática a grandes profundidades
  • Tensión superficial: el agua crea glóbulos en gravedad cero

Hay muchas características que podríamos considerar, como simulación de presión de aire, flujos internos, vórtices, viscosidad, color del agua, hermeticidad al gas/aire, lava, ácidos, arenas en movimiento, sifón, simulación de IA y muchos otros.

Tecnologías existentes

Básicamente, existen dos enfoques principales utilizados para la simulación líquido/fluido. Ambos intentan simular el agua basándose en las famosas ecuaciones de Navier-Stokes que describen el flujo de líquidos incompresibles.

Hidrodinámica de partículas suavizadas (SPH)

Basado en la simulación de una gran cantidad de partículas pequeñas. Por su interacción entre sí se crea el efecto de líquido que fluye.

Marek Rosa blog del desarrollador VRAGE agua volumetrica
Fuente: Github – SPlisHSPlasH

ventajas:

  • Comportamiento físico (velocidad, gravedad, colisiones)
  • Imágenes realistas
  • Muchas implementaciones de GPU existentes
  • Más adecuado para simulaciones exactas

Contras:

  • Computacionalmente extenso
  • Inestable: atributos más sensibles
  • Difícil de escalar
  • Seguimiento de superficie

Autómatas celulares (CA)

Simulación basada en cuadrícula donde hay una masa y propiedades físicas en cada celda. Cada celda interactúa con sus vecinos directos y esto crea el efecto de un “flujo”.

Marek Rosa blog del desarrollador VRAGE agua volumetrica

Fuente:.jgallant – 2d-liquid-simulator-with-cell-automaton-in-unity

Ventajas:

  • Rápido y simple, estable
  • Fácil de paralelizar
  • Ya usado en juegos (Minecraft, Ylands)

Contras:

  • Eje alineado – Superficie del agua y gravedad vertical inmutables
  • Arena como problemas – “Acumulación de agua”
  • Colisiones complicadas con objetos dinámicos

Combinaciones de enfoque basado en partículas y rejilla

Desafortunadamente, toda la investigación anterior tiende a simular fluidos limitados rápidos o simulaciones lentas de alta calidad. Aunque se ven muy bien, se enfocan en la representación fuera de línea (películas, imágenes estáticas) y una escala limitada de simulación (cuencas, acuarios). Las simulaciones a gran escala se simulan con enfoques de aproximación como celdas de altura o simulación de aguas poco profundas.

  • PIC – Partícula en celda
  • FLIP – Partícula implícita de fluido
  • MAC – Cuadrícula de marcadores y celdas
  • MLS MPM – Método de punto de material de mínimos cuadrados móviles
1675808098 341 Marek Rosa blog del desarrollador VRAGE agua volumetrica

Fuente: Redsharknews

1675808099 376 Marek Rosa blog del desarrollador VRAGE agua volumetrica

Fuente: Matemáticas de UCLA

Agua VRAGE – Nuestra solución

Nos gustaría presentarle nuestra solución, que se basa en investigaciones en curso y prototipos que hemos creado. Está lejos de ser una implementación final, pero ya contiene algunos comportamientos esperados e incluso es divertido jugar con él.

Combinación de enfoque basado en partículas y rejilla

Usamos el Centro de masa (COM) en cada celda, que también se puede ver como una partícula por celda. Estas son las principales propiedades de nuestro sistema:

  • Simulación basada en cuadrícula
  • Velocidad introducida en las celdas para aumentar el realismo.
  • Centro de masa (COM) introducido para evitar la difusión no deseada
  • Compatible con el enfoque de vóxel utilizado en la actualidad motor VRAGE

Cada célula tiene estas propiedades físicas:

  • Masa
  • Velocidad (calculada a partir de fuerzas)
  • Centro de masa (COM)
1675808100 609 Marek Rosa blog del desarrollador VRAGE agua volumetrica

Descubrimos que esta técnica es hasta ahora el gran compromiso entre las funciones que necesitamos y el rendimiento del algoritmo.

1675808100 537 Marek Rosa blog del desarrollador VRAGE agua volumetrica

Ejemplo: Células con centro de masa y velocidad indicados

Simulación de fluidos obligada a comportarse como líquido

Estos principios son similares a los que se utilizan en la simulación de fluidos. Utilizamos las fuerzas adecuadas para mantener el líquido “fluido” y simular los comportamientos del agua.

  • Las fuerzas de gravedad + tensión pueden mantener el fluido en estado líquido
  • Las fuerzas de presión ajustan la compresión del agua (Presión del agua)
  • Tensión superficial para crear agradables glóbulos.
  • Expansión/difusión constante. Si no se limita, el líquido puede esparcirse.
  • Sin límite de celda de masa máxima

Para poder simular correctamente la igualación de la superficie con la presión, tuvimos que hacer comprimible nuestra agua. Eso significa que cuanto más profunda es la celda, más agua se almacena en la celda.

Pasos básicos del algoritmo

Las velocidades de las primeras celdas se calculan a partir de las fuerzas aplicadas a las celdas. Luego se ejecuta un paso de advección donde se aplica difusión para cada celda. Después de estos cálculos, los nuevos valores se copian en el búfer de contenido.

1675808101 988 Marek Rosa blog del desarrollador VRAGE agua volumetrica

VRAGE Agua – Fuerzas

Para simular los fenómenos naturales básicos usamos estas fuerzas:

  • Gravedad
  • Presión
  • Tensión superficial

Hay una cantidad indefinida de otras fuerzas posibles, como fricción/viscosidad, fuerzas de propulsión, viento, bombas, turbinas… Cada una de ellas agrega más inmersión y comportamiento natural al agua, por otro lado, aumenta el costo de rendimiento del algoritmo. .

1675808104 386 Marek Rosa blog del desarrollador VRAGE agua volumetrica
Ejemplo: Interacción con el cursor del ratón – fuerza de atracción y de distracción

Gravedad

La gravedad es una fuerza centrada en un punto con diferente dirección por celda. Necesitamos considerar todos los casos especiales que pueden aparecer en nuestros juegos, por lo que nuestros requisitos de gravedad son muy similares a la fuerza natural.

  • La gravedad es dinámica y es diferente en diferentes posiciones en el mundo.
  • No es lineal y no está alineado con ningún eje.
  • No puede haber gravedad en absoluto.
  • El centro de gravedad puede estar dentro de una piscina de agua.
1675808107 134 Marek Rosa blog del desarrollador VRAGE agua volumetrica
Ejemplo: el agua sigue el centro de gravedad y crea un glóbulo a su alrededor.

1675808108 375 Marek Rosa blog del desarrollador VRAGE agua volumetrica
Ejemplo: velocidades alineadas a lo largo de la fuerza de gravedad

Presión

La fuerza de presión determina la distribución del volumen de agua, trata de mantener igual la cantidad de agua en cada celda. El resultado de esta fuerza es que el agua no se comprime en varias celdas y llena los espacios vacíos mucho más rápido, incluidas situaciones como curvas en U, etc.

  • La presión distribuye el líquido en las células para mantener el mismo umbral
  • La presión ayuda a que el líquido llegue a lugares donde el agua debería fluir naturalmente
  • Si no hay presión, toda el agua se comprime en varias celdas
  • Esta fuerza no es una presión hidrostática.
  • No se considera la presión del aire.
  • Nuestra agua es comprimible
    • + llega al nivel adecuado muy rápido
    • – se necesita una gran cantidad de agua en profundidad
1675808110 310 Marek Rosa blog del desarrollador VRAGE agua volumetrica
Ejemplo: Igualación de agua en una curva en U

Superficie tensión

La tensión superficial es una fuerza que empuja contra la superficie del agua para mantener el agua en forma de glóbulo. Este efecto es más visible en gravedad cero, donde crea bonitas manchas dinámicas.

1675808111 256 Marek Rosa blog del desarrollador VRAGE agua volumetrica
Fuente: NASA

Con la tensión superficial, el comportamiento a veces también puede imitar las gotas de agua en el vidrio de la ventana.

1675808113 318 Marek Rosa blog del desarrollador VRAGE agua volumetrica
Ejemplo: tensión superficial creando glóbulos en gravedad cero
1675808114 17 Marek Rosa blog del desarrollador VRAGE agua volumetrica
Ejemplo: velocidades alineadas con la fuerza de tensión superficial

VRAGE Agua – Difusión

Gracias al algoritmo basado en cuadrículas, es muy fácil encontrar vecinos para cada celda. En cada iteración, el agua se distribuye a estos vecinos en una cantidad dada por el radio de difusión. Con la difusión podemos simular fácilmente fenómenos como niebla, vapor o gas. Los principios de la difusión son:

4 direcciones (arriba, abajo, izquierda, derecha)

Si no se limita, el agua siempre se evapora en forma de niebla.

Ampliación solo a vecinos directos

La cantidad está determinada por el radio de difusión.

1675808114 339 Marek Rosa blog del desarrollador VRAGE agua volumetrica
Ejemplo: Difusión sin velocidad

El centro del área de difusión está dado por COM y la velocidad de la celda, donde COM es el inicio del vector y el final del vector es el centro del área de difusión.

1675808115 466 Marek Rosa blog del desarrollador VRAGE agua volumetrica
Ejemplo: Difusión con velocidad

1675808118 43 Marek Rosa blog del desarrollador VRAGE agua volumetrica
Ejemplo: la gota de agua se expande hasta el área vacía, ya que no se aplican fuerzas

VRAGE Agua – Trabajo en progreso

Todo el contenido presentado es un trabajo en progreso y está sujeto a cambios. Actualmente, nuestro objetivo es ampliar la simulación del agua a nivel planetario. Para el prototipo usamos estructura octárbol acelerada para sólidos y nivel de detalle manual (LOD) para el agua.

1675808122 520 Marek Rosa blog del desarrollador VRAGE agua volumetrica

Ejemplo: escala de comparación a nivel planetario

1675808124 774 Marek Rosa blog del desarrollador VRAGE agua volumetrica
Ejemplo: cambio de LOD de agua de manula

Durante el desarrollo también hay algunas situaciones inesperadas en las que introduces un comportamiento no planificado. ¡Mira los más interesantes!

1675808127 738 Marek Rosa blog del desarrollador VRAGE agua volumetrica

Ejemplo: Agua viscosa – lava, miel, hierro fundido…

1675808130 648 Marek Rosa blog del desarrollador VRAGE agua volumetrica
Ejemplo: agua hirviendo

Agua VRAGE – Próximos pasos

Continuamos mejorando la simulación de agua a gran escala, que incluye métodos más sofisticados de cambio de LOD, resolución de red arbitraria, etc. Es posible combinar más técnicas de optimización de agua. Las próximas prioridades para nosotros son:

  • Lodding, simulación a gran escala, ocultamiento
  • Generación de superficie/cubos de marcha
  • Flotabilidad
  • Moviéndose al espacio 3D

¡Sigue nuestras redes sociales para enterarte de las últimas noticias!

¡Siempre nos impresiona la innovación de nuestra comunidad de modding! Nos gustaría agradecer a la comunidad de Space Engineers por continuar inspirándonos a través de sus ideas, sugerencias y arduo trabajo.

Contratación

Si está interesado en trabajar en juegos increíbles como Space Engineers, ¡nos encantaría saber de usted!
Revisar la posiciones abiertas en Keen Software House y no olvide enviarnos su CV/currículum vitae en inglés y carta de presentación.

¡La colaboración remota es posible!

1675808130 348 Marek Rosa blog del desarrollador VRAGE agua volumetrica

Nuestro equipo es global.

Encontrar a los mejores candidatos para unirse a Keen Software House significa explorar todas las soluciones posibles, incluido el trabajo remoto. Si bien nos esforzamos por brindar a los miembros del equipo el mejor equilibrio posible entre el trabajo y la vida aquí en Praga en nuestro increíble oficinas de la oranzerie, entendemos que no siempre es posible hacer la transición, por lo tanto, somos muy amigables a distancia. Aquí hay un mapa de dónde viven nuestros compañeros de equipo.

1675808131 200 Marek Rosa blog del desarrollador VRAGE agua volumetrica

¡Gracias por leer este blog!

Mejor,
Petr Minařík
Programador jefe en Keen Software House

Para más noticias:
Motor Vrage: www.keenswh.com/vrage/
Ingenieros espaciales: www.SpaceEngineersGame.com
Casa de software entusiasta: www.keenswh.com
Ingenieros medievales: www.MedievalEngineers.com
Buena IA: www.GoodAI.com
Desafío general de IA: www.General-AI-Challenge.org


Biografía personal:

Petr Minařík es programador principal en Keen Software House, un estudio independiente de desarrollo de juegos mejor conocido por su éxito de ventas Space Engineers (más de 4 millones de copias vendidas). Petr es un exlíder del equipo que desarrolló y lanzó con éxito Space Engineers, y que desarrolló las partes más importantes de su base de código.

Petr ha estado interesado en la programación desde su infancia, cuando ganó dinero recolectando papel viejo y compró Didaktik Gama, clon nacional de ZX Spectrum. Pasó tres años en 2K Czech trabajando en Mafia 2 en varios puestos de programación hasta que se lanzó el juego. Luego comenzó a trabajar en Keen Software House con Marek Rosa en su juego Miner Wars y durante los últimos 11 años ha ayudado a que Space Engineers sea inolvidable y la empresa famosa. A Petr le encanta resolver problemas desafiantes, especialmente aquellos que todos dicen que son imposibles de resolver.

En este momento, Petr está trabajando en la próxima generación del motor VRAGE, centrado en la simulación de líquidos y fluidos.

Fuente del artículo

Deja un comentario