光线追踪器相机-正交投影到透视投影

时间:2018-09-22 15:10:09

标签: projection raytracing perspective perspectivecamera orthographic

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

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

如何确定相机的放置位置?我尝试了(0,0,0),但是那给我留下了空白图像,所以我认为这是不对的。

2 个答案:

答案 0 :(得分:0)

在透视投影中,穿过每个像素的光线将具有相同的方向,就像光线来自屏幕后方距离无限的摄像头一样。

对于正交投影,必须将相机放置在屏幕后方有限的位置。每条光线应来自相机,并穿过屏幕的每个像素。屏幕和相机之间的距离取决于视角。

答案 1 :(得分:0)

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