Open Inventor-Coin3D開發環境

簡介
目前世界上比較成熟的Open Inventor(以下簡稱OIV)開發包有三個,它們分別由SGI(http://www.sgi.com),TGS(http://www.tgs.com)和SIM(http://www.coin3d.org)公司開發的。SGI是最早提出並開發OIV的公司。但SGI的OIV主要用在UNIX操作系統下,沒有提供對Microsoft Windows操作系統的支持。TGS公司是最早將OIV由Unix系統移植到Microsoft Windows下的公司。TGS的OIV是目前世界上使用最多的OIV版本。但TGS的OIV是一個商業軟件開發包,其購買開發版權的費用非常昂貴,不適合普通用戶學習和使用。SIM公司開發的Coin3D OIV可以同時在UNIX和Microsoft Windows下使用。這是一個開放源碼的OIV開發包,使用協議採用的是GPL協議。非常適合希望學習使用OIV的普通用戶。本文將主要介紹Coin3D OIV開發包在Microsoft Windows操作系統下,Visual C++ 2003開發環境中的安裝與使用。


Coin3D的安裝
截至到目前(2007年8月),Coin3D的最新版本已經是Coin 2.4.6版本了。但SIM公司還沒有提供Coin2.4.6版本的安裝程序。目前只提供Coin 2.3.0的安裝程序。如果讀者不希望太麻煩,我們建議讀者下載使用Coin 2.3.0,因爲這可以省去很多手工設置。讀者可以到這裏下載Coin 2.3.0(http://ftp.coin3d.org/coin/bin/win32/all/Coin3D_2.3.0-0.exe 大約19M)。這個安裝程序中包含有Coin3D OIV的源碼、開發庫文件、頭文件、例子代碼、API文檔。安裝程序和Windows中其它的安裝程序基本一樣,讀者應該可以很輕鬆地完成安裝地工作。

如果讀者希望使用Coin地最新版本2.4.6,請首先到這裏下載Coin 2.4.6的壓縮包(http://ftp.coin3d.org/coin/bin/win32/Coin-2.4.6-bin-msvc7.zip 注意這裏下載的是針對VC 2003的版本,在SIM的網站中還有針對VC 6和VC 2005的版本,讀者可以根據自己的需要下載),然後解壓文件,將解壓後的文件拷貝到自己希望的目錄下即可。在壓縮包中沒有包括文檔和例子代碼。也沒有設置相關的環境變量。


開發環境設置
本文假設讀者將Coin3D安裝C:/Coin3D目錄下。和其它Windows下的開發庫類似,Coin3D在VC 2003中也需要首先做開發環境的設置。首先啓動VC,選擇菜單“Tools”->“Options”,打開VC的Options對話框,然後在對話框中左邊的樹型列表中選擇“Projects”->“VC++ Directories”,在右邊的窗口中選擇設置“Include files”,增加上Coin3D的Include路徑。如下圖所示:



還需要在右邊的窗口中選擇設置“Library files”,增加上Coin3D的Lib路徑。如下圖所示:



完成上述兩步設置之後,基本上就完成了VC++開發環境的設置。


VC++開發一個簡單的Coin3D OIV程序
我們將使用VC++ 2003和Coin3D開發一個簡單的3D Viewer程序。下面的文檔是翻譯Coin3D的指南文檔(http://www.coin3d.org/windows/tutorial/hello_coin/)。中間做了一些修改

1.首先啓動VC 2003,選擇菜單“File”|“New”|“Project”



2.選擇“Win32”項目類型,以“Win32 Console Application”爲項目模版,項目名稱“hello_cone”



3.在Win32 Application Wizard中,點擊Next按鈕。因爲我們希望自己提供所有的源文件,所以應該選擇“Empty project”複選框。然後點擊“Finish”按鈕。這時我們就創建了一個叫做hello_cone的新工程。



4.現在我們開始編寫代碼。我們首先需要向工程中增加一個C++源文件。選擇菜單“File ”| “Add New Item”,然後又選擇“C++ File (.cpp)”模版,名字爲hello_cone.cpp,最後點擊“Add”按鈕。



在Hello_cone.cpp文件中,我們首先需要包含一些必要的頭文件:
#include 
#include 
#include 
#include 

然後我們將在main函數中編寫所有必要的代碼
Int main(int, char ** argv)
{
[...]
return 0;
}

首先我們初始化SoWin(同時隱含初始化Coin),之後將返回一個頂層窗口供我們使用。
HWND window = SoWin::init(argv[0]);
if (window==NULL) exit(1);

然後我們創建一個觀察器(Viewer):
SoWinExaminerViewer * viewer = new SoWinExaminerViewer(window);

我們的場景是由兩個節點組成的:根節點和幾何物體。我們先創建好這兩個節點,然後再將幾何物體作爲子節點增加到根節點中。爲了防止根節點被刪除(因爲它的引用計數值爲0),我們需要對根節點調用ref()函數。
SoSeparator * root = new SoSeparator;
SoCone * cone = new SoCone;

root->ref();
root->addChild(cone);

現在我們爲觀察器設置渲染場景(用根節點來表示)
viewer->setSceneGraph(root);
viewer->show();

最後,我們讓SoWin顯示窗口,並進入消息循環。
SoWin::show(window);
SoWin::mainLoop();

當應用程序結束後,要刪除觀察器,我們還要對根節點調用unref()函數。
root->unref();
delete viewer;

下面是例子的完整代碼:
#include #include #include #include int main(int, char ** argv)...{ HWND window = SoWin::init(argv[0]); if (window==NULL) exit(1); SoWinExaminerViewer * viewer = new SoWinExaminerViewer(window); SoSeparator * root = new SoSeparator; SoCone * cone = new SoCone; root->ref(); root->addChild(cone); viewer->setSceneGraph(root); viewer->show(); SoWin::show(window); SoWin::mainLoop(); delete viewer; root->unref(); return 0;}

4.在我們開始編譯運行代碼前,我們還需要對項目做一些有關Coin的設置。點擊菜單“Projects”,選擇“hello_cone properties”



5.選擇Configuration Properties | C/C++ | Preprocessor,增加上COIN_DLL和 SOWIN_DLL預定義



6.選擇Configuration Properties | Linker | Input,增加上coin3d.lib和sowin1d.lib兩個庫文件



7.現在我們就可以編譯並運行hello_cone應用程序了。選擇Build | Build Solution,然後運行這個應用程序。



程序的運行結果:



這個程序提供了基本的交互功能,讀者可以在窗口中點擊鼠標,轉動Cone。

發佈了28 篇原創文章 · 獲贊 9 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章