1.一個圖形愛好者的書架
原文地址:http://blog.csdn.net/nhsoft/archive/2004/06/23/22992.aspx
早幾天看到有人把自己在大學四年的書列了出來.招來一頓懷疑.我是開發(fā)圖形程序的.我現(xiàn)在也把我的書列出來.不怕大家懷疑吧.希望能有點啟示作用.
綠色的是我看完了的。紅色的是沒怎么看的。黃色的是看了一半以上的。
語言類:
C++ Programming Language (Special Edition).C++的圣經(jīng)級別的書.我只看原文的。不看翻譯的.對球教授的翻譯表示一定的保留意見.
Effictive/More Effictive C++.工程實踐的最佳經(jīng)驗書籍.
Inside C++ Object Model .好書.看完了。你對C++的理解會變的很深刻的。
設計模式 .好書.買了看就是了。別問我為什么啊。
More Excpetion C++ 和Effective C++有同工之處.
STL 源代碼破析。正在看的過程中。
STL 中文版 一本參考手冊。
Moden C++ Design 看完了這本書。我估計會吐血。但是還是要看。經(jīng)典啊,書的例子Loki的代碼
潭浩強的C程序設計。經(jīng)典。C教材里這本最好。不許大家B4他。
C++Template : 有人說翻譯的不好。我覺得還可以.
Python 語言入門。我拿來做游戲腳本用的。
Unix Shell編程。
算法和基礎類。
程序設計實踐 給你一個很好的經(jīng)驗.很薄的,去買來看看。
C++分形程序設計。當年給一個JJ做畢業(yè)設計。花了半個月看完的。
數(shù)據(jù)結(jié)構(gòu)(C++語言描述)影印版。好書,但是沒看完。教材來著的。
數(shù)據(jù)結(jié)構(gòu)(用面向?qū)ο蠓椒ㄅcC++描述)。清華出的。看完了。
人工智能 Nilson的書。看不懂。呵呵。
開發(fā)工具和平臺的書
Unix 環(huán)境高級編程 : 學Unix編程.就從這里開始吧.現(xiàn)在在看X-Window編程.可惜沒有介紹XLib的書.因為要用OpenGL.最好還是從XLib開始.痛苦.只能看Xlib.pdf
Unix 高級編程 : 我真不相信我能檢到這么一本好書.想買.但是沒錢.呵呵。
VC++技術內(nèi)幕,翻譯的好爛啊。不過當時我不知道。最后還是看完了。
Windows下的C語言編程。我的 Win32入門書籍。
Win32程序員指南,我的Win32提高書籍。10塊一本。呵呵。
Windows 核心編程。看完了這個。大家說我是個高手了。
深入淺出MFC. 看了一半后,我自己去看MFC的代碼了.
ATL 開發(fā)人員指南 沒怎么看.很實用的樣子.
COM 本質(zhì)論 .看完了大長見識,我就是看了他后,才知道接口的概念的.
ATL 本質(zhì)論 ,看了后讓我模板水平有不少提高.
Linux內(nèi)核編程 沒什么好說的。
X86的體系結(jié)構(gòu)和匯編:忘記了具體名字了。大概是這個名字.我的匯編知識都是從這里來的。只看了前面的部分
匯編語言程序設計: 錢曉捷主編.有介紹SSE和MMX的。很不錯哦。 也很便宜
應用程序調(diào)試技巧: 很經(jīng)典的調(diào)試書.Numega公司的工程師寫的.(出品SoftICE的那個公司).有些技巧只能用神奇來形容.
專業(yè)的圖形書
圖形開發(fā)人員指南 著名的黑皮書.我是懷著崇拜的心情收藏這本書的。John Carmack做的序.Micheal Abrash的書.偶像啊。
計算機圖形學 (清華大學)。爛書。不過也差不多看完了。現(xiàn)在在一個 MM手里。
圖形學(電子工業(yè)出版社)老外的書。不錯。正在看。
計算機圖形學算法基礎:經(jīng)典。沒看完。看了1/3了。翻了一遍。
計算機真實感圖形的算法基礎。國內(nèi)最好的圖形學的書。剛拿到。正在看。
非真實感計算機圖形學: 剛買到的.不是太有用。太學術了。
游戲編程精粹 1/2/3. 中文版。偶爾翻一兩篇不錯的。不過我要對著英文的看才看的懂。
OpenGL Red Book .中文版還可以.非讀不可.
OpenGL 超級寶典 比較好.很實用,對初學者很好.
3D Games Vol1 . 就是介紹Fly 3D 的書。看了一半了。很不錯。
Real-Time Rendering 1. 正在看。很好的書
Real-Time Rendering 2: 中文版和英文版都有:
CG 教程: 推薦你學好圖形學后再來看.
OpenGL Shading Languge : 看了前面的大半了。
GPU Gems : 剛買到的.花了我350大元.不過好看.
3D Math Primer For Computer Graphics and 3D Games. 數(shù)學書里就這本好一點了。
3D Game Engine Design 正在看。對著書寫自己的物理引擎。
ShaderX 2 Tricks . 沒看。剛拿到。經(jīng)典到不用介紹的程度了。
還有其他打印的資料無數(shù) :-)
其他的看似沒有用,其實最有用的書.
微積分: 高等教育出版社.
數(shù)學分析:上下冊.
理論力學: 上下冊
傅立葉變換與小波分析: 沒看明白
大學物理: 1-3 冊.
空氣動力學: 我的老本行.(偶學航空發(fā)動機滴)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2.白話說學計算機圖形學
一個很好的學習途徑就是國外大學開的CG的課程,standford,unc,unm,waterloo等等,等等,一堆大學,都可以下到課件,以及相關的論文,standford的“real time graphics architecture”可是kurt Akeley開的哦。
另外就是source code,包括mesa,standford的glsim,還有人用c sharp做的csgl等,也不少。這些東西很值得細細研究,只是很花時間啊。
我也是才學這方面的,不過我覺得方法上面還是top-down的方法好些,對一些東西,有感性認識了,再鉆下去會比較好。
【引言】
什么是計算機圖形學? 本文盡量避免給它做嚴格的定義,但是通常來說,計算機圖形學是數(shù)字圖象處理的逆過程,這只是一個不確切的定義,后面我們會看到,實際上,計算機圖形學、數(shù)字圖象處理和計算機視覺在很多地方的區(qū)別不是非常清晰的,很多概念是相通的。
計算機圖形學是用計算機來畫東西的學科,數(shù)字圖象處理是把外界獲得的圖象用計算機進行處理的學科。在法國,圖形圖象是一門課程。
如何學習計算機圖形學呢?除了計算機圖形學的基礎知識以外,你還需要有以下的知識,你懂的越多,當然做的越好。
* 英語, 你一定要把英語學好,如果你想學習計算機圖形學的話,盡量看英文的書籍和資料
* 數(shù)學, 計算機圖形學里面的數(shù)學用的比較多,,我們可以列舉一些常用的:
高等數(shù)學,數(shù)值分析,微分幾何,拓撲,概率, 插值理論,(偏)微分方程…
* 物理, 如果你要進行基于物理的建模,一些物理理論是要學習的:
力學(運動學,動力學,流體力學…),光學,有限元…
* 編程語言: C或C++是計算機圖形學最通用的‘普通話’,
* 數(shù)據(jù)結(jié)構(gòu): 你需要數(shù)據(jù)結(jié)構(gòu)來描述你的圖形對象,除了通用的鏈表、樹等數(shù)據(jù)結(jié)構(gòu)外,圖形學還有自己特殊的數(shù)據(jù)結(jié)構(gòu)
* 其他類別: 有的時候你需要其他學科的知識,根據(jù)你的需要去學習吧
上面列舉的不是你必須學習的東西,而是計算機圖形學可能會用到的東西,一定要記住,不要指望通過一本教材就學會計算機圖形學,它比你想象的要復雜的多。
【圖形學的問題】
每個學科都有自己學科的特定問題,圖形學要解決的是如何畫出圖來,得到需要的效果,當然這是圖形學最大的一個問題。
在開始學習計算機圖形學的時候,找一本簡單的書看,對計算機圖形學有個大概的認識,你就可以開始圖形學之旅了:
OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 1.4, Fourth Edition
OpenGL SuperBible (3rd Edition)
是比較好的學習計算機圖形學的入門教材,在練中去學,一開始就去啃Foley的
Computer Graphics: Principles and Practice, Second Edition in C
不是好主意,會看的一頭霧水,一本什么都講的書的結(jié)果往往是什么都沒講清楚。
當你把OpenGL的基本內(nèi)容掌握之后,你對圖形學就有了大概的了解了。
那么下面你可以來學習一下計算機圖形學的數(shù)據(jù)結(jié)構(gòu)和算法,下面的書比較適合:
Joseph O'Rourke 的Computational Geometry in C,書里面有C的源代碼,講述簡單,清晰,適合程序員學習。
總的來說,計算機圖形學涉及到2大部分:建模和渲染
(1)建模
你想畫一個東西,首先要有它的幾何模型,那么這個幾何模型從什么地方來呢?下面的書很不錯的:
Gerald Farin 的Curves and Surfaces for CAGD: A Practical Guide
這本書就有一點的難度了,呵呵,要努力看啊。這本書算是CAGD (計算機輔助幾何設計)的經(jīng)典圖書,CAGD方面的全貌,還有2本很好的講述曲面的書Bezier和Nurbs的書
Les A. Piegl, Wayne Tiller 的The Nurbs Book
書里面有NURBS曲線、曲面的程序偽代碼,很容易改成C的,書講的通俗、易懂,但是你要有耐心看的:)
《曲線與曲面的數(shù)學》
這本書是法國人寫的中文翻譯版,里面還有Bezie本人寫的序J,翻譯的很不錯的,看了你就掌握Bezier曲面技術了。
還有其他的一些造型技術,比如:
隱式曲面(Implicit Surface)的造型:
就是用函數(shù)形式為F( x ,y ,z ) = 0的曲面進行造型,這樣的造型技術適合描述動物器官一樣的肉乎乎的東西,有2本書推薦大家:
Jules Bloomenthal編輯的Introduction to Implicit Surfaces,是一本專著,講述了Implicit Surface建模型(Modeling),面片化(Polygonization),渲染(Rendering)的問題。
Luiz Velho 的 Implicit Objects Computer Graphics 也是一本專著,講述更新的一些進展。
細分曲面(Subdivision Surface)造型
當用NURBS做造型的時候,曲面拼接是復雜的問題,在動畫的時候,可能產(chǎn)生撕裂或者褶皺,Subdivision Surface用來解決這個問題。
Joe Warren的Subdivision Methods for Geometric Design: A Constructive Approach就是這方面的專著。
從實際物體中得到造型,現(xiàn)在的技術可以用三維掃描儀得到物體表面的點,然后根據(jù)這些點把物體的表面計算出來,稱為重建(Reconstruction),因為這些技術之在文章中論述,所以我們省略對它的描述。
在你的幾何模型做好之后,有一些問題需要對這個模型進一步處理,得到適合的模型,當面片很多的時候,或者模型很復雜的時候,需要對幾何模型進行簡化,才可以滿足一些實時繪制的需要,這個技術叫做層次細節(jié)(LOD-Level of Detail)。下面的書就是講這個的:
David Luebke編著的 Level of Detail for 3D Graphics
(2)渲染
有了模型,怎么把這個幾何模型畫出來呢?這個步驟就是渲染。
如果你看了上面的OpenGL的書,那么你就知道一些渲染的知識了,但是別高興的太早,OpenGL使用的是局部光照模型(Local Illumination Model)。Local illumination Model指的是在做渲染的時候只考慮光源和物體之間的相互作用,不考慮物體和物體之間的影響,所以OpenGL不支持陰影,一個(半)透明物體的效果,這些需要考慮物體之間的影響才可以實現(xiàn)。
(*OpenGL本身不支持,但是通過一些方法可以實現(xiàn)的,用Google搜索一下
Shadow Volume, OpenGL就找到答案。)
Global Illumination Model 這類模型考慮的就比較全。現(xiàn)在關于Global Illumination的技術有3大類,具體的技術就不在這里介紹了。
光線追蹤(Ray Tracing)
關于Ray Tracing的好書有2本:
Andrew Glassner 的An Introduction to Ray tracing
Glasser是圖形界的名人,這本書也是Ray Tracing的經(jīng)典
R. Keith Morley, Peter Shirley 的Realistic Ray Tracing, Second Edition
這本書第一版是偽代碼,第二版是C代碼。它的結(jié)構(gòu)不是很清楚,虎頭蛇尾的感覺。
輻射度(Radiosity)
關于Radiosity的好書有4本:
Michael Cohen 的Radiosity and Realistic Image Synthesis , Cohen獲得SIGGRAPH 1998計算機圖形學成就獎,他把Radiosity變成實際可用。
Francois X. Sillion的Radiosity and Global Illumination , Sillion是法國人,他的主要研究方向是Radiosity,這本書寫的很不錯的,非常清晰。
Philip Dutre 的新書Advanced Global Illumination ,看起來還不錯,剛拿到手,還沒看,呵呵,所以不好評價。
Ian Ashdown的Radiosity: A Programmer's Perspective
有源代碼的書啊!
Photon mapping
這個我也不知道怎么翻譯,呵呵。這個技術出現(xiàn)的比較晚,一本好書!
Henrik Wann Jensen的Realistic Image Synthesis Using Photon Mapping
Henrik Wann Jensen是Photon mapping技術的發(fā)明者
【非真實性圖形學】(Non-Photorealistic Graphics)
真實性不是計算機圖形學的唯一要求,比如:你給我畫一個卡通效果的圖出來,或者我要用計算機畫水彩畫怎么辦?或者:把圖象用文字拼出來怎么做?,解決這些問題要用到非真實性圖形學, 好書繼續(xù)推薦!
Bruce Gooch, Amy Ashurst Gooch的 Non-Photorealistic Rendering
【體圖形學】(Volume Graphics)
用CT機做很多切片(比如頭骨),那么能通過這些切片得到3D的頭骨嗎?Volume Graphics就是解決這樣的問題的
Min Chen 編著的Volume Graphics
上面的2個圖形學技術就和圖象的界限不明顯了,實際上他們是圖形圖象的綜合。
【其他的書】
還有一些好書啊,呵呵,好書看不完的,繼續(xù)放送:
Graphics Gems I ~ V,一大幫子人寫的書,包括研究人員,程序員…有計算機圖形學的各種數(shù)據(jù)結(jié)構(gòu),編程技巧。
Tomas Akenine-Moller 等人編著的Real-Time Rendering (2nd Edition)
許多最新的計算機圖形學進展。
David Ebert等人的Texturing & Modeling: A Procedural Approach, Third Edition
講述如何通過程序?qū)崿F(xiàn)紋理、山、地形等圖形學要素。
關于圖形學的特定對象,有特定的專題圖書,
Evan Pipho Focus On 3D Models,對于圖形學的常用模型格式,進行了講解
Trent Polack的 Focus On 3D Terrain Programming ,講地形的
Donald H. House 的Cloth Modeling and Animation ,講布料的
Nik Lever的Real-time 3D Character Animation with Visual C++ ,講角色動畫的
Richard Parent的 Computer Animation: Algorithms and Techniques,當然是講動畫的啦,呵呵。
David H. Eberly的3D Game Engine Design : A Practical Approach to Real-Time Computer Graphics ,有代碼的啊!呵呵:)
最后,沒事情的時候,看看下面的書吧
Alan H. Watt, 3D Computer Graphics (3rd Edition)
James D. Foley等人的 Computer Graphics: Principles and Practice in C (2nd Edition) ,這本圣經(jīng)沒事的時候再看吧,呵呵。
posted on 2007-08-23 11:38
大寶天天見 閱讀(3265)
評論(2) 編輯 收藏 引用 所屬分類:
1.Book/Tools