Перевод мыши X & Y на 3D -координаты модели
-
18-09-2019 - |
Вопрос
Я строю простой 3D -интерфейс перетаскивания при обработке и хочу обнаружить, когда мышь катится по объекту. Я предполагаю, что мне нужно сделать несколько матричных переводов в координаты 3D -модели, чтобы попасть в пространство экрана и так далее ...
У меня есть простая версия этой работы, проблема в том, что, когда камера перемещается по сцене координаты, которые я становлюсь.
Итак, как мне перевести координаты плитки в пространство экрана (поскольку ScreenX & Screeny не работают должным образом)?
ОБНОВИТЬ:В конце концов я нашел два примера с сайта обработки о том, как это сделать. Благодаря Villintehaspam.
Решение
Эта проблема называется сбором. Ищите выбор мыши, и вы получаете много -много хитов.
Основная теория такова:
- Получите X, Y координат от щелчка мыши.
- Преобразуйте их в координаты x, y, z в координатах глаз (т.е. -1 <= x <= 1, -1 <= y <= 1, z = ближняя/дальняя расстояние клипа, если у вас нормальная проекция).
- Преобразовать эти координаты в обратном направлении проекционной матрицы, чтобы получить мировые координаты.
- Теперь у вас есть луч из положения камеры, с направлением к мировым координатам, которое вы только что получили.
- Сделайте тест пересечения с лучей с объектами, которые вы хотите рассмотреть. Выберите объект, который пересекает луч, который ближе всего к происхождению лучей (положение камеры).