




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、畢業(yè)設(shè)計(jì)(論文)說明書學(xué) 院 軟件學(xué)院 專 業(yè) 軟件工程 年 級(jí) 2007 級(jí) 姓 名 指導(dǎo)教師 2011年 5月 16日畢業(yè)設(shè)計(jì)(論文)任務(wù)書題目:基于視頻的互動(dòng)游戲平臺(tái)研發(fā)學(xué)生姓名 學(xué)院名稱 軟件學(xué)院 專 業(yè) 軟件工程 學(xué) 號(hào) 指導(dǎo)教師 職 稱 副教授 一、原始依據(jù) 工作基礎(chǔ) 基于視頻的運(yùn)動(dòng)捕獲的相關(guān)技術(shù),在二維上本實(shí)驗(yàn)室有較為成熟的研究,可以做到實(shí)時(shí)的二維運(yùn)動(dòng)跟蹤,并已經(jīng)有較為完整的應(yīng)用范例,能給要開發(fā)的游戲系統(tǒng)提供所需要的實(shí)時(shí)運(yùn)動(dòng)信息。游戲開發(fā)需要windows程序設(shè)計(jì)、圖形學(xué)、三維游戲引擎的相關(guān)知識(shí)可以使開發(fā)更順利的進(jìn)行。 研究條件開發(fā)平臺(tái):windows開發(fā)工具:microsoft
2、 visual c+ 2010 express 應(yīng)用環(huán)境基于視頻的人體運(yùn)動(dòng)分析可廣泛應(yīng)用于智能監(jiān)控、體育運(yùn)動(dòng)分析、動(dòng)畫生成、人機(jī)交互、視頻會(huì)議、醫(yī)療診斷、虛擬現(xiàn)實(shí)等方面,具有廣闊的研究和應(yīng)用前景。使用體感技術(shù)作為輸入手段的游戲是新型電子游戲研究的熱門方向,已經(jīng)并將繼續(xù)有研究人員投身于體感游戲制作和游戲設(shè)計(jì)之中。 工作目的為本實(shí)驗(yàn)室已有的基于視頻的動(dòng)作捕獲系統(tǒng)提供測(cè)試和應(yīng)用平臺(tái),應(yīng)用現(xiàn)有算法基礎(chǔ)和開源游戲引擎開發(fā)出開發(fā)出一套具備良好用戶界面的、較完整的應(yīng)用軟件平臺(tái)。同時(shí)對(duì)體感游戲的設(shè)計(jì)思路進(jìn)行深入研究。二、參考文獻(xiàn)1 shakhnarovich g,viola p, darrell t,fast
3、 pose estimation with parameter-sensitive hashing c,ninth ieee international conference on computer vision, vols i and ii, proceedings,2003, 750757.2 c.j.taylor. reconstruction of articulated objects form point correspondences in a single uncalibrated imagec.cviu,80: 346-363, 2000.3 朱強(qiáng),莊越挺, 潘云鶴, 基于緊
4、身衣的人體動(dòng)畫研究j,軟件學(xué)報(bào)。2002, 13(4): 601607.4 barron.c, kakadiaris.ia, . estimating anthropometry and pose from a single image j. computer vision and image understanding, 2001,81(3):2692845 沈軍行, 孫守遷, 基于shape from silhouette方法的虛擬人體構(gòu)造j,中國(guó)圖形圖像學(xué)報(bào):a輯,2002,7(10):108910936 莊越挺,劉小明,潘云鶴,一種基于視頻的人體動(dòng)畫骨架提取技術(shù)j,計(jì)算機(jī)研究與發(fā)展,2
5、000, 37(4): 498506三、設(shè)計(jì)(研究)內(nèi)容和要求1設(shè)計(jì)內(nèi)容本課題計(jì)劃應(yīng)用現(xiàn)有基于視頻的動(dòng)作捕捉算法基礎(chǔ)和開源游戲引擎開發(fā)出開發(fā)出一套具備良好用戶界面的、較完整的應(yīng)用軟件平臺(tái)。2設(shè)計(jì)目標(biāo)及要求完成以下的工作內(nèi)容:l 熟悉windows平臺(tái)下的c+程序開發(fā)l 查閱資料,了解視頻處理和運(yùn)動(dòng)捕獲的算法l 實(shí)現(xiàn)基于ogre的游戲系統(tǒng)l 實(shí)現(xiàn)已有運(yùn)動(dòng)捕捉算法與游戲系統(tǒng)的整合l 完成基于體感輸入的游戲系統(tǒng)開發(fā),進(jìn)行簡(jiǎn)單系統(tǒng)測(cè)試l 完成15k-20k字的畢業(yè)設(shè)計(jì)論文 指導(dǎo)教師(簽字)年 月 日審題小組組長(zhǎng)(簽字)年 月 日天津大學(xué)本科生畢業(yè)設(shè)計(jì)(論文)開題報(bào)告課題名稱基于視頻的互動(dòng)游戲平臺(tái)研發(fā)學(xué)
6、院名稱軟件學(xué)院專業(yè)名稱軟件工程學(xué)生姓名指導(dǎo)教師一、課題的來源及意義當(dāng)今世界,電子游戲已經(jīng)在方方面面影響了人們的生活方式和思考方式。電子游戲產(chǎn)業(yè)也以其高額的利潤(rùn)成為熱門產(chǎn)業(yè)。目前,大部分的電子游戲一般使用一些特定的設(shè)備來完成對(duì)游戲的控制,例如游戲桿、鼠標(biāo)、鍵盤等,無疑這些控制器可以完成控制任務(wù),但是缺陷是明顯的:它們強(qiáng)制改變了人體的默認(rèn)動(dòng)作,尤其當(dāng)玩家進(jìn)行運(yùn)動(dòng)類游戲時(shí),游戲的動(dòng)作和實(shí)際從事這些運(yùn)動(dòng)的動(dòng)作完全不同,這大大的破壞了游戲的真實(shí)感。玩家對(duì)真實(shí)感的需求導(dǎo)致了體感技術(shù)的出現(xiàn)和發(fā)展。體感技術(shù),也可以稱之為動(dòng)作感應(yīng)控制技術(shù),即由計(jì)算機(jī)通過某些特殊方式對(duì)用戶的動(dòng)作進(jìn)行識(shí)別、解析,并按照預(yù)定方式,計(jì)
7、算機(jī)對(duì)相應(yīng)動(dòng)作做出反饋。由于體感技術(shù)直接使用身體動(dòng)作作為游戲輸入,因此它的真實(shí)感遠(yuǎn)高于普通輸入方式,在運(yùn)動(dòng)游戲、格斗游戲、舞蹈游戲等與現(xiàn)實(shí)密切相關(guān)的游戲類型中表現(xiàn)的尤為明顯。除了高沉浸式的游戲體驗(yàn)以外,體感游戲還一改電子游戲危害身體健康的的缺點(diǎn),它實(shí)現(xiàn)了在游戲中運(yùn)動(dòng),給人們帶來了一種更健康的娛樂方式和更快樂的運(yùn)動(dòng)方式。體感游戲的諸多優(yōu)勢(shì),使它一直以來受到各大游戲廠商的特別關(guān)注,從跳舞毯、wii到近期發(fā)布的kinect以及基于這些平臺(tái)而開發(fā)出來的眾多游戲都證明了體感技術(shù)和體感游戲的廣闊前景和其作為未來游戲發(fā)展方向的重要價(jià)值。本課題以通過視頻的動(dòng)作捕獲技術(shù)為基礎(chǔ),結(jié)合開源游戲引擎實(shí)現(xiàn)一個(gè)通過肢體動(dòng)
8、作直接控制的三維互動(dòng)游戲,本課題對(duì)動(dòng)作捕捉技術(shù)和相關(guān)游戲平臺(tái)的研究對(duì)于游戲技術(shù)未來的發(fā)展和游戲設(shè)計(jì)思路的開闊都具有非常積極的意義。二、國(guó)內(nèi)外發(fā)展?fàn)顩r由于體感游戲?qū)τ谟布母咭蕾囆?,大部分體感游戲都必須在某一特定的運(yùn)動(dòng)捕獲系統(tǒng)上運(yùn)行,運(yùn)動(dòng)捕獲系統(tǒng)主要的應(yīng)用方式:一種是基于遙感器的運(yùn)動(dòng)捕獲,另一種是基于視頻的運(yùn)動(dòng)捕獲?;谶b感器的動(dòng)作捕獲使用可手持的傳感器來獲得肢體的運(yùn)動(dòng)數(shù)據(jù),任天堂的family computer(即國(guó)內(nèi)俗稱的紅白機(jī)的主機(jī))上的光電槍可謂是體感控制觀念最原始的體現(xiàn),而此類應(yīng)用最典型的同樣是任天堂公司的產(chǎn)品:wiimote (即wii主機(jī)的遙控器),wiimote使用一塊adxl3
9、30 mems(微機(jī)電系統(tǒng))三軸加速度傳感芯片。在x/y/z三個(gè)軸向上感知±3g的加速度,采用模擬的方式輸出結(jié)果,從而得到玩家手臂的運(yùn)動(dòng)數(shù)據(jù)。其他類似產(chǎn)品的原因也大致相同,這里不再贅述。跳舞毯同樣是通過傳感器來獲得運(yùn)動(dòng)數(shù)據(jù),只不過和wiimote不同的是它的傳感器位置固定。但在數(shù)據(jù)輸入方式本質(zhì)上并無特殊之處。由于以擁有可手持的傳感器,此類平臺(tái)上的游戲以射擊、器械運(yùn)動(dòng)(如棒球,網(wǎng)球等)最有特色,著名作品包括:barker bill's trick shooting、wii sports等等。另一種動(dòng)作捕獲的應(yīng)用方式為基于視頻的動(dòng)作捕獲,它沒有傳感器,玩家直接在攝像頭前作出動(dòng)作,
10、系統(tǒng)即可識(shí)別。代表系統(tǒng)有sce公司eyetoy和微軟公司的kinect,eyetoy的原理是:攝像頭以固定的速率采集圖像,當(dāng)場(chǎng)景內(nèi)無變化時(shí),前后兩幅圖像內(nèi)容一致,當(dāng)有物體運(yùn)動(dòng)時(shí)則產(chǎn)生差異,因此通過簡(jiǎn)單的對(duì)相鄰兩幀圖像相減,得到畫面中不同的部分,即可以感知是否有運(yùn)動(dòng)物體及運(yùn)動(dòng)物體的一些屬性,比如大小,位置和顏色等。而kinect則更為高級(jí),它使用激光散斑(laser speckle)來獲得攝像頭面前玩家的三維動(dòng)作信息,在2米范圍內(nèi)其精度可以到達(dá)1厘米?;谝曨l的動(dòng)作捕獲可以獲得全身的運(yùn)動(dòng)數(shù)據(jù),使得游戲的設(shè)計(jì)思路開闊了不少,除了已有的射擊、運(yùn)動(dòng)、舞蹈游戲之外,格斗游戲,繪畫和非器械游戲也可以通過體
11、感來控制,著名作品包括:the fight、brunswick、kinect adventures、kinect zoo等等。本實(shí)驗(yàn)的輸入是基于視頻的,故而我們選擇了最為經(jīng)典的體感游戲類型舞蹈類游戲來作為研究對(duì)象,從跳舞毯開始舞蹈類游戲一直是體感游戲最具代表的類型,它能非常好的體現(xiàn)出基于視頻的動(dòng)作捕獲技術(shù)的特點(diǎn)和優(yōu)勢(shì),同時(shí)舞蹈類游戲在電子游戲發(fā)展史一直占有重要位置,我們可以從前人的努力中獲得大量經(jīng)驗(yàn)。三、本課題的研究目標(biāo)本課題計(jì)劃應(yīng)用現(xiàn)有基于視頻的動(dòng)作捕捉算法基礎(chǔ)和開源游戲引擎開發(fā)出一套具備良好用戶界面的、較完整的應(yīng)用軟件平臺(tái)。四、本課題的研究?jī)?nèi)容 掌握windows平臺(tái)下的c+圖形程序開發(fā)的
12、開發(fā)流程和技術(shù),掌握游戲引擎的使用方法,熟悉視頻處理和運(yùn)動(dòng)捕獲的算法,并將其較好的整合到游戲系統(tǒng)之中,最后實(shí)現(xiàn)以視頻作為輸入以ogre作為核心的游戲系統(tǒng),得到一個(gè)較為完整的技術(shù)展示平臺(tái)和一個(gè)具有可玩性的游戲。六、研究手段 microsoft visual c+ 2010 express,ogre,opencv七、進(jìn)度安排2010年12月20日-2011年3月 10 日 查閱資料,完成任務(wù)書 ,完成開題報(bào)告2011年 3月11日2011年3月 12日 開題報(bào)告會(huì)2011年 3月 13日2011年4月24日 確定軟件設(shè)計(jì)并完成設(shè)計(jì)的主要功能2011年 4月25日2011年4月30日 畢業(yè)設(shè)計(jì)中期報(bào)
13、告會(huì)2011年 5月1日2011年5月22日 對(duì)程序進(jìn)行調(diào)整和完善2011年 5月23日2011年6月22日 完成論文及答辯八、實(shí)驗(yàn)方案的可行性分析本試驗(yàn)室已經(jīng)完成了從視頻中實(shí)時(shí)提取二維動(dòng)作數(shù)據(jù)的全部算法攻關(guān)工作,并采用matlab和opencv分別進(jìn)行了算法的實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明算法有效。,可以做到實(shí)時(shí)的二維運(yùn)動(dòng)跟蹤,并已經(jīng)有較為完整的應(yīng)用范例,能給要開發(fā)的游戲系統(tǒng)提供所需要的實(shí)時(shí)運(yùn)動(dòng)信息。實(shí)驗(yàn)室前期項(xiàng)目中曾經(jīng)完成了三維游戲引擎的研發(fā)工作,對(duì)三維游戲的基本框架非常熟悉??梢宰鰹楸敬萎呍O(shè)的工作基礎(chǔ)。九、已具備的實(shí)驗(yàn)條件 基于視頻的運(yùn)動(dòng)捕獲的相關(guān)技術(shù),在二維上本實(shí)驗(yàn)室有較為成熟的研究,可以做到實(shí)時(shí)
14、的二維運(yùn)動(dòng)跟蹤,并已經(jīng)有較為完整的應(yīng)用范例,能給要開發(fā)的游戲系統(tǒng)提供所需要的實(shí)時(shí)運(yùn)動(dòng)信息。十、主要參考文獻(xiàn)1 shakhnarovich g,viola p, darrell t,fast pose estimation with parameter-sensitive hashing c,ninth ieee international conference on computer vision, vols i and ii, proceedings,2003, 750757.2 c.j.taylor. reconstruction of articulated objects form p
15、oint correspondences in a single uncalibrated imagec.cviu,80: 346-363, 2000.3 朱強(qiáng),莊越挺, 潘云鶴, 基于緊身衣的人體動(dòng)畫研究j,軟件學(xué)報(bào)。2002, 13(4): 601607.4 barron.c, kakadiaris.ia, . estimating anthropometry and pose from a single image j. computer vision and image understanding, 2001,81(3):2692845 沈軍行, 孫守遷, 基于shape from s
16、ilhouette方法的虛擬人體構(gòu)造j,中國(guó)圖形圖像學(xué)報(bào):a輯,2002,7(10):108910936 莊越挺,劉小明,潘云鶴,一種基于視頻的人體動(dòng)畫骨架提取技術(shù)j,計(jì)算機(jī)研究與發(fā)展,2000, 37(4): 4985067 周松華,肖靚,郭敏,基于svm的圖像分類研究 j,井岡山學(xué)院學(xué)報(bào),2009, 30(6): 43458 sahbi h.coarse-to-fine support vector machines for hierarchical face detection.(d),university of versailles,20039 welch g, bishop g. a
17、n introduction to kalman filterc. unc-chapel hill, tr 95-041, july 24, 2006:11610 趙懷勛,鄭敏, 李志強(qiáng). 一種自適應(yīng)光照的膚色識(shí)別算法j. 微電子學(xué)與計(jì)算機(jī),2009,28(6): 158164選題是否合適: 是 否課題能否實(shí)現(xiàn): 能 不能指導(dǎo)教師(簽字)年 月 日選題是否合適: 是 否課題能否實(shí)現(xiàn): 能 不能審題小組組長(zhǎng)(簽字)年 月 日摘 要基于視頻的運(yùn)動(dòng)捕獲技術(shù)是計(jì)算機(jī)視覺領(lǐng)域的重要課題之一,基于該技術(shù)的互動(dòng)游戲是未來電子游戲發(fā)展的重要方向之一。本文探索基于視頻的人體運(yùn)動(dòng)捕獲技術(shù)在3d游戲中的應(yīng)用。集中于
18、游戲?qū)崿F(xiàn)及與已有算法的對(duì)接。 首先依靠開源引擎ogre實(shí)現(xiàn)游戲?qū)?d的支持,并使用cegui支持玩家與游戲功能的交互,使用fmod音樂引擎提高游戲的樂趣。其次,探索從基于視頻的人體運(yùn)動(dòng)捕獲技術(shù)中獲得的人體運(yùn)動(dòng)數(shù)據(jù)和ogre引擎動(dòng)畫模塊的連接,本文以自定義數(shù)據(jù)格式來完成這個(gè)任務(wù)。本文同時(shí)研究了如何應(yīng)用opencv以及directshow來實(shí)現(xiàn)對(duì)攝像頭的支持。 最后,通過對(duì)游戲的測(cè)試,保證游戲的穩(wěn)定性和可用性。關(guān)鍵詞:ogre;opencv;電子游戲;體感abstractvideo-based motion capture technology is an important topic in c
19、omputer vision, the interactive game based on this technology is the future direction of electronic games development. this article explores the human body motion capture based video game in 3d applications. focus on the game implementation and docking with the existing algorithms.first, open-source
20、 3d game engine ogre support implementation and cegui support for players to interact with game features, the fmod music engine to improve the game.secondly, to explore the human body from a video-based motion capture technology to obtain data and human motion animation module ogre engine connected
21、to a custom data format this article to accomplish this task.this paper also studied how to achieve the opencv and directshow camera support.finally, test the game to ensure the stability and availability of the game.key words:ogre; opencv; electronic games; somatosensory目 錄abstract10第一章 概述11.1 研究的背
22、景和意義11.2 基于視頻捕獲的電子游戲在國(guó)內(nèi)外的發(fā)展?fàn)顩r11.3 本課題所作的工作21.3.1 實(shí)現(xiàn)舞蹈游戲21.3.2 與運(yùn)動(dòng)捕獲技術(shù)的交互31.3.3 基于軟件工程思想的項(xiàng)目管理31.4 論文結(jié)構(gòu)3第二章 本課題所用技術(shù)4第三章 系統(tǒng)需求53.1 需求概述53.2 用例描述53.3 模塊描述73.3 流程描述9第四章 系統(tǒng)設(shè)計(jì)124.1 系統(tǒng)邏輯結(jié)構(gòu)124.2 程序流程134.3 類設(shè)計(jì)15第五章 系統(tǒng)實(shí)現(xiàn)175.1 程序啟動(dòng)順序175.1.1 目的175.1.2 ogre的啟動(dòng)順序175.1.3 本系統(tǒng)的實(shí)現(xiàn)方式175.1.4 資源的加載185.2 游戲流程控制195.3 音樂195.
23、3.1 線程的啟動(dòng)195.3.2 音樂的試聽和播放195.4 角色和場(chǎng)景選擇195.4.1 位置的記錄195.4.2 動(dòng)畫的實(shí)現(xiàn)205.5 動(dòng)畫播放205.6 動(dòng)作數(shù)據(jù)獲取205.6.1 運(yùn)動(dòng)捕獲算法概述205.6.2 交互方式及數(shù)據(jù)格式215.6.3 數(shù)據(jù)處理215.7 攝像數(shù)據(jù)的獲取和展示21參考文獻(xiàn)222天津大學(xué)2007屆本科生畢業(yè)設(shè)計(jì)(論文)第一章 概述1.1 研究的背景和意義當(dāng)今世界,電子游戲已經(jīng)在方方面面影響了人們的生活方式和思考方式。電子游戲產(chǎn)業(yè)也以其高額的利潤(rùn)成為熱門產(chǎn)業(yè)。目前,大部分的電子游戲一般使用一些特定的設(shè)備來完成對(duì)游戲的控制,例如游戲桿、鼠標(biāo)、鍵盤等,無疑這些控制器可
24、以完成控制任務(wù),但是缺陷是明顯的:它們強(qiáng)制改變了人體的默認(rèn)動(dòng)作,尤其當(dāng)玩家進(jìn)行運(yùn)動(dòng)類游戲時(shí),游戲的動(dòng)作和實(shí)際從事這些運(yùn)動(dòng)的動(dòng)作完全不同,這大大的破壞了游戲的真實(shí)感。玩家對(duì)真實(shí)感的需求導(dǎo)致了體感技術(shù)的出現(xiàn)和發(fā)展。體感技術(shù),也可以稱之為動(dòng)作感應(yīng)控制技術(shù),即由計(jì)算機(jī)通過某些特殊方式對(duì)用戶的動(dòng)作進(jìn)行識(shí)別、解析,并按照預(yù)定方式,計(jì)算機(jī)對(duì)相應(yīng)動(dòng)作做出反饋。由于體感技術(shù)直接使用身體動(dòng)作作為游戲輸入,因此它的真實(shí)感遠(yuǎn)高于普通輸入方式,在運(yùn)動(dòng)游戲、格斗游戲、舞蹈游戲等與現(xiàn)實(shí)肢體運(yùn)動(dòng)密切相關(guān)的游戲類型中表現(xiàn)的尤為明顯。除了高沉浸式的游戲體驗(yàn)以外,體感游戲還一改電子游戲危害身體健康的的缺點(diǎn),它實(shí)現(xiàn)了在游戲中運(yùn)動(dòng),給
25、人們帶來了一種更健康的娛樂方式和更快樂的運(yùn)動(dòng)方式。體感游戲的諸多優(yōu)勢(shì),使它一直以來受到各大游戲廠商的特別關(guān)注,從跳舞毯、wii到近期發(fā)布的kinect以及基于這些平臺(tái)而開發(fā)出來的眾多游戲都證明了體感技術(shù)和體感游戲的廣闊前景和其作為未來游戲發(fā)展方向的重要價(jià)值。本課題以通過視頻的動(dòng)作捕獲技術(shù)為基礎(chǔ),結(jié)合開源游戲引擎實(shí)現(xiàn)一個(gè)通過肢體動(dòng)作直接控制的三維互動(dòng)游戲,本課題對(duì)動(dòng)作捕捉技術(shù)和相關(guān)游戲平臺(tái)的研究對(duì)于游戲技術(shù)未來的發(fā)展和游戲設(shè)計(jì)思路的開闊都具有非常積極的意義。1.2 基于視頻捕獲的電子游戲在國(guó)內(nèi)外的發(fā)展?fàn)顩r由于體感游戲?qū)τ谟布母咭蕾囆?,大部分體感游戲都必須在某一特定的運(yùn)動(dòng)捕獲系統(tǒng)上運(yùn)行,運(yùn)動(dòng)捕獲
26、系統(tǒng)主要的應(yīng)用方式:一種是基于遙感器的運(yùn)動(dòng)捕獲,另一種是基于視頻的運(yùn)動(dòng)捕獲。基于遙感器的動(dòng)作捕獲使用可手持的傳感器來獲得肢體的運(yùn)動(dòng)數(shù)據(jù),任天堂的family computer(即國(guó)內(nèi)俗稱的紅白機(jī)的主機(jī))上的光電槍可謂是體感控制觀念最原始的體現(xiàn),而此類應(yīng)用最典型的同樣是任天堂公司的產(chǎn)品:wiimote(即wii主機(jī)的遙控器),wiimote使用一塊adxl330 mems(微機(jī)電系統(tǒng))三軸加速度傳感芯片。在x/y/z三個(gè)軸向上感知±3g的加速度,采用模擬的方式輸出結(jié)果,從而得到玩家手臂的運(yùn)動(dòng)數(shù)據(jù)。其他類似產(chǎn)品的原因也大致相同,這里不再贅述。跳舞毯同樣是通過傳感器來獲得運(yùn)動(dòng)數(shù)據(jù),只不過和
27、wiimote不同的是它的傳感器位置固定。但在數(shù)據(jù)輸入方式本質(zhì)上并無特殊之處。由于以擁有可手持的傳感器,此類平臺(tái)上的游戲以射擊、器械運(yùn)動(dòng)(如棒球,網(wǎng)球等)最有特色,著名作品包括:barker bill's trick shooting、wii sports等等。另一種動(dòng)作捕獲的應(yīng)用方式為基于視頻的動(dòng)作捕獲,它沒有傳感器,玩家直接在攝像頭前作出動(dòng)作,系統(tǒng)即可識(shí)別。代表系統(tǒng)有sce公司eyetoy和微軟公司的kinect,eyetoy的原理是:攝像頭以固定的速率采集圖像,當(dāng)場(chǎng)景內(nèi)無變化時(shí),前后兩幅圖像內(nèi)容一致,當(dāng)有物體運(yùn)動(dòng)時(shí)則產(chǎn)生差異,因此通過簡(jiǎn)單的對(duì)相鄰兩幀圖像相減,得到畫面中不同的部分
28、,即可以感知是否有運(yùn)動(dòng)物體及運(yùn)動(dòng)物體的一些屬性,比如大小,位置和顏色等。而kinect則更為高級(jí),它使用激光散斑(laser speckle)來獲得攝像頭面前玩家的三維動(dòng)作信息,在2米范圍內(nèi)其精度可以到達(dá)1厘米。基于視頻的動(dòng)作捕獲可以獲得全身的運(yùn)動(dòng)數(shù)據(jù),使得游戲的設(shè)計(jì)思路開闊了不少,除了已有的射擊、運(yùn)動(dòng)、舞蹈游戲之外,格斗游戲,繪畫和非器械游戲也可以通過體感來控制,著名作品包括:the fight、brunswick、kinect adventures、kinect zoo等等。本實(shí)驗(yàn)的輸入是基于視頻的,故而我們選擇了最為經(jīng)典的體感游戲類型舞蹈類游戲來作為研究對(duì)象,從跳舞毯開始舞蹈類游戲一直是
29、體感游戲最具代表的類型,它能非常好的體現(xiàn)出基于視頻的動(dòng)作捕獲技術(shù)的特點(diǎn)和優(yōu)勢(shì),同時(shí)舞蹈類游戲在電子游戲發(fā)展史一直占有重要位置,我們可以從前人的努力中獲得大量經(jīng)驗(yàn)。1.3 本課題所作的工作1.3.1 實(shí)現(xiàn)舞蹈游戲本文所作的工作為實(shí)現(xiàn)一個(gè)基于運(yùn)動(dòng)捕獲技術(shù)(體感技術(shù))的舞蹈游戲,該舞蹈游戲具有電子游戲應(yīng)該具有的游戲特性:可控的游戲流程,能吸引玩家的游戲方式。同時(shí)具有代表未來電子游戲發(fā)展方向的先進(jìn)的交互手段:基于視頻的運(yùn)動(dòng)捕獲。本游戲的主要游戲行為是在攝像頭前做出游戲中的作為指導(dǎo)者身份存在的3d舞蹈者模型所示范的動(dòng)作,系統(tǒng)將捕獲玩家的舞蹈動(dòng)作,實(shí)時(shí)控制游戲內(nèi)另一個(gè)代表玩家自己的3d模型。同時(shí)系統(tǒng)將對(duì)兩
30、者的運(yùn)動(dòng)進(jìn)行比較,來評(píng)價(jià)玩家的舞蹈動(dòng)作。出于游戲性的考慮,本游戲還提供了與核心游戲相關(guān)的其他功能,包括在舞蹈過程中播放音樂,對(duì)該音樂的選擇。指導(dǎo)者以及玩家模型的選擇。舞蹈場(chǎng)景的選擇。由于本游戲同時(shí)承擔(dān)了由于本游戲同時(shí)承擔(dān)了對(duì)運(yùn)動(dòng)捕獲算法的測(cè)試工作,所以游戲會(huì)提供一個(gè)窗口來呈現(xiàn)攝像頭所捕獲的數(shù)據(jù)。1.3.2 與運(yùn)動(dòng)捕獲技術(shù)的交互(這部分我做完了在寫吧.)1.3.3 基于軟件工程思想的項(xiàng)目管理在課題的進(jìn)行過程中,每一個(gè)部分都按照軟件工程的方法來管理。開發(fā)過程被分為:需求及分析、設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試四個(gè)階段。因?yàn)楸鞠到y(tǒng)為實(shí)驗(yàn)性質(zhì),所以需求部分并不會(huì)占太大比例,因而這里把需求及分析階段合而為一。各個(gè)階段的
31、均有比較嚴(yán)格的時(shí)間安排和完整的文檔。需求及分析階段編寫了系統(tǒng)用例以及用例的詳細(xì)描述,以及系統(tǒng)的主要過程圖。這些文檔描述了系統(tǒng)需求以及未來的實(shí)現(xiàn)效果。設(shè)計(jì)階段編寫了系統(tǒng)的設(shè)計(jì)文檔,其中描述了系統(tǒng)的邏輯結(jié)構(gòu),程序流程,類描述等更加細(xì)節(jié)的問題。測(cè)試階段同樣編寫了測(cè)試文檔,用來對(duì)測(cè)試用例進(jìn)行管理。1.4 論文結(jié)構(gòu)第一章:介紹了本文的研究背景以及國(guó)內(nèi)外的現(xiàn)狀,并對(duì)本文的工作進(jìn)行了概要性描述.第二章:介紹本課題所用的技術(shù),以及應(yīng)用這些技術(shù)的方式。第三章:描述系統(tǒng)的需求第四章:描述針對(duì)系統(tǒng)需求而做出的系統(tǒng)設(shè)計(jì)方案第五章:詳盡描述系統(tǒng)的實(shí)現(xiàn)方式第六章:介紹對(duì)現(xiàn)有系統(tǒng)的不足,并對(duì)未來的工作提出建議。第二章 本課
32、題所用技術(shù)本課題通過一系列的開源技術(shù)來實(shí)現(xiàn)主要功能,其中包括:opencv、ogre、cegui,同時(shí)還應(yīng)用了一些非開源但是免費(fèi)的技術(shù),包括fmod、directshow。程序還使用了多線程技術(shù)。開發(fā)平臺(tái)為microsoft visual studio 2010 express。opencv是一個(gè)基于bsd許可證授權(quán)的跨平臺(tái)計(jì)算機(jī)視覺庫,它可以高效的進(jìn)行視頻的處理,在本課題中,opencv主要在動(dòng)作捕獲相關(guān)的算法中承擔(dān)攝像頭圖像的處理工作,為動(dòng)作捕獲提供基礎(chǔ)。同時(shí)在呈現(xiàn)攝像頭捕獲的圖像的過程中,opencv提供了較為方便的功能。ogre是一個(gè)基于lgpl許可證授權(quán)的3d圖形引擎,它能提供非常方
33、便高效的3d繪制。同時(shí)它具有非常完整文檔和豐富的學(xué)習(xí)資源。在本課題中,ogre是整個(gè)系統(tǒng)的核心,其他系統(tǒng)均以某種方式與它進(jìn)行著交互。它負(fù)責(zé)游戲中所有的場(chǎng)景和物體的繪制工作,同時(shí)還與那些不是以運(yùn)動(dòng)捕獲進(jìn)行的人機(jī)交互有著重要的關(guān)系。游戲流程的控制并沒有做到可以完全交給運(yùn)動(dòng)捕獲系統(tǒng)來完成,所以依然需要一個(gè)傳統(tǒng)的、基于圖形的界面系統(tǒng)。cegui就是這樣的系統(tǒng)。它是一個(gè)非常成熟的開源圖形界面庫,能非常方便的完成界面的繪制和對(duì)鼠標(biāo)事件的反應(yīng)。同時(shí)它可以與ogre非常完美的結(jié)合到一起。fmod是被廣泛應(yīng)用的跨平臺(tái)聲音引擎,它提供了一些非常方便的借口來實(shí)現(xiàn)本系統(tǒng)對(duì)音樂的需求。從而避免了直接操作directso
34、und所帶來的麻煩,使整個(gè)系統(tǒng)的設(shè)計(jì)更加的簡(jiǎn)潔、清晰。directshow被應(yīng)用在攝像頭的數(shù)據(jù)提取上。讓玩家直觀的的了解自己做了什么動(dòng)作。由于游戲過程中需要同時(shí)播放音樂、動(dòng)畫和處理運(yùn)動(dòng)捕獲系統(tǒng)所獲得的數(shù)據(jù),所以使用多線程技術(shù)是必要的,它是系統(tǒng)能夠并行的完成這些任務(wù)。第三章 系統(tǒng)需求3.1 需求概述本系統(tǒng)以攝像頭為輸入設(shè)備,獲得人體關(guān)節(jié)的運(yùn)動(dòng)數(shù)據(jù),來控制游戲中代表玩家的模型。游戲的進(jìn)行時(shí)要求玩家按照系統(tǒng)提示和虛擬模型的指導(dǎo)運(yùn)動(dòng)身體,當(dāng)運(yùn)動(dòng)滿足要求時(shí)即可得分,而當(dāng)運(yùn)動(dòng)與系統(tǒng)要求不符是則會(huì)扣分。系統(tǒng)要求的運(yùn)動(dòng)會(huì)根據(jù)音樂節(jié)奏決定,當(dāng)音樂結(jié)束本輪游戲結(jié)束。游戲分為三個(gè)場(chǎng)景:第一選擇歌曲,第二選擇玩家和指
35、導(dǎo)者的3d模型以及游戲場(chǎng)景,第三是游戲的主場(chǎng)景,顯示已經(jīng)選擇好的場(chǎng)景和人物。游戲功能包括:基于視頻的動(dòng)作捕獲,虛擬指導(dǎo),運(yùn)動(dòng)提示,玩家虛擬模型,測(cè)試模式,三維場(chǎng)景模式,3d顯示模式,音樂系統(tǒng),記分系統(tǒng),暫停及重新開始。3.2 用例描述本節(jié)用先用圖片的方式列出用例,然后再對(duì)用例進(jìn)行文字描述。圖3-1 系統(tǒng)用例1 選擇歌曲玩家選擇將在游戲進(jìn)行中播放的音樂,指導(dǎo)者的動(dòng)作將與該音樂有關(guān)。2 選擇場(chǎng)景選擇在游戲進(jìn)行時(shí)的背景。3 選擇玩家模型選擇在游戲進(jìn)行時(shí)玩家控制的虛擬人物的模型4 選擇指導(dǎo)者模型選擇游戲進(jìn)行時(shí)指導(dǎo)者的模型5 開始游戲開始舞蹈游戲6 退出游戲退出程序7 暫停游戲在游戲進(jìn)行中停止指導(dǎo)者的運(yùn)
36、動(dòng)和玩家對(duì)玩家模型的控制,并提供退出游戲和重新開始游戲的選項(xiàng)。8 重新開始游戲重新開始同樣的游戲,歌曲、場(chǎng)景、人物模型均不改變。9 查看分?jǐn)?shù)顯示玩家的游戲得分10 控制玩家模型玩家通過運(yùn)動(dòng)肢體來控制游戲中的模型,它將做出與玩家相似的動(dòng)作。3.3 模塊描述l 動(dòng)作捕獲本模塊通過處理攝像頭視頻,得到系統(tǒng)要求的玩家運(yùn)動(dòng)數(shù)據(jù)并提供給場(chǎng)景繪制模塊。模塊輸入:分辨率在30萬像素以上、至少20幀/秒采樣速率的攝像頭;攝像頭應(yīng)放置于顯示器正上方或正前方,用戶(站在攝像頭正前方5-10米處。模塊輸出:玩家運(yùn)動(dòng)信息。l 運(yùn)動(dòng)數(shù)據(jù)處理通過動(dòng)作捕獲系統(tǒng)得到的運(yùn)動(dòng)信息,需要經(jīng)過處理,把它轉(zhuǎn)化為游戲引擎需要的模型運(yùn)動(dòng)數(shù)據(jù)
37、才能使游戲中的人物模型開始運(yùn)動(dòng)。模塊輸入:運(yùn)動(dòng)捕獲系統(tǒng)傳遞的原始運(yùn)動(dòng)數(shù)據(jù)和關(guān)卡信息中的運(yùn)動(dòng)數(shù)據(jù)。模塊輸出:能被游戲引擎識(shí)別的模型運(yùn)動(dòng)信息。l 模型及場(chǎng)景繪制 提供游戲內(nèi)主要三維模型的繪制,包括:場(chǎng)景、指導(dǎo)模型和玩家模型。虛擬指導(dǎo)用于幫助玩家作出正確動(dòng)作。玩家模型用于幫助玩家更直觀的了解自己的動(dòng)作。本模塊的工作主要由三維游戲引擎ogre完成。名詞解釋:1、場(chǎng)景:根據(jù)關(guān)卡數(shù)據(jù)進(jìn)行的三維場(chǎng)景的繪制,指導(dǎo)模型、玩家模型均位于此場(chǎng)景之中。2、虛擬指導(dǎo):三維人形模型,由系統(tǒng)根據(jù)關(guān)卡數(shù)據(jù)中的模型數(shù)據(jù)生成,游戲開始后會(huì)會(huì)根據(jù)本關(guān)卡的運(yùn)動(dòng)數(shù)據(jù)在屏幕上進(jìn)行運(yùn)動(dòng)。3、玩家模型:系統(tǒng)根據(jù)關(guān)卡數(shù)據(jù)中的模型數(shù)據(jù)生成的三維
38、模型,游戲開始后根據(jù)運(yùn)動(dòng)捕獲系統(tǒng)輸出的運(yùn)動(dòng)數(shù)據(jù)在屏幕上運(yùn)動(dòng)。l 游戲控制用于收集玩家命令并作出反應(yīng)。程序前控制:輸出設(shè)備設(shè)置、游戲視頻設(shè)置、游戲音頻設(shè)置,這三種設(shè)置通過windows菜單方式進(jìn)行。游戲前控制:指導(dǎo)模型選擇、玩家模型選擇、場(chǎng)景選擇,這三者會(huì)給予玩家預(yù)覽,玩家通過用鼠標(biāo)點(diǎn)選預(yù)覽模型的方式進(jìn)行選擇。舞蹈數(shù)據(jù)選擇(其中包括了音樂數(shù)據(jù))、開始新游戲、退出程序、啟用指導(dǎo)、啟用玩家模型、啟用線條提示(包括指導(dǎo)和玩家兩個(gè))。以上選擇通過游戲菜單實(shí)現(xiàn)。游戲中控制:1、游戲暫停與繼續(xù):通過玩家肢體動(dòng)作實(shí)現(xiàn),當(dāng)玩家作出該動(dòng)作時(shí)游戲暫停;而在玩家用鼠標(biāo)點(diǎn)選繼續(xù)游戲后20秒,游戲?qū)⒗^續(xù)。2、重定位:當(dāng)游
39、戲暫停時(shí),游戲界面上會(huì)出現(xiàn)代表關(guān)卡長(zhǎng)度的計(jì)時(shí)條,玩家可用鼠標(biāo)拖動(dòng)計(jì)時(shí)條來重定位關(guān)卡進(jìn)度。3、關(guān)卡退出:當(dāng)游戲暫停時(shí),玩家可以用鼠標(biāo)點(diǎn)選退出指令,推出當(dāng)前關(guān)卡,返回游戲準(zhǔn)備界面。l 關(guān)卡管理 主要用于綜合玩家設(shè)置,為關(guān)卡提供非動(dòng)作數(shù)據(jù)支持。模塊輸入:游戲控制模塊中游戲前控制時(shí)玩家輸入的關(guān)卡信息,包括:指導(dǎo)模型文件、玩家模型文件、場(chǎng)景信息,舞蹈及音樂數(shù)據(jù),以及是否啟用指導(dǎo)與玩家模型,是否啟用線條提示。模塊輸出:包含關(guān)卡數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。提供給場(chǎng)景及模型繪制模塊進(jìn)行繪制。l 游戲性 此模塊負(fù)責(zé)除去游戲控制之外的與游戲性相關(guān)的工作,包括音樂系統(tǒng)及記分系統(tǒng)。音樂系統(tǒng):音樂信息與舞蹈動(dòng)作信息捆綁,當(dāng)一套舞蹈
40、動(dòng)作(或者音樂)被選取后,游戲開始后將播放這段音樂。同時(shí)在玩家選擇時(shí),將有音樂預(yù)覽提供。記分系統(tǒng):游戲進(jìn)行界面下方將實(shí)時(shí)顯示玩家當(dāng)前得分。記分方法如下:游戲過程中,如果玩家在規(guī)定時(shí)間內(nèi)到達(dá)預(yù)定出發(fā)點(diǎn)和終點(diǎn),系統(tǒng)將給予加分,如果玩家為在規(guī)定時(shí)間內(nèi)到達(dá)或者未按照要求軌跡運(yùn)動(dòng),該動(dòng)作即視為無效,系統(tǒng)將扣分。對(duì)于未按照軌跡運(yùn)動(dòng)的判定問題:一旦玩家模型關(guān)鍵點(diǎn)離開規(guī)定范圍,無論以后動(dòng)作是否正確,系統(tǒng)都將此次運(yùn)動(dòng)判定無效,同時(shí)如果在下一個(gè)動(dòng)作開始之前玩家因?yàn)槲窗凑罩斑\(yùn)動(dòng)軌跡運(yùn)動(dòng)而不能達(dá)到預(yù)定起點(diǎn),下次運(yùn)動(dòng)也將作廢。l 拓展系統(tǒng) 本模塊為可選方案,給系統(tǒng)提供更多的選擇和細(xì)節(jié)。三維運(yùn)動(dòng)數(shù)據(jù):開啟三維運(yùn)動(dòng)數(shù)據(jù)時(shí)
41、,動(dòng)作捕獲模塊將為玩家模型提供第三維的運(yùn)動(dòng)數(shù)據(jù),繪制時(shí)系統(tǒng)將根據(jù)此數(shù)據(jù)讓玩家模型進(jìn)行運(yùn)動(dòng),同時(shí)指導(dǎo)模型也將開啟三維運(yùn)動(dòng)模式,而不僅是平面運(yùn)動(dòng)。立體顯示:當(dāng)游戲輸出到立體顯示模塊時(shí)的系統(tǒng)運(yùn)行模式,將提供更多的和立體顯示有關(guān)的選項(xiàng)。線條提示:由系統(tǒng)根據(jù)關(guān)卡數(shù)據(jù)生成,游戲開始后在代表玩家模型和虛擬指導(dǎo)模型重要關(guān)節(jié)當(dāng)前位置以及下一步運(yùn)動(dòng)結(jié)束點(diǎn)會(huì)出現(xiàn)閃光點(diǎn)和連接這兩者的虛擬運(yùn)動(dòng)軌跡,運(yùn)動(dòng)軌跡為虛線,虛線點(diǎn)間隔代表運(yùn)動(dòng)速率:間隔越大,速度越慢;間隔越小,速度越快。玩家模型關(guān)鍵點(diǎn)在運(yùn)動(dòng)過程中將在軌跡上用較不明顯的閃光點(diǎn)標(biāo)志出實(shí)時(shí)位置。當(dāng)模型關(guān)鍵點(diǎn)運(yùn)動(dòng)到指定位置后,該提示將消失,同時(shí)所有的運(yùn)動(dòng)提示都有一個(gè)生命
42、周期,在生命周期結(jié)束后無論是否到達(dá)指定位置提示都將消失。當(dāng)玩家模型關(guān)鍵點(diǎn)的運(yùn)動(dòng)軌跡與預(yù)定軌跡不同時(shí),屏幕將在玩家模型上用不同顏色顯示出錯(cuò)誤的運(yùn)動(dòng)軌跡。3.3 流程描述 本節(jié)以圖片的方式來描述系統(tǒng)的主要流程。圖3-2 選擇歌曲流程描述圖3-3 選擇場(chǎng)景流程描述圖3-4 選擇模型流程描述圖3-5 控制玩家模型流程描述圖3-6 開始游戲流程描述第四章 系統(tǒng)設(shè)計(jì)4.1 系統(tǒng)邏輯結(jié)構(gòu)本節(jié)在圖片的方式邏輯上描述系統(tǒng)的結(jié)構(gòu)。圖4-1 系統(tǒng)邏輯結(jié)構(gòu)圖系統(tǒng)在邏輯上分為六個(gè)模塊,如上圖所示。其中文件控制模塊用于讀取文件,并把文件內(nèi)容提交給需要的游戲模塊,主要是關(guān)卡模塊和音樂系統(tǒng)。它提供了一個(gè)特制的借口用于獲得文件
43、名。三維引擎用于處理與3d繪制相關(guān)的所有工作。它提供了一些與ogre引擎相關(guān)的借口。它是游戲的主模塊用戶界面用于繪制ui,由于游戲具有三個(gè)場(chǎng)景,所以該模塊提供了選擇要加載場(chǎng)景的接口,其他的接口與界面的資源加載和繪制有關(guān)。游戲的主模塊通過調(diào)用它來實(shí)現(xiàn)用戶界面的繪制并獲得用戶指令。關(guān)卡模塊是一個(gè)數(shù)據(jù)模塊,主要用于將用戶選擇的數(shù)據(jù)進(jìn)行存儲(chǔ)和傳遞,這些數(shù)據(jù)包括人物模型、場(chǎng)景數(shù)據(jù)、音樂數(shù)據(jù)等。運(yùn)動(dòng)捕獲模塊會(huì)提供它經(jīng)過處理后的玩家運(yùn)動(dòng)數(shù)據(jù),并把它封裝成比較好的格式。計(jì)分模塊用于分析玩家動(dòng)作和指導(dǎo)者動(dòng)作之間的差距,并據(jù)此判斷玩家的舞蹈能力,從而對(duì)其進(jìn)行評(píng)價(jià)。4.2 程序概要流程本節(jié)將描述程序的概要流程。圖4
44、-2 系統(tǒng)概要流程程序啟動(dòng)后,見首先實(shí)例化main類,之后再main類中實(shí)現(xiàn)ogre的一系列初始化過程,包括:engine(即ogre root類)的初始化,scene(即場(chǎng)景)的初始化,framelistener(處理動(dòng)畫和輸入)的初始化以及ui的初始化,隨后開始逐幀渲染。除此之外還將啟動(dòng)另一個(gè)線程,用于處理與音樂相關(guān)的工作。4.4 類設(shè)計(jì)本節(jié)以圖的方式描述系統(tǒng)的類設(shè)計(jì)及類之間的關(guān)系。圖4-3 類示意圖游戲以ogre引擎為主體,如圖所示有三個(gè)類負(fù)責(zé)與ogr引擎交互,engine類主要負(fù)責(zé)引擎的初始化,包括創(chuàng)建ogre root類、加載資源和創(chuàng)建窗口等。scene類負(fù)責(zé)大部分3d物體的繪制和銷
45、毀工作,framelistener類負(fù)責(zé)與動(dòng)畫和輸入有關(guān)的工作。ui類是與cegui相關(guān)的類,它負(fù)責(zé)繪制ui、接受并把控制信息傳遞給相應(yīng)控制的類,這些類包括:framelistener、smilymain和scene。level和file是工具類,其中file類負(fù)責(zé)讀取目錄中的文件名并把它們封裝到一個(gè)std:list里面,level類負(fù)責(zé)保存幾乎所有的類間傳遞的數(shù)據(jù)。所以與它發(fā)生關(guān)系的類有很多。最后在另一個(gè)線程的sound類負(fù)責(zé)有關(guān)音樂方面的工作。它通過調(diào)用fmod的api來實(shí)現(xiàn)這些功能。4.3 程序詳細(xì)流程 本節(jié)將以圖片和文字來描述游戲的整個(gè)流程。圖5-1 系統(tǒng)流程示意圖上圖是整個(gè)游戲系統(tǒng)的
46、詳細(xì)流程示意圖,它以u(píng)i的切換和ui類的功能為主線,同時(shí)描述了在界面切換過程中其他類所作的工作。整個(gè)游戲分為四個(gè)場(chǎng)景,第一個(gè)是在資源加載過程中顯示的loading界面,后三個(gè)為可交互界面。1 歌曲選擇界面,2 模型及場(chǎng)景選擇界面,3 舞蹈界面。第一個(gè)界面的行為很簡(jiǎn)單,只是進(jìn)行了ui資源的加載和loading界面的繪制,繪制完成之后,將進(jìn)行上面已經(jīng)說明的全部資源的初始化工作,當(dāng)這一步完成之后,系統(tǒng)就會(huì)調(diào)用ui類的createui函數(shù)。上面的流程圖就是從這個(gè)函數(shù)開始的。createui首先需要銷毀前面的loading界面,然后加載選擇音樂這個(gè)界面的布局,加載過后就可以在游戲中呈現(xiàn)這個(gè)界面了。音樂選
47、擇界面主要有三個(gè)部分構(gòu)成,音樂列表和兩個(gè)按鈕。所以界面繪制結(jié)束之后,系統(tǒng)調(diào)用file類獲得音樂目錄中的音樂名稱并把它放到ui的列表上。之后的工作是繪制背景和注冊(cè)兩個(gè)按鈕的回調(diào)函數(shù),繪制背景有scene類完成,場(chǎng)景的背景是一個(gè)天空盒。注冊(cè)的兩個(gè)按鈕分別是前進(jìn)和退出,由于不同界面都具有退出這個(gè)功能,它將最后被描述。前進(jìn)的回調(diào)函數(shù)主要是切換場(chǎng)景,不過在切換之前要判斷玩家是否選擇了歌曲,如果沒有會(huì)彈出一個(gè)錯(cuò)誤提示,當(dāng)然這個(gè)錯(cuò)誤提示也會(huì)注冊(cè)一個(gè)用于返回的回調(diào)函數(shù)。用戶選擇過后,系統(tǒng)清除前一個(gè)界面,然后調(diào)用scene類中的函數(shù)去繪制3d模型,然后為角色及場(chǎng)景選擇界面注冊(cè)回調(diào)函數(shù)。第三個(gè)界面的回調(diào)函數(shù)一共有
48、五個(gè),分別對(duì)應(yīng)5個(gè)按鈕:改變場(chǎng)景、開始舞蹈、選擇指導(dǎo)者模型還是玩家模型、改變模型、返回。改變場(chǎng)景很簡(jiǎn)單,調(diào)用scene類,用新的天空盒(或者天空穹)替換掉當(dāng)前的就可以。開始舞蹈是進(jìn)入下一個(gè)場(chǎng)景。本游戲的設(shè)計(jì)是玩家模型和指導(dǎo)者模型的模型庫是公用的,所以只要在選擇模型的時(shí)候,指定目前選擇的是指導(dǎo)者模型還是玩家模型就可以完成兩者的選擇。這個(gè)動(dòng)作由第三個(gè)按鈕完成。選擇模型是通過動(dòng)畫方式直觀的來進(jìn)行的,返回與上一界面的退出的機(jī)理相同,同樣在本節(jié)最后描述。開始舞蹈后,同樣的清除前面的ui,并調(diào)用scene的函數(shù)清除3d模型,之后加載新的ui,調(diào)用scene中的函數(shù)繪制新的模型。并給界面中的唯一一個(gè)按鈕注冊(cè)
49、回調(diào)函數(shù)。退出按鈕被點(diǎn)擊時(shí)同樣會(huì)調(diào)用ui中的回調(diào)函數(shù),他判斷當(dāng)時(shí)所處的界面來進(jìn)行不同的行為,在歌曲選擇界面,它提供退出和返回游戲兩個(gè)選項(xiàng),角色選擇界面 他增加了返回上一界面的選項(xiàng), 舞蹈界面還要使游戲暫停.以上的選項(xiàng)也同樣是用回調(diào)函數(shù)實(shí)現(xiàn)的.以上描述了整個(gè)游戲流程和它的實(shí)現(xiàn)方式。通過上面的工作,實(shí)現(xiàn)了需求中關(guān)于流程控制的要求。第五章 系統(tǒng)實(shí)現(xiàn)5.1 程序啟動(dòng)順序5.1.1 目的ogre作為一個(gè)圖形引擎,在開始逐幀渲染之前,必然要進(jìn)行一系列的初始化工作,而ogre本身是非常靈活的,它并不需要把這些初始化工作集中于一個(gè)類中進(jìn)行,而是只要在渲染指令之前做好即可,所以可以按照自己的方式來安排類的設(shè)計(jì)。
50、本節(jié)的目的即在于解釋ogre的通用啟動(dòng)過程,然后介紹依照本系統(tǒng)類的設(shè)計(jì)是如何完成啟動(dòng)的。5.1.2 ogre的啟動(dòng)順序ogre的基礎(chǔ)生命周期包含了9個(gè)階段:創(chuàng)建root對(duì)象定義ogre需要用到的資源選擇并啟動(dòng)一個(gè)渲染系統(tǒng)創(chuàng)建渲染窗口初始化要用到的資源創(chuàng)建一個(gè)場(chǎng)景啟動(dòng)第三方庫或者插件創(chuàng)建一系列的framelistener開始渲染準(zhǔn)備好開始渲染之前的工作即可啟動(dòng)ogre來繪制場(chǎng)景了,而這些工作在本系統(tǒng)中分布到多個(gè)類來完成,下一節(jié)將詳細(xì)的描述本系統(tǒng)是如何完成ogre系統(tǒng)的啟動(dòng)工作的。5.1.3 本系統(tǒng)的實(shí)現(xiàn)方式 所有的windows窗口程序都是從winmain函數(shù)開始的,本游戲也不例外,在winma
51、in函數(shù)里所作的工作只是創(chuàng)建了smilymain類的一個(gè)實(shí)例,并調(diào)用實(shí)例的go函數(shù)。所以一切都將從smilymain的go開始。在smilymain的實(shí)例中,首先將創(chuàng)建一個(gè)engine類的勢(shì)力,在類設(shè)計(jì)的部分已經(jīng)說明engine類負(fù)責(zé)引擎的初始化??梢蕴峁┑某跏蓟瘏?shù)包括窗口的名稱、scene manager的類型,默認(rèn)攝像機(jī)的位置和名稱,位置、默認(rèn)視口的名稱。提供這些參數(shù)后,engine將提供創(chuàng)建好的scene manager、window和ogre root的指針,用于初始化其他類。下面將解釋在engine中所做的工作。engine是啟動(dòng)ogre的核心,是對(duì)啟動(dòng)過程的抽象。首先通過插件的配
52、置文件初始化ogre root對(duì)象。然后通過資源配置文件load資源(資源文件的具體信息將在下一節(jié)說明),接下來是創(chuàng)建窗口,創(chuàng)建窗口需要的信息可以通過ogre自帶的配置對(duì)話框來得到,如果程序目錄里面有配置文件,也可以加載已有的配置文件來得到窗口信息。接下來要做的是創(chuàng)建scene manager這是場(chǎng)景里面一切事物的管理器,包括要繪制的物體、攝像機(jī)等等。ogre提供了不同種類的scene manager來滿足不同的需要,它們擅長(zhǎng)的場(chǎng)景各不相同,對(duì)于本游戲,由于大部分物體都在距離攝影機(jī)非常近的地方,所以選擇ogre:st_interior。下一步是創(chuàng)建攝像機(jī)和視口,攝像機(jī)的可選項(xiàng)包括它的位置、朝向
53、和最大及最小剪裁距離。視口連接攝像機(jī)和窗口,本游戲可以直接把視口大小設(shè)置為窗口大小。至此engine類的全部工作都已完成。完成engine類中的初始化后,ogre只需要初始化一個(gè)最初顯示的場(chǎng)景和創(chuàng)建一個(gè)幀監(jiān)聽器即可開始渲染,這兩個(gè)工作在scene類和frame listener類完成。值得說明的是在開始渲染之前還有兩個(gè)操作,一個(gè)是加載ui的資源,另一個(gè)是創(chuàng)建音樂的線程。這兩點(diǎn)將在后面的章節(jié)說明。完成以上工作以后,游戲場(chǎng)景開始逐幀渲染,從用戶的角度而言,即游戲正式開始。5.1.4 資源的加載ogre的資源是通過資源組的方式來管理的,資源組可以使用默認(rèn)的default也可以自己創(chuàng)建。資源的生命周期
54、為:聲明、初始化、加載使用,釋放。每個(gè)資源都可以獨(dú)立完成這些步驟,也可以以資源組為單位完成。在本游戲中,資源有三類:ogre資源,包括模型文件,材質(zhì)文件,骨骼文件,場(chǎng)景(即天空盒)。cegui資源,包括材質(zhì)文件,字體和布局等。用戶文件,主要是音樂文件。接下來將分別描述三類資源的加載方式。對(duì)于ogre資源,首先通過資源配置文件來聲明資源的位置,上面已經(jīng)說明engine類中有對(duì)資源配置文件的讀取操作,這個(gè)操作實(shí)際上是聲明資源和創(chuàng)建資源組的集合,由于本游戲的資源不多,所以只是用了default資源組。聲明資源之后,就進(jìn)行了所有資源的初始化,著同樣是小型系統(tǒng)的加載方式。經(jīng)過初始化后,系統(tǒng)就可以通過文件
55、名來訪問這些資源了。對(duì)于cegui資源,cegui的設(shè)計(jì)導(dǎo)致了它需要一個(gè)渲染系統(tǒng)才能完成用戶界面的渲染,而這些渲染系統(tǒng)中巧恰好有ogre,所以cegui的資源同樣是通過ogre的資源組來組織的,它們的資源聲明位于engine的初始化之后,渲染之前,初始化過程的工作實(shí)際上是告訴cegui系統(tǒng),它需要的資源位于ogre 的哪個(gè)資源組中,設(shè)置了cegui的默認(rèn)資源組之后,它就可以找到這些資源。在資源聲明的同時(shí)還順便進(jìn)行了默認(rèn)鼠標(biāo)圖形和默認(rèn)字體的設(shè)置。用戶文件主要是音樂,因?yàn)閛gre的資源組中包含的主要是圖形數(shù)據(jù),而且音樂數(shù)據(jù)的主要用戶是fmod,所以本游戲并沒有將音樂文件和上面的資源一起進(jìn)行管理。這些數(shù)據(jù)主要使用file類讀取文件名,然后由fmod直接進(jìn)行播放。5.2 游戲流程控制本節(jié)描述流程控制之中的一些具體功能的實(shí)現(xiàn)方式關(guān)于按鈕的行為按鈕接受按動(dòng)信號(hào)是由fl類和cegui 庫共同完成的 上文已經(jīng)說明,smilymain初始化了framelistener,這是一個(gè)控制幀的類,它的framer
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年云南省科技廳下屬事業(yè)單位真題
- 新型通信系統(tǒng)設(shè)計(jì)考試題目及答案
- 公益組織會(huì)計(jì)的工作計(jì)劃
- 2024年延安市人民醫(yī)院招聘筆試真題
- 2024年湖南省科學(xué)技術(shù)廳下屬事業(yè)單位真題
- 2024年湖北省鄉(xiāng)村振興局下屬事業(yè)單位真題
- 成功的蜂巢軟件設(shè)計(jì)師考試的試題及答案
- 如何提升品牌員工的認(rèn)同感計(jì)劃
- 2024年南寧上林縣三里鎮(zhèn)招聘筆試真題
- 2024年馬鞍山經(jīng)開區(qū)城管局招聘筆試真題
- 肖申克的救贖-讀書感悟
- 神經(jīng)病學(xué)課件:進(jìn)行性肌營(yíng)養(yǎng)不良癥完整版
- 理正抗滑樁設(shè)計(jì)說明書模板
- 醫(yī)學(xué)康復(fù)學(xué)課件:平衡功能障礙評(píng)定與康復(fù)
- 工程索賠與反索賠
- 教育學(xué)心理學(xué)考試題
- 2022年桂林市小升初英語考試試題及答案解析
- LY/T 3073-2018古樹名木管護(hù)技術(shù)規(guī)程
- GB/T 34132-2017智能變電站智能終端裝置通用技術(shù)條件
- 2022年云南省初中學(xué)業(yè)水平考試道德與法治試題(解析版)
- 09S304 衛(wèi)生設(shè)備安裝圖集
評(píng)論
0/150
提交評(píng)論