0

出于学术目的,我已经调整了 PBRT,以便它写出有关交叉点的数据和一般路径相关数据(我使用了路径表面积分器)。

然而,在某个交点处获得光谱的 RGB 值存在一些困难。很明显,我必须ToRGB(float* rgb)在交叉路口生成的 Spectrum 类上使用,但是之后观察到的数据有点奇怪。RGB 值位于 0-1 范围之间是有意义的。这种情况似乎经常发生,但有时我也会看到三胞胎,例如

(1.851088, 0.882869, 0.772866)

经过仔细检查,我的大约 400.000 个交叉点的 RGB 最大值是 3.77 2.00 和 1.76。下限似乎是正确的,因为它们接近于零。所以问题是 PBRT 使用的范围是多少,以便我可以将其转换为 0.0 - 1.0。

谢谢

4

1 回答 1

1

我还没有阅读 PBRT 或详细查看它的源代码,但我并不完全相信你的前提

RGB 值位于 0-1 范围之间是有意义的。

实际上,任何一点的光强都可以任意大。太阳肯定比显示器可以显示的最亮像素还要亮。所以我假设 PBRT 光谱可以任意强度。在这种情况下,要将其映射到有限的光照模型,您可以缩小值,或将它们限制为 1.0(或两者的某种组合)。

缩小比例类似于缩小相机的光圈或缩小瞳孔。

限制值允许颜色“洗掉”,就像太阳的数码照片可能有许多像素都与1.0, 1.0, 1.0.

于 2014-06-18T21:23:47.773 回答