在这段代码心灵文章http://www.codermind.com/articles/Raytracer-in-C++-Depth-of-field-Fresnel-blobs.html中,关于反射/折射的部分有一些情况,它检查是否传输或反射光线。
对于0到1范围内的rand_num:
if(rand_num<=reflectance){
//reflect a ray
}else if(rand_num<=reflectance+transmittance){
//transmit a ray through surface
}else{
//diffuse calculation
}
我的印象是反射率+透射率= 1,因此其他声明将毫无用处。如果不是1-反射,透光率应该是多少?
答案 0 :(得分:1)
在如此简单的模型中,入射光会发生四种情况:1)定向反射2)漫反射3)吸收4)透射率
一些(理想化的)例子:
通过将三个系数的总和设置为小于1的值来隐式处理吸收。
在实践中还有一些额外的效果,例如只有在理想方向上的反射,平均偏差取决于材料,自身发光的材料,不定向的反射效果或改变颜色......
答案 1 :(得分:0)
它基本上给出了代码中注释的答案:
光线被传输,反射或漫反射。物理上后两者是相同的,但在光线追踪中,两者的处理方式不同。
第一个像镜子一样产生高光和实际反射,而漫反射部分对于像橡胶这样与镜子非常不同的表面很重要。