将2D点反投影到3D Plucker线

dim*_*_tz 6 raytracing projection projective-geometry projection-matrix

我正在尝试构建一个跟踪器(手动跟踪个人项目),因此我需要使用Plucker坐标将2d点反投影到3d线.(如光线追踪)

作为输入,我有一个点的2d坐标和投影矩阵.

关于plucker坐标的网上信息概述了它们有用的原因,但是没有纸质分析地描述上述过程.(他们只是提到他们回到投影线,没有任何进一步的描述)

有人可以指出我正确的方向吗?

dim*_*_tz 7

显然,这背后没有任何魔力,我正在寻找一个公式/定理,直接从我的'输入'到plucker坐标,而没有这样的东西.

作为投入,我们有

  • (投影)点的2D坐标
  • 投影矩阵

使用这两个输入,我们可以将这个2d点反投影到光线(3D线).该3D线的所有3D点都投影到相同的2D点.默认情况下,光线通过相机中心(或投影中心等).

有关必要的公式,请参阅

一般的想法是,为了定义一条线,你需要2点.我们选择找到(使用上述来源的方程式)

  • 相机中心(所有投影光线默认通过此点)
  • ray @ infinity的一个点(这很好,因为无穷远处的点也是线的方向向量 - >稍后需要这个用于采样线表示)

(我们可以找到相机中心和另一个任意点,但是我们需要一个额外的步骤来找到线的方向,通过减去这两个点的坐标.)

总而言之,我们发现了

  • 相机中心(p)
  • 线的方向(d)(点@无穷远)(无穷远处的点等于方向)

这些足以表示一条线,但是当我们必须计算例如我们的算法中3D点到该线的距离时,这种表示不是最佳的.这就是为什么找到这种表示(没有魔法立即给我们提取线)之后,我们将线表示改为plucker-line-representation

Plucker线只是需要的线的另一种表示:

  • 线的方向(我们已经拥有它!!! - > d - >指向无限远)
  • 该行的"时刻"(m),很容易从前面的表示计算:

    m = p ^ d(^ - >叉积)

我希望这能为将来需要它的人清除事情,我认为这是一件非常容易的事情,但在一开始事情可能并不那么明显.

对于实际情况,为什么要使用此plucker-line-representation,请检查