(57)【特許請求の範囲】
【請求項１】
仮想空間で表現される仮想物体に関する情報を保持する保持部と、
実空間におけるユーザの視点位置から仮想空間におけるユーザの視点位置を決定する決定部と、
前記決定部により決定された仮想空間におけるユーザの視点位置および前記保持部により保持された仮想物体の情報に応じて、当該仮想物体を含む最少の領域が投影される位置に、前記仮想物体を投影する投影面を配置する配置部と、
前記配置部により配置された投影面を用いて前記仮想物体を描画した映像を生成する生成部と、
前記配置部により配置された投影面と、表示面が曲面で形成された表示装置の曲面形状とに基づいて、前記生成部により生成された映像を変形するための変形パラメータを算出する算出部と、
前記算出部により算出された変形パラメータを用いて、前記生成部により生成された映像を変形する変形部と
を有することを特徴とする映像生成装置。 
【請求項２】
前記配置部は、前記仮想物体のうち前記表示装置の表示面の表示範囲に含まれる部分の全体が投影されるように前記投影面を配置することを特徴とする請求項１に記載の映像生成装置。 
【請求項３】
コンピュータに、
仮想空間で表現される仮想物体に関する情報を保持する保持手順と、
実空間におけるユーザの視点位置から仮想空間におけるユーザの視点位置を決定する決定手順と、
前記決定手順により決定された仮想空間におけるユーザの視点位置および前記保持手順により保持された仮想物体の情報に応じて、当該仮想物体を含む最少の領域が投影される位置に、前記仮想物体を投影する投影面を配置する配置手順と、
前記配置手順により配置された投影面を用いて前記仮想物体を描画した映像を生成する生成手順と、
前記配置手順により配置された投影面と、表示面が曲面で形成された表示装置の曲面形状とに基づいて、前記生成手順により生成された映像を変形するための変形パラメータを算出する算出手順と、
前記算出手順により算出された変形パラメータを用いて、前記生成手順により生成された映像を変形する変形手順と
を実行させることを特徴とする映像生成プログラム。 
【請求項４】
コンピュータが、
仮想空間で表現される仮想物体に関する情報を保持する保持ステップと、
実空間におけるユーザの視点位置から仮想空間におけるユーザの視点位置を決定する決定ステップと、
前記決定ステップにより決定された仮想空間におけるユーザの視点位置および前記保持ステップにより保持された仮想物体の情報に応じて、当該仮想物体を含む最少の領域が投影される位置に、前記仮想物体を投影する投影面を配置する配置ステップと、
前記配置ステップにより配置された投影面を用いて前記仮想物体を描画した映像を生成する生成ステップと、
前記配置ステップにより配置された投影面と、表示面が曲面で形成された表示装置の曲面形状とに基づいて、前記生成ステップにより生成された映像を変形するための変形パラメータを算出する算出ステップと、
前記算出ステップにより算出された変形パラメータを用いて、前記生成ステップにより生成された映像を変形する変形ステップと
を実行することを特徴とする映像生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、映像生成装置、映像生成プログラム及び映像生成方法に関する。
【背景技術】
【０００２】
３次元の立体が仮想的に表現された３次元コンピュータグラフィクス（3-Dimensional  Computer  Graphics）を提供するシステム（system）が知られている。
【０００３】
一例としては、ユーザ（user）の頭部の位置を計測するヘッドトラッキング（head  tracking）装置と、平面のディスプレイとを用いて、ディスプレイ面の手前から奥側にかけてあたかも物体が存在しているかのように映像を表示する従来技術１が挙げられる。この従来技術１では、実空間におけるユーザの視点及びディスプレイの位置関係と合致するように仮想空間内の視点及び仮想オブジェクト（object）が投影される投影面を設定した上で映像を描画する。これによって、従来技術１は、ユーザの視点の動きに伴って仮想オブジェクトの見せ方に視差を与えることによって、仮想空間内の投影面付近にある仮想オブジェクトがディスプレイ面の付近にあるように見せる。
【０００４】
他の一例としては、奥から手前にかけて膨らんだ円筒や半球面の曲面スクリーン（screen）に歪みのない映像を表示する従来技術２が挙げられる。この従来技術２では、透視投影によりユーザの視点位置から仮想オブジェクトを投影した映像を中間映像として生成した上でその中間映像をスクリーンの曲面形状に応じて変形する。この中間映像の変形によって２次元の映像が３次元の曲面ディスプレイに違和感なく表示される。このとき、従来技術２では、予めスクリーンに対して固定された視点位置をもとに規定されたパラメータを用いて中間映像の変形を実行するので、ユーザの視点位置が動的に変わることは想定されていない。
【０００５】
ところで、最近では、曲面ディスプレイを用いて、仮想オブジェクトとユーザとの間に関連性を持たせたインタラクティブ３ＤＣＧ（interactive  3-Dimensional  Computer  Graphics）を提供したいという動きが広まりつつある。このようなインタラクティブ３ＤＣＧによれば、円筒の外周に設けられる曲面ディスプレイであたかも円筒の内部に物体が実際に存在するかのような映像を提供できる。
【０００６】
かかるインタラクティブ３ＤＣＧにおいて、ユーザが何らかの操作をすることなく、ユーザの視点位置に合わせた映像を生成することを実現するには、ユーザの視点位置を追跡する従来技術１及び２次元の映像を３次元の曲面ディスプレイに表示する従来技術２を援用することが想定される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−３０２２５号公報
【特許文献２】特開２００６−１８９９６２号公報
【特許文献３】特開平７−２５３７７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記の従来技術１及び従来技術２を援用したとしても、曲面ディスプレイでユーザの視点位置に合わせて仮想物体の見え方を変化させる場合には、中間映像用のフレームバッファの無駄が大きくなるという問題がある。
【０００９】
すなわち、２次元の映像を３次元の曲面ディスプレイに表示する場合には、ＣＧにより映像を描画する段階で曲面ディスプレイの曲面形状に合わせて変形するのに備えてＣＧにより生成された映像が中間映像としてフレームバッファへ描画される。この中間映像用のフレームバッファと映像出力用のフレームバッファとは、曲面ディスプレイの曲面形状に合わせて２次元における表示位置と３次元における表示位置とがそれぞれ１対１に対応付けられる。このため、中間映像用のフレームバッファには、ユーザの視点位置から仮想オブジェクトを投影した部分だけが描画され、それ以外の部分には描画されない。つまり、上記の従来技術１及び従来技術２を援用した場合には、映像出力用のフレームバッファと同等の容量が必要であるにもかかわらず、中間映像用のフレームバッファの一部しか実効的に使用されない。
【００１０】
開示の技術は、上記に鑑みてなされたものであって、中間映像用のフレームバッファの使用効率を向上させることができる映像生成装置、映像生成プログラム及び映像生成方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本願の開示する映像生成装置は、仮想空間で表現される仮想物体に関する情報を保持する保持部を有する。さらに、前記映像生成装置は、実空間におけるユーザの視点位置から仮想空間におけるユーザの視点位置を決定する決定部を有する。さらに、前記映像生成装置は、前記決定部により決定された仮想空間におけるユーザの視点位置および前記保持部により保持された仮想物体の情報に応じて、当該仮想物体を含む最少の領域が投影される位置に、前記仮想物体を投影する投影面を配置する配置部を有する。さらに、前記映像生成装置は、前記配置部により配置された投影面を用いて前記仮想物体を描画した映像を生成する生成部を有する。さらに、前記映像生成装置は、前記配置部により配置された投影面と、表示面が曲面で形成された表示装置の曲面形状とに基づいて、前記生成部により生成された映像を変形するための変形パラメータを算出する算出部を有する。さらに、前記映像生成装置は、前記算出部により算出された変形パラメータを用いて、前記生成部により生成された映像を変形する変形部を有する。
【発明の効果】
【００１２】
本願の開示する映像生成装置の一つの態様によれば、中間映像用のフレームバッファの使用効率を向上させることができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１に係る空間映像表示システムの構成を示すシステム構成図である。
【図２】図２は、実施例１に係る映像生成装置の構成を示すブロック図である。
【図３】図３は、仮想オブジェクト４０を投影する座標系を説明するための図である。
【図４Ａ】図４Ａは、視野ボリュームの一例を説明するための図である。
【図４Ｂ】図４Ｂは、視野ボリュームの一例を説明するための図である。
【図４Ｃ】図４Ｃは、視野ボリュームの一例を説明するための図である。
【図５】図５は、視野ボリュームの一例を説明するための図である。
【図６】図６は、ポリゴンメッシュの一例を示す図である。
【図７】図７は、テクスチャマッピングを説明するための図である。
【図８】図８は、実施例１に係る映像生成処理の手順を示すフローチャートである。
【図９】図９は、実施例１に係る中間投影面配置処理の手順を示すフローチャートである。
【図１０】図１０は、実施例１に係る映像変形方法算出処理の手順を示すフローチャートである。
【図１１】図１１は、実施例２に係る映像生成プログラムを実行するコンピュータの一例について説明するための図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する映像生成装置、映像生成プログラム及び映像生成方法の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例１】
【００１５】
［空間映像表示システム］
図１は、実施例１に係る空間映像表示システムの構成を示すシステム構成図である。図１に示すように、空間映像表示システム１には、ヘッドトラッカ２０と、曲面ディスプレイ３０と、映像生成装置１０とが収容される。なお、図１の例では、ヘッドトラッカ２０から得られるユーザ３の視点位置に合わせて仮想オブジェクト４０の見え方を変化させることで、あたかも円筒の外周に設けられた曲面ディスプレイ３０の内部に物体が実在するかのような映像を提供する場合を想定する。
【００１６】
ヘッドトラッカ（head  tracker）２０は、映像を見るユーザ３の実空間における頭部の位置を計測する装置であり、マーカ（marker）２０Ａと、カメラ（camera）２０Ｂとを有する。かかるヘッドトラッカ２０の機能を実現する一態様としては、赤外線を用いる方法が挙げられる。
【００１７】
例えば、赤外線を用いる場合には、赤外光を反射する反射板として形成されたマーカ２０Ａがユーザ３の頭部に取り付けられる。このとき、取り付けられるマーカ２０Ａの個数は、１つであっても複数であってもかまわない。一方、赤外線照射装置を有するカメラ２０Ｂは映像生成装置１０に接続される。なお、マーカ２０Ａがユーザ３の頭部に装着中である場合には、マーカ２０Ａはユーザ３の頭部との間で互いの位置がズレないように固定されているものとする。この場合、マーカ２０Ａ及びユーザ３の目の位置関係は、ユーザ３の移動に伴って変化することはないので、既知の値としてカメラ２０Ｂに登録されていることとする。ここで言う位置関係は、任意に設定した空間の座標系における座標位置であってもよいし、また、マーカ２０Ａ及びユーザ３の目の間の相対的な距離および方向であってもかまわない。
【００１８】
このような環境の下、カメラ２０Ｂは、赤外線照射装置から赤外光を照射するとともにマーカ２０Ａからの反射光を含む映像を撮像する。そして、ヘッドトラッカ２０は、撮影した映像に含まれるマーカ２０Ａの位置またはマーカ２０Ａ同士の間隔をもとにカメラ２０Ｂとマーカ２０Ａとの位置関係を算出する。さらに、ユーザ３の目とマーカ２０Ａとの位置関係は先に述べたように既知である。よって、ヘッドトラッカ２０は、マーカ２０Ａの位置からユーザ３の視点位置を算出できる。
【００１９】
なお、ここでは、赤外線を用いてユーザ３の視点位置を計測する場合を例示したが、開示の装置はこれに限定されない。他の一例としては、磁界を用いる方法や映像を用いる方法などが挙げられる。例えば、磁界を用いてユーザ３の視点位置を計測する場合には、ユーザ３が歩行する床面に固定された磁界発生装置が発する磁界をユーザ３の頭部に取り付けられた磁界センサで測定する。この磁界センサによって検出された磁界強度から両者の位置関係を測定することもできる。また、映像を用いてユーザ３の視点位置を計測する場合には、カメラ２０Ｂにより撮像されたユーザ３の目の位置からカメラ２０Ｂとユーザ３の目の位置関係を算出することもできる。
【００２０】
曲面ディスプレイ３０は、非平面の表示面を有する表示装置である。かかる曲面ディスプレイ３０の表示面は、奥から手前にかけて凸状に膨らんだ半円筒や半球面などの曲面により形成される。また、曲面ディスプレイ３０には、自らが発光する液晶ディスプレイ、プラズマディスプレイを採用してもよく、また、他の光源からの反射により映像を表示する電子ペーパー（paper）やプロジェクタ（projector）を採用することとしてもよい。このような曲面ディスプレイ３０を用いれば、仮想空間へのより高い没入感を演出できる。
【００２１】
映像生成装置１０は、曲面ディスプレイ３０に表示させる映像を生成する装置である。一例としては、映像生成装置１０は、曲面ディスプレイ３０でユーザ３の視点の動き変化に合わせて仮想オブジェクト４０に視差を与える場合に、ヘッドトラッカ２０から取得されるユーザ３の視点位置に応じて仮想オブジェクト４０を投影する投影面の配置を変更する。さらに、映像生成装置１０は、曲面ディスプレイ３０に出力する出力映像の２次元の表示位置、曲面ディスプレイ３０の３次元の表示位置及び投影面の座標位置の対応関係に基づいて、中間投影面を用いて生成した中間映像を変形することにより出力映像を生成する。
【００２２】
［映像生成装置の構成］
続いて、本実施例に係る映像生成装置の構成について説明する。図２は、実施例１に係る映像生成装置の構成を示すブロック図である。図２に示すように、映像生成装置１０は、決定部１１ｂと、ヘッドトラッカ配置記憶部１１ａと、表示面モデル記憶部１２と、保持部１３と、配置部１４ａと、中間投影面配置記憶部１４ｂと、生成部１５ａとを有する。さらに、映像生成装置１０は、中間映像フレームバッファ１５ｂと、ディスプレイ形状記憶部１６ａと、メッシュ定義記憶部１６ｂと、算出部１６ｃと、テクスチャ座標記憶部１６ｄと、変形部１７とを有する。なお、図２の例では、図２に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや表示デバイスなどの機能を有するものとする。
【００２３】
ヘッドトラッカ配置記憶部１１ａは、ヘッドトラッキングの基準となる実空間の座標系と仮想空間の座標系とを対応付けて記憶する。これら実空間及び仮想空間の座標系には、ヘッドトラッカ２０や映像生成装置１０などを基準にしたローカルな座標系を採用してもよいし、また、グローバル座標系を採用することとしてもよい。
【００２４】
決定部１１ｂは、ヘッドトラッカ配置記憶部１１ａを用いて、ヘッドトラッカ２０から取得したユーザ３の視点位置から仮想空間内におけるユーザの視点位置を決定する。一例としては、決定部１１ｂは、ヘッドトラッカ２０から取得したユーザ３の視点位置に対応する仮想空間の座標位置をヘッドトラッカ配置記憶部１１ａから読み出す。そして、決定部１１ｂは、ヘッドトラッカ配置記憶部１１ａから読み出した仮想空間の座標位置をユーザ３の視点位置と決定する。
【００２５】
表示面モデル記憶部１２は、曲面ディスプレイ３０の表示面の立体形状をポリゴンメッシュとしてモデル化したデータを記憶する。この表示面モデル記憶部１２には、ディスプレイの表示面の立体形状をディスプレイごとに登録することができる。
【００２６】
保持部１３は、仮想オブジェクト４０の形状、位置、姿勢、素材などに関する情報を保持する。これらの情報のほか、保持部１３は、後述の配置部１４ａによって中間投影面を配置する場合に使用される仮想オブジェクト４０の代表点を併せて保持することもできる。かかる代表点には、仮想オブジェクト４０の重心や頂点をはじめ、任意の点を採用することができる。
【００２７】
なお、保持部１３によって保持される仮想オブジェクトは、静止したオブジェクトに限定されない。一例としては、時間経過によりアニメーション（animation）されるオブジェクトを採用できる。他の一例としては、ヘッドトラッカ２０から入力される視点位置の移動や遠隔操作装置による操作に応答してアニメーションされるオブジェクトを採用することもできる。この場合には、決定部１１ｂによって決定されるユーザ３の視点位置に応じて仮想オブジェクトの属性情報を更新すれば、ユーザ３が見る位置によって仮想オブジェクトが変化させることもできる。これによって、ユーザ３との間でインタラクティビティを持たせることができる。
【００２８】
配置部１４ａは、決定部１１ｂにより決定された仮想空間におけるユーザ３の視点位置および保持部１３により保持された仮想オブジェクト４０の情報に応じて、仮想オブジェクト４０を投影する投影面を配置する。ここで言う「投影面」は、後述の中間映像フレームバッファ１５ｂへ描画される中間映像を生成するための投影面であるので、以下では「中間投影面」と呼ぶ。一般に、コンピュータグラフィクスにおいては、仮想空間内に長方形の投影面が設定された上で、視点位置および投影面の四隅を通る四本の直線を辺とする四角錐を視野として、透視投影法により視点位置から見た映像が生成される。これに従い、配置部１４ａは、ユーザ３の視点位置から曲面ディスプレイ３０の表示範囲内に含まれる仮想オブジェクト４０全体が見えるように中間投影面を配置する。このとき、中間投影面には、仮想オブジェクト４０が存在しない余白が少ないことが好ましい。
【００２９】
ここで、中間投影面の配置方法について説明する。まず、配置部１４ａは、ユーザ３の視点位置及び仮想オブジェクト４０の代表点に基づいて、仮想オブジェクト４０を投影する３つの座標系を設定する。図３は、仮想オブジェクト４０を投影する座標系を説明するための図である。図３に示すように、配置部１４ａは、ユーザ３の視点位置４１と、仮想オブジェクト４０の代表点４２とを結ぶ直線を前後方向軸と設定する。また、配置部１４ａは、ユーザ３の視点位置４１において前後方向軸と垂直に交わり、かつ地面に並行な直線を水平方向軸と設定する。さらに、配置部１４ａは、ユーザ３の視点位置４１を通り、前後方向軸、水平方向軸の両者と垂直な直線を上下方向軸と設定する。このように、配置部１４ａは、これら前後方向軸、水平方向軸及び上下方向軸の３つの軸を含んでなる座標系を仮想オブジェクト４０の投影の座標系として設定する。なお、ここでは、仮想オブジェクト４０の代表点４２を保持部１３から取得することとしたが、仮想オブジェクト４０の形状や姿勢から随時決定することとしてもよい。
【００３０】
続いて、配置部１４ａは、前後方向軸を含む面、水平方向軸を含む面及び上下方向軸を含む面を用いて、仮想オブジェクト４０の輪郭を形成する頂点と接する６つの面を視野ボリューム（volume）として算出する。
【００３１】
図４Ａ〜図４Ｃ及び図５は、視野ボリュームの一例を説明するための図である。図４Ａに示すように、配置部１４ａは、上下方向軸を含む面を上下方向軸を中心軸として回転させる。このとき、配置部１４ａは、回転させた面が視点位置４１からみて仮想オブジェクト４０の左側に接する面を視野ボリュームの左の面４３ａとして算出する。一方、配置部１４ａは、回転させた面が視点位置４１からみて仮想オブジェクト４０の右側に接する面を視野ボリュームの右の面４３ｂとして算出する。また、配置部１４ａは、前後方向軸に垂直な面を平行移動する。このとき、配置部１４ａは、平行移動させた面が視点位置４１からみて仮想オブジェクト４０の前側に接する面を視野ボリュームの前の面４４ａとして算出する。一方、配置部１４ａは、平行移動させた面が視点位置４１からみて仮想オブジェクト４０の後側に接する面を視野ボリュームの後の面４４ｂとして算出する。
【００３２】
図４Ｂに示すように、配置部１４ａは、水平方向軸を含む面を水平方向軸を中心軸として回転させる。このとき、配置部１４ａは、回転させた面が視点位置４１からみて仮想オブジェクト４０の上側に接する面を視野ボリュームの上の面４５ａとして算出する。一方、配置部１４ａは、回転させた面が視点位置４１からみて仮想オブジェクト４０の下側に接する面を視野ボリュームの下の面４５ｂとして算出する。
【００３３】
図４Ｃに示すように、配置部１４ａは、左の面４３ａ、右の面４３ｂ、前の面４４ａ、後の面４４ｂ、上の面４５ａ及び下の面４５ｂの６つの構成面によって囲まれる四角錐台の空間領域を特定する。そして、配置部１４ａは、上記の６つの構成面により囲まれた四角錐台の空間領域を仮想オブジェクト４０全体が曲面ディスプレイ３０の表示範囲内に含まれる場合の視野ボリューム５１と特定する。さらに、配置部１４ａは、視野ボリューム５１の構成面のうち、前後方向軸と垂直で視点位置４１に近い方の面、すなわち前の面４４ａを中間投影面５０として特定する。その後、配置部１４ａは、中間投影面５０と、それに関連する視点位置４１、投影座標系、視野ボリューム５１の情報を中間投影面配置データとして中間投影面配置記憶部１４ｂへ格納する。
【００３４】
なお、仮想オブジェクト４０の寸法が曲面ディスプレイ３０の表示面よりも大きかったり、ユーザ３が動いたりして仮想オブジェクト４０が曲面ディスプレイ３０の表示範囲からはみ出す場合は、次のように処理する。一例として、図５に示すように、仮想オブジェクト４０の右側の一部分が曲面ディスプレイ３０の表示範囲に含まれない場合には、配置部１４ａは、仮想オブジェクト４０のうち曲面ディスプレイ３０の表示範囲内に含まれる部分だけを用いて視野ボリュームを求める。すなわち、配置部１４ａは、図５に示す右の面４３ｂを用いて視野ボリュームを求める。なお、曲面ディスプレイ３０の表示範囲は、仮想空間のうち現在の視点位置４１から曲面ディスプレイ３０の表示面を通して見ることのできる空間範囲であり、視点位置４１に依存する。
【００３５】
上記の視野ボリューム５１の構成面を算出する方法の一例について説明する。これを説明すると、配置部１４ａは、上下方向軸を含む面を、上下方向軸を中心軸として回転させる。このとき、前後方向軸を含む場合を０度とし、左に回転するとプラス、右に回転するとマイナスの回転角を持つと仮定する。そして、配置部１４ａは、仮想オブジェクト４０を構成する全ての頂点を対象に構成面が頂点を含む場合の回転角を計算することにより、最大の回転角および最小の回転角を算出する。さらに、配置部１４ａは、曲面ディスプレイ３０の表示面の形状についても、表示面モデル記憶部１２に記憶されたディスプレイ表示面の立体形状をポリゴンメッシュとしてモデル化したディスプレイ表示面モデルを用いて、同様に最大、最小の回転角を算出する。ただし、配置部１４ａは、表示面モデルについては仮想オブジェクト４０の表側が視点位置４１から見えない面に属する頂点を省いて計算する。
【００３６】
そして、配置部１４ａは、仮想オブジェクト４０についての回転角範囲と曲面ディスプレイ３０の表示面についての回転角範囲との共通部分を求める。そして、配置部１４ａは、共通部分の中で最も小さな回転角となる面を左の面４３ａと特定する。さらに、配置部１４ａは、共通部分の中でも最も大きな回転角となる面を右の面４３ｂと特定する。また、同様にして、配置部１４ａは、左右方向軸を含む面を、左右方向軸を中心軸として回転させることにより、上の面４４ａ及び下の面４４ｂを求めることができる。このように、配置部１４ａは、左の面４３ａ、右の面４３ｂ、上の面４４ａ及び下の面４４ｂを特定する場合に仮想オブジェクト４０のうちの曲面ディスプレイ３０の表示範囲内にある部分しか視野ボリューム５１に含めない。これによって、曲面ディスプレイ３０に表示されない部分が後述の生成部１５ａにより中間映像フレームバッファ１５ｂへ描画されることがなくなる。
【００３７】
なお、中間投影面を算出する方法は、上記の算出方法に限定されない。すなわち、上記の算出方法のように、仮想オブジェクト４０の全ての頂点について回転角の計算をすることになるので、余白を少なくすることができる反面で仮想オブジェクト４０の頂点数が多い場合には計算量も多くなる。このため、オブジェクト全体が含まれるより単純な形状、バウンディングボックス（bounding  box）を予め求めておき、バウンディングボックスについて上述した中間投影面の計算を実行することで、より少ない計算量で近似的な結果を得ることもできる。また、バウンディングボックスの代わりに球や楕円球を用いれば、左右方向軸および上下方向軸を含み、かつ球と接する面を直接それぞれ一回の計算で算出できるので、計算量を飛躍的に低減できる。
【００３８】
図２の説明に戻り、中間投影面配置記憶部１４ｂは、中間投影面５０と、中間投影面５０に関連する視点位置４１、投影座標系及び視野ボリューム５１とを含む中間投影面配置データを記憶する。この中間投影面配置データは、先に説明した配置部１４ａにより中間投影面５０の配置が実行される度に登録される。
【００３９】
生成部１５ａは、配置部１４ａにより配置された中間投影面を用いて仮想オブジェクト４０を描画した中間映像を生成する。一例としては、生成部１５ａは、中間投影面配置記憶部１４ｂに記憶された中間投影面配置データに従って映像生成のための投影パラメータを設定した上で、中間投影面５０上に仮想オブジェクト４０を描画することにより、中間映像を生成する。そして、生成部１５ａは、このようにして生成された中間映像を後述の中間映像フレームバッファ１５ｂへ格納する。なお、かかる描画には、ＯｐｅｎＧＬやＤｉｒｅｃｔＸなどの一般のコンピュータグラフィクスの技術を適用することができる。
【００４０】
中間映像フレームバッファ（frame  buffer）１５ｂは、生成部１５ａにより生成された中間映像を記憶する記憶デバイスである。この中間映像フレームバッファ１５ｂの一態様としては、ＶＲＡＭ（Video  Random  Access  Memory）を始めとするＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory）やフラッシュメモリ（flash  memory）などの半導体メモリ素子が挙げられる。なお、中間映像フレームバッファ１５ｂは、ハードディスク、光ディスクなどの記憶装置を採用することとしてもかまわない。
【００４１】
ここで、中間映像の変形を実現する一態様として、後述の変形部１７によりテクスチャマッピング（texture  mapping）を用いて中間映像の変形がなされる場合を想定して以下の説明を行う。かかるテクスチャマッピングを採用するのは、グラフィクスハードウェアを活用することにより処理を高速に実行できるからである。テクスチャマッピングによる映像の変形は、次のように実行される。あらかじめ出力映像全体を覆う２次元のポリゴンメッシュを後述のメッシュ定義記憶部１６ｂに用意しておく。ポリゴンメッシュを構成するポリゴンの各頂点には適切にテクスチャ座標を割り振る。中間映像をテクスチャとして貼り付けた上でポリゴンメッシュを描画すると、割り振ったテクスチャ座標に従って中間映像が変形されて描画される。
【００４２】
ディスプレイ形状記憶部１６ａは、曲面ディスプレイ３０の特性を示す特性データを記憶する。このディスプレイ形状記憶部１６ａは、特性データとして、曲面ディスプレイ３０の表示面の３次元形状と、その表面に曲面ディスプレイ３０へ入力される映像が表示面上のどの位置に出力されるかを定義した定義情報とを記憶する。この定義情報により、曲面ディスプレイ３０へ入力される映像上のある一点が実空間内のどの位置に表示されるかを求めることができる。
【００４３】
メッシュ定義記憶部１６ｂは、曲面ディスプレイ３０へ出力する出力映像全体を覆う２次元のポリゴンメッシュを定義した定義情報を記憶する。図６は、ポリゴンメッシュの一例を示す図である。図６に示すように、ポリゴンメッシュ７０は、出力映像全体を覆ってさえいれば形状は任意であるが、一般には頂点７２が規則正しく整列する格子状に形成されるのが好ましい。このポリゴンメッシュ７０を構成するポリゴン７１の各頂点７２には、テクスチャ座標が適切に割り振られる。ここで、各々のポリゴン７１には、テクスチャが線形に貼り付けられる。このため、メッシュが粗いと変形も粗くなり、映像において曲線になるべきところが折れ線になる箇所が出現する場合もある。これとは逆に、メッシュが細か過ぎると、テクスチャ座標を算出する処理や後述の変形部１７による描画に関する処理量が増える。したがって、変形の粗さが目立たない程度に粗いメッシュを用意することが望ましい。
【００４４】
算出部１６ｃは、配置部１４ａにより配置された中間投影面５０と、曲面ディスプレイ３０の曲面形状とに基づいて、生成部１５ａにより生成された中間映像を変形するための変形パラメータを算出する。なお、ここでは、テクスチャマッピングが実行される場合を想定するので、ユーザ３の視点位置が変更される度にポリゴンメッシュ７０の各頂点７２についてテクスチャ座標が変形パラメータ（parameter）として算出される。
【００４５】
図７は、テクスチャマッピングを説明するための図である。図７に示すように、算出部１６ｃは、ディスプレイ形状記憶部１６ａに記憶された定義データを用いて、ポリゴンメッシュ８１Ａの頂点の出力映像上における２次元座標（ｓ，ｔ）から、曲面ディスプレイ３０上における空間（３次元）座標（ｘ，ｙ，ｚ）を求める。そして、算出部１６ｃは、中間投影面配置記憶部１４ｂに記憶された中間投影面配置データを用いて、先に求めた空間座標（ｘ，ｙ，ｚ）と現在の視点位置を通る直線が中間投影面５０と交わる点を求める。続いて、算出部１６ｃは、求めた交点を中間投影面上の２次元座標（ｕ，ｖ）として表し、この二次元座標をテクスチャ座標として後述のテクスチャ座標記憶部１６ｄへ登録する。このようにして算出したテクスチャ座標（ｕ，ｖ）は、中間映像（ｕ，ｖ）に位置する映像を曲面ディスプレイ３０の表示面（ｘ，ｙ，ｚ）に表示させる場合にはポリゴンメッシュ８１Ａの頂点（ｓ，ｔ）にマッピングすればよいことを指す。なお、テクスチャ座標の算出は、ポリゴンメッシュ８１Ａの全ての頂点についてテクスチャ座標が算出されるまで繰り返し行われる。
【００４６】
テクスチャ座標記憶部１６ｄは、ポリゴンメッシュに含まれる頂点の２次元座標と、テクスチャ座標とを対応付けて記憶する。このポリゴンメッシュの頂点の２次元座標とテクスチャ座標との対応付けは、算出部１６ｃによりテクスチャ座標が算出される度に更新される。
【００４７】
変形部１７は、テクスチャ座標記憶部１６ｄに記憶されたテクスチャ座標を用いて、中間映像フレームバッファ１５ｂに記憶された映像を変形する。一例としては、変形部１７は、現在の中間映像フレームバッファ１５ｂに記憶された中間映像をテクスチャとし、テクスチャ座標記憶部１６ｄに記憶されたテクスチャ座標を用いて、ポリゴンメッシュの描画を行う。これによって、変形部１７は、中間映像を適切に変形させながらポリゴンメッシュに貼り付けることにより、曲面ディスプレイ３０への出力映像を生成する。そして、変形部１７は、このようにして生成した出力映像を曲面ディスプレイ３０内の映像出力用のフレームバッファへ書き込む。
【００４８】
なお、決定部１１ｂ、配置部１４ａ、保持部１３、生成部１５ａ、算出部１６ｃ及び変形部１７には、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）が挙げられる。また、電子回路としては、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などが挙げられる。
【００４９】
また、ヘッドトラッカ配置記憶部１１ａ、表示面モデル記憶部１２、中間投影面配置記憶部１４ｂ、ディスプレイ形状記憶部１６ａ、メッシュ定義記憶部１６ｂ及びテクスチャ座標記憶部１６ｄは、次のようなデバイスを採用できる。例えば、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory）やフラッシュメモリ（flash  memory）などの半導体メモリ素子を採用できる。また、ハードディスク、光ディスクなどの記憶装置も採用できる。
【００５０】
［処理の流れ］
次に、本実施例に係る映像生成装置の処理の流れを説明する。なお、ここでは、映像生成装置１０に実行される（１）映像生成処理を説明してから、（２）中間投影面配置処理を説明し、（３）映像変形方法算出処理を説明する。
【００５１】
（１）映像生成処理
図８は、実施例１に係る映像生成処理の手順を示すフローチャートである。この映像生成処理は、映像生成装置１０の電源がオン状態である限り、再帰的に実行される処理である。図８に示すように、決定部１１ｂによりユーザ３の視点位置が決定されると（ステップＳ１０１）、配置部１４ａは、仮想オブジェクト４０が投影される中間投影面を配置する「中間投影面配置処理」を実行する（ステップＳ１０２）。
【００５２】
そして、生成部１５ａは、配置部１４ａにより配置された中間投影面を用いて仮想オブジェクト４０を描画した中間映像を生成する（ステップＳ１０３）。続いて、算出部１６ｃは、中間映像を変形するためのテクスチャ座標を算出する映像変形方法算出処理を行う（ステップＳ１０４）。
【００５３】
その後、変形部１７は、テクスチャ座標記憶部１６ｄに記憶されたテクスチャ座標を用いて、中間映像フレームバッファ１５ｂに記憶された映像を変形することにより出力映像を生成する（ステップＳ１０５）。そして、変形部１７は、生成した出力映像を曲面ディスプレイ３０へ出力する（ステップＳ１０６）。
【００５４】
なお、上記のステップＳ１０１〜ステップＳ１０６の処理は、映像生成装置１０の電源がオン状態である限り、再帰的に実行される。
【００５５】
（２）中間投影面配置処理
図９は、実施例１に係る中間投影面配置処理の手順を示すフローチャートである。この中間投影面配置処理は、図８に示したステップＳ１０２で実行される処理である。図９に示すように、配置部１４ａは、ユーザ３の視点位置及び仮想オブジェクト４０の代表点に基づいて、仮想オブジェクト４０を投影する３つの座標系を設定する（ステップＳ２０１）。
【００５６】
そして、配置部１４ａは、算出対象とする視野ボリュームの構成面を１つ選択する（ステップＳ２０２）。さらに、配置部１４ａは、算出対象とする仮想オブジェクト４０の頂点を１つ選択する（ステップＳ２０３）。
【００５７】
ここで、配置部１４ａは、上下左右の面を算出するときには上下方向軸または左右方向軸の回転角度を算出し、あるいは前後の面を算出するときには前後方向軸に垂直な面を平行移動させた距離を算出する（ステップＳ２０４）。
【００５８】
全ての頂点について処理を実行するまで（ステップＳ２０５否定）、配置部１４ａは、上記のステップＳ２０３及びステップＳ２０４の処理を繰り返し実行する。その後、全ての頂点について処理が終了すると（ステップＳ２０５肯定）、配置部１４ａは、上記のステップＳ２０４の処理の算出結果のうち、最大及び最小の回転角度を有する面または最大及び最小の距離を有する面を選択する（ステップＳ２０６）。
【００５９】
そして、視野ボリュームの全ての構成面について処理が終了するまで（ステップＳ２０７否定）、上記のステップＳ２０２〜ステップＳ２０６までの処理を繰り返し実行する。その後、視野ボリュームの全ての構成面について処理が終了すると（ステップＳ２０７肯定）、処理を終了する。
【００６０】
（３）映像変形方法算出処理
図１０は、実施例１に係る映像変形方法算出処理の手順を示すフローチャートである。この映像変形方法算出処理は、図８に示したステップＳ１０４で実行される処理である。図１０に示すように、算出部１６ｃは、テクスチャ座標の算出対象とするポリゴンメッシュの頂点を１つ選択する（ステップＳ３０１）。
【００６１】
そして、算出部１６ｃは、ディスプレイ形状記憶部１６ａに記憶された定義データを用いて、ポリゴンメッシュ８１Ａの頂点の出力映像上における２次元座標から、曲面ディスプレイ３０上における空間座標を算出する（ステップＳ３０２）。
【００６２】
続いて、算出部１６ｃは、中間投影面配置記憶部１４ｂに記憶された中間投影面配置データを用いて、先に求めた空間座標と現在の視点位置を通る直線が中間投影面５０と交わる点を中間投影面内の座標として算出する（ステップＳ３０３）。
【００６３】
そして、算出部１６ｃは、求めた交点を中間投影面上の２次元座標として表し、この二次元座標をテクスチャ座標として後述のテクスチャ座標記憶部１６ｄへ登録する（ステップＳ３０４）。
【００６４】
その後、ポリゴンメッシュ８１Ａの全ての頂点についてテクスチャ座標が算出されるまで（ステップＳ３０５否定）、上記のステップＳ３０１〜ステップＳ３０４までの処理が繰り返し行われる。そして、ポリゴンメッシュ８１Ａの全ての頂点についてテクスチャ座標が算出されると（ステップＳ３０５肯定）、処理を終了する。
【００６５】
［実施例の効果］
上述してきたように、本実施例に係る映像生成装置１０は、曲面ディスプレイ３０でユーザ３の視点の変化に合わせて仮想オブジェクト４０に視差を与える場合に、ユーザ３の視点位置に応じて仮想オブジェクト４０を投影する中間投影面の配置を変更する。このため、本実施例に係る映像生成装置１０では、出力映像よりも小さいサイズ、すなわち中間投影面のサイズで中間画像を生成できる。よって、本実施例に係る映像生成装置１０によれば、中間映像用のフレームバッファの使用効率を向上させることが可能になる。さらに、中間映像用のフレームバッファの使用効率を向上できる結果、出力映像の解像度が低下することも防止できる。
【００６６】
さらに、本実施例に係る映像生成装置１０は、仮想オブジェクト４０のうち曲面ディスプレイ３０の表示面の表示範囲に含まれる部分の全体が投影されるように中間投影面を配置する。このため、本実施例に係る映像生成装置１０では、曲面ディスプレイ３０に表示されない部分が中間映像フレームバッファ１５ｂへ描画されることがなくなる。よって、本実施例に係る映像生成装置１０によれば、コンピュータグラフィクスの処理効率を向上させつつ、中間映像用のフレームバッファの使用効率をより向上させることができる。
【実施例２】
【００６７】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００６８】
［適用範囲］
例えば、上記の実施例１では、仮想オブジェクト４０が１つである場合を説明したが、複数の仮想オブジェクト４０が存在する場合でも開示の装置を同様に適用できる。この場合には、複数の仮想オブジェクト４０の総体を１つの仮想オブジェクトとみなすことにより仮想オブジェクト４０が１つである場合と同様に処理を行うことができる。
【００６９】
また、上記の実施例１では、ユーザの頭部に装着するヘッドトラッカにより実空間におけるユーザの視点位置を取得することとしたが、開示の装置はこれに限定されない。一例としては、頭部以外の部位、例えば肩、胴、手や足などの部位に装着される装備品からユーザの視点位置を取得してもよいし、また、ネットワークを介して取得することとしてもかまわない。
【００７０】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、決定部１１ｂ、保持部１３、配置部１４ａ、生成部１５ａ、算出部１６ｃまたは変形部１７を映像生成装置の外部装置としてネットワーク経由で接続するようにしてもよい。また、決定部１１ｂ、保持部１３、配置部１４ａ、生成部１５ａ、算出部１６ｃまたは変形部１７を別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記の映像生成装置の機能を実現するようにしてもよい。また、各記憶部に記憶されるヘッドトラッカ配置データ、表示面モデルデータ、中間投影面配置データ、ディスプレイ形状データ、メッシュ定義データ及びテクスチャ座標データの全部または一部を別の装置がそれぞれ有することとする。そして、別の装置との間でネットワーク接続されて協働することで、上記の映像生成装置の機能を実現するようにしてもかまわない。
【００７１】
［映像生成プログラム］
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図Ｘを用いて、上記の実施例と同様の機能を有する映像生成プログラムを実行するコンピュータの一例について説明する。なお、図１１は、実施例２に係る映像生成プログラムを実行するコンピュータの一例について説明するための図である。
【００７２】
図１１に示すように、実施例１におけるコンピュータ１００は、操作部１１０ａと、マイク１１０ｂと、スピーカ１１０ｃと、ディスプレイ１２０と、通信部１３０とを有する。さらに、このコンピュータ１００は、ＣＰＵ１５０と、ＲＯＭ１６０と、ＨＤＤ（Hard  Disk  Drive）１７０と、ＲＡＭ（Random  Access  Memory）１８０と有する。これら１１０〜１８０の各部はバス１４０を介して接続される。
【００７３】
ＲＯＭ１６０には、上記の実施例１で示した決定部１１ｂと、配置部１４ａと、保持部１３と、生成部１５ａと、算出部１６ｃと、変形部１７と同様の機能を発揮する制御プログラムが予め記憶される。つまり、ＲＯＭ１６０には、図１１に示すように、決定プログラム１６０ａと、配置プログラム１６０ｂと、保持プログラム１６０ｃと、生成プログラム１６０ｄと、算出プログラム１６０ｅと、変形プログラム１６０ｆとが記憶される。これらのプログラム１６０ａ〜１６０ｆについては、図２に示した映像生成装置の各構成要素と同様、適宜統合又は分離しても良い。なお、ＲＡＭ１６０に格納される各データは、常に全てのデータがＲＡＭ１６０に格納される必要はなく、処理に必要なデータのみがＲＡＭ１６０に格納されれば良い。
【００７４】
そして、ＣＰＵ１５０が、これらのプログラム１６０ａ〜１６０ｆをＲＯＭ１６０から読み出して実行する。これによって、ＣＰＵ１５０は、各プログラム１６０ａ〜１６０ｆについては、決定プロセス１５０ａ、配置プロセス１５０ｂ、保持プロセス１５０ｃ、生成プロセス１５０ｄ、算出プロセス１５０ｅ及び変形プロセス１５０ｆとして機能するようになる。これらプロセス１５０ａ〜１５０ｆは、図１に示した各機能部とにそれぞれ対応する。なお、ＣＰＵ１５０上で仮想的に実現される各処理部は、常に全ての処理部がＣＰＵ１５０上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されれば良い。
【００７５】
そして、ＨＤＤ１７０には、ヘッドトラッカ配置データ１７０ａと、表示面モデルデータ１７０ｂと、中間投影面配置データ１７０ｃと、ディスプレイ形状データ１７０ｄとが設けられる。さらに、ＨＤＤ１７０には、メッシュ定義データ１７０ｅと、テクスチャ座標データ１７０ｆと、中間映像データ１７０ｇとが設けられる。なお、これらのデータ１７０ａ〜１７０ｇは、図２に示した記憶部それぞれに対応する。
【００７６】
そして、ＣＰＵ１５０は、ヘッドトラッカ配置データ１７０ａ、表示面モデルデータ１７０ｂ、中間投影面配置データ１７０ｃ及びディスプレイ形状データ１７０ｄを読み出してＲＡＭ１８０に格納する。さらに、メッシュ定義データ１７０ｅ、テクスチャ座標データ１７０ｆ及び中間映像データ１７０ｇを読み出してＲＡＭ１８０に格納する。さらに、ＣＰＵ１５０は、ＲＡＭ１８０に格納されたヘッドトラッカ配置データ１８０ａ、表示面モデルデータ１８０ｂ、中間投影面配置データ１８０ｃ及びディスプレイ形状データ１８０ｄを使用する。これとともに、ＣＰＵ１５０は、ＲＡＭ１８０に格納されたメッシュ定義データ１８０ｅ、テクスチャ座標データ１８０ｆ及び中間映像データ１８０ｇを用いて、映像生成プログラムを実行する。
【００７７】
なお、上記の映像生成プログラムについては、必ずしも最初からＨＤＤ１７０やＲＯＭ１６０に記憶させておく必要はない。例えば、コンピュータ１００に挿入されるフレキシブルディスク、いわゆるＦＤ、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ１００がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１００に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ１００がこれらから各プログラムを取得して実行するようにしてもよい。
【符号の説明】
【００７８】
１    空間映像表示システム
１０    映像生成装置
１１ａ  ヘッドトラッカ配置記憶部
１１ｂ  決定部
１２    表示面モデル記憶部
１３    保持部
１４ａ  配置部
１４ｂ  中間投影面配置記憶部
１５ａ  生成部
１５ｂ  中間映像フレームバッファ
１６ａ  ディスプレイ形状記憶部
１６ｂ  メッシュ定義記憶部
１６ｃ  算出部
１６ｄ  テクスチャ座標記憶部
１７    変形部
２０    ヘッドトラッカ
２０Ａ  マーカ
２０Ｂ  センサ
３０    曲面ディスプレイ
【図１】
0005593911.tif 000002
【図２】
0005593911.tif 000003
【図３】
0005593911.tif 000004
【図４Ａ】
0005593911.tif 000005
【図４Ｂ】
0005593911.tif 000006
【図４Ｃ】
0005593911.tif 000007
【図５】
0005593911.tif 000008
【図６】
0005593911.tif 000009
【図７】
0005593911.tif 000010
【図８】
0005593911.tif 000011
【図９】
0005593911.tif 000012
【図１０】
0005593911.tif 000013
【図１１】
0005593911.tif 000014