Я создал простой 3D-мир, используя GLKit. Я пытаюсь найти конкретную точку в моем 3D-мире на основе экрана. Похоже, я хотел бы использовать GLKMathUnproject. Подпись метода:Как использовать GLKMathUnproject
GLKVector3 GLKMathUnproject (
GLKVector3 window,
GLKMatrix4 model,
GLKMatrix4 projection,
int *viewport,
bool *success
);
Несколько вещей меня путают по параметрам, которые требуются. Сначала не должны быть координаты окна GLKVector2? И самое главное не проецировать точку на экране в 3D-пространство, создать луч вместо одной точки. Когда вы проецируете точки в трехмерном пространстве на двумерную плоскость (ака экран), вы теряете одно измерение информации об этой точке. Итак, как бы можно было преобразовать 2D-экранную точку в трехмерную точку мира, не указав, на какой глубине вы хотите «непроектировать» свою точку? Об этом методе нет в любом месте в Интернете (помимо яблочных документов).
«Итак, окно x, y - экранные координаты, а окно z - желаемая глубина». заключается в том, что в диапазоне от -1 до 1 или от 0 до 600 (или что такое устройство)? Спасибо – Andrew
, используя код блога CasualDistraction, значение far_pt всегда возвращается {inf, inf, inf}. Я попытался изменить 2-й Z на 0.999, и это дало значение, но не правильное. Если я правильно читаю ваш ответ, x & y окна-координаты x & y, а Z представляет собой «какой процент от расстояния между ближним и дальним самолетами вы хотите?» Это правильно? – Olie