摘要:本文介紹了作者在計算機專業(yè)本科的圖形學教學中,如何針對新形勢下素質教育的要求,在課堂教學和上機實踐兩個環(huán)節(jié)上,調動學生的主動性,激發(fā)學生學習的興趣,培養(yǎng)學生創(chuàng)新精神和動手編程能力的若干具體措施,希望起到拋磚引玉的作用,與同行進行交流,共同促進和提高計算機本科的圖形學教學質量。
關鍵詞:創(chuàng)新;計算機專業(yè);本科;計算機圖形學;實踐教學;編程
中圖分類號:G642文獻標識碼:B
文章編號:1672-5913 (2007) 22-0080-04
1引言
計算機圖形學是計算機科學技術系本科的專業(yè)課程。它以二維和三維圖形作為研究對象,包括圖元的生成和填充、曲線和曲面、三維實體的表示、圖形的變換、顏色知識、圖形的消隱、真實感圖形的生成等內容。在計算機圖形學的研究內容方面,非計算機專業(yè)的教師和學生有一個誤解,認為是利用一些圖形軟件進行圖形的創(chuàng)作,包括Flash、3DS等軟件。而計算機專業(yè)的本科生,有一部分在進入該課程的學習之前也有這樣的誤解,這是錯誤的。作者在教學中強調了該課程所研究的內容,用一句大白話來說,那就是“我們是做一個3DS,而不是用3DS”。
計算機圖形學這門課程作為專業(yè)課,在大學三年級上學期(或者下學期)開設。這個時間上的安排有一個優(yōu)勢,那就是圖形學所需要的數學知識,學生在大學一、二年級剛剛學過,在理解圖形學的數學原理方面困難不是很大。學生在一年級和二年級,一般是學習物理、電路、高等代數、數學分析、數據結構等課程,C語言或者C++語言的學習還比較淺,至多是對語法的掌握和小程序的編寫,沒有真正用編程語言實現過一個中等規(guī)模的項目,除了少數學生之外,大部分學生的編程能力仍然比較弱,這是學生的基本特點。
作者針對課程的特點和計算機專業(yè)學生的特點,對課堂教學和上機實踐進行了精心的設計,在教學中調動學生的興趣和積極性,培養(yǎng)學生的動手編程能力。作者采取了若干教學改進措施。實踐表明,這些改進措施對于培養(yǎng)學生的學習興趣,提高學生的綜合素質具有很好的作用,取得了滿意的教學效果。
2互動的課堂
作者在課堂教學中,通過動畫演示激發(fā)學生的學習興趣;通過算法實際運行效果的比較和分析,幫助學生理解掌握圖形學算法;讓學生在課堂上講解算法的實現,讓學生參與教學過程,調動其學習的積極性。
2.1動畫演示與課外作業(yè),培養(yǎng)學習的興趣
要激發(fā)學生學習的積極性,第一堂課的講解是非常重要的。第一堂課的內容是對圖形學的介紹難度不大,涉及圖形學的內容、圖形學的應用和圖形學的發(fā)展歷史等。為了提高學生的學習興趣,作者把重點放在圖形學應用的講解上,并且從學生熟悉的計算機三維游戲入手,介紹了虛擬現實技術,并且舉了古羅馬建筑計算機重建實例,通過展示有關的動畫片,學生被其壯麗和宏偉所震撼,接著作者展示了用計算機圖形技術重建的紫禁城和老北京的風貌,激發(fā)了學生極大的興趣。
雖然計算機圖形學已經獲得了很大的發(fā)展,應用于包括CAD、圖形界面、藝術、GIS、虛擬現實等不同的領域,但是仍然有很多的問題還沒有解決或者解決得不好。接著作者介紹了圖形學的若干前沿問題,包括新的造型技術、真實感圖形渲染技術、人機交互技術等。向學生展示了計算機生成的皮膚,和自然的皮膚仍然具有很大的差距。最后作者要求學生進行一次課外作業(yè),通過互連網調查一下,如何利用計算機圖形技術制作出羽毛、煙花、火焰、煙霧、水等效果,并且提交報告,從實現的基本原理、實際渲染的效果、仍然存在的問題等方面進行論述。經過調查,學生對這些技術的理解仍然是膚淺的,但是這樣更加能夠激發(fā)學生進一步探究的興趣。
2.2算法執(zhí)行效率的比較與算法的優(yōu)化
計算機圖形學這門課程,具有兩條天然的線索,一個是二維圖形,一個是三維圖形。二維圖形研究基本圖元的生成、二維填充問題、混淆與反混淆、裁剪、圖形變換等內容,而三維圖形則包括曲線和曲面、三維實體的建模、投影變換、消隱、顏色與渲染等內容。在課堂教學當中,作者根據上述線索進行內容的重新組織,并不嚴格按照教科書的章節(jié)編排來進行講授,并且要求學生在內容的自我把握上,遵循上述的線索。
計算機圖形學算法,需要以數學知識作為支撐,包括線性代數(矩陣的運算)、解析幾何、微積分等內容,學生對數學的掌握是純數學的思維,必須把學生的純數學思考引導到利用數學知識實現圖形學算法、并且有效提高算法效率上。在直線段圖元的生成算法上,作者進行了這樣的講授設計,首先,讓學生自我設計出一個基本的算法,大部分的學生不約而同地利用直線段的方程進行算法的設計,根據直線方程,從X-min到X-max,每個X代入直線方程 ,取得一個對應的Y,然后把這一系列的
接下來,作者首先指出該算法的若干嚴重問題。首先是正確性,當直線段比較陡峭(相對X軸),那么直線段就會發(fā)生斷裂。另外一個問題是,算法的效率不高,比系統(tǒng)Windows GDI提供的算法,效率差10~100倍。在一個復雜的場景建模中,需要的直線段不是上萬個,而是上億個,那么累計的效率差異將變得很大,性能差到難以忍受的程度。這是學生所始料未及的,對接下來介紹的幾個直線段算法,包括DDA算法、對稱DDA算法、中點算法等,表現出強烈的學習興趣,一探究竟,為什么這些算法有這么高的效率。這種提出問題,然后解決問題的教學模式,一方面打破了一些學生的錯誤認識,同時保持了學生學習過程中的興奮度。
最后作者進行了總結,對于計算機的CPU來講,定點運算比浮點運算更快,對于函數以及基本運算來講,加減法運算比乘除法運算快,乘除法運算比三角函數運算快,作者總結了算法優(yōu)化的基本策略,(1) 用加減法運算代替乘除法運算;(2) 用定點運算代替浮點運算;(3) 避免三角函數計算以及其他耗時的函數調用;(4) 用迭代計算代替獨立步驟運算。同時,讓學生思考每個算法做了那些優(yōu)化,這樣學生對算法的效率有了更新的認識,避免了用純數學的知識來把握圖形學算法的錯誤思想,把數學問題變化成計算效率高的算法。
2.3算法原理的掌握
在學習了基本圖元的6~7種算法之后,學生們普遍碰到這么一個困境,那就是對于每個算法,似乎理解起來沒有什么困難,但是又強烈地感到算法眾多,互相混淆,沒有真正把握每個算法的真正內涵。于是作者要求學生針對每個圖元的生成算法,列一張表,按照算法的基本原理、算法的執(zhí)行過程(包括開始條件、迭代步驟、終止條件)、算法的應用場合和特殊情況的處理等三個方面來對每個算法進行梳理。所有的算法都依賴于一個基本原理,這個原理決定了算法的框架,但是和具體實現是沒有關系的,只有理解了基本原理,才能理解算法的各個步驟為什么這么來設計。而對于算法的執(zhí)行過程,需要從開始條件,終止條件、迭代步驟來把握,而最重要的是,必須對每個迭代步驟的控制機制要有深入理解,每個迭代步驟都有一個判斷依據(判據),來決定算法下一步應該走哪條路線,這是體現了算法基本原理的具體步驟。最后必須對算法的應用場合有所了解,有些算法效率高,但是只適用某些情況,而有些算法效率稍微差點,但是卻是一個通用的算法[8]。
2.4學生對算法的自主分析和實現,講解與交流
在教學過程中,作者把講授和學生自己學習和理解、以及實現相結合,培養(yǎng)學生自主學習的能力。在講解了若干個算法之后,作者有意把一兩個算法留給學生進行自己學習,在掌握了上述介紹的基本思想方法之后,學生很容易地理解了該算法,并且要求所有學生上機實現。最后,隨機選擇一兩名學生,把其實現的程序源代碼在課堂上進行講解。這樣做,既能保證所有的學生都下工夫去學習、動手編程實現,而且可以檢驗學生在算法的理解上是否有偏差,及時進行點評和改正。
學生必須自己在學習、理解算法的基礎上,用編程語言實現該算法,才能參加這樣的實踐交流課。既培養(yǎng)了學生學習的主動性,又鍛煉了學生的動手能力。
3上機環(huán)節(jié)
3.1小算法的上機實現
對于獨立的、復雜度比較小的算法,比如一些基本圖元的繪制、圖形的基本變換、裁剪、和反混淆技術等等,在推進課程內容的講授的同時,即布置學生進行上機,并且經過一周時間,把編程的源代碼以及上機報告提交上來。目的是加深學生對這些獨立的小算法的理解,并且培養(yǎng)學生的動手編程能力。
3.2大作業(yè)的設計與階段式推進
為了幫助學生對整門課程在理解上做到融會貫通,特別地設計了一個大作業(yè),要求學生建立一個足夠復雜的三維模型,這個模型需要兩個以上實體,其中一個實體要通過曲面來進行建模,兩個實體之間互相有遮擋關系(其中一個物體是透明的作為可選項),實現幾何變換和投影變換,實現隱藏面的消除,最后根據現場燈光環(huán)境(多個光源作為可選項),進行渲染,對于能力比較強的學生,要求其把靜態(tài)的場景轉變成動畫,可以起到平時成績加分的作用。通過把大作業(yè)設計成兩個層次的要求——基本層次和可選層次(透明物體、多個光源、動畫實現等),既照顧了大部分學生的能力水平,又由于有加分的激勵作用,能力強的學生,其積極性普遍高漲,根據作者以往的經驗,這部分學生往往做出很好的作品。
大作業(yè)把整門課程的主要內容通過一個程序讓學生都實現出來,難度是相當大的。需要指導學生,適當地對問題進行分割,把問題的解決分成兩個階段,第一個階段,實現建立模型、投影變換,第二個階段實現燈光、消隱和渲染。第一個階段的目標比較容易完成,實現實體投影的效果,取得了階段性成果,學生容易獲得成就感,有了進一步前進的動力。
3.3團隊協作
由于大作業(yè)具有一定的難度,對于能力強的學生,一個人獨立完成是可以,但是對于能力一般的學生,則鼓勵他們組合成小組,小組成員互相協作,共同完成大作業(yè),為了避免部分學生沒有投入足夠的精力,要求小組大小不能超過三個人,每個人的任務必須明確,每個人必須完成大程序的其中一到兩個模塊。
3.4引入競爭、促進交流
為了進一步調動學生挑戰(zhàn)困難的勇氣,就大作業(yè)的實現,舉行程序設計比賽,以大作業(yè)的實現效果作為比較的指標,并且組織5人的評審小組,評審小組由學生經過推舉來選拔,就大作業(yè)的實際渲染效果、軟件運行的性能、程序的可讀性等三個方面進行比較,并且打分。選出前三名,由實現的學生或者小組,講解其實現過程,促進整個班級的學習上的交流。
4其他措施
在作者的圖形學教學實踐中,除了上文提到的若干方法和措施之外,還通過其他的一些措施來激發(fā)學生學習興趣和積極性,提高學習的效果[3][4][6]。這些措施包括鼓勵學生閱讀其他教學參考書,幫助學生剖析成熟的三維圖形系統(tǒng)的源代碼(比如Mesa 3D System[9]等),通過分析開源的成熟代碼,可以幫助學生理解大系統(tǒng)的構造,以及具體功能的實現,另外,還充分利用計算機多媒體教學,以動畫展示算法的執(zhí)行過程,比如通過動畫展示裁剪的過程等。
參考文獻
[1] 何克抗. 論現代教育技術與教育深化改革[J]. 電化教育研究,1999.
[2] 閻立欽. 實施創(chuàng)新教育,培養(yǎng)創(chuàng)新人才[J]. 教育研究,1999.
[3] 吳濤. 非計算機專業(yè)計算機圖形學教學改革初探[J]. 科技資訊,2006,(34).
[4] 陳國龍,王曉東,傅清祥. “算法與數據結構”課程教學改革和實踐[J]. 高等理科教育,2003,(3):61-64.
[5] 教育部[2001]4號文件(教高[2001]4號). 關于加強高等學校本科教學工作提高教學質量的若干意見. 2001年8月28日.
[6] 賈建,康寶生,李浩榮. “計算機圖形學”課程教學改革與實踐——面向信息與計算科學專業(yè)[J]. 高等理科教育,2004,(5):67-69.
[7] 吳麗華. 當代計算機教育應用的新發(fā)展[J]. 中外科技信息,2000,(1).
[8] 吳麗華. 建構主義與計算機教育理論的新發(fā)展[J]. 海南師范學院學報(教育科學版),1999,(4).
[9] Mesa 3D System. http://www.mesa3d.org/.
作者簡介
覃雄派,男,中國人民大學信息學院,講師,博士研究生,研究領域:多媒體技術。
地址:北京市中國人民大學信息學院,100872
E-mail:xiongpai@sohu.com
Tel:13651314780