- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试从鼠标点击屏幕到 3D 空间跟踪光线。据我了解,默认位置和方向如下所示:
来自这段代码:
GLint viewport[4];
GLdouble modelview[16];
GLdouble projection[16];
GLfloat winX, winY;
GLdouble near_x, near_y, near_z;
GLdouble far_x, far_y, far_z;
glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
glGetDoublev( GL_PROJECTION_MATRIX, projection );
glGetIntegerv( GL_VIEWPORT, viewport );
winX = (float)mouse_x;
winY = (float)viewport[3] - (float)mouse_y;
gluUnProject(winX, winY, 0.0, modelview, projection, viewport, &near_x, &near_y, &near_z);
gluUnProject(winX, winY, 1.0, modelview, projection, viewport, &far_x, &far_y, &far_z);
我的问题是,如何更改近平面和远平面的位置和角度,以便所有鼠标点击看起来都来自相机在 3D 空间中的位置和角度?
具体来说,我正在寻找一种方法,将两个投影平面的中心沿线 (0,0,1) -> (0,0,-tan(65°)) 定位在 Z 轴下方 65° 处[-tan(65°) ~= -2.145] 近平面和远平面都垂直于通过这些点的视线。
最佳答案
My question is how do you change the position and the angle of the near and far planes so that all mouse clicks will appear to be from the camera's position and angle in 3D space?
将投影和模型 View 矩阵输入 gluUnProject 可以解决这个问题。具体来说,您将用于渲染的投影和模型 View 矩阵传递到 gluUnProject 中,以便未投影的坐标与这些矩阵描述的局部坐标系的坐标相匹配。
关于c++ - 如何从 gluUnProject 重新定位近平面和远平面以考虑相机位置和角度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17075510/
在this线。第二个答案表明: Solution 2 call the gluUnproject two time, one with clipZ = -1 and another one with
我正在使用 gluUnProject 将光线转换到场景中并在其中添加基元。我现在要做的是准确地选择现有的图元,因此如果我有 3 个球体,我可以单击其中一个将其删除。 我认为解决方案会以某种方式检查光线
我当前正在从游戏循环中调用 Trace(下面的方法)。现在我想做的就是从屏幕鼠标获取世界坐标,这样我就可以在世界空间中移动对象。然而,我从 gluUnProject 得到的值是;让我很困惑。 我使用
我需要 gluUnProject 将屏幕坐标转换为世界坐标,现在我正要让它工作。当我的应用程序运行时,它准确地告诉我屏幕上的坐标,我知道这些坐标存储在我的渲染器线程中,然后抽出屏幕坐标。不幸的是,屏幕
我正在做一个 OpenGL 项目,我需要能够在 3D 空间中点击东西。据我所知, gluUnproject() 将完成这项工作。但是我听说可能会发生意想不到的事情,并且准确性会下降。可能只是这些人用错
我正在尝试使用 gluUnProject 将我的鼠标坐标转换为世界坐标,但它似乎不起作用,或者我只是误解了 glUnProject 函数的功能,这是我正在使用的代码,我的矩阵都是检查结果很好,至于鼠标
我正在将 SDL 与 OpenGL 一起使用,到目前为止,我已经完成了 2d 中的所有操作(使用 glOrtho()) 现在我想尝试在 3D 中绘制东西,但是当然,因为我现在已经将第三维加入到混合物中
我正在绘制一个 z=0 的纹理,如下图所示: 我的近平面和远平面设置为 0.001 和 120.0。我可以使用键盘四处移动并放大和缩小。 我想要的是在使用 gluunproject 时识别鼠标光标位置
大家好,我在这里阅读了很多关于如何使用 gluUnproject 的文章,我认为我基本上了解了它的作用。但是,是的,我的问题是这个.. 我有 1 架飞机,如果我点击那里没有问题,我的对象会去那里,但如
我正在尝试从鼠标点击屏幕到 3D 空间跟踪光线。据我了解,默认位置和方向如下所示: 来自这段代码: GLint viewport[4]; GLdouble modelview[16];
我正在移植 GLU gluUnproject现代OpenGL的方法。我大致了解它背后的算法,但我的问题是为什么我们需要模型 View 矩阵?它可以只是 View 矩阵吗?我们将屏幕坐标投影到世界空间中
我正在尝试使用 glReadPixels 和 gluUnProject 获取真实坐标,但它不起作用。 void GLWidget::resizeGL(int Width, int Height) {
我尝试将鼠标点击坐标转换为 opengl 坐标。实际上它似乎有效,但是当我取消注释我刚刚为测试而编写的 cout 行时,它会将我的 vars 设置为不是数字 -nan。它是如何发生的?我该如何解决?
我有一个由很多点组成的场景,我用它绘制了 glBegin(GL_POINTS); glVertex3f(x[i],y[i],z[i]); // the points are displayed pro
我收到此错误消息 08-30 19:20:17.774: ERROR/AndroidRuntime(4681): FATAL EXCEPTION: GLThread 9 08-30 19:20:17.
在不使用 gluUnProject 的情况下,如何在现代 OpenGL 中将屏幕坐标转换为世界坐标? 最佳答案 AFAIK - gluUnproject 需要提供给它的所有信息(模型 View 、投影
我有一个场景,我正在用 openGL 在其中渲染几个立方体(程序结构没有使用 GLUT,它在 win32 程序结构中,但我只是用 glutSolidCube 绘制立方体)现在我想通过鼠标选择这些立方体
我这样设置我的场景(Android 应用程序,OpenGL ES): GLU.gluPerspective(gl, 60, viewRatio, 0.1f, 1000.0f); // ... GLU.
通过iOS的2D屏幕坐标来检测3D世界坐标,除了gluUnProject端口还有没有其他可能的方法? 这几天我一直在摆弄这个问题,但我似乎无法掌握它的窍门。 -(void)receivePoint:(
我正在尝试使用鼠标在 3D 空间中移动 3D 对象。 因此,我检索实际矩阵并使用 gluUnProject(将窗口坐标映射到对象坐标)从鼠标位置 dx 和 dy 获取实际的 x、y、z。 根据设计,我
我是一名优秀的程序员,十分优秀!