【问题标题】:Understanding math: transformation world coordinates to view coordinates理解数学:将世界坐标转换为视图坐标
【发布时间】:2016-03-03 20:41:13
【问题描述】:

我试图了解从世界坐标转换为视图坐标背后的数学原理。 这是在视图坐标中计算矩阵的公式:

这是一个示例,通常应该是正确的...:

其中 b = 视口的宽度,h= 视口的高度

但我只是不知道如何计算 R 矩阵。你如何得到 Ux、Uy、Uz、Vx、Vy 等...? U,v and, n 是固定在相机上的坐标系。并且相机在X0,Y0,Z0的位置。

【问题讨论】:

  • 什么是 U、V 和 N?
  • 可能是surface-x、surface-y和normal。
  • 从相机的角度来看,这些是单位向量分量。他们定义了一个以镜头为原点的 3D 坐标系。

标签: opengl math matrix coordinates transform


【解决方案1】:

首先应用矩阵 T。它通过减去相机坐标(称为C)转换一些世界坐标P,给出相对坐标P(称为 Q)相对于相机 (Q = P - C),在世界轴方向。

然后将矩阵 R 应用于 Q。它执行旋转以获得Q相机 轴上的坐标。

  • u 是水平视图轴
  • v 是垂直视图轴
  • n 是视图方向轴

(这三个都应该归一化)

将 R 与 Q 相乘:

  1. 乘以 R 的第一行得到 DOT(Q, u)。这将返回投影到 u 上的 Q 分量,即水平视图坐标。
  2. 第二行给出 DOT(Q, v),类似于上面给出的垂直视图坐标。
  3. 第三行给出DOT(Q, n),即深度视图坐标。

图表:

顺便说一句,这些不是屏幕/视口坐标!它们只是相机/视图框架中的坐标。要获得透视校正坐标,需要应用另一个矩阵(投影矩阵)。

【讨论】:

  • 您能否使用提供的示例进行详细说明。这将澄清一些事情..
  • 我很难知道如何制作这个 4x4 旋转矩阵 R
  • @privetDruzzia 我已经告诉过你如何制作 R - 使用归一化的相机轴 u、v 和 n 并 sub 到 R 的矩阵表达式中。你的问题是“如何获得 Ux、Uv等等”,但如果你想计算与视点有关的任何东西,你应该已经拥有它们
  • 我没有 u,v 和 n 坐标我只知道相机在位置 (4;0;4)。我理解你的解释(我想,谢谢)。但我就是不知道如何开始
  • @privetDruzia 您必须至少有两个向量来定义相机的方向;该职位不是其中之一。如果您根本没有有关相机的信息,我无法帮助您;它面向哪个方向,是倾斜的还是笔直的?
猜你喜欢
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多