


摘要:分析計算機圖形學教學過程中出現的問題,提出改進的教學方法,包括案例教學、在課堂教學中應用OpenGL、為不同層次的學生制定不同的開發環境和要求,開發教學演示軟件等,教學效果顯著。
關鍵詞:計算機圖形學;教學改革;教學演示軟件
計算機圖形學是計算機應用的重要分支之一,其主要內容是用計算機表示、生成、處理和顯示圖形[1-2]。我院計算機圖形學課程的培養目標是:學習圖形的計算機生成算法,處理方法和顯示流程;進一步培養學生的程序開發能力;對計算機圖形學的主要分支和發展動向有一定的了解。
1教學過程中存在的問題
在計算機圖形學教學中,如果按照傳統的教學方法在課堂上講解圖形的各種生成算法、處理技術和顯示過程,必然涉及到大量的公式推導,并要求有比較強的空間想象能力,同學們學習比較困難,興趣不高,教學效果很差[3-4]。通過課下與同學們進行交流,筆者發現他們對計算機圖形學這門課程缺乏足夠的認識,不了解計算機圖形學在計算機科學中所處的位置,不知道如何使用課堂上學習過的各種算法。仔細分析上述問題,筆者認為其中的重要原因是理論教學與實踐嚴重脫節。為了改變這種狀況,提高教學效果,我們改進了教學方法。
2教學方法的改進
2.1課堂教學中引入應用實例
隨著計算機軟、硬件的飛速發展,計算機圖形在我們的周圍已經得到了廣泛的應用,如廣告設計、家庭裝飾設計、網站制作、娛樂領域的各種游戲制作、電影后期處理等。于是在每堂課教學前,有意識的搜集一些與本節課程內容相關的應用實例,在教學過程中將這些實例引入課堂,既可以提高同學對本節課內容應用的認識,又可以提高他們的學習興趣。例如在教授圖形變換一節時,首先打開幾個圖形應用軟件(如AutoCAD2000、3DS MAX等),演示其中的平移命令、比例命令、旋轉命令等幾個與平移變換、比例變換、旋轉變換相關的操作,然后啟發同學們思考這些命令在計算機中是如何實現的。這樣,同學們在興趣的引導下,仔細分析了各種變換的推導過程,理解了這些變換的作用。課堂的舉例甚至可以涉及到當前流行游戲(如反恐精英、魔獸等),引導他們理解場景在計算機中是如何變換的,游戲中角色的走動是如何實現的,等等。同學們明白游戲的制作原理的同時,還學會了計算機圖形學的理論知識,也深刻地體會到計算機圖形學在現實應用中的重要作用。
2.2課堂教學中引入相關OpenGL函數
計算機圖形學幾乎所有的章節都有對應的OpenGL實現函數,將OpenGL引入課堂,不但可以幫助同學們理解課堂上的理論知識,還可以讓同學們掌握具體的開發手段。計算機圖形學中二維圖元的生成算法一般可以用傳統的教學方法解釋清楚,對于圖形變換、投影、三維實體表示、曲線曲面、光照模型與真實感圖形繪制等圖形學教學內容,僅利用課堂講解很難產生好的教學效果,因為這部分內容涉及較多的數學推導,并且要求同學們要有較好的空間想象能力,以便理解由數學推導得出的實際空間結果,同學們掌握起來難度較大。將OpenGL引入課堂后,我們可以利用其相關的函數將數學推導的中間結果和最終結果展示出來,幫助同學們理解相關的理論推導。同時可以使同學們掌握一定的OpenGL知識,提高其開發能力。
例如,在教授投影變換一節時,由于該節涉及到多種投影變換,課堂上首先要解釋清楚各種投影變換的本質區別,接下來要推導各種投影的投影坐標計算公式,這些推導涉及到大量的矩陣運算,并且很難想象出其最終的空間結果,很容易使同學們產生枯燥的情緒。我們在教學過程中,利用OpenGL程序實現各種投影變換的空間結果,幫助同學們理解各種變換。比如,在講解平行投影與透視投影的概念區別時,在OpenGL中分別由gluPerspective()與glOrtho() 兩個函數生成圖1的結果幫助同學們理解相關概念。
對于較難理解的滅點的演示可以利用函數glRotate()實現,結果如圖2所示。
對于不太好想象出投影結果的正軸測投影,利用glOrtho()生成平行投影環境,然后設置gluLookAt()函數中的參數,使之生成出各種投影所要求的投影面,就可以產生出我們需要的投影結果。圖3為等軸測、等二測和等三測的投影結果。其中等二測和等三測結果并不唯一。
在課堂上演示具體的程序及其運行結果,既可以幫助同學們理解相關的概念,又提高了他們的程序開發能力和學習主動性。
2.3為各種層次的學生提供不同的開發環境
單純要求同學們掌握理論知識并不是教學的最終目的,如果同學們能夠實現這些算法,不但能夠加深對算法的理解,還能夠培養同學們的開發能力,使他們能夠更加自信地走向社會。所以充分利用好計算機圖形學自帶的實驗課時,對加強課程理論理解和學生能力培養有著很重要的作用。
在實驗課上,由于專業的不同,同學們的編程能力差別很大,信息班有的同學可以用VC++進行算法實現,數學班有的同學甚至還沒有C語言編程的經驗,這給實驗課的安排帶來了一定的難度。對此,我們采用的解決方法是首先確保底線,使同學們至少可以先進行算法實現。為此,我們統一提供了初始化好的繪圖環境和DEMO程序,這樣初次編程的同學可以直接進入該環境中進行算法的編寫與調試,當這些初次編程的同學們可以編寫和運行自己的程序時,無疑
使他們的能力培養進入了一個新的起點。對于已經有相當程序開發能力的同學,在要求他們完成算法實現的基礎上,引導他們自學OpenGL,給他們介紹一些高級的開發手段,比如VC++結合OpenGL進行產品開發等,為他們的開發能力進一步發展指明方向。這樣的安排使得各個層次同學的能力培養和學習熱情得到很大的提高。
2.4制作教學演示系統[5]
雖然針對各個算法在課堂上進行單獨的程序演示有其獨特的優勢,但這種教學方法首先要求教師本人有一定的開發能力,并且由于多媒體教室并不專用,程序的運行環境得不到保證。為了進一步提高教學效果,我們在學校教務處和學院的支持下進行了《計算機圖形學教學演示系統》的開發,該系統包含了計算機圖形學這門課程大部分基本算法,并且可以方便添加新的算法實現代碼。
由于該系統主要用來進行輔助教學,因此它必須與教學實踐相適應。此系統以可見點模擬象素,以分步形式完成算法,算法實現過程中變量的變化也在對話框中給出。系統界面及直線生成算法、填充算法和幾何變換的實現示例見圖4。
3結語
通過教學改革,同學們不但深入理解課堂上教授的算法,還積極查閱其他教材的相關算法,有的同學甚至對某些算法給出自己的改進想法。給筆者印象很深的是在實現直線的逐點比較生成算法時,幾位數學班的同學提出,如果將“從起點到終點進行比較”改為“從起點和終點同時向中點進行比較”,算法效率將提高一倍,在此基礎上增加步長,則可以進一步提高效率。同學們的思路對筆者也產生了很大的啟發。通過和同學們的討論,達到了“教學相長”的效果。實驗課上同學們通過自己的理論知識和開發手段,陸續完成了自由曲線、填充與裁剪等內容的各種算法的實現。新教學方法的實施,提高了課堂教學效果,為達到課程的培養目標提供了有力的保障。
參考文獻:
[1]