brdf為什麼要定義為一個單位是sr-1的量?

BRDF已經接觸很久了,有一個大概的理解。但是每次看到它的定義公式,我就不能理解了。BRDF本身的目的是描述表面的多方向反射特性。通常直觀的解釋也是說,它表示了特定反射方向上的反射光強度與入射光的強度的比值。這樣說來好解理。可是一上公式就奇怪了。為什麼是frac{L(omega _{o})}{L(omega_{i})cos(	heta_{i})domega_{i}}  ? 分母上的cos項還可以理解,那個domega_{i}為什麼要加上呢?直觀的想就是算一下輻射率(L, radiance)的比值不就行了嗎?為什麼要把入射光乘一個角元而變成輻照度(E, irradiance)呢?真是百思不得其解。求高人指點。謝謝

補充一下:對於這個brdf是什麼,還不難理解。這裡的重點是為什麼要這樣定義呢?

補充:又想了一晚上,brdf在應用時就是一個參數,可是這個參數里還有一個微分項domega_{i}。這無論如何都是一個奇怪的事。想像一下,真實的brdf數據應該是一個參數表,那微分項只能具體化一個差分項Delta omega_{i}。這樣問題就來了,這個Delta omega_{i}應該具體取多少呢?難道brdf數據里還要附一個Delta omega_{i}具體數值?


謝邀請。

為什麼有domega_{i},最直接的回答就是這是BRDF定義的一部分。BRDF定義是在材質表面某一點上出射輻射度(Radiance)和入射輻照度(Irradiance)的比值。輻照度是每單位面積上的能量,輻射度是每單位面積每單位投影固體角(projected solid angle)上的能量。然後描述某方向上入射的光線的能量單位是Radiance(因為只有Radiance的大小沿著直線方向上不改變)。所以Radiance只有乘以domega_{i}角度之後才能變成Irrdiance。


題主似乎在糾結為什麼BRDF要定義成Radiance和Irradiance的比值,而不是直接Radiance和Radiance的比值。答案是和測量有關。Radiance是有方向性的,所以測量Radiance的儀器像個激光筆,照在哪個發光的表面然後就看讀數。

要測量某個表面出射的Radiance,L(w_{o}) ,拿一個Radiance detector照著表面看度數就可以。要測量表面某角度的入射Radiance,L(w_{i})的話,必須保證光源不能太小,要完全把detector的那個cone的solidangle範圍填滿,但也不能太大,這樣的話光源一旦大於detector的固體角,表面本身的radiance就大於測量的。實在懶得畫圖,簡單地說就是測量的過程受到光源形狀的影響。這也是什麼描述表面某一點入射光的物理量是Irradiance。

所以這時候解決的方法就是在表面放一個irradiance meter。Irradiance沒有方向性,測量的時候只要保證光源夠小,就可以準確的測出表面某一點的Irradiance微分,dE(w_{i})


所以,BRDF的定義是frac{dL(w_{o}) }{dE(w_{i})}


補充一下 @文刀秋二 的回答

來自 基於物理著色:BRDF - RGBA - 知乎專欄

至於為什麼BRDF要定義成輻射率和輻照度的比值,而不是直接定義為輻射率和輻射率比值,有兩種解釋。

第一種解釋可以參看brdf為什麼要定義為一個單位是sr-1的量?

我們結合下面輻照度(A)和輻射率(B)測量儀的示意圖來看看。輻照度測量儀(A)接受平面上半球的所有光線,可以測量一個較小面積來自於四面八方的所有光通量,光通量Phi 除以感測器面積A就可以得到輻照度E。輻射度測量儀(B)則有一個長筒控制光線只能從一個很小的立體角進入測量儀,光通量Phi 除以感測器面積A和立體角omega 就可以得到輻射率L

測平面上一點在某一個方向的出射輻射率很簡單,只需要用儀器(B)從該方向對準該點就可以了。而測平面一點入射的輻射率則沒有那麼簡單,必須保證光源正好覆蓋測量儀開口立體角,大了該點會接受到比測量值更多的光照,導致測量值比實際值小,小了則與儀器的設計立體角不一致,可在實際中是基本做不到光源大小正好覆蓋測量儀開口立體角的。而測表面的輻照度則簡單得多,只要保證光源很小,而且沒有來自其他方向的光干擾,這時候測到的輻照度就是平面上來自光源方向的微分輻照度dE

第二種解釋從數學的角度出發,對於現實世界中的非光學平面,一束光線射到表面上後,被表面反射到各個方向,其中一個出射方向的光通量只是整個反射光通量極小的一部分,當出射方向立體角趨於0時,lim_{omega _{o}   
ightarrow 0}{frac{dL_{o} }{Li} } = 0,所以在實際計算中使用輻射率和輻射率比值是沒有意義的。而如果分母改成表面上接收到的來自光源方向的微分輻照度,我們知道dE = L_i(l) domega _{i} cos 	heta _{i} ,由於給入射輻射率乘了一個趨於零的微分立體角,dE的值會小很多,比值frac{dL_o}{dE} 是有意義的,而不是0。


非專業回答 :入射的光線,是一條線,一但碰到表面,這條線就變成一個半球形的小燈啦。反過來也是一樣的,一個方向的射出,也是要參考到整個半球面的入射滴。

真正計算的話是要用積分把整個球面所有角度積分起來的。只是經常因為實時渲染只管 入射方向以及和視線重疊的那一根特別的射出方向,才會覺得乘一下就好了吧。

那些pi來pi去的東西,只是因為球面積分剛好就是那麼逗逼嘛


bullshit,都在一本正經的胡說八道。看完這個:Directional Reflectance and Emissivity of an Opaque Surface,最初的BRDF定義。


推薦閱讀:

金屬反光和其他平面的反光有什麼本質區別?為什麼偏振鏡不能消除金屬表面的反光?
牛頓通過水桶實驗證明絕對時空觀,在哪裡出錯了?
最聰明的外星人智商能達到什麼水平?
最基礎的物理常識有哪些?

TAG:物理學 | 光學 | CG | 計算機圖形學 |