(57)【要約】【課題】立体視における視点間での視線ベクトルの方向差を原因とする見づらい画像等が生成されるのを抑制できるプログラム及び画像生成システム等を提供できる。【解決手段】画像生成システムは、複数のオブジェクトが配置される仮想空間の設定処理を行う仮想空間設定部と、仮想空間において複数の視点から見える複数の視点画像を立体視用画像として生成する表示処理部を含む。表示処理部は、複数の視点の第１視点での第１視点画像を生成する際に、第１視点での第１視線ベクトルとは異なる視線ベクトルを用いて仮想視線ベクトルを設定し、仮想視線ベクトルを用いたシェーディング処理により、第１視点画像を生成する。【選択図】図１０
2018112885.tif 000002
【特許請求の範囲】
【請求項１】
複数のオブジェクトが配置される仮想空間の設定処理を行う仮想空間設定部と、
前記仮想空間において複数の視点から見える複数の視点画像を立体視用画像として生成する表示処理部として、
コンピュータを機能させ、
前記表示処理部は、
前記複数の視点の第１視点での第１視点画像を生成する際に、前記第１視点での第１視線ベクトルとは異なる視線ベクトルを用いて仮想視線ベクトルを設定し、前記仮想視線ベクトルを用いたシェーディング処理により、前記第１視点画像を生成することを特徴とするプログラム。
【請求項２】
請求項１において、
前記表示処理部は、
前記第１視線ベクトルとは異なる１つの基準視線ベクトルを、前記仮想視線ベクトルに設定し、前記基準視線ベクトルを用いたシェーディング処理により、前記第１視点での前記第１視点画像を生成することを特徴とするプログラム。
【請求項３】
請求項２において、
前記表示処理部は、
前記基準視線ベクトルを用いたシェーディング処理により、第２視点での第２視点画像を生成することを特徴とするプログラム。
【請求項４】
請求項３において、
前記基準視線ベクトルは、
前記第１視線ベクトルの第１視線方向と、前記第２の視点での第２視線ベクトルの第２視線方向とで規定される視線方向範囲内の視線ベクトルであることを特徴とするプログラム。
【請求項５】
請求項１において、
前記表示処理部は、
前記第１視線ベクトルと他の視線ベクトルとの合成処理により得られたベクトルを、第１仮想視線ベクトルに設定し、前記第１仮想視線ベクトルを用いたシェーディング処理により、前記第１視点での前記第１視点画像を生成することを特徴とするプログラム。
【請求項６】
請求項５において、
前記表示処理部は、
第２視点での第２視線ベクトルと他の視線ベクトルとの合成処理により得られたベクトルを、第２仮想視線ベクトルに設定し、前記第２仮想視線ベクトルを用いたシェーディング処理により、前記第２視点での第２視点画像を生成することを特徴とするプログラム。
【請求項７】
請求項６において、
前記表示処理部は、
前記第１視線ベクトルと基準視線ベクトルとの合成処理により得られたベクトルを、前記第１仮想視線ベクトルに設定し、前記第２視線ベクトルと前記基準視線ベクトルとの合成処理により得られたベクトルを、前記第２仮想視線ベクトルに設定し、
前記基準視線ベクトルは、
前記第１視線ベクトルの第１視線方向と、前記第２視線ベクトルの第２視線方向とで規定される視線方向範囲内の視線ベクトルであることを特徴とするプログラム。
【請求項８】
請求項５乃至７のいずれかにおいて、
前記合成処理での合成率が可変であることを特徴とするプログラム。
【請求項９】
請求項８において、
前記表示処理部は、
前記合成処理での合成率を、ユーザの入力情報、ゲーム状況情報、及び前記仮想空間での視点とオブジェクトとの位置関係情報の少なくとも１つに応じて変化させることを特徴とするプログラム。
【請求項１０】
請求項１において、
前記表示処理部は、
前記第１視点での前記第１視線ベクトルと第２視点での第２視線ベクトルとのなす角度が所与の角度以上になった場合に、前記仮想視線ベクトルを用いた前記シェーディング処理を行うことを特徴とするプログラム。
【請求項１１】
請求項１乃至１０のいずれかにおいて、
前記表示処理部は、
ピクセルシェーダ処理については前記仮想視線ベクトルを用いて行い、頂点シェーダ処理については前記第１視線ベクトルを用いて行うことを特徴とするプログラム。
【請求項１２】
請求項１乃至１０のいずれかにおいて、
前記表示処理部は、
レイトレーシング処理の少なくとも一部について前記仮想視線ベクトルを用いて行うことを特徴とするプログラム。
【請求項１３】
請求項１乃至１２のいずれかにおいて、
前記表示処理部は、
前記仮想視線ベクトルを用いて、照明モデルを用いたシェーディング処理及び輪郭線についてのシェーディング処理の少なくとも１つを行うことを特徴とするプログラム。
【請求項１４】
複数のオブジェクトが配置される仮想空間の設定処理を行う仮想空間設定部と、
前記仮想空間において複数の視点から見える複数の視点画像を立体視用画像として生成する表示処理部と、
を含み、
前記表示処理部は、
前記複数の視点の第１視点での第１視点画像を生成する際に、前記第１視点での第１視線ベクトルとは異なる視線ベクトルを用いて仮想視線ベクトルを設定し、前記仮想視線ベクトルを用いたシェーディング処理により、前記第１視点画像を生成することを特徴とする画像生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム及び画像生成システム等に関する。
【背景技術】
【０００２】
従来より、立体視用画像を生成する画像生成システムが知られている。このような画像生成システムの従来技術としては特許文献１、２に開示される技術がある。
【０００３】
例えば、二眼式の立体視用画像の生成システムでは、仮想空間内の左眼視点、右眼視点に対応する位置に左眼用仮想カメラ、右眼用仮想カメラを設定して、各仮想カメラでのレンダリング処理を行うことで、左眼用画像、右眼用画像を生成する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−７７９４０号公報
【特許文献２】特許第４６７２４６１号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、このような立体視用画像の生成において、例えば鏡面反射率が高いオブジェクトのレンダリングを行うと、左右の仮想カメラの位置の違いから、同じオブジェクトをレンダリングしていても、一方の仮想カメラのレンダリング結果は明度が高いが、もう一方の結果は明度が低いというような事態が生じ得る。このため、左右の仮想カメラのレンダリングの結果の違いにより、立体視における凹凸の認識が困難になったり、色の違う部分がギラギラして見えるなどの問題が生じてしまう。
【０００６】
本発明の幾つかの態様によれば、立体視における視点間での視線ベクトルの方向差を原因とする見づらい画像等が生成されるのを抑制できるプログラム及び画像生成システム等を提供できる。
【課題を解決するための手段】
【０００７】
本発明の一態様は、複数のオブジェクトが配置される仮想空間の設定処理を行う仮想空間設定部と、前記仮想空間において複数の視点から見える複数の視点画像を立体視用画像として生成する表示処理部と、を含み、前記表示処理部は、前記複数の視点の第１視点での第１視点画像を生成する際に、前記第１視点での第１視線ベクトルとは異なる視線ベクトルを用いて仮想視線ベクトルを設定し、前記仮想視線ベクトルを用いたシェーディング処理により、前記第１視点画像を生成する画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【０００８】
本発明の一態様によれば、オブジェクトが配置される仮想空間の設定処理が行われ、この仮想空間において複数の視点から見える複数の視点画像が、立体視用画像として生成される。そして、第１視点での第１視線ベクトルとは異なる視線ベクトルを用いて仮想視線ベクトルが設定され、この仮想視線ベクトルを用いたシェーディング処理により、第１視点画像が生成される。このように第１視線ベクトルとは異なる仮想視線ベクトルを用いたシェーディング処理を行えば、第１視線ベクトルを用いたシェーディング処理において発生するような見づらい画像が生成されるのを抑制できる。従って、立体視における視点間での視線ベクトルの方向差を原因とする見づらい画像等が生成されるのを抑制できる画像生成システム、プログラム等の提供が可能になる。
【０００９】
また本発明の一態様では、前記表示処理部は、前記第１視線ベクトルとは異なる１つの基準視線ベクトルを、前記仮想視線ベクトルに設定し、前記基準視線ベクトルを用いたシェーディング処理により、前記第１視点での前記第１視点画像を生成してもよい。
【００１０】
このようにすれば、第１視線ベクトルとは異なるベクトルとして、１つの基準視線ベクトルを用いて、シェーディング処理を行い、第１視点画像を生成できるようになる。
【００１１】
また本発明の一態様では、前記表示処理部は、前記基準視線ベクトルを用いたシェーディング処理により、第２視点での第２視点画像を生成してもよい。
【００１２】
このようにすれば、同じ１つの基準視線ベクトルを用いたシェーディング処理により、第１視点画像と第２視点画像を生成できるようになる。
【００１３】
また本発明の一態様では、前記基準視線ベクトルは、前記第１視線ベクトルの第１視線方向と、前記第２の視点での第２視線ベクトルの第２視線方向とで規定される視線方向範囲内の視線ベクトルであってもよい。
【００１４】
このようにすれば、視線方向範囲内の視線ベクトルである基準視線ベクトルを用いて、シェーディング処理を行って、第１視点での第１視点画像と第２視点での第２視点画像を生成できるようになる。
【００１５】
また本発明の一態様では、前記表示処理部は、前記第１視線ベクトルと他の視線ベクトルとの合成処理により得られたベクトルを、第１仮想視線ベクトルに設定し、前記第１仮想視線ベクトルを用いたシェーディング処理により、前記第１視点での前記第１視点画像を生成してもよい。
【００１６】
このようにすれば、第１視線ベクトルとは異なるベクトルとして、第１視線ベクトルと他の視線ベクトルとの合成処理により得られた第１仮想視線ベクトルを用いて、シェーディング処理を行い、第１視点画像を生成できるようになる。
【００１７】
また本発明の一態様では、前記表示処理部は、第２視点での第２視線ベクトルと他の視線ベクトルとの合成処理により得られたベクトルを、第２仮想視線ベクトルに設定し、前記第２仮想視線ベクトルを用いたシェーディング処理により、前記第２視点での第２視点画像を生成してもよい。
【００１８】
このようにすれば第１視線ベクトル、第２視線ベクトルと他の視線ベクトルとの合成処理により得られた第１仮想視線ベクトル、第２仮想視線ベクトルを用いて、シェーディング処理を行い、第１視点画像、第２視点画像を生成できるようになる。
【００１９】
また本発明の一態様では、前記表示処理部は、前記第１視線ベクトルと基準視線ベクトルとの合成処理により得られたベクトルを、前記第１仮想視線ベクトルに設定し、前記第２視線ベクトルと前記基準視線ベクトルとの合成処理により得られたベクトルを、前記第２仮想視線ベクトルに設定し、前記基準視線ベクトルは、前記第１視線ベクトルの第１視線方向と、前記第２視線ベクトルの第２視線方向とで規定される視線方向範囲内の視線ベクトルであってもよい。
【００２０】
このようにすれば、第１視線ベクトル、第２視線ベクトルと、視線方向範囲内の視線ベクトルである基準視線ベクトルとの合成処理により、第１仮想視線ベクトル、第２仮想視線ベクトルを設定して、シェーディング処理を実行できるようになる。
【００２１】
また本発明の一態様では、前記合成処理での合成率が可変であってもよい。
【００２２】
このようにすれば、合成処理での合成率を変化させることで、第１仮想視線ベクトル、第２仮想視線ベクトルの方向を変化させて、様々な状況に対応できるようになる。
【００２３】
また本発明の一態様では、前記表示処理部は、前記合成処理での合成率を、ユーザの入力情報、ゲーム状況情報、及び前記仮想空間での視点とオブジェクトとの位置関係情報の少なくとも１つに応じて変化させてもよい。
【００２４】
このようにすれば、ユーザの入力情報、ゲーム状況情報、或いは視点とオブジェクトとの位置関係情報に応じて、合成処理の合成率を変化させることで、第１仮想視線ベクトル、第２仮想視線ベクトルの方向を変化させて、様々な状況に対応できるようになる。
【００２５】
また本発明の一態様では、前記表示処理部は、前記第１視点での前記第１視線ベクトルと第２視点での第２視線ベクトルとのなす角度が所与の角度以上になった場合に、前記仮想視線ベクトルを用いた前記シェーディング処理を行ってもよい。
【００２６】
このようにすれば、第１視線ベクトルと第２視線ベクトルのなす角度が所与の角度以上になり、第１視線ベクトルと第２視線ベクトルの方向差による悪影響が大きくなると考えられる場合に、仮想視線ベクトルを用いたシェーディング処理により、当該悪影響を低減することが可能になる。
【００２７】
また本発明の一態様では、前記表示処理部は、ピクセルシェーダ処理については前記仮想視線ベクトルを用いて行い、頂点シェーダ処理については前記第１視線ベクトルを用いて行ってもよい。
【００２８】
このようにすれば、ピクセルシェーダ処理による各ピクセルの色の描画において、視線ベクトルの方向差を原因とする見づらい画像等が生成されるのを抑制できるようになる。
【００２９】
また本発明の一態様では、前記表示処理部は、レイトレーシング処理の少なくとも一部について前記仮想視線ベクトルを用いて行ってもよい。
【００３０】
このようにすれば、レイトレーシング処理を行う場合に、視線ベクトルの方向差を原因とする見づらい画像等が生成されるのを抑制できるようになる。
【００３１】
また本発明の一態様では、前記表示処理部は、前記仮想視線ベクトルを用いて、照明モデルを用いたシェーディング処理及び輪郭線についてのシェーディング処理の少なくとも１つを行ってもよい。
【００３２】
このようにすれば、照明モデルを用いたシェーディング処理、或いは輪郭線についてのシェーディング処理において、視線ベクトルの方向差を原因とする見づらい画像等が生成されるのを抑制できるようになる。
【図面の簡単な説明】
【００３３】
【図１】本実施形態の画像生成システムの構成例を示すブロック図。
【図２】図２（Ａ）、図２（Ｂ）は照明モデルに基づくシェーディング処理の説明図。
【図３】図３（Ａ）、図３（Ｂ）は視点とオブジェクトとの位置関係に応じた視線ベクトルの方向の変化についての説明図。
【図４】立体視における鏡面反射のシェーディング処理の問題点の説明図。
【図５】図５（Ａ）、図５（Ｂ）は立体視における鏡面反射のシェーディング処理の問題点の説明図。
【図６】立体視における輪郭線のシェーディング処理の問題点の説明図。
【図７】図７（Ａ）、図７（Ｂ）は立体視における輪郭線のシェーディング処理の問題点の説明図。
【図８】基準視線ベクトルを仮想視線ベクトルに設定してシェーディング処理を行う本実施形態の手法の説明図。
【図９】図９（Ａ）〜図９（Ｃ）は基準視線ベクトルについての説明図。
【図１０】左眼用、右眼用の仮想視線ベクトルを設定してシェーディング処理を行う本実施形態の手法の説明図。
【図１１】視線ベクトルの合成処理による仮想視線ベクトルの設定手法の説明図。
【図１２】視線ベクトルの合成処理の合成率を可変にする手法の説明図。
【図１３】図１３（Ａ）、図１３（Ｂ）はユーザの入力情報や視点とオブジェクトの位置関係情報に応じた合成処理の合成率の設定手法の説明図。
【図１４】図１４（Ａ）〜図１４（Ｃ）は本実施形態により生成された左眼用画像、右眼用画像の一例。
【図１５】図１５（Ａ）〜図１５（Ｃ）は視線ベクトルのなす角度が所与の角度以上の場合に仮想視線ベクトルを用いたシェーディング処理を行う手法の説明図。
【図１６】図１６（Ａ）〜図１６（Ｄ）は視線ベクトルの合成処理による仮想視線ベクトルの種々の設定態様についての説明図。
【図１７】図１７（Ａ）〜図１７（Ｃ）は視線ベクトルの合成処理による仮想視線ベクトルの種々の設定態様についての説明図。
【図１８】ピクセルシェーダ処理において仮想視線ベクトルを用いる本実施形態の手法の説明図。
【図１９】レイトレーシング処理において仮想視線ベクトルを用いる本実施形態の手法の説明図。
【図２０】図２０（Ａ）、図２０（Ｂ）は本実施形態の変形例の説明図。
【図２１】本実施形態の処理例を示すフローチャート。
【図２２】本実施形態の処理例を示すフローチャート。
【発明を実施するための形態】
【００３４】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００３５】
１．画像生成システム
図１は、本実施形態の画像生成システム（ゲームシステム、画像生成装置）の構成例を示すブロック図である。なお、本実施形態の画像生成システムは図１の構成に限定されず、その構成要素（各部）の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００３６】
操作部１６０は、ユーザ（プレーヤ）が種々の操作情報（入力情報）を入力するためのものである。操作部１６０は、例えば操作ボタン、方向指示キー、ジョイスティック、ハンドル、ペダル又はレバー等の種々の操作デバイスにより実現できる。
【００３７】
記憶部１７０は各種の情報を記憶する。記憶部１７０は、処理部１００や通信部１９６などのワーク領域として機能する。ゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部１７０に保持される。記憶部１７０の機能は、半導体メモリ（ＤＲＡＭ、ＶＲＡＭ）、ＨＤＤ（ハードディスクドライブ）、ＳＳＤ、光ディスク装置などにより実現できる。記憶部１７０は、オブジェクト情報記憶部１７２、描画バッファ１７８を含む。
【００３８】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＤＶＤ、ＢＤ、ＣＤ）、ＨＤＤ、或いは半導体メモリ（ＲＯＭ）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータ（入力装置、処理部、記憶部、出力部を備える装置）を機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【００３９】
ＨＭＤ２００（頭部装着型表示装置）は、ユーザの頭部に装着されて、ユーザの眼前に画像を表示する装置である。ＨＭＤ２００は非透過型であることが望ましいが、透過型であってもよい。またＨＭＤ２００は、いわゆるメガネタイプのＨＭＤであってもよい。
【００４０】
ＨＭＤ２００は、センサ部２１０、表示部２２０、処理部２４０を含む。なおＨＭＤ２００に発光素子を設ける変形実施も可能である。センサ部２１０は、例えばヘッドトラッキングなどのトラッキング処理を実現するためものである。例えばセンサ部２１０を用いたトラッキング処理により、ＨＭＤ２００の位置、方向を特定する。ＨＭＤ２００の位置、方向が特定されることで、ユーザの視点位置、視線方向を特定できる。即ち、ユーザの視点トラッキングが実現される。
【００４１】
トラッキング方式としては種々の方式を採用できる。トラッキング方式の一例である第１のトラッキング方式では、センサ部２１０として複数の受光素子（フォトダイオード等）を設ける。そして外部に設けられた発光素子（ＬＥＤ等）からの光（レーザー等）をこれらの複数の受光素子により受光することで、現実世界の３次元空間でのＨＭＤ２００（ユーザの頭部）の位置、方向を特定する。第２のトラッキング方式では、複数の発光素子（ＬＥＤ）をＨＭＤ２００に設ける。そして、これらの複数の発光素子からの光を、外部に設けられた撮像部で撮像することで、ＨＭＤ２００の位置、方向を特定する。第３のトラッキング方式では、センサ部２１０としてモーションセンサを設け、このモーションセンサを用いてＨＭＤ２００の位置、方向を特定する。モーションセンサは例えば加速度センサやジャイロセンサなどにより実現できる。例えば３軸の加速度センサと３軸のジャイロセンサを用いた６軸のモーションセンサを用いることで、現実世界の３次元空間でのＨＭＤ２００の位置、方向を特定できる。なお、第１のトラッキング方式と第２のトラッキング方式の組合わせ、或いは第１のトラッキング方式と第３のトラッキング方式の組合わせなどにより、ＨＭＤ２００の位置、方向を特定してもよい。またＨＭＤ２００の位置、方向を特定することでユーザの視点位置、視線方向を特定するのではなく、ユーザの視点位置、視線方向を直接に特定するトラッキング処理を採用してもよい。例えば公知のアイトラッキング、フェイストラッキング又はヘッドトラッキングなどの種々の視点トラッキング手法により、ユーザの視点位置、視線方向などの視点情報を検出できる。
【００４２】
ＨＭＤ２００の表示部２２０は例えば有機ＥＬディスプレイ（ＯＥＬ）や液晶ディスプレイ（ＬＣＤ）などにより実現できる。例えばＨＭＤ２００の表示部２２０には、ユーザの左眼の前に設定される第１のディスプレイ又は第１の表示領域と、右眼の前に設定される第２のディスプレイ又は第２の表示領域が設けられており、立体視表示が可能になっている。立体視表示を行う場合には、例えば視差が異なる左眼用画像と右眼用画像を生成し、第１のディスプレイに左眼用画像を表示し、第２のディスプレイに右眼用画像を表示する。或いは１つのディスプレイの第１の表示領域に左眼用画像を表示し、第２の表示領域に右眼用画像を表示する。またＨＭＤ２００には左眼用、右眼用の２つの接眼レンズ（魚眼レンズ）が設けられており、これによりユーザの視界の全周囲に亘って広がるＶＲ空間が表現される。そして接眼レンズ等の光学系で生じる歪みを補正するための補正処理が、左眼用画像、右眼用画像に対して行われる。この補正処理は表示処理部１２０が行う。
【００４３】
ＨＭＤ２００の処理部２４０は、ＨＭＤ２００において必要な各種の処理を行う。例えば処理部２４０は、センサ部２１０の制御処理や表示部２２０の表示制御処理などを行う。また処理部２４０が、３次元音響（立体音響）処理を行って、３次元的な音の方向や距離や広がりの再現を実現してもよい。
【００４４】
なお、図１では画像生成システムの表示部がＨＭＤ２００である場合の例を示しているが、画像生成システムの表示部はＨＭＤ以外のタイプの表示部であってもよい。例えば画像生成システムの表示部は、立体視用のメガネをかけることで立体視が可能な表示部や、裸眼立体視が可能な表示部などであってもよい。
【００４５】
音出力部１９２は、本実施形態により生成された音を出力するものであり、例えばスピーカ又はヘッドホン等により実現できる。
【００４６】
Ｉ／Ｆ（インターフェース）部１９４は、携帯型情報記憶媒体１９５とのインターフェース処理を行うものであり、その機能はＩ／Ｆ処理用のＡＳＩＣなどにより実現できる。携帯型情報記憶媒体１９５は、ユーザが各種の情報を保存するためのものであり、電源が非供給になった場合にもこれらの情報の記憶を保持する記憶装置である。携帯型情報記憶媒体１９５は、ＩＣカード（メモリカード）、ＵＳＢメモリ、或いは磁気カードなどにより実現できる。
【００４７】
通信部１９６は、有線や無線のネットワークを介して外部（他の装置）との間で通信を行うものであり、その機能は、通信用ＡＳＩＣ又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【００４８】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、サーバ（ホスト装置）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（あるいは記憶部１７０）に配信してもよい。このようなサーバ（ホスト装置）による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【００４９】
処理部１００（プロセッサ）は、操作部１６０からの操作情報や、ＨＭＤ２００でのトラッキング情報（ＨＭＤの位置及び方向の少なくとも一方の情報。視点位置及び視線方向の少なくとも一方の情報）や、プログラムなどに基づいて、ゲーム処理（シミュレーション処理）、仮想空間設定処理、移動体処理、仮想カメラ制御処理、表示処理、或いは音処理などを行う。
【００５０】
処理部１００の各部が行う本実施形態の各処理（各機能）はプロセッサ（ハードウェアを含むプロセッサ）により実現できる。例えば本実施形態の各処理は、プログラム等の情報に基づき動作するプロセッサと、プログラム等の情報を記憶するメモリにより実現できる。プロセッサは、例えば各部の機能が個別のハードウェアで実現されてもよいし、或いは各部の機能が一体のハードウェアで実現されてもよい。例えば、プロセッサはハードウェアを含み、そのハードウェアは、デジタル信号を処理する回路及びアナログ信号を処理する回路の少なくとも一方を含むことができる。例えば、プロセッサは、回路基板に実装された１又は複数の回路装置（例えばＩＣ等）や、１又は複数の回路素子（例えば抵抗、キャパシター等）で構成することもできる。プロセッサは、例えばＣＰＵ（Central Processing Unit）であってもよい。但し、プロセッサはＣＰＵに限定されるものではなく、ＧＰＵ（Graphics Processing Unit）、或いはＤＳＰ（Digital Signal Processor）等、各種のプロセッサを用いることが可能である。またプロセッサはＡＳＩＣによるハードウェア回路であってもよい。またプロセッサは、アナログ信号を処理するアンプ回路やフィルタ回路等を含んでもよい。メモリ（記憶部１７０）は、ＳＲＡＭ、ＤＲＡＭ等の半導体メモリであってもよいし、レジスターであってもよい。或いはハードディスク装置（ＨＤＤ）等の磁気記憶装置であってもよいし、光学ディスク装置等の光学式記憶装置であってもよい。例えば、メモリはコンピュータにより読み取り可能な命令を格納しており、当該命令がプロセッサにより実行されることで、処理部１００の各部の処理（機能）が実現されることになる。ここでの命令は、プログラムを構成する命令セットでもよいし、プロセッサのハードウェア回路に対して動作を指示する命令であってもよい。
【００５１】
処理部１００は、入力処理部１０２、演算処理部１１０、出力処理部１４０を含む。演算処理部１１０は、情報取得部１１１、仮想空間設定部１１２、移動体処理部１１３、仮想カメラ制御部１１４、ゲーム処理部１１５、表示処理部１２０、音処理部１３０を含む。上述したように、これらの各部により実行される本実施形態の各処理は、プロセッサ（或いはプロセッサ及びメモリ）により実現できる。なお、これらの構成要素（各部）の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００５２】
入力処理部１０２は、操作情報やトラッキング情報を受け付ける処理や、記憶部１７０から情報を読み出す処理や、通信部１９６を介して情報を受信する処理を、入力処理として行う。例えば入力処理部１０２は、操作部１６０を用いてユーザが入力した操作情報やＨＭＤ２００のセンサ部２１０等により検出されたトラッキング情報を取得する処理や、読み出し命令で指定された情報を、記憶部１７０から読み出す処理や、外部装置（サーバ等）からネットワークを介して情報を受信する処理を、入力処理として行う。ここで受信処理は、通信部１９６に情報の受信を指示したり、通信部１９６が受信した情報を取得して記憶部１７０に書き込む処理などである。
【００５３】
演算処理部１１０は、各種の演算処理を行う。例えば情報取得処理、仮想空間設定処理、移動体処理、仮想カメラ制御処理、ゲーム処理（シミュレーション処理）、表示処理、或いは音処理などの演算処理を行う。
【００５４】
情報取得部１１１（情報取得処理のプログラムモジュール）は種々の情報の取得処理を行う。例えば情報取得部１１１は、例えばユーザの視点位置や視線方向などの視点トラッキング情報を取得する。例えばＨＭＤ２００のトラッキング情報をユーザの視点トラッキング情報として取得する。
【００５５】
仮想空間設定部１１２（仮想空間設定処理のプログラムモジュール）は、複数のオブジェクトが配置される仮想空間（オブジェクト空間）の設定処理を行う。例えば、移動体（人、ロボット、車、電車、飛行機、船、モンスター又は動物等）、マップ（地形）、建物、観客席、コース（道路）、樹木、壁、水面などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト）を仮想空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。具体的には、記憶部１７０のオブジェクト情報記憶部１７２には、仮想空間でのオブジェクト（パーツオブジェクト）の位置、回転角度、移動速度、移動方向等の情報であるオブジェクト情報がオブジェクト番号に対応づけて記憶される。仮想空間設定部１１２は、例えば各フレーム毎にこのオブジェクト情報を更新する処理などを行う。
【００５６】
移動体処理部１１３（移動体処理のプログラムモジュール）は、仮想空間内で移動する移動体についての種々の処理を行う。例えば仮想空間（オブジェクト空間、ゲーム空間）において移動体を移動させる処理や、移動体を動作させる処理を行う。例えば移動体処理部１１３は、操作部１６０によりユーザが入力した操作情報や、取得されたトラッキング情報や、プログラム（移動・動作アルゴリズム）や、各種データ（モーションデータ）などに基づいて、移動体（モデルオブジェクト）を仮想空間内で移動させたり、移動体を動作（モーション、アニメーション）させる制御処理を行う。具体的には、移動体の移動情報（位置、回転角度、速度、或いは加速度）や動作情報（パーツオブジェクトの位置、或いは回転角度）を、１フレーム（例えば１／６０秒）毎に順次求めるシミュレーション処理を行う。なおフレームは、移動体の移動・動作処理（シミュレーション処理）や画像生成処理を行う時間の単位である。移動体は、例えば実空間のユーザ（プレーヤ）に対応する仮想空間の仮想ユーザ（仮想プレーヤ、アバター）や、或いは当該仮想ユーザが搭乗（操作）する搭乗移動体（操作移動体）などである。
【００５７】
仮想カメラ制御部１１４（仮想カメラ制御処理のプログラムモジュール）は、仮想カメラの制御を行う。例えば視点トラッキングにより取得されたユーザの視点情報のトラッキング情報に基づいて、ユーザの視点変化に追従するように仮想カメラを制御する。例えば本実施形態では、ユーザの視点位置、視線方向の少なくとも１つである視点情報のトラッキング情報（視点トラッキング情報）が取得される。このトラッキング情報は、例えばＨＭＤ２００のトラッキング処理を行うことで取得できる。そして仮想カメラ制御部１１４は、取得されたトラッキング情報（ユーザの視点位置及び視線方向の少なくとも一方の情報）に基づいて仮想カメラの視点位置、視線方向を変化させる。例えば、仮想カメラ制御部１１４は、実空間でのユーザの視点位置、視線方向の変化に応じて、仮想空間での仮想カメラの視点位置、視線方向（位置、姿勢）が変化するように、仮想カメラを設定する。このようにすることで、ユーザの視点情報のトラッキング情報に基づいて、ユーザの視点変化に追従するように仮想カメラを制御できる。
【００５８】
ゲーム処理部１１５（ゲーム処理のプログラムモジュール）は、ユーザがゲームをプレイするための種々のゲーム処理を行う。別の言い方をすれば、ゲーム処理部１１５（シミュレーション処理部）は、ユーザが仮想現実（バーチャルリアリティ）を体験するための種々のシミュレーション処理を実行する。ゲーム処理は、例えば、ゲーム開始条件が満たされた場合にゲームを開始する処理、開始したゲームを進行させる処理、ゲーム終了条件が満たされた場合にゲームを終了する処理、或いはゲーム成績を演算する処理などである。
【００５９】
表示処理部１２０（表示処理のプログラムモジュール）は、ゲーム画像（シミュレーション画像）の表示処理を行う。例えば処理部１００で行われる種々の処理（ゲーム処理、シミュレーション処理）の結果に基づいて描画処理を行い、これにより画像を生成し、ＨＭＤ２００の表示部２２０に表示する。具体的には、座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ（プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）が作成される。そして、この描画データ（プリミティブ面データ）に基づいて、透視変換後（ジオメトリ処理後）のオブジェクト（１又は複数プリミティブ面）を、描画バッファ１７８（フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ）に描画する。これにより、仮想空間において仮想カメラ（左眼用、右眼用の第１、第２の視点）から見える画像が生成される。
【００６０】
なお、表示処理部１２０で行われる描画処理は、頂点シェーダ処理やピクセルシェーダ処理等により実現することができる。この場合には光源処理は、頂点シェーダ処理ではなく、例えばピクセルシェーダ処理において行うことが望ましい。即ち、照明モデルを用いた光源処理のシェーディング処理を、ピクセルシェーダ処理により実現する。
【００６１】
例えば頂点処理では、頂点処理プログラム（頂点シェーダプログラム、第１のシェーダプログラム）に従って、頂点の移動処理や、座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更（更新、調整）する。そして、頂点処理後の頂点データに基づいてラスタライズ（走査変換）が行われ、ポリゴン（プリミティブ）の面とピクセルとが対応づけられる。
【００６２】
またピクセル処理では、ピクセル処理プログラム（ピクセルシェーダプログラム、第２のシェーダプログラム）に従って、テクスチャの読出し（テクスチャマッピング）、色データの設定／変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ１７８に出力（描画）する。即ち、ピクセル処理では、画像情報（色、法線、輝度、α値等）をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、仮想空間内において仮想カメラ（所与の視点）から見える画像が生成される。
【００６３】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン（プリミティブ）の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ（頂点シェーダやピクセルシェーダ）により実現できる。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【００６４】
音処理部１３０（音処理のプログラムモジュール）は、処理部１００で行われる種々の処理の結果に基づいて音処理を行う。具体的には、楽曲（音楽、ＢＧＭ）、効果音、又は音声などのゲーム音を生成し、ゲーム音を音出力部１９２に出力させる。なお音処理部１３０の音処理の一部（例えば３次元音響処理）を、ＨＭＤ２００の処理部２４０により実現してもよい。
【００６５】
出力処理部１４０は各種の情報の出力処理を行う。例えば出力処理部１４０は、記憶部１７０に情報を書き込む処理や、通信部１９６を介して情報を送信する処理を、出力処理として行う。例えば出力処理部１４０は、書き込み命令で指定された情報を、記憶部１７０に書き込む処理や、外部の装置（サーバ等）に対してネットワークを介して情報を送信する処理を行う。送信処理は、通信部１９６に情報の送信を指示したり、送信する情報を通信部１９６に指示する処理などである。
【００６６】
そして本実施形態の画像生成システムは、図１に示すように、仮想空間設定部１１２と表示処理部１２０を含む。
【００６７】
仮想空間設定部１１２は、複数のオブジェクトが配置される仮想空間の設定処理を行う。例えばユーザに対応する移動体のオブジェクトや、敵等の相手の移動体のオブジェクトや、マップや背景を構成するオブジェクトを、仮想空間に配置設定する処理を行う。ユーザに対応する移動体とは、例えば実空間でのユーザの移動に追従して仮想空間において移動するオブジェクト（表示物）である。この移動体は、例えばユーザに対応する仮想ユーザ（アバター）やユーザが搭乗する搭乗移動体などである。
【００６８】
表示処理部１２０は、仮想空間において複数の視点から見える複数の視点画像を立体視用画像として生成する。例えば表示処理部１２０は、仮想空間において立体視（二眼式、多眼式、空間像方式）における第１視点から見える第１視点画像と第２視点から見える第２視点画像を生成する。二眼式立体視を例にとれば、仮想カメラ制御部１１４が、左眼用仮想カメラ及び右眼用仮想カメラの設定を行い、表示処理部１２０が、仮想空間において左眼用仮想カメラから見える左眼用画像と右眼用仮想カメラから見える右眼用画像を生成する。
【００６９】
なお、第１視点画像を生成する第１視点は、例えば二眼式立体視における左眼用、右眼用の仮想カメラの一方の視点であり、第２視点画像を生成する第２視点は、左眼用、右眼用の仮想カメラの他方の視点であるが、本実施形態はこれに限定されない。第１視点画像、第２視点画像を生成する第１視点、第２視点は、多眼式立体視又は空間像方式立体視における視点であってもよい。この場合には、例えばユーザの視点トラッキング情報に基づいて、多眼式立体視又は空間像方式立体視における複数の視点の中から第１視点、第２視点を選択する処理を行えばよい。
【００７０】
また立体視方式としては、二眼分離眼鏡方式や、パララックスバリアやレンティキュラーレンズや、その他、光線の方向を制御することができる光学素子を用いた裸眼方式などの様々な方式を想定できる。二眼分離眼鏡方式としては、例えば偏光眼鏡方式、継時分離方式、色分離方式などがある。偏光眼鏡方式では、例えば奇数ライン、偶数ラインに対して方向の異なる偏向フィルタが交互に取り付けられた表示部２２０（例えば奇数ラインに水平方向の偏向フィルタ、偶数ラインに垂直方向の偏向フィルタが取り付けられた表示部２２０）を用いることで、立体視を実現する。或いは左眼用画像と右眼用画像を特殊な偏光フィルタを有するプロジェクタで投影し、投影画像を偏光眼鏡で見ることで立体視を実現してもよい。また継時分離方式（ページ・フリップ方式）では、表示部２２０に左眼用画像、右眼用画像を所定期間毎（例えば１／１２０秒毎、１／６０秒毎）に交互に表示する。そして、この表示の切り替えに連動して液晶シャッター付きの眼鏡の左眼、右眼の液晶シャッターを交互に開閉することで、立体視を実現する。色分離方式では、例えばアナグリフ画像を生成し、赤青眼鏡等で見ることで、立体視を実現する。また立体視用画像は、サイドバイサイド又はトップアンドボトム又はフレームパッキング等のフォーマットによる画像信号に基づいて、奇数ラインと偶数ラインに左眼用画像と右眼用画像が交互に割り当てられるフィールドシーケンシャル方式の画像として表示されてもよいし、左眼用画像と右眼用画像が所定期間毎に交互に切り替えられるフレームシーケンシャル方式の画像として表示されてもよい。
【００７１】
そして本実施形態では、表示処理部１２０は、複数の視点の第１視点での第１視点画像を生成する際に、第１視点での第１視線ベクトルとは異なる視線ベクトルを用いて仮想視線ベクトル（シェーディング用視線ベクトル）を設定する。そして仮想視線ベクトルを用いたシェーディング処理により、第１視点画像を生成する。
【００７２】
二眼式立体視を例にとれば、表示処理部１２０は、例えば左眼用画像を生成する際に、左眼用の仮想カメラの視線ベクトルとは異なる視線ベクトルを用いて左眼用の仮想視線ベクトルを設定する。そして左眼用の仮想視線ベクトルを用いたシェーディング処理により、左眼用画像を生成する。或いは、右眼用画像を生成する際に、右眼用の仮想カメラの視線ベクトルとは異なる視線ベクトルを用いて右眼用の仮想視線ベクトルを設定する。そして右眼用の仮想視線ベクトルを用いたシェーディング処理により、右眼用画像を生成する。
【００７３】
即ち、通常の立体視では、第１視点画像の生成（レンダリング）を行う際には、第１視点に対応する第１視線ベクトルを用いてシェーディング処理を行う。これに対して本実施形態では、この第１視線ベクトルとは異なる視線ベクトル（広義にはベクトル）を用いて仮想視線ベクトルを設定する。例えば第１視線ベクトルとは異なる視線ベクトル自体を、仮想視線ベクトルに設定したり、当該異なる視線ベクトルと第１視線ベクトルとの合成処理（ベクトル合成）により得られたベクトルを、仮想視線ベクトルに設定する。そして、この仮想視線ベクトルを用いたシェーディング処理により、第１視点画像を生成する。このようにすることで、第１視線ベクトルを用いたシェーディング処理において生じていた不具合の発生を、仮想視線ベクトルを用いたシェーディング処理を行うことで、防止できるようになる。
【００７４】
なお、第１視点については、仮想視線ベクトルを用いたシェーディング処理により、第１視点画像を生成する一方で、第２視点については、仮想視線ベクトルを用いずに、第２視線ベクトルを用いたシェーディング処理により、第２視点画像を生成してもよい。
【００７５】
また表示処理部１２０は、第１視線ベクトルとは異なる１つの基準視線ベクトルを、仮想視線ベクトルに設定する。そして、この基準視線ベクトルを用いたシェーディング処理により、第１視点での第１視点画像を生成する。即ち、第１視線ベクトルと異なる視線ベクトルとして、所与の基準視線ベクトルを用いる。この基準視線ベクトルは、例えば第１視線ベクトル、第２視線ベクトルなど複数の視線ベクトルにより特定されるものであってもよいし、ユーザの視点トラッキング情報（例えばＨＭＤ２００のトラッキング情報）等により特定されるものであってもよい。そして、第１視点での第１視点画像を生成する際には、この１つの基準視線ベクトルを用いてシェーディング処理を行う。
【００７６】
この場合に表示処理部１２０は、例えば基準視線ベクトルを用いたシェーディング処理により、第２視点での第２視点画像を生成する。即ち、基準視線ベクトルを用いたシェーディング処理により、第１視点での第１視点画像を生成すると共に、同じ基準視線ベクトルを用いたシェーディング処理により、第２視点での第１視点画像を生成する。このようにすれば、第１視点画像と第２視点画像が、同じ基準視線ベクトルを用いたシェーディング処理により生成されるため、視点間での視線ベクトルの方向差を原因とするシェーディング処理の不具合を解消できる。
【００７７】
ここで、基準視線ベクトルは、例えば第１視線ベクトルの第１視線方向と、第２の視点での第２視線ベクトルの第２視線方向とで規定される視線方向範囲内の視線ベクトルである。このように基準視線ベクトルは、第１視線ベクトルの第１視線方向と第２視線ベクトルの第２視線方向の間の視線方向の視線ベクトルであってもよいし、第１視線ベクトルと第２視線ベクトルのいずれか一方の視線ベクトルであってもよい。なお、当該視線方向範囲外の視線ベクトルを基準視線ベクトルとして用いる変形実施も可能である。
【００７８】
また表示処理部１２０は、第１視線ベクトルと他の視線ベクトルとの合成処理により得られたベクトルを、第１仮想視線ベクトルに設定する。そして第１仮想視線ベクトルを用いたシェーディング処理により、第１視点での第１視点画像を生成する。例えば、第１視線ベクトルと他の視線ベクトルとの合成処理（ベクトル合成）により、第１視線ベクトルの視線方向と他の視線ベクトルの視線方向の間の視線方向となるような第１仮想視線ベクトルを設定する。このような第１仮想視線ベクトルを用いてシェーディング処理を行えば、第１視線ベクトルを用いてシェーディング処理を行う場合に比べて、視点間での視線ベクトルの方向差を原因とする画像の見づらさ等を低減できるようになる。
【００７９】
また表示処理部１２０は、第２視点での第２視線ベクトルと他の視線ベクトルとの合成処理により得られたベクトルを、第２仮想視線ベクトルに設定する。そして第２仮想視線ベクトルを用いたシェーディング処理により、第２視点での第２視点画像を生成する。このようにすれば、第１視線ベクトルと他の視線ベクトルの合成処理により得られた第１仮想視線ベクトルを用いたシェーディング処理により、第１視点画像が生成されると共に、第２視線ベクトルと他の視線ベクトルの合成処理により得られた第２仮想視線ベクトルを用いたシェーディング処理により、第２視点画像が生成されるようになる。例えば第１仮想視線ベクトルと第２仮想視線ベクトルのなす角度は、第１視線ベクトルと第２視線ベクトルのなす角度よりも小さくなるため、視点間での視線ベクトルの方向差を原因とする画像の見づらさ等を低減できるようになる。なお、第１視線ベクトルの合成対象となる他の視線ベクトルと、第２視線ベクトルの合成対象となる他の視線ベクトルは、同じ視線ベクトルであってもよいし、異なる視線ベクトルであってもよい。
【００８０】
例えば表示処理部１２０は、第１視線ベクトルと基準視線ベクトルとの合成処理により得られたベクトルを、第１仮想視線ベクトルに設定する。また第２視線ベクトルと基準視線ベクトルとの合成処理により得られたベクトルを、第２仮想視線ベクトルに設定する。即ち、第１視線ベクトル、第２視線ベクトルの合成対象となる他の視線ベクトルとして、同じ基準視線ベクトルを用いる。そして、第１視線ベクトル、第２視線ベクトルと基準視線ベクトルとの合成処理により得られた第１仮想視線ベクトル、第２仮想視線ベクトルを用いて、シェーディング処理を行い、第１視点画像、第２視点画像を生成する。
【００８１】
この場合に基準視線ベクトルは、例えば第１視線ベクトルの第１視線方向と、第２視線ベクトルの第２視線方向とで規定される視線方向範囲内の視線ベクトルである。
【００８２】
また本実施形態では、例えば合成処理での合成率が可変になっている。例えば第１視線ベクトルと他の視線ベクトル（基準視線ベクトル等）の合成処理での合成率が可変になっている。また第２視線ベクトルと他の視線ベクトル（基準視線ベクトル等）の合成処理での合成率が可変になっている。即ち表示処理部は、これらの合成処理の合成率が可変になるような設定処理により、第１仮想視線ベクトルや第２仮想視線ベクトルを設定する。
【００８３】
具体的には表示処理部１２０は、合成処理での合成率を、ユーザの入力情報、ゲーム状況情報、及び仮想空間での視点とオブジェクトとの位置関係情報の少なくとも１つに応じて変化させる。
【００８４】
ユーザの入力情報は、例えばユーザが操作部１６０を操作することで入力される情報などである。例えばゲームのオプション設定画面などにおいて入力される情報である。例えば、ユーザの入力情報に基づいて、ユーザが所望するような合成率に設定する。なおユーザの入力情報は、音声による入力情報であってもよいし、タッチパネルディスプレイのタッチ操作等により入力される情報であってもよい。
【００８５】
ゲーム状況情報は、その時点でのゲームの状況を表す情報であり、ゲーム進行に伴い変化する情報である。例えばゲーム状況情報の変化に応じて、視線ベクトルの合成処理の合成率を変化させる。例えばゲーム状況情報は、例えばゲームの進行状況を表す情報や、或いはゲームの達成度（マップのクリア状況、獲得ポイント等）を表す情報などである。例えばプレーヤがゲームをプレイしているステージやマップの情報などである。またゲーム状況情報は、例えば移動体が移動するゲームにおいては、移動体の走行環境などの走行状況を表す情報である。またゲーム状況情報は、キャラクタを用いたゲーム（ＲＰＧゲーム、格闘技ゲーム、アクションゲーム）などでは、ゲームにおけるキャラクタの現在の状況を表す情報や、キャラクタのステータスパラメータ等に基づく情報である。
【００８６】
仮想空間での視点とオブジェクトとの位置関係情報は、仮想空間でのユーザの視点（第１視点、第２視点）とオブジェクトとの距離や方向関係を表す情報である。例えば視点とオブジェクトとの距離に応じて、視線ベクトルの合成処理の合成率を変化させる。
【００８７】
また表示処理部１２０は、第１視点での第１視線ベクトルと第２視点での第２視線ベクトルとのなす角度が所与の角度以上になった場合に、仮想視線ベクトルを用いたシェーディング処理を行う。例えば第１視線ベクトルと第２視線ベクトルのなす角度が所与の角度よりも小さい場合には、第１視線ベクトルを用いたシェーディングにより第１視点画像を生成し、第２視線ベクトルを用いたシェーディングにより第２視点画像を生成する。一方、第１視線ベクトルと第２視線ベクトルのなす角度が、所与の角度以上になった場合には、第１視線ベクトルに代えて、仮想視線ベクトル（基準視線ベクトル、第１仮想視線ベクトル）を用いたシェーディングにより、第１視点画像を生成する。また第２視線ベクトルに代えて、仮想視線ベクトル（基準視線ベクトル、第２仮想視線ベクトル）を用いたシェーディングにより、第２視点画像を生成する。
【００８８】
また表示処理部１２０は、ピクセルシェーダ処理については仮想視線ベクトルを用いて行う。一方、頂点シェーダ処理については各視点による視線ベクトルを用いて行う。なお、本文中で、頂点シェーダにおける視線ベクトルとは、該当視点から見た各頂点の位置を表すベクトルのことであり、射影変換に用いられる頂点座標に相当するものとする。即ち、オブジェクト形状に関係する頂点シェーダ処理については、各視点による視線ベクトルを用いて行う。具体的には、第１視点についての頂点シェーダ処理は第１視線ベクトルを用い、第２視点についての頂点シェーダ処理は第２視線ベクトルを用いる。一方、ピクセルシェーダ処理については、第１視線ベクトルの代わりに、仮想視線ベクトル（基準視線ベクトル、第１仮想視線ベクトル）を用いて、第１視点画像の各ピクセルの色（輝度）を決定する。また第２視線ベクトルの代わりに、仮想視線ベクトル（基準視線ベクトル、第２仮想視線ベクトル）を用いて、第２視点画像の各ピクセルの色（輝度）を決定する。
【００８９】
また表示処理部１２０は、仮想視線ベクトルを用いて、照明モデルを用いたシェーディング処理及び輪郭線についてのシェーディング処理の少なくとも１つを行う。照明モデルを用いたシェーディング処理は、例えばフォンの照明モデルやブリンの照明モデルなどを用いたシェーディング処理であり、例えば鏡面反射等のシェーディング処理である。或いは異方性反射のシェーディング処理などであってもよい。また輪郭線についてのシェーディング処理は、例えばトゥーンシェーディングなどの輪郭を強調するシェーディング処理や、輪郭に画像エフェクトを施すシェーディング処理などである。
【００９０】
また表示処理部１２０は、レイトレーシング処理の少なくとも一部について仮想視線ベクトルを用いて行ってもよい。レイトレーシング処理は、光線追跡法と呼ばれ、視点に届く光線をたどることによって描画する処理である。
【００９１】
２．本実施形態の手法
次に本実施形態の手法について詳細に説明する。なお以下では、二眼式立体視を主に例にとり説明する。例えば第１視点が、左眼用仮想カメラの視点と右眼用仮想カメラの視点の一方の視点であり、第２視点が他方の視点である場合を例にとり説明する。但し本実施形態の手法は、二眼式立体視のみならず、多眼式立体視や空間像方式立体視などにも適用可能である。
【００９２】
２．１  立体視での視線ベクトルの方向の違いに起因する問題点
現実世界での照光現象をシミュレートするための数学的モデルとして、画像生成システムにおいては、種々の照明モデルが用いられる。図２（Ａ）、図２（Ｂ）に照明モデルの例を示す。
【００９３】
図２（Ａ）はフォンの照明モデルを説明する図であり、この照明モデルは下式（１）のように表される。
【００９４】
Ｉ＝Ｋｓｐ×（Ｌ・Ｒ）ｎ×Ｉｓｐ＋Ｋｄｆ×（Ｎ・Ｌ）×Ｉｄｆ＋Ｋａｍ×Ｉａｍ
・・・（１）
ここで、Ｋｓｐ、Ｋｄｆ、Ｋａｍは、各々、鏡面反射光、拡散反射光、環境光についての反射率であり、Ｉｓｐ、Ｉｄｆ、Ｉａｍは、鏡面反射光、拡散反射光、環境光の輝度であり、例えばＲＧＢ値や分光スペクトルで表される。Ｎはオブジェクトの法線ベクトルであり、Ｌは光源ＬＳのライトベクトル（物体表面上の点から光源ＬＳに向かうベクトル）である。Ｒは視線ベクトル（物体表面上の点から視点に向かうベクトル）Ｅの反射ベクトルであり、Ｒ＝−Ｅ＋２（Ｎ・Ｅ）Ｎと表すことができる。ｎは鏡面反射指数である。
【００９５】
このフォンの照明モデルでは、鏡面反射光の強さはライトベクトルＬと反射ベクトルＲの内積のべき乗で表される。従って、ライトベクトルＬと反射ベクトルＲの向きが近くなる場所ほど、鏡面反射光（ハイライト）が強くなる。
【００９６】
図２（Ｂ）はブリン・フォンの照明モデルを説明する図であり、この照明モデルは下式（２）のように表される。
【００９７】
Ｉ＝Ｋｓｐ×（Ｎ・Ｈ）ｎ×Ｉｓｐ＋Ｋｄｆ×（Ｎ・Ｌ）×Ｉｄｆ＋Ｋａｍ×Ｉａｍ
・・・（２）
ここで、Ｈはハーフベクトルであり、Ｈ＝（Ｅ＋Ｌ）／｜Ｅ＋Ｌ｜と表すことができる。このブリン・フォンの照明モデルでは、鏡面反射光の強さは法線ベクトルＮとハーフベクトルＨの内積のべき乗で表される。従って、法線ベクトルＮとハーフベクトルＨの向きが近くなる場所ほど、鏡面反射光が強くなる。
【００９８】
図３（Ａ）、図３（Ｂ）は、左眼用、右眼用の仮想カメラＶＣＬ、ＶＣＲとオブジェクトＯＢの関係を示す図である。図３（Ａ）では、仮想カメラＶＣＬ、ＶＣＲとオブジェクトＯＢの距離が遠くなっており、図３（Ｂ）では当該距離が近くなっている。図３（Ａ）のようにオブジェクトＯＢとの距離が遠い場合には、仮想カメラＶＣＬの視線ベクトルＳＶＬ（広義には第１視線ベクトル、第２視線ベクトルの一方）と仮想カメラＶＣＲの視線ベクトルＳＶＲ（広義には第１視線ベクトル、第２視線ベクトルの他方）のなす角度（輻輳角）は小さい。一方、図３（Ｂ）のようにオブジェクトＯＢとの距離が近い場合には、視線ベクトルＳＶＬと視線ベクトルＳＶＲのなす角度が大きくなる。即ち、図３（Ｂ）のようにオブジェクトＯＢとの距離が近くなるにつれて、視線ベクトルＳＶＬ、ＳＶＲの方向の違いが大きくなる。
【００９９】
例えば図４では、光源ＬＳからの光ＬＶが、オブジェクトＯＢの面（法線ベクトルＮＶの面）で反射しており、左眼用の仮想カメラＶＣＬは、光ＬＶの反射光の方向に沿った線上に位置する。従って、図２（Ａ）等で説明したように、仮想カメラＶＣＬの視点では、鏡面反射光による輝度が非常に高くなり、強いハイライトが見えるようになる。一方、右眼用の仮想カメラＶＣＲは、光ＬＶの反射光の方向に沿った線から外れた位置にある。従って、仮想カメラＶＣＲの視点では、仮想カメラＶＣＬの視点に比べて、鏡面反射光による輝度が低くなる。
【０１００】
このように図４では、仮想カメラＶＣＬとＶＣＲとで、鏡面反射光の輝度が大きく異なってしまい、オブジェクトＯＢの表面がチラチラして見えるなどの問題が生じてしまう。例えば図４のように鏡面反射光の輝度が左眼と右眼で異なる状況は、現実世界においても生じている事象である。しかし、ＣＧにおいては解像度やフレームレートの制約があるため、現実世界の事象を忠実に再現してしまうと、画像がチラチラして見えるなど、見づらさや不快感（いわゆる視野闘争）が強調されてしまうような画像が生成されてしまう。
【０１０１】
図５（Ａ）、図５（Ｂ）は、上記問題を更に詳しく説明する図である。図５（Ａ）では、ハイライトの輪郭が白とびしてつながり、左眼用画像ＩＭＬ、右眼用画像ＩＭＲとで、ハイライトの場所や形状が異なって見えてしまう事態が発生している。このような事態は、図４のように左眼、右眼の視線ベクトルＳＶＬ、ＳＶＲの方向の違いに起因して生じる。そして、このような事態が発生すると、立体視における凹凸の認識がしにくくなり、立体視が難しくなって、立体感が破綻する。
【０１０２】
図５（Ｂ）では、ハイライト部分での輪郭は残っており、凹凸状態は正しく見えているが、左眼用画像ＩＭＬ、右眼用画像ＩＭＲとで、色の違う部分が生じる事態が発生している。このような事態が発生すると、色の違う部分がギラギラして見えてしまう。これは、輝き等を表現する技法にもなる反面、場合によってはユーザに不快感を与えてしまう原因にもなる。
【０１０３】
図６は、輪郭線強調処理等の輪郭線のシェーディング処理の説明図である。この輪郭線のシェーディング処理では、視線ベクトルＳＶＬ、ＳＶＲとオブジェクトＯＢの面の法線ベクトルＮＶが直交する場所を輪郭線として抽出する。そして図７（Ａ）、図７（Ｂ）に示すように、オブジェクトＯＢの輪郭に対して太い輪郭線を描くなどの輪郭線の強調処理を行う。これにより、キャラクタであるオブジェクトＯＢを、漫画やイラスト風の作画でレンダリングするトゥーンシェーディング（Toon shading）が実現される。
【０１０４】
しかしながら、立体視において、このような輪郭線のシェーディング処理であるトゥーンシェーディングを行うと、図７（Ａ）の左眼用画像ＩＭＬと図７（Ｂ）の右眼用画像ＩＭＲとで輪郭線が異なってしまい、ユーザが違和感を感じる事態が発生する。例えば図７（Ａ）のＡ１と図７（Ｂ）のＡ２とでは、頬と右耳の間での輪郭線の有無が異なっている。
【０１０５】
２．２  仮想視線ベクトル
以上のような問題を解決するために本実施形態では、仮想カメラの視線ベクトルの代わりに、仮想視線ベクトルを用いてシェーディング処理を行う手法を採用する。具体的には複数の視点の第１視点での第１視点画像を生成する際に、第１視点での第１視線ベクトルとは異なる視線ベクトルを用いて仮想視線ベクトルを設定し、この仮想視線ベクトルを用いたシェーディング処理（レンダリング処理）により、第１視点画像を生成する。また、第２視点での第２視点画像を生成する際に、第２視点での第２視線ベクトルとは異なる視線ベクトルを用いて仮想視線ベクトルを設定し、この仮想視線ベクトルを用いたシェーディング処理（レンダリング処理）により、第２視点画像を生成する。
【０１０６】
例えば図８では、左眼用の仮想カメラＶＣＬの視線ベクトルＳＶＬ（第１視線ベクトル）とは異なる１つの基準視線ベクトルＲＶを、仮想視線ベクトルＴＶに設定する。そして基準視線ベクトルＲＶ（ＴＶ）を用いたシェーディング処理により、左眼用画像（第１視点画像）を生成する。このように本実施形態では、仮想カメラＶＣＬの視線ベクトルＳＶＬ（第１視線ベクトル）とは異なる視線ベクトル（ＲＶ）を用いて仮想視線ベクトル（ＴＶ）を設定し、この仮想視線ベクトルを用いたシェーディング処理により、左眼用画像（第１視点画像）を生成している。
【０１０７】
また図８において、右眼用の仮想カメラＶＣＲの視線ベクトルＳＶＲ（第２視線ベクトル）とは異なる１つの基準視線ベクトルＲＶを、仮想視線ベクトルＴＶに設定する。そして基準視線ベクトルＲＶ（ＴＶ）を用いたシェーディング処理により、右眼用画像（第２視点画像）を生成する。このように本実施形態では、仮想カメラＶＣＲの視線ベクトルＳＶＲ（第２視線ベクトル）とは異なる視線ベクトル（ＲＶ）を用いて仮想視線ベクトル（ＴＶ）を設定し、この仮想視線ベクトルを用いたシェーディング処理により、右眼用画像（第２視点画像）を生成している。
【０１０８】
なお、左眼用、右眼用の仮想カメラＶＣＬ、ＶＣＲの視点を、各々、第２視点、第１視点としてもよい。即ち、左眼用、右眼用の視線ベクトルＳＶＬ、ＳＶＲを、各々、第２視線ベクトル、第１視線ベクトルとし、左眼用画像、右眼用画像を、各々、第２視点画像、第１視点画像としてもよい。
【０１０９】
このように図８では、１つの基準視線ベクトルＲＶが仮想視線ベクトルＴＶに設定されて、この１つの基準視線ベクトルＲＶを用いたシェーディング処理により、左眼用画像、右眼用画像が生成される。従って、図２（Ａ）、図２（Ｂ）のような照明モデルを用いたシェーディング処理において、鏡面反射光等による輝度が、左眼と右眼とで大きく異なってしまう事態の発生を防止できる。即ち、同じ１つの基準視線ベクトルＲＶを用いたシェーディング処理により左眼用画像も右眼用画像も生成されるため、鏡面反射光等によるシェーディング処理の結果も、左眼用画像と右眼用画像とで同じ結果になる。これにより図５（Ａ）、図５（Ｂ）で説明したような問題が発生するのを防止できるようになる。即ち、図５（Ａ）のように左眼用画像と右眼用画像とでハイライトの場所や形状が異なってしまうような事態の発生を防止できる。また図５（Ｂ）のように色が異なる部分がギラギラして見えるような事態の発生も防止できる。また図６〜図７（Ｂ）の輪郭線のシェーディング処理において、例えば左眼用画像と右眼用画像とで輪郭線が異なってしまうような事態の発生も防止できる。従って、ユーザが感じる見づらさや違和感を軽減できる立体視用画像の生成が可能になる。
【０１１０】
ここで基準視線ベクトルＲＶは、例えば第１視線ベクトルの第１視線方向と第２視線ベクトルの第２視線方向とで規定される視線方向範囲内の視線ベクトルである。例えば図９（Ａ）、図９（Ｂ）に示すように、基準視線ベクトルＲＶは、視線ベクトルＳＶＲの視線方向と視線ベクトルＳＶＬの視線方向とで規定される視線方向範囲ＡＳＤ内の視線ベクトルとなっている。なお図９（Ａ）、図９（Ｂ）では説明の簡素化のために、視線ベクトルＳＶＬとＳＶＲの始点を同じ位置に設定して示している。
【０１１１】
例えば図９（Ａ）では、基準視線ベクトルＲＶは、視線ベクトルＳＶＬと視線ベクトルＳＶＲの間の視線方向のベクトルとなっている。具体的には基準視線ベクトルＲＶは、視線ベクトルＳＶＬ、ＳＶＲの合成ベクトルになっており、視線ベクトルＳＶＬと基準視線ベクトルＲＶのなす角度と、視線ベクトルＳＶＲと基準視線ベクトルＲＶのなす角度は、例えば等しくなっている。
【０１１２】
図９（Ａ）の基準視線ベクトルＲＶとしては、例えばユーザの視点トラッキングにより取得された視線方向のベクトルを用いることができる。例えばＨＭＤのトラッキング処理等によりユーザの視線方向を特定し、特定された視線方向のベクトルを、基準視線ベクトルＲＶとして用いる。このようにすれば、簡素な処理により基準視線ベクトルＲＶを設定できるようになる。
【０１１３】
また図９（Ｂ）に示すように、左眼用の仮想カメラＶＣＬの視線ベクトルＳＶＬを、基準視線ベクトルＲＶに設定してもよい。或いは、逆に、右眼用の仮想カメラＶＣＲの視線ベクトルＳＶＲを、基準視線ベクトルＲＶに設定してもよい。
【０１１４】
図９（Ｂ）の場合には、第１視点、第２視点の両方について仮想視線ベクトルを設定する必要は無く、第１視点、第２視点の一方についてのみ仮想視線ベクトルを設定してシェーディング処理を行うことになる。
【０１１５】
例えば図９（Ｂ）では、左眼用の視線ベクトルＳＶＬを用いたシェーディング処理により、左眼用画像を生成し、視線ベクトルＳＶＲとは異なる基準視線ベクトルＲＶを用いて、右眼用画像を生成している。即ち、右眼の視点についてのみ仮想視線ベクトルである基準視線ベクトルＲＶが設定されて、シェーディング処理が行われ、右眼用画像が生成される。或いは、逆に、右眼用の視線ベクトルＳＶＲを用いたシェーディング処理により、右眼用画像を生成し、視線ベクトルＳＶＬとは異なる基準視線ベクトルＲＶを用いて、左眼用画像を生成してもよい。即ち、左眼の視点についてのみ仮想視線ベクトルである基準視線ベクトルＲＶを設定して、左眼用画像の生成のためのシェーディング処理が行ってもよい。
【０１１６】
なお図９（Ａ）、図９（Ｂ）では、説明の簡素化のために視線ベクトルＳＶＬとＳＶＲの始点を同じ位置に設定して説明しているが、視線ベクトルＳＶＬ、ＳＶＲ、基準視線ベクトルＲＶ、視線方向範囲ＡＳＤの関係は実際には図９（Ｃ）に示すようになっている。
【０１１７】
また本実施形態では、第１視線ベクトルと他の視線ベクトル（例えば基準視線ベクトル）との合成処理により得られたベクトルを、第１仮想視線ベクトルに設定し、第１仮想視線ベクトルを用いたシェーディング処理により、第１視点での第１視点画像を生成してもよい。また第２視線ベクトルと他の視線ベクトル（例えば基準視線ベクトル）との合成処理により得られたベクトルを、第２仮想視線ベクトルに設定し、第２仮想視線ベクトルを用いたシェーディング処理により、第２視点での第２視点画像を生成してもよい。
【０１１８】
例えば図１０では、左眼用の仮想カメラＶＣＬの視線ベクトルＳＶＬ（第１視線ベクトル）と他の視線ベクトルとの合成処理により得られたベクトルが、仮想視線ベクトルＴＶＬ（第１仮想視線ベクトル）に設定されている。そして仮想視線ベクトルＴＶＬを用いたシェーディング処理により、左眼用画像（第１視点画像）が生成される。また右眼用の仮想カメラＶＣＲの視線ベクトルＳＶＲ（第２視線ベクトル）と他の視線ベクトルとの合成処理により得られたベクトルが、仮想視線ベクトルＴＶＲ（第２仮想視線ベクトル）に設定されている。そして仮想視線ベクトルＴＶＲを用いたシェーディング処理により、右眼用画像（第２視点画像）が生成される。
【０１１９】
具体的には図１１に示すように、例えば視線ベクトルＳＶＬと、図９（Ａ）〜図９（Ｃ）で説明した基準視線ベクトルＲＶとの合成処理（ベクトル合成）が行われて、仮想視線ベクトルＴＶＬが設定される。例えば合成率をαとすると、下式（３）の合成処理が行われる。
【０１２０】
ＴＶＬ＝α×ＳＶＬ＋（１−α）×ＲＶ  ・・・（３）
また視線ベクトルＳＶＲと基準視線ベクトルＲＶとの合成処理が行われて、仮想視線ベクトルＴＶＲが設定される。例えば合成率をαとすると、下式（４）の合成処理が行われる。
【０１２１】
ＴＶＲ＝α×ＳＶＲ＋（１−α）×ＲＶ  ・・・（４）
なお、上式（３）と下式（４）の合成率αを互いに異ならせる変形実施も可能である。また合成率の表し方としては種々の変形実施が可能であり、例えばβ＝１−αとなるような関係のβを合成率としてもよい。
【０１２２】
このように図１０、図１１では、視線ベクトルＳＶＬ、ＳＶＲと他の視線ベクトル（ＲＶ等）との合成処理により仮想視線ベクトルＴＶＬ、ＴＶＲが設定（生成）されて、この仮想視線ベクトルＴＶＬ、ＴＶＲを用いたシェーディング処理により、左眼用画像、右眼用画像が生成される。従って、図２（Ａ）、図２（Ｂ）のような照明モデルを用いたシェーディング処理において、鏡面反射光等による輝度が、左眼と右眼とで大きく異なってしまうのを抑制できる。即ち、視線ベクトルＳＶＬ、ＳＶＲに比べて、方向差が少ない仮想視線ベクトルＴＶＬ、ＴＶＲを用いたシェーディング処理により、左眼用画像、右眼用画像が生成されるため、鏡面反射光等によるシェーディング処理の結果を、左眼用画像と右眼用画像とで近づけることが可能になる。これにより図５（Ａ）、図５（Ｂ）で説明したような画像の見づらさや違和感を、視線ベクトルＳＶＬ、ＳＶＲを用いる場合に比べて軽減できる。また図６〜図７（Ｂ）の輪郭線のシェーディング処理において、左眼用画像と右眼用画像とでの輪郭線の画像の相違度合いも低減できる。従って、ユーザが感じる見づらさや違和感を、より軽減できる立体視用画像の生成が可能になる。
【０１２３】
ここで、図１０、図１１に示すように合成処理を行う場合には、この合成処理での合成率を可変にすることが望ましい。例えば上式（３）、（４）の合成率αを任意の値に変化させる。具体的には図１２に示すように、合成処理での合成率を、ユーザの入力情報、ゲーム状況情報、或いは仮想空間での視点とオブジェクトとの位置関係情報に応じて変化させる。
【０１２４】
例えば図１３（Ａ）は、ゲームの各種の設定を行うオプション設定画面の例である。ユーザは、このオプション設定画面において、ゲームの環境や各種条件について、自身の所望する設定を行うことができる。そして図１３（Ａ）では、図１０、図１１で説明した視線ベクトルの合成処理の合成率を、ユーザが設定できるようになっている。例えば図１３（Ａ）の合成率のスライダーを左右に動かすことで、合成率α＝０（０％）からα＝１．０（１００％）に変化させることができる。
【０１２５】
上式（３）、（４）に示すように、α＝１．０（β＝１−α＝０）に設定すれば、通常の視線ベクトルＳＶＬ、ＳＶＲを用いたシェーディング処理が行われて、左眼用画像、右眼用画像が生成される。例えばα＝０．５に設定すれば、視線ベクトルＳＶＬ、ＳＶＲと基準視線ベクトルＲＶが５０％の割合で合成された仮想視線ベクトルＴＶＬ、ＴＶＲを用いたシェーディング処理が行われて、左眼用画像、右眼用画像が生成される。α＝０（β＝１−α＝１．０）に設定すれば、図８の場合と同様に、１つの基準視線ベクトルＲＶが仮想視線ベクトルに設定されてシェーディング処理が行われ、左眼用画像、右眼用画像が生成される。
【０１２６】
このようにすれば、ユーザの好みに応じた仮想視線ベクトルの設定が可能になり、ユーザの入力情報に応じた視線方向に仮想視線ベクトルの方向を設定して、シェーディング処理を行うことが可能になる。例えば図５（Ａ）、図５（Ｂ）で説明したような画像に対して見づらさや違和感を抱かないユーザは、α＝１．０に設定する。これにより、よりリアルな立体視用画像を楽しむことができる。一方、図５（Ａ）、図５（Ｂ）で説明したような画像に対して、見づらさや強い違和感を抱くユーザは、例えばα＝０に設定する。これにより、左眼用画像と右眼用画像でのシェーディング処理の結果が同じになるため、当該ユーザが見づらさや違和感を抱かない立体視用画像を生成できるようになる。或いはα＝０．５に設定することで、見づらさや違和感を、ある程度軽減した立体視用画像を生成できるようになる。
【０１２７】
また合成処理の合成率αをゲーム状況に応じて変化させてもよい。例えばユーザがプレイしているステージやマップなどの状況、ゲームの進行状況、或いはユーザのゲームのステータスなどに応じて、合成処理の合成率を変化させる。例えばハイライト表示される表示物が多いステージやマップなどでは、合成率αを０に近づける設定を行うことで、これらの多数の表示物のハイライト表示による見づらさや違和感を軽減できるようになる。また例えばユーザがゲームの初心者であるか上級者などかに応じて、合成処理の合成率αを変化させることで、ユーザのゲームレベルに応じた合成率αの設定が可能になる。例えば初心者のユーザに対しては、合成率αを０に近づける設定を行う一方で、上級者のプレーヤに対しては、合成率αを１．０に近づける設定を行う。例えば、初心者のユーザは、視線ベクトルの方向差により画像がチラチラして見えるなどの状況が発生するのは望ましくないため、合成率αを０に近づける設定を行う。一方、ゲームを長時間プレイしていて慣れている上級者のプレーヤは、図５（Ａ）、図５（Ｂ）で説明したような画像が表示されても、それほど見づらさや違和感を抱かないでゲームをプレイできると考えられるため、合成率αを１．０に近づける設定を行う。
【０１２８】
また、ユーザの視線をトラッキングすることができるシステムであれば、ユーザがギラギラして見える位置をどのように見ているかによって、合成率αを変化させることもできる。例えば、ギラギラして見える位置をユーザが一定の時間以上何度も見ていることが検出されれば、その表現はユーザにとって好ましいものであると判断し、合成率αを増やす処理を行ってもよい。また逆に、ギラギラして見える位置をユーザが一瞬だけ見てすぐ目を背けるような傾向が検出されれば、その表現はユーザにとって好ましくないものと判断し、合成率αを０に近づける処理を行ってもよい。
【０１２９】
また合成処理の合成率αを、視点とオブジェクトとの位置関係情報に応じて変化させてもよい。例えば図１３（Ｂ）において、距離ＬＶＢは、ユーザの視点（ＶＣＬ、ＶＣＲ）とオブジェクトＯＢの位置関係を表す情報である。例えば図３（Ａ）で説明したように、ユーザの視点とオブジェクトＯＢとの距離ＬＶＢが遠い場合には、視線ベクトルＳＶＬ、ＳＶＲの方向差は小さくなるため、この方向差を原因とする画像の見づらさや違和感の度合いは低い。従って、この場合には、合成率αを１．０に設定したり、１．０に近い値に設定する。一方、図３（Ｂ）で説明したように、ユーザの視点とオブジェクトＯＢとの距離ＬＶＢが近い場合には、視線ベクトルＳＶＬ、ＳＶＲの方向差が大きくなるため、この方向差を原因とする画像の見づらさや違和感の度合いが高くなる。従って、この場合には、合成率αを０に設定したり、０に近い値に設定する。このようにすることで、視点とオブジェクトの位置関係に応じた適切な合成率を設定できるようになる。なお位置関係情報として視点とオブジェクトＯＢとの方向の関係も考慮して合成率を設定してもよい。
【０１３０】
図１４（Ａ）〜図１４（Ｃ）は本実施形態により生成された左眼用画像ＩＭＬ、右眼用画像ＩＭＲの例である。
【０１３１】
図１４（Ａ）は、上式（３）、（４）において合成率αが０に設定されている場合の画像である。この場合には、図８のように１つの基準視線ベクトルが仮想視線ベクトルに設定されて、シェーディング処理が行われ、左眼用画像ＩＭＬ、右眼用画像ＩＭＲが生成される。図１４（Ａ）に示すように、ハイライト部分の場所や形状が、左眼用画像ＩＭＬ、右眼用画像ＩＭＲとで略同一となっており、画像のギラギラ度が０％になる立体視用画像が生成されている。
【０１３２】
図１４（Ｂ）は、合成率αが０．５に設定されている場合の画像である。この場合には、図１１において、視線ベクトルＳＶＬ、ＳＶＲの各々と基準視線ベクトルＲＶとが５０％の割合で合成された仮想視線ベクトルＴＶＬ、ＴＶＲが設定されて、シェーディング処理が行われ、左眼用画像ＩＭＬ、右眼用画像ＩＭＲが生成される。図１４（Ｂ）では、ハイライト部分の場所や形状が、左眼用画像ＩＭＬ、右眼用画像ＩＭＲとで、図１４（Ａ）に比べると異なっており、画像のギラギラ度が５０％になる立体視用画像が生成されている。
【０１３３】
図１４（Ｃ）は、合成率αが１．０に設定されている場合の画像である。この場合には、通常の視線ベクトルＳＶＬ、ＳＶＲを用いてシェーディング処理が行われ、左眼用画像ＩＭＬ、右眼用画像ＩＭＲが生成される。図１４（Ｃ）では、ハイライト部分の場所や形状が、左眼用画像ＩＭＬ、右眼用画像ＩＭＲとで大きく異なっており、画像のギラギラ度が１００％になる立体視用画像が生成されている。このように本実施形態では、合成率αを可変に設定することで、様々な態様の立体視用画像の生成が可能になる。
【０１３４】
例えば図１４（Ａ）では、左眼用画像ＩＭＬと右眼用画像ＩＭＲとで、オブジェクトの対応する面の光沢が同じになる。一方、図１４（Ｃ）では、対応する面の光沢の違いが大きく、ぎらついて見える。更に図１４（Ｃ）では、ハイライトの白とび部分の輪郭が左右で異なる形状になっているため、その部分において立体視の融像（左右像の融合）が破綻を来たし、正しく認識できないことがある。また図１４（Ｂ）は、図１４（Ａ）、図１４（Ｃ）の中間の状態であり、多少ぎらついて見えるが、立体視の融像が破綻するほどではない。ぎらついて見えるのは、実物でも同様であることから、質感の向上にもつながり、合成率を適度に調整することは有意義である。
【０１３５】
２．３  種々の処理例
次に本実施形態の種々の処理例について説明する。本実施形態では、第１視点での第１視線ベクトルと第２視点での第２視線ベクトルとのなす角度が所与の角度以上になった場合に、仮想視線ベクトルを用いたシェーディング処理を行うようにしてもよい。
【０１３６】
例えば図１５（Ａ）では、視線ベクトルＳＶＬ、ＳＶＲのなす角度θが、しきい値である所与の角度θｔよりも小さくなっている。例えばユーザの視点（ＶＣＬ、ＶＣＲ）から遠い距離にオブジェクトＯＢが位置していると、視線ベクトルＳＶＬ、ＳＶＲのなす角度θが小さくなり、θ＜θｔとなる。この場合には、通常の視線ベクトルＳＶＬ、ＳＶＲを用いたシェーディング処理により、左眼用画像、右眼用画像が生成される。これにより例えば図１４（Ｃ）のような左眼用画像ＩＭＬ、右眼用画像ＩＭＲが生成される。但し、オブジェクトＯＢが遠い距離になるため、視線ベクトルＳＶＬ、ＳＶＲの方向差は小さいため、画像のギラギラ度もそれほど高くない。
【０１３７】
一方、図１５（Ｂ）、図１５（Ｃ）では、視線ベクトルＳＶＬ、ＳＶＲのなす角度θが角度θｔ以上になっている。例えばユーザの視点から近い距離にオブジェクトＯＢが位置していると、視線ベクトルＳＶＬ、ＳＶＲのなす角度θが大きくなり、θ≧θｔとなる。この場合には仮想視線ベクトルを用いたシェーディング処理を行う。
【０１３８】
具体的には図１５（Ｂ）では、１つの基準視線ベクトルＲＶが仮想視線ベクトルＴＶに設定されて、シェーディング処理が行われる。これにより、例えば図１４（Ａ）に示すような左眼用画像ＩＭＬ、右眼用画像ＩＭＲが生成される。一方、図１５（Ｃ）では、視線ベクトルＳＶＬ、ＳＶＲと他の視線ベクトルとの合成処理により得られたベクトルが、仮想視線ベクトルＴＶＬ、ＴＶＲに設定されて、シェーディング処理が行われる。これにより、例えば図１４（Ｂ）に示すような左眼用画像ＩＭＬ、右眼用画像ＩＭＲが生成される。
【０１３９】
図１５（Ａ）〜図１５（Ｃ）の手法によれば、例えばユーザの視点とオブジェクトＯＢの距離が離れていて、視線ベクトルＳＶＬ、ＳＶＲの方向差による悪影響が少ない場合には、通常の視線ベクトルＳＶＬ、ＳＶＲを用いたシェーディング処理により、左眼用画像、右眼用画像を生成できるようになり、よりリアルな画像表現を実現できる。一方、ユーザの視点とオブジェクトＯＢの距離が近づいて来て、視線ベクトルＳＶＬ、ＳＶＲの方向差による悪影響が大きくなると考えられる場合には、仮想視線ベクトル（ＴＶ、ＴＶＬ、ＴＶＲ）を用いたシェーディング処理により、左眼用画像、右眼用画像が生成される。これにより、当該悪影響を低減して、より見やすくて違和感の少ない立体視用画像を生成できるようになる。
【０１４０】
さて、図１６（Ａ）では、視線ベクトルＳＶＬ、ＳＶＲのなす角度をθとし、仮想視線ベクトルＴＶＬ、ＴＶＲのなす角度をγとしている。例えば角度θは、ユーザの視点とオブジェクトＯＢの間の距離が遠くなるほど小さくなり、距離が近くなるほど大きくなる。
【０１４１】
この場合に図１６（Ｂ）では、γ＝θの関係が成り立っており、これは図１５（Ａ）、図１４（Ｃ）のように、仮想視線ベクトルを用いずに、視線ベクトルＳＶＬ、ＳＶＲを用いてレンダリング処理を行う場合に相当する。
【０１４２】
一方、図１６（Ｃ）では、θ＜θｔでは、γ＝θとなり、図１６（Ｂ）と同様になっているが、θ≧θｔでは、γ＝θｔに固定（クランプ）される。そして図１５（Ｃ）、図１４（Ｂ）のように、そのなす角度がγ＝θｔに固定された仮想視線ベクトルＴＶＬ、ＴＶＲを用いたレンダリング処理が行われる。仮想視線ベクトルＴＶＬ、ＴＶＲのなす角度γがθｔに固定されることで、ユーザの視点とオブジェクトＯＢの距離が変化した場合にも、角度γは変化しないようになる。従って、仮想視線ベクトルＴＶＬ、ＴＶＲのなす角度γが頻繁に変化して、生成される画像が見づらくなってしまうような事態を防止できる。なお、θ≧θｔで角度γをθｔに固定する手法を採用する場合に、図１６（Ｄ）に示すように、角度γが滑らかにθｔに収束するような制御を行うことが望ましい。
【０１４３】
図１７（Ａ）は、例えばα＝０．５というような所与の値の合成率αで合成処理を行って、仮想視線ベクトルＴＶＬ、ＴＶＲを設定した場合である。即ち、上式（３）、（４）の合成処理において、α＝０．５というような値にして、仮想視線ベクトルＴＶＬ、ＴＶＲを設定し、シェーディング処理を行う場合の例である。これにより図１４（Ｂ）に示すような左眼用画像ＩＭＬ、右眼用画像ＩＭＲが生成される。
【０１４４】
なお、角度θとγの関係を図１７（Ｂ）に示すような関係に設定してもよい。図１７（Ｂ）のようにすれば、図１４（Ｃ）よりも更に画像のギラギラ度を増すことができる。例えば鏡面反射光によるギラギラ度を誇張するような映像表現を狙う場合には、角度θとγに図１７（Ｂ）に示すような関係を成り立たせればよい。
【０１４５】
また、上記に示したような処理は、それぞれを組み合わせて用いてもよい。例えば図１７（Ｃ）に示されるように、図１５において角度θが小さいときにはギラギラ度を誇張するような処理を行い、θが大きくなるとそれを抑制するような処理を行うこともできる。
【０１４６】
また本実施形態では、ピクセルシェーダ処理については、仮想視線ベクトルを用いて行い、頂点シェーダ処理については、仮想視線ベクトルではなく、通常の視線ベクトルを用いて行う。
【０１４７】
例えばDirectX11等に準拠のＧＰＵでは、図１８に示すように、頂点シェーダ３１０で処理を行ってから、ラスタライザ３１８に（Ｘ，Ｙ）座標を渡す前の段階に、ハルシェーダ３１２、テッセレータ３１４、ドメインシェーダ３１６、ジオメトリシェーダ３１７等の各シェーダが追加されている。これらの追加された新たな機能によって、必要に応じて、描画時に頂点を増やしたり、ポリゴンのメッシュを細かく分割したりすることが可能となっている。
【０１４８】
そして本実施形態では、図１８のピクセルシェーダ３２０の処理については、仮想視線ベクトル（ＴＶＬ、ＴＶＲ、ＴＶ）を用いて行い、ピクセルシェーダ３２０よりも前段側の頂点シェーダ３１０等の処理については、通常の視線ベクトルＳＶＬ、ＳＶＲを用いて行う。こうすることで、ピクセルシェーダ３２０での各ピクセルの色の描画において、鏡面反射光が左右の視点で異なって見えてしまうなどの問題の発生を防止できるようになる。
【０１４９】
また本実施形態では、仮想視線ベクトルを用いて、例えば照明モデルを用いたシェーディング処理や、輪郭線についてのシェーディング処理や、或いはレイトレーシング処理（レイトレーシング処理の一部）を行うことができる。例えば図２（Ａ）、図２（Ｂ）、図４で説明した照明モデルを用いたシェーディング処理において、通常の視線ベクトルＳＶＬ、ＳＶＲに代えて、仮想視線ベクトルを用いる。
【０１５０】
また図６〜図７（Ｂ）のトゥーンシェーディングなどの輪郭線についてのシェーディング処理において、通常の視線ベクトルＳＶＬ、ＳＶＲに代えて、仮想視線ベクトルを用いる。例えば輪郭線の抽出処理などを、仮想視線ベクトルを用いて行う。なお、同じくトゥーンシェーディングにおいて、例えば肌色を明暗の２色で塗り分けたい場合に、どちらの色にするかの判定処理において、視線ベクトルＳＶＬ、ＳＶＲの代わりに、仮想視線ベクトルを用いるようにしてもよい。
【０１５１】
また図１９に示すようなレイトレーシング処理において、仮想視線ベクトルを用いてもよい。例えば図１９のレイトレーシング処理では、視点（ＶＣ）に届く光線ＲＡＹをたどることによって、オブジェクトＯＢ１、ＯＢ２についてのピクセルＰＸの色の描画を行う。この場合に本実施形態では、視線ベクトルＳＶの代わりに仮想視線ベクトルを用いてレイトレーシング処理を行うようにしてもよい。
【０１５２】
また本実施形態の手法は種々の変形実施が可能であり、図２０（Ａ）、図２０（Ｂ）にその一例を示す。例えば図２０（Ａ）、図２０（Ｂ）は、キャラクタＯＢＣが剣ＯＢＡを突き出している状態を示している。このとき、図２０（Ａ）に示すように、左眼（ＶＣＬ）と右眼（ＶＣＲ）とで剣ＯＢＡの異なる側面が見えてしまうと、立体視がしにくい状態になってしまう。これを避けるために、剣ＯＢＡが正面向きに近い場合は、図２０（Ｂ）に示すように、強制的に左側又は右側のどちらかに剣ＯＢＡを傾けて、左眼でも右眼でも同じ側面が見える状態にすると、見やすくなる。しかしながら、どちらに傾けるかの判定が、左眼用と右眼用で分かれてしまうと、余計見づらくなってしまう。そのため、この判定に使用する視線ベクトルとして、仮想視線を用いるようにしてもよい。
【０１５３】
また漫画やセルアニメにおいては、髪型の関係で、正面顔が描かれないようなキャラクタが、しばしば登場する。このようなキャラクタをＣＧモデル化した場合に、見慣れない正面顔を避けるために、図２０（Ａ）、図２０（Ｂ）の場合と同様に、キャラクタを、どちらかに強制的に傾ける処理を行う場合がある。このような場合の判定に使用する視線ベクトルについても、仮想視線ベクトルを用いることが望ましい。
【０１５４】
３．詳細な処理
次に本実施形態の詳細な処理例について図２１、図２２のフローチャートを用いて説明する。
【０１５５】
図２１に示すように、ユーザの入力情報、ゲーム状況情報又は視点とオブジェクトの位置関係情報等に基づいて、合成処理の合成率を設定する（ステップＳ１）。即ち、図１２〜図１３（Ｂ）で説明したような合成率の設定処理を行う。そして仮想空間へのオブジェクトの配置設定処理を行う（ステップＳ２）。例えばユーザの操作情報に基づいて、ゲーム演算処理や移動体の移動演算処理を行い、各フレームでのオブジェクトの配置位置を決定して、オブジェクト空間に配置設定する。
【０１５６】
次に左眼用仮想カメラ、右眼用仮想カメラの設定を行う（ステップＳ３）。例えば、視点トラッキングなどにより求められた基準仮想カメラの位置、方向等に基づいて、左眼用仮想カメラ、右眼用仮想カメラの位置、方向を設定する。そして、左眼用ビューボリューム（視錐台）を視界に設定して、描画処理を行う（ステップＳ４、Ｓ５）。これにより左眼用仮想カメラから見える画像である左眼用画像が生成される。また右眼用ビューボリュームを視界に設定して、描画処理を行う（ステップＳ６、Ｓ７）。これにより右眼用仮想カメラから見える画像である右眼用画像が生成される。なお、処理系によっては、ステップＳ４とＳ６の処理を行った後に、ステップＳ５とＳ７の処理を行う場合もある。
【０１５７】
図２２は、図２１のステップＳ５、Ｓ７の描画処理の詳細例を示すフローチャートである。まず図２１のステップＳ１で設定された合成率等に基づいて、仮想視線ベクトルを設定する（ステップＳ１１）。即ち図１０、図１１に示すように仮想視線ベクトルＴＶＬ、ＴＶＲを設定する。そして仮想カメラの視線ベクトルを用いた頂点シェーダ処理等を実行する（ステップＳ１２）。次に仮想視線ベクトルを用いたピクセルシェーダ処理を実行する（ステップＳ１３）。即ち図１８の頂点シェーダ３１０等の処理は、仮想カメラの視線ベクトルを用いて行い、ピクセルシェーダ３２０の処理は、仮想視線ベクトルを用いて行う。
【０１５８】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語（第１視点、第２視点、第１視線ベクトル、第２視線ベクトル、第１視点画像、第２視点画像等）と共に記載された用語（左眼用仮想カメラの視点、右眼用仮想カメラの視点、左眼用仮想カメラの視線ベクトル、右眼用仮想カメラの視線ベクトル、左眼用画像、右眼用画像等）は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また仮想空間の設定処理、立体視用画像の生成処理、仮想視線ベクトルの設定処理、視線ベクトルの合成処理、シェーディング処理等も、本実施形態で説明したものに限定されず、これらと均等な手法・処理・構成も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲーム装置、家庭用ゲーム装置、又は多数のユーザが参加する大型アトラクションシステム等の種々の画像生成システムに適用できる。
【０１５９】
なお、本発明は上記で説明してきた２眼式の立体表示システムに限らず、多眼式や空間像方式の立体表示システムにも応用が可能である。多眼式及び空間像方式では、２眼式よりも同時に観察可能な回り込みの範囲が広く、場合によっては複数人で観測することもある。そのとき、多眼式であれば、複数の視点位置全てにおいて基準視線ベクトルを設定し、それを各視点画像に適用してもよいし、基準視線ベクトルと各視線ベクトルから、それぞれの仮想視線ベクトルを決定した上で、それを各視点画像に適用してもよい。また、空間像方式の場合には、そもそも仮想カメラ（視点位置）が想定されていない場合もある（前述の特許文献２参照）。その場合も各ピクセル単位での視線ベクトルは存在するので、輝度の計算時にのみ、その視線ベクトルに代えて共通の基準視線ベクトルを適用して、各ピクセルの輝度を求めてもよいし、基準視線ベクトルと各視線ベクトルからそれぞれの仮想視線ベクトルを決定した上で、それを各ピクセルの輝度計算に適用してもよい。
【０１６０】
但し、あまりに広い回り込み範囲に共通の仮想視線ベクトルを適用すると、陰影の付き方がかえって不自然となることもあり得る。そこで例えば、各観察者のヘッドトラッキングを行った上で、一人一人の観察者に相当する仮想視点については共通の基準視線ベクトルを設定するようにしてもよい。
【符号の説明】
【０１６１】
ＶＣＬ  左眼用仮想カメラ、ＶＣＲ  右眼用仮想カメラ、
ＳＶＬ、ＳＶＲ  視線ベクトル、ＴＶＬ、ＴＶＲ、ＴＶ  仮想視線ベクトル、
ＲＶ  基準視線ベクトル、ＡＳＤ  視線方向範囲、α  合成率、
ＯＢ、ＯＢ１、ＯＢ２  オブジェクト、ＩＭＬ  左眼用画像、ＩＭＲ  右眼用画像、
ＬＳ  光源、ＮＶ  法線ベクトル、
１００  処理部、１０２  入力処理部、１１０  演算処理部、１１１  情報取得部、
１１２  仮想空間設定部、１１３  移動体処理部、１１４  仮想カメラ制御部、
１１５  ゲーム処理部、１２０  表示処理部、１３０  音処理部、
１４０  出力処理部、１６０  操作部、
１７０  記憶部、１７２  オブジェクト情報記憶部、１７８  描画バッファ、
１８０  情報記憶媒体、１９２  音出力部、１９４  Ｉ／Ｆ部、
１９５  携帯型情報記憶媒体、１９６  通信部、
２００  ＨＭＤ（頭部装着型表示装置）、２１０  センサ部、
２２０  表示部、２４０  処理部
【図１】
2018112885.tif 000003
【図２】
2018112885.tif 000004
【図３】
2018112885.tif 000005
【図４】
2018112885.tif 000006
【図５】
2018112885.tif 000007
【図６】
2018112885.tif 000008
【図７】
2018112885.tif 000009
【図８】
2018112885.tif 000010
【図９】
2018112885.tif 000011
【図１０】
2018112885.tif 000012
【図１１】
2018112885.tif 000013
【図１２】
2018112885.tif 000014
【図１３】
2018112885.tif 000015
【図１４】
2018112885.tif 000016
【図１５】
2018112885.tif 000017
【図１６】
2018112885.tif 000018
【図１７】
2018112885.tif 000019
【図１８】
2018112885.tif 000020
【図１９】
2018112885.tif 000021
【図２０】
2018112885.tif 000022
【図２１】
2018112885.tif 000023
【図２２】
2018112885.tif 000024