以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.シミュレーションシステム
図1は、本実施形態のシミュレーションシステム(シミュレータ、ゲームシステム)の構成例を示すブロック図である。本実施形態のシミュレーションシステムは例えばバーチャルリアリティ(VR)をシミュレートするシステムであり、ゲームコンテンツを提供するゲームシステム、スポーツ競技シミュレータや運転シミュレータなどのリアルタイムシミュレーションシステム、映像等のコンテンツを提供するコンテンツ提供システム、或いは遠隔作業を実現するオペレーティングシステムなどの種々のシステムに適用可能である。なお、本実施形態のシミュレーションシステムは図1の構成に限定されず、その構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
撮像部150は、1又は複数のカメラにより構成される。各カメラは、レンズ(広角レンズ)等の光学系や、CCDやCMOSセンサ等の撮像素子により構成される。また撮像部150に1又は複数のマイクを設けてもよい。撮像部150を用いることで、ユーザの動き情報(各部位の動き情報、スケルトン情報)を検出したり、ユーザの認識処理(顔認識等)を実現できる。また複数のカメラを撮像部150に設けることで、空間の奥行き方向を認識し、撮像部150の前方でプレイしている二人のユーザの前後関係を判断することなどが可能になる。また複数のマイクを撮像部150に設けることで、音源の方向等を検出できる。例えば複数のカメラ及び複数のマイクが設けられた撮像部150を用いることで、ユーザの動きや音声などを操作情報として直感的にプレイできるゲームを実現することが可能になる。
操作部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を含む。センサ部210は、例えばヘッドトラッキングなどのトラッキング処理を実現するためものである。例えばセンサ部210を用いたトラッキング処理により、HMD200の位置、方向を特定する。HMD200の位置、方向が特定されることで、ユーザの視点情報である視点位置、視線方向を特定できる。
トラッキング方式としては種々の方式を採用できる。トラッキング方式の一例である第1のトラッキング方式では、後述の図2(A)、図2(B)で詳細に説明するように、センサ部210として複数の発光素子(LED)を設ける。そして、これらの複数の発光素子からの光を、撮像部150で撮像することで、現実世界の3次元空間でのHMD200(ユーザの頭部)の位置、方向を特定する。第2のトラッキング方式では、後述の図3(A)、図3(B)で詳細に説明するように、センサ部210として複数の受光素子(フォトダイオード等)を設ける。そして外部に設けられた発光素子(LED等)からの光(レーザー等)をこれらの複数の受光素子により受光することで、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次元的な音の方向や距離や広がりの再現を実現してもよい。
音出力部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は、ゲーム処理部112、移動体処理部114、判定部115、仮想空間設定部116、仮想カメラ制御部118、表示処理部120、音処理部130を含む。上述したように、これらの各部により実行される本実施形態の各処理は、プロセッサ(或いはプロセッサ及びメモリ)により実現できる。なお、これらの構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
入力処理部102は、操作情報やトラッキング情報を受け付ける処理や、記憶部170から情報を読み出す処理や、通信部196を介して情報を受信する処理を、入力処理として行う。例えば入力処理部102は、操作部160を用いてユーザが入力した操作情報やHMD200のセンサ部210等により検出されたトラッキング情報を取得する処理や、読み出し命令で指定された情報を、記憶部170から読み出す処理や、外部装置(サーバ等)からネットワークを介して情報を受信する処理を、入力処理として行う。ここで受信処理は、通信部196に情報の受信を指示したり、通信部196が受信した情報を取得して記憶部170に書き込む処理などである。
演算処理部110は、各種の演算処理を行う。例えばゲーム処理(シミュレーション処理)、移動体処理、仮想カメラ制御処理、表示処理、或いは音処理などの演算処理を行う。
ゲーム処理部112(ゲーム処理のプログラムモジュール)はユーザがゲームをプレイするための種々のゲーム処理を行う。別の言い方をすれば、ゲーム処理部112(シミュレーション処理部)は、ユーザが仮想現実(バーチャルリアリティ)を体験するための種々のシミュレーション処理を実行する。ゲーム処理は、例えば、ゲーム開始条件が満たされた場合にゲームを開始する処理、開始したゲームを進行させる処理、ゲーム終了条件が満たされた場合にゲームを終了する処理、或いはゲーム成績を演算する処理などである。
移動体処理部114(移動体処理のプログラムモジュール)は、仮想空間内で移動する移動体についての種々の処理を行う。例えば仮想空間(オブジェクト空間、ゲーム空間)において移動体を移動させる処理や、移動体を動作させる処理を行う。例えば移動体処理部114は、操作部160によりユーザが入力した操作情報や、取得されたトラッキング情報や、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、移動体(モデルオブジェクト)を仮想空間内で移動させたり、移動体を動作(モーション、アニメーション)させる制御処理を行う。具体的には、移動体の移動情報(位置、回転角度、速度、或いは加速度)や動作情報(パーツオブジェクトの位置、或いは回転角度)を、1フレーム(例えば1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動体の移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。移動体は、例えば実空間のユーザ(プレーヤ)に対応する仮想空間の仮想ユーザ(仮想プレーヤ)、当該仮想ユーザが搭乗(操作)する搭乗移動体(操作移動体)、或いは仮想ユーザのプレイ対象となるキャラクタなどである。
判定部115(判定処理のプログラムモジュール)は各種の判定処理を行う。判定部115の詳細については後述する。
仮想空間設定部116(仮想空間設定処理のプログラムモジュール)は、複数のオブジェクトが配置される仮想空間(オブジェクト空間)の設定処理を行う。例えば、移動体(人、ロボット、車、電車、飛行機、船、モンスター又は動物等)、マップ(地形)、建物、観客席、コース(道路)、樹木、壁、水面などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)を仮想空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。具体的には、記憶部170のオブジェクト情報記憶部172には、仮想空間でのオブジェクト(パーツオブジェクト)の位置、回転角度、移動速度、移動方向等の情報であるオブジェクト情報がオブジェクト番号に対応づけて記憶される。仮想空間設定部116は、例えば各フレーム毎にこのオブジェクト情報を更新する処理などを行う。
仮想カメラ制御部118(仮想カメラ制御処理のプログラムモジュール)は、仮想空間の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点、基準仮想カメラ)の制御処理を行う。例えば仮想カメラの視点位置又は視線方向(仮想カメラの位置又は姿勢)を制御する処理を行う。具体的には、仮想カメラの位置(X、Y、Z)や、姿勢情報である回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置、視線方向あるいは画角を制御する処理)を行う。この仮想カメラはユーザ(仮想ユーザ)の視点に対応する。立体視表示の場合は、左目用の第1の視点(左目用の第1の仮想カメラ)と、右目用の第2の視点(右目用の第2の仮想カメラ)が設定される。
表示処理部120(表示処理のプログラムモジュール)は、ゲーム画像(シミュレーション画像)の表示処理を行う。例えば処理部100で行われる種々の処理(ゲーム処理、シミュレーション処理)の結果に基づいて描画処理を行い、これにより画像を生成し、HMD200の表示部220に表示する。具体的には、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)を、描画バッファ178(フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ)に描画する。これにより、仮想空間において仮想カメラ(所与の視点。左目用、右目用の第1、第2の視点)から見える画像が生成される。なお、表示処理部120で行われる描画処理は、頂点シェーダ処理やピクセルシェーダ処理等により実現することができる。
音処理部130(音処理のプログラムモジュール)は、処理部100で行われる種々の処理の結果に基づいて音処理を行う。具体的には、楽曲(音楽、BGM)、効果音、又は音声などのゲーム音を生成し、ゲーム音を音出力部192に出力させる。なお音処理部130の音処理の一部(例えば3次元音響処理)を、HMD200の処理部240により実現してもよい。
出力処理部140は各種の情報の出力処理を行う。例えば出力処理部140は、記憶部170に情報を書き込む処理や、通信部196を介して情報を送信する処理を、出力処理として行う。例えば出力処理部140は、書き込み命令で指定された情報を、記憶部170に書き込む処理や、外部の装置(サーバ等)に対してネットワークを介して情報を送信する処理を行う。送信処理は、通信部196に情報の送信を指示したり、送信する情報を通信部196に指示する処理などである。
そして本実施形態のシミュレーションシステムは、図1に示すように、仮想空間設定部116と仮想カメラ制御部118と表示処理部120を含む。仮想空間設定部116は、複数のオブジェクトが配置される仮想空間の設定処理を行う。例えば複数のオブジェクトの各オブジェクトの位置、方向を設定して仮想空間に配置する処理を行う。オブジェクトはゲームに登場したりゲーム空間を構成するゲーム要素となる表示物である。
仮想カメラ制御部118は、HMD200を装着するユーザの視点に対応する仮想カメラの制御処理を行う。例えば仮想カメラ制御部118は、ユーザの一人称視点として設定される仮想カメラの制御を行う。例えば仮想空間において移動する仮想ユーザの視点に対応する位置に、仮想カメラを設定して、仮想カメラの視点位置や視線方向を設定することで、仮想カメラの位置(位置座標)や姿勢(回転軸回りでの回転角度)を制御する。
表示処理部120は、HMD200の表示画像(表示映像)として、仮想空間において仮想カメラ(ユーザ視点)から見える画像を生成する。例えば仮想空間であるオブジェクト空間において所与の視点から見える画像を生成する。生成される画像は例えば立体視用の画像である。
そして本実施形態では仮想空間設定部116は、ユーザの視線方向(ユーザの視野範囲)に少なくとも1つの情報表示物を配置する。具体的には、ユーザの視点変化(仮想カメラの視点変化)に追従するように制御される少なくとも1つの情報表示物を仮想空間に配置する。ここで視点変化は、例えば視線方向及び視点位置の少なくとも一方の変化である。即ち、仮想空間設定部116は、ユーザの視線方向及び視点位置の少なくとも一方に追従するように制御される情報表示物を配置する。例えばユーザの視線方向又は視点位置が変化すると、その変化に連動して仮想空間での情報表示物の配置位置(3次元位置)も変化する。例えばユーザの視線方向が左方向、右方向、上方向、下方向に変化すると、その方向の変化に追従するように仮想空間での情報表示物の位置や方向も変化する。或いはユーザの視点位置(ユーザ位置)が左方向、右方向、上方向、下方向に移動すると、その移動(位置の変化)に追従するように仮想空間での情報表示物の位置等も変化する。例えば情報表示物がビルボードポリゴンにより構成される場合には、ユーザの視点に正対するように(ユーザの視線方向に直交するように)、情報表示物を構成するビルボードポリゴンが配置される。
そして表示処理部120は、情報表示物と仮想空間のオブジェクト(複数のオブジェクトの各オブジェクト)とが所与の位置関係になった場合に、情報表示物又はオブジェクトの表示態様(表示方法、表示方式)の変更処理を行う。例えば表示処理部120は、情報表示物とオブジェクトが当該位置関係になった場合には、情報表示物とオブジェクトが当該位置関係になっている場合の画像とは異なった画像に見えるように、HMD200の表示画像を生成する。即ち、上述したように情報表示物は、ユーザの視線方向又は視点位置が変化すると、それに追従するように仮想空間での位置や方向が変化する。従って、情報表示物と、仮想空間の複数のオブジェクトの各オブジェクトとの位置関係は様々に変化する。そして、情報表示物とオブジェクトの位置関係が、所定の位置関係(衝突、接近の位置関係等)になると、情報表示物又はオブジェクトの表示態様(表示画像)が変更される。なお情報表示物及びオブジェクトの両方の表示態様の変更処理を行ってもよい。
この場合に表示処理部120は、情報表示物の種類、優先度又は重要度に応じた表示態様の変更処理を行ってもよい。例えば情報表示物の種類、優先度又は重要度を反映させた情報表示物又はオブジェクトの表示態様の変更処理を行う。情報表示物の種類は、例えば情報表示物が提示する情報のタイプなどによって区分けされるものである。例えば記憶部170には、各情報表示物に対してその種類の情報が関連づけられて記憶されており、この種類の情報を用いて表示態様の変更処理が行われる。情報表示物の優先度や重要度は、情報表示物により提示される情報が、どの程度、優先度や重要度が高いかを示す情報である。例えば記憶部170には、各情報表示物に対してその優先度や重要度の情報が関連づけられて記憶されており、この優先度や重要度の情報を用いて表示態様の変更処理が行われる。
例えば表示処理部120は、情報表示物が第1の種類である場合には、オブジェクトの方の表示態様を変更する。例えば、情報表示物が第1の種類(例えばコマンド選択のための情報表示物等)である場合には、オブジェクトの表示態様を変更(消去、半透明化等)する一方で、情報表示物の表示態様については変更しない。これに対して情報表示物が第2の種類(例えば説明表示のための情報表示物等)である場合には、情報表示物の方の表示態様を変更する。例えば情報表示物が第2の種類である場合には、情報表示物の表示態様を変更(消去、半透明化等)する一方で、オブジェクトの表示態様については変更しない。情報表示物が第1の種類であるか第2の種類であるかは、記憶部170において当該情報表示物に関連づけられて記憶される。
また表示処理部120は、情報表示物に関連づけられた優先度又は重要度を用いて、表示態様の変更処理を行う。例えば記憶部170には、情報表示物に対して優先度や重要度の情報が関連づけて記憶されている。表示処理部120は、表示態様の変更処理を行う場合に、処理対象となる情報表示物に関連づけられた優先度や重要度の情報を記憶部170から読み出して、情報表示物又はオブジェクト(位置関係の判定の対象となるオブジェクト)の表示態様を変更する処理を行う。
また表示処理部120は、情報表示物が表示されてからの経過時間に応じた表示態様の変更処理を行う。例えば各情報表示物が表示されてからの経過時間を測定して記録しておく。そして情報表示物又はオブジェクトの表示態様の変更処理を行う際には、当該経過時間を反映させた処理を行う。例えば表示されてからの経過時間が長い情報表示物は、経過時間が短い情報表示物に比べて、その表示態様の変更処理を優先して行うようにする。
また表示処理部120は、表示態様の変更処理として、情報表示物又はオブジェクトの消去処理、情報表示物又はオブジェクトの半透明化処理、ユーザの視線方向への情報表示物の追従の解除処理、情報表示物又はオブジェクトの移動処理、情報表示物又はオブジェクトのサイズ変更処理、或いは情報表示物又はオブジェクトの色情報変更処理など行う。
情報表示物又はオブジェクトの消去処理は、情報表示物又はオブジェクトを、表示対象(表示リスト)から除外する処理や、透明化する処理などにより実現できる。情報表示物又はオブジェクトの半透明化処理は、情報表示物又はオブジェクトの半透明度(α値)を、例えば、より半透明になるように変化させることなどで実現できる。また前述のように情報表示物はユーザの視線方向の変化に追従するように制御されるが、この追従の制御を解除(低減)することで、ユーザの視線方向への情報表示物の追従の解除処理を実現できる。情報表示物又はオブジェクトの移動処理やサイズ変更処理は、情報表示物とオブジェクトの位置関係が、例えば衝突又は接近の位置関係等にならないように、情報表示物又はオブジェクトを移動させたり、情報表示物又はオブジェクトのサイズを変更することなどにより実現できる。情報表示物又はオブジェクトの色情報変更処理は、例えば情報表示物又はオブジェクトの色の明度、彩度又は色相等を変更する処理などにより実現できる。例えば情報表示物又はオブジェクトの色情報変更処理として、情報表示物又はオブジェクトの色情報を例えば背景の色情報に近づけて、背景に溶け込ませる処理などが考えられる。このような処理は、例えば情報表示物又はオブジェクトの色情報と背景の色情報に基づくαブレンディング処理やデプスキューイング処理などにより実現できる。
情報表示物は、例えば説明表示のための表示物、ステータス表示のための表示物、会話表示のための表示物、コマンド選択のための表示物、又はメニュー表示のための表示物などである。説明表示のための表示物は、例えば、ユーザに対してゲーム等についての各種の説明を行うための表示物である。ステータス表示のための表示物は、例えば、ゲーム等についての各種の状況をユーザに伝えるための表示物である。会話表示のための表示物は、例えば、各種の会話内容をユーザに伝えるための表示物である。例えばユーザのプレイ対象となるキャラクタの会話内容を伝えるための表示物である。コマンド選択のための表示物は、例えばゲーム等においてユーザがコマンドを選択するために使用される表示物である。例えばコマンドの選択肢をユーザに提示するための表示物である。メニュー表示のための表示物は、例えば、ゲーム等におけるメニュー画面をユーザに提示するための表示物である。例えばゲームモード、ゲーム設定(オプション設定)、又はゲームの終了指示などのメニュー画面を提示するための表示物である。情報表示物は、例えば文字、アイコン又は図形等を用いてユーザに情報を伝達する表示物である。一例としては、情報表示物は、ユーザに提示する情報が描かれたビルボードポリゴンなどにより実現できる。
一方、オブジェクト(情報表示物との位置関係の判定対象となるオブジェクト)は、例えばゲームに登場する移動体、固定物、アイテム、又は背景のオブジェクトなどである。ゲームに登場する移動体は、例えばユーザのプレイ対象となるキャラクタや、ゲームにおいて種々の方向、位置に移動する表示物である。固定物は、移動体のように移動せずに、仮想空間の所定の位置に固定される表示物である。アイテムは、ゲームに登場する各種の道具等の表示物であり、ユーザのプレイ対象、所持対象又は把持対象となる表示物である。背景のオブジェクトは、ゲーム等の背景を構成するオブジェクトである。例えば、オブジェクトは、仮想空間に配置される複数のオブジェクトのうち、情報表示物以外のオブジェクトであり、当該オブジェクトは、情報表示物との位置関係の判定対象となることができる。
またシミュレーションシステムは判定部115を含み、判定部115は、情報表示物とオブジェクトの位置関係を判定する。例えば判定部115は、情報表示物とオブジェクトが所与の位置関係(衝突又は接近の位置関係等)になったかを判定する。そして表示処理部120は、判定部115により情報表示物とオブジェクトとが所与の位置関係になったと判定された場合に、情報表示物又はオブジェクトの表示態様の変更処理を行う。
具体的には表示処理部120は、判定部115により情報表示物とオブジェクトとが衝突又は接近(近接)の位置関係になったと判定された場合に、表示態様の変更処理を行う。例えば接近の位置関係になったか否かは、情報表示物とオブジェクトの距離(3次元座標での距離、奥行き方向での距離等)が所定の距離以下になった否かを判断することで判定できる。衝突の位置関係になったか否かは、情報表示物とオブジェクトについて公知のコリジョン処理を行うことで判定できる。例えば情報表示物とオブジェクトのヒット判定(交差判定)を行うことで実現できる。
また判定部115は、情報表示物とオブジェクトの3次元座標値、情報表示物とオブジェクトの奥行き値、又は情報表示物とオブジェクトを平面に投影した場合の2次元座標値に基づいて、位置関係を判定できる。例えば情報表示物とオブジェクトの3次元座標値やサイズ情報(形状情報)などに基づいて、情報表示物とオブジェクトが衝突又は接近の位置関係等になったか否かを判定する。或いは情報表示物の奥行き値(Z値)とオブジェクトの奥行き値(Z値)を比較することで、情報表示物とオブジェクトが所与の位置関係になったか否かを判定する。或いは、情報表示物とオブジェクトを平面(スクリーン)に投影し、その平面(投影画像)での情報表示物とオブジェクトの2次元座標値(2次元形状)を用いて、情報表示物とオブジェクトが衝突又は接近の位置関係等になったか否かを判定する。例えばその平面上での情報表示物とオブジェクトの重なりや距離を判断することで、衝突又は接近の位置関係等になったか否かを判定できる。
また仮想空間設定部116は、ユーザの視線方向での所与の奥行き位置に、ユーザの視点変化(視線方向及び視点位置の少なくとも一方の変化)に追従するように情報表示物を配置する。例えばユーザの視点(仮想カメラ)に対する情報表示物の奥行き位置(奥行き距離)については変化しないようにしながら、視点変化(視線方向又は視点位置の変化)に追従するように、情報表示物を配置する。例えばユーザの視点(仮想カメラ)から所与の奥行き位置(Z座標軸での位置)に、例えばビルボードポリゴンで構成される情報表示物を配置する。
また仮想カメラ制御部118は、ユーザの視点情報のトラッキング情報に基づいて、ユーザの視点変化に追従するように仮想カメラを制御する。
例えば入力処理部102(入力受け付け部)は、HMD200を装着するユーザの視点情報のトラッキング情報を取得する。例えばユーザの視点位置、視線方向の少なくとも1つである視点情報のトラッキング情報(視点トラッキング情報)を取得する。このトラッキング情報は、例えばHMD200のトラッキング処理を行うことで取得できる。なおトラッキング処理によりユーザの視点位置、視線方向を直接に取得するようにしてもよい。一例としては、トラッキング情報は、ユーザの初期視点位置からの視点位置の変化情報(視点位置の座標の変化値)、及び、ユーザの初期視線方向からの視線方向の変化情報(視線方向の回転軸回りでの回転角度の変化値)の少なくとも一方を含むことができる。このようなトラッキング情報が含む視点情報の変化情報に基づいて、ユーザの視点位置や視線方向(ユーザの頭部の位置、姿勢の情報)を特定できる。
そして仮想カメラ制御部118は、取得されたトラッキング情報(ユーザの視点位置及び視線方向の少なくとも一方の情報)に基づいて仮想カメラの視点位置、視線方向を変化させる。例えば、仮想カメラ制御部118は、実空間でのユーザの視点位置、視線方向の変化に応じて、仮想空間での仮想カメラの視点位置、視線方向(位置、姿勢)が変化するように、仮想カメラを設定する。このようにすることで、ユーザの視点情報のトラッキング情報に基づいて、ユーザの視点変化に追従するように仮想カメラを制御できる。
なお本実施形態では、ユーザがプレイするゲームのゲーム処理として、仮想現実のシミュレーション処理を行う。仮想現実のシミュレーション処理は、実空間での事象を仮想空間で模擬するためのシミュレーション処理であり、当該事象をユーザに仮想体験させるための処理である。例えば実空間のユーザに対応する仮想ユーザやその搭乗移動体などの移動体を、仮想空間で移動させたり、移動に伴う環境や周囲の変化をユーザに体感させるための処理を行う。
またシミュレーションシステムはゲーム処理を行うゲーム処理部112を含む。そしてゲーム処理部112は、ユーザのゲームプレイの対象となるキャラクタの情報とユーザの視点情報との応じたコマンドの効果を、発動させる処理を行う。
例えば本実施形態では、複数のコマンドの中からユーザが選択したコマンドを受け付ける処理を行う。例えばユーザが選択可能なN個のコマンドの情報が記憶部170(コマンド情報記憶部)に記憶されている。そして、例えば、これらのN個のコマンドの中からM個(M<N)のコマンドが、自動的に或いはユーザにより選択されて、いわゆるデッキと呼ばれるコマンドのセットが編成される。ゲームプレイ中においては、ユーザは、これらのM個のコマンドの中から自身が所望するコマンドを選択する。すると、選択されたコマンドが、発動対象のコマンドとして受け付けられる。
そしてゲーム処理部112は、受け付けられたコマンドの効果を発動させる処理を、ゲーム処理として行う。例えば各コマンドの効果は各コマンドに関連づけられて、コマンド情報として、記憶部170に記憶されている。ゲーム処理部112は、ユーザが選択したコマンドに関連づけられた効果を発動させる処理を行う。
そしてゲーム処理部112は、コマンドの効果の発動結果に基づいて、ゲームパラメータを演算する処理、ゲームを進行させる処理、ゲーム成績(ゲーム結果)を演算する処理、或いはコマンドに対応するアイコンの制御処理などのゲーム処理を行う。
具体的には、ゲーム処理部112は、ゲームパラメータの値を増減させる演算処理を行う。そして演算処理後のゲームパラメータに基づいて、キャラクタの動作(挙動)を制御したり、ストーリーの分岐処理を行ったり、ゲームイベントを発生する処理を行ったりするなどの、各種のゲーム処理を行う。例えばユーザのゲームプレイの対象となるキャラクタとユーザとによりストーリーが進行するゲームの処理を行う。
表示処理部120は、上記のゲーム処理の結果に基づいて、ゲーム画像の表示処理を行う。例えばゲームパラメータの演算結果や、ゲーム進行処理の結果や、ゲーム成績の演算結果や、アイコンの制御処理の結果に応じたゲーム画像を、HMD200の表示部220に表示するための処理を行う。また音処理部130も、ゲーム処理の結果に基づいて、BGM、効果音又は音声等のゲーム音を、音出力部192から出力するための処理を行う。
そして本実施形態では、ゲーム処理部112は、ユーザのゲームプレイの対象となるキャラクタの情報とユーザの視点情報とに応じたコマンドの効果を、発動させる処理を行う。例えばキャラクタの情報とユーザの視点情報とにより設定(特定)される情報(例えば位置関係情報、視線関係情報、或いは注視情報等)に応じたコマンドの効果を、発動させる処理を行う。
具体的にはゲーム処理部112は、キャラクタの情報とユーザの視点情報とに応じて、コマンドの効果の度合い及びコマンドの効果の内容の少なくとも一方を変化させる処理を行う。例えばゲーム処理部112は、キャラクタの情報とユーザの視点情報とにより設定(特定)される情報(例えば位置関係情報、視線関係情報、或いは注視情報等)が変化すると、それに応じてコマンドの効果の度合い及びコマンドの効果の内容の少なくとも一方が変化するように、コマンドの発動処理を行う。
ここで、キャラクタの情報は、例えば、キャラクタの位置情報、方向情報、ゲームパラメータ情報、部位情報、姿勢情報及び種類情報の少なくとも1つである。キャラクタは、ゲームに登場するゲームプレイ要素であり、例えば実世界の人、動物、ロボット、或いは移動体等を表すものであり、ゲーム画像にオブジェクトとして表示されるものである。
具体的には、ユーザのゲームプレイの対象となるキャラクタは、例えばユーザのゲームプレイの相手となるキャラクタである。異性キャラクタとのコミュニケーションゲーム(人間関係シミュレーションゲーム)を例にとれば、ユーザのコミュニケーションの相手(候補)となるキャラクタである。例えば本実施形態では表示処理部120はユーザの例えば一人称視点でのゲーム画像を生成し、生成された一人称視点での画像をHMD200の表示部220に表示する。このようにすることで、あたかもゲーム空間(CGアニメの世界)の中に自分が入り込んだかのような仮想現実感をユーザに与えることができる。そしてキャラクタは、このゲーム空間(オブジェクト空間、仮想3次元空間)の中に、ユーザのゲームプレイの対象として登場する。これにより、ユーザは、あたかも本当の人間(キャラクタ)がユーザの眼前に存在するような仮想現実を感じることができる。なおユーザのゲームプレイの対象となるキャラクタとして、戦争ゲームやRPGゲームやスポーツゲームなどでユーザの敵や味方として登場するキャラクタを用いてもよい。
また、ゲームパラメータは、ゲーム処理(ゲーム進行処理等)に使用されるパラメータである。例えばゲームパラメータは、キャラクタやユーザのステータスや能力等を表すパラメータである。例えばキャラクタのゲームパラメータとしては、キャラクタの心理や状態を表すステータスパラメータ、キャラクタの能力を表すパラメータ、キャラクタの行動に関するパラメータ、或いはキャラクタの所持物に関するパラメータなどの種々のパラメータを想定できる。またキャラクタのゲームパラメータは、ユーザに対するキャラクタの評価を表すパラメータであってもよい。
キャラクタの部位情報は、キャラクタを構成する部位(部位オブジェクト)の種類情報(頭、胸、腰、足又は手等)や、部位の位置情報(キャラクタの代表位置に対する相対位置)や、或いは部位の形状情報(部位オブジェクトの形状)などである。キャラクタの姿勢情報は、例えば、座る、立つ、歩く、又は走るなどのキャラクタのモーションを特定する姿勢の情報である。例えばキャラクタがスケルトンモデルで表現される場合には、このスケルトンの形状情報がキャラクタの姿勢情報に対応する。キャラクタの種類情報は、例えばキャラクタのタイプ或いは属性と呼ばれるものであり、異性のキャラクタであれば、活発タイプ、真面目タイプ、甘えん坊タイプ、又は清楚タイプなどである。
またユーザの視点情報は、例えばユーザの視点位置情報、視線方向情報、及び仮想カメラ属性情報の少なくとも1つである。視点位置情報は、例えばゲーム空間(オブジェクト空間、仮想3次元空間)内において、ユーザの視点として設定される位置の情報である。視線方向情報は、当該視点でのユーザの視線方向を表す情報である。仮想カメラ属性情報は、ユーザの視点に設定される仮想カメラについての情報であり、例えば画角情報、立体視における両眼視差情報など種々の情報を想定できる。
更に具体的には、ゲーム処理部112は、ユーザとキャラクタとの位置関係情報に応じたコマンドの効果を、発動させる処理を行う。例えば、一人称視点の場合には、ユーザの視点位置とキャラクタの位置(代表位置)との位置関係情報に応じたコマンドの効果を、発動させる。位置関係情報は、ユーザの位置(視点位置、ユーザキャラクタの位置)とキャラクタの位置(代表位置、視点位置)との関係を表す情報である。この位置関係情報としては、例えばユーザとキャラクタとの距離(ゲーム空間での距離)などを想定できるが、これには限定されない。例えばユーザとキャラクタとの方向関係の情報であってもよい。
またゲーム処理部112は、ユーザの視線とキャラクタとの関係を表す視線関係情報に応じたコマンドの効果を、発動させる処理を行う。視線関係情報は、ユーザの視線とキャラクタとの関係を表す情報であり、例えばユーザの視線について、キャラクタとの相対的な関係を表す情報である。例えば視線関係情報は、キャラクタの位置(代表位置)や各部位を基準として、ユーザの視線がどの方向を向いているかに関する情報である。
またゲーム処理部112は、ユーザの注視情報に応じたコマンドの効果を、発動させる処理を行う。注視情報は、ユーザが注視しているキャラクタの部位の情報である注視部位情報、ユーザがキャラクタを注視しているか否かの情報である注視有無情報、ユーザがキャラクタを注視している時間を表す注視時間情報、及びユーザの注視時におけるキャラクタとの間の距離を表す注視距離情報の少なくとも1つである。
2.トラッキング処理
次にトラッキング処理の例について説明する。図2(A)に本実施形態のシミュレーションシステムで用いられるHMD200の一例を示す。図2(A)では、HMD200に対して複数の発光素子231〜236が設けられている。これらの発光素子231〜236は例えばLEDなどにより実現される。発光素子231〜234は、HMD200の前面側に設けられ、発光素子235や不図示の発光素子236は、背面側に設けられる。これらの発光素子231〜236は、例えば可視光の帯域の光を出射(発光)する。具体的には発光素子231〜236は、互いに異なる色の光を出射する。そして図2(B)に示す撮像部150をユーザPLの前方側に設置し、この撮像部150により、これらの発光素子231〜236の光を撮像する。即ち、撮像部150の撮像画像には、これらの発光素子231〜236のスポット光が映る。そして、この撮像画像の画像処理を行うことで、ユーザPLの頭部(HMD)のトラッキングを実現する。即ちユーザPLの頭部の3次元位置や向く方向(視点位置、視線方向)を検出する。
例えば図2(B)に示すように撮像部150には第1、第2のカメラ151、152が設けられており、これらの第1、第2のカメラ151、152の第1、第2の撮像画像を用いることで、ユーザPLの頭部の奥行き方向での位置等が検出可能になる。またHMD200のセンサ部210に設けられたモーションセンサのモーション検出情報に基づいて、ユーザPLの頭部の回転角度(視線)も検出可能になっている。従って、このようなHMD200を用いることで、ユーザPLが、周囲の360度の全方向うちのどの方向を向いた場合にも、それに対応する仮想空間(仮想3次元空間)での画像(ユーザの視点に対応する仮想カメラから見える画像)を、HMD200の表示部220に表示することが可能になる。なお、発光素子231〜236として、可視光ではなく赤外線のLEDを用いてもよい。また、例えばデプスカメラ等を用いるなどの他の手法で、ユーザの頭部の位置や動き等を検出するようにしてもよい。
またHMD200には、ヘッドバンド260や不図示のヘッドホン端子が設けられている。ヘッドホン端子にヘッドホン270(音出力部192)を接続することで、例えば3次元音響の処理が施されたゲーム音を、ユーザPLは聴くことが可能になる。
また図2(A)に示すようにユーザPLはゲームコントローラ166、167を所持している。ゲームコントローラ166、167は図1の操作部160に相当する。ゲームコントローラ166、167には発光素子237、238が設けられている。この発光素子237、238からの光を撮像部150で撮像することで、HMD200の場合と同様の手法で、ゲームコントローラ166、167の位置等が検出される。これによりユーザPLは種々の操作情報を入力することが可能になる。なお、ユーザの頭部の頷き動作や首振り動作をトラッキング処理により検出することで、ユーザの操作情報を入力できるようにしてもよい。
図3(A)に本実施形態のシミュレーションシステムに用いられるHMD200の他の例を示す。図3(A)に示すようにHMD200には複数の受光素子201、202、203(フォトダイオード)が設けられている。受光素子201、202はHMD200の前面側に設けられ、受光素子203はHMD200の右側面に設けられている。またHMDの左側面、上面等にも不図示の受光素子が設けられている。またHMD200にはヘッドバンド260が設けられ、ユーザPLはヘッドホン270を装着している。
図3(B)に示すように、ユーザPLの周辺には、ベースステーション280、284が設置されている。ベースステーション280には発光素子281、282が設けられ、ベースステーション284には発光素子285、286が設けられている。発光素子281、282、285、286は、例えばレーザー(赤外線レーザー等)を出射するLEDにより実現される。ベースステーション280、284は、これら発光素子281、282、285、286を用いて、例えばレーザーを放射状に出射する。そして図3(A)のHMD200に設けられた受光素子201〜203等が、ベースステーション280、284からのレーザーを受光することで、HMD200のトラッキングが実現され、ユーザPLの頭の位置や向く方向(視点位置、視線方向)を検出できるようになる。
また図3(A)に示すようにユーザPLが所持するゲームコントローラ166、167には、受光素子204〜206、207〜209が設けられている。そしてベースステーション280、284の発光素子281、282、285、286からのレーザーを、受光素子204〜206、207〜209により受光することで、HMD200の場合と同様の手法で、ゲームコントローラ166、167の位置等が検出される。これによりユーザPLは種々の操作情報を入力することが可能になる。
なお、ユーザの視点位置、視線方向(ユーザの位置、方向)を検出するトラッキング処理の手法は、図2(A)〜図3(B)で説明した手法には限定されない。例えばHMD200に設けられたモーションセンサ等を用いて、HMD200の単体でトラッキング処理を実現してもよい。即ち、図2(B)の撮像部150や図3(B)のベースステーション280、284などの外部装置を設けることなく、トラッキング処理を実現する。或いは、公知のアイトラッキング、フェイストラッキング又はヘッドトラッキングなどの種々の視点トラッキング手法により、ユーザの視点位置、視線方向などの視点情報を検出してもよい。例えばアイトラッキングでは、ユーザの左目、右目の瞳の位置や形状等を認識する。そして、左目の位置、右目の位置、左目の視線方向、右目の視線方向等を特定し、ユーザの視点情報を取得することで、トラッキング処理を実現する。このアイトラッキングは、例えば撮像部によりユーザの左目、右目を撮影し、その撮像画像に対して瞳等の画像認識処理を行うことなどで実現できる。また、フェイストラッキングでは、撮像部でユーザの顔を撮像し、顔の画像認識処理を行う。そして、画像認識処理の結果に基づいて、ユーザの顔の位置や向く方向を特定して、ユーザの視点位置、視線方向を求めて、トラッキング処理を実現する。
3.本実施形態の手法
次に本実施形態の手法について具体的に説明する。
3.1 ゲームの説明
まず本実施形態の手法により実現されるゲームの概要について説明する。このゲームは、ユーザが、ゲームに登場する異性のキャラクタとコミュニケーションをしながら、勉強を教えたり、様々なアドバイスをしたり、質問に答えたり、各種イベントをクリアして、ユーザに対するキャラクタの好感度等を高めたりする、コミュニケーションゲーム(人間関係シミュレーションゲーム)である。なお、以下では本実施形態の手法が適用されるゲームが、異性キャラクタ等とのコミュニケーションゲームである場合を主に例にとり説明する。しかしながら、本実施形態の手法が適用されるゲームはこれには限定されず、戦闘ゲーム、RPGゲーム、スポーツゲーム、アクションゲーム等の種々のゲームに適用可能である。
図4〜図6に、本実施形態のシミュレーションシステム(ゲームシステム)により生成されるゲーム画像の例を示す。本実施形態により実現されるゲームでは、ユーザ(プレーヤ)は、キャラクタCHの家庭教師としてその家を訪れ、勉強等を教える。ゲームには、複数のストーリーが用意され、各ストーリーごとに、異なるタイプのキャラクタCHが登場する。ユーザは、各ストーリーでの目的を達成しながら、キャラクタCHとの親密なコミュニケーションを楽しむ。
ゲームをプレイするユーザはHMD200を装着する。そしてユーザが、周囲の360度の全方向の各方向に視線を向けると、各方向で見えるべき画像がHMD200の表示部220に表示される。例えば図4において、ユーザがキャラクタCHの方に視線を向ければ、勉強をしているキャラクタCHの画像が表示部220に表示される。一方、ユーザが頭部を回して、ユーザの背面側に視線を向ければ、キャラクタCHの背面側に位置する部屋の家具等の画像が表示部220に表示される。従って、ユーザは、あたかもゲームの世界に自分が入ってしまったかのような仮想現実感を味わうことが可能になる。即ち、実際に部屋に入って、眼の前の異性に勉強を教えているかのような仮想現実感をユーザに与えることができ、ゲームへのユーザの没入感を高めることができる。
図4のゲーム画像では、キャラクタCH(広義には移動体)、キャラクタCHが所持する本(広義にはアイテム)、カーテンCT(広義には固定物)、壁WL(広義には背景)などのオブジェクトが表示されている。また情報表示物DSA、DSBが表示されている。
情報表示物DSAは説明表示のための表示物である。例えば情報表示物DSAにより、キャラクタCHが本を読んでいることが説明されている。情報表示物DSBはステータス表示のための表示物である。後述の図7で説明するように情報表示物DSBにより、キャラクタCHの種々のステータス情報が表示されている。
図4においてユーザがキャラクタCHの方に近づき、視線を向けるなどすると、図5に示すゲーム画像が表示される。図5では情報表示物DSC、DSD1、DSD2が更に表示されている。情報表示物DSCは会話表示のための表示物である。例えば情報表示物DSCには、キャラクタCHの会話である「何かご用ですか?」が表示されている。情報表示物DSD1、DSD2はコマンド選択(コマンド入力)のための表示物である。例えばキャラクタCHからの会話に対する返事(YES、NO)についてのコマンドが表示されている。
図5において「YES」のコマンドをユーザが選択すると、図6に示すようなゲーム画像が表示される。図6では情報表示物DSE1、DSE2、DSE3が表示されている。情報表示物DSE1、DSE2、DSE3はコマンド選択のための表示物(アイコン)である。例えば情報表示物DSE1、DSE2、DSE3にはコマンドCM1、CM2、CM3が対応づけられている。例えばユーザが情報表示物DSE1を選択すると、「もっと集中」というコマンドCM1の効果が発動する。情報表示物DSE2を選択すると、「叱る」というコマンドCM2の効果が発動する。情報表示物DSE3を選択すると、「声をかける」というコマンドCM3の効果が発動する。
なお、コマンドに対応する情報表示物(DSE1、DSE2、DSE3、DSD1、DSD1)の選択は、図1の操作部160を用いて行う。例えばユーザは、操作部160を用いて、ユーザが所望するコマンドに対応する情報表示物(アイコン)を選択し、選択した情報表示物に対応するコマンドの効果を発動させるというコマンド操作を行う。図2(A)、図3(A)を例にとれば、ユーザは、両手に所持したゲームコントローラ166、167を動かすことで、このようなコマンド操作を行う。或いは、有線で接続されたゲームコントローラ(不図示)を用いて、コマンド操作を行ってもよい。或いは、HMD200を頭部に装着したユーザが、コマンドに対応する情報表示物の方に視線方向を向けたり、首を縦や横に振るなどの動作を行うことで、コマンド操作を行うようにしてもよい。
図6では、ユーザは、「声をかける」というコマンドCM3に対応する情報表示物DSE3を選択している。これにより、「声をかける」というコマンドCM3の効果が発動される。例えば、コマンドCM3には、「声をかける」に対応する言葉(例えば「おーい!」、「頑張ってるか?」、「勉強してるか?」)の音声データが対応づけられている。そして、コマンドCM3が発動すると、当該音声データの再生が行われ、その言葉(文)の音声が図1の音出力部192から出力される。
また、コマンドが発動(コマンドの効果の発動)されると、キャラクタCHのゲームパラメータにも影響を与える。例えば、「声をかける」というコマンドCM3が発動されると、それに対応するキャラクタCHのゲームパラメータも変化する。
例えば図4〜図6では、キャラクタCHの各種状態であるゲームパラメータのステータスをユーザに伝えるための情報表示物DSBが表示されている。この情報表示物DSBにより、例えば図7に示すように、キャラクタCHの現在の心理状態、モチベーション、集中力、脈拍等の状態がユーザに伝えられる。これらの心理状態、モチベーション、集中力、脈拍は、キャラクタCHのゲームパラメータとして用意されている。
キャラクタCHの心理状態は、例えば色などを用いて表現される。例えば本実施形態のゲームでは、レッスンの課題が出され、例えば所定時間が経過することでレッスンが終了する。そして、例えばレッスン終了時の課題の達成量に応じて、ユーザのゲーム成績が決定される。例えばユーザのゲーム成績が高い場合には、例えば効果が高かったり、レア度の高いコマンド(アクション)のカードがユーザに付与される。
レッスンで出される各課題には、例えば赤、緑、青の属性が付与され、キャラクタCHの心理状態も、赤、緑、青の成分を有している。例えばキャラクタCHの心理状態が赤の成分が多い場合には、赤の属性の課題はすぐに消化できるが、緑、青の属性の課題は消化が遅い。同様に、キャラクタCHの心理状態が緑の成分が多い場合には、緑の属性の課題はすぐに消化できるが、赤、青の属性の課題は消化が遅い。従ってユーザは、情報表示物DSBに表示されるキャラクタCHの心理状態を見て、心理状態に合った属性の課題を消化させることで、達成される課題量が多くなり、レッスンを適正に完了できるようになる。
また図7に示すように、キャラクタCHにはモチベーション、集中力のゲームパラメータが設定されている。これらのモチベーション、集中力のゲームパラメータの値は、例えば0〜100(%)の間で変化し、その値が大きいほど、モチベーション、集中力が高くなる。モチベーションの値が高くなると、課題の消化速度が速くなる。一方、集中力の値は、時間経過に応じて下がって行くが、キャラクタCHの心理状態に応じて、その下がり度合いが大きくなったり、下がりにくくなったりする。また、集中力の値が所定値よりも低くなり、集中力が切れた状態になると、レッスンの休憩が必要になる。
また図7の情報表示物DSBの脈拍は、例えばキャラクタCHのユーザに対するドキドキ度や好感度を表すゲームパラメータとして機能する。例えばドキドキ度が高くなると、脈拍も高くなり、モチベーションが上がったり、集中力が下がりにくくなったり、課題の消化速度が速くなる。
3.2 表示態様の変更処理
図4〜図6に示すように本実施形態により実現されるゲームでは、種々の情報表示物が表示される。HMDを用いずに、表示部に疑似3次元画像を表示する従来の画像生成システムでは、このような情報表示物として、投影スクリーンに2次元的に表示される2次元表示物(スプライト等)が用いられていた。
しかしながら、HMDを用いたVR(バーチャルリアリティ)のシステムにおいて、説明表示、ステータス表示、コマンド選択、メニュー表示等の情報表示物として、2次元表示物を用いてしまうと、ユーザの仮想現実感を損ねたり、画面が見にくくなってしまうなどの問題を招く。例えば図4のキャラクタCH、本BK、カーテンCT、壁WLなどの3次元のオブジェクトが立体的に表示されるVR空間において、情報表示物だけが投影スクリーン上に2次元的に表示されてしまうと、仮想現実感を損ねてしまう。また多数の2次元の情報表示物が表示されてしまうと、これらの情報表示物が2次元的に重なったり、情報表示物によりオブジェクトが隠れて見えなくなり、非常に見にくい画面になってしまう。
そこで本実施形態では、ユーザの視線方向(ユーザの視界範囲、正面方向)に少なくとも1つの情報表示物を配置する。例えば情報表示物を、仮想空間の他のオブジェクトと同様に、3次元座標値を有するオブジェクトにより構成して、仮想空間に配置する。具体的には、ユーザの視点変化(視線方向及び視点位置の少なくとも一方の変化)に追従するように制御される情報表示物を、仮想空間に配置する。更に具体的には、ユーザの視線方向での所与の奥行き位置に、ユーザの視点変化に追従するように情報表示物を配置する。
図8(A)〜図8(D)は、このような情報表示物の表示手法についての説明図である。例えば図8(A)において、VPは、HMDを装着しているユーザPLの視点であり、VLは、ユーザPLの視線方向である。これらの視点VP、視線方向VLは、ユーザPLに対応する仮想カメラの視点、視線方向に相当する。
そして図8(A)では、ユーザPLの視線方向VLにおける奥行き値Z1、Z2の位置に、各々、情報表示物DS1、DS2が配置されている。奥行き値Z1、Z2は、例えば視点座標系(カメラ座標系)におけるZ座標軸の座標値である。情報表示物DS1、DS2は、例えばビルボードポリゴンにより実現される。即ち、ビルボードポリゴンに対して、図4〜図6で説明したような説明表示、ステータス表示、会話表示、コマンド選択表示、メニュー表示のための文字、アイコン又は図形等の画像をマッピングすることで、情報表示物DS1、DS2が実現されている。ビルボードポリゴン(ビルボードプリミティブ面)は、ユーザPLの視点VP(仮想カメラ)に正対(略正対)するように配置されるポリゴン(プリミティブ面)である。例えば情報表示物DS1、DS2のビルボードポリゴンは、視線方向VL(視線方向ベクトル)に直交(略直交)するように配置される。例えばビルボードポリゴンの面の法線方向が、視線方向VLに平行となるように配置される。なおビルボードポリゴンの配置方向は、このような方向には限定されず、種々の配置方向に設定可能である。また情報表示物をビルボードポリゴンとは異なる形式の表示物で実現してもよい。例えば複数のプリミティブ面(ポリゴン等)で構成される3次元形状のオブジェクトにより情報表示物を実現してもよい。
そして本実施形態では情報表示物DS1、DS2は、ユーザPLの視線方向VLの変化に追従するように制御される。例えば図8(B)では、ユーザPLの視線方向VLが右側方向に変化している。例えばHMDを装着しているユーザPLが右側方向を向いており、これにより仮想空間での仮想カメラの視線方向も右側方向に変化する。この場合に図8(B)に示すように、この視線方向VLの変化に追従するように、情報表示物DS1、DS2の位置や方向が変化する。例えば図8(B)においても、ユーザPLの視点VPに正対するように情報表示物DS1、DS2を構成するビルボードポリゴンが配置される。
また図8(C)では、ユーザPLの視線方向VLが左側方向に変化している。例えばHMDを装着しているユーザPLが左側方向を向いており、これにより仮想空間での仮想カメラの視線方向も左側方向に変化する。この場合にも図8(C)に示すように、この視線方向VLの変化に追従するように、情報表示物DS1、DS2の位置や方向が変化する。例えば図8(C)においても、ユーザPLの視点VPに正対するように情報表示物DS1、DS2を構成するビルボードポリゴンが配置される。
また図8(D)ではユーザPLの視線方向が上側方向に変化している。この場合にも図8(D)に示すように、この視線方向VLの変化に追従するように、情報表示物DS1、DS2の位置や方向が変化する。同様に、ユーザPLの視線方向が下側方向に変化した場合にも、その変化に追従するように情報表示物DS1、DS2の位置や方向が変化する。
このように図8(A)〜図8(D)の表示手法では、情報表示物が、仮想空間の他のオブジェクトと同様に、仮想空間に3次元的に配置される。従って、情報表示物の表示が原因でユーザの仮想現実感を損ねてしまう問題を解消できる。即ち、2次元の情報表示物が平面的に表示される従来の手法では、情報表示物の存在が原因で仮想現実感を損ねてしまう問題が生じるが、情報表示物を仮想空間に3次元的に配置する本実施形態の手法によれば、このような問題の発生を防止できる。また、このように情報表示物を3次元的に配置すれば、複数の情報表示物を表示する場合にも、ユーザにとって見やすい適切な表示にすることが可能になる。例えば図8(A)〜図8(D)に示すように、複数の情報表示物(DS1、DS2)を、奥行き値(Z1、Z2)を異ならせて配置することなども可能になり、ユーザにとって見やすい適切な情報表示物の表示が可能になる。また図8(A)〜図8(D)の表示手法によれば、ユーザの正面側に情報表示物が常に表示されるようになる。従って、ユーザの視線方向が種々の方向に向いた場合にも、ユーザの正面側に情報表示物が表示されて、ユーザにとって必要な種々の情報を、情報表示物を用いて適切に提示できるようになる。
なお情報表示物の表示手法は図8(A)〜図8(D)に示す手法には限定されず、種々の変形実施が可能である。また視線方向の変化に常に追従するように情報表示物を表示する必要は無く、例外的に追従しないようにしてもよい。或いは、視線方向の変化に時間的に遅れて追従するように情報表示物を表示してもよい。例えば視線方向が大きく変化した場合(視線方向の変化角度、変化速度又は変化加速度が所定値以上の場合)には、視線方向の変化に情報表示物が追従しないようにしたり、時間的に遅れて追従するようにしてもよい。そして、所与の時間が経過した場合に、情報表示物の再配置等の復帰処理を行うようにしてもよい。或いは、特定の情報表示物については、ユーザの視線方向の変化に追従しないようにしてもよい。例えば特定のオブジェクト(例えばユーザのプレイ対象となるキャラクタ)のステータス等を表示する情報表示物については、その特定のオブジェクトの近傍に表示されるように制御してもよい。
また図8(A)〜図8(D)では、情報表示物がユーザの視線方向の変化に追従する場合を説明したが、情報表示物を、ユーザの視点位置の変化に追従させてもよい。例えばユーザの視点位置(ユーザ位置)が上下左右に移動した場合に、この移動に追従するように情報表示物を上下左右に移動させる。情報表示物は、ユーザの視線方向の変化にのみ追従してもよいし、視点位置の変化にのみ追従してもよいし、視線方向の変化及び視点位置の変化の両方に追従してもよい。但し、以下では、説明の簡素化のために、ユーザの視点変化がユーザの視線方向の変化である場合を主に例にとり説明を行う。
図8(A)〜図8(D)の手法によれば、ユーザの仮想現実感を損なわないような情報表示物の適切な表示が可能になる。しかしながら、仮想空間内には情報表示物以外にも多数のオブジェクトが存在するため、これらのオブジェクトとの関係が問題になることが判明した。
例えば図9(A)では、仮想空間内には、ユーザPLの正面方向に情報表示物DS1、DS2が配置されると共に、他のオブジェクトOB1、OB2も配置されている。これらのオブジェクトOB1、OB2は例えば図4のキャラクタCH(移動体)、本BK(アイテム)、カーテンCT(固定物)、壁WL(背景)などに相当するオブジェクトである。そして図9(A)では情報表示物DS1、DS2とオブジェクトOB1、OB2の衝突は生じていない。
一方、図9(A)から図9(B)に示すようにユーザPLの視線方向VLが変化すると、この視線方向VLの変化に追従して情報表示物DS1、DS2の位置等が変化する。この場合に図9(B)では、情報表示物DS1、DS2とオブジェクトOB1、OB2が衝突(接近、干渉)する事態が発生している。このような事態が発生すると、例えば情報表示物DS1、DS2がオブジェクトOB1、OB2に対してめり込んでしまい、情報表示物DS1、DS2の一部が欠けて表示されたり、或いはオブジェクトOB1、OB2の一部が欠けて表示されるなどの不具合が生じる。例えば図9(B)の状態でユーザPLの視線方向が微少に変化すると、表示のチラツキも発生してしまい、表示品質が大きく劣化してしまう。
またユーザの視点位置(ユーザ位置)の変化に情報表示物が追従する場合にも、ユーザの視点位置が上下左右に移動することで、情報表示物がオブジェクトと衝突する問題が生じてしまう。
そこで本実施形態では情報表示物DS1、DS2とオブジェクトOB1、OB2が図9(B)のような位置関係になった場合に、情報表示物DS1、DS2又はオブジェクトOB1、OB2の表示態様の変更処理を行う。即ち、図9(B)のような衝突(接近、干渉)による表示の不具合を解消する表示態様の変更処理を行う。
例えば図10(A)では、情報表示物DS1、DS2の表示態様を変更している。具体的には情報表示物DS1、DS2の表示を消去したり、情報表示物DS1、DS2を半透明化する処理を行う。一方、オブジェクトOB1、OB2に対しては、このような表示態様の変更処理を行わない。情報表示物DS1、DS2の消去処理は、例えば表示リスト(表示オブジェクトリスト)から、情報表示物DS1、DS2を除外する処理などにより実現できる。情報表示物DS1、DS2の半透明化処理は、例えば情報表示物DS1、DS2の半透明度(α値)を透明に近づける処理を行うことで実現できる。或いは情報表示物DS1、DS2を、例えばフレームモデル等に変更して、説明表示、ステータス表示等の文字やアイコンや図形を消去するようにしてもよい。或いは、情報表示物DS1、DS2の色情報を変更してもよい。例えば情報表示物DS1、DS2の色を、視認性の低い色(目立たない色)に変更したり、背景に溶け込む色に変更する。
図10(B)では、オブジェクトOB1、OB2の表示態様を変更している。具体的にはオブジェクトOB1、OB2の表示を消去したり、オブジェクトOB1、OB2を半透明化する処理を行う。一方、情報表示物DS1、DS2に対しては、このような表示態様の変更処理を行わない。オブジェクトOB1、OB2の消去処理は、例えば表示リストから、オブジェクトOB1、OB2を除外する処理などにより実現できる。オブジェクトOB1、OB2の半透明化処理は、例えばオブジェクトOB1、OB2の半透明度を透明に近づける処理を行うことで実現できる。或いはオブジェクトOB1、OB2を、例えばフレームモデル等に変更して、色やテクスチャなどのプロパティが表示されないようにしてもよい。或いは、オブジェクトOB1、OB2の色情報を変更してもよい。例えばオブジェクトOB1、OB2の色を、視認性の低い色(目立たない色)に変更したり、背景に溶け込む色に変更する。
図10(C)では、情報表示物DS1とオブジェクトOB1の関係においては、オブジェクトOB1の方の表示態様を変更し、オブジェクトOB1の方を消去したり、半透明化する処理を行っている。例えば情報表示物DS1が、優先度又は重要度が高い表示物である場合には、情報表示物DS1ではなくオブジェクトOB1の方の表示態様を変更する。一方、情報表示物DS2とオブジェクトOB2の関係においては、情報表示物DS1の方の表示態様を変更し、情報表示物DS1の方を消去したり、半透明化する処理を行っている。例えば情報表示物DS2が、優先度又は重要度が低い表示物である場合には、オブジェクトOB2ではなく情報表示物DS2の方の表示態様を変更する。
即ち、情報表示物DS1が第1の種類(例えば重要度又は優先度が高い種類の表示物)である場合には、オブジェクトOB1の方の表示態様を変更する。一方、情報表示物DS2が第2の種類(例えば重要度又は優先度が低い種類の表示物)である場合には、情報表示物DS2の方の表示態様を変更する。
例えば図11(A)のテーブルデータでは、情報表示物DSF1、DSF2、DSF3に対して、その種類TPA、TPB、TPAが関連づけられている。このテーブルデータは図1の記憶部170に記憶される。そして種類TPAは、例えば優先度や重要度が低い種類であるため、オブジェクトとの衝突(接近、干渉)が発生した場合に、情報表示物の方の表示態様が変更される。例えば情報表示物の方を消去したり半透明化する処理を行う。一方、種類TPBは、例えば優先度や重要度が高い種類であるため、オブジェクトとの衝突が発生した場合に、情報表示物の表示態様は変更されない。例えば情報表示物の消去処理や半透明化処理は行われず、オブジェクトの方の消去処理や半透明化処理を行う。
図11(B)のテーブルデータでは、情報表示物DSG1、DSG2、DSG3に対して、その優先度(重要度)PRA、PRB、PRCが関連づけられている。このテーブルデータは図1の記憶部170に記憶される。そして情報表示物DSG1、DSG2、DSG3と他のオブジェクトの衝突が生じた場合には、DSG1、DSG2、DSG3の各情報表示物に関連づけられた優先度(重要度)PRA、PRB、PRCを用いて表示態様の変更処理を行う。例えば高い優先度(重要度)が関連づけられた情報表示物については、オブジェクトに対して衝突又は接近の位置関係になった場合にも、表示態様の変更処理は行わないようにする。そして例えばオブジェクトの方の表示態様を変更する。一方、低い優先度(重要度)が関連づけられた情報表示物については、オブジェクトに対して衝突又は接近の位置関係になった場合に、表示態様の変更処理を行う。そして例えばオブジェクトの方の表示態様は変更しないようにする。この場合に、オブジェクトに対しても優先度(重要度)を関連づけておき、情報表示物に関連づけられた優先度(重要度)と、オブジェクトに関連づけられた優先度(重要度)との比較処理を行うようにしてもよい。そして比較処理の結果に基づいて、表示態様の変更処理を行う。例えば情報表示物の方がオブジェクトよりも優先度(重要度)が高い場合には、オブジェクトの方の表示態様を変更する。一方、オブジェクトの方が情報表示物よりも優先度(重要度)が高い場合には、情報表示物の方の表示態様を変更する。
このように本実施形態では、情報表示物の種類、優先度又は重要度に応じた適切な表示態様の変更処理を実現できるようになる。例えば特定の種類の情報表示物については、オブジェクトとの間で衝突又は接近の位置関係になった場合にも、オブジェクトについてだけ表示態様を変更したり、逆に情報表示物についてだけ表示態様を変更できるようになる。或いは、情報表示物により提示される情報の優先度や重要度が高い場合には、オブジェクトとの間で衝突又は接近の位置関係になった場合にも、情報表示物については表示態様を変更せず、オブジェクトについてだけ表示態様を変更できるようになる。
また本実施形態では、図11(B)に示すように情報表示物に関連づけられた優先度又は重要度を用いて、表示態様の変更処理を行っている。このようにすれば、情報表示物に対して予め優先度又は重要度を関連づけておき、この優先度又は重要度を用いて適切な表示態様の変更処理を実行できるようになる。
例えば図4〜図6において、コマンド選択のための情報表示物(DSD1、DSD2、DSE1〜DSE3)は、優先度又は重要度が高い情報表示物である。例えばユーザの視線方向が変化することで、情報表示物とオブジェクトが衝突又は接近の位置関係になった場合に、コマンド選択のための情報表示物が消去又は半透明化されてしまうと、ユーザがコマンドを選択(入力)できなくなってしまい、ゲーム進行が停止してしまう。従って、このようなコマンド選択のための情報表示物に対しては、高い優先度又は重要度を関連づけておき、オブジェクトに対して衝突又は接近の位置関係になった場合には、情報表示物の方の消去処理や半透明化処理は行わずに、オブジェクトの方の消去処理や半透明化処理を行うようにする。
一方、説明表示のための情報表示物(DSA)は、優先度又は重要度がそれほど高くない情報表示物であり、オブジェクトに対して衝突又は接近の位置関係になった場合に、説明表示のための情報表示物が消去又は半透明化されても、ゲーム進行にはそれほど支障を来さない。従って、このような説明表示のための情報表示物に対しては、低い優先度又は重要度を関連づけておき、オブジェクトに対して衝突又は接近の位置関係になった場合には、情報表示物の消去処理や半透明化処理を行うようにする。このようにすることで、情報表示物の優先度又は重要度を反映した適切な表示処理を実現できるようになる。
また本実施形態では、情報表示物が表示されてからの経過時間に応じた表示態様の変更処理を行ってもよい。
例えば図12において、情報表示物DSH1、DSH2は、表示されてから、長い経過時間TE1、TE2が経過したタイミングで、表示態様変更処理の対象となっている。一方、情報表示物DSH3は、表示されてから、短い経過時間TE3が経過したタイミングで、表示態様変更処理の対象となっている。この場合に、表示されてからの経過時間TE1、TE2が長い情報表示物DSH1、DSH2に対しては、消去、半透明化等の表示態様の変更処理を行う。一方、表示されてからの経過時間TE3が短い情報表示物DSH3に対しては、消去、半透明化等の表示態様の変更処理を行わないようにする。
例えば、表示されてからの経過時間TE1、TE2が長い情報表示物DSH1、DSH2については、この長い経過時間TE1、TE2の間に、ユーザがこれらの情報表示物DSH1、DSH2を見ている可能性が高く、情報表示物DSH1、DSH2による情報伝達は十分に行われていると考えられる。従って、このような情報表示物DSH1、DSH2については、オブジェクトに対して衝突又は接近の位置関係になった場合に、消去又は半透明化等の表示態様の変更処理を行う。
一方、表示されてからの経過時間TE3が短い情報表示物DSH3については、短い経過時間TE3の間に、ユーザが情報表示物DSH3を十分に見ている可能性が低く、情報表示物DSH3による情報伝達は不十分であると考えられる。従って、このような情報表示物DSH3については、オブジェクトに対して衝突又は接近の位置関係になった場合に、消去又は半透明化等の表示態様の変更処理を行わないようにする。
即ち、多数の情報表示物が表示されている場合に、オブジェクトに対して衝突又は接近の位置関係になった全ての情報表示物を、消去又は半透明化してしまうと、情報表示物による情報伝達が不十分になってしまう問題が生じてしまう。この点、図12の手法によれば、表示されてからの経過時間を判断材料にして、表示態様の変更処理を行うか否かを決定しているため、このような問題の発生を効果的に防止できる。
3.3 表示態様の変更処理、位置関係の判定の具体例
次に表示態様の変更処理や、位置関係の判定の具体例について説明する。例えば表示態様の変更処理としては、情報表示物又はオブジェクトの消去処理又は半透明化処理、ユーザの視線方向への情報表示物の追従の解除処理、情報表示物又はオブジェクトの移動処理、或いは情報表示物又はオブジェクトのサイズ変更処理などがある。
例えば図13(A)では、表示態様の変更処理として、情報表示物DS又はオブジェクトOBの消去処理又は半透明化処理を行っている。例えば情報表示物DSとオブジェクトOBが衝突又は接近の位置関係になった場合に、いずれか一方を消去したり、半透明化する処理を行う。
図13(B)、図13(C)では、表示態様の変更処理として、ユーザPLの視線方向VLへの情報表示物DSの追従の解除処理を行っている。例えば本実施形態では図8(A)〜図8(D)で説明したように、情報表示物DSは、ユーザPLの視線方向VLの変化に追従するように制御される。
これに対して、図13(B)では、情報表示物DSとオブジェクトOBが衝突又は接近の位置関係になった場合に、この追従の制御を解除する。これにより図13(C)に示すようにユーザPLの視線方向VLが変化した場合にも、情報表示物DSの位置は変化しないようになる。従って、情報表示物DSがオブジェクトOBに衝突してめり込んでしまうなどの不具合の発生を防止できる。
また図14(A)では、情報表示物DSとオブジェクトOBが衝突又は接近の位置関係になった場合に、両者が離れるように例えば情報表示物DSを移動している。例えば図14(A)では情報表示物DSの右側にオブジェクトOBが位置しているため、情報表示物DSを左方向に移動して、両者が離れるようにする。これにより、情報表示物DSとオブジェクトOBが衝突又は接近の位置関係になった場合にも、移動により両者が離れることで、より適切な画像を表示できるようになる。なお図14(A)では情報表示物DSの方を移動させているが、オブジェクトOBの方を移動してもよい。具体的にはオブジェクトOBを右方向に移動して、情報表示物DSとオブジェクトOBが離れるようにする。
図14(B)では、情報表示物DSとオブジェクトOBが衝突又は接近の位置関係になった場合に、情報表示物DSのサイズを変更している。例えば情報表示物DSのサイズを小さくすることで、情報表示物DSの右側端部とオブジェクトOBの左側端部の間の距離が離れ、両者の衝突が解消される。なおオブジェクトOBの方のサイズを小さくしてもよい。
図14(C)では、情報表示物DSの方がオブジェクトOBよりも、ユーザの視点に対して手前側に位置する位置関係となっている。この場合には表示態様の変更処理として、例えば情報表示物DSのサイズを小さくする処理を行う。こうすることで、情報表示物DSに隠れてオブジェクトOBが見えなくなってしまう事態の発生を防止できる。なお、オブジェクトOBの方が情報表示物DSよりも手前側に位置する位置関係の場合には、オブジェクトOBの方のサイズを小さくしてもよい。
次に情報表示物とオブジェクトの位置関係の判定の具体例について説明する。本実施形態では図1の判定部115が情報表示物とオブジェクトの位置関係を判定し、判定部115により接近又は衝突の位置関係になったと判定された場合に、情報表示物又はオブジェクトの表示態様の変更処理が行われる。具体的には判定部115は、情報表示物とオブジェクトの3次元座標値、情報表示物とオブジェクトの奥行き値、又は情報表示物とオブジェクトを平面に投影した場合の2次元座標値に基づいて、このような位置関係を判定する。
例えば図15(A)では、情報表示物DSの3次元座標値(XA、YA、ZA)とオブジェクトOBの3次元座標値(XB、YB、ZB)を用いて、両者が接近の位置関係になったか否かを判定している。具体的には、これらの3次元座標値に加えて、情報表示物DS、オブジェクトOBのサイズ情報や形状情報を用いて、接近の位置関係を判定する。例えば情報表示物DSの端部(例えば右側端部)とオブジェクトOBの端部(例えば左側端部)の間の距離が所定距離以下になったか否かを判定することで、接近の位置関係を判定できる。或いは、情報表示物DS、オブジェクトOBを構成するポリゴンの複数の頂点の3次元座標値に基づいて、接近の位置関係を判定してもよい。
図15(B)では、情報表示物DSの3次元座標値(XA、YA、ZA)とオブジェクトOBの3次元座標値(XB、YB、ZB)を用いて、両者が衝突の位置関係になったか否かを判定している。この衝突の位置関係の判定は、公知のコリジョン処理(ヒット判定)により実現できる。例えば公知のコリジョン処理により、情報表示物DSとオブジェクトOBが交差したか否かを判定することで、衝突の位置関係の判定を実現できる。
図16(A)、図16(B)では、情報表示物DSの奥行き値ZA(Z値)とオブジェクトOBの奥行き値ZBを用いて、両者の位置関係を判定している。例えば図16(A)では、ZA<ZBとなっており、ユーザの視点から見て情報表示物DSの方がオブジェクトOBよりも手前側に位置する位置関係であると判定されている。このため、情報表示物DSの方の表示態様を変更する。例えば情報表示物DSを消去又は半透明化する処理を行うことで、情報表示物DSに隠れてオブジェクトOBが見えなくなってしまう事態が防止される。一方、図16(B)では、ZA>ZBとなっており、ユーザの視点から見てオブジェクトOBの方が情報表示物DSよりも手前側に位置する位置関係であると判定されている。このため、オブジェクトOBの方の表示態様を変更する。例えばオブジェクトOBを消去又は半透明化する処理を行うことで、オブジェクトOBに隠れて情報表示物DSが見えなくなってしまう事態が防止される。
また図17(A)、図17(B)では、情報表示物DS、オブジェクトOBを、投影スクリーンなどの平面SPLに投影した場合の2次元座標値(平面SPLでのX、Y座標値)に基づいて、両者の位置関係を判定している。例えば図17(A)、図17(B)では、平面SPLにおいて情報表示物DSとオブジェクトOBとが重なっていると判定される。図17(A)では情報表示物DSの方が視点から見て手前側に位置し、図17(B)ではオブジェクトOBの方が視点から見て手前側に位置している。このような位置関係を判定して、情報表示物DS、オブジェクトOBの一方の表示態様を変更する。例えば図17(A)では、情報表示物DSを消去又は半透明化する処理を行うことで、情報表示物DSに隠れてオブジェクトOBの一部の画像が欠けてしまう事態が防止される。一方、図17(B)では、オブジェクトOBを消去又は半透明化する処理を行うことで、オブジェクトOBに隠れて情報表示物DSの一部の画像が欠けてしまう事態が防止される。
以上のような位置関係の判定を行って、情報表示物又はオブジェクトの表示態様の変更処理を行うことで、両者の位置関係を考慮した適切な表示態様の変更処理を実現できるようになり、より適正な表示画像をHMDに表示できるようになる。
3.4 コマンド処理
次に図6で説明した本実施形態のコマンド処理の詳細について説明する。これまでのキャラクタ等を用いたコミュニケーションゲームでは、いわゆる2次元のゲームが主流であり、ユーザとキャラクタとの位置関係や視線関係等の関係は考慮されていなかった。従って、例えば図6の「声をかける」というコマンドCM3をユーザが行使した場合に、ユーザとキャラクタの距離が近くても、或いは遠くても、このコマンドCM3により発動される効果が、同じになってしまう。このため、ユーザは、キャラクタとの距離感等を感じることができず、ユーザの仮想現実感を向上できないという課題がある。
そこで本実施形態では、ユーザとキャラクタとの位置関係や視線関係や注視状況などに応じて、コマンドの効果を変化させる手法を採用している。例えば本実施形態では、ユーザのゲームプレイの対象となるキャラクタの情報とユーザの視点情報とに応じたコマンドの効果を、発動させる。例えば、キャラクタの情報とユーザの視点情報とに応じて、コマンドの効果の度合いや、効果の内容を変化させる。具体的には、キャラクタの位置情報、方向情報、ゲームパラメータ情報、部位情報、姿勢情報又は種類情報であるキャラクタの情報と、ユーザの視点位置情報、視線方向情報又は仮想カメラ属性情報である視点情報とに応じたコマンドの効果を、発動させる。
図18(A)〜図19(B)は、ユーザPLとキャラクタCHとの位置関係情報に応じたコマンドの効果を、発動させる手法の説明図である。
例えば図18(A)、図18(B)では、ユーザPLとキャラクタCHとの位置関係情報に応じて、コマンドの効果の度合いを変化させている。ここでは、位置関係情報は、ユーザPLとキャラクタCHとの距離LCであり、この距離LCは、ユーザPLの視点情報である視点VPと、キャラクタCHの情報である位置PCに基づき求められるものである。なお位置関係情報は、ユーザPLの方向とキャラクタCHの方向の関係を表す情報であってもよい。
そして図18(A)、図18(B)では、ユーザは「もっと集中!」というコマンドCM1を選択して、行使しているが、図18(A)ではユーザPLとキャラクタCHの距離LCは遠い。一方、図18(B)では距離LCは近い。
この場合に本実施形態では、図18(A)、図18(B)のようにユーザが同じコマンドCM1を行使したとしても、距離LCに応じて、コマンドCM1により発動される効果の度合いを変化させている。例えば、図18(A)では距離LCが遠いため、これに応じてコマンドCM1の効果の度合いは低くなり、図18(B)では距離LCが近いため、これに応じてコマンドCM1の効果の度合いは高くなる。
具体的には、「もっと集中!」というコマンドCM1が行使された場合に、図18(A)では、距離LCが遠いため、A1に示すように、キャラクタCHの集中力のゲームパラメータの上昇の度合いが小さい。これに対して図18(B)では、距離LCが近いため、A2に示すように、キャラクタCHの集中力のゲームパラメータの上昇の度合いが大きくなる。
このようにすれば、ユーザは、「もっと集中!」というコマンドCM1を行使する際に、キャラクタCHの近くに行って、当該コマンドCM1を行使することで、キャラクタCHの集中力を、より高めることが可能になる。従って、「もっと集中」という言葉を、キャラクタCHの近くに行って言ったような感覚を、ユーザに与えることができ、ユーザの仮想現実感を向上できる。
図19(A)、図19(B)は、ユーザPLとキャラクタCHとの位置関係情報に応じて、コマンドの効果の内容を変化させている。即ち図18(A)、図18(B)では効果の度合いを変化させていたが、図19(A)、図19(B)では効果の内容を変化させている。
例えば図19(A)では、ユーザは、キャラクタCHとの距離LCが遠い状態で、「声をかける」というコマンドCM3を行使している。この場合には、ユーザの「声をかける」言葉として、例えば「おーい!」という音声が出力されたり、「おーい!」のテロップ(吹き出し)がゲーム画面上に表示される。
一方、図19(B)では、ユーザは、キャラクタCHとの距離LCが近い状態で、「声をかける」というコマンドCM3を行使している。この場合には、ユーザの「声をかける」言葉として、例えば「だいじょうぶか!」「頑張ってるか?」という言葉の音声が出力されたり、これらの言葉のテロップがゲーム画面上に表示される。
即ち、図19(A)では、「声をかける」というコマンドCM3の効果の内容が、「おーい!」という言葉の音声出力(テロップ表示)という内容になっている。これに対して、図19(B)では、距離LCが近づくことで、「だいじょうぶか!」「頑張ってるか?」という言葉の音声出力という内容に変化している。
このようにすれば、同じ「声をかける」というコマンドCM3であっても、ユーザPLとキャラクタCHとの位置関係に応じて、そのコマンドの効果の内容が変化するようになる。従って、ユーザの仮想現実感やゲーム表現のバラエティ度の向上等を図れる。
図20(A)、図20(B)は、ユーザPLとキャラクタCHとの視線関係情報に応じたコマンドの効果を、発動させる手法の説明図である。
例えば図20(A)、図20(B)では、ユーザPLとキャラクタCHとの視線関係情報に応じて、コマンドの効果の度合いや効果の内容を変化させている。図20(A)、図20(B)では、視線関係情報は、ユーザPLの視線方向VLと、キャラクタCHの位置PCや視線方向VLCとの関係を表す情報である。
そして図20(A)、図20(B)では、ユーザは「アドバイスをする」というコマンドCM5を選択して、行使しているが、図20(A)では、ユーザPLの視線方向VLはキャラクタCHの位置PCの方向を向いていない。これに対して、図20(B)では、ユーザPLの視線方向VLはキャラクタCHの位置PCの方向を向いている。また図20(A)では、ユーザPLの視線方向VLとキャラクタCHの視線方向VLCは合っていない。これに対して図20(B)では、視線方向VLとVLCが合っている。
この場合に本実施形態では、図20(A)、図20(B)のようにユーザが同じコマンドCM5を行使したとしても、視線関係情報に応じて、コマンドCM2により発動される効果の度合いや効果の内容を変化させている。
例えば、図20(A)の視線関係の場合には、「アドバイスをする」というコマンドCM5の発動による効果の内容として、「普通のアドバイス」が行われる。例えば、普通の口調で、平凡な内容のアドバイスが行われる。そして、コマンドCM5による「普通のアドバイス」の効果として、キャラクタCHのゲームパラメータであるモチベーションは上昇するが、図20(A)では、B1に示すようにその上昇の度合いは小さい。
一方、図20(B)の視線関係の場合には、「アドバイスをする」というコマンドCM5の効果の内容として、「優しいアドバイス」が行われる。例えば、優しい口調で、やる気を出させるような内容のアドバイスが行われる。そして、コマンドCM5による「優しいアドバイス」の効果として、キャラクタCHのモチベーションが上昇するが、図20(B)では、B2に示すようにその上昇の度合いが大きい。
このようにすれば、図20(A)のように、ユーザがキャラクタCHの方を見ずに、目をそらして、「アドバイスする」のコマンドCM5を行使した場合に比べて、図20(B)に示すように、ユーザがキャラクタCHの方をちゃんと見て、コマンドCM5を行使した場合の方が、より良い内容のアドバイスになると共に、アドバイスによる効果であるモチベーションの上昇度合いも大きくなる。従って、ユーザは、あたかも目の前にいる異性に向かって、アドバイスの言葉をかけているような感覚を感じることができ、ユーザの仮想現実感を大幅に向上できる。
図21は、ユーザの注視情報に応じたコマンドの効果を、発動させる手法の説明図である。例えば図21では、ユーザが注視しているキャラクタCHの部位の情報である注視部位情報に応じたコマンドの効果を、発動させている。
具体的には図21では、「つつく」というコマンドCM4を行使している。ここで、図21のC1に示すように、ユーザがキャラクタCHの部位である肩を注視しながら、「つつく」というコマンドCM4を行使したとする。この場合には、ユーザがキャラクタCHの肩をつつく場面を表現した画像(映像)が表示されるようになる。例えば、ユーザの手(オブジェクト)が画面上に現れ、この手がキャラクタCHの肩をつつくという画像が表示される。一方、図21のC2に示すように、ユーザがキャラクタCHの部位である頭(おでこ)を注視しながら、「つつく」というコマンドCM4を行使したとする。この場合には、ユーザがキャラクタCHの頭をつつく場面を表現した画像が表示されるようになる。例えば、ユーザの手が画面上に現れ、この手がキャラクタCHの頭をつつくという画像が表示される。
このようにすれば、同じ「つつく」というコマンドCM4を行使した場合にも、ユーザが注視するキャラクタCHの部位に応じて、異なる内容の動作の「つつく」が行われるようになる。そして、ユーザが注視する部分に対して、ユーザの動作が行われるようになるため、ユーザは、実際にキャラクタCHをつついているような感覚を感じることができ、ユーザの仮想現実感を向上できる。
以上のような本実施形態のコマンド処理の手法によれば、ユーザの仮想現実感を、より向上できるようになる。一方、本実施形態のようなコマンド処理の手法では、図6、図21に示すように多数の情報表示物が配置されて表示される。従って、情報表示物と仮想空間内の他のオブジェクトとの衝突等の問題が生じやすい。この点、本実施形態では、情報表示物とオブジェクトが衝突等の位置関係になった場合にも、情報表示物又はオブジェクトの表示態様を変更する処理が行われるため、より適切な表示画像をHMDに表示することが可能になる。
3.5 処理例
次に本実施形態の処理例について図22のフローチャートを用いて説明する。まず、ユーザの視点情報のトラッキング情報を取得する(ステップS1)。例えば図2(A)〜図3(B)等で説明したトラッキング処理により得られたトラッキング情報を取得する。そして、取得されたトラッキング情報に基づいて、ユーザの視点変化に追従するように仮想カメラを制御する(ステップS2)。例えば現実世界においてユーザが上下左右方向に視線方向を向けた場合に、それに対応して仮想空間での仮想カメラの視線方向も上下左右方向に向くように、仮想カメラを制御する。また現実世界においてユーザの視点位置が上下左右方向に移動した場合に、それに対応して仮想空間での仮想カメラの視点位置も上下左右方向に移動するように、仮想カメラを制御する。
次に、情報表示物とオブジェクトの位置関係を判定する(ステップS3)。例えば図15(A)〜図17(B)で説明した手法により、両者の位置関係を判定する。そして、情報表示物とオブジェクトが衝突又は接近の位置関係になっているか否かを判断する(ステップS4)。そして衝突又は接近の位置関係になっている場合には、情報表示物又はオブジェクトの表示態様の変更処理を行う(ステップS5)。例えば図13(A)〜図14(C)で説明した表示態様の変更処理を行う。そして仮想空間において仮想カメラから見える画像を生成して、HMDに表示する(ステップS6)。例えば、仮想カメラから見える画像として、立体視の左目用、右目用の画像を生成して、HMDに表示する。
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(視点変化、移動体、アイテム等)と共に記載された用語(視線方向の変化、キャラクタ、本等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また仮想空間の設定処理、仮想カメラの制御処理、情報表示物の配置処理、表示態様の変更処理、位置関係の判定処理等も、本実施形態で説明したものに限定されず、これらと均等な手法・処理・構成も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲーム装置、家庭用ゲーム装置、又は多数のユーザが参加する大型アトラクションシステム等の種々のシミュレーションシステムに適用できる。