问题标签 [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 投票
0 回答
4679 浏览

matrix - 在 Opengl ES 2.0 上设置透视投影使对象消失

我正在使用 opengl-es 2.0 开发一个项目,但在设置透视投影时遇到了一些麻烦。

如果我不设置透视投影并简单地将对象到世界矩阵(我相信它也称为模型矩阵)乘以顶点位置,则屏幕上的对象会正确渲染,它们看起来会被拉伸,但就我知道,这是投影矩阵可以解决的问题。问题是,每当我设置透视矩阵并使用它时,屏幕上的对象就会消失,无论我如何移动它们,它们都不会出现在屏幕上。

获得模型-视图-投影矩阵的计算是在 CPU 中完成的,MVP-Matrix 与实际对象空间顶点数据的最后一次乘法是在顶点着色器中完成的,这就是为什么我认为问题可能出在过程中得到那个MVP-Matrix。我已经运行了一堆单元测试,但是根据这些测试(以及我对线性代数的基本知识),这些矩阵正在被正确计算,而我整天的互联网研究目前没有帮助。:-/

这是我用来计算 MVP 矩阵的代码:

我认为这段代码是不言自明的,但以防万一,那些 Matrix4D 是 4x4 矩阵,并且在它们上调用 makePerspective/makeIdentity 将使该矩阵成为 Perspective 或 Identity 矩阵。对 Matrix4D 对象的 getRawData() 调用以列优先表示法的浮点数组形式返回矩阵数据,而 mMesh 变量是另一个对象,当调用 draw 时,它将简单地将所有顶点和材质数据发送到着色器。

makePerspective 函数的代码如下:

getWorldMatrix() 调用执行此操作(带有一些相关代码):

最后,顶点着色器几乎是这样的:

以防万一,正在渲染的对象在位置 (0.0f, 0.0f, -3.0f) 上渲染,所有三个轴都应用了 0.5f 比例。

我真的不知道可能出了什么问题,我希望有人能发现我可能缺少的东西,任何帮助将不胜感激。如果我可以在着色器上获得每个顶点的结果,那么调试会容易得多:-/。

作为旁注,我对如何计算视图或相机矩阵有疑问,据我所知,它只是一个带有相机必须做的倒置变换的矩阵,我理解这样的事情,如果我想将相机向右移动 100 个单位,我将它向左移动 100 个单位,对吗?

编辑:只是想提供更多信息,也许这样有人可以帮助我。我注意到模型矩阵与上面的代码不正确,主要是因为矩阵顺序,我已将其更改为以下,现在模型矩阵看起来不错:

尽管如此,仍然没有运气。我的测试数据产生的矩阵如下:

我用来测试所有这些的网格是一个简单的立方体,每个轴上从 1.0f 到 -1.0f,以原点为中心。据我所知,这应该将最接近极限 (0.0001f) 的顶点定位在沿 z 轴的位置 -2.0f 上,因此立方体位于相机前面并带有视锥。任何线索有人吗?

0 投票
0 回答
148 浏览

opengl-es - 如何设置 OpenGL 项目矩阵以获得投影,如下所述?

我只想在不使用 z 坐标的情况下模拟透视投影(即:仅使用 2d 环境)。x 轴必须随着 y 轴向顶部增加而收缩。

我已准备好以下代码,

0 投票
2 回答
884 浏览

opengl - 相同的标记位置,不同的旋转和平移矩阵 - OpenCV

我正在使用 OpenCV 开发增强现实标记检测程序,并且我正在为同一个标记获得两个不同的旋转和平移值

当相机稍微移动时,3D 模型会自动在这些状态之间切换,而无需我的控制。下面添加以上两种情况的截图。我希望 Image#1 是正确的。如何以及在哪里纠正这个问题?

我已经关注了如何在 Android 中将 OpenCV 旋转和平移矢量与 OpenGL ES 一起使用?为 OpenGL 创建投影矩阵。前任:

图片#1 在此处输入图像描述

图片 #2 在此处输入图像描述

额外的

如果有人建议我一种让茶壶坐在标记平面上的方法,我会很高兴。我知道我必须编辑旋转矩阵。但是最好的方法是什么?

0 投票
4 回答
22013 浏览

3d - 三.JS旋转投影使y轴变成z轴

传统上,在 3D 投影中,Y 轴是代表“上下”的轴。我学会了用其他引擎把它想象成那个轴是 Z 轴。我想知道的是Three.JS中是否有办法使 Z 轴成为“上/下”轴。如果是这样,有什么后果吗?

这是我想要的图表: 在此处输入图像描述

0 投票
1 回答
7770 浏览

image-processing - 从二维坐标到圆柱坐标的图像转换

我想将 Jpeg 图像(其坐标 (x,y))转换为圆柱坐标。

opencv中是否有可以直接执行此操作的函数?或者我可以使用 opencv 中的哪些函数来创建自己的函数?

我在 2d 坐标、3d 坐标和圆柱坐标之间感到困惑。有人可以简要讨论一下吗?

是否有可用于将 2d 转换为 3d 的数学算法?二维到圆柱坐标?3d到圆柱坐标?

我阅读了有关此主题的上一篇文章,但不明白它..

我没有上过图像处理课程,但我急于看书。我通过经验和学习其他程序员的代码来学习。所以源代码将不胜感激。

谢谢大家,很抱歉我的基本帖子,,

0 投票
1 回答
1517 浏览

xna - 投影和视图矩阵以匹配 Kinect RGB 相机视角

有谁知道为 XNA 渲染设置投影和视图矩阵以便与 Kinect RGB 相机匹配的正确值是什么?

例如,如果骨架头部关节坐标是 (X,Y,Z),那么如果我在 3D 空间中的这些坐标处绘制球体,则渲染应该与 RGB 图像中的头部重叠。

0 投票
1 回答
4772 浏览

r - 通过 QR 分解、SVD(和 Cholesky 分解?)计算投影/帽子矩阵

我试图在 R 中计算P任意 N x J 矩阵的投影矩阵S

我一直在尝试使用以下功能执行此操作:

但是当我使用它时,我会得到如下所示的错误:

我认为这是数字下溢和/或不稳定的结果,正如r-helphere等许多地方所讨论的那样,但我没有足够的经验使用 SVD 或 QR 分解来解决问题,或者将这个现有代码放入行动。我还尝试了建议的代码,即将解决方案编写为系统:

但它仍然不起作用。任何建议,将不胜感激。

我很确定我的矩阵应该是可逆的并且没有任何共线性,只是因为我尝试使用正交虚拟变量矩阵来测试它,但它仍然不起作用。

另外,我想将此应用于相当大的矩阵,因此我正在寻找一个简洁的通用解决方案。

0 投票
2 回答
684 浏览

math - 为什么我的正交投影矩阵不起作用?

我正在尝试使用正交投影渲染位于平面(z = 0)中的一些四边形。在阅读正交投影矩阵的公式后,我确实设置了一个投影矩阵?但我认为我做错了什么。

我的第一次尝试是以下矩阵。W 和 H 是我想要的视口的宽度和高度,在以下示例中为 640x640:

这是我渲染左上角在 (0,0,0) 中的四边形时得到的结果:

不好

由于它是垂直翻转的,我将矩阵更改为:

我获得了 :

更好的


然后我试图移动我的四边形,结果出乎意料。我希望 3D 空间的 X 和 Y 与视口的 X 和 Y 相匹配。然而,当我沿 X 轴移动四边形时,发生了以下情况:

哎哟


沿 Y 轴移动给出了同样出乎意料的结果:

哎哟哎哟


如何修复我的矩阵,使 3D 空间的 X 和 Y 轴与视口的 X 轴和 Y 轴相匹配?提前谢谢了。

0 投票
1 回答
855 浏览

orthographic - 如何设置一个正交相机来像描述的那样投影?

我希望投影是这样的:

三轴投影

那是,(x,y,z) -> (x-y/sqrt(2),y/sqrt(2)-z)

如何找到投影矩阵?

0 投票
1 回答
2438 浏览

ios - iPad 2 后置摄像头视野

我想在来自 iPad 2 的后置摄像头的摄像头图像上渲染虚拟内容。为此,使用 OpenGL ES 将内容转换为正确的屏幕坐标。

问题是视野参数。

有几篇关于 iPhone 或 iPad 1 的帖子;但是,我还没有为 iPad 2 找到一个。

iPad 2 在横向 16:9 高清模式下的视野是多少?