本發(fā)明屬于三維模型顯示領(lǐng)域,尤其是一種基于三維數(shù)字城市系統(tǒng)海量模型數(shù)據(jù)的瀏覽方法。
背景技術(shù):
三維數(shù)字城市系統(tǒng)因?yàn)楣芾淼姆秶鷧^(qū)域通常都有上萬平方公里,甚至還有可能擴(kuò)展成為多個(gè)城市,這樣的范圍,模型數(shù)據(jù)通常都會是數(shù)TB的數(shù)據(jù)量,現(xiàn)有的硬件條件尚不能將這些數(shù)據(jù)全部調(diào)入內(nèi)存中進(jìn)行一次性渲染,因此這些數(shù)據(jù)在場景中的組織和管理,是影響系統(tǒng)性能的一個(gè)最關(guān)鍵的因素?,F(xiàn)有系統(tǒng)通常只能瀏覽比較小的區(qū)域,如果三維模型數(shù)據(jù)太大就會出現(xiàn)系統(tǒng)顯示卡頓,甚至死機(jī)崩潰的情況。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種基于三維數(shù)字城市系統(tǒng)海量模型數(shù)據(jù)的瀏覽方法,該方法能夠快速的顯示海量三維模型中的單體模型,時(shí)間短,效率高,對硬件要求較低。本發(fā)明解決其技術(shù)問題是通過以下技術(shù)方案實(shí)現(xiàn)的:一種基于三維數(shù)字城市系統(tǒng)海量模型數(shù)據(jù)的瀏覽方法,其方法的步驟如下:⑴、地理信息海量三維模型的建立:利用計(jì)算機(jī)、計(jì)算機(jī)圖形顯卡、數(shù)碼相機(jī)以及立體影像量測儀通過人工采集地理信息三維目標(biāo)的三維框架建立三維立體模型,然后再將數(shù)碼相機(jī)獲取的三維模型貼圖貼合在三維立體模型上生產(chǎn)出來地理信息海量三維模型;⑵、根據(jù)三維數(shù)字城市系統(tǒng)視窗中的地理坐標(biāo)范圍計(jì)算出該范圍所覆蓋的快速查找單元,然后從這些快速查找單元中找到需要的三維單體模型,并將這些三維單體模型從數(shù)據(jù)庫中找到,然后計(jì)算視點(diǎn)至三維單體模型中心的距離,根據(jù)距離把數(shù)據(jù)庫中相應(yīng)級別的模型調(diào)入內(nèi)存中,然后將這些分好級別的模型數(shù)據(jù)通過計(jì)算找出模型非可見部分從內(nèi)存中釋放掉,并將可見部分放入顯卡的圖形繪制管線中,最后在三維數(shù)字城市系統(tǒng)中顯示出來。而且,所述的快速查找單元為將地理信息海量三維模型數(shù)據(jù)根據(jù)地理坐標(biāo)范圍按照地理坐標(biāo)500米×500米的規(guī)則劃分為若干個(gè)網(wǎng)格,該網(wǎng)格為快速查找單元;每一個(gè)快速查找單元都是以地理空間中預(yù)先定義好的一點(diǎn)為計(jì)算起點(diǎn),該計(jì)算起點(diǎn)坐標(biāo)為:AreaMinX,AreaMinY,快速查找單元設(shè)置唯一ID,該唯一ID由快速查找單元的行號以及列號組成;通過計(jì)算機(jī)視窗所覆蓋的地理信息范圍,快速的找到對應(yīng)的幾個(gè)快速查找單元,然后再利用四叉樹查找算法從這幾個(gè)快速查找單元中根據(jù)地理信息空間關(guān)系找到所需要的單體模型,并將該單體模型從數(shù)據(jù)庫中取出放入內(nèi)存中,進(jìn)而通過顯卡在視窗中顯示出來。而且,所述的行號為ROWID,該ROWID=(Y-AreaMinY)/_BlockSize,其中Y是地理坐標(biāo)中的Y值,AreaMinY為區(qū)域起點(diǎn)Y值,_BlockSize為快速查找單元的網(wǎng)格大小500。而且,所述的列號為COLID,該COLID=(X-AreaMinX)/_BlockSize,其中X是地理坐標(biāo)中的X值,AreaMinX為區(qū)域起點(diǎn)X值,_BlockSize為快速查找單元的網(wǎng)格大小500。而且,所述的相應(yīng)級別的模型為將三維數(shù)字城市系統(tǒng)中的單體模型根據(jù)三維數(shù)字城市系統(tǒng)中的視點(diǎn)到單體模型中心的地理實(shí)地距離劃分為3個(gè)級別:第一級別為精細(xì)顯示模型,第一級別為0-200米,第二級別為普通顯示模型,第二級別為大于200-1000米,第三級別為粗略顯示模型,第三級別為大于1000-3000米。而且,所述的相應(yīng)級別的模型調(diào)用關(guān)系為當(dāng)前系統(tǒng)視窗顯示的三維單體模型為第一級別時(shí),將該三維單體模型的第二級別模型數(shù)據(jù)從數(shù)據(jù)庫中調(diào)入內(nèi)存中備用,系統(tǒng)瀏覽時(shí)視點(diǎn)相對該模型視距變化為第二級別時(shí),直接將內(nèi)存中的第二級別模型數(shù)據(jù)直接放入顯卡中顯示,并將顯卡中的第一級別模型數(shù)據(jù)釋放掉;當(dāng)前視窗顯示的三維單體模型為第二級別時(shí),將該三維單體模型的第一級別和第三級別模型數(shù)據(jù)從數(shù)據(jù)庫中調(diào)入內(nèi)存中備用,系統(tǒng)瀏覽時(shí)視點(diǎn)相對該模型視距變化為第一級別或第三級別時(shí),直接將內(nèi)存中的相應(yīng)級別的模型數(shù)據(jù)直接放入顯卡中顯示,并將顯卡中的第二級別模型數(shù)據(jù)釋放掉;當(dāng)前視窗顯示的三維單體模型為第三級別時(shí),將該三維單體模型的第二級別模型數(shù)據(jù)從數(shù)據(jù)庫中調(diào)入內(nèi)存中備用,系統(tǒng)瀏覽時(shí)視點(diǎn)相對該模型視距變化為第二級別時(shí),直接將內(nèi)存中的第二級別模型數(shù)據(jù)直接放入顯卡中顯示,并將顯卡中的第三級別模型數(shù)據(jù)釋放掉。而且,所述的模型非可見部分為將視窗中三維數(shù)字城市系統(tǒng)地理坐標(biāo)范圍中的三維單體模型放入顯卡中進(jìn)行顯示,顯示過程中,所有三維單體模型的數(shù)據(jù)全部調(diào)入內(nèi)存中,利用光線相交的方法從系統(tǒng)視窗視點(diǎn)發(fā)出與視窗中的三維單體模型相交計(jì)算,經(jīng)過計(jì)算后得到顯然不可見的繪制元素為模型非可見部分。而且,所述的模型非可見部分包括視窗中三維單體模型的背面或者后面模型被前面模型遮擋的部分。本發(fā)明的優(yōu)點(diǎn)和有益效果為:1、本基于三維數(shù)字城市系統(tǒng)海量模型數(shù)據(jù)的瀏覽方法中采用快速查找單元,可以快速計(jì)算出視窗顯示范圍所覆蓋的區(qū)域中的快速查找單元,從這些快速查找單元中找出我們需要的單體三維模型就可以上萬倍的提高查找和計(jì)算速度。即使利用普通商用PC機(jī)也可以實(shí)現(xiàn)地理信息三維模型的高效顯示??焖俨檎覇卧梢源蠓岣叩乩硇畔⒑A咳S模型顯示效率。由于顯示效率的提高,對系統(tǒng)運(yùn)行計(jì)算機(jī)的要求也大大的降低,使用普通PC機(jī)也可以完成傳統(tǒng)方法在高級圖形工作站上實(shí)現(xiàn)的效果,為使用者降低了硬件使用成本。由于該方法使全局查找改變?yōu)榫植坎檎?,不僅減少了查找時(shí)間,而且還大幅降低了數(shù)據(jù)庫的占用計(jì)算時(shí)間,大幅降低了磁盤讀寫時(shí)間,這樣對硬件壽命也可以延長。利用該方法加快了單體模型調(diào)入內(nèi)存的速度,就可以為顯示效果更復(fù)雜的效果提供充足的時(shí)間,顯示的模型可以更精細(xì),效果更好。2、本基于三維數(shù)字城市系統(tǒng)海量模型數(shù)據(jù)的瀏覽方法采用分頁多級別顯示方法利用分級機(jī)制,距離觀察者近的顯示精細(xì)模型,保證高質(zhì)量的顯示效果,距離觀察者中等的顯示中等模型,視覺上效果不變,但是數(shù)據(jù)和資源占用大幅降低,距離觀察者較遠(yuǎn)的顯示粗略模型,視覺上效果不變,極大減少了數(shù)據(jù)和資源的占用,用此規(guī)則不僅可以保證三維數(shù)字城市系統(tǒng)的顯示效果,而且還可以保證系統(tǒng)可以流暢的顯示,穩(wěn)定的運(yùn)行。并且可以降低系統(tǒng)應(yīng)用硬件的要求,即使利用普通商用PC機(jī)也可以實(shí)現(xiàn)三維數(shù)字城市的高效、高質(zhì)顯示,分頁多級別顯示可以大幅提高地理信息三維模型顯示效率和系統(tǒng)運(yùn)行的穩(wěn)定性。通過分級的方式可以大幅減少模型數(shù)據(jù)的讀取量,提高了顯示效率,使用該方法系統(tǒng)可以顯示非常精細(xì)的三維模型,在保證了顯示質(zhì)量和效果的情況下對系統(tǒng)運(yùn)行計(jì)算機(jī)的要求也大大的降低,使用普通PC機(jī)也可以完成傳統(tǒng)方法在高級圖形工作站上實(shí)現(xiàn)的效果,為使用者降低了硬件使用成本。利用該方法可以大幅提高系統(tǒng)運(yùn)行的穩(wěn)定性,由于顯卡負(fù)荷超載的死機(jī)情況可以完全避免,實(shí)現(xiàn)流暢的顯示。3、本基于三維數(shù)字城市系統(tǒng)海量模型數(shù)據(jù)的瀏覽方法可以把很多不需要的部分從顯卡中去除掉,減輕系統(tǒng)顯卡顯示時(shí)的負(fù)擔(dān),提高顯示效率,避免瀏覽顯示時(shí)的卡頓,做到瀏覽時(shí)流暢顯示。利用該方法使用普通PC機(jī)也可以完成傳統(tǒng)方法在高級圖形工作站上實(shí)現(xiàn)的效果,為使用者降低了硬件使用成本,計(jì)算出系統(tǒng)視窗中三維單體模型的非可見部分,然后從顯卡顯存中去掉該部分內(nèi)容不顯示,可以大幅減輕顯卡顯示負(fù)擔(dān),提高系統(tǒng)顯示效率,從而實(shí)現(xiàn)高效、快速的系統(tǒng)瀏覽顯示。使用該方法還可以降低系統(tǒng)硬件要求,即使利用普通商用PC機(jī)也可以實(shí)現(xiàn)三維數(shù)字城市的高效、高質(zhì)顯示。4、本發(fā)明能夠快速的顯示海量三維模型中的單體模型,時(shí)間短,效率高,對硬件要求較低。具體實(shí)施方式下面通過具體實(shí)施例對本發(fā)明作進(jìn)一步詳述,以下實(shí)施例只是描述性的,不是限定性的,不能以此限定本發(fā)明的保護(hù)范圍。一種基于三維數(shù)字城市系統(tǒng)海量模型數(shù)據(jù)的瀏覽方法,其方法的步驟如下:⑴、地理信息海量三維模型的建立:利用計(jì)算機(jī)、計(jì)算機(jī)圖形顯卡、數(shù)碼相機(jī)以及立體影像量測儀通過人工采集地理信息三維目標(biāo)的三維框架建立三維立體模型,然后再將數(shù)碼相機(jī)獲取的三維模型貼圖貼合在三維立體模型上生產(chǎn)出來地理信息海量三維模型;⑵、根據(jù)三維數(shù)字城市系統(tǒng)視窗中的地理坐標(biāo)范圍計(jì)算出該范圍所覆蓋的快速查找單元,然后從這些快速查找單元中找到需要的三維單體模型,并將這些三維單體模型從數(shù)據(jù)庫中找到,然后計(jì)算視點(diǎn)至三維單體模型中心的距離,根據(jù)距離把數(shù)據(jù)庫中相應(yīng)級別的模型調(diào)入內(nèi)存中,然后將這些分好級別的模型數(shù)據(jù)通過計(jì)算找出模型非可見部分從內(nèi)存中釋放掉,并將可見部分放入顯卡的圖形繪制管線中,最后在三維數(shù)字城市系統(tǒng)中顯示出來。上述的快速查找單元的建立為將地理信息海量三維模型數(shù)據(jù)根據(jù)地理坐標(biāo)范圍按照地理坐標(biāo)500米×500米的規(guī)則劃分為若干個(gè)網(wǎng)格,這個(gè)網(wǎng)格稱作快速查找單元;每一個(gè)快速查找單元都是以地理空間中預(yù)先定義好的一點(diǎn)為計(jì)算起點(diǎn),該計(jì)算起點(diǎn)坐標(biāo)為:AreaMinX,AreaMinY;建立快速查找單元唯一ID:該唯一ID由快速查找單元的行號以及列號組成;行號為ROWID,該ROWID=(Y-AreaMinY)/_BlockSize,其中Y是地理坐標(biāo)中的Y值,AreaMinY為區(qū)域起點(diǎn)Y值,_BlockSize為快速查找單元的網(wǎng)格大小500,列號為COLID,該COLID=(X-AreaMinX)/_BlockSize,其中X是地理坐標(biāo)中的X值,AreaMinX為區(qū)域起點(diǎn)X值,_BlockSize為快速查找單元的網(wǎng)格大小500。通過計(jì)算機(jī)視窗所覆蓋的地理信息范圍,快速的找到對應(yīng)的幾個(gè)快速查找單元,然后再利用四叉樹查找算法從這幾個(gè)快速查找單元中根據(jù)地理信息空間關(guān)系找到所需要的單體模型,并將該單體模型從數(shù)據(jù)庫中取出放入內(nèi)存中,進(jìn)而通過顯卡在視窗中顯示出來,系統(tǒng)在做瀏覽操作時(shí),視窗顯示的地理空間范圍會發(fā)生變化,變化的過程中原本不在視窗顯示范圍中的新快速查找單元通過上面描述的方法計(jì)算獲得,并且將原本不在視窗顯示范圍中的新的單體三維模型通過上面的方式找到并從數(shù)據(jù)庫中得到放入顯卡中在視窗中顯示出來。變化過程中原本就在視窗顯示范圍中的快速查找單元和其相應(yīng)范圍內(nèi)的三維單體模型不做任何操作。變化過程中原本就在視窗顯示范圍中的快速查找單元在變化后就不在最終視窗顯示范圍內(nèi)的,將該快速查找單元和其范圍中的所有單體三維模型從內(nèi)存中刪除。未使用快速查找單元時(shí)每做一次從所有地理信息海量三維模型中查找特定范圍內(nèi)的模型這一運(yùn)算所需要的時(shí)間視用戶管理模型的多少而不同,在模型數(shù)量較少時(shí),該運(yùn)算可以接受,但在模型數(shù)量極大時(shí),該運(yùn)算會嚴(yán)重拖累系統(tǒng)渲染效率,例如在1057萬個(gè)地理信息三維模型中查詢137幢建筑模型,816棵樹木模型和738個(gè)城市部件模型時(shí)耗時(shí)0.8s的時(shí)間,而采用本發(fā)明,第一步計(jì)算該范圍所包含的快速查找單元僅耗時(shí)6ms即0.000006秒,然后第二步在這幾個(gè)快速查找單元中找到這些模型耗時(shí)11毫秒,效率提高了四萬多倍,而且使用該方法在模型數(shù)量繼續(xù)增加的情況下耗時(shí)不會有明顯變化。上述的相應(yīng)級別的模型主要是將三維數(shù)字城市系統(tǒng)中的單體模型根據(jù)三維數(shù)字城市系統(tǒng)中的視點(diǎn)到單體模型中心的地理實(shí)地距離劃分為3個(gè)級別:第一級別為精細(xì)顯示模型,第一級別為0-200米,第二級別為普通顯示模型,第二級別為大于200-1000米,第三級別為粗略顯示模型,第三級別為大于1000-3000米;制定精細(xì)顯示模型、普通顯示模型以及粗略顯示模型之間的調(diào)用規(guī)則,該調(diào)用規(guī)則為當(dāng)前系統(tǒng)視窗顯示的三維單體模型為第一級別時(shí),將該三維單體模型的第二級別模型數(shù)據(jù)從數(shù)據(jù)庫中調(diào)入內(nèi)存中備用,系統(tǒng)瀏覽時(shí)視點(diǎn)相對該模型視距變化為第二級別時(shí),直接將內(nèi)存中的第二級別模型數(shù)據(jù)直接放入顯卡中顯示,并將顯卡中的第一級別模型數(shù)據(jù)釋放掉;當(dāng)前視窗顯示的三維單體模型為第二級別時(shí),將該三維單體模型的第一級別和第三級別模型數(shù)據(jù)從數(shù)據(jù)庫中調(diào)入內(nèi)存中備用,系統(tǒng)瀏覽時(shí)視點(diǎn)相對該模型視距變化為第一級別或第三級別時(shí),直接將內(nèi)存中的相應(yīng)級別的模型數(shù)據(jù)直接放入顯卡中顯示,并將顯卡中的第二級別模型數(shù)據(jù)釋放掉;當(dāng)前視窗顯示的三維單體模型為第三級別時(shí),將該三維單體模型的第二級別模型數(shù)據(jù)從數(shù)據(jù)庫中調(diào)入內(nèi)存中備用,系統(tǒng)瀏覽時(shí)視點(diǎn)相對該模型視距變化為第二級別時(shí),直接將內(nèi)存中的第二級別模型數(shù)據(jù)直接放入顯卡中顯示,并將顯卡中的第三級別模型數(shù)據(jù)釋放掉;依據(jù)調(diào)用規(guī)則實(shí)現(xiàn)基于三維數(shù)字城市系統(tǒng)模型的分頁多級別顯示。在系統(tǒng)瀏覽操作時(shí),視窗顯示的地理空間范圍會發(fā)生變化,變化的過程中視點(diǎn)到單體模型中心的地理實(shí)地距離也會相應(yīng)的變化,當(dāng)變化到從一個(gè)級別切換到另一個(gè)級別時(shí),為了讓系統(tǒng)顯示模型時(shí)切換的過渡自然、平緩,通常將數(shù)據(jù)庫中調(diào)用到內(nèi)存并且顯示的級別模型的相鄰級別模型也調(diào)入內(nèi)存但是并不進(jìn)行顯示,以便準(zhǔn)備該級別隨時(shí)可以切換進(jìn)顯卡顯示稱為分頁。上述的模型非可見部分也叫三維單體模型的非可見部分,主要是將視窗中三維數(shù)字城市系統(tǒng)地理坐標(biāo)范圍中的三維單體模型放入顯卡中進(jìn)行顯示,顯示過程中,所有三維單體模型的數(shù)據(jù)全部調(diào)入內(nèi)存中,利用光線相交的方法從系統(tǒng)視窗視點(diǎn)發(fā)出與視窗中的三維單體模型相交計(jì)算,經(jīng)過計(jì)算后得到顯然不可見的繪制元素,即三維單體模型的非可見部分,將三維單體模型的非可見部分從顯卡中刪除,只留下可見部分顯示,在系統(tǒng)瀏覽的過程中,視角會發(fā)生變化,三維模型的可見部分也會發(fā)生改變,此時(shí)系統(tǒng)重新計(jì)算模型的非可見部分,然后將內(nèi)存中的三維單體模型放入顯卡,再將三維單體模型的非可見部分從顯卡中刪除,只留變化后可見部分顯示,已達(dá)到利用三維數(shù)字城市系統(tǒng)模型非可見部分的加速顯示,三維單體模型的非可見部分包括視窗中三維單體模型的背面或者后面模型被前面模型遮擋的部分。未使用本方法時(shí)三維數(shù)字城市系統(tǒng)視窗中地理坐標(biāo)范圍越大其中所包含的三維單體模型就越多,其數(shù)據(jù)量就越大,瀏覽卡頓的現(xiàn)象就越明顯。而采用本發(fā)明方法時(shí)可以計(jì)算出三維單體模型的非可見部分并快速拒絕那些顯然不可見的繪制元素,從而減少送入圖形繪制管線的幾何復(fù)雜度,從而大大提高了系統(tǒng)的顯示效率。例如系統(tǒng)視窗中顯示3000個(gè)三維單體模型,未使用該方法時(shí)模型數(shù)據(jù)三維三角形約1700萬個(gè),采用該方法后系統(tǒng)視窗中顯示的依然是3000個(gè)三維單體模型,但實(shí)際進(jìn)入顯卡圖形繪制管線的三維三角形約為936萬個(gè)。采用該方法后系統(tǒng)瀏覽顯示的精細(xì)程度沒有絲毫改變,但是繪制負(fù)擔(dān)大大減少,從而使系統(tǒng)可以流暢的顯示。綜上所述使用本發(fā)明可以在使用普通商用PC計(jì)算機(jī)就實(shí)現(xiàn)三維數(shù)字城市系統(tǒng)的流暢瀏覽,由于顯示效率的提高,對系統(tǒng)運(yùn)行計(jì)算機(jī)的要求也大大的降低,使用普通PC機(jī)也可以完成傳統(tǒng)方法在高級圖形工作站上實(shí)現(xiàn)的效果,為使用者降低了硬件使用成本。由于該方法使全局查找改變?yōu)榫植坎檎?,不僅減少了查找時(shí)間,而且還大幅降低了數(shù)據(jù)庫的占用計(jì)算時(shí)間,大幅降低了磁盤讀寫時(shí)間,這樣對硬件壽命也可以延長。利用該方法加快了單體模型調(diào)入內(nèi)存的速度,就可以為顯示效果更復(fù)雜的效果提供充足的時(shí)間,顯示的模型可以更精細(xì),效果更好。通過分級的方式可以大幅減少模型數(shù)據(jù)的讀取量,提高了顯示效率,使用該方法系統(tǒng)可以顯示非常精細(xì)的三維模型,在保證了顯示質(zhì)量和效果的情況下對系統(tǒng)運(yùn)行計(jì)算機(jī)的要求也大大的降低,利用該方法可以大幅提高系統(tǒng)運(yùn)行的穩(wěn)定性,由于顯卡負(fù)荷超載的死機(jī)情況可以完全避免,實(shí)現(xiàn)流暢的顯示。未使用該方法的系統(tǒng)僅可以流暢瀏覽范圍比較小的區(qū)域,而且顯示范圍的大小和硬件的條件有關(guān),使用該方法的三維數(shù)字城市系統(tǒng)管理1萬兩千平方公里,數(shù)據(jù)量為1.4TB,可以流暢顯示。