基于OpenGL和面向對象技術的3D交互系統的研究_第1頁
基于OpenGL和面向對象技術的3D交互系統的研究_第2頁
基于OpenGL和面向對象技術的3D交互系統的研究_第3頁
基于OpenGL和面向對象技術的3D交互系統的研究_第4頁
基于OpenGL和面向對象技術的3D交互系統的研究_第5頁
已閱讀5頁,還剩1頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、opengl (open graphics library)定義了一個跨編程語言、跨平臺的編程接口 的規格,是個專業的圖形程序接口,是一個功能強大,調用方便的底層圖形庫。 它是行業領域中最為廣泛接納的2d/3d圖形api,其門誕生至今已催生了各種 計算機平臺及設備上的數千優秀應用程序。它是獨立于視窗操作系統或其它操作 系統的,亦是網絡透明的。在包含cad、內容創作、能源、娛樂、游戲開發、制 造業、制藥業及虛擬現實等行業領域中,opengl幫助程序員實現在pc、工作站、 超級計算機等硬件設備上的高性能、極貝沖擊力的高視覺表現力圖形處理軟件的 開發。一、圖形標準opengl及其高級開發工具圖形標準

2、在圖形領域有著重要的地位,是很多大公司與機構爭奪的法寶。歷史上 曾出現的圖形標準有 core、gks、phigs、pex、gl、dore、renderman> hoops、 opengl等等。經過了競爭與淘汰,r nu opengl占據了領導地位,成為國際上公 認的3d圖形工業標準。sgi公司是贏家,它于1990年著手研制openglo 1992 年opengl體系結構委員會制定了 10規范,1995年推出1. 1規范。1998年opengl1. 2在sgi平臺實現oopengl及其應用程序已在unix與pc平臺得到廣泛的應用。 圖形標準存在顯而易見的優點:它不僅加速了 31)應用程序的

3、開發,而且使應用 程序的可移植性更好。但是標準亦存在著缺點,andries van dam指fl;:"標準 是很多人經過多年的努力共同創建的,它的規范與實現總是落后于最新技術。經 驗表明,絕大多數領域最先進的設計都是極小數精英小組創作的,但是標準卻是 一個龐大委員會的技術、政治折衷的產物” dam 1998 oopengl的發展已近10年,從1. 0版木到1. 2版木在功能上并無顯著的變化。在 開發交互式3d圖形應用程序方面,opengl存在明顯的不足:(1)opengl與窗口系統無關,不提供任何交互手段,必須由程序員自己編寫所 有的交互功能。(2)opengl應用程序性能的優化是程

4、序員面臨的一大困難。opengl的api (編 程接口)非常靈活,不僅針對碩件與軟件的優化方法多而相異,即便對于同一數 據結構或算法,如果代碼的組織不同亦會產生顯著的性能茅異。(3)opcngl的api是低級的c函數,不提供可復用的對象庫或者應用程序框架, 開發效率不高。以上幾點表明,除非開發人員既精通圖形系統又精通窗口系統的編程,否則難以 開發出較好的基于opengl的交互式3d應用程序。由于標準不能被輕易創建與修 改,它往往跟不上技術的發展與市場的變化。而3d圖形是迅猛發展的領域,為 了克服這個困難,人們往往在圖形標準z上再建立更高級的開發工具(3dtoolkit 或 3d enginc)

5、o 基于opengl的著名的開發工具有:1、 open invcntoropen inventor是從sgi的iris inventor發展而來,適合于開發面向對象的交 互式3d圖形應用程序。其核心是圍繞scene graph的龐人的c+類庫,它提供 場景編輯、交互式繪制、文件輸入輸出等功能以及相應的圖形用戶界面。open inventor是通用的商業化軟件,tl open inventor體系結構委員會制定標準, 可以在多個平臺運行。pc平臺的open inventor由tgs公司開發與銷售。 wcrncckc 1994 wang 1997open inventor的基木特征是“大而全”,如

6、果你只要開發很小的3d應用程序, 使用open inventor就象讓相撲運動員去干針線活那樣笨。2> iris performeriris performer是高性能實時3d圖形開發系統,由sgi公司研制,專用于sgi 的高檔圖形工作站。iris performer提供高層的場景結構,支持多cpu、場景 多層次細節(lod)管理。不提供用于3d交互的圖形用戶界面。rohlf 1994 iris performer我只聽說過但沒有親手用過。總統套房好是好,可老百姓住不 起。3、opengl optimcizcr/cosmo3dopengl optimcizer/cosmo3d是面向大型c

7、ad/cae與可視化應用的開發系 統,由sgi公司研制。它可以將大型復雜的造型簡化,并快速地繪制。但由于該 產品推出的時間不長,短期內難以被廣泛采納。peiul 1997所有的新產品都說口己好并且對用戶“必不可少”,但用戶總免不了疑神疑 鬼,還是等它成熟了再用。4、glutglut的核心是個小型的c函數庫,這些函數可以創建opengl窗口、彈出菜單、 響應鼠標事件,并可以繪制簡單的常見幾何形體。gixt可在x-window, windows nt, os/2等系統卜運行,特別適合于開發不需要復雜界面的opengl示例程序。glut的源程序是公開的,并且提供了百余個出色的示例程序,可幫助用戶進一

8、 步了解 openglo paul 1997 kilgeird 1996由于open inventor在unix與pc平臺得到了廣泛的應用,被譽為是交互式3d 開發工具的“事實標準”。但顯然沒有一個3d開發工貝能滿足所有的應用需求, 3d的廣泛應用需要更多的開發工具支持。冃前在internet上可以搜索到的各種 用途的31) engine有500多個engines, open inventor可以更精確地歸類于uobject oricnted drawing and documcnt editing system" kochhar 1996。二、基于opengl的交互式三維圖形軟件開

9、發工具1、intra3d 2.0開發背景隨著計算機圖形技術與網絡技術的迅猛發展,兩者的結合勢在必行。在商業、科 研、教育、娛樂等領域,用于分布式虛擬壞境和支持協同工作的圖形系統已成為 研究與應用的熱點著名的dves系統有dive、dvs、mr、repo-3d等。但是這些 dves系統缺乏3d開發工具的交互式圖形功能以及通用性,而通用的3d開發工 具如open inventor則又不支持分布式計算和協同工作。由于在窗口系統、圖形 支撐庫、編程語言等方面存在差異,上述dves系統和3d開發工具難以方便地結 合使用。為了緊跟發展潮流,intra3d 2. 0 款基于opengl的交互式三維圖形 軟件

10、開發工具應運而生。2、intra3d 2.0數據流可視化平臺intra3d 2.0多方面分析了 3d的需求及軟硬件條件研制完成了 主版權、運 行于pc平臺的“交互式協同式三維圖形軟件開發系統與數據流可視化平臺”如 圖1. 1所示,其中:(1) intra3d 2. 0是基于opengl的交互式三維圖形軟件開發工具,可用于快速 開發window 9x/nt下的交互式三維圖形應用軟件。(2) dvl 2. 0是基于opengl的數據可視化工貝庫,主耍用于繪制科學計算數據 和商業統計圖形。結合intra3d 2. 0和dvl 2. 0可以快速開發交互式數據可視化 應用軟件。(3) cnc 2.0是用

11、于協同工作的網絡通訊開發系統,其核心是支持“發布一訂 閱模式”和“數據流模式”的類庫。結合intra3d 2.0、dvl 2.0和cnc 2.0, 可以快速開發支持協同工作的交互式三維圖形與數據可視化應用軟件。(4) give+是“分布式數據流可視化平臺”。用戶從give+中選取模塊,以“搭 積木”的方式將齊個模塊用數據流連接起來,z后用戶就可以直觀地控制這些模 塊的運行。如果用戶在give+中找不到需要的模塊,可以使用intra3d2.0、dvl 2. 0和cnc 2. 0來開發該模塊,把開發完成的模塊添加到give+的模塊庫中即可。pc + windows 9x/nt圖1.1交互式協同式的

12、三維圖形軟件開發系統與數據流可視化平臺 3、intra3d 2. 0設計思想圖1.1的方案充分體現了 “大規模復用”和“分而治z”的軟件工程思想。如杲 按工作量劃分比例,那么intra3d 2.0約占40%, dvl 2.0約占10%, cnc 2.0 約占25%, give+約占25%o intra3d2.0是上述方案中最重要的軟件開發工具。 在設計intra3d 2. 0時,分析過百余個opcngl應用程序,借鑒了 open inventor 與 optimeizer/cosmo3d 的設計優點。以卜是 intra3d 2. 0 與 open inventor 的 主要不同點:(1) 體系

13、結構不同。open inventor是圍繞scene graph 發的,可稱大而全, 但其很多功能在圖1.1方案中不實用也不必需。int“3d 2. 0分四層設計,每層 少而精,擴展靈活,切合圖1. 1的方案。(2) intra3d 2. 0 提供 c+類庫與 com (component object model)庫,支持 visual c+、visual basic. delphi編程。這種多語言編程是現代pc應用開發 的一個特征。而open inventor是從sgi的iris inventor發展而來的,由于需 求背景不同,open inventor不具備intra3d 2.0這種特征

14、。(3) intra3d 2. 0是個免費軟件,所有源代碼向用戶開放。intra3d 2. 0的內核 用visual c+編寫,其c+類庫與com庫各有60余個模塊,共有7萬多行代碼。 由于intra3d 2.0是分層設計的,用戶可以方便地修改內核以適應不同的需求。 open inventor是商業軟件,不免費、不公開源代碼。4 intra3d 2. 0的主要模塊與功能4.1、基礎對象與函數層(1) 定義了用于對象引用計數的內存管理基類;(2) 矢量、矩陣與四元組運算,鼠標跟蹤球算法;(3) 點陣字體與三維矢量字體輸出,常用于數據可視化圖形的數據標注;(4) 圖像輸入輸出以及紋理映射,支持bm

15、p、gif、jpeg、sgi、tga等圖像格式;(5) 常用幾何圖元的繪制,如錐、柱、球、環等,并支持swept形體,螺旋體 的繪制;(6)提供450余種材質,在第四層中可以交互式編輯這些材質。4.2、圖形對象層圖形對象能將數據轉化為幾何模型并可以繪制出來。int“3d 2. 0版提供了三類 圖形對象:(1)常用幾何對象,如長方體、錐體、圓柱體、球體、圓環體、swept形體等;(2)多邊形模型對象,用丁-繪制autodesk公司3ds模型和wavefront公司 的obj模型;(3)商業統計圖形對象,如柱形圖、帶狀圖、條形圖、折線圖、面積圖、餅圖、 塔形圖、曲線圖、曲面圖、進程圖、股票圖等。圖

16、形對象的開發與應用問題密切相關,用戶可以使用繼承方法擴充新的圖形對 象,而不會影響到其它三層的構件。4.3、場景圖與節點層場景圖是有向無壞圖主要節點有:(1)sccncnodc是所有節點的基類。在sccncnodc中定義了局部坐標系以及相 應的圖形變換,這樣便于第四層以同樣的操作方式實現三維交互。(2)相機節點支持平行投影與透視投影,支持多個相機切換。(3)光源節點有三種:平行光源節點、點光源節點和錐光源節點。(4)形體節點(shapcnodc)用于引用圖形對象,有關圖形對象的三維交互均由 sheipenode 處理。4.4、繪制與交互層intra3d 2. 0的交互分兩類:一類是對形體、光源

17、和相機的宜接操作,另一類是 真實感屈性的編輯。intra3d的場景視窗構件封裝了交互式繪制的所有細節,如 消息處理、場景節點的遍歷繪制、多重采樣消鋸齒、鼠標交互等。為了便于編輯 真實感屬性,intra3d 2. 0定制了一些常用對話:矢量字體對話、顏色對話、材 質庫對話、材質對話與光源對話。5編譯壞境設置intra3d 2. 0 的 c+ 類庫與 com 庫均用 visual c+ 6. 0 開發。5. 1、制作c+類庫c+ 類庫的工程文件 intra3d. dsp 位于 intra3dsourceintra3d-dll 冃錄卜。為了正確編譯,應將visual c+ options菜單的dir

18、ectories屬性設置如下:(1 ) include 厲性添加 intra3dsourccintra3d-dll 與 intra3dsourceintrci3d-dll include;(2) lib 屬性添加 intra3dsourceintra3d-dllo在制作release版本時,在工程文件中添加intra3d. def文件。在制作debug 版本時,在工程文件中添加intra3d_d. def文件。最后應將編譯生成的.dll 與lib文件復制到intra3dlib目錄下。5.2、制作com庫intra3d. ocx 的工程文件 intra3d. dsp 位于 intra3dsourceintra3d-com 目錄卜。為了正確編譯,應將visual c+

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論