我编写了一个光线追踪程序,除了我用来遍历光线树的算法之外,一切似乎都正常运行,我不确定该算法是否正确。在每个碰撞点,程序都会存储物体的颜色、反射指数和该点的光强度(镜面反射和漫反射,环境光是常数)。有人可以帮助我并向我解释当我遍历光线树时我应该如何准确地组合物体的颜色和光强度吗?
最佳答案
表面颜色 = 自发光 + 环境光 + 漫反射 + 镜面反射
这里,
发射 = Ke
地点:
- Ke 是 Material 的发光颜色。
环境 = Ka x globalAmbient
地点:
- Ka 是 Material 的环境反射率,
- globalAmbient 是传入环境光的颜色。
漫反射 = Kd x lightColor x max(N·L, 0)
地点:
- Kd 是 Material 的漫反射颜色,
- lightColor 是传入漫射光的颜色,
- N 是标准化表面法线,
- L 是朝向光源的归一化 vector ,并且
- P 是被阴影的点。
镜面反射 = Ks x lightColor x faces x (max(N · H, 0))^shininess
地点:
- Ks 是 Material 的镜面颜色,
- lightColor 是传入镜面反射光的颜色,
- N 是标准化表面法线,
- V 是朝向视点的归一化 vector ,
- L 是朝向光源的归一化 vector ,
- H 是 V 和 L 之间的归一化 vector ,
- P 是被着色的点,并且
- 如果 N · L 大于 0,faceting 为 1,否则为 0。
关于java - 光线追踪 - 遍历树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22886898/