以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.シミュレーションシステム
図1は、本実施形態のシミュレーションシステム(シミュレータ、ゲームシステム)の構成例を示すブロック図である。本実施形態のシミュレーションシステムは例えばバーチャルリアリティ(VR)をシミュレートするシステムであり、ゲームコンテンツを提供するゲームシステム、スポーツ競技シミュレータや運転シミュレータなどのリアルタイムシミュレーションシステム、SNSのサービスを提供するシステム、映像等のコンテンツを提供するコンテンツ提供システム、或いは遠隔作業を実現するオペレーティングシステムなどの種々のシステムに適用可能である。なお、本実施形態のシミュレーションシステムは図1の構成に限定されず、その構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
操作部160は、ユーザ(プレーヤ)が種々の操作情報(入力情報)を入力するためのものである。操作部160は、例えば操作ボタン、方向指示キー、ジョイスティック、ハンドル、ペダル又はレバー等の種々の操作デバイスにより実現できる。例えば操作部160は、例えばユーザの装備品であるガン型コントローラ等のコントローラにより実現できる。
記憶部170は各種の情報を記憶する。記憶部170は、処理部100や通信部196などのワーク領域として機能する。ゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部170に保持される。記憶部170の機能は、半導体メモリ(DRAM、VRAM)、HDD(ハードディスクドライブ)、SSD、光ディスク装置などにより実現できる。記憶部170は、オブジェクト情報記憶部172、描画バッファ178を含む。
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(DVD、BD、CD)、HDD、或いは半導体メモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータ(入力装置、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
HMD200(頭部装着型表示装置)は、ユーザの頭部に装着されて、ユーザの眼前に画像を表示する装置である。HMD200は非透過型であることが望ましいが、透過型であってもよい。またHMD200は、いわゆるメガネタイプのHMDであってもよい。
HMD200は、センサ部210、表示部220、処理部240を含む。なおHMD200に発光素子を設ける変形実施も可能である。センサ部210は、例えばヘッドトラッキングなどのトラッキング処理を実現するためものである。例えばセンサ部210を用いたトラッキング処理により、HMD200の位置、方向を特定する。HMD200の位置、方向が特定されることで、ユーザの視点位置、視線方向を特定できる。
トラッキング方式としては種々の方式を採用できる。トラッキング方式の一例である第1のトラッキング方式では、後述の図2(A)、図2(B)で詳細に説明するように、センサ部210として複数の受光素子(フォトダイオード等)を設ける。そして外部に設けられた発光素子(LED等)からの光(レーザー等)をこれらの複数の受光素子により受光することで、現実世界の3次元空間でのHMD200(ユーザの頭部)の位置、方向を特定する。第2のトラッキング方式では、後述の図3(A)、図3(B)で詳細に説明するように、複数の発光素子(LED)をHMD200に設ける。そして、これらの複数の発光素子からの光を、外部に設けられた撮像部で撮像することで、HMD200の位置、方向を特定する。第3のトラッキング方式では、センサ部210としてモーションセンサを設け、このモーションセンサを用いてHMD200の位置、方向を特定する。モーションセンサは例えば加速度センサやジャイロセンサなどにより実現できる。例えば3軸の加速度センサと3軸のジャイロセンサを用いた6軸のモーションセンサを用いることで、現実世界の3次元空間でのHMD200の位置、方向を特定できる。なお、第1のトラッキング方式と第2のトラッキング方式の組合わせ、或いは第1のトラッキング方式と第3のトラッキング方式の組合わせなどにより、HMD200の位置、方向を特定してもよい。またHMD200の位置、方向を特定することでユーザの視点位置、視線方向を特定するのではなく、ユーザの視点位置、視線方向を直接に特定するトラッキング処理を採用してもよい。
HMD200の表示部220は例えば有機ELディスプレイ(OEL)や液晶ディスプレイ(LCD)などにより実現できる。例えばHMD200の表示部220には、ユーザの左目の前に設定される第1のディスプレイ又は第1の表示領域と、右目の前に設定される第2のディスプレイ又は第2の表示領域が設けられており、立体視表示が可能になっている。立体視表示を行う場合には、例えば視差が異なる左目用画像と右目用画像を生成し、第1のディスプレイに左目用画像を表示し、第2のディスプレイに右目用画像を表示する。或いは1つのディスプレイの第1の表示領域に左目用画像を表示し、第2の表示領域に右目用画像を表示する。またHMD200には左目用、右目用の2つの接眼レンズ(魚眼レンズ)が設けられており、これによりユーザの視界の全周囲に亘って広がるVR空間が表現される。そして接眼レンズ等の光学系で生じる歪みを補正するための補正処理が、左目用画像、右目用画像に対して行われる。この補正処理は表示処理部120が行う。
HMD200の処理部240は、HMD200において必要な各種の処理を行う。例えば処理部240は、センサ部210の制御処理や表示部220の表示制御処理などを行う。また処理部240が、3次元音響(立体音響)処理を行って、3次元的な音の方向や距離や広がりの再現を実現してもよい。
音出力部192は、本実施形態により生成された音を出力するものであり、例えばスピーカ又はヘッドホン等により実現できる。
I/F(インターフェース)部194は、携帯型情報記憶媒体195とのインターフェース処理を行うものであり、その機能はI/F処理用のASICなどにより実現できる。携帯型情報記憶媒体195は、ユーザが各種の情報を保存するためのものであり、電源が非供給になった場合にもこれらの情報の記憶を保持する記憶装置である。携帯型情報記憶媒体195は、ICカード(メモリカード)、USBメモリ、或いは磁気カードなどにより実現できる。
通信部196は、有線や無線のネットワークを介して外部(他の装置)との間で通信を行うものであり、その機能は、通信用ASIC又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバ(ホスト装置)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(あるいは記憶部170)に配信してもよい。このようなサーバ(ホスト装置)による情報記憶媒体の使用も本発明の範囲内に含めることができる。
処理部100(プロセッサ)は、操作部160からの操作情報や、HMD200でのトラッキング情報(HMDの位置及び方向の少なくとも一方の情報。視点位置及び視線方向の少なくとも一方の情報)や、プログラムなどに基づいて、ゲーム処理(シミュレーション処理)、仮想空間設定処理、移動体処理、仮想カメラ制御処理、表示処理、或いは音処理などを行う。
処理部100の各部が行う本実施形態の各処理(各機能)はプロセッサ(ハードウェアを含むプロセッサ)により実現できる。例えば本実施形態の各処理は、プログラム等の情報に基づき動作するプロセッサと、プログラム等の情報を記憶するメモリにより実現できる。プロセッサは、例えば各部の機能が個別のハードウェアで実現されてもよいし、或いは各部の機能が一体のハードウェアで実現されてもよい。例えば、プロセッサはハードウェアを含み、そのハードウェアは、デジタル信号を処理する回路及びアナログ信号を処理する回路の少なくとも一方を含むことができる。例えば、プロセッサは、回路基板に実装された1又は複数の回路装置(例えばIC等)や、1又は複数の回路素子(例えば抵抗、キャパシター等)で構成することもできる。プロセッサは、例えばCPU(Central Processing Unit)であってもよい。但し、プロセッサはCPUに限定されるものではなく、GPU(Graphics Processing Unit)、或いはDSP(Digital Signal Processor)等、各種のプロセッサを用いることが可能である。またプロセッサはASICによるハードウェア回路であってもよい。またプロセッサは、アナログ信号を処理するアンプ回路やフィルター回路等を含んでもよい。メモリ(記憶部170)は、SRAM、DRAM等の半導体メモリであってもよいし、レジスターであってもよい。或いはハードディスク装置(HDD)等の磁気記憶装置であってもよいし、光学ディスク装置等の光学式記憶装置であってもよい。例えば、メモリはコンピュータにより読み取り可能な命令を格納しており、当該命令がプロセッサにより実行されることで、処理部100の各部の処理(機能)が実現されることになる。ここでの命令は、プログラムを構成する命令セットでもよいし、プロセッサのハードウェア回路に対して動作を指示する命令であってもよい。
処理部100は、入力処理部102、演算処理部110、出力処理部140を含む。演算処理部110は、情報取得部111、仮想空間設定部112、移動体処理部113、仮想カメラ制御部114、ゲーム処理部115、報知処理部116、表示処理部120、音処理部130を含む。上述したように、これらの各部により実行される本実施形態の各処理は、プロセッサ(或いはプロセッサ及びメモリ)により実現できる。なお、これらの構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
入力処理部102は、操作情報やトラッキング情報を受け付ける処理や、記憶部170から情報を読み出す処理や、通信部196を介して情報を受信する処理を、入力処理として行う。例えば入力処理部102は、操作部160を用いてユーザが入力した操作情報やHMD200のセンサ部210等により検出されたトラッキング情報を取得する処理や、読み出し命令で指定された情報を、記憶部170から読み出す処理や、外部装置(サーバ等)からネットワークを介して情報を受信する処理を、入力処理として行う。ここで受信処理は、通信部196に情報の受信を指示したり、通信部196が受信した情報を取得して記憶部170に書き込む処理などである。
演算処理部110は、各種の演算処理を行う。例えば情報取得処理、仮想空間設定処理、移動体処理、仮想カメラ制御処理、ゲーム処理(シミュレーション処理)、報知処理、表示処理、或いは音処理などの演算処理を行う。
情報取得部111(情報取得処理のプログラムモジュール)は種々の情報の取得処理を行う。例えば情報取得部111は、HMD200を装着するユーザの位置情報などを取得する。情報取得部111はユーザの方向情報などを取得してもよい。
仮想空間設定部112(仮想空間設定処理のプログラムモジュール)は、複数のオブジェクトが配置される仮想空間(オブジェクト空間)の設定処理を行う。例えば、移動体(人、ロボット、車、電車、飛行機、船、モンスター又は動物等)、マップ(地形)、建物、観客席、コース(道路)、樹木、壁、水面などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)を仮想空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。具体的には、記憶部170のオブジェクト情報記憶部172には、仮想空間でのオブジェクト(パーツオブジェクト)の位置、回転角度、移動速度、移動方向等の情報であるオブジェクト情報がオブジェクト番号に対応づけて記憶される。仮想空間設定部112は、例えば各フレーム毎にこのオブジェクト情報を更新する処理などを行う。
移動体処理部113(移動体処理のプログラムモジュール)は、仮想空間内で移動する移動体についての種々の処理を行う。例えば仮想空間(オブジェクト空間、ゲーム空間)において移動体を移動させる処理や、移動体を動作させる処理を行う。例えば移動体処理部113は、操作部160によりユーザが入力した操作情報や、取得されたトラッキング情報や、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、移動体(モデルオブジェクト)を仮想空間内で移動させたり、移動体を動作(モーション、アニメーション)させる制御処理を行う。具体的には、移動体の移動情報(位置、回転角度、速度、或いは加速度)や動作情報(パーツオブジェクトの位置、或いは回転角度)を、1フレーム(例えば1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動体の移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。移動体は、例えば実空間のユーザ(プレーヤ)に対応する仮想空間の仮想ユーザ(仮想プレーヤ、アバター)や、或いは当該仮想ユーザが搭乗(操作)する搭乗移動体(操作移動体)などである。
ゲーム処理部115(ゲーム処理のプログラムモジュール)はユーザがゲームをプレイするための種々のゲーム処理を行う。別の言い方をすれば、ゲーム処理部115(シミュレーション処理部)は、ユーザが仮想現実(バーチャルリアリティ)を体験するための種々のシミュレーション処理を実行する。ゲーム処理は、例えば、ゲーム開始条件が満たされた場合にゲームを開始する処理、開始したゲームを進行させる処理、ゲーム終了条件が満たされた場合にゲームを終了する処理、或いはゲーム成績を演算する処理などである。
報知処理部116(報知処理のプログラムモジュール)は各種の報知処理を行う。例えばユーザに対する警告の報知処理などを行う。報知処理は、例えば画像や音による報知処理であってもよいし、振動デバイスや音響や空気砲などの体感装置を用いた報知処理であってもよい。
表示処理部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に示すように、情報取得部111と、仮想空間設定部112と、移動体処理部113と、表示処理部120を含む。
情報取得部111は、例えば視界を覆うようにHMD200を装着するユーザの位置情報を取得する。例えば情報取得部111は、HMD200のトラッキング情報などに基づいて、実空間でのユーザの位置情報を取得する。例えばHMD200の位置情報を、当該HMD200を装着するユーザの位置情報として取得する。具体的には、ユーザが実空間(現実世界)のフィールド(プレイフィールド、シミュレーションフィールド、プレイエリア)に位置する場合に、そのフィールドでの位置情報(所与の位置を原点とする座標系での位置座標等)を取得する。
仮想空間設定部112は、取得された位置情報に基づいて、ユーザに対応する移動体が配置設定される仮想空間の設定処理を行う。例えば移動体の位置、方向を設定して、仮想空間に配置する処理を行う。具体的には、実空間のユーザの位置に対応する仮想空間の位置に、ユーザに対応する移動体を配置する。オブジェクトである移動体の位置、方向等の情報は、例えばオブジェクト情報記憶部172に記憶される。移動体は、例えば実空間でユーザの移動に追従して仮想空間(オブジェクト空間)において移動するオブジェクト(表示物)である。移動体は、例えばユーザに対応する仮想ユーザ(アバター)やユーザが搭乗する搭乗移動体などである。
移動体処理部113は、取得された位置情報に基づいて、仮想空間において移動体を移動させる処理を行う。例えばユーザの位置情報に応じて、実空間でのユーザの移動に追従して移動するように、仮想空間で移動体を移動させる。例えば移動体の移動速度や移動加速度に基づいて、移動体の位置等をフレーム毎に更新する処理を行って、移動体を仮想空間(仮想フィールド)において移動させる。
表示処理部120は、ユーザが装着するHMD200の表示画像を生成する。例えば仮想空間において仮想カメラから見える画像を、HMD200の表示画像として生成する。例えば仮想カメラ制御部114は、HMD200を装着するユーザの視点に対応する仮想カメラの制御処理を行う。例えば仮想カメラ制御部114は、ユーザの一人称視点として設定される仮想カメラの制御を行う。例えば仮想空間において移動する移動体(仮想プレーヤ等)の視点に対応する位置に、仮想カメラを設定して、仮想カメラの視点位置や視線方向を設定することで、仮想カメラの位置(位置座標)や姿勢(回転軸回りでの回転角度)を制御する。そして表示処理部120は、HMD200の表示画像(表示映像)として、仮想空間において仮想カメラ(ユーザ視点)から見える画像を生成する。例えば仮想空間であるオブジェクト空間において所与の視点から見える画像を生成する。生成される画像は例えば立体視用の画像である。
そして本実施形態では仮想空間設定部112は、実空間の第1のフィールドに位置する第1のユーザ群に対応する第1の移動体群と、実空間の第2のフィールドに位置する第2のユーザ群に対応する第2の移動体群とが、仮想空間の共通の仮想フィールド(同じ仮想フィールド)に配置設定されるように、仮想空間の設定処理を行う。第2のフィールドは例えば第1のフィールドとは異なるフィールドである。
即ち、本実施形態のシミュレーションシステムでは、第1のユーザ群が移動可能な第1のフィールドと、第2のユーザ群が移動可能な第2のフィールドが用意される。なお、第3のユーザ群が移動可能な第3のフィールドなど、3つ以上のフィールドを用意してもよい。これらのフィールドは、例えばシミュレーションシステムを運営する施設などに設けられる。なおフィールドは施設以外の場所(例えば庭、家の中等)に設けられるものであってもよい。また第1、第2のユーザ群は例えば少なくとも1人のユーザにより構成されるグループ(チーム)などである。
そして仮想空間には、第1のフィールドの第1のユーザ群に対応する第1の移動体群と、第2のフィールドの第2のユーザ群に対応する第2の移動体群が登場する。これらの第1、第2の移動体群の各移動体は、第1、第2のユーザ群の各ユーザに対応する移動体であり、各ユーザに対応する仮想ユーザや搭乗移動体(ロボット等)などである。これらの移動体は、例えば実空間のユーザとは異なる衣装や装備をまとっている。
そして仮想空間設定部112は、第1のユーザ群に対応する第1の移動体群と、第2のユーザ群に対応する第2の移動体群とが、仮想空間の共通の仮想フィールドに配置設定されるように仮想空間の設定処理を行う。例えば第1のユーザ群の各ユーザに対応する第1の移動体群の各移動体を、第1のフィールドでの各ユーザの位置に対応する仮想フィールドの位置に配置する。また第2のユーザ群の各ユーザに対応する第2の移動体群の各移動体を、第2のフィールドでの各ユーザの位置に対応する仮想フィールドの位置に配置する。
例えば第1のフィールドの基準点(例えば原点)に対する第1のユーザ群の各ユーザの相対的な位置座標をPCD1(X1、Y1)とする。この場合に、第1の移動群の各移動体を、仮想フィールドの基準点(例えば原点)と、この相対的な位置座標PCD1(X1、Y1)に基づき特定される位置に配置する。また第2のフィールドの基準点(例えば原点)に対する第2のユーザ群の各ユーザの相対的な位置座標をPCD2(X2、Y2)とする。この場合に、第2の移動群の各移動体を、仮想フィールドの基準点と、この相対的な位置座標PCD2(X2、Y2)に基づき特定される位置に配置する。例えば、第1のフィールドの基準点に対する第1のユーザ群の第1のユーザの相対的な位置座標と、第2のフィールドの基準点に対する第2のユーザ群の第2のユーザの相対的な位置座標が同じであったとする。この場合には、第1のユーザに対応する第1の移動体と、第2のユーザに対応する第2の移動体は、共通の仮想フィールドでは例えば同じ位置に配置されることになる。
またシミュレーションシステムはゲーム処理部115を含む。ゲーム処理部115は、ユーザ同士の対戦のゲーム処理などを行う。具体的には、第1のグループ(第1のチーム)に属する第1のユーザ群と、第2のグループ(第2のチーム)に属する第2のユーザ群との間での対戦のゲーム処理を行う。例えば第1のユーザ群の第1のユーザに対応する移動体を第1の移動体とし、第2のユーザ群の第2のユーザに対応する移動体を第2の移動体とする。この場合にゲーム処理部115は、第1、第2の移動体のうちの一方の移動体が、他方の移動体に対して攻撃を行ったり、一方の移動体が、他方の移動体からの攻撃に対する防御を行うなどの対戦のゲーム処理を行う。対戦のゲーム処理は、例えば一方の移動体の攻撃が他方の移動体にヒットしたか否か、或いは、一方の移動体の攻撃を他方の移動体が防御したか否かなどを判定することで実現できる。またゲーム処理部115は、この対戦ゲームのゲーム成績を演算する処理なども、ゲーム処理として行う。
またシミュレーションシステムは、ユーザに出力される音の生成処理を行う音処理部130を含む。そして音処理部130は、仮想空間の仮想フィールドでの移動体の位置情報に基づいて、ユーザに出力される音の生成処理を行う。即ち、実空間のフィールドでのユーザの位置情報を用いるのではなく、仮想フィールドでの移動体の位置情報を用いて、各ユーザに出力される音の生成処理を行う。例えば音処理部130は、ユーザに出力される音の生成処理を行うために、音場の形成処理を行う。そして、この音場の形成処理を、仮想空間の仮想フィールドでの移動体の位置情報を用いて行う。例えば第1のユーザ群は第1のフィールドに位置し、第2のユーザ群は第2のフィールドに位置するため、第1のユーザ群の第1のユーザと、第2のユーザ群の第2のユーザの実空間での距離は離れている。この場合にも本実施形態では、共通の仮想フィールドでは、第1のユーザに対応する第1の移動体と、第2のユーザに対応する第2の移動体が接近する状況が生じる。そして本実施形態では、第1のユーザの音声や第1の移動体の攻撃音、移動音などが出力される第1の音源は、仮想空間での第1の移動体の位置に設定される。また第2のユーザの音声や第2の移動体の攻撃音、移動音などが出力される第2の音源は、仮想空間での第2の移動体の位置に設定される。従って、実空間において第1、第2のユーザが離れていた場合にも、仮想空間においては直ぐ近くから、相手側の音源からの音が聞こえてくるようになる。
またシミュレーションシステムは報知処理部116を含み、この報知処理部116は、種々の警告のための報知処理を行う。例えば報知処理部116は、実空間でのユーザ同士の衝突についての予測処理を行い、予測処理の結果に基づいて、ユーザ同士の衝突についての警告の報知処理を行う。例えばユーザが衝突の位置関係(接近関係)になるかについての予測処理を行い、そのような位置関係になった場合には、衝突のおそれあることを警告する報知処理を行う。予測処理は、各ユーザに対応する各移動体の位置、速度又は加速度などに基づいて、ユーザ同士が衝突の位置関係になるおそれがあるかを判断することなどで実現できる。
また報知処理部116は、実空間でのユーザの装備品の動き又はユーザの動きについての検出処理を行い、検出処理の検出結果に基づいて、装備品の動き又はユーザの動きについての警告の報知処理を行う。装備品は、例えばユーザが手に所持したり、ユーザの足、胴体又は頭部等の部位に装着したり、ユーザが着る物などである。そして、このようなユーザの装備品の動きやユーザ自身の動きを検出し、装備品の動き又はユーザの動きについての警告の報知処理を行う。例えば装備品又はユーザの位置、速度又は加速度などに基づいて、装備品又はユーザが激しく動いていないかなどを検出する。そして例えば装備品又はユーザの動き速度又は動き量が所与のしきい値以上であった場合には、この動きについての警告の報知処理を行う。
また報知処理部116は、ユーザと他のユーザの位置情報に基づいてユーザと他のユーザが接近関係にあると判断されたことを条件に、報知処理を行う。例えばユーザに対して設定された検出範囲(距離範囲)内に他のユーザが入った場合に、ユーザと他のユーザが接近関係にあると判断される。そして、警告の報知処理は、このようにユーザと他のユーザが接近関係にあると判断されたことを条件に行われる。例えば、ユーザと他のユーザが接近関係にない状態(検出範囲の外に他のユーザがいる状態)では、装備品又はユーザの動き速度又は動き量がしきい値以上であっても、これらの動きの警告の報知処理は行われないようになる。
なお警告の報知処理は、HMD200に表示される画像や、ヘッドホンやフィールドに設置されるスピーカなどから出力される音や、ユーザの武器、着衣又は装飾品などの装備品などに設けられる振動デバイスによる振動や、或いは実空間のフィールドに設けられる各種の体感機構(光、振動、空気砲又は音等による体感装置)などにより実現できる。
また移動体処理部113は、実空間でのユーザの移動量とは異なる移動量で、仮想空間において移動体を移動させる処理を行う。例えば実空間でのユーザの移動量よりも大きな移動量で、仮想空間において移動体を移動させる。或いは、実空間でのユーザのスケールと仮想空間での移動体のスケールを異ならせてもよい。こうすることで、ユーザ同士(例えば味方ユーザ同士)の衝突を抑制できるようになる。なお移動量は、ユーザや移動体の移動の度合いを表すものであり、例えば単位時間(フレーム)でのユーザや移動体の移動距離などにより表すことができる。
また移動体処理部113は、実空間でのユーザと他のユーザとが接近関係になったと判断された場合に、他のユーザに対応する他の移動体の移動速度を速くする、移動加速度を速くする、或いは移動距離を長くする移動処理を行う。例えば、ユーザに対して設定された検出範囲(距離範囲)内に、他のユーザが入った場合には、この他のユーザに対応する他の移動体の移動速度を速くしたり、移動加速度を速くしたり、或いは移動距離を長くする。即ち、検出範囲外に他のユーザが位置する場合に比べて、移動体の移動速度を速くしたり、移動加速度を速くしたり、或いは移動距離を長くする。こうすることで、ユーザ同士(例えば味方ユーザ同士)の衝突等を抑制できるようになる。
また表示処理部120は、ユーザに対応する移動体と、他のユーザに対応する他の移動体とが、所与の位置関係(例えば接近関係)になった場合に、この所与の位置関係に応じた演出処理画像の生成処理(表示処理)を行う。例えばゲーム処理部115は、移動体と他の移動体とが、所与の位置関係になった場合に、この所与の位置関係に応じたゲームの演出処理を行う。そして表示処理部120は、ゲーム処理部115の演出処理に応じた演出処理画像の生成処理を行う。例えば、このような所与の位置関係になっていない場合には表示されない演出処理画像を、移動体と他の移動体が当該所与の位置関係になった場合に、表示するようにする。所与の位置関係は、例えば移動体と他の移動体の接近関係である。或いは所与の位置関係は、移動体と他の移動体が向き合うような関係(正対する関係)などであってもよく、例えば移動体の視線方向と他の移動体の視線方向の関係であってもよい。
具体的には表示処理部120は、実空間でのユーザと他のユーザが接近関係になっていない状態で、仮想空間での移動体と他の移動体が接近関係になった場合に、演出処理画像の生成処理を行う。例えばゲーム処理部115は、ユーザと他のユーザが接近関係になっていない状態で、移動体と他の移動体が接近関係になった場合に、この接近関係に対応するゲームの演出処理を行う。そして表示処理部120は、このゲーム処理部115での演出処理に応じて、演出処理画像の生成処理を行う。
例えば表示処理部120は、移動体及び他の移動体の少なくとも一方が特殊モーションを行う演出処理画像、又は所与の位置関係用の特殊モードに移行する演出処理画像の生成処理を行う。例えば、このような位置関係(接近関係)に対応づけられた特殊モーションのデータが記憶部170に記憶されており、移動体と他の移動体が当該位置関係になった場合に、この特殊モーションのデータの再生処理を行う。そして、移動体と他の移動体の少なくとも一方が当該特殊モーションを行う演出処理画像を生成する。また、このような位置関係(接近関係)に対応づけられた特殊モードが用意されており、移動体と他の移動体が当該位置関係になった場合に、通常モード(通常ゲームモード)から当該特殊モードに移行する。
また仮想カメラ制御部114は、ユーザの視点情報のトラッキング情報に基づいて、ユーザの視点変化に追従するように仮想カメラを制御する。
例えば入力処理部102(入力受け付け部)は、HMD200を装着するユーザの視点情報のトラッキング情報を取得する。例えばユーザの視点位置、視線方向の少なくとも1つである視点情報のトラッキング情報(視点トラッキング情報)を取得する。このトラッキング情報は、例えばHMD200のトラッキング処理を行うことで取得できる。なおトラッキング処理によりユーザの視点位置、視線方向を直接に取得するようにしてもよい。一例としては、トラッキング情報は、ユーザの初期視点位置からの視点位置の変化情報(視点位置の座標の変化値)、及び、ユーザの初期視線方向からの視線方向の変化情報(視線方向の回転軸回りでの回転角度の変化値)の少なくとも一方を含むことができる。このようなトラッキング情報が含む視点情報の変化情報に基づいて、ユーザの視点位置や視線方向(ユーザの頭部の位置、姿勢の情報)を特定できる。
そして仮想カメラ制御部114は、取得されたトラッキング情報(ユーザの視点位置及び視線方向の少なくとも一方の情報)に基づいて仮想カメラの視点位置、視線方向を変化させる。例えば、仮想カメラ制御部114は、実空間でのユーザの視点位置、視線方向の変化に応じて、仮想空間での仮想カメラの視点位置、視線方向(位置、姿勢)が変化するように、仮想カメラを設定する。このようにすることで、ユーザの視点情報のトラッキング情報に基づいて、ユーザの視点変化に追従するように仮想カメラを制御できる。
また本実施形態では、ユーザがプレイするゲームのゲーム処理として、仮想現実のシミュレーション処理を行う。仮想現実のシミュレーション処理は、実空間での事象を仮想空間で模擬するためのシミュレーション処理であり、当該事象をユーザに仮想体験させるための処理である。例えば実空間のユーザに対応する仮想ユーザやその搭乗移動体などの移動体を、仮想空間で移動させたり、移動に伴う環境や周囲の変化をユーザに体感させるための処理を行う。
なお図1の本実施形態のシミュレーションシステムの処理は、施設に設置されるPC等の処理装置、ユーザが装着する処理装置、或いはこれらの処理装置の分散処理などにより実現できる。或いは、本実施形態のシミュレーションシステムの処理を、サーバシステムと端末装置により実現してもよい。例えばサーバシステムと端末装置の分散処理などにより実現してもよい。
2.トラッキング処理
次にトラッキング処理の例について説明する。図2(A)に本実施形態のシミュレーションシステムに用いられるHMD200の一例を示す。図2(A)に示すようにHMD200には複数の受光素子201、202、203(フォトダイオード)が設けられている。受光素子201、202はHMD200の前面側に設けられ、受光素子203はHMD200の右側面に設けられている。またHMDの左側面、上面等にも不図示の受光素子が設けられている。
またユーザUSは、現実世界の銃を模したガン型コントローラ290を所持しており、このガン型コントローラ290にも、受光素子204、205(フォトダイオード)が設けられている。これらの受光素子204、205を用いることで、ガン型コントローラ290の位置や方向を特定できる。またガン型コントローラ290には、銃の引き金のスイッチが設けられており、このスイッチを操作することで、仮想空間の移動体が銃を発砲する。なおガン型コントローラ290には少なくとも1つの受光素子が設けられていればよい。
またHMD200には、ヘッドバンド260等が設けられており、ユーザUSは、より良い装着感で安定的に頭部にHMD200を装着できるようになっている。また、HMD200には、不図示のヘッドホン端子が設けられており、このヘッドホン端子にヘッドホン270(音出力部192)を接続することで、例えば3次元音響(3次元オーディオ)の処理が施されたゲーム音を、ユーザUSは聴くことが可能になる。なお、ユーザUSの頭部の頷き動作や首振り動作をHMD200のセンサ部210等により検出することで、ユーザUSの操作情報を入力できるようにしてもよい。
またユーザUSは、処理装置250を例えば背中に装着している。例えばユーザUSはジャケットを着ており、このジャケットの背面側に処理装置250が取り付けられている。処理装置250は例えばノート型PC等の情報処理装置により実現される。そしてこの処理装置250とHMD200はケーブル252により接続されている。例えば処理装置250は、HMD200に表示される画像(ゲーム画像等)の生成処理を行い、生成された画像のデータがケーブル252を介してHMD200に送られ、HMD200に表示される。この処理装置250は、このような画像の生成処理以外にも、本実施形態の各処理(情報取得処理、仮想空間設定処理、移動体処理、仮想カメラ制御処理、ゲーム処理、報知処理、表示処理又は音処理等)を行うことが可能になっている。なお、本実施形態の各処理を、施設に設置されたPC等の処理装置(不図示)により実現したり、当該処理装置と、ユーザUSが装着する処理装置250の分散処理により実現してもよい。
図2(B)に示すように、シミュレーションシステム(可動筐体40)の周辺には、ベースステーション280、284が設置されている。ベースステーション280には発光素子281、282が設けられ、ベースステーション284には発光素子285、286が設けられている。発光素子281、282、285、286は、例えばレーザー(赤外線レーザー等)を出射するLEDにより実現される。ベースステーション280、284は、これら発光素子281、282、285、286を用いて、例えばレーザーを放射状に出射する。そして図2(A)のHMD200に設けられた受光素子201〜203等が、ベースステーション280、284からのレーザーを受光することで、HMD200のトラッキングが実現され、ユーザUSの頭の位置や向く方向(視点位置、視線方向)を検出できるようになる。またガン型コントローラ290に設けられる受光素子204、205が、ベースステーション280、284からのレーザーを受光することで、ガン型コントローラ290の位置及び方向の少なくとも一方を検出できるようになる。
図3(A)にHMD200の他の例を示す。図3(A)では、HMD200に対して複数の発光素子231〜236が設けられている。これらの発光素子231〜236は例えばLEDなどにより実現される。発光素子231〜234は、HMD200の前面側に設けられ、発光素子235や不図示の発光素子236は、背面側に設けられる。これらの発光素子231〜236は、例えば可視光の帯域の光を出射(発光)する。具体的には発光素子231〜236は、互いに異なる色の光を出射する。またユーザUSが所持するガン型コントローラ290にも、発光素子237、238(LED)が設けられている。なおガン型コントローラ290には少なくとも1つの発光素子が設けられていればよい。
そして図3(B)に示す撮像部150を、ユーザUSの周囲の少なくとも1つの場所(例えば前方側、或いは前方側及び後方側など)に設置し、この撮像部150により、HMD200の発光素子231〜236の光を撮像する。即ち、撮像部150の撮像画像には、これらの発光素子231〜236のスポット光が映る。そして、この撮像画像の画像処理を行うことで、ユーザUSの頭部(HMD)のトラッキングを実現する。即ちユーザUSの頭部の3次元位置や向く方向(視点位置、視線方向)を検出する。
例えば図3(B)に示すように撮像部150には第1、第2のカメラ151、152が設けられており、これらの第1、第2のカメラ151、152の第1、第2の撮像画像を用いることで、ユーザUSの頭部の奥行き方向での位置等が検出可能になる。またHMD200に設けられたモーションセンサのモーション検出情報に基づいて、ユーザUSの頭部の回転角度(視線)も検出可能になっている。従って、このようなHMD200を用いることで、ユーザUSが、周囲の360度の全方向うちのどの方向を向いた場合にも、それに対応する仮想空間(仮想3次元空間)での画像(ユーザの視点に対応する仮想カメラから見える画像)を、HMD200の表示部220に表示することが可能になる。
また撮像部150により、ガン型コントローラ290の発光素子237、238の光を撮像する。即ち、撮像部150の撮像画像には、発光素子237、238のスポット光が映り、この撮像画像の画像処理を行うことで、HMD200の場合と同様に、ガン型コントローラ290の位置及び方向の少なくとも一方を検出できる。
なお、発光素子231〜238として、可視光ではなく赤外線のLEDを用いてもよい。また、例えばデプスカメラ等を用いるなどの他の手法で、ユーザの頭部の位置や動き等を検出するようにしてもよい。
また、ユーザの視点位置、視線方向(ユーザの位置、方向)を検出するトラッキング処理の手法は、図2(A)〜図3(B)で説明した手法には限定されない。例えばHMD200に設けられたモーションセンサ等を用いて、HMD200の単体でトラッキング処理を実現してもよい。即ち、図2(B)のベースステーション280、284、図3(B)の撮像部150などの外部装置を設けることなく、トラッキング処理を実現する。或いは、公知のアイトラッキング、フェイストラッキング又はヘッドトラッキングなどの種々の視点トラッキング手法により、ユーザの視点位置、視線方向などの視点情報等を検出してもよい。
またガン型コントローラ290の位置、方向の検出を、ガン型コントローラ290に設けられたモーションセンサを用いて実現してもよい。
3.本実施形態の手法
次に本実施形態の手法について詳細に説明する。なお、以下では本実施形態の手法を、ユーザがグループ(チーム)に分かれて対戦を行う対戦ゲームに適用した場合を主に例にとり説明する。但し、本実施形態はこれに限定されず、種々のゲーム(RPG、アクションゲーム、競争ゲーム、スポーツゲーム、ホラー体験ゲーム、電車や飛行機等の乗り物のシミュレーションゲーム、パズルゲーム、コミュニケーションゲーム、或いは音楽ゲーム等)に適用でき、ゲーム以外にも適用可能である。また以下では、移動体が、ユーザのアバターである仮想ユーザ(キャラクタ)である場合を例にとり説明するが、移動体は、ユーザが搭乗する搭乗移動体(例えばロボット、戦車、戦闘機又は車等)などであってもよい。
3.1 共通仮想フィールドへの配置
図4は、本実施形態のシミュレーションシステムで用いられるフィールドの説明図である。このシミュレーションシステムでは、現実世界の施設等にフィールドFL(プレイフィールド、プレイエリア、プレイ空間)が用意され、ユーザUS1〜US4はこのフィールドFLにおいて移動する。フィールドFLには、壁等により実現される仕切りWLが設けられている。
ユーザUS1〜US4は、HMD1〜HMD4を装着すると共にガン型コントローラGN1〜GN4(広義にはコントローラ)を所持している。またユーザUS1〜US4は、図2(A)で説明したような処理装置250(不図示)を例えば背中に装着している。これらのユーザUS1〜US4は、例えばチーム対戦ゲームのためにチーム(広義にはグループ)を組んでいる。HMD1〜HMD4には仮想空間での映像が映し出されており、ユーザUS1〜US4は、この映像を見ながら対戦ゲーム等のゲームをプレイする。例えばHMD1〜HMD4が非透過型のHMDである場合には、ユーザUS1〜US4の視界がHMD1〜HMD4により覆われるため、現実世界の様子を見ることが困難になる。このため、例えばユーザUS1の背後に位置するユーザUS2がユーザUS1にぶつかってしまうなどの問題が生じる。
ゲームプレイの開始前に、ユーザは、自身の分身となる移動体(アバター)を選択する。例えば図5(A)は、実空間(現実世界)のユーザUS1、US2を示しており、ユーザUS1、US2は、HMD1、HMD2を装着すると共にガン型コントローラGN1、GN2を所持している。これに対して仮想空間においては、ユーザUS1、US2の分身となる移動体MV1、MV2が登場する。これらの移動体MV1、MV2は、ゲームのキャラクタの装備品や着衣を装着している。また移動体MV1、MV2は、実空間のガン型コントローラGN1、GN2に対応する銃GV1、GV2(銃の表示物)を所持している。実空間のユーザUS1、US2が、ガン型コントローラGN1、GN2を上下左右に動かすと、仮想空間(仮想世界)の移動体MV1、MV2が、銃GV1、GV2を上下左右に動かすことになる。
図6(A)、図6(B)はユーザ同士の衝突の問題を説明する図である。図6(A)では、実空間のフィールドFL上にユーザUA1〜UA4、UB1〜UB4が位置している。ユーザUA1〜UA4によりユーザ群UAG(第1のユーザ群)が構成され、ユーザUB1〜UB4によりユーザ群UBG(第2のユーザ群)が構成される。本実施形態では、ユーザ群UAGとユーザ群UBGとでチーム対戦が行われる。例えばユーザ群UAGが第1のチームであり、ユーザ群UBGが第2のチームであり、第1のチームと第2のチームでチーム対戦が行われる。最終的なゲーム成績は、チームとして成績や、チームを構成するユーザの個人成績などにより決定される。
図6(A)ではユーザ群UAGとUBGが同じフィールドFLに位置して移動する。このため図6(B)に示すように、ユーザ群UAG、UBGが接近すると、ユーザ同士の衝突が発生してしまう。即ち図6(B)ではユーザ群UAGとその敵であるユーザ群UBGが入り乱れて対戦しており、各ユーザの視界はHMDで覆われている。このため例えばユーザ群UAGのユーザUA1とユーザ群UBGのユーザUB1がぶつかってしまうなどの問題が生じてしまう。
そこで本実施形態では図7(A)に示すように、ユーザ群UAGのユーザUA1〜UA4がプレイするフィールドFL1と、ユーザ群UBGのユーザUB1〜UB4がプレイするフィールドFL2とを、例えば別々に設ける。例えば施設等にフィールドFL1、FL2を設け、ユーザUA1〜UA4はフィールドFL1で移動しながらゲームをプレイし、ユーザUB1〜UB4はフィールドFL2で移動しながらゲームをプレイする。この場合にフィールドFL1とフィールドFL2の間に仕切り等を設けて、一方のフィールドのユーザが他方のフィールドに入り込まないようにすることが望ましい。
なお、フィールドFL1とFL2はその一部が重なっているようなフィールドであってもよい。またフィールドFL1、FL2は平面的なフィールドには限定されず、起伏があるようなフィールドや、各種の設置物が設置されるようなフィールドであってもよい。また図7(A)では、2つのフィールドFL1、FL2を用意しているが、フィールドの数は3以上であってもよい。また各フィールドでのユーザの人数(定員)も4人には限定されず、3人以下や、5人以上であってもよい。また例えばフィールドFL1、FL2の各々を例えば4つに分割することで、合計で8個のフィールドを用意し、8個のフィールドの各フィールドに対して例えば1人のユーザを配置するようにしてもよい。このようにすることで味方同士の衝突の回避等も可能になる。
図7(A)のようにフィールドFL1、FL2を別々に設ければ、例えばユーザ群UAG、UBGが敵側の方(前方)に移動しても、図7(B)に示すように、ユーザ群UAG、UBGのユーザ同士がぶつかり合うような状況は生じなくなる。即ち、図6(B)では、両者が入り乱れるような状況が発生して、ユーザ同士がぶつかり合うような状況が発生したが、図7(B)ではこのような状況は発生しない。
つまり図7(B)に示すように、ユーザ群UAGはフィールドFL1に位置し、ユーザ群UBGはフィールドFL2に位置し、これらのフィールドFL1、FL2は異なるフィールドとなっている。このため、ユーザ群UAG、UBGのユーザ同士が入り乱れてぶつかり合ってしまうような状況を防止できる。また本実施形態によれば、敵と味方の間の衝突のみならず、味方同士の衝突の抑制も可能である。
そして本実施形態では図7(A)、図7(B)のようなフィールドFL1、FL2へのユーザ群UAG、UBGの配置を行いながら、仮想空間の移動体群MAG、MBGについては、図8に示すように配置している。即ち、実空間のフィールドFL1のユーザ群UAGに対応する移動体群MAGと、フィールドFL2のユーザ群UBGに対応する移動体群MBGとを、仮想空間の共通の仮想フィールドFLVに配置する。
例えば、ユーザ群UAGのユーザUA1〜UA4に対応する移動体群MAGの移動体MA1〜MA4を、フィールドFL1でのUA1〜UA4の位置PA1〜PA4に対応する仮想フィールドFLVの位置PAV1〜PAV4に配置する。例えばユーザUA1は、実空間のフィールドFL1では位置PA1に居るが、ユーザUA1に対応する移動体MA1は、仮想空間の仮想フィールドFLVにおいて、位置PA1に対応する位置PAV1に配置される。ユーザUA2は、実空間のフィールドFL1では位置PA2に居るが、ユーザUA2に対応する移動体MA2は、仮想フィールドFLVにおいて、位置PA2に対応する位置PAV2に配置される。ユーザUA3、UA4、移動体MA3、MA4も同様である。
またユーザ群UBGのユーザUB1〜UB4に対応する移動体群MBGの移動体MB1〜MB4を、フィールドFL2でのUB1〜UB4の位置PB1〜PB4に対応する仮想フィールドFLVの位置PBV1〜PBV4に配置する。例えばユーザUB1は、実空間のフィールドFL2では位置PB1に居るが、ユーザUB1に対応する移動体MB1は、仮想空間の仮想フィールドFLVにおいて、位置PB1に対応する位置PBV1に配置される。ユーザUB2は、実空間のフィールドFL2では位置PB2に居るが、ユーザUB2に対応する移動体MB2は、仮想空間の仮想フィールドFLVにおいて、位置PB2に対応する位置PBV2に配置される。ユーザUB3、UB4、移動体MB3、MB4も同様である。
このように本実施形態では、視界を覆うHMDを装着した複数のユーザのアバターである移動体が、仮想空間の仮想フィールド上を自由に移動してプレイするゲームにおいて、実空間では、仮想フィールドに対応したフィールドを複数設定する。そして、その複数のフィールドの各フィールドに複数のユーザを振り分けて、ゲーム処理を実行する。そしてユーザのHMDに映し出される仮想空間には、あたかも全てのユーザが1つのフィールドでプレイしているように、それぞれのユーザの実空間のフィールド上の相対位置情報を統合する。そして仮想空間の仮想フィールド上に、ユーザのアバターとなる移動体を仮想的に配置することで、より仮想現実感の高い仮想体験のゲームを実現する。
図9は、図8でのフィールドFL1の位置PA1〜PA4から仮想フィールドFLVの位置PAV1〜PAV4への座標変換処理や、フィールドFL2の位置PB1〜PB4から仮想フィールドFLVの仮想位置PBV1〜PBV4への座標変換処理の一例を示す図である。
例えば図9においてフィールドFL1、FL2の原点(広義には基準点)を、各々、CO1、CO2とし、仮想フィールドFLVの原点(基準点)をCOVとする。フィールドFL1の位置PA1は、図9に示すように原点CO1からX座標でXA1、Y座標でYA1の位置にある。フィールドFL2の位置PB1は、原点CO2からX座標でXB1、Y座標でYB1の位置にある。
この場合に、仮想フィールドFLVにおいて、フィールドFL1の位置PA1に対応する位置PAV1は、原点COVからX座標でXA1、Y座標でYA1の位置に設定される。即ち、原点COVから相対座標XA1、YA1だけシフトした位置に、位置PAV1が設定される。位置PA2〜PA4に対応する位置PAV2〜PAV4も同様の手法により設定できる。
また仮想フィールドFLVにおいて、フィールドFL2の位置PB1に対応する位置PBV1は、原点COVからX座標でXB1、Y座標でYB1の位置に設定される。即ち、原点COVから相対座標XB1、YB1だけシフトした位置に、位置PBV1が設定される。位置PB2〜PB4に対応する位置PBV2〜PBV4も同様の手法により設定できる。
このようにすれば、実空間において想定されるユーザUA1とユーザUB1の相対的な位置関係を保ちながら、ユーザUA1、UB1に対応する移動体MA1、MB1を、仮想空間の仮想フィールドFLVに配置できるようになる。例えば実空間でのユーザUA1、UB1の接近が想定されるような状況では、仮想空間において、ユーザUA1、UB1に対応する移動体MA1、MB1も接近するようになる。この場合に、ユーザUA1、UB1の接近が想定される状況とは、ゲームの設定として接近することが想定される状況である。即ち、図7(A)、図7(B)に示すように、ユーザUA1はフィールドFL1に位置し、ユーザUB1はフィールドFL2に位置する。このため、これらのユーザUA1、UB1が実際に接近することなく、ユーザUA1、UB1が衝突してしまう事態は防止されるようになる。
なお、実空間のフィールドの位置から仮想フィールドの位置への座標変換手法は、図9で説明した手法に限定されず、種々の変形実施が可能である。例えば図9では実空間(現実世界)と仮想空間(仮想世界)のスケールが同一であるものとして説明しているが、実空間のスケールと仮想空間のスケールは異なっていてもよい。例えば仮想空間での1mが、実空間での1mよりも長かったり、短くなるようなスケールの設定であってもよい。この場合には、図9において仮想フィールドFLVの位置PAV1、PBV1のX座標、Y座標は、実空間のフィールドFL1、FL2の位置PA1、PB1のX座標、Y座標より大きくなったり、小さくなったりするようになる。例えば実空間のフィールドFL1、FL2の位置PA1、PB1のX座標、Y座標に対して、スケール係数KS(KS<1又はKS>1)を乗算したものが、仮想フィールドFLVの位置PAV1、PBV1のX座標、Y座標になる。
また図9では、フィールドFL1、FL2の位置座標の基準点(原点CO1、CO2)が同じ位置(左下のコーナーの位置)に設定されているが、本実施形態はこれに限定されず、フィールドFL1、FL2とで基準点の位置を互いに異ならせてもよい。例えばフィールドFL1の基準点(原点)を、左下、右下、左上、右上のコーナーのうちの第1のコーナーの位置に設定し、フィールドFL2の基準点(原点)を、左下、右下、左上、右上のコーナーのうちの第1のコーナーとは異なる第2のコーナーの位置に設定してもよい。
また図9では、フィールドFL1、FL2の方向(向き)や形状が同一になっているが、フィールドFL1、FL2の方向や形状を互いに異ならせてもよい。例えば図9ではフィールドFL1、FL2は共に、第1の方向(例えば水平方向)が長辺となるフィールドになっているが、例えばフィールドFL1は第1の方向が長辺となり、フィールドFL2は第1の方向とは異なる第2の方向が長辺となるなど、その方向を互いに異ならせてもよい。またフィールドFL1を、第1の形状のフィールドとし、フィールドFL2を、第1の形状とは異なる第2の形状のフィールドにするなど、その形状を互いに異ならせてもよい。
図10は本実施形態により生成されるゲーム画像の例である。このゲーム画像は各ユーザが装着するHMDに表示される。例えば図10は、ユーザUA1のHMDに表示されるゲーム画像の例であり、ユーザUA1に対応する移動体MA1の手や所持する銃GA1(銃の表示物)が表示されている。また味方チームのユーザUA2、UA3に対応する移動体MA2、MA3や、敵チームのユーザUB1、UB2、UB3に対応する移動体MB1、MB2、MB3が表示されている。味方チームの移動体MA1、MA2、MA3は、所持する銃GA1、GA2、GA3により敵側に対して攻撃を行っており、敵チームの移動体MB1、MB2、MB3は、所持する銃GB1、GB2、GB3により攻撃を行っている。このように本実施形態では、敵チームの画像は、敵の実際の存在位置に敵のアバターである移動体MB1、MB2、MB3を配置することによって、表示処理される。また後述するように、ユーザに出力される音も、仮想フィールドFLVでの配置設定に従って、音源計算される。
このように本実施形態では、味方チーム(広義には第1のグループ、第1のチーム)に属するユーザ群UAG(移動体群MAG)と、敵チーム(広義には第2のグループ、第2のチーム)に属するユーザ群UBG(移動体群MBG)との間での対戦のゲーム処理が行われる。そして、この対戦のゲーム処理によるゲーム画像が各ユーザのHMDに表示される。このようにすれば、チーム同士の戦闘を仮想体験できるチーム対戦ゲームを実現できる。即ち、HMDを用いるシステムによれば、ユーザの視界の全周囲に亘って広大なVR空間が広がるようになり、その広大なVR空間での戦闘を体験できるため、あたかも実際に戦闘しているかのような仮想現実感をユーザに与えることができる。
そして、このようなチーム対戦ゲームにおいては、図6(B)で説明したように、敵と味方が接近して入り乱れた状態になると、実空間のユーザ同士が衝突してしまう事態が生じてしまい、このような事態は、シミュレーションシステムの運営上、好ましくない。
この点、本実施形態の手法によれば、図7(A)、図7(B)に示すように、ユーザ群UAG、UBGは、各々、異なるフィールドFL1、FL2に配置されるため、敵と味方が接近して衝突してしまうような事態の発生を防止できる。そして仮想空間においては、図8に示すように、ユーザ群UAG、UBGに対応する移動体群MAG、MBGが、同じ仮想フィールドFLVに配置される。これにより、図10に示すように、現実世界のようなリアルな戦闘をユーザに仮想体験させることが可能になる。従って、ユーザ同士の衝突の発生を抑制しながら、より仮想現実感が高い仮想体験が可能なシミュレーションシステムを実現できるようになる。
また本実施形態では、仮想空間の仮想フィールドでの移動体の位置情報に基づいて、ユーザに出力される音の生成処理を行っている。例えば、仮想フィールドでの移動体の位置情報に基づいて音場の形成処理を行い、形成された音場に基づいて、ユーザに出力される音が生成される。即ち、ユーザの実際の位置から発せられる音も、相対位置情報を統合した仮想フィールド上に仮想的に配置された位置から発生しているように計算して出力される。
例えば図11(A)において、仮想フィールドFLV上の位置PAV1、PAV4、PBV1には、図8に示すように移動体MA1、MA4、MB1が配置される。ここで移動体MA1にとって、移動体MA4は味方であり、移動体MB1は敵である。
そして移動体MA4の位置PAV4から発せられる音は、位置PAV4に設定された音源SA4(仮想音源)からの音として、移動体MA1の位置PAV1の方に伝達する。そして伝達された音が、移動体MA1のユーザUA1に対して出力される。例えば移動体MA4のユーザUA4が、味方であるユーザUA1に対して声をかけると、その音声が、音源SA4からの音として、移動体MA1の位置PAV1の方に伝達する。これにより、ユーザUA1には、ユーザUA4の音声が位置PAV4の方から聞こえて来るようになるため、より仮想現実感が高い音場形成が実現されるようになる。
また移動体MB1の位置PBV1から発せられる音は、位置PBV1に設定された音源SB1(仮想音源)からの音として、移動体MA1の位置PAV1の方に伝達する。そして伝達された音が、移動体MA1のユーザUA1に対して出力される。例えばユーザUB1の移動体MB1が、敵であるユーザUA1の移動体MA1に対して銃を発射すると、その銃声が、音源SB1からの音として、移動体MA1の位置PAV1の方に伝達する。これにより、ユーザUA1には、ユーザUB1の移動体MB1が発射した銃の銃声が、位置PBV1の方から聞こえて来るようになるため、より仮想現実感が高い音場形成が実現されるようになる。
このように本実施形態では、仮想フィールドFLVでの移動体の位置情報に基づいて、仮想空間での音場が形成され、ユーザに出力される音が生成される。即ち、図7(A)、図7(B)に示すように、ユーザ群UAGとUBGが実際には異なるフィールドFL1、FL2に位置しているのに、音の生成処理については、仮想フィールドFLVでの移動体の位置情報を用いて音場が形成されて、各ユーザに聞こえる音が生成される。従って、ユーザ同士の衝突の発生を抑制しながら、より仮想現実感が高い仮想体験のシミュレーションシステムを実現できるようになる。
なお、仮想空間での音場の形成は、例えば図11(B)に示すように仮想フィールドの各位置に仮想的に配置された仮想スピーカSP1〜SP6を用いて実現できる。例えば、これらの仮想スピーカSP1〜SP6を用いて音場を形成することで、図11(A)のような位置PAV4、PBV1に仮想的な音源SA4、SB1を設定し、これらの音源SA4、SB1から、対応する音を仮想的に出力すればよい。こうすることで、位置PAV1のユーザUA1には、あたかも音源SA4、SB1の位置PAV4、PBV1の方から音声や銃声等が聞こえて来るような仮想的な音場形成を実現できるようになる。
3.2 警告の報知処理
図7(A)〜図8の本実施形態の手法によれば、ユーザ群UAGとUBGというような敵と味方の間の衝突については防止できるが、味方同士で衝突が発生してしまう場合もある。例えば図12において、ユーザUS1とUS2は、同じチームに属する味方同士であり、同じフィールドに位置しているため、実空間においてユーザUS1とUS2が衝突してしまうおそれがある。例えば図12に示すようにユーザUS1、US2が背中合わせの位置関係になっている場合に、ユーザUS1のHMD1には、ユーザUS2に対応する移動体MV2(図5(B))は表示されない。またユーザUS2のHMD2には、ユーザUS1に対応する移動体MV1(図5(B))は表示されない。このためユーザUS1、US2が例えば後ろ向きに歩いた場合などにおいて、ユーザUS1、US2が衝突してしまうおそれがある。
そこで本実施形態では、実空間でのユーザ同士の衝突の警告の報知処理を行う。例えば実空間でのユーザ同士の衝突についての予測処理を行い、予測処理の結果に基づいて、ユーザ同士の衝突についての警告の報知処理を行う。即ち、実空間において、ユーザ同士が衝突しそうな場合に、そのことを報知するため、HMDの表示画像(警告表示)、音出力部からの音、ユーザの装備品やHMDに設けられた振動デバイスの振動、或いは空気砲などに基づいて、衝突の警告の報知処理を行う。このようにすれば、ユーザ同士の衝突が発生するおそれがあることを、ユーザに対して適切に報知することが可能になる。なお、実空間での移動速度や移動加速度が速いユーザに対して衝突の警告の報知処理を行うようにしてもよい。
例えば図13(A)では、ユーザUS1に対して衝突の検出範囲ARDが設定されている。例えば図13(A)ではユーザUS1の位置を基準として、距離範囲である検出範囲ARDが設定されている。そして図13(A)では、ユーザUS2は検出範囲ARDに入っていないが、図13(B)ではユーザUS2が検出範囲ARDの中に入っている。この場合には、ユーザUS1とUS2は接近関係にあり、実空間においてユーザ同士の衝突のおそれがあると予測する。即ち、検出範囲ARDを用いて、実空間でのユーザ同士の衝突についての予測処理を行う。そして、この検出範囲ARDを用いた予測処理の結果に基づいて、衝突を警告する報知処理を行う。即ち、ユーザUS2が検出範囲ARDの中に入っており、衝突が予測される場合には、当該衝突を警告する報知処理を行う。例えば図13(C)に示すように、ユーザUS2の位置に設定された仮想スピーカVSP(仮想音源)からの音を用いて、ユーザUS2がユーザUS1に衝突するおそれがあることを、ユーザUS1に対して報知する。この場合に例えばユーザUS2の移動速度が速いほど、仮想スピーカVSPからの警告音を大きくしたり、接近関係の判断用の検出範囲ARDを広くするようにしてもよい。
また図13(D)に示すように、ユーザが装着するジャケット20などの着衣に振動デバイス22を設け、この振動デバイス22の振動により衝突の警告の報知処理を行ってもよい。即ち図13(B)に示すようにユーザUS1とUS2が接近関係にあると判断され、ユーザUS1、US2の衝突が予測される場合に、振動デバイス22を振動させて、衝突のおそれがあることを報知する。或いは、HMDに振動デバイスを設け、この振動デバイスの振動により警告の報知処理を行ってもよい。
或いは、フィールドFLに空気砲のような報知デバイスを設け、図14のD1〜D9に示すような方向(進路)で空気砲を発射することで、警告の報知処理を行ってもよい。或いは、フィールドFLに設けられた複数のスピーカから、図14のD1〜D9に示すような方向(進路)で音を出力することで、警告の報知処理を行ってもよい。或いは、フィールドFLの床に例えばマトリックス状に複数の振動デバイスを設置し、この振動デバイスを振動させることで、警告の報知処理を行ってもよい。或いはHMDに対して、警告の表示画像を表示してもよい。このように警告の報知手法としては種々の変形実施が可能である。
また本実施形態では、実空間でのユーザの装備品の動き又はユーザの動きについての検出処理を行い、検出処理の検出結果に基づいて、装備品の動き又はユーザの動きについての警告の報知処理を行う。具体的には、ユーザと他のユーザの位置情報に基づいてユーザと他のユーザが接近関係にあると判断されたことを条件に、警告の報知処理を行う。例えばガン型コントローラ(銃)などの装備品の移動速度が速い場合、そのことを報知するため、振動デバイスの振動、音又は空気砲などにより、当該ユーザに対して警告の報知を行う。そして、例えば警告が所与の回数だけ行われた場合には、当該ユーザのゲームプレイをゲームオーバーにしてもよい。
例えば図15(A)ではユーザUS1とUS2が背中合わせの位置関係になっているが、この状態で図15(B)に示すようにユーザUS1がユーザUS2の方に振り向くと、ユーザUS1の所持するガン型コントローラGN1(広義には装備品)が、ユーザUS2にぶつかってしまう事態が生じる。或いは、例えばユーザUS1がガン型コントローラGN1を激しく動かしている時に、ユーザUS2がユーザUS1の方に近づくと、激しく動いているガン型コントローラGN1がユーザUS2にぶつかってしまう事態が生じる。或いは、ガン型コントローラGN1のような装備品をユーザUS1が装備していない場合にも、ユーザUS1が激しく手や足などの部位を動かしている時に、ユーザUS2がユーザUS1の方に近づくと、激しく動いている手や足などの部位が、ユーザUS2にぶつかってしまう事態が生じる。例えばユーザUS1の手によるパンチや足によるキックが、ユーザUS2に当たってしまう事態が生じる。
このような事態の発生を防止するために、実空間でのユーザの装備品の動き又はユーザの動きについての検出処理を行う。即ち、装備品やユーザの動き速度が所与のしきい値以上になったか否か、或いは、装備品やユーザの動きの量が所与のしきい値以上になったか否かの検出処理を行う。そして、装備品やユーザの動き速度が所与のしきい値以上になったり、装備品やユーザの動き量が所与のしきい値以上になった場合には、警告の報知処理を当該ユーザに対して行う。このようにすることで、図15(A)、図15(B)に示すような装備品等がぶつかってしまう事態の発生を防止できるようになる。或いは、ユーザの手によるパンチや足によるキックが、他のユーザにぶつかってしまう事態の発生を防止できるようになる。なお、警告の報知手法としては、図13(A)〜図14の衝突の警告の報知手法と同様の手法を採用できる。即ち、音、振動、空気砲又は警告画像などを用いた種々の警告報知手法を採用できる。
図16は、装備品やユーザの動きの検出結果に基づく警告の報知処理の一例を示すフローチャートである。まずユーザの位置情報を取得する(ステップS1)。例えば図2(A)〜図3(B)で説明したようなHMDのトラッキング処理を行い、このトラッキング処理の結果に基づいて、ユーザの位置情報を取得する。
次に、ユーザと他のユーザが接近関係になったか否かを判断する(ステップS2)。例えば図13(A)、図13(B)で説明したように、ユーザUS1に設定された検出範囲ARD内に他のユーザUS2が入ったか否かを判断することで、ユーザUS1と他のユーザUS2が接近関係になったか否かを判断できる。
そして、ユーザと他のユーザが接近関係になったと判断した場合には、ユーザのガン型コントローラ等の装備品の動き又はユーザの動きの検出処理を行う(ステップS3)。例えばガン型コントローラ等の装備品の動きの検出処理は、装備品に設けられたモーションセンサ(例えばジャイロセンサ又は加速度センサ等)を用いて実現できる。ユーザの動きの検出処理は、ユーザの手又は足等の部位に当該モーションセンサを装備し、これらのモーションセンサを用いて実現してもよいし、ユーザの動き等を外部の撮像デバイスで撮像することで検出してもよい。
このように本実施形態では、ユーザの位置情報に基づいてユーザ同士が接近関係にあると判断されたことを条件に、報知処理を行っている。このようにすれば、ユーザ同士が接近関係にないのに、装備品の動きやユーザの動きの検出処理が無駄に行われたり、無用な警告が行われてしまうような事態の発生を防止できる。
次に、装備品又はユーザの動き速度又は動き量がしきい値以上になったか否かを判断する(ステップS4)。そして、動き速度又は動き量がしきい値以上になった場合には、警告の報知処理を行う(ステップS5)。例えば音、振動、画像又は空気砲等を用いて、装備品又はユーザの動きについての警告の報知処理を行う。こうすることで、ユーザの装備品やユーザの手又は足等の部位が、他のユーザにぶつかってしまうような事態の発生を効果的に防止できるようになる。
3.3 移動体の移動量、移動速度等の設定
本実施形態では、実空間でのユーザの移動量とは異なる移動量で、仮想空間において移動体を移動させるようにしてもよい。例えば実空間において、ユーザが1mの距離を移動した場合に、仮想空間では、ユーザに対応する移動体を1mよりも長い距離(例えば1.5m〜3m)だけ、移動させて、ユーザの動きをコンパクトにして、衝突の可能性を低減する。逆に、実空間でユーザが5m移動した場合に、仮想想空間では、ユーザに対応する移動体を5mよりも短い距離(例えば2m〜4m)だけ、移動させてもよい。また、これを移動体(アバター)のスケール変更により、同様の効果を実現してもよい。例えば移動体のサイズをスケールダウン又はスケールアップして、移動の際の意識を変えることで、衝突回避を行ってもよい。
例えば図17では、実空間のユーザUS2は、フィールドFL上において移動量AMだけ移動している。例えば単位時間(フレーム)において移動量AMだけ移動している。そして、このような実空間でのユーザUS2の移動により、仮想空間では、ユーザUS2のアバターである移動体MV2(アバター)が、移動量AMVだけ移動している。例えば単位時間(フレーム)において移動量AMVだけ移動している。例えば図17では、実空間でのユーザUS2の移動量AMよりも、仮想空間での移動体MV2の移動量AMVの方が大きくなっている。このようにすることで、ユーザは、大きな移動量での移動を躊躇するようになり、ユーザ同士の衝突が回避されるようになる。
例えば、図17において、実空間のユーザUS2の前方に他のユーザが存在したとする。この場合に実空間のユーザUS2が、移動量AMだけ前方に移動した場合に、ユーザUS2のHMD2に映る自身のアバターの移動体MV2の移動量はAMVであり、実空間での移動量AMよりも大きな移動量になる。このような大きな移動量AMVでの移動体MV2の移動を見たユーザUS2は、実空間での自身の移動を躊躇するようになり、歩幅等が短くなる。これにより、前方の他のユーザとの衝突の発生が抑制される。また前方の他のユーザも、自身のHMDに映る移動体MV2が、大きな移動量AMVで移動するのを見るようになる。即ち、実空間でのユーザUS2の移動量AMよりも大きな移動量AMVで、移動体MV2が移動して来る様子を、当該他のユーザは見ることになる。これにより、当該他のユーザは、移動体MV2が自身の移動体に衝突するのを避けるために、例えば後方側に移動するなどの行動を取るようになり、ユーザUS2と当該他のユーザの衝突の発生を抑制できる。これにより、例えば味方同士等が衝突してしまうのを効果的に防止できる。
なお仮想空間の移動体(キャラクタ)のスケールを変更することで、図17と同様の効果を得るようにしてもよい。例えば移動体のスケールを実空間のユーザよりも小さくすれば、ユーザは、仮想空間の大きさを広く感じるようになる。逆に移動体のスケールを大きくすれば、ユーザは、仮想空間を狭く感じるようになる。そして、このようにユーザが感じる仮想空間のスケール感を変えることで、図17のようなユーザの移動量と移動体の移動量を異ならせる手法を実現できる。或いは、仮想空間のスケールそのものを変えてもよい。例えば実空間のフィールドでのスケールと仮想空間の仮想フィールドでのスケールを異ならせる。即ち実空間での1mのスケールと仮想空間での1mのスケールを異ならせる。例えば移動体が移動する仮想フィールドのスケールを、ユーザが移動するフィールドのスケールよりも大きくすれば、ユーザが感じる仮想空間のスケール感を大きく見せることが可能になる。そしてユーザが実空間で移動した場合に、例えば実空間での移動量よりも大きな移動量で移動体を移動させる。こうすることで、仮想空間のスケール感を広く感じさせながら、ユーザ間の衝突の発生の抑制も実現できるようになる。
また本実施形態では、実空間でのユーザと他のユーザとが接近関係になったと判断された場合に、他のユーザに対応する他の移動体の移動速度を速くする、移動加速度を速くする、或いは移動距離を長くする移動処理を行ってもよい。例えば実空間において、ユーザに対して5m以内に接近したなどの配置条件を満たした他のユーザ(敵、味方)が検知された際は、その他のユーザのアバターである移動体についての仮想空間での移動速度、移動加速度又は移動距離に対して、係数KM(KM>1)をかけて、接近度合いを大きく見せる処理を行う。これにより、早期にユーザのHMD内の視界に他のユーザに対応する移動体を表示させ、注意度を高める処理を行う。なお、その後、辻褄を合わせるように係数KMを、時間をかけてゆっくりとKM=1に戻して、帳尻合わせをしてもよい。この手法は、実空間のユーザと仮想空間の移動体の衝突時(後述する仮想的な衝突時)にも有効である。
例えば図18において、ARFVはHMDの視界範囲を表しており、GV1はユーザに対応する移動体が所持する銃である。HMDの視界範囲ARFVは、HMDに接眼レンズが設けられることで、実際にはユーザの視界の全周囲に亘るような広い視界範囲となるが、図18では説明の簡素化のために狭い範囲として模式的に示している。
図18において、他のユーザUS2がユーザの方に移動すると、B1に示すようにユーザUS2に対応する仮想空間の移動体MV2が、実空間のユーザUS2よりも速い移動速度(或いは速い移動加速度又は長い移動距離。以下、同様)で移動して、ユーザの視界範囲ARFVに入るようになる。即ち、実空間でのユーザUS2の移動に先行して移動体MV2が移動し、ユーザUS2がこれに遅れて追従するようになる。従って、実空間においてユーザと他のユーザUS2とが衝突してしまう事態を抑制できる。なお、この際に図13(A)〜図14で説明したような警告の報知処理を併せて行ってもよい。
同様に、他のユーザUS3がユーザの方に移動すると、B2に示すようにユーザUS3に対応する仮想空間の移動体MV3が、実空間のユーザUS3よりも速い移動速度等で移動して、ユーザの視界範囲ARFVに入るようになる。即ち、実空間でのユーザUS3の移動に先行して移動体MV3が移動し、ユーザUS3がこれに遅れて追従するようになる。従って、実空間においてユーザと他のユーザUS3とが衝突してしまう事態を抑制できる。なお、この際にも図13(A)〜図14で説明したような警告の報知処理を併せて行ってもよい。
また図18において、移動体MV2、MV3の移動速度等を速くした場合には、その後、移動体MV2、MV3の移動速度を遅くして、ユーザUS2、US3の位置と移動体MV2、MV3の位置とが対応した位置になるように、辻褄を合わせる処理を行うことが望ましい。
またゲームの世界設定において問題がなければ、接近の移動速度等が速い移動体を強調表示するエフェクトや、その予測移動方向や、視野外の接近物の存在と方向を示すアラートを表示して、衝突の発生を抑制するようにしてもよい。
例えば図19では、速い移動速度等で移動する移動体MV3に対して、強調表示のエフェクトEFが施されている。また移動体MV3の予測移動方向を示すマーカMK2も表示される。このようエフェクトEFやマーカMK2を表示することで、ユーザは、移動体MV3の移動速度の速さや移動の方向を視覚的に認識できるようになり、ユーザ同士の衝突の発生を更に抑制できる。また図19では、移動体MV2の存在方向を示すマーカMK1が表示されている。これにより、ユーザは、マーカMK1で示される方向に移動体MV2が存在することを視覚的に認識できるようになり、移動体MV2に対応する他のユーザUS2との衝突の発生を抑制できるようになる。
図20は、他のユーザに対応する他の移動体の移動速度等を速くする処理の例を示すフローチャートである。
まず、図16のステップS1、S2と同様に、ユーザの位置情報を取得し、ユーザと他のユーザが接近関係になったか否かを判断する(ステップS11、S12)。例えば図13(A)、図13(B)で説明したように、ユーザUS1に設定された検出範囲ARD内に他のユーザUS2が入ったか否かを判断することで、接近関係になったか否かを判断する。そして、ユーザと他のユーザが接近関係になったと判断された場合には、他のユーザに対応する他の移動体(仮想ユーザ、アバター)の移動速度を速くする、移動加速度を速くする、或いは移動距離を長くする処理を行う(ステップS13)。即ち、図18のB1、B2に示すように、実空間のユーザUS2、US3に比べて、これらのユーザUS2、US3に対応する移動体MV2、MV3の移動速度を速くする、移動加速度を速くする、或いは移動距離を長くする処理を行う。こうすることで、ユーザと、これらの他のユーザUS2、US3が衝突してしまう事態の発生を抑制できる。
3.4 演出処理
本実施形態では、ユーザに対応する移動体と、他のユーザに対応する他の移動体とが、所与の位置関係になった場合に、所与の位置関係に応じた演出処理の実行や、演出処理画像の生成処理を行う。具体的には、ユーザと他のユーザが接近関係になっていない状態で、移動体と他の移動体が接近関係になった場合に、この接近関係に応じた演出処理の実行や、演出処理画像の生成処理を行う。例えば移動体及び他の移動体の少なくとも一方が特殊モーションを行う演出処理やその演出処理画像の生成処理、或いは、所与の位置関係用の特殊モードに移行する演出処理やその演出処理画像の生成処理を行う。
例えば図21(A)では、ユーザUS1が実空間のフィールドFL1に位置し、ユーザUS2が実空間のフィールドFL2に位置している。そしてユーザUS1に対応する移動体MV1とユーザUS2に対応する移動体MV2が、共通の仮想フィールドFLVに配置されている。そして図21(A)では、ユーザUS1、US2は所与の距離だけ離れて対峙している。
図21(B)では、ユーザUS1は、実空間のフィールドFL1上を、例えば、ユーザUS1の前方方向側である右方向に移動している。ユーザUS2は、実空間のフィールドFL2上を、例えばユーザUS2の前方方向側である左方向に移動している。これにより仮想フィールドFLVでは、ユーザUS1、US2に対応する移動体MV1、MV2が接近関係になり、衝突状態(衝突寸前の状態)になっている。
その後、図21(C)では、ユーザUS1がフィールドFL1上で更に右側に移動し、ユーザUS2がフィールドFL2上で更に左側に移動している。これにより仮想フィールドFLVでは、移動体MV1、MV2が互いに背面を向けて、すれ違った状態になっている。
本実施形態では、実空間においてはユーザUS1、US2は異なるフィールドFL1、FL2に位置しているが、US1、US2に対応する移動体MV1、MV2は、仮想空間の共通の仮想フィールドFLVに位置している。このため図21(B)に示すように、実空間ではユーザUS1、US2が衝突状態になっていないのに、仮想空間では、対応する移動体MV1、MV2が衝突状態になるという状況が生じる。このような状況が生じると、ユーザUS1、US2は、移動体MV1、MV2同士が、まるで実体がないかのようにすり抜けているように見えてしまい、不自然感を与えてしまう事態が生じる。
このような事態を防止するために本実施形態では、図21(B)に示すように、ユーザUS1に対応する移動体MV1と、他のユーザUS2に対応する他の移動体MV2とが、接近関係などの所与の位置関係になった場合に、その位置関係に応じた演出処理を実行して、その演出処理画像をユーザUS1、US2のHMDに表示する手法を採用している。具体的には、図21(B)のように、実空間のフィールドFL1、FL2では、ユーザUS1と他のユーザUS2が接近関係になっていないのに、仮想空間の仮想フィールドFLVでは、移動体MV1と他の移動体MV2が接近関係になった場合に、この接近関係に応じた演出処理を実行して、演出処理画像をHMDに表示する。このようにすれば、実空間ではユーザ同士がすれ違っていないのに、仮想空間では移動体同士がすり抜けているように見えてしまい、ユーザの仮想現実感を損ねてしまうのを防止できるようになる。
なお、図21(B)において演出処理が行われる期間においては、移動体MV1、MV2に対する他の移動体の攻撃を無効にする設定を行うことが望ましい。例えば狙撃判定は例外処理とし、その間は移動体MV1、MV2は無傷(無敵状態)にする。
また図21(B)の状態で行われる演出処理の手法としては、種々の手法が考えられる。例えば演出処理として、移動体MV1、MV2の少なくとも一方が特殊モーションを行う演出処理を行ってもよい。例えばユーザUS1、US2が所与の距離範囲内に入って接近関係になった場合に、対応する移動体MV1、MV2に、一度、もみ合うような特殊モーションを行わせる。
図22(A)〜図22(C)は、このような特殊モーション処理の説明図である。この特殊モーション処理では、図22(A)の状態から、図22(B)に示すように移動体MV1、MV2が背中を合わせてもみ合う動作を行い、その後、図22(C)に示すように離れて行く。この図22(A)〜図22(C)の一連のモーションが、図21(B)の状態で再生される特殊モーションのデータとして、図1の記憶部170に記憶されている。そして図21(B)の演出処理として、この特殊モーションを再生する処理(衝突時の特殊モーション処理)を行うようにする。
このような特殊モーション処理を行えば、図21(B)のような状況の時に、例えば移動体同士がもみ合いながらすれ違うような画像が生成されるようになるため、ユーザに不自然感を与えて仮想現実感が低下してしまう事態の発生を抑制できる。
なお、特殊モーション処理は、図22(A)〜図22(C)に示すようなモーション処理には限定されず、種々の変形実施が可能である。例えば一方の移動体が他方の移動体を避けるように移動したり、一方の移動体が他方の移動体を飛び越えて移動するなどの種々のモーション処理を、特殊モーション処理として用いることができる。また特殊モーション処理が行われる期間(フレーム)では、他の移動体からの攻撃を無効にする設定(無敵設定)を行うことが望ましい。
また本実施形態では、図21(B)の状態で行われる演出処理として、接近関係用(広義には所与の位置関係用)の特殊モードに移行する演出処理を行ってもよい。即ち、通常モードから、接近関係用に用意された特殊なゲームモードに移行する処理を行う。
図23は特殊モードの一例を示す図である。この特殊モードは素手で対戦する格闘モードである。即ち、図21(B)のように移動体同士が接近関係になると、銃の狙撃で対戦する通常モード(通常ゲームモード)から、素手(HL、HR)で対戦する格闘モードである特殊モードに移行する。そして、移動体同士が互いに接近している状態では、この特殊モードが継続され、移動体同士が離れると、この特殊モードは解除される。
なお、特殊モードの状態では、他の移動体からの攻撃を無効にする設定(無敵設定)を行うことが望ましい。この場合に、例えば特殊モードになっている時間が、制限時間を越えた場合には、両者のユーザのゲームプレイをゲームオーバーにしてもよい。
また図23の特殊モードにおいて、ユーザの手又は足等の部位の動きを検出するためには、例えば手又は足等の部位に動き検出用デバイス(センサ)を装着すればよい。そして、動き検出用デバイスを用いた動きの検出結果に基づいて、ユーザに対応する移動体の手又は足等の部位を動かすようにすればよい。こうすることで、移動体同士で対戦する格闘ゲーム等を実現できる。動き検出用デバイスとしては、例えば図2(A)に示すような受光素子や、図3(A)、に示すような発光素子などが考えられる。受光素子の場合には、図2(B)に示すようなベースステーション280、284を用いて、特殊モードでのユーザの手又は足等の部位に動きの検出を実現できる。発光素子の場合には、図3(B)に示すような撮像部150を用いて、特殊モードでのユーザの手又は足等の部位に動きの検出を実現できる。或いは、動き検出用デバイスとして、ユーザの手又は足等の部位にモーションセンサを装着して、部位の動きを検出してもよい。或いは、モーション検出用のカメラを用いて、ユーザの動きを検出してもよい。
また、通常モードから図23のような特殊モードに移行した場合には、移動体が所持していた銃を、一旦、非表示にする。そして、特殊モードから通常モードに戻った場合に、再度、移動体に銃を所持させればよい。
図24は、移動体と他の移動体が接近関係になった場合に行われる演出処理の一例を示すフローチャートである。
まず、移動体と敵移動体が接近関係になったか否かを判断する(ステップS21)。例えば仮想フィールドにおいて移動体同士が図21(B)に示すような接近関係になったか否かを判断する。そして接近関係になった場合には、移動体及び敵移動体に対する他の移動体等からの攻撃を無効状態に設定する(ステップS22)。即ち、いわゆる無敵状態に設定する。そして移動体と敵移動体が素手で対戦する格闘モード(広義には特殊モード)に移行する(ステップS23)。即ち、通常モードから図23に示すような格闘モードに移行する。
次に、移動体と敵移動体の距離が離れたか否かを判断する(ステップS24)。そして、移動体と敵移動体が離れたと判断された場合には、通常モードに戻る(ステップS25)。一方、移動体と敵移動体が離れていないと判断された場合には、制限時間が経過したか否かを判断し(ステップS26)、制限時間が経過した場合には、両者のユーザのゲームプレイをゲームオーバーにする(ステップS27)。
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(グループ、装備品、基準点等)と共に記載された用語(チーム、コントローラ、原点等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また位置情報の取得処理、仮想空間の設定処理、移動体の移動処理、表示処理、ゲーム処理、報知処理、移動体の配置設定処理、演出処理等も、本実施形態で説明したものに限定されず、これらと均等な手法・処理・構成も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲーム装置、家庭用ゲーム装置、又は多数のユーザが参加する大型アトラクションシステム等の種々のシミュレーションシステムに適用できる。