【问题标题】:Ray Tracer Camera - Orthographic to Perspective Projection光线追踪器相机 - 正交到透视投影
【发布时间】:2019-02-26 16:55:36
【问题描述】:

我正在实现一个光线追踪器,它目前有一个正交投影。我想把它做成透视投影。我知道在正交中,您从每个像素发出一条射线并检查交叉点。在透视投影中,光线的起始位置是恒定的,而不是从每个像素开始。

所以我假设在透视投影中,光线的起始位置应该是相机的位置。问题是我认为我从未明确放置过相机,所以我不知道将光线的起始位置更改为什么。

如何确定相机的放置位置?我尝试了 (0,0,0),但这只会给我留下一个空白图像,所以我认为它不正确。

【问题讨论】:

  • 如果您有一张空白图像,您的相机没有在看您的对象。当您放置透视相机时,您将放置所有光线的起源点。当您旋转相机或操纵其缩放时,您正在操纵将光线投射到场景中的像素网格。尝试进行数学计算以找到使光线实际击中对象所需的相机参数。除了这个一般性建议之外,我无法帮助您,因为我无法从您提供的少量信息中理解您的问题。

标签: projection raytracing perspective perspectivecamera orthographic


【解决方案1】:

在正交投影中,通过每个像素的光线将具有相同的方向,就好像光线来自放置在无限距离的屏幕后面的相机。

对于透视投影,相机必须放置在屏幕后面有限的距离处。每条光线都应该来自相机并穿过屏幕的每个像素。屏幕和摄像头之间的距离取决于视角。

【讨论】:

  • 我相信你的条款被推翻了。正交假设相机位置是无限的,因为平截头体的壁是平行的。
  • 我的错。非常感谢!
【解决方案2】:

您可以通过首先选择透视投影的角度来三角测量从相机到对象的距离。一个简单的例子:为垂直视野 (FOV) 选择一个 60° 的角度,并假设您的对象的中心位于 (0,0,0) 并且您希望将相机放置在 Z 轴下方朝向你的对象。这形成了一个三角形,您可以在其中使用三角公式对距离进行三角测量:距离 = (objectHeight/2) / tan(60/2)。因此,您将相机放置在(0,0,距离)。您可以对实际对象位置使用相同的概念。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    相关资源
    最近更新 更多