2008/10/06

The Science Of CG 渲染背後的科學

圖要真實 除了燈光, GI參數設置之外, 材質本身也是非常重要的. 成功的渲染圖, 這三項因素缺一不可. 材質其實有很多不同的明暗器(shaders) :某些明暗器比較貼近真實世界的光影變化 某些則是比較陽春, 在本篇的討論串中你可以看出材質的重要. 另外RAW格式與光譜算圖也有稍做討論. 

這篇文章翻譯自CGTALK的討論串, 標題雖是The Science Of CG, 但主要還是圍繞著CG算圖/材質在討論, 來自烏克蘭的網友mister3dplaymesumch00ns提供了非常棒的文章與插圖, 所以特地選了這篇翻譯成中文跟各位網友分享.

-----以下翻譯自CGTALK討論串-----

標題: The Science Of CG 渲染背後的科學

Dtox: 我不小心逛到同樣標題的討論串。 但是,為認為在那一帖中討論的不是很多。我簡直不敢相信,那帖沒有真正的深入討論。在那帖中有位老兄想討論CG的物理,希望能夠幫助軟體操作的觀念。 雖然有些人的答覆都是有益的,但它並沒有給任何人真正討論方向。

有位提到想知道如何光如何運動,這樣一來他就可以根據光的理論來套用在他的軟體使用上。 
這是我認為每個人都想要知道的。大多數的答复是“去學一下藝術理論吧” ,或“管他的 只要調整參數看起來像, 就對了” 。 雖然這樣說有其原因,但我認為還有更中庸的做法 。學習傳統藝術能夠更了解CG原理是一個基礎,但是在理論與實務之間還有其他灰色地帶。 
尤其是關於打燈照明技術(lighting)。

光線受到物理法則所規範,如果你能更了解這些物理學,調整CG光線時就能得心應手。 如果您是3D動畫的老手,當然你會很了解怎樣打燈.但是,如果你還是菜鳥的話, 除非你是學物理的或是很有興趣, 否則你不太可能很了解打燈技巧。例如, “平方反比定律”並不只適用於光線,如果在CG的世界裡面 也可以應用在照明技術(lighting)。 反平方定律就是:物體與光線的距離每增加一倍, 光照強度就是原本的四分之一。比較有經驗的藝術家會注意到這點,喔, 誰不知道這的定律呢? 但如果你看看WIP討論板,你會發現到很多人其實忽略了“平方反比定律”。

我認為(IMO= In My Opinion),這很重要,如果你是剛接觸CG照明,並希望得到真實的算圖效果。我個人很喜歡燈光照明技術,因為我對物理學感興趣。 討論照明是很棒的,因為對大多數人照明是很複雜的。

cryptosporidium: 我認為這欄會是非常有趣的帖,我個人喜歡用“物理正確”的方式去做燈光照明。但是:就我所知,只有極少數人關心物理學。絕大部分的電影製作讓你不得不用藝術的角度來調整光線 。你必須讓整個效果看起來好看且有趣。無論是物理上不正確,而且常常導演要的東西都不是物理精確的效果。有趣的是, 如果你真的用所謂的物理精確的參數去計算CG照明/材質, 算圖時間可能會百萬年後才會計算完(reach astronomic values)。我想這也就是為什麼這樣的主題沒有受到重視。但是,我必須同意,了解物理學可以幫助您的工作。

mister3d: 這是個好問題。大多數用戶是隨意地控制參數而不是依循物理法則。一旦了解算圖物理學後,這些觀念會跟著你一輩子而且能夠套用到任何一種渲染器中。

光跡追蹤(retracing)是以物理為基礎的(模擬光的行為,但其實不是物理精確的計算),渲染器外掛的使用手冊都是這樣寫的。所以,其實你需要學的是物理學而不是只是CG照明。而如果你想學習CG照明還需要你不僅需要學習CG照明, 你還需要學習傳統照明。研究這照明時, 你不能不考慮材質與相機參數。 

(Image courtesy of mister3d)

有分直接和間接照明的差別。直接照明是說光線打在物體表面就停住了,因此沒有光線反彈。這絕不會發生在真實世界。

我認為,能量守恆定律可應用到任何反射材質上, 這個反射數值不能超過光源的強度,所以反射光線會比原始光源暗一點,所以光線是以平方反比做衰減。

當光線打到表面可能會發生以下情形:吸收, 反射 ,折射(或是不完全折射) 。反射或折射有可能是漫射性質或是高光性質(specular)。

如果光線在漫射性質的表面反射則會發生混色/出血(color-bleeding)現象。 
如果光線在高光性質的表面反射則會發生焦散(caustics)反射的現象。 
如果光線穿透折射物質則會發生折射焦散的現象。 
如果光線被物質表面吸收並且產生些微漫射折色(diffused refraction), 則會發生次表面散色(subsurface scattering)現象。而且, 材質必須要有點折色屬性才能發生次表面散射現象。吸收光是漫射折色外加漫射屬性,這種現象已皮膚為例就是由水和肉構成,因此會同時有散色與折色的性質..

除此之外, 還有焦散散射折射(caustics dispersion of refraction)現象,但相當罕見,鑽石就有這種現象。它看起是彩色的折射




光源可能距離非常遙遠,這種情況我們就不使用平方反比定律(但照我理解,他還是有衰減現象, 但為了計算方便我們不考慮衰減, 要不然我們就要把光源放在億萬英里遠的距離, 就好像太陽跟地球的距離一樣。因此,我們只好省略這類光源的平方衰減性質) ,除非, 光源不亮也不遠----我們就會套用平方反比衰減定律。這就帶出了一個非常重要的觀念----場景的單位是很重要的,因為光的衰減和它所在的空間尺度有關。 
光線陰影的銳利度受到光源大小所影響。

有一個定律是說: 反射優先於漫射,而折射優先於反射。這表示,如果您有一個強烈反射材質,例如金屬,您幾乎看不到他的漫射效果。因此, 100 %的反射= 0 %漫射。 100 %的折射情況下----還能看到一點反射效果,但是漫射則完全看不到(這時候漫射乾脆設定成黑色好了) 。 

所有物質表面都會反射!全世界反射率最低的物質也有0.045的反射率. 大部分的物質表面具有漫射性的反射,鏡面反射則很少見。為什麼某些物質具有鏡面反射而某些物質只有漫射性反射?因為任何物質表面都有許多微小的結構面(microfaceted), 這些結構不容易被肉眼觀察出來,如果是鏡面反射的話 其微表面產生的反射射線是往同一個方向, 漫射反射則是為表面產生的反射方向是多方向的。

這世界上有兩種個類型的材質:金屬和其他材質。所有材質都會有菲涅爾(Fresnel)反射效果,沒錯全部的材質都有!所以,你應該每次都套用這樣的反射類型。Fresnel並不是簡單的衰減曲線效果:它是一開始是緩曲線, 然後在端點的地方有個陡峭的線段。而金屬有更加突出的反射屬性,例如80 \ 100的反射值,這時候您的漫射應該改成黑色因為這時候的反射是優先計算的。

只有金屬會有彩色的反射效果,因此,如果您需要製作任何非金屬的反射效果, 它的反射就只會是黑白反射而已。 

還有一個數值: 反射折射率與折射反射率,這兩個數值一定會相同。你可以在表中查到這些數值。的這些數值會控制物體反射/折射的效果, 同樣的數值在金屬則是會稍微亮一點。

playmesumch00ns: 景深發生原因,是因為透鏡的聚焦光線來自於一個圓錐的頂點投射到底片盒(film back)。這個圓錐的長度與物體到項機的距離, 和鏡頭在相機中的位置有關。如果底片沒有恰好擺在這個圓錐的頂點位置,則圓椎與底片會形成一個圓形的交錯(the circle of confusion) 。這就是為何當3D的點投射到底片時會變成圓形 而且影像會變的模糊。

您對物體反射的解釋有點不清楚。希望我以下解釋會更清楚。有兩種類型的材質:導電材質(金屬)和非導電物質(dielectrics)(其他非金屬材質) 。當光子打到物體表面時, 有三種情況可能會發生:吸收,反射或穿透。

1 )吸收。光能轉化為熱能,然後就消失了 。當然這不是真的消失,但在渲染時我們只關心光線而不管熱能。實際應用時, 表示任何材質都不該有100 %的反射屬性, 如果你想製作真實的材質效果。

2 )反射。光子從表面反彈。實際的光子反彈方向是受到物體表面的細微幾何結構(microgeometry)影響。非常光滑的表面會產生完全相同的反射方向(就像鏡子一般),如果是非常粗糙表面會產生散射光, 往各個方向反彈(但是不是真的往四面八方反彈) 。我們把平滑表面所產生的反射稱為高光反射(specular reflections), 從粗糙表面產生的反射稱為“漫反射”(diffuse reflections) ,介於兩者之間的反射稱為 “光滑反射”(glossy reflections) 。

非導電材質的反射總是與光源顏色相同,所以他們所產生的反射是“白色”的 ,而導導電物質則會讓反射的光線帶有顏色。導電物質會反射出怎樣顏色的反射光線是根據材質的化學結構與入射角度有關。例如光子撞擊到黃金表面, 比較淺的入射角所產生的黃顏色會比直接打到黃金表面的光線顏色來的不明顯。

3 )穿透光(Transmission)。光線穿透到物質裡面就是“折射” ,它使光線的運動方向改變。確切的光線折射方向是根據材質的折射率,以及光線的入射角。表面的細微構造可能會導致光線往多個方向分散運動,就好像漫反射或光澤反射(glossy)那樣。這種效應造成光線穿透毛玻璃(frosted glass)產生霧霧的效果。

只有非導電的物質(dielectrics)可以被光線穿透。光線的穿透或是反射是根據他的入射角與物體的直射率。我們利用菲涅爾方程式作為解釋這個現象的模型。基本上光線直接垂直打到物質表面會穿透過去,但是低的掠射角就會大部分產生反射。

上述事件只會有其中之一會發生在光子/物體表面的互動,但我們數學模型可能會導致難以想像的數值,因此, 在處理光線反應數學模型時, 我們會控制不同比例的光子做不同的反應。因此,金屬可能反射50 %的光子,並吸收剩下的50 %,對於玻璃來說,90 %的光子穿透,5 %反射 ,並吸收其餘的光子。

這個反射規則稱為規則反映了被稱為能量守恆:你反射的光子不該大於入設的光子數目。這種條件對大部分的渲染器是很麻煩的。常見的做法是採用相加層式的BRDFs (光照模型) ,在明暗器(shader)裡面含有漫射與高光反射的選項。你必須確保漫射與高光反射的總和不能大於1 ,這樣才能符合物理規則。當然,這不是材質真正運作的方式真正的材料的方式行事,但是這種做法讓數學式更容易處理。據我所知,只有maxwell 與fryrender渲染器具有這樣的參數。

當光線穿透到物質當中時, 就會發生次表面散射(Subsurface scattering)現象,光子會在內部彈跳。光線在內部相互作用會造成一些能量被吸收,通常是不同波長的光線,因此,當光線最終彈出去時, 顏色會比較暗而且會帶有某些顏色。只有非導電物質才會發生次表面散射,這是唯一一種情況非金屬物質會產生有顏色的反射(記得嗎 剛剛說過,非導電物質的反色總是白色的) 。所以每次當你看到一個彩色的物體,而這個物體不是金屬,光線穿透到物體內部,在內部反彈, 過程中產生有顏色的光線, 然後最後又彈出物體。

mister3d: 關於漫射,我不知道是不是有物理學上的根據,但除非是被折射或反射優先計算(在這種情況下,漫射是黑色的) ,漫射數值應該是在20-80 %的亮度範圍內,跟飽和度設定的概念是一樣的。這樣的設定能產生更好的照明效果----比較不會有過度曝光或是過黑的問題。


高光反射有同向性反射(isotropic)或異向性反射(anisotropic)。異向性高光反射與物體表面凹槽垂直的方向作反射,而同向性反射則是均勻分佈。 

談到攝影機,有曝光,運動模糊,景深,白平衡等效果。這些都很重要。但其他效果,主要是濾境造成的。

曝光是底片在光線底下曝露多久。暴露久一點---曝光比較亮,短一點---產生的影像比較黑。曝光是由:f-number(這個數值也控制景深) ,快門速度和底片速度( ISO ) 。 

運動模糊是因為快門打開足夠長的時間使運動物體在底片留下痕跡。

景深大多是由f-number所控制,但是它也受到鏡頭大小底片門(film gate),能創造失焦的效果,這對寫實渲染效果非常重要,例如微距攝影(macroshooting)。在現實生活中, 想要得到極端的景深效果代價是很昂貴的。天知道為什麼產生景深;也許鏡頭的快門區域部分被遮蔽, 造成了部份成像模糊的結果。

每個光源多少會有顏色(color temperature),但人眼會欺騙我們,當我們觀看光源時 人眼會很快適應讓你誤以為看到的是白燈。白色平衡是在白色的光源變的更藍, 藍的顏色變的更紅。 

下一步是你如何用CG軟體來實現這些物理效果,當然這是個大問題。

當然, 你還必須考慮到螢幕的影響:您的軟件必須有一個適當的校色功能---http://forums.cgsociety.org/showthread.php?f=2&t=188341 ,顏色溫度( 6500k )和伽瑪校正

如果你想造製作物理寫實的算圖效果, 你就必須要控制這些參數。下一步是如何使用您的渲染器實現這個目標,無論是利用與更先進的算法(光線跟踪)或以非物理演算法來計算(fake-based)(Rays) 。 

以上是基本的解釋。

playmesumch00ns: 全世界最反光材料是Spectralon ,它可以這反射大約90 %的入射光 (以接近lambertian的方式反射) 。一張白皮書是反射率大約有80 %。

全世界反射率最低的材料是到常見的iirc---大約有3 %的反射 。當然您是可以將反射率射為1 %,但大概只能在實驗室裡面才有可能有反射率那麼低的物質。

mister3d: 這是我讀過最棒的材料科學解釋,謝謝你,你的解釋比我更正確。特別感謝你對景深(DOF)的解釋。

我不太確定ㄟ, 如果真的是這樣的話,mental ray與vray的反射數值將超過1 ,對不對?事實並非如此。或者你是在談Maxwell與fryrender的另外一個數學模型 ?

然而,我想提一下光線分佈方式。在現實生活中光線會擴散,因此對於聚光燈來說你很少能看到尖銳的陰影。但是當你在3D軟體中製作聚光燈時,通常有1 \ 1的熱點\ faloff的比率 ,這是錯的。正確的比率應該是1 \ 10 ,這樣你才會有自然的衰減。只要跟區域光源比較你就知道,真實光源是應該怎樣表現的。

還有一點就是空氣透視效果:距離越遠的物體顏色會比較昏暗,是因為空氣含有小顆粒的灰塵,如果你是要表現物理真實的戶外場景就要考慮到這點。

為了說明色溫,色溫規則對我來說就是沒有任何規則。主要有兩種色溫表示方式---kelvins和流明(lumens),但如果你死板地使用的話你就只是一個調色溫的機器人,你應該要依據顏色來調整而不是kelvins和流明。一般規則是,室外光亮度比很多室內亮很多, 而且光源會有顏色。某些藝術家不使用任何有顏色的光源。這是因為他們認為眼睛會快速適應所觀看到的有色光源,將它們視為白色。但是,一但你用像機拍照的時候,你就會發現根本沒有這樣的事(除非你有設定白平衡whitebalance) 。請記住:顏色會影響心情,在電影中也使用有顏色的底片,所以為了要表現戲劇性的畫面你必須要研究色溫心理學。


thev: 你的說法有點過時了,最新的渲染器其實已經強制設定能量守恆的效果, 使用者根本不需要手動去設定---這包括V-Ray 與 mental ray渲染器。
(譯者註: thev是Vray的開發者之一)

playmesumch00ns: 不, 我說的是這些渲染器的反射數學模型。就我所知它們是用Schlick BRDF為基礎的數學模型 (但似乎比Schlick BRDF更好,因為我實際使用Schlick BRDF感覺根本不好用) 。不同的是,它們只有1個異向反射模型,而且這個反射模型可以表現由lambertian漫射到完美高光之間的連續變化狀態。因此,它們能夠比blinn-phong表現出更符合真實世界的效果。

老式的漫射+高光明暗器面著色(diffuse+specular shaders)做出來的效果其實效果也還不錯,因為大部分的常見物質都是有分層的或基板材料(substrate materials),例如:油漆,塑料或塗漆木材。這類材質,具有的漫射層,這個漫射層被高光層所覆蓋(例如油漆,塑料等漫射材料被高光材質所覆蓋) 。這類的材料可以被老式著色器很好地表現出來。你甚至可以用這類數學模型表現出合理的皮膚材質, 就像木材覆蓋一層亮光漆一樣。

正如thev所說,我的說法有點過時了,也許其他渲染器也有提供類似的參數設置,我很多年都沒用過v-ray/brazil/finalrender,目前則是不用mental ray。

thev: 目前還沒有一個解析BRDF數學模型,可以準確地表示世界上所有的材質; Cook-Torrance數學模型相當接近這個目標,但已採樣的觀點來說它不是很好用。最好的方法是用測量出來的BRDF數據,但即使這樣,通常需要一些逼近數字與某些假定。

mister3d: 還有一個東西,涉及硬表面模型,但是與照明有關的----那就是倒圓角(fillets)。倒圓角可以在高光燈光底下強化模型的表現。 但要考量倒圓角的實際尺寸。不要對建築物做10公尺的倒圓角;一定要依照實際尺寸來建立倒圓角。


我已經提過了,所有的物體在某種程度上都有反射的屬性。因此,如果你要表現寫實的算圖效果, 記得把所有的材質都套用上菲涅爾反射設定, 沒有例外。 
反射對於表現真實算圖效果是第二重要的(第一重要的是全局照明)(從技術上來講,天份才是最重要的) 
下面的例子說明有反射與沒反射的差別。看看有反射有多豐富的表現效果。這就是建築業不斷使用的----菲涅爾反射。


然而,在現實世界中反射大多是模糊,而不是鏡子一樣。跟銳利和柔和一樣的觀念。每次都使用柔和陰影,就不會錯了。儘管在許多初學者的作品中,你可以看到一輛汽車具有鏡面反射與銳利影子。



這是一個很深入的話題,但真實照明仍然很重要。在非常光明的影像中可能過於飽和, 看起來不正確,應該要在後製裡面作修正 ,無論是用Photoshop或在其他合成軟體。在真實的照片中暗部的地方表現是飽和的,但更明亮的地方應該會比較不飽。

cryptosporidium: 問到反射的顏色。你為什麼說所有的非導電物質都是反射白色呢?當你看看四周,很顯然所有的反射都是有色的。我的看法是,有色的反射並不是受到材質表面的影響,而是受到入射光本身的波長有關。換句話說,當被波長是紅色的光線射重時,反射的光線就是紅色的,這樣講有錯嗎?所以,我會說不導電的材質不會把反射的光線染上顏色,而相反的, 金屬會把反射光染上它的顏色,因此金屬的反射光可能是有點黃,有點藍或是其他顏色。如果我有講錯請更正我...

mister3d: 反射光看起來有顏色,是因為它們反射顏色,而不是因為材質將反射光染色,因此當你套用黑白的貼圖到材質上面時, 它將反射光源的顏色但是不會將光線染色。也許我用錯字了吧---不應該說是白色,而是它不反射顏色。我的意思是貼圖是黑白的,而不是說反射線不會反射顏色。

cryptosporidium: OK,我現在正確地理解這些材質了。非導電物質不會將反射光著色,但金屬會。 

playmesumch00ns: 當然可以。所有我見過不同的BRDF都能符合測量數據(A&S提供了最新的論文), 採用的是多重lobes數學模型。但這不是使用者想要花時間去調整的參數。

當我說Maxwell與Fryrender的BRDF模型在概念上比較好的原因是:在真實世界裡面真的會有lambertian模組外加上高光lobe的情況嗎?我認為Maxwell與Fryrender的數學模型更具有吸引力,因為它們更方便進行藝術性的調整,雖然我說過了,我還沒有看到這些渲染器能提供真實的皮膚材質

Dtox: 太好了, 你們所提供的資訊是我在整個cgtalk論壇裡面看過最棒且詳細的資料。

mister3d: Tox兄,以上是我對CG科學的說明,但是如果您想要更深入的資訊的話,我建議你讀這本書,我買了最近買了這本內容非常棒,這本書介紹了所有關於物體材質 照明等資訊http://www.amazon.com/Langfords-Bas...16178159&sr=8-1優秀的插圖, 已經出了第八版了,而且價格合理。

Dtox:我對攝影也有興趣。 我不是一個真正攝影師但我常會為了要參考圖去拍照。 光線讓我深深著迷。 特別當我可以把現實世界的照明融合到CG的世界裡。當我在使用CG攝影機時, 在想不知道有什麼關於CG動畫相關的理論。像是有沒有可能添加出了alpha與深度以外的通道到渲染器產生的影像當中。 

如讓你可以添加紅外線(IR)通道到你的攝影機參數中。例如讓攝影機,除了捕捉可見光光譜以外,還能添加紅外線通道,讓您可以編輯最後影像的可見光譜。 而且還可以讓您可以提供分pass。它不僅讓您可以控制燈光外,它也可以用來更準確地模擬爆炸的顏色效果從簡單的碳火,到噴氣機引擎,甚至恆星行程的效果和太空特效。

他們使用了類似哈伯望遠鏡的色彩技術。我談的是比較鬆散的講法。 除非你生成一個熱資訊的灰階圖像來模擬爆炸和熱效果,也可以用多種顏色表現溫度控制與照明。 甚至你可以用紫外線通道用來動態控制gamma。 更容易地模擬太陽光且更真實。

我不知道Maxwell, Fry實際上是怎樣計算,我甚至沒有一套V-Ray。我使用Cinema4D 10內建的高級渲染模組。但是當計算GI, SSS與焦散時會計算很緩慢。 所以,沒有辦法依照自己的想法去控制場景照明。 但長期來看C4D真的很容易製作逼真的影像。

Magnus3D: 我並不想開始發一個新帖,所以就直接在這裡問問題了。 當你們設定材質的時候(shaders),你會用怎樣的方法去設定?你是用物理精確的方式嗎?也就是說,您會用實際測量的數據來設定您的材質。或者你搜索大量的參考資料(圖片和文字)去設定材質,然後只用肉眼觀察參考資料來重建真實世界的材質?我把這種方法稱為從後拍照法(shoot-from-the-hip)。

上述兩種方法你最喜歡哪一個?或者你使用完全不同的做法呢? 

cryptosporidium: 當建立材質時,我是用眼睛觀察真實世界的材質效果, 讓它的視覺效果好看 不見得使用物理精確的數值。沒有人會管說IOR, BDRF等參數,只要可以讓材質看起來逼真就好。

BulletProof: 我同意。我真的不管物理上是否精確。我只用物理數值當作概括的輪廓。然後我微調參數達到我想要的效果, 這個效果不一定是相片寫實的。只要是最終材質的效果是你要的。

Magnus3D: 真有趣, 你們是採用後拍照法來設定材質,而不是用物理精確的方式。那我可不可以借問你們都是用什麼渲染器?

我使用的Maxwell 與Fry來算圖, 這兩個渲染器使用比較物理精確的方法設定材質,老實說,當你修該材質時能預測最後的效果感覺會比較好。我在Vray 或Finalrender裡面沒有看到如此簡單邏輯。 

BulletProof: 我自己是很喜歡使用MODO與其算圖引擎。很容易設置,也可以很快算出結果。因為我也用MAYA所以我的一些作品是用MAYA的MentalRay算圖。

cryptosporidium:我在製作電影特效十大部分都是用XSI / mental ray。更準確地說,能用這種物理精確的渲染器很棒, 我總是盡可能的使用這類渲染器. 但現實的情況是, 導演會告訴你,那邊太暗,那邊應該要多一點反射,你不可能跟導演說那樣改的話就會違反物理定律,因為我知道現實狀況不可能那樣只是說我們想要吸引觀眾注意,或是想要更好的構圖. 因為我們是在做藝術(至少從某些角度來看) ,我們應該把可信度和視覺效果作為目標,而不僅僅是物理精確的。在大部分情況下, 寫實主義通常沒有吸引力,缺少了藝術感道,結果就是---無聊。

playmesumch00ns: 當使用PRMan製作視覺效果時,我盡量達到物理精確的目標,我只在有必要的時候才會往藝術感的方向調整。 為什麼我要這樣做呢?,根據我的經驗,用正確的參數算圖(盡可能的達到物理與數學精確)的方法,結果比較可以預期。

一再地使用藝術角度來調整材質參數(Layering artistic hack)會讓你很快地產生難以收拾的結果。此外,如果你不用正確的方式調整材質(如同那些設計師的想法),結果往往是怪誕或是支離破碎的渲染結果。尤其是,當你與其他藝術家工作 需要設定多個鏡頭時候更為重要。

moidphotos: 首先我想說,謝謝每位在這帖發言的網友;這些文章很有教育性, 讓我重新思考過去的工作流程。

我贊成Dtox的說法 ,我想你所要問的是所謂的光譜渲染法(Spectral Rendering)---利用一個比可見光更大的能量範圍來表現傳統的RGB通道。Mental Ray有支援光譜渲染法,但我沒有實際的使用經驗,我聽說Mental Images的某位員工幫他們的客戶成功建立光譜材質(spectral shaders),使他們以18個顏色通道處理影像,讓材質表現出不同光線,例如能夠表現紅外線(ultra violet light)對材質有怎樣影響,或是infra red對物體有怎樣的影響。希望這可以用到您今後的研究。

playmesumch00ns: 好的, “光譜渲染”通常指的是對於對於可見光譜的採樣(通常是380 - 780nm ,如果我沒有記錯的話)通常比典型RGB色彩更為細緻。換言之,而不只是三色組成部分-R GB -你可能有8或1 0或3 0等數值 。

在怎麼樣的材質與渲染器能做到呢?散射會造成不同波長的光產生不同程度的折射,造成了彩虹一樣的效果。

關於散射, 在wikipedia有詳細介紹

Dtox: 在cinema4d中有一個基本的材質其中一個選項,稱為反射的散射(dispersion)。我一直認為散射會讓反射變的模糊。 現在才知道這根本就不影響透明度, 我一直都弄不懂散射是什咪。 
其實散射效果不是很明顯, 因此不是很懂原理所以我也避免用它,因為它似乎沒有必要。

另外,當你看到cg燈光的“疊加選項(additive)”,到底是什麼意思?它是否就是指材質樹(shader structure)中的混合模式? 這是否指的是“顏色疊加理論(additive color theory)” ?

playmesumch00ns: 是的,基本上。它基本上就是假設光線是以線性的方式混色,例如分別渲染不同的燈光然後疊加在一起(A+B+C))就會等於你同時把所有燈光打開一樣的效果。有某些情況下,這種疊加演算法是不正確的(如例如攝影底片) ,但它的結果很接近實際的物理學,這樣能大大簡化數學演算。我不熟悉cinema4d ,所以我真的不知道,c4d裡面那個控制選項到底在做什麼。聽起來就像是一個模糊的反射控制,只是命名不佳(我認為應該要命名成'分歧'(divergence) ) 。

Dtox: 當你說多個影像合成時, 你是說燈光效果能夠以不同的pass合成在一起嗎?讓你做進一步控制,是嗎? 有沒有一種專門的混合模式讓光線的混合結果能夠吻合實際上物理學的表現方式? 如“添加(add)”模式 ,如同我先前提到的“添加劑(additive)”的功能?

這有點離題了。 如果我沒有使用Maxwell這類的渲染器, 我用真的物理參數去設定光源還會對真實渲染有幫助嗎? 例如,假設我做了一個很標準的室內場景照明, 利用一般的區域光來模擬真實的鹵素燈。 我如果把真實的鹵素燈的色溫套用到我的區域光中, 對於真實算圖有利嗎?

沒錯。 本來應該就命名成模糊(blur)。 下一版的cinema 4d把它命名“ blurriness ” 。 
為什麼又稱為又散射,就難倒我了。 C4D的材質參數很多都命名的很怪。 

playmesumch00ns: 是的,只是一個普通'添加' 。我就是記不住Photoshop的混合模式是怎樣使用,但如果是用Shake就只需要一個節點就可以了。這個做法是假定燈光可以分開算圖 然後最終在以疊加的方式合成最終效果。

這要依照需求。如果您的專案是全CG動畫的, 那每盞燈的強弱的控制性就對色溫調整很重要。如果想要讓CG色彩與真實底片的顏色吻合, 那就一點意義也沒有,因為通常底片拍出來的顏色很少能與真正的顏色一樣。

使用Maxwell的最大優點是它很方便, 因為影像在真正輸出前就已經調過色了(tone mapped), 所以確實的數據根本沒有意義。

Dtox: 所以,Maxwell輸出時會階調映射。哎呀,我以前從來不知道這一點。 這是所有算圖引擎的標準程序嗎? 或者是只有Maxwell有提供這功能? 

我去年在攝影板上有學到階調映射(tone mapping)。 順帶提一下,算圖時如果存成RAW檔案可能會更好。 電腦算圖理論上可以產生毫無瑕疵的RAW檔案, 因為基本上算圖結果沒有經過光學透鏡。

你將你的CG算圖影像與相機拍的影像用RAW檔案作合成, 就像Red1或Adobe cameraRAW那樣, 這樣會有更多的參數可控制, 你也可以用RAW做文件歸檔的格式可以提供比賽畫面中的RAW工作流程,畫面從相機一樣Red1 ,及劇照在像Adobe公司cameraRAW 。然後,你想有一個更大數額的控制權屬性的影像之前它實際上是轉換成位圖圖像。 你也可用RAW做文件歸檔。

有用過Adobe Camera RAW的人都知道優點在哪裡。 用Red1工作你可以輸出2K和4K的影片 。使用RAW這種直接擷取出來的資料, 以pre-bitmap的形式.用ACR來處理RAW檔案很方便。
您可以輕鬆地調整白平衡,色溫,燈光類型,陰影/高光,標準和中間色調 對比,銳利化。 
一切都在進入到photoshop之前就可以調整了。

在許多情況下,沒有必要做進一步的編修。

playmesumch00ns: 為什麼乾脆算圖成OpenEXR格式, 讓你有額外的資料可以處理?有一天,所有電影將用數位底片 然後直接輸出成linear exr。至少我希望如此。

Dtox:將算圖輸出成RAW的優點是你可以直接將檔案與Red1攝影機的資料的工作流程合在一起。我能想像算圖成HDR/EXR格式會很難處理, 即便輸出成很小解析度的影像。 除非你有特殊需求, 要不然渲染成HDR/EXR格式會浪費更多時間算圖。 如果你真的有需要HDR/EXR格式可以幫你節省調整影像的時間,跟普通的bitmap比較的話。

我還注意到,當你用Photoshop去開HDR/EXR, 有些功能你沒辦法用。 
但是RAW格式就不會這樣 。


playmesumch00ns: 算圖成EXR,應該不會花費更多的算圖時間。如果會的話, 你的渲染器還真是爛(f * cked) 。 

Photoshop的很多功能不支援浮點影像,但你可以藉由切換位元深度(bit depth)來使用那些功能。

Dtox: 切換的位元深度,不就會喪失了使用EXR格式的優點?

bt3d: 是的,轉換位元深度會讓您'正常'的影像。修圖最好盡量用高位元深度來操作(例如色階控制,曝光等等) ,除非要使用某些高位元深度不支援的濾鏡才切換到低位元深模式。

stew: 不,不會有益。 RAW的優點只有一個,那就是它直接儲存相機的感光源件的原始資料。用電腦算圖出來的RAW格式和你相機輸出的RAW格式非常不同, 如果你想把渲染圖轉換成類似相機的RAW格式, 可能會降低影像品質。

此外,RAW根本就還沒有標準化---不同廠牌的相機有不同的RAW格式,甚至同一家廠牌但不同型號的相機也有可能有不同的RAW格式解算方式。RAW並不直接儲存影像資訊,它就只是儲存感光原件的原始數據而已。

OpenEXR能滿足目前常見的數位工作流程。

-----翻譯完-----


[相關文章]

10 comments:

Sai said...

關於反射的部份,似乎不是很正確。
你可以簡單的驗證一下用黑色亮面塑膠片來看,這是一個非導電材質,但是反射卻是具有色彩的。實際上的反射出的顏色牽扯到物體本身的diffuse color,以及人類視覺上的誤判。不過所有物件都會反射,以及全反射 diffuse color 應該是黑色這兩點是正確的。

hammerbchen said...

就我所知他說的非導電物質反射不會有顏色是指 不會染色(tint color) 如果光源本身有顏色 那他的反射光自然也會有顏色.

如果是紅色金屬球則是會把原本就有顏色的入射光再染上紅色 所以折射光會是原本的顏色再加上紅色

因為是翻譯對話 所以不像教科書那樣句句正確 (當然教科書也會出錯) 看對話裡面就有兩位對不導電物質的反射有不同意見

其實我也很懷疑他的說法 但沒實際測試過 就自己的理解是說"不導電物質不會對入射光染色"

應該是這樣沒錯 

Sai said...

這不是光源的問題,但我不知道該怎麼解釋他這樣的說法是不正確的,並不是翻譯的問題。
最簡單的還是照我的說法去觀察就會知道為什麼我會說不是很正確。

Unknown said...

感謝翻譯這份討論,小弟我在其中的到一些有關在圖片製作的啟發在於

"暗部的色彩為飽和度較高,而亮部的部分則較低"
(整篇文章中我對這一句的感觸較深)

其他有關物理的部分完全門外中(囧)

hammerbchen said...

敬告諸位網友

本篇翻譯部分對話內容可能講法有誤 一切還是以正規的書籍內容為準 不便之處 敬請見諒

aomay said...

@_@ ~整體來說 真是一個讓人很受教的翻譯~~~~
其實也讓我感覺外國人跟台灣人
對觀察的差異性

wow_grandia said...

"暗部的色彩為飽和度較高,而亮部的部分則較低"
是因為人眼對"暗"比"亮"敏感的關係(補充)

白平衡又學到了一課~感謝翻譯很好懂

我也覺得"染色"的地方有點奇怪,
"物體顏色受光被吸收後,剩下的反射色來決定"
跟導電性好像沒關係,
真的覺得好像有問題吶..(感覺跟吸收程度和光滑度有關係)

恩..全反射時物體直接設黑色,
應該也是指 光100%=反射%+吸收%+穿透%
當反射+穿透=100% 吸收%=0
自然就不會"照"到物體,所以是黑色。
也是小補充,翻了一下課本,否則剛看的時候真的有點搞不懂意思

再感謝一次這篇翻譯

wow_grandia said...
This comment has been removed by the author.
wow_grandia said...

剛問台大物理系的同學 (應該是正解?)
"染色"的原因就他所知應該是
原子電子吸收不同程度的光子

他說就他所知只有這樣,
因為不是他擅常的..+_+
so..是跟導電性有關係的。
sry 誤導了 ~_~

hammerbchen said...

有可能是"原子電子吸收不同程度的光子"...

我覺得有可能...