2012/10/31

FumeFX進階技巧(一)



編譯:Hammer Chen


上圖出現像素狀,詭異的水平垂直線條,是使用FumeFX常見的錯誤。

Quality品質 定義出模擬效果的寫實度,數值越高寫實度就越高。但也表示需要更多的計算時間。有時這是必要的,對於移動快速的物件越需要提高這個數值。


越高的數值,解算器就需要越多的迭代計算(iterations)才能達到更高的精確度。 別忘了 ,使用越高的Quality數值,你必須要把Maximum Iterations的數值調的夠高,否則不會得到更高品質的效果。(譯者註: 比方說你用Quality=5, 然後你進行模擬 ,注意觀察FumeFX的log資訊 ,如果它每次的迭代(iterations)都到達它最高數值(Maximum Iterations),就表示它被最高數值給限制住了,無法發揮它最佳的表現,這時候你就要把Maximum Iterations數值提高)

你可以參考log資訊中的“CG done with nnn iterations” 看它迭代計算的數值有沒有達到上限了, 如果有的話就代表到頂了, 你應該要把上限提高。

如上圖中的log資訊,iterations只達到37而已。

Maximum Iterations最高迭代次數  解算器並不需要太多次的迭代才能得到好效果 。對於小的grid大概需要20-30次, 對於比較大的grid大概需要100次。 如果移動很快的物件, 也需要到100次。 下圖我們是用Quality=5 100 iterations做出來的效果。

CFL Condition 這個參數定義cell資料(速度、煙、火等等)的最大移動距離。 一般來說這個數值設定為4~5左右,除非你模擬出現顆粒感。 你也可以用更高的數值, 如果你把數值設的比較小, 你可能會看到模糊的結果。

Advection - Default 適用於大部分的狀況

Advanced (fields) advection
用這個會產生比較低的消散現象(dissipation)。這會影響火焰、煙霧、 溫度等參數, 但不會影響速度。

Advanced (fields and vels)
會影響到所有: 包含了速度。這個選相對於移動緩慢的流體。 具有很多不同移動速的的場(火焰、煙霧、溫度)會容易導致像素化(線條與十字的錯誤,這個錯誤譯者也常常遇到!) 這個選項能夠產生許多小細節, 所以你可以把vorticity調到0.1也沒問題!

小技巧:如果你出現像素化的錯誤,首先不要慌,你可以把grid sensitivity調低,甚至改成0.0 。這會把像素化的問題修的平滑一點, 如果沒幫助的話, 你可以切換到Advanced (fields) advection 或是增加solver Quality。

流體水平運動(Advection Stride)
這個數字越小, 對於速度與煙霧就有越小的消散 ,但會花更多時間計算

小技巧: 如果你希望煙霧有很多小卷卷細節的話, 你可以把這個數值降到0.1或是更低的數值。

以下是與是站長與網友的對話:

Q:  這篇教學超棒的!!Fumefx但我即使調了,還是會遇到一樣的問題
A:  是不是iteration不夠?
Q:  我目前Interation 是設成300,我卡在沒辦法一次就算到很細緻的spacing grid
A:  你的Quality=5 ,可以試試看把Quality提高
Q:  好! 我試試看
我改成10 在preview下用5看,變得很好!
A:  恭喜你! 你觀察log的iteration數值, 如果沒有到頂, 那就ok了
不必把quality設到太高
Q:  interation上面顯示300,這是頂到我的spacing的意思嗎?
A:  當iteraion等於Maximum Iterations的數值, 就代表到頂了
Q:  目前好像都維持在300以下, 所以我應該可以保持這個數字繼續算下去?
A:  那就把Quality往下調, 調到剛剛好到頂
Q:  iteration這個數值, 翻譯是交互作用, 但實際上它是甚麼意思?我不是很清楚。
跟解析度有關嗎?
A:  如圖越多次的iteration 就可以產生越多細節
  iteration就是把運算結果再丟回算式中, 一直反覆計算同樣的算式

Q:原來是這樣!


[相關資訊]

2012/10/29

Field3D開放式Voxel data檔案格式



Field3D是一個開放式的函式庫,用來儲存voxel data。它提供C++ classes,可以用來處理記憶體中的資訊,以HDF5處理的檔案格式,允許C++ objects可以從硬碟中寫入與讀取。

這個函式庫與檔案格式具有彈性及延伸性:彈性是它可以支援不同類型(heterogeneous)的資料結構、位元深度、位移與貼圖以及metadata ,全部儲存在單一的檔案裡面。當你需要延伸功能時,可以透過外掛或是class factory架構,允許新的資料結構或是mappings與file I/O routines添加進來。

Field3D是專為視覺特效的大尺度需求所研發的。Dense 與 MAC-fields會處理基本的fluid simulation 與 volume rendering所需的工作。當記憶體變成了空間使用上最佳化的限制因子時,就會提供sparse fields,也就是out-of-core/dynamic載入的機制。也支援程序性的fields,這可以用在可交換的voxel-based fields。

這程式碼最初是由Sony Pictures Imageworks所研發,後來有三家不同的公司內部檔案格式所取代,用在儲存voxel資料。這格式目前用在幾個地方:volume rendering與 fluid simulation 最為原始資料的架構與格是,在Houdini中這可以最為voxel的基底,以及levelset編輯工具。

[相關資訊]
迪士尼釋出BRDF Explorer

夢工廠開放OpenVDB---體積檔案格式

FumeFX 3.5新增功能完整介紹


FumeFX 3.5新增功能完整介紹



FumeFX 3.5新增功能:

  • 無邊界的grid (Boundless grid),讓你能完全地控制模擬邊界
  • 支援Field3D檔案格式
  • 改變Effector名稱,也會自動更新FumeFX UI中的名稱
  • 在更大的grid可吃進cache檔然後繼續運算
  • Object Source支援範圍的發射(Volume emission)
  • MXS command ffxSilent靜音功能,你可以不要顯示訊息資訊(例如停止/繼續...等)
  • 在預覽視窗就可以看到透光散射效果(Multiple Scattering)
  • 你可以決定Multiple Scattering是否要投射或是接收(陰影)。 這個選項在當你有多個 grid的時候,為了避免Multiple Scattering進行過多計算,十分有用
  • 你可以在輸出預覽的時候壓上多種模擬資訊
  • 在Obj/Src選單中 在viewport選中了object/src 就會自動啟動釘住UI的選項,這個功能也支援多物件選取
  • 現在在Asset Manager會顯示Paths
  • Pin UI釘住UI的選項會讓UI持續顯示,即便是你已經沒有選中FumeFX。你可以在這時候移動物件或是燈光,那麼GPU運算的預覽視窗也會更新
  • 預覽視窗多了一個新選項那就是"Lock to Viewport" 。你可以在多個Viewports中使用預覽視窗,就會在該視窗中顯示預覽
  • FumeFX Gravity現在支援負值了
  • Sim Loop Mode循環模擬的選項現在可以在每個loop開始前reset sim

  • 添加了tooltips的功能。現在用戶可以看到很長的輸出路徑
  • 支援在Scene Selection window選取節點的群組,支援以下:
  1. 物件清單
  2. 燈光照明清單
  3. 物件來源(object source)清單
  4. 粒子來源(particle source)清單
  • 當你啟用grouping button ('G')的選項,你就可以支援改變FumeFX deflector objects中所有物件的參數

[相關資訊]



2012/10/13

台灣人玩動畫開放PayPal小額贊助


PAYPAL台灣人玩動畫開放小額捐款

感謝各位朋友多年支持本站,如果有某篇文章對您十分有幫助,歡迎您小額(美金15元,約台幣450元左右)贊助本站。站長會持續地提供您優質的CG動畫相關文章~

站長email: hammerbchen@gmail.com

點擊以下『立即購』會進入PayPal安全捐款介面:





有朋友問, 如果沒有PayPal帳號要怎樣捐款? 你可以匯款到以下我的華南銀行帳戶:

 銀行名稱:華南銀行
 分行名稱:北投分行
 帳號:178-20-021588-1
 戶名:陳炳璋

ZAP談Ambient Occlusion (AO)



作者:Master Zap
翻譯:Hammer Chen

最近我常常遇到有人問在mental ray裡面要怎樣使用環境光(ambient light), 大部分的人對 mia_material (Arch & Design)缺乏ambient這個選項感到困混.

這裡我試著解釋一下

導讀: 環境光與Occlusion
很久很久以前…
傳統的電腦繪圖, 完全沒有任何的間接照明, 預設的效果像這樣: 打了一盞方向光


整個陰影是全黑的, 一點也不寫實, 你甚至看不到這張黃色桌子底下的四隻腳!

因此, 開始有人引進一些小技巧, 其中一個很醜, 不寫實的技巧是陰影密度(shadow density) 這個參數的意思是, 光線在陰影的地方, 只有x%的亮的光線會完全不見. 因此你也會找到像"Shadow Color" 與 "Shadow Density"的參數, 你也知道這個東西很荒謬, 一點也不合理!!

一個不透明的物件不是完全遮蔽住光線, 要不然就是讓光線透過去, 它不會隨機地讓光線穿透, 所以遮蔽47%的光線, 這種事情根本不可能, 除非是透明的物體要不然根本不會發生!

規則一: 不管怎樣都絕對不要用"shadow color" 或 "shadow density"這兩個參數

進入環境光(Ambient)的階段
但是, 這些早期CG界的人說, 在戶外, 因為太陽光的關係陰影會帶有一點點藍色, 難道我不應該把shadow density調小, 把color調藍, 得到偏藍的陰影嗎?

不行!

陰影之所以會是藍色, 是因為有天空這個藍色的補光的關係.
而早期的CG開發人員了解這點, 所以除了發明了"shadow color",這種東西以外 還引進了也一樣可怕的東西: Ambient Light

問題是, Ambient Light會產生平均的照明, 這完全不寫實效果也很難令人滿意. 就像這樣:


這跟之前的版本一樣可怕. 當然, 你在陰影裡面會看到一些效果, 但那樣的效果是很均勻地分布. 現在桌腳可以見到, 但整個顏色完全沒有細節!

你看得出桌腳是圓的, 平的或是橢圓的, 桌腳有無碰到地面, 或是懸空的? 紫色的茶壺看起來好像飛起來了, 因為後面的綠色茶壺的陰影沒有亮度變化.

這邊的問題是燈光打到每個點的時候是均勻的照明, 不管物體的位置或是角度. 但如果我們想要模擬帶點藍色的天空光, 在光源前面的物體會接受到較多的光線, 而在後面(被擋住)的物體光線就會被遮蔽掉.

進入遮蔽(Occlusion)的階段:
幸運的是, 2002年在ILM有群聰明人, 當他們在做電影<<珍珠港>>的案子的時候, 發明了(他們是用mental ray, 必須強調一下), 叫做Ambient Occlusion (AO)的東西. 基本上, 他們寫了個shader,  能找到特定的點被遮蔽的程度, 也就是在那個點上面, 有多少程度遮蔽住光線, 這個遮蔽效果, 看起來像這樣:


結合了環境(Ambient) 與 遮蔽(Occusion)

如果你把這個遮蔽(Occusion)效果跟環境(Ambient)結合在一起, 就會得到以下美麗的圖片:


你看細節如何美妙地表現出來, 桌腳現在能正確的顯示出與地板的接觸感, 桌腳的形狀也能看出來. 兩個茶壺之間也能正確的顯示陰暗面 ,茶壺也有很棒的接觸陰影. 這就是AO正確的使用效果!

錯誤地使用 AO!
然而, 很不幸地, 很多人讀了卻也誤解了ILM原始對AO的文件. 他們把AO直接套用到整個場景上面, 這是錯的!!!

例如, 有些人會算圖, 產生occlusion pass, 然後把兩張用疊加的方式合成在一起:


請注意看, 結果會有種髒髒的感覺, 因為occlusion pass是套用在整張圖上面, 影響了環境光(ambient)也同時影響了方向光.

這完全沒有道理! 方向光的遮蔽(occlusion)本來就已經有計算了, 這也是為什麼方向光會產生陰影. 環境光的遮蔽(Ambient occlusion)之所以會這麼稱呼不是沒有原因的! 這個功能本來就是要把環境光遮蔽掉, 而不是把方向光遮蔽掉.

但是你在上圖看到的是前景的物體把地板弄黑了, 讓它看起來髒髒的, 還有, 壺嘴的地方也有髒髒的陰影…等等問題.

所以, 整體的套用遮蔽(occlusion)在beauty pass (包含了 reflections, direct light, 等) 是大錯特錯的!不要這樣做.

好, 我們之前是用環境光與遮蔽的方法, 模擬出寫實環境光效果, 以及光線反彈的感覺. 現在我們真的去計算光線的反彈 (採用Final Gathering) 看看效果:

上圖是利用3ds Max "Skylight" 與FG算出來的效果. 跟我們前面用環境光+遮蔽產生的效果效果類似, 但是後者是真正的反彈光線.

這也引發了疑問, 既然這麼容易就產生真正的反彈光, 為什麼還要用造假的方式(AO) 合成呢?
以下做回答:
FG是一種內插的技術, 這表示間接照明是經過採樣計算出來的, 這些數值會被內差計算. 但是, 如果你算的是動畫, 每個frame之間的效果會有不同. 理論上不會只是一個像素的差異, 而是幾個區域的像素差異 (這些受到FG 採樣點內插所影響的像素)

結果是, 最終的動畫會產生閃爍的問題. 你會察覺到, 因為這個閃爍是超過一顆像素大小的, 閃爍會讓視覺畫面不討喜.

實際在操作的時候, 我們要結合使用真實的反彈(FG)與造假的(AO合成)的方式來作業


上圖說明了, 三個pass ( Ambient, Direct, Occlusion)用不同的順序來合成, 產生不同的效果.

第一種方式是錯誤的做法: 把Ambient + Direct 再疊上Occlusion, 看起會有髒髒的感覺

第二種方式是正確的: 把Ambient + Occlusion (這也就是AO名稱的由來) 最後才疊上Direct的pass, 就可以得到很漂亮的效果.

[相關資訊]

FumeFX – Large Grids 設定技巧



作者:Jeff Lim
翻譯:Hammer Chen

有時候, 場景裡面有移動的火焰, 因此, 就必須要設定非常大的grid, 最後就會導致速度緩慢, 記憶體消耗過大的模擬.

有幾種方法可以解決這類問題

*** 以下方法經過FumeFX 1.x測試****

1. 大型的Static Grid
為了要模擬會動來動去的火焰, 就必須要建立大的grid能夠包裹住火焰的運動範圍.你可以到ScriptSpot網站去下載Allan Mckay的免費script, 叫做Create Animation Bounding Box, 作者是這樣解釋他的script的: “基本上就是想要把角色整個的動畫範圍呈現出來, 也就是說產生一個能包含整個動畫的bounding box.” 另外Anubis先生也有寫他自己的版本, 使用起來比較簡單, 速度比較快.


2. 把Bounding Box獨立出來的script
這個方法也是使用大的grid, 但這個script必須用在FumeFX裡面, 使用的條件是:一個能夠做為bounding volume的物件, 建議使用Box, 把這個box link給你要燃燒, 會移動的物件. 而且該box不能旋轉.


BBox Alignment
下載這個script, 在FumeFX中指定進來.
http://www.scriptspot.com/files/u149/FumeFX_-_Object_Bounding_Box.ms


MaxScript Assignment選單
按下Edit按鈕, 取代原本的script, 改用上面所提供的script. 你必須要編輯圈起來的部分, 把$'BBox' (紅色部分), 改成你的bounding box物件最後, 把$'FumeFX01'改成你FumeFX物件.


Object Bounding Box Script的片段
請注意, 你可以省略掉FumeFX命名的那個步驟, 你可以把第26行的script省略掉 (comment out) 以及25行. 我之所以要做這兩個步驟的原因是, 內建的ffx變數沒辦法回傳正確的FumeFX物件, 所以直接指定結點名稱會是一個比較保險的做法.

以下是模擬的預覽效果


你可以看看Log視窗裡面, 由fume模擬產生的log. 請注意看看裡面的“–>”, 這是由script產生的資訊.



FumeFX Log
如果你不想用這個script, 然後在32bit環境模擬這個場景, 你可能跟我一樣會因此當機.


記憶體耗盡
基本上, 當你在進行模擬的時候, 建議你用64位元的作業系統, 這樣你就能夠完全利用所有的實體記憶體. 很多高手會用這個方法, 除了對大型grid有效外, 在模擬的時候, 你能以定速進行模擬, 你可以查看FumeFX的log, 你就會發現每個frame是以固定7秒的速度在模擬.

缺點是在Box volume外面的voxel會被刪除, 所以這對於大型的煙霧模擬是不適合的.

3. Grid Lock
這個方法也是要用script 跟第二的方法做法很像. 整個概念是要能夠直接對FumeFX grid設定動態. 一開始的時候把FumeFX link給動態的物件, 跟Bounding Box方法一樣, 不可以設定帶旋轉的動畫. 例如: 我把FumeFX grid link給Point Helper 而Point Helper連結到動態物件, 我利用Point Helper來幫助把FumeFX grid放到pivot的中心, 因為FumeFX的grid的pivot總是在底部的中心. 接著, 我使用Tera Bake Transforms這個腳本, 它提供了一個功能能夠持續地讓grid對齊, 即使grid在場景中不斷移動.

 http://www.scriptspot.com/files/u149/Tera_Bake_Transforms.ms

這個script, 可以把物件的動畫bake成keyframes. 這個東西提供特殊的功能叫做Snap Positions, 當你使用這個功能進行動畫烘培的時候, 你可以以特定的數值snap 動畫的位置. 下圖應該可以解釋得更加清楚:


以下是用這個script進行的baking結果, 開啟或是關閉Snap Position的功能:

關閉或是開啟Snap Positions 進行baking
有了’snap位置這個操作, 我們就可以套用script據grid emitter運動
 來對 voxel data做偏移

下載這個script, 把這個script放到FumeFX maxscript裡面

現在當我們進行模擬

FumeFX Simulation預覽
跟第二種方法相比, 這個方法花的時間較長

第二種方法 37分鐘
第三種方法 47分鐘

4. 剪切法 (Cut-Of)
你可以到Afterworks論壇上面找到這個方法, 它也是利用script把使用者指定, 超過特定數值範圍的voxel 資料給清掉. 我想在CGFluids也可以找到這個script.

5.空的Src (Void Src)
如果你有FumeFX 2.x, 你可以利用新的FumeFx Helper, 稱為Void Source. 基本上, 跟第二種和第三種方法很像, 但是方便的是它不是用script來操作的, 而且這個還允許你使用旋轉.

6. CGTalk論壇上面lutteral寫的Script
根據第二種方法 lutteral寫了另外一個script, 你可以點擊這邊看討論串, 這個script可在第三個post找到.
http://forums.cgsociety.org/showthread.php?p=6768120

[相關教學]


VRay算圖的燈光平衡



作者:Ciro Sannino
翻譯:Hammer Chen

算圖的燈光平衡
當我在算圖的時候, 我個人有個流程, 不是太大秘密也沒什麼特殊, 但是對我幫助很大. 通常這個流程包含了四個部分, 這個流程讓我對更能掌控整個算圖的效果:

1. 平衡各光源 (所有物件採用預設的材質)
2. 曝光修正 (在套用紋理貼圖之後)
3. 添加反射效果 (模糊反射, 與非模糊反射)
4. 最終的算圖設定

基於點雲的算圖技術point-based rendering



作者: Nils O Sandys
翻譯: Hammer Chen

基於點雲的算圖技術
 過去幾年, 新的電腦繪圖技術已經對未來的電影製作有極大的影響, 這個技術稱為----基於點雲的算圖(point-based rendering). 這個技術很強大, 它讓全局照明(GI)對電影產業來說變得實用且有效率, 事實上, 今年的美國影藝學院把奧斯卡科學與工程獎獎項頒發給 Per Christensen, Michael Bunnell 與 Christophe Hery以表揚他們對這個創新技術的貢獻.

經典的問題
在本文中, 我們會深入探討這項新科技的發展, 基於點雲的算圖(point-based rendering) 是怎樣運作的, 以及這項科技對未來電影製作代表的意義. 讓我們先談談色溢(color bleeding)吧, 這是在圖學裡面常見的問題.
有些人可能還不知道色溢是什麼, 當模擬漫射光反彈的時候,例如紅色的牆面,光線自紅色牆面反彈到白色牆面, 而把白色牆面染成紅色. 事實上, 色溢是電腦動畫的聖杯, 因為這個東西可以讓算圖的畫面變得非常寫實.


雖然這幾年下來, 有很多方法可以達到色溢的效果, 但是沒有適合用在電影製作上面的解決方案.

以往, 有三大技術可以產生色溢. 第一種最簡單----造假. 在場景中放盞燈用來模擬燈光在物體間反彈的效果, 美術人員手動地產生這種效果. 這種方法非常不精確, 需要很多時間來設定. 所以對於複雜的, 多物件的場景沒有實用性. 但是 對於簡單的場景, 色溢可以輕易地造假出來.

另外兩種技術是光線追蹤(光線追蹤)與熱輻射(radiosity) 這兩種技術都需要投射大量的光束(rays) 或是計算成千上萬的元件(熱輻射), 用來計算場景中的光線傳遞.

這兩種方法都很容易設定, 可以產生物理精確的結果, 但是這兩種技術之前都沒有用在知名的電影製作上. 儘管光線追蹤與熱輻射可以產生驚人的結果, 但是實際在製作的時候需要的記憶體與電腦都非常的高, 對於電影製作等級的資料, 這種方法本質上就無法執行.

新的解決方案
2004年,從看似不相關的領域---即時算圖(real-time rendering), 提供了全新的概念:   由NVIDIA公司的Michael Bunnell, 他在GPU Gems 2書中發表了一章關於即時產生AO,不是用光線追蹤技術,而是用點雲的技術來算AO.

這是一個創新的觀念! 很快地,皮克斯公司的Per Christensen,他是資深的RenderMan開發者,就開始把這個概念應用到皮克斯的 RenderMan上面. 藉由建立點雲流程,計算次表面散射效果(subsurface scattering). 在開發早期, Christensen與Sony的Rene Limberger合作, 他把點雲的算圖技術用在衝浪季節的前製測試上面. Christensen又與ILM的Christophe Hery合作把這技術優化, 然後應用在神鬼奇航2:加勒比海盜. 很快地, 這個技術說明了它在大型的電影算圖上面的可行性.  Bunnell當初寫的那個章節, 現在掀起了電影產業的小革命----基於點雲的算圖(point-based rendering)!


神鬼奇航2那部電影, Hery很成功地使用基於點雲的算圖的技術. 在初期測試基於點雲的算圖渲染AO效果, 只花了兩小時;用傳統方法算AO卻要十小時. 更誇張的是, 計算色溢幾乎不會花費時間, 因為可以把照明直接烘培到點雲上面, 這是一大突破. 在以前, 根本可能要求的分鏡裡面完成色溢的效果, 只用了幾套客製化的工具, ILM公司的shaing與照明團隊很快地改用新方法來渲染AO, 色溢與IBL.這些新的shading與照明技術讓深海閻王(Davy Jones)逼真寫實地呈現在大螢幕上.


Per Christensen對Hery的努力印象深刻. “真可怕! Christophe怎麼會這麼快就把這個新概念整合到流程裡面??”  很快地, Christensen把原型DSO的程式碼導入到皮克斯的RenderMan裡面, 改善效能, 精確度, 根據ILM的需求與其他工作室的需求擴充功能.

到這裡, 皮克斯還沒把基於點雲的色溢用在製作案上面, 但是即將要改變Pete Doctor的動畫片天外奇蹟. 後來發現要把點雲為基礎的色溢整合到皮克斯複雜的流程相當容易, 事實上, 超過90%的分鏡都是用這個新技術. 有了這個技術, 天外奇蹟完稿的質感整個提升了.

基於點雲的算圖技術很重要, 因為這個技術提供了超高的效率, 跟光線追蹤與熱輻射產生色溢的方式相比較, 這個新技術很有效率地處理電腦動畫的經典問題 很讚, 但到底是怎樣運作的呢?

運作機制是什麼
首先, 讓我們談一下點雲. 基本上, 望文生義, 點雲就是在3D空間中的大量的點所構成的東西(多的向雲一般) .包含了一個或是多個通道的資料 (照明, occlusion ).


除了基於點雲的算圖以外, 點雲還有很多重要用途,因為這對快取3D 紋理提供很重要的結構 .皮克斯的RenderMan能夠很有效率的產生點雲因為有REYES處理幾何體的演算法.

RenderMan可以很輕易地寫出點雲, 其中包含了點在空間中的位置, 法線與用戶所指定的資料, 上圖顯示常見的點雲.

進入基於點雲的算圖世界
我們之前有提到, Michael Bunnell的主要觀念是要避掉光線追蹤與熱輻射而採用點雲的格式. 因此我們要怎樣從點雲得到AO與色溢呢? 首先, 在預先計算(pre-pass)裡面會產生場景幾何體與照明的點雲, 這些點雲稱為烘培過的點雲, 每個點都包含了物件表面的微多邊形(micropolygon)與表面法線, 一但這個資料產生了後, 可以快取並重複使用.

有了點雲為基礎的算圖都優點是: 色溢的計算幾乎跟計算AO一樣快, 因為只有當顏色烘培到點雲上才需要跑shader. 這跟光線追蹤相比, 可以節省很多時間.  演算法唯一要做的是, 讓點烘培的pass要包含每個點的radiance (表面顏色與發光). 請注意, 點是用來逼近場景中的幾何體, 跟光線追蹤相比, 光線追蹤需要用場景中真正的幾何體, 第二階段是在算圖的時候, 烘培的點雲交給在場景幾何體上的shader, 計算點雲的效果. 接著, 每個點用空間中具方向性的小圓盤(oriented disk)來逼近計算.

跟光線追蹤相比, 計算圓盤的顏色與AO十分簡單. 為了效率, 比較疏遠的圓盤 對於整體的結果貢獻度比較微弱, 所以把它們群組成一個物件.圓盤之間的AO計算也會處理非排除的法線(non-occluded normal), 這會用在計算IBL(image based lighting)的環境查詢(environment lookup)上面.

這跟光跡追蹤算AO的功能很類似, 而基於點雲的算圖是說它的色溢績算幾乎跟AO計算的一樣快,於只有當顏色烘培到點上面, 你才需要執行shader



效能
下圖比較了ray traced的AO與點雲為基礎計算出來的AO之間的差別. 視覺上看起來差不多, 但是在點雲為計算的那張裡面似乎有點過黑. 但是就相同的視覺品質來說, 基於點雲的算圖幾乎有八倍快, 且只用到很少的記憶體.


優點與缺點
基於點雲的GI逼近計算的優勢有:
1. 不會有雜訊: 不會有像光線追蹤的算法常常會產生雜點
2. 對大場景說, 跟光線追蹤相比, 快速的計算時間可達4X到10X的速度. 色溢 與 image-based lighting (包含對 HDRI的支援) 幾乎跟計算AO一樣快速.
3. 低的記憶體需求.
4. 對於有套用displacements的模型來說,不會因為displacements而大幅增加算圖時間
5. 燈光與物件可以很輕易的含入或是排除計算

缺點
這個技術往往會產生過多的AO或是過多的色溢, 因為點只是原始場景的逼近值而已, 這會導致AO顏色過深, 或是從隱藏的面計算出來的色溢.

基於點雲的算圖技術在皮克斯未來的發展
基於點雲的算圖技術對整個shaing與 lighting來說是利多.由於天外奇蹟的成功,  目前在皮克斯所有的專案都有用到該技術

基於點雲的算圖技術很適合用在複雜的場景, 場景中有大量物體, 有displacement. 請記住基於點雲的算圖並不是萬靈丹, 只是TD錦囊中的一個工具而已.

在皮克斯, 燈光的TD們會決定怎樣的分鏡要採用怎樣的算圖技術, 可能的話還是會用造假的方式產生色溢. 以AO為例, 皮克斯有用到基於點雲的算圖與光線追蹤, 這全跟分鏡的細節需求來決定.

基於點雲的算圖帶來的好處是能夠渲染場景的全局照明, 用其他技術根本達不到. 某些複雜的分鏡, 皮克斯花了20小時, 產生超過300Gb 的點雲. 沒有基於點雲的算圖技術的話, 根本無法達到這樣的效果.

基於點雲的算圖大量應用在天外奇蹟與玩具總動員3


可以導演的
基於點雲的算圖技術的其中一個優點是可以導演的, 因為點雲並不受限於物理光源的行為. 光線追蹤與熱輻射都有這樣的問題. 在皮克斯, 點雲用選定的燈光與特定的幾何體產生, 讓記憶體能夠有效地應用, 達到最好的效果.

除此之外, 你可以很精確地控制效果的位置. 例如, 某些分鏡, 只有在攝影機前面的東西需要計算色溢, 離攝影機更遠的物件, 效果看不出來. 因此, 我們只需要計算接近於攝影機的點雲就好了, 忽略場景中其他的幾何體. 有些非常複雜的分鏡點雲還是會超過300Gb,  儘管如此, 因為記憶體成本的關係, 同樣的東西用光線追蹤與熱輻射根本就無法達成.

容易打燈
在皮克斯, 基於點雲的色溢常常會用光線來烘培出來, 或是讀取 ,調整光線的強度, 讓我們很容易地控制整體的照明亮度. 因為這些只是一般的燈光, 半影, gobo與 燈光的等等屬性. 因此, 把基於點雲的算圖導入到皮克斯的流程裡面相對容易, 因為整個流程十分相似. 對TD來說, 它就像一般的燈光一樣.

基於點雲的色溢技術現在已經用在超過三十部電影, 色溢終於進入到標準的製程裡面了, 在大部分的大型工作室, 這表示電影業可以達到更高的寫實度.

結論
點雲為基礎的算圖, 變成了電影產業裡面, 產生色溢與AO的重要技術. 他避開了光線追蹤與熱輻射本身的侷限. 有些場景非常非常複雜, 很難ray-trac,e 對於這麼複雜的場景, 基於點雲的算圖變成了唯一的選擇. 有了皮克斯把這個技術直接導入到RenderMan裡面, 讓導演可以創造前所未有的寫實度與複雜度.

以後你一定會常常聽到這個技術

[相關資訊]


VRay對透明物件設定alpha channel


作者:MintViz
翻譯:Hammer Chen


對透明物件設定alpha channel

當你用VRay來渲染透明的物件的時候, 如果這個透明物件背後沒有物件的話, 你會看到物件後面會顯示3ds max標準的環境色(environment colour). alpha channel的預設值是用反射環境的顏色或是半透明物件所貼的貼圖顏色. 下圖是使用預設的參數所產生的效果.

用VRay算出不閃爍的動畫



作者:MintViz
翻譯:Hammer Chen

當使用GI (Global illumination)在算動畫的時候, 由於GI是依據快取的採樣(caching samples), 也因此會產生閃爍的問題. 原因是每個frame的採樣位置並不同, 造成每個frame的照明會有差異. 為了解決這個問題, 你可以先用預先計算的採樣點(pre-calculated solution) 這些合併的採樣點用來計算每一個frame. 你可以對兩個GI方法都做預先計算, 通常是irradiance map light cache. 對irradiance map來說, 你可以用multiframe incremental mode模式, 對light cache來說, 你可以用fly-through mode模式.
irradiance map 與 light cache兩者個結合運算對於場景中沒有物件移動的動畫很有效, 但這種做法只適用於攝影機飛越(fly-through)的動畫.

2012/10/07

Vray最佳設定 ─ 如何選擇GI引擎



如何選擇GI引擎


Via:http://renderstuff.com/
作者:Anton, Max
翻譯:Hammer Chen

儘管V-Ray的GI引擎看似有許多選擇, 但是能用的排列組合其實就那幾種. Photon map我們在前篇教學裡面很快地就排除掉了, 也解釋了原因. 最萬用的 能夠解決所有狀況的, 當然就是Brute Force演算法, 但因其缺乏內建的自適應興 與大量的運算資源需求, 請不要把BF當成每日GI算圖引擎. 甚至如果用有提供最佳化的算圖引擎跟BF相比, BF會耗費達十倍的算圖時間. 只有在某些狀況, 當最佳化的算圖引擎無法處理算圖錯誤的問題, 才建議你改用Brute Force.

Vray最佳設定 ─ Raycasting




Via:http://renderstuff.com/
作者:Anton, Max
翻譯:Hammer Chen


這篇教學將回答以下問題:
如何避免當記憶體不足時所造成3ds max當機的問題?
V-Ray在算圖的時候當機時該怎麼辦?
如何處理V-Ray遇到記憶體不足的問題?
場景中有上百萬的多邊形時, 算圖應該如何設定?
要怎樣設定讓算圖變快?
什麼是raycasting? V-Ray是怎樣加速raycasting的?
什麼是BSP tree? 在V-Ray裡面又是長怎樣?
靜態Raycaster (Static Raycaster)與動態Raycaster (Dynamic Raycaster)兩者有什麼差異?
V-Ray怎麼處理虛擬記憶體(paging , swapping) ?
要怎樣把V-Ray切換到Dynamic Raycaster?
V-Ray bucket是什麼東西?
為什麼我們需要看V-Ray rendering log訊息?
要怎樣改變V-Ray算圖處理的優先順序?
當V-Ray在計算Light Cache的時候當機, 我該怎麼辦?
動態記憶體的限制(Dynamic Memory Limit)要怎樣計算出來?

Vray最佳設定 ─ Light Cache與Photon Map篇




Via:http://renderstuff.com/
作者:Anton, Max
翻譯:Hammer Chen

V-Ray的最佳設定 Light Cache
大家好, 之前各位有仔細讀過兩篇關於GI算圖的教學:

Vray最佳設定---Irradiance Map篇
揭開V-Ray DMC採樣器的神秘面紗

現在進入到第三篇. 如果你還是不了解前面兩篇, 我們誠摯地建議你再複習一下, 特別是, 要知道GI的大致概念, 也就是要對Brute Force和Irradiance Map這兩種演算法有紮實的概念. 在這篇教學裡面, 我們將學習有關於GI反彈算圖, Photon mapping與 Light Cache, 我們也會學習Light cache每個細項功能, 以及最佳化的設定方式.

本教學將回答下列問題
photon map是什麼? 運作的方式?
使用photon map的缺點是什麼?
photon map的修改版---- Light cache演算法的運作方式是什麼?
Light cache的cell是什麼?
Light cache是如何儲存直接光照的? 以及計算不同的diffuse反射
Light cache filter的運作方式?
Pre-filtering與Filtering的差異?
Light cache的參數要怎樣設定才能得到最佳的效果?


Vray最佳設定---Irradiance Map篇



Via:http://renderstuff.com/
作者:Anton, Max
翻譯:Hammer Chen

哈囉!大家好~我們繼續討論在V-ray裡面如何設置GI, 在上個教學裡面, 我們討論到間接照明的原理, 我們也學到什麼是全局照明以及為什麼需要全局照明. 本教學, 我們將討論原理, 參數與用Brute Force 和 Irradiance Map做為第二級的GI反彈演算法.

2012/10/05

揭開V-Ray DMC採樣器的神秘面紗



原文:http://interstation3d.com
翻譯:Hammer Chen

引言
這篇教學裡面我將給您DMC採樣器(sampler)的基本技術背景, 但在談DMC採樣器的技術細節之前, 我們先複習V-ray裡面另外一個採樣器--- Adaptive Subdivision採樣. 我不會談固定的採樣(fixed sampler)技術, 因為固定採樣很直覺. 自適應細分採樣(Adaptive Subdivision sampling)是一項技術, 用在幾乎所有偏差算圖引擎(biased render engine)上, 這是相對舊的技術, 在大部分的狀況應用的非常棒.

(註: DMC的全名是Deterministic Monte Carlo, 也就是確定性蒙特卡羅)

自適應細分採樣可以給你很乾淨, 採樣好的影像, 用來渲染靜態圖片真是太完美了. 但是跟DMC採樣相比, 通常會對影像的同一個地方過度採樣(oversamples), 即使你只需要用少量的反射模糊採樣(glossy reflection samples)就足夠了. 正如我說, 細分採樣器存在於大部分的偏差算圖引擎中, 但我覺得有些積極正面的VRay用戶, 卻開始採用另外一種採樣器演算法. 我知道有個渲染器用了類似於DMC的技術. 兩個算圖器, 越來越被用在高階的製作環境上面, 原因是 DMC目前是基於raytracing, 最佳的在可接受的時間裡面, 計算攝影機景深與3D動態模糊.

自適應的採樣的採樣過程 
所有偏差的引擎大部分是用自適應的(adaptive). 這表示, 讓我們先把狀況簡化一下, 比如說有一個3X3像素解析度的區域, 當你算圖的時候, VRAY一開始的時候會用9個採樣來算, 表示每個像素有一個採樣, 我們會先假定採樣的位置位於每個像素的正中間.


3x3 INITIAL SAMPLING
1 SAMPLE PER PIXEL

數量為3x3的啟始採樣
每個像素有一個採樣
如果你不是很了解raytracing運作的方式, 讓我們很快速地複習一遍. 這很簡單, 想想看你有攝影機, 在攝影機前面有個格點(grid), 呈現出你最終算圖的解析度. 如果你場景中有某些物件, 當Vray開始算圖, 它會從攝影機射出線段 (稱為eye ray, 眼睛射線 )一直到像素的中央區域. 像量實際上是由攝影機射出去, 它會勇往直前, 會直線前進直到遇到場景中的物件才會停止.

眼睛的視線撞擊到某物體的點 算圖器就會開始計算該點上面的色彩, 反射, 折射的資訊. 這些會回傳收集的資訊給vray, 告訴它說這就是在該像素的顏色. 從攝影機發出的射線稱為眼睛射線, 或是一級射線. 所有其他從材質射出的射線 用來收集GI, 燈光, 反射…稱為二級射線. 請記住這點, 因為我們會談到這兩種射線. 讓我們複習下面圖示, 讓我們更了解什麼是raycasting.

2012/10/03

Vue 10算圖參數最佳化













E-on Vue 10可以渲染出寫實的天空, 雲層, 山脈, 令人垢病的是它冗長的算圖時間 這邊整理一下相關最佳化資訊  這裡以雲層算圖為例


首先來看影響最大的參數---Cloud material的光影計算方式

Internal shadows: 自身陰影. 當啟用這個選項, 就會計算雲自身陰影, 能夠產生更真實的雲, 但會顯著地增加算圖時間. 下圖由左至右為:關閉Internal Shadow, 開啟Internal Shadow與GI Ambient Light. 算圖時間分別為13秒, 18秒, 33秒





















Lighting Model對雲層算圖的影響不大,畫面上與算圖速度上都沒有明顯差異.
下圖由左至右為Standard, Global Ambient與Global Illumination













Preset Render Quality:Preview與Final最大的差異就是Preview不計算反鋸齒. 下圖算圖時間分別為10秒與38秒, 相差了三倍多.


OpenGL:提供非常快速的算圖, 不計算反射, 透明度, 也不計算陰影

Preview:預設使用的參數, 在畫質與速度上取得了平衡, 會計算反射, 透明與陰影. 儘管這是透過偷吃步來達成的, 例如關閉柔化陰影, 模糊化反射/折射, 關閉景深, 畫面不計算反鋸齒.

Final:顧名思義, 用在最終算圖的設定, 能夠產生正確的柔化陰影, 高品質的反鋸齒, 但會比Preview的算圖多出幾倍的計算圖間, 你可以到User 客製化一些小參數已達到最佳化的算圖速度.

Broadcast:這個是用在動畫算圖上的, 基本上會添加動態模糊, 但也會改善反鋸齒的問題.























Quality Boost對算圖品質與時間沒有明顯影響, 建議數值為-1.5 ~ -1.6




























Optimize last render pass: 最佳化最後一個render pass 當勾選會最佳化最後的render pass 讓算圖最快達到三倍快, 但是會捨棄掉某些細節. 當啟用這個模式就無法產生G-Buffer的資訊.



降閃爍(Flicker Reduction)
這會啟動特殊演算法減少電腦動畫常見的閃爍問題,  雖然終極的解決方案就是增加抗鋸齒的設定, 但是這樣做會讓算圖時間巨量地增加.

以下的方法算是偷吃步, 可以減少閃爍問題而又不會增加太多算圖時間


1. 已決定的抗鋸齒(Deterministic anti-aliasing)
當啟動這個選項(預設)抗鋸齒會以隨機的方式產生 所形成的形狀在每個frame都一樣 這可以幾乎消除靜態雜訊 但是在某些狀況會產生看得見的圖案

但對影像的不良影響很難察覺 這就是為什麼預設是開啟的

2. 多個影格的抗鋸齒(Multi-frame anti-aliasing)
Vue會比較當前與前一個 後一個frame 試著偵測最強烈的閃爍位置 然後對該區域放上更多的採樣 這個選項需要至少三個frame才能完成計算 因此只在動畫時有用 會對frame產生些微模糊的畫面

3. 遠距物件模糊化(Distance blurring)
這會讓你刻意對動畫套用模糊 因為閃爍通常是跟極遠的物件有關

當你使用EcoSystem時, 會產生很細微的幾合體, 在離鏡頭很遠的地方容易產生閃爍, 所以當使用模糊功能, 可以解決問題.

Cloud Layer Zone:這個功能讓雲層聚集在侷限的範圍裡面。不要讓雲層佈滿整個天空,也是最佳化算圖的一項技巧。

Animating Clouds:
除了對大氣本身設定以外, 你也可以對雲設定動態, 產生雲被風吹開的效果, 緩慢地改變形狀或是隨著時間變化厚度. 這是藉由對雲的材質設定動態所達到的
Rate of change會改變雲層的變化速率 (會決定雲是緩慢地改變或是迅速變化)

最終效果:


[相關資訊]
Afterburn 4.0參數使用技巧