以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.シミュレーションシステム
図1は、本実施形態のシミュレーションシステム(シミュレータ、ゲームシステム、画像生成システム)の構成例を示すブロック図である。本実施形態のシミュレーションシステムはMR(Mixed Reality)やAR(Augmented Reality)などを実現するものであり、ゲームコンテンツを提供するゲームシステムなどの種々のシステムに適用可能である。なお、本実施形態のシミュレーションシステムは図1の構成に限定されず、その構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
操作部160は、ユーザ(プレーヤ)が種々の操作情報(入力情報)を入力するためのものである。操作部160は、例えば操作ボタン、方向指示キー、ジョイスティック、ハンドル、ペダル、レバー又は音声入力装置等の種々の操作デバイスにより実現できる。
検出部162はユーザの動きを検出するものであり、例えば加速度センサ、ジャイロセンサなどのモーションセンサにより実現できる。例えば検出部162はユーザの部位などに取り付けられてユーザの部位等の動きを検出する。例えばユーザの部位が動いた時の加速度等の変化を加速度センサ等のモーションセンサにより検出して、ユーザの動きを検出する。なおユーザの動きをカメラを用いて検出してもよい。一例としては、2つの赤外LEDと2つのカメラ(ステレオカメラ)で指先等の動きを検出するリープモーションセンサを用いてもよい。或いはキネクト(登録商標)による姿勢検出によりユーザの動きを検出してもよい。
撮像部164(カメラ)は、被写体の撮像を行うものであり、CCDやCMOSセンサなどの画像センサと、フォーカスレンズ等により構成される光学系などにより実現される。撮像部164は赤外線カメラなどにより実現されるデプスカメラであってもよい。例えば撮像部164に、赤外線パターンを投稿するIRプロジェクターを設け、投光した赤外線パターンを赤外線カメラにより読み取り、パターンの歪みからデプス情報を取得するライトコーディング方式を採用してもよい。
記憶部170は各種の情報を記憶する。記憶部170は、処理部100や通信部196などのワーク領域として機能する。ゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部170に保持される。記憶部170の機能は、半導体メモリ(DRAM、VRAM)、HDD(ハードディスクドライブ)、SSD、光ディスク装置などにより実現できる。記憶部170は、実空間情報記憶部171、オブジェクト情報記憶部172、描画バッファ178を含む。
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(DVD、BD、CD)、HDD、或いは半導体メモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータ(入力装置、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
表示部190は、本実施形態により生成された画像を出力するものであり、LCD、有機ELディスプレイ、或いはCRTなどにより実現できる。表示部190は、例えば後述の図2、図3のHMD200(頭部装着型表示装置)のディスプレイ(表示装置)である。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ又はヘッドホンなどにより実現できる。
I/F(インターフェース)部194は、携帯型情報記憶媒体195とのインターフェース処理を行うものであり、その機能はI/F処理用のASICなどにより実現できる。携帯型情報記憶媒体195は、ユーザが各種の情報を保存するためのものであり、電源が非供給になった場合にもこれらの情報の記憶を保持する記憶装置である。携帯型情報記憶媒体195は、ICカード(メモリカード)、USBメモリ、或いは磁気カードなどにより実現できる。
通信部196は、有線や無線のネットワークを介して外部(他の装置)との間で通信を行うものであり、その機能は、通信用ASIC又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバ(ホスト装置)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(あるいは記憶部170)に配信してもよい。このようなサーバ(ホスト装置)による情報記憶媒体の使用も本発明の範囲内に含めることができる。
処理部100(プロセッサ)は、操作部160からの操作情報や、図2、図3の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、仮想空間生成部104、オブジェクト処理部106、仮想カメラ制御部112、ゲーム処理部114、表示処理部120、音処理部130を含む。上述したように、これらの各部により実行される本実施形態の各処理は、プロセッサ(或いはプロセッサ及びメモリ)により実現できる。なお、これらの構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
情報取得部102は各種の情報の取得処理を行う。仮想空間生成部104は仮想空間の生成処理を行い、オブジェクト処理部106はキャラクタのオブジェクトや配置オブジェクトについての種々の処理を行う。情報取得部102、仮想空間生成部104、オブジェクト処理部106の詳細については後述する。
仮想カメラ制御部112(仮想カメラ制御処理のプログラムモジュール)は、仮想カメラの制御を行う。例えば、操作部160により入力されたユーザの操作情報やトラッキング情報などに基づいて、仮想カメラを制御する処理を行う。例えば仮想カメラ制御部112は、ユーザの一人称視点又は三人称視点として設定される仮想カメラの制御を行う。例えば実空間のユーザに対応する仮想空間のユーザ移動体の視点(一人称視点)に対応する位置に、仮想カメラを設定して、仮想カメラの視点位置や視線方向を設定することで、仮想カメラの位置(位置座標)や姿勢(回転軸回りでの回転角度)を制御する。或いは、ユーザ移動体に追従する視点(三人称視点)の位置に、仮想カメラを設定して、仮想カメラの視点位置や視線方向を設定することで、仮想カメラの位置や姿勢を制御する。
例えば仮想カメラ制御部112は、視点トラッキングにより取得されたユーザの視点情報のトラッキング情報に基づいて、ユーザの視点変化に追従するように仮想カメラを制御する。例えば本実施形態では、ユーザの視点位置、視線方向の少なくとも1つである視点情報のトラッキング情報(視点トラッキング情報)が取得される。このトラッキング情報は、例えばHMD200のトラッキング処理を行うことで取得できる。そして仮想カメラ制御部112は、取得されたトラッキング情報(ユーザの視点位置及び視線方向の少なくとも一方の情報)に基づいて仮想カメラの視点位置、視線方向を変化させる。例えば、仮想カメラ制御部112は、実空間でのユーザの視点位置、視線方向の変化に応じて、仮想空間での仮想カメラの視点位置、視線方向(位置、姿勢)が変化するように、仮想カメラを設定する。このようにすることで、ユーザの視点情報のトラッキング情報に基づいて、ユーザの視点変化に追従するように仮想カメラを制御できる。
ゲーム処理部114(ゲーム処理のプログラムモジュール)は、ユーザがゲームをプレイするための種々のゲーム処理を行う。別の言い方をすれば、ゲーム処理部114(シミュレーション処理部)は、ユーザがMR(Mixed Reality)、AR(Augmented Reality)、又はVR(Virtual Reality)などを体験するための種々のシミュレーション処理を実行する。ゲーム処理は、例えば、ゲーム開始条件が満たされた場合にゲームを開始する処理、開始したゲームを進行させる処理、ゲーム終了条件が満たされた場合にゲームを終了する処理、或いはゲーム成績を演算する処理などである。
表示処理部120は、仮想空間画像(ゲーム画像、シミュレーション画像)の表示処理を行う。例えば処理部100で行われる種々の処理(ゲーム処理、シミュレーション処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に表示する。具体的には、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)を、描画バッファ178(フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ)に描画する。これにより、仮想空間において仮想カメラ(所与の視点。左眼用、右眼用の第1、第2の視点)から見える画像が生成される。なお、表示処理部120で行われる描画処理は、頂点シェーダ処理やピクセルシェーダ処理等により実現することができる。
音処理部130(音処理のプログラムモジュール)は、処理部100で行われる種々の処理の結果に基づいて音処理を行う。具体的には、楽曲(音楽、BGM)、効果音、又は音声などのゲーム音を生成し、ゲーム音を音出力部192に出力させる。
そして本実施形態のシミュレーションシステムは、図1に示すように、情報取得部102と仮想空間生成部104とオブジェクト処理部106と表示処理部120を含む。
情報取得部102(情報取得処理のプログラムモジュール)は、ユーザの周囲の実空間の認識処理を行うことで得られる実空間情報を取得する。また情報取得部102は、ユーザの位置情報を含むユーザ情報を取得する。実空間の認識処理は例えば空間マッピングにより実現できる。例えば撮像部164として設けられた種々のカメラを用いて実空間の認識処理を行うことで、空間マッピングが実現される。後述の図2を例にとれば、HMD200に設けられたRGBカメラ246、デプスカメラ247、環境認識カメラ248、249を用いて実空間の認識処理を行う。実空間情報は、実空間の認識処理(空間マッピング)により得られた実空間の3Dマップ情報であり、スキャンした実空間をメッシュ化した情報である。実空間をスキャンすることで得られた実空間情報は実空間情報記憶部171に記憶される。実空間情報は例えば複数の空間データにより構成される。複数の空間データの各空間データは、実空間を複数の領域に分割してスキャンした際の各領域に対応するデータである。そして各空間データに対してID(サーフェスID)が割り当てられて、実空間情報記憶部171に記憶される。このIDが割り当てられた空間データに基づいて例えばポリゴンメッシュが生成され、スキャンした実空間をメッシュ化して表示することが可能になる。また実空間のマップと仮想空間のオブジェクトとのインタラクションも可能になる。
また情報取得部102は、実空間のユーザの位置情報を含むユーザ情報を取得する。ユーザ情報は実空間のユーザの方向情報を含むことができる。ユーザの位置情報としては、例えばユーザの視点位置情報を用いることができる。ユーザの方向情報としては、ユーザの視線方向情報を用いることができる。ユーザの位置情報(視点位置情報)や方向情報(視線方向情報)はHMD200のヘッドトラッキング処理により取得できる。
仮想空間生成部104(仮想空間生成処理のプログラムモジュール)は、情報取得部102により取得された実空間情報に基づいて、実空間に対応する仮想空間を生成する処理を行う。そして仮想空間生成部104は、3次元空間(ゲーム空間)である仮想空間の設定処理を行う。例えば実空間の認識処理(空間マッピング)により得られたマップ情報が、仮想空間情報として設定される。例えば実空間を分割した複数の領域に対応する複数の空間データにより、仮想空間情報が設定される。仮想空間情報は、オブジェクト情報としてオブジェクト情報記憶部172に記憶される。
また仮想空間生成部104(仮想空間設定部)は、オブジェクトが配置される仮想空間(オブジェクト空間)の設定処理を行う。例えば、移動体(ユーザ移動体、キャラクタ)、配置物、マップ(地形)、建物、観客席、コース(道路)、樹木、壁、水面などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)を仮想空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。具体的には、記憶部170のオブジェクト情報記憶部172には、仮想空間でのオブジェクト(パーツオブジェクト)の位置、回転角度、移動速度、移動方向等の情報であるオブジェクト情報がオブジェクト番号に対応づけて記憶される。仮想空間生成部104は、例えば各フレーム毎にこのオブジェクト情報を更新する処理などを行う。
オブジェクト処理部106(オブジェクト処理のプログラムモジュール)は、キャラクタのオブジェクトや配置オブジェクトについての各種の処理を行う。具体的にはオブジェクト処理部106は、ユーザ情報と実空間情報とに基づいて、仮想空間に基準点を設定する。例えばユーザの位置情報と実空間情報とに基づいて、仮想空間に基準点を設定する。この基準点の設定処理は基準点設定部108が行う。そしてオブジェクト処理部106は、基準点に基づいて、配置オブジェクトを仮想空間に配置する処理を行う。例えば基準点に対応して設定された配置ポイントに配置オブジェクトを配置する処理を行う。表示処理部120(表示処理のプログラムモジュール)は、配置オブジェクトの画像を含む画像を表示部190に表示する処理を行う。例えばHMD200の表示装置に、配置オブジェクトの画像を含む画像(仮想空間画像)を表示する処理を行う。
そして本実施形態では、オブジェクト処理部106が、ユーザに対応する仮想空間のユーザ移動体と配置オブジェクトとの位置関係に応じて、配置オブジェクトの表示態様を設定する処理を行う。例えばユーザ移動体と配置オブジェクトの距離関係や、ユーザ移動体の向く方向と配置オブジェクトとの方向関係などを、位置関係として判断する。そしてオブジェクト処理部106は、ユーザ移動体と配置オブジェクトが第1の位置関係(第1の距離関係、第1の方向関係)である場合には、配置オブジェクトが第1の表示態様で表示されるように設定する。ユーザ移動体と配置オブジェクトが第2の位置関係(第2の距離関係、第2の方向関係)である場合には、配置オブジェクトが第1の表示態様とは異なる第2の表示態様で表示されるように設定する。配置オブジェクトの表示態様は、配置オブジェクトの色、輝度(明るさ)、半透明度、テクスチャ又は表示内容などである。
例えばオブジェクト処理部106は、ユーザ移動体と配置オブジェクトの距離が近い場合(しきい値距離以下の場合)には、配置オブジェクトを第1の色、第1の輝度、又は第1の半透明度に設定したり、第1のテクスチャをマッピングしたり、或いは配置オブジェクトの表示内容を第1の表示内容に設定する。一方、ユーザ移動体と配置オブジェクトの距離が遠い場合(しきい値距離よりも長い場合)には、配置オブジェクトを第2の色、第2の輝度、又は第2の半透明度に設定したり、第2のテクスチャをマッピングしたり、或いは配置オブジェクトの表示内容を第2の表示内容に設定する。
またオブジェクト処理部106は、ユーザ移動体の方向(視線方向)が配置オブジェクトの方に向いている第1の方向関係である場合には、配置オブジェクトを第1の色、第1の輝度、又は第1の半透明度に設定したり、第1のテクスチャをマッピングしたり、或いは配置オブジェクトの表示内容を第1の表示内容に設定する。一方、ユーザ移動体の方向(視線方向)が配置オブジェクトとは異なる方向に向いている第2の方向関係である場合には、配置オブジェクトを第2の色、第2の輝度、又は第2の半透明度に設定したり、第2のテクスチャをマッピングしたり、或いは配置オブジェクトの表示内容を第2の表示内容に設定する。
ここで、第1の色は、例えば第2の色よりも視認度又は識別力が高い色(目立つ色)であり、第1の輝度は、第2の輝度よりも明るい輝度であり、第1の半透明度は、第2の半透明度より半透明度(α値)が高く、より不透明に近い半透明度である。第1のテクスチャは、第2のテクスチャよりも視認度又は識別力が高いテクスチャである。
また配置オブジェクトの表示内容は、配置オブジェクトに描かれる文字、記号又は図形等により表される指示内容等である。配置オブジェクトが、ユーザへのガイド用(案内表示用)の配置オブジェクトである場合に、表示内容は、ユーザへ指示するガイドや警告などの内容である。そして第1の表示内容は、ユーザ移動体と配置オブジェクトが第1の位置関係(第1の距離関係、第1の方向関係)である場合に、ガイドや警告などのためにユーザに指示する内容である。第2の表示内容は、ユーザ移動体と配置オブジェクトが第2の位置関係(第2の距離関係、第2の方向関係)である場合に、ガイドや警告などのためにユーザに指示する内容である。
またオブジェクト処理部106は、配置オブジェクトとして第1の配置オブジェクト及び第2の配置オブジェクトを配置する。なお配置オブジェクトの個数は2個に限定されず、3個以上でもよい。そしてオブジェクト処理部106は、ユーザ移動体の基準点側の方向に、第1の配置オブジェクト及び第2の配置オブジェクトが位置する場合に、第1の配置オブジェクトを表示状態に設定し、第2の配置オブジェクトを非表示状態に設定する。表示状態は例えば不透明な状態であり、非表示状態は例えば透明な状態である。そしてオブジェクト処理部106は、ユーザ移動体の基準点側の方向の反対方向に、第1の配置オブジェクトが位置し、ユーザ移動体の基準点側の方向に、第2の配置オブジェクトが位置する場合に、第1の配置オブジェクトを非表示状態に設定し、第2の配置オブジェクトを表示状態に設定する。即ち、表示状態であった第1の配置オブジェクトを非表示状態に変化させ、非表示状態であった第2の配置オブジェクトを表示状態に変化させる。例えば表示状態であった第1の配置オブジェクトを、徐々に透明にして行くことで、透明状態である非表示状態に変化させる。また非表示状態であった第2の配置オブジェクトを、徐々に半透明度(α値)を高くして行くことで、不透明状態である表示状態に変化させる。別の言い方をすれば、ユーザ移動体と基準点との距離が、第1の距離関係である場合には、第1の配置オブジェクトを表示状態に設定し、第2の配置オブジェクトを非表示状態に設定する。一方、ユーザ移動体と基準点との距離が、第1の距離関係よりも近い第2の距離関係である場合には、第1の配置オブジェクトを非表示状態に設定し、第2の配置オブジェクトを表示状態に設定する。
また仮想空間のオブジェクトには表示に関する優先順位が設定されている。この優先順位の情報は例えば記憶部170(オブジェクト情報記憶部172)に記憶される。そしてオブジェクト処理部106は、配置オブジェクトが仮想空間の他のオブジェクトと、ユーザ移動体から見て重なって配置される場合(ユーザ移動体の視線方向において重なって配置される場合)には、優先順位に基づいて配置オブジェクトの表示態様を設定する。ここで他のオブジェクトは、第2の配置オブジェクトであってもよいし、配置オブジェクトではないオブジェクトであってもよい。配置オブジェクトではないオブジェクトとは、配置オブジェクトとは種類が異なるオブジェクトであり、例えばイベントの発生時に表示されるオブジェクトなどである。
例えば配置オブジェクトよりも仮想空間の他のオブジェクト(第2の配置オブジェクト又は配置オブジェクトではないオブジェクト)の方が表示に関する優先順位が高い優先順位に設定されていたとする。そして配置オブジェクトと他のオブジェクトが、ユーザ移動体から見て(ユーザ移動体の視線方向において)、重なって配置されていたとする。この場合には、表示に関する優先順位が高い他のオブジェクトを表示状態に設定し、表示に関する優先順位が低い配置オブジェクトを非表示状態に設定する。例えば配置オブジェクトの方が、ユーザ移動体から見て他のオブジェクトよりも手前側に配置されている場合にも、他のオブジェクトを表示状態に設定し、配置オブジェクトを非表示状態に設定する。一方、仮想空間の他のオブジェクトよりも仮想空間の配置オブジェクトの方が表示に関する優先順位が高い優先順位に設定されていたとする。そして配置オブジェクトと他のオブジェクトが、ユーザ移動体から見て、重なって配置されていたとする。この場合には、表示に関する優先順位が高い配置オブジェクトを表示状態に設定し、表示に関する優先順位が低い他のオブジェクトを非表示状態に設定する。
またオブジェクト処理部106は、ユーザ移動体の視線方向に応じて、配置オブジェクトの表示態様又は配置態様を設定する。ユーザ移動体の視線方向は、例えばユーザの視線方向に対応し、例えばユーザ移動体の向く方向とも言える。配置オブジェクトの配置態様は、配置オブジェクトの配置位置、配置方向又は配置数などである。例えばオブジェクト処理部106は、ユーザ移動体の視線方向(ユーザの視線方向)が、基準点の方に向いている場合と、基準点とは異なる方向に向いている場合とで、配置オブジェクトの表示態様又は配置態様を異ならせる。例えば、配置オブジェクトの色、輝度、半透明度、テクスチャ又は表示内容を異ならせたり、配置オブジェクトの配置態様である配置位置、配置方向又は配置数を異ならせる。
なおユーザ移動体は、実空間のユーザに対応するものであり、その画像が表示される表示物であってもよいし、画像が表示されない仮想的なものであってもよい。例えば仮想空間の画像として一人称視点の画像が表示される場合等には、ユーザ移動体は非表示であってもよいし、ユーザ移動体の一部の部位(例えば手、胸又は顔等)だけが表示されるものであってもよい。ユーザ移動体が非表示である場合には、例えば実空間のユーザの視点に対応する仮想空間の仮想カメラ(左眼用、右眼用の仮想カメラ)をユーザ移動体(アバター)とみなすことができる。
またオブジェクト処理部106は、基準点の位置に応じて、配置オブジェクトの表示態様又は配置態様を設定する。例えば基準点として第1の基準点と第2の基準点が設定されたとする。例えば第1の基準点は、ユーザ移動体の視線方向側に位置する基準点であり、第2の基準点は、ユーザ移動体の視線方向とは異なる方向側に位置する基準点である。この場合にオブジェクト処理部106は、第1の基準点と第2の基準点とで、配置オブジェクトの表示態様又は配置態様を異ならせる。例えば、配置オブジェクトの色、輝度、半透明度、テクスチャ又は表示内容を異ならせたり、配置オブジェクトの配置態様である配置位置、配置方向又は配置数を異ならせる。
またオブジェクト処理部106は、ユーザの状況情報、ユーザ移動体の状況情報、或いはゲーム状況情報に応じて、基準点の設定を行う。例えばこれらの情報に基づいて、基準点の設定位置や設定数を決定したり、或いは基準点の出現タイミングを決定する。例えば基準点の設定位置や設定数を変化させたり、或いは基準点の出現タイミングを変化させる。ユーザの状況情報は、例えばユーザの年齢層、体格又は性別の情報などである。或いはユーザの状況情報は、ユーザのゲームプレイの状況である。例えばユーザのゲームレベル(初級、中級、上級)や、ユーザのゲームプレイ回数やゲームプレイ頻度の情報や、ユーザのゲーム成績の情報などである。ユーザ移動体の情報は、ユーザ移動体のステータス(レベル、経験値)や能力(攻撃力、防御力等)などの情報であり、例えばユーザ移動体のゲームパラメータにより表される情報である。ゲーム状況情報は、ゲームの進行状況や、ゲームプレイが行われるステージやマップの状況などである。
また情報取得部102は、実空間の環境情報を取得する。環境情報は、実空間の明るさや広さなどの環境についての情報である。例えばユーザが位置するプレイフィールドでの明るさ情報や広さ情報などである。そしてオブジェクト処理部106は、環境情報に応じて、基準点の設定を行う。或いは環境情報に応じて、配置オブジェクトの表示態様又は配置態様の設定を行う。例えば環境情報に応じて、基準点の設定位置や設定数を決定したり、或いは基準点の出現タイミングを決定する。例えば基準点の設定位置や設定数を変化させたり、或いは基準点の出現タイミングを変化させる。或いは、環境情報に応じて、配置オブジェクトの色、輝度、半透明度、テクスチャ又は表示内容を変化させたり、配置オブジェクトの配置位置、配置方向又は配置数を変化させる。
またオブジェクト処理部106は、ユーザの状況情報、ユーザ移動体の状況情報、或いはゲーム状況情報に応じて、配置オブジェクトの表示態様又は配置態様を設定する。例えばユーザの状況情報、ユーザ移動体の状況情報、或いはゲーム状況情報に応じて、配置オブジェクトの色、輝度、半透明度、テクスチャ又は表示内容を変化させたり、配置オブジェクトの配置位置、配置方向又は配置数を変化させる。
また配置オブジェクトは、ユーザの移動をガイドする配置オブジェクト、或いはユーザに対して警告、報知又は指示を行う配置オブジェクトである。ユーザの移動をガイドする配置オブジェクトは、例えば実空間において、どの方向にユーザが移動するのかを指示するオブジェクトである。ユーザに対して警告を行う配置オブジェクトは、ユーザにとって好ましくない状況等が発生した場合に、そのような状況が発生することを警告するオブジェクトである。ユーザに対して報知を行う配置オブジェクトは、ユーザに対して種々の状況を報知したり、種々の情報を報知するオブジェクトである。ユーザに対して指示を行う配置オブジェクトは、ユーザが所与の行動等を行うことを指示するオブジェクトである。但し本実施形態の配置オブジェクトは、このようなタイプの配置オブジェクトには限定されず、種々の変形実施が可能である。
またオブジェクト処理部106は、ユーザの行動のターゲットに対して基準点を設定し、ターゲットに設定された基準点に基づいて配置オブジェクトを配置する。ユーザの行動のターゲットは、ユーザの行動の目的物や目的地(目的となる場所)などである。例えばターゲットは、ユーザのゲームプレイの目的物(例えば探索対象である宝箱等のアイテム)や目的地(プレイフィールドやマップでの目的地)である。本実施形態では、このようなターゲットに対して基準点を設定し、設定された基準点に基づいて配置オブジェクトを配置する。このようにすれば、ターゲットに対するユーザの行動をガイドしたり、ターゲットについての警告を行ったり、ターゲットの状況を報知したり、或いはターゲットに対するユーザの行動を指示するための配置オブジェクトを、ターゲットに設定された基準点に基づき設定できるようになる。
また本実施形態では、オブジェクト処理部106が、ユーザに対応する仮想空間のユーザ移動体の位置に基づきヒットボリュームを設定する。例えばユーザ移動体の位置を元に、ヒットボリュームの位置を決定して配置する。ユーザ移動体の位置により特定されるユーザの部位の位置や所持物の位置にヒットボリュームを設定してもよい。そしてオブジェクト処理部106は、ユーザが所与の入力を行った際に、ヒットボリュームとキャラクタとの位置関係に応じて、キャラクタに対する処理を行う。例えばユーザが所与の入力を行った際におけるヒットボリュームとキャラクタとの位置関係を判断して、キャラクタに対する処理を行う。ユーザが所与の入力を行ったか否かは、例えば操作部160や検出部162を用いて検出できる。例えば操作部160によりユーザが所与の操作を行った場合に、ユーザが所与の入力を行ったと判断する。或いは検出部162によりユーザの所与の動き(ユーザの手等の部位の動き)が検出された場合に、ユーザが所与の入力を行ったと判断する。ユーザの所与の動きを撮像部164で撮像することで検出してもよい。
そしてオブジェクト処理部106は、ユーザが所与の入力を行ったタイミングでの、ヒットボリュームとキャラクタとの位置関係を判断する。例えばキャラクタの位置がヒットボリューム内にあるか否かのヒット判定処理(衝突判定処理)を行う。或いは、ユーザ移動体の位置に基づき設定されたヒットボリュームと、キャラクタの位置に基づき設定された第2のヒットボリュームとが交差したか否かを判断するヒット判定処理を行ってもよい。これらのヒット判定処理はヒット処理部109により行われる。そして、ユーザが所与の入力を行った際に(所与の入力を行ったタイミングで)、ヒットボリュームとキャラクタが所与の位置関係になった場合に、その位置関係に応じた処理をキャラクタに対して行う。例えばヒットボリュームとキャラクタとがヒットしたと判定された場合に、キャラクタに対するヒット処理を行う。具体的には後述するような消滅処理、破壊処理、表示態様の変更処理又は音や振動による報知処理を行う。
なおヒットボリュームは、例えばユーザの部位又はユーザの所持物に設定されるヒットボリュームである。例えばユーザの部位を内包するようなヒットボリューム、或いはユーザの所持物を内包するようなヒットボリュームが設定される。そして、このヒットボリュームとキャラクタとのヒット判定処理を行うことで、ユーザの部位又は所持物がキャラクタにヒットしたか否かを判定できる。なおヒットボリュームは例えば3次元形状のものであるが、平面的なヒットエリアであってもよい。
或いはオブジェクト処理部106は、ユーザに対応する仮想空間のユーザ移動体と基準点との間に、ヒットボリュームを設定する。例えばユーザ移動体の位置と基準点の位置の間の領域(中間領域)にヒットボリュームを設定する。例えばユーザ移動体の位置と基準点の位置を結ぶ線上にヒットボリュームを設定する。そしてオブジェクト処理部106は、ユーザが所与の入力を行った際に、ヒットボリュームとキャラクタとの位置関係に応じて、キャラクタに対する処理を行う。具体的にはユーザが所与の入力を行ったか否かを、上述のように例えば操作部160や検出部162を用いて検出する。そしてユーザが所与の入力を行ったタイミングでの、ヒットボリュームとキャラクタとの位置関係を判断する。例えばキャラクタの位置がヒットボリューム内にあるか否かのヒット判定処理を行う。或いは、ユーザ移動体と基準点との間に設定されたヒットボリュームと、キャラクタの位置に基づき設定された第2のヒットボリュームとが交差(衝突)したか否かを判断するヒット判定処理(衝突判定処理)を行ってもよい。そして、ユーザが所与の入力を行った際に、ヒットボリュームとキャラクタが所与の位置関係になった場合に、その位置関係に応じた処理をキャラクタに対して行う。例えばキャラクタに対するヒット処理を行う。具体的には後述するようなキャラクタの消滅処理、破壊処理、表示態様の変更処理又は音や振動による報知処理を行う。
オブジェクト処理部106は移動体処理部110を含む。移動体処理部110は、仮想空間内で移動する移動体についての種々の処理を行う。例えば仮想空間(オブジェクト空間、ゲーム空間)において移動体を移動させる処理や、移動体を動作させる処理を行う。移動体は、ユーザに対応するユーザ移動体やキャラクタなどである。例えば移動体処理部110は、操作部160によりユーザが入力した操作情報や、取得されたトラッキング情報や、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、移動体(モデルオブジェクト)を仮想空間内で移動させたり、移動体を動作(モーション、アニメーション)させる制御処理を行う。具体的には、移動体の移動情報(位置、回転角度、速度、或いは加速度)や動作情報(パーツオブジェクトの位置、或いは回転角度)を、1フレーム(例えば1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動体の移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
またオブジェクト処理部106は、ユーザ移動体と基準点とが第1の距離関係である場合には、ユーザ移動体の位置に基づきヒットボリュームを設定し、ユーザが所与の入力を行った際に、ヒットボリュームとキャラクタとの位置関係に応じて、キャラクタに対する処理を行う。一方、ユーザ移動体と基準点とが第2の距離関係である場合には、ユーザ移動体と基準点との間にヒットボリュームを設定し、ユーザが所与の入力を行った際に、ヒットボリュームとキャラクタとの位置関係に応じて、キャラクタに対する処理を行う。ここで、第1の距離関係は、第2の距離関係に比べて、ユーザ移動体と基準点との距離が近いという関係である。この場合には、ユーザ移動体の位置に基づきヒットボリュームを設定して、ヒット判定処理等を行う。一方、第2の距離関係は、第1の距離関係に比べて、ユーザ移動体と基準点との距離が遠いという関係である。この場合には、ユーザ移動体と基準点との間にヒットボリュームを設定して、ヒット判定処理等を行う。
またオブジェクト処理部106は、ユーザの動きを検出する検出部162からの情報に基づいて、ユーザが所与の入力を行ったか否かを判断する。例えば検出部162のモーションセンサー(加速度センサー等)に基づいて、ユーザの部位の動き、振動又は加速度を検出して、ユーザが所与の入力を行ったか否かを判断する。例えばユーザが叩くアクションを行ったか否かを判断する。具体的にはユーザの部位の加速度が急激に変化するタイミングを、ユーザが所与の入力を行ったタイミングと判断する。そしてユーザが所与の入力を行ったタイミングでのヒットボリュームとキャラクタとの位置関係に応じて、キャラクタに対する処理を行う。
またオブジェクト処理部106は、キャラクタに対する処理として、キャラクタの消滅処理、キャラクタの破壊処理、キャラクタの表示態様の変更処理又はキャラクタについての報知処理を行う。キャラクタの消滅処理は、キャラクタを非表示にして、仮想空間において視覚的に見えないようにする処理である。キャラクタの破壊処理は、キャラクタが破壊された状態の画像を表示する処理や、破壊エフェクトを発生する処理である。キャラクタの表示態様の変更処理は、キャラクタの色、輝度(明るさ)、半透明度又はテクスチャ等を変更する処理である。キャラクタの報知処理は、キャラクタに対する攻撃のヒットイベントなどが発生したことを、音や振動などを用いてユーザに報知する処理である。なお、キャラクタに対する攻撃が成功しなかった場合には、攻撃が成功しなかったことを表す演出処理を行ってもよい。
なお情報取得部102は、視点のトラッキング情報に基づいて、実空間でのユーザの位置情報を取得する。視点のトラッキング情報は、例えばHMD200のトラッキング処理を行うことで取得できる。例えば情報取得部102は、HMD200の位置情報を、当該HMD200を装着するユーザの位置情報として取得する。一例としては、トラッキング情報は、ユーザの初期視点位置からの視点位置の変化情報(視点位置の座標の変化値)、及び、ユーザの初期視線方向からの視線方向の変化情報(視線方向の回転軸回りでの回転角度の変化値)の少なくとも一方を含むことができる。このようなトラッキング情報が含む視点情報の変化情報に基づいて、ユーザの位置に対応する視点位置や、ユーザの方向に対応する視線方向を特定できる。なお、HMD200のトラッキング処理ではなく、ユーザやユーザの頭部などの部位を直接にトラッキングする処理により、ユーザの位置情報を取得してもよい。また情報取得部102は、ユーザの方向情報や姿勢情報を取得してもよい。例えば視点のトラッキング処理により得られたトラッキング情報に基づいて、実空間においてユーザが向く方向である方向情報を取得する。また情報取得部102は、ユーザのモーション情報である姿勢情報を取得する。姿勢情報は、ユーザの手、頭又は足などの部位の動きを特定する情報である。例えば情報取得部102は、キネクト(登録商標)と呼ばれる処理によりユーザの姿勢情報を取得する。なお、情報取得部102が取得する位置情報は、相対的な位置情報であってもよい。
また表示処理部120(画像生成部)は、表示部190に表示される画像を、仮想空間画像として生成する。仮想空間画像は、例えばAR又はMRの画像などである。仮想空間画像はVRの画像であってもよい。ARの画像は、実空間の風景などを構成する表示物に重畳するように表示される画像である。MRの画像は、実空間と仮想空間を混合し、現実のものと仮想的なものがリアルタイムで影響し合うような新たな空間を構築するMRの手法により生成される画像であり、MRは全拡張現実と拡張仮想を包含する概念である。VRの画像は、例えば後述のHMD200を装着するユーザの視界の全周囲に亘ってVR空間が広がるように生成される画像である。
また表示処理部120は、HMD200の表示画像として、仮想空間において仮想カメラ(所与の視点)から見える画像を生成する。例えばキャラクタ(ユーザキャラクタ、他ユーザキャラクタ)の視点(一人称視点)に設定された仮想カメラから見える画像の描画処理を行う。或いは、キャラクタに追従する視点(三人称視点)に設定された仮想カメラから見える画像の描画処理を行う。生成される画像は、例えば左眼用画像、右眼用画像などの立体視用の画像であることが望ましい。
また本実施形態では、ユーザがプレイするゲームのゲーム処理として、仮想現実のシミュレーション処理を行う。仮想現実のシミュレーション処理は、実空間での事象を仮想空間で模擬するためのシミュレーション処理であり、当該事象をユーザに仮想体験させるための処理である。例えば実空間のユーザに対応する仮想ユーザやその搭乗移動体などのユーザ移動体を、仮想空間で移動させたり、移動に伴う環境や周囲の変化をユーザに体感させるための処理を行う。
なお図1の本実施形態のシミュレーションシステムの処理は、HMD200に内蔵されるプロセッサやメモリにより実現してもよい。例えばHMD200に内蔵されるプロセッサが本実施形態の各処理を行い、本実施形態の処理により生成された画像(仮想空間画像)をHMD200の表示部190に表示する。或いは本実施形態のシミュレーションシステムの処理を、家庭用ゲーム装置又は業務用ゲーム装置により実現してもよいし、家庭用ゲーム装置又は業務用ゲーム装置とサーバシステムとの分散処理により実現してもよい。或いは本実施形態のシミュレーションシステムを、施設に設置されるPC等の処理装置や、ユーザが装着する処理装置や、これらの処理装置の分散処理により実現してもよい。例えばユーザがジャケットを着用し、ジャケットの背面側にバックパックPC等の処理装置が取り付けられる。そしてユーザが装着するバックパックPC等の処理装置により本実施形態の各処理を実行したり、表示部190に表示される画像(仮想空間画像)を生成する。或いは、ユーザが装着する処理装置と、施設に設置される管理用の処理装置との分散処理により、本実施形態の各処理を実行したり、表示部190に表示される画像を生成する。或いは、本実施形態のシミュレーションシステムの処理を、ネットワークに通信接続できる携帯型通信端末や、携帯型通信端末とサーバシステムとにより実現してもよい。例えば携帯型通信端末とサーバシステムとの分散処理により実現してもよい。
2.HMD
次に本実施形態で用いられるHMD200及びHMD200を用いたトラッキング処理について説明する。
図2は本実施形態で用いられるHMD200の一例である。図2のHMD200はシースルー型(透過型)のメガネタイプのHMDである。具体的には光学シースルー型のHMDである。このシースルー型のHMD200によれば例えばMRやARの仮想空間画像の表示が可能になる。
図2のHMD200はテンプル部240とゴーグル部242を有する。テンプル部240にはスピーカが内蔵されている。ゴーグル部242には表示装置243とホログラフィック光学素子244が設けられている。表示装置243には、マイクロディスプレイ、ミラー、プリズム等により構成される表示ユニットが設けられている。表示装置243には左眼用の表示ユニットと右眼用の表示ユニットが設けられており、これにより立体視が実現される。また左眼用、右眼用の各表示ユニットに一対のマイクロディスプレイを設けることで虚像の位置を可変にできる。
表示装置243からの表示光は、ホログラフィック光学素子244の導光板内部を屈折しながら、ユーザUSの眼前に導光される。そしてホログラフィック光学素子244により表示光を眼球方向に屈折させて、眼球に表示光を送る。これにより眼前に虚像(ホログラムの再生像)があるように見えるようになる。ホログラフィック光学素子244の導光板はコンバイナーとも呼ばれ、ハーフミラーであるコンバイナーにより、外界の実像と虚像が重なって見えるようになり、MRやARが実現される。
またゴーグル部242には、RGBカメラ246、デプスカメラ247、環境認識カメラ248、249が設けられている。RGBカメラ246を用いることでユーザUSの正面方向の撮影が可能になる。デプスカメラ247を用いることで正面方向でのデプス情報(奥行き情報)を取得できる。例えばゴーグル部242にはデプスカメラ用のエミッター(不図示)が設けられている。そしてエミッターであるIRプロジェクターにより赤外線パターンを実空間の物体に対して投光し、投光した赤外線パターンを、デプスカメラ247である赤外線カメラにより読み取り、パターンの歪みから実空間の物体のデプス情報を取得する。更に環境認識カメラ248、249を用いることでユーザUSの周囲の環境認識が可能になる。またゴーグル部242には、加速度センサ、ジャイロセンサにより構成される慣性計測ユニット(IMU)が内蔵されている。ユーザUSの頭の位置や向く方向は、ゴーグル部242に設けられたカメラによる撮像画像と慣性計測ユニットからの測定情報などに基づいて検出され、これによりヘッドトラッキングが実現される。そしてユーザUSの位置情報(視点位置情報)や方向情報(視線方向情報)の取得も可能になる。またRGBカメラ246、デプスカメラ247、環境認識カメラ248、249を用いることで、空間マッピングと呼ばれる実空間の認識処理が実現される。これらのカメラを用いて実空間でのユーザの周囲のスキャンを行うことで、ユーザの周囲の実空間の認識処理が実現され、実空間情報が取得される。またこれらのカメラを用いることで、ユーザUSの周囲に居る他のユーザの位置情報(相対的な位置情報)、方向情報(相対的な方向情報)、或いは姿勢情報(動き情報)も取得できる。例えばキネクト(登録商標)などの処理により姿勢情報を取得することで、他のユーザがどのようなアクションを行ったかを検出できるようになる。或いはユーザ自身の部位の動きなどをユーザの姿勢情報(動き情報)として取得してもよい。
図3にHMD200の他の例を示す。図3のHMD200はユーザの視界の全周囲を覆うように装着されるタイプのHMDである。図3のHMDの表示部は例えば有機ELディスプレイ(OEL)や液晶ディスプレイ(LCD)などにより実現される。例えばHMD200の表示部には、ユーザの左眼の前に設定される第1のディスプレイ又は第1の表示領域と、右眼の前に設定される第2のディスプレイ又は第2の表示領域が設けられており、立体視表示が可能になっている。立体視表示を行う場合には、例えば視差が異なる左眼用画像と右眼用画像を生成し、第1のディスプレイに左眼用画像を表示し、第2のディスプレイに右眼用画像を表示する。或いは1つのディスプレイの第1の表示領域に左眼用画像を表示し、第2の表示領域に右眼用画像を表示する。またHMD200には左眼用、右眼用の2つの接眼レンズ(魚眼レンズ)が設けられており、これによりユーザの視界の全周囲に亘って広がるVR空間が表現される。そして接眼レンズ等の光学系で生じる歪みを補正するための補正処理が、左眼用画像、右眼用画像に対して行われる。
また図3のHMD200には、RGBカメラ216、デプスカメラ217、環境認識カメラ218、219が設けられている。これらのカメラを用いることでビデオシースルー型のHMD200が実現され、MRやARの実現が可能になる。またこれらのカメラを用いることで、図2のHMD200と同様に、実空間の認識処理や、他のユーザの位置情報、方向情報、姿勢情報(動き情報)の取得やユーザの姿勢情報の取得などを実現できる。
図3のHMD200において、ユーザの位置情報、方向情報を取得するトラッキング処理は、HMD200に内蔵され、加速度センサ、ジャイロセンサにより構成される慣性計測ユニット(IMU)により実現してもよい。或いはHMD200に複数の受光素子を設け、ユーザの周囲に発光素子を有する測定用の装置(ベースステーション)を設ける。そして測定用の装置(複数の測定用装置)の発光素子(LED)からのレーザなどの光をHMD200の受光素子で受光することで、HMD200のトラッキング処理を行って、ユーザの位置情報(視点位置情報)や方向情報(視線情報)を取得してもよい。或いはHMD200に複数の発光素子を設け、ユーザの周囲にカメラ(第1、第2のカメラ)を有する測定用の装置を設ける。そしてHMD200の発光素子からの光を測定用の装置のカメラで撮像することで、ユーザUSの頭部の奥行き方向での位置等を検出する。またHMD200に設けられる慣性計測ユニット(モーションセンサ)の検出情報に基づいて、ユーザUSの頭部の回転角度(視線)を検出し、これによりHMD200のトラッキング処理を実現してもよい。
なおユーザの位置情報や方向情報等を取得するためのトラッキング処理については、種々の変形実施が可能である。例えばHMD200に設けられた慣性計測ユニットを用いて、HMD200の単体でトラッキング処理を実現してもよいし、上述のような測定用の装置を外部に設けてトラッキング処理を実現してもよい。或いは、公知のアイトラッキング、フェイストラッキング又はヘッドトラッキングなどの種々の視点トラッキング処理を採用してもよい。
またHMD200として、いわゆるスマートフォンVR又はVRゴーグルと呼ばれるタイプのものを用いてもよい。このタイプのHMD200では、スマートフォンの表示部がユーザの目に対向するように、HMD200のゴーグル部の中にスマートフォンを収納する。ゴーグル部(VRゴーグル)の内側には、左眼用接眼レンズ、右眼用接眼レンズが内蔵されている。ユーザは、スマートフォンの表示部に表示された左眼用画像、右眼用画像を、各々、左眼用接眼レンズ、右眼用接眼レンズを介して見ることで、VRの立体視画像を鑑賞することができる。そしてユーザの視点位置、視線方向を特定するトラッキング処理は、スマートフォンに内蔵される慣性計測ユニット(加速度センサ、ジャイロセンサ)などに基づいて実現できる。またゴーグル部又はスマートフォンに設けられたカメラを用いて実空間の認識処理を行えばよい。
3.本実施形態の手法
次に本実施形態の手法について詳細に説明する。なお、以下では、ユーザがHMDを装着して、蚊などのキャラクタを退治するアトラクションゲームに本実施形態の手法を適用した場合について主に例にとり説明を行う。但し本実施形態の手法は、種々のゲーム(仮想体験ゲーム、格闘ゲーム、競争ゲーム、RPG、スポーツゲーム、ホラー体験ゲーム、電車や飛行機等の乗り物のシミュレーションゲーム、パズルゲーム、コミュニケーションゲーム、或いは音楽ゲーム等)に適用でき、ゲーム以外にも適用可能である。また以下では、実空間のユーザに対応する仮想空間のユーザ移動体を、ユーザキャラクタと表記して説明を行う。このユーザキャラクタは、表示されるオブジェクトであってもよいし、オブジェクトとして表示されない仮想的なものであってもよい。
3.1 ゲームの説明
まず本実施形態により実現されるアトラクションゲームについて説明する。本実施形態では、ユーザの周囲の実空間の認識処理を行うことにより実空間情報を取得し、取得された実空間情報に基づいて、実空間に対応する仮想空間を生成する。例えば図4(A)では、実空間に机DKや壁WLなどの物体が存在している。この実空間を、図2、図3のHMD200に設けられたカメラによりスキャンする認識処理を行うことで、実空間情報を取得する。具体的には図4(B)に示すように実空間をメッシュ化したワイヤーフレームのデータとして、実空間情報を取得する。この実空間の認識処理は例えばリアルタイムに実行され、ユーザの周囲の実空間が順次にスキャンされて実空間情報が取得される。例えばIDに対応づけられた空間データが順次に取得されて、実空間情報として、図1の実空間情報記憶部171に蓄積されて記憶される。この実空間情報は、デプス情報(奥行き値)も有しており、このデプス情報を用いることで、例えば仮想空間のオブジェクトと実空間の物体との隠面消去処理も可能になる。また実空間情報に基づいて仮想空間を生成することで、仮想的なオブジェクト(キャラクタ、配置オブジェクト)と、実空間の物体(机DK、壁WL)とのインタラクションが可能になる。例えば仮想的なオブジェクトと実空間の物体とのヒット処理(衝突処理)なども可能になり、これまでにないタイプのMRやAR(以下、単にMRと記載する)の実現が可能になる。
図5は、図2の光学シースルー型のHMD200においてユーザの目に映る画像を表すものである。図5のB1、B2、B3、B4の領域には、実空間の背景物などの風景がユーザの目に映る。そして表示領域ARVに、図2の表示装置243により生成された仮想空間画像が表示される。ユーザが顔を左右に振ると、DR1、DR2に示すように表示領域ARVの場所が左右に移動する。そしてこの表示装置243にキャラクタや配置オブジェクトなどの仮想空間のオブジェクトの画像が表示される。これによりB1、B2、B3の実空間の風景と表示領域ARVの仮想空間画像がミックスされたMRの実現が可能になる。なお図5では表示領域ARVが狭く、視野角が小さい場合の例を示したが、HMD200の各種のデバイスを改善することで、表示領域ARVを広くし、視野角を更に拡大することも可能である。
図6は本実施形態のアトラクションゲームに使用されるプレイフィールドFLの例である。本実施形態のアトラクションゲームでは、例えば室内型テーマパークのプレイフィールドFLに商店街の店舗等が設置される。ユーザは例えば図2のHMD200を頭に装着して、友達等の仲間と一緒にプレイフィールドFLを探索する。具体的には場所P1からスタートして場所P2に移動し、場所P3に出現する蚊(キャラクタ)を退治して、場所P1に戻る。その後、図14で説明するようなライド型のアトラクションゲームをプレイする。
そして本実施形態では、図2のHMD200に設けられたカメラを用いて実空間の認識処理を行うことで、実空間のプレイフィールドFLに対応する仮想空間が生成されるようになる。この場合に、HMD200を装着したユーザがプレイフィールドFLを移動するにつれて、移動するユーザの周囲の実空間が順次にスキャンされて実空間情報として蓄積されて更新されるようになる。
図6の場所P2にユーザが移動すると、図7(A)に示すように、ユーザの正面の壁にはマーカとなるポスターPSが貼られている。HMD200のカメラによりこのポスターPS(マーカ)の認識処理を行うことで、蚊の絵が描かれた画像IMAや、ガイドGDAが表示される。即ち画像IMAやガイドGDAが図5の表示領域ARVに表示される。ガイドGDAは、図6の場所P3の方を指しており、ユーザが場所P3の方に視線を向けると、図7(B)に示すような風景がユーザの目に映る。そして図7(B)に示すように、柱PILに対応する場所に基準点RPが設定される。例えば本実施形態では、実空間の認識処理により実空間情報が取得され、ユーザの位置情報等のユーザ情報と実空間情報に基づいて、基準点RPが設定される。具体的にはHMD200のカメラにより実空間の柱PILの認識処理が行われ、実空間の柱PILに対応する仮想的なオブジェクトが仮想空間に生成される。例えば図4(B)の机のようにメッシュポリゴンの仮想的な柱のオブジェクトが生成される。そして、この柱のオブジェクトに対応する場所に基準点RPが設定される。例えばユーザの位置情報に基づきユーザの位置が柱のオブジェクトに近いと判断された場合に、柱のオブジェクトに対して基準点RPが設定される。このようにすることで、実空間の柱PILに対応する場所に基準点RPを設定できるようになる。なおHMD200のカメラによる実空間の認識処理では正確な座標を取得できない場合がある。このため例えば図7(A)のポスターPSによるマーカの位置の絶対座標を用いることで、正確な座標の設定を行うようにしてもよい。
そして本実施形態では、図8(A)に示すように、設定された基準点RPに基づいて、蚊のキャラクタCHのオブジェクトを出現させる。例えば基準点RPにより特定される配置ポイント(配置場所)に蚊のキャラクタCHを配置して出現させる。これにより図5で説明した表示領域ARVに蚊のキャラクタCHの画像が表示されるようになり、実空間の柱PILの場所に蚊が出現したかのように見えるMRを実現できるようになる。即ち実空間の風景(柱)と仮想空間の画像(蚊)がミックスされた画像の表示が可能になる。そして本実施形態では実空間の認識処理により生成された仮想的な柱のオブジェクトに対して基準点RPが設定されている。従って、例えばARマーカ等を用いなくても、実空間の柱PILに対応するポイントから蚊のキャラクタCHを出現させることが可能になる。また図8(A)では「前から来るぞ」という文字が書かれたガイドGD1も表示されている。このガイドGD1は仮想空間の配置オブジェクトであり、このガイドGD1の配置オブジェクトの配置ポイントも、基準点RPに基づき設定される。
図8(B)では、後述の図9(A)〜図10で説明するように両手でパチンと叩くアクションをユーザが行うことで、攻撃のエフェクトAG(空気砲)が表示され、蚊のキャラクタCHにヒットして、蚊が退治される。蚊の退治に成功すると、「やった、戻ろう」という文字が書かれたガイドGD2が表示される。またユーザが戻る方向を指示するガイドGD3も表示される。これらのガイドGD2、GD3の配置オブジェクトの配置位置も、基準点RPに基づき設定される。
図9(A)〜図10では、ユーザ(US)は図2のHMD200を頭部に装着している。またユーザは、その手HL、HRで所持物BL、BRを持っている。所持物BL、BRは、例えば大きな手の形状の紙製のうちわなどにより実現される。また手HLにはアームセンサSEを装着している。アームセンサSEは、アームバンド型のモーションセンサ(ジェスチャセンサ)であり、加速度センサ、3軸ジャイロセンサ、筋電位センサなどを内蔵している。このアームセンサSEを手HLに装着することで、腕の動きや手のひらの開閉などを検出できるようになる。図9(A)、図9(B)に示すように、ユーザが手HL、HRでパチンと叩くアクションを行うと、このアクションの動きがアームセンサSEの加速度センサ等により検出される。このアームセンサSEは図1の検出部162に相当するものであり、手HL、HRでパチンと叩くアクションが、本実施形態においてユーザが行う所与の入力になる。このアクションにより、攻撃のエフェクトAGが表示され、図10に示すように蚊のキャラクタCHが退治されて、消滅したり、破壊されるようになる。
そして図9(A)〜図10の場合には、後述の図19(A)、図19(B)で説明するように、ユーザ(US)に対応するユーザキャラクタUSC(広義にはユーザ移動体)とキャラクタCHとの間にヒットボリュームHVが設定され、このヒットボリュームHVを用いてキャラクタCHに対するヒット判定処理(衝突判定処理)が行われる。即ちユーザキャラクタUSCとキャラクタCHとの間の距離が遠い場合には、図19(A)、図19(B)の手法によりヒット判定処理が行われる。
一方、図11(A)、図11(B)では、後述の図17(A)、図17(B)で説明するように、ユーザキャラクタUSCの位置に基づきヒットボリュームHVが設定され、このヒットボリュームHVを用いてキャラクタCHに対するヒット判定処理が行われる。即ちユーザキャラクタUSCとキャラクタCHとの間の距離が近い場合には、図17(A)、図17(B)の手法によりヒット判定処理が行われる。この場合に例えば所持物BL、BRに対応する所持物オブジェクトを仮想空間に出現させ、ユーザが手HL、HRを叩く毎に、この所持物オブジェクトの大きさを大きくするようにしてもよい。これにより、比較的遠くに位置する蚊のキャラクタCHであっても、所持物オブジェクトをヒットさせて退治することが可能になる。
図6の場所P3に出現する蚊を、図8(A)〜図11(B)で説明したように退治した後、ユーザは、最初のスタート地点である場所P1に戻ることになる。この場合に本実施形態では図12(A)〜図13(B)に示すように、場所P3から場所P1にユーザを誘導して移動させるためのガイドとなる配置オブジェクトOB1〜OB4を、仮想空間に配置する。具体的には場所P1に対して基準点RPが設定され、設定された基準点RPに基づいて配置オブジェクトOB1〜OB4が配置される。この場合に本実施形態では、図4(A)、図4(B)で説明したような実空間の認識処理が行われ、実空間情報が取得される。そしてユーザの位置情報等のユーザ情報と、取得された実空間情報とに基づき、基準点RPが設定される。具体的にはHMD200のカメラにより実空間の認識処理が行われ、場所P1に配置される物体(例えば入り口、壁、ドア)に対応する仮想的なオブジェクトが仮想空間に生成される。そして、この仮想的なオブジェクトの場所に基準点RPが設定される。このようにすることで、場所P1に対して適切に基準点RPを設定できるようになり、基準点RPが設定される場所P1とユーザとの間に、ユーザを誘導するガイドとなる配置オブジェクトOB1〜OB4を適切に配置できるようになる。
そして本実施形態では、ユーザに対応する仮想空間のユーザキャラクタ(ユーザ移動体)と配置オブジェクトOB1〜OB4との位置関係に応じて、配置オブジェクトOB1〜OB4の表示態様を変化させている。
例えば図12(A)では、基準点RPから遠い位置に配置される配置オブジェクトOB1が、表示状態に設定されて表示されている。即ち図5の表示領域ARVに配置オブジェクトOB1の画像が表示される。この配置オブジェクトOB1には例えば「こっちだよ」という文字が書かれている。
その後、ユーザが、場所P1の基準点RPの方に移動して近づくと、図12(B)に示すように、次の配置オブジェクトOB2が表示状態に設定されて表示される。配置オブジェクトOB2は、配置オブジェクトOB1に比べて、基準点RPに近い位置に配置されるオブジェクトである。この配置オブジェクトOB2には、例えば「こっち、こっち」という文字が書かれている。この場合に配置オブジェクトOB1については、不透明状態から半透明状態に変化し、その後、非表示状態(透明状態)へと表示態様が変化する。
ユーザが、場所P1の基準点RPの方に更に移動して近づくと、図13(A)に示すように、次の配置オブジェクトOB3が表示状態に設定されて表示される。配置オブジェクトOB3は、配置オブジェクトOB1、OB2に比べて、基準点RPに近い位置に配置されるオブジェクトである。この配置オブジェクトOB3には、例えば「そろそろつくよ」という文字が書かれている。この場合に配置オブジェクトOB2については、不透明状態から半透明状態に変化し、その後、非表示状態へと表示態様が変化する。
ユーザが場所P1の基準点RPの方に更に移動して、基準点RPの場所の直ぐ近くに来ると、図13(B)に示すように次の配置オブジェクトOB4が表示状態に設定されて表示される。配置オブジェクトOB4は、配置オブジェクトOB1、OB2、OB3に比べて、基準点RPに近い位置に配置されるオブジェクトである。この配置オブジェクトOB4には、例えば「おかえり」という文字が書かれている。この場合に配置オブジェクトOB3については、不透明状態から半透明状態に変化し、その後、非表示状態へと表示態様が変化する。
このように本実施形態では、基準点RPに基づき設定された配置オブジェクトOB1〜OB4を用いることで、基準点RPの場所P1にユーザを適切に誘導して移動させることに成功している。
場所P1に戻ったユーザは、場所P1にその入り口が設けられるライド型のアトラクションゲームをプレイする。図14はこのライド型のアトラクションのプレイフィールドFLRを示すものである。プレイフィールドFLRにはコースCSが設置されている。ユーザUS1、US2はライド筐体RD1、RD2に搭乗し、ライド筐体RD1、RD2はコースCSに沿って移動する。そしてプレイフィールドFLRのエリアM1〜M14では、蚊が出現してユーザを襲ってくる。ユーザは、図9(A)〜図11(B)で説明したような手をパチンと叩くアクションを行って、襲ってくる蚊を退治する。またプレイフィールドFLRの奥側の場所では、天井のオブジェクトOBCが崩壊して落ちてくるイベントEV1が発生する。この天井のオブジェクトOBCは仮想空間のオブジェクトで表現され、天井が落ちてくる仮想空間画像がHMD200に表示される。またエリアM13、M14では、大量の蚊が襲ってくるイベントEV2が発生し、最後は巨大な蚊のボスBSFが出現するイベントEV3が発生する。この蚊のボスBSFは実空間の物体であり、このボスBSFに対して、仮想空間のエフェクト画像が重畳して表示される演出が行われる。
図15(A)、図15(B)は、プレイフィールドFLRでの蚊の出現イベントの一例を示すものである。図15(A)、図15(B)では、実空間に対して穴HE1、HE2、HE3が出現し、穴HE1、HE2、HE3から蚊のキャラクタCH1、CH2、CH3が飛び出て来るようなMRが実現される。そしてユーザは、図9(A)〜図11(B)で説明したような手をパチンと叩くアクションを行って、襲ってくる蚊を退治することができる。ここで、穴HE1、HE2、HE3の画像は仮想空間画像であり、キャラクタCH1、CH2、CH3の画像も仮想空間画像であり、これらの仮想空間画像が実空間の物体に重畳して表示されるMRが実現されている。
そして本実施形態では、穴HE1〜HE3のオブジェクトやキャラクタCH1〜CH3のオブジェクトは基準点RPに基づき配置される。例えば図4(A)、図4(B)に示すような実空間の認識処理が、図14のプレイフィールドFLRに配置される実空間の物体に対して行われる。これにより図15(A)、図15(B)の実空間の物体に対応する仮想的なオブジェクトが配置される仮想空間が生成され、生成された仮想空間において基準点RPが設定される。そしてライド筐体に搭乗して移動するユーザに対応するユーザキャラクタが、基準点RPの位置に近づくと、図15(A)に示すように、基準点RPに関連づけて設定された穴HE1〜HE3のオブジェクトが出現し、穴HE1〜HE3からキャラクタCH1〜CH3も出現するようになる。このようにすることで、ARマーカ等を使用しなくても、図15(A)、図15(B)に示すようなMRの画像を生成できるようになる。
図16では、ガイドGDが表示されている。このガイドGDは、キャラクタCHの存在位置の方向を示す配置オブジェクトである。例えば図5のように、HMD200の仮想空間画像の表示領域ARVが狭い場合(視野角が小さい場合)には、ユーザがキャラクタCHの方に視線を向けないと、表示領域ARVにキャラクタCHの画像を表示できない。この点、図16のようなガイドGDを表示すれば、例えばユーザが右方向に視線を向けることで、図5のHMD200の表示領域ARVがDR2の方向に移動して、キャラクタCHの画像が表示領域ARVに表示されるようになる。このようにガイドGDとなる配置オブジェクトを配置して表示することで、ユーザはキャラクタCHの方に視線を向けて手を叩くアクションを行うことで、蚊のキャラクタCHを退治することが可能になる。
なおキャラクタCHの存在位置を報知する処理は、図16のようなガイドGD等の表示物を用いる処理には限定されない。例えばHMD200等に設けられる音出力部(ヘッドホン、スピーカ)からの3次元音響を用いて、キャラクタCHの存在位置をユーザに報知してもよい。例えば右方向にキャラクタCHが存在する場合には、キャラクタCHの発生音(例えば「ブーン」という音)が、右方向から聞こえるような3次元音響の処理を行って、音出力部から出力すればよい。このようにすることで、図5のように表示領域ARVが狭く視野角が小さいHMD200を用いた場合にも、キャラクタCHの存在位置を適切にユーザに報知できるようになる。
3.2 基準点、ヒットボリュームの設定
以上のように本実施形態では、図4(A)、図4(B)で説明したようにユーザの周囲の実空間の認識処理を行うことで得られる実空間情報を取得する。またユーザの位置情報を含むユーザ情報を取得する。そして取得された実空間情報に基づいて実空間に対応する仮想空間を生成する。例えば図4(B)に示すようなポリゴンメッシュのオブジェクトが配置される仮想空間を生成する。そして図8(A)、図8(B)、図12(A)〜図13(B)、図15(A)、図15(B)に示すように、例えばユーザ情報(位置情報)と実空間情報とに基づいて、仮想空間に基準点RPを設定し、基準点RPに基づいて、キャラクタのオブジェクトや配置オブジェクトを仮想空間に配置し、キャラクタや配置オブジェクトの画像を含む画像を表示部190に表示する。例えばHMD200の表示部190(表示領域ARV)にキャラクタや配置オブジェクトの画像を含む仮想空間画像を表示する。
そしてユーザに対応する仮想空間のユーザキャラクタ(広義にはユーザ移動体)の位置に基づき、ヒットボリュームを設定し、ユーザが所与の入力を行った際に、ヒットボリュームとキャラクタとの位置関係に応じて、キャラクタに対する処理を行う。
例えば図17(A)。図17(B)では、実空間の認識処理(スキャン処理、マッピング処理)を行うことで取得された実空間情報に基づいて、実空間の背景物(柱、壁、ドア等)に対応する仮想空間の背景オブジェクトMRS(例えばメッシュポリゴンにより構成されるオブジェクト)が生成されている。また実空間情報等に基づいて基準点RPが設定される。実空間の背景物に対応する背景オブジェクトMRSを生成することで、実空間の背景物の対応する場所に基準点RPを設定できるようになる。そして、この基準点RPに基づいて、キャラクタCHが配置される。例えば基準点RPに基づき特定される出現ポイントからキャラクタCHを出現させる。
基準点RPは、実空間情報に基づき設定され、キャラクタ(CH)や配置オブジェクト(OB1〜OB4)の配置位置を設定するためのポイント又は場所である。キャラクタや配置オブジェクトの配意位置(出現位置)そのものが基準点RPであってもよい。基準点RPは、実空間情報に基づき設定されるため、実空間の物体の位置や形状等を反映したものになる。また基準点RPを、ユーザの位置情報や方向情報を含むユーザ情報に基づき設定することで、例えばユーザの移動や向く方向や接近等を検出して基準点を設定し、キャラクタや配置オブジェクトを出現させることが可能になる。例えば基準点RPをMRにおける擬似的なマーカのようなものとして使用できるようになる。
また本実施形態では、実空間のユーザに対応するユーザキャラクタUSCの位置PSに基づき、ヒットボリュームHV(ヒットエリア)が設定される。例えば図17(A)、図17(B)では、ユーザキャラクタUSCの位置PSの前方側にヒットボリュームHVが設定される。そしてユーザが所与の入力を行った際に、ヒットボリュームHVとキャラクタCHとの位置関係が判断される。図9(A)〜図11(B)を例にとれば、ユーザが手を叩くアクションを行った場合に、ユーザが所与の入力が行ったと判断される。そして、このように手を叩くアクションによる所与の入力が行われたタイミングでの、ヒットボリュームHVとキャラクタCHとの位置関係が判断される。
例えばヒットボリュームHVとキャラクタCHの位置関係が図17(A)のような位置関係であるときに、ユーザが手を叩くアクションを行ったとする。この場合にはキャラクタCHの位置が、ヒットボリュームHV内にないため、ユーザが手を叩くことによる攻撃はキャラクタCHにヒットしなかったと判断される。
一方、ヒットボリュームHVとキャラクタCHの位置関係が図17(B)のような位置関係であるときに、ユーザが手を叩くアクションを行ったとする。この場合には、キャラクタCHの位置がヒットボリュームHV内にあるため、ユーザが手を叩くことによる攻撃がキャラクタCHにヒットしたと判断する。そしてキャラクタCHに対する処理として、キャラクタCHの消滅処理や破壊処理などを行う。このようにすることで、図11(A)、図11(B)に示すように、ユーザの直ぐ近くに接近して来るキャラクタCHに対して、攻撃を加えて、消滅させたり破壊するなどの処理が可能になる。
なお図17(A)、図17(B)において、キャラクタCHの位置に基づき第2のヒットボリュームを設定してもよい。そしてユーザキャラクタUSCの位置PSに基づき設定されたヒットボリュームHVと、キャラクタCHの位置に基づき設定された第2のヒットボリュームとの交差判定処理を行うことで、ヒット判定処理を実現してもよい。
以上のように本実施形態では、実空間の認識処理に基づき取得された実空間情報により、実空間に対応する仮想空間が生成されて、基準点RPが設定される。これにより実空間に対応する位置に基準点RPを設定できるようになる。またユーザの位置情報を含むユーザ情報を用いて基準点RPを設定することで、例えばユーザに対応するユーザキャラクタが接近して来たときに、基準点RPを設定し、基準点RPによって特定される場所にキャラクタCHを配置して出現させることができる。そして本実施形態では、ユーザキャラクタUSCの位置に基づき設定されたヒットボリュームHVとキャラクタCHとの位置関係を判断して、キャラクタCHに対する処理を行っている。従って、基準点RPに基づき出現させた仮想的なキャラクタCHとユーザとの間のインタラクションを実現でき、例えばユーザの攻撃がヒットしたか否かなどを判断するヒット判定処理を実現できるようになる。従って、実空間に対して、対応する仮想空間を設定してキャラクタCHを配置し、ユーザの入力に基づくキャラクタCHとのインタラクションを実現できるようになり、実空間情報を利用したインタラクティブなゲームの実現が可能になる。即ち、実空間情報を有効活用してユーザとキャラクタとの好適なインタラクションを実現できるシミュレーションシステムの実現が可能になる。
また本実施形態では、ヒットボリュームHVとして、ユーザの部位又はユーザの所持物に設定されるヒットボリュームを用いることができる。
例えば図18(A)では、ユーザの部位である手HLに対してヒットボリュームHVが設定されている。例えばユーザの手HLを内包するようなヒットボリュームHVが設定される。そしてユーザが手HLを動かすと、それに連動してヒットボリュームHVも移動する。ユーザの手HLの動きは、ユーザが装着しているアームセンサSE(広義には検出部)を用いて検出できる。例えばアームセンサSEが内蔵する加速度センサや3軸ジャイロセンサなどを用いて手HLの動きを検出して、その手HLの動きに追従するようにヒットボリュームHVを移動させる。
また図18(B)では、ユーザの所持物BLに対してヒットボリュームHVが設定されている。例えばユーザの所持物BLを内包するようなヒットボリュームHVが設定される。そしてユーザが所持物BLを動かすと、それに連動してヒットボリュームHVも移動する。所持物BLの動きは、アームセンサSEなどを用いて検出し、所持物BLの動きに追従するようにヒットボリュームHVを移動させる。この場合に、アームセンサSEなどの動き検出センサを所持物BLに取り付けて、所持物BLの動きを検出してもよい。また図18(B)では所持物BLが大きな手の形状になっているが、所持物BLとしては種々の形状のものを採用できる。例えば剣、棒、斧又は銃のような形状の所持物BLであってもよい。
このようにユーザの部位又は所持物にヒットボリュームを設定すれば、実空間においてユーザが、その部位や所持物を動かすと、それに連動してヒットボリュームも移動するようになる。従って、ユーザの部位又は所持物の動きに連動して移動するヒットボリュームを用いてヒット判定処理等を行うことが可能になり、ユーザの仮想現実感の向上を図れるようになる。
また本実施形態では、ユーザの動きを検出する検出部162からの情報に基づいて、ユーザが所与の入力を行ったか否かを判断する。例えば図9(A)〜図11(B)のように、ユーザが手を叩くなどのアクションにより所与の入力を行ったか否かを、検出部162を用いて検出する。例えば検出部162は図18(A)、図18(B)のアームセンサSEにより実現できる。具体的にはアームセンサSEに内蔵される加速度センサを用いて検出する。図18(C)はユーザが所与の入力を行った際の加速度センサの検出結果である。ユーザが手を叩くアクションを行うと、動いていた手が急加速で停止するため、加速度センサから図18(C)のA1に示すような検出結果(実際には負方向の加速度)が得られる。この検出結果に基づいて、ユーザが手を叩くアクションにより所与の入力を行ったと判断する。そして、所与の入力が行われたと判断されるタイミングでの、ヒットボリュームHVとキャラクタCHとの位置関係を判断すればよい。
このようにすれば、実空間でのユーザの実際の動きを検出して、ユーザが所与の入力を行ったか否かを判断し、ヒットボリューム等を用いたヒット判定処理等を実現できるようになる。これによりユーザは、実際に部位や所持物を動かすことで、キャラクタに対する攻撃等を行えるようになり、ユーザの仮想現実感を更に向上することが可能になる。
なおユーザが所与の入力を行ったか否かの検出処理は、このような加速度センサを用いた処理には限定されない。例えば加速度センサ以外のモーションセンサ(ジャイロセンサ等)を用いて、ユーザが入力を行った際の動きを検出したり、外部カメラなどの外部の装置を用いて、ユーザの部位や所持物の動きを検出して、ユーザが所与の入力を行ったか否かを検出してもよい。或いは、ゲームコントローラなどの操作部160を用いたユーザの操作入力を検出して、ユーザが所与の入力を行ったか否か検出してもよい。
また本実施形態では、ユーザに対応する仮想空間のユーザキャラクタと基準点との間に、ヒットボリュームを設定し、ユーザが所与の入力を行った際に、ヒットボリュームとキャラクタとの位置関係に応じて、キャラクタに対する処理を行う。
例えば図19(A)では、ユーザキャラクタUSCと基準点RPとの間に、ヒットボリュームHVが設定される。例えばユーザキャラクタUSCと基準点RPとを結ぶ線の中間ポイントにヒットボリュームを設定する。ユーザキャラクタUSCが基準点RPの方に視線を向けている場合に、例えばその視線の延長上にヒットボリュームHVを設定する。そしてユーザが所与の入力を行った際に、ヒットボリュームHVとキャラクタCHとの位置関係が判断される。例えば図9(A)〜図11(B)のように、手を叩くアクションによる所与の入力が行われたタイミングでの、ヒットボリュームHVとキャラクタCHとの位置関係が判断される。
そしてヒットボリュームHVとキャラクタCHの位置関係が図19(A)のような位置関係であるときに、ユーザが手を叩くアクションを行ったとする。この場合には、キャラクタCHの位置がヒットボリュームHV内にないため、ユーザが手を叩くことによる攻撃は、キャラクタCHにヒットしなかったと判断される。
一方、ヒットボリュームHVとキャラクタCHの位置関係が図19(B)のような位置関係であるときに、ユーザが手を叩くアクションを行ったとする。この場合には、キャラクタCHの位置がヒットボリュームHV内にあるため、ユーザが手を叩くことによる攻撃がキャラクタCHにヒットしたと判断する。そしてキャラクタCHに対する処理として、キャラクタCHの消滅処理や破壊処理などを行う。このようにすることで、図9(A)〜図11に示すように、ユーザから距離が離れた位置にいるキャラクタCHに対して攻撃を加えて、消滅させたり破壊するなどの処理が可能になる。
なお図19(A)、図19(B)において、キャラクタCHの位置に基づき第2のヒットボリュームを設定し、ユーザキャラクタUSCと基準点RPの間に設定されたヒットボリュームHVと、キャラクタCHの位置に基づき設定された第2のヒットボリュームとの交差判定処理を行うことで、ヒット判定処理を実現してもよい。またキャラクタCHが図19(B)の位置からヒットボリュームHVの範囲を越えて、ユーザキャラクタUSCの方に接近して来た場合には、キャラクタCHの攻撃をユーザキャラクタUSCが受けたと判断してもよい。そしてユーザキャラクタUSCのステータスにダメージを与えたり、ユーザキャラクタUSCのヒットポイントを減少させたり、或いは攻撃を受けたことを表すエフェクトによる演出処理を行ってもよい。
図19(A)、図19(B)の手法によれば、基準点RPや基準点RPに基づき配置されるキャラクタCHの位置が、ユーザキャラクタUSCから遠くの位置にある場合にも、キャラクタCHに対するインタラクションが可能になる。即ち、基準点RPとユーザキャラクタUSCの間にヒットボリュームHVを設定することで、遠くの位置にいるキャラクタCHに対するヒット処理などが可能になり、MRにおけるユーザとキャラクタとの好適なインタラクションが可能になる。
また本実施形態では、ユーザキャラクタUSCと基準点RPとが第1の距離関係である場合には、ユーザキャラクタUSCの位置に基づきヒットボリュームHVを設定し、ユーザが所与の入力を行った際に、ヒットボリュームHVとキャラクタCHとの位置関係に応じて、キャラクタCHに対する処理を行う。
例えば図17(A)、図17(B)のように、ユーザキャラクタUSCと基準点RPの間の距離L1が近いという第1の距離関係にある場合には、ユーザキャラクタUSCの位置に基づきヒットボリュームHVを設定して、ヒット判定処理を行う。このようにすることで、ユーザキャラクタUSCから近い距離の場所でキャラクタCHを出現させた場合に、当該キャラクタCHに対してユーザキャラクタUSCの攻撃をヒットさせるなどのインタラクションを実現できるようになる。例えば図11(A)、図11(B)のように、ユーザの直ぐ近くにいるキャラクタCHを、ユーザの所持物BL、BRや手HL、HRで実際に叩くことで攻撃を加え、キャラクタCHを消滅させたり破壊するなどの処理が可能になる。即ち、実空間の物体である所持物BL、BRや手HL、HRを用いて、仮想空間のオブジェクトであるキャラクタCHを叩くようなMRの画像表現が可能になる。
なお、ユーザの手などの部位や所持物に対応する部位オブジェクトや所持物オブジェクトを、仮想空間に表示するようにしてもよい。例えばユーザキャラクタの一部として、部位オブジェクト又は所持物オブジェクトを表示する。そして例えばユーザが手を叩くなどのアクションを行う毎に、部位オブジェクト又は所持物オブジェクトのサイズを徐々に大きくしてもよい。こうすることで、多数の蚊等のキャラクタを発生させた場合(例えば図14でのイベントEV2)にも、これらの多数のキャラクタに対して、大きくなった手で攻撃するなどのゲーム演出が可能になる。
一方、ユーザキャラクタUSCと基準点RPとが第2の距離関係である場合には、ユーザキャラクタUSCと基準点RPとの間にヒットボリュームHVを設定し、ユーザが所与の入力を行った際に、ヒットボリュームHVとキャラクタCHとの位置関係に応じて、キャラクタCHに対する処理を行う。
例えば図19(A)、図19(B)のように、ユーザキャラクタUSCと基準点RPの間の距離L2が遠いという第2の距離関係にある場合には、ユーザキャラクタUSCと基準点RPとの間にヒットボリュームHVを設定して、ヒット判定処理を行う。このようにすれば、図9(A)〜図10のようにユーザキャラクタUSCから遠い距離の場所でキャラクタCHを出現させた場合にも、当該キャラクタCHに対してユーザキャラクタUSCの攻撃をヒットさせるなどのインタラクションを実現できるようになる。例えば図9(A)〜図10のように、遠い距離に位置するキャラクタCHに対して、ユーザの手を叩くアクションにより発生した攻撃のエフェクトAGをヒットさせて、キャラクタCHを消滅させたり破壊するなどの処理が可能になる。
また本実施形態では、キャラクタに対する処理として、キャラクタの消滅処理、キャラクタの破壊処理、キャラクタの表示態様の変更処理又はキャラクタについての報知処理を行う。
例えば図20(A)ではキャラクタCHに対する処理として、キャラクタCHの消滅処理、破壊処理又は表示態様の変更処理が行われている。例えば図17(B)、図19(B)のようにヒットボリュームHV内にキャラクタCHが位置している状態で、図9(A)〜図11(B)のような手を叩くなどの入力がユーザにより行われた場合に、キャラクタCHの消滅処理、破壊処理又は表示態様の変更処理を行う。キャラクタCHの消滅処理は、キャラクタCHを仮想空間画像として非表示にする処理である。例えば、表示されるオブジェクトのリストからキャラクタCHを消去する。キャラクタCHの破壊処理は、例えばキャラクタCHのオブジェクトを、破壊された状態を表すオブジェクトに切り替えることなどにより実現できる。或いは破壊を表すような画像エフェクトの表示処理を、キャラクタCHの破壊処理として行ってもよい。キャラクタCHの表示態様の変更処理は、例えばキャラクタCHの色、輝度、半透明度又はテクスチャ等を変化させる処理である。例えばキャラクタCHがユーザからの攻撃を受けたことを表すような表示態様に変化させる。或いはキャラクタCHに対する処理として、図20(B)に示すような効果音等を用いた報知処理を行ってもよい。例えばキャラクタCHが攻撃を受けてやられたことを報知する効果音を出力する。この場合に、キャラクタCHの存在位置から効果音が聞こえてくるような3次元音響処理を行う。或いはキャラクタCHに対する処理として、振動デバイスを用いた振動による報知処理を行ってもよい。例えばキャラクタCHに攻撃がヒットしたと判断された場合に、ユーザが所持するゲームコントローラに内蔵される振動デバイスを振動させる。或いは図6のプレイフィールドFLや図14のプレイフィールドFLRに、振動デバイスや空気砲による体感装置を設け、この体感装置を用いて、キャラクタCHが攻撃を受けてやられたことを報知する処理を行ってもよい。
また例えばユーザの攻撃が失敗した場合に、攻撃の失敗を知らせるような演出処理や報知処理を行ってもよい。例えば攻撃の失敗を表すエフェクト画像を表示したり、効果音を出力する。例えば図17(B)、図19(B)のようにキャラクタCHがヒットボリュームHV内に位置するタイミングで、ユーザが手を叩く入力を行わなかった場合に、このような攻撃の失敗を知らせる演出処理や報知処理を行う。或いは図19(B)において、キャラクタCHがヒットボリュームHVの範囲を超えて、ユーザキャラクタUSCの方に接近して来た場合に、このような攻撃の失敗を知らせる演出処理や報知処理を行ってもよい。
3.3 配置オブジェクトの設定
上述したように本実施形態では、ユーザの周囲の実空間の認識処理を行うことで得られる実空間情報と、ユーザの位置情報を含むユーザ情報を取得し、実空間情報に基づいて、実空間に対応する仮想空間を生成する。例えば図21(A)〜図22(B)に示すように、実空間の背景物に対応する仮想空間の背景オブジェクトMRSを生成して、仮想空間に配置する。またユーザの位置情報を含むユーザ情報と実空間情報とに基づいて、仮想空間に基準点RPを設定し、基準点RPに基づいて配置オブジェクトを配置する。図21(A)〜図22(B)では、基準点RPに基づいて配置オブジェクトOB1、OB2、OB3、OB4が配置される。例えば基準点RPとユーザキャラクタUSCとの間に、複数の配置オブジェクトOB1〜OB4が配置される。そして配置オブジェクトの画像を含む画像を表示部190に表示する。例えばHMD200の表示部190(表示領域ARV)に配置オブジェクトの画像を含む仮想空間画像を表示する。
そして本実施形態では、ユーザに対応する仮想空間のユーザキャラクタ(ユーザ移動体)と配置オブジェクトとの位置関係に応じて、配置オブジェクトの表示態様を設定する。配置オブジェクトの表示態様は、配置オブジェクトの色、輝度、半透明度、テクスチャ又は表示内容などである。配置オブジェクトの表示内容は、配置オブジェクトに描かれる文字、記号又は図形等により表される指示内容である。例えば表示内容は、ユーザへ提示するガイドや警告の内容である。例えば表示内容は、図12(A)〜図13(B)で説明した配置オブジェクトOB1〜OB4に書かれる「こっちだよ」、「こっち、こっち」、「そろそろつくよ」、「おかえり」などのユーザへのガイド内容である。
例えば図21(A)では、ユーザキャラクタUSCと配置オブジェクトOB1とが接近の位置関係になったと判断されている。例えばユーザキャラクタUSCと配置オブジェクトOB1の間の距離が所与のしきい値距離以下になったと判定されている。この場合には、配置オブジェクトOB1の表示態様が、表示状態に設定される。例えば配置オブジェクトOB1の半透明度(α値)が高い値に設定され、不透明状態である表示状態に設定される。また配置オブジェクトOB1の表示内容は、「こっちだよ」というガイド表示に設定されている。これにより図12(A)に示すような表示態様での配置オブジェクトOB1の表示が可能になる。
一方、図21(B)では、ユーザキャラクタUSCと配置オブジェクトOB2とが接近の位置関係になったと判断されている。例えばユーザキャラクタUSCと配置オブジェクトOB2の間の距離が所与のしきい値距離以下になったと判定されている。この場合には、配置オブジェクトOB2の表示態様が、表示状態に設定される。例えば配置オブジェクトOB2の半透明度が高い値に設定され、不透明状態である表示状態に設定される。また配置オブジェクトOB2の表示内容は、「こっち、こっち」という表示内容のガイド表示に設定されている。これにより図12(B)に示すような表示態様での配置オブジェクトOB2の表示が可能になる。なお配置オブジェクトOB1については、その表示態様を非表示状態に変化させる。例えば配置オブジェクトOB2の半透明度(α値)を徐々に低い値に変化させ、透明状態である非表示状態に徐々に変化させる。
図22(A)では、ユーザキャラクタUSCと配置オブジェクトOB3とが接近の位置関係になったと判断されている。この場合には、配置オブジェクトOB3の表示態様が、表示状態に設定される。また配置オブジェクトOB3の表示内容は、「そろそろつくよ」という表示内容のガイド表示に設定されている。これにより図13(A)に示すような表示態様での配置オブジェクトOB3の表示が可能になる。なお配置オブジェクトOB2については、その表示態様を非表示状態に変化させる。
図22(B)では、ユーザキャラクタUSCと配置オブジェクトOB4とが接近の位置関係になったと判断されている。この場合には、配置オブジェクトOB4の表示態様が、表示状態に設定される。また配置オブジェクトOB4の表示内容は、「おかえり」という表示内容に設定されている。これにより図13(B)に示すような表示態様での配置オブジェクトOB4の表示が可能になる。なお配置オブジェクトOB3については、その表示態様を非表示状態に変化させる。
以上のように本実施形態では、ユーザキャラクタと配置オブジェクトとの位置関係に応じて、配置オブジェクトの表示態様を設定している。このようにすることで、ユーザキャラクタと配置オブジェクトとの位置関係に応じた適切な表示態様で、配置オブジェクトを表示できるようになる。
例えば図21(A)に示すようにユーザキャラクタUSCが配置オブジェクトOB1に接近した場合に、配置オブジェクトOB1を表示状態に設定したり、「こっちだよ」という表示内容のガイド表示を行う。このようにすることで、配置オブジェクトOB1の方向に基準点RPが存在することを、ユーザに伝えることが可能になる。例えば基準点RPは、ユーザへのガイドのターゲットTGに対して設定されている。ターゲットTGはガイドの目的地や目的物である。例えば本実施形態では、図6の場所P3で蚊を退治したユーザを、図14のライド型のアトラクションの入り口が設置される場所P1の方に移動させる必要がある。図21(A)では、この場所P1が、目的地であるターゲットTGに設定されている。そして図21(A)、図12(A)に示すような表示態様で配置オブジェクトOB1を表示することで、ユーザが目的地であるターゲットTGの方向に移動するように適切にガイドすることが可能になる。
このように本実施形態では、ユーザの行動のターゲットTGに対して基準点RPが設定され、ターゲットTGに設定された基準点RPに基づいて、配置オブジェクトが配置される。例えば本実施形態の配置オブジェクトは、ユーザの移動をガイドする配置オブジェクト、或いはユーザに対して警告、報知又は指示を行う配置オブジェクトである。そして配置オブジェクトが、ユーザの移動をガイドする配置オブジェクトである場合には、ターゲットTGに対して基準点RPを設定することで、例えばターゲットTGに対して移動等するようにユーザの行動をガイドすることが可能になる。また配置オブジェクトが、ユーザに対して警告を行う配置オブジェクトである場合には、配置オブジェクトを用いることで、ユーザに対してターゲットについての警告を行うことなどが可能になる。また配置オブジェクトが、ユーザに対して報知を行う配置オブジェクトである場合には、配置オブジェクトを用いることで、ターゲットTGの状況等を報知できるようになる。また配置オブジェクトが、ユーザに対して指示を行う配置オブジェクトである場合には、配置オブジェクトを用いることで、ターゲットに対するユーザの行動を指示することなどが可能になる。
また図21(B)に示すようにユーザキャラクタUSCが配置オブジェクトOB2に接近した場合に、配置オブジェクトOB2を表示状態に設定したり、「こっち、こっち」という表示内容のガイド表示を行う。このようにすることで、配置オブジェクトOB1を通過したユーザに対して、配置オブジェクトOB2の方向に基準点RPが存在することを、適切に伝えることが可能になる。即ち図21(B)、図12(B)に示すような表示態様で配置オブジェクトOB2を表示することで、目的地や目的物であるターゲットTGの方向にユーザが移動するように適切にガイドすることが可能になる。
同様に、図22(A)、図22(B)に示すようにユーザキャラクタUSCが配置オブジェクトOB3、OB4に接近した場合に、配置オブジェクトOB3、OB4を表示状態に設定したり、「そろそろつくよ」、「おかえり」という表示内容のガイド表示を行う。このようにすることで、配置オブジェクトOB2を通過したユーザに対して、配置オブジェクトOB3、OB4の方向に基準点RPが存在することを、適切に伝えることが可能になる。
以上のように本実施形態では、実空間を移動するユーザに対して、実空間に対応して生成された仮想空間において、ガイド表示となる配置オブジェクトを見やすく配置することが可能になり、ユーザをスムーズに目的地に誘導することが可能になる。
また本実施形態では、配置オブジェクトとして第1の配置オブジェクト及び第2の配置オブジェクトを配置する。そしてユーザキャラクタの基準点側の方向に、第1の配置オブジェクト及び第2の配置オブジェクトが位置する場合に、第1の配置オブジェクトを表示状態に設定し、第2の配置オブジェクトを非表示状態に設定する。一方、ユーザキャラクタの基準点側の方向の反対方向に、第1の配置オブジェクトが位置し、ユーザキャラクタの基準点側の方向に、第2の配置オブジェクトが位置する場合に、第1の配置オブジェクトを非表示状態に設定し、第2の配置オブジェクトを表示状態に設定する。
例えば図21(A)、図21(B)では、配置オブジェクトOB1、OB2(第1、第2の配置オブジェクト)が配置されている。そして図21(A)に示すようにユーザキャラクタUSCの基準点RP側の方向DRに、配置オブジェクトOB1、OB2が位置する場合に、配置オブジェクトOB1が表示状態に設定され、配置オブジェクトOB2が非表示状態に設定される。配置オブジェクトOB3、OB4についても非表示状態に設定される。このようにすれば、図12(A)に示すように、ユーザの視界には配置オブジェクトOB1だけが表示され、配置オブジェクトOB2等は表示されないようになるため、ユーザにとって見やすい表示にすることが可能になる。例えば図5に示すようにHMD200の表示領域ARVが狭く、視野角が小さい場合に、多数の配置オブジェクトが表示領域ARVに表示されてしまうと、ユーザにとって見にくい表示になり、ユーザの混乱等を招くおそれがある。この点、配置オブジェクトOB1だけを表示し、他の配置オブジェクトOB2等を表示しないことで、狭い表示領域ARVであっても、ユーザにとって見やすいガイド表示を実現できるようになる。
一方、図21(B)に示すようにユーザキャラクタUSCの基準点RP側の方向DRの反対方向に、配置オブジェクトOB1が位置し、ユーザキャラクタUSCの基準点RP側の方向DRに配置オブジェクトOB2が位置する場合には、配置オブジェクトOB1が非表示状態に設定され、配置オブジェクトOB2が表示状態に設定される。即ち、ユーザキャラクタUSCが通過してしまった配置オブジェクトOB1については非表示状態に設定する。具体的には、配置オブジェクトOB1の半透明度を徐々に低くすることで、徐々に透明にする。そして、図21(A)では非表示状態であった配置オブジェクトOB2を表示状態に設定する。具体的には、配置オブジェクトOB2の半透明度を徐々に高くすることで、徐々に不透明にする。このようにすることで、配置オブジェクトOB1の次のガイド表示となる配置オブジェクトOB2を、図12(B)に示すようにユーザに対して適切に表示できるようになる。
同様に図22(A)、図22(B)の場合にも、ユーザキャラクタUSCの基準点RP側の方向DRに、配置オブジェクトOB3、OB4が位置する場合に、配置オブジェクトOB3が表示状態に設定され、配置オブジェクトOB4が非表示状態に設定される。一方、ユーザキャラクタUSCの基準点RP側の方向DRの反対方向に、配置オブジェクトOB3が位置し、ユーザキャラクタUSCの基準点RP側の方向DRに配置オブジェクトOB4が位置する場合には、配置オブジェクトOB3が非表示状態に設定され、配置オブジェクトOB4が表示状態に設定される。
以上のようにすることで、ユーザにとって更に見やすいガイド表示となる配置オブジェクトの表示態様の設定が可能になる。
なおユーザキャラクタと配置オブジェクトとの位置関係に応じた配置オブジェクトの表示態様の設定処理は、図21(A)〜図22(B)で説明した処理には限定されず、種々の変形実施が可能である。例えば図21(A)〜図22(B)では、配置オブジェクトの表示態様として、配置オブジェクトの半透明度や表示内容を変化させている。例えば基準点RP(TG)の方向にある配置オブジェクト(ユーザをガイドしたい方向にある配置オブジェクト)については、半透明度を高くしたり(不透明にしたり)、基準点RP(TG)の方にガイドする表示内容に設定している。これに対して、例えば配置オブジェクトの表示態様として、配置オブジェクトの色、輝度又はテクスチャを変化させてもよい。例えば基準点RPの方向にある配置オブジェクトについては、視認度又は識別力が高い色に設定したり、輝度を高くしたり、視認度又は識別力が高いテクスチャをマッピングする。一方、基準点RPの方向とは異なる方向にある配置オブジェクトについては、視認度又は識別力が低い色に設定したり、輝度を低くしたり、視認度又は識別力が低いテクスチャをマッピングする。
また配置オブジェクトの表示内容の設定についても種々の変形実施が可能である。例えば図23では、配置オブジェクトOB1〜OB4に対して矢印の記号(図形)が描かれており、この矢印の方向が、基準点RP(TG)へと向かう方向を示している。そして図23では、基準点RPに近い配置オブジェクトほど、矢印の大きさが大きくなっている。例えば基準点RPに最も近い配置オブジェクトOB4に描かれる矢印の大きさが最も大きく、基準点RPから遠い配置オブジェクトOB1に描かれる矢印の大きさが最も小さい。このように配置オブジェクトの表示態様である表示内容の変化を、記号や図形の大きさ又は形状の変化により実現してもよい。
また本実施形態では、仮想空間のオブジェクトには表示に関する優先順位が設定される。そして配置オブジェクトと他のオブジェクトがユーザキャラクタから見て重なって配置される場合には、優先順位に基づいて配置オブジェクトの表示態様を設定する。ここで他のオブジェクトは、第2の配置オブジェクトであってもよいし、配置オブジェクトとは異なる種類のオブジェクトであってもよい。
例えば図24(A)では、「こっちだよ」という文字が書かれ、基準点(目的地)の方向を示す矢印が描かれた配置オブジェクトOBが配置されて表示されている。例えば図5のHMD200の表示領域ARVに配置オブジェクトOBが表示されている。そして図24(B)では、天井が崩壊するというイベントが発生している。例えば図14のライド型のアトラクションゲームにおいて、天井のオブジェクトOBCが崩壊するというイベントEV1が発生している。そして図24(A)では、この天井の崩壊により、天井の破片がオブジェクトOBC1〜OBC5として表示されている。これらのオブジェクトOBC1〜OBC5はイベントにより発生するオブジェクトであり、他のオブジェクトである。この場合にオブジェクトOBC1〜OBC5の表示に関する優先順位は、ガイド表示である配置オブジェクトOBに比べて高い優先順位に設定されている。そして図24(B)では、破片のオブジェクトOBC1と配置オブジェクトOBは、ユーザキャラクタの視点(ユーザの視点)から見て、重なって配置されている。この場合には、優先順位に基づいて配置オブジェクトOBの表示態様を設定する。例えば図24(B)では、表示に関する優先順位が高いオブジェクトOBC1(広義には他のオブジェクト)については、表示状態に設定する一方で、表示に関する優先順位が低い配置オブジェクトOBについては、非表示状態に設定する。或いは、配置オブジェクトOBを半透明状態に設定してもよい。或いは、配置オブジェクトOBを視認度又は識別力が低い色に設定したり、輝度を低くしたり、視認度又は識別力が低いテクスチャをマッピングするようにしてもよい。
このようにすれば、図24(B)のイベントにおいて重要なオブジェクトOBC1の方を優先的にユーザに表示できるようになる。例えばデプス値(奥行き値)の設定が、配置オブジェクトOBの方がオブジェクトOBC1よりも手前側にある場合においても、オブジェクトOBC1の方を優先的に表示する。例えば図5に示すようにHMD200の表示領域ARVが狭い場合に、多数の配置オブジェクトが表示されてしまうと、ユーザにとって非常に見にくい表示になってしまうという事態が生じる。この点、図24(B)のように、オブジェクトOBC1の方を優先的に表示すれば、このような事態の発生を防止できるようになる。
なお、配置オブジェクトに対する優先順位の設定は、表示内容(ガイド内容)が異なる複数の配置オブジェクトに対して行ってもよい。この場合には、ユーザに対して、より優先順位の高い表示内容の配置オブジェクトの方が、より優先的に表示されるように、配置オブジェクトの表示態様を設定すればよい。例えば他のオブジェクトである第2の配置オブジェクトの表示内容の方が、配置オブジェクトの表示内容よりも、ユーザにとって、より優先順位が高い表示内容であったとする。例えば他のオブジェクトである第2の配置オブジェクトが、ユーザに対して警告(例えば物体にぶつかるおそれがあることの警告)を行うための配置オブジェクトであったとする。また配置オブジェクトが、ユーザをガイドするための配置オブジェクトであったとする。この場合には、第2の配置オブジェクトの表示内容(警告)の方が配置オブジェクトの表示内容(ガイド)よりも優先順位が高くなる。このとき、ユーザキャラクタの視点(ユーザの視点)から見て、第2の配置オブジェクトと配置オブジェクトが重なって配置された場合には、第2の配置オブジェクトの方が優先的に表示されるように表示態様を設定する。例えば第2の配置オブジェクトを表示状態に設定する一方で、配置オブジェクトを非表示状態に設定する。このようにすることで、例えば重要度などが高い情報を、より優先的にユーザに対して表示できるようになる。なお、設定された優先順位に基づいて、例えば他のオブジェクトである第2の配置オブジェクトを非表示状態に設定する一方で、配置オブジェクトの方を表示状態に設定してもよい。
また本実施形態では、ユーザキャラクタの視線方向に応じて、配置オブジェクトの表示態様又は配置態様を設定する。例えばユーザキャラクタの視線方向に応じて、配置オブジェクトの色、輝度、半透明度、テクスチャ又は表示内容を設定する。或いはユーザキャラクタの視線方向に応じて、配置オブジェクトの配置位置、配置方向又は配置数を設定する。
例えば図25(A)では、ユーザキャラクタUSCの視線方向VDが基準点RPの方に向いている。ユーザキャラクタUSCの視線方向VDは、実空間のユーザの視線方向に対応するものである。例えば実空間のユーザが視線方向を変化させると、仮想空間のユーザキャラクタUSCの視線方向VD(仮想カメラの視線方向)が変化する。そしてユーザキャラクタUSCの視線方向VDが基準点RPの方を向いている場合には、図25(A)に示すような表示態様又は配置態様に配置オブジェクトOB1〜OB3を設定する。例えば配置オブジェクトOB1〜OB3の表示内容(表示態様)は、紙面において上方向を指す矢印として描かれている。即ち、配置オブジェクトOB1〜OB3の表示内容は、ユーザキャラクタUSCから基準点RPの方へと向かう方向を示すような表示内容に設定されている。また配置オブジェクトOB1〜OB3の配置位置(配置態様)は、例えばユーザキャラクタUSCと基準点RPの間の領域に設定されている。例えばユーザキャラクタUSCと基準点RPを結ぶ線上に、配置オブジェクトOB1〜OB3の配置位置が設定されている。
一方、図25(B)では、ユーザキャラクタUSCの視線方向VDが、基準点RPとは異なる方向に向いている。そしてユーザキャラクタUSCの視線方向VDが基準点RPとは異なる方向に向いている場合には、図25(B)に示すような表示態様又は配置態様に配置オブジェクトOB1〜OB3を設定する。例えば配置オブジェクトOB1〜OB3の表示内容は、紙面において右斜め上方向を指す矢印として描かれている。即ち、配置オブジェクトOB1〜OB3の表示内容は、各配置オブジェクトから基準点RPの方へと向かう方向を示すような表示内容に設定されている。また、ユーザキャラクタの視線方向VDは、基準点RPとは異なる方向に向いており、この視線方向VDに沿った線上に、配置オブジェクトOB1〜OB3の配置位置が設定されている。
このようにすれば、ユーザキャラクタUSCの視線方向VDに応じた適切な表示態様又は配置態様に、配置オブジェクトOB1〜OB3を設定できるようになる。例えばユーザキャラクタUSCの視線方向VDが、基準点RPの方に向いている場合には、配置オブジェクトOB1〜OB3を図25(A)に示すような表示態様又は配置態様に設定する。このような表示態様又は配置態様に設定することで、ターゲットTGに設定された基準点RPの方向に、ユーザを適切にガイドして誘導できるようになる。またユーザキャラクタUSCの視線方向VDが、基準点RPとは異なる方向に向いている場合には、配置オブジェクトOB1〜OB3を図25(B)に示すような表示態様又は配置態様に設定する。このような表示態様又は配置態様に設定することで、基準点RPとは異なる方向に移動しているユーザを、基準点RPの方向に移動するようにガイドして誘導できるようになる。
また本実施形態では、基準点の位置に応じて、配置オブジェクトの表示態様又は配置態様を設定する。例えば基準点の位置に応じて、配置オブジェクトの色、輝度、半透明度、テクスチャ又は表示内容を設定する。或いは基準点の位置に応じて、配置オブジェクトの配置位置、配置方向又は配置数を設定する。
例えば図26では、基準点RPの他に、基準点RP2、RP3が設定されている。基準点RPは、ユーザを誘導したい目的地や目的物であるターゲットTGに対して設定されている。一方、基準点RP2、RP3は、ターゲットTGとは異なる場所PLA、PLBに設定されている。そして、ターゲットTGに設定された基準点RPに対しては、図26に示すような表示態様又は配置態様に設定された配置オブジェクトOB1、OB2、OB3が配置されている。一方、ターゲットTGとは異なる場所PLAに設定された基準点RP2に対しては、配置オブジェクトOB1、OB2、OB3とは表示態様又は配置態様が異なる配置オブジェクトOB21、OB22、OB23が配置される。ターゲットTGとは異なる場所PLBに設定された基準点RP3に対しては、配置オブジェクトOB1、OB2、OB3とは表示態様又は配置態様が異なる配置オブジェクトOB31、OB32、OB33が配置される。即ち基準点RP、RP2、RP3に応じて、配置オブジェクトの表示態様又は配置態様が異なっている。
例えばターゲットTGに設定された基準点RPに対しては、紙面において上方向を指す矢印が描かれた配置オブジェクトOB1、OB2、OB3が、基準点RPとユーザキャラクタUSCを結ぶ線上に配置される。
一方、ターゲットTGとは異なる場所PLAに設定された基準点RP2に対しては、紙面において右斜め上方向を指す矢印が描かれた配置オブジェクトOB21、OB22、OB23が、基準点RP2とユーザキャラクタUSCを結ぶ線上に配置される。配置オブジェクトOB21、OB22、OB23の矢印は、ターゲットTGに設定された基準点RPの方を指し示している。
ターゲットTGとは異なる場所PLBに設定された基準点RP3に対しては、紙面において左斜め上方向を指す矢印が描かれた配置オブジェクトOB31、OB32、OB33が、基準点RP3とユーザキャラクタUSCを結ぶ線上に配置される。配置オブジェクトOB31、OB32、OB33の矢印は、ターゲットTGに設定された基準点RPの方を指し示している。
このように基準点の位置に応じて配置オブジェクトの表示態様又は配置態様を設定することで、各基準点に適切な表示態様又は配置態様に配置オブジェクトを設定できるようになる。従って、ユーザにとって、より見やすく、ガイド表示としても好適な配置オブジェクトの配置設定が可能になる。
また本実施形態では、ユーザの状況情報、ユーザキャラクタの状況情報、或いはゲーム状況情報に応じて、基準点の設定を行う。更に本実施形態では、実空間の環境情報を取得する。そして環境情報に応じて、基準点の設定、或いは配置オブジェクトの表示態様又は配置態様の設定を行う。即ち、種々の情報に基づいて基準点の設定を可変に変化させる。
図27に基準点の設定処理についてのフローチャートを示す。まず、実空間の明るさ情報や広さ情報などの環境情報を取得する(ステップS1)。実空間の明るさ情報や広さ情報は、例えば図6のプレイフィールドFLや図14のプレイフィールドFLRでの明るさ情報や広さ情報である。例えば明るさ情報は、プレイフィールドFL、FLRでの照明等による明るさ情報である。例えば照明が弱ければ、暗いと判断され、照明が強ければ、明るいと判断される。広さ情報は、プレイフィールドFL、FLRの広さの指標となる情報である。例えばプレイフィールドFL、FLRの広さや明るさに応じて、図4(A)、図4(B)で説明した実空間の認識処理の認識範囲や、認識の精度や信頼度等が変化する。
次にユーザの年齢層、体格、ゲームプレイ状況等のユーザの状況情報を取得する(ステップS2)。ユーザの年齢層は、例えばユーザが子供であるか大人であるかの情報である。或いはユーザが若者であるか老人であるかの情報であってもよい。体格は、例えばユーザの身長の高さなどの情報である。或いはユーザの体重の情報であってもよい。ゲームプレイ状況は、例えばユーザのゲームプレイの熟練度(初級者、中級者又は上級者)、ユーザの装備の状況、ユーザの過去のゲーム成績、ユーザのゲームプレイ回数、ユーザのゲームプレイ頻度、ユーザのゲームでの各種ステータス、或いはユーザのフレンドに関する状況などである。
次にユーザキャラクタのステータス、レベル、ゲームパラメータ等のユーザキャラクタの状況情報を取得する(ステップS3)。ユーザキャラクタのステータスは、ユーザキャラクタの攻撃力、防御力、耐久度又は装備などの状況である。ユーザキャラクタのレベルは、ゲームでのユーザキャラクタの経験値などのレベルを表すものである。ユーザキャラクタのゲームパラメータは、ゲーム処理の際に使用されるユーザキャラクタの各種のパラメータである。
次にキャラクタの状況情報、種類情報を取得する(ステップS4)。キャラクタの状況情報は、キャラクタのステータス、レベル、ゲームパラメータ等の情報である。キャラクタの種類情報は、キャラクタがどのような種類に属するかについての情報である。例えばキャラクタとして、蚊以外の虫のキャラクタを出現させたり、動物のキャラクタを出現させたり、モンスターのキャラクタを出現させる場合に、種類情報は、虫や動物やモンスターの種類を表す情報である。
次にゲーム状況情報を取得する(ステップS5)。ゲーム状況情報は、ゲームの進行状況、ゲームでのイベントの発生状況、ゲームの難易度、ゲームステージのクリア状況、或いはゲームのマップの状況などである。
そして、取得された実空間の環境情報、ユーザの状況情報、ユーザキャラクタの状況情報、キャラクタの状況情報又は種類情報、或いはゲーム状況情報に基づいて、基準点を設定する(ステップS6)。或いは、環境情報に応じて、配置オブジェクトの表示態様又は配置態様の設定を行う。
例えば実空間の照明等の環境が暗いと、図4(A)、図4(B)の実空間の認識処理の認識範囲が狭まったり、認識の精度や信頼度が低下する。このため、環境が暗いと判断される場合には、ユーザキャラクタから近い位置に基準点を設定したり、基準点の設定間隔を狭める。例えばメインの基準点とユーザキャラクタとの間に、サブの基準点を設定する。或いは、実空間の認識処理によりリアルタイムに取得された実空間情報を用いるのではなく、過去の認識処理により取得されて実空間情報記憶部171に蓄積された実空間情報を用いて、基準点を設定する。
またユーザの年齢層や体格に応じて基準点の設定位置を変化させる。例えば子供のユーザや背の低いユーザであれば低い位置に基準点を設定する。一方、大人のユーザや背の高いユーザであれば、子供や背の低いユーザに比べて高い位置に基準点を設定する。或いは、ユーザが初級者であるか上級者であるか、或いはユーザのゲームのプレイ回数やプレイ頻度に応じて、基準点の設定位置、設定数、設定間隔又は設定態様を変化させる。例えばユーザが初級者であれば、より難易度が低くなるように基準点を設定し、上級者であれば、より難易度が高くなるように基準点を設定する。またゲームのプレイ回数が多かったり、プレイ頻度が高いユーザに対しては、特典として、ユーザのゲームプレイがより有利になるように基準点を設定する。
またユーザキャラクタの攻撃力、守備力、装備又は耐久力などのステータスや、レベル、或いは各種のゲームパラメータに応じて、基準点の設定位置、設定数、設定間隔又は設定態様を変化させる。例えばユーザキャラクタの能力が高いか低いか、或いはユーザが所定の装備をしているか否かに応じて、基準点の設定を変化させる。或いはキャラクタの状況情報や種類情報に応じて、基準点の設定位置、設定数、設定間隔又は設定態様を変化させる。例えばキャラクタの攻撃力、守備力、装備又は耐久力などのステータスに応じて基準点の設定を変化させる。或いは出現するキャラクタが第1の種類(例えば第1の種類の虫、動物、モンスター)である場合と第2の種類である場合とで、基準点の設定位置などを変化させる。
またゲーム状況に応じて、基準点の設定位置、設定数、設定間隔又は設定態様を変化させる。例えばゲームの進行状況やイベントの発生状況に応じて基準点の設定を変化させる。例えば図14において天井のオブジェクトOBCの崩壊イベントが発生した場合には、天井のオブジェクトOBCの破片の奥側に基準点が設定されるのは好ましくないため、破片の手前側に基準点を設定する。或いはゲームの難易度に応じて、基準点の設定位置、設定数又は設定間隔等を変化させる。例えば、ゲームの難易度が高くなるにつれて、ユーザのゲームのクリアが難しくなうように基準点の設定を変化させる。
以上のようにすることで、実空間の環境、ユーザの状況、ユーザキャラクタの状況、キャラクタの状況又は種類、或いはゲーム状況に応じた適切な基準点の設定が可能になる。
なお本実施形態では、環境情報に応じて、配置オブジェクトの表示態様又は配置態様の設定を行ってもよい。例えば実空間のプレイフィールドでの照明の明るさ情報や広さ情報などに応じて、配置オブジェクトの表示態様を変化させたり、配置オブジェクトの配置態様を変化させる。例えば実空間が非常に明るい環境であるため、配置オブジェクトの視認性や識別力が低下してしまう場合には、実空間での明るさが明るいほど、配置オブジェクトの視認性や識別力を高めるような表示態様の変化処理を行う。或いは、実空間でのプレイフィールドの広さに応じて、配置オブジェクトの配置位置、配置方向又は配置数を変化させる。
また例えば実空間において、ユーザの近くに壁などが存在し、ユーザが壁にぶつかるおそれがあることが、環境情報等に基づき検出されたとする。この場合には、実空間においてユーザが壁に接近すると、壁に対応して生成された仮想空間の壁オブジェクトの位置に基準点を設定し、設定された基準点に基づいて、ユーザに対して警告を行うような配置オブジェクトを配置してもよい。
或いは、報知イベントの発生ポイントに位置するオブジェクトに対して基準点を設定し、設定された基準点に基づいて、ユーザに対して各種のメッセージを報知したり、ゲーム状況の情報等を報知する配置オブジェクトを配置してもよい。或いは、ユーザへの指示イベントの発生ポイントに位置するオブジェクトに対して基準点を設定し、設定された基準点に基づいて、ユーザに対して、各種の行動を指示したり、ゲームプレイに関する各種の指示を行う配置オブジェクトを配置してもよい。
また本実施形態では、ユーザの状況情報、ユーザキャラクタの状況情報、或いはゲーム状況情報に応じて、配置オブジェクトの表示態様又は配置態様を設定する。例えばユーザの状況情報、ユーザキャラクタの状況情報、或いはゲームの状況情報に応じて、配置オブジェクトの色、輝度、半透明度、テクスチャ又は表示内容を設定したり、配置オブジェクトの配置位置、配置方向又は配置数を設定する。
図28は、ユーザやユーザキャラクタやゲームの状況情報に応じて配置オブジェクトの表示態様や配置態様を設定する処理についてのフローチャートである。まず、ユーザの年齢層、体格、ゲームプレイ状況等のユーザの状況情報を取得する(ステップS11)。次にユーザキャラクタのステータス、レベル、ゲームパラメータ等のユーザキャラクタの状況情報を取得する(ステップS12)。またキャラクタの状況情報、種類情報を取得する(ステップS13)。更にゲーム状況情報を取得する(ステップS14)。これらのユーザの状況情報、ユーザキャラクタの状況情報、キャラクタの状況情報、種類情報、ゲーム状況情報は、前述した通りの情報である。
そして、ユーザの状況情報、ユーザキャラクタの状況情報、或いはゲーム状況情報に基づいて、配置オブジェクトの表示態様又は配置態様を設定する(ステップS15)。例えばこれらの情報に基づいて、配置オブジェクトの表示態様又は配置態様を変化させる。
例えばユーザの年齢層や体格に応じて配置オブジェクトの表示態様又は配置態様を変化させる。例えば図29(A)のように、子供や背の低いユーザUSであれば、配置オブジェクトOBの配置位置の高さLH1を低くする。一方、図29(B)のように、大人や背の高いユーザUSであれば、配置オブジェクトOBの配置位置の高さLH2を高くする。このようにすれば、ユーザUSにとって、より見やすい位置に配置オブジェクトOBを配置できるようになる。また、ユーザが初級者であるか上級者であるか、或いはユーザのゲームのプレイ回数やプレイ頻度に応じて、配置オブジェクトの表示態様又は配置態様を変化させる。例えばユーザが初級者であれば、上級者の場合に比べて、より見やすい表示態様又は配置態様で配置オブジェクトを配置する。またユーザのゲームのプレイ回数が多かったり、プレイ頻度が高いユーザに対しては、特典として、より見やすい表示態様又は配置態様で配置オブジェクトを配置する。或いは逆に、より見にくい表示態様又は配置態様で配置オブジェクトを配置してもよい。
またユーザキャラクタの攻撃力、守備力、装備又は耐久力などのステータスや、レベル、或いは各種のゲームパラメータに応じて、配置オブジェクトの表示態様又は配置態様を変化させる。例えばユーザキャラクタの能力が高いか低いか、或いはユーザが所定の装備をしているか否かに応じて、配置オブジェクトの表示態様又は配置態様を変化させる。
またゲーム状況に応じて、配置オブジェクトの表示態様又は配置態様を変化させる。例えばゲームにおいて所定のイベントが発生したかに応じて、配置オブジェクトの表示態様又は配置態様を変化させる。或いはゲームの難易度に応じて、配置オブジェクトの表示態様又は配置態様を変化させる。例えば、ゲームの難易度が高くなるにつれて、ユーザのゲームのクリアが難しくなうように、配置オブジェクトの表示態様又は配置態様を変化させる。
例えば図30(A)では、ターゲットTGである宝箱TRの場所に基準点RPが設定されている。そして、宝箱TRの方にユーザをガイドするための配置オブジェクトOB1、OB2、OB3が配置されている。宝箱TRが未だ開けられていなく、中身がある状態においては、図30(A)に示すような表示態様又は配置態様で配置オブジェクトOB1〜OB3が配置される。そして例えば1回目のダンジョンの探索において、ユーザキャラクタUSCが、配置オブジェクトOB1〜OB3のガイドにより、宝箱TRの位置にたどり着き、宝箱TRを開けてその中身を獲得したとする。この場合には図30(B)に示すように、2回目のダンジョンの探索の際には、配置オブジェクトOB1〜OB3の表示態様が非表示状態に設定されたり、視認度又は識別力が低い表示態様に設定される。このように図30(A)、図30(B)ではゲーム状況に応じて、配置オブジェクトOB1〜OB3の表示態様等を変化させている。
以上のようにすることで、ユーザの状況、ユーザキャラクタの状況、或いはゲーム状況に応じた適切な配置オブジェクトの配置設定が可能になる。
なお本実施形態では、実空間のプレイフィールドに宝箱TRを設置し、HMD200のカメラなどを用いて実空間の宝箱TRの認識処理を行い、ターゲットTGである宝箱TRに対応する宝箱オブジェクトを生成する。そして宝箱オブジェクトに対して基準点RPを設定し、設定された基準点RPに基づいて配置オブジェクトOB1〜OB3を配置する。このようにすれば、ユーザのゲームプレイ(広義には行動)のターゲットTGに対して基準点RPを設定し、ターゲットTGに設定された基準点RPに基づいて配置オブジェクトOB1〜OB3を配置できるようになる。なおターゲットTGの位置と基準点RPの位置は一致していてもよいし、ターゲットTGの位置から相対的に所与の距離だけ離れた位置に基準点RPを設定してもよい。
4.詳細な処理
次に本実施形態の詳細な処理例について図31のフローチャートを用いて説明する。
まずユーザの周囲の実空間の認識処理を行って、実空間情報を取得する(ステップS21)。即ち図4(A)、図4(B)で説明したような実空間のスキャン処理を行って、取得された実空間情報を図1の実空間情報記憶部171に蓄積して行く。またユーザの位置情報を含むユーザ情報を取得する(ステップS22)。例えば図2、図3で説明したHMD200のトラッキング処理等により、ユーザの位置情報や、ユーザの方向情報、姿勢情報などを含むユーザ情報を取得する。
次に、取得された実空間情報に基づいて、実空間に対応する仮想空間を生成する(ステップS23)。例えば図4(B)に示すような実空間の物体(机、壁等)に対応する仮想的なオブジェクトを生成して、仮想空間に配置設定する。そしてユーザ情報と実空間情報に基づき、基準点を設定し、基準点に基づいて配置オブジェクトを仮想空間に配置する(ステップS24)。そしてユーザキャラクタと配置オブジェクトの位置関係に応じて、配置オブジェクトの表示態様を設定する(ステップS25)。例えば図21(A)〜図22(B)に示すように、ユーザキャラクタUSCと配置オブジェクトOB1〜OB4の位置関係に応じて、配置オブジェクトの半透明度や表示内容などの表示態様を設定する。これにより図12(A)〜図13(B)に示すように、ターゲットTGにユーザを適切にガイドできるような見やすい表示態様で、配置オブジェクトOB1〜OB4を表示できるようになる。
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(ユーザ移動体、検出部等)と共に記載された用語(ユーザキャラクタ、アームセンサ等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また実空間情報やユーザ情報の取得処理、仮想空間の生成処理、基準点の設定処理、配置オブジェクトの配置処理、配置オブジェクトの表示態様又は配置態様の設定処理、キャラクタの配置処理、ヒットボリュームの設定処理、位置関係の判断処理等も、本実施形態で説明したものに限定されず、これらと均等な手法・処理・構成も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲーム装置、家庭用ゲーム装置、又は多数のユーザが参加する大型アトラクションシステム等の種々のシミュレーションシステムに適用できる。