PBRT Spectrum toRGB range

问题描述:

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

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

(1.851088, 0.882869, 0.772866) 

经仔细检查,事实证明,对于RGB为我设定的大约400.000交叉口的最大值是3.77 2.00和1.76。下界似乎是正确的,因为它们接近于零。所以问题是PBRT使用的范围是什么,以便我可以将它转换为0.0 - 1.0。

谢谢

我没有看过PBRT又或者看着详细的源代码,但我不完全相信你的前提是

这将是有意义的RGB值居住在0-1范围之间。

实际上,任何一点的光强都可以非常大,太阳肯定比显示器可以显示的最亮像素亮。所以我假设P​​BRT光谱可以是任意强烈的。在这种情况下,为了将其映射到受限光照模型,可以缩小这些值,或将它们限制为1.0(或两者的一些组合)。

降尺度类似于降低相机的光圈或缩小瞳孔。

夹住这些值可以让颜色“洗出”,就像太阳的数码照片可能有多个像素都与1.0, 1.0, 1.0相同。

+0

谢谢你,你说得很好。事实上,PBRT通常会处理其他光谱,因为它与显示器特有的图形基元不太相关,但是说明了RGB对计算机图形来说是好的,因为它是通用的。这就是为什么我认为他们会把它降低到这个“标准化”的RGB范围。我很快就会试试这个RGB值是否有意义。 – Gerard

+0

谢谢,这似乎是一个窍门。我感觉有点傻,这很明显。再次感谢! – Gerard