posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          這學(xué)期想上這門課,純屬娛樂,不準(zhǔn)備深入。
          主要還是考慮到有機(jī)會(huì)和安然小朋友合作一個(gè)大程 ;-)

          關(guān)于計(jì)算機(jī)圖形學(xué)的學(xué)習(xí)
          注意:
          本文盡量避免理論化的描述,試圖用最通俗的語言介紹一下計(jì)算機(jī)圖形學(xué)的學(xué)習(xí),以及一些參考書目和網(wǎng)絡(luò)資源;
          本文不涉及對(duì)概念的定義,以免陷入學(xué)術(shù)討論之中
          本文是作者學(xué)習(xí)計(jì)算機(jī)圖形學(xué)的體會(huì),如果有不同的意見,請(qǐng)不要攻擊和漫罵

          本文合適的題目應(yīng)當(dāng)是:白話說學(xué)計(jì)算機(jī)圖形學(xué)?

          1.?引言
          什么是計(jì)算機(jī)圖形學(xué)??本文盡量避免給它做嚴(yán)格的定義,但是通常來說,計(jì)算機(jī)圖形學(xué)是數(shù)字圖象處理的逆過程,這只是一個(gè)不確切的定義,后面我們會(huì)看到,實(shí)際上,計(jì)算機(jī)圖形學(xué)、數(shù)字圖象處理和計(jì)算機(jī)視覺在很多地方的區(qū)別不是非常清晰的,很多概念是相通的。
          計(jì)算機(jī)圖形學(xué)是用計(jì)算機(jī)來畫東西的學(xué)科,數(shù)字圖象處理是把外界獲得的圖象用計(jì)算機(jī)進(jìn)行處理的學(xué)科。在法國(guó),圖形圖象是一門課程。
          如何學(xué)習(xí)計(jì)算機(jī)圖形學(xué)呢?除了計(jì)算機(jī)圖形學(xué)的基礎(chǔ)知識(shí)以外,你還需要有以下的知識(shí),你懂的越多,當(dāng)然做的越好。
          *?英語,?你一定要把英語學(xué)好,如果你想學(xué)習(xí)計(jì)算機(jī)圖形學(xué)的話,盡量看英文的書籍和資料
          *?數(shù)學(xué),?計(jì)算機(jī)圖形學(xué)里面的數(shù)學(xué)用的比較多,,我們可以列舉一些常用的:
          高等數(shù)學(xué),數(shù)值分析,微分幾何,拓?fù)洌怕剩?插值理論,(偏)微分方程…
          *?物理,?如果你要進(jìn)行基于物理的建模,一些物理理論是要學(xué)習(xí)的:
          力學(xué)(運(yùn)動(dòng)學(xué),動(dòng)力學(xué),流體力學(xué)…),光學(xué),有限元…
          *?編程語言:?C或C++是計(jì)算機(jī)圖形學(xué)最通用的‘普通話’,
          *?數(shù)據(jù)結(jié)構(gòu):?你需要數(shù)據(jù)結(jié)構(gòu)來描述你的圖形對(duì)象,除了通用的鏈表、樹等數(shù)據(jù)結(jié)構(gòu)外,圖形學(xué)還有自己特殊的數(shù)據(jù)結(jié)構(gòu)
          *?其他類別:?有的時(shí)候你需要其他學(xué)科的知識(shí),根據(jù)你的需要去學(xué)習(xí)吧

          上面列舉的不是你必須學(xué)習(xí)的東西,而是計(jì)算機(jī)圖形學(xué)可能會(huì)用到的東西,一定要記住,不要指望通過一本教材就學(xué)會(huì)計(jì)算機(jī)圖形學(xué),它比你想象的要復(fù)雜的多。

          2.?圖形學(xué)的問題
          每個(gè)學(xué)科都有自己學(xué)科的特定問題,圖形學(xué)要解決的是如何畫出圖來,得到需要的效果,當(dāng)然這是圖形學(xué)最大的一個(gè)問題。

          在開始學(xué)習(xí)計(jì)算機(jī)圖形學(xué)的時(shí)候,找一本簡(jiǎn)單的書看,對(duì)計(jì)算機(jī)圖形學(xué)有個(gè)大概的認(rèn)識(shí),你就可以開始圖形學(xué)之旅了:

          OpenGL?Programming?Guide:?The?Official?Guide?to?Learning?OpenGL,?Version?1.4,?Fourth?Edition
          OpenGL?SuperBible?(3rd?Edition)?

          是比較好的學(xué)習(xí)計(jì)算機(jī)圖形學(xué)的入門教材,在練中去學(xué),一開始就去啃

          Foley的
          Computer?Graphics:?Principles?and?Practice,?Second?Edition?in?C?
          不是好主意,會(huì)看的一頭霧水,一本什么都講的書的結(jié)果往往是什么都沒講清楚。
          當(dāng)你把OpenGL的基本內(nèi)容掌握之后,你對(duì)圖形學(xué)就有了大概的了解了

          那么下面你可以來學(xué)習(xí)一下計(jì)算機(jī)圖形學(xué)的數(shù)據(jù)結(jié)構(gòu)和算法,下面的書比較適合
          Joseph?O'Rourke?的Computational?Geometry?in?C,書里面有C的源代碼,講述簡(jiǎn)單,清晰,適合程序員學(xué)習(xí)

          總的來說,計(jì)算機(jī)圖形學(xué)涉及到2大部分:建模和渲染
          2.1建模

          你想畫一個(gè)東西,首先要有它的幾何模型,那么這個(gè)幾何模型從什么地方來呢?下面的書很不錯(cuò)的:
          Gerald?Farin?的Curves?and?Surfaces?for?CAGD:?A?Practical?Guide
          這本書就有一點(diǎn)的難度了,呵呵,要努力看啊

          這本書算是CAGD?(計(jì)算機(jī)輔助幾何設(shè)計(jì))的經(jīng)典圖書,CAGD方面的全貌,還有2本很好的講述曲面的書Bezier和Nurbs的書

          Les?A.?Piegl,?Wayne?Tiller?的The?Nurbs?Book?
          書里面有NURBS曲線、曲面的程序偽代碼,很容易改成C的,書講的通俗、易懂,但是你要有耐心看的:)

          曲線與曲面的數(shù)學(xué)
          這本書是法國(guó)人寫的中文翻譯版,里面還有Bezie本人寫的序J,翻譯的很不錯(cuò)的,看了你就掌握Bezier曲面技術(shù)了


          //另外一些你想知道的事情:其他的造型方式-開始
          注意:在后面會(huì)有這樣的章節(jié),標(biāo)明
          //另外一些你想知道的事情:其他的造型方式-開始
          //另外一些你想知道的事情:其他的造型方式-結(jié)束
          里面是我認(rèn)為的一些高級(jí)話題,跳過他們不影響你學(xué)習(xí)計(jì)算機(jī)圖形學(xué),但是要學(xué)好就要注意了,呵呵
          還有其他的一些造型技術(shù),比如:
          隱式曲面(Implicit?Surface)的造型:
          就是用函數(shù)形式為F(?x?,y?,z?)?=?0的曲面進(jìn)行造型,這樣的造型技術(shù)適合描述動(dòng)物器官一樣的肉乎乎的東西,有2本書推薦大家
          Jules?Bloomenthal編輯的Introduction?to?Implicit?Surfaces,是一本專著,講述了Implicit?Surface建模型(Modeling),面片化(Polygonization),渲染(Rendering)的問題
          Luiz?Velho?的?Implicit?Objects?Computer?Graphics?也是一本專著,講述個(gè)更新的一些進(jìn)展

          細(xì)分曲面(Subdivision?Surface)造型
          當(dāng)用NURBS做造型的時(shí)候,曲面拼接是復(fù)雜的問題,在動(dòng)畫的時(shí)候,可能產(chǎn)生撕裂或者褶皺,Subdivision?Surface用來解決這個(gè)問題
          Joe?Warren的Subdivision?Methods?for?Geometric?Design:?A?Constructive?Approach就是這方面的專著

          從實(shí)際物體中得到造型,現(xiàn)在的技術(shù)可以用三維掃描儀得到物體表面的點(diǎn),然后根據(jù)這些點(diǎn)把物體的表面計(jì)算出來,稱為重建(Reconstruction),因?yàn)檫@些技術(shù)之在文章中論述,所以我們省略對(duì)它的描述

          //另外一些你想知道的事情:其他的造型方式-結(jié)束


          下面還是一個(gè)高級(jí)話題:)

          //另外一些你想知道的事情:光有造型是不夠的!-開始
          在你的幾何模型做好之后,有一些問題需要對(duì)這個(gè)模型進(jìn)一步處理,得到適合的模型,當(dāng)面片很多的時(shí)候,或者模型很復(fù)雜的時(shí)候,需要對(duì)幾何模型進(jìn)行簡(jiǎn)化,才可以滿足一些實(shí)時(shí)繪制的需要,這個(gè)技術(shù)叫做層次細(xì)節(jié)(LOD-Level?of?Detail)。下面的書就是講這個(gè)的:
          David?Luebke編著的?Level?of?Detail?for?3D?Graphics
          //另外一些你想知道的事情:光有造型是不夠的!-結(jié)束

          2.2渲染
          有了模型,怎么把這個(gè)幾何模型畫出來呢?這個(gè)步驟就是渲染啦
          如果你看了上面的OpenGL的書,那么你就知道一些渲染的知識(shí)了,但是別高興的太早,OpenGL使用的是局部光照模型(Local?Illumination?Model),不要被這個(gè)詞嚇住了

          Local?illumination?Model指的是在做渲染的時(shí)候只考慮光源和物體之間的相互作用,不考慮物體和物體之間的影響,所以O(shè)penGL不支持陰影,一個(gè)(半)透明物體的效果..,這些需要考慮物體之間的影響才可以實(shí)現(xiàn)。

          //另外一些你想知道的事情:OpenGL可以實(shí)現(xiàn)陰影-開始
          OpenGL本身不支持,但是通過一些方法可以實(shí)現(xiàn)的:),用Google搜索一下
          Shadow?Volume,?OpenGL就找到答案啦
          //另外一些你想知道的事情:OpenGL可以實(shí)現(xiàn)陰影-結(jié)束

          Global?Illumination?Model?這類模型考慮的就比較全啦。現(xiàn)在關(guān)于Global?Illumination的技術(shù)有3大類,具體的技術(shù)就不在這里介紹了,如果想了解,可以聯(lián)系我,大家一起討論:

          光線追蹤(Ray?Tracing)
          關(guān)于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)
          關(guān)于Radiosity的好書有4本:
          Michael?Cohen?的Radiosity?and?Realistic?Image?Synthesis?,?Cohen獲得SIGGRAPH?1998計(jì)算機(jī)圖形學(xué)成就獎(jiǎng),他把Radiosity變成實(shí)際可用,現(xiàn)在Cohen在MSR圖形::URL::http://research.microsoft.com/~cohen/CohenSmallBW2.jpg

          Francois?X.?Sillion的Radiosity?and?Global?Illumination?,?Sillion是法國(guó)人,他的主要研究方向是Radiosity,這本書寫的很不錯(cuò)的,非常清晰

          Philip?Dutre?的新書Advanced?Global?Illumination?,看起來還不錯(cuò),剛拿到手,還沒看,呵呵,所以不好評(píng)價(jià)

          Ian?Ashdown的Radiosity:?A?Programmer's?Perspective?
          有源代碼的書啊!!?就憑這個(gè),得給5*****

          Photon?mapping
          這個(gè)我也不知道怎么翻譯,呵呵。這個(gè)技術(shù)出現(xiàn)的比較晚,一本好書!
          Henrik?Wann?Jensen的Realistic?Image?Synthesis?Using?Photon?Mapping
          Henrik?Wann?Jensen是Photon?mapping技術(shù)的發(fā)明者

          3.3這些也是圖形學(xué)嗎??圖形和圖象的區(qū)別模糊了:(
          除了上面講的‘經(jīng)典’的計(jì)算機(jī)圖形學(xué),還有下面的一些東西,它們也叫計(jì)算機(jī)圖形學(xué)嗎?是的!!!
          3.3.1非真實(shí)性圖形學(xué)(Non-Photorealistic?Graphics)
          真實(shí)性不是計(jì)算機(jī)圖形學(xué)的唯一要求,比如:你給我畫一個(gè)卡通效果的圖出來,或者我要用計(jì)算機(jī)畫水彩畫怎么辦?或者:把圖象用文字拼出來怎么做?,解決這些問題要用到非真實(shí)性圖形學(xué),?好書繼續(xù)推薦!!!
          Bruce?Gooch,?Amy?Ashurst?Gooch的?Non-Photorealistic?Rendering?

          3.3.2體圖形學(xué)(Volume?Graphics)
          用CT機(jī)做很多切片(比如頭骨),那么能通過這些切片得到3D的頭骨嗎?Volume?Graphics就是解決這樣的問題的
          Min?Chen?編著的Volume?Graphics?

          上面的2個(gè)圖形學(xué)技術(shù)就和圖象的界限不明顯了,實(shí)際上他們是圖形圖象的綜合


          4?.還有其他的書嗎?
          還有一些好書啊,呵呵,好書看不完的:),繼續(xù)放送:

          Graphics?Gems?I?~?V,一大幫子人寫的書,包括研究人員,程序員…
          有計(jì)算機(jī)圖形學(xué)的各種數(shù)據(jù)結(jié)構(gòu),編程技巧

          Tomas?Akenine-Moller?等人編著的Real-Time?Rendering?(2nd?Edition)?
          許多最新的計(jì)算機(jī)圖形學(xué)進(jìn)展

          David?Ebert等人的Texturing?&?Modeling:?A?Procedural?Approach,?Third?Edition?
          講述如何通過程序?qū)崿F(xiàn)紋理、山、地形等圖形學(xué)要素
          F.?Kenton?Musgrave號(hào)稱分形狂(Fractal?Mania)
          Ken?Perlin就是Perlin噪聲的發(fā)明者,用過3d軟件的人對(duì)Perlin?Noise不會(huì)陌生的

          關(guān)于圖形學(xué)的特定對(duì)象,有特定的專題圖書,
          Evan?Pipho?Focus?On?3D?Models,對(duì)于圖形學(xué)的常用模型格式,進(jìn)行了講解
          Trent?Polack的?Focus?On?3D?Terrain?Programming?,講地形的
          Donald?H.?House?的Cloth?Modeling?and?Animation?,講布料的
          Nik?Lever的Real-time?3D?Character?Animation?with?Visual?C++?,講角色動(dòng)畫的
          ……

          還有:)
          Richard?Parent的?Computer?Animation:?Algorithms?and?Techniques,當(dāng)然是講動(dòng)畫的啦,呵呵。
          David?H.?Eberly的3D?Game?Engine?Design?:?A?Practical?Approach?to?Real-Time?Computer?Graphics?,有代碼的啊!呵呵:)

          最后,沒事情的時(shí)候,看看下面的書吧
          Alan?H.?Watt,?3D?Computer?Graphics?(3rd?Edition)?

          James?D.?Foley等人的?Computer?Graphics:?Principles?and?Practice?in?C?(2nd?Edition)?,這本圣經(jīng)沒事的時(shí)候再看吧,呵呵

          累了:(?不說了,上面的書差不多了,還有一些shader的書,我不了解,以后會(huì)補(bǔ)上的:)

          5.從哪里找到這些書啊?還有什么資源啊?
          我保證,上面的書在www.amazon.com?都可以買到:)?別打我

          那好,大部分的書在國(guó)家圖書館可以復(fù)印到,北京的兄弟有福啦,3年前的書借出來復(fù)印,1角/頁,但是新書要早圖書館里復(fù)印,5~6角/頁,還是比Amazon便宜啊,呵呵。

          不行大家就到國(guó)外買,合買吧,還負(fù)擔(dān)的起。
          我對(duì)DirectX不了解,所以沒有涉及關(guān)于DirectX的內(nèi)容:)

          評(píng)論

          # re: 關(guān)于計(jì)算機(jī)圖形學(xué)的學(xué)習(xí) 原創(chuàng) FatGarfield   回復(fù)  更多評(píng)論   

          2008-02-22 15:46 by Master
          我ri,還要學(xué)插值?

          # re: 關(guān)于計(jì)算機(jī)圖形學(xué)的學(xué)習(xí) 原創(chuàng) FatGarfield   回復(fù)  更多評(píng)論   

          2008-02-22 16:29 by ZelluX
          @Master
          簡(jiǎn)單的插值又不是沒學(xué)過,難的也不會(huì)要求。

          # re: 關(guān)于計(jì)算機(jī)圖形學(xué)的學(xué)習(xí) 原創(chuàng) FatGarfield   回復(fù)  更多評(píng)論   

          2009-10-11 21:39 by nice
          Nice :) 數(shù)學(xué)的要求還是很深的 Vector, Matrix, Tensor Calculus, Complex Analysis ...
          主站蜘蛛池模板: 金平| 玉环县| 司法| 夏河县| 修文县| 乐山市| 绩溪县| 吉水县| 永顺县| 犍为县| 利川市| 吉安县| 上思县| 苏尼特右旗| 望奎县| 沛县| 乌审旗| 太保市| 仙桃市| 台州市| 刚察县| 靖安县| 澎湖县| 偃师市| 通渭县| 泗阳县| 彭泽县| 大厂| 曲沃县| 牡丹江市| 达州市| 武鸣县| 潮州市| 金沙县| 砚山县| 长宁县| 莲花县| 迁安市| 色达县| 青阳县| 改则县|