【问题标题】:How to select focal lengh in ray tracing?光线追踪中如何选择焦距?
【发布时间】:2013-09-04 23:11:39
【问题描述】:

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

【问题讨论】:

    标签: graphics raytracing


    【解决方案1】:

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

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

    其中wh 是胶片平面的宽度和高度。

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

    f = 1/tan(45/2)
    

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

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

    【讨论】:

    • 您能否更具体一点,在这种情况下,视图平面应该在哪里?我仍然无法进行转换。
    • 这取决于您,但放置您的视图平面的好地方是在以 (0,0,0) 为中心并在 [-1,1] 中标准化的图像空间中的平面 z=0 内^2。查看一些光线追踪代码或教程,了解光线和视平面是如何设置的,网上有很多资源。例如,Szirmay-Kalos 有一些关于该主题的不错的免费书籍 (sirkan.iit.bme.hu/~szirmay/book.html)
    • 哦,我刚刚意识到,我可以在设置视图平面后手动将像素坐标转换为世界坐标。感谢您的帮助。
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-08
      • 2019-11-29
      相关资源
      最近更新 更多