魏海濤 戴志平 周 焰 蔡益朝 陳芳信
文章編號:1672-5913(2009)08-0075-03
摘要:本文多方面系統(tǒng)論述了學習“計算機圖形學”課程的必要性,分析了該課程的學習沒有受到人們重視的原因,指出系統(tǒng)學習該課程是讀者掌握數(shù)據(jù)計算類型的程序系統(tǒng)設計基本方法與計算機仿真入門的有效途徑,使讀者對“計算機圖形學”課程的學習有一個正確的認識。
關(guān)鍵詞:計算機圖形學;計算機仿真;科學計算;程序設計基本方法;可視化
中圖分類號:G642
文獻標識碼:B
1 “計算機圖形學”的學科特性
所謂“計算機圖形學”是計算機仿真(即按模型計算以生成圖像)與科學計算(即通過在計算機上建立模型并模擬物理過程來進行科學調(diào)查和研究)的一種基本形式,是研究圖形數(shù)據(jù)模型在計算機內(nèi)部的產(chǎn)生、設計與構(gòu)造過程,它是顯示圖形不可分割的前提(這相當于畫家作畫之前,對繪畫作品的設計思想、表達方式、繪畫構(gòu)思、作品內(nèi)容與結(jié)構(gòu)等的創(chuàng)作與思考過程;只有當這個繪畫作品設計方案成熟之后,畫家才動筆繪畫);而圖形顯示是用點、線、面、色彩、紋理等可視化的數(shù)學方式表達這種數(shù)據(jù)仿真計算結(jié)果的數(shù)學含義、或表達仿真過程中各種實體仿真模型與場景效果的物理含義的一種直觀表達方式。參考文獻[1,2]已向讀者證明這一結(jié)論,只有這樣,才能較好的理順“計算機圖形學”課程的授課關(guān)系,使讀者建立用計算機生成圖形的完整概念。
我們用這一指導思想主導“計算機圖形學”教育20多年,并用“計算機圖形學”的授課內(nèi)容解決了多年來國內(nèi)計算機程序設計課程沒有解決好的計算可行性(可計算性的實現(xiàn)前提)這一教學難題,使該課程成為初學者學習計算機程序設計基本方法、認識圖形數(shù)據(jù)模型構(gòu)造與顯示的一般規(guī)律、進行可視化應用程序開發(fā)三位一體教學目的的最佳選擇,并有效地彌補了從算法語言、數(shù)據(jù)結(jié)構(gòu)到軟件工程之間關(guān)于應用程序編程系統(tǒng)訓練與計算機仿真等教學環(huán)節(jié)的缺失。這種教學方法使“計算機圖形學”的教學內(nèi)容完全納入了計算機科學的教育體系,同時使“計算機圖形學”與“數(shù)據(jù)庫”、“網(wǎng)絡通信”這三門課程成為現(xiàn)代計算機應用程序的三個基本特征(數(shù)據(jù)計算、數(shù)據(jù)存儲與檢索、數(shù)據(jù)聯(lián)網(wǎng)通信)的典型代表,由此轉(zhuǎn)變了“計算機圖形學”課程的教育觀念與教育思想。在教學過程中,作者曾遇到學生們提出的多種學習問題,今整理成文,以饗讀者。
2學習“計算機圖形學”的原因與重要性
為什么要學“計算機圖形學”,這是計算機專業(yè)選修“計算機圖形學”課程的讀者關(guān)心的首要問題。眾所周知,計算機科學是處理信息技術(shù)(IT)的一門學科,通信科學是傳輸信息技術(shù)的一門學科。對于信息技術(shù)而言,常用于表達信息數(shù)據(jù)含義的4種方式分別是①數(shù)字與字符方式表述;②圖形方式顯示;③播放聲音表述;④用機械力表達(即把電信號轉(zhuǎn)換成機械運動)。這4種表達信息數(shù)據(jù)含義的方式又稱信息數(shù)據(jù)的多媒體表達方式(即多媒體技術(shù))。其中,用圖形顯示這種方式表達信息數(shù)據(jù)的含義符合人們觀察了解事物運動規(guī)律的習慣,而且信息容量大,直觀方便,同時是人們獲得外部世界信息來源的主要依據(jù);也就是說信息數(shù)據(jù)的可視化是信息技術(shù)與計算機科學發(fā)展的一種潮流與必然趨勢。隨著計算機工業(yè)的發(fā)展與進步,實際應用課題與現(xiàn)代程序設計對信息數(shù)據(jù)的可視化處理要求已經(jīng)越來越高,這就要求人們深入研究并掌握圖形顯示的一般規(guī)律,才能更好的為計算機信息數(shù)據(jù)的可視化服務。
按現(xiàn)代教科書對“計算機圖形學”的新定義,“計算機圖形學”代表了計算機應用學科的一個重要發(fā)展方向——科學計算、計算機仿真、計算機輔助設計、信息數(shù)據(jù)的可視化、動畫與游戲、虛擬現(xiàn)實、數(shù)字娛樂,其編程應用還涉及程序設計方法。它們代表了當今計算機技術(shù)的發(fā)展潮流與應用水平,是解決計算機專業(yè)人才出路的有效途徑之一;而“計算機圖形學”是該方向的公共基礎(chǔ)課程,是目前國內(nèi)計算機本科教育應當加強的內(nèi)容。顯然,僅僅靠學習計算機程序設計語言、數(shù)據(jù)結(jié)構(gòu)、編譯原理、操作系統(tǒng)、數(shù)據(jù)庫、軟件工程、形式語言與自動機理論等課程還不能完全使學生的能力直接達到開發(fā)這些應用軟件的目的,因為原則上這些課程是為用戶使用計算機的計算功能而系統(tǒng)量身打造的軟件使用工具(數(shù)據(jù)結(jié)構(gòu)、軟件工程除外),它們的教學目的是為用戶掌握并研制這些軟件工具服
務、而不是為用戶使用這些軟件工具系統(tǒng)地開發(fā)應用程序而開設的課程。計算機專業(yè)主要沿這條主線向前發(fā)展:研究、設計、制造計算機硬件設備,為用戶使用計算機的計算等功能提供一切便利的手段、方法與軟件輔助工具,這包括總結(jié)用戶使用計算機的基本類型與模式,而對于復雜且很難全面概括使用計算機的方法等、則留給一般用戶自己解決,這或許是計算機專業(yè)本科課堂教學沒有介紹對數(shù)據(jù)計算類型的應用軟件系統(tǒng)開發(fā)要遵循的基本規(guī)律與發(fā)展模式的原因之一,“計算機圖形學”的教學正好可以彌補這個缺陷。
由于計算機教育本身并不能直接提供認識世界、改造世界的能力,加之我國沒有掌握具有國際競爭能力的計算機硬件與系統(tǒng)軟件的核心開發(fā)技術(shù),這使中國大量的優(yōu)秀人才在計算機專業(yè)上的最后發(fā)展受到了嚴重制約。而“計算機圖形學”的仿真方法為計算機專業(yè)人員的發(fā)展提供了這樣一種新的學習方法與重新選擇的機遇,它能為計算機專業(yè)人員學習其他行業(yè)的專業(yè)知識(即學習新專業(yè)的物理、數(shù)學方法)、成為其他行業(yè)的專家助手,進行新行業(yè)系統(tǒng)仿真與系統(tǒng)設計以獲得新生;由于各行業(yè)都有各自的研究領(lǐng)域與待解決的研究問題、研究方法與理論研究模型等,當用計算機仿真的方法對這些研究課題進行輔助研究,并用圖形等可視化的方法表達計算機仿真研究的中間結(jié)果與最終成果時,這將使計算機的應用走向深入。
科學研究的目的就是探索未知世界、認識世界、改造世界、造福于人類自己,而“計算機圖形學”的教育正是遵循這樣一條主線:通過物理實驗認識待解決問題的本質(zhì),并用數(shù)學模型的方法來描述這種物理現(xiàn)象的變化過程,從而達到用計算機程序設計的方法來仿真光線在自然界中的傳播,以及光線在照相機中傳播而生成圖像效果,這類物理仿真過程是科學研究方法中的一種基本形式,這種科學研究方法的教育思想(包括人文精神)是國內(nèi)計算機專業(yè)本科課堂教育所欠缺的(計算機專業(yè)往往專注于數(shù)理邏輯思想的基礎(chǔ)訓練)——即“計算機圖形學”的教育,不僅拓展了計算機專業(yè)人才的知識領(lǐng)域,也為其畢業(yè)增加了就業(yè)渠道,同時能培養(yǎng)計算機專業(yè)人員的基本科學研究素養(yǎng),這正是目前國內(nèi)計算機教育改革所追求的目標之一。
需要說明,全日制普通本科教育是普適教育,它需要建立各專業(yè)自己的知識框架,學習基本的概念,了解基本的范疇,明確其發(fā)展方向,計算機專業(yè)也是如此。本科教育重在基礎(chǔ),提高本科教育質(zhì)量與水平并非拔高與創(chuàng)新,而是要做到全面、均衡的發(fā)展,除要求學生掌握本學科專業(yè)已成熟的系統(tǒng)理論知識外,還需培養(yǎng)學生用學科的基本思想與方法獨立自主分析問題、解決問題的能力,這種理論與實踐相結(jié)合的教育方法,能確保學生今后得到穩(wěn)步的發(fā)展?!坝嬎銠C圖形學”就是培養(yǎng)學生利用計算機、數(shù)學、物理等學科的系統(tǒng)知識解決實際應用問題能力的一種有效方法,這樣培養(yǎng)的學生才能適應社會競爭與選擇的需求;只有在研究生階段,通過再次系統(tǒng)學習、閱讀原著與相關(guān)論文并參與項目開發(fā)等活動,達到全面提升對學科的認識能力,并向某一個研究方向發(fā)展、去探索未知世界的變化規(guī)律、解決前人沒有解決好的難題、逐步走入學術(shù)研究的殿堂(即創(chuàng)新教育);當然人們也能在日后的工作中慢慢積累這種工作能力。
文獻[2,3]系統(tǒng)論述了“計算機圖形學”課程在計算機科學教育中的作用與地位。目前很難找出一門具有像“計算機圖形學”類似重要性與多樣性的其它計算機本科專業(yè)基礎(chǔ)課程,能使讀者正確掌握數(shù)據(jù)計算類型的計算機應用程序設計的基本方法,并使計算機這一工具直接服務于社會,這是我們應該重視“計算機圖形學”教育的根本原因。
3學習“計算機圖形學”的方法
由于“計算機圖形學”屬于計算機應用軟件的范疇,因此,數(shù)據(jù)計算類型的應用軟件的設計方法就是學習“計算機圖形學”應該遵循的原則。就“計算機圖形學”課程的學習而言,它要求:
(1) 全面掌握程序設計語言的特性與數(shù)據(jù)結(jié)構(gòu)的基本內(nèi)容,是實現(xiàn)“計算機圖形學”編程的基礎(chǔ)。
(2) 掌握建立解決實際應用問題的數(shù)學模型與軟件系統(tǒng)的概念,是計算機程序設計的兩個關(guān)鍵點。軟件系統(tǒng)是一個能自動運行的綜合執(zhí)行程序,它能從輸入、存儲、運算處理、輸出等方面全面處理用戶在某個領(lǐng)域中提出的諸多數(shù)學模型并完成其模型描述數(shù)據(jù)的加工任務,使用戶很容易明確這種軟件的組成、功能與使用范圍。一般利用二維圖形的簡單性,可以較完整的介紹二維圖形軟件系統(tǒng)這一概念。軟件系統(tǒng)的概念是目前程序設計語言與數(shù)據(jù)結(jié)構(gòu)課程中所欠缺的關(guān)鍵內(nèi)容。
(3) 正確的認識“計算機圖形學”與計算機仿真的相互關(guān)系?!坝嬎銠C圖形學”的重點與難點在三維圖形的數(shù)學模型研制(包括照相機模型,燈光模型,顏色模型,照明模型,物體的幾何模型,物體表面的材質(zhì)與紋理模型等)與模型描述數(shù)據(jù)的構(gòu)造上;由于計算機圖形學追求像照相機拍照一樣的三維真實感圖形顯示效果,這決定了要在計算機中使用物理學仿真的方法(仿真光線在自然界中的傳播所產(chǎn)生的顯示效果或把這種傳播效果映射至物體的表面上)才能達到這一目的,這自然需要讀者對相應的物理知識有個基本的了解才能進行。
(4) 需要了解一些計算機仿真的基礎(chǔ)知識,以確?!坝嬎銠C圖形學”的物理仿真教學過程不會出現(xiàn)偏差。
計算機仿真的主要過程分系統(tǒng)、模型、編程實現(xiàn)(仿真算法)、評估四個步驟。這里①系統(tǒng)是指相互關(guān)聯(lián)又相互作用著的研究對象的有機組合,它決定了被研究考察對象的組成與邊界范圍。②計算機仿真一般可以用數(shù)學模型(簡稱模型)的方法代替實物研究對象,事實上模型也可以是對現(xiàn)實世界的事務、現(xiàn)象、過程或系統(tǒng)的簡化描述,但它反映了實際問題最本質(zhì)的特征和量的關(guān)系。目前“計算機圖形學”所述的模型多限于對所研究對象的物理性質(zhì)、運動變化規(guī)律等特性的一種數(shù)學描述,它使人們能解釋那些難以直接觀察到的事物的內(nèi)部構(gòu)造、事物的變化以及事物之間的關(guān)系——即模型描述了現(xiàn)實世界中有顯著影響的因素和相互關(guān)系。但這種描述有一定的使用條件與限制范圍,研究的目的不同,對該研究對象的數(shù)學模型的描述方法以及模型的種類會不一樣。③仿真(編程實現(xiàn))就是在模型上做實驗,從理論上測試構(gòu)建的理想系統(tǒng)的動態(tài)行為特性,以評估系統(tǒng)的效能。④系統(tǒng)的用途不一樣,評估的方法也不同,人們往往用事先約定的一組指標來評估仿真系統(tǒng)的結(jié)果;當所得仿真結(jié)果沒有達到預期的理想效果時,人們往往不斷改進仿真模型與仿真算法。例如計算機圖形系統(tǒng),用途可以是顯示三維圖形,查看它的真實感逼真顯示效果就是人們主要關(guān)心的問題;模型的運動與操作(如游戲),看它的操作性與故事情節(jié)等如何表達用戶的情感與智能(簡稱好玩)就是人們關(guān)心的主要問題;機械設備的綜合運動與仿真,考察所設計的復雜設備的工作性能就是人們關(guān)心的主要問題;電氣系統(tǒng)的系統(tǒng)仿真,能考察系統(tǒng)工作參數(shù)如何設計以滿足用戶的不同需求;作戰(zhàn)系統(tǒng)的仿真模擬,能考察作戰(zhàn)人員的訓練水平、武器性能、指揮作戰(zhàn)方式對作戰(zhàn)進程的不同影響與作戰(zhàn)效能,等等。
(5) 努力把圖形學所介紹的各種模型與算法(算法是對模型描述數(shù)據(jù)的加工與變換處理的步驟與方法,“計算機圖形學”中的主要算法有各種線段圖形的生成與實面積多邊形的填充算法、著色算法、消隱算法、紋理映射算法、陰影算法,光線跟蹤算法與輻射度算法)都編寫成程序代碼,這使讀者能直接體驗自己的學習效果,也是其它課程不容易做到的。編程時要考慮算法的復雜度,特別是按照軟件系統(tǒng)的方法把編寫的程序代碼組成一個系統(tǒng)整體,這是形成成熟商品軟件很重要的前提。顯然,此時軟件系統(tǒng)中的各種數(shù)學模型反映了仿真系統(tǒng)中研究對象之間的相互關(guān)系。
(6) 掌握“計算機圖形學”打造的繪圖工具,是可視化應用軟件編程的重要基礎(chǔ)。用“計算機圖形學”知識研制的工具常用的有OpenGL與Direct3D等三維圖形標準,虛擬現(xiàn)實建模語言VRML。而三維動畫與CAD等軟件可以看成是“計算機圖形學”為影視制作、游戲建模與計算機輔助設計部門打造的專業(yè)計算工具。僅把圖形標準與計算機繪圖等應用當作“計算機圖形學”很不完備,因為它不能在課堂教學中向讀者正確、完整、系統(tǒng)地展示計算機圖形學學科發(fā)展的基本規(guī)律,并人為地割裂了計算機圖形數(shù)據(jù)模型的構(gòu)造與顯示這兩個過程。
(7) 學會看中英文專業(yè)雜志等參考資料,這些參考資料記錄了學科的發(fā)展歷程與學科當前的研究熱點(一本教科書不可能全部包含這些內(nèi)容),且是一種更重要、復雜、深入的學習研究方法,也是目前國內(nèi)本科教育的弱項(因為國際上最新的研究成果多用英文發(fā)表)。只有這樣,才能跟蹤計算機圖形學的最新發(fā)展并站在學科發(fā)展的前沿、才能開闊人們的視野并有所鑒別,便于讀者日后針對用戶的多種需求展開開創(chuàng)性創(chuàng)新或針對已有成果的不足、提出修補與改進等漸進性創(chuàng)新等學術(shù)研究活動。
(8) 勇于參與課程實踐與項目開發(fā),是鞏固、檢驗所學知識、提高實際動手能力的好方法。實際軟件開發(fā)工作往往是多種知識的綜合應用,它需要對實際處理事務有一個比較透徹的了解(用戶需求報告)、并建立這些待解決問題的數(shù)學模型與系統(tǒng)流程后才能有效進行(按照軟件工程的方法組織實施)。
只有把自己開發(fā)的軟件做成有效商品、服務于社會,才能使所學的知識轉(zhuǎn)變成生產(chǎn)力,才能使自己得到升華;同時也應注意把自己的心得與研究成果總結(jié)發(fā)表,與人共享;還應參加學術(shù)活動,注意留意不同學術(shù)流派之間的觀點、思想、方法與學術(shù)動態(tài),取長補短,形成自己的風格,廣結(jié)人緣,相互交流,為學科建設添磚加瓦。
(9) 一本計算機圖形學教科書的容量使其只能介紹計算機圖形學發(fā)展歷程中產(chǎn)生的最基本、最經(jīng)典的模型與算法,這些內(nèi)容是人們耳熟能詳?shù)奈锢碓砼c相對簡單的數(shù)學知識在計算機中的綜合應用,太復雜的計算關(guān)系因會影響圖形的顯示速度而一般不采用;目前計算機圖形學教科書的理論體系已成熟且“計算機圖形學”的教學內(nèi)容已經(jīng)構(gòu)成了一個大系統(tǒng),這使“計算機圖形學”的教學過程變得簡單、容易。
4目前國內(nèi)“計算機圖形學”教育未受到重視的原因分析
既然如此,為什么目前人們感覺“計算機圖形學”教育的受重視的程度不如數(shù)據(jù)庫與網(wǎng)絡通信等計算機應用軟件呢?筆者認為其原因之一在于:這是因為“計算機圖形學”造就的工具即圖形標準的特殊應用環(huán)境要求限制了它在很大一部分應用程序中的具體應用;三維圖形標準目前僅僅在游戲領(lǐng)域獲得了商業(yè)上的成功,一些應用軟件不調(diào)用圖形標準也能自己繪圖;國內(nèi)的計算機應用程序可視化的開發(fā)要求暫時還較低;關(guān)鍵是作為學科領(lǐng)頭羊的美國人目前還沒有把“計算機圖形學”課程作為計算機本科專業(yè)的核心課程,這是因為他們對“計算機圖形學”課程的本質(zhì)與其在計算機學科中的作用與地位認識不到位所致,美國人圖形學這種教育現(xiàn)狀(目前多以圖形標準的原理講授為主)和局限性與美國人在3D游戲、計算機動畫、計算機輔助設計等應用軟件的開發(fā)上執(zhí)世界牛耳之地位不相稱。
當然,早期計算機圖形學教科書編寫內(nèi)容、體系的不夠成熟,也影響了人們對“計算機圖形學”課程的認識與學習的積極性。例如僅停留在數(shù)學公式與算法的層面上介紹二維、三維圖形的生成而不注重其建模思想與方法的介紹,且人為的把物體幾何模型的構(gòu)建與其圖形顯示分解成“計算機輔助幾何設計”與“計算機圖形學”這兩門課程,這直接導致圖形學課程教學內(nèi)容缺少被處理的圖形顯示對象,加之計算機課程與圖形學的教育又沒有軟件系統(tǒng)的概念,這樣安排雖然能滿足圖形標準等商業(yè)軟件的發(fā)展需求,但卻很難讓初學者全面掌握“計算機圖形學”學科系統(tǒng)性的概念、思想和方法與學科發(fā)展的基本規(guī)律——用數(shù)學模型的方法指導編程實踐,在計算復雜性可接受的條件下,針對已有成果中存在的不足,不斷用新的數(shù)學模型與仿真算法等方法對其進行改進,使圖形學的數(shù)學仿真過程不斷的逼近現(xiàn)實物體模型(包括剛體、軟體、流體、氣體)的構(gòu)造、運動、變形、切割和拼接與反光效果的顯示這一真實的物理變化過程。即初學者沒有用計算機生成圖形的完整概念,這也是以往人們認為計算機圖形學課程難教、難學的主要原因。
由于“計算機圖形學”的繪圖原理不像數(shù)據(jù)庫軟件那樣,數(shù)據(jù)庫的功能可以被所有的應用程序所調(diào)用;也不像通信軟件那樣,所有要聯(lián)網(wǎng)的計算機都離不開通信技術(shù)與網(wǎng)絡技術(shù),而計算機顯卡工業(yè)、3D游戲、計算機動畫、計算機輔助設計等產(chǎn)業(yè)的市場份額小于數(shù)據(jù)庫與計算機通信等產(chǎn)業(yè)的市場份額,即應用軟件的商業(yè)價值決定了它們在人們工作與學習中的地位。
參考文獻:
[1] 魏海濤. 計算機圖形學(第2版)[M]. 北京:電子工業(yè)出版社,2007.
[2] 魏海濤. 科學的構(gòu)建‘計算機圖形學的教學內(nèi)容,促進計算學科的全面發(fā)展[J]. 計算機教育,2008,(10).
[3] 石教英. 需重視工程科學的可視化學習[J]. 國際學術(shù)動態(tài),2005,(3).
[4] 陳立平. 多領(lǐng)域物理統(tǒng)一建模技術(shù)——CAD創(chuàng)新與發(fā)展的思考與實踐.ppt[EB/OL]. http://www.cadcg2008.lnnu. edu.cn/hyjy.jsp, 2007-12.