我写了一个光线跟踪程序,除了我用来遍历光线树的算法之外,一切似乎都在起作用,我不确定是否正确。在每个碰撞点,程序存储对象的颜色,其反射率指数和该点处的光强度(镜面和漫反射,环境是常数)。有人可以帮助我并向我解释当我穿越光线树时,我应该如何将物体的颜色和光线强度结合起来?
答案 0 :(得分:1)
surfaceColor = emissive + ambient + diffuse + specular
下面,
emissive = Ke
其中:
ambient = Ka x globalAmbient
其中:
漫反射= Kd x lightColor x max(N·L,0)
其中:
镜面反射= Ks x lightColor x面向x(最大(N·H,0))^光泽
其中:
答案 1 :(得分:0)
我认为你应该使用一些局部照明模型。 U具有计算此反射模型的所有值:Phong reflection model
答案 2 :(得分:0)
最简单的是,对于多个对象,其中n是当前的对象:
每个对象都会接收下一个对象发出的光。
incoming_light[n] = outgoing_light[n+1]
每个物体的接收光都会被其漫反射颜色以及入射角(光线方向和正常的点积)过滤掉,如果你的出射光线已经是余弦分布,你可以跳过这个:
outgoing_light[n] += incoming_light[n] * diffuse[n] * cosine_term[n]
最后,像素颜色就是你击中的第一个物体发出的光。
final_color = outgoing_light[0]