2011/10/07

CG Taiwaner網站流量統計與專訪


CG Taiwaner台灣人玩動畫是一個已經經營五年的網站. 對於一個經營小眾主題的部落格來說, 怎樣的流量數字才可稱為優秀? 尤其以3DCG為主題的網站, 每天有多少人瀏覽才算是熱門呢? 站長今天就充當記者, 用自問自答(笑)的方式來談流量統計數字與理念:

站長你好, 請問你網站目前每天大概有多少人瀏覽?
每天大概有400人. 全盛時期有到每天700人左右.

你所謂的瀏覽人次, 該不會是刷新一次就算一次瀏覽吧?
我們是用Sitemeter做統計. 基本上它是用IP來計算人次. 如果排除掉站長自己每天一直看, 加上有變動IP的訪客, 所以實際訪客數據還需要下修. 但是基本上不會差太遠( 應該吧~)

那, 這些人大概花多少時間在你網站上?
大概2分30秒吧. 根據Sitemeter數據, 有些人會待到40分鐘以上, 但那是極少數.

兩分多鐘啊! 這麼短! 這樣對網站經營上有什麼策略上要因應?
每個訪客臨幸本站的時間大約在3分鐘以內會完成. 就影片來說, 也不建議超過3分鐘. 就算是長時間的教學影片, 知名的TED演講所訂下的時間是18分鐘. 文章長度長的話也可以增加訪客的黏著度. 其實那些停留超過3分鐘的就代表真的對你文章有興趣, 只不過這些人大概只佔所有訪客的千分之幾而已!

如果我們要對3DCG相關的中文部落格訂流量高標, 你認為應該是多少?
每天800人, 每位停留4.5分鐘

來談談跟Blogger相關的指標, 請問你網站現在有多少followers (Friend Connect)?
135人, 這個成績自認相當不錯. 我們拿知名的遊戲產業評論網站銀狐 Silver Fox 的碎碎唸來說, followers則有94人.

Google Reader的訂閱者有幾人?
593人, 有些網站的Feed Burners訂閱者可達近2000位, 例如數位內容觀察站. 不過我沒辦法成功使用Feed Burners, 所以就沒有設定Feed Burner. 目前的統計數值還是透過Google Reader而已

你有使用Google Anylytics分析工具吧? 來談談你主要的流量來源.
搜尋引擎 46.6%
推薦連結 32.5%
直接流量 20.7%
由搜尋引擎而來的流量還不算少(46.6%), 對於一個經營5年的部落格來說, 這好處是不太需要去打廣告, 也不太需要常常更新內容就會有客人上門.

你說你的推薦連結有達到32.5%? 到底是哪些網站在挺你?
cgtutorials其實是我自己去貼連結的. maxuser, grabc4d也是. 對於網站經營, 一開始的時候自己去打廣告是必要手段. facebook的流量大部分都是網友幫我推薦的, 感謝大家相挺.

整體而言, 你的流量來源是?
如上圖, google, yahoo, cgtutorials, maxuser, grabc4d...這些. 還有FB

大家用搜尋引擎(比方說Google) 都是怎樣連到你網站的? 他們打什麼關鍵字?
知道我網站的人就直接用台灣人玩動畫 或是 cg taiwaner. 其他像是3ds max最新版本2012, 2011也都很重要. 外掛網站跟外掛網這兩個關鍵字比較特別啦! 那是遊戲玩家在找作弊的外掛不小心連到我網站的 ,所以跳出率很高(笑). Vray也很重要. 這樣你就知道經銷商什麼軟體比較有銷路了吧~

我知道你有靠網站的廣告賺點外快, 請問你adsense的關鍵字收益排行榜大概是怎樣?
不能給你實際的金額, 不過你可以看看前十大賺錢關鍵字.

網友到底最喜歡看你哪幾篇文章啊?
Normal map, 3ds max的外掛, 或是vray的全局照明...等等. Tutorial精選文是我後來新增的目錄頁. 這些是很重要的資料, 這樣我可以知道哪些文章可以"熱賣" 或者網友喜歡怎樣型態的文章, 可以最為我日後發文的參考.

可否推薦台灣的五個3DCG相關的中文部落格?
目前只想到這五個, 但相信還有很多不錯的站. 我覺得要持續更新, 有自己的想法, 內容豐富是最重要的~

對台灣部落客經營者有什麼建議?
Content is the king 內容第一, 持續更新吧, 大膽地記錄自己的想法!

很感謝你這次參與自問自答的訪談, 再見!


[隨選文章]

2011/10/03

The Science of Fluid Sims流體模擬背後的科學

通常像這樣的文章沒十天, 半個月很難全部翻完. 一方面時間拖的太長, 另外一方面排擠掉其他好文的翻譯機會. 這樣很可惜. 也因為如此, 作者決定要提供另外一種的翻譯模式---改用讀書心得的方式呈現. 也就是說把每段的大意讀通, 消化了以後再用簡短的文字表現出來.

記得大學時代教授曾經講過:來不及看完所有的原文書嗎? 那就把每張附圖的意思搞懂就好了. 看不懂整段的文字段落嗎? 那就把文章的第一句跟最後一句搞懂就好了. 很簡單的20/80法則, 卻也十分有效!

這篇介紹流體模擬會遇到的狀況, 主要以Exotic Matter的Naiad流體軟體作為說明.

----以下為心得與編譯----
作者:Mike Seymour

前言
流體的運算是最耗電腦運算資源的, 但是對於視覺特效來說十分重要. 流體所指的不單單只是液體而已, 還包含了火焰,, 煙霧, 氣體等. 而煙霧跟液體最大的差別在於, 液體會有固定的體積, 氣體則不是. 流體的這個概念不僅僅被應用在視覺上, 在科學領域裡面, 用電腦輔助流體的研究簡稱CFD. 60年代, 被廣泛應用在氣象預報, 洋流, 飛機動力學(這些都對經濟有很大的影響).

Weta Digital在X-men電影裡面的流體特效

Framestore為納尼亞傳奇: 黎明行者號製作的視覺特效

基本概念
流體模擬主要分常兩種方式: 早期是把流體當成一個大平面 (例如海洋); 後來才有會計算到體積(Volume)的模式, 例如倒水杯, 或是大水衝到街道裡面. 這種模式必須要考量以下條件:
  • 質量守恆. 基本上水不會在模擬的過程中平白消失
  • 動量, 或是能量守恆
  • 體積守恆, 不可壓縮的流體. 真實的世界裡面, 水是可以被壓縮的, 但是如果假定水不可壓縮, 那計算公式變會簡單許多.
  • 流動加速度(connective acceleration) 空間會控制流體的加速度, 例如當水流出水管的時候.
  • 流體主要受到兩種力: 一個是重力, 另外是流體本身的壓力
  • 基本上會忽略黏著度
  • 邊界的條件(boundary conditions)這是流體計算很重要的關鍵
流體模擬主要就是要解算Navier-Stokes方程式:是一組方程式用來描述不同類型的流體, 這個方程式已經流傳幾百年了. Navier Stokes方程式的解算結果並不是單一個簡單數字, 例如42. 而是一組複雜的向量場. Navier Stokes掌控的不是位置, 而是速度. 基本上這個方程式就好像把牛頓第二運動定律應用到流體上面 也就是說F=ma. 這個方程式最後的解是速度場(velocity field)或是流場(flow field).用來描述流體在特定點的移動距離與時間. 一旦速度場被解出來, 就可以把流速或是阻力也推算出來.


以下是簡化版的Navier-Stokes公式
用大家可以理解的方式來解釋一下:

加速度+某東西+在壓力與密度的改變=本體的力+動態的黏度

但是假定流體是不可壓縮的話 黏度的計算就可以被忽略

加速度+0+在壓力與密度的改變=本體的力+0

整理一下公式, 會得到:

加速度=本體的力-壓力與密度的變化

而密度又等於質量除以體積, 壓力的改變又與體積有關, 因此:

流體的某一點的加速度=重力(外力)-壓力或是密度的改變, 也因此流體的加速度就與他所受到的力相關.

這樣的公式要怎樣實際導入到流體軟體裡面呢?
如果直接把公式寫成程式語言很簡單, 但是實際在計算的時候需要考量產業需求, 電腦運算時間. 寫實度往往必須跟速度達到平衡. 因此實際上需要很多偷步的技巧才能滿足不同流體狀況. 其中一種偷步技巧是Surface Tracking Euler method. 他是用height map來控制流體表面, 但是忽略掉水面以下發生的事情.

某些軟體的解算法並不能滿足所有尺度, 從小尺度的倒酒杯 到大尺度翻滾海浪上的船.

某些則是數學公式上面有缺陷 ,會導致流體會隨著時間讓體積越來越小, 例如在測試<加勒比海盜神鬼奇航:幽靈海>裡面有一幕玻璃箱裝載了美人魚, 而Naiad則是解決了這方面的問題.

ILM製作加勒比海盜神鬼奇航:幽靈海的畫面

以下是關鍵技術讓你可以在合理的時間裡面計算出寫實的流體:
SPH(Smooth Particle Hydrodynamics)方法
是一種用Navier-Stokes的粒子系統, 模擬完後再把這些粒子變成polygon. 這種方式對於倒酒的流體特效很適合 ,但是對於如海水般大量流體就會有困難.

Weta在格列佛遊記使用Naiad

Volume GRID方法
只有表面的流體, 又被稱為Volume Fluids. 例如在Houdini裡面, 可以很有效率地描述海洋波浪的高度與頻率, 這種方法沒有粒子, 對於小尺度的倒酒效果不合適. 這種方法通成被稱為Euler法.

FLIP方法
FLIP解算法是粒子解算法與volume解算法兩種的混合, 加勒比海盜神鬼奇航:幽靈海 美人魚裝在玻璃牢籠裡面的流體, 就是用Naiad的 FLIP模擬出來的.

FLIP跟粒子或是SPH相比最大的優點在於, 每個frame需要計算公式的次數不需要這麼多, SPH解算法在計算的時候, 每個frame都要計算好幾次, 有點像是時間上的反鋸齒計算, 這樣的公式往往必須要解算10-100次才有可能得到好效,果 要不然很容易產生分子炸開的問題.

Houdini也提供三種解算模式, 包含了FLIP的方式. 針對Houdini 11 Side Effects 的資深數學家Jeff Lait說:
"當FLIP流體被解算的時候, 會暫時產生速度場, 粒子的速度場會被轉移到grid裡面. 用來處理流體的彈射方向 ,這樣可以避免粒子重疊, 也可以避免它們都往同一個方向移動. FLIP流體的另外一個優點是不同的流體可以疊在一起, 不會影響到系統的穩定度. SPH法當兩個粒子很靠近的時候很容易就炸飛, 對於FLIP來說, 你可以添加新的粒子到流體裡面, 例如石頭丟到水裡面飛濺起來的分子"

Naiad案例分享
Exotic Matter公司的Naiad流體軟體用的方法是PIC-FLIP, deFLIP 甚至更先進, 未發表的方法. Exotic Matter公司的 CEO--- Marcus Nordenstam先生做了以下解釋:
"FLIP用了新的方法來改善以粒子呈現流體的計算方式, 在每次的模擬, 我們會從粒子產生grid, 把粒子的速度與表面資訊轉移到grid上面, 然後壓力會透過grid來計算, 而把計算的結果更新到粒子身上, 然後粒子再把新的速度轉移到grid上面, 如此計算稱為一次的step (譯者註:反覆的跑這樣的流程可以算出很寫實的流體).


Naiad Scene Test from slayerk on Vimeo.
問: Naiads能允許添加新的粒子嗎? 例如當石頭丟到水裡濺起水花.
答:可以. 有很多發射的operators可以做到這件事, 不論這是一級流體或是二級流體都可以.

問: Naiad的精度到多少? 你認為還要花很多時間開發才能得到好的精度嗎?
答:Naiad的精度幾乎是一等一的. 是目前的尖端科技, 如果是工程用的流體軟體價格是Naiad的十倍, 能達到最棒的精度. Naiad還可以同時計算剛體與流體, 而大部分的流體模擬軟體都是把剛體與流體分開計算的, 這會影響到細節與精度.

另外一個重點是細節與解析度Naiad最著名的就是提供大量的細節, 即便是解析度很粗糙.Naiad不是用傳統的方式調整解析度, 它不是靠單純固定大小的細胞--或是稱voxel來計算的. 而是以動態的 自適應的方式來處理. 因此, Naiad的流體不會侷限在某個框框裡面計算, 這要歸功於Naiad’獨特的3D tiling系統.

問:有沒有可能靠一種方式就能計算所有尺度的流體呢?
答:Navier-Stokes方程式可以應用到分子般大小的尺度都可以, 也可以適用於大尺度上面, 所以物理上方程式都是通的, 唯一的差別是, 在不同尺度上面, 某些方程式變得比較重要, 例如在小尺度的世界裡面, 表面張力的影響很大; 但是大尺度裡面, 表面張力就可以忽略.

用Naiad模擬大象跑過黏稠的泥沼(要觀看影片影點這裡, 或是download

問: 在做需要計算黏度的專案的時候, 要考慮到什麼?
答:Naiad會計算黏度, 不同於其他軟體Naiad會分別計算速度的向量, 因此結果會更精確, 也因此Naiad算出來的黏稠流體會有寫實的纏繞效果.

從用戶的角度來看, Naiad調整黏度很容易使用. 甚至還可以用3D材質來控制黏度的變化, 同樣的觀念也可以用來控制流體的密度.


Naiad density viscosity RND from Igor Zanic on Vimeo.
問:Naiad可以怎樣整合到工作流程裡面? 要怎要輸出到Houdini?
答:沒有預設的輸出. 但提供裡一個圖表, 有點像是NUKE裡面合成的節點那樣. Naiad圖表般含了file operators ,可以讓你把資料快取到硬碟裡面, 你可以輸出成mesh, 也可以輸出成3D場的資料, 例如速度, 也可以輸出成粒子.

Naiad圖表裡面也有render operators. 目前只支援Solid Angle’s Arnold renderer , 而我們也有跟Chaos Group合作, 讓它支援使用V-Ray. 所以輸出的時候不只是可以輸出成mesh 甚至還可以算圖!

最常用的整合方式是透過我們的外掛軟體. 例如Maya 與Houdini的外掛. 例如你可以把動態的角色自Maya輸出, 輸入到Naiad, 計算流體模擬, 然後在把資料導回到Maya裡面.

問:關於當今流體方面的研究有趨緩嗎? 變得更加成熟?
答:當今大部分的研究都希望用最新的硬體架構讓計算更有效率, 但是對於多物理(multiphysics) 例如同時計算流體與軟體, 或是剛體, 這方面的研究還有很多要做.

問:我們如果用Naiad來算流體 速度會多快?
答:跟解析度有關. Naiad很穩定, 不管你計算的step有多少次. 如果step太少的話結果會過於平滑, 所以大部分的人會用多一點的粒子, 高解析度來計算出寫實的流體效果.

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

[相關文章]

2011/09/22

Volumebreaker與Rayfire的碎裂使用技巧


Cebas VolumebreakerRayfire這兩套外掛軟體現在都可以用modifier的方式套用到模型上產生碎裂. 先介紹使用上比較麻煩, 但功能強大的Volumebreaker:

A. Volumebreaker使用技巧
先談Density與Raster這兩個參數. 如上圖這兩個參數效用類似, 也最容易搞混. Raster是模型每片分割的最小距離, 但是這不代表最終的碎片就是這麼大, 它還受到Density---每個分割內的碎片數量所影響. 從實用的角度來看, 建議一開始時把Density設為500, 接著把Raster由數值大的慢慢調整到數值低的(例如由1到0.2).

Density與Raster只能調整出平均大小的碎片, 如果你要做根據撞擊點分割越細, 周圍碎片較大的話(例如子彈打中玻璃那樣)

所以就需要切換到Spherical Density, 想像子彈擊中窗戶, 中心比較密的地方稱為內圈, 外圍稱為外圈. 也就是Radius 1與Raduis 2要設定的數值. 同理, Density 2就是外圈的密度了. 所以可以參考Grid的大小作為Raduis數值的參考. 這樣, 很快就會試出適合的參數了!

當我們在簡單的模型(Box)測試好參數以後, 就可以複製Volumebreaker的modifier到花瓶上面. 接著調整Gizmo的位置, 控制子彈擊中花瓶的位置. 用這樣的方式, 很容易就達到想要的碎裂花紋.

如果玻璃有兩個擊中點呢?因為Volumebreaker是修改器, 所以只要套用兩個Volumebreaker, 移動Gizmo的位置, 如此, 你就可以有兩個擊中點了!

Volumebreaker也可以做出木條碎裂的效果, 很簡單, 只要縮放Gizmo. 把它縮放成長條狀. 這樣切出來的碎片就很像木條碎片了.


用VolumeBreaker切碎後, 跟Thinkingparticles整合的效果(vray2.0算圖)

更多的VB與TP整合效果(用mental ray算圖)

B. Rayfire的使用技巧
相當容易, 綠色點表示預定切割的碎片位置(預覽). 按下Fragment按鈕就會進行切割. 總共有Uniform(平均分割), Gaussian, Radial(環形), Cubic, Spherical等.

Radial預設的切割效果.

可以修改Radius(半徑)與Divergence(隨機方向), 很快地就可以調出不錯的子彈破窗碎裂的感覺了.

Gaussian的切割效果

Cubic的切割效果

[相關文章]

2011/08/20

Large scale smoke with Fumefx的設定技巧



Large scale smoke直譯為大尺度的煙霧, 指的就是像這些很濃很濃的煙霧, 或是爆炸含有火焰的那種煙霧. 這種煙霧在製作上面有些技巧, 過去也是困擾筆者許久. 這裡分享一下FumeFX使用心得並作為日後使用的參數筆記.

先來回顧一下之前失敗的經驗吧!
首先看用FumFX的測試, 通常會做出來像這樣, 絲狀的煙霧感, 其實很容出來.

這是很認真要做出厚重的煙, 它可以一開始很厚重, 但是過了幾個frame後就又變回絲狀感.

拿別人調好的Large scale smoke場景來用, 如果直接用的話當然可以做出來(但是要算很久), 自己降解析度的結果也就像這樣, 不甚理想.

如果不是像像絲狀的煙, 就會變得像棉花球的樣子, 真是兩個極端阿~

如果是像這樣的話, 則是完全失敗的, 完全沒有厚重感. 這是初學者幼稚園般的程度XD. 不過話說回來, 某些狀況這種輕煙十分合適.

接著, 筆者就把希望寄託在同家公司的產品---Afterburn身上, 以下是測試效果:

Afterburn的某些參數特性, 其實可以調出相當不錯的效果, 比說說這個地雷爆炸的煙.

Afterburn的缺點是動態會比較不自然, 畢竟它的動態是靠粒子來驅動的. 用在靜態圖像有兼顧速度與品質的優勢.

細節畢竟是有, 但是還是不很自然

像這種濃煙效果, 用Afterburn頗為合適

後來ChaosGroup公司推出了新的煙霧火焰外掛Phoenix FD, 筆者跳下去給它嘗試一下:
剛開始對參數不熟悉, 請問這是發霉的香菇嗎?

失敗的核爆效果

嗯, 有那麼一點樣子了, Phoenix FD有潛力

用Phoenix FD做濃煙效果, 跟FumeFX的感覺不太一樣, 有點類似Afterburn的僵硬感.

厚重有達到, 還是很僵硬阿

如果煙弄的比較淡, 它的細節就沒有出來.


不適合用在濃煙, 用在爆破卻十分合適, 讚喔~ 而且是跟VRay同一家公司出品, 相容性很高.

跟FumeFX相比, 因為Phoenix FD 有一部分的細節要靠Displacement, 所以往往會渲染很久.

測試的後期, 效果已經相當理想了!


這樣的效果已經可以稱得上是Large scale smoke的要求了!

做一點不同的變化



最後來個橫向煙霧的效果, 細節, 寫實度都有達到了, 唯一缺點是, 這張渲染要八分鐘呀.

直到最近由友人Slayer提供做好的Large scale smoke場景檔, 經過筆者最佳化過後, 最後算出這樣的效果:


(鋼彈模型由阿德提供)

-----看完了以上艱辛的測試過程, 我們進入正題-----

怎樣做出厚重又帶有細節的濃煙?

打開3ds max首先要注意的就是尺度, 既然是大尺度一定是以公尺為範圍. 尺度不對自然就很難模擬出來想要的效果.

再來直接進入到FumeFX的設定

勾選Adaptive, 調高Sensitivity, 這樣會比較節省cache大小. Exporting Channels有Fuel與Smoke. 這樣的解析度, 600張frame總共要花約6個小時. 平均一個小時算100張. 如果算動畫要模擬的話, 大概就要晚上睡覺的時候來算吧!

說到Simulation的部份, 把Maximum iteration 降到100. Time Scale與Gravity都調整到不合平常物理的高數值. 之前的"FumeFX製作煙霧參數使用技巧"有提到, 這兩個數值要提高, 細節才比較容易表現出來. 要注意的是Gravity這邊如果我們希望煙霧往橫向移動, 要另外添加FumeFX Gravity Vector才能控制往橫向移動. Vorticity則是渦度, 數值越高的話, 會產生比較多細節與絲狀的煙, 注意數值不能為1, 否則它會變到十分的粉狀.

Fuel燃料的模擬, 這邊箭頭所指是所有設定的最關鍵的參數. 簡單的說就是不要讓發射器(emitter)一開始就發射smoke, 而是讓燃料(fuel)達到它的燃點(Ignition), 經過燃燒(Burn)後, 再產生煙霧. 這是整個Large Scale Smoke設定的最重要觀念. 而這燒燃燃料隨之產生的煙濃度是由Smoke Density密度所決定, 設為25(高一點才會有濃煙的效果).

Smoke的 擴散(Diffusion)設為0, 目的是讓煙霧在飄散的過程時不要過為分散.

FumeFX算圖的部分
煙霧的不透明度(Opacity)設定為2.48, 曲線則是如圖設定. 勾選Cast Shadow與Receive Shadow. 把煙的顏色設為灰色(

Lighting照明設定
因為我都是用Scaline來算煙霧(因為比較快), 所以如果要有間接照明的話就要用補光的方式造假出來. 主光打一盞偏橘的Direct Light, 強度設為2; 另外一盞補光是Omni light顏色為淡藍色, 強度為0.3.

主光Directional Light設定

補光Omni Light設定

如圖, 補光就是要彌補主光照不到的陰暗面.

上面的算圖設定是針對沒有火焰(fire)的狀況, 如果有渲染火的部份, 筆者可能會用Mental Ray來處理, 因為MR會根據火焰來產生全局光照(GI)效果, 效果會比較寫實.

如果要渲染火焰, 把Fire選項打溝外, Opacity設定為0.305, 漸層設定為橘色, 暗紅色, 黑色, 黑色.

火焰透過煙霧的透光效果則是可以用Multiple Scattering的參數來處理
Smoke Strength設為0.1. Falloff越小則透光越明顯.

最後, Emitter的設定可以參考以下

而是實際在用Scaline算圖, 解析度為1280X720, 450個frame耗費了多少時間算圖呢?才花了75分鐘. 換句話說一個frame平均才花10秒而已, 夠快吧!

以上, 各位可以也來試試看~

------設定解說完畢-------