No sé si hay una forma "correcta" de hacerlo, pero es probable que solo sea una transformación lineal estéticamente agradable aplicada con una caída calculada desde la distancia hasta un punto.
Entonces, para cualquier elemento con el que esté trabajando, usted:
- encontrar la distancia al centro de la urdimbre (d)
- calcule 1 - d / la distancia máxima del efecto que desea (i para intensidad)
- sujetar eso a [0-1]
- transformar el elemento por lerp (identidad, transformar, i)
Iirc, las guerras de geometría aplicaron eso como una deformación distorsionadora a algunos elementos, mientras que otros elementos como las partículas fueron simplemente afectados por la "fuerza", sin ser distorsionados. Puede aplicar la distorsión en un sombreador de vértices, suponiendo que tenga suficientes vértices para muestrear suavemente el efecto. Alternativamente, podría representar todo lo que necesita afectar a un búfer fuera de la pantalla primero, y luego representar los resultados en un quad bien teselado al que aplica la distorsión, antes de agregar todos los elementos no distorsionados en la parte superior.
En cuanto a la transformación, la escala le dará la apariencia de succión. Si no recuerdo mal, también hubo algunas torsiones, lo que sería una pequeña rotación.
Puede ser más elegante y más elegante con sus cálculos del factor de intensidad para obtener efectos más extravagantes. Podría, por ejemplo, calcular el ángulo (a) de que un elemento es relativo al centro, y factorizar eso. Tome cos (a) y puede hacer ondas radiales en el efecto. Lo que desea hacer es configurar el código de andamiaje necesario y luego ir a la ciudad experimentando con diferentes combinaciones de factores.