问题标签 [camera-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 投票
2 回答
1481 浏览

opengl - OpenGL相机旋转闪烁

一段时间以来,我在 OpenGL 中遇到了相机旋转问题。

我尝试通过鼠标移动来旋转相机,但相机只是在闪烁(相机发现的物体在闪烁)。

我初始化相机如下:

这里的变换是变换矩阵。既然OpenGL是列专业的,那应该是对的吧?

下一部分解释了在绘制框架之前发生了什么。

首先,我用鼠标移动刷新相机,根据最后一个鼠标指针位置的 delta x 和 y,移动值可以是正值或负值:

在下一步中,我将调整场景中的相机。如果鼠标沿 x 或 y 轴移动,我想旋转相机:

绕 y 轴的旋转是与旋转矩阵和变换矩阵的矩阵相乘:

请记住,OpenGL 是主要列,乘法函数是这样创建的:

此时,矩阵应该没问题并加载到 OpenGL。在adjust()中调用了setView方法:

函数在完整场景中调用如下:

int DrawGLScene(GLvoid){ // 这是我们进行所有绘图的地方

}

这里我选择 Modelview 矩阵,然后加载单位矩阵。在矩阵推送和弹出之间是相机刷新和调整(包括 setView),然后我为要绘制的对象设置一个变换,然后绘制对象。

就这样。我玩了很多矩阵的推送和弹出操作,查看了翻转码相机教程(http://www.flipcode.com/archives/OpenGL_Camera.shtml),但闪烁仍然存在。有没有人有任何想法可能是错的?

0 投票
0 回答
851 浏览

matlab - 在 MATLAB 中设置相机矩阵

是否可以在 MATLAB 中设置相机视图和投影矩阵?“视图矩阵”是指相机在空间中的位置和方向(实际上是它的倒数,但这只是一个细节),“投影矩阵”是指将 3D 点投影到 2D 屏幕的矩阵坐标(正交或透视)。在我看来,在 MATLAB 中,您只能通过使用“低级相机属性”来控制相机:http: //www.mathworks.com/help/techdoc/visualize/f4-44406.html 这对于我想自己设置矩阵,因为它是在 OpenGL/DirectX/etc 中完成的。

0 投票
1 回答
2455 浏览

c++ - OpenGL - 第一人称相机矩阵的问题

我已经尽我最大的努力创造了一个模仿第一人称相机风格的相机。我刚刚从旧的 OpenGL 渲染方法切换,现在准备处理相机矩阵。这是我的相机更新代码。

最后 3 行是我假设用与翻译相反的方式更新相机的内容(y 和 z 切换为我正在使用的格式)。我做错了顺序吗?

这是我非常简单的着色器:

这只是制作了一个红色三角形。相机围绕三角形旋转,这不是我想要的。我想让它旋转相机。我认为将相机矩阵乘以每个顶点会在相机空间中进行渲染。或者我还需要将它乘以投影矩阵吗?

移动 w、a、s 或 d 会同时放大非常近的位置,并且会扭曲整个视图,到处都是红色碎片。

0 投票
0 回答
195 浏览

c - 在 C 中从屏幕投影到世界空间有奇怪的 FOV 结果

首先感谢您查看我的帖子,我会尽可能详细地解释我的问题。

我正在尝试构建一个简单的光线追踪器,当我尝试将光线从我的屏幕投射到世界时,我得到了一些奇怪的结果。

我有以下相机矩阵:

然后我有以下代码可以取消项目:

这给了我以下结果,它应该是一个立方体,当相机绕 y 轴旋转 45 度时查看它: 在此处输入图像描述

谁能看到我哪里出错了?我将非常感谢您的帮助!

0 投票
0 回答
175 浏览

camera - 从 2D 图像到 3D 模型

我有一个 2D 图像和一个 3D cad 模型。我有相机矩阵 P,其中 P = k [R -RC]。如何从相机通过像素坐标 [uv] 看到的视图重新计算 3D 模型 [XYZ]?在此先感谢您的帮助。

0 投票
1 回答
562 浏览

camera - 我们可以在不运行校准代码的情况下找到相机矩阵吗?

我想知道是否有可能知道相机校准矩阵,只要知道它的规格,而不使用相机校准???

0 投票
1 回答
6014 浏览

image-processing - 2D-3D 单应矩阵估计

我正在使用我的 Kinect 进行一些 2D 3D 图像处理。这是我的问题:我在 3D (x,y,z) 中有位于平面上的点。我也知道 RGB 图像 (x,y) 上点的坐标。现在我想估计一个 2D-3D 单应矩阵来估计 (x1,y1,z1) 坐标到一个随机 (x1,y1) 点。我认为这是可能的,但我不知道从哪里开始。

谢谢!

0 投票
1 回答
300 浏览

quaternions - 相机外部参数作为双四元数

在将 3D 世界点投影到相机的图像平面时,将针孔相机的外部参数表示为双四元数而不是经典的 4x3 矩阵是否有意义?我还需要做逆运算(从 2D + 深度到 3D 世界),所以这就是为什么我认为这种表示可能有助于节省一些时间,因为对偶四元数的逆计算并不难。

0 投票
0 回答
144 浏览

graphics - 是否有相机相对旋转矩阵?

假设我有两个相机。我不知道这两个相机的具体姿势。因此,它们分别表示为R1R2的旋转矩阵是未知的。但我知道这些相机沿三个轴的相对角度。我的意思是如果两个相机的三个轴的角度是(alpha1,betta1,gamma1)和(alpha2,betta2,gamma2),那么这些相机的相对角度(deltaX,deltaY,deltaZ)=(alpha2-alpha1,betta2 -betta1, gamma2-gamma1) 是已知的。

我的问题是我们能否形成一个“相对”旋转矩阵R12使得R2=R12*R1

因为有很多方法可以构造一个旋转矩阵。而且这些方法的结果是不同的(我仍然不明白为什么相机可以有不同的旋转矩阵)。在这种情况下,我通过沿三个轴乘以三个旋转矩阵来构造旋转矩阵。更具体地说,R=Rz Ry Rx。

当我在 Matlab 中测试代码时,

R(alpha2, 0, 0)*R(alpha1, 0, 0)=R(alpha1+alpha2, 0, 0)。

R(alpha2, betta2, gamma2)*R(alpha1, betta1, gamma1) != R(alpha1+alpha2, betta1+betta2, gamma1+gamma2)。

谢谢!

0 投票
2 回答
1299 浏览

3d - 如何反转相机矩阵中一个轴的旋转(例如 OSG CameraViewMatrix)

对于增强现实应用程序,我正在使用一些 slam 算法来预测我手机的当前方向。

该算法 ( LSD-Slam ) 以 SE3 谎言组的形式提供当前姿势(使用Sophus::Sim3f)。如果我做对了,这种类型包含一个矩阵,可以解释为相机的 Viewmatrix。初始化后,例如矩阵如下所示:

为了可视化 3D 内容,我使用 OpenSceneGraph。Fortunatley,在 OSG 中,您可以使用视图矩阵直接设置相机位置:

现在,当我运行代码时,如果我围绕 Y(滚动)或 Z(偏航)旋转,事情似乎工作正常。但是当我围绕 X(俯仰)旋转时,我在 OSG 中的数码相机似乎与它应该做的完全相反。

例如:想象一个 3D 模型直接在相机前面。如果我然后慢慢向上倾斜相机(围绕 X),3D 模型也会向上移动,而它实际上应该离开屏幕的底端。我试图用下图来说明这种行为:轴行为

可能有一个非常简单的解决方案,但即使经过数小时的尝试,我也无法解决。如果我理解正确,第一列代表围绕某个轴的旋转,所以我尝试反转单个向量,例如这样做:

虽然有些尝试确实解决了 Pitch-Issue,但他们却搞砸了另一个轴。至少似乎总是有一个轴是错误的。有人知道我该如何解决这个问题吗?我非常感谢有关此问题的任何提示。