倪波 鄧丹君 姚莉
摘要:目前,越來越多的高校在本科階段開設(shè)游戲開發(fā)方向的相關(guān)課程。針對“計算機(jī)圖形學(xué)”課程具有數(shù)學(xué)理論多和算法復(fù)雜等特點(diǎn),如何將圖形學(xué)理論和游戲開發(fā)有機(jī)地結(jié)合起來,在講授“計算機(jī)圖形學(xué)”課程的同時,兼顧游戲開發(fā)方向的人才培養(yǎng)目標(biāo),使得學(xué)生從游戲開發(fā)的視角理解圖形學(xué)相關(guān)理論并從圖形學(xué)的角度去思考游戲開發(fā)中的相關(guān)技術(shù)是一個值得深入探討的問題。為此,從“計算機(jī)圖形學(xué)”課程的特點(diǎn)分析開始,結(jié)合當(dāng)前教學(xué)過程中存在的問題,提出面向游戲開發(fā)導(dǎo)向的“計算機(jī)圖形學(xué)”課程建設(shè)的思路。
關(guān)鍵詞:計算機(jī)圖形學(xué);游戲開發(fā);課程建設(shè)
中圖分類號:G4
文獻(xiàn)標(biāo)識碼:A
doi:10.19311/j.cnki.16723198.2017.01.082
0引言
隨著市場對游戲開發(fā)人才的需求越來越大。許多高校在本科階段設(shè)置了有關(guān)游戲開發(fā)方向的課程。“計算機(jī)圖形學(xué)”作為一門計算機(jī)科學(xué)方向的專業(yè)基礎(chǔ)課,主要講授包括:模型繪制、模型渲染、紋理和光照等內(nèi)容。這些內(nèi)容是構(gòu)成游戲開發(fā)的主要理論基礎(chǔ)。然而,在實(shí)際教學(xué)過程中學(xué)生普遍反映“計算機(jī)圖形學(xué)”難學(xué),主要體現(xiàn)在圖形學(xué)涉及的數(shù)學(xué)知識較多、相關(guān)算法晦澀難懂。如果沒有大量的實(shí)踐,學(xué)生會感到空洞與乏味。如何在講授“計算機(jī)圖形學(xué)”基本理論的同時,結(jié)合游戲開發(fā)的實(shí)踐,使得學(xué)生將枯燥的理論和算法與游戲開發(fā)的能力實(shí)現(xiàn)有機(jī)的對接,是一個值得深入探討的問題。本文在分析了目前“計算機(jī)圖形學(xué)”授課內(nèi)容的基礎(chǔ)上,結(jié)合其內(nèi)容與游戲開發(fā)之間的內(nèi)在聯(lián)系,對面向游戲開發(fā)的“計算機(jī)圖形學(xué)”課程建設(shè)思路進(jìn)行了探討。
1當(dāng)前“計算機(jī)圖形學(xué)”授課現(xiàn)狀
目前大多數(shù)高校的本科“計算機(jī)圖形學(xué)”授課時間控制在50學(xué)時左右。以筆者所在的學(xué)校為例,理論與實(shí)驗(yàn)學(xué)時分別是36和14學(xué)時。如圖1所示,理論授課內(nèi)容主要分為二維、三維模型繪制、幾何變換和渲染,相關(guān)數(shù)學(xué)基礎(chǔ)和圖形引擎庫OpenGL等。傳統(tǒng)的課堂教學(xué)中,二維圖形學(xué)的內(nèi)容占據(jù)相當(dāng)大的比例。然而,在實(shí)際游戲開發(fā)實(shí)踐中,二維圖形涉及的較少,主要以包括:三維建模、幾何變換、視圖變換、材質(zhì)、紋理貼圖、圖形渲染、模型動畫等三維圖形學(xué)的內(nèi)容為主。如表1所示,實(shí)驗(yàn)內(nèi)容主要以模型的繪制、剪裁、渲染為主,實(shí)驗(yàn)類型主要以驗(yàn)證型為主,實(shí)現(xiàn)方法主要采用C++語言和OpenGL圖形庫。學(xué)生在學(xué)習(xí)這一部分內(nèi)容的時候,普遍感到算法較為枯燥,而且無法和實(shí)際應(yīng)用聯(lián)系起來,容易產(chǎn)生厭學(xué)的情緒。而且,OpenGL作為一款以C++為基礎(chǔ)的開源三維圖形引擎,優(yōu)點(diǎn)是獨(dú)立于窗口系統(tǒng)和操作系統(tǒng),以它為基礎(chǔ)開發(fā)的應(yīng)用程序可以十分方便地在各種平臺間移植,弊端是封裝性不夠,要實(shí)現(xiàn)復(fù)雜的游戲動畫效果需要學(xué)生對底層的動畫原理和數(shù)學(xué)知識有較強(qiáng)的理解和熟練掌握C++編程技能。
在授課環(huán)節(jié)上,老師一般采用是先講授圖形學(xué)理論課,然后進(jìn)行實(shí)驗(yàn)課,目的是在實(shí)驗(yàn)環(huán)節(jié)讓學(xué)生應(yīng)用所學(xué)的理論知識,鍛煉實(shí)踐能力。但該方式也存在一些弊端:理論課和實(shí)驗(yàn)課相對割裂,學(xué)生在學(xué)習(xí)圖形學(xué)算法和理論時對枯燥的內(nèi)容感到較難,缺少實(shí)踐,而在實(shí)驗(yàn)環(huán)節(jié),在有限的時間內(nèi)很難真正掌握開發(fā)工具并作出具有一定深度的作品。
2面向游戲開發(fā)能力的計算機(jī)圖形學(xué)課程建設(shè)思路
基于上述問題,筆者結(jié)合游戲開發(fā)所需要的能力特點(diǎn),從以下幾個方面入手,對“計算機(jī)圖形學(xué)”課程的改革進(jìn)行了論述。
2.1課程內(nèi)容
由于本門課程的學(xué)時限制,我們對目前授課內(nèi)容的基礎(chǔ)上進(jìn)行了相應(yīng)的取舍,即講授重點(diǎn)放在三維圖形學(xué)的內(nèi)容。另外,將一些游戲開發(fā)過程中較為關(guān)鍵的圖形學(xué)相關(guān)內(nèi)容補(bǔ)充到授課內(nèi)容中,例如以下兩方面的內(nèi)容:
場景組織與模型渲染:場景組織是三維游戲中核心內(nèi)容之一。在一個三維游戲中,需要將許多的模型用某種數(shù)據(jù)結(jié)構(gòu)的方式將其組織起來,然后在繪制每一幀的時候?qū)⑵滗秩咎幚?。如何合理有效地管理三維場景中物體之間的相關(guān)、從屬、互相影響的關(guān)系會對三維場景的生成效率產(chǎn)生重要影響。場景組織需要牽涉到數(shù)據(jù)結(jié)構(gòu)中的排序算法,如:N叉樹排序、堆排序算法。現(xiàn)有的大多數(shù)圖形學(xué)教材并沒有將上述內(nèi)容列入主要章節(jié),而場景組織的相關(guān)算法是實(shí)現(xiàn)游戲開發(fā)的核心算法之一,對這一部分的內(nèi)容應(yīng)補(bǔ)充進(jìn)授課內(nèi)容。
模型交互與動畫算法:在游戲開發(fā)過程中,三維模型的交互是利用鼠標(biāo)和鍵盤對模型的運(yùn)動進(jìn)行控制。三維模型的動畫包括:模型運(yùn)動、碰撞檢測、人體骨骼動畫、漫游等。掌握這部分內(nèi)容對于學(xué)生深入理解游戲開發(fā)來說也是極有必要的。根據(jù)筆者所知,目前的《計算機(jī)圖形學(xué)》教材中,大多數(shù)沒有涉及這部分內(nèi)容,但也有一些《計算機(jī)圖形學(xué)》課本增加了三維模型動畫及動力學(xué)的內(nèi)容,如潘云鶴等所著的《計算機(jī)圖形學(xué):原理、方法及應(yīng)用》一書中,就計算機(jī)動畫的應(yīng)用作為專門的一章內(nèi)容進(jìn)行介紹。
2.2內(nèi)容組織
針對圖形學(xué)中大多數(shù)的理論比較抽象,實(shí)驗(yàn)也大多為算法的驗(yàn)證型實(shí)驗(yàn)。大多數(shù)學(xué)生在學(xué)習(xí)本門課之前并沒有相關(guān)計算機(jī)圖形學(xué)方面的知識儲備,因此造成學(xué)生普遍反映沒能將所學(xué)知識應(yīng)用到實(shí)際應(yīng)用中,從而降低學(xué)習(xí)本門課程的興趣。教師在具體講授過程中,可以按照構(gòu)造游戲的流程,從角色建模講起,用游戲設(shè)計這一根主線找出各部分內(nèi)容之間的聯(lián)系,使得學(xué)生對課程的內(nèi)容和游戲開發(fā)之間的關(guān)系有一個全貌性的認(rèn)識。本文對圖形學(xué)中相關(guān)算法與游戲開發(fā)的具體應(yīng)用之間進(jìn)行必要的對接。例如,在講解物體建模內(nèi)容方面,可以先采用三維建模軟件(3DMAX或MAYA)實(shí)現(xiàn)基本物體的建模過程,并通過不同的視圖展示模型的線框或三角面片視圖。這樣可以讓學(xué)生直觀的感受圖形學(xué)中三維模型是如何構(gòu)造的,從而讓其理解在OpenGL中所調(diào)函數(shù)的意義。三維模型的顯示方面,通過在三維建模軟件中設(shè)置攝像機(jī)成像原理,經(jīng)過三維空間中實(shí)體的世界變換、視角變換等過程了解模型剪裁、幾何變換、投影變換的作用,從而更好的輔助學(xué)生了解相關(guān)算法的理解。真實(shí)感圖形學(xué)主要包括光照模型、紋理貼圖等,是圖形學(xué)中較為復(fù)雜和難理解的內(nèi)容。老師利用三維建模軟件中的燈光、材質(zhì)、質(zhì)感、紋理貼圖的實(shí)現(xiàn)過程,讓學(xué)生直觀的了解圖形學(xué)中實(shí)現(xiàn)真實(shí)感的途徑與方法。欲使課堂講授的內(nèi)容生動起來,必須有實(shí)際的案例支撐,因此建設(shè)面向游戲方向的圖形學(xué)案例庫,使得學(xué)生能夠快速理解和掌握相關(guān)理論和技術(shù),對于提高圖形學(xué)課程的授課質(zhì)量至關(guān)重要。
2.3圖形庫的使用
目前大多數(shù)圖形學(xué)課本都是采用OpenGL作為實(shí)驗(yàn)的圖形生成庫。該圖形庫對于學(xué)生理解簡單模型的生成具有良好的作用。但是OpenGL對場景組織、模型渲染、真實(shí)感、動畫等功能的封裝不夠,從而造成需要學(xué)生對一些渲染、光照等數(shù)學(xué)模型有著較為深刻的理解,并將其用C++語言和OpenGL實(shí)現(xiàn)。為了讓學(xué)生掌握游戲開發(fā)中有關(guān)場景組織、模型渲染和動畫等相關(guān)功能,本文建議使用當(dāng)前主流的3D圖形API,如:DirectX或者OSG(Open Screen Graph)等。DirectX是微軟開發(fā)的多媒體引擎主要用于Windows操作系統(tǒng)開發(fā)。Open Scene Graph是一個著名的開源三維圖形庫,被廣泛的應(yīng)用在可視化仿真、游戲、虛擬現(xiàn)實(shí)、科學(xué)計算、三維重建。這兩個圖形庫對涉及場景組織、渲染、光照、模型交互動畫等高級算法具有良好的封裝,使得學(xué)生在使用只需要調(diào)用相關(guān)的API函數(shù)即可生成生動的游戲渲染和動畫效果。
3結(jié)論
結(jié)合圖形學(xué)教學(xué)的實(shí)際以及游戲開發(fā)專業(yè)方向的培養(yǎng)目標(biāo),從教學(xué)內(nèi)容、內(nèi)容組織、圖形庫選擇三個方面對于面向游戲開發(fā)導(dǎo)向的“計算機(jī)圖形學(xué)”課程教學(xué)改革進(jìn)行了一些探討,希望能對游戲開發(fā)專業(yè)的教學(xué)和課程建設(shè)有所促進(jìn)。
參考文獻(xiàn)
[1]孫家廣,胡事民.計算機(jī)圖形學(xué)基礎(chǔ)教程[M].北京:清華大學(xué)出版社,2005.
[2]向世明.OpenGL編程與實(shí)例[M].北京:電子工業(yè)出版社,1999.
[3]潘云鶴.計算機(jī)圖形學(xué):原理、方法及應(yīng)用[M].北京:高等教育出版社,2002.
[4]Luna F D.Introduction to 3D Game Programming with DirectX 10[J].Mathematical Statistics,5th Edition,Eaglewood Cliffs,NJ:Prentice-Hall,2008.
[5]王銳,錢學(xué)雷.OpenSceneGraph三維渲染引擎設(shè)計與實(shí)踐[M].北京:清華大學(xué)出版社,2009.