Disclaimer: 這是從我兩年半前寫的修課心得改來的,這門課
現在有可能跟那時候不太一樣,請注意
★ 本文是否可提供其他同學轉作其他非營利用途?(須保留原作者 ID)
(是/否/其他條件):是
★ 若滿分五分,則私心推薦幾分? 5
★ 課程大綱
課程網(去年):
http://www.csie.ntu.edu.tw/~cyy/courses/rendering/11fall/
課程網(今年):
http://www.csie.ntu.edu.tw/~cyy/courses/rendering/12fall/
這門課俗稱rendering,rendering就是一種把3D的場景描述變成
2D的圖片或影片的技術,中間牽扯到眼睛看得到那些平面,光和
物體之間的互動之類。這門課主要專注在physical-based rendering
,也就是我們真的會去用物理的方法模擬光的行為,PBR技術中
的翹楚是ray tracing,也是這門課的主角
有興趣的同學可以看看課程網的overview投影片,應該講得滿詳
細的(也許太詳細了:p)
★ 上課方式(投影片或是板書、老師教學風格、是否英語授課)
整門課會照著Physically Based Rendering: From Theory to
Implementation這本書走(會把整本一千頁講個80~90%),並且
會去trace書中附的一個非常完整的renderer pbrt,偶爾補充一
些最近幾年相關的研究。這本書在這個領域非常有名,我也覺得
這是我上大學以來碰過寫得最精美的一本教科書之一,可惜它也
是天殺的貴(印象中是約兩千元台幣),要買的人請斟酌錢包。沒
有書也可以看精美的投影片,配合trace pbrt的code應該還是過
得去
老師的授課風格有上過老師課的人應該都滿清楚的。老師講話速
度滿快的,但我覺得他常能把事情整理得很有條理,對弄清楚一
些概念很有幫助。另外老師冷面笑匠的功力也頗強,常常可以把
大家逗笑
★ 評分標準
從課程網站抄來的
programming assignments X 3 (60%)
class participation (5%)
final project (35%)
因為沒有公布其他人的分數,所以我也不清楚給分是鬆還是嚴(而
且修課當時還沒有等第制)。我猜只要作業"有做完",project看
起來有個樣子,應該就有不錯的分數了
★ 作業內容及方式
可以參考課程網頁的作業區,我猜換作業的機率不高
作業都是要去擴充上面提到的那個pbrt renderer,renderer本身
應該有超過一萬行(in C++),所以一開始可能要花時間trace一下
作業一和三都和我當時修課的時候不一樣了,不過作業二是一樣
的。作為loading的參考,當時作業二花的時間大約是四到五天(
每天花多少時間已經不記得了,應該不會超過八小時),主要時間
都花在debug,graphics的東西如果有一個地方寫錯,output就是
一張爛圖,也沒辦法知道錯在哪。所以要自己想辦法dump一些資
訊出來看,這部分就需要一點經驗或摸索
final project很自由,只要跟rendering有關係都可以做,所以
我覺得就是誠意問題。跟做研究一樣,選題目的時候要注意不要
選太簡單或太難的這樣,最好留多一點時間survey
★ 考試風格及題型
沒有考試^_^
★ 其它(會不會點名、需要什麼基礎、老師的個性)
老師的課都不會點名,這門課也沒有考試,所以理論上一學期都
沒有看過老師長什麼樣子也能過
老師會說這門課是進階課程,最好有電腦圖學的基礎,不過我個
人覺得可有可無。有當然是有一點幫助,老師上課基本上是當學
生沒有相關背景在講的,雖然有時候會不小心脫口說出一些專有
名詞,不過聽不懂應該也不會怎樣XD
數學方面大概會用到一些簡單的線代(高中程度),簡單的微積
分(大一程度),普通簡單的機率(大二程度),大部分的人應
該都沒什麼問題
再來就是要有基本的coding能力,不懂C++沒關係,但是要懂OO
不然寫作業應該很痛苦
★ 個人修課心得及總結
這門課還滿冷門的,所以就想來推廣一下。我不知道大家是因為
太難還是因為沒有興趣所以才卻步,如果是覺得太難,我是覺得
這門課沒有像老師和其他同學恐嚇得那麼恐怖,看過一些國外的
類似課程之後我感覺這門課在這些課程裡面loading算小的,
Cornell, Stanford的學生做得到,台大的學生應該也ok吧:p
被當不要找我
如果是興趣問題就比較沒辦法,不過這門課因為會用到一個不小
的軟體,我覺得在訓練軟體工程能力方面也有不小幫助,很多人
都認為寫一個ray tracer是一個訓練coding能力很好的方法,有
名的graphics researcher魏立一也這樣寫過:
ray tracing is a superb training for coding and software
engineering; it is inherently modular and suitable for
object oriented programming, and the amount of coding is
non-trivial (actually, quite hefty for new-comers, especially
if you code from scratch)
http://blog.liyiwei.org/?p=494
就這樣,修課有問題也可以找我,不過不要找我debug XD