我使用 GLKit 创建了一个简单的 3D 世界。我正在尝试根据屏幕点击在我的 3D 世界中找到一个特定点。看来我想使用 GLKMathUnproject。该方法的签名是:
GLKVector3 GLKMathUnproject (
GLKVector3 window,
GLKMatrix4 model,
GLKMatrix4 projection,
int *viewport,
bool *success
);
有些事情让我对它所需的参数感到困惑。首先窗口坐标不应该是 GLKVector2 吗?最重要的是,不会将屏幕上的点投影到 3D 空间中创建射线而不是单个点。当您将 3D 空间中的点投影到 2D 平面(也称为屏幕)上时,您会丢失有关该点的一维信息。那么如何将 2D 屏幕点转换为 3D 世界点而不指定您希望将点“取消投影”到什么深度?互联网上的任何地方都绝对没有评论这种方法(除了苹果文档)。