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