Open Inventor:3次元グラフィックスAPIの進化
Open Inventorは、SGI(
シリコングラフィックス)が開発した、
C++用の
オブジェクト指向3次元グラフィックスAPIです。
OpenGLのプログラミング層を抽象化し、より効率的かつ容易な3DCGアプリケーション開発を目指して設計されました。当初は「IRIS Inventor」という名称で、プログラマーにとっての利便性と効率性を追求しました。
初期の歴史
1988年から1989年頃、SGIの重役であったWei Yenが、Rikk CareyにIRIS Inventorプロジェクトを託しました。その目的は、3次元グラフィックスアプリケーションの開発を容易にするツールキットを開発することでした。当時、
OpenGLの前身であるIRIS GLの低レベルなインターフェースが、3DCGアプリケーションの開発を遅らせているという課題がありました。そこで、
オブジェクト指向APIを用いることで、より多くの3DCGアプリケーションが開発されることが期待されました。使いやすさが最優先され、「人類のための3Dプログラミング」というキャッチフレーズが広く用いられるようになりました。
背景と概要
OpenGLは、単純なポリゴンのリストを入力として、それらを高速に描画する低レベルなライブラリです。しかし、「家を描画する」といった複雑な処理を行うためには、プログラマーがそれを
OpenGLの命令列に分解し、実行順序を最適化する必要がありました。特に、描画順序が性能に大きく影響するため、プログラマーは最終的な画像で隠れる部分を考慮する必要がありました。このため、シンプルなプログラムであっても、プログラミング量は非常に多くなっていました。
Open Inventorは、この問題の解決策として開発されました。立方体やポリゴンなどの基本形状をクラスとして提供し、それらを容易に変形できるようにしました。Open Inventorのシーングラフに描画すべき「世界」を配置することで、オブジェクト間の遮蔽が自動的に適用されます。さらに、シーンに適用できるコントローラオブジェクトも提供され、一般的な対話型タスクを容易に作成できます。また、Open Inventorは「世界」を格納するファイルフォーマットを持ち、自動的なセーブとロード機能も備えていました。これにより、簡単な3DCGアプリケーションを数百行以内で作成することが可能になりました。
しかし、Open Inventorには、
OpenGLを直接使用する場合と比較して性能が低下するという欠点がありました。また、独自のファイルフォーマットしかロードできないため、開発者は変換プログラムを書く必要がありました。
TGS Open Inventor
Open Inventorは、後にサードパーティへの
ライセンス提供が開始されました。
ライセンスを受けた企業には、Template Graphics Software(TGS)とPortable Graphicsがあります。TGSは後にPortable Graphicsを買収し、唯一のライセンシーとなりました。2004年には、TGSがMercury Computer Systemsに買収され、同社がOpen Inventorの開発と保守を引き継いでいます。
Performer
IRIS Inventorプロジェクトの開始から約1年後、別の考え方が生まれました。SGIのシステム上でアプリケーションの開発を容易にするだけでなく、性能の低いアプリケーションを開発しにくくするという考え方です。そこで、Inventorチームの一部が独立し、
OpenGL Performerプロジェクトを開始しました。Performerもシーングラフを持っていますが、性能を重視して更新が行われ、重要でないオブジェクトやポリゴンを描画しないなどの最適化により性能目標を達成できるように設計されました。また、Performerは複数の
プロセスで構成されているため、マルチプロセッサ上での動作により性能が向上します。Inventorとは異なり、PerformerはSGI以外に
ライセンス供与されませんでした。これにより、SGIは自社のハードウェアの進化に合わせてAPIを変更することができました。
1990年代中ごろ
1990年代中ごろになると、InventorとPerformerを分けておく理由はないという認識が広まり、性能とプログラミングの容易性を兼ね備えた高レベルAPIの開発プロジェクトが開始されました。その成果がCosmo 3Dです。しかし、Cosmo 3Dは設計上の問題から実用面でいくつかの課題がありました。
最終的に、これらの成果は、
インテル、
IBM、DECとの
OpenGL++の開発に繋がりました。これは、Cosmo 3Dをよりクリーンにしたオープンバージョンであり、SGIはCosmo 3Dプロジェクトを中止し、
OpenGL++に注力しました。しかし、
OpenGL++は結果的に失敗に終わりました。この時点でSGIはOpen Inventorに関する事業を完全に廃止し、TGSにすべてを譲渡しました。
その後の歴史
その後、Open InventorはTGSがプロプライエタリな
ライセンスで販売していましたが、2000年8月にSGIからオープンソース
ライセンスでリリースされました。
ほぼ同時期に、SIM(Systems in Motion)がAPI互換のクローンライブラリCoin3Dをリリースしました。SIMは後にKongsbergグループに買収され、Kongsberg SIMと改称されました。Coin3Dは、クリーンルーム設計で一から開発されており、SGIのOpen Inventorとはコードを全く共有していません。SIMのCoin3Dは、自由ソフトウェア開発向けのGNU GPLと商用開発向けの商用販売
ライセンスのデュアル
ライセンスでした。
SGIがリリースしたオープンソース版は、今後の開発や保守が不透明だったため、ほとんど注目されませんでした。
Kongsberg SIMのCoin3DとTGSのInventorは、活発に開発が続けられ、当初のAPIにはなかった機能(
VRML対応など)が追加されています。
開発された年代はやや古いですが、Open InventorのAPIは、現在でも科学や工学分野での可視化など、複雑な3DCGアプリケーションの開発を容易にするために広く利用されています。
外部リンク
SGI Open Inventor 公式サイト
Coin3D, このAPIの独自実装
Open Inventor by FEI, このAPIの商用実装
Kongsberg SIM
*
Open Inventor Users Forum