趙 磊1, 2,趙 罡1, 2,談敦銘1, 2
?
基于八叉樹的復(fù)雜產(chǎn)品模型實(shí)時(shí)繪制技術(shù)
趙 磊,趙 罡,談敦銘
(1. 虛擬現(xiàn)實(shí)技術(shù)與系統(tǒng)國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京 100191;2. 北京航空航天大學(xué)機(jī)械工程及自動(dòng)化學(xué)院,北京 100191)
給出基于OpenSceneGraph場(chǎng)景模型的信息提取方法,利用八叉樹對(duì)場(chǎng)景模型進(jìn)行分割和視錐體剔除,有效提高了實(shí)時(shí)繪制的效率,尤其是對(duì)瀏覽場(chǎng)景細(xì)節(jié)時(shí)的繪制效率提高最為明顯。采用基于分頁(yè)技術(shù)的Pagelod方法,實(shí)現(xiàn)模型的動(dòng)態(tài)調(diào)度,以減少I/O的負(fù)載,滿足在有限硬件條件下虛擬場(chǎng)景中復(fù)雜產(chǎn)品模型的實(shí)時(shí)繪制要求。
虛擬場(chǎng)景;實(shí)時(shí)繪制;復(fù)雜產(chǎn)品模型;八叉樹
隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,虛擬現(xiàn)實(shí)技術(shù)(Virtual Reality,簡(jiǎn)稱VR),也稱為虛擬環(huán)境(Virtual Environment,簡(jiǎn)稱VE),已經(jīng)對(duì)現(xiàn)代社會(huì)產(chǎn)生重要影響,并在改變?nèi)祟惖纳詈凸ぷ鞣绞?。目前虛擬現(xiàn)實(shí)技術(shù)已經(jīng)成功地應(yīng)用在醫(yī)學(xué)、軍事、航空、制造業(yè)、建筑、教育、娛樂、銷售等眾多領(lǐng)域。
實(shí)時(shí)繪制(Real Time Rendering)是指系統(tǒng)在滿足視覺無閃爍的限制內(nèi),完成對(duì)場(chǎng)景中各對(duì)象的位置和姿態(tài)的計(jì)算和場(chǎng)景、對(duì)象繪制;同時(shí)能夠?qū)τ脩舻妮斎肓⒓醋龀鲰憫?yīng),并同步更新畫面,實(shí)現(xiàn)用戶與系統(tǒng)的實(shí)時(shí)交互。
目前實(shí)時(shí)繪制技術(shù)主要在LOD技術(shù)(Levels of Detail)、可見性剔除、分布式并行計(jì)算三個(gè)方面展開研究。
LOD技術(shù)是根據(jù)距離等因素采用細(xì)節(jié)程度不同的模型進(jìn)行繪制的技術(shù)。這些細(xì)節(jié)程度不同的模型可以提前生成,也可實(shí)時(shí)生成。應(yīng)用中多采用提前生成的方式,且一次性將層次細(xì)節(jié)模型文件讀入內(nèi)存。但當(dāng)層次細(xì)節(jié)模型文件很大時(shí)將對(duì)計(jì)算機(jī)造成讀寫壓力,影響實(shí)時(shí)繪制的效果。
可見性剔除是將位于視錐體外或不在視野內(nèi)的模型從內(nèi)存中剔除的技術(shù)。傳統(tǒng)方法多通過計(jì)算場(chǎng)景中每一模型的包圍盒與視錐體的相對(duì)位置來判斷是否進(jìn)行剔除。當(dāng)場(chǎng)景中模型數(shù)量較大時(shí),這種方式就會(huì)產(chǎn)生明顯的延時(shí)。
分布式并行計(jì)算是在一組互聯(lián)的計(jì)算機(jī)上同時(shí)實(shí)現(xiàn)虛擬現(xiàn)實(shí)技術(shù),對(duì)計(jì)算機(jī)系統(tǒng)的I/O要求很高,這里不處理這種情況。
通過對(duì)復(fù)雜產(chǎn)品模型的分析,基于八叉樹對(duì)場(chǎng)景模型進(jìn)行分割、構(gòu)建層次細(xì)節(jié)模型和進(jìn)行視錐體剔除?;赑agelod實(shí)現(xiàn)對(duì)大數(shù)據(jù)模型的動(dòng)態(tài)加載,解決傳統(tǒng)LOD文件需一次性讀入內(nèi)存的問題。
虛擬場(chǎng)景的渲染離不開3D API。目前通用的3D API有OpenGL和Direct3D。兩種API各有優(yōu)點(diǎn),相對(duì)于Direct3D,OpenGL是一種開放性的標(biāo)準(zhǔn),具有良好的跨平臺(tái)性能。但OpenGL仍具有使用比較繁瑣、渲染效率較低、開發(fā)周期較長(zhǎng)等缺點(diǎn)。為了解決OpenGL的這些缺點(diǎn),出現(xiàn)了很多封裝OpenGL的高級(jí)3D API 如Open-SceneGraph(簡(jiǎn)稱OSG),OpenGVS等,這其中又以O(shè)SG的性能最突出,渲染效率最高。
OSG圖形系統(tǒng)是一個(gè)基于工業(yè)標(biāo)準(zhǔn)OpenGL,采用C++語(yǔ)言開發(fā)的軟件接口。它讓開發(fā)人員能夠更快速、便捷地創(chuàng)建高性能、跨平臺(tái)的交互式圖形程序。
采用Visual Studio 2005 和OSG開發(fā)。
虛擬場(chǎng)景中的模型多由外部軟件建模完成,并保存或轉(zhuǎn)換成能被虛擬場(chǎng)景支持的中間格式如.3ds,.obj等。OSG可以讀取這些中間格式文件,但為了實(shí)現(xiàn)對(duì)模型的分割,必須提取場(chǎng)景中每一模型的基本信息(如點(diǎn)、線、三角形等)。
2.1 OSG的渲染場(chǎng)景圖形組織方式
OSG場(chǎng)景圖形采用一種自頂向下的,分層的樹狀結(jié)構(gòu)來組織空間數(shù)據(jù)集,來提升渲染效率。每個(gè)OSG程序只有一個(gè)根節(jié)點(diǎn)(Root),該根節(jié)點(diǎn)可以有多個(gè)子節(jié)點(diǎn),子節(jié)點(diǎn)可以是葉節(jié)點(diǎn)(Geode)或組節(jié)點(diǎn)(Group),如圖1所示。葉節(jié)點(diǎn)保存了繪制場(chǎng)景所需要的幾何信息(Geometry)和狀態(tài)信息(State),不能再有子節(jié)點(diǎn)。葉節(jié)點(diǎn)又由多個(gè)Geometry和State組成,每個(gè)Geometry都有一個(gè)State與其對(duì)應(yīng),這樣的一個(gè)組合用Drawable來表示。幾何信息集中了渲染本圖形單元所需要的頂點(diǎn)、頂點(diǎn)索引、法線、三角形等信息,這些信息又是以數(shù)組的方式保存的。而狀態(tài)則包含了渲染本圖形單元所需的材質(zhì)等信息。組節(jié)點(diǎn)(Group)可以有任意個(gè)子節(jié)點(diǎn),而這些子節(jié)點(diǎn)既可以是葉節(jié)點(diǎn)又可以是組節(jié)點(diǎn),這就為管理節(jié)點(diǎn)提供了可能。OSG中常用的節(jié)點(diǎn)類型還有:MaxtrixTransform(MT)節(jié)點(diǎn)、PositionAttitudeTransform(PAT)節(jié)點(diǎn)等。
圖1 抽象的場(chǎng)景圖
2.2 OSG中模型信息提取方式
實(shí)際場(chǎng)景的組織方式很復(fù)雜,如何準(zhǔn)確獲取其中每一葉節(jié)點(diǎn)的相關(guān)信息將會(huì)很困難。經(jīng)過2.1節(jié)的總結(jié)可以看出,遍歷場(chǎng)景根節(jié)點(diǎn)的每一子節(jié)點(diǎn),若此子節(jié)點(diǎn)是葉節(jié)點(diǎn)則提取模型信息,否則繼續(xù)遍歷該子節(jié)點(diǎn)的所有子節(jié)點(diǎn),當(dāng)新的子節(jié)點(diǎn)為葉節(jié)點(diǎn)時(shí)提取信息,直到遍歷完所有葉節(jié)點(diǎn)。根據(jù)這一思想,提出如下的模型信息提取方法:
Step 1 初始化
判斷根節(jié)點(diǎn)是否有子節(jié)點(diǎn),若無子節(jié)點(diǎn)退出,否則提取根節(jié)點(diǎn)中子節(jié)點(diǎn)的數(shù)量。
Step 2 提取子節(jié)點(diǎn)信息
判斷節(jié)點(diǎn)類型,若為MT節(jié)點(diǎn)則要提取矩陣信息。若為PAT節(jié)點(diǎn)則要提取位置、朝向、姿態(tài)、比例等信息。MT節(jié)點(diǎn)和PAT節(jié)點(diǎn)都要提取參考框架(ReferenceFrame)類型。所有節(jié)點(diǎn)都要提取節(jié)點(diǎn)掩碼(NodeMask)等。
Step 3 提取葉節(jié)點(diǎn)信息
分析子節(jié)點(diǎn)中的每個(gè)葉節(jié)點(diǎn),并提取葉節(jié)點(diǎn)中的每個(gè)Drawable的幾何和狀態(tài)信息。
Step 4 循環(huán)與退出
若根節(jié)點(diǎn)中還有未被提取信息的子節(jié)點(diǎn)則執(zhí)行Step 2,反之退出。
通過對(duì)場(chǎng)景模型信息提取,就將場(chǎng)景中每一模型轉(zhuǎn)保存為一組基本信息,處理這些基本信息可以實(shí)現(xiàn)對(duì)場(chǎng)景進(jìn)行精確分割、調(diào)整等操作。
目前虛擬場(chǎng)景中的數(shù)據(jù)多采用樹狀結(jié)構(gòu)的方法來表示。虛擬場(chǎng)景的樹狀結(jié)構(gòu)表示減少了可見性計(jì)算、碰撞檢測(cè)等,可以提高圖形的實(shí)時(shí)繪制能力。目前通用的場(chǎng)景數(shù)據(jù)表示方法有:四叉樹、八叉樹、BSP樹等。
四叉樹是一種二維表示格式,是對(duì)二維平面在兩個(gè)方向上進(jìn)行連續(xù)分割以形成象限的方式得到,如圖2(a)所示。由于該方法是一種二維表示方式,實(shí)際中多用于大地形數(shù)據(jù)的分割。
八叉樹是可以看作是對(duì)四叉樹在三維上的推廣,如圖2(b)所示。場(chǎng)景的八叉樹層次結(jié)構(gòu)在預(yù)處理階段生成,在實(shí)時(shí)繪制階段根據(jù)視點(diǎn)或距離原則對(duì)樹結(jié)構(gòu)進(jìn)行自適應(yīng)修改。
二叉樹(Binary Space Portioning Tree,簡(jiǎn)稱BSP),其思想是依據(jù)空間中的平面,將整個(gè)空間分割成兩個(gè)半空間,根據(jù)這種思想實(shí)現(xiàn)場(chǎng)景分割,如圖2(c)所示。相對(duì)于前兩種方法,BSP樹簡(jiǎn)單但是會(huì)產(chǎn)生更多的節(jié)點(diǎn)。
本文需要對(duì)復(fù)雜產(chǎn)品模型進(jìn)行分割,從而生成層次細(xì)節(jié)模型。采用基于八叉樹對(duì)場(chǎng)景模型進(jìn)行分割,該方法停止遞歸的條件為達(dá)到了設(shè)定的分割層數(shù)或已無模型在當(dāng)前節(jié)點(diǎn)內(nèi)。下面將介紹創(chuàng)建的八叉樹節(jié)點(diǎn)和模型分割算法。
(a) 四叉樹
(b) 八叉樹
(c) BSP樹
3.1 八叉樹節(jié)點(diǎn)
每個(gè)八叉樹節(jié)點(diǎn)不僅要保存本節(jié)點(diǎn)的信息,通過該八叉樹節(jié)點(diǎn)還應(yīng)能夠找到父節(jié)點(diǎn)(如果存在)和子節(jié)點(diǎn)(如果存在)。下面直接用C++偽代碼描述八叉樹節(jié)點(diǎn)所含信息。
class OctreeNode
{ 節(jié)點(diǎn)名稱; 節(jié)點(diǎn)中心;
包圍盒的長(zhǎng)寬高; 節(jié)點(diǎn)所含的模型;
是否是根節(jié)點(diǎn); 是否是最后一級(jí)節(jié)點(diǎn);
八叉樹的級(jí)別; 在父節(jié)點(diǎn)中位置;
八叉樹節(jié)點(diǎn)所含模型的數(shù)量;
八叉樹節(jié)點(diǎn)包圍盒的八個(gè)頂點(diǎn);
八叉樹節(jié)點(diǎn)的八個(gè)子節(jié)點(diǎn);
八叉樹節(jié)點(diǎn)的父節(jié)點(diǎn);
……
};
3.2 模型分割
采用初始模型的包圍盒作為八叉樹根節(jié)點(diǎn)。對(duì)場(chǎng)景進(jìn)行基于八叉樹的分割,要通過多次遞歸才能實(shí)現(xiàn),而其中一次的分割算法如下:
Step 1 初始化
待分割的模型(由一個(gè)或多個(gè)零件組成),待計(jì)算的八叉樹節(jié)點(diǎn)。
Step 2 計(jì)算零件包絡(luò)體信息
提取待分割模型中的一個(gè)零件并計(jì)算其包圍盒、包圍球半徑。
Step 3 分割零件
計(jì)算Step 2求得的包圍盒的8個(gè)頂點(diǎn)與八叉樹節(jié)點(diǎn)的位置關(guān)系。若8個(gè)頂點(diǎn)都在八叉樹節(jié)點(diǎn)中,則將本零件加入到八叉樹節(jié)點(diǎn)模型中;若待分割模型仍有零件未被處理,轉(zhuǎn)Step 2;若待分割模型中不存在未被處理的零件則退出。若8個(gè)頂點(diǎn)不全在八叉樹節(jié)點(diǎn)中,依據(jù)2.2節(jié)中的方式提取零件信息。
Step 4 分割和重構(gòu)三角形
對(duì)提取到的每個(gè)三角形,先計(jì)算其最小外接圓(半徑和圓心),計(jì)算圓心和八叉樹節(jié)點(diǎn)中心的距離,依據(jù),,之間的關(guān)系分別處理:
(1)若<(+)則這個(gè)三角形可能和八叉樹節(jié)點(diǎn)相交,計(jì)算三角形的三個(gè)頂點(diǎn)和八叉樹節(jié)點(diǎn)的包圍盒的關(guān)系,若三個(gè)頂點(diǎn)都在八叉樹中則將本三角形添加到相應(yīng)的數(shù)組中,否則按一個(gè)頂點(diǎn)在八叉樹節(jié)點(diǎn)中、兩個(gè)頂點(diǎn)在八叉樹節(jié)點(diǎn)、三個(gè)頂點(diǎn)都不在八叉樹節(jié)點(diǎn)中,這三種情況計(jì)算三角形和八叉樹節(jié)點(diǎn)的交點(diǎn),利用所求交點(diǎn)和原來在八叉樹節(jié)點(diǎn)中的頂點(diǎn)創(chuàng)建新的三角形(注意:三角形的法線一定要和原三角形的法線同向),將新三角形添加到相應(yīng)的數(shù)組中;
(2)若≥(+)則三角形和八叉樹節(jié)點(diǎn)不相交。
Step 5 創(chuàng)建新葉節(jié)點(diǎn)
依據(jù)Step 3的結(jié)果新建Drawable,循環(huán)執(zhí)行直到本節(jié)點(diǎn)中的Drawable都被處理。依據(jù)這些新建的Drawable創(chuàng)建新節(jié)點(diǎn),并將這些新節(jié)點(diǎn)作為一個(gè)整體添加到八叉樹節(jié)點(diǎn)中。
Step 6 循環(huán)處理與退出
若待分割模型中仍有未被處理的子節(jié)點(diǎn),則執(zhí)行Step 2,否則退出。
圖3為模型分割方法在飛機(jī)機(jī)尾模型上的應(yīng)用,圖3(a)為原始飛機(jī)機(jī)尾模型,圖3(b)為經(jīng)過二級(jí)分割后的模型,其中的線框?yàn)榉指詈竽P偷拿總€(gè)八叉樹子節(jié)點(diǎn)的包圍盒,從圖中可以看出被分割后的機(jī)尾與原始模型相比不僅保留了完整性而且具有很好的外觀。
完成基于八叉樹的模型分割后,就可以將分割后的最后一級(jí)節(jié)點(diǎn)已.ive或.osg格式保存到硬盤,形成一級(jí)層次細(xì)節(jié)模型文件。對(duì)同一模型的不同精度等級(jí)的模型分別進(jìn)行分割就可以形成多級(jí)層次細(xì)節(jié)模型文件,為實(shí)時(shí)繪制做預(yù)處理。
(a) 原始模型
(b) 二級(jí)分割后的模型
圖3 飛機(jī)機(jī)尾模型進(jìn)行二級(jí)分割
前文分析了傳統(tǒng)LOD的缺點(diǎn),本節(jié)將基于Pagelod實(shí)現(xiàn)以視點(diǎn)到模型中心點(diǎn)的距離為原則的動(dòng)態(tài)加載。
為加快視錐體剔除效率,采用八叉樹方式來構(gòu)建場(chǎng)景,將視錐體與八叉樹節(jié)點(diǎn)進(jìn)行比較,來實(shí)現(xiàn)視錐體剔除。
4.1 動(dòng)態(tài)加載模型
Pagelod就是采用分頁(yè)數(shù)據(jù)庫(kù)技術(shù),以距離為原則動(dòng)態(tài)加載相應(yīng)的層次細(xì)節(jié)模型文件,由單獨(dú)線程實(shí)現(xiàn)加載,因此效率遠(yuǎn)高于傳統(tǒng)的LOD技術(shù)。
初始化時(shí),只需給出保存層次細(xì)節(jié)模型文件的路徑和名稱,并設(shè)定各LOD節(jié)點(diǎn)在哪個(gè)距離段顯示即可。渲染場(chǎng)景時(shí),系統(tǒng)將自動(dòng)選取需渲染的節(jié)點(diǎn)。這種方法對(duì)于簡(jiǎn)單的模型,視覺上會(huì)產(chǎn)生一定的跳躍,但是對(duì)于復(fù)雜的場(chǎng)景并采用比較連續(xù)的簡(jiǎn)化模型將減少跳躍感。
4.2 基于八叉樹的視錐體剔除
本節(jié)將利用第3節(jié)的分割結(jié)果實(shí)現(xiàn)視錐體剔除。
計(jì)算機(jī)繪制場(chǎng)景的步驟為:視圖變換,模型變換,投影變換和視口變換。在實(shí)際應(yīng)用中,尤其對(duì)于從文件讀取的模型不用進(jìn)行模型變換,只要獲得視圖變換、投影變換和視口變換的矩陣,就可以獲得模型繪制對(duì)模型要進(jìn)行的變換。
視錐體是一個(gè)平截頭體,其可以通過一個(gè)單位正方體的各面與一個(gè)變換矩陣()相乘獲得。這個(gè)變換矩陣,可以通過獲取當(dāng)前場(chǎng)景的視圖變換矩陣()和投影變換矩陣(),并將它們相乘獲得,即:=*。例如:初始化單位正方體(如圖4(a))的6個(gè)面分別為+++=0。以每個(gè)平面的參數(shù),,,構(gòu)造向量=(,,,),=*,設(shè)新=(′,′,′,′),則′,′,′,就為新平面方程的系數(shù),如此則得到當(dāng)前視錐體的六個(gè)面的平面方程,如圖4(b)所示。
(a) 初始的單位視錐體 (b) 變換后得到視錐體
采用如下的方法確定一個(gè)八叉樹節(jié)點(diǎn)是否位于視錐體外部:
判斷八叉樹根節(jié)點(diǎn)的八個(gè)頂點(diǎn)和八叉樹節(jié)點(diǎn)中心是否在視錐體外,若都在視錐體外部,則將根節(jié)點(diǎn)及其下所有子節(jié)點(diǎn)的位于視錐體外的標(biāo)志量設(shè)為true,并將根節(jié)點(diǎn)下所有模型節(jié)點(diǎn)的可見屬性設(shè)為false;否則遞歸判斷八叉樹的八個(gè)子節(jié)點(diǎn)(節(jié)點(diǎn)中若沒有模型則不用判斷)是否在視錐體外。
位于視錐體外的節(jié)點(diǎn)再次進(jìn)入視錐體內(nèi)時(shí):
首先判斷八叉樹節(jié)點(diǎn)的八個(gè)頂點(diǎn)是否位于是視錐體內(nèi),若都位于視錐體內(nèi)部,且當(dāng)前八叉樹節(jié)點(diǎn)的位于視錐體外的標(biāo)志量為true,則將八叉樹節(jié)點(diǎn)和其子八叉樹節(jié)點(diǎn)的位于視錐體外的標(biāo)志量設(shè)為false,并將本八叉樹節(jié)點(diǎn)下的所有模型節(jié)點(diǎn)的可見屬性設(shè)為true,并將這些模型節(jié)點(diǎn)加載到場(chǎng)景繪制中。
這種剔除方式對(duì)實(shí)時(shí)繪制速度有明顯的提高,尤其在瀏覽場(chǎng)景細(xì)節(jié)時(shí)提高的最為明顯。
將上文的方法在PC機(jī)(奔騰4 CPU 3.00G,內(nèi)存1.00G)上實(shí)現(xiàn)。原始模型如圖5(a)所示,由348萬個(gè)頂點(diǎn)、418萬個(gè)三角形組成。對(duì)該模型進(jìn)行多級(jí)分割實(shí)驗(yàn),結(jié)果如表1所示。從表1中可以看出,二級(jí)分割和三級(jí)分割后增加的頂點(diǎn)數(shù)量和幀頻率的降低情況相近,而三級(jí)分割和四級(jí)分割則產(chǎn)生了太多的頂點(diǎn)同時(shí)幀頻率也產(chǎn)生了明顯降低。對(duì)模型進(jìn)行二級(jí)分割后的結(jié)果如圖5(b)所示。
表1 模型多級(jí)分割數(shù)據(jù)
對(duì)原始模型簡(jiǎn)化(每次減少10 %),形成了100%到10%的11級(jí)LOD。表2中的前三組數(shù)據(jù)給出了100%、50%、10%三組模型經(jīng)實(shí)時(shí)繪制方法處理后的幀頻率變化情況。由于分割造成模型的頂點(diǎn)和三角形增多,所以幀頻率出現(xiàn)了一定的衰減,但衰減的量不多。表2中后兩組數(shù)據(jù),分別為當(dāng)場(chǎng)景中顯示如圖5(c)、圖5(d)的細(xì)節(jié),采用實(shí)時(shí)繪制方法前后的幀頻率。從細(xì)節(jié)1的數(shù)據(jù)可以看出,雖然顯示相近的細(xì)節(jié)部分但采用實(shí)時(shí)繪制技術(shù)后場(chǎng)景中實(shí)際繪制的三角形數(shù)量卻減少了很多,幀頻率也出現(xiàn)了明顯的提高。細(xì)節(jié)2,相對(duì)于模型整體只顯示了很小一部分信息,大部分?jǐn)?shù)據(jù)被剔除出場(chǎng)景,場(chǎng)景中繪制的三角形的數(shù)量非常少,極大地提高了幀頻率。
表 2 實(shí)時(shí)繪制五組數(shù)據(jù)
由以上實(shí)驗(yàn)和分析可知,對(duì)模型采用合適的分割級(jí)數(shù),可以明顯提高實(shí)時(shí)繪制的效率。
給出了模型信息提取的有效方法,基于八叉樹實(shí)現(xiàn)了對(duì)OSG場(chǎng)景中模型的分割算法和視錐體剔除方法,提高了模型繪制的速度,在顯示模型細(xì)節(jié)時(shí)繪制速度提高的更明顯。采用基于分頁(yè)數(shù)據(jù)庫(kù)的Pagelod實(shí)現(xiàn)了模型的動(dòng)態(tài)加載。但由于八叉樹節(jié)點(diǎn)的構(gòu)造是均勻的,沒有考慮模型在空間上分布的不均衡,所以當(dāng)瀏覽模型細(xì)節(jié)時(shí)若細(xì)節(jié)所在處模型集中,則場(chǎng)景中繪制的頂點(diǎn)會(huì)很多,幀頻率只會(huì)產(chǎn)生一定的提高;當(dāng)場(chǎng)景中顯示的細(xì)節(jié)不集中,則場(chǎng)景中繪制的頂點(diǎn)數(shù)會(huì)非常少,幀頻率能夠產(chǎn)生極大的提高。
(a) 原始模型???? (b) 分割后場(chǎng)景中的模型
(c) 細(xì)節(jié)1 ?????(d) 細(xì)節(jié)2
圖5 整體模型與細(xì)節(jié)顯示
[1] Stytz M. Distributed virtual environments [J]. IEEE Computer Graphics and Application, 1996, 16(3): 19-33.
[2] Burdea G C, Coiffet P. 虛擬現(xiàn)實(shí)技術(shù)[M]. 魏迎梅, 等譯. 北京: 機(jī)械工業(yè)出版社, 2005. 231-270.
[3] 冀俊峰. 細(xì)節(jié)模型實(shí)時(shí)繪制加速技術(shù)研究[D]. 北京:中國(guó)科學(xué)院研究生院, 2005.
[4] 陳雷霆. 三維復(fù)雜場(chǎng)景實(shí)時(shí)繪制技術(shù)[D]. 成都: 電子科技大學(xué), 2007.
[5] DeHaemer Jr M, Zyda M J. Simplification of object rendered by polygonal approximations [J]. Computer & Graphics, 1991, 15(2): 175-184.
[6] Airey J. Towads image realism with interactive update rates in complex virtual building environm ents [J]. Computer Graphics, 1990, 24(1): 41-51.
[7] OpenSceneGraph 說明手冊(cè)[EB/OL]. http://www. open-scenegraph.org/projects/osg/wiki.
Real-time Rending for Complex Product Model Based on Octree
ZHAO Lei, ZHAO Gang, TAN Dun-ming
( 1. State Key Laboratory of Virtual Reality Technology and Systems, Beijing 100191, China; 2. School of Mechanical Engineering and Automation, Beijing University of Aeronautics and Astronautics, Beijing 100191, China )
In order to improve the efficiency of real-time rendering, a method to extract the model information of OpenSceneGraph using scene model dividing up and view frustum culling based on Octree is proposed. This method has a better performance when visualizing the detail scene of virtual environment. Pagelod, which is based on DatabasePager, is also applied to implement the dynamic data translation, reduce the I/O overload greatly and satisfy real-time requirement for complex product model in virtual environment under limited hardware resources.
virtual environment; real-time rendering; complex product model; octree
TP 391
A
1003-0158(2011)03-0069-06
2009-12-30
虛擬現(xiàn)實(shí)技術(shù)與系統(tǒng)國(guó)家重點(diǎn)實(shí)驗(yàn)室探索性自選課題資助項(xiàng)目(200806123)
趙 磊(1986-),男,江蘇宿遷人,碩士研究生,主要研究方向?yàn)镃AD/CAM。