摘要:本文介紹了作者在計(jì)算機(jī)專(zhuān)業(yè)本科的圖形學(xué)教學(xué)中,如何針對(duì)新形勢(shì)下素質(zhì)教育的要求,在課堂教學(xué)和上機(jī)實(shí)踐兩個(gè)環(huán)節(jié)上,調(diào)動(dòng)學(xué)生的主動(dòng)性,激發(fā)學(xué)生學(xué)習(xí)的興趣,培養(yǎng)學(xué)生創(chuàng)新精神和動(dòng)手編程能力的若干具體措施,希望起到拋磚引玉的作用,與同行進(jìn)行交流,共同促進(jìn)和提高計(jì)算機(jī)本科的圖形學(xué)教學(xué)質(zhì)量。
關(guān)鍵詞:創(chuàng)新;計(jì)算機(jī)專(zhuān)業(yè);本科;計(jì)算機(jī)圖形學(xué);實(shí)踐教學(xué);編程
中圖分類(lèi)號(hào):G642文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1672-5913 (2007) 22-0080-04
1引言
計(jì)算機(jī)圖形學(xué)是計(jì)算機(jī)科學(xué)技術(shù)系本科的專(zhuān)業(yè)課程。它以二維和三維圖形作為研究對(duì)象,包括圖元的生成和填充、曲線(xiàn)和曲面、三維實(shí)體的表示、圖形的變換、顏色知識(shí)、圖形的消隱、真實(shí)感圖形的生成等內(nèi)容。在計(jì)算機(jī)圖形學(xué)的研究?jī)?nèi)容方面,非計(jì)算機(jī)專(zhuān)業(yè)的教師和學(xué)生有一個(gè)誤解,認(rèn)為是利用一些圖形軟件進(jìn)行圖形的創(chuàng)作,包括Flash、3DS等軟件。而計(jì)算機(jī)專(zhuān)業(yè)的本科生,有一部分在進(jìn)入該課程的學(xué)習(xí)之前也有這樣的誤解,這是錯(cuò)誤的。作者在教學(xué)中強(qiáng)調(diào)了該課程所研究的內(nèi)容,用一句大白話(huà)來(lái)說(shuō),那就是“我們是做一個(gè)3DS,而不是用3DS”。
計(jì)算機(jī)圖形學(xué)這門(mén)課程作為專(zhuān)業(yè)課,在大學(xué)三年級(jí)上學(xué)期(或者下學(xué)期)開(kāi)設(shè)。這個(gè)時(shí)間上的安排有一個(gè)優(yōu)勢(shì),那就是圖形學(xué)所需要的數(shù)學(xué)知識(shí),學(xué)生在大學(xué)一、二年級(jí)剛剛學(xué)過(guò),在理解圖形學(xué)的數(shù)學(xué)原理方面困難不是很大。學(xué)生在一年級(jí)和二年級(jí),一般是學(xué)習(xí)物理、電路、高等代數(shù)、數(shù)學(xué)分析、數(shù)據(jù)結(jié)構(gòu)等課程,C語(yǔ)言或者C++語(yǔ)言的學(xué)習(xí)還比較淺,至多是對(duì)語(yǔ)法的掌握和小程序的編寫(xiě),沒(méi)有真正用編程語(yǔ)言實(shí)現(xiàn)過(guò)一個(gè)中等規(guī)模的項(xiàng)目,除了少數(shù)學(xué)生之外,大部分學(xué)生的編程能力仍然比較弱,這是學(xué)生的基本特點(diǎn)。
作者針對(duì)課程的特點(diǎn)和計(jì)算機(jī)專(zhuān)業(yè)學(xué)生的特點(diǎn),對(duì)課堂教學(xué)和上機(jī)實(shí)踐進(jìn)行了精心的設(shè)計(jì),在教學(xué)中調(diào)動(dòng)學(xué)生的興趣和積極性,培養(yǎng)學(xué)生的動(dòng)手編程能力。作者采取了若干教學(xué)改進(jìn)措施。實(shí)踐表明,這些改進(jìn)措施對(duì)于培養(yǎng)學(xué)生的學(xué)習(xí)興趣,提高學(xué)生的綜合素質(zhì)具有很好的作用,取得了滿(mǎn)意的教學(xué)效果。
2互動(dòng)的課堂
作者在課堂教學(xué)中,通過(guò)動(dòng)畫(huà)演示激發(fā)學(xué)生的學(xué)習(xí)興趣;通過(guò)算法實(shí)際運(yùn)行效果的比較和分析,幫助學(xué)生理解掌握?qǐng)D形學(xué)算法;讓學(xué)生在課堂上講解算法的實(shí)現(xiàn),讓學(xué)生參與教學(xué)過(guò)程,調(diào)動(dòng)其學(xué)習(xí)的積極性。
2.1動(dòng)畫(huà)演示與課外作業(yè),培養(yǎng)學(xué)習(xí)的興趣
要激發(fā)學(xué)生學(xué)習(xí)的積極性,第一堂課的講解是非常重要的。第一堂課的內(nèi)容是對(duì)圖形學(xué)的介紹難度不大,涉及圖形學(xué)的內(nèi)容、圖形學(xué)的應(yīng)用和圖形學(xué)的發(fā)展歷史等。為了提高學(xué)生的學(xué)習(xí)興趣,作者把重點(diǎn)放在圖形學(xué)應(yīng)用的講解上,并且從學(xué)生熟悉的計(jì)算機(jī)三維游戲入手,介紹了虛擬現(xiàn)實(shí)技術(shù),并且舉了古羅馬建筑計(jì)算機(jī)重建實(shí)例,通過(guò)展示有關(guān)的動(dòng)畫(huà)片,學(xué)生被其壯麗和宏偉所震撼,接著作者展示了用計(jì)算機(jī)圖形技術(shù)重建的紫禁城和老北京的風(fēng)貌,激發(fā)了學(xué)生極大的興趣。


雖然計(jì)算機(jī)圖形學(xué)已經(jīng)獲得了很大的發(fā)展,應(yīng)用于包括CAD、圖形界面、藝術(shù)、GIS、虛擬現(xiàn)實(shí)等不同的領(lǐng)域,但是仍然有很多的問(wèn)題還沒(méi)有解決或者解決得不好。接著作者介紹了圖形學(xué)的若干前沿問(wèn)題,包括新的造型技術(shù)、真實(shí)感圖形渲染技術(shù)、人機(jī)交互技術(shù)等。向?qū)W生展示了計(jì)算機(jī)生成的皮膚,和自然的皮膚仍然具有很大的差距。最后作者要求學(xué)生進(jìn)行一次課外作業(yè),通過(guò)互連網(wǎng)調(diào)查一下,如何利用計(jì)算機(jī)圖形技術(shù)制作出羽毛、煙花、火焰、煙霧、水等效果,并且提交報(bào)告,從實(shí)現(xiàn)的基本原理、實(shí)際渲染的效果、仍然存在的問(wèn)題等方面進(jìn)行論述。經(jīng)過(guò)調(diào)查,學(xué)生對(duì)這些技術(shù)的理解仍然是膚淺的,但是這樣更加能夠激發(fā)學(xué)生進(jìn)一步探究的興趣。
2.2算法執(zhí)行效率的比較與算法的優(yōu)化
計(jì)算機(jī)圖形學(xué)這門(mén)課程,具有兩條天然的線(xiàn)索,一個(gè)是二維圖形,一個(gè)是三維圖形。二維圖形研究基本圖元的生成、二維填充問(wèn)題、混淆與反混淆、裁剪、圖形變換等內(nèi)容,而三維圖形則包括曲線(xiàn)和曲面、三維實(shí)體的建模、投影變換、消隱、顏色與渲染等內(nèi)容。在課堂教學(xué)當(dāng)中,作者根據(jù)上述線(xiàn)索進(jìn)行內(nèi)容的重新組織,并不嚴(yán)格按照教科書(shū)的章節(jié)編排來(lái)進(jìn)行講授,并且要求學(xué)生在內(nèi)容的自我把握上,遵循上述的線(xiàn)索。
計(jì)算機(jī)圖形學(xué)算法,需要以數(shù)學(xué)知識(shí)作為支撐,包括線(xiàn)性代數(shù)(矩陣的運(yùn)算)、解析幾何、微積分等內(nèi)容,學(xué)生對(duì)數(shù)學(xué)的掌握是純數(shù)學(xué)的思維,必須把學(xué)生的純數(shù)學(xué)思考引導(dǎo)到利用數(shù)學(xué)知識(shí)實(shí)現(xiàn)圖形學(xué)算法、并且有效提高算法效率上。在直線(xiàn)段圖元的生成算法上,作者進(jìn)行了這樣的講授設(shè)計(jì),首先,讓學(xué)生自我設(shè)計(jì)出一個(gè)基本的算法,大部分的學(xué)生不約而同地利用直線(xiàn)段的方程進(jìn)行算法的設(shè)計(jì),根據(jù)直線(xiàn)方程,從X-min到X-max,每個(gè)X代入直線(xiàn)方程 ,取得一個(gè)對(duì)應(yīng)的Y,然后把這一系列的

接下來(lái),作者首先指出該算法的若干嚴(yán)重問(wèn)題。首先是正確性,當(dāng)直線(xiàn)段比較陡峭(相對(duì)X軸),那么直線(xiàn)段就會(huì)發(fā)生斷裂。另外一個(gè)問(wèn)題是,算法的效率不高,比系統(tǒng)Windows GDI提供的算法,效率差10~100倍。在一個(gè)復(fù)雜的場(chǎng)景建模中,需要的直線(xiàn)段不是上萬(wàn)個(gè),而是上億個(gè),那么累計(jì)的效率差異將變得很大,性能差到難以忍受的程度。這是學(xué)生所始料未及的,對(duì)接下來(lái)介紹的幾個(gè)直線(xiàn)段算法,包括DDA算法、對(duì)稱(chēng)DDA算法、中點(diǎn)算法等,表現(xiàn)出強(qiáng)烈的學(xué)習(xí)興趣,一探究竟,為什么這些算法有這么高的效率。這種提出問(wèn)題,然后解決問(wèn)題的教學(xué)模式,一方面打破了一些學(xué)生的錯(cuò)誤認(rèn)識(shí),同時(shí)保持了學(xué)生學(xué)習(xí)過(guò)程中的興奮度。
最后作者進(jìn)行了總結(jié),對(duì)于計(jì)算機(jī)的CPU來(lái)講,定點(diǎn)運(yùn)算比浮點(diǎn)運(yùn)算更快,對(duì)于函數(shù)以及基本運(yùn)算來(lái)講,加減法運(yùn)算比乘除法運(yùn)算快,乘除法運(yùn)算比三角函數(shù)運(yùn)算快,作者總結(jié)了算法優(yōu)化的基本策略,(1) 用加減法運(yùn)算代替乘除法運(yùn)算;(2) 用定點(diǎn)運(yùn)算代替浮點(diǎn)運(yùn)算;(3) 避免三角函數(shù)計(jì)算以及其他耗時(shí)的函數(shù)調(diào)用;(4) 用迭代計(jì)算代替獨(dú)立步驟運(yùn)算。同時(shí),讓學(xué)生思考每個(gè)算法做了那些優(yōu)化,這樣學(xué)生對(duì)算法的效率有了更新的認(rèn)識(shí),避免了用純數(shù)學(xué)的知識(shí)來(lái)把握?qǐng)D形學(xué)算法的錯(cuò)誤思想,把數(shù)學(xué)問(wèn)題變化成計(jì)算效率高的算法。
2.3算法原理的掌握
在學(xué)習(xí)了基本圖元的6~7種算法之后,學(xué)生們普遍碰到這么一個(gè)困境,那就是對(duì)于每個(gè)算法,似乎理解起來(lái)沒(méi)有什么困難,但是又強(qiáng)烈地感到算法眾多,互相混淆,沒(méi)有真正把握每個(gè)算法的真正內(nèi)涵。于是作者要求學(xué)生針對(duì)每個(gè)圖元的生成算法,列一張表,按照算法的基本原理、算法的執(zhí)行過(guò)程(包括開(kāi)始條件、迭代步驟、終止條件)、算法的應(yīng)用場(chǎng)合和特殊情況的處理等三個(gè)方面來(lái)對(duì)每個(gè)算法進(jìn)行梳理。所有的算法都依賴(lài)于一個(gè)基本原理,這個(gè)原理決定了算法的框架,但是和具體實(shí)現(xiàn)是沒(méi)有關(guān)系的,只有理解了基本原理,才能理解算法的各個(gè)步驟為什么這么來(lái)設(shè)計(jì)。而對(duì)于算法的執(zhí)行過(guò)程,需要從開(kāi)始條件,終止條件、迭代步驟來(lái)把握,而最重要的是,必須對(duì)每個(gè)迭代步驟的控制機(jī)制要有深入理解,每個(gè)迭代步驟都有一個(gè)判斷依據(jù)(判據(jù)),來(lái)決定算法下一步應(yīng)該走哪條路線(xiàn),這是體現(xiàn)了算法基本原理的具體步驟。最后必須對(duì)算法的應(yīng)用場(chǎng)合有所了解,有些算法效率高,但是只適用某些情況,而有些算法效率稍微差點(diǎn),但是卻是一個(gè)通用的算法[8]。
2.4學(xué)生對(duì)算法的自主分析和實(shí)現(xiàn),講解與交流
在教學(xué)過(guò)程中,作者把講授和學(xué)生自己學(xué)習(xí)和理解、以及實(shí)現(xiàn)相結(jié)合,培養(yǎng)學(xué)生自主學(xué)習(xí)的能力。在講解了若干個(gè)算法之后,作者有意把一兩個(gè)算法留給學(xué)生進(jìn)行自己學(xué)習(xí),在掌握了上述介紹的基本思想方法之后,學(xué)生很容易地理解了該算法,并且要求所有學(xué)生上機(jī)實(shí)現(xiàn)。最后,隨機(jī)選擇一兩名學(xué)生,把其實(shí)現(xiàn)的程序源代碼在課堂上進(jìn)行講解。這樣做,既能保證所有的學(xué)生都下工夫去學(xué)習(xí)、動(dòng)手編程實(shí)現(xiàn),而且可以檢驗(yàn)學(xué)生在算法的理解上是否有偏差,及時(shí)進(jìn)行點(diǎn)評(píng)和改正。
學(xué)生必須自己在學(xué)習(xí)、理解算法的基礎(chǔ)上,用編程語(yǔ)言實(shí)現(xiàn)該算法,才能參加這樣的實(shí)踐交流課。既培養(yǎng)了學(xué)生學(xué)習(xí)的主動(dòng)性,又鍛煉了學(xué)生的動(dòng)手能力。
3上機(jī)環(huán)節(jié)
3.1小算法的上機(jī)實(shí)現(xiàn)
對(duì)于獨(dú)立的、復(fù)雜度比較小的算法,比如一些基本圖元的繪制、圖形的基本變換、裁剪、和反混淆技術(shù)等等,在推進(jìn)課程內(nèi)容的講授的同時(shí),即布置學(xué)生進(jìn)行上機(jī),并且經(jīng)過(guò)一周時(shí)間,把編程的源代碼以及上機(jī)報(bào)告提交上來(lái)。目的是加深學(xué)生對(duì)這些獨(dú)立的小算法的理解,并且培養(yǎng)學(xué)生的動(dòng)手編程能力。
3.2大作業(yè)的設(shè)計(jì)與階段式推進(jìn)
為了幫助學(xué)生對(duì)整門(mén)課程在理解上做到融會(huì)貫通,特別地設(shè)計(jì)了一個(gè)大作業(yè),要求學(xué)生建立一個(gè)足夠復(fù)雜的三維模型,這個(gè)模型需要兩個(gè)以上實(shí)體,其中一個(gè)實(shí)體要通過(guò)曲面來(lái)進(jìn)行建模,兩個(gè)實(shí)體之間互相有遮擋關(guān)系(其中一個(gè)物體是透明的作為可選項(xiàng)),實(shí)現(xiàn)幾何變換和投影變換,實(shí)現(xiàn)隱藏面的消除,最后根據(jù)現(xiàn)場(chǎng)燈光環(huán)境(多個(gè)光源作為可選項(xiàng)),進(jìn)行渲染,對(duì)于能力比較強(qiáng)的學(xué)生,要求其把靜態(tài)的場(chǎng)景轉(zhuǎn)變成動(dòng)畫(huà),可以起到平時(shí)成績(jī)加分的作用。通過(guò)把大作業(yè)設(shè)計(jì)成兩個(gè)層次的要求——基本層次和可選層次(透明物體、多個(gè)光源、動(dòng)畫(huà)實(shí)現(xiàn)等),既照顧了大部分學(xué)生的能力水平,又由于有加分的激勵(lì)作用,能力強(qiáng)的學(xué)生,其積極性普遍高漲,根據(jù)作者以往的經(jīng)驗(yàn),這部分學(xué)生往往做出很好的作品。

大作業(yè)把整門(mén)課程的主要內(nèi)容通過(guò)一個(gè)程序讓學(xué)生都實(shí)現(xiàn)出來(lái),難度是相當(dāng)大的。需要指導(dǎo)學(xué)生,適當(dāng)?shù)貙?duì)問(wèn)題進(jìn)行分割,把問(wèn)題的解決分成兩個(gè)階段,第一個(gè)階段,實(shí)現(xiàn)建立模型、投影變換,第二個(gè)階段實(shí)現(xiàn)燈光、消隱和渲染。第一個(gè)階段的目標(biāo)比較容易完成,實(shí)現(xiàn)實(shí)體投影的效果,取得了階段性成果,學(xué)生容易獲得成就感,有了進(jìn)一步前進(jìn)的動(dòng)力。
3.3團(tuán)隊(duì)協(xié)作
由于大作業(yè)具有一定的難度,對(duì)于能力強(qiáng)的學(xué)生,一個(gè)人獨(dú)立完成是可以,但是對(duì)于能力一般的學(xué)生,則鼓勵(lì)他們組合成小組,小組成員互相協(xié)作,共同完成大作業(yè),為了避免部分學(xué)生沒(méi)有投入足夠的精力,要求小組大小不能超過(guò)三個(gè)人,每個(gè)人的任務(wù)必須明確,每個(gè)人必須完成大程序的其中一到兩個(gè)模塊。
3.4引入競(jìng)爭(zhēng)、促進(jìn)交流
為了進(jìn)一步調(diào)動(dòng)學(xué)生挑戰(zhàn)困難的勇氣,就大作業(yè)的實(shí)現(xiàn),舉行程序設(shè)計(jì)比賽,以大作業(yè)的實(shí)現(xiàn)效果作為比較的指標(biāo),并且組織5人的評(píng)審小組,評(píng)審小組由學(xué)生經(jīng)過(guò)推舉來(lái)選拔,就大作業(yè)的實(shí)際渲染效果、軟件運(yùn)行的性能、程序的可讀性等三個(gè)方面進(jìn)行比較,并且打分。選出前三名,由實(shí)現(xiàn)的學(xué)生或者小組,講解其實(shí)現(xiàn)過(guò)程,促進(jìn)整個(gè)班級(jí)的學(xué)習(xí)上的交流。
4其他措施
在作者的圖形學(xué)教學(xué)實(shí)踐中,除了上文提到的若干方法和措施之外,還通過(guò)其他的一些措施來(lái)激發(fā)學(xué)生學(xué)習(xí)興趣和積極性,提高學(xué)習(xí)的效果[3][4][6]。這些措施包括鼓勵(lì)學(xué)生閱讀其他教學(xué)參考書(shū),幫助學(xué)生剖析成熟的三維圖形系統(tǒng)的源代碼(比如Mesa 3D System[9]等),通過(guò)分析開(kāi)源的成熟代碼,可以幫助學(xué)生理解大系統(tǒng)的構(gòu)造,以及具體功能的實(shí)現(xiàn),另外,還充分利用計(jì)算機(jī)多媒體教學(xué),以動(dòng)畫(huà)展示算法的執(zhí)行過(guò)程,比如通過(guò)動(dòng)畫(huà)展示裁剪的過(guò)程等。

參考文獻(xiàn)
[1] 何克抗. 論現(xiàn)代教育技術(shù)與教育深化改革[J]. 電化教育研究,1999.
[2] 閻立欽. 實(shí)施創(chuàng)新教育,培養(yǎng)創(chuàng)新人才[J]. 教育研究,1999.
[3] 吳濤. 非計(jì)算機(jī)專(zhuān)業(yè)計(jì)算機(jī)圖形學(xué)教學(xué)改革初探[J]. 科技資訊,2006,(34).
[4] 陳國(guó)龍,王曉東,傅清祥. “算法與數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)改革和實(shí)踐[J]. 高等理科教育,2003,(3):61-64.
[5] 教育部[2001]4號(hào)文件(教高[2001]4號(hào)). 關(guān)于加強(qiáng)高等學(xué)校本科教學(xué)工作提高教學(xué)質(zhì)量的若干意見(jiàn). 2001年8月28日.
[6] 賈建,康寶生,李浩榮. “計(jì)算機(jī)圖形學(xué)”課程教學(xué)改革與實(shí)踐——面向信息與計(jì)算科學(xué)專(zhuān)業(yè)[J]. 高等理科教育,2004,(5):67-69.
[7] 吳麗華. 當(dāng)代計(jì)算機(jī)教育應(yīng)用的新發(fā)展[J]. 中外科技信息,2000,(1).
[8] 吳麗華. 建構(gòu)主義與計(jì)算機(jī)教育理論的新發(fā)展[J]. 海南師范學(xué)院學(xué)報(bào)(教育科學(xué)版),1999,(4).
[9] Mesa 3D System. http://www.mesa3d.org/.
作者簡(jiǎn)介
覃雄派,男,中國(guó)人民大學(xué)信息學(xué)院,講師,博士研究生,研究領(lǐng)域:多媒體技術(shù)。
地址:北京市中國(guó)人民大學(xué)信息學(xué)院,100872
E-mail:xiongpai@sohu.com
Tel:13651314780