收稿日期:2007-12-29;
修回日期:2008-03-11
基金項(xiàng)目:國家自然科學(xué)基金資助項(xiàng)目(40571121); 江西省教育廳2008年度科技計(jì)劃資助項(xiàng)目(GJJ08152); 香港“數(shù)字志蓮凈苑木構(gòu)佛寺演示系統(tǒng)”資助項(xiàng)目; 江西省教育廳2006年度科技計(jì)劃資助項(xiàng)目(贛教技字[2006]110號(hào))
作者簡(jiǎn)介:龔俊(1978-),男,湖北武漢人,博士,主要研究方向?yàn)榭臻g數(shù)據(jù)庫、空間數(shù)據(jù)可視化(gongjunbox@gmail.com);
柯勝男(1981-),女,助教,碩士,主要研究方向?yàn)檐浖こ獭⒊绦蛟O(shè)計(jì);
鮑曙明(1959-),男,教授,博士,主要研究方向?yàn)闀r(shí)空分析建模.
(1.江西師范大學(xué) a.鄱陽湖生態(tài)環(huán)境與資源研究教育部重點(diǎn)實(shí)驗(yàn)室; b.軟件學(xué)院, 南昌 330022; 2.密歇根大學(xué) 中國數(shù)據(jù)中心, Ann Arbor, Michigan 48109-1106)
摘要:
CAD模型造型精度高,渲染效果逼真,被廣泛應(yīng)用于虛擬現(xiàn)實(shí)、實(shí)時(shí)仿真以及三維地理信息系統(tǒng)等三維可視化中,但是其幾何模型數(shù)據(jù)復(fù)雜,圖像數(shù)據(jù)量大,也導(dǎo)致可視化效率低下。為此,提出了一種CAD模型數(shù)據(jù)重組織方法,旨在解決當(dāng)前可視化應(yīng)用集成CAD模型數(shù)據(jù)效率低下的問題。采用預(yù)先計(jì)算可視化信息,高度緊湊組織數(shù)據(jù),顧及圖形軟硬件特性等一系列策略,實(shí)現(xiàn)CAD模型數(shù)據(jù)的高效可視化功能。其中,幾何模型繪制和圖像紋理生成效率均提高了10倍以上。該方法被成功應(yīng)用于香港志蓮凈苑佛寺虛擬旅游演示項(xiàng)目中。
關(guān)鍵詞:可視化; 計(jì)算機(jī)輔助設(shè)計(jì)模型; 重組織; 逼真
中圖分類號(hào):TP39
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2008)10-3056-04
New method to reorganize CAD model concerning visualization
GONG Jun1a, KE Sheng-nan1b, BAO Shu-ming2
(1.a. Key Laboratory of Poyang Lake Ecological Environment Resource Development, b.School of Software, Jiangxi Normal University, Nanchang 330022, China; 2.China Data Center, University of Michigan, Ann Arbor, MI 48109-1106, USA)
Abstract:
This paper presented a new method to reorganize CAD model data,which aimed at solving the problems of visualizing CAD model data inefficiently. The accuracy of CAD model data might be very high, and rendering effects could be realistic, so it was broadly applied to virtual reality, real-time simulation and 3D geographical information system and so on.-However, goemetric data of CAD was highly complex and image data was very large, which leaded to low-efficiency of-visua-lization. In order to solve this problem, this paper used a series of strategies. For example, beforehand calculated visualization information, and high-tightly organized data, and concerned graphic hardwares and softwares. Because of these solutions, the efficiency of rendering geometric model and generating the texture was improved over 10 times. Furthermore, this technique was successfully applied to a virtual-touring system in Hong Kong.
Key words:visualization; CAD model; reorganization; fidelity
0引言
三維可視化技術(shù)提供了便捷直觀的人機(jī)交互界面。三維地圖網(wǎng)絡(luò)服務(wù)Google Earth使人們深切體會(huì)到科技“以人為本”的理念,因此眾多領(lǐng)域積極引入三維可視化技術(shù)以提升對(duì)信息的直觀性和感知度。但可視化質(zhì)量成為制約其應(yīng)用的最大瓶頸。逼真度和效率是可視化質(zhì)量的兩個(gè)重要指標(biāo)。圖形繪制軟硬件技術(shù)的發(fā)展使得人們對(duì)高逼真度需求永遠(yuǎn)不會(huì)終止,甚至要求達(dá)到以假亂真的程度,模擬造型中的微小細(xì)節(jié)和真實(shí)的光影效果。然而,渲染效果和繪制效率始終是一對(duì)矛盾,計(jì)算機(jī)圖形技術(shù)只能盡量調(diào)和分歧,使得可視化綜合性能最優(yōu)以滿足現(xiàn)實(shí)應(yīng)用的需求[1]。高逼真度需求迫使人們采用CAD技術(shù)進(jìn)行高精度建模工作,同時(shí)高精度建模也帶來了飛速增長(zhǎng)的模型數(shù)據(jù)量,引發(fā)可視化的效率瓶頸。高效渲染CAD模型數(shù)據(jù)成為可視化應(yīng)用中迫切需要解決的工程問題。
CAD誕生以來,已經(jīng)深深地影響了眾多設(shè)計(jì)領(lǐng)域,尤其在建筑設(shè)計(jì)領(lǐng)域獲得了成功的應(yīng)用。從二維設(shè)計(jì)到三維設(shè)計(jì),CAD技術(shù)已經(jīng)滲透到建筑設(shè)計(jì)中的方方面面,直觀逼真的建筑物設(shè)計(jì)模型激發(fā)著設(shè)計(jì)者的創(chuàng)造性思維。一些應(yīng)用中,對(duì)建筑物及附屬物的重建精度要求高,明確提出要求室內(nèi)室外場(chǎng)景一體化,而對(duì)復(fù)雜建筑場(chǎng)景的建模正是CAD技術(shù)的強(qiáng)項(xiàng)。CAD技術(shù)的普遍應(yīng)用和大量可得的建筑設(shè)計(jì)成果數(shù)據(jù),使得CAD數(shù)據(jù)成為三維可視化的主要數(shù)據(jù)來源之一。人們對(duì)逼真模擬其生存的城市環(huán)境和建筑環(huán)境并在其中虛擬漫游的愿望日益強(qiáng)烈,但是隨之而來的海量CAD數(shù)據(jù)渲染問題成為阻礙應(yīng)用的瓶頸。目前,主流圖形硬件的極限繪制能力往往是每秒數(shù)千萬個(gè)三角形,實(shí)際中是遠(yuǎn)遠(yuǎn)無法達(dá)到這個(gè)數(shù)值的;同時(shí)由于屏幕刷新頻率至少大于15 fps方能實(shí)現(xiàn)流暢可視化,實(shí)時(shí)繪制的圖形數(shù)目規(guī)模往往不能夠超過100萬個(gè)。而單個(gè)建筑物的CAD模型設(shè)計(jì)數(shù)據(jù)包含數(shù)十萬個(gè)三角形是比較普遍的,更不用說一個(gè)城市場(chǎng)景往往包含成千上萬個(gè)建筑物,不采取某些特殊處理技術(shù)是無法實(shí)現(xiàn)交互可視化的[2]。
基于圖像繪制、多細(xì)節(jié)層次、動(dòng)態(tài)調(diào)度和可見性裁減等已是普遍采用的實(shí)時(shí)渲染技術(shù)。本文是從數(shù)據(jù)組織角度提出一種CAD模型數(shù)據(jù)重組織方法,設(shè)計(jì)一套新數(shù)據(jù)結(jié)構(gòu)重新組織CAD模型數(shù)據(jù),旨在大幅度減少CAD模型的數(shù)據(jù)量和提升數(shù)據(jù)的繪制效率,為高效可視化應(yīng)用提供可靠的數(shù)據(jù)保證[3]。
1現(xiàn)有數(shù)據(jù)組織方法的問題
具有CAD技術(shù)經(jīng)驗(yàn)的建模者均知道,椅子、雕塑等簡(jiǎn)單特征采用數(shù)千個(gè)多邊形建模表達(dá)也是常見的,單個(gè)復(fù)雜建筑物的真三維模型甚至包含幾十萬甚至幾百萬個(gè)多邊形。CAD系統(tǒng)憑借周密設(shè)計(jì)的數(shù)據(jù)模型和數(shù)據(jù)組織方法來管理高度復(fù)雜的模型數(shù)據(jù)。目前大多數(shù)CAD系統(tǒng)按照建模對(duì)象的方式組織數(shù)據(jù),如3DMAX和AutoCAD等,每個(gè)建模對(duì)象可能由一個(gè)圓球、圓柱或正方體等基本模型元素編輯修改而產(chǎn)生。每個(gè)元素具有相對(duì)獨(dú)立完整的幾何、材質(zhì)以及紋理等信息。其中最基本的圖形單元是點(diǎn)、線和三角形面片,便于實(shí)現(xiàn)建模對(duì)象的數(shù)據(jù)管理和維護(hù)。
以3DMAX的建模數(shù)據(jù)為例,其重要數(shù)據(jù)包括幾何模型數(shù)據(jù)和紋理圖像數(shù)據(jù)。幾何模型數(shù)據(jù)存放于3DS文件中,包括三角形幾何坐標(biāo)數(shù)據(jù)、紋理坐標(biāo)數(shù)據(jù)、法線數(shù)據(jù)、材質(zhì)信息(如環(huán)境光、散射光、鏡面光分量)、燈光信息以及動(dòng)畫數(shù)據(jù)等信息;圖像數(shù)據(jù)以BMP等圖像文件分開保存,3DS文件中僅僅關(guān)聯(lián)圖像文件名稱。幾何坐標(biāo)數(shù)據(jù)用于恢復(fù)建模對(duì)象的三維模型;圖像數(shù)據(jù)和紋理坐標(biāo)數(shù)據(jù)實(shí)現(xiàn)紋理建模,即保證合適的紋理圖像以正確方式映射到建模對(duì)象的表面,法線、材質(zhì)和燈光共同作用恢復(fù)現(xiàn)實(shí)的光影效果,如圖1所示。
CAD數(shù)據(jù)組織方式并不利于加速圖形繪制,如果按照已有建模對(duì)象次序,將對(duì)象的幾何、材質(zhì)和紋理數(shù)據(jù)逐一送入繪制管道,可以生成三維渲染圖像。但是這種方式導(dǎo)致繪制效率低下,原因在于:a)數(shù)據(jù)冗余現(xiàn)象嚴(yán)重,數(shù)據(jù)存儲(chǔ)方法不夠緊湊;b)固有方式?jīng)]有集中地存儲(chǔ)具有相同材質(zhì)和紋理屬性的多邊形數(shù)據(jù),難以一次性繪制具有相同材質(zhì)和紋理屬性的所有多邊形數(shù)據(jù),致使頻繁改變繪制引擎中材質(zhì)和紋理的繪制狀態(tài);c)按照離散三角形方式組織幾何模型數(shù)據(jù),即繪制三角形圖形完全輸入三個(gè)點(diǎn)的幾何數(shù)據(jù),沒有考慮利用三角形間的點(diǎn)拓?fù)潢P(guān)系加速繪制;d)原有CAD數(shù)據(jù)沒有直接保存可視化操作必需的某些重要信息如法線信息,需要額外計(jì)算,因而消耗昂貴的實(shí)時(shí)計(jì)算開銷;e)紋理數(shù)據(jù)沒有根據(jù)圖形硬件特性進(jìn)行壓縮處理,消耗外存、內(nèi)存和顯存的存儲(chǔ)空間,并加大數(shù)據(jù)傳輸總線開銷。
針對(duì)上述分析,本文對(duì)CAD數(shù)據(jù)組織方式的優(yōu)化原則采取如下策略:a)預(yù)先計(jì)算法線等重要信息,以便直接應(yīng)用,以空間換時(shí)間的策略省略在實(shí)時(shí)渲染階段的費(fèi)時(shí)計(jì)算開銷;b)采用緊湊數(shù)據(jù)組織方式消除所有冗余信息,僅僅存儲(chǔ)用于可視化的必要數(shù)據(jù),外存數(shù)據(jù)能高效調(diào)入內(nèi)存;c)外存CAD數(shù)據(jù)調(diào)入內(nèi)存,無須重組即可送入繪制通道,盡可能減少冗余操作;d)數(shù)據(jù)組織方法顧及三維渲染引擎和圖形硬件的繪制特性,盡可能提高引擎的效率。
2一種CAD模型數(shù)據(jù)重組織新方法
CAD模型數(shù)據(jù)主要分為幾何模型數(shù)據(jù)和紋理圖像數(shù)據(jù)兩部分。紋理圖像數(shù)據(jù)用于紋理映射實(shí)現(xiàn)照片質(zhì)量的渲染效果;幾何模型數(shù)據(jù)則是三維幾何造型的數(shù)據(jù)基礎(chǔ),同時(shí)也是三維渲染的瓶頸,幾何數(shù)據(jù)組織方式直接影響了三維可視化的效率,如圖2所示。
2.1法線生成算法研究
自主編程渲染CAD數(shù)據(jù)的表現(xiàn)效果,往往不及CAD系統(tǒng)的渲染圖效果,無法滿足高質(zhì)量可視化應(yīng)用需求,主要原因在于不真實(shí)的光影明暗效果。即使幾何數(shù)據(jù)完全一樣,不真實(shí)的光影明暗效果也會(huì)導(dǎo)致離散表面棱角不分明、連續(xù)表面不光滑以及亮度不合理[4]。
根據(jù)可視化經(jīng)驗(yàn)可知,光影明暗效果的主要影響因素包括材質(zhì)參數(shù)、光照屬性以及幾何模型的法線向量數(shù)據(jù)。前兩者可以從CAD數(shù)據(jù)中直接獲取,而后者需要應(yīng)用法線生成算法間接獲得。因此法線數(shù)據(jù)是最終導(dǎo)致渲染效果優(yōu)劣的主要因素,而法線生成算法又是其中的核心。
三維渲染引擎OpenGL等軟件包不承認(rèn)面法線,繪制時(shí)需要對(duì)每個(gè)點(diǎn)指定法線向量。一般存在兩種計(jì)算點(diǎn)法線向量的算法:a)面法線平均算法。某點(diǎn)的點(diǎn)法線向量是包含該點(diǎn)的所有三角形面的面法線向量的平均值(圖3(a))。b)直接面法線算法。某點(diǎn)在不同的三角形面中采用不同的法線值,其法線值是所處三角形面的面法線向量(圖3(b))。
在3DMAX建模系統(tǒng)中,每個(gè)三角面片屬于一個(gè)光滑組,同一個(gè)光滑組中三角形的點(diǎn)法線向量按照算法a)計(jì)算,而不同光滑組中的三角形分別計(jì)算自身的法線信息,即使兩個(gè)屬于不同光滑組的三角形相鄰,公共點(diǎn)將按照算法b)計(jì)算法線值,不相互干擾,使得相鄰的不同光滑組的表面邊界清晰,從而實(shí)現(xiàn)光滑效果和棱角效果的完美統(tǒng)一。但是前期編輯過程中需要人為地指定三角形面片所屬的光滑組。
2.2緊湊幾何數(shù)據(jù)組織方法
一個(gè)典型的硬盤驅(qū)動(dòng)器的存取速度是內(nèi)存存取速度的10-5~10-6倍。硬盤的定位和尋址時(shí)間近期很難有突破性的提高,它受到機(jī)械運(yùn)動(dòng)的慣性、加速度、磁臂的牢度等物理極限的限制[5]。CAD精細(xì)建模方式導(dǎo)致CAD文件數(shù)據(jù)量偏大,一個(gè)建筑物的模型數(shù)據(jù)(不包括紋理圖像)可能達(dá)到數(shù)兆字節(jié),將其從外存調(diào)入內(nèi)存會(huì)耗費(fèi)大量的CPU時(shí)間,實(shí)時(shí)調(diào)度數(shù)據(jù)的過程中會(huì)造成明顯的視覺停頓,需要研究CAD數(shù)據(jù)的緊湊組織方法。
幾何模型是由三角形面片組成的。每個(gè)三角形由三個(gè)點(diǎn)構(gòu)成。每個(gè)點(diǎn)包含幾何坐標(biāo)信息(x,y,z)、紋理坐標(biāo)信息(u,v)和法線向量信息(n1,n2,n3),總共八個(gè)浮點(diǎn)數(shù)(float)。如果每個(gè)點(diǎn)直接存儲(chǔ)上述三種信息,則具體形式如下:
每個(gè)三角形需要8×sizeof(float)×3=96 Byte。圖4中有五個(gè)三角形,總共需要96×5=480 Byte。其中,點(diǎn)1落于所有五個(gè)三角形內(nèi)。采取這種方式組織數(shù)據(jù),導(dǎo)致點(diǎn)1數(shù)據(jù)被重復(fù)存儲(chǔ)五次,造成冗余。
為解決冗余現(xiàn)象,提出第一種方案:按照節(jié)點(diǎn)列表的思想存儲(chǔ)數(shù)據(jù),組織方式為將所有節(jié)點(diǎn)的幾何信息存儲(chǔ)為列表,沒有重復(fù)節(jié)點(diǎn)幾何信息,三角形信息僅采用其三個(gè)節(jié)點(diǎn)在數(shù)組中的索引值來表達(dá)。假如數(shù)組長(zhǎng)度小于256×256,則索引值為short類型;如果大于256×256,則采用int類型表達(dá)。結(jié)合圖4中的圖形實(shí)例說明數(shù)據(jù)組織方式如下:
a)節(jié)點(diǎn)數(shù)據(jù)數(shù)組
b)三角形數(shù)據(jù)
三角形A三角形B三角形C三角形D三角形E
162123134145156
這種方案所需的存儲(chǔ)空間為8×sizeof(float)×6+3×2×5=222 Byte,比較第一種方案的480 Byte,在存儲(chǔ)空間利用效率上有了明顯的提高。然而,這種數(shù)據(jù)組織方案仍然有不足之處。根據(jù)2.1節(jié)的法線計(jì)算方法可知,空間中一個(gè)點(diǎn)處于不同的三角形中可能采用不同的法線向量,即可能存在多個(gè)法線值。假設(shè)采取第二種方案:如果某點(diǎn)存在多個(gè)法線向量值,則需要在節(jié)點(diǎn)數(shù)據(jù)數(shù)組中存儲(chǔ)多次,其幾何坐標(biāo)被重復(fù)保存,從而造成存儲(chǔ)浪費(fèi);而且不同空間點(diǎn)的紋理坐標(biāo)和法線值可能相同,完全可以共用這些數(shù)值,避免重復(fù)存儲(chǔ)造成的浪費(fèi)。因此,本文提出第三種數(shù)據(jù)組織方案,即節(jié)點(diǎn)的幾何坐標(biāo)、紋理坐標(biāo)和法線值分別以一個(gè)數(shù)組列表方式予以存儲(chǔ),這樣三角形中一個(gè)節(jié)點(diǎn)需要保存兩個(gè)索引值,分別對(duì)應(yīng)幾何坐標(biāo)、紋理坐標(biāo)或者法線值列表數(shù)組中的索引號(hào)(當(dāng)三角形上有紋理時(shí),僅保存幾何坐標(biāo)和紋理坐標(biāo);當(dāng)無紋理時(shí),僅保存幾何坐標(biāo)和法線值,因?yàn)榧y理存在時(shí),法線不起作用),從而造成一個(gè)三角形存儲(chǔ)的索引數(shù)從第二種方案的三個(gè)增加為六個(gè),這方面的存儲(chǔ)量增加2倍。然而,第三種方案中列表數(shù)組元素的數(shù)目不會(huì)超過第二種方案中列表數(shù)組元素的數(shù)目,數(shù)目值超過256×256的可能性更小,索引值需要采用整型數(shù)據(jù)類型表達(dá)的可能性更小。兩種方案各有優(yōu)劣,需要通過實(shí)際數(shù)據(jù)測(cè)試決定最優(yōu)方案。測(cè)試數(shù)據(jù)結(jié)果如表1所示。
樣本類型
原始3DS數(shù)據(jù)第二種方案第三種方案
注:3DS文件不含法線數(shù)據(jù),方案二和三的文件包含法線數(shù)據(jù)。
測(cè)試數(shù)據(jù)表明第三種方案最優(yōu)。原有的3DS數(shù)據(jù)并沒有直接存儲(chǔ)法線數(shù)據(jù);第三種方案存儲(chǔ)了預(yù)先計(jì)算的法線數(shù)據(jù),雖然增加了法線數(shù)據(jù)等附加信息,但其數(shù)據(jù)量仍然明顯小于原始3DS文件的數(shù)據(jù)量,減少幅度甚至高達(dá)50%以上。
2.3顧及渲染引擎特性的組織方法
不同的圖形硬件性能差異較大,然而原理和特性大致相同,如果沒有顧及甚至違背渲染引擎的特性,難以充分發(fā)揮圖形硬件的繪制能力[6]。考慮到CAD幾何紋理信息高度復(fù)雜且數(shù)量巨大,更要認(rèn)真地結(jié)合數(shù)據(jù)特點(diǎn)和渲染引擎特性組織數(shù)據(jù),實(shí)現(xiàn)單位時(shí)間內(nèi)最大的圖形繪制數(shù)目。
2.3.1顧及狀態(tài)機(jī)性質(zhì)
本文實(shí)驗(yàn)所用的三維可視化引擎OpenGL是一種狀態(tài)機(jī),即包括兩個(gè)操作步驟:設(shè)置狀態(tài)和在該狀態(tài)下實(shí)施渲染操作。實(shí)際上,還有另外一個(gè)重要環(huán)節(jié),即核實(shí)確認(rèn),它是狀態(tài)機(jī)的當(dāng)前狀態(tài)能夠?qū)崿F(xiàn)應(yīng)用程序所希望功能的保證。新狀態(tài)的設(shè)置導(dǎo)致狀態(tài)機(jī)的一系列屬性隨之發(fā)生變化,確認(rèn)過程可能比較復(fù)雜,導(dǎo)致狀態(tài)變化過程會(huì)損耗一定的計(jì)算開銷,甚至?xí)@著影響繪制效率。OpenGL的繪制狀態(tài)包括的內(nèi)容廣泛,材質(zhì)、燈光、紋理等信息均屬于狀態(tài)信息。當(dāng)繪制具備某種紋理或材質(zhì)屬性的圖形時(shí),需要設(shè)置該紋理或材質(zhì)為當(dāng)前狀態(tài)。由于CAD數(shù)據(jù)往往包含了多種紋理和材質(zhì)屬性的圖形數(shù)據(jù),處理不當(dāng)將導(dǎo)致頻繁地變化狀態(tài)信息,從而導(dǎo)致繪制效率顯著下降。一種合理的繪制方式是,一次性繪制屬于同一種材質(zhì)狀態(tài)的所有多邊形,這樣就能保證最少的狀態(tài)變化。為了實(shí)現(xiàn)該繪制方式,數(shù)據(jù)組織方法也應(yīng)當(dāng)作出調(diào)整,放棄原先以建模對(duì)象為單位的數(shù)據(jù)存儲(chǔ)方式,改成以材質(zhì)和紋理狀態(tài)為單位的數(shù)據(jù)存儲(chǔ)方式,集中存儲(chǔ)具有相同紋理和材質(zhì)屬性的多邊形數(shù)據(jù)。存儲(chǔ)結(jié)構(gòu)如下所示:
這樣,材質(zhì)狀態(tài)變化次數(shù)就是材質(zhì)種類的數(shù)目,保證最少的狀態(tài)變化過程。
2.3.2顧及三角形連接關(guān)系
三角形的節(jié)點(diǎn)數(shù)據(jù)通過繪制通道最終生成柵格像素,之前需要經(jīng)過一系列復(fù)雜的幾何變換和計(jì)算,如同進(jìn)入一條狹長(zhǎng)的流水線。如果這個(gè)流水線的一個(gè)環(huán)節(jié)效率偏低,均會(huì)成為繪制瓶頸。由于CAD數(shù)據(jù)中多邊形數(shù)目繁多,大量的節(jié)點(diǎn)數(shù)據(jù)不斷地送入繪制通道,使得節(jié)點(diǎn)處理階段成為渲染瓶頸。模型視點(diǎn)變換階段計(jì)算節(jié)點(diǎn)和視點(diǎn)的相對(duì)關(guān)系,確定節(jié)點(diǎn)在以視點(diǎn)為坐標(biāo)原點(diǎn),視線方向?yàn)楠珃軸負(fù)向的坐標(biāo)系中的坐標(biāo)值;燈光處理階段根據(jù)模型視點(diǎn)變換的結(jié)果,結(jié)合法線、燈光、材質(zhì)、顏色等信息,確定節(jié)點(diǎn)的顏色值;投影變換和透視整除階段負(fù)責(zé)將三維信息變換到投影平面上的二維信息;裁剪階段將屏幕外的節(jié)點(diǎn)數(shù)據(jù)刪除,避免不必要的繪制效果;視口變換階段將投影平面上的二維信息映射到視口中。經(jīng)過上述階段,繪制數(shù)據(jù)進(jìn)入光柵化和柵格處理階段。
減少節(jié)點(diǎn)處理階段的計(jì)算開銷是突破繪制瓶頸的主要解決途徑之一。一般認(rèn)為繪制一個(gè)三角形,需要有三個(gè)節(jié)點(diǎn)數(shù)據(jù)進(jìn)入繪制通道。然而并不盡然,OpenGL等繪制引擎提出連接圖元的功能,連接圖元減少節(jié)點(diǎn)數(shù)據(jù)送入繪制通道的次數(shù)。因此,采用這種方式可以提高繪制性能。
以一種連接圖元——三角形條帶為例(圖5),它用于繪制一組連接的三角形組,一個(gè)新的節(jié)點(diǎn)和之前的兩個(gè)點(diǎn)組成新的三角形。假設(shè)起始n=1,對(duì)于奇數(shù)n,節(jié)點(diǎn)n、n+1、n+2定義三角形n;對(duì)于偶數(shù)n,節(jié)點(diǎn)n+1、n和n+2定義三角形n。以圖5中的圖形為例,一般來說,首先點(diǎn)1、2和3送入流水線,繪制三角形A;然后點(diǎn)3、2和4送入流水線,繪制三角形B。繪制五個(gè)三角形總共需要將15個(gè)點(diǎn)送入流水線。然而條帶三角形(triangle strip)的原理是,首先點(diǎn)1、2和3送入流水線,繪制三角形A;然后點(diǎn)4送入流水線,利用點(diǎn)2和3已有的計(jì)算成果,繪制三角形B;送入點(diǎn)5,繪制三角形C;送入點(diǎn)6,繪制三角形D;送入點(diǎn)7,繪制三角形E。總共只有7個(gè)點(diǎn)送入繪制流水線。除第一個(gè)三角形外,其余三角形僅需處理一個(gè)點(diǎn),即可完成幾何階段的處理工作。條帶中包含的三角形數(shù)目越多,越能提升繪制效率。當(dāng)條帶足夠長(zhǎng)時(shí),處理時(shí)間僅為離散三角形的三分之一,從而達(dá)到顯著提升節(jié)點(diǎn)變換階段的計(jì)算效率的目標(biāo)。
表2中的數(shù)據(jù)結(jié)果是離散三角形和三角形條帶方式的性能比較。從測(cè)試數(shù)據(jù)可清楚看出,相對(duì)于傳統(tǒng)的離散三角形數(shù)據(jù)組織方式,三角形條帶方式下的幾何數(shù)據(jù)量顯著減少,減少量甚至可以高達(dá)25%。這不僅有利于節(jié)省外存的存儲(chǔ)開銷,還可直接提高外存訪問效率。更為重要的是,由于繪制指令和圖形數(shù)據(jù)量顯著減少,生成顯示列表的效率也大幅提高,時(shí)間開銷有時(shí)僅為離散三角形方式的40%。
時(shí)間數(shù)據(jù)量生成顯示列表時(shí)間數(shù)據(jù)量
2.4紋理圖像數(shù)據(jù)重組織方法
經(jīng)過CAD三維模型數(shù)據(jù)生產(chǎn)實(shí)踐發(fā)現(xiàn),采用紋理圖像表達(dá)建筑物細(xì)節(jié)能夠大大增強(qiáng)真實(shí)感,甚至能夠減少幾何建模數(shù)據(jù)量,導(dǎo)致紋理建模方法被廣泛應(yīng)用,紋理數(shù)據(jù)量也不斷攀升,紋理圖像數(shù)據(jù)至少占總體數(shù)據(jù)量的30%以上,在一些逼真表現(xiàn)的應(yīng)用中甚至高達(dá)90%。因此,研究紋理數(shù)據(jù)的緊湊組織方式成為突破瓶頸的重要解決方法之一。
OpenGL 1.3版本增加了紋理壓縮的功能擴(kuò)展,圖形硬件集成紋理解壓縮功能。這種壓縮方法采用了S3公司開發(fā)的一種稱為S3紋理壓縮(S3TC)的編碼方案,目前已經(jīng)成為DirectX中的一個(gè)標(biāo)準(zhǔn),稱為DXTC。該壓縮方法是有損壓縮,無法從壓縮圖像中完全恢復(fù)原始圖像,但是人眼不易察覺圖像質(zhì)量的損失。該方法在固定尺寸的圖像壓縮方面具有一定優(yōu)勢(shì),相同尺寸的非壓縮圖像數(shù)據(jù)塊,經(jīng)過這種方法壓縮得到的壓縮數(shù)據(jù)塊尺寸也相同。這對(duì)于分配紋理緩沖來說是非常重要的,相同尺寸的圖像數(shù)據(jù)能共用分配的內(nèi)存緩沖。該方法還能預(yù)先存儲(chǔ)mipmap信息,避免在應(yīng)用過程中生成mipmap的費(fèi)時(shí)操作。壓縮數(shù)據(jù)的文件存儲(chǔ)格式的文件擴(kuò)展名稱是*.DDS。圖6是DDS數(shù)據(jù)描述。紋理壓縮的功能擴(kuò)展在圖形繪制通道的多個(gè)階段發(fā)揮重要作用,概括起來有如下幾點(diǎn):a)圖像數(shù)據(jù)占用更少的外存空間和更快的外存調(diào)度速度;b)紋理數(shù)據(jù)占用更少的系統(tǒng)內(nèi)存;c)紋理數(shù)據(jù)能更高效地從內(nèi)存?zhèn)鬏數(shù)郊y理內(nèi)存;d)紋理數(shù)據(jù)占用更少的紋理內(nèi)存;e)紋理映射功能采用硬件編碼實(shí)現(xiàn),效率與非壓縮紋理映射沒有明顯差異;f)壓縮前后圖像質(zhì)量肉眼難以察覺。
在視覺效果上,三維渲染引擎采用DDS壓縮圖像對(duì)最終渲染質(zhì)量沒有產(chǎn)生可以察覺的視覺影響,可以滿足照片級(jí)逼真表達(dá)的需要。以某一數(shù)據(jù)為例,壓縮前圖像數(shù)據(jù)量為192 KB,壓縮后圖像數(shù)據(jù)量為32.1 KB,數(shù)據(jù)量約為壓縮前的1/6,即使增加存儲(chǔ)mipmap多分辨率信息,數(shù)據(jù)量也僅為壓縮前的1/4,而且無須解壓為非壓縮圖像,很大程度地節(jié)省了外部存儲(chǔ)、系統(tǒng)主存和顯示存儲(chǔ)的消耗。在紋理生成方面,紋理生成的效率也得到明顯改善。因此,采用DDS壓縮圖像代替非壓縮圖像用于紋理表達(dá),是一種值得推薦的方法。
3實(shí)驗(yàn)結(jié)果分析
本文對(duì)CAD的幾何模型數(shù)據(jù)和紋理數(shù)據(jù)分別進(jìn)行了重新組織,旨在大幅度改善CAD數(shù)據(jù)的繪制效率,并且通過反復(fù)實(shí)驗(yàn)發(fā)現(xiàn)法線信息的計(jì)算方法,保證繪制質(zhì)量與CAD渲染圖相近甚至相同。本文采用的測(cè)試環(huán)境為Windows XP操作系統(tǒng),OpenGL三維繪制引擎,普通臺(tái)式PC機(jī),CPU Pentium4 2.0 GHz,內(nèi)存512 MB,顯卡NVIDIA Quadro4 900 XGL。
3.1幾何模型數(shù)據(jù)集成效率分析
OpenGL中的顯示列表是指將幾何模型數(shù)據(jù)和繪制指令預(yù)先編譯成高效率執(zhí)行碼,便于使用時(shí)直接調(diào)用。由于顯示列表是提高可視化效率的常用方法,測(cè)試方法是比較原始CAD幾何數(shù)據(jù)與重組織的幾何數(shù)據(jù)之間的繪制差異,即比較兩者從外存訪問開始到生成顯示列表之間的時(shí)間開銷。本文采用了八份不同規(guī)模的CAD幾何模型數(shù)據(jù)樣本進(jìn)行測(cè)試分析,圖7是重組前后的效率對(duì)比圖。可以清晰地看出,經(jīng)過重組,繪制效率比原始方式提高了20倍以上。究其原因是,重組后數(shù)據(jù)量大幅度減少,從而提高了從外存到內(nèi)存的調(diào)度效率;同時(shí)預(yù)先計(jì)算法線信息,以空間換時(shí)間,避免了實(shí)時(shí)計(jì)算法線的費(fèi)時(shí)過程;并且?guī)缀文P蛿?shù)據(jù)預(yù)先按照?qǐng)D形硬件的繪制特點(diǎn)進(jìn)行組織,可以直接送入圖形繪制流水線,從而明顯改善了繪制效率。
3.2圖像數(shù)據(jù)集成效率分析
OpenGL操作中,在紋理映射之前,圖像數(shù)據(jù)必須被生成為OpenGL中的紋理數(shù)據(jù)。生成紋理過程是費(fèi)時(shí)操作,處理不當(dāng)可能造成可視化過程的不流暢現(xiàn)象。本文圖像數(shù)據(jù)集成效率的測(cè)試方法是,從BMP格式轉(zhuǎn)換為DDS格式之后,比較圖像數(shù)據(jù)從外存訪問到紋理生成整個(gè)階段的時(shí)間開銷。圖8是五份不同規(guī)模的紋理圖像生成的效率對(duì)比圖。可以清晰地看出,當(dāng)紋理數(shù)據(jù)格式從BMP轉(zhuǎn)換為DDS后,紋理生成的效率提高了10倍以上。究其原因是,轉(zhuǎn)換后圖像數(shù)據(jù)量大幅度減少,從外存到內(nèi)存的調(diào)度效率、從內(nèi)存到顯存的調(diào)度效率,以及紋理生成的效率均得以明顯改善。
3.3綜合性能分析
為測(cè)試上述數(shù)據(jù)組織方法的實(shí)用性,本文利用香港志蓮凈苑佛寺建筑群的CAD模型數(shù)據(jù)作為實(shí)驗(yàn)樣本,本文的實(shí)驗(yàn)系統(tǒng)導(dǎo)入建筑群中各個(gè)獨(dú)立建筑物、構(gòu)筑物和小品等地物的3DS格式的CAD模型數(shù)據(jù)。由于數(shù)據(jù)精度甚高,幾何造型完全仿照實(shí)物構(gòu)建,數(shù)據(jù)規(guī)模巨大,單個(gè)建筑物模型包含的三角形數(shù)目可達(dá)數(shù)百萬,給實(shí)時(shí)交互可視化工作帶來重重困難。本文利用CAD模型數(shù)據(jù)的重組織方法對(duì)其中的幾何模型和圖像數(shù)據(jù)進(jìn)行轉(zhuǎn)換,并且結(jié)合可見性裁剪、多細(xì)節(jié)層次以及基于圖像繪制等實(shí)時(shí)渲染技術(shù),使得屏幕刷新幀率達(dá)到18 bps以上,符合流暢的可交互漫游要求。由于實(shí)驗(yàn)數(shù)據(jù)精度高,同時(shí)采用正確的法線計(jì)算方法,使得可視化的光影效果真實(shí)逼真,達(dá)到像片質(zhì)量的仿真效果。圖9是香港志蓮凈苑虛擬旅游項(xiàng)目的可視化效果。
4結(jié)束語
在當(dāng)前軟硬件條件仍不成熟的狀況下,CAD模型數(shù)據(jù)重組織方法不失為解決其繪制效率低下的一種途徑。然而該重組織過程是不可逆的,與可視化無關(guān)的信息被全部剔除,使得組織后的數(shù)據(jù)無法被重新編輯,導(dǎo)致原始CAD模型數(shù)據(jù)必須另外備份。因此這種集成CAD模型數(shù)據(jù)的方法是有縫的,處理不當(dāng)容易造成數(shù)據(jù)不一致,以及信息丟失。當(dāng)前地理信息系統(tǒng)(GIS)領(lǐng)域也在研究CAD數(shù)據(jù)集成方法,希望實(shí)現(xiàn)GIS和CAD在數(shù)據(jù)標(biāo)準(zhǔn)層次上的一致性和兼容性,從而達(dá)到無縫集成[7]。虛擬現(xiàn)實(shí)、實(shí)時(shí)仿真等可視化領(lǐng)域中大量采用CAD模型成果,也必然會(huì)向這個(gè)方向發(fā)展,在穩(wěn)步提升可視化效率和質(zhì)量的同時(shí),也在其數(shù)據(jù)標(biāo)準(zhǔn)中實(shí)現(xiàn)與CAD數(shù)據(jù)標(biāo)準(zhǔn)的無縫對(duì)接。
參考文獻(xiàn):
[1]LUEBKE D, WATSON B, COHEN J D, et al. Level of detail for 3D graphics[M]. San Francisco: Morgan Kaufmann Publishers, 2002.
[2]陳超.用OpenGL技術(shù)在虛擬環(huán)境中構(gòu)建三維模型的實(shí)踐[D].成都:電子科技大學(xué),2007.
[3]MLLER T A, HAINES E. 實(shí)時(shí)計(jì)算機(jī)圖形學(xué)[M]. 普建濤,譯.2版.北京:北京大學(xué)出版社,2004.
[4]ROGERS D F. 計(jì)算機(jī)圖形學(xué)的算法基礎(chǔ)[M].石教英,譯.北京:機(jī)械工業(yè)出版社,2002.
[5]尤晉元,史美林.Windows操作系統(tǒng)原理[M].北京:機(jī)械工業(yè)出版社,2003.
[6]WOO M, NEIDERF J, DAVIS T, et al. OpenGL編程權(quán)威指南[M].吳斌,段海波,薛鳳武,譯.北京:中國電力出版社,2003.
[7]OGC.CAD-GISWG(CAD-GISWG)[EB/OL].(2006-12-01)[2007-12-01].http://www.opengeospatial.org/groups/?iid=164.