本実施の形態は基本的に、ユーザの視点に応じた視野で画像を表示する。その限りにおいて画像を表示させる装置の種類は特に限定されず、ウェアラブルディスプレイ、平板型のディスプレイ、プロジェクタなどのいずれでもよいが、ここではウェアラブルディスプレイのうちヘッドマウントディスプレイを例に説明する。
ウェアラブルディスプレイの場合、ユーザの視線は内蔵するモーションセンサによりおよそ推定できる。その他の表示装置の場合、ユーザがモーションセンサを頭部に装着したり、注視点検出装置を用いたりすることで視線を検出できる。あるいはユーザの頭部にマーカーを装着させ、その姿を撮影した画像を解析することにより視線を推定してもよいし、それらの技術のいずれかを組み合わせてもよい。
図1は、ヘッドマウントディスプレイ100の外観例を示す。ヘッドマウントディスプレイ100は、本体部110、前頭部接触部120、および側頭部接触部130を含む。ヘッドマウントディスプレイ100は、ユーザの頭部に装着してディスプレイに表示される静止画や動画などを鑑賞し、ヘッドホンから出力される音声や音楽などを聴くための表示装置である。ヘッドマウントディスプレイ100に内蔵または外付けされたモーションセンサにより、ヘッドマウントディスプレイ100を装着したユーザの頭部の回転角や傾きといった姿勢情報を計測することができる。
ヘッドマウントディスプレイ100は、「ウェアラブルディスプレイ装置」の一例である。ウェアラブルディスプレイ装置には、狭義のヘッドマウントディスプレイ100に限らず、めがね、めがね型ディスプレイ、めがね型カメラ、ヘッドホン、ヘッドセット(マイクつきヘッドホン)、イヤホン、イヤリング、耳かけカメラ、帽子、カメラつき帽子、ヘアバンドなど任意の装着可能なディスプレイ装置が含まれる。
図2は、本実施の形態に係る情報処理システムの構成図である。ヘッドマウントディスプレイ100は、無線通信またはUSBなどの周辺機器を接続するインタフェース205により画像生成装置200に接続される。画像生成装置200は、さらにネットワークを介してサーバに接続されてもよい。その場合、サーバは、複数のユーザがネットワークを介して参加できるゲームなどのオンラインアプリケーションを画像生成装置200に提供してもよい。
画像生成装置200は、ヘッドマウントディスプレイ100を装着したユーザの頭部の位置や姿勢に基づき視点の位置や視線の方向を特定し、それに応じた視野となるように表示画像を生成してヘッドマウントディスプレイ100に出力する。この限りにおいて画像を表示する目的は様々であってよい。例えば画像生成装置200は、電子ゲームを進捗させつつゲームの舞台である仮想世界を表示画像として生成してもよいし、仮想世界が実世界かに関わらず観賞用として静止画像または動画像を表示させてもよい。表示装置をヘッドマウントディスプレイとした場合、視点を中心に広い角度範囲でパノラマ画像を表示できるようにすれば、表示世界に没入した状態を演出することもできる。
図3は、本実施の形態で画像生成装置200がヘッドマウントディスプレイ100に表示させる画像世界の例を説明するための図である。この例ではユーザ12が仮想空間である部屋にいる状態を作り出している。仮想空間を定義するワールド座標系には図示するように、壁、床、窓、テーブル、テーブル上の物などのオブジェクトを配置している。画像生成装置200は当該ワールド座標系に、ユーザ12の視点の位置や視線の方向に応じてビュースクリーン14を定義し、そこにオブジェクトの像を射影することで表示画像を描画する。
ユーザ12の視点の位置や視線の方向(以後、これらを包括的に「視点」と呼ぶ場合がある)を所定のレートで取得し、これに応じてビュースクリーン14の位置や方向を変化させれば、ユーザの視点に対応する視野で画像を表示させることができる。視差を有するステレオ画像を生成し、ヘッドマウントディスプレイ100において左右の目の前に表示させれば、仮想空間を立体視させることもできる。これによりユーザ12は、あたかも表示世界の部屋の中にいるような仮想現実を体験することができる。なお図示する例では表示対象を、コンピュータグラフィックスを前提とする仮想世界としたが、パノラマ写真など実世界の撮影画像としたり、それと仮想世界とを組み合わせたりしてもよい。
このような表示に臨場感を持たせるためには、表示対象の空間で生じる物理現象をできるだけ正確に反映させることが望ましい。例えばオブジェクト表面での拡散反射や鏡面反射、環境光など、目に到達する様々な光の伝播を正確に計算することにより、視点の動きによるオブジェクト表面の色味や輝度の変化をよりリアルに表現することができる。これを実現する代表的な手法がレイトレーシングである。しかしながら自由視点を許容する環境では特に、そのような物理計算を高精度に行うことにより、表示までに看過できないレイテンシが生じることが考えられる。
そこで本実施の形態では、特定の視点から見た画像を前もって取得しておき、任意の視点に対する表示画像の画素値の決定に利用する。すなわち表示画像に像として表れるオブジェクトの色を、前もって取得しておいた画像の対応する箇所から抽出することで決定する。以後、事前の画像取得において設定する視点を「基準視点」、基準視点から見た事前に取得する画像を「基準画像」または「基準視点の画像」と呼ぶ。表示画像の描画に用いるデータの一部を、基準画像として事前に取得しておくことにより、視点の移動から表示までのレイテンシを抑えられる。また基準画像の生成段階においては基本的に時間的な制約がないため、レイトレーシングなどの物理計算を、時間をかけて高精度に行うことができる。
基準視点を、表示時の視点に想定される可動範囲に分散させて複数個設定し、それぞれについて基準画像を準備しておけば、複数の視点から見た同じオブジェクトの色味を加味して、表示時の視点に応じたオブジェクトをより高精度に表現できる。より具体的には、表示時の視点が基準視点の一つと一致しているとき、当該基準視点に対応する基準画像の画素値をそのまま採用できる。表示時の視点が複数の基準視点の間にあるとき、当該複数の基準視点に対応する基準画像の画素値を合成することにより、表示画像の画素値を決定する。
図4は画像生成装置200の内部回路構成を示している。画像生成装置200は、CPU(Central Processing Unit)222、GPU(Graphics Processing Unit)224、メインメモリ226を含む。これらの各部は、バス230を介して相互に接続されている。バス230にはさらに入出力インタフェース228が接続されている。
入出力インタフェース228には、USBやIEEE1394などの周辺機器インタフェースや、有線又は無線LANのネットワークインタフェースからなる通信部232、ハードディスクドライブや不揮発性メモリなどの記憶部234、ヘッドマウントディスプレイ100などの表示装置へデータを出力する出力部236、ヘッドマウントディスプレイ100からデータを入力する入力部238、磁気ディスク、光ディスクまたは半導体メモリなどのリムーバブル記録媒体を駆動する記録媒体駆動部240が接続される。
CPU222は、記憶部234に記憶されているオペレーティングシステムを実行することにより画像生成装置200の全体を制御する。CPU222はまた、リムーバブル記録媒体から読み出されてメインメモリ226にロードされた、あるいは通信部232を介してダウンロードされた各種プログラムを実行する。GPU224は、ジオメトリエンジンの機能とレンダリングプロセッサの機能とを有し、CPU222からの描画命令に従って描画処理を行い、表示画像を図示しないフレームバッファに格納する。そしてフレームバッファに格納された表示画像をビデオ信号に変換して出力部236に出力する。メインメモリ226はRAM(Random Access Memory)により構成され、処理に必要なプログラムやデータを記憶する。
図5は、本実施の形態における画像生成装置200の機能ブロックの構成を示している。画像生成装置200は上述のとおり、電子ゲームを進捗させたりサーバと通信したりする一般的な情報処理を行ってよいが、図5では特に、視点に応じた表示画像のデータを生成する機能に着目して示している。なお図5で示される画像生成装置200の機能のうち少なくとも一部を、ヘッドマウントディスプレイ100に実装してもよい。あるいは、画像生成装置200の少なくとも一部の機能を、ネットワークを介して画像生成装置200に接続されたサーバに実装してもよい。
また図5および後述する図6に示す機能ブロックは、ハードウェア的には、図4に示したCPU、GPU、各種メモリなどの構成で実現でき、ソフトウェア的には、記録媒体などからメモリにロードした、データ入力機能、データ保持機能、画像処理機能、通信機能などの諸機能を発揮するプログラムで実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
画像生成装置200は、ユーザの視点に係る情報を取得する視点情報取得部260、表示対象のオブジェクトからなる空間を構築する空間構築部262、ビュースクリーンにオブジェクトを射影する射影部264、オブジェクトの像を構成する画素の値を決定し表示画像を完成させる画素値決定部266、表示画像のデータをヘッドマウントディスプレイ100に出力する出力部268を備える。画像生成装置200はさらに、空間の構築に必要なオブジェクトモデルに係るデータを記憶するオブジェクトモデル記憶部254、および、基準画像のデータを記憶する基準画像データ記憶部256を備える。
視点情報取得部260は、図4の入力部238、CPU222などで構成され、ユーザの視点の位置や視線の方向を所定のレートで取得する。例えばヘッドマウントディスプレイ100に内蔵した加速度センサの出力値を逐次取得し、それによって頭部の姿勢を取得する。さらにヘッドマウントディスプレイ100の外部に図示しない発光マーカーを設け、その撮影画像を図示しない撮像装置から取得することで、実空間での頭部の位置を取得する。
あるいはヘッドマウントディスプレイ100側に、ユーザの視野に対応する画像を撮影する図示しない撮像装置を設け、SLAM(Simultaneous Localization and Mapping)などの技術により頭部の位置や姿勢を取得してもよい。このように頭部の位置や姿勢を取得できれば、ユーザの視点の位置および視線の方向はおよそ特定できる。ユーザの視点に係る情報を取得する手法は、ヘッドマウントディスプレイ100を利用する場合に限らず様々に考えられることは当業者には理解されるところである。
空間構築部262は、図4のCPU222、GPU224、メインメモリ226などで構成され、表示対象のオブジェクトが存在する空間の形状モデルを構築する。図3で示した例では、室内を表す壁、床、窓、テーブル、テーブル上の物などのオブジェクトを、仮想空間を定義するワールド座標系に配置する。個々のオブジェクトの形状に係る情報はオブジェクトモデル記憶部254から読み出す。空間構築部262が構築する空間は固定としてもよいしゲームなどの進捗に応じて変化させてもよい。
ここで空間構築部262は、オブジェクトの形状、位置、姿勢を決定すればよく、一般的なコンピュータグラフィクスにおけるサーフェスモデルに基づくモデリングの手法を利用できる。射影部264は、図4のGPU224、メインメモリ226などで構成され、視点情報取得部260が取得した視点の情報に応じてビュースクリーンを設定する。すなわち頭部の位置や顔面の向く方向に対応させてスクリーン座標を設定することにより、ユーザの位置や向く方向に応じた視野で表示対象の空間がスクリーン平面に描画されるようにする。
射影部264はさらに、空間構築部262が構築した空間内のオブジェクトをビュースクリーンに射影する。この処理も、ポリゴンなどのメッシュを透視変換する一般的なコンピュータグラフィクスの手法を利用できる。画素値決定部266は、図4のGPU224、メインメモリ226などで構成され、ビュースクリーンに射影されてなるオブジェクトの像を構成する画素の値を決定する。このとき上述のとおり基準画像のデータを基準画像データ記憶部256から読み出し、同じオブジェクト上のポイントを表す画素の値を抽出して利用する。
例えば実際の視点の周囲の基準視点に対し生成された基準画像から対応する画素を特定し、実際の視点と基準視点との距離や角度に基づく重みで平均することにより、表示画像の画素値とする。レイトレーシングなどにより時間をかけて正確に基準画像を生成しておくことにより、運用時には、対応する画素値を読み出し加重平均する、という負荷の軽い計算で、レイトレーシングをした場合に近い高精細な画像表現を実現できる。
基準視点は、ユーザの視点の可動範囲を網羅するように分布させることが望ましい。なお基準画像は、レイトレーシングによって描画されたグラフィックス画像に限らず、事前に基準視点から実空間を撮影した画像などでもよい。この場合、空間構築部262は撮影対象となった実空間の形状モデルを構築し、射影部264は表示時の視点に応じたビュースクリーンに当該形状モデルを射影する。あるいは表示時の視点に応じた視野で撮影対象のオブジェクトの像の位置を決定できれば、空間構築部262と射影部264の処理を省略することもできる。
なお表示画像を立体視させる場合、射影部264および画素値決定部266は、左目および右目の視点に対しそれぞれ処理を行ってもよい。出力部268は、図4のCPU222、メインメモリ226、出力部236などで構成され、画素値決定部266が画素値を決定して完成させた表示画像のデータを、ヘッドマウントディスプレイ100に所定のレートで送出する。立体視のためステレオ画像を生成した場合、出力部268はそれらを左右につなげた画像を表示画像として生成し出力する。レンズを介して表示画像を鑑賞する構成のヘッドマウントディスプレイ100の場合、出力部268は、当該レンズによる歪みを考慮した補正を表示画像に施してもよい。
図6は、描画処理によって基準画像を生成する場合に、基準画像のデータを生成する装置の機能ブロックを示している。基準画像生成装置300は、図5の画像生成装置200の一部としてもよいし、図5の基準画像データ記憶部256に格納するデータを生成する装置として独立に設けてもよい。また生成された基準画像のデータと、生成に用いたオブジェクトモデルを含む電子コンテンツとして記録媒体などに格納しておき、運用時に画像生成装置200におけるメインメモリにロードできるようにしてもよい。基準画像生成装置300の内部回路構成は、図4で示した画像生成装置200の内部回路構成と同様でよい。
基準画像生成装置300は、基準視点を設定する基準視点設定部310、表示対象のオブジェクトからなる空間を構築する空間構築部316、構築された空間に基づき基準視点ごとに基準画像のデータを生成する基準画像データ生成部318、空間の構築に必要なオブジェクトモデルに係るデータを記憶するオブジェクトモデル記憶部314、および、生成した基準画像のデータを格納する基準画像データ記憶部320を備える。
基準視点設定部310は、入力部238、CPU222、メインメモリ226などで構成され、表示対象の空間における基準視点の位置座標を設定する。好適には、上述のとおりユーザがとり得る視点の範囲を網羅するように複数の基準視点を分布させる。このような範囲や基準視点の数の適正値は、表示対象の空間の構成、表示の目的、表示に求められる精度、画像生成装置200の処理性能などによって異なる。このため基準視点設定部310は、基準視点の位置座標に係るユーザの入力を受け付けるようにしてもよい。
空間構築部316は、CPU222、GPU224、メインメモリ226などで構成され、表示対象のオブジェクトが存在する空間の形状モデルを構築する。この機能は図5で示した空間構築部262の機能と対応する。一方、図6の基準画像生成装置300では、レイトレーシングなどによりオブジェクトの像を正確に描画するため、オブジェクトの色や材質を加味したソリッドモデルに基づくモデリング手法を用いる。そのためオブジェクトモデル記憶部314には、色や材質などの情報を含むオブジェクトのモデルデータを格納しておく。
基準画像データ生成部318は、CPU222、GPU224、メインメモリ226などで構成され、基準画像生成部322およびデプス画像生成部324を含む。基準画像生成部322は、基準視点設定部310が設定した基準視点ごとに、当該基準視点から見える表示対象のオブジェクトを描画する。好適には正距円筒図法などによる360°のパノラマ画像として基準画像を準備しておくことにより、表示時の視点も全方位に自由に変化させることができる。また光線の伝播について時間をかけて計算することにより、各基準視点における見え方を基準画像に正確に表すことが望ましい。
デプス画像生成部324は、基準画像生成部322が生成した基準画像に対応するデプス画像を生成する。すなわち基準画像の各画素が表すオブジェクトの、ビュースクリーンからの距離(デプス値)を求め、それを画素値として与えることによりデプス画像を生成する。なお基準画像を360°のパノラマ画像とした場合、ビュースクリーンは球面となるため、デプス値は当該球面の法線方向におけるオブジェクトまでの距離となる。生成したデプス画像は、表示画像の画素値を決定する際に用いる基準画像の選択に利用される。基準画像データ生成部318は、このように生成した基準画像とデプス画像のデータを、基準視点の位置座標と対応づけて基準画像データ記憶部320に格納する。
図7は基準視点の設定例を示している。この例ではユーザ12が立ったときの目の高さの水平面20aと、座ったときの目の高さの水平面20bのそれぞれに、黒丸で示すように複数個の基準視点を設定している。一例として水平面20aは床から1.4m、水平面20bは床から1.0mなどである。またユーザの標準位置(ホームポジション)を中心とする左右方向(図のX軸方向)および前後方向(図のY軸方向)に、表示内容に応じた移動範囲を想定し、水平面20a、20b上の対応する矩形領域に基準視点を分布させる。
この例では、矩形領域をX軸方向、Y軸方向にそれぞれ4等分する格子の交点に1つおきに基準視点を配置している。また上下の水平面20a、20bで基準視点が重ならないようにずらして配置している。結果として図7に示す例では、上の水平面20aにおいて13点、下の水平面20bにおいて12点の、合計25点の基準視点が設定されている。
ただし基準視点の分布をこれに限る主旨ではなく、垂直面なども含めた複数の平面上に分布させてもよいし、球面などの曲面上に分布させてもよい。また分布を均等にせず、ユーザがいる確率の高い範囲には他より高い密度で基準視点を分布させてもよい。また表示対象のオブジェクトを移動させたり変形させたりするような動きを演出する場合、基準視点もそれに応じて移動させてもよい。この場合、各基準視点に対する基準画像は当該動きを反映するような動画像のデータとなる。
また、特定のオブジェクトに対しそれを囲むように複数の基準視点を設定して専用の基準画像を準備しておき、当該オブジェクトを含む空間全体の表示画像生成時に合成するようにしてもよい。この場合、画像生成装置200は、当該オブジェクトのメッシュを他と同様にビュースクリーンに射影したうえ、画素値の決定には別途準備した、当該オブジェクト専用の基準画像を用いる。このようにすることで、重要なオブジェクトや接近して見られる可能性の高いオブジェクトなどについてより詳細に表現したり、特定のオブジェクトのみを移動させたり変形させたりすることを、基準画像データの量を増大させずに実現できる。
図8は、画像生成装置200の画素値決定部266が、表示画像の画素値の決定に用いる基準画像を選択する手法を説明するための図である。同図はオブジェクト24を含む表示対象の空間を俯瞰した状態を示している。この空間において、5つの基準視点28a〜28eが設定され、それぞれに対し基準画像のデータが生成されているとする。同図において基準視点28a〜28eを中心とする円は、全天球のパノラマ画像として準備した基準画像のスクリーン面を模式的に示している。
画像表示時のユーザの視点が仮想カメラ30の位置にあるとすると、射影部264は当該仮想カメラ30に対応するようにビュースクリーンを決定し、オブジェクト24のモデル形状を射影する。その結果、表示画像における画素とオブジェクト24の表面上の位置との対応関係が判明する。そして、例えばオブジェクト24の表面のポイント26の像を表す画素の値を決定する場合、画素値決定部266はまず、当該ポイント26が像として表れている基準画像を特定する。
ワールド座標系における各基準視点28a〜28eとポイント26の位置座標は既知であるため、それらの距離は容易に求められる。図ではその距離を、各基準視点28a〜28eとポイント26を結ぶ線分の長さで示している。またポイント26を各基準視点のビュースクリーンに射影すれば、各基準画像においてポイント26の像が表れるべき画素の位置も特定できる。一方、基準視点の位置によっては、ポイント26がオブジェクトの裏側になったり前にあるオブジェクトに隠蔽されていたりして、基準画像の当該位置にその像が表れないことがある。
そこで画素値決定部266は、各基準画像に対応するデプス画像を確認する。デプス画像の画素値は、対応する基準画像に像として現れるオブジェクトの、スクリーン面からの距離を表している。したがって、基準視点からポイント26までの距離と、デプス画像におけるポイント26の像が表れるべき画素のデプス値とを比較することで、当該像がポイント26の像であるか否かを判定する。
例えば基準視点28cからポイント26への視線上には、オブジェクト24の裏側のポイント32があるため、対応する基準画像におけるポイント26の像が表れるべき画素は、実際にはポイント32の像を表している。したがって対応するデプス画像の画素が示す値はポイント32までの距離であり、基準視点28cを始点とする値に換算した距離Dcは、座標値から計算されるポイント26までの距離dcより明らかに小さくなる。そこでデプス画像から得られる距離Dcと座標値から得られるポイント26までの距離dcとの差がしきい値以上であるとき、ポイント26を表す画素値の計算から当該基準画像を除外する。
同様に、基準視点28d、28eのデプス画像から得られる対応する画素のオブジェクトまでの距離Dd、Deは、各基準視点28d、28eからポイント26までの距離としきい値以上の差があるとして計算から除外される。一方、基準視点28a、28bのデプス画像から得られる対応する画素のオブジェクトまでの距離Da、Dbは、各基準視点28a、28bからポイント26までの距離と略同一であることがしきい値判定により特定できる。画素値決定部266は、このようにデプス値を用いたスクリーニングを行うことにより、表示画像の画素ごとに、画素値の算出に用いる基準画像を選択する。
図8では5つの基準視点を例示しているが、実際には図7で示したように分布させた基準視点の全てに対して、デプス値を用いた比較を行う。これにより精度の高い表示画像を描画できる。一方、表示画像の全画素について、25程度のデプス画像および基準画像を参照することは、装置の処理性能によっては看過できない負荷を産むことも考えられる。そこで画素値の決定に用いる基準画像を上述のように選択するのに先立ち、所定の基準によって選択候補とする基準画像を絞りこんでもよい。例えば仮想カメラ30から所定の範囲内に存在する基準視点を抽出し、それらからの基準画像に限定してデプス値を用いた選択処理を実施する。
このとき、抽出する基準視点の上限を10個、20個などと設定しておき、そのような上限に収まるように、抽出対象の範囲を調整したり、ランダムあるいは所定の規則に基づき取捨選択したりしてもよい。また表示画像上の領域によって、抽出する基準視点の数を異ならせてもよい。例えばヘッドマウントディスプレイを用いて仮想現実を実現する場合、表示画像の中心領域はユーザの視線の向く方向と一致するため、周辺領域より高い精度での描画が望ましい。
そこで表示画像の中心から所定範囲内にある画素については、ある程度多くの基準視点(基準画像)を選択候補とする一方、それより外側にある画素については、選択候補の数を減らす。一例として中心領域は20個程度、周辺領域は10個程度の基準画像を選択候補とすることが考えられる。ただし領域数は2つに限らず、3領域以上としてもよい。また表示画像中心からの距離に依存した区分けに限らず、注目されるオブジェクトの像の領域などにより動的に区分けすることも考えられる。このように、オブジェクトの像が写っているか否か以外の要因に基づき、参照する基準画像の数を制御することにより、装置の処理性能や表示に求められる精度、表示の内容などを考慮した最適な条件での表示画像描画が可能となる。
図9は、画素値決定部266が表示画像の画素値を決定する手法を説明するための図である。図8に示したように、基準視点28a、28bの基準画像に、オブジェクト24のポイント26の像が表されていることが判明しているとする。画素値決定部266は基本的に、それらの基準画像におけるポイント26の像の画素値をブレンドすることにより、実際の視点に対応する表示画像におけるポイント26の像の画素値を決定する。
ここで、ポイント26の像の、基準視点28a、28bの基準画像における画素値(カラー値)をそれぞれc1、c2とすると、表示画像における画素値Cを次のように計算する。
C=w1・c1+w2・c2
ここで係数w1、w2はw1+w2=1の関係を有する重み、すなわち基準画像の寄与率を表し、基準視点28a、28bと、実際の視点を表す仮想カメラ30との位置関係に基づき決定する。例えば仮想カメラ30から基準視点までの距離が近いほど大きな係数とすることで寄与率を大きくする。
この場合、仮想カメラ30から基準視点28a、28bまでの距離をΔa、Δbとし、sum=1/Δa2+1/Δb2とおくと、重み係数を次のような関数とすることが考えられる。
w1=(1/Δa2)/sum
w2=(1/Δb2)/sum
上式を、用いる基準画像の数をN、基準視点の識別番号をi(1≦i≦N)、仮想カメラ30からi番目の基準視点までの距離をΔi、各基準画像における対応する画素値をci、重み係数をwiとして一般化すると次のようになる。ただし計算式をこれに限る主旨ではない。
なお上式においてΔiが0の場合、すなわち仮想カメラ30がいずれかの基準視点と一致する場合は、対応する基準画像の画素値に対する重み係数を1、他の基準画像の画素値に対する重み係数を0とする。これにより、当該視点に対し精度よく作成しておいた基準画像を、そのまま表示画像に反映させることができる。
また、重み係数の算出に用いるパラメータは仮想カメラから基準視点までの距離に限らない。例えば仮想カメラ30からポイント26への視線ベクトルVrに対する、各基準視点からポイント26への視線ベクトルVa、Vbのなす角度θa、θb(0≦θa,θb≦90°)に基づいてもよい。例えばベクトルVaおよびVbとベクトルVrとの内積(Va・Vr)、(Vb・Vr)を用いて、重み係数を次のように算出する。
w1=(Va・Vr)/((Va・Vr)+(Vb・Vr))
w2=(Vb・Vr)/((Va・Vr)+(Vb・Vr))
この式を、上述同様、用いる基準画像の数をNとし、基準視点iからポイント26への視線ベクトルをVi、重み係数をwiとして一般化すると次のようになる。
いずれにしろポイント26に対する状態が仮想カメラ30に近い基準視点ほど大きい重み係数となるような算出規則を導入すれば、具体的な計算式は特に限定されない。距離および角度の双方から多角的に「状態の近さ」を評価して重み係数を決定してもよい。さらにオブジェクト24の、ポイント26における表面形状を加味してもよい。オブジェクトからの反射光の輝度は一般的に表面の傾斜(法線)に基づく角度依存性を有する。そこで、ポイント26における法線ベクトルと仮想カメラ30からの視線ベクトルVrとのなす角度と、当該法線ベクトルと各基準視点からの視線ベクトルVa、Vbとのなす角度とを比較し、その差が小さいほど重み係数を大きくしてもよい。
また、重み係数を算出する関数自体を、オブジェクト24の材質や色などの属性によって切り替えてもよい。例えば鏡面反射成分が支配的な材質の場合、強い指向性を有し、視線ベクトルの角度によって観測される色が大きく変化する。一方、拡散反射成分が支配的な材質の場合、視線ベクトルの角度に対する色の変化がそれほど大きくない。そこで、前者の場合は仮想カメラ30からポイント26への視線ベクトルVrに近い視線ベクトルを持つ基準視点ほど重み係数を大きくするような関数を用い、後者の場合は、全ての基準視点に対し重み係数を等しくしたり、鏡面反射成分が支配的な場合と比較し角度依存性が小さくなるような関数を用いたりしてもよい。
また同じ理由から、拡散反射成分が支配的な材質の場合、表示画像の画素値Cの決定に用いる基準画像を間引いたり、実際の視線ベクトルVrに所定値以上、近い角度の視線ベクトルを持つ基準画像のみを用いたりしてその数自体を減らし、計算の負荷を抑えてもよい。このように、画素値Cの決定規則をオブジェクトの属性によって異ならせる場合、基準画像データ記憶部256には、基準画像の像ごとに、それが表すオブジェクトの材質など、属性を表すデータを対応づけて格納しておく。
以上述べた態様により、オブジェクトの表面形状や材質を加味し、鏡面反射による光の指向性などをより正確に表示画像に反映させることができる。なお重み係数の決定には、オブジェクトの形状に基づく計算、属性に基づく計算、仮想カメラから基準視点までの距離に基づく計算、各視線ベクトルのなす角度に基づく計算、のいずれか2つ以上を組み合わせてもよい。
次に、これまで述べた構成によって実現できる画像生成装置の動作について説明する。図10は画像生成装置200が視点に応じた表示画像を生成する処理手順を示すフローチャートである。このフローチャートはユーザ操作によりアプリケーション等が開始され初期画像が表示されるとともに、視点の移動を受け付ける状態となったときに開始される。上述のとおり図示する表示処理と並行して電子ゲームなど各種情報処理がなされてもよい。まず空間構築部262は、表示対象のオブジェクトが存在する3次元空間をワールド座標系に構築する(S10)。
一方、視点情報取得部260は、ユーザ頭部の位置や姿勢に基づき、その時点での視点の位置や視線の方向を特定する(S12)。次に射影部264は、視点に対するビュースクリーンを設定し、表示対象の空間に存在するオブジェクトを射影する(S14)。上述のとおりこの処理では、3次元モデルを形成するポリゴンメッシュの頂点を透視変換するなど表面形状のみを考慮すればよい。次に画素値決定部266は、そのように射影されたメッシュ内部の画素のうち対象画素を1つ設定し(S16)、その画素値の決定に用いる基準画像を選択する(S18)。
すなわち上述のように、対象画素が表すオブジェクト上のポイントが像として表れている基準画像を、各基準画像のデプス画像に基づき決定する。そして画素値決定部266は、それらの基準画像の基準視点と、実際の視点に対応する仮想カメラとの位置関係やオブジェクトの形状、材質などに基づき重み係数を決定したうえ、各基準画像の対応する画素値を加重平均するなどして対象画素の値を決定する(S20)。なお基準画像の画素値から対象画素の画素値を導出する計算は、加重平均以外に統計処理や補間処理として様々に考えられることは当業者には理解されるところである。
S18、S20の処理を、ビュースクリーン上の全ての画素について繰り返す(S22のN、S16)。全画素の画素値を決定したら(S22のY)、出力部268は当該データを表示画像のデータとしてヘッドマウントディスプレイ100に出力する(S24)。なお左目用、右目用の表示画像を生成する場合は、それぞれについてS16〜S22の処理を実施するとともに適宜つなげて出力する。表示を終了させる必要がなければ、次の視点情報を取得したうえで表示画像の生成、出力処理を繰り返す(S26のN、S12〜S24)。表示処理を終了させる必要が生じたら全ての処理を終了させる(S26のY)。
なお図10の例ではビュースクリーン上の全ての画素について基準画像を用いて画素値を決定したが、表示画像上の領域や視点の位置によって描画手法を切り替えてもよい。例えば視点移動による光や色味の変化を必要としないオブジェクトの像については、従来のテクスチャマッピングを行うのみでもよい。また指向性の高い反射光など、局所的な視点でのみ観測される状態は、周囲の基準画像からは表現しきれないことがある。そのため、該当する範囲に視点が入ったときのみレイトレーシングによる描画に切り替えることにより、基準画像として準備するデータの量を抑えることができる。
以上述べた構成において、複雑な形状のオブジェクトを自由な視点から観察するなど、様々な状況を網羅して正確な画像を即座に描画するには、基準視点の数を増やすことが有効となる。一方で、基準視点を増やすほど表示に必要な基準画像のデータサイズが大きくなり、記憶領域、伝送帯域を圧迫するとともにデータ読みだしの効率が下がることが考えられる。そこで基準画像生成装置300は基準画像のデータを生成する際、複数の基準視点から共通して見えているオブジェクトの部分については、いずれかの基準画像からデータを削除する。これにより、基準視点の数を増加させても基準画像のデータサイズの増大を抑えられるようにする。
図11は、複数の基準視点からのオブジェクトの見え方を模式的に示している。同図上段は、オブジェクト40と複数の基準視点42a、42b、42cを含む表示対象の空間を俯瞰した状態を示している。この例でオブジェクト40は、3つの基準視点42a、42b、42cの配列に相対する面に凹み部分を有している。この場合、その開口部の正面にある基準視点42bからは凹みの内部44が観測されるが、正面にない基準視点42a、42cからは内部44が見えない。
図11の下段は、各基準視点42a、42b、42cに対し得られる基準画像46a、46b、46cのうちオブジェクト40の像の部分を示している。高さ方向を考慮すると、オブジェクト40の像のうち網掛けされた部分48は、基準画像46bにのみ表される。換言すれば、当該部分48以外の部分は、他の基準画像46a、46cにも表されている。したがって、例えば基準画像46bのうち網掛けされた部分48以外のデータを削除しても、その他の基準画像46a、46cを用いればオブジェクト40を描画することが可能である。
図12は、基準画像のデータの一部を削除する機能を有する基準画像生成装置300における、基準画像生成部322の機能ブロックの構成を示している。基準画像生成部322は、基準画像描画部326、データ削除部328、およびインデクスデータ生成部330を備える。基準画像描画部326は、図6について上述したように、基準視点設定部310が設定した基準視点ごとに、当該基準視点から見える表示対象のオブジェクトを描画する。データ削除部328は、同一オブジェクト上の同じポイントが複数の基準画像に表れている場合に、いずれかの基準画像からその部分のデータを削除する。
例えば図11に示した基準画像46bのうち、網掛けされた部分48以外の領域のデータを削除する。このとき画像平面を所定サイズに分割してなるタイル画像単位で削除対象を決定することで、表示画像生成時のデータ読み出しの効率を上げることができる。インデクスデータ生成部330は、基準画像上のタイル画像の位置座標または位置を示す識別情報と、タイル画像ごとの画像データの実体とを対応づけるインデクスデータを基準画像ごとに生成する。データが削除されたタイル画像の位置座標に対しては、データが無効である旨を示す識別情報を対応づける。
図13は、基準画像から一部のデータを削除する様子を模式的に示している。まず基準画像50aは、図11における基準画像46bに対応している。画像データの削除は、点線で示すように画像平面を所定サイズに分割してなるタイル画像単位とする。図示する例では、対応する基準視点のみから見えている部分48を含むタイル画像を残し、それ以外のタイル画像を削除する。基準画像50bにおいて、削除するタイル画像を網掛けで示している。
さらに、残したタイル画像のみをつなげた基準画像データ52を生成するとともに、元の基準画像の平面におけるタイル画像の位置座標と画像データの本体とを対応づけるインデクスデータを生成し、それらをまとめて基準画像のデータとする。同図ではインデクスデータとして3つの対応づけを矢印で模式的に示しているが、実際には画像平面上の位置座標と、画像データの本体を格納した記憶領域のアドレスなどとを、タイル画像ごとに対応づければよい。
これにより、基準視点を多く設定することで複雑な形状のオブジェクトや他のオブジェクトと重なっているオブジェクトについても、基準画像を用いた描画が可能になるとともに、それによる基準画像のデータサイズの増大を抑えることができる。このようなデータの削除やデータ整形の処理は、基準画像生成装置300が、基準画像の生成とともに実施する。なおこれまで述べたデータ圧縮手法では、基準視点が空間的に近いことによる基準画像の冗長性を利用したが、基準画像を複数の画像フレームからなる動画データとした場合、時間的な冗長性を利用することができる。
例えば動画としても動きのないオブジェクトや、動いていてもその速度が小さいオブジェクトの場合は特に、前のフレームにおけるタイル画像を流用しても、それを用いて描画する表示画像の精度は維持できる。したがってデータ削除部328は、同一の基準視点から見た動画像のフレーム間で、同じオブジェクトの像が表れているタイル画像については、いずれかのフレームからデータを削除してよい。この場合のデータ構造も、図13で示したのと同様でよい。
図14は、基準画像生成装置300の基準画像データ生成部318がデータの削除を含め基準画像データを生成する処理手順を示すフローチャートである。まず基準画像生成部322の基準画像描画部326は、上述のとおりレイトレーシングなどの手法により基準視点から見たオブジェクトを描画することで、基準画像を生成する(S30)。この際、デプス画像生成部324は、各基準画像に対応するデプス画像を生成する。
次に基準画像生成部322のデータ削除部328は、図13の基準画像50aに示したように、各基準画像を所定サイズのタイル画像に分割する(S32)。次にデータ削除部328は、各タイル画像を構成する画素ごとに、それにより表されているオブジェクト上のポイントが、いくつの基準視点から見えているかを表すパラメータ(以後、「VC(Visibility Count)」と呼ぶ)を計算する(S34)。この処理は、図10に示したフローチャートのS18における、表示画像の画素値の決定に用いる基準画像を決定する処理と同様でよい。
すなわち各基準視点からオブジェクト上のポイントまでの距離と、基準画像に対応づけて生成されたデプス画像が示すデプス値との差がしきい値より小さいとき、その基準視点から当該ポイントが見えていると判定し、パラメータVCに1を加算する。1つの基準視点のみから見えているポイントを表す画素は、VCが1となる。複数の基準視点から見えているポイントを表す画素は、VCが1より大きくなる。
したがって、タイル画像を構成する全ての画素のVCが1より大きい場合、当該タイル画像に表される像は、図13の基準画像50bの網掛けされたタイル画像のように、他の基準画像のデータを用いて描画することが可能なため、削除対象とする(S36のY、S38)。VCが1の画素を含むタイル画像は、少なくとも一部において、その基準画像でのみ表されているオブジェクトの部分が含まれるため、削除しない(S36のN)。
このようなタイル画像ごとの評価を、基準画像を構成する全てのタイル画像に対して繰り返す(S40のN、S34〜S38)。なおS34〜S38の処理は、S30で生成した基準画像のうち、一定間隔の基準視点ごとなど所定の基準で選択した基準画像に対し実施する。あるいは、全ての基準画像に対しVCを画素ごとに計算し、タイル画像を削除する対象とする基準画像を後から決定してもよい。例えば全ての基準画像で削除するタイル画像の数がなるべく均等になるようにしてもよい。
このような場合、オブジェクト上の同じポイントを表す画素のVCは基準画像間で共通のため、それを流用することにより、全ての基準画像の全画素に対しS34の処理を実施する必要はない。そのようにして全てのタイル画像について削除の是非を評価したら(S40のY)、インデクスデータ生成部330は削除対象外のタイル画像と元の基準画像平面における位置座標とを対応づけたインデクスデータを生成し、タイル画像データと対応づけて基準画像データ記憶部320に格納する(S42)。
この場合、削除対象のタイル画像を含まない基準画像についても、タイル画像とインデクスデータからなるデータ構造とすることにより、描画処理において、削除の有無にかかわらず基準画像データを一律に扱うことができる。またインデクスデータにおいて、削除対象となったタイル画像に対応する位置座標には、データが無効である旨の識別情報を対応づけておく。このように生成された基準画像データを用い、画像生成装置200の画素値決定部266は、表示画像の画素値Cを次の式により決定する。
ここで、タイル画像を削除しない場合の式1と同様、用いる基準画像の数をN、基準視点の識別番号をi(1≦i≦N)、各基準画像における対応する画素値をciとしている。一方、式3における重み係数w’iは、和を1として正規化する前の値であり、視点間の距離やオブジェクト上のポイントに対する角度等に依存する。またBiは、各基準画像において対応する画素を含むタイル画像が有効であれば1、無効であれば0を示すフラグであり、インデクスデータにおけるタイル画像の位置座標にデータが無効である旨の識別情報が対応づけられていれば0、それ以外であれば1とする。
なおタイル画像のデータを削除する際、基準画像生成部322は、削除したタイル画像上の画素の位置と、それと同じオブジェクト上のポイントを表す他の基準画像上の画素の位置とを対応づけたインデクスデータを別途作成してもよい。このようにすると、複数の基準画像で画素値のデータが共有され、画像データとしては圧縮される一方、実質的には全ての基準画像上の画素が、実体となる画素値を有していることになる。この場合は、式1により画素値Cを決定できる。
なおこのような基準画像の冗長性を利用したデータ圧縮は、オブジェクトからの光線の角度依存性が低い、拡散反射成分が支配的な材質の場合は特に有効である。一方、指向性の強い光が生じるオブジェクトや環境においては、同じオブジェクトを表す基準画像でもできるだけ多くの基準視点からの画像を確保しておくことにより、視点の移動に応じた緻密な変化を表現できる。したがって基準画像生成装置300は、複数の基準視点からオブジェクト上の同一のポイントが見える場合に加え、各基準画像において当該ポイントを表す画素値にしきい値以上の差がない場合を条件に、削除対象のデータを決定してもよい。
図15は、画像生成装置200の画素値決定部266が、一部のデータが削除されている基準画像を用いて画素値を決定する処理手順を示すフローチャートである。この処理は、図10のS20の処理に対応する。したがってその前段において、画素値の決定に使用する基準画像が判明しているものとする。画素値決定部266はまず、使用する基準画像のうちの1つを対象に、ビュースクリーン上の対象画素に対応する画素を含むタイル画像の位置を特定する(S70)。そして基準画像に対応するインデクスデータを参照し、当該タイル画像が有効か否かを判定する(S72)。
有効である場合(S72のY)、すなわちタイル画像の位置座標にデータの実体が対応づけられている場合、当該データを読み出し(S74)、そのうちの対応画素の値を取得する(S76)。タイル画像が無効の場合(S72のN)、すなわち当該タイル画像が基準画像のデータから削除されている場合はデータの読み出しは行わない。使用する基準画像の全てについてS70〜S76の処理を繰り返し(S78のN)、それが完了したら(S78のY)、S76で取得した画素値の加重平均を算出することにより最終的な画素値を決定する(S80)。
なお上述の式3は、S72の判定結果が有効な場合にBi=1、無効な場合にBi=0とすることにより、図示する処理手順を一度に実現していることになる。また動画像のフレームにおいて時間方向の冗長性によりタイル画像を削除する場合は、S72においてタイル画像が無効であることが判定されたとき、それより前のフレームにおける対応する画素のデータを読み出すことにより加重平均の算出に用いればよい。
これまで述べた手法によれば、ユーザの視点に対応する仮想カメラから見えるオブジェクト表面の色を、それに近い基準視点から見たオブジェクトの色で近似することにより、自由視点の画像を応答性よく描画できる。一方、オブジェクト表面の鏡面反射率が高く、他のオブジェクトが映り込むような状況においては、実際には視点の位置によって映り込む対象や位置が変化するため、近傍の基準視点における画像からの色の近似のみでは違和感を与えることが考えられる。
図16は、他のオブジェクトの映り込みを考慮したときの画像描画手法を説明するための図である。同図(a)に示すように、L字型のオブジェクト60が、金属など鏡面反射率が高い材質の場合、その前にある別のオブジェクト62の像63が映り込む。像63は、実際には視点の位置によって移動するが、これまで述べた手法によって、固定された基準視点から見た画像で近似すると、重みづけによる多少の変化はあるものの、像63が明確に移動するような変化にはならず、鑑賞者に違和感を与え得る。
そこで、同図(b)に示すように、まず映り込みのない状態、すなわちオブジェクト60の本来の色を表す画素値を取得したうえ、映り込みの色を別途取得して合成することにより、同図(a)のような映り込みによる像63を表現する。映り込みのない状態のオブジェクト60の描画には、これまで述べたのと同様の手法を用いることができる。ただしこの場合、準備する基準画像にも映り込みを描画しないでおく。また後述するように、映り込みを描画する手法によっては、像63の映り込みを表した基準画像を別途準備する。
図17は、オブジェクト表面における映り込みを正確に表現する態様における、画像生成装置200の画素値決定部266の機能ブロックの構成を示している。画素値決定部266は、オブジェクト色成分決定部270、映り込みオブジェクト位置推定部272、映り込み色成分決定部274、および色合成部276を含む。オブジェクト色成分決定部270は、図9のポイント26のように、対象画素が表すオブジェクト上のポイント本来の色を表す値を決定する。ここで本来の色とは当然、周囲の光の状態などによる色味の変化を加味した情報であり、図9で示した手法によって基準画像に基づき決定できる。
映り込みオブジェクト位置推定部272は、対象画素が表すオブジェクト上のポイントに映り込んでいる別のオブジェクト上の、描画対象の3次元空間における位置を推定する。このような場合、レイトレーシングなどの従来技術では、仮想カメラからの視線ベクトルの正反射方向にオブジェクトの存在を探索することになるが、本実施の形態では、基準画像、あるいはそれに対応するデプス画像を利用することにより、軽い処理負荷での位置推定を可能にする。具体例は後に述べる。
映り込み色成分決定部274は、対象画素に映り込んでいる別のオブジェクト上の、3次元空間における位置に基づき、基準画像において当該箇所が表されている画素位置を特定する。そしてその位置の画素値を参照することにより、映り込みによる色の値を決定する。ここで用いる基準画像は映り込みのない状態、すなわちオブジェクト本来の色が表された画像である。したがってこの処理は、基準画像を構成する円筒において、本来参照すべき画素位置の、略裏側の画素位置を参照していることになる。
色合成部276は、オブジェクト色成分決定部270が決定した描画対象オブジェクト本来の色成分と、映り込み色成分決定部274が決定した、映り込みによる色成分を合成する。例えば所定のアルファ値を用いて加重平均をとることによりアルファブレンド合成を行う。なお、映り込みオブジェクト位置推定部272、映り込み色成分決定部274、および色合成部276の機能は、描画対象のオブジェクトの鏡面反射率がしきい値以上の場合など、他のオブジェクトの映り込みを表現すべき状況においてのみ有効としてもよい。
次に、映り込みオブジェクト位置推定部272および映り込み色成分決定部274が、描画対象のオブジェクトに映り込んでいる別のオブジェクト上の箇所を特定し、その色を基準画像から取得する手法について説明する。図18は、1つの基準画像を用いて映り込み色成分を決定する手法を説明するための図である。同図は図16で示した状況を想定し、ユーザの視点に対応する仮想カメラ30、描画対象のオブジェクト60、それに映り込んでいるオブジェクト62を含む表示対象の空間を俯瞰した状態を示している。
基準視点64は、例えばオブジェクト60の最近傍の基準視点であり、同図ではそれを中心とする円を基準画像66としている。この基準画像は上述のとおり映り込みのない状態を表す画像である。したがってオブジェクト色成分決定部270は、例えばオブジェクト60上のポイントPの像を描画する際、基準画像66上の位置Dの画素値を用いることにより、ポイントPの本来の色成分を決定する。ただしこの処理では、ポイントPが画像として表れている複数の基準画像を用いて、式1による加重平均により色の値を求めてよい。
一方、映り込みオブジェクト位置推定部272は、ポイントPに映り込んでいるオブジェクト62上のポイントQの位置を3次元空間で推定する。図示するようにポイントQは、ポイントPにおけるオブジェクト60表面の法線ベクトルnに対し、仮想カメラ30からの視線ベクトルVrと同じ平面で対象なベクトル(以後、「反射ベクトル」と呼ぶ)Sがオブジェクト62の表面に到達するポイントである。そこで基準視点64を始点とし、反射ベクトルSと平行なベクトルS’がオブジェクト62の表面に到達するポイントQ’の位置を求め、本来のポイントQの推定位置とする。
基準視点がポイントPに近いほど、ポイントQ’はポイントQに近くなる。またオブジェクト62がポイントPから遠いほど、映り込む面積に対してポイントQとQ’の距離は無視できる程度の割合となる。この場合、映り込みオブジェクト位置推定部272は、ポイントQ’の位置座標を直接求める必要はなく、視線ベクトルVrに基づき反射ベクトルSを求め、それと平行なベクトルS’の、基準視点64からの方位を求めればよい。これにより映り込み色成分決定部274は、求められた方位に対応する基準画像66上の位置Fを特定し、ポイントQ’の色を取得できる。
図19は、図18で示した手法によって参照される、基準画像上の位置を模式的に示している。基準画像66は、基準視点64を中心とする360°の方位を表す画像のため、正距円筒図法によれば、図示するように縦横を緯度、経度とする展開図で表すことができる。上述のとおりこの態様における基準画像には、オブジェクト60の像におけるオブジェクト62の映り込みを表さない。基準画像66のうち位置Dは、描画対象のポイントPを基準視点64から見たときの本来の色を表す。また位置Fは、図18で説明したように、ポイントPに映り込むべきオブジェクト62上のポイントQに近似できるポイントQ’の色を表す。
前者はオブジェクト色成分決定部270が参照し、後者は映り込み色成分決定部274が参照することにより、それぞれの色の決定に用いる。色合成部276はそれらを適宜ブレンドすることにより、最終的な画素値を決定する。なお映り込み色成分決定部274は、位置Fを中心とする所定の範囲68の色を用いて、映り込みによる色を決定してよい。例えばオブジェクト60に設定される表面の粗さや材質に応じた設定周波数で、範囲68の色をローバスフィルタによりフィルタリングしたうえで得られた位置Fの色を、映り込み成分の色としてよい。あるいは範囲68からランダムに選択した色を映り込み成分の色としてよい。
このようにすることで、オブジェクト60の表面の状態や材質によって、適切にぼけた状態で映り込みを表現できる。あるいはこのような映り込みを表現するために、複数段階の解像度で基準画像を準備しておき、オブジェクト60の表面粗さに応じて、参照する基準画像を切り替えてもよい。図18で示した手法は、オブジェクト62表面の3次元空間での位置を探索する必要がないため、軽い処理負荷で視点に応じた映り込みを表現できる。
一方、オブジェクト62がポイントPや基準視点64から近い位置に存在すると、それらに映るオブジェクト62の像の面積が大きくなるため、本来のポイントQと、反射ベクトルSから推定したポイントQ’との差が見かけ上、大きくなり、近似精度が悪化する。図20は、オブジェクト62がポイントPや基準視点64から近い位置に存在することを考慮したときの、映り込み色成分を決定する手法を説明するための図である。同図は図18と同様の空間を示しているが、オブジェクト62がオブジェクト60や基準視点64の近傍に存在する。
この例で図19と同様に、基準視点64を始点とし、反射ベクトルSと平行なベクトルS’を定義すると、当該ベクトルS’はオブジェクト62とは交わらず、背景など別のオブジェクト70上のポイントQ0に到達する。この結果をそのままポイントPの色の決定に用いれば、本来とは別のオブジェクト70が映り込んだ状態となってしまう。仮にベクトルS’がオブジェクト62表面に到達しても、基準画像上で本来のポイントQを表す画素位置Fとはかけ離れた画素位置が得られるなどして、色表現の精度が低下することが考えられる。
そこで、基準視点64を中心にベクトルS’の方位を転回させることにより、本来映り込んでいるオブジェクト62上のポイントQに到達する方位を探索する。図21は、反射ベクトルSに平行なベクトルS’を、基準視点を中心に転回することによる、基準画像上での探索の様子を示している。基準画像66は図19で示したのと同様、オブジェクト60とオブジェクト62の像が、本来の色で表されている。また位置Dは、描画対象のポイントPに対応する。
さらに位置F0は、反射ベクトルSに平行なベクトルS’が到達するオブジェクト上の位置Q0に対応する。図20に示した例では、位置F0は、本来映り込んでいるオブジェクト62の像から外れた場所、すなわち背景など図示しないオブジェクト70の像の上にある。基準視点64を中心にベクトルS’を転回することは、矢印Aに示すように、基準画像66上で位置F0から位置Dの方向に探索を行うことに相当する。
転回したベクトルが、本来映り込んでいるオブジェクト62上のポイントQに到達するときの方位がわかれば、それに対応する基準画像66上の位置Fも特定できる。このため、基準画像66に対応するデプス画像を参照し、探索経路における基準視点から各オブジェクトまでの距離を取得していく。図20に示す3次元空間において、基準視点64の位置座標は既知のため、当該距離の情報を用いれば、ベクトルS’を転回したときに到達する、各オブジェクト表面上のポイントQmの位置座標も判明する。
なお図20ではポイントQmを1つのみ示しているが、実際にはベクトルS’の転回によってオブジェクト表面上を移動する。ここで、ポイントPを始点としポイントQmを終点とするベクトルPQmを定義すると、当該ベクトルPQmと反射ベクトルSのなす角度が最小になるときのポイントQmが、本来、ポイントPに映り込んでいるポイントQである。例えば次のように評価値εを定義し、それが最小になるときのポイントQmを求める。
そして基準視点64からポイントQへの方位に基づき、ポイントQが像として表れている基準画像66上の位置Fが求められる。映り込み色成分決定部274は、図19で示したケースと同様に、基準画像66上の位置F、あるいはそれを中心とする所定の範囲68の色を用いて、映り込みによる色を決定する。
図20、21で示した手法は、図18、19で示した手法より負荷が大きくなるが、映り込みによる色をより正確に求められる。ただし上述のとおり、他のオブジェクトに映り込んでいるオブジェクトの距離によっては過度な処理となり得るため、空間構築部262が表示対象の空間を構築した際に判明するオブジェクト同士の距離や、表示に求められる精度などに応じて、両者の手法を適応的に切り替えてよい。
次に、2つの基準画像を用いて映り込み色成分を決定する手法を説明する。図22は、鏡面反射率が大きいオブジェクトの近傍に2つの基準視点が設定されている場合に、単純にそれらを参照して表示画像を描画した場合の問題点について説明するための図である。同図はオブジェクト80、82a、82b、82cと仮想カメラ30を含む空間を俯瞰した状態を示している。
オブジェクト80は例えば鏡のように、鏡面反射率の高い材質とする。この空間においてオブジェクト80の近傍に、基準視点84a、84bが設定されているとする。上述のとおりオブジェクト80に映り込む対象は、視点の位置によって異なり、例えば基準視点84aからはオブジェクト82cが、基準視点84bからはオブジェクト82aが見える。結果として基準視点84aの画像にはオブジェクト82cの像が表れ(基準画像86a)、基準視点84bの画像にはオブジェクト82aの像が表れる(基準画像86b)。
このような基準画像を用いて、基準視点84a、84bの中間にある仮想カメラ30からオブジェクト80を見た画像を描画すると、本来、オブジェクト82bの映り込みを表現した画像90が得られるところ、基準画像86a、86bを重ね合わせた画像88が得られてしまう。また基準画像における像は固定されているため、仮想カメラ30が移動しても両者を合成してなる画像上の映り込みの像は移動せず、臨場感が損なわれる。
そこで、例えば図示するような仮想カメラ30の位置において、オブジェクト80上のポイントPに映り込んで見えるオブジェクト82b上の位置Qを推定する。そして上述の手法同様、基準視点84a、84bの基準画像のうちオブジェクト82b上の位置Qが表れている位置Fa、Fbを参照し、ポイントPにおける映り込みの色を決定する。この手法においては、各基準視点84a、84bに対し、映り込みのない基準画像を生成するとともに、映り込みを表す基準画像、およびそれに表れているオブジェクトの本来の位置を表すデータをあらかじめ取得しておく。
図23は、仮想カメラ30の位置においてオブジェクト80に映り込んで見えるオブジェクト82b上のポイントQを推定する手法を説明するための図である。基準画像を用いない従来のレイトレーシングの手法では、オブジェクト82b表面へ到達するまで、反射ベクトルSの方向にオブジェクトの存在を探索していく必要がある。一方、本実施の形態では、映り込みを表す基準画像の生成時に、オブジェクト80上のポイントPに映り込んでいるオブジェクト82a、82c上の位置の情報を、各基準視点84a、84cからの視線ベクトルの正反射方向の探索により取得しておく。
例えば基準視点84aの基準画像を生成する際、太線矢印で示すように当該視点から位置Pを見る視線の正反射の方向にレイトレーシングを行うことにより、オブジェクト82c上のポイントPcの位置が取得される。基準視点84bの基準画像を生成する際も同様に、当該視点から位置Pを見る視線の正反射方向にレイトレーシングを行うことにより、オブジェクト82a上のポイントPaの位置が取得される。
基準視点84a、84bと仮想カメラ30の位置関係を考慮すれば、仮想カメラ30から見てポイントPに映り込んでいるオブジェクトは、オブジェクト82a、82cの中間にあることがわかる。この原理を利用して、取得済みのオブジェクト上のポイントPa、Pcから、オブジェクト82b上のポイントQを推定する。例えば図示するように、図の左から基準視点84aの視線ベクトル、仮想カメラの視線ベクトル、基準視点84bの視線ベクトル、という順番で並んでいる場合、ポイントPに映り込んでいるオブジェクト上のポイントPa、Q、Pcは、対応する視線ベクトルを、ポイントPの法線ベクトルを中心に反転させたベクトル上にあることが推定される。
そこで例えば次の式により、ポイントQに近似できるポイントPbを求める。
Pb=wa・Pa+wc・Pc (式5)
なおこの式でのPb、Pa、Pcは、各ポイントの位置座標を示している。またwa、wcはwa+wc=1を満たす重み係数であり、例えば対応する基準視点84a、84bと仮想カメラ30との距離に基づき決定する。
このときある基準視点(例えば基準視点84a)から映り込んで見えるオブジェクト上の位置(例えば位置Pc)に乗算する重み係数は、当該基準視点に仮想カメラ30が近づくほど大きくなり、仮想カメラ20が同位置になったときに1になるような変数とする。この手法によれば、基準視点および仮想カメラの位置関係に基づき、映り込んでいるオブジェクト上のポイントの「位置」を合成していることになる。ただし重み係数の決定基準をこれに限定する趣旨ではなく、オブジェクト80からの距離など別の要因を加味してもよい。
このようにして仮想カメラ30から映り込んで見えるオブジェクト82b上のポイントQを近似するポイントPbを取得したら、図19で示したのと同様に、オブジェクト本来の色を表す基準画像のうち、ポイントPbが表されている位置Fa、Fb、あるいはそれらを中心とする所定範囲の色を用いて、位置Pに映り込む色を決定する。ただしこの場合、参照先の基準画像が2つあるため、仮想カメラ30と基準視点84a、84bの位置関係に基づく重み係数などを用いて色の加重平均を求める。
なお上述のとおり、基準視点84a、84bから映り込んで見えるオブジェクト表面のポイントの位置情報は、映り込みを表現した基準画像を生成する際に判明するため、基準画像生成装置300が、当該基準画像に対応づけてデプス画像と同様の形式で生成しておく。これにより画像生成装置200は、表示画像の描画時に、仮想カメラ30の位置に依存した位置合成を即座に行える。また図示する例では2つの基準画像を用いたが、場合によっては3つ以上の基準画像を用いても同様の処理で映り込みの色を決定できる。
図23で示した手法は、オブジェクト80に映り込む可能性のあるオブジェクト82a、82b、82cが、およそ一列に並んでいることを想定している。一方、式5による1度の位置合成で求めたポイントPbには、実際にはオブジェクトが存在しない場合が考えられる。図24は、仮想カメラ30から映り込んで見えるオブジェクトが、推定された位置に存在しない場合を例示している。
図23で示したように、仮想カメラ30と基準視点84a、84bとの位置関係と、各基準視点84a、84からオブジェクト80上の点Pに映り込んで見えるオブジェクト82a、82c上のポイントPa、Pcに基づき、ポイントPbが推定される。この位置にオブジェクトが存在するか否かは、基準視点84a、84bの基準画像における位置Fa、Fbのデプス値とポイントPbの位置との比較により判明する。例えば図示するように、デプス値が、ポイントPbの位置より奥にあるオブジェクト82d上の位置Pa’、Pc’を示しているとする。
この場合、仮想カメラ30からはオブジェクト82d上のポイントPb’が映り込んで見えることが想定される。そこで、1度の推定で得られたポイントPbと、対応するデプス値が表す位置がしきい値以上の差を有する場合、当該デプス値が表す位置Pa’、Pc’を、式5のPa、Pcに置き換えることにより2度目の推定を行い、新たなポイントPb’を取得する。ただし重み係数wa、wbは、1度目の演算とは独立して決定してよい。そして基準視点84a、84bの基準画像のうち、新たに得られたポイントPb’が表されている位置Fa’、Fb’などの色を用いて、位置Pへ映り込む色を決定する。
一方、新たに得られたポイントPb’の位置にも、やはりオブジェクトが存在しない場合もある。図25は、仮想カメラ30から映り込んで見えるオブジェクトが、2度目の推定により得られた位置に存在しない場合を例示している。この場合も、ポイントPb’の位置と、基準視点84a、84bの基準画像における位置Fa’、Fb’におけるデプス値との比較により、当該位置にオブジェクトは存在せず、それより奥にオブジェクト82eがあることがわかる。そこでデプス値から得られる位置Pa”、Pc”を、式5のPa、Pcに置き換えることにより3度目の推定を行い、新たなポイントPb”を取得する。これにより、基準画像の対応する位置の色を用いて位置Pへ映り込む色を決定する。
このように位置推定の演算を繰り返すことによって、映り込んでいるオブジェクトを比較的広範囲で容易に探索できる。ただし推定処理を繰り返すことにより映り込んでいるオブジェクトまでの距離が大きくなると、仮想カメラ30の移動に対する像の変化は小さくなり、厳密な演算が必要なくなることが考えられる。したがって推定処理の反復回数には上限を設けてもよい。この場合、基準画像のデプス値から得られる位置Pa”、Pc”の色を直接合成するなどして色を決定してもよいし、一般的な探索手法であるレイマーチングなどそれ以外の手法に切り替えてもよい。
図26は、画像生成装置200の画素値決定部266が、映り込みを考慮して画素値を決定する処理手順を示すフローチャートである。このフローチャートは図10のS20の処理に置き換えることができ、対象画素ごとに実行する。まずオブジェクト色成分決定部270は、映り込みのない状態の基準画像を用いて、オブジェクト自体の色を表す値を決定する(S50)。この処理は図10のS20の処理と同様であり、これにより光の状態やオブジェクトの材質などを加味したベースの色が得られる。
対象画素が、鏡面反射率がしきい値より小さいなど映り込みを表現しなくてよい画素の場合、そのまま処理を終了する(S52のN)。映り込みを表現する場合(S52のY)、映り込みオブジェクト位置推定部272は、ユーザの頭部の位置や姿勢に基づく仮想カメラ30の視点に応じて、対象画素に映り込んでいるオブジェクト上のポイントの、表示対象の空間での位置を推定する(S54)。具体的には、図18〜21に示すように、仮想カメラ30の反射ベクトルと平行かつ基準視点を始点とするベクトルを用いて近似するポイントを決定したり、当該ベクトルを転回させつつ基準画像のデプス値に基づき探索したりする。
あるいは図22〜25に示すように、複数の基準画像を生成する際に得られた映り込みポイントの位置を、仮想カメラと基準視点の位置関係に基づき合成する。そして映り込み色成分決定部274は、推定された位置に対応する、基準画像上での画素位置を取得し(S56)、当該画素位置、あるいはそれを中心とする所定範囲の色を用いて映り込みの色成分を決定する(S58)。色合成部276は、S50で決定したオブジェクト本来の色と、S58で決定した映り込みによる色を合成して、最終的な画素値を決定する(S60)。
以上述べた本実施の形態によれば、任意の視点からの画像を表示する技術において、あらかじめ設定された基準視点に対する画像のデータを準備しておく。そして表示画像の描画時に、準備しておいた基準画像から同じオブジェクトを表す画素の値を取得することにより、表示画像の画素値を決定する。画素値の算出には、実際の視点と基準視点との位置関係やオブジェクトの属性に基づく規則を導入する。基準画像は視点に応じた表示とは別のタイミングで時間をかけて生成できるため、高品質なものを準備できる。表示時にはこの高品質な画像から値を引いてくることにより、時間をかけることなく高品質な画像を提示できる。
また、基準視点が近い基準画像ではオブジェクト上の同じ部分が表れる可能性が高いことを利用して、このような重複部分のデータを基準画像から削除しておく。これにより、基準画像のデータサイズを圧縮できるとともに、データサイズを増大させずに基準視点を増やすことができる。結果として、表現対象の空間の構成やオブジェクト形状が複雑化しても、表示画像の精密さと、画像データの扱いなどを含む描画処理の軽さを両立させることができる。
さらに、鏡面反射率の高いオブジェクトに対する他のオブジェクトの映り込みを表現するため、映り込みのない状態の基準画像を用いて決定した色に、別途取得した、映り込み分の色を合成する。当該基準画像には、映り込んでいるオブジェクトの本来の位置における像も表されているため、その像を参照して映り込み分の色を決定する。この際必要になる、映り込んでいるオブジェクトの本来の位置についても、基準画像を生成する際に得られる各種情報を利用して取得する。これにより、レイトレーシングなど従来の技術と比較して格段に軽い負荷で、視点の移動に応じて映り込みも移動する臨場感のある画像を表現できる。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
例えば本実施の形態では、一旦、ベースとしてオブジェクト本来の色を決定したあと、他のオブジェクトによる映り込みの色を合成した。この場合、同じ基準画像のうち映り込んでいるオブジェクトの像が表されている部分を参照していた。一方、合成する色の決定のために参照する画像を、別途準備した画像とすることで、映り込み以外の画像を自由に合成することができる。例えば参照先の画像として、オブジェクトが動く動画を準備すれば、ベースとなる画像が静止画であっても、一部のオブジェクトが動いている様を表現できる。この場合に必要な画像データのサイズは、基準画像を全て動画にするのと比較して格段に小さくなる。