• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于OSG的校區(qū)漫游系統(tǒng)設(shè)計與實現(xiàn)

      2017-09-12 08:55:40張慧
      山東工業(yè)技術(shù) 2017年18期
      關(guān)鍵詞:碰撞檢測漫游校區(qū)

      摘 要:虛擬現(xiàn)實(Virtual Reality)技術(shù)是近年來一項十分活躍的研究與應(yīng)用技術(shù)。它的應(yīng)用領(lǐng)域十分廣泛,主要在工程設(shè)計CAD、遙控機(jī)器人學(xué)、數(shù)據(jù)可視化、飛行模擬、多媒體遠(yuǎn)程教育、臨床外科、遠(yuǎn)程醫(yī)療、藝術(shù)創(chuàng)作、游戲、娛樂等方面。虛擬現(xiàn)實技術(shù)給現(xiàn)代生活帶來了很大的幫助,運(yùn)用虛擬現(xiàn)實技術(shù)構(gòu)造的虛擬世界可以模擬現(xiàn)實環(huán)境,以便幫助用戶方便地研究現(xiàn)實中各種問題,從而大大降低研究成本。

      關(guān)鍵詞:虛擬現(xiàn)實;三維建模;OpenSceneGraph;路徑漫游

      DOI:10.16640/j.cnki.37-1222/t.2017.18.242

      1 引言

      本文以某校區(qū)實際的校園環(huán)境作為原型,設(shè)計完成了某校區(qū)的漫游系統(tǒng),并完成了最后的功能測試。首先構(gòu)造可漫游的虛擬場景是虛擬現(xiàn)實中最基本的一個環(huán)節(jié),本文從構(gòu)造虛擬場景的一般步驟出發(fā),闡述了三維建模的技術(shù)與方法并在平臺上加以實現(xiàn);后用基于三維渲染引擎OpenSceneGraph場景圖進(jìn)一步的開發(fā),運(yùn)用Visual Studio C++和OSG混合編程,實現(xiàn)了系統(tǒng)的漫游功能。

      2 三維建模技術(shù)

      3DS MAX是專業(yè)的三維建模軟件,是建模,渲染及動畫制作的集成軟件包。windows操作系統(tǒng)和Pentium處理器的強(qiáng)大功能與靈活性,使它在pc機(jī)上實現(xiàn)了工作站的性能和特征[1]。它具有高擴(kuò)展性、豐富的功能和面向?qū)ο蟮慕Y(jié)構(gòu),并且它支持多處理器系統(tǒng)和硬件加速等。

      3DS MAX最基本的功能是三維模型幾何體的建立, 3DSMAX的強(qiáng)大功能還包括它提供的材質(zhì)編輯器。同時3DSMAX還提供了攝像機(jī),各種燈光,陰影,植被等輔助對象。在本場景中,利用3DSMAX的基礎(chǔ)建模工具,建立基本模型框架,然后對模型進(jìn)行紋理映射,得到一些基本的建筑模型。

      虛擬校區(qū)的構(gòu)建先是要獲取建筑物的所有數(shù)據(jù),獲取數(shù)據(jù)后要初步處理所采集的數(shù)據(jù)。除去多余的數(shù)據(jù),把紋理圖片進(jìn)行PS處理,同時保持原有數(shù)據(jù)的精度,統(tǒng)一紋理圖片格式,把數(shù)據(jù)進(jìn)行整理分類等,最后整合按照統(tǒng)一的格式存入數(shù)據(jù)庫,利用這些數(shù)據(jù)就可以構(gòu)建某校區(qū)虛擬樓群建筑模型以及地形模型。在本文里虛擬校園的三維模型構(gòu)建流程如圖1所示:

      本文依據(jù)獲取的某校區(qū)平面規(guī)劃圖,確定好模型的重要程度和位置次序,依次在相應(yīng)的位置建模。在這個三維場景中所有物體尺寸與模型尺寸比例是1:1,主要步驟有[2]:

      (1)通過采集到的建筑圖紙,包括剖面圖、立面圖、建筑效果圖及平面圖獲取建筑物的建模數(shù)據(jù)。(2)最終確定建筑物模型的結(jié)構(gòu)。對于大多數(shù)房屋來說可以建立基本的幾何體模型,然后給這些幾何體添加材質(zhì)屬性,對于一些較復(fù)雜的建筑物采用高級建模方法多邊形建模技術(shù)。(3)開始建模。按照前兩個步驟所確定的方案,根據(jù)模型自有的尺寸大小開始建立模型。建模的原則是要快和省。盡量對模型外部能看到的部分建模,那些在里面不需要用到的面可以刪掉或者不建模,原則上盡量用少的面表示建筑物模型,對于能合并的面盡量合并。

      建筑物的實體部分采用幾何體建模,設(shè)置多個長方體、柱體等建立樓房的實體部分,然后通過不斷調(diào)整整合設(shè)置,使之符合設(shè)計的要求。另外校園里多數(shù)的屋頂都是斜坡狀,是不規(guī)則的形狀,對屋頂?shù)慕2捎枚噙呅谓#冉⒁粋€長方體,然后轉(zhuǎn)換為可編輯多邊形進(jìn)行擠出調(diào)整得到房屋的屋頂。

      盡管在建模時盡量不建立多余的多邊形,但是建模過程中難免會產(chǎn)生多余的面,最后一步就是要去除多余的多邊形,樓房的底座和樓層之間的連接面都要去除,這樣可以降低場景復(fù)雜度,在以后的渲染中也會節(jié)省不少時間。

      某校區(qū)的整體模型如圖2:

      在紋理映射部分,需要對已經(jīng)采集到的數(shù)據(jù)進(jìn)行整理分類,并通過軟件處理,獲取符合要求的紋理圖片,對模型對象進(jìn)行紋理映射,設(shè)置好UV,指定貼圖通道,為每個建筑物加上紋理圖片。

      3 基于OpenSceneGraph三維引擎的場景漫游實現(xiàn)

      OSG場景圖結(jié)構(gòu)封裝并提供了數(shù)量眾多的提升程序運(yùn)行時性能的算法、及幾乎所有主流數(shù)據(jù)格式的直接數(shù)據(jù)接口,使用眾多編程語言進(jìn)行圖形系統(tǒng)的開發(fā)。在此基礎(chǔ)上,結(jié)合微軟提供的MFC類庫,利用VC++ 2005編程實現(xiàn)了系統(tǒng)的漫游功能,碰撞檢測,自然天氣模擬和當(dāng)前對象的查詢功能。

      將做好的模型導(dǎo)入OSG中,取.ive格式,給路徑場景模型命名lujing.ive。在OSG中,可以通過對攝像機(jī)運(yùn)動的控制,實現(xiàn)漫游,攝像機(jī)通過變換它的矩陣來實現(xiàn)運(yùn)動[3]。MatrixManipulator類是OSG中操作視點(diǎn)的接口方法,它包含向量_homeEye、_homeCenter和_homeUp三個向量成員,分別定義了視點(diǎn)即觀察者的位置、攝像機(jī)瞄準(zhǔn)的參考點(diǎn)及攝像機(jī)的朝向和攝像機(jī)的向上向量。用戶只需要改變這三個變量就可以實現(xiàn)對視點(diǎn)的控制來實現(xiàn)漫游功能。對于用戶來說,在實現(xiàn)漫游時,先定義一臺攝像機(jī),每次渲染場景前重新設(shè)置相機(jī)的狀態(tài),只需要不斷變換外部設(shè)備的狀態(tài)如位置改變即可[4]。

      在OSG中進(jìn)行場景漫游時可以通過五個虛函數(shù)來實現(xiàn)自己的攝像機(jī),它們主要存在于osgGA::MatrixManipulator類中[5]。

      osgGA::MatrixManipulator中的一些操作漫游器漫游會經(jīng)常用到,比如下面辨別方向的設(shè)置:

      virtual void setCoordinateFrameCallback(CoordinateFrameCallback*cb);這個語句常用來判斷坐標(biāo)系的更新。

      Osg:: CoodinateFrame getCoordinateFrame(const osg::Ve3d&position)const;這個語句取得坐標(biāo)系。

      還有設(shè)置向量矩陣或者逆矩陣:endprint

      Virtual void setByMatrix(const osg:: Matrixd&matrix)=0;

      Virtual osg::Matrixd getMatrix()const=0;

      測試結(jié)果如下圖3:

      Virtual void setByInverseMatrix(const osg:: Matrixd&matrix)=0;

      Virtual osg::Matrixd getInverseMatrix()const=0;

      根據(jù)某校區(qū)虛擬場景操作器需求,編寫了My TravelManipulator場景漫游操作器。通過設(shè)置矩陣控制Viewer場景管理器,用addCameraManipulator()方法把場景相機(jī)加入漫游場景中,使用外部設(shè)備控制行走的方向,按下W攝像機(jī)往上走,按下S攝像機(jī)往下走,按下A攝像機(jī)往左走,按下D攝像機(jī)往右走。

      4 碰撞檢測

      本文的漫游系統(tǒng)中,大多數(shù)是靜態(tài)的物體:建筑樓群和樹木花草類,因此在這個系統(tǒng)中采用“射線/體”相交的碰撞檢測算法[6][7]。OSG中由osgUtil提供進(jìn)行碰撞檢測的核心函數(shù)接口。其中,osgUtil::Hits主要用來進(jìn)行相交測試,返回交點(diǎn)坐標(biāo)。osg::LineSegments定義一條用于相交測試的線段或射線,起點(diǎn)和終點(diǎn)都包括任何與線段的交叉都在這里。osgUtil::InterseetVisitor類給相交測試提供初始化設(shè)置,訪問場景的每個節(jié)點(diǎn),創(chuàng)建一個列表HitList類的實例。osgUtil::IntersectVisitor::HitList用于返回物體碰撞之后的列表信息,在進(jìn)行相交測試時,先是創(chuàng)建一條代表視線的線段,再創(chuàng)建一個交叉訪問的實例IntersectVisitor,最后讓創(chuàng)建好的線段在場景中遍歷場景層次,與場景對象進(jìn)行相交測試。

      經(jīng)過碰撞檢測發(fā)現(xiàn)碰撞結(jié)果符合本系統(tǒng)的需求。

      5 結(jié)束語

      由此完成了整個校區(qū)漫游系統(tǒng)的設(shè)計,經(jīng)過以上測試充分說明這個校區(qū)漫游系統(tǒng)實現(xiàn)了所需要的功能如漫游瀏覽場景的實現(xiàn),在系統(tǒng)中添加了碰撞檢測功能,使系統(tǒng)運(yùn)行更加逼真,操作更加完善。

      參考文獻(xiàn):

      [1]張凱,徐桂生,龍懷冰等.3DSMAx6三維與動畫設(shè)計[M].北京:清華大學(xué)出版社,2004:2-6.

      [2]方麗.虛擬校園的研究與實現(xiàn)[D].碩士學(xué)位論文.西安科技大學(xué),2007(19).

      [3]肖鵬,劉更代,徐明亮.OpenSceneGraph三維渲染引擎編程指南[M].北京:清華大學(xué)出版社,2010:265.

      [4]溫轉(zhuǎn)萍,申閆春.基于OSG的虛擬校園漫游系統(tǒng)的設(shè)計與實現(xiàn)[J] .計算機(jī)技術(shù)與發(fā)展,2009,19(01):218-219.

      [5]劉少華,張茂軍,張恒.大規(guī)模三維地形場景實施漫游系統(tǒng)的構(gòu)建[J].計算機(jī)仿真,2005,22(06):178-182.

      [6]范昭煒.實時碰撞檢測技術(shù)研究[D].博士學(xué)位論文.浙江大學(xué),2003(20).

      [7]高麗娜,馬堯海.虛擬漫游中的碰撞檢測問題的解決方法[J].計算機(jī)仿真,2006,23(02):189-191.

      作者簡介:張慧(1980-),女,河南登封人,工程碩士。endprint

      猜你喜歡
      碰撞檢測漫游校區(qū)
      全新預(yù)測碰撞檢測系統(tǒng)
      成都醫(yī)學(xué)院新都校區(qū)南大門
      成都醫(yī)學(xué)院新都校區(qū)一角
      基于BIM的鐵路信號室外設(shè)備布置與碰撞檢測方法
      山東大學(xué)青島校區(qū)
      文苑(2018年23期)2018-12-14 01:06:04
      霹靂漫游堂
      Unity3D中碰撞檢測問題的研究
      電子測試(2018年1期)2018-04-18 11:53:00
      我校臨安校區(qū)簡介
      NASA漫游記
      BIM技術(shù)下的某辦公樓項目管線碰撞檢測
      鹿泉市| 根河市| 敦煌市| 罗平县| 馆陶县| 拉萨市| 全南县| 永胜县| 宜丰县| 余庆县| 玛多县| 沙坪坝区| 娄烦县| 湘阴县| 修水县| 丘北县| 新田县| 万山特区| 博白县| 西藏| 沁源县| 商水县| 海原县| 桂阳县| 石河子市| 阿鲁科尔沁旗| 莱州市| 富平县| 界首市| 营山县| 江源县| 抚宁县| 和田县| 谢通门县| 怀来县| 科尔| 班玛县| 凤城市| 洛隆县| 宁晋县| 阳朔县|