【发布时间】:2011-12-16 17:19:09
【问题描述】:
我想实现一个物理光线追踪器(即使用具有给定波长的实际光子),将自己限制在小场景(如两个球体和一个封闭的盒子)中进行实验。并不是说要快,但我稍后会优化它。
我目前正在收集我所知道的关于光子如何与表面相互作用的所有信息,即它们要么反射(被吸收,然后再次发射)或以基于表面吸收光谱和反射率/折射率指数的概率折射,而折射是取决于波长(自然会导致色散)等...
我了解如何从发射材料(如“灯光”)中拍摄光子并让它们在场景中反弹,直到它们碰巧落入相机会产生准确的结果,但速度慢得令人无法接受,因此需要倒退(从相机拍摄光子)
但我无法理解如何“反向”模拟表面相互作用 - 例如,如果来自相机的光子撞击红色盒子的一侧,如果光子的波长对应于红色,它将被反射,所有其他波长将被吸收,从而产生红色。但是颜色的强度是通过采集许多非常接近的光子样本来决定的,并检查它们中的哪些最终会与光发生碰撞,哪些不会呢?因为最终,光子要么撞到灯光,要么不撞到灯光(在给定数量的反弹之后)——不存在部分碰撞的概念。
所以基本上我的问题是 - 像素接收到的光的强度是该像素实际进入光源的光子样本数量的函数,还是涉及其他问题?
【问题讨论】:
-
这对您的实际问题没有多大帮助(抱歉),但您可能希望使用Cornell Box(或变体)进行测试:)
标签: raytracing