首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >光模拟器射线追踪器的透镜和传感器的设计与定位

光模拟器射线追踪器的透镜和传感器的设计与定位
EN

Stack Overflow用户
提问于 2013-07-23 13:47:43
回答 1查看 371关注 0票数 1

我正在为3D场景在C++中创建一个光模拟器(现在是一个“康奈尔盒”)。这是我正在做的一个图形课程的项目,我不想让它变得更快,仅仅渲染一个像样的图像对我来说是很好的,即使它需要几个小时。我想展示全局照明和自由度。

光线不是普通的射线追踪器,而是从点光源发出的,在场景中以几何形状反射,最终击中光传感器,这是三维环境中的一个矩形,取决于光线到达传感器的位置,屏幕上的那个像素的强度会增加。

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

我现在的设置是从我在维基百科上找到的镜片公式中得到的:

代码语言:javascript
运行
复制
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

所看到的主要是点光源,没有聚焦。

理想情况下,我希望大约一半的盒子(在-.5和.5之间的z)能够聚焦,这样自由度就可以显示出来。我的问题是:如何校准传感器和镜头以使图像出现?我不认为我能把镜头和传感器弄得太小,然后几乎所有的射线都会被丢弃,因为它们不会击中相机,从而使绘制在计算上不可行。

EN

回答 1

Stack Overflow用户

发布于 2013-07-26 15:17:02

我想你要问的是:把相机放在哪里?如果你知道你的镜头的焦距(也就是镜头后面的距离,它会聚焦平行入射的光线),那么你就可以很简单的了解镜头的视场,并将镜头放置在正确的画面上。这就是你要问的吗?

如果是这样的话,计算出那个交叉口的距离,其余的就会就位。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17812099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档