Как перевести 3D в 2D? Привет.
У меня есть координаты объекта в игре, представим A(x, y, z);
Есть координаты где стоит игрок B(x, y, z);
Есть координаты куда игрок смотрит C(x, y, z);
Исходя из этих данных мне нужно получить точку на мониторе 2D где находится объект, т.е. перевести все эти 3D координаты в 2D. Как это можно сделать? Размер экрана если что статический, 640x480

21 Авг 2019 в 06:06
214 +1
0
Ответы
1

Для перевода 3D координаты объекта в 2D точку на экране, можно использовать проекцию. Одним из способов проецирования является перспективная проекция.

Для этого нужно сначала найти вектор направления, в котором смотрит игрок, который можно вычислить как разность векторов C - B. Затем нужно нормализовать этот вектор.

Далее можно найти вектор от игрока к объекту, который равен разности векторов A - B. Нормализуем также этот вектор.

Теперь можно использовать уравнение перспективной проекции для нахождения координат на экране:

x_screen = (f x) / z
y_screen = (f y) / z

Где f - фокусное расстояние (можно подобрать экспериментально), x и y - координаты объекта относительно игрока, z - расстояние от игрока до объекта.

Например, если объект находится на расстоянии 10 единиц от игрока, то z = 10. Подставляя все значения, можно получить x_screen и y_screen - координаты объекта на экране.

Помните, что в вашем случае размер экрана статический (640x480), поэтому координаты объекта на экране не должны превышать этих значений.

Надеюсь, данная информация поможет вам решить задачу. Удачи!

20 Апр 2024 в 13:23
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир