當前位置:旅游攻略大全網 - 租房 - 其他可視化功能

其他可視化功能

(壹)視圖更新機制

視圖更新的速度對圖形系統的顯示效果至關重要。如果視圖的更新速度慢,就會失去人機交互,甚至軟件也會失去可用性。

如圖4-90所示,更新模型視圖的過程。

圖4-90視圖更新過程

這個流程圖支持視覺功能類對視圖的完全控制,顯示列表也是影響人機交互功能的重要因素。

(2)顯示列表

顯示列表是為以後執行而存儲的壹組OpenGL命令。顯示列表被激活後,其存儲的命令以顯示列表中預先安排的順序執行。妳可以使用顯示列表來保存OpenGL函數供以後執行,這樣可以大大提高顯示速度。

該模型中建立的顯示列表滿足以下要求:①可以支持在地質模型中不創建顯示列表的情況下,新建任意子樹的顯示列表;(2)可以支持在顯示列表已經創建的前提下,更新任意子樹的顯示列表,只有發生變化的地質實體才能重新創建顯示列表,提高更新效率;③可以支持對顯示列表粒度的控制,即指定任意子樹根節點的顯示列表是否被子樹中其他節點的顯示列表嵌套;④可以支持每個樹節點繪制任何其他圖元,方便臨時繪制壹些圖元或者程序員調試程序;⑤可以支持所有圖元完全不透明,所有圖元完全半透明,或者不透明和半透明圖元同時存在。⑥可支持多視圖應用。

因為OpenGL顯示列表生成支持多個顯示列表不相關或相關。在相關情況下,需要生成子顯示列表,然後從已經生成的子顯示列表生成新的合並顯示列表。由於該條件的限制,模型采用深度優先的後序遍歷算法遍歷地質體模型,從葉節點生成顯示列表,按照先生成子樹顯示列表再生成根節點顯示列表的規則建立和更新顯示列表。

算法:基於多樹數據結構的顯示列表更新算法。

主流程:以當前節點為根,生成子樹的顯示列表。

(1)從根節點開始,以深度優先的順序遍歷多分支樹的每個子樹;

(2)如果當前節點有子樹,調用“主進程”生成以當前節點為根節點的子樹顯示列表;

(3)如果當前節點沒有子樹,調用“子流程1”定義當前節點的顯示列表;

(4)結束遍歷並返回。

子流程1:定義當前節點的顯示列表。

(5)判斷當前節點是否需要更新顯示列表,如果不需要,則返回;

(6)定義當前節點的顯示列表;

①如果以當前節點為根節點的子樹不使用顯示列表,則繪制當前節點所在的子樹。

②否則,調用當前節點所有子節點的顯示列表。

(7)繪制當前節點指定的任意圖形元素;

(8)設置當前節點顯示列表的更新標誌,完成更新。

因為顯示列表是嵌套的,OpenGL優化了嵌套的顯示列表,所以效率比沒有嵌套生成的顯示列表要好,比沒有嵌套生成的顯示列表好很多。

(3)展示* * *享受機制

顯示* * *共享機制可以節省大量內存,提高繪圖效率。該模型采用兩種方案有效地提高了顯示屬性的可重用性,從而節省了寶貴的內存資源,減小了存儲文件的大小,提高了顯示速度。

1.集合本原和本原集合

“圖元”是指可以被繪制的對象。在壹些圖形平臺中,每個圖形元素都有自己的顯示屬性,如顏色、材質等。視圖刷新時,系統繪制這個圖元時,會先將其當前的繪制屬性設置為這個圖元的顯示屬性,然後再繪制這個圖元。

但是,對於壹個集合,比如壹個具有1000個離散點的離散點集合,它們的顯示屬性往往是相同的。此時,如果每個圖元都持有自己的顯示屬性,那麽在繪制這個集合時,就需要反復將自己的繪制屬性設置為同壹個顯示屬性,這就大大降低了繪制的效率。更糟糕的是,內存中會有1000個重復的顯示屬性,以後會保存到文件中。在實際應用中,壹個點集有1000個點是很常見的,系統中可能同時有十幾個這樣的點集,也就是有上萬個重復數據。

出現上述問題的原因是我們認為所有的集合對於每個圖元都是不同的顯示屬性。因此,論文將集合分為兩類,並提出了壹個新的概念:“圖元集合”是指集合中的每個圖元需要有不同的顯示屬性,例如,圖層集合中的每個圖層用不同的顏色和材質表示。“集合圖元”是指集合中的所有圖元共享同壹個顯示屬性,它們形成壹個整體,比如壹組離散的點。

對於圖元的集合,我們按照原來的方式繪制;但是對於set原語,我們是從數學集合類型和壹個原語類型派生出來的,只存儲壹個顯示屬性,減少了內存占用。繪制時,在進行任何修改操作之前,都會保存原始的繪制屬性,所以在繪制集合的所有成員之前,只需要設置壹次顯示屬性,提高了繪制該集合的速度和顯示效率。

2.顯示* * *屬性的共享對象管理器。

僅僅區分集合原語和集合原語是不夠的,因為它們只限於屬於同壹個集合的所有成員才能享受顯示屬性。其實還有不屬於同壹個集合的圖元之間* * *共享顯示屬性的問題。比如壹個地層是花崗巖,那麽這個地層上所有井點和離散點的屬性也是花崗巖。

在實際應用中,壹個通用規模的應用可能會讓整個模型中存在上千個圖元,但材質、紋理、漸變等不會超過十種。,所以會有很多重復的數據。

為了進壹步提高顯示屬性的可重用性,本文引入了顯示對象管理器。它分為材質對象管理器、紋理對象管理器和漸變對象管理器。每個管理器都是* * *顯示屬性的共享數據集。這樣,系統中只保留了同壹顯示屬性的壹個副本,當所有圖形元素引用這些顯示數據時,就可以對其進行搜索。

比如江蘇油田利津工區有五個地層,* *有100多口井。每口井穿過五個地層。用戶需要為每口井穿過地層的井段粘貼地層紋理。每個紋理都是1M的位圖文件,五個地層中有兩個紋理相同。最壞的情況下,需要5×100×1M的空間來存儲紋理信息,即500M。通過新的設計,紋理信息的存儲容量可以減少到4×1M,即4M。

(D)繪制圖形的能力

1.基本圖元的逼真顯示

有些圖形平臺只畫“普通像素點”和“普通像素線”級別的圖元。對於逼真的顯示效果,只有壹種圖形:三角形。由於新的要求,該模型可以生成逼真的三維點,如球體、圓柱和鉆石。圓柱形、圓錐形、箭頭形和其他逼真的顯示多段線。

2.材料

在這個模型中,每個圖元都有自己獨立的材質,可以來自於素材庫,即材質對象管理器,也可以來自於這個圖元唯壹的材質對象。同時,本文還保留了開發者和用戶使用顏色材質的能力,即當圖元沒有指定任何實物時,根據其顏色臨時創建壹個實物,並在繪制後立即銷毀。

半透明

該模型增加了系統繪制半透明圖元的能力,即支持RGBA的四種顏色分量,如圖4-91所示。

圖4-91半透明截面采集效果

4.字體

在壹些原始圖形平臺中,當用戶旋轉時,3D字體會跟隨模型。該模型可以實現用戶旋轉時的相對眼睛靜止或相對模型靜止。

(5)查看功能

“可視化函數類”是指只修改OpenGL可視化變換矩陣而不修改地質模型信息的函數類,包括平移、旋轉、縮放三個函數。

在壹些圖形平臺的視覺函數類中,旋轉和縮放的中心點被設置為客戶端視口的幾何中心,用戶不能修改其位置。這有兩個缺點:①當用戶和程序員旋轉觀察壹個不是中心點的位置時,要進行多次操作,尤其是這個點在視口邊緣的時候;(2)用戶為完成此功能要多次點擊菜單或工具欄,進行功能切換。這給用戶造成了不便,也大大降低了程序員調試程序和觀察程序執行結果的效率。

在圖形平臺中,三個功能合並為壹個功能,設置壹個菜單項和工具欄;支持用戶指定視口中的任意像素作為旋轉和縮放的中心進行旋轉和縮放。旋轉和縮放前後,保證地質體模型像素的位置不變,即屏幕坐標系中的坐標不變。同時也為鼠標在屏幕上拾取壹個地質物體提供了可行的手段。

(6)三維空間矢量點編輯

修改地質體信息是地質體的重要功能之壹。在課題組的地質體模型的數據結構中,輸入可以是點集和折線集,但折線集也表現為有序點集。所以點的編輯修改是課題組所有編輯修改的基礎。

該模型還提出了“三維空間向量點”的新概念,不再將圖形平臺下的三維點視為三維標量點,而是在原有的“位置坐標”之外,賦予每個點壹個“方向向量”。這樣,在圖形平臺下,就可以實現“三維空間矢量點編輯”。提出這個概念後,出現了很多新的應用,比如光源矢量的編輯,單邊截面矢量的編輯等等。