學習計算機圖形學,有哪些相關資料與書籍值得推薦?
最近嘗試用canvas搭建遊戲框架,但是碰到了很多問題,比如透視的角度,比如繪製物體表面紋理等等,然後查閱資料了解到這是計算機圖形學裡面的東西,想進一步了解下相關的知識,請問可以看什麼書呢?
哈哈,第一次被邀請~ 認真回答!
個人推薦,三本書,看完,基本你就有能力自行選擇了~
1. 3D數學基礎, 中英文版都有http://www.ppurl.com/2010/10/3d%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80%E5%9B%BE%E5%BD%A2%E4%B8%8E%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91.html這本回顧一下數學知識,然後會講解一些圖形學基礎概念,比較通俗~ 好讀
2. shaders for game programmer artist 只有英文版
http://www.ppurl.com/2010/05/shaders-for-game-programmers-and-artists.html 這本是用render monkey,教你寫shader,主要提升興趣,然後可以嘗試熟悉一些光照演算法和矩陣變換。3. Real-time Rendering 實時計算機圖形學 中英文版都有
http://www.ppurl.com/2008/12/real-time-rendering-third-edition.html 皮皮這裡只有英文版,可以自己找中文版看。經過前兩本書的鋪墊,你看這本書的時候,很多問題會得到解答,經常會有「噢,是這麼回事的感嘆」。最後,可以繼續搭引擎架構了,然後,你應該有能力繼續自行選擇方向了~
希望回答對你有用。Ravi Ramamoorthi 是計算機圖形學的大牛,他在網上開了門《計算機圖形學導論》的課比較適合入門(貌似比較符合你的需求)。課程是免費又不長,就四個單元吧~課程包括:
- 數學基礎
- 2D變換
- OpenGL(入門、著色、打光、運動)
- 光線追蹤(怎麼將3D空間里的圖形投影至2D)
因為是大牛的課程~所以略難~不過只要跟著做練習總是有收穫的!
這個課程的地址:http://www.xuetangx.com/courses/UC_BerkeleyX/CS_184_1x/_/about如今dx和opengl已經沒有固定管線,也就是說光照啊陰影啊材質等這些東西得全部寫進shader,也就是說其實你是在用shader寫一個弱智的「軟體」渲染器——所以先從Physical Based Ray Tracing看起,總是沒錯的。
等你學會了基本的原理,把基本的效果都做出來之後,你才會開始走上realtime rending的那些黑暗的奇技淫巧的世界。其實這裡的一些著名的trick,譬如shadow mapping啊,湖面的折射啊,焦散什麼的,都是從ray tracing的演算法出發魔改而來的。你不能直接照搬ray tracing的演算法,因為他是強烈依賴「不整齊」的遞歸的,就現在的硬體水平來看,還不適合用來做實時渲染。關於這些我以前還看過GPU Gems IIIIII,不知道現在還流行不流行。
渲染方面的話,自薦一下我正在寫的《全局光照技術:從離線到實時渲染》,該書目前正在摩點網眾籌預售,歡迎前往圍觀:《全局光照技術》出版在即!揭秘工業中最前沿的渲染技術-發現項目-摩點會想
誠如知乎大V如文刀秋二等說明的一樣,學習渲染最好是從離線的光線追蹤演算法開始,然後慢慢過渡到實時渲染,因為光線追蹤的形式更加簡潔,有利於將焦點集中於首先理解光照傳輸的過程,而不是糾纏於例如圖形管線,CPU宿主程序與GPU圖形介面的交互等;通過離線到實時的方向,你可以更好地理解實時渲染中的諸多概念,因為它們都是對傳統渲染方程在某些方面和程度上的近似處理,只有理解了光照傳輸的基本過程,才能明白為什麼要採用這樣的近似方法。所以《全局光照技術》這本圖書同時包含離線和實時渲染的內容,並從離線到實時的渲染逐步分析,讓讀者明白光照傳輸會遇到的各種困難,以及對這些困難不同方面和不同思路的近似處理。
《全局光照技術》介紹了當前業界比較流行的約10種離線/實時全局光照技術,例如路徑追蹤,光子映射,梅特波利斯光照傳輸,輻射度方法,即時輻射度,預計算輻射傳輸,輻射照度/亮度緩存,光照傳播體,基於體素和基於距離場的全局光照技術。它不光介紹各種技術的概念及思路,更深入揭示這些方法之間的相互聯繫,要知道,系統學習和理解一些方法的核心之一就是理解它們之間的聯繫。
此外,很顯然圖形學涉及到非常多的數學知識,這是一般初學者感到最頭疼的地方,一方面這些數學知識對理解渲染概念及方法是必須的,另一方面很多工程師不願意去花很多時間複習這些繁瑣的數學基礎知識。鑒於此,《全局光照技術》作出了兩點嘗試,首先,它還是涵蓋了大多數重要且必須了解的數學知識,如微積分,數值分析,蒙特卡洛方法,梅特波利斯演算法,概率統計,線性代數,傅里葉/小波分析,微分幾何/流形,幾何光學,數字信號分析,回歸分析,頻率域分析,有限元方法,模擬回火,迭代法等等;其次,在討論這些數學知識的時候,它將這些數學知識的複雜推理過程去掉,並用比較簡潔的語言講述這些數學知識的意義,使讀者既能夠理解該數學知識作為工具的原理,又能更深刻地理解這些圖形學方法的機制。如果您閱讀過岡薩雷斯 (Gonzalez.R.C.)的《數字圖像處理》,本書的數學知識介紹風格正是受此書的影響(該書也是我最喜歡的圖書之一),它使用比較簡潔精鍊的方式介紹相關的數學工具,使您幾乎不需要去進一步閱讀更專業的數學專著就可以理解這些方法背後的數學原理。
除了比較經典的路徑追蹤演算法,《全局光照技術》還覆蓋了截止2017年大量的行業中最前沿的渲染技術,例如VCM/UPS,降噪技術,頻率域分析,微分流形/幾何,梯度域渲染,基於光束的參與媒介渲染技術等等,這些都是近幾年離線渲染領域最前沿的方向和技術,被廣泛運用於最近皮克斯,迪士尼等動畫電影當中,使讀者能夠了解到最前沿的行業動態和趨勢。
《全局光照技術》耗時三年的創作時間,個人認為是一本非常用心的國產計算機圖形學圖書,希望能夠對各位讀者具有一定的幫助。
紅寶書:OpenGL編程指南計算機圖形學 人民郵電出版的
圖形學範圍很廣,而且水很深。你得先確定你要學多少,入多深的坑。
你提到的紋理啊,投影啊,屬於比較簡單的基礎,隨便看看一些講opengl或者dx的入門博客然後寫幾個樣例就可以搞清楚了。然後你要是還想再深入了解一些渲染原理的話,可以入手dx11/12的龍書或者opengl4.0的紅寶書啥的,把基本的gpu編程和渲染流程全學一遍,就差不多入門了。然後,如果你的程序,數學,架構這三樣基礎都練得差不多了,就可以看一些比較好用的論文抄特效,造引擎啥的了。代碼玩多了你就會越來越熟練。而且你要是學到這一步估計你知道的書啊,論文啊多了去了,什麼rtr,gpu精粹啥的也不需要我們給你推薦了。當然,如果你一心想搞科研,光上面這些還是不夠的,你得弄清楚並能夠推導整個渲染的前因後果,專註於各種領域的前沿知識,這玩意就估計是得搭上半輩子的事情了。
雖然我不知道你打算入多深的坑,不過直接推薦dx的龍書是沒啥錯的,從圖形學的角度來看dx和gl用起來幾乎是沒啥區別的。不過那倆新版龍書有點貴,可以考慮把電子檔列印下來desu........數字圖像處理 岡薩雷斯O"Reilly:學習OpenCV
milo大神的書單
易大師威武
百度搜 彭群生,鮑虎軍,計算機圖形學。
推薦閱讀:
※有哪些需要計算機技術,又和音樂相關的職業?
※如何評價2016年數學建模國賽?
※有哪些比較基礎的計算機書籍?
※chrome 主頁被劫持,每天首次打開chrome都會進入2345的界面,求助解決辦法?
※譚浩強《C語言程序設計》第三版怎麼樣?從零開始學會被帶偏嗎?