Открыть мобильное меню

Реализация движения объекта по неровному ландшафту в 3D пространстве.

Координаты точки Z в 3D мире

При разработке игры, в которой персонаж движется по неровной поверхности ландшафта в любом направлении, возникла проблема узнать, на какой высоте Z он должен находиться в текущих координатах xy.

Так как поверхность состоит из треугольников, значит первым делом нужно узнать внутри какого находиться в данный момент объект.

Основная суть — проекция 3D треугольника на плоскость

Проекция треугольника. Вид сверху и снизу

Проецируем треугольник на плоскость XY (синий треугольник) и XZ (коричневый треугольник). Соответственно известны все точки треугольника во всех плоскостях и Oxy (координата объекта на плоскости XY).

1. Вид сверху. Нужно узнать точки пересечения отрезков A1,B1 с Oxy,P и B1,C1 с Oxy,R.

В результате находим N и M, которые "разрезают" треугольник по горизонтали.

2. Вид сбоку. Пускаем лучи из N и M вверх до максимальной z координаты, образуя отрезки N,S и M,T. Находим точки пересечения K и L.

Осталось из точки Oxy также пустить вверх луч до максимальной z и найти между K и L точку пересечения Oxz.