iOS - OpenGL ES 2.0 - получение координат трехмерного мира от касания 2D-экрана - PullRequest
0 голосов
/ 15 октября 2018

Я хочу иметь возможность разместить объект в месте, где я касаюсь экрана.

«Камера» 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-точки, используя матрицы?

...