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圖形開發工具包
·加快您的應用程式設計、開發和維護的周期
·通過先進的三維可視化和程式設計來提高您的顯示質量
·通過初級的摘要和基本的圖形技術來確保您的投資。
·提供先進的基於領先的開放標準的支持
套用領域:
商業圖形、機械CAE和CAD、繪畫、建築設計、醫學和科學圖像、化學工程設計、地理科學、虛擬現實、科學數據可視化、AEC和仿真、動畫
主要特徵:
1. 面向對象的3D應用程式連線埠:
Mercury公司的Open Inventor 7提供了一個最廣泛的面向對象集(超過1300個易於使用的類),並集成了一個用戶友好的系統架構來快速開發。規範化的場景圖提供了現成的圖形化程式類型,其面向對象的設計鼓勵可拓展性和個性化功能來滿足具體的需求。Mercury公司的Open Inventor 7是套用最廣泛的面向對象的專業3D圖形開發工具包。
2. 最佳化的3D渲染:
Mercury公司的Open Inventor 7通過利用OpenGL的最新的功能集和拓展模組最佳化了渲染效果,自動基於OpenGL的最最佳化技術來提供一個大大改善的高端的應用程式接口。
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 XLM是Open Inventor 的一個擴展模組。包括兩部分:MeshViz拓展模組和MeshViz Interface拓展模組。
MeshViz包括3DdataMaster和GraphMaster。
MeshViz Interface包括:Mesh Extraction和Data Mapping。
MeshViz™ 拓展模組:
MeshViz™包含了高級的數據可視化設計組件,主要面向2D/3D數據科學、製造、有限元、流體力學、通訊、金融、地理信息系統和OLAP的可視化系統。
MeshViz™可用於所有類型的工程分析、可視化及通信套用,並允許開發人員快速整合先進的可視化功能。先進的數據提取和製圖技術使得MeshViz的應用程式連線埠能處理百萬計的二維或三維的元數據。
MeshViz™ Interface拓展模組
MeshViz Interface是一個用來提取和可視化對象特徵的應用程式連線埠,在套用科學領域,可以提取和查看有限元分析(FEA)和計算機輔助工程(CAE)的格線特徵,提供了和3DDataMaster一樣的基本的格線特徵描述,同時消除了原有的應用程式連線埠的大部分套用限制,直接支持所有類型的格線(二維或三維的、笛卡爾網格、三角形格線、六面體格線、多面體格線、二次格線、結構型格線或索引類型的格線),並可以對任意的標量和矢量數據集進行顯示、分析(包括正在處理過程中的隱性數據)。
MeshViz Interface主要包含相互獨立的格線提取和數據匹配兩部分:格線提取是指可以從高維度的格線中提取一個低維度的格線;數據匹配是指利用先進的渲染技術對創建提取出來的格線的圖形化描述。
VolumeViz™ LDM 拓展模組:
VolumeViz™ LDM能在一個單獨的Open Inventor開發的應用程式中實現海量數據集的互動式可視化、體繪製、切片、等值面提取和嵌入3D幾何圖形等功能。
提供了一種從筆記本到先進的計算機集群的可升級的解決方案,VolumeViz™ LDM模組為套用處理多達數百GB的數據集制定了一個新的里程碑。
VolumeViz™ LDM提供多個數據集的數據轉化和數據整合技術,也將渲染技術整合起來以獲得更快速和更高質量的可視化效果。採用最新的GPU著色器,信息採集和三維感知在切片上相比體數據可視化和凹凸映射都進一步改善。
ScaleViz™ 拓展模組:
ScaleViz是一套處理渲染場景和圖像合成分布的數據集的突破性技術,目的是在海量數據集上實現互動式加速處理以解決最具挑戰性的需求,提供最佳化的、分散式可視化方案,ScaleViz提供了以下的先進的解決方案:
 平板顯示在提供最佳性能的同時提高了解析度
 平板合成加速解決依賴解析度的顯示效果
 深度合成加速解決依賴數據的顯示效果
 遠程應用程式通過可視化伺服器來遠程可視化處理大量數據
ReservoirViz LDM拓展模組:
ReservoirViz LDM是Open Inventor 7的一個新的拓展模組,這個拓展模組是一個重大的改進,因為它提供了一個用於管理和可視化石油天然氣領域的水庫資料仿真的整體解決方案。
通過創新的數據管理和先進的視覺重現,來可視化和管理探針大型資料庫一般超過數以億計的元數據。和本地切片進行實時互動。界定感興趣的目標區域。將多種性能融合在一起或通過運行您自己的基於CPU或GPGPU著色器的計算模組衍生出新的著色功能。您甚至可以構建包含了獨立的時間屬性的4維智慧型數據及通過數以千計的時序步驟預取來進行互動。
DirectViz™拓展模組:
DirectViz™允許Open Inventor 7的應用程式進行非常高的現實性和可拓展性的三維場景可視化,這個過程是通過採用OpenRTRT的實時光線跟蹤引擎來代替OpenGL實現的。
DirectViz提供的功能已經超出了現有的圖形處理器和OpenGL的功能,包括造型和設計理念、虛擬原型和可視化仿真。
HardCopy拓展模組:
HardCopy允許應用程式輸出幾個向量格式圖形:CGM 、HPGL、PostScript、 GDI/EMF。和一般的圖像不一樣,這些圖像格式提供高品質的圖像,並解決了獨立輸出,適合大幅面繪圖機,甚至對複雜場景的高性能顯示。
Data Converter拓展模組:
Data Converter提供了集成的各種CAD/CAM浮點型檔案格式轉換到Open Inventor 7的浮點型檔案。這些拓展允許開發人員在現有應用程式的基礎之上添加先進的輸入功能。
Data Converter能在windows、Linux和UNIX作業系統上進行。工作在CAD/CAM領域的用戶也可以通過批量處理模式使用軟體。
支持下面幾個浮點型輸入數據: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 Us for 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 <GLUT.h>
GLfloat mat_diffuse&#91;&#93; = {1.0,0.0,0.0,0.0};
GLfloat mat_specular&#91;&#93; = {1.0,1.0,1.0,1.0};
GLfloat high_shininess&#91;&#93; = {100.0};
void myInit(void)
{
GLfloat light_position&#91;&#93; = {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 <Inventor/Win/viewers/SoWinExaminerViewer.h>
#include <Inventor/nodes/SoSeparator.h>
#include <Inventor/nodes/SoCube.h>
#include <Inventor/nodes/SoMaterial.h>
int main(int, char **argv)
{
//初始化Inventor
HWND myWindow = SoWin::init(argv&#91;0&#93;);
//創建觀察器
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,TGS和SIM公司開發的,它們在遵循OIV接口規範的基礎上各有特點。
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。
這三本書都可以在亞馬遜網上書店( http://www.amazon.com )中買到。
題外話
也許很多人對OIV不是很了解。但可能很多人都聽說過VRML檔案格式。VRML檔案是瀏覽器用於在網頁中顯示3D物體的一種通用檔案格式。其實VRML檔案格式就是OIV的iv檔案格式的一個子集。當年VRML格式的創建者參考了OIV的iv檔案格式。所以OIV自動支持VRML檔案的導入。而Java 3D借鑑了很多VRML的思想。因此Java 3D和OIV在設計思想上也是很相近的。
近些年來,國內外流行起“設計模式”的編程概念,在“設計模式”里有一種叫做MVC(模型-視圖-控制器)的設計模式。其實我們細想一下,MVC和“場景”,“觀察器”、“動作”這些概念是相通的。不過在SGI設計OIV的時候,“設計模式”的思想恐怕還沒有流行起來。從這點可以看出,在那些面向對象編程方面的大師們的骨髓中早已藏有“設計模式”的思想,只不過他們沒有表達出來而已。這也說明了,我們不應該刻意地去套用“設計模式”,而應該像“春夢了無痕”那樣將“設計模式”的思想融會在自己的程式中。

相關詞條

相關搜尋

熱門詞條

聯絡我們