O3D は、Web ブラウザウィンドウまたはXULデスクトップ アプリケーションで実行されるインタラクティブ3D グラフィックスアプリケーションを作成するためにGoogleが作成したオープンソース( BSD ライセンス) JavaScript API [ 2 ]です。O3D はあらゆるアプリケーション分野で使用できるように作成できますが、ゲーム、広告、3D モデルビューア、製品デモ、シミュレーション、エンジニアリング アプリケーション、制御および監視システム、大規模なオンライン仮想世界向けに設計されています。O3D は現在 Google のインキュベーション ラボにあり、元々はWeb ブラウザ プラグインとして構築されました。[ 3 ] [ 4 ] 2010 年以降、O3D はWebGL上に実装された JavaScript ライブラリとなっています。[ 2 ]
O3Dは、デスクトップベースの3DアクセラレーショングラフィックスアプリケーションとHTMLベースのWebブラウザとの間のギャップを埋めるものと見なされています。支持者たちは、Webブラウザからダウンロードして実行できるフル機能の3Dグラフィックスエンジンを作成することで、ローカルのデスクトップコンピュータに大規模なアプリケーションをインストールする必要がなくなる可能性があると主張しています。これにより、O3Dはアプリケーションリソース間の再利用性を最大限に高めると同時に、 JavaScriptを使用してクライアントのCPUとGPUへの堅牢なインターフェースを提供できます。
当初、O3Dはプラグインベースのアーキテクチャを採用しており、サードパーティの開発者がプリレンダリングやポストレンダリングのエフェクト、パーティクルシステム、物理エンジンなどのカスタム機能を統合できるようにしていました。プラグインはC言語で記述されていたため、ハードウェアと直接通信していました。そのため、シーンのレンダリング速度は、レンダリングを行うコンピュータのGPUに大きく依存していました。現在では、これらの機能の多くがWebGLに組み込まれています。
O3Dが従来のデスクトップまたはコンソールベースの3Dレンダリングエンジンよりも優れている主な点は、AJAXやCOMETを使用して、モデルとそのテクスチャをリアルタイムで動的にロード、レンダリング、変換できることです。ソースコード、アプリケーションリソース、オブジェクトライブラリはすべてリアルタイムでロードされるため、従来のコンパイルは不要です。これらのリモートリソースは、一般的なオブジェクト指向MVCアプリケーション内で、コアとなるレンダリングまたはビューイングアプリケーションの外部で設計、開発、保守できます。これにより、リソースの変更ごとに再コンパイルする必要がないため、リッチな3Dアプリケーションの開発が容易になり、3Dアプリケーションを設計する際に、より堅牢で分散型のアプローチが可能になります。
2010年5月7日、GoogleはO3DがプラグインからWebGL上で動作するJavaScriptライブラリに変更されることを発表した。[ 5 ]