Estoy atrapado desarrollando un detalle importante del agua de mi juego: ¡hacer que fluya hacia abajo!
Teniendo en cuenta un mundo 3D típico en el que el agua tiende a ir hacia la gravedad g=(0,-1,0)
, y teniendo la normalidad de la superficie del agua n=(x,y,z)
, ¿cómo puedo calcular, en base a eso, el vector de dirección del flujo de agua?
Como ejemplo, considere este gráfico mal hecho (aunque en 2D)
Actualización: estoy considerando una superficie de agua muy simplificada (solo un avión: sin ondas, sin olas, sin presión, etc.). Si alguno de esos necesitara ser aplicado, la respuesta dependería de más factores que solo lo normal.
fuente
No puede determinar la dirección del flujo de agua desde sus normales en la superficie, necesitará almacenar datos adicionales.
Un simple viaje para mirar un río debería ser suficiente para convencerte de esto. Cualquier diferencia en las normales de la superficie simplemente refleja ondulaciones en la superficie, la masa de agua continúa fluyendo en la misma dirección. Pero la razón subyacente es porque lo normal define un plano y necesita un vector de flujo. Sus vectores tienen que ver con la forma de la superficie, no con el movimiento del agua.
fuente