2

我刚开始从事光线追踪项目。这是一个非常基本的问题:我有世界坐标中的相机位置。如何确定视图平面的位置?说清楚:已经提供了相机信息:我的相机在(0,1,10)指向(0,0,-1),向上方向为(0,1,0)。对于透视图:gluPerspective(45,1.0,0.1,100)。如果将相机位置用作视图平面或视点,我会感到困惑。谢谢。

4

2 回答 2

1

您想要 45 fov 和 1 纵横比,这意味着焦距f

f = (w/2) / tan(45/2) = (h/2) / tan(45/2)

wherewh是胶片平面的宽度和高度。

如果您的飞机已标准化(在 [-1,1]^2 中)f,则很简单:

f = 1/tan(45/2)

在右手坐标系中,您的光线原点将是(0,0,f)

相机与焦距无关。您可以通过相机变换在世界空间中变换您的光线,或者在相机空间中使用相机的逆变换来变换您的世界。

于 2013-08-11T20:58:14.327 回答
0

我建议您从 Scratchapixel 中查看本课程,它是 CG 编程技术的存储库:

http://scratchapixel.com/lessons/3d-basic-lessons/lesson-6-rays-cameras-and-images/

还:

http://scratchapixel.com/lessons/3d-advanced-lessons/cameras-advanced-techniques/

于 2013-09-04T15:11:39.980 回答