馬媛 王英 王曉波
摘要:現(xiàn)實(shí)中,所有的物體都是三維的。但是在計(jì)算機(jī)中,所有的三維物體必須以二維平面圖像的形式表現(xiàn)出來。將物體的三維坐標(biāo)轉(zhuǎn)換到計(jì)算機(jī)的像素位置,需要經(jīng)過幾何變換、投影變換、裁剪變換、視口變換等操作,才能正確顯示出儲(chǔ)層的三維圖像。
關(guān)鍵詞:OpenGL;三維圖形顯示;精細(xì)油藏描述
中圖分類號(hào):TP37 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)36-8764-02
1 模塊描述
對(duì)經(jīng)隨機(jī)模擬模塊和網(wǎng)格粗化模塊處理后的數(shù)據(jù)體進(jìn)行三維顯示,將所有數(shù)據(jù)以圖形的方式來表示。并顯示經(jīng)過模擬后的相模型,以及網(wǎng)格粗化后的物性參數(shù)模型。
2 設(shè)計(jì)方法
2.1 OpenGL環(huán)境和視景體設(shè)置
程序運(yùn)行時(shí),從Display3D類中進(jìn)入,調(diào)用CmainFrame類和CDoc文檔類以及Cview視圖類。設(shè)置OpenGL環(huán)境和視景體:
1) 調(diào)用CDisplay3DView::OnCreate(LPCREATESTRUCT lpCreateStruct)函數(shù),設(shè)置象素格式和OpenGL描述表。
2) 調(diào)用CDisplay3DView::OnSize(UINT nType, int cx, int cy)函數(shù)設(shè)置視景體。
3) 在程序運(yùn)行將要完成后要銷毀OpenGL描述表。
2.2 加載數(shù)據(jù)
消息函數(shù)
void OnFileOpen()
調(diào)用對(duì)話框類
CLoadDateDlg
調(diào)用函數(shù)
BOOL CStratum.ReadFile(CString filename)
BOOL CStratum.ReadColorFile(CString filename)
void rdfl(CString filename)
設(shè)計(jì)思路:
1) 打開對(duì)話框,利用對(duì)話框中的不同控件來確定打開的文件,利用對(duì)話框類中變量記錄下需要的變量;
2) 調(diào)用函數(shù)CStratum.ReadColor(CString filename),讀取顏色值和取值范圍;
3) 調(diào)用CStratum類中的函數(shù)ReadData(CString filename),讀取文件中的數(shù)據(jù);
4) 調(diào)用SearchViewBox()為多層顯示尋找合適的視見體;
5) 利用DrawScence(),調(diào)用CStratum中的繪圖函數(shù)繪制三維圖形;
6) 利用DrawScence(),調(diào)用DrawCoord()繪制坐標(biāo)軸線和WriteScale()標(biāo)注刻度;
7) 利用DrawScence(),最后繪制色表,并在界面上顯示圖形的屬性,地質(zhì)層面。
2.3 地質(zhì)層
利用布爾變量m_bDraw3D 和m_bDrawCoord來控制“地質(zhì)層”和“坐標(biāo)”的顯示和不顯示。
“剝層顯示”,利用“剝層顯示”對(duì)話框?qū)崿F(xiàn)用戶交互,得到要顯示的地質(zhì)層和地質(zhì)小層。通過函數(shù)CStratum::DrawStratum(BOOL Atrr,BOOL flag,int z,BOOL init,float thick,bool m_bBoundary)傳遞到CStratum類中。再利用DrawScence(),依賴布爾變量m_bDrawDivLayer調(diào)用CStratum中的繪圖函數(shù)繪制只要求顯示的地質(zhì)面的三維圖形。
2.4 井位
利用CWell類的成員函數(shù)讀取測(cè)井文件中的井名,在“加載井位”對(duì)話框中顯示,讓用戶選擇要顯示的井位(包括地質(zhì)層、井位)、井柱長(zhǎng)度、井柱半徑、井柱顏色、是否顯示井名以及井位顯示模式。再利用CWell類中的成員函數(shù)來繪制圖形。
2.5 色表
以布爾變量m_bDrawColorList來控制是否顯示色表。對(duì)于色表設(shè)置,以“色表設(shè)置”對(duì)話框來實(shí)現(xiàn)人機(jī)交互,修改色表顏色,色表表示的屬性值界限,保存修改后的值到rgb文件中。
2.6 邊界
“邊界裁減”調(diào)用CStratum類中的成員函數(shù)ReadIndexFile(CString filename),再以布爾變量m_bDrawBoundary3D來控制調(diào)用CStratum對(duì)象的成員函數(shù)DrawIndices(m_bAttr,m_bDef,m_DivLayer,0,m_fThick,m_bBoundary)來繪制三維圖形,這時(shí)的三維圖形是以三角形為圖元來繪制的。
“邊界線繪制”,用m_bBoundary來控制是否顯示。
“繪制側(cè)面”,用四邊形圖元來繪制出這個(gè)邊界側(cè)面,用GL_SMOOTH函數(shù)進(jìn)行插值,得到插值后的側(cè)面。
2.7 變換
主要是對(duì)地質(zhì)層圖形進(jìn)行模型變換得到用戶想要的視覺效果,包括兩個(gè)層次。一是多個(gè)地質(zhì)層間的模型變換,以地質(zhì)層為單位。一是對(duì)地質(zhì)小層進(jìn)行模型變換。
2.8 剖切
操作流程:“開始剖切”——“X方向剖切”“Y方向剖切”“任意方向剖切”。
“開始剖切”操作利用OpenGL的矩陣壓棧功能,對(duì)模型矩陣壓入單位矩陣,實(shí)現(xiàn)矩陣的初始化。這樣就使圖形的旋轉(zhuǎn)平移操作失效,保證了剖切時(shí)的的精度。
“X方向剖切”,只有點(diǎn)擊了“開始剖切”按鈕這一項(xiàng)才有效,這時(shí)菜單項(xiàng)“X方向剖切”才會(huì)有效。這里用布爾變量g_bMenu來控制菜單項(xiàng)的是否變灰。
函數(shù)GetSectionX(m_xcut,m_ycut) 得到每個(gè)地質(zhì)層的切面數(shù)據(jù)的具體算法如下:endprint
1) 得到鼠標(biāo)點(diǎn)的世界坐標(biāo)(m_xcut,m_ycut);
2) 判斷這一點(diǎn)在Y方向的第幾個(gè)網(wǎng)格節(jié)點(diǎn)上;
3) 沿X方向剖切,剖切面的上的所有點(diǎn)的y坐標(biāo)就是m_ycut;
4) 剖切面上的所有點(diǎn)的x坐標(biāo)就是這一行網(wǎng)格節(jié)點(diǎn)的x坐標(biāo);
5) 剖切面上的所有點(diǎn)的z坐標(biāo)是經(jīng)過線性插值而得到( (m_ycut-mesh.y)/dy*((mesh+1).z-mesh.z)+mesh.z);
剖切面上的所有點(diǎn)的屬性經(jīng)過線性插值而得到( (m_ycut-mesh.y)/dy*((mesh+1).attr-mesh. attr)+mesh. attr)。
3 程序流程圖
圖1 地質(zhì)層三維顯示的程序流程圖
4 結(jié)束語
目前為止,OpenGL依然是行業(yè)領(lǐng)域中最為廣泛的2D/3D 圖形 API,是一個(gè)針對(duì)圖形硬件開放的三維圖形軟件包,獨(dú)立于硬件設(shè)備、窗口系統(tǒng)和操作系統(tǒng),可以很方便在各種平臺(tái)上移植。它提供了120多個(gè)函數(shù),開發(fā)者可以用這些函數(shù)來建立三維模型和進(jìn)行三維實(shí)時(shí)交互。技術(shù)人員可以根據(jù)其三維顯示來完成油氣儲(chǔ)層的建模工作,以此指導(dǎo)精細(xì)油藏描述。
參考文獻(xiàn):
[1] 曾新平, 楊自安, 劉碧虹,等. 地質(zhì)體三維可視化建模的技術(shù)方法研究[J]. 地礦與地質(zhì), 2005, 19(107): 103-106.
[2] Liu J,Yang F.Analyzing structural evolution and the significance of oil-gas geology in Xixuan area of Shiwu Fault depression by using 3D seismic data Jianghan Shiyou Xueyuan Xuebao/Journal of Jianghan Petroleum Institute,2005(27).
[3] 吳健生,王仰麟,曾新平,等.三維可視化環(huán)境下礦體空間數(shù)據(jù)插值[J].北京大學(xué)學(xué)報(bào),2004,40(4) :635-642.
[4] 劉祚秋,周翠英,趙旭升,等.三維地層模型及可視化技術(shù)研究[J].中山大學(xué)學(xué)報(bào),2003,42(4) :41-44.
1) 得到鼠標(biāo)點(diǎn)的世界坐標(biāo)(m_xcut,m_ycut);
2) 判斷這一點(diǎn)在Y方向的第幾個(gè)網(wǎng)格節(jié)點(diǎn)上;
3) 沿X方向剖切,剖切面的上的所有點(diǎn)的y坐標(biāo)就是m_ycut;
4) 剖切面上的所有點(diǎn)的x坐標(biāo)就是這一行網(wǎng)格節(jié)點(diǎn)的x坐標(biāo);
5) 剖切面上的所有點(diǎn)的z坐標(biāo)是經(jīng)過線性插值而得到( (m_ycut-mesh.y)/dy*((mesh+1).z-mesh.z)+mesh.z);
剖切面上的所有點(diǎn)的屬性經(jīng)過線性插值而得到( (m_ycut-mesh.y)/dy*((mesh+1).attr-mesh. attr)+mesh. attr)。
3 程序流程圖
圖1 地質(zhì)層三維顯示的程序流程圖
4 結(jié)束語
目前為止,OpenGL依然是行業(yè)領(lǐng)域中最為廣泛的2D/3D 圖形 API,是一個(gè)針對(duì)圖形硬件開放的三維圖形軟件包,獨(dú)立于硬件設(shè)備、窗口系統(tǒng)和操作系統(tǒng),可以很方便在各種平臺(tái)上移植。它提供了120多個(gè)函數(shù),開發(fā)者可以用這些函數(shù)來建立三維模型和進(jìn)行三維實(shí)時(shí)交互。技術(shù)人員可以根據(jù)其三維顯示來完成油氣儲(chǔ)層的建模工作,以此指導(dǎo)精細(xì)油藏描述。
參考文獻(xiàn):
[1] 曾新平, 楊自安, 劉碧虹,等. 地質(zhì)體三維可視化建模的技術(shù)方法研究[J]. 地礦與地質(zhì), 2005, 19(107): 103-106.
[2] Liu J,Yang F.Analyzing structural evolution and the significance of oil-gas geology in Xixuan area of Shiwu Fault depression by using 3D seismic data Jianghan Shiyou Xueyuan Xuebao/Journal of Jianghan Petroleum Institute,2005(27).
[3] 吳健生,王仰麟,曾新平,等.三維可視化環(huán)境下礦體空間數(shù)據(jù)插值[J].北京大學(xué)學(xué)報(bào),2004,40(4) :635-642.
[4] 劉祚秋,周翠英,趙旭升,等.三維地層模型及可視化技術(shù)研究[J].中山大學(xué)學(xué)報(bào),2003,42(4) :41-44.
1) 得到鼠標(biāo)點(diǎn)的世界坐標(biāo)(m_xcut,m_ycut);
2) 判斷這一點(diǎn)在Y方向的第幾個(gè)網(wǎng)格節(jié)點(diǎn)上;
3) 沿X方向剖切,剖切面的上的所有點(diǎn)的y坐標(biāo)就是m_ycut;
4) 剖切面上的所有點(diǎn)的x坐標(biāo)就是這一行網(wǎng)格節(jié)點(diǎn)的x坐標(biāo);
5) 剖切面上的所有點(diǎn)的z坐標(biāo)是經(jīng)過線性插值而得到( (m_ycut-mesh.y)/dy*((mesh+1).z-mesh.z)+mesh.z);
剖切面上的所有點(diǎn)的屬性經(jīng)過線性插值而得到( (m_ycut-mesh.y)/dy*((mesh+1).attr-mesh. attr)+mesh. attr)。
3 程序流程圖
圖1 地質(zhì)層三維顯示的程序流程圖
4 結(jié)束語
目前為止,OpenGL依然是行業(yè)領(lǐng)域中最為廣泛的2D/3D 圖形 API,是一個(gè)針對(duì)圖形硬件開放的三維圖形軟件包,獨(dú)立于硬件設(shè)備、窗口系統(tǒng)和操作系統(tǒng),可以很方便在各種平臺(tái)上移植。它提供了120多個(gè)函數(shù),開發(fā)者可以用這些函數(shù)來建立三維模型和進(jìn)行三維實(shí)時(shí)交互。技術(shù)人員可以根據(jù)其三維顯示來完成油氣儲(chǔ)層的建模工作,以此指導(dǎo)精細(xì)油藏描述。
參考文獻(xiàn):
[1] 曾新平, 楊自安, 劉碧虹,等. 地質(zhì)體三維可視化建模的技術(shù)方法研究[J]. 地礦與地質(zhì), 2005, 19(107): 103-106.
[2] Liu J,Yang F.Analyzing structural evolution and the significance of oil-gas geology in Xixuan area of Shiwu Fault depression by using 3D seismic data Jianghan Shiyou Xueyuan Xuebao/Journal of Jianghan Petroleum Institute,2005(27).
[3] 吳健生,王仰麟,曾新平,等.三維可視化環(huán)境下礦體空間數(shù)據(jù)插值[J].北京大學(xué)學(xué)報(bào),2004,40(4) :635-642.
[4] 劉祚秋,周翠英,趙旭升,等.三維地層模型及可視化技術(shù)研究[J].中山大學(xué)學(xué)報(bào),2003,42(4) :41-44.