用于光模拟器光线跟踪器的设计和定位镜头和传感器

时间:2013-07-23 13:47:43

标签: camera render simulation raytracing light

我正在用C ++为3D场景创建一个光模拟器(现在是“康奈尔盒子”)。这是一个我正在做的图形课程的项目,我不想让它快速,只是为了渲染一个体面的图像是好的,即使它需要几个小时。我想演示全局照明和DOF。

光线不是常规光线追踪器,而是从点光源发出,在场景中的几何体上反弹,最终击中光线传感器,这是3D环境中的一个矩形,并取决于光线射到的位置。传感器,屏幕上该像素的强度会增加。

在传感器和场景之间,有一个镜头,我试图设计和正确定位,以模拟相机。镜头也是一个平面,但是法线(当光线撞击镜头并被折射时)是根据一个薄的球面镜头计算的。

我当前的设置,源自维基百科上发现的镜头公式:

The Cornell box: x, y and z in between -1 and 1
Sensor dimensions: 0.2 x 0.2 (too large?)
Sensor position: 0, 0, -2.9
Sensor resolution: ~ 150 x 150 px
Lens dimensions: 0.4 x 0.4 (rectangular shape for now, spherical normals)
Lens position: sensor position + (0, 0, 0.1037) (in front of sensor)
Lens IOR: 1.52 (glass)
Lens focal length: 0.1
Lens radius: 0.104

Current rendering

所见所见的主要是点光源,未聚焦。

理想情况下,我希望大约一半的方框(z在-.5和.5之间)被聚焦,这样DOF就可以看到了。 我的问题是:如何校准传感器和镜头以显示图像?我认为我不能使镜头和传感器太小,然后几乎所有的光线都会被丢弃,因为它们不会碰到相机,从而使渲染在计算上变得不可行。

1 个答案:

答案 0 :(得分:0)

我觉得你问的是:把镜头放在哪里?如果您知道镜头的焦距(也就是镜头后面的距离会聚焦平行的入射光线),那么就可以直接了解视野并放置相机以使场景正确构图。这就是你问的问题吗?

如果是这样,计算交叉点距离,其余部分将落实到位。