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