如何畫出真實反射?
RT,我做合成的時候,比如地面反射,基本都是把對象反過來模糊淡化一下,但是很多複雜反射就肯定不能這麼辦了,以前上高中的時候學過原理,但是完全不能用於繪畫,不知道是否有人對此有所研究,或者有什麼好的解決方法
比如這張圖三個不同形狀的物體對同一個反射源表現出來的反射完全不同,想問反射的形態與反射物體形狀,距離,攝像機角度之間有何關係,如何在繪畫/合成上真實的處理這些關係。另外順便多問一下,那麼高光的原理是什麼呢? 同樣的,三個同樣物體對同一個高光源所作出的反應也不一樣但是高光的計算是可以在3d軟體中實時運算的,因此應該不是光線追蹤吧而在渲染器vray中 高光又是以「對光源的反射」而存在的,高光和反射又有什麼區別呢?謝謝大大們的關注和解答ps 附圖均為cinema 4d 默認渲染器所渲,渲染時間20s左右
題主提供的圖片,用光線追蹤器pov-ray提供的腳本語言很容易實現,但是白色的日光燈效果則不容易實現,除非語言本身提供:
要畫出足夠真實的反射需要還原三維場景,模擬真實光線的照射,這項技術稱為光線追蹤(ray-tracing)。拿題目中的圖來說,首先在三維空間中擺設三個幾何體,幾盞日光燈,鋪上地板、設置實物的顏色、材質、反射和折射參數,設置相機位置,從相機虛擬地射出大量光線,利用物理上光的折射、反射定律和演算法上的光照、反射模型,追蹤每一條光線最終落在哪裡,看到的顏色是什麼。追蹤隸屬於圖像膠片上每一個像素區域中許多條光線,把獲得的顏色值加權作為那個像素的值,最終獲得真實的渲染圖片。
Ray tracing(圖片來自Wiki)
複雜場景中的光照是極其複雜的,挨個分析非常不現實。光線追蹤技術通過模擬攝像機成像過程和基於物理的光照模型,還原場景中每一條光線的光路。用戶只需要設置場景參數(物體形狀和材質、光照、相機參數),追蹤器就能生成相機看到的圖片。
題主關心的反射問題大致解決原理是這樣的,當一條光線與某個物體相交時,交點有一個顏色值,如果物體材質具有反射能力,則光線還將發生反射,朝另一個物體飛去,獲得的顏色值和交點顏色值以及反射參數進行某種加權,把綜合值作為這條光線的顏色值。這一過程是遞歸進行的,反射光線作為子光線繼續完整地執行這一加權步驟。為節省時間,一般在演算法里會設置光線反射最大次數n,使兩面相互平行擺放的鏡子里反射的的鏡子只有n個,而不是無窮個。以下三張圖片來自Ray Tracing from the Ground Up,基於C++實現。
金屬反射效果
玻璃效果
鏡面反射效果vray光線跟蹤 加 間接照明,渲染圖就跟照片一樣了。
(圖片來自百度)推薦閱讀:
※熱愛物理,從初三開始能有怎樣的規劃?
※如何讓抽象不再抽象?
※冰敷的原理是什麼?
※我想請問為什麼輪子與地面接觸的時候接觸點的速度為零呢? 怎麼想也想不通!
※跳出劉慈欣的思考範圍,如何理解《三體》中所說的「物理學從來就沒有存在過」?