(57)【特許請求の範囲】
【請求項１】
コンピュータシステムにより実行され、グラフィックオブジェクトに対する３Ｄデータを生成する方法であって、
オペレーティングシステム３Ｄレンダリンググラフィックモジュールにおいて、プロセッサが、前記グラフィックオブジェクトに対する３Ｄレンダリング処理のための、３Ｄハードウエア・アクセラレーションドライバへのファンクションコール要求を生成するステップと、
前記ファンクションコール要求が前記ハードウエア・アクセラレーションドライバに受け取られる前に、前記ファンクションコール要求を、プロセッサが、立体フィルタに、途中で取り込み、前記立体フィルタにおいて、３Ｄグラフィックオブジェクトに対する複数の視点データを生成するステップと、
ディスプレイドライバにおいて、前記複数の視点データをフレームバッファに格納し、該フレームバッファから映像信号出力を生成するステップと、
を含む方法。
【請求項２】
前記立体フィルタにおいて、前記３Ｄグラフィックオブジェクトに対して左目の及び右目の視点データを生成するステップと、
前記左目の及び右目の視点データをディスプレイドライバに送付するステップとを含む、
請求項１に記載する方法。
【請求項３】
前記左目の及び右目の視点データを前記フレームバッファ内へ格納するステップを含む、請求項２に記載する方法。
【請求項４】
前記フレームバッファの各ラインを２つの領域、即ち左目のデータを格納する第１の領域と、右目のデータを格納する第２の領域と、に分割するステップを含む、請求項３に記載する方法。
【請求項５】
前記フレームバッファを上の領域と下の領域、即ち左目のデータを格納するための一方の前記領域と、右目のデータを格納するための他方の前記領域と、に分割するステップを含む、請求項３に記載する方法。
【請求項６】
前記左目の及び右目の視点データを生成するステップが、
前記オペレーティングシステム３Ｄレンダリンググラフィックモジュールからの３Ｄオブジェクトについてのパラメータとしてのレンダリング要求を前記立体フィルタに受け取るステップと、
１つのビューワモデル入力に基づき所定の１つの目的とする投影面を２つの投影面に入れ替えるステップと、を含む、請求項２に記載する方法。
【請求項７】
前記ビューワモデル入力が、３Ｄオブジェクトジオミトリの前記オペレーティングシステム３Ｄレンダリンググラフィックモジュールの表現と、前記目的とする投影面の表現と、に基づく、請求項６に記載する方法。
【請求項８】
前記立体フィルタを、フレームバッファへの出力を生成するハードウェア・アクセラレーティド・ドライバとして働くように設計した請求項１に記載する方法。
【請求項９】
グラフィックスデータを生成する、プロセッサを含むコンピュータシステムであって、
プロセッサが、コンピュータシステム上で実行されるソフトウェアアプリケーションに対するグラフィックスデータを生成し、オペレーティングシステムグラフィックスモジュールにおいて、３Ｄグラフィックス処理の実行を要求するファンクションコールを３Ｄアクセラレーション・ドライバに送付し、
前記ファンクションコールが前記３Ｄアクセラレーション・ドライバに受け取られる前に、プロセッサが、立体フィルタにおいて、前記ファンクションコールを途中で取り込み、１つのグラフィカルオブジェクトに対して複数の視点データを生成し、
ディスプレイドライバにおいて、前記複数の視点データをフレームバッファに格納し、該フレームバッファから映像信号出力を生成することを特徴とするシステム。
【請求項１０】
前記立体フィルタにおいて、前記グラフィカルオブジェクトの左目の視点データと、右目の視点データとが生成されるように設計された、請求項９に記載するコンピュータシステム。
【請求項１１】
前記立体フィルタにおいて、前記オペレーティングシステムグラフィックスモジュールからの３Ｄオブジェクトについてのパラメータとしてのレンダリング要求が受け取られ、１つのビューワモデル入力に基づき所定の１つの目的とする投影面が２つの投影面に入れ替えられる、請求項１０に記載するコンピュータシステム。
【請求項１２】
前記ビューワモデル入力が、３Ｄオブジェクトジオミトリの前記オペレーティングシステムグラフィックスモジュールの表現と、前記目的とする投影面の表現と、に基づく、請求項１０に記載するコンピュータシステム。
【請求項１３】
請求項１ないし８のいずれか１項記載の方法をプロセッサによって実行するコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
関連する出願についての表示
本願は、１９９７年１１月１８日に提出された特許願０８／９７２５１１、名称「グラフィックスエンジンとドライバとの間で情報を抽出するフィルタ」と、１９９７年１２月３１日に提出された特許願０９／００２１３９、名称「ディスプレイモニタにおけるオブジェクトの輝度を動的に制御する装置及び方法」との共に継続中の出願に関するものであり、これらの内容の全体を、参考としてこの出願に包含させた。
【０００２】
技術分野
本発明は、グラフィックスを生成するコンピュータシステムに関するものであり、より詳細には３次元（３Ｄ）グラフィックスの生成に関するものである。
【０００３】
従来技術
多くのグラフィックスを利用するソフトウェア・アプリケーションプログラムが、より多く使われるようになってきている。例えば、ビデオゲームは、しばしば、典型的なパーソナルコンピュータ（ＰＣ）のモニタ上の表示用に大量の３Ｄグラフィックスを使用する。これらのグラフィックスアプリケーションは、グラフィック用の内容物をサポートする３Ｄレンダリングソフトウェアを搭載したコンピュータシステムを必要とする。図１は、典型的なグラフィックス・アプリケーションプログラムを実行してグラフィックスを表示する従来のコンピュータシステムを説明するブロック図である。
【０００４】
図１に示すコンピュータシステム１０は、例えばマイクロソフト社によるウィンドウズ９X或いはウィンドウズＮＴオペレーティングシステムを使用するペンティアムプロセッサを塔載したＰＣとして具体化することもできる。コンピュータシステム１０には、ソフトウェア部１２とハードウェアディスプレイ部１４とが含まれる。このソフトウェア部１２には、アプリケーションプログラム１６、オペレーティングシステム・３Ｄレンダリングエンジン１８、及びサードパーティ製の２次元（２Ｄ）ディスプレイドライバ２０が含まれる。このアプリケーション１６は、コンピュータシステム１０のオペレーティングシステム（ＯＳ）にＯＳサービスを実行させる機能コールを生成する。特に、このアプリケーション１６は、このオペレーティングシステムによって規定されるアプリケーション・プログラミング・インタフェイス（ＡＰＩ）を介して、グラフィックスモジュールとも呼ばれる３Ｄレンダリングエンジン１８への機能コールを生成する。
【０００５】
この３Dレンダリングエンジン１８は、グラフィックスに関連する処理を実行する。例えば、シーンの状態を追跡したり、幾何モデル（geometry）やテクスチャをその内部表現の形で格納したり、このアプリケーションに合わせてレンダリングエンジン１８をカスタマイズしたりする。この３Ｄレンダリングエンジン１８は、ステンシルバッファ、Ｚバッファ、最終的に生ずるレンダリングしたフレーム用の２Ｄバッファ等の一時バッファを用いて３Ｄオブジェクトを処理する。３Ｄレンダリングを実行した後、このアプリケーション１６は、３Ｄレンダリングエンジン１８に指示して２Ｄディスプレイドライバ２０を介してシーンを最終的なフレームバッファへレンダリングさせる。この３Ｄレンダリングエンジンは、オペレーティングシステムのＡＰＩを介して、２Ｄディスプレイドライバ２０と通信を行う。この３Ｄレンダリングエンジン１８は、３Ｄのシーンをレンダリングして、最終的に２Ｄイメージを生じさせフレームバッファに入れる。このフレームバッファは、典型的には２Ｄディスプレイアダプタ２２内に位置する。その後、この２Ｄディスプレイアダプタは、このフレームバッファ内のビデオデータをアナログビデオ（ＲＧＢ）信号に変換し、ディスプレイモニタ２４によって最終イメージを表示する。
【０００６】
図１で説明したソフトウェアレンダリング・アーキテクチャの欠点は、３Ｄレンダリングエンジン１８からの出力が、２Ｄディスプレイアダプタ２２のフレームバッファ内の２次元（２Ｄ）イメージに過ぎないことである。その後、この２Ｄイメージは、従来のＰＣモニタ等のモニタ２４へ出力される。従って、このソフトウェアレンダリング・アーキテクチャは立体３Ｄ内容物を生成することができない。
【０００７】
更に、ハードウェアレンダリング・アーキテクチャを使用するその他のシステムでは、３Ｄアクセラレーション装置は、幾つかの或いは全てのレンダリング要求をハードウェア上で実行することもできる。しかしながら、３Dレンダリングで最終的に生ずる出力は、依然として３Ｄアクセラレータ上のフレームバッファ内の２Ｄイメージに過ぎない。従って、ハードウェアレンダリング・アーキテクチャを使用するシステムでは、立体３Ｄ内容物を生成することができない。
【０００８】
グラフィックオブジェクト、例えばヘッドマウント型ディスプレイに対する立体３Ｄイメージを生成できるコンピュータシステム上の装置等のニーズがある。また、従来のハードウェアドライバと３Ｄアクセラレーション装置を用いて、立体３Ｄイメージを生成し、出力する装置等のニーズがある。
【０００９】
本発明においては、上述したニーズ及びその他のニーズを満足するために、立体フィルタ（stereoscopic filter）が、オペレーティングシステム・グラフィックスモジュールからディスプレイドライバに出されたコール、即ちグラフィックオブジェクトの３Ｄレンダリング処理を要求するコールを途中で取り込むようにする。このフィルタは、左目の視点に対する立体イメージデータ及び右目の視点に対する立体イメージデータを生成する。このデータは、その後フレームバッファに格納される。このディスプレイドライバからの出力をアナログビデオ信号に変換して、立体ディスプレイ装置に出力することができる。
【００１０】
本発明の一つの特徴によれば、グラフィックオブジェクトに対する３Ｄデータを生成する方法が提供される。この方法には、グラフィックオブジェクトに対して３Ｄレンダリング処理を要求する機能コールを３Ｄレンダリングモジュール内で生成することが含まれる。また、この方法には、フィルタによる機能コール要求を受け取ること、及び３Ｄグラフィックオブジェクトに対する複数の視点データを生成することが含まれる。
【００１１】
本発明の他の特徴においては、プロセッサによって実行可能な一連の格納された命令を含むコンピュータ読み取り可能な記憶媒体を提供する。これらの命令によって、プロセッサは、グラフィックスオブジェクトに対して３Ｄ処理を要求する３Ｄレンダリングモジュールにより生成された機能コールを受け取る。また、これらの命令によって、プロセッサは、プロセッサはグラフィックスオブジェクトに対する複数の視点データを生成する。
【００１２】
本発明におけるその他の目的と利点は、後述する詳細な説明により当業者には自明なものとなるであろう。図示する及び説明する実施例では、本発明を実行するために最も好適と考えられるものについて説明する。本発明は、本発明の範囲から離れることなく、自明な様々の変更を行うことが可能である。従って、これらの図面は説明のみを目的とするものであり、発明の範囲を制限することを意図するものではない。
【００１３】
添付の図面を参照する場合、同じ符号を有する要素は全体を通じて同じ要素を表わすものである。
【００１４】
発明の詳細な説明
本発明は、立体フィルタを使用して立体３Ｄグラフィックスを生成する装置及び方法を提供するものである。立体フィルタは、コンピュータシステムのオペレーティングシステムに統合されたソフトウェアモジュールであって、３Ｄハードウェア・アクセラレーションドライバへの機能コールを途中で取り込むように設計されている。このフィルタは、グラフィックスオブジェクトに対する左目と右目の視点データを生成し、この生成されたデータをフレームバッファに格納するためにディスプレイドライバへ出力する。
【００１５】
図２に示す本発明の実施例によれば、コンピュータシステム１００は、後述するアプリケーション１６の実行をサポートするオペレーティングシステムを使用するソフトウェア４０と、ハードウェア部５０と、を含むものである。このオペレーテイングシステムは、詳細は図１に関連して上述したソフトウェアアプリケーション１６に対するグラフィックスを作成する３Ｄレンダリングエンジン１８を含むものである。特にこのアプリケーション１６は、オペレーティングシステムによって規定されたアプリケーション・プログラマー・インターフェイス（ＡＰＩ）を介して３Ｄグラフィックス・レンダリングエンジン１８への機能コールを生成する。この３Ｄレンダリングエンジン１８は、グラフィックスモジュールとも呼ばれる。
【００１６】
この３Ｄレンダリングエンジン１８は、グラフィックスに関する処理を実行し、ハードウェア・アクセラレーティド・レンダリング・モードに設定されるものである。即ち、この３Ｄレンダリングエンジン１８は、ディスプレイドライバへの機能コールを生成するように設計されている。特に、この３Ｄレンダリングエンジン１８は、ＡＰＩを介して機能コールを送付する。また、この機能コールは、グラフィックスオブジェクトに対するグラフィックスに関する処理の実行を、３Ｄアクセラレーションドライバ２８に対して要求することを意図するものである。
【００１７】
立体フィルタ２６は、ソフトウェアコンポーネントであって、従来のディスプレイドライバをロードするのと同様の方法でコンピュータシステム１００のＯＳによってロードされるものである。立体フィルタ２６は、３Ｄレンダリングエンジン１８にとっては、３Ｄレンダリングエンジンからコールされるグラフィックス処理を実行するように設計された従来のサードパーティ製のデイスプレイドライバのようなものである。このように、立体フィルタ２６は、３Ｄレンダリングエンジン１８にとってはトランスペアレントなものである。
【００１８】
このハードウェア・アクセラレーションドライバ２８は、３Ｄレンダリングエンジン１８を拡張する分離されたコードのモジュールとして適用される。従って、このハードウェア・アクセラレーションドライバ２８は、ＯＳの３Ｄレンダリングエンジン１８のコードとして実行される。また、この３Ｄアクセラレーションドライバ２８は、ＯＳの３Ｄレンダリングエンジン１８によってルーチンコールとしてコールされるエントリポイントの配列を介してインターフェイスを提供する。立体フィルタ２６は、このインターフェイスを利用し、同じエントリポイントを３Ｄアクセラレーションドライバ２８として使用する。
【００１９】
例えば、マイクロソフトのウィンドウズＯＳでは、この３Ｄレンダリングエンジン１８と３Ｄハードウェア・アクセラレーションドライバ２８は、ダイナミック・リンクライブラリ（ＤＬＬ）として実装される。このように、各々の実行可能なコードのモジュールは、外部のコードをリンクしたりコールしたりできる搬出された機能のエントリポイントを持つものである。同じく必要なエントリポイントを立体フィルタ２６に実装することによって、この３Ｄレンダリングエンジン１８は、立体フィルタ２６を、あたかも従来のＯＥＭのドライバのように使用する。
【００２０】
従って、立体フィルタ２６は、３Ｄハードウェア・アクセラレーションドライバ２８に対する機能コールを途中で取り込み、そして、様々なグラフィック処理、例えば初期化、レンダリング、及びモード変更の処理を実行する。この３Ｄレンダリングエンジンは、３Ｄハードウェア・アクセラレーションドライバ２８への機能コールを生成するように設計されたものであるが、実際の３Ｄアクセラレータ３０は必要ではない。この実際の３Ｄレンダリングは、３Ｄレンダリングエンジン１８を再度呼び出してソフトウェア上でこの要求をエミュレーションすることによって、ソフトウェア上で実行することができる。しかしながら、説明の便宜上、図２に示す実施例は３Ｄアクセラレータ３０を含むものである。
【００２１】
図２に示すように、この３Ｄハードウェア・アクセラレーションドライバ２８は、３Ｄアクセラレータ３０を制御する。この３Ｄアクセラレーションドライバ２８は、ビデオデータと制御データの形式でデータを３Ｄアクセラレータへ出力する。この３Ｄアクセラレータは、典型的には、ビデオデータを格納するフレームバッファ３１と、ビデオデータをアナログＲＧＢ信号へ変換するデジタル／アナログ・コンバータ３２（ＤＡＣ）を含むものである。
【００２２】
立体フィルタ２６のソフトウェア処理は、大きくは以下の３つのエントリポイントを使用する。
１）ロードエントリポイントは、コンピュータ１００により立体フィルタ２６をロードする処理と、３Ｄレンダリングエンジン１８からの要求を正しくフィルタリングすることを保証するその他の初期化処理を含むものである。
２）モードセットエントリポイントは、特別な立体モードをセットする。これは、立体ディスプレイのために、２Ｄフレームバッファ３１の管理を１つの視点から左の視点及び右の視点へ変更するものである。
３）ランタイムエントリポイントは、１つの視点からの３Ｄオブジェクト幾何モデルから規定の立体モードにおける左右の視点への必要な変換を含むものである。
【００２３】
図３は、図２におけるコンピュータシステム１００の処理を説明するフローチャートである。ステップ６０では、立体フィルタ２６が、従来のハードウェア・アクセラレーションドライバをロードするのと同じような方法でコンピュータシステム１００へロードされる。例えば、立体フィルタ２６のインストールプロシージャは、立体フィルタ２６をシステムのデータベースにこのシステムの３Ｄアクセラレーションドライバ２８として登録する。使用される個々の３Ｄレンダリングエンジン１８に応じて、その他の様々な初期化が必要な場合もある。例えば、異なる３Ｄレンダリングエンジン１８は、何らかのレンダリング処理に対して、このエンジンが常にこのドライバ、即ちこの場合は立体フィルタ２６をコールすることについて保証する異なる機構を有するものである。
【００２４】
立体フィルタ２６は、３Ｄレンダリングエンジンが直接にイメージを２Ｄフレームバッファへとレンダリングしないことを保証する処理を行う。立体フィルタでこれを達成するには様々な方法がある。例えば、立体フィルタ２６は、３Ｄレンダリングエンジン１８に対して、見かけ上の装置管理下ドライバ、或いは完全なアクセラレーティドドライバであると、自分で宣言することができる。その後、立体フィルタ２６は、３Ｄレンダリングエンジン１８からのジオミトリ（geometry）機能コールを処理する。
【００２５】
このジオミトリコールは、３Ｄオブジェクトをフレームバッファの２Ｄピクセルへとマッピングする。詳しくは後述するが、その後、立体フィルタ２６は、この入力された３Ｄオブジェクトをビューワモデルに変換し、２つのビューを生成し、それから再フォーマットされた２Ｄバッファを生成する。
【００２６】
立体フィルタ２６をロードした後、立体フィルタ２６は、ステップ６２においてフレームバッファ３１での特別な立体モードを定義する。或る立体モードにおいては、左目と右目の視点フレームがフレームバッファ３１へ入れられる。このモードは、ライン毎の水平立体モードとすることができる。例えば、図４Ａ〜４Ｃに示すように、図４Ａは、従来のフレームバッファに格納されたグラフィックオブジェクトを表わすものである。図４Ｂは、フレームバッファが従来のフレームバッファの２倍の長さであるモードを表わすものである。この場合、図４Ｂに示すように、この物理フレームバッファ３１は２つのフレームに分割され、物理フレームバッファ３１内の各ラインは、左のラインと右のラインが入るように分割される。或いは、フレームバッファサイズの制約によって、フレームバッファの実際の長さを２倍にできないときは、元のフレームバッファラインの長さを保持するために図４Ｃに示すように左右のフレームをX方向に圧縮することも可能である。
【００２７】
或いは、この立体モードは、フレーム毎の垂直立体モードとすることもできる。例えば、図５Ａ〜５Ｃに示すように、図５Ａは、従来のフレームバッファに格納されたグラフィックオブジェクトを表わすものである。図５Ｂは、フレームバッファが従来のフレームバッファの２倍の高さであるモードを表わすものである。この場合、物理フレームバッファは３１は、２つのエリアに分割される。図５Ｂに示すように、上の半分は左目のフレーム（或いは右目のフレーム）を下の半分は右目のフレーム（或いは左目のフレーム）を保持する。或いは、フレームバッファ３１のサイズの制約によって、フレームバッファの実際の高さを２倍にできないときは、元のフレームバッファの列の大きさを保持するために図５Ｃに示すように左右のフレームをＹ方向に圧縮することも可能である。
【００２８】
使用される個々の立体ディスプレイ３４に応じて、立体フィルタ２６には、左右のビューを保持するその他の既知の立体モードを実装することもできる。このデジタル／アナログ・コンバータ３２（ＤＡＣ）は、典型的には、３Ｄアクセラレータ３０上に配置され、フレームバッファ３１をスキャンし、左のフレームとそれに続く右のフレームからなるアナログビデオ信号を生成する。立体フィルタ３４は、このアナログ信号をデコードし、この信号から分離されたビューを抽出する。
【００２９】
このフレームバッファ３１の構成は、立体フィルタ２６によって変更することができるため、より多くのメモリや異なるメモリ配置を必要とする場合もある。しかしながら、立体フィルタ２６は、必要量を満足するメモリ容量を持つモードを定義するように設計されている。ステップ６４においては、立体フィルタ２６のランタイムステージを実行する。即ち、立体フィルタ２６は、３Ｄレンダリングエンジンからのジオミトリ要求を途中で取り込むものである。前述したように好適な実施例では、立体フィルタ２６は、いかなるフレームバッファ３１への直接書き込みも排除するように、見かけ上の装置管理下のドライバであると自分で宣言することができる。これによって、３Ｄレンダリングエンジン１８は、エミュレーションを行い直接フレームバッファ３１に書き込んだり、立体フィルタ２６をバイパスしたりはしないであろう。
【００３０】
立体フィルタ２６は、３Ｄレンダリングエンジン１８からのレンダリング要求を受け取る。この３Ｄレンダリングエンジン１８は、典型的には、パラメータで表わされた３Ｄオブジェクトについてのレンダリング要求を生成する。どのようにこの３Ｄデータをエンコードするかについての詳細は、実装されるエンジンによって変わるものである。しかしながら、各々の３Ｄエンジンは、基本の３Ｄジオミトリの用語を定義しなければならない。これらの用語によって３Ｄシーンが構成されるからである。この技術分野で知られている一般的な３Ｄオブジェクトの表現は、ポリゴンを表わす空間上の点である。このポリゴンは、普通は、３Ｄオブジェクトを構成するオブジェクトの表面に貼り付ける３角形である。
【００３１】
次のステップ６６においては、立体フィルタ２６は、それぞれの目に対するジオミトリ値を生成することによって３Ｄオブジェクトジオミトリ要求を修正する。シーン（scene）の各々の３Ｄオブジェクトは、その他の空間上の点からの投影を表わすように立体フィルタ２６内のビューワモデルアルゴリズムによって修正される。
【００３２】
本発明を、最終的なレンダリング視点に関する３Ｄオブジェクトのビューワモデル表現との関連で説明する。立体フィルタ２６に実装することができる様々なビューワモデルがある。各々のビューワモデルは、３Ｄの奥行きについて知覚が異なっており、頭部と目の種々の構成を模擬するものである。後述する事項では、本発明を明瞭にするために、立体フィルタ２６に対して必要な入力と、立体フィルタ２６からの出力とについてのみ述べる。しかしながら、本明細書で開示された実施例や目的があれば、システム上の制約はもちろんあるが、ビューワモデルの処理の詳細は、本明細書で説明した具体的な３Ｄレンダリングエンジン１８に基づき容易に具体化することができる。
【００３３】
ビューワモデル処理では、各々の３Ｄオブジェクトは、２つのインスタンス（instance）や視点、即ち左の視点と右の視点とに分離される。所定の目的とする３Ｄジオミトリの投影面は、それぞれの目に１つずつ、即ち２つの新しい投影面に入れ替えられる。新しい投影面の元の投影面に対する３Ｄ位置の正確な関係が、ビューワモデルである。ビューワモデルの詳細は、ＯＳの３Ｄレンダリングエンジン１８ジオミトリ表現に依存するものである。また、この３Ｄレンダリングエンジン１８は、目的とする２Ｄレンダリング面を指定する。
【００３４】
例えば、３Ｄシーンをレンダリングして空間上の点を投影するシステムでは、立体フィルタ２６のビューワモデル表現は、３Ｄレンダリングエンジン１８からのレンダリング要求を、３Ｄアクセラレーションドライバ３０に対する２つの異なるレンダリング要求に変換する。
【００３５】
図６Ａと６Ｂは、立体フィルタを用いずに通常の視点レンダリングを使用する３Ｄレンダリングを説明するものである。また、図７Ａ〜７Ｃは、立体フィルタ２６を用いた視点レンダリングを説明するものである。図７Ｃに示すように、立体フィルタ２６は、要求された視点を、左の視点のために左へずらし、そしてその結果をフレームバッファ３１の左のフレームに入れる。第２の要求は、同じ方法で右の視点を処理する。立体フィルタ２６のビューワモデルでは、視点に対する複数のレンダリング要求のみが、それぞれの目に１つずつ、即ち２つの視点を生成する。そして結果として生じたそれぞれの目のフレームは、フレームバッファ３１に格納される。
【００３６】
或いは、固定点レンダリングエンジンでは、シーンは常に、ジオミトリがXＹＺデカルト空間にあるXＹ平面へとレンダリングされる。また、シーンの各々の点は、左の視点を表わすように再配置され、そして右の視点に対しても同様に繰り返す。正確な距離は、空間上のそれぞれの目の位置に依存する。
【００３７】
空間上の３Ｄオブジェクトに対する物理視点を生成することができるものであって、この技術分野で知られている様々なモデルがある。しかしながら、説明のために、立体フィルタ２６による処理ステップを説明する１つの実施例として、以下のビューワモデル形態を挙げる。この実施例では、このモデルは、３Ｄレンダリングエンジンが、３ＤオブジェクトについてXＹＺ表現からXＹ平面へのレンダリングを要求する場合を想定して調整してある。
【００３８】
図８は、仮想焦点アイポイントのモデル表現を説明するものである。図８に示すように、目的の２Ｄ平面の幅と高さＷ×Ｈが与えられると、投影面からは離れているが、目的のXＹ平面の中央に対応する空間上の位置に点ｈがセットされる。この点ｈは、目の焦点をエミュレーションする。分離された左と右のビューを作成するためには、焦点アイポイントを左と右に再配置して、立体フィルタ２６によって再配置された点についての３ＤオブジェクトのXＹＺ位置を再計算する。
【００３９】
この焦点アイポイントをX軸方向にｄだけ移動する。左目の座標は（Ｗ／２−ｄ，Ｈ／２，ｈ）となり、右目の座標は（Ｗ／２＋ｄ，Ｈ／２，ｈ）となる。その後、図９に示すように立体フィルタ２６は、これらの新しい焦点アイポイントを使用して新しい座標系X'YZ'を生成する。この新座標のY軸は元のXＹＺ座標系と共有しているが、その中心位置Ｗ／２およびＨ／２が、X'軸上およびＹ軸上に来るように新しい焦点アイポイントに向かって角度αだけオフセットされている。新しいアイビュー（eye vewiw）のために、変換された３Ｄオブジェクトは新しい座標系X'YZ'で表現され、レンダリングされアイビューの２Ｄバッファとなる。
【００４０】
上述したモデルは、ビューワの奥行きの知覚を決定するｈ及びｄのパラメータで定義したが、立体フィルタ２６では、傾きの角度αのみに基づきモデルのパラメータを決めることもできる。
【００４１】
図１０は、図９における左のビューの投影面について上から見たビューを説明するものである。新しいX'YZ'座標系はＹ軸を元の座標系と共用しているため、３Ｄの点におけるＹの値は、同じ値のままである。図１０からαに関して次の式を定義することができる。
【００４２】
i）    sinα＝ｋ／（ｚ＋l）＝ｌ／（X'＋ｋ）
ii）    cosα＝z'／（ｚ＋l）＝X／（X'＋ｋ）
iii）    tanα＝l／X＝ｋ／z'
【００４３】
式iii）からｌ＝Xtanαと、式ii）からz'＝（ｚ＋ｌ）cosα＝（ｚ＋Xtanα）cosαとを導くことができる。更に、式iii）からｋ＝z'tanα＝ｚsinα＋Xsinαtanαと式ii）からX'＝（X−ｋcosα）／cosα＝X／cosα−ｋ＝X（１／cosα−sinαsinα／cosα）−ｚsinα＝Xcosα−ｚsinαを導くことができる。上述した式を使用して、立体フィルタ２６は、左の視点に対する新しい座標系を以下のように得ることができる。
【００４４】
iv）    X'＝Xcosα−ｚsinα
z'＝ｚcosα＋Xsinα
y'＝ｙ
【００４５】
その後、立体フィルタは、左のビューから得られた結果をミラーリングすることによって同じ点に対する右のビューを計算する。つまり、立体フィルタ２６は、この点を左へ、即ち（X，ｙ，ｚ）から（Ｗ−X，ｙ，ｚ）へとミラーリングする。次に、立体フィルタ２６は、上述したように変換された式iv）を使用して、この点に対する左の値を計算する。最後に、この立体フィルタは、結果として生じた点を右へ、即ち（X'，y'，z'）から（W−X'，y'，z'）へと再度ミラーリングする。
【００４６】
この点に対する左右の点の計算の後、立体フィルタ２６は、立体モードの通常の面に右と左の点を配置する。変換の詳細は、前述したように立体フィルタ２６によりセットされる立体モードにおけるフレームバッファ３１の正確なフォーマットに依存する。例えば、図４Bに示したように同じ長さのバッファの水平モードを使用する場合、この立体フィルタは、元のフレームの左の半分へ左のビューを配置し、右の半分へ右のビューを配置する。左の点（X'，y'，z'）を（X'／２，Y'，z'）へと移動させ、一方、右の点も（Ｗ／２＋X'／２，Y'，Z'）へと移動させる。その他のモードでは、基準の有無にかかわらずＹの値を変更するであろう。最後に、立体フィルタ２６は、新しいジオミトリを３Ｄアクセラレーションドライバ２８のレンダリングステージへと変換する。
【００４７】
図３に示すように、ステップ６８においては、左目と右目の視点データが生成された後、立体フィルタ２６は、左目のオブジェクトをレンダリングしてフレームバッファ３１の左のフレームに入れるように、また右目のオブジェクトをレンダリングしてフレームバッファ３１の右のフレームに入れるように、３Ｄオブジェクトを３Ｄアクセラレーションドライバ２８へ送付する。この２Ｄの内容物を、左と右のフレームバッファ内にコピーする。
【００４８】
次にステップ７０においては、３Ｄアクセラレーションドライバは、予めセットされた立体モードに応じてオブジェクトデータをフレームバッファ３１へ格納する。ステップ７２においては、ＤＡＣ３２はアナログのＲＧＢ信号を立体デイスプレイ３４へ出力する。立体ディスプレイ３４の装置の詳細については、使用される装置によって変わるものである。しかしながら、立体ディスプレイ３４は、２つのフレームを両目の間の距離と合致するように正確に配置することによって見る者の感覚にリアルな立体効果を生じるように設計されている。
【００４９】
例えば、それぞれの目で使用されるように分離されたモニタを有するヘッドマウント型ディスプレイを使用することもできる。このタイプのディスプレイでは、ＲＧＢ信号は、疑似的に立体的な視覚を与える効果を作り出すように変調される。
【００５０】
或いは、２つのビューを投影する投影システムディスプレイを使用することもできる。このようなディスプレイでは、見る者は、特別な眼鏡を使用する。或るビューは遮り、その他のビューは通過させることによって、それぞれの目に異なるビューを送る。一般的な装置は、異なる色や偏光のカラーフィルタ或いは偏光フィルタの付いた眼鏡を使用する。
【００５１】
いずれにしても、ＤＡＣ３２からのＲＧＢビデオ信号出力が工業上の標準的な規格に合うように生成されるため、立体フィルタ２６は、どんな立体ディスプレイ装置でも使用することができる。
【００５２】
上述したように、ハードウェア・アクセラレイティド・レンダリングアーキテクチャを使用してグラフィックオブジェクトに対する立体３Ｄイメージを生成する装置及び方法について述べてきた。図２のコンピュータシステム１００は、例えば、マイクロソフト社のウィンドウズ９X、或いはウィンドウズＮＴを使用するペンティアム搭載ＰＣとして具体化することができる。しかしながら、この立体フィルタは、特定のオペレーティングシステムの使用に限定されるものではない。例えば、図１１は、本発明の実施例を適用することができるコンピュータシステム２００の略ブロック図である。コンピュータシステム２００は、バス２１０、或いは、情報をやり取りするためのその他の通信手段を含むものである。また、プロセッサ２０２は情報を処理するためにバス２１０に接続されている。更に、コンピュータシステム２００は、ランダム・アクセス・メモリ（ＲＡＭ）、或いは、動的記憶装置２０４（メインメモリとも呼ばれる）を含むものであって、これらは、情報やプロセッサ２０２により実行されるべき命令を格納するために、バス２１０に接続される。また、メインメモリ２０４は、プロセッサ２０２によって命令を実行する間に生じる一時的な変数、或いはその他の中間情報を格納するためにも使用することができる。また、コンピュータシステム２００は、バス２１０に接続されている、プロセッサ２０２に対する静的な情報及び命令を格納するための読み取り専用メモリ（ＲＯＭ）、及び／または、その他の静的記憶装置２０６を含むものである。磁気ディスク、或いは光学ディスクとこれに相当するディスクドライブ（駆動装置）等のデータ記憶装置２０８は、情報や命令を格納するためにバス２１０に接続することができる。
【００５３】
本発明の立体フィルタの利点としては、マイクロソフト社によるOpenGL、或いはDirect3D等のベンダーのどんな３Ｄレンダリングエンジンでも接続できることである。しかしながら、個々の立体フィルタは個々の３Ｄレンダリングエンジンと共に使用する必要がある。その理由は、フィルタはレンダリングエンジンに特有のインターフェイスポイントと接続されるためである。更に、フィルタとアクセラレーションドライバとの間の通信は広く公表されているＡＰＩと全く同じであるため、立体フィルタ２６は特定の３Ｄアクセラレーションドライバとの使用に限定されるものではない。
【００５４】
更に、この立体フィルタの利点としては、いかなるサードパーティ製の３Ｄアクセラレータやビデオアダプタでも使用することができることである。この立体フィルタは、使用される実際の装置に基づき立体モードをセットするように設計されている。更に、この立体フィルタは、立体モードをサポートするいかなる立体ディスプレイ装置でも使用することができる。本発明のその他の利点としては、ＯＳやサードパーティのコンポーネントを立体フィルタに適応するように修正する必要がないことである。従って、様々なソフトウェアやハードウェアのコンポーネントについてのカスタマイズに関する莫大な時間や費用を節約することができる。
【００５５】
上述したビューワモデルに関する本発明の重要な特徴として、見る者の視点を３Ｄ空間のいかなる場所にも変更することができることである。ユーザは、アプリケーションレベルのおける３Ｄ内容物とは独立した方法でシーンを移動することができるように、この立体フィルタを制御する。このようにして、本発明はユーザが制御しているのだという感覚を増大させる。更に、本発明は、入ってくる３Ｄ内容物との会話性の範囲を増大させる。視点を変更するときの問題としては、３Ｄレンダリングエンジンが、ある特定の視点上でセンタリング（中央寄せ）をすることによって、例えば計算上必要とされる３Ｄジオミトリモデルを最適化する場合があることである。この方法では、この特定の視点から見ることができない細部は省略される。この方法では、異なるレベルの細部を含むことができ、これは、隠面（hidden-surface）領域に存在するポリゴンの省略と同じように視点への距離に依存するものである。原則として、３Ｄモデルを完全にレンダリングする３Ｄレンダリングエンジンは、本発明のこの３Ｄフィルタにより操作することができ、また、アーチファクト（artifacts）を生成することなくアプリケーションとは独立して視点を変更することができる。
【００５６】
更に、本発明の特徴として、この立体フィルタは同じ３Ｄ内容物に基づき異なる視点からレンダリングされる複数のビューを提供するように一般化することができる。基本的には、上述した式１〜ivの計算はその他の適したものに置き換えられる。例えば、ビデオゲーム等のマルチユーザのソフトウェアアプリケーションでは、異なるユーザが１つのチームとしてある仮想環境に一緒に存在していて同じオブジェクトに遭遇する場合、このフィルタは、このオブジェクトから１つの３Ｄ内容物及び異なる視点に基づき異なるビューを生成する。個々の各ユーザに対して生成された複数のビューは、必要ではないが事実上は立体とすることができる。例えば、複数のビューは、複数の単眼用のイメージとすることができる。
【００５７】
立体モードの処理において本フィルタによってデータ変換の実行を適用するには様々なやり方があることに留意されたい。左目と右目とのビューを生成する１つの方法としては、上述した変換を実行すること、即ち新しい焦点中心を配置し、互いに鏡像となる２つの異なるビューを生成することである。或いは、この焦点ビューを左目（或いは右目）のビューとし、これを距離Ｗだけ水平方向に変換したものを右目（或いは左目）のビューとすることもできる。
【００５８】
本明細書においては、本発明の幾つかの好適な実施例を説明したに過ぎない。しかし、前述したように本発明は、様々な組み合わせ及び環境で使用することができ、また、本明細書で説明した発明の概念の範囲内で変更や変形をすることができる。
【図面の簡単な説明】
【図１】  ソフトウェアレンダリングを使用する従来のコンピュータディスプレイシステムのブロック図である。
【図２】  本発明を適用することができる好適なコンピュータシステムのブロック図である。
【図３】  本発明の実施例に応じて好適なコンピュータシステムの処理を説明するフローチャートである。
【図４】  Ａ〜Ｃは、本発明で使用することができる種々の水平立体モードを説明するものである。
【図５】  Ａ〜Ｃは、本発明で使用することができる種々の垂直立体モードを説明するものである。
【図６】  Ａ〜Ｂは、視点レンダリングを説明するものである。
【図７】  Ａ〜Ｃは、本発明の実施例に応じて視点レンダリングを説明するものである。
【図８】  ビューワモデル（viewer model）で使用する仮想焦点アイポイント（virtual focal eye point）を説明するものである。
【図９】  図８におけるオブジェクトに対する修正された投影を説明するものである。
【図１０】  図９における投影に対する左ビュー座標系を説明するものである。
【図１１】  本発明を実施することができるコンピュータシステムの略ブロック図である。
【図１】
0004364436.tif 000002
【図２】
0004364436.tif 000003
【図３】
0004364436.tif 000004
【図４】
0004364436.tif 000005
【図５】
0004364436.tif 000006
【図６】
0004364436.tif 000007
【図７】
0004364436.tif 000008
【図８】
0004364436.tif 000009
【図９】
0004364436.tif 000010
【図１０】
0004364436.tif 000011
【図１１】
0004364436.tif 000012