999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

碰撞檢測在三維場景漫游中的研究與實現

2012-09-29 11:27:00王良燕
網絡安全與數據管理 2012年24期
關鍵詞:引擎模型

王良燕,高 敏

(安徽三聯學院,安徽 合肥230601)

虛擬現實是當今計算機領域的一項熱門技術,其中一個重要功能是虛擬三維漫游,實現這一功能需要借助計算機圖形引擎。OGRE[1]是一款專門處理三維場景的圖形引擎,具有開源免費、跨平臺等多種優點,目前在虛擬現實領域已有非常廣泛的應用[2-3]。

實現三維漫游需要考慮的一個重要問題是碰撞檢測,OGRE引擎本身不具備這項功能,需要借助第三方引擎實現,常用的第三方引擎庫有 Newton[4]、ODE[5]等。Newton在碰撞檢測方面性能更出色,它是一款開源免費的碰撞檢測引擎庫,OgreNewt是對Newton庫的一層面向對象封裝??梢越Y合OgreNewt和OGRE,在三維場景中實現碰撞檢測功能。本文主要探討如何在OGRE基礎上,結合OgreNewt及Newton庫,實現具有碰撞檢測功能的三維漫游系統。

1 OGRE、Newton和 OgreNewt

OGRE是用C++開發的跨平臺的3D引擎,底層基于OpenGL和DirectX實現,具有高效的三維場景管理性能,能很好地兼容第三方庫以實現一些特定功能。一個基本的 OGRE系統主要包括 Root、SceneManager、Entity、SceneNode、Material和Camera等幾部分。Root是整個系統的入口點,通過它可以獲取系統中的其他對象。Entity是三維物體模型,Material是模型的材質,每個Entity都掛載到一個SceneNode上,所有SceneNode共同組成一個樹狀結構,由SceneManager統一管理。通過Camera來實現觀看場景。

OGRE引擎通過OgreNewt與Newton庫銜接。OgreNewt通過Newton庫中的一些基本的元素來描述物理世界,主要包括World、Collision和 Body等。World是最基本的類,通過它可以建立一個空間,所有其他物體都在這個空間里創建。空間中的物體參加碰撞檢測時需要有一個包圍盒,通過包圍盒計算來判斷是否發生了碰撞,Collision用于定義包圍盒的形狀,基本形狀有Boxes、Ellipsoids、Cylinders、Capsules等。Body 用于定義碰撞檢測包圍盒的實體,它可以與空間中的其他實體相互作用,比如發生碰撞、摩擦等。它需要根據Collision定義好的形狀來創建。此外還有 Joint、MaterialID、MaterialPair等,都有其他用途。

2 三維漫游系統

2.1 虛擬場景構建

建立一個三維漫游系統,首先要構建虛擬場景,主要步驟如下:

首先建立并取得Root,再讀取所有資源路徑并添加到資源組管理器中,接著創建場景管理器、相機并為相機創建視口;然后創建場景,解析資源配置文件并加載所有資源。漫游需要鍵盤、鼠標等外設控制,需要在程序中創建幀監聽器,以監聽每一幀的變化;最后是對場景進行渲染顯示。

2.2 碰撞檢測

進行三維漫游時,如果發生碰撞,需要添加碰撞檢測?;贜ewton庫,通過OgreNewt建立碰撞檢測步驟及代碼如下:

(1)創建 World

首先要創建一個碰撞檢測空間:

OgreNewt::World*m_World=new OgreNewt::World();

(2)為漫游者添加碰撞檢測包圍盒

由于漫游采用第一人稱視角,可以有一個基本形狀來表示漫游者。這里通過一個球體來代替:

由于這個球體代替漫游者,它與別的物體碰撞時會有力的作用,因此,它既有質量也有慣性。這些值必須要設置:

(3)為其他物體添加碰撞檢測包圍盒

碰撞的作用是相互的,不僅漫游者需要碰撞檢測包圍盒,場景中其他所有物體都需要。在大規模三維場景中,三維模型比較多,形狀也各不相同,因此完全在程序中為每個物體按照其形狀創建包圍盒會極大增加代碼量;如果都用簡單的基本形狀來表示,進行碰撞時又不夠精確。為了解決這一問題,利用碰撞檢測樹和3DSMax配合來實現。首先在空間中創建一個碰撞檢測樹場景解析器TreeCollisionSceneParser,只需要將OGRE場景中的碰撞檢測根節點給它,它就會解析這個根節點所對應的節點樹,并將這棵樹上的所有子節點納入碰撞檢測范圍。關鍵代碼如下:

sCollisionRootNode即為碰撞檢測樹根節點,場景中所有其他三維模型的碰撞檢測包圍盒應作為子節點掛在這棵樹上。這些包圍盒都在3DSMax中創建。只要是納入碰撞檢測范圍的模型,就為它添加一個副本,不是特別復雜的模型,副本的形狀、大小、位置可以與模型完全相同;對于較復雜的模型,可以通過基本形狀組合成模型輪廓作為副本。這些副本就是模型的包圍盒。然后將這些包圍盒作為子節點掛在sCollisionRootNode下,最后整個場景就會形成一棵碰撞檢測樹,樹上的所有包圍盒在碰撞時都會被程序檢測到并參加計算。

(4)注冊回調函數

漫游者與其他物體發生碰撞時可能會發生位置、方向等的變化,這些變化需要被及時獲知并實時顯示,這一功能可以通過回調函數實現。這里定義兩個回調函數,一個回調函數用于在漫游者受到其他物體的作用力時產生一個速度。主要代碼為:

另一個回調函數用于漫游者發生變化時。比如相機切換或漫游者移動,都會發生位置方向的改變,因此需要及時進行變化,主要代碼如下:

3 運行效果

在 Windows平臺下,基于 OGRE1.4.9、OgreNewt 0.11和Newton1.5.3實現了一個具有碰撞檢測的模擬三維漫游系統,其中的三維場景模型采用3DSMax 8創建。圖1為漫游時與墻壁發生碰撞的截圖,圖2為與樹碰撞時的截圖。當發生碰撞時,漫游者將無法前進,必須向其他方向移動才能繞過阻擋物體。墻壁的三維模型不是很復雜,因此碰撞檢測包圍盒的形狀和墻壁相同。而樹的形狀比較復雜,如果用完全相同的形狀會極大增加計算量,因此在3DSMax中為其添加了一個球體加圓柱體的輪廓作為包圍盒,如圖3所示為樹的包圍盒網格。

本文介紹了如何在OGRE引擎中,通過OGRENewt結合Newton庫,創建一個具有碰撞檢測的三維漫游系統的方法,并實現了一個模擬系統。所使用的引擎庫皆為開源免費,并具有較高的效率和良好的體驗效果,可以在實際中應用。

[1]http://www.ogre3d.org/

[2]Xie Mei,Zhen Zheng,Zhang Fan,et al.A cross-platform extendable 3D Virtual Reality system based on OGRE and Python[C].Communications,Circuits and Systems,2009.ICCCAS 2009:502-506.

[3]Liu Xiuling,Du Huanping,Wang Hongrui,et al.Design and development of a distributed Virtual Reality system[C].Machine Learning and Cybernetics,2009:889-894.

[4]http://newtondynamics.com/.

[5]高嵩,陳先橋,楊菊.基于 OGRE和 ODE的駕駛模擬系統的設計與實現[J].交通與計算機,2006,24(1):101-104.

猜你喜歡
引擎模型
一半模型
以學促干 挺膺擔當 激活砥礪前行的紅色引擎
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
三生 三大引擎齊發力
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開發
主站蜘蛛池模板: 色婷婷综合激情视频免费看| 日韩欧美中文字幕在线韩免费 | 国产精品成人第一区| 国内精品自在自线视频香蕉| 国产美女视频黄a视频全免费网站| 中国毛片网| 日韩av在线直播| 国产精品视频3p| 一区二区三区高清视频国产女人| 精品无码一区二区三区电影| 色综合久久88| 精品国产福利在线| 亚洲色图另类| 亚洲精品成人福利在线电影| 曰AV在线无码| 欧美精品伊人久久| 国产又黄又硬又粗| 国产永久在线观看| 91欧美在线| 亚洲有无码中文网| 亚洲综合第一页| 日本午夜影院| 欧美黑人欧美精品刺激| 国产成人高清精品免费| 国产精女同一区二区三区久| 亚洲三级电影在线播放| 99九九成人免费视频精品| 国产精品毛片在线直播完整版| 亚洲中文字幕在线精品一区| 午夜日b视频| 欧美日韩国产综合视频在线观看| 国内精品视频| 亚洲国产成人久久精品软件| 91无码视频在线观看| 高清无码手机在线观看| 免费看a毛片| 亚洲成人网在线播放| 国产又色又爽又黄| 国产成人h在线观看网站站| 一区二区三区成人| 久久婷婷六月| 国产精品主播| 美女高潮全身流白浆福利区| 国产高清毛片| 日本三级精品| 四虎永久免费地址在线网站| 亚洲男人天堂网址| 国产丝袜无码一区二区视频| 女人天堂av免费| 亚洲男人的天堂在线观看| 全部免费毛片免费播放| 中文精品久久久久国产网址 | 国产99视频精品免费视频7 | 国产日本一区二区三区| 婷婷丁香在线观看| 免费精品一区二区h| 欧美日本激情| 国产内射一区亚洲| 日本人真淫视频一区二区三区| 国产一区免费在线观看| 91人人妻人人做人人爽男同| 91福利免费| 国产拍在线| www.youjizz.com久久| 青青草原偷拍视频| 久久免费观看视频| 亚洲另类国产欧美一区二区| 免费A级毛片无码免费视频| 欧美不卡视频在线观看| 五月婷婷丁香综合| 日韩欧美国产中文| 亚洲av无码人妻| 国产欧美中文字幕| 色天天综合| 四虎精品黑人视频| 国产精品尤物在线| 国产日韩欧美在线视频免费观看| 亚洲天堂久久久| 久久久久人妻精品一区三寸蜜桃| 亚洲欧美日韩高清综合678| 国产男女XX00免费观看| 亚洲美女视频一区|