如何畫出真實反射?

RT,我做合成的時候,比如地面反射,基本都是把對象反過來模糊淡化一下,但是很多複雜反射就肯定不能這麼辦了,以前上高中的時候學過原理,但是完全不能用於繪畫,不知道是否有人對此有所研究,或者有什麼好的解決方法

比如這張圖

三個不同形狀的物體對同一個反射源表現出來的反射完全不同,想問反射的形態與反射物體形狀,距離,攝像機角度之間有何關係,如何在繪畫/合成上真實的處理這些關係。

另外順便多問一下,那麼高光的原理是什麼呢? 同樣的,三個同樣物體對同一個高光源所作出的反應也不一樣

但是高光的計算是可以在3d軟體中實時運算的,因此應該不是光線追蹤吧

而在渲染器vray中 高光又是以「對光源的反射」而存在的,高光和反射又有什麼區別呢?

謝謝大大們的關注和解答

ps 附圖均為cinema 4d 默認渲染器所渲,渲染時間20s左右


題主提供的圖片,用光線追蹤器pov-ray提供的腳本語言很容易實現,但是白色的日光燈效果則不容易實現,除非語言本身提供:

要畫出足夠真實的反射需要還原三維場景,模擬真實光線的照射,這項技術稱為光線追蹤(ray-tracing)。拿題目中的圖來說,首先在三維空間中擺設三個幾何體,幾盞日光燈,鋪上地板、設置實物的顏色、材質、反射和折射參數,設置相機位置,從相機虛擬地射出大量光線,利用物理上光的折射、反射定律和演算法上的光照、反射模型,追蹤每一條光線最終落在哪裡,看到的顏色是什麼。追蹤隸屬於圖像膠片上每一個像素區域中許多條光線,把獲得的顏色值加權作為那個像素的值,最終獲得真實的渲染圖片。

Ray tracing(圖片來自Wiki)

複雜場景中的光照是極其複雜的,挨個分析非常不現實。光線追蹤技術通過模擬攝像機成像過程和基於物理的光照模型,還原場景中每一條光線的光路。用戶只需要設置場景參數(物體形狀和材質、光照、相機參數),追蹤器就能生成相機看到的圖片。

題主關心的反射問題大致解決原理是這樣的,當一條光線與某個物體相交時,交點有一個顏色值,如果物體材質具有反射能力,則光線還將發生反射,朝另一個物體飛去,獲得的顏色值和交點顏色值以及反射參數進行某種加權,把綜合值作為這條光線的顏色值。這一過程是遞歸進行的,反射光線作為子光線繼續完整地執行這一加權步驟。為節省時間,一般在演算法里會設置光線反射最大次數n,使兩面相互平行擺放的鏡子里反射的的鏡子只有n個,而不是無窮個。以下三張圖片來自Ray Tracing from the Ground Up,基於C++實現。

金屬反射效果

玻璃效果

鏡面反射效果

然而,光線追蹤技術也有缺點:一是速度慢,很難在PC機上達到實時渲染速度,3D動畫電影的每一幀精美圖像都是耗費巨量計算資源離線渲染出來的;二是需要對三維場景進行建模,有一定入門難度,對複雜場景、光照類型的建模困難。


噗。題主添加了問題,那我這個答案就不大對題了 = =需要的人湊合看,搬運的。看到後覺得很神奇,還沒試過,不過看到方法二發現這個應該是推薦他們家插件的,,,,自己搜搜看吧,絕對不是打廣告 = =


vray光線跟蹤 加 間接照明,渲染圖就跟照片一樣了。

(圖片來自百度)


推薦閱讀:

熱愛物理,從初三開始能有怎樣的規劃?
如何讓抽象不再抽象?
冰敷的原理是什麼?
我想請問為什麼輪子與地面接觸的時候接觸點的速度為零呢? 怎麼想也想不通!
跳出劉慈欣的思考範圍,如何理解《三體》中所說的「物理學從來就沒有存在過」?

TAG:自然科學 | 物理學 | 繪畫 | CG | 渲染 |