(57)【要約】【課題】立体表示に用いられる２つの画像をより少ない処理量で生成することのできる表示制御プログラムおよび情報処理システム、ならびにそれに向けられたプログラムを提供する。【解決手段】仮想空間の仮想的な撮影に用いられる右仮想カメラおよび左仮想カメラのカメラ方向は、各々のカメラ方向が同じ方向を向き、かつ、当該カメラ方向と両仮想カメラの位置を通る直線とが垂直になるように、仮想空間内にそれぞれの位置および方向が設定される。このとき、表示対象領域に対して、右仮想カメラの視体積および左仮想カメラの視体積の両方が当該表示対象領域を含むように、両仮想カメラの視体積が設定され、さらに、少なくとも一方の仮想カメラの視体積が、当該一方の仮想カメラの位置からカメラ方向に伸びる線に関して他方の仮想カメラが存在する側に偏在するように設定される。【選択図】図１２
2011120224.tif 000002
【特許請求の範囲】
【請求項１】
立体表示が可能な表示装置を制御するための表示制御プログラムであって、前記表示制御プログラムは、前記表示装置のコンピュータを、
所定の仮想空間を表現した画像を前記表示装置で立体表示するために用いられる右画像および左画像を生成するために、前記仮想空間の仮想的な撮影に用いられる右仮想カメラおよび左仮想カメラのカメラ方向が同じ方向を向き、かつ、当該カメラ方向と両仮想カメラの位置を通る直線とが垂直になるように、前記仮想空間内に両仮想カメラの位置および方向をそれぞれ設定する仮想カメラ設定手段と、
前記仮想空間の中で少なくとも前記表示装置に表示すべき領域である表示対象領域に対して、前記右仮想カメラの視体積および前記左仮想カメラの視体積の両方が当該表示対象領域を含むように、両仮想カメラの視体積を設定し、さらに、少なくとも一方の仮想カメラの視体積が、当該一方の仮想カメラの位置から前記カメラ方向に伸びる線に関して他方の仮想カメラが存在する側に偏在するように設定する視体積設定手段として機能させる、表示制御プログラム。
【請求項２】
前記仮想カメラ設定手段は、基準仮想カメラが前記仮想空間内に設定されることに応答して、前記右仮想カメラおよび前記左仮想カメラを、当該右仮想カメラおよび当該左仮想カメラの前記カメラ方向が、前記基準仮想カメラのカメラ方向である基準カメラ方向と同じ方向になるように設定し、
前記視体積設定手段は、前記基準仮想カメラの視体積に含まれ、前記基準カメラ方向と垂直な所定の面上の領域である仮想平面領域である基準仮想平面領域を前記表示対象領域として設定する、請求項１に記載の表示制御プログラム。
【請求項３】
前記仮想カメラ設定手段は、前記基準仮想カメラの配置位置を前記基準カメラ方向と垂直な方向に沿って右側に移動させた位置に前記右仮想カメラを設定すること、および、前記基準仮想カメラの配置位置を前記基準カメラ方向と垂直な方向に沿って左側に移動させた位置に前記左仮想カメラを設定すること、の少なくとも一方を実行する、請求項２に記載の表示制御プログラム。
【請求項４】
前記仮想カメラ設定手段は、前記基準仮想カメラの配置位置を前記基準カメラ方向と垂直な方向に沿って所定距離だけ右側に移動させた位置に前記右仮想カメラを設定するとともに、前記基準仮想カメラの配置位置を前記基準カメラ方向と垂直な方向に沿って前記所定距離だけ左側に移動させた位置に前記左仮想カメラを設定する、請求項３に記載の表示制御プログラム。
【請求項５】
前記視体積設定手段は、前記右仮想カメラの視体積における前記基準仮想平面領域に対応する位置の断面、および、前記左仮想カメラの視体積における前記基準仮想平面領域に対応する位置の断面が、いずれも前記基準仮想カメラの視体積における前記基準仮想平面領域に対応する位置の断面と一致するように、前記右仮想カメラおよび前記左仮想カメラの視体積を設定する、請求項２〜４のいずれか１項に記載の表示制御プログラム。
【請求項６】
前記視体積設定手段は、
前記基準仮想カメラの視体積に含まれる前記基準仮想平面領域の複数の頂点位置を取得し、
前記右仮想カメラの位置から前記複数の頂点位置のそれぞれに向かう線によって、前記右仮想カメラの視体積を設定し、
前記左仮想カメラの位置から前記複数の頂点位置のそれぞれに向かう線によって、前記左仮想カメラの視体積を設定する、請求項２〜４のいずれか１項に記載の表示制御プログラム。
【請求項７】
前記視体積設定手段は、前記基準仮想カメラの視体積のニアクリップ面およびファークリップ面を用いて、前記右仮想カメラおよび前記左仮想カメラの視体積を設定する、請求項２〜６のいずれか１項に記載の表示制御プログラム。
【請求項８】
前記表示制御プログラムは、さらに前記コンピュータを、前記視体積設定手段によって設定された、前記右仮想カメラおよび前記左仮想カメラの視体積を示す情報を出力する第１情報出力手段として機能させる、請求項２〜７のいずれか１項に記載の表示制御プログラム。
【請求項９】
前記表示制御プログラムは、さらに前記コンピュータを、前記仮想カメラ設定手段によって設定された、前記右仮想カメラと前記左仮想カメラとの間の距離を示す情報を出力する第２情報出力手段として機能させる、請求項２〜８のいずれか１項に記載の表示制御プログラム。
【請求項１０】
前記第２情報出力手段は、前記基準仮想平面領域の幅を基準とした、前記右仮想カメラと前記左仮想カメラとの間の距離の比を出力する、請求項９に記載の表示制御プログラム。
【請求項１１】
前記表示制御プログラムは、ライブラリとして実装されるプログラムを含む、請求項２〜１０のいずれか１項に記載の表示制御プログラム。
【請求項１２】
前記視体積設定手段は、前記右仮想カメラの視体積および前記左仮想カメラの視体積を互いに対称的に偏在するように設定する、請求項２〜１１のいずれか１項に記載の表示制御プログラム。
【請求項１３】
前記表示制御プログラムは、
前記右仮想カメラによって生成される前記右画像と前記左仮想カメラによって生成される前記左画像との間に生じる視差量を評価するための、前記基準仮想平面領域と平行な視差判定面の位置を指定するための情報を受付けるように構成される、請求項１２に記載の表示制御プログラム。
【請求項１４】
前記表示制御プログラムは、
前記右仮想カメラによって生成される前記右画像と前記左仮想カメラによって生成される前記左画像との間に生じる視差量を評価するための、前記基準仮想平面領域と平行な視差判定面を、前記両仮想カメラの視体積のうち前記基準仮想カメラから最も遠い位置に設定するように構成される、請求項１２に記載の表示制御プログラム。
【請求項１５】
前記視差判定面は、前記基準仮想平面領域に対して、前記基準仮想カメラとは反対側に設けられる、請求項１４に記載の表示制御プログラム。
【請求項１６】
前記仮想カメラ設定手段は、前記右仮想カメラと前記左仮想カメラとの間の許容される最大距離を決定する最大距離決定手段を含む、請求項２〜１５のいずれか１項に記載の表示制御プログラム。
【請求項１７】
前記表示制御プログラムは、さらに前記コンピュータを、第１および第２モードのいずれかを設定するモード設定手段として機能させ、
前記仮想カメラ設定手段は、
前記第１モードが設定された場合に、前記右仮想カメラによって生成される前記右画像と前記左仮想カメラによって生成される前記左画像との間に生じる視差量が予め定められた値を超えないように、前記右仮想カメラおよび前記左仮想カメラを設定し、
前記第２モードが設定された場合に、前記基準仮想平面領域から前記右仮想カメラおよび前記左仮想カメラまでの距離が予め定められた値となるように、前記右仮想カメラおよび前記左仮想カメラを設定する、請求項１６に記載の表示制御プログラム。
【請求項１８】
前記表示制御プログラムは、さらに前記コンピュータを、立体感変更指示に応答して、前記仮想カメラ設定手段によって設定された前記右仮想カメラの位置および前記左仮想カメラの位置の少なくとも一方を変更する変更受付手段として機能させる、請求項１〜１７のいずれか１項に記載の表示制御プログラム。
【請求項１９】
前記視体積設定手段は、前記変更受付手段によって、前記右仮想カメラの位置、または、前記左仮想カメラの位置が変更されたときに、前記右仮想カメラおよび前記左仮想カメラの視体積を変更する、請求項１８に記載の表示制御プログラム。
【請求項２０】
前記変更受付手段は、所定の一軸方向に沿うスライド操作に応じて、前記立体感変更指示を受付ける、請求項１７または１８に記載の表示制御プログラム。
【請求項２１】
前記変更受付手段は、前記仮想カメラ設定手段により最初に設定された前記右仮想カメラと前記左仮想カメラとの間の距離を前記立体感指示の調整幅の略最大値に対応させる、請求項１８〜２０のいずれか１項に記載の表示制御プログラム。
【請求項２２】
立体表示が可能な表示装置と、
所定の仮想空間を表現した画像を前記表示装置で立体表示するために用いられる右画像および左画像を生成するために、前記仮想空間の仮想的な撮影に用いられる右仮想カメラおよび左仮想カメラのカメラ方向が同じ方向を向き、かつ、当該カメラ方向と両仮想カメラの位置を通る直線とが垂直になるように、前記仮想空間内に両仮想カメラの位置および方向をそれぞれ設定する仮想カメラ設定手段と、
前記仮想空間の中で少なくとも前記表示装置に表示すべき領域である表示対象領域に対して、前記右仮想カメラの視体積および前記左仮想カメラの視体積の両方が当該表示対象領域を含むように、両仮想カメラの視体積を設定し、さらに、少なくとも一方の仮想カメラの視体積が、当該一方の仮想カメラの位置から前記カメラ方向に伸びる線に関して他方の仮想カメラが存在する側に偏在するように設定する視体積設定手段と備える、情報処理システム。
【請求項２３】
立体表示の制御に利用されるプログラムであって、前記プログラムはコンピュータを、
所定の仮想空間における基準仮想カメラを定義する第１プロジェクション行列および第１ビュー行列、ならびに、当該基準仮想カメラのカメラ方向である基準カメラ方向と垂直な所定の面上の領域である仮想平面領域までの当該基準仮想カメラからの距離の入力を受付ける入力手段と、
前記入力手段によって受付けられた、前記第１プロジェクション行列、前記第１ビュー行列、前記仮想平面領域までの前記基準仮想カメラからの距離に基づいて、前記仮想空間に前記基準仮想カメラを設定するとともに、前記仮想空間の仮想的な撮影に用いられる右仮想カメラおよび左仮想カメラのカメラ方向が同じ方向を向き、かつ、当該カメラ方向と両仮想カメラの位置を通る直線とが垂直になるように、前記仮想空間内に両仮想カメラの位置および方向をそれぞれ設定する仮想カメラ設定手段と、
前記仮想空間の中で少なくとも立体表示すべき領域である表示対象領域に対して、前記右仮想カメラの視体積および前記左仮想カメラの視体積の両方が当該表示対象領域を含むように、両仮想カメラの視体積を設定し、さらに、少なくとも一方の仮想カメラの視体積が、当該一方の仮想カメラの位置から前記カメラ方向に伸びる線に関して他方の仮想カメラが存在する側に偏在するように設定する視体積設定手段と、
前記仮想カメラ設定手段および前記視体積設定手段によって設定された前記右仮想カメラを定義する第２プロジェクション行列および第２ビュー行列と、前記仮想カメラ設定手段および前記視体積設定手段によって設定された前記左仮想カメラを定義する第３のプロジェクション行列および第３のビュー行列とを出力する出力手段として機能させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、立体表示が可能な表示装置で２つの画像を用いて立体表示を行なう際に使用される表示制御プログラムおよび情報処理システム、ならびにそれに向けられたプログラムに関する。
【背景技術】
【０００２】
従来から、所定の視差を有する２つの画像を用いて、立体表示を行なう方法が知られている。このような立体表示の適用先は、さまざまな分野へ広がりつつある。たとえば、ゲームやＣＧアニメーションといった、３次元仮想空間を表示するようなアプリケーションなどが開発されている。
【０００３】
このようなアプリケーションでは、３次元仮想空間内に２つの仮想カメラを設定し、それぞれの仮想カメラが仮想的に撮影することで得られる、オブジェクトなどの被写体を含む画像を用いて立体表示が行なわれる。ユーザにとって見やすい立体表示のためには、当該２つの仮想カメラを適切に設定する必要がある。たとえば、特開２００３−１０７６０３号公報（特許文献１）には、注目させたい部分にフォーカスを当てるように立体表示用の画像を生成する方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１０７６０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のような表示装置で立体表示を行なう際には、２つの仮想カメラがそれぞれ撮影することで得られる画像を重ね合わせて表示する必要がある。特開２００３−１０７６０３号公報（特許文献１）に開示される方法によれば、各々の視野範囲などを同じ設定のまま、それぞれの仮想カメラが異なる位置に配置される。この方法では、それぞれの仮想カメラが描画（出力）する画像の間には、重ならない部分が存在する。そのため、表示装置に実質的に表示される範囲よりもより広い範囲の画像を描画する必要があり、不要な無駄な処理が発生するという課題があった。
【０００６】
この発明は、このような課題を解決するためになされたものであって、その目的は、立体表示に用いられる２つの画像をより少ない処理量で生成することのできる表示制御プログラムおよび情報処理システム、ならびにそれに向けられたプログラムに関する。
【課題を解決するための手段】
【０００７】
この発明の第１の局面によれば、立体表示が可能な表示装置を制御するための表示制御プログラムを提供する。本表示制御プログラムは、表示装置のコンピュータを、所定の仮想空間を表現した画像を表示装置で立体表示するために用いられる右画像および左画像を生成するために、仮想空間の仮想的な撮影に用いられる右仮想カメラおよび左仮想カメラのカメラ方向が同じ方向を向き、かつ、当該カメラ方向と両仮想カメラの位置を通る直線とが垂直になるように、仮想空間内に両仮想カメラの位置および方向をそれぞれ設定する仮想カメラ設定手段と、仮想空間の中で少なくとも表示装置に表示すべき領域である表示対象領域に対して、右仮想カメラの視体積および左仮想カメラの視体積の両方が当該表示対象領域を含むように、両仮想カメラの視体積を設定し、さらに、少なくとも一方の仮想カメラの視体積が、当該一方の仮想カメラの位置からカメラ方向に伸びる線に関して他方の仮想カメラが存在する側に偏在するように設定する視体積設定手段として機能させる。
【０００８】
第１の局面に従う発明によれば、各々のカメラ方向が互いに平行になるように右仮想カメラおよび左仮想カメラが配置されるとともに、各仮想カメラに対して、他方の仮想カメラが存在する側に偏在した視体積が設定される。そのため、表示装置での立体表示に使用されない範囲の（余分な）画像を生成する必要がない。したがって、不要なレンダリング処理を抑制して、立体表示処理に係る処理量を削減することができる。
【０００９】
好ましい第２の局面によれば、仮想カメラ設定手段は、基準仮想カメラが仮想空間内に設定されることに応答して、右仮想カメラおよび左仮想カメラを、当該右仮想カメラおよび当該左仮想カメラのカメラ方向が、基準仮想カメラのカメラ方向である基準カメラ方向と同じ方向になるように設定し、視体積設定手段は、基準仮想カメラの視体積に含まれ、基準カメラ方向と垂直な所定の面上の領域である仮想平面領域である基準仮想平面領域を表示対象領域として設定する。
【００１０】
第２の局面に従う発明によれば、基準仮想カメラを仮想空間内に設定することで、対応する一対の仮想カメラ（右仮想カメラおよび左仮想カメラ）が設定される。そのため、立体表示を含むアプリケーションなどの制作者などからみれば、二次元表示のみを利用する（すなわち、立体表示を利用しない）アプリケーションを制作する場合と同様の作業量で、立体表示を行なうために必要な設定値を取得することができる。より具体的には、アプリケーションの制作者などは、仮想空間内に、表示装置の表示面に表示したい表示対象領域（基準仮想平面領域）が含まれるように、基準仮想カメラを設定するだけで、その基準仮想カメラを視点とした、立体表示を行なうために必要な右画像および左画像を容易に取得することができる。
【００１１】
また、仮想空間内の基準仮想平面領域に位置するオブジェクトは、表示装置の表示面に視差がない状態で表示されるので、当該アプリケーションをプレイするユーザにとって最も認識しやすい。さらに、基準仮想平面領域に設定された範囲は、表示装置で確実に表示されることが保証されるため、アプリケーションの制作者によってみれば、右仮想カメラおよび左仮想カメラの配置位置などを考慮することなく、基準仮想カメラおよび基準仮想平面領域のみを考慮すればよい。そのため、アプリケーションの制作が容易になる。
【００１２】
さらに好ましい第３の局面によれば、仮想カメラ設定手段は、基準仮想カメラの配置位置を基準カメラ方向と垂直な方向に沿って右側に移動させた位置に右仮想カメラを設定すること、および、基準仮想カメラの配置位置を基準カメラ方向と垂直な方向に沿って左側に移動させた位置に左仮想カメラを設定すること、の少なくとも一方を実行する。
【００１３】
第３の局面に従う発明によれば、右仮想カメラおよび／または左仮想カメラを基準仮想カメラのカメラ方向と垂直な方向に沿って配置するので、基準仮想平面領域に対する基準仮想カメラの位置関係と同じ位置関係を維持した状態に、右仮想カメラおよび左仮想カメラを設定できる。
【００１４】
さらに好ましい第４の局面によれば、仮想カメラ設定手段は、基準仮想カメラの配置位置を基準カメラ方向と垂直な方向に沿って所定距離だけ右側に移動させた位置に右仮想カメラを設定するとともに、基準仮想カメラの配置位置を基準カメラ方向と垂直な方向に沿って所定距離だけ左側に移動させた位置に左仮想カメラを設定する。
【００１５】
第４の局面に従う発明によれば、右仮想カメラの視野範囲（視体積）と左仮想カメラ視野範囲（視体積）とが、基準仮想カメラのカメラ方向を中心に対称的に設定される。このように設定される右仮想カメラおよび左仮想カメラで撮影した右画像および左画像を用いることで、ユーザにとってより自然な立体表示を提供することができる。
【００１６】
好ましい第５の局面によれば、視体積設定手段は、右仮想カメラの視体積における基準仮想平面領域に対応する位置の断面、および、左仮想カメラの視体積における基準仮想平面領域に対応する位置の断面が、いずれも基準仮想カメラの視体積における基準仮想平面領域に対応する位置の断面と一致するように、右仮想カメラおよび左仮想カメラの視体積を設定する。
【００１７】
好ましい第６の局面によれば、視体積設定手段は、右仮想カメラの位置から複数の頂点位置のそれぞれに向かう線によって、右仮想カメラの視体積を設定し、左仮想カメラの位置から複数の頂点位置のそれぞれに向かう線によって、左仮想カメラの視体積を設定する。
【００１８】
第５および第６の局面に従う発明によれば、右仮想カメラおよび左仮想カメラについて、基準仮想カメラの視体積に含まれる基準仮想平面領域と同じ範囲を含む視体積がそれぞれ設定される。すなわち、右仮想カメラおよび左仮想カメラの視体積は、基準仮想カメラの視体積に含まれる基準仮想平面領域と同じ範囲を過不足無く含む。そのため、右仮想カメラおよび左仮想カメラは、基準仮想カメラにより生成される画像と同じ大きさの画像（右画像および左画像）を生成する。したがって、レンダリング処理に要する負荷の増大を抑制することができる。また、基準仮想カメラからの視点の位置を維持したまま、表示装置において同じ被写体を立体表示することができる。
【００１９】
好ましい第７の局面によれば、視体積設定手段は、基準仮想カメラの視体積のニアクリップ面およびファークリップ面を用いて、右仮想カメラおよび左仮想カメラの視体積を設定する。
【００２０】
第７の局面に従う発明によれば、右仮想カメラおよび左仮想カメラは、基準仮想カメラによって描画される奥行き範囲と同じ奥行き範囲を有効に描画するので、レンダリング処理に要する負荷の増大を抑制することができる。また、基準仮想カメラの視点範囲を維持したまま、表示装置において同じ被写体を立体表示することができる。
【００２１】
好ましい第８の局面によれば、本表示制御プログラムは、さらにコンピュータを、視体積設定手段によって設定された、右仮想カメラおよび左仮想カメラの視体積を示す情報を出力する第１情報出力手段として機能させる。
【００２２】
第８の局面に従う発明によれば、右仮想カメラおよび左仮想カメラの視体積の情報を、本発明に係る表示制御プログラム以外の各種プログラムで利用することができる。
【００２３】
好ましい第９の局面によれば、表示制御プログラムは、さらにコンピュータを、仮想カメラ設定手段によって設定された、右仮想カメラと左仮想カメラとの間の距離を示す情報を出力する第２情報出力手段として機能させる。
【００２４】
第９の局面に従う発明によれば、右仮想カメラと左仮想カメラとの間の距離の情報を、本発明に係る表示制御プログラム以外の各種プログラムで利用することができる。
【００２５】
好ましい第１０の局面によれば、第２情報出力手段は、基準仮想平面領域の幅を基準とした、右仮想カメラと左仮想カメラとの間の距離の比を出力する。
【００２６】
第１０の局面に従う発明によれば、出力される距離の比は、仮想空間の無限遠にある共通のオブジェクトを右仮想カメラおよび左仮想カメラを用いてそれぞれ仮想的に撮影した場合に、当該オブジェクトが右画像と左画像との間でどの程度ずれるかを示す。そのため、たとえば、遠くの景色を１枚の画像で描画するような場合、右仮想カメラによって出力される右画像を、出力される距離の比に応じた値だけずらして表示し、同様に、左仮想カメラによって出力される左画像を、出力される距離の比に応じた値だけずらして表示することで、当該オブジェクトを最も奥にある絵として表現することができる。
【００２７】
好ましい第１１の局面によれば、表示制御プログラムは、ライブラリとして実装されるプログラムを含む。
【００２８】
第１１の局面に従う発明によれば、本発明に係る表示制御プログラムを複数のアプリケーションによって共通に利用することができる。
【００２９】
さらに好ましい第１２の局面によれば、視体積設定手段は、右仮想カメラの視体積および左仮想カメラの視体積を互いに対称的に偏在するように設定する。
【００３０】
第１２の局面に従う発明によれば、人間の視野に対応する右画像および左画像を生成できるので、より自然な立体表示を行なうことができる。
【００３１】
さらに好ましい第１３の局面によれば、表示制御プログラムは、右仮想カメラによって生成される右画像と左仮想カメラによって生成される左画像との間に生じる視差量を評価するための、基準仮想平面領域と平行な視差判定面の位置を指定するための情報を受付けるように構成される。
【００３２】
第１３の局面に従う発明によれば、右画像と左画像との間に生じる視差量を評価した上で、右仮想カメラおよび左仮想カメラを設定できる。そのため、立体表示をユーザが気持ちよく受け入れることができる範囲に、右仮想カメラおよび左仮想カメラを適切に設定できる。
【００３３】
さらに好ましい第１４の局面によれば、表示制御プログラムは、右仮想カメラによって生成される右画像と左仮想カメラによって生成される左画像との間に生じる視差量を評価するための、基準仮想平面領域と平行な視差判定面を、両仮想カメラの視体積のうち基準仮想カメラから最も遠い位置に設定するように構成される。
【００３４】
第１４の局面に従う発明によれば、右画像と左画像との間に生じる視差量を評価するための視差判定面が予め定められた位置に設定されるので、両仮想カメラの視体積のみを設定すれば、視差判定面を設定するための情報を入力する必要がない。また、両仮想カメラの視体積（レンダリングされる領域）に含まれるオブジェクトのうち、基準仮想カメラから最も遠い位置にあるオブジェクトについての視差量が最大となるので、視差判定面において視差量を評価すれば、それ以外の位置にあるオブジェクトについて生じる視差量を考慮する必要がない。そのため、アプリケーションの制作をより簡素化できる。
【００３５】
さらに好ましい第１５の局面によれば、視差判定面は、基準仮想平面領域に対して、基準仮想カメラとは反対側に設けられる。
【００３６】
第１５の局面に従う発明によれば、ユーザから見れば表示装置の表示面より奥側に仮想空間（典型的には、ゲーム空間など）が表現されるので、表示面上にほこりや汚れなどがあっても、当該仮想空間を違和感なく見ることができる。
【００３７】
好ましい第１６の局面によれば、仮想カメラ設定手段は、右仮想カメラと左仮想カメラとの間の許容される最大距離を決定する最大距離決定手段を含む。
【００３８】
第１６の局面に従う発明によれば、実際にユーザが表示装置を見る際の状況に応じて、右仮想カメラおよび左仮想カメラが設定されるので、ユーザが実際に仮想空間にいるような状況を再現することができる。
【００３９】
さらに好ましい第１７の局面によれば、表示制御プログラムは、さらにコンピュータを、第１および第２モードのいずれかを設定するモード設定手段として機能させる。仮想カメラ設定手段は、第１モードが設定された場合に、右仮想カメラによって生成される右画像と左仮想カメラによって生成される左画像との間に生じる視差量が予め定められた値を超えないように、右仮想カメラおよび左仮想カメラを設定し、第２モードが設定された場合に、基準仮想平面領域から右仮想カメラおよび左仮想カメラまでの距離が予め定められた値となるように、右仮想カメラおよび左仮想カメラを設定する。
【００４０】
第１７の局面に従う発明によれば、典型的には、アプリケーションでのゲーム進行などに応じて、アプリケーションの制作者が意図した場面を立体表示した状況、および、ユーザが実際に仮想空間にいるような状況を再現したい状況のいずれについても対応することができる。
【００４１】
好ましい第１８の局面によれば、本表示制御プログラムは、さらにコンピュータを、立体感変更指示に応答して、仮想カメラ設定手段によって設定された右仮想カメラの位置および左仮想カメラの位置の少なくとも一方を変更する変更受付手段として機能させる。
【００４２】
さらに好ましい第１９の局面によれば、視体積設定手段は、変更受付手段によって、右仮想カメラの位置、または、左仮想カメラの位置が変更されたときに、右仮想カメラおよび左仮想カメラの視体積を変更する。
【００４３】
第１８および第１９の局面に従う発明によれば、各ユーザにおける立体表示の見え方などに応じて、立体感を適宜調整することができる。
【００４４】
さらに好ましい第２０の局面によれば、変更受付手段は、所定の一軸方向に沿うスライド操作に応じて、立体感変更指示を受付ける。
【００４５】
さらに好ましい第２１の局面によれば、変更受付手段は、仮想カメラ設定手段により最初に設定された右仮想カメラと左仮想カメラとの間の距離を立体感指示の調整幅の略最大値に対応させる。
【００４６】
第２０および第２１の局面に従う発明によれば、ユーザは、スライド操作を行なうことで、表示装置に表現される立体表示の立体度合を直感的に操作することができる。
【００４７】
この発明の第２２の局面に従う情報処理システムは、立体表示が可能な表示装置と、所定の仮想空間を表現した画像を表示装置で立体表示するために用いられる右画像および左画像を生成するために、仮想空間の仮想的な撮影に用いられる右仮想カメラおよび左仮想カメラのカメラ方向が同じ方向を向き、かつ、当該カメラ方向と両仮想カメラの位置を通る直線とが垂直になるように、仮想空間内に両仮想カメラの位置および方向をそれぞれ設定する仮想カメラ設定手段と、仮想空間の中で少なくとも表示装置に表示すべき領域である表示対象領域に対して、右仮想カメラの視体積および左仮想カメラの視体積の両方が当該表示対象領域を含むように、両仮想カメラの視体積を設定し、さらに、少なくとも一方の仮想カメラの視体積が、当該一方の仮想カメラの位置からカメラ方向に伸びる線に関して他方の仮想カメラが存在する側に偏在するように設定する視体積設定手段と含む。
【００４８】
第２２の局面に従う発明によれば、上述の第１の局面に従う発明と同様の作用効果を得ることができる。
【００４９】
第２３の局面に従えば、立体表示の制御に利用されるプログラムを提供する。プログラムはコンピュータを、所定の仮想空間における基準仮想カメラを定義する第１プロジェクション行列および第１ビュー行列、ならびに、当該基準仮想カメラのカメラ方向である基準カメラ方向と垂直な所定の面上の領域である仮想平面領域までの当該基準仮想カメラからの距離の入力を受付ける入力手段と、入力手段によって受付けられた、第１プロジェクション行列、第１ビュー行列、仮想平面領域までの基準仮想カメラからの距離に基づいて、仮想空間に基準仮想カメラを設定するとともに、仮想空間の仮想的な撮影に用いられる右仮想カメラおよび左仮想カメラのカメラ方向が同じ方向を向き、かつ、当該カメラ方向と両仮想カメラの位置を通る直線とが垂直になるように、仮想空間内に両仮想カメラの位置および方向をそれぞれ設定する仮想カメラ設定手段と、仮想空間の中で少なくとも立体表示すべき領域である表示対象領域に対して、右仮想カメラの視体積および左仮想カメラの視体積の両方が当該表示対象領域を含むように、両仮想カメラの視体積を設定し、さらに、少なくとも一方の仮想カメラの視体積が、当該一方の仮想カメラの位置からカメラ方向に伸びる線に関して他方の仮想カメラが存在する側に偏在するように設定する視体積設定手段と、仮想カメラ設定手段および視体積設定手段によって設定された右仮想カメラを定義する第２プロジェクション行列および第２ビュー行列と、仮想カメラ設定手段および視体積設定手段によって設定された左仮想カメラを定義する第３のプロジェクション行列および第３のビュー行列とを出力する出力手段として機能させる。
【００５０】
第２３の局面に従う発明によれば、典型的には、立体表示を行なうことが可能なアプリケーションなどと連携して、より容易に立体表示機能を提供することができる。
【００５１】
上述の記載においては、本発明の理解を助けるために後述の実施形態との対応関係を示す補足説明等を付したが、これらは本発明を何ら限定するものではない。
【発明の効果】
【００５２】
本発明のある局面によれば、立体表示に必要な画像をより少ない数のパラメータの設定で生成することができる。
【図面の簡単な説明】
【００５３】
【図１】本発明の実施の形態に従う立体表示処理を関連する平面表示処理と対比して説明するための図である。
【図２】本発明の実施の形態に従う仮想カメラの視野範囲を説明するための図である。
【図３】本発明の実施の形態に従う立体表示処理に係る機能を示す模式図である。
【図４】本発明の実施の形態に従う表示装置の構造の一例を示す図である。
【図５】本発明の実施の形態に従う情報処理システムの内部構成を示すブロック図である。
【図６】本発明の実施の形態に従う情報処理システムにおいて実装されるプログラム構成の一例を示す図である。
【図７】図６に示す立体表示用ライブラリについて入出力されるデータ項目を説明するための図である。
【図８】本発明の実施の形態に従う立体表示処理の対象となる３次元仮想空間の一例を示す模式図である。
【図９】図８に示す状態において生成される画像（右画像および左画像）の生成処理を示す模式図である。
【図１０】図９に示す右仮想カメラおよび左仮想カメラによってそれぞれ生成される画像の一例を示す図である。
【図１１】本発明の実施の形態に従うカメラ行列を説明するための図である。
【図１２】本発明の実施の形態に従う右仮想カメラおよび左仮想カメラの設定処理を２次元的に説明するための図である。
【図１３】図１２に示す右仮想カメラおよび左仮想カメラの設定処理の処理結果に応じて設定される視体積を示す図である。
【図１４】本発明の実施の形態の変形例に従う右仮想カメラおよび左仮想カメラの設定処理を２次元的に説明するための図である。
【図１５】この発明の実施の形態に従うリアルモードにおける処理内容を説明するための図である。
【図１６】本発明の実施の形態に従うユーザによる立体感調整を受付ける構成の一例を示す図である。
【図１７】本発明の実施の形態に従うユーザによる立体感調整を受付ける構成の一例を示す図である。
【図１８】本発明の実施の形態に従うユーザによる立体感調整を受付ける構成の一例を示す図である。
【図１９】本発明の実施の形態に従う立体表示用ライブラリの戻り値の算出処理を説明するための図である。
【図２０】本実施の形態の変形例に従う立体表示用ライブラリについて入出力データ項目を説明するための図である。
【図２１】本発明の実施の形態に従うプログラムのメインルーチンを示すフローチャートである。
【図２２】本発明の実施の形態に従う立体表示用ライブラリの処理内容を示すフローチャートである。
【発明を実施するための形態】
【００５４】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００５５】
＜Ａ．概要および概念＞
本発明のある局面によれば、典型的には、立体表示を含むアプリケーションなどを制作する場合であっても、平面表示のみを含むアプリケーションと同様の作業量で済むような環境を提供することを目的とする。そこで、まず、本発明に係る概要および概念について、図１〜図３を参照して説明する。
【００５６】
［ａ１．立体表示］
図１は、本発明の実施の形態に従う立体表示処理を関連する平面表示処理と対比して説明するための図である。図１（Ａ）を参照して、オブジェクトＯＢＪ１およびＯＢＪ２を含む３次元仮想空間を表現した画像を表示装置１０に表示する場合を考える。この場合には、オブジェクトＯＢＪ１およびＯＢＪ２が配置された３次元仮想空間内のいずれかの位置に仮想カメラ３００が設定される。そして、３次元仮想空間内のオブジェクトＯＢＪ１およびＯＢＪ２などを、仮想カメラ３００で仮想的に撮影することで、画像（平面２次元画像）を生成する。この基準仮想カメラ３００によって生成される画像からなる表示データに基づいて、表示装置１０において平面表示がなされる。
【００５７】
ここで、仮想カメラ３００は、立体表示を行なわず平面表示のみを行なう処理において設定される、３次元仮想空間および３次元仮想空間内のオブジェクトを仮想的に撮影する。
【００５８】
後述するように、本実施の形態に従う立体表示処理では、上述の図１（Ａ）に示す平面表示を行なう場合に要するパラメータと同様のパラメータを指定することで、表示装置１０における立体表示に必要な、一対の画像（右画像および左画像）を生成する。
【００５９】
以下、図１（Ｂ）を参照して、一例として、上述の平面表示においてレンダリングされた範囲と同様の範囲を立体表示する処理について説明する。
【００６０】
この場合には、まず、オブジェクトＯＢＪ１およびＯＢＪ２を含む３次元仮想空間内において、上述の図１に示す平面表示をするときと同じように、仮想カメラ３００が指定される（なお、この「平面表示をするときと同じように設定される仮想カメラ」を基準仮想カメラと呼ぶ）。この基準仮想カメラ３００の配置位置を基準として、右画像を生成するための右仮想カメラ３０２および左画像を生成するための左仮想カメラ３０４の位置および方向が設定される。より具体的には、基準仮想カメラ３００のカメラ位置を基準として、基準仮想カメラ３００に対して右方向に距離Ｃだけ離れるように、右仮想カメラ３０２を設定し、基準仮想カメラ３００に対して左方向に距離Ｃだけ離れるように、左仮想カメラ３０４を設定する。なお、右仮想カメラと左仮想カメラのカメラ方向および画角は、基準仮想カメラ３００のカメラ方向および画角と同じ値に設定される。つまり、この際、後述するように、右仮想カメラ３０２および左仮想カメラ３０４の視野範囲（視体積）もそれぞれ設定される。このように、配置された右仮想カメラ３０２および左仮想カメラ３０４で、３次元仮想空間内のオブジェクトＯＢＪ１およびＯＢＪ２などを仮想的に撮影することで、右画像および左画像がそれぞれ生成される。
【００６１】
そして、右画像に基づいて右眼用の表示データが生成されるとともに、左画像に基づいて左眼用の表示データが生成される。これらの表示データに基づいて、表示装置１０において立体表示がなされる。
【００６２】
概略すると、本実施の形態に従う立体表示処理においては、仮想空間を表現した画像を表示装置１０で立体表示するために用いられる右画像および左画像を生成するために、基準仮想カメラ３００を基準にして、仮想空間（および、それに含まれるオブジェクト）の仮想的な撮影に用いられる右仮想カメラ３０２および左仮想カメラ３０４がそれぞれ仮想空間内に設定される。このとき、右仮想カメラ３０２のカメラ方向３０３と左仮想カメラ３０４のカメラ方向３０５とが同じ方向を向き（すなわち、カメラ方向３０３とカメラ方向３０５とが平行であり）、かつ、カメラ方向３０３（および、カメラ方向３０５）と右仮想カメラ３０２および左仮想カメラ３０４の位置を通る直線（基準線３５０）とが垂直になるように、仮想空間内に右仮想カメラ３０２および左仮想カメラ３０４が設定される。
【００６３】
このように右仮想カメラ３０２および左仮想カメラ３０４が設定されると、右仮想カメラ３０２および左仮想カメラ３０４のそれぞれについて視野範囲（視体積）が設定される。このとき、表示装置１０の表示面付近に表示させたい範囲である表示対象領域（典型的には、仮想空間内に設定される２次元平面である基準仮想平面領域３６０や特定のオブジェクトが存在する範囲）が指定される。すなわち、表示対象領域は、仮想空間の中で少なくとも表示装置に表示すべき領域に相当する。この表示対象領域は、カメラ方向３０３および３０５に垂直であり、かつ、カメラ方向３０３および３０５側に設定される。そして、右仮想カメラ３０２および左仮想カメラ３０４については、両仮想カメラの視体積のいずれもが、表示対象領域を含むように、右仮想カメラ３０２の視体積３８２および左仮想カメラ３０４の視体積３８４がそれぞれ設定される。
【００６４】
すなわち、表示対象領域の面は、カメラ方向３０３および３０５に垂直である。また、表示対象領域は、右仮想カメラ３０２または左仮想カメラ３０４から見ると、それぞれカメラ方向３０３および３０５の側に存在する。また、右仮想カメラ３０２と左仮想カメラ３０４との中間点から表示対象領域の中心へ伸びる方向は、カメラ方向３０３および３０５と一致する。
【００６５】
さらに、少なくとも一方の仮想カメラに関して、当該一方の仮想カメラの視体積は、他方の仮想カメラの位置から対応するカメラ方向（カメラ方向３０３または３０５）に伸びる線に関して、他方の仮想カメラが存在する側に偏在するように設定される。
【００６６】
ここで、一方の仮想カメラの視体積が、当該仮想カメラのカメラ方向に関して他方の仮想カメラが存在する側に「偏在」するとは、当該一方の仮想カメラの位置から、当該一方の仮想カメラのカメラ方向に伸ばした直線を当該一方の仮想カメラのカメラ軸とみなしたときに、当該一方の仮想カメラの視体積に含まれる、当該一方の仮想カメラのカメラ軸に垂直な任意の平面の中心（重心）が、当該カメラ軸よりも、他方の仮想カメラが存在する側に寄っていることをいう。言い換えれば、一方の仮想カメラの視体積全体の重心が、当該一方の仮想カメラのカメラ軸に対して、他方の仮想カメラが存在する側に偏っている状態を意味する。
【００６７】
なお、右仮想カメラ３０２の視体積および左仮想カメラ３０４の視体積を互いに対称的に偏在することがより好ましい。これにより、人間の視野に対応する右画像および左画像を生成できるので、より自然な立体表示を行なうことができる。
【００６８】
上述のような立体表示処理によれば、アプリケーションの制作者などから見れば、図１（Ａ）に示すような、平面表示のみを利用する（立体表示を利用しない）アプリケーションと同様に基準仮想カメラ３００の設定値を指定することで、立体表示を行なうために必要な、右仮想カメラ３０２および左仮想カメラ３０４の設定値を取得することができる。
【００６９】
また、上述のような立体表示処理によれば、右仮想カメラ３０２および左仮想カメラ３０４に対して、それぞれ他方の仮想カメラが存在する側に偏在した視体積が設定されることになるので、表示装置１０での立体表示に使用されない範囲の（余分な）画像を生成することがない。したがって、不要なレンダリング処理を抑制して、立体表示処理に係る処理量を削減することができる。
【００７０】
［ａ２．用語］
（ｉ）  本明細書において、「立体表示」とは、画像に含まれる少なくとも一部の対象物をユーザに立体的に視認させることができるように、当該画像を表現することを意味する。典型的には、視差を有する一対の平面２次元画像（ステレオ画像）をユーザに視認させて、眼や脳の生理的な働きを利用することで、当該ユーザに立体感を感じさせる。
【００７１】
本明細書において、「視差」とは、ユーザの右眼で視認される像と、ユーザの左眼で視認される像との間における、対象点の見え方の違いを意味する。典型的には、ある対象物を異なる複数の観測点から観測した場合に、それぞれの観測点で観測される内容に基づいて画像をそれぞれ生成した場合に、これらの画像は視差を有する画像となる。また、右眼用の画像を生成するための観測点と左眼用の画像を生成するための観測点との差に依存して、ある対象物についての、表示される右眼用の画像内の像と左眼用の画像内の像とは、それぞれの現れる位置が異なる。このような、２つの画像内における同一対象物についての像の位置の差の大きさを「視差量」と称す。
（ｉｉ）  本明細書において、「右」および「左」とは、ユーザがいずれの眼で視認するかを区別するために使用される。すなわち、上述した「右画像」は、ユーザが右眼で視認されることが予定されている画像であることを示し、上述した「左画像」は、ユーザが左眼で視認されることが予定されている画像であることを示す。また、「右画像」を生成する仮想カメラを「右仮想カメラ」とも称し、「左画像」を生成する仮想カメラを「左仮想カメラ」とも称する。
（ｉｉｉ）  本明細書において、「視体積」とは、以下のような範囲を意味する。図２は、本発明の実施の形態に従う仮想カメラの視野範囲を説明するための図である。図２を参照して、本実施の形態に従う仮想カメラは、３次元仮想空間のうちカメラ方向の所定範囲（図２においてハッチング表示されている範囲）にあるオブジェクトのみをレンダリングする。言い換えれば、仮想カメラの視野角（図２において破線で囲む範囲）の外になる範囲はレンダリングされない。また、仮想カメラに対して、近傍側に「ニアクリップ面」が設定され、遠方側に「ファークリップ面」が設定される。これらのニアクリップ面およびファークリップ面は、仮想カメラのカメラ方向の線に対して垂直となるように設定される。このニアクリップ面とファークリップ面との間に存在するオブジェクトであり、かつ、仮想カメラの視野角の内に含まれるオブジェクトがレンダリング対象となる。
【００７２】
このように仮想カメラによる仮想的な撮影によって画像を生成する際の、ユーザが現実に見える範囲（すなわち、レンダリングされる範囲）を「視体積」とも称す。より具体的には、仮想カメラ位置を頂点とし当該仮想カメラのファークリップ面を底面とする四角錐の全体のうち、ニアクリップ面を一方面としファークリップ面を他方面とする四角錐体を「視体積」と称す。この「視体積」は、「ビューフラスタム」または「視錐体」と称されることもある。したがって、３次元仮想空間をある視体積（視野範囲）を有する仮想カメラで撮影したときには、当該視体積の内に含まれる空間が、当該仮想カメラによってレンダリングされることになる。
【００７３】
上述の例について見れば、図１（Ａ）に示す基準仮想カメラ３００に対応して視体積３８０が設定され、図１（Ｂ）に示す右仮想カメラ３０２に対応して視体積３８２が設定され、図１（Ｂ）に示す左仮想カメラ３０４に対応して視体積３８４が設定される。
（ｉｖ）  表示装置１０において立体表示を行なう場合には、表示装置１０の表示面の位置に対応する平面（３次元仮想空間の中で、立体表示を見るユーザが表示装置１０の表示面の位置に存在すると感じる面）である「基準仮想面」が３次元仮想空間内に設定される（図２参照）。なお、基準仮想面は、「３次元仮想空間の中で、立体表示を見るユーザが表示装置１０の表示面から所定のオフセットを持った位置に存在すると感じる面」としてもよい。この「基準仮想面」についても、カメラ方向に対して垂直となるように設定される。さらに、表示装置１０の表示面の実サイズは有限であるから、当該基準仮想面のうち、表示装置１０の表示面にレンダリングされる範囲に対応する「基準仮想平面領域」を定義することができる。すなわち、無限面である基準仮想面のうち、レンダリングされる範囲（視体積に含まれる範囲）が、「基準仮想平面領域」である。
【００７４】
「基準仮想平面領域」は、表示装置１０において立体表示を行なう際に、ユーザが表示装置１０の表示面付近（前述の通り、典型的にはちょうど表示面の位置であるが、例えば表示面から所定のオフセットを持った位置として設定してもよい）にあるように感じる３次元仮想空間内の位置および領域を定義する。すなわち、立体表示は、表示装置１０の表示面の手前側に飛び出して見える部分や、表示面の奥に引っ込んで見える部分を含むが、ユーザにとってみれば、基準仮想平面領域の付近に対応する空間がちょうど表示装置１０の表示面付近にあるように見えることになる。右仮想カメラ３０２および左仮想カメラ３０４が、図１（Ｂ）に示すような位置に設定された場合には、両仮想カメラによって生成される右画像および左画像の間では、基準仮想平面領域の付近に対応する空間に位置するオブジェクトについての表示のされ方が互いに一致する（すなわち、視差が実質的に無くなる）。
【００７５】
したがって、表示装置１０の表示面を見るユーザにとってみれば、基準仮想平面領域に対応する部分（にあるオブジェクト）については、右眼で視認する画像（右画像）と左眼で視認する画像（左画像）との間で実質的に同じ位置に見え、その結果、両画像を現実に表示している面である、表示装置１０の表示面上に当該部分が存在するように見える。
【００７６】
一方、基準仮想平面領域とは異なる位置に設定された面に対応する部分（にあるオブジェクト）については、右仮想カメラ３０２と左仮想カメラ３０４との位置関係に応じて、右オブジェクト画像と左オブジェクト画像の表示位置が異なったものとなり（すなわち、何らかの視差を有する表示となり）、ユーザにとってみれば、表示装置１０の表示面から飛び出した位置または引っ込んだ位置に存在するように見える。
（ｖ）  上述したように、本実施の形態においては、視差を有する一対の平面２次元画像を表示装置１０に表示させることで、ユーザに立体感を感じさせる。この一対の平面２次元画像内のあるオブジェクトについての視差量が大きくなればなるほど、当該オブジェクトはユーザにとってより大きな立体感をもって視認されることになるが、視差量が一定値を超えて大きくなると、逆にユーザは立体感を感じにくくなる。そのため、表示装置１０で立体表示を行なう際には、視差量を適切な範囲に維持する必要がある。以下では、ユーザが表示装置１０において立体表示を気持ちよく受け入れることができる、表示面上における右画像と左画像との間の最大視差量を「限界視差量」と称す。この立体感を気持ちよく感じられるしきい値、すなわち限界視差量は、表示装置１０の表示面についての実画面幅、ユーザの眼の実間隔、およびユーザから表示装置１０の表示面までの実距離などによって決まる。
【００７７】
したがって、本実施の形態においては、ユーザに視認させたいオブジェクトについての視差量がこの限界視差量以下の視差量となるように、当該オブジェクトが表示装置１０の表示面に表示される。
【００７８】
このような表示装置１０に表示されるオブジェクトについての立体感を制御するために、本実施の形態においては、発生する視差量を評価するための平面が３次元仮想空間内に設定される。以下では、このような視差量を評価するための平面を「視差判定面」と称する（図２参照）。この視差判定面についても、仮想カメラのカメラ方向に対して垂直となるように設定される。すなわち、視差判定面は、基準仮想面よりも奥側（仮想カメラと反対側）の位置に、基準仮想平面と平行に設定される。
【００７９】
より具体的には、３次元仮想空間内に設定される視差判定面に位置する表示対象を右仮想カメラおよび左仮想カメラでそれぞれ仮想的に撮影して得られる右画像および左画像の間では、右仮想カメラと左仮想カメラとの間の位置関係に応じた視差が生じる。そして、この視差判定面に位置するオブジェクトについての位置ずれ量が所定のしきい値を超えないように、右仮想カメラおよび左仮想カメラが設定される。これにより、視差判定面より手前（仮想カメラ側）に存在する各オブジェクトについての視差量が限界視差量以下とすることができる。なお、基準仮想面より手前側の位置に、別途の視差判定面(第２の視差判定面)を設けて、当該視差判定面に位置する表示対象についての位置ずれ量が所定のしきい値を超えないように、仮想カメラを設定してもよい。以下に説明する本実施の形態では、基準仮想面を所望の位置に設定できるように、第２の視差判定面は設けない例を示す。
【００８０】
［ａ３．機能および処理］
図３は、本発明の実施の形態に従う立体表示処理に係る機能を示す模式図である。図３を参照して、本実施の形態に従う立体表示処理は、仮想カメラ設定機能５０と、視体積設定機能６０と、変更受付機能７０と、モード設定機能８０と、レンダリング機能９０とを含む。
【００８１】
仮想カメラ設定機能５０は、３次元仮想空間内のオブジェクトを表示装置１０で立体表示するために用いられる右画像および左画像を生成するための、右仮想カメラ３０２および左仮想カメラ３０４の３次元仮想空間内における配置位置を決定する。
【００８２】
視体積設定機能６０は、仮想カメラ設定機能５０によってその配置位置が決定された右仮想カメラ３０２および左仮想カメラ３０４に対して、それぞれ視体積３８２および３８４を設定する。なお、後述する実施の形態においては、右仮想カメラ３０２および左仮想カメラ３０４の配置位置および視体積を並列的に決定する例を示すが、配置位置と視体積とを直列的に決定するようにしてもよい。
【００８３】
より具体的には、仮想カメラ設定機能５０は、最大距離決定機能５１を含む。最大距離決定機能５１は、右仮想カメラ３０２と左仮想カメラ３０４との間の許容される最大距離を決定する。右仮想カメラ３０２と左仮想カメラ３０４との間の３次元仮想空間における距離が大きくなるほど（言い換えれば、２つの仮想カメラの間が離れるほど）、右画像と左画像との間には、より大きな視差量が生じ得る。一方、上述したように、右画像と左画像との間の視差量が一定値を超えて大きくなると、ユーザは立体感を感じにくくなる。そのため、最大距離決定機能５１は、アプリケーションやユーザなどによって与えられる各種条件下において、右仮想カメラ３０２と左仮想カメラ３０４との間をどの程度まで離して配置することができるかを決定する。
【００８４】
上述のように、仮想カメラ設定機能５０および視体積設定機能６０は、何らかの方法によって設定される基準カメラ情報に基づいて、右仮想カメラ３０２および左仮想カメラ３０４の設定値を算出する。
【００８５】
変更受付機能７０は、立体感変更指示に応答して、仮想カメラ設定機能５０によって決定されている右仮想カメラ３０２の配置位置および左仮想カメラ３０４の配置位置の少なくとも一方を変更する。これは、基本的には、仮想カメラ設定機能５０においては、与えられた条件下において許容される最大値となるように、右仮想カメラ３０２および左仮想カメラ３０４の配置位置が決定されるが、これらの設定値を必ずしもそのまま用いるのではなく、さらに調整したいというニーズがあるためである。なお、立体感変更指示は、表示装置１０において提供される立体感の度合いの変更を示す指示である。この立体感変更指示は、ユーザが実際に立体表示されるオブジェクトを見ながら入力する形態に加えて、アプリケーションの制作者が予め意図した範囲に立体感を制限するために与えられる形態もある。
【００８６】
また、変更受付機能７０によって、右仮想カメラ３０２および左仮想カメラ３０４の少なくとも一方の配置位置が変更されると、視体積設定機能６０は、先に設定されている右仮想カメラ３０２および左仮想カメラ３０４の視体積３８２および／または３８４を変更する。すなわち、視体積設定機能６０は、右仮想カメラ３０２および／または左仮想カメラ３０４の配置位置の変更に応じて、より適切な視体積をそれぞれ設定する。
【００８７】
なお、変更受付機能７０に対して入力される、ユーザからの立体感変更指示を受付けるための入力手段の一例については、図１６〜図１８を参照して、後ほど詳細に説明する。
【００８８】
本実施の形態に従う立体表示処理においては、表示装置１０における立体表示に係るモードとして、２つのモード（「アプリケーション優先モード」および「リアルモード」）が選択的可能になっている。モード設定機能８０は、アプリケーション（すなわち、アプリケーションの制作者の意図）やユーザなどによって与えられるモード設定に応答して、「アプリケーション優先モード」および「リアルモード」をいずれかを設定する。
【００８９】
「アプリケーション優先モード」では、アプリケーションの制作者が意図した範囲の内容を立体表示できるように、右仮想カメラ３０２および左仮想カメラ３０４の設定値が決定される。より具体的には、「アプリケーション優先モード」が設定された場合に、仮想カメラ設定機能５０は、右仮想カメラ３０２によって生成される右画像と左仮想カメラ３０４によって生成される左画像との間に生じる視差量が、（アプリケーションなどによって）予め定められた値を超えないように、右仮想カメラ３０２および左仮想カメラ３０４を設定する。
【００９０】
一方、「リアルモード」では、ユーザに対して、３次元仮想空間に存在しているかのような感覚を与えることができるように、右仮想カメラ３０２および左仮想カメラ３０４の設定値が決定される。より具体的には、「リアルモード」が設定された場合に、仮想カメラ設定機能５０は、基準仮想平面領域から右仮想カメラ３０２および左仮想カメラ３０４までの距離が予め定められた値となるように、右仮想カメラ３０２および左仮想カメラ３０４を設定する。なお、各モードにおける、右仮想カメラ３０２および左仮想カメラ３０４の設定値を決定する処理の具体例については、図１１〜図１５を参照して、詳細に説明する。
【００９１】
レンダリング機能９０は、仮想カメラ設定機能５０および視体積設定機能６０によって決定される右仮想カメラ３０２および左仮想カメラ３０４の設定値に基づいて、オブジェクト定義９２を参照して、右画像および左画像を生成する。このオブジェクト定義９２は、３次元仮想空間および当該３次元仮想空間内のオブジェクトなどの情報を含む。すなわち、レンダリング機能９０は、３次元仮想空間内のオブジェクトを右仮想カメラ３０２および左仮想カメラ３０４でそれぞれ仮想的に撮影することで、当該オブジェクトを表示装置１０で立体表示するために用いられる、右画像および左画像を生成する。
【００９２】
なお、上述した、各仮想カメラの３次元仮想空間内の配置位置および視体積などは、任意の方法で指定することが可能であるが、関連する３次元仮想空間についてのレンダリング技術などとの一貫性を維持する観点からは、カメラ行列（プロジェクション行列およびビュー行列）として定義することが好ましい。このカメラ行列の詳細については、後述する。
【００９３】
＜Ｂ．典型的な実装＞
［ｂ１．表示装置］
表示装置１０としては、ユーザに向けて立体表示が可能なデバイスであれば、任意の型式の表示デバイスを採用することができる。すなわち、表示装置１０としては、視差を有する２つの画像をユーザがそれぞれの眼で視認できるようなデバイスであればよい。典型的には、例えば、前面視差バリアタイプの液晶表示デバイスやレンチキュラータイプの表示デバイスなどを用いることができる。あるいは、表示装置１０として、それに含まれる主波長成分の異なる２つの画像をそれぞれ独立に表示するとともに、透過波長範囲の異なる２つのカラーフィルタがそれぞれ組込まれたメガネをユーザに装着させることで、立体表示を行なう構成を採用してもよい。これに類似の構成として、偏光方向を異ならせて２つの画像をそれぞれ表示するとともに、当該２つの偏光方向に対応する偏光フィルタがそれぞれ組込まれたメガネをユーザに装着させることで、立体表示を行なう構成であってもよい。
【００９４】
以下、図４を参照して、視差光学系として視差バリアを有する前面視差バリアタイプの構成を採用した場合の表示装置１０の構成について説明する。この表示装置１０では、その表示面に、一定の視差を有する一対の右画像と左画像とを表示することで、左右両表示画像の間の視差量に応じた立体感をユーザに視認させることができる。
【００９５】
図４は、本発明の実施の形態に従う表示装置１０の構造の一例を示す図である。図４には、前面視差バリアタイプの液晶表示デバイスの断面構造が示されている。図４に示す表示装置１０は、ユーザが表示装置１０に対峙した場合に、視差バリアによって、その右眼および左眼の視野範囲にそれぞれ異なる画素からの光が入射するように構成される。
【００９６】
より具体的には、表示装置１０は、ガラス基板１６とガラス基板１８との間に設けられた、第１ＬＣＤ１１６および第２ＬＣＤ１２６を含む。第１ＬＣＤ１１６および第２ＬＣＤ１２６は、複数の画素を含み、かつバックライトからの光を画素単位で調節するための空間光変調器である。典型的には、第１ＬＣＤ１１６の画素と第２ＬＣＤ１２６の画素とは交互に配置される。ガラス基板１８のガラス基板１６の側とは反対側に、図示しないバックライトが設けられており、このバックライトからの光は第１ＬＣＤ１１６および第２ＬＣＤ１２６に向けて照射される。
【００９７】
ガラス基板１６の第１ＬＣＤ１１６および第２ＬＣＤ１２６に接する側とは反対の側には、視差光学系である視差バリア１２が設けられる。この視差バリア１２には、複数のスリット１４が所定間隔で行列状に設けられている。各スリット１４の中心位置を通り、かつガラス基板１６の面に対して垂直方向の軸を基準として、第１ＬＣＤ１１６の対応する画素と第２ＬＣＤ１２６の対応する画素とが対称的に配置される。このようなスリット１４に対応する画素との位置関係、ならびに第１ＬＣＤ１１６および第２ＬＣＤ１２６を、表示すべき画像に応じて適切に制御することで、ユーザの両眼の間に所定の視差を与えることができる。
【００９８】
すなわち、視差バリア１２の各スリット１４においては、ユーザの右眼および左眼による視界をそれぞれ対応する角度に制限するので、典型的には、ユーザの右眼からは、光軸Ａｘ１上にある第１ＬＣＤ１１６の画素のみが視認でき、一方、ユーザの左眼からは、光軸Ａｘ２上にある第２ＬＣＤ１２６の画素のみが視認できることになる。ここで、第１ＬＣＤ１１６の画素および第２ＬＣＤ１２６の画素に、所定の視差を有する２つの画像の対応するピクセルを表示させることで、ユーザに所定の視差を与えることができる。
【００９９】
なお、図４に示す例においては、視差バリア１２のユーザ側の表面が表示装置１０の「表示面」に相当する。
【０１００】
［ｂ２．システム構成］
上述した本実施の形態に従う立体表示処理は、コンピュータを用いたシステムとして実装することが可能である。以下、図５を参照して、情報処理システムとして実装した場合の構成例について説明する。
【０１０１】
図５は、本発明の実施の形態に従う情報処理システム１の内部構成を示すブロック図である。図５を参照して、本実施の形態に従う情報処理システム１は、プロセッサによる処理が可能なコンピュータの典型例である。なお、情報処理システム１としては、パーソナルコンピュータ、ワークステーション、携帯端末、ＰＤＡ（Personal Digital Assistant）、携帯電話、携帯型ゲーム装置などとして実現してもよい。
【０１０２】
情報処理システム１は、表示装置１０に加えて、ＣＰＵ（Central Processing Unit）１００と、ＲＯＭ（Read Only Memory）１０２と、ＲＡＭ（Random Access Memory）１０４と、入力部１０６と、第１および第２ＶＲＡＭ（Video RAM）１１２および１２２とを含む。なお、各部は、内部バスを介して、互いにデータ通信可能に接続されている。
【０１０３】
ＣＰＵ１００は、ＲＯＭ１０２などに格納されているプログラムをＲＡＭ１０４に展開した上で、当該プログラムを実行する。このプログラムの実行により、ＣＰＵ１００は、後述するような表示制御処理や付随する各種処理を提供する。なお、ＣＰＵ１００が実行するプログラムは、ＤＶＤ−ＲＯＭ（Digital Versatile Disc ROM）、ＣＤ−ＲＯＭ（Compact Disk ROM）、フレキシブルディスク、フラッシュメモリ、各種のメモリカセットなどの記憶媒体によって流通する場合もある。そのため、情報処理システム１がこのような記憶媒体から格納されているプログラムコードなどを読出すようにしてもよい。この場合には、情報処理システム１が記憶媒体に対応する読出装置を利用するように適合される。あるいは、上述のようなプログラムがネットワークを通じて頒布されるような場合には、図示しない通信インターフェイスなどを介して、当該頒布されるプログラムを情報処理システム１へインストールしてもよい。
【０１０４】
後述するように、本実施の形態に従うプログラムは、アプリケーションと、複数のアプリケーションに共通して利用されるライブラリ（あるいは、サブルーチンまたはモジュール）とに区別されている場合もある。すなわち、このライブラリは、各種のアプリケーションにおいて立体表示の制御に利用されるプログラムに相当する。この場合には、たとえば、ライブラリを含むファームウェアがＲＯＭ１０２などに予め格納されており、情報処理システム１に装着可能な記憶媒体に格納されたアプリケーションをＣＰＵ１００が読出して実行するような形態も可能である。
【０１０５】
ＲＯＭ１０２は、上述したようなＣＰＵ１００で実行されるプログラムや各種の設定パラメータなどを不揮発的に記憶するデバイスである。ＲＯＭ１０２としては、典型的には、マスクＲＯＭや半導体フラッシュメモリなどからなる。
【０１０６】
ＲＡＭ１０４は、上述したようなＣＰＵ１００で実行されるプログラムを展開したり、プログラムの実行に必要なデータを一時的に記憶したりするワークメモリとして機能する。また、ＲＡＭ１０４には、情報処理システム１で立体表示を行なうために使用される画像のデータが格納される場合もある。
【０１０７】
入力部１０６は、ユーザ操作を受付けるデバイスであり、典型的には、キーボード、マウス、タッチペン、トラックボール、ペンタブレット、各種ボタン（スイッチ）などからなる。入力部１０６は、それに対して何らかのユーザ操作がなされると、対応する操作内容を示す信号をＣＰＵ１００へ伝送する。
【０１０８】
第１ＶＲＡＭ１１２および第２ＶＲＡＭ１２２は、それぞれ第１ＬＣＤ１１６において表示される右画像および第２ＬＣＤ１２６において表示される左画像に対応するデータを格納するための記憶デバイスである。すなわち、第１ＶＲＡＭ１１２および第２ＶＲＡＭ１２２には、ＣＰＵ１００が後述するような表示制御処理などを行なうことで得られる表示データが順次書込まれる。そして、第１ＶＲＡＭ１１２および第２ＶＲＡＭ１２２に書込まれた表示データに基づいて、表示装置１０における描画処理が制御される。
【０１０９】
表示装置１０は、上述の第１ＬＣＤ１１６および第２ＬＣＤ１２６に加えて、ＬＣＤドライバ１１４を含む。ＬＣＤドライバ１１４は、第１ＶＲＡＭ１１２および第２ＶＲＡＭ１２２と関連付けられている。そして、ＬＣＤドライバ１１４は、第１ＶＲＡＭ１１２に書込まれる表示データに基づいて、第１ＬＣＤ１１６を構成するそれぞれの画素の点灯／消灯（ＯＮ／ＯＦＦ）を制御するとともに、第２ＶＲＡＭ１２２に書込まれる表示データに基づいて、第２ＬＣＤ１２６を構成するそれぞれの画素の点灯／消灯（ＯＮ／ＯＦＦ）を制御する。
【０１１０】
［ｂ３．プログラム構成］
本発明の実施の形態に従う情報処理システム１において実装される表示制御プログラムとしては、アプリケーションとして実装される部分と、ライブラリとして実装される部分とを含み得る。以下、図６を参照して、本実施の形態に従う情報処理システム１におけるプログラムの実装例について説明する。
【０１１１】
図６は、本発明の実施の形態に従う情報処理システム１において実装されるプログラム構成の一例を示す図である。
【０１１２】
図６（Ａ）は、本実施の形態に従う情報処理システム１において実装されるプログラム構成の一例を示す図である。図６（Ａ）に示す情報処理システム１では、アプリケーション２００Ａおよびファームウェア２５０Ａが実装されている。典型的には、アプリケーション２００Ａは記憶媒体に格納されて流通し、ファームウェア２５０ＡはＲＯＭ１０２（図５）などに予め格納されている。情報処理システム１のＣＰＵ１００は、必要に応じて、アプリケーション２００Ａおよびファームウェア２５０Ａに含まれる命令を読出して実行する。
【０１１３】
アプリケーション２００Ａは、入力モジュール２０２と、進行モジュール２０４と、画像レンダリングモジュール２０６と、オブジェクト定義データ２０８と、立体表示用ライブラリ２１８とを含む。
【０１１４】
入力モジュール２０２は、ユーザから入力部１０６（図５）などを介して与えられる指令に応じた内部コマンドを生成する。より具体的には、入力モジュール２０２は、立体感変更指示やモード設定の入力に応答して、必要な内部コマンドを発生する。すなわち、入力モジュール２０２は、図３に示す変更受付機能７０およびモード設定機能８０を提供する。
【０１１５】
進行モジュール２０４は、入力モジュール２０２によって生成される内部コマンドに従って、アプリケーションを進行する。すなわち、進行モジュール２０４は、アプリケーションの進行に伴って、表示データや各種のパラメータを順次更新する。
【０１１６】
画像レンダリングモジュール２０６は、図３に示すレンダリング機能９０を提供する。より具体的には、画像レンダリングモジュール２０６は、進行モジュール２０４によって、図１（Ｂ）に示す基準仮想カメラ３００の情報のみが指定された場合には、立体表示用ライブラリ２１８をコールして、右仮想カメラ３０２および左仮想カメラ３０４の情報を取得し、これらの取得した情報に基づいて、右画像および左画像を生成する（詳細については後述する）。
【０１１７】
オブジェクト定義データ２０８は、右画像および左画像を生成するための３次元仮想空間および当該３次元仮想空間に含まれるオブジェクトの定義を含む。
【０１１８】
立体表示用ライブラリ２１８は、図１に示す基準仮想カメラ３００の情報などの指定に応答して、立体表示を行なうための右仮想カメラ３０２および左仮想カメラ３０４の設定値を算出する。また、立体表示用ライブラリ２１８は、算出した右仮想カメラ３０２と左仮想カメラ３０４との間の位置関係を示す値を戻り値として出力する。すなわち、立体表示用ライブラリ２１８は、図３に示す、仮想カメラ設定機能５０および視体積設定機能６０を提供する。なお、立体表示用ライブラリ２１８のインターフェイスの詳細については、図７を用いて後述する。
【０１１９】
ファームウェア２５０Ａは、図５に示す情報処理システム１を構成する各ハードウェアを制御するための機能や、メニュー画面などを表示したりする機能を提供する。なお、ファームウェア２５０Ａとしては、ＯＳ（Operating System）の一部または全部を含むようにしてもよい。
【０１２０】
図６（Ａ）に示すプログラム構成においては、アプリケーション２００Ａに立体表示用ライブラリ２１８が含まれている例を示すが、この立体表示用ライブラリ２１８は、図６（Ｂ）に示すように、立体表示を含む複数のアプリケーションに共有される形態で実装してもよい。
【０１２１】
図６（Ｂ）は、本実施の形態に従う情報処理システム１において実装されるプログラム構成の別の一例（変形例）を示す図である。図６（Ｂ）に示すプログラム構成においては、立体表示用ライブラリ２１８は、ファームウェア２５０Ｂの一部として組込まれている。一方、アプリケーション２００Ｂは、立体表示用ライブラリ２１８を含んでおらず、必要に応じて、ファームウェア２５０Ｂの立体表示用ライブラリ２１８をコールすることになる。
【０１２２】
［ｂ４．立体表示用ライブラリ］
本実施の形態に従う立体表示用ライブラリ２１８は、上述のように、基準仮想カメラの設定値が入力されると、後述するような処理を実行し、その結果として、右仮想カメラ３０２および左仮想カメラ３０４の設定値を出力する。すなわち、立体表示用ライブラリ２１８は、設定された右仮想カメラ３０２および左仮想カメラ３０４の視体積を示す情報を出力するとともに、設定された右仮想カメラ３０２と左仮想カメラ３０４との間の距離を示す情報を出力する。以下、図７を参照して、立体表示用ライブラリ２１８の入出力インターフェイスの具体例について説明する。
【０１２３】
図７は、図６に示す立体表示用ライブラリ２１８について入出力されるデータ項目を説明するための図である。
【０１２４】
上述したように、立体表示用ライブラリ２１８は、表示装置１０における立体表示に係るモードとして、２つのモード（「アプリケーション優先モード」および「リアルモード」）が選択的可能になっている。そのため、立体表示用ライブラリ２１８を利用（コール）するときには、上記２つのモードの一方を示すモード情報が指定される。その上で、以下に示すようなデータ項目が、パラメータが立体表示用ライブラリ２１８とアプリケーションなどとの間で遣り取りされる。
【０１２５】
図７を参照して、「アプリケーション優先モード」が指定されると、立体表示用ライブラリ２１８は、（１）基準仮想カメラ情報、（２）基準仮想面情報、（３）視差判定面情報、（４）モード情報の入力を受付けて、（５）右仮想カメラ情報、（６）左仮想カメラ情報、（７）仮想カメラ間距離を出力する。
【０１２６】
（１）基準仮想カメラ情報は、図１に示す基準仮想カメラ３００の配置位置および視体積（視野角、ニアクリップ面、ファークリップ面などの設定値）などを定義する情報であり、典型的には、カメラ行列が用いられる。詳細については後述するが、このカメラ行列は、プロジェクション行列およびビュー行列を含む。
【０１２７】
（２）基準仮想面情報は、図１に示す基準仮想カメラ３００に対する基準仮想面（基準仮想平面領域を含む平面）（図２参照）の位置を定義するための情報であり、典型的には、基準仮想カメラ３００の配置位置から基準仮想面（基準仮想平面領域）（図２参照）までの仮想空間距離を含む。
【０１２８】
（３）視差判定面情報は、視差判定面を定義するための情報であり、右仮想カメラ３０２によって生成される右画像と左仮想カメラ３０４によって生成される左画像との間に生じる視差量を評価するための視差判定面（図２参照）の位置が定義される。典型的には、（３）視差判定面情報は、図１に示す基準仮想カメラ３００の配置位置から視差判定面までの仮想空間距離、または、基準仮想面と視差判定面との間の距離を含む。
【０１２９】
（４）モード情報は、上述の「アプリケーション優先モード」および「リアルモード」のうち、いずれかを含む。
【０１３０】
（５）右仮想カメラ情報は、図１に示す基準仮想カメラ３００の設定に応じて算出される、右仮想カメラ３０２の配置位置および視体積（視野角、ニアクリップ面、ファークリップ面などの設定値）などを定義する情報である。同様に、（６）左仮想カメラ情報は、図１に示す基準仮想カメラ３００の設定に応じて算出される、左仮想カメラ３０４の配置位置および視体積（視野角、ニアクリップ面、ファークリップ面などの設定値）などを定義する情報である。典型的には、右仮想カメラ情報および左仮想カメラ情報のいずれについても、プロジェクション行列およびビュー行列を含む、カメラ行列が用いられる。
【０１３１】
（７）仮想カメラ間距離は、基準仮想カメラ３００の設定に応じて算出される、右仮想カメラ３０２と左仮想カメラ３０４との間の位置関係を示す情報であり、３次元仮想空間上における右仮想カメラ３０２と左仮想カメラ３０４との間の距離の情報を含む。好ましくは、仮想カメラ間距離としては、右仮想カメラ３０２と左仮想カメラ３０４との間の距離を規格化した値、具体的には、「基準仮想平面領域（図２参照）の左右方向の幅」に対する「右仮想カメラ３０２と左仮想カメラ３０４との間の距離」の比が用いられる。
【０１３２】
一方、「リアルモード」が指定されると、立体表示用ライブラリ２１８は、（１）基準仮想カメラ情報、（２）基準仮想面情報、（３’）基準立体度合、の入力を受付けて、（５）右仮想カメラ情報、（６）左仮想カメラ情報、（７）仮想カメラ間距離を出力する。すなわち、「リアルモード」が指定されると、立体表示用ライブラリ２１８は、（３）視差判定面情報に代えて、（３’）基準立体度合を受付ける。
【０１３３】
（３’）基準立体度合は、表示装置１０における立体表示の立体感を調整するためのパラメータである。本実施の形態に従う「リアルモード」では、現実に近い立体表示を行なうための右仮想カメラ３０２および左仮想カメラ３０４の設定を決定することになる。しかしながら、アプリケーションの種類や進行状況によっては必ずしも現実に近い立体表示をしたくない場合も考えられ、このような場合に、（３’）基準立体度合を適宜設定することで、立体表示における立体感の調整が行なわれる。
【０１３４】
なお、これらの入出力値（行列値を含む）は、立体表示用ライブラリ２１８ならびにアプリケーション２００Ａおよび２００Ｂに含まれるいずれのモジュールによってもアクセス可能な変数格納領域に保持されてもよい。
【０１３５】
上述のように、立体表示用ライブラリ２１８は、右仮想カメラ３０２および左仮想カメラ３０４に設定された視体積を示す情報を出力する。すなわち、本実施の形態に従うプログラムでは、基準仮想カメラの設定情報を立体表示用ライブラリ２１８に与えることで、右仮想カメラ３０２および左仮想カメラ３０４の２つの仮想カメラの設定情報を取得することができる。
【０１３６】
上述のように、本実施の形態に従う立体表示用ライブラリ２１８は、（１）基準仮想カメラ情報として、基準仮想カメラ３００を定義するカメラ行列（プロジェクション行列およびビュー行列）の入力を受付ける。また、立体表示用ライブラリ２１８は、（２）基準仮想面情報として、基準仮想カメラ３００から基準仮想平面領域３６０までの距離の入力を受付ける。その上で、立体表示用ライブラリ２１８は、（５）右仮想カメラ情報として、設定された右仮想カメラ３０２を定義するカメラ行列（プロジェクション行列およびビュー行列）を出力するとともに、（６）左仮想カメラ情報として、設定された左仮想カメラ３０４を定義するカメラ行列（プロジェクション行列およびビュー行列）を出力する。
【０１３７】
また、本実施の形態に従う立体表示用ライブラリ２１８は、（３）視差判定面情報として、基準仮想平面領域３６０と平行な視差判定面の位置を指定するための情報を受付ける。
【０１３８】
＜Ｃ．画像生成処理＞
以下、立体表示用ライブラリ２１８での処理内容（仮想カメラの配置位置および視体積の設定処理など）を含めた、右画像および左画像を生成するための処理について詳述する。
【０１３９】
［ｃ１．概要］
図８は、本発明の実施の形態に従う立体表示処理の対象となる３次元仮想空間の一例を示す模式図である。図９は、図８に示す状態において生成される画像（右画像および左画像）の生成処理を示す模式図である。図１０は、図９に示す右仮想カメラ３０２および左仮想カメラ３０４によってそれぞれ生成される画像の一例を示す図である。
【０１４０】
図８および図９に示すように、本実施の形態においては、基本的には、共通の表示対象（被写体）を含み、かつ所定の視差を有する一対の画像（ステレオ画像）を用いて、立体表示を行なう。このような一対の画像は、３次元仮想空間内に一対の仮想カメラ（右仮想カメラ３０２および左仮想カメラ３０４）を配置し、この一対の仮想カメラがそれぞれ３次元仮想空間内のオブジェクトを仮想的に撮影することで、動的に生成される。すなわち、ポリゴン生成といったコンピュータグラフィックスの技術を用いて、共通のオブジェクトに対して、視点を異ならせた２つの仮想カメラを用いて、一対の画像が描画（レンダリング）される。
【０１４１】
図８および図９に示す３次元仮想空間においては、右仮想カメラ３０２および左仮想カメラ３０４が仮想空間距離Ｄｆだけ離されて配置されているものとする。このような配置によって、右仮想カメラ３０２および左仮想カメラ３０４によってそれぞれ生成される右画像と左画像との間には、この仮想空間距離Ｄｆに応じた視差が生じる。なお、右仮想カメラ３０２が３次元仮想空間を撮影する方向であるカメラ方向３０３と、左仮想カメラ３０４が３次元仮想空間を撮影する方向であるカメラ方向３０５とは、同じ向きである。すなわち、カメラ方向３０３とカメラ方向３０５とは平行である。
【０１４２】
なお、右仮想カメラ３０２および左仮想カメラ３０４の遠方側から、オブジェクトＯＢＪ１およびオブジェクトＯＢＪ２が順に配置されているものとする。一例として、オブジェクトＯＢＪ１は四角錐であり、オブジェクトＯＢＪ２は球体であるとする。
【０１４３】
右仮想カメラ３０２および左仮想カメラ３０４の各々は、３次元仮想空間のうち、各カメラ方向の所定範囲にあるオブジェクトのみをレンダリングする。すなわち、右仮想カメラ３０２は、対応する視野角、ニアクリップ面、ファークリップ面によって定義される視体積に含まれる範囲をレンダリングし、左仮想カメラ３０４は、対応する視野角、ニアクリップ面、ファークリップ面によって定義される視体積に含まれる範囲をレンダリングする。
【０１４４】
また、３次元仮想空間内には、基準仮想面、および当該基準仮想面上の一部の領域である基準仮想平面領域が設定される。この基準仮想面（または、基準仮想平面領域）は、上述したように、表示装置１０の表示面の位置に対応する平面（または、領域）であり、カメラ方向３０３およびカメラ方向３０５のいずれに対して垂直となるように設定される。この基準仮想平面領域は、表示装置１０で立体表示を行なった際に、ユーザが表示装置１０の表示面付近にあるように感じる３次元仮想空間内の位置および領域を定義する。
【０１４５】
このようにレンダリング範囲（視体積）が設定されると、右仮想カメラ３０２および左仮想カメラ３０４からは、図１０に示すような画像がそれぞれ生成される。図１０には、図８および図９に示すような３次元仮想空間において、右仮想カメラ３０２が仮想的に撮影を行なうことで生成される右画像ＩＭＧ１と、左仮想カメラ３０４が仮想的に撮影を行なうことで左画像ＩＭＧ２とが例示される。
【０１４６】
右画像ＩＭＧ１と左画像ＩＭＧ２とを比較すると、右画像ＩＭＧ１内におけるオブジェクトＯＢＪ１の存在位置は、左画像ＩＭＧ２内におけるオブジェクトＯＢＪ１の位置と実質的に一致する。これに対して、右画像ＩＭＧ１内におけるオブジェクトＯＢＪ２の位置は、左画像ＩＭＧ２内におけるオブジェクトＯＢＪ２の存在位置とは異なっている。すなわち、表示装置１０に対峙するユーザにとってみれば、オブジェクトＯＢＪ１については視差がない状態で視認され、一方、オブジェクトＯＢＪ２についてはある視差量を有する状態で視認される。
【０１４７】
言い換えれば、図８に示すように、３次元仮想空間内において、オブジェクトＯＢＪ１を通る位置に基準仮想面（基準仮想平面領域）が設定されているため、オブジェクトＯＢＪ１については、右画像と左画像との間で、その表示のされ方が一致する。その結果、表示装置１０の表示面において、オブジェクトＯＢＪ１についての視差が実質的に無くなり、ユーザにとってみれば、オブジェクトＯＢＪ１の存在する付近の空間がちょうど表示装置１０の表示面付近にあるように見える。
【０１４８】
上述したように、ユーザに視認させたいオブジェクト（上述の例では、オブジェクトＯＢＪ１）が表示装置１０の表示面付近にあるように立体表示させることが一般的であると考えられる。このようにユーザに視認させたいオブジェクトを立体表示させるためには、３次元仮想空間内に右仮想カメラ３０２および左仮想カメラ３０４を設定し、続いて、表示装置１０の表示面付近に表示させたいオブジェクトの位置に応じた位置に、カメラ方向３０３および左カメラ方向３０５と垂直になるように、基準仮想面を設定する必要がある。
【０１４９】
本実施の形態においては、オブジェクトに係るレンダリングの処理負荷を低減する観点から、右仮想カメラ３０２および左仮想カメラ３０４のレンダリング範囲（視体積）は、いずれも基準仮想平面領域を基準に設定される。図９に示すように、右仮想カメラ３０２および左仮想カメラ３０４が、両仮想カメラを通る基準線３５０上に、仮想空間距離Ｄｆだけ離れて設定されている場合においては、右仮想カメラ３０２および左仮想カメラ３０４の各々は、その配置位置を基準とする視体積についてレンダリングすることが可能であるが、本実施の形態においては、基準仮想平面領域を基準とするレンダリング範囲が設定される。すなわち、右仮想カメラ３０２については、その配置位置から基準仮想平面領域の外周によって規定される視体積がレンダリング範囲に設定される。左仮想カメラ３０４についても、その配置位置から基準仮想平面領域の外周によって規定される視体積がレンダリング範囲に設定される。
【０１５０】
このように、右仮想カメラ３０２および左仮想カメラ３０４に対して、基準仮想平面領域の外周によって規定される視体積をそれぞれ設定することで、右仮想カメラ３０２および左仮想カメラ３０４がそれぞれ生成する右画像および左画像を、そのまま表示装置１０での立体表示に用いることができる。より具体的には、右仮想カメラ３０２から出力された右画像は、そのまま第１ＶＲＡＭ１１２（図５）へ書込まれ、左仮想カメラ３０４から出力された左画像は、そのまま第２ＶＲＡＭ１２２（図５）へ書込まれる。このように、本実施の形態においては、表示装置１０での表示に使用されない範囲の（余分な）画像を生成することがない。したがって、不要なレンダリング処理を回避できる。
【０１５１】
一方で、３次元仮想空間内に配置された、ユーザに視認させたいオブジェクトを表示装置１０において立体表示する場合には、右仮想カメラ３０２および左仮想カメラ３０４に対して、それぞれ異なる視野範囲（視体積）を設定する必要がある。そのため、立体表示を含むアプリケーションの制作者は、当該アプリケーションの進行に関連付けられた各シーンにおいて、ユーザに視認させたいオブジェクトに応じて、右仮想カメラおよび左仮想カメラの設定値（配置位置および視体積など）を適切に指定する必要がある。このような作業は制作者の負担が大きく、立体表示を利用したアプリケーションを制作する際の障壁となり得る。
【０１５２】
そこで、本実施の形態に従うプログラム（典型的には、上述の立体表示用ライブラリ２１８として実装）は、図１に示すような、平面表示のみを利用する（立体表示を利用しない）アプリケーションと同様のパラメータを指定するだけで、立体表示を行なうために必要な各種パラメータを自動的に設定できる機能を提供する。
【０１５３】
より具体的には、平面表示のみを利用するアプリケーションと同様に、制作者は、表示装置１０に表示させたいオブジェクトに応じた位置に１つの基準仮想カメラ３００（図１参照）を設定する。なお、この基準仮想カメラの設定値としては、基準仮想カメラ３００の配置位置および対応する視体積の設定値を含む。このような設定項目に加えて、制作者は、表示装置１０の表示面付近に表示させたいオブジェクトが存在する位置を基準仮想面として設定する。そして、この基準仮想面のうち、基準仮想カメラの視体積の内部に含まれる領域が、基準仮想平面領域３６０として決まる。
【０１５４】
すると、本実施の形態に従うプログラムは、上述のような設定に基づいて、右仮想カメラ３０２および左仮想カメラ３０４の配置位置および視体積などをそれぞれ算出する。このような処理によって、立体表示を利用したアプリケーションの制作者は、従来の平面表示のみを利用するアプリケーションを制作する場合と同様の作業量で、３次元仮想空間内の意図した範囲を表示装置１０上で立体表示させることができる。また、基準仮想平面領域３６０付近に存在するオブジェクトは、視差が無いか、もしくは、視差が少ない状態で表示装置１０の表示面に表示されるので、当該アプリケーションをプレイするユーザにとってみれば、そのオブジェクトを最も視認し易くなる。さらに、基準仮想平面領域３６０として設定した領域は、表示装置１０で確実に表示されることが保証されるため、アプリケーションの制作者にとってみれば、右仮想カメラ３０２および左仮想カメラ３０４の設定値などを考慮することなく、基準仮想カメラ３００および基準仮想平面領域３６０のみを考慮するだけでよい。そのため、アプリケーションの制作が容易になる。
【０１５５】
また、アプリケーションの内容によっては、３次元仮想空間の状態をリアルにユーザに表示したい場合もある。すなわち、ユーザに対して、３次元仮想空間に存在しているかのような感覚を与えることも有効な場合がある。この場合には、ユーザは、表示装置１０の立体表示によって、本当にその場に現物の表示対象が存在しているかのような感覚を得ることになる。
【０１５６】
上述のように、アプリケーションの内容やその進行に応じて、ユーザに対してどのような立体表示を行なうかというニーズは異なったものとなる。そこで、本実施の形態に従うプログラムでは、少なくとも２つのモード（上述した、「アプリケーション優先モード」および「リアルモード」）が用意される。そして、アプリケーションの制作者が任意に使用するモードを指定することで、当該モードに応じた、右仮想カメラ３０２および左仮想カメラ３０４の設定値が自動的に決定される。
【０１５７】
以下、各モードにおける、右仮想カメラ３０２および左仮想カメラ３０４に係る設定値を決定する処理の詳細について説明する。
【０１５８】
［ｃ２．アプリケーション優先モード］
「アプリケーション優先モード」においては、アプリケーションの制作者は、平面表示のみを利用する（立体表示を利用しない）アプリケーションを制作する場合と同様に、１つの基準仮想カメラ（図１に示す基準仮想カメラ３００）の配置位置および視体積（描画範囲）を指定する（図７に示す（１）基準仮想カメラ情報）。同時に、制作者は、指定した視体積に含まれる空間内のいずれの平面位置が、表示装置１０において立体表示をした際にその表示面付近に位置するように表示したいかを指定する（図７に示す（２）基準仮想面情報）。さらに、制作者は、右画像と左画像との間に生じる視差量を評価して、ユーザが表示装置１０での立体表示を気持ちよく受け入れることができることを保証するための視差判定面を指定する（図７に示す（３）視差判定面情報）。
【０１５９】
この指定に応答して、立体表示用ライブラリ２１８は、以下詳細に説明するように、右仮想カメラ３０２によって生成される右画像と左仮想カメラ３０４によって生成される左画像との間に生じる視差が予め定められた値を超えないように、右仮想カメラ３０２および左仮想カメラ３０４を設定する。そして、立体表示用ライブラリ２１８は、設定された右仮想カメラ３０２を定義するための（５）右仮想カメラ情報と、設定された左仮想カメラ３０４を定義するための（６）左仮想カメラ情報とを出力するとともに、右仮想カメラ３０２と左仮想カメラ３０４との間の位置関係を示す（７）仮想カメラ間距離を出力する。
【０１６０】
（ｃ２−ｉ．プロジェクション行列およびビュー行列）
以下の説明においては、（１）基準仮想カメラ情報、（５）右仮想カメラ情報、および、（６）左仮想カメラ情報は、いずれもカメラ行列として定義される例を示す。先に、このカメラ行列について説明する。
【０１６１】
このカメラ行列は、仮想カメラの視野範囲（視体積）を定義する方法の一例であり、典型的には、３次元仮想空間を仮想カメラから見た方向に変換するためのビュー行列（３行×４列）と、２次元画面（投影面）に投影するためのプロジェクション行列（４行×４列）とを含む。
【０１６２】
図１１は、本発明の実施の形態に従うカメラ行列を説明するための図である。図１１に示すように、ある３次元仮想空間をＸ，Ｙ，Ｚの３軸で定義する。仮想カメラの座標を（ｃｘ，ｃｙ，ｃｚ）とし、注視点（仮想カメラの方向と基準仮想面との交点）の座標を（ｂｘ，ｂｙ，ｂｚ）とする。また、仮想カメラからニアクリップ面までの距離をｎとし、仮想カメラからファークリップ面までの距離をｆとする。さらに、仮想カメラの向きを示すベクトルを、正面方向ベクトル（Ｚｘ，Ｚｙ，Ｚｚ）、上方向ベクトル（Ｙｘ，Ｙｙ，Ｙｚ）および左方向ベクトル（Ｘｘ，Ｘｙ，Ｘｚ）として定義する。なお、これらのベクトルは、いずれもその大きさが「１」の単位ベクトルとする。
【０１６３】
図１１に示す場合のプロジェクション行列を（１）式として示し、ビュー行列を（２）式として示す。
【０１６４】
【数１】
2011120224.tif 000003
【０１６５】
このようなカメラ行列（プロジェクション行列およびビュー行列）を用いることで、アプリケーション毎にそれぞれ設定される３次元仮想空間に対応することができる。すなわち、カメラ行列は、汎用的な次元で定義される行列であり、アプリケーションに依存することなく、上述のような仮想カメラの設定処理を実行することができる。
【０１６６】
なお、図１１では、仮想カメラの座標と注視点の座標とを用いて、プロジェクション行列を生成する方法について例示したが、照明方向と仮想カメラの向きベクトルとを用いて、プロジェクション行列を生成することができる。
【０１６７】
また、図１１では、ニアクリップ面を規定する４辺の位置（大きさ）を用いて、ビュー行列を生成する方法について例示したが、仮想カメラの視野角に基づいてビュー行列を生成することもできる。
【０１６８】
なお、プロジェクション行列およびビュー行列は、いずれも双方向に変換が可能である。たとえば、プロジェクション行列についてみれば、仮想カメラの座標および注視点の座標に基づいてプロジェクション行列を生成することも可能である一方、プロジェクション行列から仮想カメラの座標および注視点の座標を算出することも可能である。
【０１６９】
したがって、設定された基準仮想カメラ３００に応じた、右仮想カメラ３０２および左仮想カメラ３０４のそれぞれの配置位置、ならびにそれらの視体積が後述する図１２〜図１４に示すような方法に従って設定されると、これらの情報に基づいて、右仮想カメラ３０２および左仮想カメラ３０４の各々のカメラ行列（プロジェクション行列およびビュー行列）が出力される。
【０１７０】
（ｃ２−ｉｉ．基準仮想面）
基準仮想面は、図８に示すように、基準仮想カメラ３００を基準として設定される。以下の説明においては、（２）基準仮想面情報として、基準仮想カメラ３００から設定される基準仮想面までの基準仮想カメラ３００のカメラ方向３０１（基準カメラ方向）に沿った仮想空間距離Ｄとして定義される例を示す。
【０１７１】
（ｃ２−ｉｉｉ．視差判定面）
図１２は、本発明の実施の形態に従う右仮想カメラ３０２および左仮想カメラ３０４の設定処理を２次元的に説明するための図である。図１３は、図１２に示す右仮想カメラおよび左仮想カメラの設定処理の処理結果に応じて設定される視体積を示す図である。
【０１７２】
図１２および図１３には、視差判定面３６１が、基準仮想平面領域３６０に対して基準仮想カメラ３００とは反対側に設けられる例を示す。より具体的には、表示装置１０を見るユーザが心地よく立体表示を受け入れることのできる深さ（奥行き）に対応する位置として視差判定面３６１を設定する例を示す。すなわち、表示装置１０の表示面付近には、３次元仮想空間の基準仮想平面領域３６０に位置する表示対象が表示されるため、視差判定面３６１に位置する表示対象は、表示装置１０の表示面からより奥側に見えることになる。右画像と左画像との間の視差判定面３６１に対応する部分については、右仮想カメラ３０２と左仮想カメラ３０４との位置関係に応じた視差量が生じる。この視差量が相対的に大きくなると、表示装置１０を見るユーザへの負担が大きくなる。そのため、視差判定面３６１における視差が所定のしきい値を超えないように、右仮想カメラ３０２および左仮想カメラ３０４を設定する必要がある。
【０１７３】
なお、図１２および図１３においては、視差判定面３６１を、基準仮想平面領域３６０に対して基準仮想カメラ３００とは反対側に設けた例を示すが、基準仮想カメラ３００の側に設定してもよい。この場合には、視差判定面３６１は、表示装置１０を見るユーザが心地よく立体表示を受け入れることのできる画像の飛び出し量に対応する位置に設定される。
【０１７４】
さらに、基準仮想平面領域３６０より遠方側に第１の視差判定面を設定するとともに、基準仮想平面領域３６０より近傍側に第２の視差判定面を設定し、それぞれの視差判定面において条件を満足するか否かを評価してもよい。
【０１７５】
いずれの場合にも、視差判定面は、基準仮想平面領域３６０と平行に配置され、右仮想カメラ３０２によって生成される右画像と左仮想カメラ３０４によって生成される左画像との間に生じる視差を評価するために用いられる。すなわち、視差判定面３６１に存在する表示対象についての視差を所定のしきい値以下に維持することで、少なくとも、基準仮想平面領域３６０から視差判定面３６１の間に存在するオブジェクトについては、その立体表示をユーザが気持ちよく受け入れることを保証する。
【０１７６】
この視差判定面３６１における視差の限界値は、情報処理システム１（表示装置１０）の物理的な大きさおよび特性、ならびに、ユーザに依存する身体的な特性などに応じて定まる。より具体的には、この視差の限界値は、表示装置１０の表示サイズ（縦長さと横長さ）、各画素のサイズ、視差バリアの間隔、ユーザの眼の間隔（図４に示す実距離Ｌ１）、ユーザから表示装置１０の表示面までの距離（図４に示す実距離Ｌ２）などに依存した値となる。
【０１７７】
以下の説明においては、（３）視差判定面情報については、図１２（Ａ）に示すように、基準仮想平面領域３６０から視差判定面３６１までの仮想空間距離Ａとして定義される例を示す。
【０１７８】
なお、（２）基準仮想面情報、および（３）視差判定面情報としては、上述したものに限られず、基準仮想カメラ３００から視差判定面３６１までの仮想空間距離を定義した上で、基準仮想カメラ３００から基準仮想平面領域３６０までの仮想空間距離を、基準仮想カメラ３００から視差判定面３６１までの仮想空間距離を基準とした比率として与えてもよい。
【０１７９】
（ｃ２−ｉｖ．右仮想カメラおよび左仮想カメラの設定処理）
次に、図１２および図１３を参照して、基準仮想カメラ３００の設定に応答して、右仮想カメラ３０２および左仮想カメラ３０４がどのように設定されるかについて説明する。
【０１８０】
図１２（Ａ）を参照して、まず、３次元仮想空間のある位置に基準仮想カメラ３００を設定するように指定されたものとする。同時に、基準仮想カメラ３００から仮想空間距離Ｄだけ離れた位置に基準仮想平面領域３６０を設定するように指定され、基準仮想平面領域３６０から仮想空間距離Ａだけ離れた位置に視差判定面３６１を設定するように指定されたものとする。
【０１８１】
基準仮想カメラ３００と基準仮想平面領域３６０との間の仮想空間距離が与えられると、図１２（Ａ）に示すように、この基準仮想カメラ３００の視体積３８０に含まれる、基準仮想カメラ３００のカメラ方向に直交する平面領域として、基準仮想平面領域３６０が定まる。この視体積３８０は、３次元仮想空間のうち、基準仮想カメラ３００によって有効にレンダリング（描画）される範囲に相当する。
【０１８２】
より具体的には、視体積３８０は、基準仮想カメラ３００の視野角を頂点とする四角錐をニアクリップ面３６４およびファークリップ面３６６で区切った錐体に相当する。すなわち、視体積３８０は、基準仮想カメラ３００の視野角、基準仮想カメラ３００から最も近傍側の面に対応するニアクリップ面３６４、および、基準仮想カメラ３００から最も遠方側の面に対応するファークリップ面３６６によって定義される。言い換えれば、視体積３８０は、基準仮想平面領域３６０を定義する各頂点３６０ａ，３６０ｂ，３６０ｃ，３６０ｄと内接することになる。
【０１８３】
図１２（Ａ）に示す状態から、視差判定面３６１を含む平面上において、右最大視差面３６２および左最大視差面３６３の位置が決定される。この右最大視差面３６２は、視差判定面３６１における視差を限界値とした場合における、左仮想カメラ３０４によってレンダリングされる範囲である。同様に、この左最大視差面３６３は、視差判定面３６１における視差を限界値とした場合における、右仮想カメラ３０２によってレンダリングされる範囲である。
【０１８４】
より具体的には、右最大視差面３６２と左最大視差面３６３との間のずれ量が視差判定面３６１において許容される視差（限界視差量に対応する最大値）と一致するように、右最大視差面３６２および左最大視差面３６３の位置がそれぞれ決定される。これは、図１２（Ｂ）に示すように、視差判定面３６１を紙面左側および紙面右側にそれぞれスライドさせることで、右最大視差面３６２および左最大視差面３６３が得られる。ここで、右最大視差面３６２と左最大視差面３６３との間の距離である仮想空間距離Ｓが、表示装置１０の表示面における限界視差量に相当する。
【０１８５】
基準仮想平面領域３６０と、上述のような手順によって位置が定まった右最大視差面３６２および左最大視差面３６３とに基づいて、右仮想カメラ３０２および左仮想カメラ３０４の配置位置がそれぞれ決定される。本実施の形態においては、図１２（Ｃ）に示すように、基準仮想カメラ３００を通り、かつ、基準仮想平面領域３６０に平行な、基準線３５０が定義され、この基準線３５０上に、右仮想カメラ３０２および左仮想カメラ３０４が設定される。より具体的には、基準仮想平面領域３６０と右最大視差面３６２とを含む視体積が定義できる位置に右仮想カメラ３０２が設定される。同様に、基準仮想平面領域３６０と左最大視差面３６３とを含む視体積が定義できる位置に左仮想カメラ３０４が設定される。
【０１８６】
上述の仮想カメラの設定処理を、図１２（Ｃ）を参照して、別の観点で表現すると、立体表示用ライブラリ２１８は、基準仮想カメラ３００が３次元仮想空間内に設定されることに応答して、右仮想カメラ３０２のカメラ方向３０３および左仮想カメラ３０４のカメラ方向３０５が、基準仮想カメラ３００のカメラ方向である基準カメラ方向３０１と同じ方向になるように、右仮想カメラ３０２および左仮想カメラ３０４を設定する。このとき、立体表示用ライブラリ２１８は、基準カメラ方向３０１と垂直であり、かつ、基準仮想カメラ３００の視体積３８０に含まれる仮想平面領域である基準仮想平面領域３６０を表示対象領域として設定する。
【０１８７】
さらに、立体表示用ライブラリ２１８は、基準仮想カメラ３００の配置位置を基準カメラ方向３０１と垂直な方向に沿って右側に移動させた位置に右仮想カメラ３０２を設定すること、および、基準仮想カメラ３００の配置位置を基準カメラ方向３０１と垂直な方向に沿って左側に移動させた位置に左仮想カメラ３０４を設定すること、の少なくとも一方を実行する。
【０１８８】
図１２（Ｃ）においては、立体表示用ライブラリ２１８は、基準仮想カメラ３００の配置位置を基準カメラ方向３０１と垂直な方向に沿って所定距離だけ右側に移動させた位置に右仮想カメラ３０２を設定するとともに、基準仮想カメラ３００の配置位置を基準カメラ方向３０１と垂直な方向に沿って所定距離だけ左側に移動させた位置に左仮想カメラ３０４を設定する例を示す。
【０１８９】
すなわち、基準仮想カメラ３００の配置位置を基準線３５０に沿って右側に移動させた位置に右仮想カメラ３０２が設定され、基準仮想カメラ３００の配置位置を基準線３５０に沿って左側に移動させた位置に左仮想カメラ３０４が設定される。なお、図１２（Ｃ）に示す例では、基準仮想カメラ３００の配置位置から基準線３５０に沿ってＤｆ／２だけ右側に移動させた位置に右仮想カメラ３０２が設定され、基準仮想カメラ３００の配置位置から基準線３５０に沿って同じＤｆ／２だけ左側に移動させた位置に左仮想カメラ３０４が設定される例を示す。
【０１９０】
なお、後述する、図１４（Ｃ）においては、基準仮想カメラ３００の配置位置と同じ位置に左仮想カメラを設定するとともに、基準仮想カメラ３００の配置位置を基準カメラ方向３０１と垂直な方向に沿って所定距離だけ右側に移動させた位置に右仮想カメラを設定する例を示す。
【０１９１】
上述のように設定された右仮想カメラ３０２および左仮想カメラ３０４の視体積について見ると、図１３（Ｂ）〜図１３（Ｄ）に示すように、右仮想カメラ３０２および左仮想カメラ３０４の視体積は、いずれも、基準仮想カメラ３００の視体積３８０に含まれる基準仮想平面領域３６０の範囲（断面領域）が維持されるように設定される。
【０１９２】
すなわち、立体表示用ライブラリ２１８は、右仮想カメラ３０２の視体積３８２における基準仮想平面領域３６０に対応する位置の断面が、左仮想カメラ３０４の視体積３８４における基準仮想平面領域３６０に対応する位置の断面と一致するように、右仮想カメラ３０２の視体積３８２および左仮想カメラ３０４の視体積３８４がそれぞれ設定される。
【０１９３】
上述の視体積の設定理を、別の観点で表現すると、立体表示用ライブラリ２１８は、基準仮想カメラ３００の視体積３８０に含まれる基準仮想平面領域３６０の４つの頂点３６０ａ，３６０ｂ，３６０ｃ，３６０ｄの位置をそれぞれ取得する。そして、立体表示用ライブラリ２１８は、右仮想カメラ３０２の位置から複数の頂点３６０ａ，３６０ｂ，３６０ｃ，３６０ｄにそれぞれ向かう直線３７２ａ，３７２ｂ，３７２ｃ，３７２ｄによって、右仮想カメラ３０２の視体積３８２を設定する。このとき、直線３７２ａ，３７２ｂ，３７２ｃ，３７２ｄは、それぞれ右最大視差面３６２の頂点３６２ａ，３６２ｂ，３６２ｃ，３６２ｄと交差するように設定される。
【０１９４】
同様に、立体表示用ライブラリ２１８は、左仮想カメラ３０４の位置から複数の頂点３６０ａ，３６０ｂ，３６０ｃ，３６０ｄにそれぞれ向かう直線３７４ａ，３７４ｂ，３７４ｃ，３７４ｄによって、左仮想カメラ３０４の視体積３８４が定義される。このとき、直線３７４ａ，３７４ｂ，３７４ｃ，３７４ｄは、それぞれ左最大視差面３６３の頂点３６３ａ，３６３ｂ，３６３ｃ，３６３ｄと交差するように設定される。
【０１９５】
このように設定される右仮想カメラ３０２および左仮想カメラ３０４のカメラ方向は、いずれも基準仮想カメラ３００の基準カメラ方向３０１と平行に維持される。その結果、右仮想カメラ３０２および左仮想カメラ３０４のカメラ方向は、いずれも基準線３５０と直交する方向となる。
【０１９６】
（ｃ２−ｖ．右仮想カメラおよび左仮想カメラの設定処理の変形例）
上述の説明においては、右仮想カメラおよび左仮想カメラを設定する際に、基準仮想カメラ３００の配置位置を基準線３５０に沿って右側および左側にそれぞれ等距離だけ移動させる処理について例示した。しかしながら、いずれか一方の仮想カメラを基準仮想カメラ３００の配置位置に固定しておき、他方の仮想カメラのみを移動させるようにしてもよい。以下、このような場合の処理について例示する。
【０１９７】
図１４は、本発明の実施の形態の変形例に従う右仮想カメラおよび左仮想カメラの設定処理を２次元的に説明するための図である。
【０１９８】
図１４（Ａ）を参照して、３次元仮想空間のある位置に基準仮想カメラ３００が設定されたとする。この状態において、視差判定面３６１における視差を限界値とした場合における、右最大視差面および左最大視差面が決定される。この場合には、上述の図１２（Ｂ）とは異なり、基準仮想カメラ３００に対応する視差判定面３６１は固定されたまま、一方の仮想カメラ（図１４（Ｂ）に示す例では、右仮想カメラ３００Ａ）の位置を設定するための右最大視差面３６１Ａの位置が算出される。すなわち、図１４（Ｂ）に示すように、視差判定面３６１を紙面左側にスライドさせることで、右最大視差面３６１Ａが得られる。ここで、視差判定面３６１と右最大視差面３６１Ａとの間の仮想空間距離Ｓが限界視差量に相当する。
【０１９９】
最終的に、図１４（Ｃ）に示すように、基準仮想カメラ３００を通り、かつ、基準仮想面に平行な、基準線３５０が定義され、この基準線３５０上に、右仮想カメラ３００Ａが設定される。より具体的には、基準仮想平面領域３６０と右最大視差面３６１Ａとを含む視体積が定義できる位置に右仮想カメラ３００Ａが設定される。そして、右仮想カメラ３００Ａおよび基準仮想カメラ３００を用いて、右画像および左画像がそれぞれ生成される。
【０２００】
図１４に示すような方法によれば、表示装置１０の表示面に立体表示される視点は、基準仮想カメラ３００から右仮想カメラ３００Ａと基準仮想カメラ３００との中点に移動する。たとえば、「利き眼」が分かっているユーザの場合（図１４に示す例では左眼）には、図１４に示すような方法で一対の仮想カメラの位置を設定することで、平面表示から立体表示への切換をより違和感なく受け入れることができる。
【０２０１】
なお、図１４に示す例では、基準仮想カメラ３００を右側に移動することで右仮想カメラ３００Ａを設定する構成について説明したが、右仮想カメラ３００Ａを基準仮想カメラ３００の位置に設定し、基準仮想カメラ３００を左側に移動することで左仮想カメラを設定するようにしてもよい。
【０２０２】
［ｃ３．リアルモード］
「リアルモード」においては、アプリケーションの制作者は、平面表示のみを利用する（立体表示を利用しない）アプリケーションを制作する場合と同様に、１つの基準仮想カメラ（図１に示す基準仮想カメラ３００）の配置位置および視体積（描画範囲）を指定する（図７に示す（１）基準仮想カメラ情報）。同時に、制作者は、指定した視体積に含まれる空間内のいずれの平面位置が、表示装置１０において立体表示をした際にその表示面付近に位置するように表示したいかを指定する（図７に示す（２）基準仮想面情報）。
【０２０３】
さらに、制作者は、立体表示における立体感の調整を行なうための基準立体度合を指定する（図７に示す（３’）基準立体度合）。すなわち、リアルモードでは、上述のアプリケーション優先モードのような（３）視差判定面情報は必要なく、それに代えて、（３’）基準立体度合が入力される。上述したように、（３’）基準立体度合は、アプリケーションの種類や進行状況によっては必ずしも現実に近い立体表示をしたくない場合に、立体表示の立体感の調整についての指示に使用される。典型的には、基準立体度合は、「０」から「１」までの間の値をとる係数として与えられ、「１」に設定された場合には、現実に近い立体表示をそのまま行なえるように右仮想カメラ３０２および左仮想カメラ３０４が設定され、「０」に近づくほど立体感を弱めて立体表示されるように、右仮想カメラ３０２および左仮想カメラ３０４が設定される。
【０２０４】
これらの指定に応答して、立体表示用ライブラリ２１８は、以下詳細に説明するように、両仮想カメラ間の仮想空間距離が許容される最大値を越えないように、右仮想カメラ３０２および左仮想カメラ３０４が設定される。この許容される仮想空間距離の最大値は、現実に近い立体表示を行なうための両仮想カメラ間の仮想空間距離と、基準立体度合とを乗じた値となる。
【０２０５】
（ｃ３−ｉ．右仮想カメラおよび左仮想カメラの設定処理）
図１５は、この発明の実施の形態に従うリアルモードにおける処理内容を説明するための図である。このリアルモードでは、図１５（Ａ）に示すように、ユーザが表示装置１０に対峙して表示面を見る場合の光学的な関係と等価となるようにレンダリング処理が実行される。すなわち、ユーザの右眼と左眼との間の実距離Ｌ１、ユーザの両眼から表示装置１０の表示面までの実距離Ｌ２、および表示装置１０の表示面の実画面幅Ｌ３で規定される位置関係に対応して、右仮想カメラおよび左仮想カメラの配置位置および視体積が決定される。
【０２０６】
なお、リアルモードにおいて入力される、（１）基準仮想カメラ情報、および、（２）基準仮想面情報は、基本的には、レンダリング対象の基準仮想平面領域３６０を指定するために用いられる。すなわち、基準仮想カメラ３００、ならびに、それに関連して設定される右仮想カメラ３０２および左仮想カメラ３０４の位置は、アプリケーション側で設定される位置から変更され得る。
【０２０７】
たとえば、図１５（Ｂ）に示すように、基準仮想カメラ３００から仮想空間距離Ｄだけ離れた位置に基準仮想平面領域３６０が設定された場合を考える。この場合には、基準仮想カメラ３００に設定されている視体積と仮想空間距離Ｄとに基づいて、基準仮想平面領域３６０の範囲が決定される。このとき、基準仮想平面領域３６０の表示面の横方向に対応する幅は、仮想空間距離Ｗであるとする。
【０２０８】
そして、この基準仮想平面領域３６０の（３次元仮想空間内の）範囲と表示装置１０の表示面の（現実の）大きさとが対応するように、基準仮想カメラ３００の位置および視体積が調整される。より具体的には、「実距離Ｌ２：仮想空間距離Ｄ’＝表示面の実画面幅Ｌ３：仮想空間距離Ｗ」の関係が成立するように、基準仮想平面領域３６０から基準仮想カメラ３００までの仮想空間距離Ｄ’が決定される。このとき、図１５（Ｃ）に示すように、基準仮想平面領域３６０の大きさは一定に維持されるので、基準仮想カメラ３００の視野範囲（視体積）は、基準仮想平面領域３６０からの距離の変更に伴って、再設定される。
【０２０９】
このように、ユーザと表示装置１０の表示面との間の実距離に応じて、右仮想カメラ３０２と左仮想カメラ３０４との間で許容される仮想空間距離の最大値が決定される。
【０２１０】
基準仮想カメラ３００が再設定された後、右仮想カメラ３０２および左仮想カメラ３０４が、その両仮想カメラの間の仮想空間距離がユーザの眼の実間隔に対応するように、設定される。より具体的には、「実距離Ｌ２：仮想空間距離Ｄ’＝実距離Ｌ１：仮想空間距離Ｄｆ」の関係が成立するように、仮想空間距離Ｄｆが決定される。この仮想空間距離Ｄｆは、表示装置１０で現実に近い立体表示を行なうための、ユーザが表示装置１０に対峙して表示面を見る場合に許容される理論的な最大値に相当する。そして、この仮想空間距離Ｄｆに基準立体度合を乗じた値が、右仮想カメラ３０２と左仮想カメラ３０４との間の仮想空間距離として決定される。より具体的には、基準仮想カメラ３００を中心にして、両仮想カメラの間がこの決定された仮想空間距離だけ離れるように、右仮想カメラ３０２および左仮想カメラ３０４の位置が決定される。
【０２１１】
このような処理によって、アプリケーションの制作者がユーザに表示することを意図した３次元仮想空間の表示において、表示装置１０において本当に現物が存在しているかのように表現することができる。すなわち、上述のように右仮想カメラ３０２および左仮想カメラ３０４を設定することで、３次元仮想空間における基準仮想カメラ３００と基準仮想平面領域３６０付近のオブジェクトとの位置関係は、現実空間におけるユーザの両眼と表示装置１０の表示面との位置関係に実質的に一致する。そのため、あたかも、表示装置１０の画面の大きさの枠を持った窓から、仮想空間が見えているように表示できる。
【０２１２】
［ｃ４．立体感調整］
上述した、アプリケーション優先モードおよびリアルモードにおいて決定される、右仮想カメラ３０２と左仮想カメラ３０４との間の仮想空間距離Ｄｆは、必ずしもそのまま用いるのではなく、その後に所定の条件（アプリケーションによって許容される値やユーザ操作など）によって、さらに調整された後に用いられてもよい。その場合には、仮想空間距離Ｄｆは、アプリケーションなどから与えられた条件下における、右仮想カメラ３０２と左仮想カメラ３０４との間の最大値を示す。すなわち、右仮想カメラ３０２と左仮想カメラ３０４との間の仮想空間距離Ｄｆは、表示装置１０に表示される右画像と左画像との間に生じ得る最大視差を定めるパラメータであり、アプリケーションなどによって設定される条件下における限界視差量に応じて、その最大値が制限されることになる。
【０２１３】
右仮想カメラ３０２と左仮想カメラ３０４との間の仮想空間距離Ｄｆは、表示装置１０を見るユーザが感じることのできる立体感の程度に比例することになる。言い換えれば、この仮想空間距離Ｄｆが「０」、すなわち、右仮想カメラ３０２と左仮想カメラ３０４とが同じ位置に設定される場合には、表示装置１０においては、被写体は立体表示ではなく平面表示される。
【０２１４】
ユーザフレンドの観点からは、上述のような処理によって定められる立体感の程度をユーザ操作に応じて、調整できることが好ましい。すなわち、上述のような処理によって定められる右仮想カメラ３０２と左仮想カメラ３０４との間の仮想空間距離Ｄｆ（最大値）までの範囲で、ユーザ操作に応じて、右仮想カメラ３０２と左仮想カメラ３０４との間の仮想空間距離を増減できることが好ましい。
【０２１５】
このようなユーザ操作を受付ける機構としては、立体感の程度に関連付けられた１次元のパラメータ値に対するユーザ操作を受付けるものが好ましい。この立体感の程度に関連付けられた１次元のパラメータ値を受付ける入力手段（ユーザインターフェイス）の一例としては、図１６〜図１８に示すような形態が挙げられる。
【０２１６】
図１６〜図１８は、本発明の実施の形態に従うユーザによる立体感調整を受付ける構成の一例を示す図である。
【０２１７】
図１６には、本発明の実施の形態に従うユーザによる立体感調整を受付ける構成の一例として、所定の一軸方向に沿うスライド操作に応じて、立体感変更指示を受付けることが可能な機構（スライダー１０６２）が示されている。このスライダー１０６２は、表示装置１０の表示面の側面などに設けられる。
【０２１８】
この機構（スライダー１０６２）の調整幅に関して、所与の条件下における右仮想カメラ３０２と左仮想カメラ３０４との間の最大値である、算出直後の仮想空間距離Ｄｆを、スライダー１０６２によって立体感指示の調整幅の略最大値に対応させることが好ましい。
【０２１９】
すなわち、典型的には、ユーザがスライダー１０６２を調整することで、右仮想カメラ３０２と左仮想カメラ３０４との間の仮想空間距離は、最大値である「Ｄｆ」（あるいは、Ｄｆの近傍値）から最小値である「０」まで変化する。言い換えれば、スライダー１０６２による調整幅の最大値（紙面の最上部）には、立体表示用ライブラリ２１８により最初に設定される右仮想カメラ３０２と左仮想カメラ３０４との間の仮想空間距離Ｄｆが対応するように設定され、スライダー１０６２による調整幅の最小値（紙面の最下部）には「０」が対応するように設定される。すなわち、スライダー１０６２によって与えられる調整値をγとすると、立体感調整後の仮想空間距離Ｄｆ’は、以下のような式で表わすことができる。
【０２２０】
仮想空間距離Ｄｆ’＝仮想空間距離Ｄｆ（最大値）×調整値γ  （０≦γ≦１）
なお、スライダー１０６２による調整幅の最大値に、右仮想カメラ３０２と左仮想カメラ３０４との間の仮想空間距離Ｄｆ（最大値）が全く一致しなくともよい。たとえば、仮想空間距離Ｄｆ（最大値）に所定の定数α（０＜α＜１）を乗じた値をスライダー１０６２による調整幅の最大値に対応付けてもよい。この場合には、スライダー１０６２によって与えられる調整値をγとすると、立体感調整後の仮想空間距離Ｄｆ’は、以下のような式で表わすことができる。
【０２２１】
仮想空間距離Ｄｆ’＝定数α×仮想空間距離Ｄｆ（最大値）×調整値γ  （０≦γ≦１）
なお、右仮想カメラ３０２と左仮想カメラ３０４との間の仮想空間距離が「０」となった場合には、表示装置１０では立体表示ではなく平面表示がなされる。そのため、図１６に示すスライダー１０６２には、紙面上方向には立体表示を示す「３Ｄ」の文字が付されており、紙面下方向には平面表示を示す「２Ｄ」の文字が付されている。すなわち、ユーザがスライダー１０６２を「３Ｄ」の位置に変更すると、最大の仮想空間距離が設定される一方、ユーザがスライダー１０６２を「２Ｄ」の位置に変更すると、仮想空間距離は「０」に設定される。
【０２２２】
このようなユーザによるスライダー１０６２の操作に応答して、上述のような処理によって設定された右仮想カメラ３０２および左仮想カメラ３０４の配置位置の少なくとも一方が変更される。そして、右仮想カメラ３０２および／または左仮想カメラ３０４の位置が変更されると、右仮想カメラ３０２および／または左仮想カメラ３０４の視野範囲（視体積）も再設定される。
【０２２３】
図１７には、本発明の実施の形態に従うユーザによる立体感調整を受付ける構成の別の一例として、表示装置１０をタッチパネルとした場合のユーザインターフェイスが示されている。このユーザインターフェイスにおいても、上述の図１６に示すスライダーと類似した、所定の一軸方向に沿った画像オブジェクト３１０と、この画像オブジェクト３１０に対して相対移動するように表示される画像オブジェクト３１２とが表示される。この画像オブジェクト３１２は、ユーザがタッチペン（スタイラスペン）７００などを用いて表示装置１０上をタッチすることで、そのタッチ操作に応じて移動する。そして、この画像オブジェクト３１２の位置に応じた指令が生成される。
【０２２４】
図１８には、本発明の実施の形態に従うユーザによる立体感調整を受付ける構成のさらに別の一例として、表示装置１０と操作ボタンとを用いたユーザインターフェイスが示されている。このユーザインターフェイスにおいても、上述の図１６に示すスライダーと類似した、所定の一軸方向に沿った画像オブジェクト３２０と、この画像オブジェクト３２０に対して相対移動するように表示される画像オブジェクト３２２とが表示される。そして、ユーザが情報処理システム１上に設けられた操作ボタン（＋ボタン１０６３および−ボタン１０６４）を押下することで、この画像オブジェクト３２２は移動する。さらに、この画像オブジェクト３２２の位置に応じた指令が生成される。
【０２２５】
［ｃ５．戻り値］
再度図７を参照して、立体表示用ライブラリ２１８は、右仮想カメラ３０２および左仮想カメラ３０４の設定値を算出するだけでなく、所定処理の結果値を戻り値としてアプリケーションなどに返す。本実施の形態においては、立体表示用ライブラリ２１８は、右仮想カメラ３０２と左仮想カメラ３０４との間の位置関係を示す情報を戻り値として返す。以下の説明では、この位置関係の典型例として、３次元仮想空間内における右仮想カメラ３０２と左仮想カメラ３０４との間の仮想空間距離Ｄｆを用いる場合の処理例について説明する。
【０２２６】
この仮想空間距離Ｄｆは、右仮想カメラ３０２および左仮想カメラ３０４がそれぞれ３次元仮想空間内の無限遠に位置するオブジェクトをそれぞれ仮想的に撮影した場合に生成される、右画像および左画像内における当該オブジェクトに対応する像についての視差量に相当する。これは、以下のように説明できる。右仮想カメラ３０２および左仮想カメラ３０４から見ると、無限遠に位置するオブジェクトは、それぞれの仮想カメラ位置から仮想カメラ方向にのばした直線上にあるように見えるため、ある無限遠に位置するオブジェクトを右仮想カメラによって見た場合と、同じオブジェクトを左仮想カメラによって見た場合とでは、当該無限遠に位置するオブジェクトはそれぞれの仮想カメラの真正面にあるように見えることとなる。したがって、それぞれの仮想カメラの真正面にあるように見えるようにオブジェクトをレンダリングすれば、無限遠にあるオブジェクトとして表現することができる。それぞれの仮想カメラの真正面にあるように見せるには、それぞれの仮想カメラ間の距離に相当する視差量を持った画像を生成して表示すればよいこととなる。なお、右仮想カメラ３０２および左仮想カメラ３０４から無限遠までのいずれかの位置にあるオブジェクトについて生じる視差は、この無限遠に位置するオブジェクトについて生じる視差（仮想空間距離Ｄｆ）より小さくなる。
【０２２７】
したがって、その中に現れる同一対象物についての像の現れる位置の差が仮想空間距離Ｄｆに相当する大きさとなっている一対の画像を表示装置１０に表示することで、ユーザから見て当該像が最も奥側に位置するとして視認できる。言い換えれば、右仮想カメラ３０２と左仮想カメラ３０４との間の仮想空間距離Ｄｆに連係して、適切な視差を有する背景として表示すべき右画像（以下、「右背景画像」とも称す。）および背景として表示すべき左画像（以下、「左背景画像」とも称す。）を生成することで、たとえ表示装置１０における立体感の程度が変化した場合であっても、背景画像をいずれのオブジェクトよりも常に奥側に表示させることができる。
【０２２８】
ところで、上述の仮想空間距離Ｄｆは、対象の３次元空間における仮想空間距離であり、表示装置１０の表示面の実サイズとは異なる単位系となっている。そのため、表示装置１０の表示面上において、その間にどの程度の視差量を有する右背景画像および左背景画像を生成すべきかを容易に決定できるように、戻り値としては、規格化された無次元の値を用いることが好ましい。
【０２２９】
本実施の形態においては、このような無次元の値として、表示装置１０に表示されるレンダリング範囲を基準として規格化した比率を用いる。より具体的には、立体表示用ライブラリ２１８は、基準仮想カメラ３００の視体積に含まれ、基準仮想カメラ３００のカメラ方向３０１に垂直な仮想平面である基準仮想平面領域（図２参照）の幅を基準とした、右仮想カメラ３０２と左仮想カメラ３０４との間の仮想空間距離Ｄｆの比率を戻り値として出力する。
【０２３０】
すなわち、基準仮想平面領域は、表示装置１０の表示面にレンダリングされる範囲に相当するので、基準仮想平面領域の幅に対する仮想空間距離Ｄｆの比率は、表示装置１０の実画面幅に対する右背景画像と左背景画像との間に生じさせるべき現実の視差量の比率に一致する。したがって、基準仮想平面領域の幅に対する仮想空間距離Ｄｆの比率を戻り値として採用することで、ユーザから見て最も奥側に位置する絵である、右背景画像と左背景画像との間に生じさせるべき視差量を表示装置１０の実画面幅に応じて容易に決定できる。
【０２３１】
図１９は、本発明の実施の形態に従う立体表示用ライブラリ２１８の戻り値の算出処理を説明するための図である。
【０２３２】
上述したように、立体表示用ライブラリ２１８の戻り値は、基準仮想平面領域の３次元仮想空間内での幅を基準とした、右仮想カメラ３０２と左仮想カメラ３０４との間の仮想空間距離Ｄｆの比に相当する。
【０２３３】
図１９を参照して、戻り値ＲＶ＝（右仮想カメラ３０２と左仮想カメラ３０４との間の仮想空間距離Ｄｆ／基準仮想平面領域３６０の幅に相当する仮想空間距離Ｗ）として算出される。ここで、仮想空間距離Ｗは、基準仮想カメラ３００からニアクリップ面３６４までの仮想空間距離ＬＮと、基準仮想カメラ３００から基準仮想面までの仮想空間距離Ｄと、ニアクリップ面３６４の幅に相当する仮想空間距離ＮＷとを用いて、以下のように表わすことができる。
【０２３４】
仮想空間距離Ｗ＝仮想空間距離ＮＷ×仮想空間距離Ｄ／仮想空間距離ＬＮ
したがって、戻り値ＲＶは、以下のように算出することができる。
【０２３５】
戻り値ＲＶ＝｛仮想空間距離Ｄｆ／（仮想空間距離ＮＷ×仮想空間距離Ｄ／仮想空間距離ＬＮ）｝
これらのパラメータのうち、仮想空間距離ＮＷおよび仮想空間距離ＬＮについては、立体表示用ライブラリ２１８に入力される（１）基準仮想カメラ情報（図７参照）に基づいて算出され、仮想空間距離Ｄについては、立体表示用ライブラリ２１８に入力される（２）基準仮想面情報に基づいて算出される。また、仮想空間距離Ｄｆについては、上述したように、右仮想カメラ３０２および左仮想カメラ３０４の設定処理の結果として決定される。
【０２３６】
上述した戻り値ＲＶは、３次元仮想空間内に設定された右仮想カメラ３０２および左仮想カメラ３０４によってそれぞれ無限遠にあるオブジェクトを撮影した場合に、表示装置１０の表示面においてどの程度ずれるかを示す。たとえば、遠くの景色を１枚の画像で描画するような場合、右仮想カメラ３０２によって出力される右画像を（表示面の横幅×戻り値（％））だけ右にずらし、かつ、左仮想カメラ３０４によって出力される左画像を表示面の横幅×戻り値だけ左ずらすことで、この遠くの景色を表わす画像を最も奥にある絵として表現することができる。
【０２３７】
［ｃ７．立体表示用ライブラリに係る変形例］
上述の図１２に示す例では、視差判定面３６１を、ニアクリップ面３６４とファークリップ面３６６との間の任意の位置に設定する例を示した。一例として、図７に示す立体表示用ライブラリ２１８では、基準仮想平面領域３６０からの仮想空間距離Ａ（（３）視差判定面情報）を用いて、図１２に示すような、視差判定面３６１が定義される。
【０２３８】
これに対して、視差判定面３６１を設定する位置を予め設定しておいてもよい。たとえば、視差判定面３６１をファークリップ面３６６と一致するように設定してもよい。すなわち、ファークリップ面３６６において、右オブジェクト画像と左オブジェクト画像との間に生じる視差量を評価してもよい。
【０２３９】
このように、視差判定面３６１をファークリップ面３６６に一致させた場合には、仮想空間のレンダリングされる範囲内において、最も奥側にある面における視差量が評価の対象となる。そのため、レンダリング対象の範囲内に存在するすべてのオブジェクトについて、限界視差量を超える視差が生じないことを保証できる。
【０２４０】
すなわち、右仮想カメラによって生成される右画像と左仮想カメラによって生成される左画像との間に生じる視差量を評価するための視差判定面３６１を、両仮想カメラの視体積のうち基準仮想カメラから最も遠い位置に設定する。
【０２４１】
このような場合には、立体表示用ライブラリに対して、（３）視差判定面情報を入力する必要がない。すなわち、少なくとも、（１）基準仮想カメラ情報を用いてファークリップ面３６６を設定さえすれば、視差判定面３６１を自動的に設定できるからである。
【０２４２】
そこで、視差判定面３６１をファークリップ面３６６と一致するように設定する場合には、図２０に示すような立体表示用ライブラリ２１８＃を用いてもよい。この図２０に示す立体表示用ライブラリ２１８＃では、（３）視差判定面情報の入力が省略される（あるいは、無効値“ｎｕｌｌ”が入力される）。これにより、立体表示用ライブラリ２１８＃に与える情報をより少なくできるので、処理の簡素化および高速化を実現できる。
【０２４３】
代替の構成として、図７に示す立体表示用ライブラリ２１８と同数の入力引数をもつように設計することも可能である。この場合には、「アプリケーション優先モード」においても、（３’）基準立体度合に相当する情報を受付けるようにしてもよい。典型的には、立体表示用ライブラリ２１８＃は、「０」から「１」までの間の値をとる係数である基準立体度合の入力を受付け、仮想カメラ間の仮想空間距離Ｄｆ（図９参照）を調整する。より具体的には、上述したような手順に従って算出された仮想空間距離Ｄｆ（または、戻り値ＲＶ）に対して、さらに補正するような処理に用いられる。すなわち、立体表示用ライブラリ２１８＃は、図１６〜図１８に示したような立体感調整の機能を実現するためのパラメータを受付け可能に構成される。
【０２４４】
このような機構を採用することで、「アプリケーション優先モード」においても、立体感を補助的に調整することができる。
【０２４５】
＜Ｄ．処理手順＞
次に、図２１および図２２を参照して、本実施の形態に従うプログラムの処理内容について説明する。なお、図２１および図２２に示す各ステップは、典型的には、情報処理システム１のＣＰＵ１００がプログラムを実行することで提供される。
【０２４６】
（ｄ１．メインルーチン）
図２１は、本発明の実施の形態に従うプログラムのメインルーチンを示すフローチャートである。図２１に示すフローチャートにおいては、アプリケーションの進行に伴って、図１に示すような、３次元仮想空間内のオブジェクトを表示装置１０で平面表示する場合と同様のパラメータを指定することで、表示装置１０において立体表示を行なう場合の処理について説明する。
【０２４７】
図２１を参照して、ＣＰＵ１００は、プログラムに記述されたアプリケーション命令を順次実行する（ステップＳ２）。すなわち、図６に示す進行モジュール２０４が、入力モジュール２０２などによって生成される内部コマンドなどに従って、アプリケーションを進行する。
【０２４８】
そして、ＣＰＵ１００は、表示装置１０に対する描画処理の命令が実行対象になると（ステップＳ４においてＹＥＳ）、ステップＳ８以下の処理を実行する。これに対して、対象の命令が表示装置１０に対する描画処理以外であれば（ステップＳ４においてＮＯ）、ＣＰＵ１００は、対象の命令に従う処理を実行する（ステップＳ６）。その後、処理はステップＳ２へ戻る。
【０２４９】
ステップＳ８において、ＣＰＵ１００は、アプリケーションの進行に伴って指定される基準仮想カメラ（図１に示す基準仮想カメラ３００）の設定値（配置位置および視体積）を所定のレジスタへ格納する。なお、基準仮想カメラの設定値としては、カメラ行列（プロジェクション行列およびビュー行列）が用いられる。すなわち、ステップＳ８においては、図７に示す（１）基準仮想カメラ情報が指定される。
【０２５０】
続くステップＳ１０において、ＣＰＵ１００は、「アプリケーション優先モード」および「リアルモード」のいずれが指定されているかを判断する。このモードは、アプリケーションの制作者の意図やユーザ操作などに応じて指定される。
【０２５１】
「アプリケーション優先モード」が指定されている場合（ステップＳ１０において「アプリケーション優先」の場合）には、ＣＰＵ１００は、内部フラグを「アプリケーション優先モード」にセットする（ステップＳ１２）。すなわち、図７に示す（４）モード情報がセットされる。続いて、ＣＰＵ１００は、アプリケーションの進行に伴って表示される３次元仮想空間における、基準仮想面（図１２および図１３に示す基準仮想平面領域３６０に相当）および視差判定面（図１２および図１３に示す視差判定面３６１）の位置を特定するための情報を所定のレジスタへ格納する（ステップＳ１４）。すなわち、図７に示す（２）基準仮想面情報、および（３）視差判定面情報が指定される。なお、後述のステップＳ１６において、立体表示用ライブラリ２１８＃（図２０）がコールされる場合には、（３）視差判定面情報の指定が省略されてもよい。
【０２５２】
さらに、ＣＰＵ１００は、ステップＳ８およびＳ１２において設定したレジスタの値を指定して、右仮想カメラおよび左仮想カメラを設定するために、立体表示用ライブラリ２１８（または、立体表示用ライブラリ２１８＃）をコールする（ステップＳ１６）。
【０２５３】
これに対して、「リアルモード」が指定されている場合（ステップＳ１０において「リアルモード」の場合）には、ＣＰＵ１００は、内部フラグを「リアルモード」にセットする（ステップＳ１８）。すなわち、図７に示す（４）モード情報がセットされる。続いて、ＣＰＵ１００は、３次元仮想空間における視認させたい表示対象が存在する基準仮想面（図１２および図１３に示す基準仮想平面領域３６０に相当）を特定するための情報、および基準立体度合の値を所定のレジスタへ格納する（ステップＳ２０）。すなわち、図７に示す（２）基準仮想面情報、および（３’）基準立体度合が指定される。さらに、ＣＰＵ１００は、ステップＳ８およびＳ１８において設定したレジスタの値を指定して、右仮想カメラおよび左仮想カメラを設定するために、立体表示用ライブラリ２１８（または、立体表示用ライブラリ２１８＃）をコールする（ステップＳ１６）。
【０２５４】
ステップＳ１６における立体表示用ライブラリ２１８（または、立体表示用ライブラリ２１８＃）での処理については、図２２を用いて詳述するが、立体表示用ライブラリ２１８をコールすることによって、ＣＰＵ１００は、右仮想カメラのカメラ行列（プロジェクション行列およびビュー行列）、および、左仮想カメラのカメラ行列（プロジェクション行列およびビュー行列）、ならびに、戻り値（基準仮想カメラ３００についての基準仮想平面領域（図２参照）の幅を基準とした、右仮想カメラ３０２と左仮想カメラ３０４との間の距離の比）を算出する。
【０２５５】
続くステップＳ３０において、ＣＰＵ１００は、立体表示用ライブラリ２１８（または、立体表示用ライブラリ２１８＃）によって算出されたカメラ行列に従って、３次元仮想空間に右仮想カメラ（図１に示す右仮想カメラ３０２）を設定し、右仮想カメラによる仮想撮影に基づく右画像を生成する。さらに、ステップＳ３２において、ＣＰＵ１００は、算出されたカメラ行列に基づいて、３次元仮想空間に左仮想カメラ（図１に示す左仮想カメラ３０４）を設定し、左仮想カメラによる仮想撮影に基づく左画像を生成する。
【０２５６】
すなわち、上述のステップＳ３０およびＳ３２においては、図６に示す画像レンダリングモジュール２０６が、立体表示用ライブラリ２１８（または、立体表示用ライブラリ２１８＃）による算出結果に従って、オブジェクト定義データ２０８を参照して、右画像および左画像を生成（レンダリング）する。
【０２５７】
最終的に、ステップＳ３４において、ＣＰＵ１００は、ステップＳ３０およびＳ３２において生成した右画像および左画像を表示装置１０の対応する画素へ出力する。
【０２５８】
その後、ＣＰＵ１００は、ユーザが図１６〜図１８に示すようなスライダーなどを操作して、立体感の程度を変更したか否かを判断する（ステップＳ３６）。立体感の程度を変更された場合（ステップＳ３６においてＹＥＳの場合）には、ステップＳ１６の処理が再度実行される。
【０２５９】
立体感の程度を変更されていない場合（ステップＳ３６においてＮＯの場合）には、ＣＰＵ１００は、アプリケーションの終了が指示されたか否かを判断する（ステップＳ３８）。アプリケーションの終了が指示されていなければ（ステップＳ３８においてＮＯ）、ステップＳ２以下の処理が繰返される。これに対して、アプリケーションの終了が指示されれば（ステップＳ３８においてＹＥＳ）、処理は終了する。
【０２６０】
（ｄ２．立体表示用ライブラリ）
図２２は、本発明の実施の形態に従う立体表示用ライブラリ２１８の処理内容を示すフローチャートである。図２２を参照して、ＣＰＵ１００は、まず、初期化処理を実行する（ステップＳ１００）。この初期化処理には、表示装置１０の表示面の実サイズ、ユーザの眼の実間隔、ユーザから表示装置１０の表示面までの実距離、ユーザが立体表示を気持ちよく受け入れることができる限界の深さなどの初期値が所定の設定値にセットされる。これらの設定値を設定する方法としては、表示装置１０のハードウェア（あるいは、ファームウェア）に予め登録されている想定値を指定する態様、アプリケーションによって指定する態様、および、ユーザが設定する態様などを利用してもよい。
【０２６１】
続くステップＳ１０２において、ＣＰＵ１００は、基準仮想カメラのプロジェクション行列に基づいて、３次元仮想空間内のニアクリップ面およびファークリップ面の範囲（３次元仮想空間の値）を算出することで、基準仮想カメラの視体積を取得する。さらに続くステップＳ１０４において、ＣＰＵ１００は、基準仮想カメラのプロジェクション行列および基準仮想面の位置情報に基づいて、レンダリング対象の基準仮想平面領域の範囲（３次元仮想空間における値）を取得する。さらに続くステップＳ１０６において、ＣＰＵ１００は、３次元仮想空間における基準仮想平面領域の横方向の長さ（または、縦方向の長さ）と、表示装置１０の表示面の実画面幅（または、実画面高さ）との比率に基づいて、現実空間と３次元仮想空間との間の変換係数を算出する。
【０２６２】
続くステップＳ１０８において、ＣＰＵ１００は、「アプリケーション優先モード」および「リアルモード」のいずれが指定されているかを判断する。「アプリケーション優先モード」が指定された場合（ステップＳ１０８において「アプリケーション優先モード」の場合）には、ステップＳ１１０以下の処理が実行される。また、「リアルモード」が指定された場合（ステップＳ１０８において「リアルモード」の場合）には、ステップＳ１２０以下の処理が実行される。
【０２６３】
ステップＳ１１０において、ＣＰＵ１００は、ユーザが表示装置１０において立体表示を気持ちよく受け入れることができる表示面上での右画像と左画像との間の最大視差量（限界視差量）を取得する。ユーザに視認させたいオブジェクトについての視差量は、この限界視差量以下の視差量となるようにして表示することが好ましい。この限界視差量は、表示装置１０の表示面についての実画面幅、ユーザの眼の実間隔、およびユーザから表示装置１０の表示面までの実距離などに応じて定まる。
【０２６４】
ステップＳ１１０における限界視差量の取得方法の一例としては、想定される表示装置１０の表示面についての実画面幅、ユーザの眼の実間隔、およびユーザから表示装置１０の表示面までの実距離などから予め算出しておいて、その値を利用するようにしてもよい。あるいは、例えば、表示装置１０に撮像装置などを搭載しておき、当該撮像装置を利用してユーザの眼の実間隔を測定する方法といった、他の手段によって求められた値から限界視差量を算出するようにしてもよい。
【０２６５】
続くステップＳ１１２において、ＣＰＵ１００は、ステップＳ１０６において算出した変換係数を用いて、限界視差量に対応する、３次元仮想空間における仮想空間距離Ｓ（図１２に示す、右最大視差面３６２と左最大視差面３６３とのずれ量に相当）を算出する。すなわち、ステップＳ１１０において取得される限界視差量は、現実空間における値であり、ステップＳ１１２においては、以下に示す視差判定面上での判定処理を行なうために、現実空間における値を対象の３次元仮想空間における値に変換する。
【０２６６】
続くステップＳ１１４およびＳ１１６において、ＣＰＵ１００は、右仮想カメラおよび左仮想カメラの配置位置を決定する。すなわち、ステップＳ１１４において、ＣＰＵ１００は、３次元仮想空間における視差判定面において仮想空間距離Ｓの視差が生じるように、右仮想カメラによってレンダリングされる範囲である右最大視差面（図１２に示す右最大視差面３６２）と、左仮想カメラによってレンダリングされる範囲である左最大視差面（図１２に示す左最大視差面３６３）とを設定する。
【０２６７】
視差判定面は、（３）視差判定面情報が入力されている場合には、基準仮想平面領域を基準に設定され、（３）視差判定面情報が入力されてない場合には、ファークリップ面の位置に設定される。
【０２６８】
続くステップＳ１１６において、ＣＰＵ１００は、ステップＳ１０４において取得される基準仮想平面領域と、ステップＳ１１４において設定される右最大視差面および左最大視差面とに基づいて、右仮想カメラおよび左仮想カメラの配置位置をそれぞれ決定する。より具体的には、ＣＰＵ１００は、基準仮想平面領域と右最大視差面とを含む視体積が定義できる位置に右仮想カメラを設定するとともに、基準仮想平面領域と左最大視差面とを含む視体積が定義できる位置に左仮想カメラを設定する。なお、右仮想カメラおよび左仮想カメラは、基準仮想カメラを通り、かつ、基準仮想面に平行な、基準線上に配置される。すなわち、ＣＰＵ１００は、基準仮想カメラを基準線に沿って所定距離だけそれぞれ移動させることで、右仮想カメラおよび左仮想カメラの位置を決定する。
【０２６９】
続くステップＳ１１８において、ＣＰＵ１００は、ステップＳ１１６において決定した右仮想カメラおよび左仮想カメラとの間の仮想空間距離Ｄｆを算出する。そして、処理はステップＳ１４０へ進む。
【０２７０】
ステップＳ１２０において、ＣＰＵ１００は、現実の表示装置１０とユーザとの位置関係に対応するように、３次元仮想空間における基準仮想面に対する基準仮想カメラの仮想空間距離Ｄ’を算出する（図１５（Ａ）および図１５（Ｃ）参照）。より具体的には、ＣＰＵ１００は、ユーザから表示装置１０の表示面までの実距離として想定される距離（図１５（Ａ）に示す実距離Ｌ１）に、ステップＳ１０６において算出した変換係数を乗じて、基準仮想カメラから基準仮想面までの新たな仮想空間距離Ｄ’（図１５（Ｃ）参照）を算出する。リアルモードにおいては、基準仮想平面領域と仮想カメラとの間の位置関係が、表示装置１０の表示面とユーザの目との間の位置関係と一致するように、仮想カメラの位置が設定される。すなわち、ＣＰＵ１００は、仮想空間距離Ｄ’と、ユーザから表示装置１０の表示面までの距離との比が、基準仮想平面領域の幅Ｗ（図１５（Ｂ）参照）と表示装置１０の実画面幅Ｌ３（図１５（Ａ）参照）との比に一致するように、仮想空間距離Ｄ’を設定する。
【０２７１】
続くステップＳ１２２において、ＣＰＵ１００は、ステップＳ１２０において算出した新たな仮想空間距離Ｄ’に基づいて、３次元仮想空間における基準仮想カメラの位置を変更する（図１５（Ｃ）参照）。ＣＰＵ１００は、この基準仮想カメラの位置変更に伴って、基準仮想カメラとニアクリップ面およびファークリップ面との間の相対的な位置関係を変更する。
【０２７２】
ステップＳ１２４において、ＣＰＵ１００は、変更後の基準仮想カメラの位置とニアクリップ面との位置関係が適切であるか否かを判断する。これは、基準仮想カメラをニアクリップ面に近付ける方向に移動させることで、基準仮想カメラのカメラ方向とは反対側にニアクリップ面が位置することになる場合もあるからである。
【０２７３】
変更後の基準仮想カメラの位置とニアクリップ面との位置関係が適切ではない場合（ステップＳ１２４においてＮＯの場合）には、ＣＰＵ１００は、ニアクリップ面の位置を変更する（ステップＳ１２６）。さらに続くステップＳ１２８において、ＣＰＵ１００は、変更後のニアクリップ面の位置とファークリップ面との位置関係が適切であるか否かを判断する（ステップＳ１２８）。これは、ニアクリップ面の位置を変更することで、ニアクリップ面がファークリップ面より遠方に位置することになる場合もあるからである。
【０２７４】
変更後のニアクリップ面の位置とファークリップ面との位置関係が適切ではない場合（ステップＳ１２８においてＮＯの場合）には、ＣＰＵ１００は、ファークリップ面の位置を変更する（ステップＳ１３０）。
【０２７５】
その後、ステップＳ１３２において、ＣＰＵ１００は、新たなニアクリップ面の範囲（３次元仮想空間の値）を取得する。
【０２７６】
続くステップＳ１３４において、ＣＰＵ１００は、現実に近い立体表示を行なう場合における、右仮想カメラおよび左仮想カメラとの間の最大の仮想空間距離を算出する。より具体的には、ユーザの眼の実間隔に、ステップＳ１０６において算出した変換係数を乗じて、３次元仮想空間における最大の仮想空間距離を算出する。さらに続くステップＳ１３６において、ＣＰＵ１００は、算出した最大の仮想空間距離に対して、立体表示用ライブラリ２１８がコールされた際に指定された（３’）基準立体度合を乗じて、右仮想カメラ３０２と左仮想カメラ３０４との間の仮想空間距離Ｄｆを算出する。これにより、右仮想カメラおよび左仮想カメラの位置が決定される。そして、処理はステップＳ１４０へ進む。
【０２７７】
ステップＳ１４０において、ＣＰＵ１００は、図１６〜図１８に示すようなスライダーでの設定値（典型的には、０〜１００％の範囲の値）を取得する。さらに続くステップＳ１４２において、ＣＰＵ１００は、仮想空間距離ＤｆにステップＳ１４０において取得した設定値を乗じて得られる新たな仮想空間距離に従って、先の処理で設定されている右仮想カメラおよび／または左仮想カメラの位置を変更する。
【０２７８】
続くステップＳ１４４において、ＣＰＵ１００は、基準仮想カメラの視体積に含まれる基準仮想平面領域の範囲が維持されるように、右仮想カメラの視体積および左仮想カメラの視体積をそれぞれ設定する。さらに続くステップＳ１４６において、ＣＰＵ１００は、設定したそれぞれの仮想カメラの視体積を表わす、右仮想カメラのプロジェクション行列および左仮想カメラのプロジェクション行列をそれぞれ算出する。
【０２７９】
続くステップＳ１４８において、ＣＰＵ１００は、基準仮想カメラのビュー行列に基づいて、基準仮想カメラの位置および向きを取得する。さらに続くステップＳ１５０において、ＣＰＵ１００は、先の処理で算出されている仮想空間距離Ｄｆに基づいて、右仮想カメラおよび左仮想カメラの座標位置、ならびに、右仮想カメラおよび左仮想カメラの注視点を算出する。さらに続くステップＳ１５２において、ＣＰＵ１００は、ステップＳ１５０において算出したパラメータに基づいて、右仮想カメラおよび左仮想カメラのビュー行列をそれぞれ算出する。
【０２８０】
続くステップＳ１５４において、ＣＰＵ１００は、戻り値ＲＶを算出する。すなわち、ＣＰＵ１００は、基準仮想平面領域の幅に相当する仮想空間距離を基準とした、右仮想カメラと左仮想カメラとの間の仮想空間距離の比率を算出する。
【０２８１】
その後、処理はリターンする。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２８２】
１  情報処理システム、１０  表示装置、１２  視差バリア、１４  スリット、１６，１８  ガラス基板、５０  仮想カメラ設定機能、５１  最大距離決定機能、６０  視体積設定機能、７０  変更受付機能、８０  モード設定機能、９０  レンダリング機能、９２  オブジェクト定義、１０６  入力部、１１２  第１ＶＲＡＭ、１１４  ＬＣＤドライバ、１１６  第１ＬＣＤ、１２２  第２ＶＲＡＭ、１２６  第２ＬＣＤ、２００Ａ，２００Ｂ  アプリケーション、２０２  入力モジュール、２０４  進行モジュール、２０６  画像レンダリングモジュール、２０８  オブジェクト定義データ、２１８，２１８Ａ  立体表示用ライブラリ、２５０Ａ，２５０Ｂ  ファームウェア。
【図１】
2011120224.tif 000004
【図２】
2011120224.tif 000005
【図３】
2011120224.tif 000006
【図４】
2011120224.tif 000007
【図５】
2011120224.tif 000008
【図６】
2011120224.tif 000009
【図７】
2011120224.tif 000010
【図８】
2011120224.tif 000011
【図９】
2011120224.tif 000012
【図１０】
2011120224.tif 000013
【図１１】
2011120224.tif 000014
【図１２】
2011120224.tif 000015
【図１３】
2011120224.tif 000016
【図１４】
2011120224.tif 000017
【図１５】
2011120224.tif 000018
【図１６】
2011120224.tif 000019
【図１７】
2011120224.tif 000020
【図１８】
2011120224.tif 000021
【図１９】
2011120224.tif 000022
【図２０】
2011120224.tif 000023
【図２１】
2011120224.tif 000024
【図２２】
2011120224.tif 000025
【手続補正書】
【提出日】平成22年12月21日(2010.12.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
立体表示が可能な表示装置を制御するための表示制御プログラムであって、前記表示制御プログラムは、前記表示装置のコンピュータを、
所定の仮想空間を表現した画像を前記表示装置で立体表示するために用いられる右画像および左画像を生成するために、前記仮想空間の仮想的な撮影に用いられる右仮想カメラおよび左仮想カメラのカメラ方向が同じ方向を向き、かつ、当該カメラ方向と両仮想カメラの位置を通る直線とが垂直になるように、前記仮想空間内に両仮想カメラの位置および方向をそれぞれ設定する仮想カメラ設定手段と、
前記仮想空間の中で少なくとも前記表示装置に表示すべき領域である表示対象領域に対して、前記右仮想カメラの視体積および前記左仮想カメラの視体積の両方が当該表示対象領域を含むように、両仮想カメラの視体積を設定し、さらに、少なくとも一方の仮想カメラの視体積が、当該一方の仮想カメラの位置から前記カメラ方向に伸びる線に関して他方の仮想カメラが存在する側に偏在するように設定する視体積設定手段として機能させ、
前記仮想カメラ設定手段は、基準仮想カメラが前記仮想空間内に設定されることに応答して、前記右仮想カメラおよび前記左仮想カメラを、当該右仮想カメラおよび当該左仮想カメラの前記カメラ方向が、前記基準仮想カメラのカメラ方向である基準カメラ方向と同じ方向になるように設定し、
前記視体積設定手段は、
前記基準仮想カメラの視体積に含まれ、前記基準カメラ方向と垂直な所定の面上の領域である仮想平面領域である基準仮想平面領域を前記表示対象領域として設定し、
前記右仮想カメラの視体積における前記基準仮想平面領域に対応する位置の断面、および、前記左仮想カメラの視体積における前記基準仮想平面領域に対応する位置の断面が、いずれも前記基準仮想カメラの視体積における前記基準仮想平面領域に対応する位置の断面と一致するように、前記右仮想カメラおよび前記左仮想カメラの視体積を設定する、表示制御プログラム。
【請求項２】
前記仮想カメラ設定手段は、前記基準仮想カメラの配置位置を前記基準カメラ方向と垂直な方向に沿って右側に移動させた位置に前記右仮想カメラを設定すること、および、前記基準仮想カメラの配置位置を前記基準カメラ方向と垂直な方向に沿って左側に移動させた位置に前記左仮想カメラを設定すること、の少なくとも一方を実行する、請求項１に記載の表示制御プログラム。
【請求項３】
前記仮想カメラ設定手段は、前記基準仮想カメラの配置位置を前記基準カメラ方向と垂直な方向に沿って所定距離だけ右側に移動させた位置に前記右仮想カメラを設定するとともに、前記基準仮想カメラの配置位置を前記基準カメラ方向と垂直な方向に沿って前記所定距離だけ左側に移動させた位置に前記左仮想カメラを設定する、請求項２に記載の表示制御プログラム。
【請求項４】
前記視体積設定手段は、
前記基準仮想カメラの視体積に含まれる前記基準仮想平面領域の複数の頂点位置を取得し、
前記右仮想カメラの位置から前記複数の頂点位置のそれぞれに向かう線によって、前記右仮想カメラの視体積を設定し、
前記左仮想カメラの位置から前記複数の頂点位置のそれぞれに向かう線によって、前記左仮想カメラの視体積を設定する、請求項１〜３のいずれか１項に記載の表示制御プログラム。
【請求項５】
前記視体積設定手段は、前記基準仮想カメラの視体積のニアクリップ面およびファークリップ面を用いて、前記右仮想カメラおよび前記左仮想カメラの視体積を設定する、請求項１〜４のいずれか１項に記載の表示制御プログラム。
【請求項６】
前記表示制御プログラムは、さらに前記コンピュータを、前記視体積設定手段によって設定された、前記右仮想カメラおよび前記左仮想カメラの視体積を示す情報を出力する第１情報出力手段として機能させる、請求項１〜５のいずれか１項に記載の表示制御プログラム。
【請求項７】
前記表示制御プログラムは、さらに前記コンピュータを、前記仮想カメラ設定手段によって設定された、前記右仮想カメラと前記左仮想カメラとの間の距離を示す情報を出力する第２情報出力手段として機能させる、請求項１〜６のいずれか１項に記載の表示制御プログラム。
【請求項８】
前記第２情報出力手段は、前記基準仮想平面領域の幅を基準とした、前記右仮想カメラと前記左仮想カメラとの間の距離の比を出力する、請求項７に記載の表示制御プログラム。
【請求項９】
前記表示制御プログラムは、ライブラリとして実装されるプログラムを含む、請求項１〜８のいずれか１項に記載の表示制御プログラム。
【請求項１０】
前記視体積設定手段は、前記右仮想カメラの視体積および前記左仮想カメラの視体積を互いに対称的に偏在するように設定する、請求項１〜９のいずれか１項に記載の表示制御プログラム。
【請求項１１】
前記表示制御プログラムは、
前記右仮想カメラによって生成される前記右画像と前記左仮想カメラによって生成される前記左画像との間に生じる視差量を評価するための、前記基準仮想平面領域と平行な視差判定面の位置を指定するための情報を受付けるように構成される、請求項１０に記載の表示制御プログラム。
【請求項１２】
前記表示制御プログラムは、
前記右仮想カメラによって生成される前記右画像と前記左仮想カメラによって生成される前記左画像との間に生じる視差量を評価するための、前記基準仮想平面領域と平行な視差判定面を、前記両仮想カメラの視体積のうち前記基準仮想カメラから最も遠い位置に設定するように構成される、請求項１０に記載の表示制御プログラム。
【請求項１３】
前記視差判定面は、前記基準仮想平面領域に対して、前記基準仮想カメラとは反対側に設けられる、請求項１２に記載の表示制御プログラム。
【請求項１４】
前記仮想カメラ設定手段は、前記右仮想カメラと前記左仮想カメラとの間の許容される最大距離を決定する最大距離決定手段を含む、請求項１〜１３のいずれか１項に記載の表示制御プログラム。
【請求項１５】
前記表示制御プログラムは、さらに前記コンピュータを、第１および第２モードのいずれかを設定するモード設定手段として機能させ、
前記仮想カメラ設定手段は、
前記第１モードが設定された場合に、前記右仮想カメラによって生成される前記右画像と前記左仮想カメラによって生成される前記左画像との間に生じる視差量が予め定められた値を超えないように、前記右仮想カメラおよび前記左仮想カメラを設定し、
前記第２モードが設定された場合に、前記基準仮想平面領域から前記右仮想カメラおよび前記左仮想カメラまでの距離が予め定められた値となるように、前記右仮想カメラおよび前記左仮想カメラを設定する、請求項１４に記載の表示制御プログラム。
【請求項１６】
前記表示制御プログラムは、さらに前記コンピュータを、立体感変更指示に応答して、前記仮想カメラ設定手段によって設定された前記右仮想カメラの位置および前記左仮想カメラの位置の少なくとも一方を変更する変更受付手段として機能させる、請求項１〜１５のいずれか１項に記載の表示制御プログラム。
【請求項１７】
前記視体積設定手段は、前記変更受付手段によって、前記右仮想カメラの位置、または、前記左仮想カメラの位置が変更されたときに、前記右仮想カメラおよび前記左仮想カメラの視体積を変更する、請求項１６に記載の表示制御プログラム。
【請求項１８】
前記変更受付手段は、所定の一軸方向に沿うスライド操作に応じて、前記立体感変更指示を受付ける、請求項１６または１７に記載の表示制御プログラム。
【請求項１９】
前記変更受付手段は、前記仮想カメラ設定手段により最初に設定された前記右仮想カメラと前記左仮想カメラとの間の距離を前記立体感指示の調整幅の略最大値に対応させる、請求項１６〜１８のいずれか１項に記載の表示制御プログラム。
【請求項２０】
立体表示が可能な表示装置と、
所定の仮想空間を表現した画像を前記表示装置で立体表示するために用いられる右画像および左画像を生成するために、前記仮想空間の仮想的な撮影に用いられる右仮想カメラおよび左仮想カメラのカメラ方向が同じ方向を向き、かつ、当該カメラ方向と両仮想カメラの位置を通る直線とが垂直になるように、前記仮想空間内に両仮想カメラの位置および方向をそれぞれ設定する仮想カメラ設定手段と、
前記仮想空間の中で少なくとも前記表示装置に表示すべき領域である表示対象領域に対して、前記右仮想カメラの視体積および前記左仮想カメラの視体積の両方が当該表示対象領域を含むように、両仮想カメラの視体積を設定し、さらに、少なくとも一方の仮想カメラの視体積が、当該一方の仮想カメラの位置から前記カメラ方向に伸びる線に関して他方の仮想カメラが存在する側に偏在するように設定する視体積設定手段とを備え、
前記仮想カメラ設定手段は、基準仮想カメラが前記仮想空間内に設定されることに応答して、前記右仮想カメラおよび前記左仮想カメラを、当該右仮想カメラおよび当該左仮想カメラの前記カメラ方向が、前記基準仮想カメラのカメラ方向である基準カメラ方向と同じ方向になるように設定し、
前記視体積設定手段は、
前記基準仮想カメラの視体積に含まれ、前記基準カメラ方向と垂直な所定の面上の領域である仮想平面領域である基準仮想平面領域を前記表示対象領域として設定し、
前記右仮想カメラの視体積における前記基準仮想平面領域に対応する位置の断面、および、前記左仮想カメラの視体積における前記基準仮想平面領域に対応する位置の断面が、いずれも前記基準仮想カメラの視体積における前記基準仮想平面領域に対応する位置の断面と一致するように、前記右仮想カメラおよび前記左仮想カメラの視体積を設定する、情報処理システム。
【請求項２１】
立体表示の制御に利用されるプログラムであって、前記プログラムはコンピュータを、
所定の仮想空間における基準仮想カメラを定義する第１プロジェクション行列および第１ビュー行列、ならびに、当該基準仮想カメラのカメラ方向である基準カメラ方向と垂直な所定の面上の領域である仮想平面領域までの当該基準仮想カメラからの距離の入力を受付ける入力手段と、
前記入力手段によって受付けられた、前記第１プロジェクション行列、前記第１ビュー行列、前記仮想平面領域までの前記基準仮想カメラからの距離に基づいて、前記仮想空間に前記基準仮想カメラを設定するとともに、前記仮想空間の仮想的な撮影に用いられる右仮想カメラおよび左仮想カメラのカメラ方向が同じ方向を向き、かつ、当該カメラ方向と両仮想カメラの位置を通る直線とが垂直になるように、前記仮想空間内に両仮想カメラの位置および方向をそれぞれ設定する仮想カメラ設定手段と、
前記仮想空間の中で少なくとも立体表示すべき領域である表示対象領域に対して、前記右仮想カメラの視体積および前記左仮想カメラの視体積の両方が当該表示対象領域を含むように、両仮想カメラの視体積を設定し、さらに、少なくとも一方の仮想カメラの視体積が、当該一方の仮想カメラの位置から前記カメラ方向に伸びる線に関して他方の仮想カメラが存在する側に偏在するように設定する視体積設定手段と、
前記仮想カメラ設定手段および前記視体積設定手段によって設定された前記右仮想カメラを定義する第２プロジェクション行列および第２ビュー行列と、前記仮想カメラ設定手段および前記視体積設定手段によって設定された前記左仮想カメラを定義する第３のプロジェクション行列および第３のビュー行列とを出力する出力手段として機能させる、プログラム。