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