來自
溫柔踢爆米花的回答
2024-02-12 03:02:10
使用GI (Global illumination)在算動畫的時候,由于GI是依據(jù)快取的采樣(caching samples),也因此會產(chǎn)生閃爍的問題. ? ? 原因是每個frame的采樣位置并不同,造成每個frame的照明會有差異.為了解決這個問題,你可以先用預(yù)先計算的采樣點(pre-calculated solution)這些合并的采樣點用來計算每一個frame.你可以對兩個GI方法都做預(yù)先計算,通常是irradiance map與light cache .對irradiance map來說,你可以用multiframe incremental mode模式對light cache來說,你可以用fly-through mode模式.? ? ? irradiance map與light cache兩者個結(jié)合運算對于場景中沒有物件移動的動畫很有效,但這種做法只適用于攝影機飛越(fly-through)的動畫. 如果你對在特定位置的特定物件預(yù)先計算快取,如果物件移動新的座標,在新的位置沒有物件的快取采樣,你在算圖的時候就會看到雜點.因此這種把多個frame合并的方法雖然很快速,跟把每個shading point都計算的brute force相比較要快了很多, brute force的效果很精確,而且不會有閃順的問題,但是會計算很慢.? ? ? 為了要避免閃爍, Vray SP2版提供了隨著時間的irradiance maps內(nèi)差計算,主要的功能是要降低使用irradiance map算GI的時候產(chǎn)生的閃爍問題,減少閃爍的程度是要靠interpolation frames這個參數(shù)所決定的. 使用攝影機路徑(camera path)的參數(shù) 雖然隨著時間對irradiance maps進行內(nèi)差可以解決大部分的閃爍問題,但是攝影機本身還是會引起閃爍,這是因為攝影機會隨著每個frame在移動,每個frame射出的ray會不同.到了VRay SP3版本,多了一個參數(shù)叫做camera path.這個參數(shù)會改變ray自攝影機射出的方式,它會從整個攝影機的路徑射出ray,因此,你每個frame射出的ray就相同了! 動畫prepass與動畫渲染模式? ? ? 這個方法分成兩階段: ? ? 第一階段在prepass模式下,每個frame都會計算個別的irradiance map ; ? ? 第二階段是用動畫模式把irradiance map的效果渲染出來(你不需要再設(shè)定secondary GI因為這在第一階段已經(jīng)完成了) 動畫prepass的流程Irradiance map 勾選使用camera path并將模式設(shè)定為animation prepass,按下儲存指定你irradiance map儲存路徑,勾選auto save. ? ? 當瀏覽的時候, 請確認在irradiance map存放的地方已經(jīng)存有irradiance map的檔案, 這點很重要. ? ? ? 在Light cache選單里面,勾選use camera path,模式設(shè)定為single frame 或者,你可以預(yù)先計算light cache,這有可能可以減少一些算圖時間. ? ? 一旦prepass算完以后,你就必須要去設(shè)定irradiance maps之間混合的程度.所以在算圖之前,因為這會影響到動畫長度范圍. ? ? 例如,如果你把混合(blend)設(shè)為2 ,這個意思是,它會把該frame的前兩個與后兩個frame做混合.例如如果是對frame 5來說,它就會混合3,4,5,6,7 5這幾個frame.如果是Frame 6來說,它就會混合4,5,6,7,8依此類推. ? ? ?這個混合的數(shù)值越高就越不容易閃爍但同時也會增加算圖時間如果你把這個數(shù)值調(diào)太高的話結(jié)果會過于平滑細節(jié)會不見因此對第0個frame來說他前面必須還要有frame才能正確地混合否則因為frame 0混合的frame數(shù)目比其他的frame這會造成不一致性請把你的動畫起始frame更改為-2這樣frame 0就可以跟–2,-1,0,1,2做混合同理可證如果最后一個frame是100請增加frame到102 1、Irradiance map? ?? ?一旦計算完了prepass,你會發(fā)現(xiàn)采樣的訊息,這會告訴你采樣已經(jīng)成功地儲存了.你可以到檔案儲存的地方看看動畫范圍的采樣是否都存到了 ? ? ? 切換到動畫算圖模式,會跳出訊息要你選取檔案,你必須要選取第一個快取檔案(沒有數(shù)字的那一個)讀取這個檔案會自動載入動畫范圍內(nèi)所有的irradiance map.? ? ? 在irradiance map參數(shù)里面,你會發(fā)現(xiàn)interp. Frames這個參數(shù)不再是顯示灰色的了.這個參數(shù)會決定多少數(shù)量的frame會被模糊化,動畫范圍是-2到102,所以用2這個數(shù)值是正確的.如果你希望混合4個frame就把參數(shù)設(shè)為4,但切記要把動畫時間延長. Interp. Samples內(nèi)插采樣控制了irradiance map之間內(nèi)差計算的數(shù)量.? ? ? 因為我們每個frame都會計算好幾個irradiance maps (因為計算內(nèi)插)所以沒有必要把這個數(shù)值設(shè)定為20,這么高的數(shù)值一定會增加很多算圖時間.這個數(shù)值要看你的需求,可以試著用5這個數(shù)值,測試看看滿不滿意.根據(jù)經(jīng)驗,大部分的室內(nèi)動畫需要的數(shù)值為10-12,是否用攝影機路徑(Use camera path)不會有很大影響,所以在這里把攝影機路徑勾選會不勾選都沒關(guān)系 2、 Light cache 根據(jù)流程,可以有兩種選項:? ? ? (1)如果你采用light cache算動畫而且勾選了glossy rays,你就必須要把secondary GI設(shè)定為light cache,設(shè)定在single frame模式,勾選camera path? ? ? (2)如果你沒有勾選use light cache for glossy rays那就請把secondary GI取消勾選,只用irradiance map作為primary GI engine就好,為什么可以把secondary GI關(guān)閉呢?因為secondary GI的資料已經(jīng)被儲存在irradiance map prepass里面了! ? ? 把動畫范圍改成0-100,你再也不需要去算范圍外的frame了,因為你不需要為了prepass的混合而擴充動畫范圍. 最后會算出沒有閃爍的動畫~