【畢業(yè)論文】基于OpenSceneGraph(OSG)的虛擬小區(qū)漫游系統(tǒng)_第1頁
【畢業(yè)論文】基于OpenSceneGraph(OSG)的虛擬小區(qū)漫游系統(tǒng)_第2頁
【畢業(yè)論文】基于OpenSceneGraph(OSG)的虛擬小區(qū)漫游系統(tǒng)_第3頁
【畢業(yè)論文】基于OpenSceneGraph(OSG)的虛擬小區(qū)漫游系統(tǒng)_第4頁
【畢業(yè)論文】基于OpenSceneGraph(OSG)的虛擬小區(qū)漫游系統(tǒng)_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、基于openscenegraph的網(wǎng)絡版虛擬小區(qū)漫游系統(tǒng)摘 要自20世紀末以來,虛擬現(xiàn)實技術一直是信息領域研究、開發(fā)和應用的熱點方向之一。它借助計算機構(gòu)建出一個與現(xiàn)實環(huán)境十分逼真的虛擬環(huán)境,而且支持用戶使用自然的技能親身感受它。目前己經(jīng)廣泛應用于軍事、科學計算可視化、教育與培訓、設計與規(guī)劃、虛擬測試、虛擬游覽、購物、交互式娛樂、工程技術、科技探索等多方面領域。本文首先介紹了場景圖形理論的相關概念、openscenegraph體系結(jié)構(gòu),最后結(jié)合當今房地產(chǎn)開發(fā)業(yè)的激烈競爭,對虛擬現(xiàn)實技術的綜合應用,使用三維建模軟件3ds max 2009軟件、集成開發(fā)環(huán)境visual c+ 2005和開源的ope

2、nscenegraph三維渲染引擎,設計實現(xiàn)了中北大學校園虛擬漫游系統(tǒng)。此系統(tǒng)可以為用戶提供友好、逼真的虛擬環(huán)境,使人有身臨其境之感。最后對本文所做的工作進行了總結(jié),指出了有待改進的地方,并對下一步的研究提出了展望。關鍵詞:虛擬仿真,場景圖形,碰撞檢測,場景觀察變換,粒子系統(tǒng)virtual community of roaming system online based on openscenegraph engineabstractsince the late 20th century, virtual reality has been the field of information te

3、chnology research, development and application of one of the hot direction.it is constructed using the computer a very realistic virtual reality environment, but the skills to support users to experience it naturally.now has been widely used in military, scientific visualization, education and train

4、ing, design, and planning, virtual testing, virtual tours, shopping, interactive entertainment, engineering technology, such as many areas of science and technology exploration.this paper introduces the concept of scene graph theory related, openscenegraph architecture, finally, todays real estate d

5、evelopment industry, intense competition, the integrated application of virtual reality technology, using 3d modeling software-3ds max 2009 software, integrated development environment, visual c + + 2005 and the open source openscenegraph 3d rendering engine, designed and implemented in the north ca

6、mpus virtual tour system. this system could provide users with friendly, realistic virtual environment, giving the feeling.finally, this article summarizes the work done, pointed out the areas to be improved, and the future study are pointed out.keywords:virtual reality, scene graph, collision detec

7、tion, scene observed transformation, particle system第ii頁 共ii頁中北大學2010屆畢業(yè)設計說明書目 錄1 緒論11.1 背景及意義11.2 虛擬仿真視景技術的發(fā)展狀況和趨勢11.3 本文的組織結(jié)構(gòu)32 場景圖形理論52.1 場景圖形的概念52.2 場景圖形的特性72.3 場景圖形的渲染方式82.4 本章小結(jié)93 基于openscenegraph的虛擬系統(tǒng)開發(fā)工具和環(huán)境簡介103.1 openscenegraph三維渲染引擎103.1.1 openscenegraph的發(fā)展狀況113.1.2 openscenegraph的結(jié)構(gòu)123.2

8、3ds max 2009簡介153.3 visual c+ 2005簡介163.4 c+語言簡介163.5 基于openscenegraph的虛擬系統(tǒng)開發(fā)環(huán)境173.6 其它相關工具173.7 本章小結(jié)174 基于openscenegraph的網(wǎng)絡版虛擬小區(qū)漫游系統(tǒng)的開發(fā)184.1 系統(tǒng)的需求分析184.2 系統(tǒng)的主要功能184.3 具體實現(xiàn)184.3.1小區(qū)模型的制作184.3.2 變換操作基礎和場景觀察194.3.3 漫游功能的實現(xiàn)234.3.4 碰撞檢測254.3.5 噴泉的實現(xiàn)284.3.6 天空盒的實現(xiàn)324.3.7 導航器的實現(xiàn)344.4 系統(tǒng)測試364.5 本章小結(jié)405 總結(jié)與

9、下一步展望415.1 全文總結(jié)415.2 下一步展望41參考文獻42致謝43第ii頁 共ii頁1 緒論1.1 背景及意義隨著社會的發(fā)展,科技的進步。人類在追求經(jīng)濟高速增長的同時,也要求更高質(zhì)量的生活,科技正在這其中扮演著核心的角色。虛擬仿真(vr)指用計算機生成的一種特殊環(huán)境,人可以通過使用各種特殊裝置將自己“投射”到這個環(huán)境中,并操作、控制環(huán)境,實現(xiàn)特殊的目的,即人是這種環(huán)境的主宰。它以其具有沉浸性(immersion)、交互性(interaction)和構(gòu)想性(imagination),使人們能沉浸其中,超越其上,出入自然,形成具有交互效能多維化的信息環(huán)境。迅速滲透到社會的各個行業(yè),并且已

10、在計算機輔助設計、科學工程數(shù)據(jù)可視化、三維地理信息系統(tǒng)(gis)、醫(yī)學、游戲和娛樂中得到廣泛的運用。近年我國互聯(lián)網(wǎng)普及率的逐年提高,互聯(lián)網(wǎng)正在走進人們的工作與生活。cnnic報告調(diào)查顯示,在家和單位上網(wǎng)的網(wǎng)民比例在2009年有了明顯的提高,有83.2%的網(wǎng)民選擇在家上網(wǎng),另有30.2%的網(wǎng)民選擇在單位上網(wǎng),互聯(lián)網(wǎng)作為人們?nèi)粘9ぞ叩膬r值正在日益提升。無限的商機也在其中應運而生。各行各業(yè)以其敏銳的眼光相繼開始在互聯(lián)網(wǎng)中發(fā)掘自己的商機?,F(xiàn)在,房屋開發(fā)行業(yè)是一個競爭激烈的行業(yè),如何在客戶心中留下良好的、深刻的印象是每個房開商竭力要達到的目標。目前房開商對建筑小區(qū)的推廣措施不多,容易受天時、地利和人為因

11、素的影響,不能在建筑小區(qū)構(gòu)建的初期就給感興趣的客戶一個全面的介紹,另外,推廣形式局限于傳統(tǒng)的電視、廣播、報紙和房交會等多半是2d的形式,不能適應人們?nèi)找嫘纬傻木W(wǎng)絡生活方式,即使有些開發(fā)商提供了網(wǎng)站,但多數(shù)以圖片、文字和解說等為主,與客戶的實時交互性不足,并不能在客戶心中留下較深的印象,效果不好。而基于虛擬仿真視景技術的新推銷方式,可以彌補傳統(tǒng)的推銷手段的缺點與不足??蛻敉耆梢韵裢嬗螒蛞粯又蒙碛谄渲?,通過網(wǎng)絡技術,還不再有時間、空間的限制??梢允菇ㄖ^(qū)的推廣達到快捷、方便、形象、高效等特點。是傳統(tǒng)的廣告效果不能比擬的10。1.2 虛擬仿真視景技術的發(fā)展狀況和趨勢虛擬視景技術,是虛擬仿真視景技

12、術中一個重要分支。是計算機技術、圖形圖像處理與生成技術、多媒體技術、信息合成技術、顯示技術等諸多高新技術的綜合運用,其組成部分主要包括仿真建模技術、動畫仿真技術和實時視景生成技術。目前國內(nèi)虛擬視景技術市場尚未大幅開發(fā),但也已初具規(guī)模。美國在該領域處于領先地位,其基礎研究主要集中在感知、用戶界面、后臺軟件和硬件四個方面。美國宇航局(nasa)研究的重點放在對空間站操縱的實時仿真上,他們大量運用了面向座艙的飛行模擬技術。北卡羅來納大學(unc)的計算機系開發(fā)了一個幫助用戶在復雜視景中建立實時動態(tài)顯示的并行處理系統(tǒng)。麻省理工學院(mrr)1985年成立了媒體實驗室,建立了一個名叫bolio的測試環(huán)境

13、,用于進行不同圖形仿真技術的實驗。華盛頓大學華盛頓技術中心(hit lab)的人機界面技術實驗室進行感覺、知覺、認知和運動控制能力的研究。davesims等人研制出虛擬現(xiàn)實撤退模型來觀看系統(tǒng)如何運作。伊利諾斯州立大學研制出在車輛設計中,支持遠程協(xié)作的分布式虛擬實現(xiàn)系統(tǒng),不同國家、不同地區(qū)的工程師們可以通過計算機網(wǎng)絡實時協(xié)作進行設計。喬治梅森大學研制出一套在動態(tài)虛擬環(huán)境中的流體實時仿真系統(tǒng)。美國加州的海軍研究生院nps可視化實驗室在航行器的虛擬環(huán)境和仿真方面進行了大量的工作。旨在實現(xiàn)以ieee分布式交互仿真(dls)網(wǎng)絡協(xié)議支持下的航行器三維實時可視化仿真與虛擬環(huán)境。美國wright一patte

14、rson空軍基地的“3d圖像和計算機圖形實驗室”是s在gi4d/400工作站上建立了空間衛(wèi)星的虛擬環(huán)境來仿真近地空間和描述3d圖形衛(wèi)星模型環(huán)繞地球軌道的運行狀態(tài),使得仿真者對仿真對象信息的把握更加充分17。我國和一些發(fā)達國家相比在該領域還有一定的差距。現(xiàn)主要是一些國防科研單位、高校等部門進行研究、開發(fā)。我國的九五規(guī)劃、國家自然科學基金會、國家高技術研究發(fā)展計劃等都把虛擬環(huán)境仿真列入了研究項目。北京航空航天大學計算機系是國內(nèi)最早進行虛擬現(xiàn)實研究、最有權威的單位之一,他們著重研究了虛擬環(huán)境中物體物理特性的表示與處理在虛擬現(xiàn)實中的視覺接口方面開發(fā)出了部分硬件,并提出了有關算法及實現(xiàn)方法實現(xiàn)了分布式虛

15、擬環(huán)境網(wǎng)絡設計,建立了網(wǎng)上虛擬現(xiàn)實研究論壇,可以提供實時三維動態(tài)數(shù)據(jù)庫,提供虛擬現(xiàn)實演示環(huán)境,提供用于飛行員訓練的虛擬現(xiàn)實系統(tǒng),提供開發(fā)虛擬現(xiàn)實應用系統(tǒng)的開發(fā)平臺,并將要實現(xiàn)與有關單位的遠程連接。浙江大學cad&cg國家重點實驗室開發(fā)出了一套桌面型虛擬建筑環(huán)境實時漫游系統(tǒng),該系統(tǒng)采用了層面迭加的繪制技術和預消隱技術,實現(xiàn)了立體視覺,同時還提供了方便的交互工具,使整個系統(tǒng)的實時性和畫面的真實感都達到了較高的水平。清華大學計算機科學和技術系對虛擬現(xiàn)實和臨場感的方面進行了研究,他們還針對室內(nèi)環(huán)境水平特征豐富的特點,提出借助圖像變換,使立體視覺圖像中對應水平特征呈現(xiàn)形狀一致性,以利于實現(xiàn)特征匹配,并獲

16、取物體三維結(jié)構(gòu)的新穎算法。北方工業(yè)大學cad研究中心是我國最早開展計算機動畫研究的單位之一,關于虛擬現(xiàn)實的研究己經(jīng)完成了兩個“863”項目??哲娭笓]學院進行的“空戰(zhàn)可視化仿真系統(tǒng)”研究,為用戶提供了一個從多視點、多角度、多層次觀察空戰(zhàn)進程的平臺和機制,其畫面造型逼真、形象生動,基本達到了實時性要求,取得了的效果。西北工業(yè)大學 cad/cam研究中心,上海交通大學圖像處理及模式識別研究所,長沙國防科技大學計算機研究所、華東船舶工業(yè)學院計算機系、安徽大學電子工程與信息科學系等單位也進行了一些重要研究工作和嘗試19。在一些商業(yè)公司,如北京四維遠見公司、西安3dvri公司等,成功的運用虛擬視景技術開發(fā)

17、了一些用于民用信息服務與管理的軟件,取不錯的效果。標志著,這種技術在我國民用市場開始。此外德國、日本等國該領域的研究和開發(fā)都處在先進國家之列??傮w趨勢上看,虛擬視景仿真技術不僅將要在軍事訓練、航天飛行、武器對抗、戰(zhàn)術戰(zhàn)法研究等科研領域得到廣泛的應用,而且正以其直觀、形象、簡便、符合人們思維習慣的優(yōu)勢進入教育培訓、工程設計、娛樂咨詢、信息服務與管理、大眾媒體傳播等方面5。1.3 本文的組織結(jié)構(gòu)本文的完成的主要工作及各章的安排介紹如下:緒論主要介紹了虛擬仿真技術的背景及意義,繼而引出本文的重點:虛擬視景技術及發(fā)展狀況和趨勢。場景圖形理論通過對場景一詞的介紹,提出對場景的管理“工具”:場景圖形。闡述

18、了場景圖形的基本概念,最常見的樹形結(jié)構(gòu)場景圖形組織結(jié)構(gòu),樹形場景圖形的圖形的特征。最后簡要的敘述了場景圖形的渲染方式1。接著簡述了openscenegraph三維渲染引擎的發(fā)展狀況、優(yōu)勢和openscenegraph的組成結(jié)構(gòu);介紹了3d建模工具3ds max 2009和microsoft visual studio 2005集成開發(fā)環(huán)境,還有c+語言。最后敘述了一個基于openscenegraph虛擬系統(tǒng)的開發(fā)環(huán)境及配置。另外還介紹了在開發(fā)過程中常用的一些工具。闡述了基于openscenegraph虛擬小區(qū)漫游系統(tǒng)的整個開發(fā)過程。包括需求分析、主要功能實現(xiàn)和最后的系統(tǒng)測試,其中主要包括漫游、

19、碰撞檢測、粒子系統(tǒng)導航器、天空盒的具體實現(xiàn)。對全文的工作進行了總結(jié),并對下一步開發(fā)的做出展望。2 場景圖形理論2.1 場景圖形的概念場景原指電影、戲劇作品中的各種場面,由人物活動和背景等構(gòu)成。不難想象場景中各種各樣復雜而凌亂的元素。場景圖形是一種用于計算機游戲和圖形學中相關軟件的數(shù)據(jù)結(jié)構(gòu)設計方法,即用于抽象的描述場景中元素組織結(jié)構(gòu)、相互關系等。場景圖形的實現(xiàn)并沒有一定之規(guī),它可以用于二維或三維圖形場景的邏輯關系和空間表達。最簡單的場景圖形實現(xiàn)是使用數(shù)組或者鏈表的結(jié)構(gòu),并按照固定的順序依次繪制或操作這些節(jié)點20。而實際的大規(guī)模場景管理的場景圖形往往使用圖結(jié)構(gòu)和樹結(jié)構(gòu)來組織成一組節(jié)點集。目前多數(shù)渲

20、染引擎均采用一種自頂向下的、分層的樹狀數(shù)據(jù)結(jié)構(gòu)來組織空間數(shù)據(jù)集,以提升渲染效率。圖2.1 描述了這種場景圖形圖2.1簡單、抽象的場景圖渲染一個包含了地形、奶牛和卡車的場景時,場景圖形采用了一個根節(jié)點與三個子節(jié)點的形式。每個子節(jié)點都包含了用于繪制對象的幾何信息。典型的樹結(jié)構(gòu)場景圖形的頂部是一個根節(jié)點。從根節(jié)點向下延伸,各個組節(jié)點中均包含了幾何信息和用于控制其外觀的渲染狀態(tài)信息。根節(jié)點和各個組節(jié)點都可以有零個(有零個子成員的組節(jié)點事實上沒有執(zhí)行任何操作)或多個子成員。在場景圖形的最底部,各個葉節(jié)點包含了構(gòu)成場景中物體的實際幾何信息。圖2.2 表示一種可能的樹形結(jié)構(gòu)場景圖形的組織方式。根節(jié)點之下有四

21、個分支組節(jié)點,分別為房間幾何體,桌子幾何體,以及兩個椅子幾何體。椅子的組節(jié)點為紅色,以標識它們與子節(jié)點的轉(zhuǎn)換關系。椅子的葉節(jié)點只有一個,因為兩個椅子是同樣的,其上級組節(jié)點將這把椅子轉(zhuǎn)化到兩個不同的空間位置以產(chǎn)生兩把椅子的外觀效果。桌子組節(jié)點只有一個子節(jié)點,即桌子葉節(jié)點。房間的葉節(jié)點包括了地板、墻壁和天花板的幾何信息。典型的樹結(jié)構(gòu)場景圖中,最頂端是根節(jié)點,這個根節(jié)點可以是二維或三維的,它包含了整個虛擬世界。根節(jié)點具有一個或多個子節(jié)點,各個子節(jié)點又有零個或多個子節(jié)點,其中有一些節(jié)點是需要繪制的物體,其它節(jié)點是為表示物理上的物體本身或基本圖元,內(nèi)部節(jié)點由許多表示物體屬性的節(jié)點組成,這些節(jié)點定義了不同

22、種類要素的幾何、屬性、位置、變換、燈光、層次細節(jié)模型和動畫等。整個場景分割成具有層次的節(jié)點,節(jié)點清楚的代表了物體本身、物體的設置、動畫以及對象之間的邏輯關系的定義等。場景圖這種層次結(jié)構(gòu)可以準確描述每個節(jié)點在環(huán)境中的位置和父子關系,便于提取數(shù)據(jù)節(jié)點之間的共有行為和屬性,有利于用面向?qū)ο蟮姆绞綄崿F(xiàn)。圖 2.2 場景圖形示例組節(jié)點可能有多個子節(jié)點,程序可以有序地安排其幾何和狀態(tài)數(shù)據(jù)。在此例中,兩個椅子組節(jié)點將其唯一的子節(jié)點變換到兩個不同的空間位置上,產(chǎn)生了兩把椅子的外觀效果。場景圖形通常包括了多種類型的節(jié)點以執(zhí)行各種各樣的用戶功能,例如,開關(switch)節(jié)點可以設置其子節(jié)點可用或不可用,細節(jié)層次

23、(lod)節(jié)點可以根據(jù)觀察者的距離調(diào)用不同的子節(jié)點,變換節(jié)點可以改變子節(jié)點幾何體的坐標變換狀態(tài)。面向?qū)ο蟮膱鼍皥D形使用繼承的機制來提供這種多樣性,所有的節(jié)點類都有一個共有的基類,同時各自派生出實現(xiàn)特定功能的方法。大量定義的節(jié)點類型及其內(nèi)含的空間組織結(jié)構(gòu)能力,使得傳統(tǒng)的底層渲染api 無法實現(xiàn)的數(shù)據(jù)存儲特性得到了實現(xiàn)。opengl 和direct3d 主要致力于圖形硬件特性的抽象實現(xiàn)。盡管圖形設備可以暫時保存即將執(zhí)行的幾何和狀態(tài)數(shù)據(jù)(例如顯示列表和緩沖對象),但是底層api 中對于上述數(shù)據(jù)的空間組織能力在本質(zhì)上還是顯得過于簡單和弱小,往往難以適應大部分3d 程序的開發(fā)與應用需求。場景圖形是一種中

24、間件(middleware),這類開發(fā)軟件構(gòu)建于底層api 函數(shù)之上,提供了高性能3d 程序所需的空間數(shù)據(jù)組織能力及其它特性。圖2.3 表現(xiàn)了一個典型的osg 程序?qū)哟谓Y(jié)構(gòu)。圖 2.3 3d程序結(jié)構(gòu)層次 多數(shù)3d 應用程序并不是直接通過底層渲染api 顯示人機交互界面,而是需要使用openscenegraph 等開發(fā)包中提供的額外的功能。2.2 場景圖形的特性場景圖形除了提供底層渲染api中具備的幾何信息和狀態(tài)管理功能之外,還兼具如下的附加特性和功能:空間結(jié)構(gòu):場景圖形所采用的樹狀數(shù)據(jù)結(jié)構(gòu)更直觀,也更符合人們一般理解中的空間事物的排布和組織結(jié)構(gòu)。場景揀選:使用本地cpu的投影剔除 (frust

25、umculling)和隱藏面剔除(ocdusioncuiling)來減少系統(tǒng)總體負擔,其基本原理是,在最終渲染圖像時忽略對不會顯示的幾何體的處理。細節(jié)層次(lod):使用幾何體包圍盒計算觀察者與物體的距離,使得用戶可以更高效地渲染處于不同細節(jié)層次上的物體。并且,實時的,場景中進入指定觀察距離的那部分對象將從磁盤中載入,而它們一旦超出這一距離時,將從內(nèi)存中被移除。透明:要實現(xiàn)透明或半透明幾何體的正確和高效的渲染,需要首先渲染所有不透明的幾何體,再渲染透明幾何體。而且,透明幾何體必須按照深度排序并按照“從后向前,的順序渲染。場景圖形一般都會提供上述這些操作。狀態(tài)改動最少化:為了最大限度地提升程序性

26、能,應該避免冗余和不必要的狀態(tài)改變。場景圖形會按狀態(tài)對幾何體進行排序以最小化狀態(tài)改動,openscenegraph的狀態(tài)管理工具則負責消除冗余的狀態(tài)改變。文件uo:場景圖形可以高效地讀寫磁盤上的3d數(shù)據(jù)集。在將數(shù)據(jù)讀入內(nèi)存之后,應用程序可以方便地通過內(nèi)建的場景圖形數(shù)據(jù)結(jié)構(gòu)操控動態(tài)3d數(shù)據(jù)。場景圖形也是一個高效的文件格式轉(zhuǎn)換工具。更多高性能函數(shù):除了底層api提供的基礎函數(shù)之外,場景圖形庫還提供了高效能的功能函數(shù),例如全特性的文字支持,渲染特效的支持(例如粒子特效,陰影),渲染優(yōu)化,3d模型文件讀寫的支持,并支持對跨平臺的輸入、渲染及顯示設備的訪問。幾乎所有的3d程序都需要其中的部分特性。因此,

27、直接使用底層api來構(gòu)建程序的開發(fā)者不得不自行在程序中實現(xiàn)其中的某些性能,從而增加了研發(fā)的時間、人力及資金投入。使用現(xiàn)有的、支持上述特性的場景圖形庫,將有助于實現(xiàn)快速的程序開發(fā)工作。2.3 場景圖形的渲染方式一個的場景圖形系統(tǒng)允許程序保存幾何體并執(zhí)行繪圖遍歷,此時所有保存于場景圖形中的幾何體以opengl 指令的形式發(fā)送到硬件設備上。但是該執(zhí)行機制無法實現(xiàn)前述的諸多高級特性。為了實現(xiàn)動態(tài)的幾何體更新,揀選,排序和高效渲染,場景圖形三種需要遍歷的操作:更新(update):更新遍歷(有時也稱作程序遍歷)允許程序修改場景圖形,以實現(xiàn)動態(tài)場景。更新操作由程序或者場景圖形中節(jié)點對應的回調(diào)函數(shù)完成。例如

28、,在飛行模擬系統(tǒng)中,程序可以使用更新遍歷來改變一個飛行器的位置,或者通過輸入設備來實現(xiàn)與用戶的交互。揀選:在揀選遍歷中,場景圖形庫檢查場景里所有節(jié)點的包圍體。如果一個葉節(jié)點在視口內(nèi),場景圖形庫將在最終的渲染列表中添加該節(jié)點的一個引用。此列表按照不透明體與透明體的方式排序,透明體還要按照深度再次排序。繪制:在繪制遍歷中(有時也稱作渲染遍歷),場景圖形將遍歷由揀選遍歷過程生成的幾何體列表,并調(diào)用底層api,實現(xiàn)幾何體的渲染3。圖2.4 表示上述三類遍歷。圖2.4 場景圖形遍歷2.4 本章小結(jié)本文場景圖形是用于抽象的描述場景中元素組織結(jié)構(gòu)、相互關系等。具有眾多特性和功能。其樹形結(jié)構(gòu)是一種簡單、高效、

29、可用的場景管理方式。還為在場景渲染是提供了多種遍歷方式。3 基于openscenegraph的虛擬系統(tǒng)開發(fā)工具和環(huán)境簡介3.1 openscenegraph三維渲染引擎openscenegraph是一個開源的高性能三維圖像渲染引擎,基于修改的lgpl協(xié)議(osgpl)免費發(fā)布,廣泛用于視覺仿真、游戲、虛擬現(xiàn)實、科學可視化和建模等領域。以成為工業(yè)標準的opengl為底層平臺,使用可移植性的ansi c+編寫而成。在對封裝的基礎之上,建立一個面向?qū)ο蟮目蚣?,使得編程者可以擺脫底層的繁雜建模,更便于應用程序的開發(fā)和管理。具備跨平臺特性,可以運行于windows、mac os x、unix/linux

30、、solaris、freebsd和aix等各類操作系統(tǒng)之上。另外openscenegraph還提供了許多有用的工具包以便于更加迅捷的程序開發(fā)。openscenegraph正是基于世界上最盛行的場景圖技術,現(xiàn)今己有超過1000名開發(fā)者基于openscenegraph進行圖形程序的開發(fā)。openscenegraph以其強大的功能,完善的開發(fā)模式以及開發(fā)成果移植性強受到業(yè)界的普遍好評。采用openscenegranh圖形引擎克服了傳統(tǒng)的opengl以及direet3d開發(fā)周期長、難度大的缺點,解決了使用opengvs、vega等商業(yè)引擎開發(fā)成本過高,不利于產(chǎn)品推廣的問題,從實用的角度上更有意義。目前

31、已經(jīng)有很多成功的基于osg的應用,如delta3d、3dvri、remo3d、osgplanet、虛擬地形系統(tǒng)、交通工具仿真系統(tǒng)等等,效果不亞于商業(yè)視景渲染軟件。如果要自主開發(fā)視景渲染軟件,是最佳的基礎架構(gòu)選擇。openscenegraph是公開源代碼的,它的用戶許可方式為修改過的gnu 寬通用公共許可證(gnu lesser general public license,lgpl)。openscenegraph采用開源形式的共享方案具備了諸多優(yōu)勢:快速開發(fā):openscenegraph場景圖形內(nèi)核封裝了幾乎全部的opengl底層接口,并隨時支持最新的擴展特性。應用程序的開發(fā)者可以將重心放在三

32、維程序開發(fā)的實質(zhì)性內(nèi)容以及各種場景對象交互的方法上,而不再過多關注底層代碼。高品質(zhì):openscenegraph由osg community 的諸多成員反復進行檢查、測試和改善。直接參與核心代碼開發(fā)并有所貢獻的人員已經(jīng)超過了200 人。高性能:openscenegraph的核心代碼支持多種場景裁剪技術、細節(jié)層次節(jié)點、渲染狀態(tài)排序、頂點數(shù)組、顯示列表、vbo、pbo、fbo、opengl著色語言等;以及文字顯示,粒子系統(tǒng),陰影系統(tǒng),雨、雪、火焰、煙霧等特效模擬,場景的動態(tài)調(diào)度,多線程渲染等各種機制。提高程序質(zhì)量:要編寫高質(zhì)量的程序,開發(fā)者需要十分了解自己所用的開發(fā)包。如果這個開發(fā)包不開放源代碼,

33、與它相關的開發(fā)信息就被封閉起來,用戶只能借助開發(fā)商的文檔和客戶支持來獲得開發(fā)信息。開放源代碼使得程序員可以檢查和調(diào)試所用開發(fā)包的源代碼,充分了解代碼內(nèi)部信息。可擴展性:基于場景圖形的擴展思想,openscenegraph提供了強大的可擴展能力,包括各種類型的可擴展節(jié)點(nodekits,節(jié)點工具箱)、擴展渲染屬性、擴展回調(diào)、擴展交互事件處理器等,為用戶的程序開發(fā)提供了靈活的支持能力。底費用:開源意味著免費,除了一開始購買軟件所需的費用。沒有知識產(chǎn)權問題:對于開源且易于所有人閱讀的代碼而言,不存在侵犯軟件專利的可能性2。3.1.1 openscenegraph的發(fā)展狀況1997 年,don bu

34、rns 作為軟件設計顧問受雇于silicon graphics(sgi),他使用performer 場景圖形(sgi 專有)系統(tǒng),設計了一套基于sgi onyx 的滑翔仿真軟件。受到滑翔機愛好者的鼓勵,don 開始嘗試使用linux 上的mesa3d 和3dfx 的voodoo 設備,以開發(fā)基于更多硬件平臺的仿真軟件。當這套軟件開始支持opengl 的時候,為了將場景圖形的概念應用于linux。don 開始編寫一套簡單的類似于performer 的場景圖形系統(tǒng),名為“sg”。sg 的開發(fā)強調(diào)樸素且易用,它滿足了當時人們對于場景圖形系統(tǒng)的需求。這就是openscenegraph的雛形。1998

35、年,don 在滑翔愛好者的郵件組中遇到了robert osfield。兩人開始合作對仿真軟件進行改善。robert 倡導開源,并提議將sg作為獨立的開源場景圖形項目繼續(xù)開發(fā),并由自己擔任項目主導,項目的名稱正式改為openscenegraph。2000 年底,brede johansen 對openscenegraph 添加了openscenegraph的openflight模塊。robert作為openscenegraph的專業(yè)服務商,開始全職進行openscenegraph的開發(fā)工作。那段時期,他設計并實現(xiàn)了今天openscenegraph所使用的大部分核心功能。2001年第一屆opens

36、cenegraph“同好”會在siggraph 2001舉行,magic earth成為了openscenegraph的第一個收費用戶。openscenegraph的模塊和附加庫的開發(fā)也在不斷加速。2003 年,openscenegraph的通用庫producer(原名為osgmp)誕生,它為magic earth 提供了多通道渲染的能力。2004 年,又增加了大型數(shù)據(jù)庫分頁,地形系統(tǒng),以及陰影的支持。2006 年,openflight插件得到了全面的完善,同時還增加了osgviewer 庫,用于管理和渲染場景視圖的集成庫。2000年左右,openscenegraph開始進入中國。目前,越來越

37、多的高校和公司加入到openscenegraph的研究行列,國內(nèi)使用osg的用戶正在逐年增加。openscenegraph的應用已經(jīng)被推廣開來,包括地理信息系統(tǒng)(gis),計算機輔助設計(cad),建模和數(shù)字內(nèi)容創(chuàng)作(dcc),數(shù)據(jù)庫開發(fā),虛擬現(xiàn)實,動畫,游戲和娛樂業(yè)18。3.1.2 openscenegraph的結(jié)構(gòu)openscenegraph三維渲染引擎組成部分包括一系列動態(tài)鏈接庫(.dll/.so)、插件(.dll/.so)、供開發(fā)者使用的靜態(tài)鏈接庫(.lib/.a)、頭文件,以及可執(zhí)行的工具程序?qū)嵗?。圖3-1 表示了openscenegraph 的體系結(jié)構(gòu)圖。圖 3.1 opensce

38、negraph體系結(jié)構(gòu)openscenegraph核心庫提供了應用程序和nodekits 所需的功能模塊。而openscenegraph核心庫和nodekits 一同組成了openscenegraph的api。osg 核心庫中的osgdb 則通過對openscenegraph插件的管理,為用戶提供了2d 和3d 文件i/o 的接口。按照其作用來劃分,可以分為以下5大類型:openscenegraph核心庫:提供了基本的場景圖形和渲染功能,以及3d 圖形程序所需的某些特定功能實現(xiàn)。包括:osg 庫:osg 庫包含了用于構(gòu)建場景圖形的場景圖形節(jié)點類,用作向量和矩陣運算的類,幾何體類,以及用于描述和

39、管理渲染狀態(tài)的類。osg 庫中還包括3d 圖形程序所需的典型功能類,例如命令行參數(shù)解析,動畫路徑管理,以及錯誤和警告信息類。osgutil 庫:實用工具庫包括的類和函數(shù),可以用于場景圖形及其內(nèi)容的操作,場景圖形數(shù)據(jù)統(tǒng)計和優(yōu)化,以及渲染器的創(chuàng)建。它還包括了幾何操作的類,例如delaunay 三角面片化(delaunay triangulation),三角面片條帶化(triangle stripification),紋理坐標生成等。osgdb 庫:此鏈接庫包括了建立和渲染3d 數(shù)據(jù)庫的類與函數(shù)。其中包括用于2d 和3d 文件讀寫的osg 插件類的注冊表,以及用于訪問這些場景圖形與openscene

40、graph 概述插件的特定功能類。osgdb 數(shù)據(jù)庫分頁機(database pager)可以支持大型數(shù)據(jù)段的動態(tài)讀入和卸載。osgviewer 庫:視景器工作庫,即單個或多個場景觀察和管理的整合工具,以及平臺相關的底層圖形設備代碼,同時提供了多線程、多cpu、多顯示的場景渲染機制。osgga庫:提供各種視景窗口交互事件的管理工具,用于構(gòu)建一個與平臺無關的人機設備抽象層。節(jié)點擴展工具箱(nodekits):擴展了核心openscenegraph場景圖形節(jié)點類的功能,以提供高級節(jié)點類型和渲染特效。主要包括:osgfx 庫:此類nodekit 提供了額外的場景圖形節(jié)點,以便于特效的渲染,例如異向光

41、照(anisotropic lighting),凹凸貼圖,卡通著色等。osgparticle 庫:此類nodekit 提供了基于粒子的渲染特效,如爆炸、火焰、煙霧等。osgsim 庫:此類nodekit 提供了仿真系統(tǒng)中以及渲染openflight 數(shù)據(jù)庫所需的特殊渲染功能,例如地形高程圖,光點節(jié)點,dof 變換節(jié)點等。osgtext 庫:此類nodekit 提供了向場景中添加文字的得力工具,可以完全支持truetype 字體。osgterrain 庫:此類nodekit 提供了渲染高度場數(shù)據(jù)的能力。osgshadow 庫:此類nodekit 提供了支持陰影渲染的框架結(jié)構(gòu)。opensceneg

42、raph文件讀寫插件:其中包括了2d 圖像和3d 模型文件的讀寫和其他類型文件的讀寫功能庫,可以任意擴展和刪減。openscenegraph 庫允許用戶程序采用“節(jié)點到節(jié)點”(node-by-node)的方式直接建立場景圖形。相反的,openscenegraph插件允許用戶程序僅僅通過編寫幾行代碼就能夠從磁盤中調(diào)用整個場景圖形,或者調(diào)用部分的場景圖形,然后應用程序可以將其列入整個場景圖形系統(tǒng)中去。openscenegraph的2.0 版本支持大量常用的2d 圖形文件格式,包括.bmp,.dds,.gif,.jpeg,.pic,.png,.rgb,.tga 和.tiff。osg 還支持用于讀取電

43、影文件的quicktime 插件,并有專門的插件用于讀取freetype 類型的字體。openscenegraph 廣泛支持各種3d 模型文件格式,其中包括3d studio max(.3ds),aliaswavefront(.obj),carbon graphics geo(.geo),collada(.dae),esri shapefile(.shp),openflight(.flt),quake(.md2)和terrex terrapage(.txp)等常見格式。除上述標準格式以外,openscenegraph還定義了自身的文件格式。其中,.osg 格式是場景圖形的另一種ascii 文本

44、描述格式,用戶可以使用文本編輯器對其進行編輯和修改;而.ive 格式則是一種二進制格式,經(jīng)過優(yōu)化之后它更適合于迅速讀取。除2d 圖形和3d 模型文件以外,openscenegraph插件還支持對壓縮文件和文件集的i/o操作,openscenegraph目前支持的壓縮文件格式有常見的.tgz 和.zip,以及openscenegraph特有的.osga格式。此外,openscenegraph還包含了一組名為“pseudoloader”的插件,以提供除簡單文件讀取之外更多的功能??s放、旋轉(zhuǎn)和平移:此類pseudoloader 讀取文件并在已讀入場景圖形根節(jié)點上添加一個transform 節(jié)點,并指

45、定放縮、旋轉(zhuǎn)和平移屬性的值以配置transform。圖標:圖標類pseudoloader 允許在已讀入3d 場景之上顯示hud(抬頭顯示)樣式的圖片文件。內(nèi)省庫:用戶可以在任何支持c+庫鏈接的編程環(huán)境中使用openscenegraph。為了確保openscenegraph可以在更多環(huán)境中運行,openscenegraph提供了一個語言無關的、可供運行時訪問的接口。osglntrospection庫允許用戶軟件使用反射式和自省式的編程范式與openscenegraph進行交互。應用程序或其它軟件可以使用。sghitrospection庫和方法迭代openscenegraph的類型,枚舉量和方法,

46、并且無需了解openscenegraph編譯和鏈接時的具體過程,即可調(diào)用這些方法。作為osglntrospeetion及其封裝的結(jié)果,許多語言如java,tcl,lua和python,都可以與openscenegraph進行交互。工具程序和示例集:它提供實用的功能函數(shù)和正確使用openscenegraph的例子。openscenegraph發(fā)行版包含了五個常用的openscenegraph工具程序,它們對于調(diào)試和其它基于openscenegraph的軟件開發(fā)均十分有益。osgarchive:這個程序用于向.osga 文件包中添加新的文件。也可以用這個程序?qū)崿F(xiàn)包的分解和列表。osgconv:這個

47、程序用于轉(zhuǎn)換文件格式。尤其有用的是,它可以將任意文件格式轉(zhuǎn)換為經(jīng)過優(yōu)化的.ive 格式。osgdem:這個程序用于將高程圖等高度數(shù)據(jù)及圖像數(shù)據(jù)轉(zhuǎn)換為分頁的地形數(shù)據(jù)庫。osgversion:這個程序?qū)斍皁sg 版本以及一些記錄了osg 源代碼改動情況和貢獻者信息送入。osgviewer:這是一個靈活而強大的osg 場景及模型瀏覽器。3.2 3ds max 2009簡介autodesk公司開發(fā)的基于pc系統(tǒng)的三維動畫渲染和制作軟件。廣泛應用于廣告、影視、工業(yè)設計、建筑設計、多媒體制作、游戲、輔助教學以及工程可視化等領域。特別是電視及娛樂業(yè)中,比如片頭動畫和視頻游戲的制作。在影視特效方面也有一定的

48、應用。在國內(nèi)發(fā)展的相對比較成熟的建筑效果圖和建筑動畫制作中,3ds max的使用率更是占據(jù)了絕對的優(yōu)勢。根據(jù)不同行業(yè)的應用特點對3ds max的掌握程度也有不同的要求,建筑方面的應用相對來說要局限性大一些,它只要求單幀的渲染效果和環(huán)境效果,只涉及到比較簡單的動畫;片頭動畫和視頻游戲應用中動畫占的比例很大,特別是視頻游戲?qū)巧珓赢嫷囊笠咭恍?;影視特效方面的應用則把3ds max的功能發(fā)揮到了極至。有如下的特點:1) 功能強大,擴展性好。建模功能強大,在角色動畫方面具備很強的優(yōu)勢,另外豐富的插件也是其一大亮點;2) 操作簡單,容易上手。與強大的功能相比,3ds max可以說是最容易上手的3d軟

49、件;3) 和其它相關軟件配合流暢;4) 成品效果非常的逼真11。3.3 visual c+ 2005簡介visual c+ 2005是以microsoft visual studio 2005集成開發(fā)環(huán)境的組成部分提供的。提供了.net framework平臺。可以開發(fā)由iso/ansi語言標準的本地c+程序和名為c+/cli版的clr程序。它還包括了許多完全集成的工具,方便用戶開發(fā)程序。主要的系統(tǒng)組件包括:1) 編輯器編輯器給用戶提供了創(chuàng)建和編輯c+源代碼的交互環(huán)境。提供了人們熟知的常見功能(比如粘貼、剪切),此外編輯器還提供了用顏色來區(qū)分不同的語言元素,自動標示關鍵字等。不僅使代碼的可讀性

50、更好,而且在輸入這些單詞時出錯的情況下可以提供清楚的指示。2) 編譯器編譯器將源代碼轉(zhuǎn)換為目標代碼,并檢測和報告編譯過程中的錯誤。編譯器可以檢測各種因無效或不可識別的程序代碼引起的錯誤,還可以檢測諸如部分程序永遠不能執(zhí)行這樣的結(jié)構(gòu)性錯誤。編譯器輸出的目標代碼存儲在稱作目標文件的文件中。編輯器產(chǎn)生的目標代碼有兩種類型。這些目標代碼通常使用以.obj為擴展名。3) 連接器連接器組合編譯器根據(jù)源代碼文件產(chǎn)生的各種模塊,從作為c+組成部分提供的程序庫中添加所需要的代碼模塊,并將所有的模塊整合成可執(zhí)行的整體。還能檢測并報告程序缺少某個組成部分,或引用不存在的庫組件等錯誤。4) 庫即微軟提供的預先編譯好的

51、例程集合,它通過提供專業(yè)的標準代碼單元,支持并擴展了c+語言。用戶可以將這些代碼合并到自己的程序中,以執(zhí)行常見的操作。visual c+ 2005提供的各種庫包括的例程所實現(xiàn)的操作,由于的節(jié)省了用戶親自編寫并測試實現(xiàn)這些操作的代碼所需要的工作量,從而大大提高了開發(fā)效率9。3.4 c+語言簡介c+語言是一種面向?qū)ο蟮某绦蛟O計語言,它是在c語言的基礎上發(fā)展起來的。以其獨特的語言機制在計算機科學的各個領域中得到了廣泛的應用。面向?qū)ο蟮脑O計思想是在原來結(jié)構(gòu)化程序設計方法基礎上的一個質(zhì)的飛躍,完美地體現(xiàn)了面向?qū)ο蟮母鞣N特性。是目前使用較為廣泛的面向?qū)ο蟮某绦蛘Z言78。3.5 基于openscenegra

52、ph的虛擬系統(tǒng)開發(fā)環(huán)境作為一款開源的三維渲染引擎,除了前面所敘述特性外,同其它的非開源軟件有一個弱點,不便于使用。各種開發(fā)環(huán)境的區(qū)別導致,多數(shù)時候只能自己解決。所以在用openscenegraph開發(fā)系統(tǒng)時開發(fā)環(huán)境的配置是很重要的。首先,對操作系統(tǒng)的要求,openscenegraph具有跨平臺性,可是在我國常見是windows操作系統(tǒng),相對而言windows xp2較為穩(wěn)定。其次,對openscenegraph的版本的選擇和集成開發(fā)環(huán)境的選擇,openscenegraph的版本在對集成開發(fā)環(huán)境有直接針對性。比如openscenegraph2.8版是針對microsoft visual stud

53、io 2005 sp1的,如果是其它版本的集成開發(fā)環(huán)境,那么用戶還得自己去找插件,自己編譯。是很繁瑣的,也是初學者最怕的。3.6 其它相關工具cmake:openscenegraph作為一款開源的三維渲染引擎,其一般以源代碼的形式發(fā)布的。雖然也有預編譯的形式發(fā)布,但是由于用戶的計算機環(huán)境千差萬別,很多時候官方直接提供的預編譯文件無法使用,所以用戶還得自己編譯。這中間需要用戶在獲取源包之后,用cmake這種跨平臺編譯工具,進行編譯輸出project文件。進行進一步的編譯。osgexp:在實際的項目中,通常是在3 ds max中建好模型,然后加載到openscenegraph中,這其中要用到osg

54、exp把.max文件轉(zhuǎn)換為.osg或.ive文件。subversion(svn):版本控制工具,用來實時更新openscenegraph源代碼。3.7 本章小結(jié)openscenegraph是一種開源、高效、強大、新穎和可操作性強的三維渲染引擎,近年來發(fā)展很快,主要包含:openscenegraph核心庫、openscenegraph節(jié)點工具箱庫、openscenegraph文件讀寫插件庫、openscenegraph內(nèi)身庫和工具程序和示例集五個部分。此外還基于openscenegraph的項目中用到的各種開發(fā)工具和項目環(huán)境設置。4 基于openscenegraph的網(wǎng)絡版虛擬小區(qū)漫游系統(tǒng)的開發(fā)

55、4.1 系統(tǒng)的需求分析基于openscenegraph的網(wǎng)絡版虛擬小區(qū)漫游系統(tǒng),首先要求制作一個虛擬小區(qū)模型,盡可能的接近現(xiàn)實的樣式。小區(qū)模型的制作屬于建筑物室外表現(xiàn)的建模范疇,場景中的物體的多多為直線條的組成,結(jié)合3 ds max 2009的特點,采用多邊形建模,它簡單、編輯靈活,對硬件的要求很低,而且?guī)缀鯖]有什么模型不能通過多邊形建模完成的。其次建好小區(qū)模型后,配置基于openscenegraph三維引擎程序的環(huán)境,包括系統(tǒng)環(huán)境的配置和visual c+ 2005的配置,后編寫基于漫游程序代碼,載入建好的小區(qū)模型,實現(xiàn)虛擬小區(qū)的漫游功能相關要求。這其中為了更好的表現(xiàn)出真實的效果,要使用天空

56、盒美化背景;使用一些粒子系統(tǒng)使場景更為逼真;在漫游的過程中藥實現(xiàn)碰撞檢測,避免出現(xiàn)穿墻而過的情況;漫游的過程中可以查看小區(qū)地圖等。最后,對系統(tǒng)進行測試,要求的功能是否都實現(xiàn)。4.2 系統(tǒng)的主要功能系統(tǒng)主要包括以下功能:1) 模型加載 可以打開指定的小區(qū)、校園模型文件。2) 特殊效果 實現(xiàn)如雨、雪、噴泉等粒子效果。3) 漫游功能 能夠響應鍵盤事件,控制視口的前后左右上下的移動,左右視角的改變。4) 導航地圖 在漫游過程中可以隨時的調(diào)出小區(qū)地圖查看,并在不需要是隱藏起來。5) 天空盒 為了更好的表現(xiàn)出漂亮的小區(qū)模型背景,添加天空盒使得小區(qū)的背景更漂亮、逼真。4.3 具體實現(xiàn)根據(jù)系統(tǒng)功能要求,主要的

57、系統(tǒng)實現(xiàn)如下:4.3.1小區(qū)模型的制作選定中北大學校園為虛擬小區(qū)的原型,在此基礎上挑選部分有代表性的建筑模型。確定要制作的主要的建筑物名稱:圖書館、11號主教學樓、7號德懷樓及西區(qū)部分宿舍樓模型。分別對各個建筑物進行詳細的勘察,記錄建筑物的大小、形狀、顏色等屬性。使用前面介紹的3 ds max 2009使用多邊形建模法分別制作各個建筑物的模型。在建模過程中切忌要有良好的建模習慣,不止只看模型的逼真程度,還要考慮建模中各種幾何體組件的數(shù)量和編組情況,乃至3 ds max中的場景采用什么樣的場景圖形進行管理。因為如果你過于濫用某種幾何體和編組,建模后表面上沒什么區(qū)別,可是當你加載如程序運行后,濫用幾何體和編組的,由于在進行渲染時,首先的遍歷過程時間很長,導致漫游時效果明顯不流暢。制作好各個建筑物的分模型后,制作一個地形模型,加上必要的道路、樹木等,把所有的分模型一一合并進來。調(diào)整各自的位置、大小。進行必要的貼圖,完成中北校園模型的制作,塌陷保

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論