2014-06-18 63 views
0

爲了學術目的,我調整了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。

謝謝

回答

1

我沒有看過PBRT又或者看着詳細的源代碼,但我不完全相信你的前提是

這將是有意義的RGB值居住在0-1範圍之間。

實際上,任何一點的光強都可以非常大,太陽肯定比顯示器可以顯示的最亮像素亮。所以我假設P​​BRT光譜可以是任意強烈的。在這種情況下,爲了將其映射到受限光照模型,可以縮小這些值,或將它們限制爲1.0(或兩者的一些組合)。

降尺度類似於降低相機的光圈或縮小瞳孔。

夾住這些值可以讓顏色「洗出」,就像太陽的數碼照片可能有多個像素都與1.0, 1.0, 1.0相同。

+0

謝謝你,你說得很好。事實上,PBRT通常會處理其他光譜,因爲它與顯示器特有的圖形基元不太相關,但是說明了RGB對計算機圖形來說是好的,因爲它是通用的。這就是爲什麼我認爲他們會把它降低到這個「標準化」的RGB範圍。我很快就會試試這個RGB值是否有意義。 – Gerard

+0

謝謝,這似乎是一個竅門。我感覺有點傻,這很明顯。再次感謝! – Gerard