问题标签 [projection-matrix]

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 投票
1 回答
263 浏览

c - 设置透视图的坐标系?

我理解平截头体查看系统背后的概念;它的形状像金字塔,随着物体靠近中心,它们会变小,直到最终被剪掉。但是,当在 OpenGL 中使用查看投影时(请注意:我不使用已弃用的功能),您可以像这样设置坐标系:

orthoExample(左、右、下、上、近、远);

这一切都很好,但是说到透视,事情变得有点奇怪。

透视示例(field_of_view_y,方面,近,远);

我该如何设置具有这样功能的坐标系?!?它不允许我指定左、右、下、上等。我知道透视只是平截头体投影的一种变体......

0 投票
1 回答
91 浏览

c - OpenGL矩阵问题

我有一个 NSOpenGLView 设置并且工作得很好,但是我需要绘制一个总是完全填充视图并且没有被剪裁的矩形(这有意义吗?)。我有一个始终为 1100x850 像素大小的视图。基本上,我想要做的是找到一种方法来确保 0.4 的 y 值始终将对象绘制在视图的最顶部,在底部绘制 -0.4 等。我也需要它有一些透视感,所以我做不到glOrtho

有没有办法做到这一点?

如果我没有很好地解释它,这就是我的意思:

  • 该中心线的 x 值始终为 0.0。

  • 左行的 x 值为 -0.55,右行的 x 值为 0.55

  • 顶线的y值为0.4,底线的值为-0.4

所以,我需要一个具有以下顶点的矩形来完全填充但不离开屏幕:

0 投票
0 回答
516 浏览

opengl - 如何在 Open GL 中定义 MODELVIEW 矩阵

我正在做相机校准,我有我的内在和外在参数。我的虚拟摄像机很少,需要为每个摄像机绘制平截头体。我几乎解决了这个问题,找出投影矩阵(m [int] * m [ext] = Projection Matrix),但我仍然不知道如何找出Modelview矩阵......我需要它,用于找到当前的截头角,并绘制相机的局部坐标系。

0 投票
3 回答
1742 浏览

math - 原点在屏幕左下角的正交投影

我正在使用 python OpenGL 绑定,并尝试只使用现代 opengl 调用。我有一个带有顶点的 VBO,我正在尝试使用传递给顶点着色器的正交投影矩阵进行渲染。

目前我正在用以下值计算我的投影矩阵:

我从这里得到的代码:

正交投影矩阵的公式?

这似乎工作正常,但我希望我的 Origin 位于屏幕的左下角。这是一个我可以在我的矩阵上应用的函数,所以一切都“正常工作”,还是我必须手动翻译每个对象 w/2 h/2?

旁注:坐标是否会与像素位置匹配,并且可以正常工作?

因为我使用的是现代 OpenGL 技术,所以我认为我不应该使用 gluOrtho2d 或 GL_PROJECTION 调用。

0 投票
1 回答
4798 浏览

opengl - 透视投影矩阵:如何仅从水平 FoV 和纵横比计算垂直 FoV?

考虑以下透视投影矩阵,它仅在调用者给出的垂直视野和纵横比下工作(非常好):

如何扩展此函数的主体以支持这一点:调用者现在可以指定垂直(fovY)或水平(fovX)视野,但不能同时指定纵横比。这个函数如何能够仅根据给定的纵横比和 fovX 计算缺失的 fovY?

0 投票
1 回答
463 浏览

objective-c - OpenGLES添加投影

我开始学习 OpenGLES,目前我正在阅读这个TUTORIAL

我已经到达添加投影的段落,我被困在那里:

作者在其中使用了一些变量,populateFromFrustumLeft...并没有解释它们。我想了解变量选择的逻辑,以便将来能够使用此功能。

请帮助我理解逻辑!

0 投票
1 回答
662 浏览

matrix - 如何在做这种映射的 Three.js 上设置投影矩阵?

如何在 Three.js 上制作投影矩阵,从 3d 点映射到以下规则描述的屏幕坐标?

0 投票
1 回答
605 浏览

android - OpenGL ES 2.0 在横向模式下切屏

我开始学习 OpenGL,并使用以下网站: http: //www.learnopengles.com/android-lesson-one-getting-started/

但似乎我在这部分遇到了问题(在纵向模式下工作正常):

但是当我尝试在横向模式下移动一个三角形(向左或向右)时,当将它们移动到远处的一侧时,三角形会被“切断”(不显示整个三角形)。似乎他们被表演了,就好像他们在屏幕外一样,而实际上并非如此。如前所述,它似乎在纵向模式下工作正常。

横向模式下的高度为 752,宽度为 1280(Galaxy Tab 2)。

这是否与此处设置的项目矩阵有关?

谢谢你的帮助!

0 投票
1 回答
597 浏览

android - 嵌套的 glPushMatrix 不起作用(堆栈大小为 1?)

我有使用旧 OpenGL ES 1 的 Android 项目。我正在使用这种嵌套调用:

它在模拟器和我的手机上运行良好,但在我的选项卡和我兄弟的选项卡上不起作用(对象的位置错误)。根据我的测试,似乎不支持嵌套的 glPushMatrix ,就像堆栈大小只有 1 一样,所以第一个 POP 不会返回到之前的 PUSH 状态,而是返回到第一个 PUSH 状态。我尝试了不使用嵌套调用的解决方法,它工作正常,但这样的解决方案使我的下一个工作复杂化。那是已知的事情吗?某些设备上的堆栈大小是否只有 1?我认为它应该至少是 32 或类似的东西。它是否以某种方式可检测和/或可配置?我可以以某种方式将矩阵导出到某个数组或不同的结构中以创建自己的堆栈并手动从中加载吗?谢谢。

0 投票
1 回答
600 浏览

c++ - 如何创建与当前投影矩阵匹配的 glClipPlanes?

我正在渲染空间中的一组点,用户手动旋转、平移、缩放并最终在所需部分上绘制了一个选择矩形。当他们这样做时,我调用gluPickMatrix然后gluPerspective构造投影矩阵,然后使用GL_SELECT渲染模式在他们选择的区域中找到点。

我只想显示所选区域中的点。对于测试每个点都有一个 boolean isSelected,我知道选择有效,因为选择了正确的点。但是,这有太多的点不可行,所以我想用它来构造四个与用户选择矩形定义的矩形棱镜(编辑:我的意思是截头锥体glClipPlane)相对应的平面。设置投影矩阵后如何导出要传递的系数?glClipPlane

现在我正在这样做,但它最终会剪掉所有的点:

我还尝试过规范化和/或否定平面坐标,这似乎最终还是会剪掉所有的点。