java - 光线追踪 - 遍历树

标签 java raytracing

我编写了一个光线追踪程序,除了我用来遍历光线树的算法之外,一切似乎都正常运行,我不确定该算法是否正确。在每个碰撞点,程序都会存储物体的颜色、反射指数和该点的光强度(镜面反射和漫反射,环境光是常数)。有人可以帮助我并向我解释当我遍历光线树时我应该如何准确地组合物体的颜色和光强度吗?

最佳答案

来自Nvidia Developer Zone :

表面颜色 = 自发光 + 环境光 + 漫反射 + 镜面反射

这里,

  • 发射 = 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/

相关文章:

c++ - 来自逆 vp 矩阵和相机位置的光线方向不正确

c++ - 在光线追踪中对球体进行荒谬的反射

java - System.out.println 和 System.err.println 乱序

java - 正常关闭 JBoss 应用程序

java - UCanAccess 无法读取带有 "... FROM TableName IN ' FileSpec 的查询'"

render - 为什么我的蒙特卡洛光线追踪如此嘈杂?

java - 类treenode中的构造函数treenode不能应用于java中的给定类型?

java - 如何解决警告消息 :"No configuration found."

c++ - 光线追踪 - 光照方程

c++ - 将 boost::threadpool 与 boost::bind 一起使用会使我的程序陷入无限循环