《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于OpenGL的三維油藏可視化模型
基于OpenGL的三維油藏可視化模型
摘要: 通過(guò)地震,、測(cè)井可得到關(guān)于油藏地層測(cè)試點(diǎn)孔隙度、滲透率等物性參數(shù),,但這些數(shù)據(jù)數(shù)量龐大,難以直接進(jìn)行地質(zhì)分析,。為了解油層結(jié)構(gòu)和分布,,需要將油藏地層模型在計(jì)算機(jī)上再現(xiàn),并對(duì)其進(jìn)行一些交互式操作及初步處理,。
Abstract:
Key words :
1 引言
   
通過(guò)地震,、測(cè)井可得到關(guān)于油藏地層測(cè)試點(diǎn)孔隙度、滲透率等物性參數(shù),,但這些數(shù)據(jù)數(shù)量龐大,,難以直接進(jìn)行地質(zhì)分析。為了解油層結(jié)構(gòu)和分布,,需要將油藏地層模型在計(jì)算機(jī)上再現(xiàn),,并對(duì)其進(jìn)行一些交互式操作及初步處理。
    系統(tǒng)實(shí)現(xiàn)方法是:首先組織數(shù)據(jù)(幾何頂點(diǎn),,物性參數(shù)值等)及提取可視面,,并與所需要的目標(biāo)結(jié)合,,實(shí)現(xiàn)對(duì)模型的繪制,。其次,提供對(duì)模型的分解和剖切方法,,實(shí)現(xiàn)由數(shù)據(jù)驅(qū)動(dòng)的對(duì)模型的操作控制,。

2 數(shù)據(jù)處理與參數(shù)的顏色索引
2.1 系統(tǒng)的地質(zhì)數(shù)據(jù)
   
系統(tǒng)讀入的原始網(wǎng)格數(shù)據(jù)示例如下:


    第一行數(shù)據(jù)的前3個(gè)數(shù)據(jù)數(shù)據(jù)分別表示X,Y,,Z軸方向上的網(wǎng)格個(gè)數(shù),,第4~6個(gè)數(shù)據(jù)分別表示X,Y,,Z軸方向上的原點(diǎn)坐標(biāo),,而第7~8個(gè)數(shù)據(jù)表示沿X,Y軸方向的網(wǎng)格間距大小,。第二行數(shù)據(jù)"2"表示以下是兩列數(shù)據(jù),,第一列數(shù)據(jù)(如940.700)表示深度值,第二列數(shù)據(jù)(如73.000)表示對(duì)應(yīng)點(diǎn)的參數(shù)值。
    由于網(wǎng)格結(jié)點(diǎn)在xoy平面上是規(guī)則的順序排列,,給出已知的沿x,,y方向的網(wǎng)格間距dx,dy,網(wǎng)格數(shù)Nx,Ny和幾何坐標(biāo)系原點(diǎn)坐標(biāo)x0,y0,z0,,則任一網(wǎng)格結(jié)點(diǎn)Node的空間坐標(biāo)和參數(shù)為:

   
式中:i的范圍為[O,,Nx-1],j的范圍為[0,,Ny-1],;k為結(jié)點(diǎn)Node(i,j)處深度的序數(shù),其值與深度的排列方式有關(guān),。dpk,sk為第k點(diǎn)處的深度和物性參數(shù),。
2.2 處理原始數(shù)據(jù)
   
由于原始數(shù)據(jù)采用大地坐標(biāo),為方便繪圖,,應(yīng)對(duì)數(shù)據(jù)進(jìn)行坐標(biāo)變換,。將X,Y,,Z上數(shù)據(jù)范圍變換到-1~1之間,,經(jīng)過(guò)縮放變換,才能在視圖區(qū)顯示出圖形,。原始數(shù)據(jù)在測(cè)量時(shí)可能存在誤差,,因此在讀入數(shù)據(jù)后需對(duì)數(shù)據(jù)進(jìn)行有效性檢驗(yàn)。
2.3 參數(shù)的顏色索引
    OpenGL的顏色索引模式通過(guò)建立一個(gè)顏色索引表(又稱彩色表)確定所繪制物體的顏色,。彩色表的建立可通過(guò)指定彩色表兩端的基色和尾色,,插值計(jì)算出中間其它顏色,分別賦予相應(yīng)索引號(hào),。在給模型著色時(shí),,將讀人數(shù)據(jù)點(diǎn)對(duì)應(yīng)的參數(shù)值轉(zhuǎn)化成彩色表上的索引號(hào),便可確定參數(shù)的顏色,。由于彩色表上的索引號(hào)對(duì)應(yīng)的參數(shù)是離散的,,應(yīng)對(duì)參數(shù)值在彩色表中對(duì)應(yīng)的位置作四舍五人以精確給出其索引號(hào)。設(shè)參數(shù)存儲(chǔ)在數(shù)組parameter中,,color_num為彩色表長(zhǎng)度,。將參數(shù)轉(zhuǎn)化為顏色索引號(hào)p的代碼段如下:

對(duì)應(yīng)的索引號(hào)

   

    以上創(chuàng)建出來(lái)的顏色可能較單調(diào),一些位于中間部分的參數(shù)值對(duì)應(yīng)的顏色區(qū)別不明顯,。一種改進(jìn)方法是將彩色表分成4段,,每一段只控制一種顏色分量的變化,這樣彩色表的顏色變化種類大大增加了,,使位于中間部分的參數(shù)值顏色區(qū)分很明顯,,可更直觀的反映出油藏情況,。
    基色和尾色通常根據(jù)油藏描述的實(shí)際要求指定,例如類藍(lán)色(表示水)和類紅色(表示油),,分別對(duì)應(yīng)物性參數(shù)(如滲透率)的最小值和最大值,。

3 建立三維地質(zhì)數(shù)據(jù)模型
3.1 繪制三維地質(zhì)模型的基本思想
   
實(shí)現(xiàn)三維地質(zhì)模型繪制的關(guān)鍵步驟是對(duì)數(shù)據(jù)體建模。由對(duì)讀入數(shù)據(jù)的排列結(jié)構(gòu)分析可知,,原始網(wǎng)格數(shù)據(jù)形成了一個(gè)三維地層模型,。除了在垂直方向(Z方向)上的兩個(gè)面有上下起伏外,其余的面均是平行于ZOY,,面或ZOX面的平面,。如圖1所示。

    地層模型的可視面即底面,、頂面,、左面、右面,、前面及后面,,因此只畫(huà)這6個(gè)面的外側(cè)就可以繪制出整個(gè)6面體。問(wèn)題便轉(zhuǎn)化成提取這6個(gè)面上的數(shù)據(jù),,用OpenGL的繪圖技術(shù)對(duì)每一個(gè)面分別進(jìn)行繪制,。
3.2 三維地質(zhì)數(shù)據(jù)體模型的生成
   
模型立方體的6個(gè)面由很多小4邊形組成,可采用OpenGL畫(huà)連續(xù)4邊形的方法將每一個(gè)面畫(huà)出來(lái),。填充顏色則可采用OpenGL的平滑(SMOOTH)著色方式,,定義出頂點(diǎn)的顏色后,OpenGL便自動(dòng)地對(duì)4邊形內(nèi)的顏色插值計(jì)算,,進(jìn)行顏色漸變繪制,。著色之前采用Z緩存(Z_buffer)技術(shù)通過(guò)對(duì)物體進(jìn)行深度測(cè)試的方法實(shí)現(xiàn)消隱。
    以底面創(chuàng)建為例,,考慮一般情況,,設(shè)x軸上的網(wǎng)格個(gè)數(shù)為x_lenth,z軸的數(shù)據(jù)存儲(chǔ)在數(shù)組z_data中,,當(dāng)前繪制的4邊形片序數(shù)為循環(huán)變量j,,各頂點(diǎn)的顏色值由參數(shù)值轉(zhuǎn)化成顏色索引值確定,,并由向量模式給出,。自動(dòng)提取底面數(shù)據(jù)并繪制底面的程序段為:

   

 

其中,函數(shù)getparaindex()返回對(duì)應(yīng)參數(shù)的顏色索引值,。底面繪制完成后,,以此類推,可提取其它可視面數(shù)據(jù)(頂點(diǎn)及其排列順序),,同樣對(duì)其它可視面進(jìn)行繪制,、消隱和著色,由此生成三維油藏地質(zhì)模型。

 

4 模型操作
4.1 數(shù)據(jù)體撥層
   
通過(guò)對(duì)數(shù)據(jù)體進(jìn)行撥層,,即沿Z軸分解數(shù)據(jù)體的層面,,按層提取并繪制數(shù)據(jù)體的可視面,可以得到撥層面的圖形,,還可以得到撥層后數(shù)據(jù)塊的圖形,。撥層面的繪制可通過(guò)繪制數(shù)據(jù)體被撥層后的頂面圖形實(shí)現(xiàn)。在VC中使用Slider控件傳遞參數(shù),,確定"顯示撥層面"操作的次數(shù),,這樣可顯示多個(gè)撥層面,通過(guò)旋轉(zhuǎn)等操作,,可清楚的看出撥層面之間的油藏情況,,如圖2所示。

4.2 切片和切塊
   
通過(guò)對(duì)數(shù)據(jù)體切片,,即切割數(shù)據(jù)體的X軸,、Y軸,得到剖面或截面的圖形,。垂直于X軸,、Y軸的一系列的切割點(diǎn)的位置由Visual C++中的鼠標(biāo)響應(yīng)程序得到,而切割點(diǎn)的顏色通過(guò)切割點(diǎn)兩旁的網(wǎng)格數(shù)據(jù)點(diǎn)的顏色插值得到,。這其中須注意兩個(gè)問(wèn)題:①Visual C++中數(shù)據(jù)和OpenGL中數(shù)據(jù)的轉(zhuǎn)化,。因通過(guò)雙擊鼠標(biāo)左鍵選擇切割點(diǎn),得到的是VC中的響應(yīng)坐標(biāo),,需要把其轉(zhuǎn)化成OpenGL中的坐標(biāo),。由變換語(yǔ)句glFrustum();可知在OpenGL中窗口的寬和高,,而且可知VC中窗口的大小,,因此二者之間存在一個(gè)比例關(guān)系,再考慮X軸,、Y軸的長(zhǎng)度因素,,可得到切割點(diǎn)在OpenGL中的坐標(biāo)。②關(guān)于得到切割點(diǎn)顏色,。OpenGL中采取平滑模式(GL_SMOOTH)時(shí),,給定多邊形內(nèi)各點(diǎn)的顏色是通過(guò)頂點(diǎn)顏色插值得到的。因此,,當(dāng)切割點(diǎn)選擇在給定網(wǎng)格點(diǎn)之間時(shí),,切割點(diǎn)的顏色可通過(guò)顏色捕值得到。繪制時(shí)需注意頂點(diǎn)和顏色的對(duì)應(yīng)關(guān)系,。利用某油田數(shù)據(jù)繪制的切片圖如圖3所示,。

    切塊功能和切片功能類似,,但得到的不是一個(gè)面,而是一個(gè)數(shù)據(jù)體,。該功能的第一步和切片功能相似,,要得到切割點(diǎn)在OpenGL中的坐標(biāo)。第二步畫(huà)數(shù)據(jù)體圖形的時(shí)候,,不再是只畫(huà)其中的一個(gè)面,,而是要畫(huà)數(shù)據(jù)體的6個(gè)面,因此該功能和切片,、旋轉(zhuǎn)等功能綜合使用時(shí),,要注意功能標(biāo)志的設(shè)置問(wèn)題。利用某油田數(shù)據(jù)繪制的切塊圖如圖4所示,。

5 結(jié)語(yǔ)
    提出了一種基于OpenGL建立三維油藏地質(zhì)數(shù)據(jù)模型的簡(jiǎn)便方法,,在根據(jù)實(shí)際要求創(chuàng)建彩色表并將原始物性參數(shù)轉(zhuǎn)化為顏色索引值的基礎(chǔ)上,可自動(dòng)提取網(wǎng)格數(shù)據(jù)體可視面上的數(shù)據(jù),,然后利用OpenGL繪圖技術(shù)對(duì)模型繪制,。與傳統(tǒng)的三維油藏可視化軟件系統(tǒng)比較,這里提出的系統(tǒng)繪制效率更高,,特別是對(duì)模型進(jìn)行撥層,、切片、切塊等操作處理是該系統(tǒng)的特色,。

 

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。