OpenInventor
OpenInventor
專業3D圖形開發工具包,由北京國遙萬維信息技術有限公司開發。
目錄
Open Inventor 7 by Mercury:
——專業3D圖形開發工具包-北京國遙萬維信息技術有限公司代理;Http://www.ncg.ac.cn
Mercury公司的Open Inventor 7軟體是一個面向對象的、跨平台的專業3D圖形化工具包,面向的對象包括工業強度的開發、交互和通過C++、.NET或Java構建的專業3D圖形化應用程序。易於使用的應用程序埠、可拓展的結構和功能強大的全組件式架構給開發人員提供了一個高級平台的快速原型設計、高端開發和先進的3D圖形應用程序。
Mercury公司的Open Inventor 7軟體提供了加強的開發效率、顯示質量、靈活性和可信度來快速開發您迫切需要的程序,這些程序要求穩定且不斷優化的技術來迎接3D可視化領域的最高挑戰。
“人類的3D工程”:
·高速發展高性能互動式的應用軟體
·支持C++, Java 與 .NET 介面(API)
·支持所有平台從筆記本到進入式可視化
·具有功能強大的全組件式構架的工具箱
·在條件苛求的軟體上依然具有良好的性能
·具有良好的可擴展性、兼容性和開放性
·專業的工具包、高附加值
·體數據可視化、科學數據可視化、高質量描繪顯示、虛擬現實
Open inventor 支持大量3D的特徵:
·高級多通道處理能力並支持多通道擴展
·體數據的互動式切割與漫遊
·大模型的可視化
·處理大數據集的能力
·實時性交互分析
面向工業強度的專業3D圖形開發工具包
·加快您的應用程序設計、開發和維護的周期
·通過先進的三維可視化和程序設計來提高您的顯示質量
·通過初級的摘要和基本的圖形技術來確保您的投資。
·提供先進的基於領先的開放標準的支持
應用領域:
主要特徵:
1. 面向對象的3D應用程序埠:
Mercury公司的Open Inventor 7提供了一個最廣泛的面向對象集(超過1300個易於使用的類),並集成了一個用戶友好的系統架構來快速開發。規範化的場景圖提供了現成的圖形化程序類型,其面向對象的設計鼓勵可拓展性和個性化功能來滿足具體的需求。Mercury公司的Open Inventor 7是應用最廣泛的面向對象的專業3D圖形開發工具包。
2. 優化的3D渲染:
3. 先進的基於OpenGL的著色器
OpenGL的陰影渲染技術可應用於Open Inventor的任何版本,通過特效來獲得更深入的三維視覺體驗。Mercury公司的Open Inventor 7嵌入了一個超過80個陰影渲染程序列表,完全支持ARB語言、NVIDIA-Cg 和 OpenGL 繪製語言,以此來獲得更先進的視覺效果,進一步提高終端用戶的三維可視化視覺體驗。
4. 先進的開發幫助:
IvTune®是一個交互的繪圖工具,當程序正在運行的時候對3D程序進行校正和調試。它允許開發人員互動式視圖和修改場景圖。
5. 全面的3D內核:
除了其完整的3D幾何內核之外,Open Inventor 7提供了強有力的先進的3D功能集支持,如NURBS曲面和碰撞檢測。完全支持NURBS曲線和任意的裁剪曲面,可實現快速、持續高效的NURBS鑲嵌。Open Inventor 7也提供了一個快速的物體間和攝影間、場景間的快速碰撞檢測應用,哪一個是可以,例如,在漫遊類型的應用程序中攝影穿透其他物體。這種優化的碰撞檢測應用,已被證明是有效的,甚至面對非常複雜的場景。
6. 大型模型的可視化
Open Inventor 7通過更少的三角形來構建新的幾何模型,並自動生成LOD(層次細節)和保存外表的簡化節點來提高顯示質量和使交互渲染成為可能。它可以將幾何模型轉換成更高效的三角形條塊和將對象重新排序來盡量減少狀態的變化。複雜場景的快速編輯也是支持的。
7. 遠程渲染、虛擬現實功能和多屏顯示
Open Inventor 7提供高端的浸入式組件來提供易於使用的且有力的解決方案來共同面對3D高級程序開發領域中棘手的問題。您可以和最尖端的技術與時並進,事半功倍,也包括需要額外的低端的應用程序埠的下一代硬體的優化的顯示效果。
8. 多線程技術
多線程技術相比採用多個處理器和利用單一的高端處理器都能增加整體的顯示效果。這種特性也適用於多種圖形通道,每個圖形通道都有自己的渲染線程。
9. GPU的廣泛應用
Open Inventor 7的可視化解決方案對程序員們提供了一個獨特的解決方案,這個方案能實現先進的三維可視化和強大的計算功能間的交互,這些計算一般是在一個工作站上進行的并行計算。
通過拓展模塊來定製功能:
Open Inventor 7軟體的集成包提供了一套完整的拓展模塊使得面向具體市場需求或特殊應用需要的功能定製更為容易。
通過打包的這些拓展模塊的創新的知識產權(IP)技術,Open Inventor 7可以讓您隨時獲得最新的可視化技術:面向體繪製的大型數據處理、通過渲染分佈和遠程模型的終端可伸縮性、先進的2D/3D科學數據可視化技術、現實的光線追蹤渲染和更多。
Open Inventor基本模塊:
基本模塊中除了提供一些基於open GL (open Graphics library)開發的所有圖形工具外,同時還提供多線程計算處理能力、立體像對瀏覽、遠程三維漫遊、NURBS工具、大場景投影支持、體數據內部損傷檢測、3D紋理疊加、支持HTML格式發布、支持VRML數據發布、海量數據漫遊等功能。
MeshViz™ XLM 拓展模塊:
MeshViz包括3DdataMaster和GraphMaster。
MeshViz Interface包括:Mesh Extraction和Data Mapping。
MeshViz™ 拓展模塊:
MeshViz™可用於所有類型的工程分析、可視化及通信應用,並允許開發人員快速整合先進的可視化功能。先進的數據提取和製圖技術使得MeshViz的應用程序埠能處理百萬計的二維或三維的元數據。
MeshViz™ Interface拓展模塊
MeshViz Interface是一個用來提取和可視化對象特徵的應用程序埠,在應用科學領域,可以提取和查看有限元分析(FEA)和計算機輔助工程(CAE)的網格特徵,提供了和3DDataMaster一樣的基本的網格特徵描述,同時消除了原有的應用程序埠的大部分應用限制,直接支持所有類型的網格(二維或三維的、笛卡爾網格、三角形網格、六面體網格、多面體網格、二次網格、結構型網格或索引類型的網格),並可以對任意的標量和矢量數據集進行顯示、分析(包括正在處理過程中的隱性數據)。
VolumeViz™ LDM 拓展模塊:
提供了一種從筆記本到先進的計算機集群的可升級的解決方案,VolumeViz™ LDM模塊為應用處理多達數百GB的數據集制定了一個新的里程碑。
VolumeViz™ LDM提供多個數據集的數據轉化和數據整合技術,也將渲染技術整合起來以獲得更快速和更高質量的可視化效果。採用最新的GPU著色器,信息採集和三維感知在切片上相比體數據可視化和凹凸映射都進一步改善。
ScaleViz™ 拓展模塊:
ScaleViz是一套處理渲染場景和圖像合成分佈的數據集的突破性技術,目的是在海量數據集上實現互動式加速處理以解決最具挑戰性的需求,提供優化的、分散式可視化方案,ScaleViz提供了以下的先進的解決方案:
平板顯示在提供最佳性能的同時提高了解析度
平板合成加速解決依賴解析度的顯示效果
深度合成加速解決依賴數據的顯示效果
遠程應用程序通過可視化伺服器來遠程可視化處理大量數據
ReservoirViz LDM拓展模塊:
ReservoirViz LDM是Open Inventor 7的一個新的拓展模塊,這個拓展模塊是一個重大的改進,因為它提供了一個用於管理和可視化石油天然氣領域的水庫資料模擬的整體解決方案。
通過創新的數據管理和先進的視覺重現,來可視化和管理探針大型資料庫一般超過數以億計的元數據。和本地切片進行實時交互。界定感興趣的目標區域。將多種性能融合在一起或通過運行您自己的基於CPU或GPGPU著色器的計算模塊衍生出新的著色功能。您甚至可以構建包含了獨立的時間屬性的4維智能數據及通過數以千計的時序步驟預取來進行交互。
DirectViz™拓展模塊:
DirectViz提供的功能已經超出了現有的圖形處理器和OpenGL的功能,包括造型和設計理念、虛擬原型和可視化模擬。
HardCopy拓展模塊:
HardCopy允許應用程序輸出幾個向量格式圖形:CGM 、HPGL、PostScript、 GDI/EMF。和一般的圖像不一樣,這些圖像格式提供高品質的圖像,並解決了獨立輸出,適合大幅面繪圖機,甚至對複雜場景的高性能顯示。
Data Converter拓展模塊:
Data Converter提供了集成的各種CAD/CAM浮點型文件格式轉換到Open Inventor 7的浮點型文件。這些拓展允許開發人員在現有應用程序的基礎之上添加先進的輸入功能。
支持下面幾個浮點型輸入數據:IGES 5.1, VDA-FS ,STL ASCII,DXF R14, Catia v5。
Specifications規格:
支持C++平台:
Windows XP/Vista 32 .NET 2003/.NET 2005 ·
Windows XP/Vista 64.NET 2005 ·
Linux 32/ EM64T/ AMD64™ (RH-WS4/5) ·
SGI Irix®/ Linux Itanium® 2 ·
Sun Solaris™ 9
支持的.NET平台
Windows XP/Vista 32 .NET 2005 ·
Windows XP/Vista 64.NET 2005 ·
支持的Java平台
Windows XP/Vista 32 ·
Linux 32/ EM64T/ AMD64™ (RH-WS4/5) ·
Sun Solaris 9 ·
其他平台:
Contact Usfor details.
Corporate Headquarters公司總部
199 Riverneck Road
Chelmsford, MA 01824-2820 USA
+1 (978) 967-1401 / +1 (978) 967-1401
Fax +1 (978) 256-3599
www.mc.com
各位用戶,大家好!下面是我轉載的一篇關於OIV的一些簡單的介紹,有興趣可以看一下:
Open Inventor(以下簡稱OIV)是SGI公司開發的基於OpenGL的面向對象三維圖形軟體開發包。使用OIV開發包,程序員可以快速、簡潔地開發出各種類型的互動式三維圖形軟體。OIV具有平台無關性,它可以在Microsoft Windows、Unix、Linux等多種操作系統中使用。OIV允許使用C、C++、Java、DotNet多種編程語言進行程序開發。經過多年的發展,OIV已經基本上成為面向對象的3D圖形開發“事實上”的工業標準。廣泛地應用於機械工程設計與模擬、醫學和科學圖像、地理科學、石油鑽探、虛擬現實、科學數據可視化等領域。
學習過OpenGL的人應該有一種感覺,就是OpenGL入門容易,提高很難。OpenGL提供的函數並不多,不過區區一百多個核心函數。OpenGL的編程思想比較簡單,就是一個有限狀態機的思想。因此學習OpenGL往往入門很快。但是在入門之後,要想進一步提高編程功力,很多人就會感覺無從下手。這種情況一部分歸咎於編寫三維圖形軟體需要了解的知識比較多,另一部分的原因恐怕就是OpenGL提供的功能過於基本和底層了。而且OpenGL使用的是“面向過程”的編程方法,對於我們目前廣泛使用的“面向對象”的編程思想沒有提供支持。當然這裡我們不是說OpenGL的功能不強大,看看無數多個使用OpenGL編寫的應用程序,我們不得不驚嘆OpenGL的表現能力。但關鍵是我們不能指望每個程序員都成為“約翰。卡馬克”(ID 公司的3D天才程序員,是Doom,Quake的主要設計師)。
正是看到了OpenGL在應用上的不便,SGI公司在OpenGL庫的基礎上開發了面向對象三維圖形軟體開發工具包——Open Inventor。OIV是面向對象的,因為它本身就是使用C++編寫的,它允許用戶從已存在的類中派生出自己的類,通過派生的方式可以很容易地擴展OIV庫。OIV支持“場景”,“觀察器”和“動作”等高級功能,用戶可以把3D物體保存在“場景”中,通過“觀察器”來顯示3D物體。利用“動作”可以對3D物體進行特殊的操作(例如,拾取操作,選中操作等)。正是因為有了這些高級功能,才使得普通程序員也能編寫出功能強大的三維互動式應用軟體。
OIV 是由一系列的對象模塊組成的,通過利用這些對象模塊,開發人員有可能以花費最小的編程代價,開發出能充分利用強大的圖形硬體特性的程序。OIV是一個建立在OpenGL基礎上的對象庫,開發人員可以任意使用、修改和擴展對象庫。Inventor 對象包括:資料庫圖元、形體、屬性、組、和引擎等對象;還有例如像手柄盒和軌跡球等操作器、材質編輯器、方向燈編輯器、examiner觀察器等組件。Inventor提供了一個完整且經濟高效的面向對象系統。
Open Inventor與OpenGL之間的差別
在OIV的主要參考書《 The Inventor Mentor 》中,有一段文字生動形象地介紹了OIV與OpenGL之間的差別。在書中,作者假設要建造一棟房子,她把使用磚頭、水泥、沙子來建造房屋的原始方式比作使用OpenGL來開發程序,而將利用預製水泥構件、成套室內設備來建造房屋比作使用OIV來開發程序。這種比喻形象地說出了OIV開發程序具有簡單、高效的特點。值得注意的一點是,OIV和OpenGL是相容的。在OIV中提供了多種方法允許直接調用OpenGL的命令,這使得OIV的功能變得更加強大。
可以再舉一個程序員比較熟悉的例子。我們知道,使用C++語言編寫Windows程序的時候,基本上可以有兩種方法:第一種方法是直接使用Windows API開發程序;第二種方法是使用Microsoft Visual C++中的MFC類庫開發。使用API開發程序就和使用OpenGL來開發3D應用程序一樣。而使用MFC就像是使用OIV。我們知道,如果使用API來開發程序的話,程序員需要做程序初始化,創建窗口,消息分發,程序框架等大量的代碼。這點和使用OpenGL來開發3D程序幾乎是一樣的,程序員必須對程序中的所有部分負責。而使用MFC開發程序就輕鬆很多了,因為MFC內部已經為程序提供了儘可能的方便,包括像初始化,創建窗口,消息分發,程序框架等等這些都已經是內建的了,程序員只需要實現自己的功能就可以了。同時MFC也允許用戶直接調用Windows API,並且MFC運行效率和Windows API的效率不相上下。
其實對我們程序員來說,再詳細的說明也比不上程序代碼來得直接。下面將使用OpenGL和OIV同時編寫一個顯示紅色立方體的簡單程序,通過這兩個例子的比較,就可以很比較容易地了解OIV與OpenGL之間的差別了。
使用OpenGL 顯示一個紅色立方體
#include "stdafx.h"
#include
GLfloat mat_diffuse[] = {1.0,0.0,0.0,0.0};
GLfloat mat_specular[] = {1.0,1.0,1.0,1.0};
GLfloat high_shininess[] = {100.0};
void myInit(void)
{
GLfloat light_position[] = {0.0,3.0,6.0,0.0};
glLightfv(GL_LIGHT2,GL_POSITION,light_position);//設置光源
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glEnable(GL_LIGHTING);
glEnable (GL_LIGHT0);
glShadeModel(GL_SMOOTH);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
//為光照模型指定材質參數
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
glMaterialfv(GL_FRONT,GL_SHININESS,high_shininess);
glColorMaterial(GL_FRONT,GL_AMBIENT);//使材質色跟蹤當前顏色
glEnable(GL_COLOR_MATERIAL);
glPushMatrix();
glrotatef(40,1.0,1.0,1.0);
glutSolidCube(2);
glPopMatrix();
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();
glFlush();
}
void myReshape(int w,int h)
{
glViewport(0,0,(GLsizei)w,(GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w <= h)
glOrtho(-5.5,5.5,-5.5*(GLfloat)h/(GLfloat)w,5.5*(GLfloat)h/(GLfloat)w,-5.5,5.5);
else
glOrtho(-5.5*(GLfloat)w/(GLfloat)h,5.5*(GLfloat)w/(GLfloat)h,-5.5,5.5,-5.5,5.5);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc,char ** argv)
{
//初始化
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400,400);
glutInitWindowPosition(100,100);
//創建窗口
glutCreateWindow("Cube");
//繪製
myInit();
glutReshapeFunc(myReshape);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
程序運行的結果:
注意,為了簡單起見,我們使用了OpenGL的glut庫。
在main函數中,首先做了初始化OpenGL的工作,然後又創建了一個窗口。在myInit函數中主要是設置光源,啟動深度檢測等工作。最主要的函數是display函數。在這個函數中,首先設置材質,然後在設置旋轉矩陣,最後顯示立方體。我們假設閱讀本文的讀者應該熟悉OpenGL的開發,因此我們將不再詳細說明這個程序。
從上面OpenGL的例子可以看到,僅僅為了顯示一個立方體,使用OpenGL來開發就需要如此多的代碼,要是開發一個大型的3D程序,其難度可想而知了。
使用Open Inventor 顯示一個紅色立方體
#include
#include
#include
#include
int main(int, char **argv)
{
//初始化Inventor
HWND myWindow = SoWin::init(argv[0]);
//創建觀察器
SoWinExaminerViewer *myViewer = new SoWinExaminerViewer(myWindow);
//創建場景
SoSeparator *root = new SoSeparator;
SoMaterial *myMaterial = new SoMaterial;
myMaterial->diffuseColor.setValue(1.0, 0.0, 0.0);//紅色
root->addChild(myMaterial);
root->addChild(new SoCube);//增加上一個立方體
//觀察器和場景相關聯
myViewer->setSceneGraph(root);
//顯示主窗口
myViewer->show();
SoWin::show(myWindow);
// 主循環
SoWin::mainLoop();
return 0;
}
程序運行的結果:
這兩個程序很明顯的差別就是使用OIV開發程序的代碼要遠小於使用OpenGL開發的程序。當然這不是使用OIV唯一的一點好處。上面OIV例子代碼中,一開始也是先初始化OIV,然後創建一個觀察器窗口,接著創建場景,向場景增加上材質對象(材質對象設置為紅色),再向場景增加上立方體對象。最後顯示場景,進入程序主循環。我們可以看到,OIV的程序邏輯性比較好,不像OpenGL那樣帶有太多的回調函數,導致我們的思路跳來跳去的。
OIV與OpenGL程序之間一個最大的差別就是OIV不需要程序員“畫”3D模型。在上面的OIV例子中,我們只是向場景中增加上一個立方體對象,至於在那裡顯示,以及何時顯示立方體都是OIV自己來決定的,不需要程序員來考慮。作為對比,在OpenGL程序中,我們需要在display回調函數中一條一條地調用OpenGL命令,只有這樣才能將立方體顯示出來。
使用OIV的另外一個好處是,OIV的程序是“活”的。我們可以使用滑鼠來操作場景中的物體。例如,我們可以在觀察器窗口上按住滑鼠左鍵,移動滑鼠來任意旋轉立方體,也可以上下移動滑鼠來放大或縮小立方體。也就是說上面的OIV例子代碼其實是一個互動式的3D程序,而我們沒有做任何的工作就自動獲得了這種交互功能。相對來說,使用OpenGL就沒有這麼幸運了,我們的OpenGL例子只是顯示了一個立方體,無論用滑鼠怎樣操作,立方體都不會動。當然,我們也可以使OpenGL程序具有交互的功能,但要開發一個操作非常順手的互動式軟體不是一件容易的事情。
讀者或許認為上面的OIV例子中有一些錯誤,在例子中,我們使用C++的new 操作符創建了多個對象,但在整個程序中沒有調用一次delete操作符來刪除對象。這樣做不會產生內存泄漏嗎?這點請不要擔心,OIV有自己的內存管理方式,它使用引用計數的技術來管理內存。每個對象都有一個引用計數的變數,只要它被使用過一次,引用計數就加1,不再使用時,引用計數就減1,如果引用計數變成0,那麼這個對象就自動被刪除。這種內存管理的方式有些類似於微軟的COM介面引用方式。正是因為OIV具有自動管理內存的功能,才使得利用OIV開發大型3D應用程序相對變得相對輕鬆。我們都知道,內存泄漏始終是C++程序員心中抹不去的一塊陰霾。
Open Inventor的開發環境
OIV最早是由SGI提出並開發的。SGI的OIV主要用在UNIX操作系統下,在SGI公司的操作系統中已經集成了OIV開發環境,所以只要使用SGI的UNIX操作系統就可以直接在上面開發OIV程序。但對於其它的UNIX系統或Linux操作系統,必須手工安裝。2000年左右,SGI開放了OIV的源碼。
SIM公司開發的Coin3D OIV可以同時在UNIX和Microsoft Windows下使用。它是基於GNU的開源項目,更新比較緩慢(一般1年左右才有一個小版本更新),基本只有核心模塊和體渲染模塊,性能不是太高,但完全可用,開發一般的3D應用程序還是綽綽有餘的。而且它是一個開放源碼的OIV開發包,可以讓我們了解OIV內部運行的機理。所以Coin3D OIV比較適合普通用戶。如果你是一名愛好和使用者,建議下載Coin3d庫,當然,也可以試著編譯下,有問題隨時可以翻看源代碼,的確是不錯的選擇。
TGS公司是最早將OIV由Unix系統移植到Microsoft Windows下的公司。TGS的OIV是目前世界上使用最多的OIV版本。它具有功能強大,性能優異等優點。而且TGS為了滿足不同應用領域的要求,對OIV做了大量的擴展,這也大大促進了OIV的應用。TGS是一家商業公司,它們開發的OIV是一個商業軟體開發包,不適合普通用戶學習和使用。不過,如果讀者的項目費用比較充裕的話,我們還是建議採用TGS的OIV版本。中國總代理的網站:www.ncg.ac.cn。
Open Inventor的開發資料
目前OIV的開發資料不多,而且都是英文資料。主要的開發書籍有三本:
1:Open Inventor C++ Reference Pages,Open Inventor C++參考手冊。這類似於微軟的MSDN,裡面介紹了Open Inventor中的所有C++類和方法。
2:The Inventor Mentor。這本書是OIV的主要入門書籍。所有學習使用OIV的用戶都應該首先閱讀此書。通過閱讀此書,用戶可以循序漸進地掌握OIV的基本開發過程。
3:The Inventor ToolMaker。這是一本適合OIV高級用戶的書籍,書中主要講述如何擴展、定製OIV。
題外話
也許很多人對OIV不是很了解。但可能很多人都聽說過VRML文件格式。VRML文件是瀏覽器用於在網頁中顯示3D物體的一種通用文件格式。其實VRML文件格式就是OIV的iv文件格式的一個子集。當年VRML格式的創建者參考了OIV的iv文件格式。所以OIV自動支持VRML文件的導入。而Java 3D借鑒了很多VRML的思想。因此Java 3D和OIV在設計思想上也是很相近的。