摘要:提出將Kinect體感技術(shù)嵌入到游戲引擎OGRE中,首先在OGRE基礎(chǔ)上搭建游戲場(chǎng)景,將Kinect體感外設(shè)與游戲角色綁定, 引入MyGUI界面模塊,使用Lua作為交互腳本,搭建一個(gè)面向前沿的具有可拓展性的體感游戲平臺(tái)。
關(guān)鍵詞:Kinect;OGRE;MyGUI;Lua;體感游戲
中圖分類號(hào):TP311.1 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)13-2979-05
Study of Somatosensory Game Platform Based on Kinect and OGRE
LI Guang-song
(Department of Information Engineering,Guangdong Polytechnic, Foshan 528041,China)
Abstract:The paper puts forward the idea that using the Kinect somatosensory technology to embed into the game engine in OGRE. Firstly, it establishes the game scene based on OGRE, and binds the Kinect somatosensory peripheral and game role, introduces the MyGUI interface module, uses Lua as the interactive scripts. So it builds sense game platform which is a facing front with extended body.
Key words:Kinect;OGRE;MyGUI;Lua;somatosensory game
圖形引擎將底層的DirectX和OpenGL進(jìn)行封裝,對(duì)外提供API函數(shù)接口,通過API函數(shù)可以嵌入第三方庫,從而形成游戲開發(fā)平臺(tái)。OGRE[1-3]是一個(gè)三維圖形渲染引擎,支持插件體系結(jié)構(gòu),具有可擴(kuò)展的程序框架,可以在引擎外不編譯的狀態(tài)下擴(kuò)展功能。Kinect是一種3D體感外設(shè),可以用來進(jìn)行體感游戲人物的動(dòng)作捕捉與綁定。MyGUI[4-5]是一款第三方的開源GUI庫,相比原來的CEGUI,更高效,輕便,靈活,支持換膚功能,有完整的界面編輯器,現(xiàn)移植支持OGRE引擎。Lua[6-7]是一個(gè)面向過程的腳本語言,它的核心代碼很少,通常是由用戶來實(shí)現(xiàn)附加的特征(比如:類)。Lua是一個(gè)簡(jiǎn)潔的、高度可擴(kuò)展的可編譯語言,也能很好的和C/C++進(jìn)行交互,因此,它也是編寫游戲腳本的一個(gè)很普遍選擇。
本文提出以O(shè)GRE圖形引擎為底層進(jìn)行體感游戲平臺(tái)的設(shè)計(jì),在人物角色控制中結(jié)合使用Kinect體感技術(shù)、在界面設(shè)計(jì)模塊中結(jié)合使用MyGUI、在邏輯的交互通信階段結(jié)合使用Lua腳本,設(shè)計(jì)出了一種OGRE+Kinect+MyGUI+Lua系統(tǒng)架構(gòu),并進(jìn)行了實(shí)驗(yàn)測(cè)試,游戲平臺(tái)運(yùn)行流暢,得到預(yù)期效果。
1 平臺(tái)的架構(gòu)設(shè)計(jì)
在網(wǎng)絡(luò)游戲平臺(tái)開發(fā)中,平臺(tái)的架構(gòu)設(shè)計(jì)決定了平臺(tái)的可拓展性。體感游戲平臺(tái)以O(shè)GRE圖形引擎作為設(shè)計(jì)的底層,設(shè)計(jì)通信系統(tǒng)、人工智能、音響音效系統(tǒng)、輸入子系統(tǒng)、渲染系統(tǒng)、資源管理系統(tǒng)、界面系統(tǒng)和物理系統(tǒng)。通信系統(tǒng)提供客戶端網(wǎng)絡(luò)通信接口并進(jìn)行交互,客戶端網(wǎng)絡(luò)通信接口通過Raknet網(wǎng)絡(luò)庫與服務(wù)器網(wǎng)絡(luò)通信接口進(jìn)行連接,進(jìn)行與服務(wù)器端的數(shù)據(jù)庫模塊和游戲邏輯模塊交互。Kinect骨架追蹤技術(shù)可以讓Kinect感知人體15個(gè)關(guān)節(jié)點(diǎn)來生成一幅骨架系統(tǒng),通過把這15個(gè)關(guān)節(jié)點(diǎn)和角色人物進(jìn)行綁定,在和輸入子系統(tǒng)、渲染系統(tǒng)和資源管理系統(tǒng)進(jìn)行交互中能夠做到流暢控制。在界面系統(tǒng)中嵌入MyGUI,避開了CEGUI的復(fù)雜性,對(duì)界面的設(shè)計(jì)簡(jiǎn)潔,而且可維護(hù)擴(kuò)充性好,而且MyGUI可以和Lua腳本進(jìn)行交互。Lua腳本以簡(jiǎn)明的語句完成與客戶端網(wǎng)絡(luò)通信接口、服務(wù)器網(wǎng)絡(luò)通信接口、游戲邏輯模塊、MyGUI界面模塊和OGRE的通信系統(tǒng)的通信。
本文把Kinect、Lua和MyGUI集成到OGRE引擎架構(gòu)中,形成體感游戲平臺(tái),如圖1所示,其中虛線框內(nèi)為OGRE圖形引擎,與OGRE引擎交互的都是第三方類庫。
2 OGRE設(shè)計(jì)底層
2.1 OGRE簡(jiǎn)介
OGRE是一個(gè)開源圖形渲染引擎,即:面向?qū)ο髨D形渲染引擎(Object-oriented Graphics Rendering Engine)。OGRE是由一個(gè)核心團(tuán)隊(duì)編寫和維護(hù),并依賴社區(qū)提供的支。將OGRE作為游戲引擎時(shí)需要和其他引擎或第三方類庫結(jié)合使用,如:網(wǎng)絡(luò)、腳本、界面等。
2.2 OGRE核心對(duì)象
1)根(Root)對(duì)象
Root對(duì)象是OGRE引擎的入口,具有唯一性,是用來創(chuàng)建OGRE引擎中所有的基礎(chǔ)元素。Root對(duì)象在引擎啟動(dòng)時(shí)創(chuàng)建,在引擎結(jié)束時(shí)銷毀,Root對(duì)象的生命周期是整個(gè)應(yīng)用程序的生命周期。通過創(chuàng)建Root對(duì)象可以獲取場(chǎng)景管理器(SceneManager)對(duì)象指針、渲染系統(tǒng)(RenderSystem)對(duì)象指針和資源管理器(Resource Managers)對(duì)象指針。
2)渲染系統(tǒng)(RenderSystem)對(duì)象
渲染系統(tǒng)(RenderSystem)對(duì)象是一個(gè)抽象(abstract)類,這個(gè)抽象類提供了引擎的API接口(OpenGL和Direct3D)。
mRoot→initialise(true, "PlatformRenderWindow");
RenderSystem *rs = mRoot→getRenderSystemByName("Direct3D9endprint
Rendering Subsystem");
mRoot→setRenderSystem(rs);
3)場(chǎng)景管理器(SceneManager)對(duì)象
場(chǎng)景管理器(SceneManager)是OGRE場(chǎng)景內(nèi)容的組織者、創(chuàng)建者和管理者。場(chǎng)景中掛人的每一個(gè)實(shí)體都是一個(gè)節(jié)點(diǎn),每一個(gè)實(shí)體節(jié)點(diǎn)都必須掛靠在根節(jié)點(diǎn)上面,然后每一個(gè)節(jié)點(diǎn)再不斷擴(kuò)充,形成場(chǎng)景中節(jié)點(diǎn)的樹狀結(jié)構(gòu)。利用SceneManager設(shè)置場(chǎng)景,獲取場(chǎng)景狀態(tài),監(jiān)聽場(chǎng)景中的對(duì)象,動(dòng)態(tài)修改場(chǎng)景內(nèi)容。
為處理Terrain場(chǎng)景,選擇創(chuàng)建“ST_EXTERIOR_CLOSE”類型的SceneManager,通過執(zhí)行Root::createSceneManager();完成的,執(zhí)行完成后返回TerrainSceneManager指針,同時(shí)創(chuàng)建了一個(gè)HeightmapTerrainPageSource對(duì)象。
2.3 游戲平臺(tái)執(zhí)行流程
在游戲平臺(tái)中,首先創(chuàng)建Root對(duì)象,利用setupResources()函數(shù)加載資源路徑,配置渲染系統(tǒng),選擇場(chǎng)景管理器類型,創(chuàng)建并初始化攝像機(jī),創(chuàng)建平臺(tái)窗口中的視口,創(chuàng)建平臺(tái)中的資源,嵌入第三方類庫,該文的體感游戲平臺(tái)使用了Kinect、Lua和MyGUI,如圖2所示,最后創(chuàng)建幀監(jiān)聽器,啟動(dòng)平臺(tái)的渲染循環(huán)。
3 Kinect體感外設(shè)綁定
3.1 Kinect簡(jiǎn)介
圖3 Kinect
Kinect是微軟在2010年6月14日對(duì)XBOX360體感周邊外設(shè)正式發(fā)布的名字。它是一種3D體感攝影機(jī)(開發(fā)代號(hào)“Project Natal”)。Kinect內(nèi)置有彩色攝像頭、紅外深度感應(yīng)頭、陣列式麥克風(fēng)、感應(yīng)傾斜驅(qū)動(dòng)馬達(dá),如圖3所示,可獲取彩色影像、3D深度影像、骨骼信息和聲音訊號(hào)。
3.2 Kinect骨骼追蹤
自然用戶界面(NUI)骨骼API提供人物距離Kinect傳感器的位置信息,包括詳細(xì)的人物位置和方向信息。這些信息在應(yīng)用程序中表現(xiàn)為一組點(diǎn),成為骨骼位置,如圖4。骨骼位置說明了人物的當(dāng)前位置,應(yīng)用程序可以使用骨骼信息來初始化自然用戶界面(NUI)和從而跟蹤骨骼。
圖4 人體骨骼關(guān)鍵點(diǎn)
如果應(yīng)用程序在初始化時(shí)使用骨骼跟蹤,骨骼跟蹤引擎就會(huì)啟用,獲取和處理深度數(shù)據(jù),判斷是否有骨骼出現(xiàn)在幀數(shù)據(jù)中。應(yīng)用程序通過重力和水平面來檢索骨骼幀。返回的骨骼幀,包括深度數(shù)據(jù)和骨骼圖像數(shù)據(jù)。在平臺(tái)應(yīng)用程序中,對(duì)圖4中的15個(gè)關(guān)鍵骨骼節(jié)點(diǎn)進(jìn)行了編號(hào),頭部為0, 頸部為1, 軀干為2, 左肩膀?yàn)?, 左手肘為4, 左手為5,右肩膀?yàn)?,右手肘為7,右手腕為8,左臀為9,左膝蓋為10,左腳跟為11,右臀為12,右膝蓋為13,右腳跟為14。
3.3 Kinect的嵌入與綁定
在使用Kinect時(shí),首先要安裝KinectSDK和驅(qū)動(dòng),然后配置OpenNI[8],包括項(xiàng)目中的VC++目錄的包含目錄和鏈接器中的附加庫目錄,以及輸入條目下的附加依賴項(xiàng)(OpenNI2.lib和Glut32.lib)。
Kinect嵌入OGRE的步驟:
1)包含頭文件include OpenNI.h,使用openni命名空間,using namespace openni;;
2)初始化OpenNI環(huán)境,OpenNI::initialize();;
3)創(chuàng)建與打開設(shè)備,Device device; device.open();;
4)創(chuàng)建數(shù)據(jù)流對(duì)象,VideoStream depth;, 通過depth.start()和depth.stop()函數(shù)來控制數(shù)據(jù)流的讀取;
5)綁定與運(yùn)行;
6)運(yùn)行完畢后關(guān)閉與銷毀,depth.destroy();device.close();OpenNI::shutdown();。
Kinect與人物綁定,需要使用OGRE里面Bone(骨骼)與Kinect里面的Bone(骨骼)進(jìn)行綁定。Kinect獲取到的位置信息(position)與方向信息(orientation)是世界坐標(biāo),是相對(duì)于kinect設(shè)備的坐標(biāo),與ogre的坐標(biāo)系統(tǒng)相符。
WoCoo =mSceneMgr→getRootSceneNode()→createChildSceneNode();
Ogre::SceneNode* SN;
Ogre::Bone* pBone;
SN→_setDerivedPosition(WoCoo→getPosition()+WoCoo→_getDerivedScale()* pBone→convertLocalToWorldPosition(Ogre::Vector3());
SN→setOrientation(pBone→convertLocalToWorldOrientation(Ogre::Quaternion());
對(duì)于kinect的方向信息(orientation),kinect對(duì)其進(jìn)行了坐標(biāo)軸的旋轉(zhuǎn),規(guī)定骨骼的方向?yàn)閅軸正方向,人體面向?yàn)閆軸正方向,X軸隨之旋轉(zhuǎn),Kinect中獲取的orientation可以分為兩種:absoluteOrientation和hierarchyOrientation,absoluteOrientation是世界坐標(biāo)系下的相當(dāng)于Ogre中_setDerivedOrientation, hierarchyOrientation是相對(duì)父節(jié)點(diǎn)的坐標(biāo)系,相當(dāng)于Ogre中setOrientation。
4 MyGUI設(shè)計(jì)界面
4.1 MyGUI簡(jiǎn)介
MyGUI是一款基于OGRE引擎的3D界面開發(fā)引擎,能夠讓用戶更加簡(jiǎn)單、快捷地開發(fā)3D游戲和應(yīng)用。
4.2 OGRE中使用MyGUI
把MyGUI嵌入到OGRE中需要一下8個(gè)步驟:
1)把MyGUISdk中的MyGUIEngine_d.dll文件拷貝到OgreSDK安裝目錄下;
2) 在OgreSDK中的resources_d.cfg里添加MyGUI里面的MyGUI_Media訪問路徑;
3) 在平臺(tái)工程的“包含目錄”里添加“MyGUIEngine\include”;
4)在平臺(tái)工程的“附加庫目錄”里添加“l(fā)ib\Debug”;
5) 在平臺(tái)工程的“附加依賴項(xiàng)”里添加“MyGUIEngine_d.lib; MyGUI.OgrePlatform_d.lib”;
7)添加頭文件#include "MyGUI.h";#include "MyGUI_OgrePlatform.h";;
8) 在在平臺(tái)工程的createScene()函數(shù)中添加代碼:
MyGUI::Gui* mGUI;
MyGUI::OgrePlatform* mPlatform=new MyGUI::OgrePlatform();
mPlatform→initialise(mWindow, mSceneManager);
mGUI=new MyGUI::Gui();mGUI→initialise();
5 Lua腳本
5.1 Lua簡(jiǎn)介
Lua是一種嵌入式的游戲腳本語言,Lua的功能可以通過外部庫進(jìn)行補(bǔ)充,具有良好的可拓展性。
5.2 Lua的嵌入
把Lua嵌入到OGRE中,首先安裝tolua++軟件包,通過配置tolua++,用Lua腳本來編寫使用C++語言庫的腳本文件.
Lua嵌入過程:
1)運(yùn)行tolua++.exe文件;
2)包含tolua頭文件,#include
3)嵌入tolua++.lib靜態(tài)庫;
4)利用tolua++生成.pkg文件platformlib.pkg;
5)將 4)中的cpp文件生成對(duì)應(yīng)的C/C++源文件。
>tolua++ -n platformlib -o platformlib.cpp platformlib.pkg
6)將platformlib.cpp加入到OGRE工程中;
7)使用Lua,
lua_State* S=lua_open();
luaL_openlibs();
tolua_platformlib_open(S);
luaL_dofile(S, “platformlib.lua”);
lua_close(S);
6 OGRE+Kinect+MyGUI+Lua設(shè)計(jì)案例
針對(duì)OGRE+Kinect+MyGUI+Lua的框架,設(shè)計(jì)了體感游戲案例“鐳射守備”,并進(jìn)行了測(cè)試,圖5是“鐳射守備”實(shí)現(xiàn)案例截圖。實(shí)驗(yàn)證明,該框架能夠?qū)崿F(xiàn)OGRE與Kinect的人物綁定,MyGUI模塊嵌入以及Lua、MyGUI、OGRE之間的相互通信,在測(cè)試過程中,運(yùn)行流暢,得到了預(yù)期效果。
(a) (b)
圖5 “鐳射守備”實(shí)現(xiàn)案例
7 結(jié)束語
使用本文設(shè)計(jì)的框架搭建的體感游戲平臺(tái)能夠有效地將前沿體感技術(shù)和開源引擎相結(jié)合。該文在OGRE圖形引擎設(shè)計(jì)和運(yùn)行原理的基礎(chǔ)上,提出了一種OGRE+Kinect+MyGUI+lua的游戲平臺(tái)設(shè)計(jì)框架,該平臺(tái)充分利用OGRE可拓展性特點(diǎn),進(jìn)行了第三方庫的嵌入與應(yīng)用,平臺(tái)的運(yùn)行流程,得到了設(shè)計(jì)的效果。
參考文獻(xiàn):
[1] OGRE官網(wǎng)[EB/OL].www.ogre3d.org.
[2] OGRE WIKI[EB/OL].http://www.ogre3d.org/tikiwiki/tiki-index.php.
[3] 李廣松,陳榮征.基于OGRE的網(wǎng)絡(luò)游戲界面模塊的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2009,5(33): 9297-9299.
[4] MyGUI官網(wǎng)[EB/OL].http://mygui.info.
[5] MyGUI WIKI[EB/OL].http://www.ogre3d.org/tikiwiki/MyGUI.
[6] Lua官網(wǎng)[EB/OL].http://www.lua.org.
[7] Lua WIKI[EB/OL].http://wikilua.wikia.com/wiki/Lua_Wiki.
[8] OpenNI官網(wǎng)[EB/OL].http://www.openni.org/.
4 MyGUI設(shè)計(jì)界面
4.1 MyGUI簡(jiǎn)介
MyGUI是一款基于OGRE引擎的3D界面開發(fā)引擎,能夠讓用戶更加簡(jiǎn)單、快捷地開發(fā)3D游戲和應(yīng)用。
4.2 OGRE中使用MyGUI
把MyGUI嵌入到OGRE中需要一下8個(gè)步驟:
1)把MyGUISdk中的MyGUIEngine_d.dll文件拷貝到OgreSDK安裝目錄下;
2) 在OgreSDK中的resources_d.cfg里添加MyGUI里面的MyGUI_Media訪問路徑;
3) 在平臺(tái)工程的“包含目錄”里添加“MyGUIEngine\include”;
4)在平臺(tái)工程的“附加庫目錄”里添加“l(fā)ib\Debug”;
5) 在平臺(tái)工程的“附加依賴項(xiàng)”里添加“MyGUIEngine_d.lib; MyGUI.OgrePlatform_d.lib”;
7)添加頭文件#include "MyGUI.h";#include "MyGUI_OgrePlatform.h";;
8) 在在平臺(tái)工程的createScene()函數(shù)中添加代碼:
MyGUI::Gui* mGUI;
MyGUI::OgrePlatform* mPlatform=new MyGUI::OgrePlatform();
mPlatform→initialise(mWindow, mSceneManager);
mGUI=new MyGUI::Gui();mGUI→initialise();
5 Lua腳本
5.1 Lua簡(jiǎn)介
Lua是一種嵌入式的游戲腳本語言,Lua的功能可以通過外部庫進(jìn)行補(bǔ)充,具有良好的可拓展性。
5.2 Lua的嵌入
把Lua嵌入到OGRE中,首先安裝tolua++軟件包,通過配置tolua++,用Lua腳本來編寫使用C++語言庫的腳本文件.
Lua嵌入過程:
1)運(yùn)行tolua++.exe文件;
2)包含tolua頭文件,#include
3)嵌入tolua++.lib靜態(tài)庫;
4)利用tolua++生成.pkg文件platformlib.pkg;
5)將 4)中的cpp文件生成對(duì)應(yīng)的C/C++源文件。
>tolua++ -n platformlib -o platformlib.cpp platformlib.pkg
6)將platformlib.cpp加入到OGRE工程中;
7)使用Lua,
lua_State* S=lua_open();
luaL_openlibs();
tolua_platformlib_open(S);
luaL_dofile(S, “platformlib.lua”);
lua_close(S);
6 OGRE+Kinect+MyGUI+Lua設(shè)計(jì)案例
針對(duì)OGRE+Kinect+MyGUI+Lua的框架,設(shè)計(jì)了體感游戲案例“鐳射守備”,并進(jìn)行了測(cè)試,圖5是“鐳射守備”實(shí)現(xiàn)案例截圖。實(shí)驗(yàn)證明,該框架能夠?qū)崿F(xiàn)OGRE與Kinect的人物綁定,MyGUI模塊嵌入以及Lua、MyGUI、OGRE之間的相互通信,在測(cè)試過程中,運(yùn)行流暢,得到了預(yù)期效果。
(a) (b)
圖5 “鐳射守備”實(shí)現(xiàn)案例
7 結(jié)束語
使用本文設(shè)計(jì)的框架搭建的體感游戲平臺(tái)能夠有效地將前沿體感技術(shù)和開源引擎相結(jié)合。該文在OGRE圖形引擎設(shè)計(jì)和運(yùn)行原理的基礎(chǔ)上,提出了一種OGRE+Kinect+MyGUI+lua的游戲平臺(tái)設(shè)計(jì)框架,該平臺(tái)充分利用OGRE可拓展性特點(diǎn),進(jìn)行了第三方庫的嵌入與應(yīng)用,平臺(tái)的運(yùn)行流程,得到了設(shè)計(jì)的效果。
參考文獻(xiàn):
[1] OGRE官網(wǎng)[EB/OL].www.ogre3d.org.
[2] OGRE WIKI[EB/OL].http://www.ogre3d.org/tikiwiki/tiki-index.php.
[3] 李廣松,陳榮征.基于OGRE的網(wǎng)絡(luò)游戲界面模塊的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2009,5(33): 9297-9299.
[4] MyGUI官網(wǎng)[EB/OL].http://mygui.info.
[5] MyGUI WIKI[EB/OL].http://www.ogre3d.org/tikiwiki/MyGUI.
[6] Lua官網(wǎng)[EB/OL].http://www.lua.org.
[7] Lua WIKI[EB/OL].http://wikilua.wikia.com/wiki/Lua_Wiki.
[8] OpenNI官網(wǎng)[EB/OL].http://www.openni.org/.
4 MyGUI設(shè)計(jì)界面
4.1 MyGUI簡(jiǎn)介
MyGUI是一款基于OGRE引擎的3D界面開發(fā)引擎,能夠讓用戶更加簡(jiǎn)單、快捷地開發(fā)3D游戲和應(yīng)用。
4.2 OGRE中使用MyGUI
把MyGUI嵌入到OGRE中需要一下8個(gè)步驟:
1)把MyGUISdk中的MyGUIEngine_d.dll文件拷貝到OgreSDK安裝目錄下;
2) 在OgreSDK中的resources_d.cfg里添加MyGUI里面的MyGUI_Media訪問路徑;
3) 在平臺(tái)工程的“包含目錄”里添加“MyGUIEngine\include”;
4)在平臺(tái)工程的“附加庫目錄”里添加“l(fā)ib\Debug”;
5) 在平臺(tái)工程的“附加依賴項(xiàng)”里添加“MyGUIEngine_d.lib; MyGUI.OgrePlatform_d.lib”;
7)添加頭文件#include "MyGUI.h";#include "MyGUI_OgrePlatform.h";;
8) 在在平臺(tái)工程的createScene()函數(shù)中添加代碼:
MyGUI::Gui* mGUI;
MyGUI::OgrePlatform* mPlatform=new MyGUI::OgrePlatform();
mPlatform→initialise(mWindow, mSceneManager);
mGUI=new MyGUI::Gui();mGUI→initialise();
5 Lua腳本
5.1 Lua簡(jiǎn)介
Lua是一種嵌入式的游戲腳本語言,Lua的功能可以通過外部庫進(jìn)行補(bǔ)充,具有良好的可拓展性。
5.2 Lua的嵌入
把Lua嵌入到OGRE中,首先安裝tolua++軟件包,通過配置tolua++,用Lua腳本來編寫使用C++語言庫的腳本文件.
Lua嵌入過程:
1)運(yùn)行tolua++.exe文件;
2)包含tolua頭文件,#include
3)嵌入tolua++.lib靜態(tài)庫;
4)利用tolua++生成.pkg文件platformlib.pkg;
5)將 4)中的cpp文件生成對(duì)應(yīng)的C/C++源文件。
>tolua++ -n platformlib -o platformlib.cpp platformlib.pkg
6)將platformlib.cpp加入到OGRE工程中;
7)使用Lua,
lua_State* S=lua_open();
luaL_openlibs();
tolua_platformlib_open(S);
luaL_dofile(S, “platformlib.lua”);
lua_close(S);
6 OGRE+Kinect+MyGUI+Lua設(shè)計(jì)案例
針對(duì)OGRE+Kinect+MyGUI+Lua的框架,設(shè)計(jì)了體感游戲案例“鐳射守備”,并進(jìn)行了測(cè)試,圖5是“鐳射守備”實(shí)現(xiàn)案例截圖。實(shí)驗(yàn)證明,該框架能夠?qū)崿F(xiàn)OGRE與Kinect的人物綁定,MyGUI模塊嵌入以及Lua、MyGUI、OGRE之間的相互通信,在測(cè)試過程中,運(yùn)行流暢,得到了預(yù)期效果。
(a) (b)
圖5 “鐳射守備”實(shí)現(xiàn)案例
7 結(jié)束語
使用本文設(shè)計(jì)的框架搭建的體感游戲平臺(tái)能夠有效地將前沿體感技術(shù)和開源引擎相結(jié)合。該文在OGRE圖形引擎設(shè)計(jì)和運(yùn)行原理的基礎(chǔ)上,提出了一種OGRE+Kinect+MyGUI+lua的游戲平臺(tái)設(shè)計(jì)框架,該平臺(tái)充分利用OGRE可拓展性特點(diǎn),進(jìn)行了第三方庫的嵌入與應(yīng)用,平臺(tái)的運(yùn)行流程,得到了設(shè)計(jì)的效果。
參考文獻(xiàn):
[1] OGRE官網(wǎng)[EB/OL].www.ogre3d.org.
[2] OGRE WIKI[EB/OL].http://www.ogre3d.org/tikiwiki/tiki-index.php.
[3] 李廣松,陳榮征.基于OGRE的網(wǎng)絡(luò)游戲界面模塊的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2009,5(33): 9297-9299.
[4] MyGUI官網(wǎng)[EB/OL].http://mygui.info.
[5] MyGUI WIKI[EB/OL].http://www.ogre3d.org/tikiwiki/MyGUI.
[6] Lua官網(wǎng)[EB/OL].http://www.lua.org.
[7] Lua WIKI[EB/OL].http://wikilua.wikia.com/wiki/Lua_Wiki.
[8] OpenNI官網(wǎng)[EB/OL].http://www.openni.org/.