iOS-OpenGL ES 2.0-通过2D屏幕触摸获取3D世界坐标

时间:2018-10-15 13:38:18

标签: ios 3d opengl-es opengl-es-2.0 glkit

我希望能够在触摸屏幕的位置放置一个对象。

OpenGL“相机”始终放置在3D世界中的原点(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);

所以我想我需要使用矩阵从2D点检索3D点吗?

0 个答案:

没有答案