Je suis coincé à développer un détail important de mon eau de jeu: le faire couler vers le bas!
Considérant un monde 3D typique dans lequel l'eau a tendance à aller vers la gravité g=(0,-1,0)
et ayant la normale à la surface de l'eau n=(x,y,z)
, comment puis-je calculer, sur cette base, le vecteur de direction du flux d'eau?
À titre d'exemple, considérons ce graphique mal fait (en 2D, cependant)
Mise à jour: j'envisage une surface d'eau très simplifiée (juste un avion: pas d'ondulations, pas de vagues, pas de pression, etc.). Si l'un de ces éléments devait être appliqué, la réponse dépendrait de plus de facteurs que la normale.
la source
Vous ne pouvez pas déterminer la direction de l'écoulement de l'eau à partir de ses normales de surface, vous devrez stocker des données supplémentaires.
Un simple voyage pour regarder une rivière devrait suffire à vous en convaincre. Toute différence dans les normales de surface reflète simplement l'ondulation de la surface, la masse d'eau continue de couler dans la même direction. Mais la raison sous-jacente est que la normale définit un plan et que vous avez besoin d'un vecteur de flux. Vos vecteurs concernent la forme de la surface et non le mouvement de l'eau.
la source