彭文高
(長江大學(xué)計(jì)算機(jī)科學(xué)學(xué)院,湖北荊州 434000)
許多學(xué)者利用鉆井?dāng)?shù)據(jù)進(jìn)行三維管線建模的技術(shù),一般都是使用現(xiàn)在流行組件的開發(fā),將建模需要的算法封裝到函數(shù)庫中,通過調(diào)用不同的接口,可以很方便地實(shí)現(xiàn)復(fù)雜的三維建模過程。采用組件開發(fā)的有其不足的方面,即以插件的方式集成在瀏覽器中,對跨平臺應(yīng)用不是很友好。WebGL提供的3D場景渲染就很好地解決了這一問題[1,2],使用Three.js框架就能脫離插件,通過網(wǎng)頁流暢地渲染出鉆井?dāng)?shù)據(jù)的三維可視化效果,通過這種技術(shù)工程師能對地下的油井有一個直觀的認(rèn)識[3]。重點(diǎn)研究解決鉆井過程中收集的位置信息和屬性信息基于三維可視化技術(shù)的井眼軌跡可視化系統(tǒng)的開發(fā)[4],具體的過程是利用鉆井原始數(shù)據(jù)處理后進(jìn)行測斜計(jì)算,然后使用三維可視化技術(shù)將其直接顯示在瀏覽器上,對鉆井軌跡和測井曲線進(jìn)行三維建??梢暬?。Three.js直接使用GPU的并行計(jì)算資源,來創(chuàng)建三維可視化圖形,實(shí)現(xiàn)了在瀏覽器端根據(jù)三維樣條曲線構(gòu)建三維井眼模型,并且使用時,數(shù)據(jù)加載和用戶使用鼠標(biāo)進(jìn)行交互時體驗(yàn)比較流暢。
將鉆井?dāng)?shù)據(jù)可視化系統(tǒng)的研究與實(shí)現(xiàn)分為三個主要的模塊,第一個模塊是數(shù)據(jù)處理模塊,第二個模塊是井眼三維可視化模塊,第三個模塊是用戶交互模塊。示意圖如圖1所示。
由于鉆井?dāng)?shù)據(jù)是根據(jù)不同的錄井方法獲取的。我們能將數(shù)據(jù)分為幾何數(shù)據(jù)和屬性數(shù)據(jù),列出鉆井?dāng)?shù)據(jù)的詳細(xì)列表。
這些文件中的數(shù)據(jù)通常具有一些異常值。這些異常值與地質(zhì)的變化無關(guān)。如果在可視化建模的數(shù)據(jù)中使用這些異常值,則會在三維可視化顯示時出現(xiàn)異常的情況。根據(jù)這樣的模型,工程技術(shù)人員難以準(zhǔn)確地對鉆井情況進(jìn)行評估,這可能會影響整個鉆井項(xiàng)目的正常開發(fā),嚴(yán)重時會導(dǎo)致鉆井事故。因此,必須在使用這些數(shù)據(jù)之前,對數(shù)據(jù)先預(yù)處理和標(biāo)準(zhǔn)化,消除非影響因子的干擾。預(yù)處理主要是對不合理的數(shù)據(jù)和空數(shù)據(jù)進(jìn)行處理,以及利用文件里的井眼原始數(shù)據(jù),經(jīng)過平滑處理、測斜計(jì)算轉(zhuǎn)換成三維可視化繪制鉆井的坐標(biāo)數(shù)據(jù),具體使用的方法是前面提到的圓柱螺旋、Catmull-Rom插值算法。
基本步驟如下:
(1)讀取dev和las格式的文件數(shù)據(jù)。
(2)檢查線數(shù)據(jù)是否存在異常,如果發(fā)現(xiàn)有空值、超過范圍的值、名稱不對應(yīng)的值的情況,則彈出對話框,提示用戶刷新界面并重新選擇文件。
(3)對測井曲線數(shù)據(jù)標(biāo)準(zhǔn)化,計(jì)算出鉆井坐標(biāo)數(shù)據(jù)。
表1 井斜數(shù)據(jù)文件數(shù)據(jù)結(jié)構(gòu)
?
表2 測井曲線文件數(shù)據(jù)結(jié)構(gòu)
接下來利用圓柱螺線模型內(nèi)插法[7],我們可以得到所有測點(diǎn)對應(yīng)的三維空間坐標(biāo)。假設(shè)測段的形狀為曲線,對測斜進(jìn)行計(jì)算[5]。在內(nèi)插時我們同樣假設(shè)在內(nèi)插的那一段為曲線形狀。不論我們用什么內(nèi)插方法,我們求內(nèi)插點(diǎn)的三維坐標(biāo),都是利用已知測段兩個端點(diǎn)的基本參數(shù)值計(jì)算的,包括井深、井斜角、井斜方位角,利用這些參數(shù)求出對應(yīng)測點(diǎn)的垂深、北向位移、東向位移[6]。這里使用的圓柱螺線法內(nèi)插法,其假定的條件與之前計(jì)算測斜時,求的參數(shù)是一樣的。該方法有兩種情況,一種是測點(diǎn)的井深已知,為Li,求插入點(diǎn)的參數(shù),另一種是測點(diǎn)的垂深Di已知,求插入點(diǎn)的參數(shù)。
(1)井深為Li,求插入點(diǎn)的公式如下:
(2)垂深Di,求插入點(diǎn)的公式如下:
利用公式(7)和(8)計(jì)算出插入點(diǎn)i的井斜角和井深,然后利用公式(6)和(8)就可以計(jì)算出該內(nèi)插點(diǎn)的坐標(biāo)值。
由于鉆井?dāng)?shù)據(jù)表示的是一系列離散的、不連續(xù)的點(diǎn)。直接使用這些測點(diǎn)繪制三維管線,其平滑度無法得到保證,會影響井眼軌跡三維可視化的效果。三維管線中會存在曲度較大的情況,因此使得鉆井測點(diǎn)連線夾角會存在較大的情況。井眼軌跡不再是一條空間曲線,而是由很多空間曲線構(gòu)成的一條管狀曲線。為了能夠保證三維井眼軌跡的管狀曲線的平滑顯示,通常使用Catmull-Rom插值算法對測點(diǎn)數(shù)據(jù)進(jìn)行插值處理,得到一條三維空間樣條曲線。
井眼三維可視化模塊就是把上一步處理完的數(shù)據(jù),利用Three.js在瀏覽器中渲染成三維管線模型。這個模塊包括兩部分:第一部分是,將每個油井軌跡擬合成三維樣條曲線,然后展開渲染成三維管線代表真實(shí)油井;另一部分是對各個油井每個測點(diǎn)的屬性數(shù)據(jù)渲染成不同顏色,使用的是three.js紋理和材質(zhì)渲染技術(shù),將光照、相機(jī)設(shè)置到三維場景中。利用three.js中不同的物體渲染在場景中的三維可視化方法,將鉆井軌跡近似于管狀物體,將屬性信息看出三維的線段,實(shí)現(xiàn)鉆井的幾何數(shù)據(jù)與屬性數(shù)據(jù)的三維可視化表達(dá),并且實(shí)現(xiàn)了一體化顯示。
僅利用測點(diǎn)的三維坐標(biāo)等基礎(chǔ)數(shù)據(jù),對井眼軌跡的模擬不夠完善,我們對參數(shù)進(jìn)行一些調(diào)整,將點(diǎn)到線,再通過線組成三維面,這些面一起組成一個三維立體的井筒。
模型示意圖如下:
圖2 井眼軌跡建模
第一步,將一個井的離散點(diǎn)的數(shù)據(jù)用一個多維數(shù)組表示,這些點(diǎn)的三維坐標(biāo)和對應(yīng)的井斜數(shù)據(jù),構(gòu)成建模需要的基本數(shù)據(jù)。因?yàn)檫@個軌跡模型相當(dāng)于一根多面的管狀線,所以在這一步,我們需要將這些點(diǎn)變成一個個三維面片,因?yàn)槟P椭械娜S面都是自由的曲面,所以用這三角形來表示三維面片,然后由一個個三角形,組合構(gòu)成三維的面片。這些三角網(wǎng)格要保證相互獨(dú)立、互不相交的原則。
第二步,沿曲線的垂直面指定半徑和分段數(shù),對井眼軌跡進(jìn)行三維建模,將曲線展開成一個管狀的曲面。最后,對整個曲面集進(jìn)行渲染和照明,并使它雙面可見。根據(jù)測點(diǎn)的三維坐標(biāo)擬合出三維樣條曲線模型。然后建立三維鉆井模型,井的中軸線為之前建立的三維樣條曲線。鉆井的中心線上下點(diǎn)可以看作是上下底面圓圓心,上下底面半徑為管徑。
基于上面的模型原理,對油井軌跡進(jìn)行批量建模。包括建立的曲線模型、管道的分段數(shù)、管道的半徑、道橫截面的分段數(shù)目、管道的兩端是否閉合。生成由簡單的圖元構(gòu)成的三維模型的之后,還需要為這個模型設(shè)置合適的材質(zhì),最后在網(wǎng)格模型中渲染出完整的井眼模型,網(wǎng)格模型如圖3所示。
進(jìn)行顏色和紋理渲染后效果如下圖所示,可以看出對管狀物體加入上面這些渲染設(shè)置后,渲染的立體感更強(qiáng),產(chǎn)生的明暗效果,使管線更加逼真,同時,增加了場景的真實(shí)感,為了更直觀地展示測井?dāng)?shù)據(jù)的各種物理屬性信息,如不同深度的自然電位用不同得到顏色梯度表示,屬性數(shù)據(jù)可視化的方法有很多種,一種屬性數(shù)據(jù)可以有多種方式,這里我們直接將屬性數(shù)據(jù),以三維線條的形式繪制在管子上,如孔隙度在分析鉆井的過程中是一個很重要的參數(shù),因此我們將這個參數(shù)的直方圖直接顯示在井眼軌跡模型上,如圖4所示。
該模塊功能是用戶能對三維圖形對象進(jìn)行操作控制,包括對三維圖形對象的縮放、旋轉(zhuǎn)和平移操作,并通過設(shè)置關(guān)于圖形顯示的參數(shù)進(jìn)行控制,即完成了用戶與系統(tǒng)的交互。
提出的輕量級三維可視化服務(wù),開發(fā)了前端鉆井?dāng)?shù)據(jù)三維可視化平臺[7]。界面如圖5所示,系統(tǒng)加載多組鉆井軌跡演示數(shù)據(jù),軟件能真實(shí)地顯示不同井眼軌跡之間的位置信息,為鉆井施工中提供良好的決策。該軟件基于B-S模式,瀏覽器打開即可直接使用,系統(tǒng)交互性好,系統(tǒng)性能與可靠性,能完全滿足實(shí)際需求。
圖5 多井眼渲染平臺
建立關(guān)于井眼的三維可視化模型,并使用Three.js的3D引擎開發(fā)了一個輕量級的鉆井?dāng)?shù)據(jù)的三維可視化平臺,充分發(fā)揮了Node.js跨平臺、輕量級的優(yōu)勢。對井眼軌跡進(jìn)行三維樣條曲線的平滑處理和與模型進(jìn)行交互化操作,可以更加直觀形象地觀察不同井軌跡的變化情況,為優(yōu)化鉆井、加快勘探周期,提高勘探開發(fā)的效益提供技術(shù)支持,以達(dá)到預(yù)期的效果。