以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.シミュレーションシステム
図1は、本実施形態のシミュレーションシステム(シミュレータ、ゲームシステム)の構成例を示すブロック図である。本実施形態のシミュレーションシステムは例えばバーチャルリアリティ(VR)をシミュレートするシステムであり、ゲームコンテンツを提供するゲームシステム、スポーツ競技シミュレータや運転シミュレータなどのリアルタイムシミュレーションシステム、SNSのサービスを提供するシステム、映像等のコンテンツを提供するコンテンツ提供システム、或いは遠隔作業を実現するオペレーティングシステムなどの種々のシステムに適用可能である。なお、本実施形態のシミュレーションシステムは図1の構成に限定されず、その構成要素(各部)の一部(例えば仮想空間設定部、移動体処理部、仮想カメラ制御部、表示処理部等)を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
装着体50は、ユーザが身体に装着するものである。身体は、例えばユーザの首よりも下方の部分(胴体、腰、脚部又は腕等)である。装着体50には複数の振動部V1〜VNが設けられている。振動部V1〜VNは取付具により装着体50に取り付けられている。
操作部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、制御部118、表示処理部120、音処理部130を含む。上述したように、これらの各部により実行される本実施形態の各処理は、プロセッサ(或いはプロセッサ及びメモリ)により実現できる。なお、これらの構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
入力処理部102は、操作情報やトラッキング情報を受け付ける処理や、記憶部170から情報を読み出す処理や、通信部196を介して情報を受信する処理を、入力処理として行う。例えば入力処理部102は、操作部160を用いてユーザが入力した操作情報やHMD200のセンサ部210等により検出されたトラッキング情報を取得する処理や、読み出し命令で指定された情報を、記憶部170から読み出す処理や、外部装置(サーバ等)からネットワークを介して情報を受信する処理を、入力処理として行う。ここで受信処理は、通信部196に情報の受信を指示したり、通信部196が受信した情報を取得して記憶部170に書き込む処理などである。
演算処理部110は、各種の演算処理を行う。例えば情報取得処理、仮想空間設定処理、移動体処理、仮想カメラ制御処理、ゲーム処理(シミュレーション処理)、制御処理、表示処理、或いは音処理などの演算処理を行う。
情報取得部111(情報取得処理のプログラムモジュール)は種々の情報の取得処理を行う。例えば情報取得部111は、ユーザの位置情報、方向情報及び姿勢情報の少なくとも1つを含むユーザ情報(ユーザトラッキング情報)を取得する。
仮想空間設定部112(仮想空間設定処理のプログラムモジュール)は、複数のオブジェクトが配置される仮想空間(オブジェクト空間)の設定処理を行う。例えば、移動体(人、ロボット、車、電車、飛行機、船、モンスター又は動物等)、マップ(地形)、建物、観客席、コース(道路)、樹木、壁、水面などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)を仮想空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。具体的には、記憶部170のオブジェクト情報記憶部172には、仮想空間でのオブジェクト(パーツオブジェクト)の位置、回転角度、移動速度、移動方向等の情報であるオブジェクト情報がオブジェクト番号に対応づけて記憶される。仮想空間設定部112は、例えば各フレーム毎にこのオブジェクト情報を更新する処理などを行う。
移動体処理部113(移動体処理のプログラムモジュール)は、仮想空間内で移動する移動体についての種々の処理を行う。例えば仮想空間(オブジェクト空間、ゲーム空間)において移動体を移動させる処理や、移動体を動作させる処理を行う。例えば移動体処理部113は、操作部160によりユーザが入力した操作情報や、取得されたトラッキング情報や、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、移動体(モデルオブジェクト)を仮想空間内で移動させたり、移動体を動作(モーション、アニメーション)させる制御処理を行う。具体的には、移動体の移動情報(位置、回転角度、速度、或いは加速度)や動作情報(パーツオブジェクトの位置、或いは回転角度)を、1フレーム(例えば1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動体の移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。移動体は、例えば実空間のユーザ(プレーヤ)に対応する仮想空間の仮想ユーザ(仮想プレーヤ、アバター)や、或いは当該仮想ユーザが搭乗(操作)する搭乗移動体(操作移動体)などである。
ゲーム処理部115(ゲーム処理のプログラムモジュール)はユーザがゲームをプレイするための種々のゲーム処理を行う。別の言い方をすれば、ゲーム処理部115(シミュレーション処理部)は、ユーザが仮想現実(バーチャルリアリティ)を体験するための種々のシミュレーション処理を実行する。ゲーム処理は、例えば、ゲーム開始条件が満たされた場合にゲームを開始する処理、開始したゲームを進行させる処理、ゲーム終了条件が満たされた場合にゲームを終了する処理、或いはゲーム成績を演算する処理などである。ゲーム処理部115はヒット演算処理部116を含む。ヒット演算処理部116は、ヒット判定処理などのヒット演算処理を実行する。
制御部118(制御処理のプログラムモジュール)は、装着体50の複数の振動部V1〜VNの制御処理を行う。制御部118の詳細については後述する。
表示処理部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に示すようにゲーム処理部115と制御部118を含む。
ゲーム処理部115は、ユーザが身体に装着体50を装着してプレイするゲームのゲーム処理を行う。ゲーム処理部115は、例えばゲームを開始する処理、ゲームを進行させる処理、ゲームを終了する処理、或いはゲーム成績を演算する処理などのゲーム処理を行う。例えばゲーム処理部115は、振動イベントが発生したか否かを判断する処理や、振動イベントが発生した場合に、装着体50の振動制御を制御部118に指示する処理などを行うことができる。例えばゲーム画像をユーザに表示するシミュレーションシステムにおいては、ゲーム処理部115は、ゲーム画像を表示部220に表示するためのゲーム処理を行う。例えば仮想空間でのゲームの処理を行う。但し本実施形態のシミュレーションシステムは、ユーザに対してゲーム画像を表示しないようなシステムであってもよい。この場合にゲーム処理部115は、例えばユーザのゲーム成績を演算したり、ゲームを開始、進行又は終了するための各種のゲーム制御処理を行うことになる。
そして本実施形態では、ユーザが身体(胴体等)に装着する装着体50には複数の振動部V1〜VNが設けられている。装着体50は、ユーザが身体(例えば首より下方の身体)に装着するものである。具体的には、後述するジャケット(ベスト)やジャンパーなどの上着、或いはズボンなどの衣服である。但し装着体は剣ゲームにおける鎧のようなものであってもよいし、自然体験ゲームにおける身体の装備品であってもよい。
そして制御部118は、装着体50の複数の振動部V1〜VNの振動制御を行う。例えばゲーム処理部115はゲーム処理を行い、制御部118は、ゲーム状況に応じて、装着体50の複数の振動部V1〜VNの振動制御を行う。
具体的には制御部118は、ゲームにおいて発生する振動イベントの種類又は内容に応じて、振動させる振動部の個数又は振動させる振動部の範囲である振動範囲を変化させる制御を行う。例えば被ヒット物がユーザ又はユーザ移動体にヒットすることによる振動イベント、被ヒット物が岩等の物体である場合の振動イベント、被ヒット物が弾などのオブジェクトである場合の振動イベント、爆発の発生による振動イベントというように、振動イベントのカテゴリーがグループ分けされる場合に、どのカテゴリーのグループに属するかが、振動イベントの種類になる。また振動イベントの内容は、例えば振動の強さパラメータ、振動の速さパラメータ、又は振動の属性パラメータなど、振動イベント処理のパラメータにより表されるものである。例えば同じ種類(カテゴリーのグループ)の振動イベントであっても、振動イベント処理のパラメータが異なれば、振動イベントの内容が異なることになる。
なお振動イベントの内容は、振動イベントにおける経過時間であってもよい。この場合には振動イベント処理のパラメータは、振動イベント処理における経過時間(例えばイベントの発生からの経過時間)のパラメータになる。また振動イベントの種類の情報や振動イベントの内容を表す情報(振動処理のパラメータ)は、例えば各振動イベントに対応づけて記憶部170に記憶される。制御部118は、記憶部170に記憶されるこれらの情報に基づいて、装着体50の振動部V1〜VNの振動制御の処理を行うことになる。
そして制御部118は、振動イベントの種類又は内容に応じて、振動させる振動部の個数又は振動範囲を変化させる制御を行う。例えば振動イベントの種類が第1の種類である場合、或いは振動イベントの内容が第1の内容である場合には、振動部V1〜VNのうちの第1の個数の振動部又は第1の振動範囲の振動部を振動させる制御を行う。また振動イベントの種類が第2の種類である場合、或いは振動イベントの内容が第2の内容である場合には、振動部V1〜VNのうちの第2の個数の振動部又は第2の振動範囲の振動部を振動させる制御を行う。例えば少ない個数の振動部を振動させたり、狭い振動範囲の振動部を振動させるような種類又は内容の振動イベントが発生した場合には、制御部118は、少ない第1の個数の振動部又は狭い第1の振動範囲の振動部を振動させる制御を行う。一方、多い個数の振動部を振動させたり、広い振動範囲の振動部を振動させるような種類又は内容の振動イベントが発生した場合には、制御部118は、第1の個数よりも多い第2の個数の振動部又は第1の振動範囲よりも広い第2の振動範囲の振動部を振動させる制御を行う。例えば強い振動をユーザに感じさせたり、広い面積での振動をユーザに感じさせるような振動イベントが発生した場合には、第1の個数よりも多い第2の個数の振動部又は第1の振動範囲よりも広い第2の振動範囲の振動部を振動させる制御を行う。このようにすることで、振動イベントの種類や内容を反映させた装着体50の振動部の振動制御を実現できるようになる。
また振動イベントは、例えばユーザ又はユーザに対応するユーザ移動体と被ヒット物とのヒットイベントである。この場合に制御部118は、ヒットイベントの種類又は内容に応じて、振動させる振動部の個数又は振動範囲を変化させる制御を行う。例えばユーザに対してゲーム画像を表示しないシミュレーションシステムにおいては、振動イベントは、実空間でのユーザと被ヒット物とのヒットイベントである。この場合の被ヒット物(実空間の物体)は、例えば銃等が発射する弾等であってもよいし、光線(赤外線等)のようなものであってもよい。或いは被ヒット物は、剣、槍又は投げ石などの武器や攻撃物であってもよい。一方、ユーザに対してゲーム画像を表示するシミュレーションシステムにおいては、振動イベントは、仮想空間(ゲーム空間)でのユーザ移動体と他のオブジェクトとのヒットイベントである。ユーザ移動体は、仮想空間(ゲーム空間)においてユーザに対応して移動する移動体であり、例えばキャラクタやアバターと呼ばれるものである。他のオブジェクトは、例えば銃等が発射する弾や光線を模したオブジェクトであってもよいし、剣、槍又は投げ石などの武器や攻撃物を模したオブジェクトであってもよい。なおオブジェクトは例えば3次元画像のゲームにおける3次元オブジェクトであるが、2次元画像のゲームにおける2次元のオブジェクトであってもよい。またユーザ又はユーザ移動体と被ヒット物とのヒット判定処理は、ゲーム処理部115が行う。具体的にはゲーム処理部115のヒット演算処理部116が行う。
そして制御部118は、ヒットイベントの種類又は内容に応じて、振動させる振動部の個数又は振動範囲を変化させる制御を行う。例えば、ピストルの弾がヒットするイベント、ライフルの弾がヒットするイベント、バズーカの弾がヒットするイベント、ミサイルがヒットするイベント、剣がヒットするイベントというように、ヒットイベントのカテゴリーがグループ分けされる場合に、どのカテゴリーのグループに属するかが、ヒットイベントの種類になる。またヒットイベントの内容は、例えばヒットの強さパラメータ、ヒットの攻撃力パラメータ、ヒットの速さパラメータ、又はヒットの属性パラメータなど、ヒット演算処理のパラメータにより表されるものである。例えば同じ種類(カテゴリーのグループ)のヒットイベント(ピストル、ライフル、バズーカ、ミサイル、剣)であっても、ヒット演算処理のパラメータが異なれば、ヒットイベントの内容が異なることになる。
そして制御部118は、ピストルの弾がヒットするイベントでは、振動部の振動個数を少なくしたり、振動範囲を狭くする。振動個数は、振動させる振動部の個数である。一方、バズーカやミサイルがヒットするイベントでは、振動部の振動個数を多くしたり、振動範囲を広くする。即ち、ヒットイベントの種類に応じて、振動部の振動個数又は振動範囲を変化させる。またヒットの強さパラメータや攻撃力パラメータや速さパラメータが低いヒットイベントでは、振動部の振動個数を少なくしたり、振動範囲を狭くする。一方、ヒットの強さパラメータや攻撃力パラメータや速さパラメータが高いヒットイベントでは、振動部の振動個数を多くしたり、振動範囲を広くする。即ち、ヒットイベントの内容に応じて、振動させる振動部の個数又は振動範囲を変化させる。
また制御部118は、被ヒット物の種類又は攻撃内容に応じて、振動させる振動部の個数又は振動範囲を変化させる制御を行う。例えば制御部118は、被ヒット物がピストルの弾、ライフルの弾、バズーカの弾、或いはミサイルであるかに応じて、振動させる振動部の個数又は振動範囲を変化させる。また制御部118は、攻撃内容が、弱い攻撃力の攻撃であるか、中ぐらいの攻撃力の攻撃であるか、或いは強い攻撃力の攻撃であるかに応じて、振動させる振動部の個数又は振動範囲を変化させる。このようにすることで、被ヒット物の種類や攻撃内容を反映させた装着体50の振動部の振動制御を実現できるようになる。
例えば制御部118は、被ヒット物の種類が、高い攻撃能力を有する種類の被ヒット物であるほど、或いは被ヒット物の攻撃が、攻撃力の高い攻撃内容であるほど、振動させる振動部の個数を多くする、又は振動範囲を広くする。例えば高い攻撃能力を有するバズーカやミサイルなどの被ヒット物である場合には、振動部の振動個数を多くしたり、振動範囲を広くする。或いは、同じ被ヒット物であっても、その被ヒット物による攻撃が、攻撃力が高い攻撃内容である場合には、振動部の振動個数を多くしたり、振動範囲を広くする。例えば、ヒットの強さパラメータ、攻撃力パラメータ或いはヒットの速さパラメータが高い場合には、振動部の振動個数を多くしたり、振動範囲を広くする。こうすることで、より多くの個数の振動部が振動したり、より広い振動範囲で振動部が振動するようになるため、高い攻撃能力を有する種類の被ヒット物がヒットしたことや、高い攻撃内容で被ヒット物がヒットしたことを、ユーザに仮想体験させることが可能になり、ユーザの仮想現実感を向上できる。
また制御部118は、被ヒット物のヒットタイミングにおいて、複数の振動部V1〜VNのうちの第1の振動部を振動させ、ヒットタイミングから所与の時間が経過した後に、第1の振動部の周囲の第2の振動部を振動させる。このようにすれば、第1の振動部が振動した後、所与の時間が経過すると、その周囲の第2の振動部等が振動するようになる。これにより、第1の振動部からその周囲へと振動範囲が時間経過に伴い広がって行くような振動制御が可能になる。例えば振動部の振動個数が時間経過に伴い増加して行くような振動制御が可能になる。なお第1の振動部の個数は、1個であっても複数個であってもよく、第1の振動部の周囲の第2の振動部の個数も、1個であっても複数個であってもよい。また第1の振動部の周囲は、第1の振動部の上方向、下方向、左方向、右方向などの周囲であってよいし、これらの方向の少なくとも1つの方向での周囲であってもよい。また時間経過は、タイマーを用いたカウント処理により計時できる。
また制御部118は、被ヒット物のヒットタイミングにおいて、複数の振動部V1〜VNのうちの第1の振動部を振動させ、次に、第1の振動部の周囲の第2の振動部を振動させる。即ち、第1の振動部を振動させた後、次の順番において、第1の振動部の周囲の第2の振動部を振動させる。例えばタイマーを用いたカウント処理による時間経過の計時処理を行うことなく、振動させる振動部の順番だけを設定して、設定された順番で振動部を振動させる。このようにすることでも、第1の振動部からその周囲へと振動範囲が広がって行くような振動制御や、振動させる振動部の個数が時間経過に伴い増加して行くような振動制御が可能になる。この場合にも、第1、第2の振動部の個数は、1個であっても複数個であってもよく、第1の振動部の周囲は、第1の振動部の上方向、下方向、左方向、右方向の少なくとも1つの方向での周囲であればよい。
また本実施形態のシミュレーションシステムは、ユーザが身体に装着体を装着してプレイするゲームについてのゲーム処理を行うゲーム処理部115と、複数の振動部V1〜VNが設けられる装着体50についての制御を行う制御部118を含み、制御部118は、振動イベントが発生した際に、複数の振動部V1〜VNの中から振動させる振動部をランダムに選択する。例えば乱数情報等を発生し、複数の振動部V1〜VNの中から振動させる振動部を、乱数情報等に基づいて選択する。ランダムな振動部の選択は、同じ振動部が選択されないようにする選択処理である。例えばランダム選択では、振動イベントが発生した場合に、ユーザの身体が振動に慣れないようにするために、以前とは異なった振動部を振動させる。例えば振動イベントにより第1の振動部が振動した後、次に例えば同じ種類又は内容等の振動イベントが発生した場合に、第1の振動部とは異なる第2の振動部を振動させる。振動させる振動部の選択は、完全なランダム選択である必要はなく、ある程度、ランダム性のあるものであればよい。
例えば制御部118は、振動イベントが発生した場合に、複数の振動部V1〜VNのうちの第1の振動部を振動させる。そして次に振動イベントが発生した場合に、複数の振動部V1〜VNのうちの第1の振動部とは異なる第2の振動部をランダムに選択して振動させる。即ち、振動イベントが発生して第1の振動部を振動させた後、次に例えば同じ種類又は内容等の振動イベントが発生した場合に、第1の振動部とは異なる第2の振動部が選択されるように、振動部のランダム選択を行う。このようにすれば、同じ種類又は内容の振動イベントであっても、その発生タイミングなどに応じて、異なる振動部が振動するようになる。これにより、ユーザの身体が振動に慣れてしまい、振動部の振動により実現される仮想現実感が低下してしまう事態を防止できるようになる。
ここで振動イベントは、ユーザ又はユーザに対応するユーザ移動体と被ヒット物とのヒットイベントである。そしてゲーム処理部115は、ユーザ又はユーザ移動体と被ヒット物とのヒット演算処理を行って、ヒット方向及びヒット位置の少なくとも一方を含むヒット情報を求める。例えばヒット演算処理部116がヒット演算処理を行って、ヒット情報を求める。そして制御部118は、ヒットイベントが発生した場合に、ヒット情報に応じて、複数の振動部V1〜VNの中から振動させる振動部を選択する。そして振動イベントの種類又は内容に応じて、振動させる振動部の個数又は振動範囲を変化させる。例えば制御部118は、ヒット情報に基づいて第1の振動部を選択し、振動イベントの種類又は内容に応じて、振動させる振動部の個数又は振動範囲が変化するように、第1の振動部の周囲の第2の振動部を選択する。また制御部118は、ヒット情報に基づいて、振動させる振動部の候補を選択する。そして例えば候補となる振動部の中から、振動させる振動部を例えばランダムに選択する。振動部の候補からの選択は、第1の振動部についての選択であってもよいし、第1の振動部の次に振動させる第2の振動部についての選択であってもよい。
例えばゲーム処理部115は、ユーザ又はユーザ移動体と被ヒット物とのヒット演算処理を行う。そしてヒット演算処理により、ヒット方向及びヒット位置の少なくとも一方を含むヒット情報を求める。このヒット演算処理はヒット演算処理部116が実行する。被ヒット物は、実空間での被ヒット物(弾、光線等)であってもよい。或いは被ヒット物は、仮想空間において表示されるオブジェクトであってもよいし、仮想空間において非表示の仮想的なオブジェクトであってもよい。被ヒット物は、弾や剣等の攻撃用の被ヒット物であってもよいし、自然体験シミュレーションにおける落石等の被ヒット物であってもよい。また被ヒット物は、実空間に配置される障害物、壁等の配置物や、仮想空間に配置される障害物、壁等の配置オブジェクトであってもよい。
またヒット方向(ヒットベクトル、攻撃方向、攻撃ベクトル)は、例えばユーザ又はユーザ移動体に被ヒット物(他のオブジェクト)がヒットしたときの被ヒット物の移動方向である。例えばヒット方向は、ユーザ又はユーザ移動体に向かって飛翔する被ヒット物の軌道に基づいて特定できる。ヒット位置は、ユーザ又はユーザ移動体に対して被ヒット物がヒットした位置(当たった位置、衝突位置)である。例えばヒット判定処理における交差判定処理での交差位置に基づいてヒット位置を特定できる。またヒット情報は、このようなヒット方向、ヒット位置以外に、ヒット速度、ヒットの強さ又はヒットの属性などの情報を含むことができる。
そして制御部118は、ユーザ又はユーザ移動体と被ヒット物とのヒットイベントが発生した場合に、ヒット情報に基づいて、装着体50の振動部の振動制御を行う。即ちゲーム処理部115(ヒット演算処理部116)が、被ヒット物のヒット方向及びヒット位置の少なくとも一方を含むヒット情報を求め、制御部118は、このヒット情報に基づいて、装着体50の振動部の振動制御を行う。例えばヒット情報に応じて、複数の振動部V1〜VNの中から振動させる振動部(振動部の候補等)を決定する。このようにすれば、ヒット演算処理でのヒット情報(ヒット方向、ヒット位置等)を反映させた振動制御を実現できるようになる。
なお、ヒット情報を、ヒットイベントが発生した後に求め、求められたヒット情報に基づいて振動制御を行ってもよい。或いは、ヒットイベントが発生する前に、ヒット情報(予測ヒット情報)を事前に求めておいて、ヒットイベントが発生した場合に、事前に求められたヒット情報(予測ヒット情報)に基づいて、振動制御を行ってもよい。
また本実施形態では、装着体50の前面部に、少なくとも1つの前面側振動部が設けられ、装着体50の後面部に、少なくとも1つの後面側振動部が設けられる。前面部は、装着体50を装着するユーザの例えば正面側であり、後面部は、装着体50を装着するユーザの例えば背面側である。
そして制御部118は、ヒットイベントが発生した場合に、ヒット情報に基づいて、前面側振動部及び後面側振動部の一方の振動部を振動させた後、前面側振動部及び後面側振動部の他方の振動部を振動させる振動制御を行う。
具体的には制御部118は、ヒット情報に基づいて、被ヒット物がユーザ又はユーザ移動体(装着体)の前面部にヒットしたと判断した場合には、前面側振動部を振動させ、所与の振動間隔の期間経過後に、後面側振動部を振動させる。一方、制御部118は、ヒット情報に基づいて、被ヒット物がユーザ又はユーザ移動体(装着体)の後面部にヒットしたと判断した場合には、後面側振動部を振動させ、所与の振動間隔の期間経過後に、前面側振動部を振動させる。このようにすれば、弾や剣等の他のオブジェクトが、あたかもユーザの身体を貫通したかのような仮想現実感をユーザに与えることが可能になる。
また本実施形態のシミュレーションシステムは図1に示すように、仮想空間設定部112と移動体処理部113を更に含むことができる。
仮想空間設定部112は仮想空間の設定処理を行う。例えば、移動体、障害物、背景又はマップのオブジェクトを仮想空間に配置設定する処理を行う。例えば実空間でのユーザの位置情報、方向情報が取得された場合に、取得された位置情報、方向情報に基づいて、ユーザに対応するユーザ移動体(ユーザキャラクタ等)の位置、方向を設定して、仮想空間に配置する処理を行う。オブジェクトであるユーザ移動体の位置、方向等の情報は、例えばオブジェクト情報記憶部172に記憶される。ユーザ移動体は、例えば実空間でユーザの移動に追従して仮想空間(オブジェクト空間)において移動するオブジェクト(表示物)である。ユーザ移動体としては、ユーザに対応するアバター移動体(ユーザキャラクタ、仮想ユーザ)や、アバター移動体が搭乗する搭乗移動体や、アバター移動体が装着する外殻移動体などがある。外殻移動体は、アバター移動体(ゴースト)に重なるように配置されて仮想空間を移動する。外殻移動体は、アバター移動体を内包する移動体であり、ユーザの義体として表現されるものある。
なお、ゲーム処理に基づく画像が表示される表示部としてHMD200を用いない場合等において、ユーザ移動体は、操作部160からの操作情報に基づいてゲーム空間(仮想空間)を移動するものであってもよい。例えば現実世界のユーザは、表示部の画像を見ながら操作部160を操作してゲームをプレイする。そしてユーザ移動体は、操作部160の操作に応じてゲーム空間を移動する。
移動体処理部113は、仮想空間を移動するユーザ移動体の移動処理を行う。例えば移動体処理部113は、ユーザに対応するユーザ移動体(アバター移動体、搭乗移動体、外殻移動体)を、情報取得部111により取得されたユーザ情報(位置情報、方向情報)に基づいて、仮想空間において移動させる処理を行う。例えば実空間でのユーザの移動に追従して移動するように、仮想空間でユーザ移動体を移動させる。例えばユーザ移動体の移動速度や移動加速度に基づいて、ユーザ移動体の位置等をフレーム毎に更新する処理を行って、ユーザ移動体を仮想空間(仮想フィールド)において移動させる。また移動体処理部113は、情報取得部111により取得されたユーザ情報(姿勢情報)に基づいて、ユーザ移動体を動作させる処理を行う。例えばモーションデータに基づいて、ユーザ移動体の姿勢等を変化させるモーション処理を行う。
表示処理部120は、ゲーム処理の結果に基づいて表示画像を生成する。例えばユーザが装着するHMD200の表示画像を生成する。例えば仮想空間において仮想カメラから見える画像を、表示画像として生成する。例えば仮想カメラ制御部114は、ユーザの視点に対応する仮想カメラの制御処理を行う。例えば仮想カメラ制御部114は、ユーザの一人称視点として設定される仮想カメラの制御を行う。例えば仮想空間において移動する移動体(仮想プレーヤ等)の視点に対応する位置に、仮想カメラを設定して、仮想カメラの視点位置や視線方向を設定することで、仮想カメラの位置(位置座標)や姿勢(回転軸回りでの回転角度)を制御する。そして表示処理部120は、HMD200等の表示画像(表示映像)として、仮想空間において仮想カメラ(ユーザ視点)から見える画像を生成する。例えば仮想空間であるオブジェクト空間において所与の視点から見える画像を生成する。生成される画像は例えば立体視用の画像である。
なお以上では、振動イベントが、ユーザ又はユーザ移動体と被ヒット物(他のオブジェクト)とのヒットイベントである場合について説明したが、本実施形態はこれに限定されず、振動イベントは、ヒットイベント以外のイベントであってもよい。振動イベントは、被ヒット物がユーザ又はユーザ移動体にヒットするイベントだけではなく、例えばユーザ又はユーザ移動体から離れた場所で発生する爆発イベント、ユーザ又はユーザ移動体の身体の状態(例えば震える、身体が破壊される等)から発生するイベントなどの種々のイベントを想定できる。
また本実施形態では、表示処理部120は、ユーザが視界を覆うように装着するHMD200の表示画像を生成している。このように、ユーザが視界を覆うようにHMD200を装着する場合には、装着体の振動部を振動させるような体感装置は、ユーザの仮想現実感の向上のために有効である。
但し、表示処理部120は、HMD200以外の表示部の表示画像を生成してもよい。例えば家庭用ゲーム装置におけるテレビ、パーソナルコンピュータや業務用ゲーム装置におけるモニターディプレイなどの表示部の表示画像を生成してもよい。
また制御部118は、装着体50の振動制御に応じた演出処理を行う。例えば装着体50の振動部の振動制御に連動して、ゲーム音での効果音の演出処理を行ったり、ゲーム画像での演出画像の生成処理を行う。例えば振動させる振動部の個数、振動させる振動部の範囲、或いは振動のタイミングに合わせて、効果音を出力したり、演出画像を表示する。例えば振動部の個数が多いほど、或いは振動部の範囲が広いほど、振動に伴い出力される効果音の音量を大きくしたり、より演出効果の高い演出画像を表示する。また第1の振動部を第1のタイミングで振動させた後、第2のタイミングで第2の振動部を振動させる場合に、これらの第1、第2のタイミングにおいて、対応する効果音を出力したり、演出画像を表示する。例えば振動部の各振動制御に対して、効果音や演出画像を対応づけて記憶部170に記憶しておき、制御部118は、各振動制御に対応づけた効果音を出力したり、演出画像を表示する制御を行うようにする。このようにすることで、振動部の振動制御に連動した効果音の出力や演出画像の表示が可能になり、より演出効果の高い振動制御を実現できるようになる。
また本実施形態では情報取得部111は、例えば視界を覆うようにHMD200を装着するユーザの位置情報、方向情報及び姿勢情報の少なくとも1つを含むユーザ情報を取得する。例えば情報取得部111は、HMD200のトラッキング情報などに基づいて、実空間でのユーザの位置情報、方向情報及び姿勢情報の少なくとも1つを含むユーザ情報(ユーザトラッキング情報)を取得する。位置情報は、実空間でのユーザの視点の位置情報であってもよく、方向情報は、実空間でのユーザの視線の方向情報であってもよい。位置情報、方向情報は、ユーザが実空間(現実世界)のフィールド(プレイフィールド、シミュレーションフィールド、プレイエリア)に位置する場合に、そのフィールドでの位置情報、方向情報(所与の位置を原点とする座標系での位置座標、各座標軸回りでの回転角度)であってもよい。姿勢情報は、ユーザの各姿勢(立ち姿勢、しゃがみ姿勢又は座り姿勢等)を特定したり、或いはユーザの各部位(胴体、頭、手又は足等)の位置、方向を特定するための情報である。例えば情報取得部111は、HMD200の位置情報、方向情報を、当該HMD200を装着するユーザの位置情報、方向情報として取得してもよい。
また仮想カメラ制御部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)に示すように、ユーザUSの周辺には、ベースステーション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に設けられたモーションセンサを用いて実現してもよい。
また図2(A)、図3(A)では、ユーザUSは、図1の装着体50の一例であるジャケット52を身体に装着している。後述の図9(A)、図9(B)に示すようにジャケット52(広義には装着体)には複数の振動部(VF1〜VF9、VB1〜VB9)が設けられている。
3.本実施形態の手法
次に本実施形態の手法について詳細に説明する。なお、以下では本実施形態の手法を、対戦ゲームに適用した場合を主に例にとり説明する。但し、本実施形態はこれに限定されず、種々のゲーム(RPG、アクションゲーム、競争ゲーム、スポーツゲーム、ホラー体験ゲーム、電車や飛行機等の乗り物のシミュレーションゲーム、パズルゲーム、コミュニケーションゲーム、或いは音楽ゲーム等)に適用でき、ゲーム以外にも適用可能である。また以下では、HMDにゲーム画像が表示されるシミュレーションシステムに本実施形態の手法を適用した場合を主に例にとり説明するが、HMD以外の表示部にゲーム画像が表示されるシミュレーションシステムに対して本実施形態の手法は適用可能である。また後述の図22に示すように、ユーザに対してゲーム画像を表示しないタイプのシミュレーションシステムに対しても本実施形態の手法は適用可能である。例えば以下では、仮想空間(ゲーム空間)のユーザ移動体に対して被ヒット物がヒットする場合について説明するが、図22のように実空間のユーザに対して弾等の被ヒット物がヒットするようなゲームにおいても本実施形態の手法は適用可能である。また以下では、ユーザ移動体が、ユーザのアバター移動体(仮想ユーザ、ユーザキャラクタ)である場合を例にとり説明するが、ユーザ移動体は、ユーザが搭乗する搭乗移動体(例えばロボット、戦車、戦闘機又は車等)などであってもよい。
3.1 ゲームの説明
まず本実施形態により実現されるゲームについて説明する。図4〜図6は本実施形態により実現されるガンシューティングゲーム(FPSゲーム)の説明図である。
図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は、後述の図9(A)、図9(B)に示すようなジャケット52(装着体)を身体に装着している。
これに対して仮想空間においては、ユーザUS1、US2の分身となるユーザ移動体MV1、MV2が登場する。これらのユーザ移動体MV1、MV2は、ゲームのキャラクタの装備品や着衣を装着している。例えば義体と呼ばれる外殻移動体を装備している。またユーザ移動体MV1、MV2は、実空間のガン型コントローラGN1、GN2に対応する銃GV1、GV2(銃の表示物)を所持している。実空間のユーザUS1、US2が、ガン型コントローラGN1、GN2を上下左右に動かすと、仮想空間(仮想世界)のユーザ移動体MV1、MV2が、銃GV1、GV2を上下左右に動かすことになる。
図6は本実施形態により生成されるゲーム画像の例である。このゲーム画像は各ユーザが装着するHMDに表示される。例えば図6は、図5(A)のユーザUS1のHMD1に表示されるゲーム画像の例であり、ユーザUS1のユーザ移動体MV1の手や所持する銃GV1(銃オブジェクト)が表示されている。また味方チームのユーザUS2、US3に対応するユーザ移動体MV2、MV3や、敵チームのユーザに対応する敵移動体MB1、MB2、MB3が表示されている。味方チームのユーザ移動体MV1、MV2、MV3は、所持する銃GV1、GV2、GV3により敵側に対して攻撃を行い、敵チームの敵移動体MB1、MB2、MB3は、所持する銃GB1、GB2、GB3により攻撃を行う。
図7、図8は本実施形態により実現される剣ゲームの説明図である。図7に示すようにユーザUSは、視界を覆うようにHMD200を装着する。そして例えば右手で剣型コントローラ10を持ち、左手でコントローラ80を持つ。具体的にはユーザUSは、右手で把持部20(持ち手)を持つことで、剣のように剣型コントローラ10を持つことになる。
剣型コントローラ10には、先端部と把持部20との間に、反動及び振動の少なくとも一方を発生する発生機構30が設けられている。また後端部と把持部20の間に、振動を発生する発生機構60が設けられている。また剣型コントローラ10の先端部には、剣型コントローラ10の位置情報や姿勢情報を検出するためのコントローラ70が取り付けられている。
発生機構30は、錘32と受け部34を含む。そして発生機構30は、錘32を受け部34に衝突させることで、反動(反力)を発生する。またこの反動の発生に伴い、振動も発生させることができる。反動は、例えば他に力や作用を及ぼしたときにその反作用で押し返されることである。例えば本実施形態では、ユーザが実空間において剣型コントローラ10を持って、剣で振る動作を行う。そして仮想空間において、その剣に対応する剣のオブジェクトが敵移動体等の他のオブジェクトにヒットすると、そのヒットについての仮想的な反動が、発生機構30により実現される。例えば剣がヒットした方向とは反対方向の反力が働いたかのようにユーザが感じることができる反動を、発生機構30が発生する。これにより反力があたかも生じたかのようにユーザは感じることができ、剣のヒットによる仮想的な反動の発生を実現できる。
なお振動を発生する発生機構60は、トランスデューサーを有しており、発生機構30の反動の発生に時間的に遅れて、発生機構60による振動が発生する。また剣型コントローラ10、コントローラ80の位置情報や姿勢情報は、図2(A)〜図3(B)等で説明したトラッキング処理などにより取得される。またユーザUSは後述の図9(A)、図9(B)で説明するようなジャケット52(装着体)を身体に装着している。
図8はHMD200の表示されるゲーム画像の例である。ゲーム画像には敵移動体OBE(敵キャラクタ)や、敵移動体OBEが持つ剣SWE、盾SLEや、背景などのオブジェクトが表示されている。またユーザUSに対応するユーザ移動体(ユーザキャラクタ、アバタ)の右の手HR、左の手HLや、右の手HRが持つ剣SWや、左の手HLが持つ盾SLなどのオブジェクトも表示されている。
例えば図7の実空間においてユーザUSが右の手で持っている剣型コントローラ10を動かすと、その動きに連動して、図8の仮想空間での右の手HRや剣SWも動くようになる。また図7の実空間においてユーザUSが左の手で持っているコントローラ80を動かすと、その動きに連動して、図8の仮想空間での左の手HLや盾SLも動くようになる。即ち、実空間の剣型コントローラ10は仮想空間の剣SWに対応し、実空間のコントローラ80は仮想空間の盾SLに対応することになる。
図8は、一人称視点のゲーム画像であり、実空間のユーザUSに対応する仮想空間のユーザ移動体(ユーザキャラクタ)の視点での画像が表示されている。なお実際には、HMD200によりユーザUSに対して、視界の全周囲に亘って広がるVR空間の画像が表示される。
3.2 振動ジャケット、振動部
本実施形態のシミュレーションシステムでは、ユーザが身体に装着体50を装着してゲームをプレイする。図5(A)、図7では、装着体50としてジャケット52を着衣している。なお、以下では、装着体50がジャケット52である場合を例に説明するが、装着体50はジャケット52には限定されず、ジャケット以外のジャンパー等の上着や、ズボンや、鎧や、或いは胸、腰、腕等に装着するベルトなどの種々の身体の装着物を考えることができる。
ジャケット52には複数の振動部が設けられている。図9(A)は、ジャケット52の前面側振動部として振動部VF1〜VF9が設けられ、後面側振動部として振動部VB1〜VB9が設けられている。なお振動部の個数は任意であり、例えば前面側振動部として1〜8個又は10個以上の振動部を設けたり、後面側振動部として1〜8個又は10個以上の振動部を設けてもよい。またジャケット52の前面部と後面部の一方にだけに複数の振動部を設けてもよいし、ジャケット52の右側面や左側面などの側面に1又は複数の振動部を設けてもよい。また図9(A)、図9(B)では、複数の振動部が格子状に配置されているが、振動部の配置態様はこれに限定されず、格子状ではない2次元マトリクス状の配置や、1次元マトリクス状の配置などの種々の配置態様を想定できる。
図10は振動部(VF1〜VF9、VB1〜VB9)の実現構成の一例である。図10の振動部はソレノイド90により実現されている。ソレノイド90の一端側にはバネ94の一端が取り付けられ、このバネ94により、通常状態ではソレノイド90は方向DR1側に引っ張られている。なおバネ94の他端PJは例えばジャケット52の裏側面等に固定される。またソレノイド90は取付具96によりジャケット52に取り付けられている。
そしてソレノイド90に対して駆動信号が入力されて通電が行われると、ソレノイド90のプランジャー92が方向DR2側に移動して、ユーザの体98に当たる。これによりユーザは、弾や剣のヒット時における振動を体感できる。
なお振動部は、ソレノイド以外にも、トランスデューサー、振動モータ、バネ&振動モータ、空圧又は電動のシリンダ、リニアモータなどの種々の振動デバイスにより実現できる。
トランスデューサーは、音信号を変換するものであり、ハイパワーのサブウーハーに相当するものである。例えば図1の制御部118が音ファイルの再生処理を行うと、それによる音信号がトランスデューサーに入力される。そして例えば音信号の低域成分に基づいて振動が発生する。振動モータは、例えば、偏芯した錘を回転させることで振動を発生する。具体的には駆動軸(ローター軸)の両端に偏心した錘を取り付けてモータ自体が揺れるようにする。バネ&振動モータの組合わせでは、モータをロック解除に使用して振動を発生する。シリンダでは、空圧又は電動で図10の方向DR1、DR2に沿ってシリンダのロッド部を直線運動させる。リニアモータでも、図10の方向DR1、DR2に沿った直線運動を行わせる。
本実施形態では、ジャケット(装着体)に振動部を装着して、ゲーム状況(ヒットイベント、振動イベント)に応じて振動部の振動制御を行う手法を採用している。この振動制御手法としては種々の実現態様を想定できる。
例えばジャケット(ベスト)の前面部のみに1つの振動部を取り付けて、ゲームでのヒットイベント(広義には振動イベント)が発生した場合(制御部から被弾信号を受けた場合)に、当該振動部を振動させる。
或いはジャケットの例えば前面部等に複数の振動部を取り付けて、ゲームでのヒットイベントが発生した場合に、複数の振動部のうち選択された振動部を振動させる。例えば、ヒット位置(攻撃を受けた位置)の情報に基づいて、複数の振動部のうちのどの振動部を振動させるかを選定して振動させる。
或いは、ジャケットの前面部と後面部の各々に1個の振動部を取り付けて、ヒットイベントが発生した場合(制御部から被弾信号を受けた場合)に、前面部の振動部と後面部の振動部を時間差を設けて振動させて、弾が貫通したかのような体感をユーザに与える。
或いは、ジャケットの前面部と後面部の各々に複数の振動部を取り付けて、ヒット位置(攻撃位置)の情報やヒット方向(攻撃方向)の情報に基づいて、まず前面部の振動部のうちの、どれを振動させるかを決定し、続いて、後面部の振動部のうちのどれを振動させるかを決定する。また前面部の振動部の振動と後面部の振動部の振動の発生間隔(振動間隔)を、どのくらいの間隔にするかを、ヒット速度(攻撃速度)に応じて決定する。例えば弾丸の攻撃ならばヒット速度は速く、剣が突き刺さる攻撃ならばヒット速度が遅いと判断する。また、剣の攻撃などでは、剣を突き刺した後、剣先を円運動させるような攻撃表現を実現してもよい。具体的には前面部で振動させる振動部は同じままにして、後面部において振動させる振動部を、剣先の円運動に応じて選択する。以上のように装着体に設けられた振動部を用いた振動制御手法としては種々の実施態様を考えることができる。
図11(A)、図11(B)は実空間を移動するユーザUSと仮想空間を移動するユーザ移動体MVの関係を示す図である。
図11(A)では、実空間においてユーザUSがA1に示すように移動している。ユーザUSは、視界を覆うようにHMD200を装着し、手にはガン型コントローラGNを所持している。そして図4に示すような実空間のフィールドFLを移動する。すると、実空間において移動するユーザUSの位置情報が取得され、取得された位置情報に基づいて、図11(B)のA2に示すように、ユーザ移動体MVが仮想空間において移動する。また実空間でのユーザUSの方向情報が取得され、仮想空間のユーザ移動体MVもその方向情報に対応する方向を向くようになる。また実空間でのユーザUSの姿勢情報が取得され、仮想空間のユーザ移動体MVもその姿勢情報に対応する姿勢を取るようになる。例えば実空間においてユーザUSが、手や足を動かせば、仮想空間でのユーザ移動体MVもそれに応じて手や足を動かすようになる。
このように図11(A)、図11(B)では、ユーザの位置、方向、姿勢の変化に応じて、ユーザに対応する仮想空間のユーザ移動体の位置、方向、姿勢も変化するようになる。そしてHMDを用いるシステムでは、ユーザの視界の全周囲に亘って広大なVR空間が広がるような画像がHMDに表示されるため、ユーザの仮想現実感を格段に向上できる。
一方、ガンシューティングゲームにおいては、図6に示すように敵からの攻撃がユーザ移動体にヒットするヒットイベント(被弾イベント)が発生する。この場合にHMDの表示画像やヘッドホンへの出力音だけでは、このようなヒットイベントをユーザにリアルに体感させることは難しい。即ち、弾がヒットするような画像がHMDに表示されたり、弾のヒットを表す効果音がヘッドホンから出力されても、弾のヒットによる振動等の体感がなければ、弾がヒットしたことの仮想現実感をユーザに対して十分に与えることができない。
そこで本実施形態では、このような弾等のヒットイベント(振動イベント)などのゲーム状況に応じて、装着体に設けられた振動部を振動させる手法を採用している。
例えば図12(A)では、仮想空間において、敵からの弾SH(広義には他のオブジェクト)がユーザ移動体MVにヒットするヒットイベントが発生している。このようなヒットイベントが発生した場合に、図12(B)に示すように、実空間において、ユーザUSが装着するジャケット52の振動部VFを振動させる。
具体的には本実施形態では、仮想空間の設定処理が行われ、図11(A)、図11(B)で説明したように、仮想空間を移動するユーザ移動体MVの移動処理が行われる。またユーザUSが身体にジャケット52(装着体)を装着してプレイするゲームのゲーム処理が行われ、図6、図8に示すように、ゲーム処理の結果に基づいて、表示画像が生成される。例えば本実施形態ではこの表示画像はHMDに表示される。
そして本実施形態では図9(A)、図9(B)に示すように、装着体であるジャケット52には複数の振動部(VF1〜VF9、VB1〜VB9)が設けられる。また図12(A)に示すようにユーザ移動体MVと他のオブジェクトである弾SHとのヒット演算処理が行われる。そしてユーザ移動体MVと他のオブジェクトである弾SHとのヒットイベントが発生した場合に、装着体であるジャケット52の複数の振動部の振動制御が行われる。例えば複数の振動部の中から、弾SHのヒット方向やヒット位置などに応じて選択された振動部を振動させる振動制御が行われる。
このようにすることでユーザUSは、HMDに表示される仮想空間において、ユーザUSに対応するユーザ移動体MVに対して弾SHがヒットするイベントが発生すると、そのヒットイベントに応じて、実世界において自身が装着するジャケット52において、ヒット方向やヒット位置に対応する振動部が振動するようになる。従って、HMDのリアルな映像による仮想現実感に加えて、ジャケット52の振動部の振動による体感をユーザに与えることが可能になり、ユーザの仮想現実感を格段に向上することが可能になる。
なお、本実施形態では、図6、図8のような画像を、HMDに表示するのではなく、家庭用ゲーム装置におけるテレビや、パーソナルコンピュータや業務用ゲーム装置におけるモニターディプレイなどの表示部に表示するような実施態様でもよい。この場合には、ユーザUSが身体に装着体を装着してプレイするゲームのゲーム処理が行われ、そのゲーム処理の結果に基づいて、表示画像が生成されて表示部に表示される。この場合に表示部には、ユーザの一人称視点での画像を表示してもよいし、ユーザ移動体(ユーザキャラクタ)を後方から見た三人称視点での画像を表示してもよい。そしてユーザがゲームのコントローラ(操作部)を操作することで、ゲーム空間においてユーザ移動体が移動するようになる。
3.3 振動イベントの種類、内容に応じた振動制御
次に本実施形態の振動制御手法の具体例について説明する。本実施形態では、ユーザが身体に装着体50を装着してプレイするゲームについてのゲーム処理を行い、複数の振動部が設けられる装着体50についての制御を行う。この場合に、ゲームにおいて発生する振動イベントの種類又は内容に応じて、振動させる振動部の個数又は振動させる振動部の範囲である振動範囲を変化させる。具体的には振動イベントは、ユーザ又はユーザに対応するユーザ移動体と被ヒット物とのヒットイベントであり、ヒットイベントの種類又は内容に応じて、振動させる振動部の個数又は振動範囲を変化させる。
例えば図13(A)では、敵からのピストル攻撃によるヒットイベント(広義には振動イベント)が発生している。例えば図5(A)〜図6で説明したユーザ移動体に対して敵からのピストルの弾(広義には被ヒット物、他のオブジェクト)がヒットしている。なお、ヒットイベントは、後述する図22において実空間のユーザに対して敵からの弾等の被ヒット物がヒットするヒットイベントであってもよい。以下の説明でも同様である。
このようなピストルの弾によるヒットイベント(第1の種類のヒットイベント)の場合には、図13(A)に示すようにジャケット(装着体)の1個の振動部VF5が振動する。例えば振動させる振動部の範囲である振動範囲ARは狭い範囲になる。一方、鉄球によるヒットイベント(第2の種類のヒットイベント)の場合には、図13(B)に示すようにジャケットの5個の振動部VF2、VF4〜VF6、VF8が振動する。例えば振動部の振動範囲ARは図13(A)よりも広い範囲になる。またバズーカによるヒットイベント(第3の種類のヒットイベント)の場合には、図13(C)に示すようにジャケットの9個の振動部VF1〜VF9が振動する。例えば振動部の振動範囲ARは図13(A)、図13(B)よりも広い範囲になる。
このように図13(A)〜図13(C)では、ヒットイベントの種類に応じて、振動させる振動部の個数や振動範囲を変化させている。具体的には、被ヒット物の種類(ピストル、鉄球、バズーカ等)に応じて、振動させる振動部の個数又は振動範囲を変化させている。例えば被ヒット物の種類が、高い攻撃能力を有する種類の被ヒット物であるほど、振動部の振動個数を多くしたり、振動範囲を広くしている。例えば図13(C)のヒットイベントでのバズーカの弾は、図13(A)、図13(B)のヒットイベントでのピストルの弾や鉄球に比べて、高い攻撃能力を有する種類の被ヒット物となっているため、振動部の振動個数が多くなり、振動範囲が広くなっている。このようにすれば、ヒットイベントの種類に応じて、振動部の振動個数が少なくなったり、多くなったり、或いは振動範囲が狭くなったり、広くなったりする。従って、ユーザは、どのような種類のヒットイベントが発生したのかを、振動部の振動個数や振動範囲の広狭を、触覚により体感することで、認識できるようになる。またヒットイベントの種類と、振動部の振動個数や振動範囲とが対応するようになるため、ユーザの仮想現実感を向上できる。例えばピストルの弾がヒットした場合には、少ない個数の振動部が振動し、振動範囲も狭くなる一方で、バズーカがヒットした場合には、多い個数の振動部が振動し、振動範囲も広くなる。従って、多い個数の振動部が振動したり、振動範囲が広い場合には、バズーカのような攻撃がヒットしたとユーザは認識できるようになる。またバズーカのような攻撃がヒットしたときに、多い個数の振動部が振動し、振動範囲が広くなることで、あたかも本物のバズーカの攻撃を受けたかのような仮想現実感をユーザに与えることが可能になり、ユーザの仮想現実感の向上を図れる。
また図14(A)では、攻撃力が低いヒットイベントが発生しており、図14(B)では、攻撃力が中ぐらいのヒットイベントが発生しており、図14(C)では、攻撃力が高いヒットイベントが発生している。例えばヒットイベントの種類は同じであるが、当該ヒットイベントでの攻撃力が高低が異なっており、ヒットイベントの内容が異なっている。具体的には、同じピストル、鉄球又はバズーカによる攻撃であっても、その攻撃力の高低が異なっている。
そして攻撃力が低いヒットイベント(第1の内容のヒットイベント)の場合には、図14(A)に示すようにジャケットの1個の振動部VF5が振動する。例えば振動範囲ARは狭い範囲になる。一方、攻撃力が中ぐらいのヒットイベント(第2の内容のヒットイベント)の場合には、図14(B)に示すようにジャケットの5個の振動部VF2、VF4〜VF6、VF8が振動する。例えば振動範囲ARは図14(A)よりも広い範囲になる。また攻撃力が高いヒットイベント(第3の内容のヒットイベント)の場合には、図14(C)に示すようにジャケットの9個の振動部VF1〜VF9が振動する。例えば振動範囲ARは図14(A)、図14(B)よりも広い範囲になる。
このように図14(A)〜図14(C)では、ヒットイベントの内容に応じて、振動させる振動部の個数や振動範囲を変化させている。具体的には被ヒット物の攻撃内容(攻撃力が低い、中ぐらい、高い)に応じて、振動させる振動部の個数又は振動範囲を変化させている。例えば被ヒット物の攻撃が、攻撃力の高い攻撃内容であるほど、振動させる振動部の個数を多くしたり、振動範囲を広くしている。例えば図14(C)のヒットイベントでの攻撃は、図14(A)、図14(B)のヒットイベントでの攻撃に比べて、攻撃力の高い攻撃内容となっているため、振動部の振動個数を多くなり、振動範囲が広くなっている。このようにすれば、ヒットイベントの内容に応じて、振動部の振動個数が少なくなったり、多くなったり、或いは振動範囲が狭くなったり、広くなったりする。従って、ユーザは、発生したヒットイベントの内容がどのような内容なのかを、振動部の振動個数や振動範囲を、触覚により体感することで、認識できるようになる。またヒットイベントの内容と、振動部の振動個数や振動範囲とを対応するようになるため、ユーザの仮想現実感を向上できる。例えば低い攻撃力のヒットイベントの場合には、少ない個数の振動部が振動し、振動範囲も狭くなる一方で、高い攻撃力のヒットイベントの場合には、多い個数の振動部が振動し、振動範囲も広くなる。従って、多い個数の振動部が振動したり、振動範囲が広い場合には、攻撃力が高いヒットイベントであるとユーザは認識できるようになる。また攻撃力の高いヒットイベントでは、多い個数の振動部が振動し、振動範囲が広くなることで、あたかも本当に高い攻撃力の攻撃を受けたかのような仮想現実感をユーザに与えることが可能になり、ユーザの仮想現実感の向上を図れる。
またヒットイベントの内容は、ヒットイベント(振動イベント)での時間経過についての内容であってもよい。例えばヒットイベントでの時間経過に応じて、ジャケット(装着体)の振動部を振動させる。具体的には、被ヒット物のヒットタイミングにおいて、複数の振動部のうちの第1の振動部を振動させる。そしてヒットタイミングから所与の時間が経過した後に、第1の振動部の周囲の第2の振動部を振動させる。
例えば図15(A)では、弾等の被ヒット物がヒットしたヒットタイミングにおいて、振動部VF5(第1の振動部)が振動する。そして図15(B)に示すように、このヒットタイミングから所与の時間が経過した後に、振動部VF5の周囲の振動部VF4、VF6(第2の振動部)が振動する。また図15(C)に示すように、図15(B)から所与の時間が経過した後に、振動部VF5の周囲の振動部VF2、VF8(第3の振動部)が更に振動する。例えば、時間経過に応じて、振動部の振動個数が増加して行き、振動範囲ARが広くなって行く。従って、被ヒット物がヒットした後、被ヒット物が当たった位置からその周囲方向に向かって、振動が徐々に広がって行くような演出が可能になる。これにより、あたかも本物の被ヒット物が当たったかのような仮想現実感をユーザに与えることが可能になり、ユーザの仮想現実感の向上を図れる。
なお時間経過に応じた振動制御は、タイマーを用いたカウント処理などにより実現できる。但し、このようなタイマー等による時間経過による振動制御ではなく、例えば被ヒット物のヒットタイミングにおいて、複数の振動部のうちの第1の振動部を振動させ、次に、第1の振動部の周囲の第2の振動部を振動させるというような、振動させる振動部の順番を制御する手法を採用してもよい。
3.4 振動部のランダム選択
本実施形態では、ヒットイベントなどの振動イベントが発生した際に、複数の振動部の中から振動させる振動部をランダムに選択する振動制御を行っている。具体的には、振動イベントが発生した場合に、複数の振動部のうちの第1の振動部を振動させ、次に振動イベントが発生した場合に、複数の振動部のうちの第1の振動部とは異なる第2の振動部をランダムに選択して振動させる。
例えば図16(A)では、被ヒット物がヒットするヒットイベント(振動イベント)が発生した場合に、複数の振動部VF1〜VF9のうちの振動部VF5(第1の振動部)を選択して振動させている。振動させる振動部として振動部VF5を選択する処理は、例えば後述するようなヒット方向及びヒット位置の少なくとも一方を含むヒット情報に基づき行うことが可能である。そして、次にヒットイベントが発生した場合には、図16(B)に示すように、複数の振動部VF1〜VF9のうちの振動部VF6(第2の振動部)をランダムに選択して振動させる。また、更に次にヒットイベントが発生した場合には、図16(C)に示すように、複数の振動部VF1〜VF9のうちの振動部VF8(第3の振動部)をランダムに選択して振動させる。ここで図16(A)、図16(B)、図16(C)でのヒットイベントは、例えばその種類や内容が同じヒットイベントである。例えば図16(A)では、ピストルの弾がヒットするヒットイベントが発生しており、図16(B)、図16(C)でも、ピストルの弾がヒットするヒットイベントが発生している。また例えば図16(A)では、攻撃力が低い攻撃内容のヒットイベントが発生しており、図16(B)、図16(C)でも、攻撃力が低い攻撃内容のヒットイベントが発生している。
例えばヒットイベントが発生した場合に、常に同じ位置の振動部が振動してしまうと、ユーザの身体が振動部の振動に慣れてしまうという問題がある。例えば本実施形態では、弾がヒットするヒットイベントが発生した際に、弾のヒット位置に対応する振動部を振動させることで、あたかも本物の弾がヒットしたかのような仮想現実感をユーザに与えることに成功している。しかしながら、ヒットイベントの発生時に、同じ身体部分ばかりに対して振動による刺激を与えてしまうと、振動による刺激に対して麻痺してしまい、振動部の振動がユーザに与える仮想現実感が低下してしまうという問題が発生する。
この点、本実施形態では、ヒットイベントが発生した際に、複数の振動部の中から振動させる振動部をランダムに選択する手法を採用している。例えば弾がヒットするヒットイベントの発生時に、図16(A)では振動部VF5が振動し、図16(C)では振動部VF6が振動し、図16(C)では振動部VF8が振動するというように、振動する振動部がランダムに変化する。従って、同じ身体部分の振動部(例えばVF5)だけが常に振動することでユーザが振動による刺激に慣れてしまうというような事態の発生を防止できる。例えば同じヒットイベントが発生した場合にも、ユーザの異なる身体部分に対して振動による刺激が与えられるようになるため、ユーザが振動による刺激に慣れてしまうというような事態を回避できる。従って、振動部の振動がユーザに与える仮想現実感が低下してしまうのを防止できるようになり、あたかも本物の弾等の被ヒット物がヒットしたかのような仮想現実感をユーザに与えることが可能になる。
3.5 ヒット情報に応じた振動部の選択
本実施形態ではヒット情報に基づく振動部の選択を行っている。具体的には、ユーザ又はユーザ移動体と被ヒット物とのヒット演算処理を行って、ヒット方向及びヒット位置の少なくとも一方を含むヒット情報を求める。そしてヒットイベントが発生した場合に、ヒット情報に応じて、複数の振動部の中から振動させる振動部を選択する。例えば図13(A)〜図14(C)のようにヒットイベントの種類又は内容に応じて振動させる振動部の個数や振動範囲を変化させる場合に、振動範囲の中央となる振動部VF5の選択を、ヒット情報に基づき行う。また図15(A)〜図15(C)のようにヒットイベントでの時間経過に応じて振動させる振動部の個数や振動範囲を変化させる場合に、最初に振動させる振動部VF5(第1の振動部)の選択を、ヒット情報に基づき行う。また図16(A)〜図16(C)のようにヒットイベントが発生した際に複数の振動部の中から振動させる振動部をランダムに選択する場合に、最初に選択する振動部VF5(第1の振動部)の選択を、ヒット情報に基づき行う。或いは、ヒット情報に基づいて、振動させる振動部の候補を決定し、決定された候補の中から振動させる振動部をランダムに選択する。
図17(A)〜図18(B)はヒット情報に基づく振動部の振動制御手法の説明図である。本実施形態では、ヒット方向及びヒット位置の少なくとも一方を含むヒット情報に基づいて、複数の振動部の中から振動させる振動部を選択する処理を行う。このようにすれば、ヒット演算処理により求められたヒット情報を反映させた振動部の振動制御を実現できるようになり、ゲーム状況に対応したリアルな振動制御を実現できるようになる。
具体的には図17(A)〜図18(B)では、ジャケット52(装着体)の前面部に、前面側の振動部VF1〜VF9が設けられ、ジャケット52の後面部に、後面側の振動部VB1〜VB9が設けられている。このときに本実施形態では、ヒットイベント(振動イベント)が発生した場合に、ヒット情報に基づいて、前面側の振動部及び後面側の振動部の一方の振動部である第1の振動部を振動させた後、前面側の振動部及び後面側の振動部の他方の振動部である第2の振動部を振動させる振動制御を行う。ここでヒット情報は、ヒット方向及びヒット位置の少なくとも一方を含む情報である。
即ち本実施形態では、2つの振動部の振動間隔に時間差を設けることで、あたかも弾が自身の身体を貫通したかのような仮想現実をユーザに対して与えている。そして本実施形態では、このように時間差を設けた振動において、先に振動する方の振動部を第1の振動部とし、後に振動する方の振動部を第2の振動部としている。
そして図17(A)、図17(B)は、先に振動する第1の振動部が、前面側の振動部であり、後に振動する第2の振動部が、後面側の振動部である場合の例である。例えば図17(A)では、第1の振動部である前面側の振動部VF6を振動させた後、第2の振動部である後面側の振動部VB4を振動させている。図17(B)では、第1の振動部である前面側の振動部VF2を振動させた後、第2の振動部である後面側の振動部VB5を振動させている。
一方、図18(A)、図18(B)は、先に振動する第1の振動部が、後面側の振動部であり、後に振動する第2の振動部が、前面側の振動部である場合の例である。例えば図18(A)では、第1の振動部である後面側の振動部VB4を振動させた後、第2の振動部である前面側の振動部VF6を振動させている。図18(B)では、第1の振動部である後面側の振動部VB5を振動させた後、第2の振動部である前面側の振動部VF2を振動させている。
このように本実施形態では、第1の振動部を振動させた後、第2の振動部を振動させるというように、2つの振動部の振動間隔に時間差を設ける振動制御を行うことで、あたかも弾が自身の身体を貫通したかのような仮想現実をユーザに対して与えている。これにより、弾等のヒットイベントの発生時にユーザに与える仮想現実感を大幅に向上できるようになる。
そして、このような振動制御を行うためには、まず、図12(A)のユーザ移動体MVの前面部に弾SHがヒットしたのか、或いはユーザ移動体MVの後面部に弾SHがヒットしたのかを判定する必要がある。
ユーザ移動体MVの前面部に弾SHがヒットした場合には、図17(A)、図17(B)に示すように、第1の振動部である前面側の振動部VF6、VF2を振動させた後、第2の振動部である後面側の振動部VB4、VB5を振動させればよい。
一方、ユーザ移動体MVの後面部に弾SHがヒットした場合には、図18(A)、図18(B)に示すように、第1の振動部である後面側の振動部VB4、VB5を振動させた後、第2の振動部である前面側の振動部VF6、VF2を振動させればよい。
そして、ユーザ移動体MVの前面部に弾SHがヒットしたのか、或いはユーザ移動体MVの後面部に弾SHがヒットしたのかの判定には、ヒット方向DHT及びヒット位置PHTの少なくとも一方を含むヒット情報を用いることができる。
例えば図17(A)、図17(B)では、ヒット方向DHTに基づいて、弾SHが、ユーザ移動体MVの前方側から飛んで来たと判断できる。或いは、ヒット位置PHTに基づいて、弾SHがユーザ移動体MVの前面部にヒットしたと判断できる。従って、この場合には、図17(A)、図17(B)に示すように、前面側の振動部VF6、VF2を振動させた後、後面側の振動部VB4、VB5を振動させる振動制御を行う。
一方、図18(A)、図18(B)では、ヒット方向DHTに基づいて、弾SHが、ユーザ移動体MVの後方側から飛んで来たと判断できる。或いは、ヒット位置PHTに基づいて、弾SHがユーザ移動体MVの後面部にヒットしたと判断できる。従って、この場合には、図18(A)、図18(B)に示すように、後面側の振動部VB4、VB5を振動させた後、前面側の振動部VF6、VF2を振動させる振動制御を行う。
また図17(A)〜図18(B)に示すように、前面側や後面側に複数の振動部がある場合に、複数の振動部の中から振動させる振動部を選択する処理が必要になる。そこで本実施形態では、複数の振動部の中から振動させる振動部を選択する処理を、ヒット情報に基づいて行う。
具体的には本実施形態では、先に振動させる第1の振動部として、複数の第1の振動部が設けられる場合に、複数の第1の振動部の中から振動させる振動部を選択する処理を、ヒット情報に基づいて行う。或いは、後に振動させる第2の振動部として、複数の第2の振動部が設けられる場合に、複数の第2の振動部の中から振動させる振動部を選択する処理を、ヒット情報に基づいて行う。
例えば図17(A)、図17(B)は、先に振動させる複数の第1の振動部が、前面側の振動部VF1〜VF9であり、後に振動させる複数の第2の振動部が、後面側の振動部VB1〜VB9である場合の例である。この場合に、複数の前面側の振動部VF1〜VF9(複数の第1の振動部)の中から振動させる振動部を選択する処理と、複数の後面側の振動部VB1〜VB9(複数の第2の振動部)の中から振動させる振動部を選択する処理を、ヒット情報であるヒット方向DHTに基づいて行う。
例えば図17(A)では、図12(A)の弾SHのヒット方向DHTは、ユーザ移動体MVの左前側から右後ろ側への方向になっている。この場合には、このヒット方向DHTの軌道に沿った前面側の振動部VF6と後面側の振動部VB4を選択して、振動させる。例えば前面側の振動部VF6を振動させた後、所与の振動間隔の期間経過後に、後面側の振動部VB4を振動させる。これによりユーザは、あたかも本物の弾が自身の身体の左前側から右後ろ側へと貫通したかのような仮想現実を感じることができる。
図17(B)では、弾SHのヒット方向DHTは、ユーザ移動体MVの下方前側から上方後ろ側への方向になっている。この場合には、このヒット方向DHTの軌道に沿った前面側の振動部VF2と後面側の振動部VB5を選択して、振動させる。例えば前面側の振動部VF2を振動させた後、所与の振動間隔の期間経過後に、後面側の振動部VB5を振動させる。これによりユーザは、あたかも本物の弾が自身の身体の下方前側から上方後ろ側へと貫通したかのような仮想現実を感じることができる。
一方、図18(A)、図18(B)は、先に振動させる複数の第1の振動部が、後面側の振動部VB1〜VB9であり、後に振動させる複数の第2の振動部が、前面側の振動部VF1〜VF9である場合の例である。この場合に、複数の後面側の振動部VB1〜VB9(複数の第1の振動部)の中から振動させる振動部を選択する処理と、複数の前面側の振動部VF1〜VF9(複数の第2の振動部)の中から振動させる振動部を選択する処理と、ヒット情報であるヒット方向DHTに基づいて行う。
例えば図18(A)では、弾SHのヒット方向DHTは、ユーザ移動体MVの右後ろ側から左前側への方向になっている。この場合には、このヒット方向DHTの軌道に沿った後面側の振動部VB4と前面側の振動部VF6を選択して、振動させる。例えば後面側の振動部VB4を振動させた後、所与の振動間隔の期間経過後に、前面側の振動部VF6を振動させる。これによりユーザは、あたかも本物の弾が自身の身体の右後ろ側から左前側へと貫通したかのような仮想現実を感じることができる。
図18(B)では、弾SHのヒット方向DHTは、ユーザ移動体MVの上方後ろ側から下方前側への方向になっている。この場合には、このヒット方向DHTの軌道に沿った後面側の振動部VB5と前面側の振動部VF2を選択して、振動させる。例えば後面側の振動部VB5を振動させた後、所与の振動間隔の期間経過後に、前面側の振動部VF2を振動させる。これによりユーザは、あたかも本物の弾が自身の身体の上方後ろ側から下方前側へと貫通したかのような仮想現実を感じることができる。
このように図17(A)〜図18(B)では、所定個数(例えば9個)の振動部が、ユーザの前面部と後面部の各々に格子状に配置され、ヒット情報に基づき適切な振動部が選択されて振動する。従って、ヒット方向等のヒット情報を反映させた好適な仮想現実感をユーザに与えることが可能になる。
なお図17(A)〜図18(B)では、ヒット方向DHTに基づいて振動部の選択処理を行っているが、ヒット位置PHTに基づいて振動部の選択処理を行ってもよい。
例えば図12(A)において、弾SHがユーザ移動体MVの身体の中央部にヒットしたと判定されたとする。この場合には図19(A)に示すように、身体の中央部のヒット位置PHTに対応する前面側の振動部VF5と後面側の振動部VB5を振動させる振動制御を行う。これによりユーザは、あたかも本物の弾が自身の身体の前側の中央部から後ろ側の中央部へと貫通したかのような仮想現実を感じることができる。
一方、弾SHがユーザ移動体MVの身体の中央部の下側にヒットしたと判定されたとする。この場合には図19(B)に示すように、身体の中央部の下側のヒット位置PHTに対応する前面側の振動部VF2と後面側の振動部VB2を振動させる振動制御を行う。これによりユーザは、あたかも本物の弾が自身の身体の前側の中央部下側から後ろ側の中央部下側へと貫通したかのような仮想現実を感じることができる。弾のヒット位置PHTが中央部の右側、左側、上側、斜め側等である場合にも、同様の振動制御を行うことができる。また、ヒット情報のヒット方向DHTとヒット位置PHTの両方を用いて、前面側の振動部と後面側の振動部を振動させる振動制御を行ってもよい。このようにすれば、弾が身体を貫通する仮想現実の体感処理を、より正確に実現する振動制御が可能になる。
また弾のヒット方向DHTやヒット位置PHTなどのヒット情報はユーザ移動体MVを標的として攻撃を行う敵の攻撃方向等の演算処理を行うことで特定できる。例えば図2(A)〜図3(B)で説明したトラッキング手法などにより、敵のユーザが所持するガン型コントローラの位置情報、方向情報を取得し、これらの位置情報、方向情報に基づいて攻撃方向を求めるヒット演算処理を行い、ヒット方向DHTやヒット位置PHTを特定する。この場合に、例えばユーザ移動体と敵移動体の相対的な位置関係や方向関係を反映させて、ヒット方向DHTやヒット位置PHTを特定すればよい。
また本実施形態では、第1の振動部を振動させる第1のタイミングから、第2の振動部を振動させる第2のタイミングまでの振動間隔の長さを、ヒットイベント(振動イベント)の種類又は内容に応じて変化させる。具体的には振動間隔の長さを、ヒット情報に含まれるヒット速度に基づいて変化させる。
ここで、第1の振動部は、先に振動させる方の振動部であり、第2の振動部は、後に振動させる方の振動部である。前述したように図17(A)、図17(B)では、前面側の振動部(VF1〜VF9)が第1の振動部になり、後面側の振動部(VB1〜VB9)が第2の振動部になる。一方、図18(A)、図18(B)では、後面側の振動部(VB1〜VB9)が第1の振動部になり、前面側の振動部(VF1〜VF9)が第2の振動部になる。
例えば図20(A)では、第1の振動部である前面側の振動部VFがタイミングT1(第1のタイミング)で振動している。そしてタイミングT1から振動間隔TVの期間経過後のタイミングT2(第2のタイミング)で、第2の振動部である後面側の振動部VBが振動している。このような振動間隔TVによる振動の時間差を設けることで、弾が貫通しているかのように感じる仮想現実感を実現できる。なお、前述したように第1の振動部が後面側の振動部であり、第2の振動部が前面側の振動部であってもよい。
そして図20(B)では、弾のヒット速度が遅いため、振動部VFを振動させるタイミングT1から振動部VBを振動させるタイミングT2までの振動間隔TVを長くする。一方、図20(C)では、弾のヒット速度が速いため、振動部VFを振動させるタイミングT1から振動部VBを振動させるタイミングT2までの振動間隔TVを短くする。このようにすれば、速度が遅い弾については、振動間隔TVが長くなることで、長い時間間隔で弾が身体を貫通するような仮想現実感をユーザに与えることができる。一方、速度が速い弾については、振動間隔TVが短くなることで、短い時間間隔で弾が身体を貫通するような仮想現実感をユーザが与えることができる。従って、弾のヒット速度を反映させた弾の貫通表現を実現でき、ユーザの仮想現実感を更に向上できる。
このように本実施形態では、振動間隔TVの長さを、ヒット速度に基づき変化させている。別の言い方をすれば、振動間隔TVの長さを、ヒットイベント(振動イベント)の種類や内容に応じて変化させている。例えばヒット速度が速い武器の攻撃が行われる第1の種類のイベントでは、振動間隔TVを短くする。一方、ヒット速度が遅い武器の攻撃が行われる第2の種類のイベントでは、振動間隔TVを長くする。即ち、振動間隔TVの長さを、ヒットイベントの種類に応じて変化させる。或いは、同じ武器を使用する同じ種類のイベントにおいて、例えば敵の攻撃速度のパラメータが高くなることで、当該武器による攻撃のヒット速度が速くなる場合には、振動間隔TVを短くする。また敵の攻撃速度のパラメータが低くなることで、当該武器による攻撃のヒット速度が遅くなる場合には、振動間隔TVを長くする。即ち、振動間隔TVの長さを、ヒットイベントの内容に応じて変化させる。
以上のようにすることで、ヒットイベントの種類や内容に応じた長さの振動間隔で、振動部が振動するようになるため、ヒットイベントの種類や内容を反映させた振動制御を実現できるようになる。
以上のように本実施形態では、ジャケット52等の装着体に対して複数の振動部が設けられ、ゲーム処理に基づく画像が表示部に表示されると共に、ゲーム状況に応じて、装着体の複数の振動部の振動制御が行われる。このようにすれば、表示部に表示されるゲーム画像に連動させた振動部の振動制御が可能になり、ゲーム処理の結果に基づく表示画像を生成しながら、ユーザがプレイするゲームの状況を反映させた装着体の振動部の振動制御を実現できる。
特に表示部としてHMDを用いる場合には、ユーザの視界はHMDにより覆われるため、装着体の複数の振動部を用いた振動制御は、ユーザの仮想現実感の向上のために有効である。例えばHMDにより視界が覆われることで、ユーザは、装着体での複数の振動部の振動を、あたかも本物の弾等が自身に対してヒットしたかのように感じるようになり、ゲームの仮想現実感を大幅に向上できる。例えば図17(A)〜図19(B)に示すように、ヒット方向やヒット位置等のヒット情報を反映させた振動制御を行えば、そのヒット方向やヒット位置等で弾等が実際にヒットしたかのような仮想現実感をユーザに与えることができる。また図20(A)〜図20(C)に示すように振動間隔による振動の時間差を設けることで、ヒットした弾等が自身の身体を貫通したかのように感じる仮想現実感を実現できる。
なお本実施形態でのヒットイベントとしては、図21(A)に示すような弾SH等の攻撃物がユーザ移動体MVにヒットするイベントが考えられるが、図21(B)に示すように敵移動体OBEの剣SWE等の武器がユーザ移動体にヒットするイベントであってもよい。このようにすれば図7、図8に示すような剣ゲームにおいて、ユーザが敵を斬ったという感触については、剣型コントローラ10の反動等の発生機構30により実現しながら、敵から斬られたことによる衝撃の感触については、ジャケット52等の装着体の振動部の振動制御により実現できるようになる。
またヒットイベントにおいてユーザ移動体MVにヒットするオブジェクトは、図21(A)、図21(B)のような弾SH等の攻撃物や剣SWE等の武器には限定されない。例えば図21(C)では、岩山等が崩れたことによる岩RKのオブジェクトがユーザ移動体MVにヒットしており、このような岩RKのヒットの際の衝撃の感覚についても、装着体の振動部の振動制御により実現できる。即ち本実施形態の手法は、弾や武器を用いた対戦ゲームのみならず、岩などの物体がぶつかって来るような自然体験のシミュレーションゲーム等にも適用できる。
また本実施形態の手法は、他のオブジェクトがヒットするヒットイベント以外の振動イベントにも適用可能である。例えば図21(D)では、ユーザ移動体MVの近くにおいて爆発EXPが発生しており、この爆発EXPによる振動イベントが発生した場合に、ユーザの装着体の振動部を振動させる振動制御を行ってもよい。このようにすれば、爆発EXPによる爆風等をユーザに体感させることができ、本当に爆発が起きたかのような仮想現実感をユーザに与えることが可能になる。
また本実施形態では、振動部の振動制御に応じた演出処理を行ってもよい。例えば振動部の振動制御に連動して、ユーザに出力される効果音の演出処理を行ったり、ゲーム画像での演出画像の生成処理を行う。例えば図21(A)、図21(B)で弾SHや剣SWEがヒットした場合に、そのヒットに連動した効果音を出力したり、エフェクト画像を生成する。また図21(C)のように岩RKがヒットするイベントでは、岩が崩れる際の効果音やエフェクト画像を生成する。また図21(D)に示すように爆発EXPの振動イベントが発生した場合には、爆発EXPに対応する効果音やエフェクト画像を生成する。そして例えば振動させる振動部の個数や範囲、或いは振動のタイミングに合わせて、効果音を出力したり、演出画像を表示する。このようにすることで、振動部の振動制御に連動した効果音の出力や演出画像の表示が可能になり、ユーザの仮想現実感を更に高めることが可能になる。
また以上ではHMD等の表示部にゲーム画像を表示するタイプのシミュレーションシステムに本実施形態の手法を適用した場合について主に説明したが、本実施形態はこれに限定されない。例えば図22では、実空間においてユーザUS1は、複数の振動部が設けられたジャケット52−1(装着体)を着用し、その手に銃53−1を所持している。またユーザUS2は、複数の振動部が設けられたジャケット52−2を着用し、その手に銃53−2を所持している。そしてユーザUS1、US2は、実空間のゲームフィールドにおいて銃53−1、53−2を用いたサバイバルゲームなどのガンゲームをプレイする。銃53−1、53−2は例えば電動ガン(エアソフトガン)であり、BB弾などの弾を発射する。但し銃53−1、53−2は赤外線などの光線による弾を発射するものであってもよい。図22のシミュレーションシステム(ゲームシステム)では、例えば各ユーザの得点の演算処理や、或いは弾が相手のユーザにヒットしたか否かなどを判定するヒット判定処理がゲーム処理として行われる。そして、弾などの被ヒット物が相手のユーザにヒットすると、その相手のユーザのジャケットの振動部が振動する。この場合にヒットイベント(振動イベント)の種類又は内容に応じて、振動させる振動部の個数又は振動範囲が変化する。また被ヒット物がヒットするイベントが発生した際に、複数の振動部の中から振動させる振動部がランダムに選択される。またヒット演算処理により求められたヒット方向やヒット位置などのヒット情報に応じて、複数の振動部の中から振動させる振動部が選択される。なお図22では実空間でのガンゲームに本実施形態の振動制御手法を適用した場合について示しているが、例えばアトラクションゲームなどでの図21(D)に示すような爆発イベントの発生の際の振動部の振動制御に対して、本実施形態の手法を適用してもよい。
4.詳細な処理
次に本実施形態の詳細な処理例について図23〜図26のフローチャートを用いて説明する。
図23はヒットイベントの種類又は内容に応じた振動制御の処理例を示すフローチャートである。まずユーザ又はユーザ移動体に弾等の被ヒット物がヒットしたか否かを判定する(ステップS1)。例えば図22では実空間でのユーザと弾とのヒット判定処理が行われる。また図5(A)〜図6等では仮想空間でのユーザ移動体と弾等のオブジェクトとのヒット判定処理が行われる。このヒット判定処理は、例えばユーザ移動体のヒットボリュームと弾等のオブジェクト又は軌道との交差判定処理などにより実現できる。
ユーザ又はユーザ移動体に被ヒット物がヒットするヒットイベントが発生した場合には、発生したヒットイベントの種類又は内容を判断する(ステップS2)。例えばヒットイベントでヒットした被ヒット物の種類によりヒットイベントの種類を判断したり、ヒットの強さパラメータや攻撃力パラメータや速さパラメータなどによりヒットイベントの内容を判断する。そして、ヒットイベントの種類又は内容についての判断結果に基づいて、振動させる振動部の個数又は振動範囲を設定する(ステップS3)。そして、設定された個数又は振動範囲の振動部を振動させる(ステップS4)。これにより図13(A)〜図14(C)に示すようなヒットイベントの種類や内容に応じた振動制御を実現できるようになる。
図24はヒットイベントでの時間経過に応じた振動制御の処理例を示すフローチャートである。まずユーザ又はユーザ移動体に弾等の被ヒット物がヒットしたか否かを判定する(ステップS11)。そして被ヒット物がヒットしてヒットイベントが発生した場合、複数の振動部のうちの第1の振動部を振動させる(ステップS12)。例えば図15(A)のように振動部VF5を振動させる。次に所与の時間が経過したか否かを判断し(ステップS13)、所与の時間が経過した場合には、第1の振動部の周囲の第2の振動部を振動させる(ステップS14)。例えば図15(B)のように振動部VF5の周囲の振動部VF4、VF6を振動させる。更に所与の時間が経過したら、振動部VF2、VF8を振動させる。このようにすれば、時間経過に応じて、振動部の振動個数が増えて行ったり、振動範囲が広がって行くような振動制御を実現できるようになる。
図25は仮想空間においてユーザ移動体が移動するシミュレーションシステムにおける全体的な処理例を示すフローチャートである。まずユーザの位置情報、方向情報及び姿勢情報の少なくとも1つを含むユーザ情報を取得する(ステップS21)。例えばHMDの位置情報、方向情報を取得することで、ユーザの位置情報、方向情報等を取得できる。そして、ユーザに対応するユーザ移動体の移動処理を行う(ステップS22)。例えば、取得された実空間でのユーザの位置情報や方向情報に基づいて、ユーザ移動体を仮想空間で移動させる処理を行う。またユーザの姿勢情報が取得される場合には、取得された姿勢情報に基づいて、ユーザ移動体を動作させるモーション処理を行う。
次に、ヒット演算処理等のゲーム処理を実行する(ステップS23)。例えば他のオブジェクトがユーザ移動体にヒットしたか否かを判定するヒット演算処理や、ゲームを進行させるゲーム進行処理などを実行する。そして装着体の振動部の振動制御処理を行う(ステップS24)。例えばヒット演算処理等の結果に基づいて、ゲーム状況に応じた振動部の振動制御処理を行う。そしてゲーム処理の結果に基づいてHMDの表示画像を生成して、HMDに表示する(ステップS25)。
図26はヒット情報や振動部のランダム選択によるに振動制御の処理例を示すフローチャートである。まずユーザ移動体に弾のオブジェクトがヒットしたか否かを判定する(ステップS31)。そして弾のオブジェクトがユーザ移動体にヒットしてヒットイベントが発生した場合には、ヒット方向、ヒット位置、及びヒット速度の少なくとも1つを含むヒット情報を取得する(ステップS32)。例えばオブジェクトがユーザ移動体にヒットした際の弾のオブジェクトの移動方向、移動位置、移動速度を、各々、ヒット方向、ヒット位置、ヒット速度として取得できる。次にヒット情報に応じて、複数の振動部の中から振動させる振動部の候補を決定する(ステップS33)。そして、決定された候補の中からランダムに選択された振動部を振動させる(ステップS34)。例えばヒット情報に基づいて、ユーザ移動体の前面側に弾のオブジェクトがヒットしたと判定された場合には、候補となる前面側の振動部の中からランダムに選択された振動部を振動させる。一方、ヒット情報に基づいて、ユーザ移動体の後面側に弾のオブジェクトがヒットしたと判定された場合には、候補となる後面側の振動部の中からランダムに選択された振動部を振動させる。或いは、前面側や後面側において、ヒット位置を含む所与の範囲内の振動部を候補の振動部として決定し、これらの候補の振動部の中から振動させる振動部をランダムに選択してもよい。そして同様にして、次に、ユーザ移動体に弾のオブジェクトがヒットすることでヒットイベントが発生した場合には、ヒット情報を取得し、ヒット情報に基づき決定された候補の中からランダムに選択された振動部を振動させる(ステップS31〜S34)。このようにすることで、ヒットイベントが発生した際に、複数の振動部の中から振動させる振動部をランダムに選択する振動制御を実現できるようになる。
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(装着体、振動イベント、被ヒット物等)と共に記載された用語(ジャケット、ヒットイベント、オブジェクト等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またゲーム処理、振動制御処理、ヒット演算処理、ユーザ情報の取得処理、仮想空間の設定処理、移動体の移動処理、表示処理等も、本実施形態で説明したものに限定されず、これらと均等な手法・処理・構成も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲーム装置、家庭用ゲーム装置、又は多数のユーザが参加する大型アトラクションシステム等の種々のシミュレーションシステムに適用できる。