本發(fā)明屬于計(jì)算機(jī)圖形學(xué)領(lǐng)域,具體地,涉及一種用于在網(wǎng)頁中動態(tài)實(shí)時瀏覽超大體量模型的三維可視化引擎及在web應(yīng)用程序中的調(diào)用方法。
背景技術(shù):
bim技術(shù)旨在解決設(shè)計(jì)、建造、運(yùn)維過程中的可視化溝通與信息共享問題,在土木工程領(lǐng)域得到日益廣泛的應(yīng)用?;赽im模型的三維可視化和建筑全生命周期參數(shù)化管理,是現(xiàn)代大型復(fù)雜建筑的研究方向之一。由于大型建筑體量巨大、構(gòu)件數(shù)目繁多,對bim模型三維可視化的要求越來越高。而且由于bim模型是建筑信息管理的載體,承載的管理屬性也越來越復(fù)雜。因此,基于云+端的模式,進(jìn)行全生命周期的建造信息可視化、信息協(xié)同共享,需要一個流暢的三維可視化實(shí)時渲染的引擎,來支持用戶對于大體量(億以上面片數(shù))的bim模型進(jìn)行三維可視化實(shí)時瀏覽。
由于硬件計(jì)算水平的限制,目前市場上的國內(nèi)外以建模為主的軟件并不能有效的解決這個問題,多數(shù)以鏈接的模式,分區(qū)建模和用模,且對云+端的應(yīng)用模式中客戶端的顯示計(jì)算性能要求過高,離市場實(shí)用性的要求還有不少的差距。
技術(shù)實(shí)現(xiàn)要素:
為克服現(xiàn)有技術(shù)的缺陷,本發(fā)明提供了一種用于在網(wǎng)頁中動態(tài)實(shí)時瀏覽超大體量bim模型的三維可視化引擎及web應(yīng)用程序調(diào)用方法,實(shí)時對bim模型進(jìn)行三維場景的挑選和剔除,自動對場景進(jìn)行多級lod加載,以適應(yīng)客戶端硬件計(jì)算水平。
為實(shí)現(xiàn)上述目的,本發(fā)明采用如下方案:
一種基于bim模型的三維可視化引擎,該可視化引擎包括地形模型生成系統(tǒng)、多源模型支持系統(tǒng)、場景生成系統(tǒng)、模型資源加載系統(tǒng)和模型交互場景管理系統(tǒng)。
多源模型支持系統(tǒng)將不同格式模型與地形模型生成系統(tǒng)進(jìn)行組合之后形成一個完整模型,該模型經(jīng)過資源轉(zhuǎn)換之后通過場景生成系統(tǒng)的自動計(jì)算形成不同層次的模型文件。場景調(diào)度與交互系統(tǒng)通過場景調(diào)度與交互模塊進(jìn)行模型文件的加載與交互,以保證用戶進(jìn)行三維場景的實(shí)時交互。
地形模型生成系統(tǒng):負(fù)責(zé)基于dlg數(shù)字線劃圖進(jìn)行地形場景的生成,并將分層地理信息數(shù)據(jù)存儲到數(shù)據(jù)庫中。
多源模型支持系統(tǒng):負(fù)責(zé)對接不同的建模工具,將不同的建模工具所建的模型,按照模型所在的坐標(biāo)位置組合在場景中,并安放在地形模型生成系統(tǒng)中的場景位置。
場景生成系統(tǒng):通過對整體模型的資源進(jìn)行優(yōu)化、按照場景中的觀察者位置,對場景進(jìn)行挑選和剔除,并自動進(jìn)行多級lod的實(shí)時計(jì)算。
模型資源加載系統(tǒng):支持系統(tǒng)以云+端的模式進(jìn)行三維場景數(shù)據(jù)從服務(wù)器到客戶端的在線傳輸和離線下載。
模型交互場景管理系統(tǒng):用于在場景中進(jìn)行用戶視圖瀏覽、視圖快照、場景標(biāo)注、空間量測、空間剖切、屬性查詢、圖文關(guān)聯(lián)等模型交互功能,滿足用戶多種用模型需求。
所述地形模型生成子系統(tǒng),包括三維數(shù)字高程的提取、地形三角網(wǎng)生成與優(yōu)化、地形紋理貼圖、水面場景優(yōu)化、樹木布置優(yōu)化等的地形地貌因素的建模及優(yōu)化。
所述多源模型生成子系統(tǒng),包括對市場上主流的建模軟件進(jìn)行模型、包括紋理、材質(zhì)及建模過程中記錄的屬性數(shù)據(jù)進(jìn)行無損的導(dǎo)入,并將模型按照空間位置和地形信息進(jìn)行配準(zhǔn)。
所述場景生成子系統(tǒng),包括對導(dǎo)入場景中的模型,根據(jù)動態(tài)松弛二叉樹算法進(jìn)行資源的重新計(jì)算、確保場景的挑選和剔除的高效,對場景中的模型自動進(jìn)行細(xì)節(jié)lod算法。并將場景生成的模型文件存放在服務(wù)器上。
所述場景生成子系統(tǒng)包括如下系統(tǒng):
系統(tǒng)1:用于利用revit軟件將單個原始bim模型轉(zhuǎn)換為單個構(gòu)件的模型文件,通過集合,形成多個構(gòu)件的模型文件集合。
系統(tǒng)2:用于將模型文件集合合并為頂層空間塊,利用減面算法對面數(shù)進(jìn)行精簡。將頂層空間塊保存為空間二叉樹的一個節(jié)點(diǎn)。
系統(tǒng)3:用于以8n為基數(shù)對頂層空間塊劃分為多個小空間塊,同時利用減面算法使每個空間塊面數(shù)等于原始面數(shù),且小于一定的面數(shù)為止,經(jīng)過面數(shù)精簡將各個小空間塊保存為空間二叉樹的各個節(jié)點(diǎn)。
系統(tǒng)4:用于將空間塊節(jié)點(diǎn)資源集合用于實(shí)時渲染,渲染時根據(jù)當(dāng)前空間塊與相機(jī)的距離,以及相機(jī)的視場角、屏幕分辨率,計(jì)算出當(dāng)前空間塊的屏幕空間誤差,根據(jù)誤差大小決定是否繼續(xù)向下一層劃分。將不再繼續(xù)劃分層次的空間塊作為渲染對象進(jìn)行渲染。
系統(tǒng)5:用于利用gpu的異步遮擋查詢功能,動態(tài)剔除掉被遮擋的空間塊,進(jìn)一步降低渲染負(fù)載。
所述模型資源加載系統(tǒng),支持模型文件服務(wù)器與客戶端之間的模型加載服務(wù);當(dāng)客戶端登陸系統(tǒng)時,系統(tǒng)檢索本地沒有相應(yīng)的模型緩存文件時,系統(tǒng)提示客戶進(jìn)行離線更新或在線更新,在線更新時,通過特殊的算法進(jìn)行不同細(xì)節(jié)lod的模型的在線加載,確保用戶能夠流暢的進(jìn)行模型的加載與更新;
所述模型交互場景管理系統(tǒng),用于在網(wǎng)頁和應(yīng)用程序中提供三維可視化瀏覽服務(wù)。在場景中進(jìn)行用戶視圖瀏覽、視圖快照、場景標(biāo)注、空間量測、空間剖切、屬性查詢、圖文關(guān)聯(lián)等模型交互操作,滿足用戶多種用模需求。
一種基于bim模型的三維可視化引擎的web應(yīng)用程序調(diào)用方法,采用上述的三維可視化引擎,其特征在于,具體包括以下步驟:
步驟1:根據(jù)數(shù)字線劃圖、dem數(shù)據(jù)等,通過配準(zhǔn)生成地形模型;
步驟2:根據(jù)不同的建模軟件,提供深度繼承于三維建模工具的模型上傳和轉(zhuǎn)換工具,并在三維的場景中,根據(jù)統(tǒng)一的坐標(biāo)系統(tǒng),自動進(jìn)行不同模型之間、模型與地形之間的位置配準(zhǔn);
步驟3:利用場景生成工具,整合地形模型數(shù)據(jù),對整體模型的資源進(jìn)行優(yōu)化,按照場景中的觀察者位置,對場景進(jìn)行挑選和剔除,并自動進(jìn)行多級lod的實(shí)時計(jì)算,將生成的模型資源放在模型轉(zhuǎn)換服務(wù)器上;
步驟4:以云+端的模式進(jìn)行三維場景數(shù)據(jù)以不同細(xì)節(jié)lod層級從服務(wù)器到客戶端的在線傳輸和離線下載;
步驟5:根據(jù)客戶端的請求,在場景中進(jìn)行視圖瀏覽、視圖快照、場景標(biāo)注、空間量測、空間剖切、屬性查詢、圖文關(guān)聯(lián)等模型交互功能。
所述步驟3包括如下步驟:
步驟3.1:利用revit軟件將單個原始bim模型轉(zhuǎn)換為單個構(gòu)件的模型文件,通過集合,形成多個構(gòu)件的模型文件集合。
步驟3.2:將模型文件集合合并為頂層空間塊,利用減面算法對面數(shù)進(jìn)行精簡。將頂層空間塊保存為空間二叉樹的一個節(jié)點(diǎn)。
步驟3.3:以8n為基數(shù)對頂層空間塊劃分為多個小空間塊,同時利用減面算法使每個空間塊面數(shù)等于原始面數(shù),且小于一定的面數(shù)為止,經(jīng)過面數(shù)精簡將各個小空間塊保存為空間二叉樹的各個節(jié)點(diǎn)。
步驟3.4:將空間塊節(jié)點(diǎn)資源集合用于實(shí)時渲染,渲染時根據(jù)當(dāng)前空間塊與相機(jī)的距離,以及相機(jī)的視場角、屏幕分辨率,計(jì)算出當(dāng)前空間塊的屏幕空間誤差,根據(jù)誤差大小決定是否繼續(xù)向下一層劃分。將不再繼續(xù)劃分層次的空間塊作為渲染對象進(jìn)行渲染。
步驟3.5:同時利用gpu的異步遮擋查詢功能,動態(tài)剔除掉被遮擋的空間塊,進(jìn)一步降低渲染負(fù)載。
附圖說明
圖1為用于在網(wǎng)頁中動態(tài)實(shí)時瀏覽超大體量bim模型的三維可視化引擎
圖2為用于在網(wǎng)頁中動態(tài)實(shí)時瀏覽超大體量bim模型的web應(yīng)用程序調(diào)用方法
具體實(shí)施方式
下面結(jié)合具體實(shí)例對本發(fā)明進(jìn)行詳細(xì)說明。以下實(shí)例將有助于本領(lǐng)域的技術(shù)人員進(jìn)一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應(yīng)當(dāng)指出的是,對本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn)。這些都屬于發(fā)明的保護(hù)范圍。
如圖1所示,一種用于在網(wǎng)頁中動態(tài)實(shí)時瀏覽超大體量bim模型的三維可視化引擎,包括地形模型生成系統(tǒng)、多源模型支持系統(tǒng)、場景生成系統(tǒng)、模型資源加載系統(tǒng)、模型交互場景管理系統(tǒng)。
其特征在于:地形模型生成系統(tǒng)負(fù)責(zé)基于dlg數(shù)字線劃圖進(jìn)行地形場景的生成,并將分層地理信息數(shù)據(jù)存儲到數(shù)據(jù)庫中;多源模型支持系統(tǒng)將對接不同的建模工具,將不同建模工具所建的模型,按照模型所在的坐標(biāo)位置組合在場景中,并安放在合適的位置;場景生成系統(tǒng)通過對整體模型的資源進(jìn)行優(yōu)化、按照場景中的觀察者位置,對場景進(jìn)行挑選和剔除,并自動進(jìn)行多級lod的實(shí)時計(jì)算;模型資源加載系統(tǒng)支持系統(tǒng)以云+端的模式進(jìn)行三維場景數(shù)據(jù)從服務(wù)器到客戶端的在線傳輸和離線下載;模型交互場景管理系統(tǒng)用于在場景中進(jìn)行用戶視圖瀏覽、視圖快照、場景標(biāo)注、空間量測、空間剖切、屬性查詢、圖文關(guān)聯(lián)等模型交互功能,滿足用戶多種用模需求。
地形模型生成系統(tǒng),根據(jù)數(shù)字線劃圖、dem數(shù)據(jù)等,通過配準(zhǔn)生成地形模型,通過地形自動lod算法,無縫加載各層級lod,確保地形精確的進(jìn)行加載和顯示。支持局部平面地形和地球球面地形;支持超海量數(shù)據(jù)的分頁調(diào)度;支持地形無縫lod過渡,地形網(wǎng)格能夠在高低精度間平滑過渡。此系統(tǒng)負(fù)責(zé)地形場景的生成,并將分層地理信息數(shù)據(jù)存儲到數(shù)據(jù)庫中。
多源模型支持系統(tǒng),系統(tǒng)支持常用建模工具所建立的模型,通過系統(tǒng)提供的深度繼承于各建模工具的二次開發(fā)接口所建立的轉(zhuǎn)換工具,或通過標(biāo)準(zhǔn)的數(shù)據(jù)ifc格式中轉(zhuǎn),將多源的模型按照模型所在的坐標(biāo)位置加載到三維引擎所生成的場景中,自動進(jìn)行不同模型之間、模型與地形之間的位置配準(zhǔn)。
場景生成系統(tǒng),對導(dǎo)入場景中的模型,根據(jù)動態(tài)松弛二叉樹算法對模型整體資源進(jìn)行優(yōu)化,動態(tài)的根據(jù)觀察者的距離遠(yuǎn)近、及位置(視錐體)對場景進(jìn)行挑選和剔除,并自動進(jìn)行多級lod的實(shí)時計(jì)算,將生成的模型資源放在模型轉(zhuǎn)換服務(wù)器上。
模型資源加載系統(tǒng),系統(tǒng)以云+端的模式進(jìn)行三維場景數(shù)據(jù)從服務(wù)器到客戶端的在線傳輸和離線下載,當(dāng)客戶端登陸系統(tǒng)時,系統(tǒng)檢索本地沒有相應(yīng)的模型緩存文件時,系統(tǒng)提示客戶進(jìn)行離線更新或在線更新,在線更新時,通過特殊的算法進(jìn)行不同細(xì)節(jié)lod的模型的在線加載,確保用戶能夠流暢的進(jìn)行模型的加載與更新。
模型交互管理系統(tǒng),在場景中進(jìn)行視圖瀏覽、視圖快照、場景標(biāo)注、空間量測、空間剖切、屬性查詢、圖文關(guān)聯(lián)等模型交互功能,滿足各種用模需求。在用戶使用的過程中,系統(tǒng)通過算法自動的進(jìn)行場景的挑選和剔除,根據(jù)客戶端的顯卡及顯存(顯示計(jì)算能力),自動進(jìn)行場景計(jì)算(場景的可視構(gòu)件及面片數(shù)的加減),將場景的渲染的三角面數(shù),始終維持在一個客戶端可計(jì)算的數(shù)量級內(nèi),確保用戶的使用效果。
優(yōu)選地,所述場景生成子系統(tǒng)包括如下系統(tǒng):
系統(tǒng)1:用于利用revit軟件將單個原始bim模型轉(zhuǎn)換為單個構(gòu)件的模型文件,通過集合,形成多個構(gòu)件的模型文件集合。
系統(tǒng)2:用于將模型文件集合合并為頂層空間塊,利用減面算法對面數(shù)進(jìn)行精簡。將頂層空間塊保存為空間二叉樹的一個節(jié)點(diǎn)。
系統(tǒng)3:用于以8n為基數(shù)對頂層空間塊劃分為多個小空間塊,同時利用減面算法使每個空間塊面數(shù)等于原始面數(shù),且小于一定的面數(shù)為止,經(jīng)過面數(shù)精簡將各個小空間塊保存為空間二叉樹的各個節(jié)點(diǎn)。
系統(tǒng)4:用于將空間塊節(jié)點(diǎn)資源集合用于實(shí)時渲染,渲染時根據(jù)當(dāng)前空間塊與相機(jī)的距離,以及相機(jī)的視場角、屏幕分辨率,計(jì)算出當(dāng)前空間塊的屏幕空間誤差,根據(jù)誤差大小決定是否繼續(xù)向下一層劃分。將不再繼續(xù)劃分層次的空間塊作為渲染對象進(jìn)行渲染。
系統(tǒng)5:用于利用gpu的異步遮擋查詢功能,動態(tài)剔除掉被遮擋的空間塊,進(jìn)一步降低渲染負(fù)載。
如圖2所示,用于在網(wǎng)頁中動態(tài)實(shí)時瀏覽超大體量bim模型的web應(yīng)用程序調(diào)用方法,包括如下步驟:
步驟1:根據(jù)數(shù)字線劃圖、dem數(shù)據(jù)等,通過配準(zhǔn)生成地形模型;
根據(jù)數(shù)字高程模型,提取三維數(shù)字高程,生成與優(yōu)化地形三角網(wǎng),并依據(jù)地形紋理貼圖、水面場景優(yōu)化、樹木布置優(yōu)化等的地形地貌因素進(jìn)行地形場景的建模及優(yōu)化;
步驟2:根據(jù)不同的建模軟件,提供深度繼承于三維建模工具的模型上傳和轉(zhuǎn)換工具,并在三維的場景中,根據(jù)統(tǒng)一的坐標(biāo)系統(tǒng),自動進(jìn)行不同模型之間、模型與地形之間的位置配準(zhǔn);
多源模型生成系統(tǒng)支持對市場上主流的建模軟件進(jìn)行模型、包括紋理、材質(zhì)及建模過程中記錄的屬性數(shù)據(jù)的無損導(dǎo)入,并根據(jù)統(tǒng)一的坐標(biāo)系統(tǒng),將模型按照空間位置和地形信息進(jìn)行配準(zhǔn)。
步驟3:利用場景生成工具,整合地形模型數(shù)據(jù),對整體模型的資源進(jìn)行優(yōu)化,按照場景中的觀察者位置,對場景進(jìn)行挑選和剔除,并自動進(jìn)行多級lod的實(shí)時計(jì)算,將生成的模型資源放在模型轉(zhuǎn)換服務(wù)器上;
對于導(dǎo)入場景中的模型,根據(jù)動態(tài)松弛二叉樹算法進(jìn)行資源的重新計(jì)算、確保場景的挑選和剔除的高效,對場景中的模型進(jìn)行自動的細(xì)節(jié)lod算法。并將場景生成的模型文件,包括動態(tài)松弛二叉樹算法、自動細(xì)節(jié)lod算法、和渲染計(jì)算、渲染文件存放服務(wù)器。
步驟4:以云+端的模式進(jìn)行三維場景數(shù)據(jù)以不同細(xì)節(jié)lod層級從服務(wù)器到客戶端的在線傳輸和離線下載;
當(dāng)客戶端登陸系統(tǒng)時,系統(tǒng)檢索本地沒有相應(yīng)的模型緩存文件時,系統(tǒng)提示客戶進(jìn)行離線更新或在線更新,在線更新時,通過特殊的算法進(jìn)行不同細(xì)節(jié)lod的模型的在線加載,確保用戶能夠流暢的進(jìn)行模型的加載與更新。
步驟5:根據(jù)客戶端的請求,在場景中進(jìn)行視圖瀏覽、視圖快照、場景標(biāo)注、空間量測、空間剖切、屬性查詢、圖文關(guān)聯(lián)等模型交互功能。
在用戶使用的過程中,系統(tǒng)通過算法自動的進(jìn)行場景的挑選和剔除,根據(jù)客戶端的顯卡及顯存(顯示計(jì)算能力),自動進(jìn)行場景計(jì)算(場景的可視構(gòu)件及面片數(shù)的加減),將場景的渲染的三角面數(shù),始終維持在一個客戶端可計(jì)算的數(shù)量級內(nèi),確保用戶的使用效果。
所述步驟3包括如下步驟:
步驟3.1:利用revit軟件將單個原始bim模型轉(zhuǎn)換為單個構(gòu)件的模型文件,通過集合,形成多個構(gòu)件的模型文件集合。
步驟3.2:將模型文件集合合并為頂層空間塊,利用減面算法對面數(shù)進(jìn)行精簡。將頂層空間塊保存為空間二叉樹的一個節(jié)點(diǎn)。
步驟3.3:以8n為基數(shù)對頂層空間塊劃分為多個小空間塊,同時利用減面算法使每個空間塊面數(shù)等于原始面數(shù),且小于一定的面數(shù)為止,經(jīng)過面數(shù)精簡將各個小空間塊保存為空間二叉樹的各個節(jié)點(diǎn)。
步驟3.4:將空間塊節(jié)點(diǎn)資源集合用于實(shí)時渲染,渲染時根據(jù)當(dāng)前空間塊與相機(jī)的距離,以及相機(jī)的視場角、屏幕分辨率,計(jì)算出當(dāng)前空間塊的屏幕空間誤差,根據(jù)誤差大小決定是否繼續(xù)向下一層劃分。將不再繼續(xù)劃分層次的空間塊作為渲染對象進(jìn)行渲染。
步驟3.5:同時利用gpu的異步遮擋查詢功能,動態(tài)剔除掉被遮擋的空間塊,進(jìn)一步降低渲染負(fù)載。