2010年8月10日 星期二

Anti-aliasing 方法 (supersampling ; area sampling ; weighted ; unweighted)

資料來源 : 名為 " Computer Graphics principles and practice 2nd edition in C " 一書, page 620, 可在 "3d 相關電子書" folder 內找到..

..就是改變 pixel 顏色顯示的計算方式, i.e. 增加 sample point 的數目, 然後平均地計算出該 pixel 的顏色值, 亦即是所謂的 supersampling , 例如在某 3d software 內輸出一幅 800 x 600 的圖, 還未啟動 supersampling 功能之前, 每一個 pixel 只會用一個 sample point 來計算該 pixel 的顏色值(通常是位於 pixel 的 center), 這種計算方式亦稱為 point sampling...
....當啟動 supersampling 之後, 該 software 會先將輸出圖片的解像度增大兩倍成為 1600 x 1200 (也可增大為 3倍, 4倍, 5倍...如此類推, 視乎不同的設定已定, 亦即是 modo 內名為 antialiasing 欄位內所設定的數值, 待証實), 然後將 4 個 pixel 的顏色結合為一個 pixel (利用 4 個 pixels 的顏色值平均地計算出該 pixel 的顏色), 如此類推地將解像度變番做 800 x 600 (這做法便等同將 pixel 界開為多個 sample points, 待証實),  將多個 pixels 合併為一個 pixel 的顏色計算方式亦稱為 area sampling, 當中又可分為 weighted 及 unweighted 兩種..., 
.....unweighted area sampling 是計算 sample points 顏色平均值時, 無論 sample points 是位於中間或邊位, 其計算強度完全相同, 計算方法就是將所有 samples 的顏色值相加再除以 sample 數目, 而 weighted area sampling 的 sample 顏色計算強度會視乎其位置而有所不同, 通常越接近 pixel 中心的 sample, 其強度便越大, 計算方法是先將每一個 sample 的顏色值乘以強度, 然後才加起來除以 sample 的數目....
.....3D software 會提供不同方式的 weighted/unweighted sampling 給你選擇, 亦即是所謂的 antialiasing filters, 例如 box filter 便屬於 weighted, 而 gaussian filter 則屬於 unweighted, 其中一個好處是令 animation 移動畫面不會出現 flickering 現象 (p.621)

進行 supersampling 時其 pixel 內的 sample 排列方式有多種, 包括 ordered grid(或 regular grid), rotate grid, random, poisson disc, jitterred 等等 (參看 http://en.wikipedia.org/wiki/Supersampling), 但估計除了 ordered grid 外, 其餘的方式都只會用在顯示卡上, 因為顯示卡要實時用 hardware 產生 antialiasing 效果, 由於 hardware 能力有限, 所以便不能使用太高的 samples 數目, 否則便會拖慢顯示速度, 正由於 samples 數目很小(例如 2 x 2 = 4 個 samples), 若採用一般的 ordered grid  方式的話, 由於其 samples 排列得太有規律而令效果強差人意, 於是便發明了其他的 samples 排列方式, 另外亦估計大多數的 3d software 都採用 ordered grid 排列方法, 因為其原理較簡單易用, 至於其排列太規律這問題, 只需將 samples 數目大幅提高便可解決

沒有留言:

張貼留言