申 皓,劉青昆,龔蔚青,胡國棟
(1.遼寧師范大學(xué) 計(jì)算機(jī)與信息技術(shù)學(xué)院,遼寧 大連 116081;2.中石化石油勘探開發(fā)研究院,北京 100083;3.北京華盛海天科技發(fā)展有限公司,北京 100191)
三維可視化技術(shù)日趨成熟,其在石油勘探領(lǐng)域的應(yīng)用越來越重要,目前主要常見于國外主流商業(yè)化油藏三維地質(zhì)建模、油藏?cái)?shù)值模擬等大型專業(yè)軟件中,如PETREL和ECLIPSE等[1]。為了能對主流商業(yè)軟件地質(zhì)研究成果加以研究和利用,需要能夠加載不同軟件的模型成果文件。但不同的軟件網(wǎng)格描述方式不同,需要分別編寫相應(yīng)的處理程序,增加分析工具的研發(fā)成本。同時大規(guī)模油藏模型對計(jì)算機(jī)的存儲容量、處理速度、繪制速度等都提出了很高的要求[2-3],當(dāng)進(jìn)行旋轉(zhuǎn)、縮放等操作時運(yùn)算數(shù)據(jù)量大,會出現(xiàn)速度緩慢、顯示不連續(xù)等問題。因此,本文提出異種油藏網(wǎng)格模型三維可視化優(yōu)化方法。該方法能夠加載不同描述方式的異種網(wǎng)格模型,同時在不影響油藏模型顯示效果的前提下,對網(wǎng)格模型數(shù)據(jù)進(jìn)行優(yōu)化,最大限度地減少原始模型的網(wǎng)格和頂點(diǎn)的數(shù)目,進(jìn)而使得優(yōu)化后的網(wǎng)格模型能進(jìn)行快速實(shí)時繪制,提高了網(wǎng)格規(guī)模的擴(kuò)展性。
矩形和角點(diǎn)是目前使用較多的結(jié)構(gòu)化網(wǎng)格,可以用I、J、K定義每個網(wǎng)格的位置。矩形網(wǎng)格主要用DX、DY、DZ關(guān)鍵字來描述,角點(diǎn)網(wǎng)格主要用COORD、ZCORN關(guān)鍵字來描述,它們的網(wǎng)格存儲格式不同[4-5]。此外,不同軟件導(dǎo)出的網(wǎng)格模型可能存在I、J增量方向的差異,其網(wǎng)格排序也不同。本文把不同存儲格式、不同排序的網(wǎng)格模型統(tǒng)稱為異種網(wǎng)格模型。
將統(tǒng)一網(wǎng)格存儲格式的方法定義為兩個函數(shù)接口,在對各自模型成果文件進(jìn)行讀取時,只需提供這兩個接口函數(shù),便可獲取各結(jié)構(gòu)化網(wǎng)格模型各網(wǎng)格8個頂點(diǎn)坐標(biāo)數(shù)據(jù)。
兩個接口函數(shù)為:一個是網(wǎng)格頂點(diǎn)坐標(biāo)獲取接口GetVertice(),通過唯一頂點(diǎn)索引index可以得到對應(yīng)唯一頂點(diǎn)坐標(biāo)(x,y,z),即不重復(fù)的網(wǎng)格頂點(diǎn)坐標(biāo)都有一個唯一索引標(biāo)簽與之對應(yīng);另一個是網(wǎng)格頂點(diǎn)坐標(biāo)索引獲取接口GetHexahedron(),用于獲取(i,j,k)網(wǎng)格 8個頂點(diǎn)的坐標(biāo)索引值,此索引值與網(wǎng)格頂點(diǎn)獲取接口參數(shù)索引值index相同。
網(wǎng)格排序存在差異是指I、J增量方向不同,如圖1、圖2所示。進(jìn)行網(wǎng)格遍歷時,I方向,(i+1,j,k)網(wǎng)格相對于當(dāng)前(i,j,k)網(wǎng)格可能在右或在左,如果(i+1,j,k)網(wǎng)格為無效網(wǎng)格或與(i,j,k)網(wǎng)格相鄰面的4個頂點(diǎn)不重合,需保存兩個網(wǎng)格相鄰面的4個頂點(diǎn)數(shù)據(jù)。當(dāng)I增量向右,則保存(i,j,k)網(wǎng)格右平面4個頂點(diǎn)數(shù)據(jù);當(dāng)I增量向左,則保存(i,j,k)網(wǎng)格左平面4個頂點(diǎn)數(shù)據(jù)。J方向也如此。為了識別網(wǎng)格模型I、J增量方向及方便后續(xù)網(wǎng)格模型優(yōu)化,本文通過設(shè)置頂點(diǎn)標(biāo)記索引和網(wǎng)格頂點(diǎn)相對索引來實(shí)現(xiàn)。
定義所有網(wǎng)格 8個頂點(diǎn)的標(biāo)記索引為 0、1、2、3、4、5、6、7。通過獲取I正方向鄰接面頂點(diǎn)關(guān)系表(I,I+1網(wǎng)格相鄰面)、J正方向鄰接面頂點(diǎn)關(guān)系表(J,J+1網(wǎng)格相鄰面),即相鄰面 8個頂點(diǎn)標(biāo)記索引,來判定網(wǎng)格模型I、J增量方向,并設(shè)置對應(yīng)的頂點(diǎn)相對索引。
I、J方向識別算法基本步驟如下:
(1)初始化相對索引數(shù)組RI,RI(i)=-1,其中,i=0,1,…,7;
圖1 I方向示例圖
圖2 J方向示例圖
(2)獲取I正方向鄰接面頂點(diǎn)關(guān)系表;
(3)獲取J正方向鄰接面頂點(diǎn)關(guān)系表;
(4)判斷I方向相鄰面頂點(diǎn)標(biāo)記索引與J方向相鄰面頂點(diǎn)標(biāo)記索引關(guān)系,以此確定I、J增量方向;
(5)根據(jù)步驟(4)獲取的I、J增量方向,設(shè)置對應(yīng)的頂點(diǎn)相對索引數(shù)組RI。
針對大規(guī)模油藏網(wǎng)格模型會占用大量存儲空間、運(yùn)算量大、降低模型繪制速度的問題,本文實(shí)現(xiàn)模型消隱算法對模型網(wǎng)格數(shù)據(jù)進(jìn)行優(yōu)化處理,只繪制表層油藏網(wǎng)格模型。網(wǎng)格模型消隱算法基本步驟如下:
(1)獲取相對索引數(shù)組RI。
(2)遍歷每個單元網(wǎng)格 Girdi,j,k(i=1,…,NX;j=1,…,NY;k=1,…,NZ)。
(3)判斷當(dāng)前網(wǎng)格是否為有效網(wǎng)格。若滿足要求,進(jìn)行下一步;否則跳至步驟(2)。
(4)獲取當(dāng)前網(wǎng)格頂點(diǎn)坐標(biāo)索引GIi,j,k。
(5)判斷相鄰網(wǎng)格GirdI,J,K(I=i,i-1或i+1;J=j,j-1或j+1;K=k,k-1或k+1)(判斷相鄰網(wǎng)格順序:上方向、下方向、左方向、右方向、前方向、后方向)是否為有效網(wǎng)格。若滿足要求,進(jìn)行下一步;若不滿足且當(dāng)前判斷為后方向相鄰網(wǎng)格,跳至步驟(2),否則跳至步驟(5),繼續(xù)判斷其他相鄰網(wǎng)格。
(6)獲取當(dāng)前網(wǎng)格相鄰網(wǎng)格頂點(diǎn)坐標(biāo)索引GII,J,K。
(7)根據(jù)步驟(4)、(6)獲得的坐標(biāo)索引 index判斷(i,j,k)網(wǎng)格與其相鄰(I,J,K)網(wǎng)格相鄰面 4個頂點(diǎn)是否重合。若不滿足要求,進(jìn)行下一步;若滿足且當(dāng)前判斷為后方向相鄰網(wǎng)格,跳至步驟(2),否則跳至步驟(5),繼續(xù)判斷其他相鄰網(wǎng)格。
(8)根據(jù)網(wǎng)格頂點(diǎn)坐標(biāo)索引接口獲取當(dāng)前(i,j,k)網(wǎng)格8個頂點(diǎn)坐標(biāo)索引數(shù)組VI(i),其中,i=0,1,…,7,并根據(jù)當(dāng)前網(wǎng)格相鄰面4個頂點(diǎn)相對索引獲取4個頂點(diǎn)坐標(biāo)。
(9)依次判斷4個頂點(diǎn)是否已經(jīng)保存進(jìn)表層頂點(diǎn)坐標(biāo)數(shù)組SV中。若已經(jīng)保存,則返回已保存頂點(diǎn)坐標(biāo)索引,即SV數(shù)組下標(biāo);否則保存,并返回新頂點(diǎn)坐標(biāo)索引,進(jìn)行下一步。
(10)將步驟(9)獲取的4個頂點(diǎn)坐標(biāo)索引保存在表層四邊形頂點(diǎn)索引數(shù)組SQVI中,如果當(dāng)前相鄰網(wǎng)格為后方向相鄰網(wǎng)格,進(jìn)行下一步;否則跳至步驟(5)。
(11)若 i≤NX,j≤NY,k≤NZ,跳至步驟(2);否則結(jié)束。
實(shí)驗(yàn)環(huán)境為:Inter(R)Core(TM)i5-3450@3.10 GHz CPU,3.48 GB內(nèi)存,基于 MFC應(yīng)用程序框架和OSG三維引擎進(jìn)行編程實(shí)現(xiàn)。
實(shí)驗(yàn)采用了Eclipse導(dǎo)出的 (NX,NY,NZ)=(20,20,10)規(guī)則矩形 網(wǎng)格 模 型和(NX,NY,NZ)=(119,57,10)角點(diǎn)網(wǎng)格模型,兩種結(jié)構(gòu)化網(wǎng)格模型在 E-clispe軟件中繪制的效果如圖3所示,通過本文方法進(jìn)行網(wǎng)格模型繪制,其效果圖如圖4所示。
圖3 Eclipse繪制的模型圖
圖4 基于本文方法繪制的模型圖
對比圖3和圖4可知,基于本文方法繪制的模型圖與Eclispe繪制的一樣,證明了本文方法能夠兼容不同格式的網(wǎng)格模型。
實(shí)驗(yàn)分別采用 4 000、10萬、50萬、100萬、500萬個規(guī)則矩形網(wǎng)格模型進(jìn)行優(yōu)化前和優(yōu)化后性能測試,結(jié)果如表 1、表 2所示(表中旋轉(zhuǎn)縮放效果好、差分別代表:模型能實(shí)時繪制、顯示連續(xù)順暢,模型不能實(shí)時繪制、顯示不順暢)。
從表1和表2可以看出,優(yōu)化后的網(wǎng)格模型較優(yōu)化前的網(wǎng)格模型存在諸多優(yōu)勢,網(wǎng)格規(guī)模越大,優(yōu)化效果越明顯,極大地提高了網(wǎng)格規(guī)模的擴(kuò)展性和系統(tǒng)性能需求,充分證明了本方法具有很高的可行性。
針對實(shí)時繪制大規(guī)模網(wǎng)格模型存在速度慢、效果差以及油藏網(wǎng)格模型存在描述方式不同等問題,本文提出了異種網(wǎng)格模型三維可視化優(yōu)化方法,并通過不同網(wǎng)格模型、不同規(guī)模模型測試對比,證明了該方法是可行的,能夠兼容不同軟件不同描述格式的地質(zhì)研究成果,其應(yīng)用在大規(guī)模網(wǎng)格模型實(shí)時繪制方面性能有很大提升,且效果顯著。
表1 模型消隱前實(shí)驗(yàn)值
表2 模型消隱后實(shí)驗(yàn)值
[1]ADMIN.石油行業(yè)常用軟件綜合介紹[EB/OL].(2008-09-29)[2014-02-26]www.hipetro.com/shiyouruanjian.html.
[2]何暉光,田捷,張小鵬,等.網(wǎng)格模型化簡綜述[J].軟件學(xué)報(bào) ,2002,13(12):2215-2224.
[3]趙新華.大數(shù)據(jù)量網(wǎng)格模型的建模與簡化技術(shù)研究[D].長沙:國防科學(xué)技術(shù)大學(xué),2002.
[4]韓峻,施法中,吳勝和,等.基于格架模型的角點(diǎn)網(wǎng)格生成算法[J].計(jì)算機(jī)工程,2008,34(4):90-93.
[5]蘇丹丹.基于角點(diǎn)網(wǎng)格剖分的三維地質(zhì)建模的研究與實(shí)現(xiàn)[D].西安:西安科技大學(xué),2010.