Estou empolgado em desenvolver um detalhe importante da água do meu jogo: fazer fluir para baixo!
Considerando um mundo 3D típico em que a água tende a ir em direção à gravidade g=(0,-1,0)
e tendo o normal da superfície da água n=(x,y,z)
, como posso calcular, com base nisso, o vetor de direção do fluxo de água?
Como exemplo, considere este gráfico mal feito (em 2D, no entanto)
Atualização: Estou considerando uma superfície de água muito simplificada (apenas um avião: sem ondulações, sem ondas, sem pressão etc.). Se qualquer um deles precisasse ser aplicado, a resposta dependeria de mais fatores do que apenas o normal.
fonte
Você não pode determinar a direção do fluxo de água a partir de suas normais de superfície; será necessário armazenar dados adicionais.
Uma simples viagem para olhar um rio deve ser suficiente para convencê-lo disso. Qualquer diferença nas normais da superfície reflete apenas ondulações na superfície, a massa de água continua a fluir na mesma direção. Mas a razão subjacente é porque o normal define um plano e você precisa de um vetor de fluxo. Seus vetores são sobre a forma da superfície e não o movimento da água.
fonte