Вопрос

Я строю простой 3D -интерфейс перетаскивания при обработке и хочу обнаружить, когда мышь катится по объекту. Я предполагаю, что мне нужно сделать несколько матричных переводов в координаты 3D -модели, чтобы попасть в пространство экрана и так далее ...

У меня есть простая версия этой работы, проблема в том, что, когда камера перемещается по сцене координаты, которые я становлюсь.

Итак, как мне перевести координаты плитки в пространство экрана (поскольку ScreenX & Screeny не работают должным образом)?

ОБНОВИТЬ:В конце концов я нашел два примера с сайта обработки о том, как это сделать. Благодаря Villintehaspam.

http://processing.org/hacks/hacks:picking

Это было полезно?

Решение

Эта проблема называется сбором. Ищите выбор мыши, и вы получаете много -много хитов.

Основная теория такова:

  1. Получите X, Y координат от щелчка мыши.
  2. Преобразуйте их в координаты x, y, z в координатах глаз (т.е. -1 <= x <= 1, -1 <= y <= 1, z = ближняя/дальняя расстояние клипа, если у вас нормальная проекция).
  3. Преобразовать эти координаты в обратном направлении проекционной матрицы, чтобы получить мировые координаты.
  4. Теперь у вас есть луч из положения камеры, с направлением к мировым координатам, которое вы только что получили.
  5. Сделайте тест пересечения с лучей с объектами, которые вы хотите рассмотреть. Выберите объект, который пересекает луч, который ближе всего к происхождению лучей (положение камеры).
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top