Java 光线跟踪-遍历树
我写了一个光线追踪程序,除了我用来遍历光线树的算法之外,所有的东西都在运行,我不确定它是否正确。在每个碰撞点,程序都存储对象的颜色、反射率指数和该点的光强度(镜面反射和漫反射、环境光是常数)。有人能帮我解释一下,当我穿越光线树时,我应该如何准确地结合物体的颜色和光强度 我认为你应该使用一些局部照明模型。U具有计算此反射模型的所有值:来自: 表面颜色=发射+环境光+漫反射+镜面反射 这里,Java 光线跟踪-遍历树,java,raytracing,Java,Raytracing,我写了一个光线追踪程序,除了我用来遍历光线树的算法之外,所有的东西都在运行,我不确定它是否正确。在每个碰撞点,程序都存储对象的颜色、反射率指数和该点的光强度(镜面反射和漫反射、环境光是常数)。有人能帮我解释一下,当我穿越光线树时,我应该如何准确地结合物体的颜色和光强度 我认为你应该使用一些局部照明模型。U具有计算此反射模型的所有值:来自: 表面颜色=发射+环境光+漫反射+镜面反射 这里, emissive=Ke 其中: Ke是材料的发射颜色 ambient=Ka x globalAmbie
- emissive=Ke
其中:
- Ke是材料的发射颜色
- ambient=Ka x globalAmbient
其中:
- Ka是材料的环境反射率和
- globalAmbient是传入环境光的颜色
- diffuse=Kd x lightColor x max(N·L,0)
其中:
- Kd是材质的漫反射颜色
- lightColor是传入漫反射光的颜色
- N是归一化曲面法线
- L是朝向光源的归一化向量,并且
- P是被着色的点
- 镜面反射=Ks x浅色x面x(最大(N·H,0))^光泽度
其中:
- Ks是材质的镜面反射颜色
- lightColor是入射镜面反射光的颜色
- N是归一化曲面法线
- V是朝向视点的标准化向量
- L是朝向光源的归一化向量
- H是介于V和L之间的归一化向量
- P是被着色的点,并且
- 如果N·L大于0,则端面为1,否则为0李>
incoming_light[n] = outgoing_light[n+1]
每个对象的接收光都会通过其漫反射颜色和入射角(光线方向和法线的点积)进行过滤,如果传出光线已为余弦分布,则可以跳过此步骤:
最后,像素颜色就是你击中的第一个物体发出的光
final_color = outgoing_light[0]
final_color = outgoing_light[0]