《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于OpenGL和MFC的三維建模教學(xué)實(shí)踐與改革
基于OpenGL和MFC的三維建模教學(xué)實(shí)踐與改革
來(lái)源:微型機(jī)與應(yīng)用2014年第3期
張志華1,程耀東2,,張新秀1
(1.蘭州交通大學(xué) 測(cè)繪與地理信息學(xué)院,甘肅 蘭州 730070,; 2.蘭州交通大學(xué) 土木工程學(xué)院,
摘要: 針對(duì)可視化程序設(shè)計(jì)教學(xué)過(guò)程中顯現(xiàn)的問(wèn)題,,提出相應(yīng)的教學(xué)改進(jìn)方法,。以MFC框架為基礎(chǔ),通過(guò)加強(qiáng)上機(jī)實(shí)踐,、改進(jìn)多媒體教學(xué),、引入實(shí)例及制作教學(xué)演示程序,,引導(dǎo)學(xué)生學(xué)習(xí)OpenGL可視化函數(shù)工具包,,結(jié)合地理信息系統(tǒng)專業(yè)學(xué)生的培養(yǎng)方式,,為學(xué)生制定學(xué)習(xí)和實(shí)踐平臺(tái),并開(kāi)發(fā)出相應(yīng)的教學(xué)演示系統(tǒng),,很好地輔助課堂教學(xué),,采用教學(xué)互動(dòng)方式,開(kāi)拓了學(xué)生的思維模式,,顯著提高教學(xué)質(zhì)量,。
Abstract:
Key words :

摘  要: 針對(duì)可視化程序設(shè)計(jì)教學(xué)過(guò)程中顯現(xiàn)的問(wèn)題,提出相應(yīng)的教學(xué)改進(jìn)方法,。以MFC框架為基礎(chǔ),,通過(guò)加強(qiáng)上機(jī)實(shí)踐、改進(jìn)多媒體教學(xué),、引入實(shí)例及制作教學(xué)演示程序,,引導(dǎo)學(xué)生學(xué)習(xí)OpenGL可視化函數(shù)工具包,結(jié)合地理信息系統(tǒng)專業(yè)學(xué)生的培養(yǎng)方式,,為學(xué)生制定學(xué)習(xí)和實(shí)踐平臺(tái),,并開(kāi)發(fā)出相應(yīng)的教學(xué)演示系統(tǒng),很好地輔助課堂教學(xué),,采用教學(xué)互動(dòng)方式,,開(kāi)拓了學(xué)生的思維模式,顯著提高教學(xué)質(zhì)量,。
關(guān)鍵詞: OpenGL,;MFC;教學(xué)實(shí)踐,;教學(xué)改革

 可視化編程技術(shù)已經(jīng)廣泛應(yīng)用在各行各業(yè)中[1-4],,對(duì)于地理信息系統(tǒng)專業(yè)學(xué)生也必須緊跟時(shí)代潮流,將可視化程序設(shè)計(jì)掌握并運(yùn)用到實(shí)踐學(xué)習(xí)中去,。本校將OpenGL三維可視化程序設(shè)計(jì)作為一門(mén)必修課程列入教學(xué)計(jì)劃中,。如何培養(yǎng)學(xué)生學(xué)習(xí)本專業(yè)圖形的生成算法及顯示流程,如何利用VC與OpenGL結(jié)合進(jìn)行學(xué)生程序開(kāi)發(fā)能力的培養(yǎng),,并在有限的學(xué)時(shí)條件下,,達(dá)到理想的教學(xué)目標(biāo),不是一件易事,。
1 OpenGL教學(xué)中存在的問(wèn)題
1.1 VC++平臺(tái)環(huán)境不熟悉

 傳統(tǒng)的教學(xué)平臺(tái)選擇VC++控制臺(tái)應(yīng)用程序作為演示平臺(tái),,該平臺(tái)程序設(shè)計(jì)簡(jiǎn)單,易于理解,,適合有C語(yǔ)言功底的學(xué)生學(xué)習(xí),。但該平臺(tái)可視化演示效果差,,針對(duì)復(fù)雜的地理場(chǎng)景顯示顯得不夠?qū)挿海狈刹僮餍?,人機(jī)交互能力有限,,教學(xué)實(shí)踐環(huán)節(jié)不夠科學(xué),不夠系統(tǒng)[5],。
1.2 OpenGL庫(kù)函數(shù)眾多,,難于掌握
 OpenGL核心庫(kù)中包含115個(gè)函數(shù)(前綴為gl),實(shí)用庫(kù)中包含43個(gè)函數(shù)(前綴glu),,輔助庫(kù)中包含31個(gè)函數(shù)(前綴aux),,工具庫(kù)中包含30多個(gè)函數(shù)(前綴glut)[2]。每個(gè)庫(kù)中的函數(shù)都有很多的重載形式,,這往往將需要掌握的庫(kù)函數(shù)加倍,,在有限的課堂教學(xué)時(shí)間內(nèi),想要掌握OpenGL庫(kù)中的眾多函數(shù),,會(huì)顯得力不從心,。從而打擊學(xué)生的學(xué)習(xí)興趣,不利于教學(xué),。
1.3 部分關(guān)鍵函數(shù)參數(shù)個(gè)數(shù)多,,不易理解
 OpenGL的很多庫(kù)函數(shù)所攜帶的參數(shù)往往有很多,且不易掌握,。例如,,投影函數(shù)glFrustum(GLdouble left,GLdouble Right,,GLdouble bottom,,GLdouble top,GLdouble near,,GLdouble far)帶有6個(gè)參數(shù),,如果不配合圖解,很難讓學(xué)生理解并掌握它的使用,。再比如二維紋理定義的函數(shù)void glTexImage2D(GLenum target,,GLint level,GLint components,,GLsizei width,,glsizei height,GLint border,,GLenum format,,GLenum type,const GLvoid*pixels),相對(duì)于投影函數(shù)來(lái)說(shuō),,二維紋理定義函數(shù)就顯得更加復(fù)雜,,直接講解,難以理解其參數(shù)含義,,不易掌握,,從而產(chǎn)生畏難負(fù)面效應(yīng),不利于學(xué)生學(xué)習(xí),。
1.4 教學(xué)缺乏應(yīng)用背景,,學(xué)習(xí)積極性不高
 從學(xué)生的角度出發(fā),,學(xué)生們只會(huì)根據(jù)教學(xué)內(nèi)容進(jìn)行編程,缺乏對(duì)相關(guān)函數(shù)與算法的直觀展示,,不能有效地吸引學(xué)生主動(dòng)去學(xué)習(xí),。再者,大多數(shù)同學(xué)不重視三維圖形可視化方面的學(xué)習(xí),,他們認(rèn)為將來(lái)工作不會(huì)涉及關(guān)于三維圖形設(shè)計(jì)方面的內(nèi)容,,從而學(xué)習(xí)積極性不高,缺乏學(xué)習(xí)的主動(dòng)性[4],。
2 教學(xué)方法改革與改進(jìn)
2.1 選用MFC作為開(kāi)發(fā)與講解框架

 通常情況下,,OpenGL以及計(jì)算機(jī)圖形學(xué)方面的教學(xué)都采用C/C++語(yǔ)言編寫(xiě),程序設(shè)計(jì)簡(jiǎn)單,,但可視化以及人機(jī)交互效果較差,,學(xué)生掌握起來(lái)較困難。MFC(微軟基礎(chǔ)類(lèi)庫(kù))是VC++平臺(tái)下程序開(kāi)發(fā)框架,,該框架可以構(gòu)建基于對(duì)話框的應(yīng)用程序,、基于單文檔的應(yīng)用程序以及基于多文檔的應(yīng)用程序,通過(guò)使用MFC框架下的諸多可視化控件進(jìn)行編程,,可以迅速建立界面美觀,、通俗易懂、便于交互操作的程序框架,,其典型的消息事件驅(qū)動(dòng)模式[6-7],,如菜單消息映射、基本控件消息映射(按鈕等),,增加了人機(jī)交互操作,,提升學(xué)生的學(xué)習(xí)興趣,大大提高學(xué)生的動(dòng)手能力,,通過(guò)不斷的探索人機(jī)交互操作,,增進(jìn)學(xué)習(xí)效率。
2.2 加強(qiáng)上機(jī)實(shí)踐輔導(dǎo)
 OpenGL與MFC進(jìn)行三維圖形可視化程序設(shè)計(jì),除去課堂教學(xué)外,,應(yīng)將大量的教學(xué)學(xué)時(shí)應(yīng)用在上機(jī)實(shí)踐環(huán)節(jié)上,,通過(guò)布置相關(guān)的圖形演示程序及圖形顯示算法,一方面培養(yǎng)學(xué)生熟悉VC++編程環(huán)境,,熟悉MFC與OpenGL如何聯(lián)合進(jìn)行程序開(kāi)發(fā),;另一方面,通過(guò)推敲相關(guān)代碼,,培養(yǎng)學(xué)生的實(shí)踐動(dòng)手能力,。
2.3 引用實(shí)例進(jìn)行課堂教學(xué)
 課前搜索一些與本節(jié)課程有關(guān)的應(yīng)用實(shí)例,如三維立體動(dòng)畫(huà),、相關(guān)三維建??梢暬?a class="innerlink" href="http://forexkbc.com/tags/軟件" title="軟件" target="_blank">軟件等[8],在具體講解過(guò)程中,,引入實(shí)例,,既能提高學(xué)生們的學(xué)習(xí)興趣,又幫助他們提高對(duì)本節(jié)課的內(nèi)容理解,。如打開(kāi)Google SketchUp三維建模軟件,,在其中演示物體的繪制、物體的平移,、旋轉(zhuǎn),、縮放等操作,幫助他們學(xué)習(xí)glVertex(),、glTranslate(),、glRotate()等函數(shù),并理解函數(shù)所帶參數(shù)的意義,,啟發(fā)學(xué)生們?nèi)ニ伎肌?br /> 2.4 制作教學(xué)課件及相應(yīng)的演示程序
 由于計(jì)算機(jī)軟硬件的飛速發(fā)展,,傳統(tǒng)的板書(shū)式教學(xué)已經(jīng)向多媒體教學(xué)方向發(fā)展,而OpenGL教學(xué)又與計(jì)算機(jī)程序相關(guān)聯(lián),,更加體現(xiàn)出多媒體教學(xué)的優(yōu)越性,,圖形顯示直觀、易懂,,符合學(xué)生們的好奇心理,。將OpenGL講解內(nèi)容按前后章節(jié),利用powerpoint制作出精美的教學(xué)課件,,并配以程序演示,,從很大程度上吸引學(xué)生的注意力,并且,,課件后附具體的作業(yè),,將其拷貝給每一位學(xué)生,,在課后業(yè)余時(shí)間依然可以隨時(shí)打開(kāi)課件內(nèi)容學(xué)習(xí),為學(xué)好OpenGL提供便利,。
2.5 采用教學(xué)互動(dòng),,提高學(xué)生的空間想象能力與語(yǔ)言表達(dá)
 在一段學(xué)時(shí)的課堂教學(xué)完成后,布置一次大作業(yè),,要求學(xué)生們基于MFC框架,,自由發(fā)揮,對(duì)現(xiàn)實(shí)世界的感興趣物體進(jìn)行三維建模,,要求寫(xiě)出具體的程序代碼,、建模思路及主要用到的OpenGL函數(shù),并制作PPT在課堂上進(jìn)行教學(xué)互動(dòng),,這無(wú)形中提高了教學(xué)質(zhì)量,,達(dá)到了良好的教學(xué)目的。同時(shí),,在編寫(xiě)代碼時(shí),,提高學(xué)生的空間想象力與邏輯思維能力,,在教學(xué)互動(dòng)中,,又能培養(yǎng)其語(yǔ)言表達(dá)能力。
3 基于MFC的教學(xué)演示程序
 為幫助C++功底較淺的學(xué)生學(xué)習(xí),,將基礎(chǔ)的MFC與OpenGL程序框架搭建好,,供日后學(xué)生自己向其中添加OpenGL建模代碼,并基于此編寫(xiě)所有圖形顯示程序,。以投影變換為例,,圖1為教學(xué)演示投影函數(shù)詳解,,圖中可以直觀展示glFrustum函數(shù)透視投影場(chǎng)景的效果及各參數(shù)的含義,,右邊是該函數(shù)所攜帶的6個(gè)參數(shù)。根據(jù)圖解,,學(xué)生們很容易就可以掌握這個(gè)函數(shù)的使用,,圖2亦同理。

 再以圖3為例,,在顏色教學(xué)過(guò)程中,,用到了MFC中滑塊、滾動(dòng)條,、旋鈕,、編輯框等控件,,通過(guò)三色分量RGB的任意取值,在右邊的顯示框中,動(dòng)態(tài)顯示當(dāng)前取值顏色,,一方面使學(xué)生們熟悉MFC常用控件的使用,另一方面,,掌握OpenGL中有關(guān)顏色操作函數(shù),將MFC與OpenGL的聯(lián)合更加深入易懂,。

 

 

    通過(guò)這樣一些教學(xué)改革,,啟發(fā)學(xué)生進(jìn)行創(chuàng)造性思維,,在教學(xué)互動(dòng)過(guò)程中,同學(xué)們都紛紛拿出自己所建的模型進(jìn)行討論,,達(dá)到了良好的教學(xué)效果。從改革教學(xué)方法,、教學(xué)課件入手,利用實(shí)例吸引學(xué)生注意力,,不斷提高本課程的教學(xué)質(zhì)量。
參考文獻(xiàn)
[1] 劉煜崗,,蔡洪斌.《計(jì)算機(jī)圖形學(xué)》實(shí)驗(yàn)教學(xué)研究與探討[J].實(shí)驗(yàn)科學(xué)與技術(shù),,2012,10(6):262-264.
[2] RICHARD S. WRIGHT,, J R. Benjamin Lipchak Nicholas haemel, 張琪,,付飛(譯).OpenGL超級(jí)寶典[M].北京:人民郵電出版社,2011.
[3] BO CHEN,,HARRY H.Cheng.Interpretive OpenGL for Computer Graphics[J]. COMPUTERS &GRAPHICS,, 2005,,29:331-339.
[4] 楊斌.OpenGL在計(jì)算機(jī)圖形學(xué)教學(xué)中的應(yīng)用研究[J].滁州學(xué)院學(xué)報(bào),2012,,14(5):105-107.
[5] 張燦.基于OpenGL實(shí)驗(yàn)平臺(tái)的計(jì)算機(jī)圖形學(xué)教學(xué)改革研究[J].電腦知識(shí)與技術(shù),2012,,8(32):7826-7827.
[6] 賀少華,,吳新躍.基于VC++和OpenGL的大型機(jī)械裝置虛擬教學(xué)訓(xùn)練系統(tǒng)的開(kāi)發(fā)[J].系統(tǒng)仿真學(xué)報(bào),2009,,21(4):1059-1062.
[7] 黃燕挺.三維控件在教學(xué)實(shí)驗(yàn)中的應(yīng)用研究[J].計(jì)算機(jī)與數(shù)字工程,,2011,39(8):192-195.
[8] 楊長(zhǎng)強(qiáng),,鄭永果.“計(jì)算機(jī)圖形學(xué)”教改實(shí)踐[J].計(jì)算機(jī)教育,2010(24):53-56.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。