Как вы выбираете отдельный треугольник в OpenGL ES 1.1? - PullRequest
1 голос
/ 15 декабря 2010

Что я хочу сделать, это выбрать точку на экране, провести луч через эту точку вниз по оси z и вернуть координаты x y z и нормали вершин первого треугольника, который пересекает мой луч. Проблема в том, что я недостаточно знаком с OpenGL, чтобы понять это. Я сделал выбор в Windows OpenGL, используя разные цвета на заднем буфере, но ничего, что включало отдельные треугольники.

Ответы [ 3 ]

2 голосов
/ 15 декабря 2010

Я сделал это на iPhone, но, как уже упоминалось, мне пришлось свернуть свой собственный комплект.Неизбежно, он имеет вкус, уникальный для моего конкретного приложения, но на высоком уровне, вот как это происходит.мировые координаты.На рабочем столе есть gluUnProject (), но на iPhone такой утилиты нет.Лично я использую порт iPhone с той же самой функцией, доступной от Mesa здесь .Вам может понадобиться настроить его.

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

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

0 голосов
/ 15 декабря 2010

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

0 голосов
/ 15 декабря 2010

OpenGL ES 1.1 не имеет специальной функции выбора. Вы должны построить свою собственную систему, чтобы сделать это.

...