Я застрял, развивая важную деталь моей игровой воды: заставляя ее течь вниз!
Учитывая типичный трехмерный мир, в котором вода стремится к гравитации g=(0,-1,0)
, и имея нормаль водной поверхности n=(x,y,z)
, как я могу рассчитать, основываясь на этом, вектор направления потока воды?
В качестве примера рассмотрим этот плохо сделанный граф (хотя в 2D)
Обновление: я рассматриваю очень упрощенную поверхность воды (просто плоскость: без ряби, без волн, без давления и т. Д.). Если какой-либо из них необходимо применить, ответ будет зависеть от большего числа факторов, чем просто нормальный.
источник
Вы не можете определить направление потока воды от ее поверхности нормали, вам нужно будет хранить дополнительные данные.
Простое путешествие, чтобы посмотреть на реку должно быть достаточно, чтобы убедить вас в этом. Любая разница в поверхностных нормалях просто отражает волнистость на поверхности, масса воды продолжает течь в том же направлении. Но основная причина в том, что нормаль определяет плоскость, и вам нужен вектор потока. Ваши векторы - это форма поверхности, а не движение воды.
источник