Я хочу иметь возможность разместить объект в месте, где я касаюсь экрана.
«Камера» OpenGL всегда располагается в начале координат (0, 0) в трехмерном мире, но может смотреть в разных направлениях.Объект, который я хочу разместить, всегда должен находиться на определенном расстоянии от камеры / источника, скажем, 50 единиц расстояния.
Вот как я получаю точку касания:
- (void)handleLongGesture:(UILongPressGestureRecognizer *)gesture {
CGPoint touchPoint = [gesture locationInView:self.view];
float theScale;
if ([[UIScreen mainScreen] respondsToSelector:@selector(nativeScale)])
theScale = [[UIScreen mainScreen] nativeScale];
else if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
theScale = [[UIScreen mainScreen] scale];
else
theScale = 1.0;
float x = theScale * touchPoint.x;
float y = theScale * touchPoint.y;
Вот матрица вида / модели:
GLKMatrix4 viewMatrix = GLKMatrix4Identity;
viewMatrix = GLKMatrix4Scale(viewMatrix, 1, 1, 1);
viewMatrix = GLKMatrix4RotateX(viewMatrix, -self.rotationX);
viewMatrix = GLKMatrix4RotateY(viewMatrix, -self.rotationY);
А вот матрица MVP:
GLKMatrix4 vpMatrix = GLKMatrix4Multiply(self.projectionMatrix,
viewMatrix);
Итак, я думаю, что мне нужно извлечь 3D-точку из 2D-точки, используя матрицы?