亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        碰撞檢測在三維場景漫游中的研究與實現(xiàn)

        2012-09-29 11:27:00王良燕
        關鍵詞:漫游者碰撞檢測副本

        王良燕,高 敏

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

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

        實現(xiàn)三維漫游需要考慮的一個重要問題是碰撞檢測,OGRE引擎本身不具備這項功能,需要借助第三方引擎實現(xiàn),常用的第三方引擎庫有 Newton[4]、ODE[5]等。Newton在碰撞檢測方面性能更出色,它是一款開源免費的碰撞檢測引擎庫,OgreNewt是對Newton庫的一層面向?qū)ο蠓庋b。可以結(jié)合OgreNewt和OGRE,在三維場景中實現(xiàn)碰撞檢測功能。本文主要探討如何在OGRE基礎上,結(jié)合OgreNewt及Newton庫,實現(xiàn)具有碰撞檢測功能的三維漫游系統(tǒng)。

        1 OGRE、Newton和 OgreNewt

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

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

        2 三維漫游系統(tǒng)

        2.1 虛擬場景構建

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

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

        2.2 碰撞檢測

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

        (1)創(chuàng)建 World

        首先要創(chuàng)建一個碰撞檢測空間:

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

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

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

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

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

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

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

        (4)注冊回調(diào)函數(shù)

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

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

        3 運行效果

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

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

        [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的駕駛模擬系統(tǒng)的設計與實現(xiàn)[J].交通與計算機,2006,24(1):101-104.

        猜你喜歡
        漫游者碰撞檢測副本
        城市里的漫游者(節(jié)選)
        英語世界(2023年12期)2023-12-28 03:35:56
        全新預測碰撞檢測系統(tǒng)
        基于BIM的鐵路信號室外設備布置與碰撞檢測方法
        面向流媒體基于蟻群的副本選擇算法①
        Unity3D中碰撞檢測問題的研究
        電子測試(2018年1期)2018-04-18 11:53:00
        副本放置中的更新策略及算法*
        BIM技術下的某辦公樓項目管線碰撞檢測
        “漫游者”的空間:克利夫蘭藝術博物分析(下)
        中國美術(2015年4期)2015-10-10 16:31:49
        樹形網(wǎng)絡中的副本更新策略及算法*
        歐空局將在2020年前發(fā)射大型月球著陸器
        国产精品无码一区二区三级| AV人人操| 色优网久久国产精品| 亚洲女同人妻在线播放| 国产一级二级三级在线观看av | a级毛片成人网站免费看| 99精品电影一区二区免费看| 无码中文字幕久久久久久| 日本一区二区三区一级片| 久久综网色亚洲美女亚洲av| 亚洲av永久无码精品网站在线观看| 欧美激情a∨在线视频播放| 久久国产乱子精品免费女| 中文亚洲第一av一区二区| 99人中文字幕亚洲区三| 久久婷婷人人澡人人爽人人爱| 久久久久久成人毛片免费看| AV无码专区亚洲AVL在线观看| 91国产熟女自拍视频| 久久婷婷五月综合色奶水99啪| 首页 综合国产 亚洲 丝袜| 亚洲一级无码片一区二区三区| 亚洲高清美女久久av| 国产精品亚洲精品一区二区| 三年片免费观看影视大全视频| 国产一区二区三区影院| 亚洲精品国产二区三区在线| 国产女主播福利一区二区| 亚洲第一女人av| 亚洲综合久久精品无码色欲| 中文字幕一区二区三区在线不卡| 一区二区免费国产a在亚洲 | 亚洲精品suv精品一区二区| 人妻丰满熟妇AV无码片| 蜜桃视频网站在线免费观看| 国产让女高潮的av毛片| 国产亚洲2021成人乱码| 久久久久亚洲AV无码专| 精品视频一区二区在线观看| 男女av一区二区三区| 久久人人爽人人爽人人片av东京热|