OpenGL(Open Graphics Libaray)是SGI公司為其圖形工作站開發的圖形開發系統,可以獨立於窗口操作和硬件環境。其目的是將用戶從特定的硬件和操作系統中解放出來。有了這個系統,妳不需要了解這些系統的結構和指令系統,但妳可以用指定的格式編寫應用程序,並在任何支持該語言的硬件平臺上執行。由於OpenGL的高度可重用性,數十家大公司已經接受OpenGL作為標準的軟件接口。目前加入OpenGL ARB(OpenGL架構評審委員會)的成員有SGI、HP、微軟、Intel、IBM、SUN、DEC、AT & amp;t公司的Unix軟件實驗室等。在該組織的努力下,OpenGL已成為高性能圖形和交互式視覺處理的工業標準,可應用於Windows95/98、Windows NT、Windows 2K、Macos、Beos、OS/2和Unix。OpenGL的本質是作為圖形硬件的軟件接口,是壹組立體的API函數。
1的主要功能。OpenGL
(1)建模。不僅有簡單的點、線、面,還有對三維物體(球、圓錐體等)的復雜繪圖功能。)和復雜的曲線曲面(貝塞爾、Nurbs等。).
(2)轉型。主要包括基本變換(平移、旋轉等。)和投影變換(平行和透視投影等。).
(3)顏色模式設置。RGBA模式,ColorIndex顏色指數。
(4)燈光和材質設置。OpenGL光包括輻射光、環境光、漫反射光和鏡面光;材質用光的反射率來表示。場景中的物體最終反射到人眼的顏色是由光線的RGB分量和材質的RGB分量疊加而成的。
(5)紋理映射。主要表現物體表面的細節。
(6)位圖顯示和圖像增強。除了基本的復制和圖像像素讀寫,image功能還提供了混合、抗鋸齒和霧化等特殊的圖像處理效果。
(7)雙緩沖動畫。雙緩沖是指前臺緩沖和後臺緩沖。背景計算場景並生成圖片,前景在背景顯示計算出的圖片。
(8)交互技術。它主要提供了三種工作模式:繪制模式、選擇模式和反饋模式。繪制模式完成場景的繪制,借助物體的幾何參數和運動控制參數、場景的觀察參數、光照參數和材質參數、紋理參數、OpenGL函數的許多常量控制參數、時間參數和窗口對話框、菜單以及外部設備,可以形成實時交互的程序系統。在選擇模式下,您可以命名對象,選擇命名對象並控制命名對象的繪制。反饋模式為程序設計提供程序運行的信息,也可以反饋給用戶,告訴用戶程序的運行狀態,監控程序的運行過程。
(9)其他。使用OpenGL還可以實現深度提示和運動模糊等特殊效果。
2.2的基本原則。OpenGL
OpenGL是硬件生成器的軟件接口。它的主要目的是將2D和3D對象繪制到壹個幀緩沖區中,該緩沖區包括數百個圖形函數。開發者主要利用這些功能建立3D模型,進行3D實時交互。
(1)基本操作和指令。OpenGL可以從多種可選模式中繪制圖元,壹種模式的設置壹般不會影響其他模式的設置。無論黑墨水是如何出現的,指令總是按順序處理的,也就是說,壹個圖元必須繪制完整,之後的圖元才能影響幀存儲。
(2)圖形控制。OpenGL提供了變換矩陣、光照、反走樣方法、像素操作等參數來控制二維和三維圖形的繪制。它不提供描述或構建復雜幾何對象的方法。OpenGL提供了如何繪制復雜對象的機制,而不是描述復雜對象本身的綜合工具。也就是說,OpenGL是程序性的,而不是描述性的。
(3)執行方式。OpenGL命令的解釋模式是客戶機/服務器模式,即命令由客戶機發出,由OpenGL服務器(解釋器)處理,可以運行在同壹臺或不同的計算機上。基於此,OpenGL是網絡透明的。
地下水三維可視化系統的開發與應用
3.3的命令語法和狀態。OpenGL
基於OpenGL標準開發的微機應用程序必須在32位Windows平臺下,如Windows98/NT環境下,運行需要的動態鏈接庫有OpenGL32.DLL和Glu32.DLL。OpenGL包含100多個庫函數,按照壹定的格式命名。
(1)有115個核心函數,每個函數都以gl開頭。這些功能是最基本的,可以在任何工作平臺上運行。這些功能可以創建二維和三維幾何體,設置視點,建立視覺體,設置顏色和材質,創建燈光,執行紋理映射,抗鋸齒,處理融合,霧場景等。它們可以接受不同的參數,因此可以派生出300多個函數。
(2)有43個2)以glu開頭的OpenGL實用庫函數。這些函數基於OpenGL核心函數,主要是提供輔助函數的支持,執行核心OpenGL函數的交互,所以是比核心函數更高的函數,更通用。它可以運行在任何OpenGL平臺上。
(3)輔助庫函數,***31。從aux開始,它們是壹類特殊的OpenGL函數,用來幫助初學者盡快進入OpenGL編程,做簡單的練習。因此,它不能在所有平臺上運行。但是Windows98/NT支持它們。
(4)Windows特有的庫函數,從wgl開始。它主要與OpenGL和Windows窗口系統連接,可以用來管理著色描述表和顯示列表,擴展功能,管理字體位圖等。
(5)Win32 API函數,***6,用於處理像素格式和緩沖。
(6)OpenGL結構,***4。
4.OpenGL圖形操作步驟
步驟1:設置像素格式:主要包括建立OpenGL繪制風格、顏色模式、顏色位數、深度位數等。
步驟2,建立模型:建立三維模型;
第三步:舞臺布景:如何將場景放置在三維空間中合適的位置,並設置三維透視視覺體來觀察場景;
第四步:效果處理:設置物體的材質(顏色、光學性能和紋理貼圖等。)並增加光照和光照條件;
第五步:柵格化:將場景及其顏色信息轉化為可以在計算機上顯示的像素信息。
(2)虛擬現實建模語言
1介紹。虛擬現實建模語言
VRML是英文虛擬現實建模語言的縮寫。它的原名是虛擬現實化妝語言。這個名字是由Tim Berners Lee和Dave Raggett在第壹屆WWW(1994,日內瓦)上組織的壹個名為Bird-of-Feather(BOF)的小組提出的。後來化妝改成了造型。VRML和HTML緊密相連,是HTML在3D領域的模擬和延伸。因為VRML在互聯網上有很好的仿真性和交互性,所以顯示出了強大的生命力。
VRML是壹種3D交換格式,它定義了當今3D應用中最常見的概念,如變換級別、光源、視點、幾何、動畫、霧、材質屬性和紋理映射。VRML的基本目標是確保它能夠成為壹種有效的3D文件交換格式。
VRML是HTML的3D模型。它為萬維網帶來了交互式3D能力,即VRML是壹種跨平臺的語言,可以發布3D網頁。事實上,3D提供了壹種更自然的體驗方式,如遊戲、工程和科學可視化、教育和建築。對於像這樣的典型項目,僅僅依靠基於網頁的文本和圖像是不夠的,而是要增強交互性、動態效果的連續性和用戶參與探索的能力,這是VRML的目標。
VRML提供的技術可以將3D、2D、文本和多媒體集成為壹個統壹的整體。當這些媒體類型與腳本語言和互聯網的功能相結合時,就有可能產生壹種全新的交互式應用。VRML不僅支持經典的二維桌面模型,還將其擴展到更廣闊的時空背景。
VRML是網絡空間的基礎。網絡空間的概念是由科幻作家威廉·吉布森提出的。雖然VRML沒有定義真實用戶模擬所必需的網絡和數據庫協議,但是我們應該看到VRML的快速發展。作為壹個標準,它必須是簡單的和可實現的,在這個前提下,它必須鼓勵前沿的實驗和擴展。
2.2.VRML的基本工作原理和特點。
(1)用文本信息描述3D場景。在互聯網上傳輸,在本地機器上通過VRML瀏覽器解釋生成3D場景。解釋產生的標準規範是VRML規範。正是這種基於VRML的工作機制,使得在網絡應用中快速發展成為可能。壹開始,VRML的設計者考慮到文本描述信息在網絡上的傳輸速度比圖形文件快,所以他們避免直接在網絡上傳輸圖形文件,而是傳輸圖形文件的文本描述信息,將復雜的處理任務交給本地計算機,從而減輕網絡的負荷。
(2)統壹與分離相結合。VRML的訪問方式是基於C/S模式,服務器提供VRML文件,客戶端通過網絡下載自己想要訪問的文件,在本地平臺上通過瀏覽器訪問文件描述的VR世界,即VRML文件包含了VR世界的邏輯結構信息,瀏覽器根據這些信息實現了很多VR功能。這種由服務器提供統壹描述信息,客戶端建立自己的VR世界的訪問模式,被稱為統分結合模式,這也是VRML的基本概念。由於瀏覽器由本地平臺提供,實現了VR的平臺無關性。
(3)基於ASCII碼的低帶寬可行性。VRML和HTML壹樣,使用ASCII文本格式描述世界和鏈接,保證了在各種平臺上的通用性,減少了數據量,因此在低帶寬網絡上也可以實現。
(4)實時三維渲染引擎。傳統VR中使用的實時3D著色引擎在VRML中得到更好的體現。這個特性把VR建模和實時訪問更清晰的分開了,這也是VR和3D建模、動畫的區別。後者是預著色的,所以不能提供交互性。VRML提供6+1自由度,即三個方向的移動和旋轉,與其他3D空間錨定。
(5)擴展性。作為壹個標準,VRML不能滿足所有應用的需求。有些應用希望交互性更強,有些希望畫質更高,有些希望VR世界更復雜。這些需求往往同時受到彼此和用戶平臺硬件性能的制約,所以VRML是可擴展的,即可以根據需要定義自己的對象及其屬性,並通過Java語言等手段讓瀏覽器解釋這類對象及其行為。
(3) X3D
X3D (Extensible 3D-Extensible 3D)是壹個軟件標準,它定義了如何在多媒體中集成基於網絡通信的交互式3D內容。X3D可以用於不同的硬件設備和不同的應用領域。例如,工程設計、科學可視化、多媒體再現、娛樂、教育、網頁以及享受虛擬世界。X3D還致力於建立3D圖形和多媒體之間的統壹交換格式。X3D是對VRML的繼承。VRML(虛擬現實建模語言)是網絡三維圖形的原始ISO標準(ISO/IEC 14772)。X3D與VRML相比有所改進,提供了以下新特性:更高級的應用程序接口、新增加的數據編碼格式、嚴格的壹致性、組件結構(用於允許模塊化以支持標準的各個部分)。
1.X3D設計目標
X3D確立了以下設計目標:
(1)數據編碼和運行時結構分離;
(2)支持大量數據編碼格式,包括XML(可擴展標記語言);
(3)添加新的繪圖對象、行為對象和交互對象;
(4)為3D場景提供可選的應用程序接口(API );
(5)定義規格“簡檔”的子集以滿足不同的市場需求;
(6) X3D規範可以在不同級別的服務中實現(1 evels);
(7)盡可能在完善的規範中加入行為的定義或描述。
2.X3D特征
為了滿足工程設計、科學可視化、多媒體再現、娛樂、教育、網頁以及享受虛擬世界的需求,X3D增加了以下新功能:
(1)3D圖形:多邊形幾何、參數化幾何、變換層次、光照、材質、多通道/多進程紋理貼圖;
(2)2D圖形:在三維變換層次中顯示文本、2D矢量和平面圖形;
(3)動畫:定時器和插補器驅動的連續動畫;人性化的動畫和變形;
(4)空間音視頻:在場景幾何上映射音視頻源;
(5)用戶交互:基於鼠標的選擇和拖動;鍵盤輸入;
(6)導航:攝像頭;用戶在3D場景中的運動;碰撞、接近和能見度探測;
(7)自定義對象:通過創建自定義數據類型,可以擴展瀏覽器的功能;
(8)腳本:通過程序或腳本語言,可以動態改變場景;
(9)網絡:單個X3D場景可以由網絡上的資源組成;可以通過超鏈接對象連接到網絡上的其他場景或其他資源;
(10)物理仿真:人性化動畫;地理數據集;分布交互仿真的協議集成。
Java 3D
Java 3D以自己定義的場景圖和觀察模式構建3D的上層結構,實現3D技術在Java平臺上的使用。Java 3D API是Sun為3D顯示定義的接口。3D技術是底層顯示技術,Java 3D提供基於Java的上層接口。Java 3D在Java接口中包裝了OpenGL和DirectX。這種全新的設計使3D技術不再繁瑣,可以添加到J2SE和J2EE的整個建築中。這些特點保證了Java 3D技術強大的擴展性。Java 3D基於Java2(Java1.2),Java語言的簡潔使得Java 3D的普及成為可能。Java 3D是在OpenGL的基礎上開發的,可以說是Java語言在三維圖形領域的延伸。其本質是壹套API,即應用程序接口。利用Java 3D提供的API,可以編寫壹些3D動畫、遠程3D教學軟件、3D輔助設計分析仿真軟件、3D遊戲等。它實現了以下三維功能:
(1)生成簡單或復雜的形狀(現有的3D形狀也可以調用);
(2)使形狀具有色彩、透明度和質感;
(3)在三維環境中生成和移動光;
(4)處理和判斷行為(鍵盤、鼠標、計時等)的能力。);
(5)生成霧、背景和聲音;
(6)變形、移動並生成三維動畫;
(7)為VR(虛擬現實)等各種領域編寫非常復雜的應用程序。
1的數據結構。Java 3D
Java 3D的數據結構和OpenGL壹樣,采用場景圖的數據結構,但是Java 3D是基於Java語言的特點。Java 3D的場景圖是DAG(有向無環圖),其特點是方向不對稱。Java 3D的場景圖直接從Java 3D的運行環境轉換成具有三維顯示效果的顯存數據,從而在計算機上顯示三維效果,並在顯存中不斷接收Java 3D的最新運行結果,從而生成三維動畫。
2.Java 3D中的類(API)
Java 3D是在OpenGL的3D圖形庫和VRML的基礎上開發的API,幾乎包含了編寫Java交互式3D應用所需的所有最基本的類(類方法)和接口。主要存儲在包Javax.media.j3d中,這些都是Java 3D的核心類。此外,還有壹個應用類型包(Utility package)com . sun . j3d . utils(必不可少,主要是大大提高編程效率)。除了核心類和實用程序包之外,還有:
(1)Java.awt(主要定義壹個窗口進行顯示);
(2)Javax.vecmath(主要處理定義的向量計算使用的類,以及以後的核心類);
(3)3)Java 3D的類根據功能可以分為Node和NodeComponent,其中Node又分為Group和Leaf兩個子類。
(5) IDL
1簡介。國際日期變更線
IDL(Interactive Data Language)是美國RSI公司的產品,集可視化、交互分析和大型商業開發於壹體,為用戶提供了壹個完善、靈活、有效的開發環境。IDL的主要功能包括:
(1)高級圖像處理、交互式2D和3D圖形技術、面向對象編程模式、OpenGL圖形加速、跨平臺圖形用戶界面工具包、兼容ODBC的數據庫連接和各種程序連接工具。
(2)IDL完全面向矩陣,因此具有處理大規模數據的能力。IDL可以讀取或輸出格式化或未格式化的數據類型,支持通用文本和圖像數據,支持美國國家航空航天局、TPT、NOAA等機構廣泛使用的HDF、CDF、netCDF等科學數據格式,以及醫學掃描設備的標準格式DICOM格式。IDL還支持字符、字節、16位整數、長整數、浮點、雙精度、復數等多種數據類型。能夠處理大於2Gb的數據文件。IDL采用OpenGL技術,支持OpenGL軟件或硬件加速,可以加速交互式2D和3D數據分析、圖像處理和可視化。可以實現表面的旋轉和飛行;用多個光源遮光或照明;能觀察體積內部的復雜細節;壹旦創建了壹個對象,就可以從不同的角度對其進行可視化分析。
(3)IDL有圖像處理軟件包,如感興趣區域(ROI)分析和壹套圖像分析工具,地圖投影和變換軟件包,適用於GIS的開發。
(4)IDL擁有數學分析和統計軟件包,提供科學的計算模型。它可用於曲線和曲面擬合分析、多維網格劃分和插值、線性和非線性系統分析等。
(5) IDL DataMiner可以快速訪問、查詢和管理ODBC兼容的數據庫,支持Oracle、Informix、Sybase、MS SQL等數據庫。您可以創建、刪除、查詢表並執行任意SQL命令。
(6)IDL可以通過ActiveX控件將IDL應用程序開發集成到COM兼容的環境中。使用Vi-sual Basic,Visual C++訪問IDL,也可以從IDL調用C,Fortran程序或者通過動態鏈接庫從其他語言調用IDL。
(7)使用IDL GUIBuilder,可以開發跨平臺的用戶圖形界面(GUI),用戶可以通過拖拽GUI靈活快速地創建應用程序的界面。
(8)IDL為用戶提供了壹些可視化的數據分析解決方案。早在1982年,美國國家航空航天局的火星飛越飛行器的開發就使用了IDL軟件。
2.編程模式為2。國際日期變更線
IDL有兩種編程方法。壹種是使用IDL平臺的GUIBuilder進行編程,特點是所見即所得,使用IDL本身的控件進行編程和界面設置,但是不夠靈活。另壹種是IDL平臺集成開發環境的組件編程技術,其特點是靈活性強,功能強大,可以根據程序員的意願進行設置。此外,IDL中還有批處理文件語句,即在命令行中直接輸入命令語句來讀取和輸出數據,以及設置和處理屬性。另外,IDL提供了IDLDRAW小部件控件,可以基於COM技術開發。
3.3的應用領域。國際日期變更線
由於其強大的功能和獨特的特點,IDL語言可以應用於地球科學(包括氣象、水文、海洋、土壤、地質、地下水等)的許多領域。)、醫學影像、圖像處理、GIS系統、軟件開發、大學教學、實驗室、測試技術、天文學、航空航天、信號處理、國防工程、數理統計與分析、環境工程等。IDL語言可以被廣泛使用。目前使用IDL語言,已經開發出ENVI、IMAGIS、RiverTools、medicine等成熟產品。還有很多具體的應用實例,如澳大利亞2000年悉尼奧運會的綜合預報系統,美國國家環境衛星數據與信息服務中心的厄爾尼諾現象分析。
北京勘測設計研究院利用IDL語言開發了真三維地質分析系統AutoDig,可以直接實現簡單地質數據或其他層次數據的科學完整三維建模。同時還提供了真三維顯示功能,不僅可以任意旋轉、放大、縮小三維體,還可以實現交互式真三維切割功能。
(6)總結
三維圖形技術是隨著計算機軟硬件技術的發展而發展變化的,其鼻祖是SGI公司推出的OpenGL三維圖形庫。OpenGL是業界最流行、支持最廣泛的底層3D技術,幾乎所有的顯卡廠商都在底層支持和優化了OpenGL。OpenGL還定義了壹系列用於編程3D應用的接口,但這些接口都是用C(C++)語言實現的,非常復雜。掌握OpenGL的編程技術需要花費大量的時間和精力。
Java 3D是在OpenGL的基礎上開發的,可以說是Java語言在三維圖形領域的延伸。其本質是壹套API,即應用程序接口。
Direct3D是微軟推出的三維圖形編程API,主要用於三維遊戲的編程。很多優秀的3D遊戲都是通過這個接口實現的。和OpenGL壹樣,Direct3D的實現主要使用C++語言。
VRML2.0(VRML97)從1997到12正式成為國際標準後,在互聯網上得到廣泛應用。它是壹種比BASIC和JAVASCRIPT更簡單的語言。現在已經發展到X3D了。腳本化的句子可以用來寫三維漫畫、三維遊戲和計算機輔助三維教學。它最大的優點是可以嵌入網頁顯示。
美國RSI公司最新開發的可視化軟件IDL(Interactive Data Language)是數據分析、可視化和跨平臺應用開發的良好選擇。它集可視化、交互分析和大型商業開發於壹體,為用戶提供了壹個完善、靈活、有效的開發環境。3D技術對比見表1-2。
表1-2 3D技術對比