JP2018112885A - プログラム及び画像生成システム - Google Patents

プログラム及び画像生成システム Download PDF

Info

Publication number
JP2018112885A
JP2018112885A JP2017002775A JP2017002775A JP2018112885A JP 2018112885 A JP2018112885 A JP 2018112885A JP 2017002775 A JP2017002775 A JP 2017002775A JP 2017002775 A JP2017002775 A JP 2017002775A JP 2018112885 A JP2018112885 A JP 2018112885A
Authority
JP
Japan
Prior art keywords
line
sight vector
viewpoint
sight
vector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017002775A
Other languages
English (en)
Inventor
征基 勝山
Masaki Katsuyama
征基 勝山
史郎 谷
Shiro Tani
史郎 谷
石井 源久
Motohisa Ishii
源久 石井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bandai Namco Entertainment Inc
Bandai Namco Studios Inc
Original Assignee
Bandai Namco Entertainment Inc
Bandai Namco Studios Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bandai Namco Entertainment Inc, Bandai Namco Studios Inc filed Critical Bandai Namco Entertainment Inc
Priority to JP2017002775A priority Critical patent/JP2018112885A/ja
Publication of JP2018112885A publication Critical patent/JP2018112885A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)

Abstract

【課題】立体視における視点間での視線ベクトルの方向差を原因とする見づらい画像等が生成されるのを抑制できるプログラム及び画像生成システム等を提供できる。
【解決手段】画像生成システムは、複数のオブジェクトが配置される仮想空間の設定処理を行う仮想空間設定部と、仮想空間において複数の視点から見える複数の視点画像を立体視用画像として生成する表示処理部を含む。表示処理部は、複数の視点の第1視点での第1視点画像を生成する際に、第1視点での第1視線ベクトルとは異なる視線ベクトルを用いて仮想視線ベクトルを設定し、仮想視線ベクトルを用いたシェーディング処理により、第1視点画像を生成する。
【選択図】図10

Description

本発明は、プログラム及び画像生成システム等に関する。
従来より、立体視用画像を生成する画像生成システムが知られている。このような画像生成システムの従来技術としては特許文献1、2に開示される技術がある。
例えば、二眼式の立体視用画像の生成システムでは、仮想空間内の左眼視点、右眼視点に対応する位置に左眼用仮想カメラ、右眼用仮想カメラを設定して、各仮想カメラでのレンダリング処理を行うことで、左眼用画像、右眼用画像を生成する。
特開2002−77940号公報 特許第4672461号
しかしながら、このような立体視用画像の生成において、例えば鏡面反射率が高いオブジェクトのレンダリングを行うと、左右の仮想カメラの位置の違いから、同じオブジェクトをレンダリングしていても、一方の仮想カメラのレンダリング結果は明度が高いが、もう一方の結果は明度が低いというような事態が生じ得る。このため、左右の仮想カメラのレンダリングの結果の違いにより、立体視における凹凸の認識が困難になったり、色の違う部分がギラギラして見えるなどの問題が生じてしまう。
本発明の幾つかの態様によれば、立体視における視点間での視線ベクトルの方向差を原因とする見づらい画像等が生成されるのを抑制できるプログラム及び画像生成システム等を提供できる。
本発明の一態様は、複数のオブジェクトが配置される仮想空間の設定処理を行う仮想空間設定部と、前記仮想空間において複数の視点から見える複数の視点画像を立体視用画像として生成する表示処理部と、を含み、前記表示処理部は、前記複数の視点の第1視点での第1視点画像を生成する際に、前記第1視点での第1視線ベクトルとは異なる視線ベクトルを用いて仮想視線ベクトルを設定し、前記仮想視線ベクトルを用いたシェーディング処理により、前記第1視点画像を生成する画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
本発明の一態様によれば、オブジェクトが配置される仮想空間の設定処理が行われ、この仮想空間において複数の視点から見える複数の視点画像が、立体視用画像として生成される。そして、第1視点での第1視線ベクトルとは異なる視線ベクトルを用いて仮想視線ベクトルが設定され、この仮想視線ベクトルを用いたシェーディング処理により、第1視点画像が生成される。このように第1視線ベクトルとは異なる仮想視線ベクトルを用いたシェーディング処理を行えば、第1視線ベクトルを用いたシェーディング処理において発生するような見づらい画像が生成されるのを抑制できる。従って、立体視における視点間での視線ベクトルの方向差を原因とする見づらい画像等が生成されるのを抑制できる画像生成システム、プログラム等の提供が可能になる。
また本発明の一態様では、前記表示処理部は、前記第1視線ベクトルとは異なる1つの基準視線ベクトルを、前記仮想視線ベクトルに設定し、前記基準視線ベクトルを用いたシェーディング処理により、前記第1視点での前記第1視点画像を生成してもよい。
このようにすれば、第1視線ベクトルとは異なるベクトルとして、1つの基準視線ベクトルを用いて、シェーディング処理を行い、第1視点画像を生成できるようになる。
また本発明の一態様では、前記表示処理部は、前記基準視線ベクトルを用いたシェーディング処理により、第2視点での第2視点画像を生成してもよい。
このようにすれば、同じ1つの基準視線ベクトルを用いたシェーディング処理により、第1視点画像と第2視点画像を生成できるようになる。
また本発明の一態様では、前記基準視線ベクトルは、前記第1視線ベクトルの第1視線方向と、前記第2の視点での第2視線ベクトルの第2視線方向とで規定される視線方向範囲内の視線ベクトルであってもよい。
このようにすれば、視線方向範囲内の視線ベクトルである基準視線ベクトルを用いて、シェーディング処理を行って、第1視点での第1視点画像と第2視点での第2視点画像を生成できるようになる。
また本発明の一態様では、前記表示処理部は、前記第1視線ベクトルと他の視線ベクトルとの合成処理により得られたベクトルを、第1仮想視線ベクトルに設定し、前記第1仮想視線ベクトルを用いたシェーディング処理により、前記第1視点での前記第1視点画像を生成してもよい。
このようにすれば、第1視線ベクトルとは異なるベクトルとして、第1視線ベクトルと他の視線ベクトルとの合成処理により得られた第1仮想視線ベクトルを用いて、シェーディング処理を行い、第1視点画像を生成できるようになる。
また本発明の一態様では、前記表示処理部は、第2視点での第2視線ベクトルと他の視線ベクトルとの合成処理により得られたベクトルを、第2仮想視線ベクトルに設定し、前記第2仮想視線ベクトルを用いたシェーディング処理により、前記第2視点での第2視点画像を生成してもよい。
このようにすれば第1視線ベクトル、第2視線ベクトルと他の視線ベクトルとの合成処理により得られた第1仮想視線ベクトル、第2仮想視線ベクトルを用いて、シェーディング処理を行い、第1視点画像、第2視点画像を生成できるようになる。
また本発明の一態様では、前記表示処理部は、前記第1視線ベクトルと基準視線ベクトルとの合成処理により得られたベクトルを、前記第1仮想視線ベクトルに設定し、前記第2視線ベクトルと前記基準視線ベクトルとの合成処理により得られたベクトルを、前記第2仮想視線ベクトルに設定し、前記基準視線ベクトルは、前記第1視線ベクトルの第1視線方向と、前記第2視線ベクトルの第2視線方向とで規定される視線方向範囲内の視線ベクトルであってもよい。
このようにすれば、第1視線ベクトル、第2視線ベクトルと、視線方向範囲内の視線ベクトルである基準視線ベクトルとの合成処理により、第1仮想視線ベクトル、第2仮想視線ベクトルを設定して、シェーディング処理を実行できるようになる。
また本発明の一態様では、前記合成処理での合成率が可変であってもよい。
このようにすれば、合成処理での合成率を変化させることで、第1仮想視線ベクトル、第2仮想視線ベクトルの方向を変化させて、様々な状況に対応できるようになる。
また本発明の一態様では、前記表示処理部は、前記合成処理での合成率を、ユーザの入力情報、ゲーム状況情報、及び前記仮想空間での視点とオブジェクトとの位置関係情報の少なくとも1つに応じて変化させてもよい。
このようにすれば、ユーザの入力情報、ゲーム状況情報、或いは視点とオブジェクトとの位置関係情報に応じて、合成処理の合成率を変化させることで、第1仮想視線ベクトル、第2仮想視線ベクトルの方向を変化させて、様々な状況に対応できるようになる。
また本発明の一態様では、前記表示処理部は、前記第1視点での前記第1視線ベクトルと第2視点での第2視線ベクトルとのなす角度が所与の角度以上になった場合に、前記仮想視線ベクトルを用いた前記シェーディング処理を行ってもよい。
このようにすれば、第1視線ベクトルと第2視線ベクトルのなす角度が所与の角度以上になり、第1視線ベクトルと第2視線ベクトルの方向差による悪影響が大きくなると考えられる場合に、仮想視線ベクトルを用いたシェーディング処理により、当該悪影響を低減することが可能になる。
また本発明の一態様では、前記表示処理部は、ピクセルシェーダ処理については前記仮想視線ベクトルを用いて行い、頂点シェーダ処理については前記第1視線ベクトルを用いて行ってもよい。
このようにすれば、ピクセルシェーダ処理による各ピクセルの色の描画において、視線ベクトルの方向差を原因とする見づらい画像等が生成されるのを抑制できるようになる。
また本発明の一態様では、前記表示処理部は、レイトレーシング処理の少なくとも一部について前記仮想視線ベクトルを用いて行ってもよい。
このようにすれば、レイトレーシング処理を行う場合に、視線ベクトルの方向差を原因とする見づらい画像等が生成されるのを抑制できるようになる。
また本発明の一態様では、前記表示処理部は、前記仮想視線ベクトルを用いて、照明モデルを用いたシェーディング処理及び輪郭線についてのシェーディング処理の少なくとも1つを行ってもよい。
このようにすれば、照明モデルを用いたシェーディング処理、或いは輪郭線についてのシェーディング処理において、視線ベクトルの方向差を原因とする見づらい画像等が生成されるのを抑制できるようになる。
本実施形態の画像生成システムの構成例を示すブロック図。 図2(A)、図2(B)は照明モデルに基づくシェーディング処理の説明図。 図3(A)、図3(B)は視点とオブジェクトとの位置関係に応じた視線ベクトルの方向の変化についての説明図。 立体視における鏡面反射のシェーディング処理の問題点の説明図。 図5(A)、図5(B)は立体視における鏡面反射のシェーディング処理の問題点の説明図。 立体視における輪郭線のシェーディング処理の問題点の説明図。 図7(A)、図7(B)は立体視における輪郭線のシェーディング処理の問題点の説明図。 基準視線ベクトルを仮想視線ベクトルに設定してシェーディング処理を行う本実施形態の手法の説明図。 図9(A)〜図9(C)は基準視線ベクトルについての説明図。 左眼用、右眼用の仮想視線ベクトルを設定してシェーディング処理を行う本実施形態の手法の説明図。 視線ベクトルの合成処理による仮想視線ベクトルの設定手法の説明図。 視線ベクトルの合成処理の合成率を可変にする手法の説明図。 図13(A)、図13(B)はユーザの入力情報や視点とオブジェクトの位置関係情報に応じた合成処理の合成率の設定手法の説明図。 図14(A)〜図14(C)は本実施形態により生成された左眼用画像、右眼用画像の一例。 図15(A)〜図15(C)は視線ベクトルのなす角度が所与の角度以上の場合に仮想視線ベクトルを用いたシェーディング処理を行う手法の説明図。 図16(A)〜図16(D)は視線ベクトルの合成処理による仮想視線ベクトルの種々の設定態様についての説明図。 図17(A)〜図17(C)は視線ベクトルの合成処理による仮想視線ベクトルの種々の設定態様についての説明図。 ピクセルシェーダ処理において仮想視線ベクトルを用いる本実施形態の手法の説明図。 レイトレーシング処理において仮想視線ベクトルを用いる本実施形態の手法の説明図。 図20(A)、図20(B)は本実施形態の変形例の説明図。 本実施形態の処理例を示すフローチャート。 本実施形態の処理例を示すフローチャート。
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.画像生成システム
図1は、本実施形態の画像生成システム(ゲームシステム、画像生成装置)の構成例を示すブロック図である。なお、本実施形態の画像生成システムは図1の構成に限定されず、その構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
操作部160は、ユーザ(プレーヤ)が種々の操作情報(入力情報)を入力するためのものである。操作部160は、例えば操作ボタン、方向指示キー、ジョイスティック、ハンドル、ペダル又はレバー等の種々の操作デバイスにより実現できる。
記憶部170は各種の情報を記憶する。記憶部170は、処理部100や通信部196などのワーク領域として機能する。ゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部170に保持される。記憶部170の機能は、半導体メモリ(DRAM、VRAM)、HDD(ハードディスクドライブ)、SSD、光ディスク装置などにより実現できる。記憶部170は、オブジェクト情報記憶部172、描画バッファ178を含む。
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(DVD、BD、CD)、HDD、或いは半導体メモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータ(入力装置、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
HMD200(頭部装着型表示装置)は、ユーザの頭部に装着されて、ユーザの眼前に画像を表示する装置である。HMD200は非透過型であることが望ましいが、透過型であってもよい。またHMD200は、いわゆるメガネタイプのHMDであってもよい。
HMD200は、センサ部210、表示部220、処理部240を含む。なおHMD200に発光素子を設ける変形実施も可能である。センサ部210は、例えばヘッドトラッキングなどのトラッキング処理を実現するためものである。例えばセンサ部210を用いたトラッキング処理により、HMD200の位置、方向を特定する。HMD200の位置、方向が特定されることで、ユーザの視点位置、視線方向を特定できる。即ち、ユーザの視点トラッキングが実現される。
トラッキング方式としては種々の方式を採用できる。トラッキング方式の一例である第1のトラッキング方式では、センサ部210として複数の受光素子(フォトダイオード等)を設ける。そして外部に設けられた発光素子(LED等)からの光(レーザー等)をこれらの複数の受光素子により受光することで、現実世界の3次元空間でのHMD200(ユーザの頭部)の位置、方向を特定する。第2のトラッキング方式では、複数の発光素子(LED)をHMD200に設ける。そして、これらの複数の発光素子からの光を、外部に設けられた撮像部で撮像することで、HMD200の位置、方向を特定する。第3のトラッキング方式では、センサ部210としてモーションセンサを設け、このモーションセンサを用いてHMD200の位置、方向を特定する。モーションセンサは例えば加速度センサやジャイロセンサなどにより実現できる。例えば3軸の加速度センサと3軸のジャイロセンサを用いた6軸のモーションセンサを用いることで、現実世界の3次元空間でのHMD200の位置、方向を特定できる。なお、第1のトラッキング方式と第2のトラッキング方式の組合わせ、或いは第1のトラッキング方式と第3のトラッキング方式の組合わせなどにより、HMD200の位置、方向を特定してもよい。またHMD200の位置、方向を特定することでユーザの視点位置、視線方向を特定するのではなく、ユーザの視点位置、視線方向を直接に特定するトラッキング処理を採用してもよい。例えば公知のアイトラッキング、フェイストラッキング又はヘッドトラッキングなどの種々の視点トラッキング手法により、ユーザの視点位置、視線方向などの視点情報を検出できる。
HMD200の表示部220は例えば有機ELディスプレイ(OEL)や液晶ディスプレイ(LCD)などにより実現できる。例えばHMD200の表示部220には、ユーザの左眼の前に設定される第1のディスプレイ又は第1の表示領域と、右眼の前に設定される第2のディスプレイ又は第2の表示領域が設けられており、立体視表示が可能になっている。立体視表示を行う場合には、例えば視差が異なる左眼用画像と右眼用画像を生成し、第1のディスプレイに左眼用画像を表示し、第2のディスプレイに右眼用画像を表示する。或いは1つのディスプレイの第1の表示領域に左眼用画像を表示し、第2の表示領域に右眼用画像を表示する。またHMD200には左眼用、右眼用の2つの接眼レンズ(魚眼レンズ)が設けられており、これによりユーザの視界の全周囲に亘って広がるVR空間が表現される。そして接眼レンズ等の光学系で生じる歪みを補正するための補正処理が、左眼用画像、右眼用画像に対して行われる。この補正処理は表示処理部120が行う。
HMD200の処理部240は、HMD200において必要な各種の処理を行う。例えば処理部240は、センサ部210の制御処理や表示部220の表示制御処理などを行う。また処理部240が、3次元音響(立体音響)処理を行って、3次元的な音の方向や距離や広がりの再現を実現してもよい。
なお、図1では画像生成システムの表示部がHMD200である場合の例を示しているが、画像生成システムの表示部はHMD以外のタイプの表示部であってもよい。例えば画像生成システムの表示部は、立体視用のメガネをかけることで立体視が可能な表示部や、裸眼立体視が可能な表示部などであってもよい。
音出力部192は、本実施形態により生成された音を出力するものであり、例えばスピーカ又はヘッドホン等により実現できる。
I/F(インターフェース)部194は、携帯型情報記憶媒体195とのインターフェース処理を行うものであり、その機能はI/F処理用のASICなどにより実現できる。携帯型情報記憶媒体195は、ユーザが各種の情報を保存するためのものであり、電源が非供給になった場合にもこれらの情報の記憶を保持する記憶装置である。携帯型情報記憶媒体195は、ICカード(メモリカード)、USBメモリ、或いは磁気カードなどにより実現できる。
通信部196は、有線や無線のネットワークを介して外部(他の装置)との間で通信を行うものであり、その機能は、通信用ASIC又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバ(ホスト装置)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(あるいは記憶部170)に配信してもよい。このようなサーバ(ホスト装置)による情報記憶媒体の使用も本発明の範囲内に含めることができる。
処理部100(プロセッサ)は、操作部160からの操作情報や、HMD200でのトラッキング情報(HMDの位置及び方向の少なくとも一方の情報。視点位置及び視線方向の少なくとも一方の情報)や、プログラムなどに基づいて、ゲーム処理(シミュレーション処理)、仮想空間設定処理、移動体処理、仮想カメラ制御処理、表示処理、或いは音処理などを行う。
処理部100の各部が行う本実施形態の各処理(各機能)はプロセッサ(ハードウェアを含むプロセッサ)により実現できる。例えば本実施形態の各処理は、プログラム等の情報に基づき動作するプロセッサと、プログラム等の情報を記憶するメモリにより実現できる。プロセッサは、例えば各部の機能が個別のハードウェアで実現されてもよいし、或いは各部の機能が一体のハードウェアで実現されてもよい。例えば、プロセッサはハードウェアを含み、そのハードウェアは、デジタル信号を処理する回路及びアナログ信号を処理する回路の少なくとも一方を含むことができる。例えば、プロセッサは、回路基板に実装された1又は複数の回路装置(例えばIC等)や、1又は複数の回路素子(例えば抵抗、キャパシター等)で構成することもできる。プロセッサは、例えばCPU(Central Processing Unit)であってもよい。但し、プロセッサはCPUに限定されるものではなく、GPU(Graphics Processing Unit)、或いはDSP(Digital Signal Processor)等、各種のプロセッサを用いることが可能である。またプロセッサはASICによるハードウェア回路であってもよい。またプロセッサは、アナログ信号を処理するアンプ回路やフィルタ回路等を含んでもよい。メモリ(記憶部170)は、SRAM、DRAM等の半導体メモリであってもよいし、レジスターであってもよい。或いはハードディスク装置(HDD)等の磁気記憶装置であってもよいし、光学ディスク装置等の光学式記憶装置であってもよい。例えば、メモリはコンピュータにより読み取り可能な命令を格納しており、当該命令がプロセッサにより実行されることで、処理部100の各部の処理(機能)が実現されることになる。ここでの命令は、プログラムを構成する命令セットでもよいし、プロセッサのハードウェア回路に対して動作を指示する命令であってもよい。
処理部100は、入力処理部102、演算処理部110、出力処理部140を含む。演算処理部110は、情報取得部111、仮想空間設定部112、移動体処理部113、仮想カメラ制御部114、ゲーム処理部115、表示処理部120、音処理部130を含む。上述したように、これらの各部により実行される本実施形態の各処理は、プロセッサ(或いはプロセッサ及びメモリ)により実現できる。なお、これらの構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
入力処理部102は、操作情報やトラッキング情報を受け付ける処理や、記憶部170から情報を読み出す処理や、通信部196を介して情報を受信する処理を、入力処理として行う。例えば入力処理部102は、操作部160を用いてユーザが入力した操作情報やHMD200のセンサ部210等により検出されたトラッキング情報を取得する処理や、読み出し命令で指定された情報を、記憶部170から読み出す処理や、外部装置(サーバ等)からネットワークを介して情報を受信する処理を、入力処理として行う。ここで受信処理は、通信部196に情報の受信を指示したり、通信部196が受信した情報を取得して記憶部170に書き込む処理などである。
演算処理部110は、各種の演算処理を行う。例えば情報取得処理、仮想空間設定処理、移動体処理、仮想カメラ制御処理、ゲーム処理(シミュレーション処理)、表示処理、或いは音処理などの演算処理を行う。
情報取得部111(情報取得処理のプログラムモジュール)は種々の情報の取得処理を行う。例えば情報取得部111は、例えばユーザの視点位置や視線方向などの視点トラッキング情報を取得する。例えばHMD200のトラッキング情報をユーザの視点トラッキング情報として取得する。
仮想空間設定部112(仮想空間設定処理のプログラムモジュール)は、複数のオブジェクトが配置される仮想空間(オブジェクト空間)の設定処理を行う。例えば、移動体(人、ロボット、車、電車、飛行機、船、モンスター又は動物等)、マップ(地形)、建物、観客席、コース(道路)、樹木、壁、水面などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)を仮想空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。具体的には、記憶部170のオブジェクト情報記憶部172には、仮想空間でのオブジェクト(パーツオブジェクト)の位置、回転角度、移動速度、移動方向等の情報であるオブジェクト情報がオブジェクト番号に対応づけて記憶される。仮想空間設定部112は、例えば各フレーム毎にこのオブジェクト情報を更新する処理などを行う。
移動体処理部113(移動体処理のプログラムモジュール)は、仮想空間内で移動する移動体についての種々の処理を行う。例えば仮想空間(オブジェクト空間、ゲーム空間)において移動体を移動させる処理や、移動体を動作させる処理を行う。例えば移動体処理部113は、操作部160によりユーザが入力した操作情報や、取得されたトラッキング情報や、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、移動体(モデルオブジェクト)を仮想空間内で移動させたり、移動体を動作(モーション、アニメーション)させる制御処理を行う。具体的には、移動体の移動情報(位置、回転角度、速度、或いは加速度)や動作情報(パーツオブジェクトの位置、或いは回転角度)を、1フレーム(例えば1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動体の移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。移動体は、例えば実空間のユーザ(プレーヤ)に対応する仮想空間の仮想ユーザ(仮想プレーヤ、アバター)や、或いは当該仮想ユーザが搭乗(操作)する搭乗移動体(操作移動体)などである。
仮想カメラ制御部114(仮想カメラ制御処理のプログラムモジュール)は、仮想カメラの制御を行う。例えば視点トラッキングにより取得されたユーザの視点情報のトラッキング情報に基づいて、ユーザの視点変化に追従するように仮想カメラを制御する。例えば本実施形態では、ユーザの視点位置、視線方向の少なくとも1つである視点情報のトラッキング情報(視点トラッキング情報)が取得される。このトラッキング情報は、例えばHMD200のトラッキング処理を行うことで取得できる。そして仮想カメラ制御部114は、取得されたトラッキング情報(ユーザの視点位置及び視線方向の少なくとも一方の情報)に基づいて仮想カメラの視点位置、視線方向を変化させる。例えば、仮想カメラ制御部114は、実空間でのユーザの視点位置、視線方向の変化に応じて、仮想空間での仮想カメラの視点位置、視線方向(位置、姿勢)が変化するように、仮想カメラを設定する。このようにすることで、ユーザの視点情報のトラッキング情報に基づいて、ユーザの視点変化に追従するように仮想カメラを制御できる。
ゲーム処理部115(ゲーム処理のプログラムモジュール)は、ユーザがゲームをプレイするための種々のゲーム処理を行う。別の言い方をすれば、ゲーム処理部115(シミュレーション処理部)は、ユーザが仮想現実(バーチャルリアリティ)を体験するための種々のシミュレーション処理を実行する。ゲーム処理は、例えば、ゲーム開始条件が満たされた場合にゲームを開始する処理、開始したゲームを進行させる処理、ゲーム終了条件が満たされた場合にゲームを終了する処理、或いはゲーム成績を演算する処理などである。
表示処理部120(表示処理のプログラムモジュール)は、ゲーム画像(シミュレーション画像)の表示処理を行う。例えば処理部100で行われる種々の処理(ゲーム処理、シミュレーション処理)の結果に基づいて描画処理を行い、これにより画像を生成し、HMD200の表示部220に表示する。具体的には、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)を、描画バッファ178(フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ)に描画する。これにより、仮想空間において仮想カメラ(左眼用、右眼用の第1、第2の視点)から見える画像が生成される。
なお、表示処理部120で行われる描画処理は、頂点シェーダ処理やピクセルシェーダ処理等により実現することができる。この場合には光源処理は、頂点シェーダ処理ではなく、例えばピクセルシェーダ処理において行うことが望ましい。即ち、照明モデルを用いた光源処理のシェーディング処理を、ピクセルシェーダ処理により実現する。
例えば頂点処理では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。
またピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ178に出力(描画)する。即ち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、仮想空間内において仮想カメラ(所与の視点)から見える画像が生成される。
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現できる。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
音処理部130(音処理のプログラムモジュール)は、処理部100で行われる種々の処理の結果に基づいて音処理を行う。具体的には、楽曲(音楽、BGM)、効果音、又は音声などのゲーム音を生成し、ゲーム音を音出力部192に出力させる。なお音処理部130の音処理の一部(例えば3次元音響処理)を、HMD200の処理部240により実現してもよい。
出力処理部140は各種の情報の出力処理を行う。例えば出力処理部140は、記憶部170に情報を書き込む処理や、通信部196を介して情報を送信する処理を、出力処理として行う。例えば出力処理部140は、書き込み命令で指定された情報を、記憶部170に書き込む処理や、外部の装置(サーバ等)に対してネットワークを介して情報を送信する処理を行う。送信処理は、通信部196に情報の送信を指示したり、送信する情報を通信部196に指示する処理などである。
そして本実施形態の画像生成システムは、図1に示すように、仮想空間設定部112と表示処理部120を含む。
仮想空間設定部112は、複数のオブジェクトが配置される仮想空間の設定処理を行う。例えばユーザに対応する移動体のオブジェクトや、敵等の相手の移動体のオブジェクトや、マップや背景を構成するオブジェクトを、仮想空間に配置設定する処理を行う。ユーザに対応する移動体とは、例えば実空間でのユーザの移動に追従して仮想空間において移動するオブジェクト(表示物)である。この移動体は、例えばユーザに対応する仮想ユーザ(アバター)やユーザが搭乗する搭乗移動体などである。
表示処理部120は、仮想空間において複数の視点から見える複数の視点画像を立体視用画像として生成する。例えば表示処理部120は、仮想空間において立体視(二眼式、多眼式、空間像方式)における第1視点から見える第1視点画像と第2視点から見える第2視点画像を生成する。二眼式立体視を例にとれば、仮想カメラ制御部114が、左眼用仮想カメラ及び右眼用仮想カメラの設定を行い、表示処理部120が、仮想空間において左眼用仮想カメラから見える左眼用画像と右眼用仮想カメラから見える右眼用画像を生成する。
なお、第1視点画像を生成する第1視点は、例えば二眼式立体視における左眼用、右眼用の仮想カメラの一方の視点であり、第2視点画像を生成する第2視点は、左眼用、右眼用の仮想カメラの他方の視点であるが、本実施形態はこれに限定されない。第1視点画像、第2視点画像を生成する第1視点、第2視点は、多眼式立体視又は空間像方式立体視における視点であってもよい。この場合には、例えばユーザの視点トラッキング情報に基づいて、多眼式立体視又は空間像方式立体視における複数の視点の中から第1視点、第2視点を選択する処理を行えばよい。
また立体視方式としては、二眼分離眼鏡方式や、パララックスバリアやレンティキュラーレンズや、その他、光線の方向を制御することができる光学素子を用いた裸眼方式などの様々な方式を想定できる。二眼分離眼鏡方式としては、例えば偏光眼鏡方式、継時分離方式、色分離方式などがある。偏光眼鏡方式では、例えば奇数ライン、偶数ラインに対して方向の異なる偏向フィルタが交互に取り付けられた表示部220(例えば奇数ラインに水平方向の偏向フィルタ、偶数ラインに垂直方向の偏向フィルタが取り付けられた表示部220)を用いることで、立体視を実現する。或いは左眼用画像と右眼用画像を特殊な偏光フィルタを有するプロジェクタで投影し、投影画像を偏光眼鏡で見ることで立体視を実現してもよい。また継時分離方式(ページ・フリップ方式)では、表示部220に左眼用画像、右眼用画像を所定期間毎(例えば1/120秒毎、1/60秒毎)に交互に表示する。そして、この表示の切り替えに連動して液晶シャッター付きの眼鏡の左眼、右眼の液晶シャッターを交互に開閉することで、立体視を実現する。色分離方式では、例えばアナグリフ画像を生成し、赤青眼鏡等で見ることで、立体視を実現する。また立体視用画像は、サイドバイサイド又はトップアンドボトム又はフレームパッキング等のフォーマットによる画像信号に基づいて、奇数ラインと偶数ラインに左眼用画像と右眼用画像が交互に割り当てられるフィールドシーケンシャル方式の画像として表示されてもよいし、左眼用画像と右眼用画像が所定期間毎に交互に切り替えられるフレームシーケンシャル方式の画像として表示されてもよい。
そして本実施形態では、表示処理部120は、複数の視点の第1視点での第1視点画像を生成する際に、第1視点での第1視線ベクトルとは異なる視線ベクトルを用いて仮想視線ベクトル(シェーディング用視線ベクトル)を設定する。そして仮想視線ベクトルを用いたシェーディング処理により、第1視点画像を生成する。
二眼式立体視を例にとれば、表示処理部120は、例えば左眼用画像を生成する際に、左眼用の仮想カメラの視線ベクトルとは異なる視線ベクトルを用いて左眼用の仮想視線ベクトルを設定する。そして左眼用の仮想視線ベクトルを用いたシェーディング処理により、左眼用画像を生成する。或いは、右眼用画像を生成する際に、右眼用の仮想カメラの視線ベクトルとは異なる視線ベクトルを用いて右眼用の仮想視線ベクトルを設定する。そして右眼用の仮想視線ベクトルを用いたシェーディング処理により、右眼用画像を生成する。
即ち、通常の立体視では、第1視点画像の生成(レンダリング)を行う際には、第1視点に対応する第1視線ベクトルを用いてシェーディング処理を行う。これに対して本実施形態では、この第1視線ベクトルとは異なる視線ベクトル(広義にはベクトル)を用いて仮想視線ベクトルを設定する。例えば第1視線ベクトルとは異なる視線ベクトル自体を、仮想視線ベクトルに設定したり、当該異なる視線ベクトルと第1視線ベクトルとの合成処理(ベクトル合成)により得られたベクトルを、仮想視線ベクトルに設定する。そして、この仮想視線ベクトルを用いたシェーディング処理により、第1視点画像を生成する。このようにすることで、第1視線ベクトルを用いたシェーディング処理において生じていた不具合の発生を、仮想視線ベクトルを用いたシェーディング処理を行うことで、防止できるようになる。
なお、第1視点については、仮想視線ベクトルを用いたシェーディング処理により、第1視点画像を生成する一方で、第2視点については、仮想視線ベクトルを用いずに、第2視線ベクトルを用いたシェーディング処理により、第2視点画像を生成してもよい。
また表示処理部120は、第1視線ベクトルとは異なる1つの基準視線ベクトルを、仮想視線ベクトルに設定する。そして、この基準視線ベクトルを用いたシェーディング処理により、第1視点での第1視点画像を生成する。即ち、第1視線ベクトルと異なる視線ベクトルとして、所与の基準視線ベクトルを用いる。この基準視線ベクトルは、例えば第1視線ベクトル、第2視線ベクトルなど複数の視線ベクトルにより特定されるものであってもよいし、ユーザの視点トラッキング情報(例えばHMD200のトラッキング情報)等により特定されるものであってもよい。そして、第1視点での第1視点画像を生成する際には、この1つの基準視線ベクトルを用いてシェーディング処理を行う。
この場合に表示処理部120は、例えば基準視線ベクトルを用いたシェーディング処理により、第2視点での第2視点画像を生成する。即ち、基準視線ベクトルを用いたシェーディング処理により、第1視点での第1視点画像を生成すると共に、同じ基準視線ベクトルを用いたシェーディング処理により、第2視点での第1視点画像を生成する。このようにすれば、第1視点画像と第2視点画像が、同じ基準視線ベクトルを用いたシェーディング処理により生成されるため、視点間での視線ベクトルの方向差を原因とするシェーディング処理の不具合を解消できる。
ここで、基準視線ベクトルは、例えば第1視線ベクトルの第1視線方向と、第2の視点での第2視線ベクトルの第2視線方向とで規定される視線方向範囲内の視線ベクトルである。このように基準視線ベクトルは、第1視線ベクトルの第1視線方向と第2視線ベクトルの第2視線方向の間の視線方向の視線ベクトルであってもよいし、第1視線ベクトルと第2視線ベクトルのいずれか一方の視線ベクトルであってもよい。なお、当該視線方向範囲外の視線ベクトルを基準視線ベクトルとして用いる変形実施も可能である。
また表示処理部120は、第1視線ベクトルと他の視線ベクトルとの合成処理により得られたベクトルを、第1仮想視線ベクトルに設定する。そして第1仮想視線ベクトルを用いたシェーディング処理により、第1視点での第1視点画像を生成する。例えば、第1視線ベクトルと他の視線ベクトルとの合成処理(ベクトル合成)により、第1視線ベクトルの視線方向と他の視線ベクトルの視線方向の間の視線方向となるような第1仮想視線ベクトルを設定する。このような第1仮想視線ベクトルを用いてシェーディング処理を行えば、第1視線ベクトルを用いてシェーディング処理を行う場合に比べて、視点間での視線ベクトルの方向差を原因とする画像の見づらさ等を低減できるようになる。
また表示処理部120は、第2視点での第2視線ベクトルと他の視線ベクトルとの合成処理により得られたベクトルを、第2仮想視線ベクトルに設定する。そして第2仮想視線ベクトルを用いたシェーディング処理により、第2視点での第2視点画像を生成する。このようにすれば、第1視線ベクトルと他の視線ベクトルの合成処理により得られた第1仮想視線ベクトルを用いたシェーディング処理により、第1視点画像が生成されると共に、第2視線ベクトルと他の視線ベクトルの合成処理により得られた第2仮想視線ベクトルを用いたシェーディング処理により、第2視点画像が生成されるようになる。例えば第1仮想視線ベクトルと第2仮想視線ベクトルのなす角度は、第1視線ベクトルと第2視線ベクトルのなす角度よりも小さくなるため、視点間での視線ベクトルの方向差を原因とする画像の見づらさ等を低減できるようになる。なお、第1視線ベクトルの合成対象となる他の視線ベクトルと、第2視線ベクトルの合成対象となる他の視線ベクトルは、同じ視線ベクトルであってもよいし、異なる視線ベクトルであってもよい。
例えば表示処理部120は、第1視線ベクトルと基準視線ベクトルとの合成処理により得られたベクトルを、第1仮想視線ベクトルに設定する。また第2視線ベクトルと基準視線ベクトルとの合成処理により得られたベクトルを、第2仮想視線ベクトルに設定する。即ち、第1視線ベクトル、第2視線ベクトルの合成対象となる他の視線ベクトルとして、同じ基準視線ベクトルを用いる。そして、第1視線ベクトル、第2視線ベクトルと基準視線ベクトルとの合成処理により得られた第1仮想視線ベクトル、第2仮想視線ベクトルを用いて、シェーディング処理を行い、第1視点画像、第2視点画像を生成する。
この場合に基準視線ベクトルは、例えば第1視線ベクトルの第1視線方向と、第2視線ベクトルの第2視線方向とで規定される視線方向範囲内の視線ベクトルである。
また本実施形態では、例えば合成処理での合成率が可変になっている。例えば第1視線ベクトルと他の視線ベクトル(基準視線ベクトル等)の合成処理での合成率が可変になっている。また第2視線ベクトルと他の視線ベクトル(基準視線ベクトル等)の合成処理での合成率が可変になっている。即ち表示処理部は、これらの合成処理の合成率が可変になるような設定処理により、第1仮想視線ベクトルや第2仮想視線ベクトルを設定する。
具体的には表示処理部120は、合成処理での合成率を、ユーザの入力情報、ゲーム状況情報、及び仮想空間での視点とオブジェクトとの位置関係情報の少なくとも1つに応じて変化させる。
ユーザの入力情報は、例えばユーザが操作部160を操作することで入力される情報などである。例えばゲームのオプション設定画面などにおいて入力される情報である。例えば、ユーザの入力情報に基づいて、ユーザが所望するような合成率に設定する。なおユーザの入力情報は、音声による入力情報であってもよいし、タッチパネルディスプレイのタッチ操作等により入力される情報であってもよい。
ゲーム状況情報は、その時点でのゲームの状況を表す情報であり、ゲーム進行に伴い変化する情報である。例えばゲーム状況情報の変化に応じて、視線ベクトルの合成処理の合成率を変化させる。例えばゲーム状況情報は、例えばゲームの進行状況を表す情報や、或いはゲームの達成度(マップのクリア状況、獲得ポイント等)を表す情報などである。例えばプレーヤがゲームをプレイしているステージやマップの情報などである。またゲーム状況情報は、例えば移動体が移動するゲームにおいては、移動体の走行環境などの走行状況を表す情報である。またゲーム状況情報は、キャラクタを用いたゲーム(RPGゲーム、格闘技ゲーム、アクションゲーム)などでは、ゲームにおけるキャラクタの現在の状況を表す情報や、キャラクタのステータスパラメータ等に基づく情報である。
仮想空間での視点とオブジェクトとの位置関係情報は、仮想空間でのユーザの視点(第1視点、第2視点)とオブジェクトとの距離や方向関係を表す情報である。例えば視点とオブジェクトとの距離に応じて、視線ベクトルの合成処理の合成率を変化させる。
また表示処理部120は、第1視点での第1視線ベクトルと第2視点での第2視線ベクトルとのなす角度が所与の角度以上になった場合に、仮想視線ベクトルを用いたシェーディング処理を行う。例えば第1視線ベクトルと第2視線ベクトルのなす角度が所与の角度よりも小さい場合には、第1視線ベクトルを用いたシェーディングにより第1視点画像を生成し、第2視線ベクトルを用いたシェーディングにより第2視点画像を生成する。一方、第1視線ベクトルと第2視線ベクトルのなす角度が、所与の角度以上になった場合には、第1視線ベクトルに代えて、仮想視線ベクトル(基準視線ベクトル、第1仮想視線ベクトル)を用いたシェーディングにより、第1視点画像を生成する。また第2視線ベクトルに代えて、仮想視線ベクトル(基準視線ベクトル、第2仮想視線ベクトル)を用いたシェーディングにより、第2視点画像を生成する。
また表示処理部120は、ピクセルシェーダ処理については仮想視線ベクトルを用いて行う。一方、頂点シェーダ処理については各視点による視線ベクトルを用いて行う。なお、本文中で、頂点シェーダにおける視線ベクトルとは、該当視点から見た各頂点の位置を表すベクトルのことであり、射影変換に用いられる頂点座標に相当するものとする。即ち、オブジェクト形状に関係する頂点シェーダ処理については、各視点による視線ベクトルを用いて行う。具体的には、第1視点についての頂点シェーダ処理は第1視線ベクトルを用い、第2視点についての頂点シェーダ処理は第2視線ベクトルを用いる。一方、ピクセルシェーダ処理については、第1視線ベクトルの代わりに、仮想視線ベクトル(基準視線ベクトル、第1仮想視線ベクトル)を用いて、第1視点画像の各ピクセルの色(輝度)を決定する。また第2視線ベクトルの代わりに、仮想視線ベクトル(基準視線ベクトル、第2仮想視線ベクトル)を用いて、第2視点画像の各ピクセルの色(輝度)を決定する。
また表示処理部120は、仮想視線ベクトルを用いて、照明モデルを用いたシェーディング処理及び輪郭線についてのシェーディング処理の少なくとも1つを行う。照明モデルを用いたシェーディング処理は、例えばフォンの照明モデルやブリンの照明モデルなどを用いたシェーディング処理であり、例えば鏡面反射等のシェーディング処理である。或いは異方性反射のシェーディング処理などであってもよい。また輪郭線についてのシェーディング処理は、例えばトゥーンシェーディングなどの輪郭を強調するシェーディング処理や、輪郭に画像エフェクトを施すシェーディング処理などである。
また表示処理部120は、レイトレーシング処理の少なくとも一部について仮想視線ベクトルを用いて行ってもよい。レイトレーシング処理は、光線追跡法と呼ばれ、視点に届く光線をたどることによって描画する処理である。
2.本実施形態の手法
次に本実施形態の手法について詳細に説明する。なお以下では、二眼式立体視を主に例にとり説明する。例えば第1視点が、左眼用仮想カメラの視点と右眼用仮想カメラの視点の一方の視点であり、第2視点が他方の視点である場合を例にとり説明する。但し本実施形態の手法は、二眼式立体視のみならず、多眼式立体視や空間像方式立体視などにも適用可能である。
2.1 立体視での視線ベクトルの方向の違いに起因する問題点
現実世界での照光現象をシミュレートするための数学的モデルとして、画像生成システムにおいては、種々の照明モデルが用いられる。図2(A)、図2(B)に照明モデルの例を示す。
図2(A)はフォンの照明モデルを説明する図であり、この照明モデルは下式(1)のように表される。
I=Ksp×(L・R)×Isp+Kdf×(N・L)×Idf+Kam×Iam
・・・(1)
ここで、Ksp、Kdf、Kamは、各々、鏡面反射光、拡散反射光、環境光についての反射率であり、Isp、Idf、Iamは、鏡面反射光、拡散反射光、環境光の輝度であり、例えばRGB値や分光スペクトルで表される。Nはオブジェクトの法線ベクトルであり、Lは光源LSのライトベクトル(物体表面上の点から光源LSに向かうベクトル)である。Rは視線ベクトル(物体表面上の点から視点に向かうベクトル)Eの反射ベクトルであり、R=−E+2(N・E)Nと表すことができる。nは鏡面反射指数である。
このフォンの照明モデルでは、鏡面反射光の強さはライトベクトルLと反射ベクトルRの内積のべき乗で表される。従って、ライトベクトルLと反射ベクトルRの向きが近くなる場所ほど、鏡面反射光(ハイライト)が強くなる。
図2(B)はブリン・フォンの照明モデルを説明する図であり、この照明モデルは下式(2)のように表される。
I=Ksp×(N・H)×Isp+Kdf×(N・L)×Idf+Kam×Iam
・・・(2)
ここで、Hはハーフベクトルであり、H=(E+L)/|E+L|と表すことができる。このブリン・フォンの照明モデルでは、鏡面反射光の強さは法線ベクトルNとハーフベクトルHの内積のべき乗で表される。従って、法線ベクトルNとハーフベクトルHの向きが近くなる場所ほど、鏡面反射光が強くなる。
図3(A)、図3(B)は、左眼用、右眼用の仮想カメラVCL、VCRとオブジェクトOBの関係を示す図である。図3(A)では、仮想カメラVCL、VCRとオブジェクトOBの距離が遠くなっており、図3(B)では当該距離が近くなっている。図3(A)のようにオブジェクトOBとの距離が遠い場合には、仮想カメラVCLの視線ベクトルSVL(広義には第1視線ベクトル、第2視線ベクトルの一方)と仮想カメラVCRの視線ベクトルSVR(広義には第1視線ベクトル、第2視線ベクトルの他方)のなす角度(輻輳角)は小さい。一方、図3(B)のようにオブジェクトOBとの距離が近い場合には、視線ベクトルSVLと視線ベクトルSVRのなす角度が大きくなる。即ち、図3(B)のようにオブジェクトOBとの距離が近くなるにつれて、視線ベクトルSVL、SVRの方向の違いが大きくなる。
例えば図4では、光源LSからの光LVが、オブジェクトOBの面(法線ベクトルNVの面)で反射しており、左眼用の仮想カメラVCLは、光LVの反射光の方向に沿った線上に位置する。従って、図2(A)等で説明したように、仮想カメラVCLの視点では、鏡面反射光による輝度が非常に高くなり、強いハイライトが見えるようになる。一方、右眼用の仮想カメラVCRは、光LVの反射光の方向に沿った線から外れた位置にある。従って、仮想カメラVCRの視点では、仮想カメラVCLの視点に比べて、鏡面反射光による輝度が低くなる。
このように図4では、仮想カメラVCLとVCRとで、鏡面反射光の輝度が大きく異なってしまい、オブジェクトOBの表面がチラチラして見えるなどの問題が生じてしまう。例えば図4のように鏡面反射光の輝度が左眼と右眼で異なる状況は、現実世界においても生じている事象である。しかし、CGにおいては解像度やフレームレートの制約があるため、現実世界の事象を忠実に再現してしまうと、画像がチラチラして見えるなど、見づらさや不快感(いわゆる視野闘争)が強調されてしまうような画像が生成されてしまう。
図5(A)、図5(B)は、上記問題を更に詳しく説明する図である。図5(A)では、ハイライトの輪郭が白とびしてつながり、左眼用画像IML、右眼用画像IMRとで、ハイライトの場所や形状が異なって見えてしまう事態が発生している。このような事態は、図4のように左眼、右眼の視線ベクトルSVL、SVRの方向の違いに起因して生じる。そして、このような事態が発生すると、立体視における凹凸の認識がしにくくなり、立体視が難しくなって、立体感が破綻する。
図5(B)では、ハイライト部分での輪郭は残っており、凹凸状態は正しく見えているが、左眼用画像IML、右眼用画像IMRとで、色の違う部分が生じる事態が発生している。このような事態が発生すると、色の違う部分がギラギラして見えてしまう。これは、輝き等を表現する技法にもなる反面、場合によってはユーザに不快感を与えてしまう原因にもなる。
図6は、輪郭線強調処理等の輪郭線のシェーディング処理の説明図である。この輪郭線のシェーディング処理では、視線ベクトルSVL、SVRとオブジェクトOBの面の法線ベクトルNVが直交する場所を輪郭線として抽出する。そして図7(A)、図7(B)に示すように、オブジェクトOBの輪郭に対して太い輪郭線を描くなどの輪郭線の強調処理を行う。これにより、キャラクタであるオブジェクトOBを、漫画やイラスト風の作画でレンダリングするトゥーンシェーディング(Toon shading)が実現される。
しかしながら、立体視において、このような輪郭線のシェーディング処理であるトゥーンシェーディングを行うと、図7(A)の左眼用画像IMLと図7(B)の右眼用画像IMRとで輪郭線が異なってしまい、ユーザが違和感を感じる事態が発生する。例えば図7(A)のA1と図7(B)のA2とでは、頬と右耳の間での輪郭線の有無が異なっている。
2.2 仮想視線ベクトル
以上のような問題を解決するために本実施形態では、仮想カメラの視線ベクトルの代わりに、仮想視線ベクトルを用いてシェーディング処理を行う手法を採用する。具体的には複数の視点の第1視点での第1視点画像を生成する際に、第1視点での第1視線ベクトルとは異なる視線ベクトルを用いて仮想視線ベクトルを設定し、この仮想視線ベクトルを用いたシェーディング処理(レンダリング処理)により、第1視点画像を生成する。また、第2視点での第2視点画像を生成する際に、第2視点での第2視線ベクトルとは異なる視線ベクトルを用いて仮想視線ベクトルを設定し、この仮想視線ベクトルを用いたシェーディング処理(レンダリング処理)により、第2視点画像を生成する。
例えば図8では、左眼用の仮想カメラVCLの視線ベクトルSVL(第1視線ベクトル)とは異なる1つの基準視線ベクトルRVを、仮想視線ベクトルTVに設定する。そして基準視線ベクトルRV(TV)を用いたシェーディング処理により、左眼用画像(第1視点画像)を生成する。このように本実施形態では、仮想カメラVCLの視線ベクトルSVL(第1視線ベクトル)とは異なる視線ベクトル(RV)を用いて仮想視線ベクトル(TV)を設定し、この仮想視線ベクトルを用いたシェーディング処理により、左眼用画像(第1視点画像)を生成している。
また図8において、右眼用の仮想カメラVCRの視線ベクトルSVR(第2視線ベクトル)とは異なる1つの基準視線ベクトルRVを、仮想視線ベクトルTVに設定する。そして基準視線ベクトルRV(TV)を用いたシェーディング処理により、右眼用画像(第2視点画像)を生成する。このように本実施形態では、仮想カメラVCRの視線ベクトルSVR(第2視線ベクトル)とは異なる視線ベクトル(RV)を用いて仮想視線ベクトル(TV)を設定し、この仮想視線ベクトルを用いたシェーディング処理により、右眼用画像(第2視点画像)を生成している。
なお、左眼用、右眼用の仮想カメラVCL、VCRの視点を、各々、第2視点、第1視点としてもよい。即ち、左眼用、右眼用の視線ベクトルSVL、SVRを、各々、第2視線ベクトル、第1視線ベクトルとし、左眼用画像、右眼用画像を、各々、第2視点画像、第1視点画像としてもよい。
このように図8では、1つの基準視線ベクトルRVが仮想視線ベクトルTVに設定されて、この1つの基準視線ベクトルRVを用いたシェーディング処理により、左眼用画像、右眼用画像が生成される。従って、図2(A)、図2(B)のような照明モデルを用いたシェーディング処理において、鏡面反射光等による輝度が、左眼と右眼とで大きく異なってしまう事態の発生を防止できる。即ち、同じ1つの基準視線ベクトルRVを用いたシェーディング処理により左眼用画像も右眼用画像も生成されるため、鏡面反射光等によるシェーディング処理の結果も、左眼用画像と右眼用画像とで同じ結果になる。これにより図5(A)、図5(B)で説明したような問題が発生するのを防止できるようになる。即ち、図5(A)のように左眼用画像と右眼用画像とでハイライトの場所や形状が異なってしまうような事態の発生を防止できる。また図5(B)のように色が異なる部分がギラギラして見えるような事態の発生も防止できる。また図6〜図7(B)の輪郭線のシェーディング処理において、例えば左眼用画像と右眼用画像とで輪郭線が異なってしまうような事態の発生も防止できる。従って、ユーザが感じる見づらさや違和感を軽減できる立体視用画像の生成が可能になる。
ここで基準視線ベクトルRVは、例えば第1視線ベクトルの第1視線方向と第2視線ベクトルの第2視線方向とで規定される視線方向範囲内の視線ベクトルである。例えば図9(A)、図9(B)に示すように、基準視線ベクトルRVは、視線ベクトルSVRの視線方向と視線ベクトルSVLの視線方向とで規定される視線方向範囲ASD内の視線ベクトルとなっている。なお図9(A)、図9(B)では説明の簡素化のために、視線ベクトルSVLとSVRの始点を同じ位置に設定して示している。
例えば図9(A)では、基準視線ベクトルRVは、視線ベクトルSVLと視線ベクトルSVRの間の視線方向のベクトルとなっている。具体的には基準視線ベクトルRVは、視線ベクトルSVL、SVRの合成ベクトルになっており、視線ベクトルSVLと基準視線ベクトルRVのなす角度と、視線ベクトルSVRと基準視線ベクトルRVのなす角度は、例えば等しくなっている。
図9(A)の基準視線ベクトルRVとしては、例えばユーザの視点トラッキングにより取得された視線方向のベクトルを用いることができる。例えばHMDのトラッキング処理等によりユーザの視線方向を特定し、特定された視線方向のベクトルを、基準視線ベクトルRVとして用いる。このようにすれば、簡素な処理により基準視線ベクトルRVを設定できるようになる。
また図9(B)に示すように、左眼用の仮想カメラVCLの視線ベクトルSVLを、基準視線ベクトルRVに設定してもよい。或いは、逆に、右眼用の仮想カメラVCRの視線ベクトルSVRを、基準視線ベクトルRVに設定してもよい。
図9(B)の場合には、第1視点、第2視点の両方について仮想視線ベクトルを設定する必要は無く、第1視点、第2視点の一方についてのみ仮想視線ベクトルを設定してシェーディング処理を行うことになる。
例えば図9(B)では、左眼用の視線ベクトルSVLを用いたシェーディング処理により、左眼用画像を生成し、視線ベクトルSVRとは異なる基準視線ベクトルRVを用いて、右眼用画像を生成している。即ち、右眼の視点についてのみ仮想視線ベクトルである基準視線ベクトルRVが設定されて、シェーディング処理が行われ、右眼用画像が生成される。或いは、逆に、右眼用の視線ベクトルSVRを用いたシェーディング処理により、右眼用画像を生成し、視線ベクトルSVLとは異なる基準視線ベクトルRVを用いて、左眼用画像を生成してもよい。即ち、左眼の視点についてのみ仮想視線ベクトルである基準視線ベクトルRVを設定して、左眼用画像の生成のためのシェーディング処理が行ってもよい。
なお図9(A)、図9(B)では、説明の簡素化のために視線ベクトルSVLとSVRの始点を同じ位置に設定して説明しているが、視線ベクトルSVL、SVR、基準視線ベクトルRV、視線方向範囲ASDの関係は実際には図9(C)に示すようになっている。
また本実施形態では、第1視線ベクトルと他の視線ベクトル(例えば基準視線ベクトル)との合成処理により得られたベクトルを、第1仮想視線ベクトルに設定し、第1仮想視線ベクトルを用いたシェーディング処理により、第1視点での第1視点画像を生成してもよい。また第2視線ベクトルと他の視線ベクトル(例えば基準視線ベクトル)との合成処理により得られたベクトルを、第2仮想視線ベクトルに設定し、第2仮想視線ベクトルを用いたシェーディング処理により、第2視点での第2視点画像を生成してもよい。
例えば図10では、左眼用の仮想カメラVCLの視線ベクトルSVL(第1視線ベクトル)と他の視線ベクトルとの合成処理により得られたベクトルが、仮想視線ベクトルTVL(第1仮想視線ベクトル)に設定されている。そして仮想視線ベクトルTVLを用いたシェーディング処理により、左眼用画像(第1視点画像)が生成される。また右眼用の仮想カメラVCRの視線ベクトルSVR(第2視線ベクトル)と他の視線ベクトルとの合成処理により得られたベクトルが、仮想視線ベクトルTVR(第2仮想視線ベクトル)に設定されている。そして仮想視線ベクトルTVRを用いたシェーディング処理により、右眼用画像(第2視点画像)が生成される。
具体的には図11に示すように、例えば視線ベクトルSVLと、図9(A)〜図9(C)で説明した基準視線ベクトルRVとの合成処理(ベクトル合成)が行われて、仮想視線ベクトルTVLが設定される。例えば合成率をαとすると、下式(3)の合成処理が行われる。
TVL=α×SVL+(1−α)×RV ・・・(3)
また視線ベクトルSVRと基準視線ベクトルRVとの合成処理が行われて、仮想視線ベクトルTVRが設定される。例えば合成率をαとすると、下式(4)の合成処理が行われる。
TVR=α×SVR+(1−α)×RV ・・・(4)
なお、上式(3)と下式(4)の合成率αを互いに異ならせる変形実施も可能である。また合成率の表し方としては種々の変形実施が可能であり、例えばβ=1−αとなるような関係のβを合成率としてもよい。
このように図10、図11では、視線ベクトルSVL、SVRと他の視線ベクトル(RV等)との合成処理により仮想視線ベクトルTVL、TVRが設定(生成)されて、この仮想視線ベクトルTVL、TVRを用いたシェーディング処理により、左眼用画像、右眼用画像が生成される。従って、図2(A)、図2(B)のような照明モデルを用いたシェーディング処理において、鏡面反射光等による輝度が、左眼と右眼とで大きく異なってしまうのを抑制できる。即ち、視線ベクトルSVL、SVRに比べて、方向差が少ない仮想視線ベクトルTVL、TVRを用いたシェーディング処理により、左眼用画像、右眼用画像が生成されるため、鏡面反射光等によるシェーディング処理の結果を、左眼用画像と右眼用画像とで近づけることが可能になる。これにより図5(A)、図5(B)で説明したような画像の見づらさや違和感を、視線ベクトルSVL、SVRを用いる場合に比べて軽減できる。また図6〜図7(B)の輪郭線のシェーディング処理において、左眼用画像と右眼用画像とでの輪郭線の画像の相違度合いも低減できる。従って、ユーザが感じる見づらさや違和感を、より軽減できる立体視用画像の生成が可能になる。
ここで、図10、図11に示すように合成処理を行う場合には、この合成処理での合成率を可変にすることが望ましい。例えば上式(3)、(4)の合成率αを任意の値に変化させる。具体的には図12に示すように、合成処理での合成率を、ユーザの入力情報、ゲーム状況情報、或いは仮想空間での視点とオブジェクトとの位置関係情報に応じて変化させる。
例えば図13(A)は、ゲームの各種の設定を行うオプション設定画面の例である。ユーザは、このオプション設定画面において、ゲームの環境や各種条件について、自身の所望する設定を行うことができる。そして図13(A)では、図10、図11で説明した視線ベクトルの合成処理の合成率を、ユーザが設定できるようになっている。例えば図13(A)の合成率のスライダーを左右に動かすことで、合成率α=0(0%)からα=1.0(100%)に変化させることができる。
上式(3)、(4)に示すように、α=1.0(β=1−α=0)に設定すれば、通常の視線ベクトルSVL、SVRを用いたシェーディング処理が行われて、左眼用画像、右眼用画像が生成される。例えばα=0.5に設定すれば、視線ベクトルSVL、SVRと基準視線ベクトルRVが50%の割合で合成された仮想視線ベクトルTVL、TVRを用いたシェーディング処理が行われて、左眼用画像、右眼用画像が生成される。α=0(β=1−α=1.0)に設定すれば、図8の場合と同様に、1つの基準視線ベクトルRVが仮想視線ベクトルに設定されてシェーディング処理が行われ、左眼用画像、右眼用画像が生成される。
このようにすれば、ユーザの好みに応じた仮想視線ベクトルの設定が可能になり、ユーザの入力情報に応じた視線方向に仮想視線ベクトルの方向を設定して、シェーディング処理を行うことが可能になる。例えば図5(A)、図5(B)で説明したような画像に対して見づらさや違和感を抱かないユーザは、α=1.0に設定する。これにより、よりリアルな立体視用画像を楽しむことができる。一方、図5(A)、図5(B)で説明したような画像に対して、見づらさや強い違和感を抱くユーザは、例えばα=0に設定する。これにより、左眼用画像と右眼用画像でのシェーディング処理の結果が同じになるため、当該ユーザが見づらさや違和感を抱かない立体視用画像を生成できるようになる。或いはα=0.5に設定することで、見づらさや違和感を、ある程度軽減した立体視用画像を生成できるようになる。
また合成処理の合成率αをゲーム状況に応じて変化させてもよい。例えばユーザがプレイしているステージやマップなどの状況、ゲームの進行状況、或いはユーザのゲームのステータスなどに応じて、合成処理の合成率を変化させる。例えばハイライト表示される表示物が多いステージやマップなどでは、合成率αを0に近づける設定を行うことで、これらの多数の表示物のハイライト表示による見づらさや違和感を軽減できるようになる。また例えばユーザがゲームの初心者であるか上級者などかに応じて、合成処理の合成率αを変化させることで、ユーザのゲームレベルに応じた合成率αの設定が可能になる。例えば初心者のユーザに対しては、合成率αを0に近づける設定を行う一方で、上級者のプレーヤに対しては、合成率αを1.0に近づける設定を行う。例えば、初心者のユーザは、視線ベクトルの方向差により画像がチラチラして見えるなどの状況が発生するのは望ましくないため、合成率αを0に近づける設定を行う。一方、ゲームを長時間プレイしていて慣れている上級者のプレーヤは、図5(A)、図5(B)で説明したような画像が表示されても、それほど見づらさや違和感を抱かないでゲームをプレイできると考えられるため、合成率αを1.0に近づける設定を行う。
また、ユーザの視線をトラッキングすることができるシステムであれば、ユーザがギラギラして見える位置をどのように見ているかによって、合成率αを変化させることもできる。例えば、ギラギラして見える位置をユーザが一定の時間以上何度も見ていることが検出されれば、その表現はユーザにとって好ましいものであると判断し、合成率αを増やす処理を行ってもよい。また逆に、ギラギラして見える位置をユーザが一瞬だけ見てすぐ目を背けるような傾向が検出されれば、その表現はユーザにとって好ましくないものと判断し、合成率αを0に近づける処理を行ってもよい。
また合成処理の合成率αを、視点とオブジェクトとの位置関係情報に応じて変化させてもよい。例えば図13(B)において、距離LVBは、ユーザの視点(VCL、VCR)とオブジェクトOBの位置関係を表す情報である。例えば図3(A)で説明したように、ユーザの視点とオブジェクトOBとの距離LVBが遠い場合には、視線ベクトルSVL、SVRの方向差は小さくなるため、この方向差を原因とする画像の見づらさや違和感の度合いは低い。従って、この場合には、合成率αを1.0に設定したり、1.0に近い値に設定する。一方、図3(B)で説明したように、ユーザの視点とオブジェクトOBとの距離LVBが近い場合には、視線ベクトルSVL、SVRの方向差が大きくなるため、この方向差を原因とする画像の見づらさや違和感の度合いが高くなる。従って、この場合には、合成率αを0に設定したり、0に近い値に設定する。このようにすることで、視点とオブジェクトの位置関係に応じた適切な合成率を設定できるようになる。なお位置関係情報として視点とオブジェクトOBとの方向の関係も考慮して合成率を設定してもよい。
図14(A)〜図14(C)は本実施形態により生成された左眼用画像IML、右眼用画像IMRの例である。
図14(A)は、上式(3)、(4)において合成率αが0に設定されている場合の画像である。この場合には、図8のように1つの基準視線ベクトルが仮想視線ベクトルに設定されて、シェーディング処理が行われ、左眼用画像IML、右眼用画像IMRが生成される。図14(A)に示すように、ハイライト部分の場所や形状が、左眼用画像IML、右眼用画像IMRとで略同一となっており、画像のギラギラ度が0%になる立体視用画像が生成されている。
図14(B)は、合成率αが0.5に設定されている場合の画像である。この場合には、図11において、視線ベクトルSVL、SVRの各々と基準視線ベクトルRVとが50%の割合で合成された仮想視線ベクトルTVL、TVRが設定されて、シェーディング処理が行われ、左眼用画像IML、右眼用画像IMRが生成される。図14(B)では、ハイライト部分の場所や形状が、左眼用画像IML、右眼用画像IMRとで、図14(A)に比べると異なっており、画像のギラギラ度が50%になる立体視用画像が生成されている。
図14(C)は、合成率αが1.0に設定されている場合の画像である。この場合には、通常の視線ベクトルSVL、SVRを用いてシェーディング処理が行われ、左眼用画像IML、右眼用画像IMRが生成される。図14(C)では、ハイライト部分の場所や形状が、左眼用画像IML、右眼用画像IMRとで大きく異なっており、画像のギラギラ度が100%になる立体視用画像が生成されている。このように本実施形態では、合成率αを可変に設定することで、様々な態様の立体視用画像の生成が可能になる。
例えば図14(A)では、左眼用画像IMLと右眼用画像IMRとで、オブジェクトの対応する面の光沢が同じになる。一方、図14(C)では、対応する面の光沢の違いが大きく、ぎらついて見える。更に図14(C)では、ハイライトの白とび部分の輪郭が左右で異なる形状になっているため、その部分において立体視の融像(左右像の融合)が破綻を来たし、正しく認識できないことがある。また図14(B)は、図14(A)、図14(C)の中間の状態であり、多少ぎらついて見えるが、立体視の融像が破綻するほどではない。ぎらついて見えるのは、実物でも同様であることから、質感の向上にもつながり、合成率を適度に調整することは有意義である。
2.3 種々の処理例
次に本実施形態の種々の処理例について説明する。本実施形態では、第1視点での第1視線ベクトルと第2視点での第2視線ベクトルとのなす角度が所与の角度以上になった場合に、仮想視線ベクトルを用いたシェーディング処理を行うようにしてもよい。
例えば図15(A)では、視線ベクトルSVL、SVRのなす角度θが、しきい値である所与の角度θtよりも小さくなっている。例えばユーザの視点(VCL、VCR)から遠い距離にオブジェクトOBが位置していると、視線ベクトルSVL、SVRのなす角度θが小さくなり、θ<θtとなる。この場合には、通常の視線ベクトルSVL、SVRを用いたシェーディング処理により、左眼用画像、右眼用画像が生成される。これにより例えば図14(C)のような左眼用画像IML、右眼用画像IMRが生成される。但し、オブジェクトOBが遠い距離になるため、視線ベクトルSVL、SVRの方向差は小さいため、画像のギラギラ度もそれほど高くない。
一方、図15(B)、図15(C)では、視線ベクトルSVL、SVRのなす角度θが角度θt以上になっている。例えばユーザの視点から近い距離にオブジェクトOBが位置していると、視線ベクトルSVL、SVRのなす角度θが大きくなり、θ≧θtとなる。この場合には仮想視線ベクトルを用いたシェーディング処理を行う。
具体的には図15(B)では、1つの基準視線ベクトルRVが仮想視線ベクトルTVに設定されて、シェーディング処理が行われる。これにより、例えば図14(A)に示すような左眼用画像IML、右眼用画像IMRが生成される。一方、図15(C)では、視線ベクトルSVL、SVRと他の視線ベクトルとの合成処理により得られたベクトルが、仮想視線ベクトルTVL、TVRに設定されて、シェーディング処理が行われる。これにより、例えば図14(B)に示すような左眼用画像IML、右眼用画像IMRが生成される。
図15(A)〜図15(C)の手法によれば、例えばユーザの視点とオブジェクトOBの距離が離れていて、視線ベクトルSVL、SVRの方向差による悪影響が少ない場合には、通常の視線ベクトルSVL、SVRを用いたシェーディング処理により、左眼用画像、右眼用画像を生成できるようになり、よりリアルな画像表現を実現できる。一方、ユーザの視点とオブジェクトOBの距離が近づいて来て、視線ベクトルSVL、SVRの方向差による悪影響が大きくなると考えられる場合には、仮想視線ベクトル(TV、TVL、TVR)を用いたシェーディング処理により、左眼用画像、右眼用画像が生成される。これにより、当該悪影響を低減して、より見やすくて違和感の少ない立体視用画像を生成できるようになる。
さて、図16(A)では、視線ベクトルSVL、SVRのなす角度をθとし、仮想視線ベクトルTVL、TVRのなす角度をγとしている。例えば角度θは、ユーザの視点とオブジェクトOBの間の距離が遠くなるほど小さくなり、距離が近くなるほど大きくなる。
この場合に図16(B)では、γ=θの関係が成り立っており、これは図15(A)、図14(C)のように、仮想視線ベクトルを用いずに、視線ベクトルSVL、SVRを用いてレンダリング処理を行う場合に相当する。
一方、図16(C)では、θ<θtでは、γ=θとなり、図16(B)と同様になっているが、θ≧θtでは、γ=θtに固定(クランプ)される。そして図15(C)、図14(B)のように、そのなす角度がγ=θtに固定された仮想視線ベクトルTVL、TVRを用いたレンダリング処理が行われる。仮想視線ベクトルTVL、TVRのなす角度γがθtに固定されることで、ユーザの視点とオブジェクトOBの距離が変化した場合にも、角度γは変化しないようになる。従って、仮想視線ベクトルTVL、TVRのなす角度γが頻繁に変化して、生成される画像が見づらくなってしまうような事態を防止できる。なお、θ≧θtで角度γをθtに固定する手法を採用する場合に、図16(D)に示すように、角度γが滑らかにθtに収束するような制御を行うことが望ましい。
図17(A)は、例えばα=0.5というような所与の値の合成率αで合成処理を行って、仮想視線ベクトルTVL、TVRを設定した場合である。即ち、上式(3)、(4)の合成処理において、α=0.5というような値にして、仮想視線ベクトルTVL、TVRを設定し、シェーディング処理を行う場合の例である。これにより図14(B)に示すような左眼用画像IML、右眼用画像IMRが生成される。
なお、角度θとγの関係を図17(B)に示すような関係に設定してもよい。図17(B)のようにすれば、図14(C)よりも更に画像のギラギラ度を増すことができる。例えば鏡面反射光によるギラギラ度を誇張するような映像表現を狙う場合には、角度θとγに図17(B)に示すような関係を成り立たせればよい。
また、上記に示したような処理は、それぞれを組み合わせて用いてもよい。例えば図17(C)に示されるように、図15において角度θが小さいときにはギラギラ度を誇張するような処理を行い、θが大きくなるとそれを抑制するような処理を行うこともできる。
また本実施形態では、ピクセルシェーダ処理については、仮想視線ベクトルを用いて行い、頂点シェーダ処理については、仮想視線ベクトルではなく、通常の視線ベクトルを用いて行う。
例えばDirectX11等に準拠のGPUでは、図18に示すように、頂点シェーダ310で処理を行ってから、ラスタライザ318に(X,Y)座標を渡す前の段階に、ハルシェーダ312、テッセレータ314、ドメインシェーダ316、ジオメトリシェーダ317等の各シェーダが追加されている。これらの追加された新たな機能によって、必要に応じて、描画時に頂点を増やしたり、ポリゴンのメッシュを細かく分割したりすることが可能となっている。
そして本実施形態では、図18のピクセルシェーダ320の処理については、仮想視線ベクトル(TVL、TVR、TV)を用いて行い、ピクセルシェーダ320よりも前段側の頂点シェーダ310等の処理については、通常の視線ベクトルSVL、SVRを用いて行う。こうすることで、ピクセルシェーダ320での各ピクセルの色の描画において、鏡面反射光が左右の視点で異なって見えてしまうなどの問題の発生を防止できるようになる。
また本実施形態では、仮想視線ベクトルを用いて、例えば照明モデルを用いたシェーディング処理や、輪郭線についてのシェーディング処理や、或いはレイトレーシング処理(レイトレーシング処理の一部)を行うことができる。例えば図2(A)、図2(B)、図4で説明した照明モデルを用いたシェーディング処理において、通常の視線ベクトルSVL、SVRに代えて、仮想視線ベクトルを用いる。
また図6〜図7(B)のトゥーンシェーディングなどの輪郭線についてのシェーディング処理において、通常の視線ベクトルSVL、SVRに代えて、仮想視線ベクトルを用いる。例えば輪郭線の抽出処理などを、仮想視線ベクトルを用いて行う。なお、同じくトゥーンシェーディングにおいて、例えば肌色を明暗の2色で塗り分けたい場合に、どちらの色にするかの判定処理において、視線ベクトルSVL、SVRの代わりに、仮想視線ベクトルを用いるようにしてもよい。
また図19に示すようなレイトレーシング処理において、仮想視線ベクトルを用いてもよい。例えば図19のレイトレーシング処理では、視点(VC)に届く光線RAYをたどることによって、オブジェクトOB1、OB2についてのピクセルPXの色の描画を行う。この場合に本実施形態では、視線ベクトルSVの代わりに仮想視線ベクトルを用いてレイトレーシング処理を行うようにしてもよい。
また本実施形態の手法は種々の変形実施が可能であり、図20(A)、図20(B)にその一例を示す。例えば図20(A)、図20(B)は、キャラクタOBCが剣OBAを突き出している状態を示している。このとき、図20(A)に示すように、左眼(VCL)と右眼(VCR)とで剣OBAの異なる側面が見えてしまうと、立体視がしにくい状態になってしまう。これを避けるために、剣OBAが正面向きに近い場合は、図20(B)に示すように、強制的に左側又は右側のどちらかに剣OBAを傾けて、左眼でも右眼でも同じ側面が見える状態にすると、見やすくなる。しかしながら、どちらに傾けるかの判定が、左眼用と右眼用で分かれてしまうと、余計見づらくなってしまう。そのため、この判定に使用する視線ベクトルとして、仮想視線を用いるようにしてもよい。
また漫画やセルアニメにおいては、髪型の関係で、正面顔が描かれないようなキャラクタが、しばしば登場する。このようなキャラクタをCGモデル化した場合に、見慣れない正面顔を避けるために、図20(A)、図20(B)の場合と同様に、キャラクタを、どちらかに強制的に傾ける処理を行う場合がある。このような場合の判定に使用する視線ベクトルについても、仮想視線ベクトルを用いることが望ましい。
3.詳細な処理
次に本実施形態の詳細な処理例について図21、図22のフローチャートを用いて説明する。
図21に示すように、ユーザの入力情報、ゲーム状況情報又は視点とオブジェクトの位置関係情報等に基づいて、合成処理の合成率を設定する(ステップS1)。即ち、図12〜図13(B)で説明したような合成率の設定処理を行う。そして仮想空間へのオブジェクトの配置設定処理を行う(ステップS2)。例えばユーザの操作情報に基づいて、ゲーム演算処理や移動体の移動演算処理を行い、各フレームでのオブジェクトの配置位置を決定して、オブジェクト空間に配置設定する。
次に左眼用仮想カメラ、右眼用仮想カメラの設定を行う(ステップS3)。例えば、視点トラッキングなどにより求められた基準仮想カメラの位置、方向等に基づいて、左眼用仮想カメラ、右眼用仮想カメラの位置、方向を設定する。そして、左眼用ビューボリューム(視錐台)を視界に設定して、描画処理を行う(ステップS4、S5)。これにより左眼用仮想カメラから見える画像である左眼用画像が生成される。また右眼用ビューボリュームを視界に設定して、描画処理を行う(ステップS6、S7)。これにより右眼用仮想カメラから見える画像である右眼用画像が生成される。なお、処理系によっては、ステップS4とS6の処理を行った後に、ステップS5とS7の処理を行う場合もある。
図22は、図21のステップS5、S7の描画処理の詳細例を示すフローチャートである。まず図21のステップS1で設定された合成率等に基づいて、仮想視線ベクトルを設定する(ステップS11)。即ち図10、図11に示すように仮想視線ベクトルTVL、TVRを設定する。そして仮想カメラの視線ベクトルを用いた頂点シェーダ処理等を実行する(ステップS12)。次に仮想視線ベクトルを用いたピクセルシェーダ処理を実行する(ステップS13)。即ち図18の頂点シェーダ310等の処理は、仮想カメラの視線ベクトルを用いて行い、ピクセルシェーダ320の処理は、仮想視線ベクトルを用いて行う。
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(第1視点、第2視点、第1視線ベクトル、第2視線ベクトル、第1視点画像、第2視点画像等)と共に記載された用語(左眼用仮想カメラの視点、右眼用仮想カメラの視点、左眼用仮想カメラの視線ベクトル、右眼用仮想カメラの視線ベクトル、左眼用画像、右眼用画像等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また仮想空間の設定処理、立体視用画像の生成処理、仮想視線ベクトルの設定処理、視線ベクトルの合成処理、シェーディング処理等も、本実施形態で説明したものに限定されず、これらと均等な手法・処理・構成も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲーム装置、家庭用ゲーム装置、又は多数のユーザが参加する大型アトラクションシステム等の種々の画像生成システムに適用できる。
なお、本発明は上記で説明してきた2眼式の立体表示システムに限らず、多眼式や空間像方式の立体表示システムにも応用が可能である。多眼式及び空間像方式では、2眼式よりも同時に観察可能な回り込みの範囲が広く、場合によっては複数人で観測することもある。そのとき、多眼式であれば、複数の視点位置全てにおいて基準視線ベクトルを設定し、それを各視点画像に適用してもよいし、基準視線ベクトルと各視線ベクトルから、それぞれの仮想視線ベクトルを決定した上で、それを各視点画像に適用してもよい。また、空間像方式の場合には、そもそも仮想カメラ(視点位置)が想定されていない場合もある(前述の特許文献2参照)。その場合も各ピクセル単位での視線ベクトルは存在するので、輝度の計算時にのみ、その視線ベクトルに代えて共通の基準視線ベクトルを適用して、各ピクセルの輝度を求めてもよいし、基準視線ベクトルと各視線ベクトルからそれぞれの仮想視線ベクトルを決定した上で、それを各ピクセルの輝度計算に適用してもよい。
但し、あまりに広い回り込み範囲に共通の仮想視線ベクトルを適用すると、陰影の付き方がかえって不自然となることもあり得る。そこで例えば、各観察者のヘッドトラッキングを行った上で、一人一人の観察者に相当する仮想視点については共通の基準視線ベクトルを設定するようにしてもよい。
VCL 左眼用仮想カメラ、VCR 右眼用仮想カメラ、
SVL、SVR 視線ベクトル、TVL、TVR、TV 仮想視線ベクトル、
RV 基準視線ベクトル、ASD 視線方向範囲、α 合成率、
OB、OB1、OB2 オブジェクト、IML 左眼用画像、IMR 右眼用画像、
LS 光源、NV 法線ベクトル、
100 処理部、102 入力処理部、110 演算処理部、111 情報取得部、
112 仮想空間設定部、113 移動体処理部、114 仮想カメラ制御部、
115 ゲーム処理部、120 表示処理部、130 音処理部、
140 出力処理部、160 操作部、
170 記憶部、172 オブジェクト情報記憶部、178 描画バッファ、
180 情報記憶媒体、192 音出力部、194 I/F部、
195 携帯型情報記憶媒体、196 通信部、
200 HMD(頭部装着型表示装置)、210 センサ部、
220 表示部、240 処理部

Claims (14)

  1. 複数のオブジェクトが配置される仮想空間の設定処理を行う仮想空間設定部と、
    前記仮想空間において複数の視点から見える複数の視点画像を立体視用画像として生成する表示処理部として、
    コンピュータを機能させ、
    前記表示処理部は、
    前記複数の視点の第1視点での第1視点画像を生成する際に、前記第1視点での第1視線ベクトルとは異なる視線ベクトルを用いて仮想視線ベクトルを設定し、前記仮想視線ベクトルを用いたシェーディング処理により、前記第1視点画像を生成することを特徴とするプログラム。
  2. 請求項1において、
    前記表示処理部は、
    前記第1視線ベクトルとは異なる1つの基準視線ベクトルを、前記仮想視線ベクトルに設定し、前記基準視線ベクトルを用いたシェーディング処理により、前記第1視点での前記第1視点画像を生成することを特徴とするプログラム。
  3. 請求項2において、
    前記表示処理部は、
    前記基準視線ベクトルを用いたシェーディング処理により、第2視点での第2視点画像を生成することを特徴とするプログラム。
  4. 請求項3において、
    前記基準視線ベクトルは、
    前記第1視線ベクトルの第1視線方向と、前記第2の視点での第2視線ベクトルの第2視線方向とで規定される視線方向範囲内の視線ベクトルであることを特徴とするプログラム。
  5. 請求項1において、
    前記表示処理部は、
    前記第1視線ベクトルと他の視線ベクトルとの合成処理により得られたベクトルを、第1仮想視線ベクトルに設定し、前記第1仮想視線ベクトルを用いたシェーディング処理により、前記第1視点での前記第1視点画像を生成することを特徴とするプログラム。
  6. 請求項5において、
    前記表示処理部は、
    第2視点での第2視線ベクトルと他の視線ベクトルとの合成処理により得られたベクトルを、第2仮想視線ベクトルに設定し、前記第2仮想視線ベクトルを用いたシェーディング処理により、前記第2視点での第2視点画像を生成することを特徴とするプログラム。
  7. 請求項6において、
    前記表示処理部は、
    前記第1視線ベクトルと基準視線ベクトルとの合成処理により得られたベクトルを、前記第1仮想視線ベクトルに設定し、前記第2視線ベクトルと前記基準視線ベクトルとの合成処理により得られたベクトルを、前記第2仮想視線ベクトルに設定し、
    前記基準視線ベクトルは、
    前記第1視線ベクトルの第1視線方向と、前記第2視線ベクトルの第2視線方向とで規定される視線方向範囲内の視線ベクトルであることを特徴とするプログラム。
  8. 請求項5乃至7のいずれかにおいて、
    前記合成処理での合成率が可変であることを特徴とするプログラム。
  9. 請求項8において、
    前記表示処理部は、
    前記合成処理での合成率を、ユーザの入力情報、ゲーム状況情報、及び前記仮想空間での視点とオブジェクトとの位置関係情報の少なくとも1つに応じて変化させることを特徴とするプログラム。
  10. 請求項1において、
    前記表示処理部は、
    前記第1視点での前記第1視線ベクトルと第2視点での第2視線ベクトルとのなす角度が所与の角度以上になった場合に、前記仮想視線ベクトルを用いた前記シェーディング処理を行うことを特徴とするプログラム。
  11. 請求項1乃至10のいずれかにおいて、
    前記表示処理部は、
    ピクセルシェーダ処理については前記仮想視線ベクトルを用いて行い、頂点シェーダ処理については前記第1視線ベクトルを用いて行うことを特徴とするプログラム。
  12. 請求項1乃至10のいずれかにおいて、
    前記表示処理部は、
    レイトレーシング処理の少なくとも一部について前記仮想視線ベクトルを用いて行うことを特徴とするプログラム。
  13. 請求項1乃至12のいずれかにおいて、
    前記表示処理部は、
    前記仮想視線ベクトルを用いて、照明モデルを用いたシェーディング処理及び輪郭線についてのシェーディング処理の少なくとも1つを行うことを特徴とするプログラム。
  14. 複数のオブジェクトが配置される仮想空間の設定処理を行う仮想空間設定部と、
    前記仮想空間において複数の視点から見える複数の視点画像を立体視用画像として生成する表示処理部と、
    を含み、
    前記表示処理部は、
    前記複数の視点の第1視点での第1視点画像を生成する際に、前記第1視点での第1視線ベクトルとは異なる視線ベクトルを用いて仮想視線ベクトルを設定し、前記仮想視線ベクトルを用いたシェーディング処理により、前記第1視点画像を生成することを特徴とする画像生成システム。
JP2017002775A 2017-01-11 2017-01-11 プログラム及び画像生成システム Pending JP2018112885A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017002775A JP2018112885A (ja) 2017-01-11 2017-01-11 プログラム及び画像生成システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017002775A JP2018112885A (ja) 2017-01-11 2017-01-11 プログラム及び画像生成システム

Publications (1)

Publication Number Publication Date
JP2018112885A true JP2018112885A (ja) 2018-07-19

Family

ID=62911219

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017002775A Pending JP2018112885A (ja) 2017-01-11 2017-01-11 プログラム及び画像生成システム

Country Status (1)

Country Link
JP (1) JP2018112885A (ja)

Similar Documents

Publication Publication Date Title
US11094106B2 (en) Simulation system, processing method, and information storage medium for changing a display object in response to a movement of a field of view
CN107376349B (zh) 被遮挡的虚拟图像显示
US11277603B2 (en) Head-mountable display system
US10744411B2 (en) Simulation system, processing method, and information storage medium
US9106906B2 (en) Image generation system, image generation method, and information storage medium
JP2012253690A (ja) プログラム、情報記憶媒体及び画像生成システム
GB2534580A (en) Image processing
JP2019175323A (ja) シミュレーションシステム及びプログラム
JP5572532B2 (ja) 表示制御プログラム、表示制御装置、表示制御方法および表示制御システム
US11961194B2 (en) Non-uniform stereo rendering
JPWO2018084087A1 (ja) 画像表示システム、画像表示装置、その制御方法、及びプログラム
JP5620202B2 (ja) プログラム、情報記憶媒体及び画像生成システム
JP2018157331A (ja) プログラム、記録媒体、画像生成装置、画像生成方法
JP6794390B2 (ja) シミュレーションシステム及びプログラム
JP7426413B2 (ja) ブレンドモード3次元ディスプレイシステムおよび方法
JP5649846B2 (ja) プログラム及び画像生成システム
JP2016192029A (ja) 画像生成システム及びプログラム
JP7104539B2 (ja) シミュレーションシステム及びプログラム
JP2018112885A (ja) プログラム及び画像生成システム
JP3794694B2 (ja) 立体視用印刷物の製造方法、立体視用印刷物及びプログラム
JP4662238B2 (ja) 立体視用印刷物の製造方法、立体視用印刷物、画像生成方法及びプログラム
JP2012059009A (ja) プログラム、情報記憶媒体及び画像生成システム
JP2018186319A (ja) 立体画像表示制御装置、立体画像表示制御方法及び立体画像表示制御プログラム
JP2004178580A (ja) 立体視用印刷物の製造方法、立体視用印刷物