Skip to main content

Open source 的 scene graph library 的選擇

3D scene graph 在很多地方都見得到,例如 Java 的 JSR-184 (a.k.a m3g),3D studio max 裡面也有自己的一套 (要用 3dsmax sdk 或更高一層的 3DXI 才存取得到)。談到 open source 的 3D scene graph library,常見到的幾乎就是下列三套:
  1. Open Scene Graph
  2. OpenSG
  3. Coin3D
其中的 Coin3D 是 GPL license,所以如果你的 project 不是 GPL license, 那麼就不用考慮他了。OpenSG 採用的是 LGPL,而 Open Scene Graph 採用的也是類似 LGPL,但卻是更寬鬆的 license,他容許 static linking 以及直接 embedded 到 application 中。所以就 license 而言,Open Scene Graph 是最有彈性的。

另外就使用者及社群的活躍性而言,以這個網頁的資料來看,Open Scene Graph 不論是在使用者以及社群活躍度上,都比另外兩個 project 來的蓬勃。OpenSG 次之,Coin3D 敬陪末座。

在架構上,Open Scene Graph 跟 OpenSG 類似,都是採用 Application-driven 的方式,也就是在 application 的執行期間內,會一直不斷的進行 render 的動作,所以適合用在遊戲以及模擬類的程式中 (比方說飛行模擬)。而 Coin3D 只會在 scene 的內容有變的時候,才會 render,比方說 view point 改變等等。

Coin3D 是基於 SGI 的 OpenInventor 這套 API 而來,所以他跟 OpenInventor 是 API 相容的。雖然他跟 SGI 的 OpenInventor 相容,但也加入了不少自己的一些 extension。而且 SGI OpenInventor 上次的 source release 是在 2003 年,跟一直在進行更新的 Coin3D 相比,似乎活躍度差了那麼一點。

另外,就網路上查到的資料,同樣的一個 3D scene,用這三套 library 來撰寫,結果似乎以 OpenSG 撰寫所得到的 performance 最好,Open Scene Graph 次之,Coin3D 最末。

所以看來要選一套 open source 的 scene graph library 來用的話,不外乎就是挑 OpenSG 或 Open Scene Graph 了。雖然 OpenSG 似乎有個比較好的 performance 表現,但以社群的活躍度以及所得或的支援來說,Open Scene Graph 看來是 open source scene graph 中最好的選擇了。

Comments