问题标签 [glulookat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2397 浏览

c++ - OpenGL 相机 - 使用 SetCursorPos(x,y); 时移动相机而不回弹?

当我尝试更新我的相机时遇到问题。

我想通过鼠标更改相机的俯仰和偏航(它的外观)但我希望鼠标保持定位在窗口的中心。

问题是当鼠标设置为返回原点时,相机会快速返回到某个点。

我想通过从原点行进的距离而不是返回原点的距离来更新相机。

如果我把它拿出来,它会很好地工作,但当时的鼠标可能会离开窗口。

0 投票
1 回答
2380 浏览

c++ - 使用 OpenGL 和 gluLookAt 围绕球体旋转

好的,所以我尝试单击并拖动以使用 C++ 和 OpenGL 围绕对象旋转。我的方法是使用以原点为中心的 gluLookAt 并通过使用球体的参数方程来获取眼睛的坐标 (eyex = 2* cos(theta) * sin(phi); eyey = 2* sin( theta) * sin(phi); eyez = 2* cos(phi);)。这很有效,因为我可以单击并水平旋转,但是当我尝试垂直旋转时,它会形成紧密的圆圈而不是垂直旋转。我试图通过使用相机的位置和沿 xz 平面成 90 度角的向量来获得向上向量,并取其叉积。我的代码如下:

我有点基于,但它不起作用,所以我尝试了我的方法。

0 投票
2 回答
610 浏览

opengl-es - LookAt 目标位置是否与 z = 0 或 z = 1000 或 -1000 无关?

我正在 OpenGL ES 中尝试 LookAt,

第二行是目标的位置......所以我想知道,如果我将zfrom更改01000or -1000,不应该看到什么不同吗?结果都是一样的,这是为什么呢?

0 投票
4 回答
35833 浏览

opengl - OpenGL 的 LookAt 函数中的 UP 向量到底是什么?

这与LookAt 目标位置无关,如果它是 z = 0 或 z = 1000 或 -1000?

我试过

一切正常,现在我将第三行(UP 向量)的最后一个数字更改为0.8

它完全一样......接下来我尝试并修改了第 3 行,第一个数字为0.8

现在视图就像它向左旋转了 45 度。这个 UP 矢量如何工作?

0 投票
2 回答
214 浏览

opengl - 为什么在 OpenGL 的 LookAt 中,如果我们的脸几乎朝上,我们仍然可以看到我们面前的东西?

可能重复:
OpenGL 的 LookAt 函数中的 UP 向量到底是什么?

这与:OpenGL 的 LookAt 函数中的 UP 向量到底是什么有关?

如果来电是:

如果我坐在椅子上直视前方,将 iPad 放在眼前,那么我的头顶就指向天空。因此(0, 1, 0)对于 UP 向量,如第 3 行所示。如果我把它改成(0, 0.00001, 1)怎么办?这意味着我几乎要躺下,现在我的脸和眼睛都朝向天空。那么为什么结果和我使用的时候完全一样(0, 1, 0)呢?

0 投票
1 回答
675 浏览

opengl - How to get the projection plane in OpenGL

I use the gluPerspective and glLookAt to set my projection matrix and view matrix. If I want to get the coordinate of the eye, it's the first three arguments in the gluLookAt, right?

However, now I need to get the projection plane, that is, the position of the screen in the world coordinate system. You know, if I can calculate the left-bottom corner point and the right-top corner point, the plane is right there!

Could anyone give me a hint about how to do this calculation?

0 投票
1 回答
1601 浏览

c++ - OpenGL窗口切断模型视图

我正在使用 Qt 和 OpenGL(更具体地说,QGLWidget)用 C++ 编写台球游戏。我对 OpenGL 有一定了解,但不是太专业。

我所做的:创建一个 Qt 应用程序窗口,其中包含 Qt 小部件(按钮,...)和一个 QGLWidget(我自己的实现)。

问题:我可以在这个窗口中画一个球并旋转它,等等,但是视图的纵横比不正确+我似乎无法使用整个空间。

错误的纵横比 白色矩形是比赛场地(尺寸:1.4 x 2.7 浮点坐标)

我可以转换模型,但它似乎被切断了: 模型截断

一旦我转换视图(检查下面的功能),我的模型的一部分似乎被切断了。

这是矩形(球在这些坐标内正确绘制):

OpenGL调整大小功能:

最后,与视图相关的渲染函数的一部分:

0 投票
2 回答
846 浏览

c++ - Qt 中的 OpenGL 不绘制红色方块

我正在尝试QGLWidget在 Qt 应用程序中使用 OpenGL。

我做了一个等的子类QGLWidget,并认为我会测试它是否有效。

但是,以下代码没有像我预期的那样工作:

我想象这会做的是看一个红色正方形的中心。但是相反,当我运行它时,它似乎非常短暂地看着正方形的中心,然后显示屏就变成了黑色。

有什么我做错了吗?我没有在其他任何地方做任何 OpenGL。上面的函数是子类中唯一的 OpenGL 代码(现在::resizeGL()and中没有任何内容::initializeGL())。

0 投票
2 回答
6167 浏览

qt - OpenGL——如何使用 gluLookAt 移动场景以响应鼠标输入

我在 Qt 中通过 OpenGL 使用 OpenGL QGLWidget,并且我正在尝试实现一些基本的鼠标和键盘驱动的交互。

例如,键盘方向键将用于“平移”场景,鼠标滚轮用于放大场景,鼠标用于旋转模型。

我已经想出了如何实现平移和缩放,但是在实现旋转时遇到了麻烦。

这是我到目前为止所拥有的:

所以基本上我设置了初始gluLookAt参数,然后我添加了两个数组float camDelta[3]float lookAtDelta[3],以跟踪相机位置的变化以及它正在寻找的位置以响应用户与场景的交互。

对于鼠标滚轮,我这样做:

同样在 中MyGLWidget::keyPressEvent,我修改了用于左右平移的 deltas 字段,以及用于上下平移的 deltas'[0]字段。[1]

所以我的问题是,我如何实现类似的东西来支持鼠标旋转?我有点困惑,因为我猜我不仅要改变相机的视线方向,还要改变向上的向量,但我对如何做到这一点并不清楚。

0 投票
1 回答
1110 浏览

c++ - LookAt 实施不当行为

我期待着实现一个 LookAt(forward, up) 方法,其中:

我在网上看到了一些实现,但是分析代码,我发现了潜在的不当行为......

我从最简单到最难列出它们:

1) 如果 UP 是零向量,这将不起作用。

2) 如果 FORWARD 是零向量,这将不起作用。

3) 如果 UP 和 FORWARD 是平行的,这将不起作用。

...

那么..这个方法应该如何正确实现呢?

这是我发现的一个代码示例。