Pages

2012/11/28

thinkingParticles book新書上市


站長的thinkingParticles書在經過六個月的努力後終於上市了,書中有比較與Particle Flow的差異、基本操作、重要的operator。範例由基礎到進階都有。裡面有介紹許多不同狀況的碎裂,切割技巧。相信大部分製作特效相關的同好都會有這樣的需求。另外也舉了範例說明與FumeFX的整合,以及製作許多零件撞擊後散開(車禍)的製作觀念。這是一本用心撰寫的書,希望對大家有幫助~ 。若有興趣可以到各大書局或是博客來書局訂購。線上訂購請點這裡。謝謝~

部分內頁(取自博客來):






實體照片:
封面

背面

範例介紹

實際的串接說明

書附光碟

書中提到的部分範例效果:




[相關資訊]
thinkingParticles 5新增功能完整介紹

thinkingParticles學習資源大補帖

thinkingParticles根據碎片內面產生煙塵

2012/11/18

Quantum Force參數介紹


編譯:Hammer Chen

簡單說起來 Realflow的力場(Daemon)太僵化了,如果能透過粒子來產生新的力場,例如螺旋的力場或是不斷轉圈圈的力場來擾動流體的話,那就可以發揮無限的想像力來創作流體特效了。不過V-MOTION Quantum Force這個Realflow的外掛有個缺點就是它必須要在一個cube的範圍內產生力場,類似FumeFX那樣。以下提供設置所需要的資訊,包括Scale設置,輸出Particle Flow成Binary的粒子序列檔。

Quantum Force運作原理:
Quantum Force為什麼這個強大是有個根本的原因,它不是可以拿來製作特定的效果,但是可以根據你的需求產生特殊的效果。Quantum Force是根據粒子或是其他物件來產生力場, 讓你可以自行決定力場的位置。 Quantum Force可以提供前所未有的控制力, 你可以自行創建你想要的向量場。

Quantum Force可以採用了叫做grid based memory technology 網格記憶技術, 讓每個cell能夠記憶力場資訊,當有個粒子穿過時,能夠持續地讓力場停留在那個cell中 你也可以設定衰減 任何新的速度都會合併到cell中 然後混合不同的速度,所以你必須要設定一個cube作為cell的範圍(譯者注:類似FumeFX那樣的網格範圍) 當力場的物理參數設定好,你還需要載入binary loader物件,裡面有3ds max來的Particle Flow的粒子,可以提供向量資訊。這些向量能夠影響流體的運動。Quantum Force可以幫助你產生你以前來也沒想過的效果。我們認為這是市場上最強大的Realflow外掛!

Resolution 解析度
代表了cell的數目,越高就會越精確的力場,但計算時間會變長。 數值50很適合剛開始的時候使用,當需要的時候你可以提高數值。

50 x 50 x 50 = 125,000 Grid Cells

力場的類型:
1. Accelerate加速
binary粒子的向量會用來加速目標粒子

2. Push 推力
並不會加速目標粒子,當接觸到粒子,只會推動它。只有當binary接觸到時目標粒子才會被推動,當沒接觸時,就不會影響目標粒子。

3. Pull 拉力
binary粒子會給予目標粒子速度,然後持續地牽引。當你使用Drag Force時這個效果會減低。

4. Attract 吸引力
 binary粒子會吸引目標粒子

5. Heat 加熱
會加熱目標粒子

6. True Heat 真實加熱
會加熱目標粒子,且會忽略grid cells

力場的行為:
Range範圍:
這個參數讓你隨機化力場 ,可以產生更自然寫實的效果

Range Factor Variation範圍因子隨機化
讓你根據x個frame隨機化

Falloff衰減
1代表線性衰減
10代表數值變強,到最末端時才減到最小
0.1 代表衰減的很快

Decay強度衰減
這個數值代表了向量場的衰減程度
0代表沒有衰減
1代表完全衰減。當binary穿越過下個cell時,不會把能量留下來



自3ds max輸出Particle Flow成為Binary粒子時:
Padding Size設定為0
File Frame Format設定為 name_#.ext

輸出名稱的類型一定要設定正確 否則導入到Realflow中會讀不到

3Ds max 與Realflow的尺度設置:
如果你希望RF中的參數維持預設的1, 那麼你的3DS MAX的單位就要設定為metric-meters, system unit設定為1unit=1meter, 將grid and snap settings的home grid設定為1m。這樣就可以了!

官方教學影片:



[相關資訊]

2012/11/03

Realflow 2012 細節表現重要參數(一)



編譯: Hammer Chen

Polygon size 多邊形的大小
這是關於整個流體表面最重要的參數,因為會影響到流體最終大小。越小的數值會產生越高解析度,越多的多邊形。越高的解析度,就能顯示越多細節。


請注意!流體的圓邊或是厚重的邊界無法用縮小多邊形的大小來解決。如果你希望產生比較薄的流體,你應該要調整Tension,filter等參數。

Resolution 解析度
增加這個參數你可以提昇粒子的數目,所以這也是個重要參數。解析度跟場景的尺度,發射器的尺度有關。但它也會影響流體的質量,所以也受到密度Density參數所影響。預設值為1.0 意思是在1 x 1 x 1的單位體積內填滿1,000顆粒子,這時質量剛剛好就是1,000 kg。換句話說,如果你把解析度提昇,個別的粒子質量就會隨之下降。你可以到Statistics > Particle mass查看粒子質量。

當你提昇“Resolution”解析度時,粒子的質量會明顯地下降,所以這時候你就必須要提昇Density密度,才能讓粒子的質量維持在1.0。 這是很重要的觀念。

Interpolation 差補法
有時候你可以不需要整個場景重新模擬就可以提昇場景的粒子數目。這個功能讓你可以產生更多粒子,根據現有快取的BIN file序列檔產生,但是不完全只是這樣,當初設計的個參數的目的是要當解析度低的frame會停住,然後調整到高的解析度,然後再進行計算。

Realflow會分析流體,然後會把新的粒子放在正確的空間位置,新的粒子並不只是填滿間隔而已,這些新的粒子會滿足流體力學方程式。 RealFlow提供三種差補選項: “None”、“Local” 與 “Global”。
由左至右: None,Local,Global


“Local”會在現有的流體雲中添加新的粒子,精確度很高。請記住還是有可能有些粒子無法填入。用這種補插法的優點是流體能夠精確地維持原本的形狀。

“Global” 是當你不需要煩惱流體原本的形狀使用的,新的粒子的位置會有比較大的模糊空間(比較不精確) 讓邊界比較模糊。這很適合大量流體,比方說水槽中的水。

另外一點很重要,是差補選項與流體/物件之間的交互作用,當流體很接近物件時,新的粒子可能會出現在物件的內部。 RealFlow不會檢查補差粒子與物件的碰撞,只會檢查流體與物件的碰撞。


“MIN substeps”最小的substeps
 增加這個數值模擬時間會變長,但是可以提昇精確度,解決不穩定的問題。當你發現有不穩定的問題時,你可以將MIN substeps提高至5~10左右,如果還是有問題,可以再稍微增加這個數值。

[相關資訊]
The Science of Fluid Sims流體模擬背後的科學

RealFlow重要的Daemon參數介紹

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裡面, 讓導演可以創造前所未有的寫實度與複雜度.

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

[相關資訊]