星期五, 1月 29, 2010

importons 和 Irradiance Particles

暗…好久沒發文了說…也不知道要發啥,有了plurk之後就一直在噗…都沒在寫 blog…最近翻了一篇文。是跟mr有關的,有興趣的人就看一看吧。英文高手們就不要來亂了…

==以下是翻譯文===========================================

mentalray 3.6 +新增了importons和發光粒子功能。
這裡一些測試和說明。最後~你需要有一個 geoshader 以啟用這個新功能。
Importons是執行計算為主導的抽樣貼圖。(不知道怎麼翻)
它們可用於為主導的光子映射功能,作為合併的光子。
也就是說,光子接近 importon 將被保存到貼圖上,其他的就直接捨棄。這將導致光子地圖的資料量大減,但卻很精確,因為我們直接捨棄對最後成像沒有很大的影響的光子,因此我們有更多的光子密度分佈在我們需要的區域(好吧,光子不是真正的'捨棄..當一個光子被丟棄,其能量被重新分配給附近的光子)。
為了讓 Importons與光子合作,你必須設置global.illumination捲廉下的merge參數為零,也要在importon捲廉下設其 merge參數為"非零"的值這會告訴mentalray使用Importons合併光子,而不是一個固定的合併距離(如果gi捲廉下的merge參數設成非零值)。
Importons在importons階段被射出,此一階段發生帶光子射出之前。一旦光子貼圖保存好了。 Importons就被捨棄。在verbosity中,你會發現有多少光子合併以及有多少被保存到貼圖上。如果使用'density'參數,則 Importons發射取決於render的解析度大小,也可以用'emitted'參數任意的發射。
當使用Importons與光子地圖,'traverse'選項要勾選。在這種模式下Importons不會被物件阻擋,會持續繼續計算任何進一步交叉區域的重要點。
最通用的實作Importons方法就是打出了大量的光子。光子的問題不在於發射光子而是光子貼圖:如何取得、平衡,儲存和相互共享。
一般來說,在32位元的作業環境下,存儲多於1千5百萬的光子在一張貼圖,還是有些問題。首先,貼圖可能大到200/300mb或是更大,mentalray會在試圖保存貼圖之前先最佳化它…然後mental ray就會就當掉。現在讓我們回到問題點上,為什麼我們要發射1千5百萬個光子…?
一般來說處理光子時有如下二個技術手法。
在大體的的燈光情況下使用一個底解析度的光子貼圖,然後利用FG來得到細節的部份。
利用高解析度的光子貼圖來準確地處理打光的細節,然後利用FG來產生接觸的陰影等等的細節。
現在,我們有第三個解法。
我們可以用光子與Importons合作,就可以達到有準確的光子反彈、進而收集到很小的細微的細節。
舉個例子。
我在一個封閉的box裡發射了5百萬個光子。
光子發射計算時間不超過30秒。
我的工作平台是在二台雙核心分佈式算圖的環境上。
光子貼圖算好了,它的大小約為102mb。這剛好是我DBR渲染所能負荷的極限了。我要等待貼圖被傳送到第二台電腦上,雖然我的場景案很小。最後等我第二台電腦拿完那個1、2百mb的光子貼圖時,第一台已經render完成了。就…浪費了渲染的時間。
再來看看結果,那些我們用光子貼圖產的經典render圖。就…很low的細節,只要看看盒子下方的暗處,那個影子有多不自然。
http://img377.imageshack.us/img377/485/impphotonysd6.png
現在,我們可以嘗試使用Importons。全密度。和merge參數為0.05(公分,而光子半徑是1公分)和勾選traverse。
http://img379.imageshack.us/img379/6163/impmergingverbosityzd1.png
光子貼圖現在是3861kb。
如上述,,我們可以看到只須要有約200.000光子分佈於重要的、對成像影響較大的區域上。由於光子的分佈是以importance為基礎的,我們打出了足夠密度的光子用以涵蓋所有的區域,以便當通過importons合併後,仍然有足夠的光子可以取得細節。只要看一看立方體的陰影,沒有用 importons和有用importons的差別。
http://img74.imageshack.us/img74/6382/impphotimplc2.png
(編輯:由於importons用於合併光子,用完就丟,只有光子貼圖會被保存下來。這意味著,可以用maya的 photon map visualizer在視埠中直接看到有用importon跟沒有importon的photon分佈情形。 :)
================================================== =============================================
此外,我們也可以單用Importons、不跟光子、發光粒子和用。
Beside the fact,你需要一個最小量importons來得到平滑的成像,在這裡最重要的參數(跟之前和光子貼圖同時開啟時是merge,在這情況下則被忽略)是跟踪深度。舉例~我們需要讓很多importons在場景中反彈用以得到一個完整的遍歷場景的importon貼圖。先把density 參數設為0.2之後可以向上調升。對於Depth 這個參數以2為起啟值。
發光粒子。
讓我附上mentalimages怎麼說明這個'新'的技術:
'有一段對於技術上的簡短說明:在渲染之前,
importon從攝影機視點被發射出來。他們撞擊到場景中的某點,該點帶著在那一點位置上它光照的強度資訊(當然,也有可能是間接照明
,也因此稱為“發光粒子”)被合成到一個貼圖之中。
一個間接照明pass或是多個間接照明pass,都可以計算。
演算法的本質上是以 importance-driven。在
rendering時期,發光粒子被用來計算每個成像點上的光照
;如果發光粒子只有收集到直接光照,那就
相當於一個反射的間接照明。光照也可以
在粒子的位置預先計算插值。'
參數的部份就跟FG很接近。
有一個要在粒子採樣點上預計發射多少光束量的參數。
有個在粒子的位置計算插值的方法(也有針對第二次反射的)和另一個模式。即、沒有沒有使用插值時會像brute force法來處理。
Passes 參數代表著計算光照強度時會考慮幾次的光線傳遞(反彈),就像是FG裡的diffuse bounces參數。
最後,如果您有一個環境,像是mr_sky,發光粒子將支持另一組採樣參數。
這裡有一些用來說明新功能的圖組
只有在第一張圖片完整的使用了importon + irradianceparticles。其他的只是保留了計算完的結果(GI mpas),然後再次下 render。在計算importon + irradianceparticles時花了約30分鐘,之後的每一張約花3分鐘(render大小約為1k)。
http://img396.imageshack.us/img396/2710/shot001rg2.png
http://img120.imageshack.us/img120/6391/shot060hn3.png
http://img72.imageshack.us/img72/8105/shot0109ut1.png
(importons密度0.5,depth4; irradianceparticles,680rays,2張,32interp,480envrays)
這裡有一段動畫可以看出 Irradiance Particles 有效減少閃爍的現象。
這是設定為中等細節後計算出的結果。雖然在陰影的部份仍然有一些班點。但是,這些班點不會閃爍,因為沒有每個frame都重新計算。(捆紮配備了網頁壓縮)。
http://rapidshare.com/files/107992908/output3.mov.html
================================================== =============================================
另一個特點是配備了mr3.6 +是一種先進的幀緩衝記憶體管理。說白一點:快取模式。當您在快取模式,可以render任何尺吋的圖像(甚至在32位上)。實際上,如果啟用,只有一小部份render完成的的圖像(或是說用使者的framebuffers)是存在於記憶體之中:newly rendered tiles and tiles recently accessed。
這個模式應該只用於btach渲染(如果在maya內用render view又打開快取模式,maya會掛點…不過…在viewer裡render大尺吋的圖好像也沒啥意義)。我剛剛在32位系統上render完一張 20k的圖,存成32bit。比其他方法慢,這個模式應該只用於如果mental ray 沒辦法建立一個很大很大的framebuffer(一般來說在32位元系統上是指超過4K的圖)。
鋼筋混凝土0.2信息:選項:蛋白原號負責管理緩存
鋼筋混凝土0.2信息:選擇:圖像類型插
鋼筋混凝土0.2信息:0 rgba_fp是
鋼筋混凝土0.2信息:相機:焦距1.37795
鋼筋混凝土0.2信息:相機:孔徑1.41732
鋼筋混凝土0.2信息:相機:方面0.8
鋼筋混凝土0.2信息:相機:第16000 20000
================================================== =============================================
二個注意事項在於使用Importons+發光粒子和Maya2008SP1。
不要用任何maya內建的shader:
'Suppress all Maya Shaders'這個選項記得勾選。在 shading engine 節點(mia_material)中的'Export with Shading Engine',這個選項要不要勾選。
上述檢查事項也要對燈光做一次。'Suppress all Maya Shaders'選項要勾選,要提供自定的 light shader (MR sky protals不錯用)。
最後,在render setting中,到 Translation->Customization中把'Export State Shader'的勾選取消。
最後~~如果想要更進一步的描述和參數說明,請閱讀軟體手冊中 geoshader 一節。
也有64位版本(刪除.X64的後綴)。
祝你玩的愉快!
Max

dagon1978

2008年4月21日,下午3點27

不錯,但老實說,我看不出跟這樣跟使用FG+GI加上AO和色溢有什麼差異。
你可以用skyportals得到物體交接處的陰影,這陰影還是area lights把室外的環境光傳遞裡室內得到的結果,如果你再把這結果拿來跟AO做出來的色溢混合還可以得到更進一步的結果,帶有色彩的物體交接處陰影,這樣的處理手法會導致後我們得到跟用發光粒子和importons這個手法一樣的結果。
而且更快~
我認為在 interpolated IP 你是正確的。
我想多說一些關於這一點,我認為暴力計算IP是一個很大的改善(比FG跟path tracing的暴力法快多了,甚至偽一體化),但我也對這種功能未來的方向擔心。
OK,現在我們有一個很好的起點(importons),它們公正呈現(或者類似這樣)renders 。為什麼不考慮看看漸進跟踪(像是在VRay裡的lightcache和PPT ...而明年他們有一個新的互動/逐行的render引擎基於此)?
就是我想說的是:我們不能從mr的開發者那裡得到回應、互動,我們看不到未來mr新功能的方向在哪裡,這肯定是不好的,因為很多時候他們不會採取對user正確的方向,恕我直言。
mental ray的開發者們,你一定要聽user的需要,如果你想進步!拜託!
現在,從另一面想,我們有ZAP(mr大濕(誤)),所以我可以跟他談論著色,我真的相信他把所有我們所提的意見認真的考慮過,我看得到這一點的好處,現在我們在mr的shader 整合上有很好的成果,這正是目前mr所展現的成果。
另一頭,我們有核心開發(我可以裡批評很多,但我想要有點建設性),那為什麼不能有一個論壇(拜託,都2008年了!),甚至mray網站上的資訊都非常落後(mray 3.3的資訊?噢,我的...)
然後我看的到後果,...需要很多功能,也增加了一些新功能,但沒有一個有說服力...
好~再回頭想想 interpolated IP,我真的希望在下一版本做到更好,但嘿,回顧過去的問題(我說的是FG 3.5版時的 interp 問題,從第一天我用mr 3.5 上工就遇到這個問題,直到現在都沒改進…3年了耶…?)這難免令我有點擔心...
現下,就我可以理解的部份(我不是技術人員),有一些IP機制本身的錯誤,我指的是 IP 計算內插這一部份。
對光子(phootn)好的開始是:(和lightcache,所有好的演算法中的二次射線)如果你需要一個插值解法,您可以用一個平穩和快速計算的二次射線的散射光,並用良好的主射線演算法來添加細節(在mr就是fg,在vray就是irradiance cache)
現在的IP:您可以射出importons為主要射線和二次射線,但你不能單獨控制其中一項要品質!
恕我直言,這對IP及其插值計算這是大問題,如果你想有一個良好的 GI 就要射出很多importons,許多importons =要射算大量的射線,射算大量的射線+很多importons =很長的 rendertime。現在你可以有一個近乎完美的interp IP算圖。但rendertimes非常接近沒做interpolated 解法的!
在未來幾週我會做一些比較,這樣您可以比較容易看到。
因此,如何解決?
恕我直言 就是分開主要次要射線的控選項!所以有兩種方法可以選擇:有光子+FG的方法(原本mray方式),和另一種VRay(和海龜和FR和邊疆區...)式,在核心裡獨立主要和次要射線!
這三年來我一直試著要求要有這個功能...我不明白,為什麼從來沒有聽有人說過它!烏龜(另一個renderer)的開發人員細心多了!因此,也許mray核心的一些技術限制導致你無法做這個改變,但是可以讓我們知道。後找尋另一種解決的辦法。
我不希望把這些討論開在另一個討論串,Max,希望你們能明白我想說的東西,我不是要批評開發人員,我希望這麼做有建設性,我想要給你們user的回應,我想做要求新功能等
但如果你不喜歡這樣的言論,我可以殺掉這一篇,並開啟另一個討論串...
thanx
mat

==翻譯結束===============================================

之後我再補上mr help裡關於 importons跟 Irradiance Particles的中譯