преобразование 2D-точки окна в 3D-точку - PullRequest
1 голос
/ 13 июля 2011

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

Если кто-нибудь знает какие-нибудь хорошие учебники о том, как это сделатьили метод, любая помощь будет оценена.Я знаю, что мог бы использовать трассировку лучей, но это было бы слишком сложно, я думаю.

Ответы [ 3 ]

2 голосов
/ 13 июля 2011

Два основных метода выбора мыши:

  1. Проверка пересечения
  2. Выбор цвета

Тесты пересечения являются более популярными из двух,и на простейшем уровне включает в себя «выстрел» из луча и проверку его пересечения с какими-либо точками.Луч также можно заменить многогранником, если вы хотите добиться более чувствительного выделения (полезно для выбора точек на вершинах).

Выбор цвета включает в себя отключение АА, смешивание, тени и т. Д. И повторное рисование сценыиспользуя сплошные цвета для объектов.Затем glReadPixels используется для нахождения цвета в точке мыши, и этот цвет используется для определения, щелкнул ли он по соответствующему объекту.

Сбор лучей:

Сбор цвета:

0 голосов
/ 13 июля 2011

Вам нужен метод gluUnProject . Вам понадобится окно x, y и глубина.

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

0 голосов
/ 13 июля 2011

Термин, который вы ищете, это комплектация мышью .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...