摘 要: 針對可視化程序設(shè)計教學(xué)過程中顯現(xiàn)的問題,提出相應(yīng)的教學(xué)改進方法。以MFC框架為基礎(chǔ),通過加強上機實踐、改進多媒體教學(xué)、引入實例及制作教學(xué)演示程序,引導(dǎo)學(xué)生學(xué)習(xí)OpenGL可視化函數(shù)工具包,結(jié)合地理信息系統(tǒng)專業(yè)學(xué)生的培養(yǎng)方式,為學(xué)生制定學(xué)習(xí)和實踐平臺,并開發(fā)出相應(yīng)的教學(xué)演示系統(tǒng),很好地輔助課堂教學(xué),采用教學(xué)互動方式,開拓了學(xué)生的思維模式,顯著提高教學(xué)質(zhì)量。
關(guān)鍵詞: OpenGL;MFC;教學(xué)實踐;教學(xué)改革
可視化編程技術(shù)已經(jīng)廣泛應(yīng)用在各行各業(yè)中[1-4],對于地理信息系統(tǒng)專業(yè)學(xué)生也必須緊跟時代潮流,將可視化程序設(shè)計掌握并運用到實踐學(xué)習(xí)中去。本校將OpenGL三維可視化程序設(shè)計作為一門必修課程列入教學(xué)計劃中。如何培養(yǎng)學(xué)生學(xué)習(xí)本專業(yè)圖形的生成算法及顯示流程,如何利用VC與OpenGL結(jié)合進行學(xué)生程序開發(fā)能力的培養(yǎng),并在有限的學(xué)時條件下,達到理想的教學(xué)目標(biāo),不是一件易事。
1 OpenGL教學(xué)中存在的問題
1.1 VC++平臺環(huán)境不熟悉
傳統(tǒng)的教學(xué)平臺選擇VC++控制臺應(yīng)用程序作為演示平臺,該平臺程序設(shè)計簡單,易于理解,適合有C語言功底的學(xué)生學(xué)習(xí)。但該平臺可視化演示效果差,針對復(fù)雜的地理場景顯示顯得不夠?qū)挿海狈刹僮餍?,人機交互能力有限,教學(xué)實踐環(huán)節(jié)不夠科學(xué),不夠系統(tǒng)[5]。
1.2 OpenGL庫函數(shù)眾多,難于掌握
OpenGL核心庫中包含115個函數(shù)(前綴為gl),實用庫中包含43個函數(shù)(前綴glu),輔助庫中包含31個函數(shù)(前綴aux),工具庫中包含30多個函數(shù)(前綴glut)[2]。每個庫中的函數(shù)都有很多的重載形式,這往往將需要掌握的庫函數(shù)加倍,在有限的課堂教學(xué)時間內(nèi),想要掌握OpenGL庫中的眾多函數(shù),會顯得力不從心。從而打擊學(xué)生的學(xué)習(xí)興趣,不利于教學(xué)。
1.3 部分關(guān)鍵函數(shù)參數(shù)個數(shù)多,不易理解
OpenGL的很多庫函數(shù)所攜帶的參數(shù)往往有很多,且不易掌握。例如,投影函數(shù)glFrustum(GLdouble left,GLdouble Right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far)帶有6個參數(shù),如果不配合圖解,很難讓學(xué)生理解并掌握它的使用。再比如二維紋理定義的函數(shù)void glTexImage2D(GLenum target,GLint level,GLint components,GLsizei width,glsizei height,GLint border,GLenum format,GLenum type,const GLvoid*pixels),相對于投影函數(shù)來說,二維紋理定義函數(shù)就顯得更加復(fù)雜,直接講解,難以理解其參數(shù)含義,不易掌握,從而產(chǎn)生畏難負(fù)面效應(yīng),不利于學(xué)生學(xué)習(xí)。
1.4 教學(xué)缺乏應(yīng)用背景,學(xué)習(xí)積極性不高
從學(xué)生的角度出發(fā),學(xué)生們只會根據(jù)教學(xué)內(nèi)容進行編程,缺乏對相關(guān)函數(shù)與算法的直觀展示,不能有效地吸引學(xué)生主動去學(xué)習(xí)。再者,大多數(shù)同學(xué)不重視三維圖形可視化方面的學(xué)習(xí),他們認(rèn)為將來工作不會涉及關(guān)于三維圖形設(shè)計方面的內(nèi)容,從而學(xué)習(xí)積極性不高,缺乏學(xué)習(xí)的主動性[4]。
2 教學(xué)方法改革與改進
2.1 選用MFC作為開發(fā)與講解框架
通常情況下,OpenGL以及計算機圖形學(xué)方面的教學(xué)都采用C/C++語言編寫,程序設(shè)計簡單,但可視化以及人機交互效果較差,學(xué)生掌握起來較困難。MFC(微軟基礎(chǔ)類庫)是VC++平臺下程序開發(fā)框架,該框架可以構(gòu)建基于對話框的應(yīng)用程序、基于單文檔的應(yīng)用程序以及基于多文檔的應(yīng)用程序,通過使用MFC框架下的諸多可視化控件進行編程,可以迅速建立界面美觀、通俗易懂、便于交互操作的程序框架,其典型的消息事件驅(qū)動模式[6-7],如菜單消息映射、基本控件消息映射(按鈕等),增加了人機交互操作,提升學(xué)生的學(xué)習(xí)興趣,大大提高學(xué)生的動手能力,通過不斷的探索人機交互操作,增進學(xué)習(xí)效率。
2.2 加強上機實踐輔導(dǎo)
OpenGL與MFC進行三維圖形可視化程序設(shè)計,除去課堂教學(xué)外,應(yīng)將大量的教學(xué)學(xué)時應(yīng)用在上機實踐環(huán)節(jié)上,通過布置相關(guān)的圖形演示程序及圖形顯示算法,一方面培養(yǎng)學(xué)生熟悉VC++編程環(huán)境,熟悉MFC與OpenGL如何聯(lián)合進行程序開發(fā);另一方面,通過推敲相關(guān)代碼,培養(yǎng)學(xué)生的實踐動手能力。
2.3 引用實例進行課堂教學(xué)
課前搜索一些與本節(jié)課程有關(guān)的應(yīng)用實例,如三維立體動畫、相關(guān)三維建??梢暬?a class="innerlink" href="http://www.xxav2194.com/tags/軟件" title="軟件" target="_blank">軟件等[8],在具體講解過程中,引入實例,既能提高學(xué)生們的學(xué)習(xí)興趣,又幫助他們提高對本節(jié)課的內(nèi)容理解。如打開Google SketchUp三維建模軟件,在其中演示物體的繪制、物體的平移、旋轉(zhuǎn)、縮放等操作,幫助他們學(xué)習(xí)glVertex()、glTranslate()、glRotate()等函數(shù),并理解函數(shù)所帶參數(shù)的意義,啟發(fā)學(xué)生們?nèi)ニ伎肌?br />
2.4 制作教學(xué)課件及相應(yīng)的演示程序
由于計算機軟硬件的飛速發(fā)展,傳統(tǒng)的板書式教學(xué)已經(jīng)向多媒體教學(xué)方向發(fā)展,而OpenGL教學(xué)又與計算機程序相關(guān)聯(lián),更加體現(xiàn)出多媒體教學(xué)的優(yōu)越性,圖形顯示直觀、易懂,符合學(xué)生們的好奇心理。將OpenGL講解內(nèi)容按前后章節(jié),利用powerpoint制作出精美的教學(xué)課件,并配以程序演示,從很大程度上吸引學(xué)生的注意力,并且,課件后附具體的作業(yè),將其拷貝給每一位學(xué)生,在課后業(yè)余時間依然可以隨時打開課件內(nèi)容學(xué)習(xí),為學(xué)好OpenGL提供便利。
2.5 采用教學(xué)互動,提高學(xué)生的空間想象能力與語言表達
在一段學(xué)時的課堂教學(xué)完成后,布置一次大作業(yè),要求學(xué)生們基于MFC框架,自由發(fā)揮,對現(xiàn)實世界的感興趣物體進行三維建模,要求寫出具體的程序代碼、建模思路及主要用到的OpenGL函數(shù),并制作PPT在課堂上進行教學(xué)互動,這無形中提高了教學(xué)質(zhì)量,達到了良好的教學(xué)目的。同時,在編寫代碼時,提高學(xué)生的空間想象力與邏輯思維能力,在教學(xué)互動中,又能培養(yǎng)其語言表達能力。
3 基于MFC的教學(xué)演示程序
為幫助C++功底較淺的學(xué)生學(xué)習(xí),將基礎(chǔ)的MFC與OpenGL程序框架搭建好,供日后學(xué)生自己向其中添加OpenGL建模代碼,并基于此編寫所有圖形顯示程序。以投影變換為例,圖1為教學(xué)演示投影函數(shù)詳解,圖中可以直觀展示glFrustum函數(shù)透視投影場景的效果及各參數(shù)的含義,右邊是該函數(shù)所攜帶的6個參數(shù)。根據(jù)圖解,學(xué)生們很容易就可以掌握這個函數(shù)的使用,圖2亦同理。
再以圖3為例,在顏色教學(xué)過程中,用到了MFC中滑塊、滾動條、旋鈕、編輯框等控件,通過三色分量RGB的任意取值,在右邊的顯示框中,動態(tài)顯示當(dāng)前取值顏色,一方面使學(xué)生們熟悉MFC常用控件的使用,另一方面,掌握OpenGL中有關(guān)顏色操作函數(shù),將MFC與OpenGL的聯(lián)合更加深入易懂。
通過這樣一些教學(xué)改革,啟發(fā)學(xué)生進行創(chuàng)造性思維,在教學(xué)互動過程中,同學(xué)們都紛紛拿出自己所建的模型進行討論,達到了良好的教學(xué)效果。從改革教學(xué)方法、教學(xué)課件入手,利用實例吸引學(xué)生注意力,不斷提高本課程的教學(xué)質(zhì)量。
參考文獻
[1] 劉煜崗,蔡洪斌.《計算機圖形學(xué)》實驗教學(xué)研究與探討[J].實驗科學(xué)與技術(shù),2012,10(6):262-264.
[2] RICHARD S. WRIGHT, J R. Benjamin Lipchak Nicholas haemel, 張琪,付飛(譯).OpenGL超級寶典[M].北京:人民郵電出版社,2011.
[3] BO CHEN,HARRY H.Cheng.Interpretive OpenGL for Computer Graphics[J]. COMPUTERS &GRAPHICS, 2005,29:331-339.
[4] 楊斌.OpenGL在計算機圖形學(xué)教學(xué)中的應(yīng)用研究[J].滁州學(xué)院學(xué)報,2012,14(5):105-107.
[5] 張燦.基于OpenGL實驗平臺的計算機圖形學(xué)教學(xué)改革研究[J].電腦知識與技術(shù),2012,8(32):7826-7827.
[6] 賀少華,吳新躍.基于VC++和OpenGL的大型機械裝置虛擬教學(xué)訓(xùn)練系統(tǒng)的開發(fā)[J].系統(tǒng)仿真學(xué)報,2009,21(4):1059-1062.
[7] 黃燕挺.三維控件在教學(xué)實驗中的應(yīng)用研究[J].計算機與數(shù)字工程,2011,39(8):192-195.
[8] 楊長強,鄭永果.“計算機圖形學(xué)”教改實踐[J].計算機教育,2010(24):53-56.