以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.シミュレーションシステム
図1は、本実施形態のシミュレーションシステム(シミュレータ、ゲームシステム、画像生成システム)の構成例を示すブロック図である。本実施形態のシミュレーションシステムは例えばバーチャルリアリティ(VR)をシミュレートするシステムであり、ゲームコンテンツを提供するゲームシステム、スポーツ競技シミュレータや運転シミュレータなどのリアルタイムシミュレーションシステム、SNSのサービスを提供するシステム、映像等のコンテンツを提供するコンテンツ提供システム、或いは遠隔作業を実現するオペレーティングシステムなどの種々のシステムに適用可能である。なお、本実施形態のシミュレーションシステムは図1の構成に限定されず、その構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
操作部160は、ユーザ(プレーヤ)が種々の操作情報(入力情報)を入力するためのものである。操作部160は、例えば操作ボタン、方向指示キー、ジョイスティック、ハンドル、ペダル、レバー又は音声入力装置等の種々の操作デバイスにより実現できる。
操作部160はコントローラ10(ユーザインターフェース)を含む。コントローラ10の詳細については後述する。
記憶部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、制御部117、表示処理部120、音処理部130を含む。上述したように、これらの各部により実行される本実施形態の各処理は、プロセッサ(或いはプロセッサ及びメモリ)により実現できる。なお、これらの構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
入力処理部102は、操作情報やトラッキング情報を受け付ける処理や、記憶部170から情報を読み出す処理や、通信部196を介して情報を受信する処理を、入力処理として行う。例えば入力処理部102は、操作部160を用いてユーザが入力した操作情報やHMD200のセンサ部210等により検出されたトラッキング情報を取得する処理や、読み出し命令で指定された情報を、記憶部170から読み出す処理や、外部装置(サーバ等)からネットワークを介して情報を受信する処理を、入力処理として行う。ここで受信処理は、通信部196に情報の受信を指示したり、通信部196が受信した情報を取得して記憶部170に書き込む処理などである。
演算処理部110は、各種の演算処理を行う。例えば情報取得処理、仮想空間設定処理、移動体処理、仮想カメラ制御処理、ゲーム処理(シミュレーション処理)、表示処理、或いは音処理などの演算処理を行う。
情報取得部111(情報取得処理のプログラムモジュール)は種々の情報の取得処理を行う。例えば情報取得部111は、HMD200を装着するユーザやコントローラ10の位置情報などを取得する。情報取得部111は、ユーザやコントローラ10の姿勢情報(方向情報)や動き情報などを取得してもよい。
仮想空間設定部112(仮想空間設定処理のプログラムモジュール)は、オブジェクトが配置される仮想空間(オブジェクト空間)の設定処理を行う。例えば、移動体(人、ロボット、車、電車、飛行機、船、モンスター又は動物等)、マップ(地形)、建物、観客席、コース(道路)、樹木、壁、水面などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)を仮想空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。具体的には、記憶部170のオブジェクト情報記憶部172には、仮想空間でのオブジェクト(パーツオブジェクト)の位置、回転角度、移動速度、移動方向等の情報であるオブジェクト情報がオブジェクト番号に対応づけて記憶される。仮想空間設定部112は、例えば各フレーム毎にこのオブジェクト情報を更新する処理などを行う。
移動体処理部113(移動体処理のプログラムモジュール)は、仮想空間内で移動する移動体についての種々の処理を行う。例えば仮想空間(オブジェクト空間、ゲーム空間)において移動体を移動させる処理や、移動体を動作させる処理を行う。例えば移動体処理部113は、操作部160によりユーザが入力した操作情報や、取得されたトラッキング情報や、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、移動体(モデルオブジェクト)を仮想空間内で移動させたり、移動体を動作(モーション、アニメーション)させる制御処理を行う。具体的には、移動体の移動情報(位置、回転角度、速度、或いは加速度)や動作情報(パーツオブジェクトの位置、或いは回転角度)を、1フレーム(例えば1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動体の移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。移動体は、例えば実空間のユーザ(プレーヤ)に対応するユーザ移動体である。ユーザ移動体は、仮想空間の仮想ユーザ(仮想プレーヤ、アバター)や、或いは当該仮想ユーザが搭乗(操作)する搭乗移動体(操作移動体)などである。
仮想カメラ制御部114(仮想カメラ制御処理のプログラムモジュール)は、仮想カメラの制御を行う。例えば、操作部160により入力されたユーザの操作情報やトラッキング情報などに基づいて、仮想カメラを制御する処理を行う。
例えば仮想カメラ制御部114は、ユーザの一人称視点又は三人称視点として設定される仮想カメラの制御を行う。例えば仮想空間において移動するユーザ移動体の視点(一人称視点)に対応する位置に、仮想カメラを設定して、仮想カメラの視点位置や視線方向を設定することで、仮想カメラの位置(位置座標)や姿勢(回転軸回りでの回転角度)を制御する。或いは、ユーザ移動体に追従する視点(三人称視点)の位置に、仮想カメラを設定して、仮想カメラの視点位置や視線方向を設定することで、仮想カメラの位置や姿勢を制御する。
例えば仮想カメラ制御部114は、視点トラッキングにより取得されたユーザの視点情報のトラッキング情報に基づいて、ユーザの視点変化に追従するように仮想カメラを制御する。例えば本実施形態では、ユーザの視点位置、視線方向の少なくとも1つである視点情報のトラッキング情報(視点トラッキング情報)が取得される。このトラッキング情報は、例えばHMD200のトラッキング処理を行うことで取得できる。そして仮想カメラ制御部114は、取得されたトラッキング情報(ユーザの視点位置及び視線方向の少なくとも一方の情報)に基づいて仮想カメラの視点位置、視線方向を変化させる。例えば、仮想カメラ制御部114は、実空間でのユーザの視点位置、視線方向の変化に応じて、仮想空間での仮想カメラの視点位置、視線方向(位置、姿勢)が変化するように、仮想カメラを設定する。このようにすることで、ユーザの視点情報のトラッキング情報に基づいて、ユーザの視点変化に追従するように仮想カメラを制御できる。
ゲーム処理部115(ゲーム処理のプログラムモジュール)は、ユーザがゲームをプレイするための種々のゲーム処理を行う。別の言い方をすれば、ゲーム処理部115(シミュレーション処理部)は、ユーザが仮想現実(バーチャルリアリティ)を体験するための種々のシミュレーション処理を実行する。ゲーム処理は、例えば、ゲーム開始条件が満たされた場合にゲームを開始する処理、開始したゲームを進行させる処理、ゲーム終了条件が満たされた場合にゲームを終了する処理、或いはゲーム成績を演算する処理などである。
ヒット判定部116(ヒット判定処理のプログラムモジュール)はヒット判定処理を行う。制御部117(制御処理のプログラムモジュール)はコントローラ10についての各種の制御処理を行う。ヒット判定部116、制御部117の詳細については後述する。
表示処理部120(表示処理のプログラムモジュール)は、ゲーム画像(シミュレーション画像)の表示処理を行う。例えば処理部100で行われる種々の処理(ゲーム処理、シミュレーション処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部220に表示する。具体的には、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)を、描画バッファ178(フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ)に描画する。これにより、仮想空間において仮想カメラ(所与の視点。左眼用、右眼用の第1、第2の視点)から見える画像が生成される。なお、表示処理部120で行われる描画処理は、頂点シェーダ処理やピクセルシェーダ処理等により実現することができる。
音処理部130(音処理のプログラムモジュール)は、処理部100で行われる種々の処理の結果に基づいて音処理を行う。具体的には、楽曲(音楽、BGM)、効果音、又は音声などのゲーム音を生成し、ゲーム音を音出力部192に出力させる。なお音処理部130の音処理の一部(例えば3次元音響処理)を、HMD200の処理部240により実現してもよい。
出力処理部140は各種の情報の出力処理を行う。例えば出力処理部140は、記憶部170に情報を書き込む処理や、通信部196を介して情報を送信する処理を、出力処理として行う。例えば出力処理部140は、書き込み命令で指定された情報を、記憶部170に書き込む処理や、外部の装置(サーバ等)に対してネットワークを介して情報を送信する処理を行う。送信処理は、通信部196に情報の送信を指示したり、送信する情報を通信部196に指示する処理などである。
図1に示すように本実施形態のシミュレーションシステムは、実空間でのユーザの位置情報を取得する情報取得部111を含む。例えば情報取得部111は、ユーザの視点トラッキングなどによりユーザの位置情報を取得する。そして移動体処理部113は、取得された位置情報に基づいて、ユーザ移動体(ユーザキャラクタ、アバタ)を移動させる処理を行い、表示処理部120は、ユーザが装着するHMD200の表示画像を生成する。例えば実空間でのユーザの移動に追従するように、仮想空間でのユーザ移動体を移動させる。そして、そのユーザ移動体に対応する仮想カメラから見える画像を、HMD200の表示画像として生成する。
例えば情報取得部111は、視界を覆うようにHMD200を装着するユーザの位置情報を取得する。例えば情報取得部111は、HMD200のトラッキング情報などに基づいて、実空間でのユーザの位置情報を取得する。例えばHMD200の位置情報を、当該HMD200を装着するユーザの位置情報として取得する。具体的には、ユーザが実空間(現実世界)のプレイフィールド(シミュレーションフィールド、プレイエリア)に位置する場合に、そのプレイフィールドでの位置情報を取得する。なお、HMD200のトラッキング処理ではなくて、ユーザやユーザの頭部などの部位を直接にトラッキングする手法により、ユーザの位置情報を取得してもよい。
また仮想カメラ制御部114は、ユーザの視点情報のトラッキング情報に基づいて、ユーザの視点変化に追従するように仮想カメラを制御する。
例えば入力処理部102(入力受け付け部)は、HMD200を装着するユーザの視点情報のトラッキング情報を取得する。例えばユーザの視点位置、視線方向の少なくとも1つである視点情報のトラッキング情報(視点トラッキング情報)を取得する。このトラッキング情報は、例えばHMD200のトラッキング処理を行うことで取得できる。なおトラッキング処理によりユーザの視点位置、視線方向を直接に取得するようにしてもよい。一例としては、トラッキング情報は、ユーザの初期視点位置からの視点位置の変化情報(視点位置の座標の変化値)、及び、ユーザの初期視線方向からの視線方向の変化情報(視線方向の回転軸回りでの回転角度の変化値)の少なくとも一方を含むことができる。このようなトラッキング情報が含む視点情報の変化情報に基づいて、ユーザの視点位置や視線方向(ユーザの頭部の位置、姿勢の情報)を特定できる。
また本実施形態では、ユーザがプレイするゲームのゲーム処理として、仮想現実のシミュレーション処理を行う。仮想現実のシミュレーション処理は、実空間での事象を仮想空間で模擬するためのシミュレーション処理であり、当該事象をユーザに仮想体験させるための処理である。例えば実空間のユーザに対応する仮想ユーザやその搭乗移動体などの移動体を、仮想空間で移動させたり、移動に伴う環境や周囲の変化をユーザに体感させるための処理を行う。
なお図1の本実施形態のシミュレーションシステムの処理は、家庭用ゲーム装置や業務用ゲーム装置などの処理装置、施設に設置されるPC等の処理装置、ユーザが背中等に装着する処理装置(バックパックPC)、或いはこれらの処理装置の分散処理などにより実現できる。或いは、本実施形態のシミュレーションシステムの処理を、サーバシステムと端末装置により実現してもよい。例えばサーバシステムと端末装置の分散処理などにより実現してもよい。
2.トラッキング処理
次にトラッキング処理の例について説明する。図2(A)に本実施形態のシミュレーションシステムに用いられるHMD200の一例を示す。図2(A)に示すようにHMD200には複数の受光素子201、202、203(フォトダイオード)が設けられている。受光素子201、202はHMD200の前面側に設けられ、受光素子203はHMD200の右側面に設けられている。またHMDの左側面、上面等にも不図示の受光素子が設けられている。
またユーザUSは、一方の手(例えば右手)でコントローラ10を持ち、他方の手(例えば左手)でコントローラ80を持っている。コントローラ10は例えば剣型のコントローラである。コントローラ80は後述する盾に対応するコントローラである。コントローラ10、80には、HMD200と同様に受光素子が設けられており、この受光素子を用いることで、HMD200の場合と同様にコントローラ10、80のトラッキング処理を実現できる。例えばコントローラ10、80の位置情報を検出できる。またコントローラ10、80に複数の受光素子を設けることで、コントローラ10、80の姿勢情報(方向情報)を検出できる。
図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の頭の位置や向く方向(視点位置、視線方向)を検出できるようになる。例えばユーザUSの位置情報や姿勢情報(方向情報)を検出できるようになる。またコントローラ10、80に受光素子を設けることで、コントローラ10、80の位置情報や姿勢情報(方向情報)を検出できるようになる。
図3(A)にHMD200の他の例を示す。図3(A)では、HMD200に対して複数の発光素子231〜236が設けられている。これらの発光素子231〜236は例えばLEDなどにより実現される。発光素子231〜234は、HMD200の前面側に設けられ、発光素子235や不図示の発光素子236は、背面側に設けられる。これらの発光素子231〜236は、例えば可視光の帯域の光を出射(発光)する。具体的には発光素子231〜236は、互いに異なる色の光を出射する。
そして図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に表示することが可能になる。
なお、発光素子231〜236として、可視光ではなく赤外線のLEDを用いてもよい。また、例えばデプスカメラ等を用いるなどの他の手法で、ユーザの頭部の位置や動き等を検出するようにしてもよい。
またコントローラ10、80に発光素子を設けることで、HMD200の場合と同様にコントローラ10、80のトラッキング処理を実現できる。例えばコントローラ10、80の位置情報を検出できる。またコントローラ10、80に複数の発光素子を設けることで、コントローラ10、80の姿勢情報(方向情報)を検出できる。
また、ユーザUSの位置情報、姿勢情報(視点位置、視線方向)を検出したり、コントローラ10、80の位置情報、姿勢情報を検出するトラッキング処理の手法は、図2(A)〜図3(B)で説明した手法には限定されない。例えばHMD200やコントローラ10、80に設けられたモーションセンサ等を用いて、HMD200やコントローラ10、80のトラッキング処理を行って、位置情報や姿勢情報を検出してもよい。即ち、図2(B)のベースステーション280、284、図3(B)の撮像部150などの外部装置を設けることなく、トラッキング処理を実現する。或いは、公知のアイトラッキング、フェイストラッキング又はヘッドトラッキングなどの種々の視点トラッキング手法を用いてもよい。
3.コントローラ
次に本実施形態のコントローラ10の構成例について図4〜図7を用いて説明する。図4はコントローラ10の左側面図、図5は右側面図である。図6はコントローラ10を上方から見た斜視図、図7は下方から見た斜視図である。
なおコントローラ10の形状、構造は図4〜図7には限定されない。例えば図4〜図7は剣を模した剣型のコントローラの例であるが、コントローラ10としては、剣以外の武器を模した武器型のコントローラや、スポーツに使用される器具を模したスポーツ器具型のコントローラや、或いは楽器や楽器用具などの楽器具を模した楽器具型のコントローラなどを想定できる。剣以外の武器型のコントローラとしては、斧、槍、杖又は鞭等を模したコントローラを想定できる。スポーツ器具型のコントローラとしては、野球のバットを模したバット型のコントローラ、テニスや卓球のラケットを模したラケット型のコントローラ、ゴルフのクラブを模したクラブ型のコントローラなどを想定できる。楽器具型のコントローラとしては、例えばドラムや太鼓のスティックを模したスティック型のコントローラなどを想定できる。またコントローラ10は、武器型やスポーツ器具型や楽器具型以外のタイプのコントローラであってもよい。
図4〜図7に示すように、本実施形態のコントローラ10(ユーザインターフェース)は、先端部と後端部の間の棒形状部分に、ユーザが把持する把持部20(持ち手)を有する。例えばコントローラ10は、少なくとも把持部20の部分が棒形状となっており、ユーザが例えば一方の手で把持できるようになっている。例えばコントローラ10の長手方向をDR1とした場合に、把持部20は、方向DR1が長手方向となる棒形状となっている。方向DR1は例えばコントローラ10の先端部と後端部を結ぶ方向でもある。なお図4〜図7では、方向DR1に直交する方向をDR2とし、方向DR1及び方向DR2に直交する方向をDR3としている。
コントローラ10は、少なくとも把持部20において棒形状になっていればよく、他の部分は必ずしも棒形状になっていなくてもよい。例えばテニス等のゲームに用いられるラケット型のコントローラの場合には、ユーザが把持するグリップの部分は棒形状である一方で、ラケットフェースなどのフレーム部分は棒形状になっていなくてもよい。ゴルフのゲームに用いられるクラブ型のコントローラの場合には、グリップの部分が棒形状である一方で、ヘッドの部分は棒形状になっていなくてもよい。同様に、斧を模した武器型のコントローラの場合には、グリップ部分は棒形状である一方で、斧の刃の部分は棒形状になっていなくてもよい。また野球のバッドのように棒形状の把持部20は、グリップの太さが微妙に変化するものであってもよい。このようにコントローラ10は、少なくとも把持部20において棒形状であればよい。また棒形状の断面は円や楕円の形状には限定されず、三角形や四角形などの多角形の形状であってもよいし、バッドのように断面形状の面積が変化するようなものであってもよい。
そして本実施形態のコントローラ10は、先端部と後端部の一方の端部と把持部20との間に、反動及び振動の少なくとも一方を発生する発生機構が設けられる。例えば図4〜図7のコントローラ10では、先端部と把持部20との間に、例えば反動等を発生する発生機構30が設けられている。またコントローラ10の後端部と把持部20との間に、例えば振動等を発生する発生機構60(第2の発生機構)が設けられている。なおコントローラ10の先端部と把持部20との間に、例えば振動を発生する発生機構を設けたり、反動及び振動の両方を発生する発生機構を設けてもよい。或いは、コントローラ10の後端部と把持部20との間に、例えば反動を発生する発生機構を設けたり、反動及び振動の両方を発生する発生機構を設けてもよい。或いは、反動及び振動の少なくとも一方を発生する発生機構を、例えば把持部20の場所に設けてもよい。
具体的には発生機構30は、錘32と受け部34を含む。そして発生機構30は、錘32を受け部34に衝突させることで、反動(反力)を発生する。またこの反動の発生に伴い、振動も発生させることができる。反動は、例えば他に力や作用を及ぼしたときにその反作用で押し返されることなどである。例えば後述の図8〜図14で説明するように本実施形態では、ユーザが実空間において剣型のコントローラ10を持って、剣で振る動作を行う。そして仮想空間において、その剣に対応する剣のオブジェクトが敵キャラクタ等の他のオブジェクトにヒットすると、そのヒットについての仮想的な反動が、発生機構30により実現される。例えば剣がヒットした方向とは反対方向の反力が働いたかのようにユーザが感じることができる反動を、発生機構30が発生する。具体的には図4のA1に示すように錘32がスイング移動して、受け部34に衝突する。これによりA2に示すような反力があたかも生じたかのようにユーザは感じることができ、剣のヒットによる仮想的な反動の発生を実現できる。
例えば発生機構30の錘32は、アーム40に取り付けられている。アーム40は図7に示すようにガイド部41に設けられた開口に沿ってスイング移動する。例えばコントローラ10は基部12を有し、基部12には板状部材47が取り付けられている。アーム40の一端には錘32が取り付けられ、アーム40の他端は、取付具42(軸部材)により板状部材47に回動自在に取り付けられている。また基部12にはソレノイド50(広義には動力源、アクチュエータ)が取り付けられており、ソレノイド50は軸部材52を方向DR1に沿って移動する。アーム40の他端側は、この軸部材52のヘッド部54に対して取付具44(軸部材)により取り付けられている。また、一端が基部12に取り付けられた弾性部材46(バネ、ワイヤ等)の他端も、軸部材52のヘッド部54に対して取付具44により取り付けられている。そしてソレノイド50により軸部材52が図4のA3に示すように方向DR1に沿って移動すると、アーム40が取付具42の位置を回転中心としてA4に示すように回転する。これにより錘32がA1に示すようにスイング移動して、受け部34に衝突し、A2に示すような仮想的な反動が発生するようになる。衝突後に例えば弾性部材46の弾性力により錘32やアーム40は元の位置に戻る。
またコントローラ10の後端部と把持部20との間に設けられ、振動を発生する発生機構60は、トランスデューサー62(振動デバイス)を有する。具体的には基部12に対して板状部材64が取り付けられ、この板状部材64に対してトランスデューサー62が取り付けられている。トランスデューサー62は、音信号を変換するものであり、ハイパワーのサブウーハーに相当するものである。例えば図1の処理部100(制御部117)が音ファイルの再生処理を行うと、それによる音信号がトランスデューサー62に入力される。そして例えば音信号の低域成分に基づいて振動が発生する。なおトランスデューサー62の代わりの振動デバイスとして、振動モータを設けてもよい。振動モータは、例えば、偏芯した錘を回転させることで振動を発生する。具体的には駆動軸(ローター軸)の両端に偏心した錘を取り付けてモータ自体が揺れるようにする。
またコントローラ10にはトラッキング処理用のコントローラ70が取り付けられている。このコントローラ70は図2(A)、図3(A)においてユーザUSが手に所持しているコントローラ80と同じタイプのコントローラである。図2(A)、図2(A)のトラッキング手法の場合には、コントローラ70に対して受光素子が設けられており、この受光素子を用いたトラッキング処理により、コントローラ10(70)の位置情報や姿勢情報が検出される。図3(A)、図3(B)のトラッキング手法の場合には、コントローラ70に対して発光素子が設けられており、この発光素子を用いたトラッキング処理により、コントローラ10(70)の位置情報や姿勢情報が検出される。
4.本実施形態の手法
次に本実施形態の手法について説明する。なお、以下では、剣を用いた対戦ゲーム(以下、剣ゲーム)に本実施形態の手法を適用した場合について主に説明する。即ち、図4〜図7で説明した剣型のコントローラ10を用いた剣ゲームへの適用例について説明する。但し本実施形態の手法が適用されるゲームはこのような剣ゲームには限定されない。例えば本実施形態の手法は、剣ゲーム以外の対戦ゲームなどの種々のゲーム(仮想体験ゲーム、RPG、アクションゲーム、競争ゲーム、スポーツゲーム、ホラー体験ゲーム、電車や飛行機等の乗り物のシミュレーションゲーム、パズルゲーム、コミュニケーションゲーム、或いは音楽ゲーム等)に適用でき、ゲーム以外にも適用可能である。
4.1 ゲームの説明
まず図8〜図14を用いて本実施形態の手法により実現される剣ゲームについて説明する。図8に示すようにユーザUSは、視界を覆うようにHMD200を装着する。そして例えば右手で剣型のコントローラ10を持ち、左手でコントローラ80を持つ。具体的にはユーザUSは、右手で把持部20(持ち手)を持つことで、剣のようにコントローラ10を持つことになる。図4で説明した発生機構30の錘32が動く方向(A1)の反対方向が、剣型のコントローラ10の剣の刃が向く方向になる。そしてコントローラ10、80の位置情報や姿勢情報は、図2(A)〜図3(B)等で説明したトラッキング処理などにより取得される。
図9はHMD200の表示されるゲーム画像の例である。ゲーム画像には敵キャラクタOBEや、敵キャラクタOBEが持つ剣SWE、盾SLEや、背景などのオブジェクトが表示されている。またユーザUSに対応するユーザキャラクタ(アバタ)の右の手HR、左の手HLや、右の手HRが持つ剣SWや、左の手HLが持つ盾SLなどのオブジェクトも表示されている。
例えば図8の実空間においてユーザUSが右の手で持っているコントローラ10を動かすと、その動きに連動して、図9の仮想空間での右の手HRや剣SWも動くようになる。また図8の実空間においてユーザUSが左の手で持っているコントローラ80を動かすと、その動きに連動して、図9の仮想空間での左の手HLや盾SLも動くようになる。即ち、実空間のコントローラ10は仮想空間の剣SWに対応し、実空間のコントローラ80は仮想空間の盾SLに対応することになる。
図9は一人称視点のゲーム画像であり、実空間のユーザUSに対応する仮想空間のユーザキャラクタ(広義にはユーザ移動体)の視点での画像が表示されている。なお実際には、HMD200によりユーザUSに対して、視界の全周囲に亘って広がるVR空間の画像が表示される。
図10ではユーザUSは、図9の敵キャラクタOBEを剣SWで斬る操作として、剣型のコントローラ10を実際の剣のように上から下に振り下ろしている。これにより図11に示すように、仮想空間での剣SWが敵キャラクタOBEの盾SLEにヒットして、例えば火花等のエフェクトが表示される。
このように剣SWが盾SLE等にヒットしたと判定される場合には、図10のB1に示すように発生機構30の錘32がスイング移動して、受け部34に衝突する。例えば図4のソレノイド50(動力源、アクチュエータ)が軸部材52をA3に示すように移動することで、錘32がスイング移動して受け部34に衝突する。これにより図10のB2に示すような仮想的な反動(反力)が発生し、ユーザUSは、あたかも自身の剣が敵キャラクタOBEに実際にヒットしたかのような打感や触感を体感できる。
この場合に本実施形態では、B2に示すヒットによる反動の発生に時間的に遅れて、B3に示すように発生機構60による振動が発生する。即ちトランスデューサー62による振動が発生する。これによりユーザUSは、剣のヒット時の大きな反動に続いて、微少な振動を手に感じることができ、仮想現実感を格段に向上できる。
図12ではユーザUSは更にコントローラ10を振り回して、剣による攻撃を続けており、図13に示すように仮想空間での剣SWが敵キャラクタOBEの胴体にヒットして、火花等のエフェクトが発生している。この場合にも図12のC1に示すように、発生機構30の錘32がスイング移動して受け部34に衝突することで、C2に示すような仮想的な反動(反力)が発生する。そして、この反動の発生に時間的に遅れて、C3に示すように発生機構60のトランスデューサー62による振動が発生する。そして、このような敵キャラクタOBEへの攻撃が何度か行われて、敵キャラクタOBEのヒットポイントが0になることで、図14に示すように敵キャラクタOBEを倒すことができる。
なお、図11のように盾SLEに対して剣SWがヒットした場合と、図13のように敵キャラクタOBEに対して剣SWがヒットした場合とで、発生機構30、60による反動又は振動の発生態様を異ならせることが望ましい。即ち、ヒットしたオブジェクトの種類に応じて、発生機構30、60による反動又は振動の発生態様を異ならせる。こうすることでユーザUSの仮想現実感を更に向上できるようになる。
4.2 反動、振動の発生
以上のような剣ゲーム等での仮想現実を実現するために、本実施形態のシミュレーションシステムは、図1に示すようにコントローラ10、情報取得部111、ゲーム処理部115、表示処理部120、制御部117を含む。またシミュレーションシステムはHMD200を含むことができる。なお、これらの構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
そして図4で説明したようにコントローラ10は、先端部と後端部の間の棒形状部分に、ユーザが把持する把持部20を有する。また先端部と後端部の一方の端部と把持部20との間に、反動及び振動の少なくとも一方を発生する発生機構が設けられる。図4では反動を発生する発生機構30が設けられている。
また情報取得部111は、実空間でのコントローラ10の位置情報、姿勢情報及び動き情報の少なくとも1つを取得する。例えば図2(A)〜図3(B)で説明したトラッキング処理により、コントローラ10の位置情報、姿勢情報及び動き情報の少なくとも1つを取得する。或いはコントローラ10に設けられたモーションセンサ(加速度センサ、ジャイロセンサ等)により、コントローラ10の位置情報、姿勢情報及び動き情報の少なくとも1つを取得してもよい。或いは、外部のカメラによりコントローラ10を撮影することなどにより、コントローラ10の位置情報、姿勢情報及び動き情報の少なくとも1つを取得してもよい。コントローラ10の位置情報、姿勢情報又は動き情報を取得することで、コントローラ10に対応するオブジェクトの画像を表示できるようになる。例えば図9に示すように、コントローラ10に対応するオブジェクトである剣SWの画像を表示できるようになる。またコントローラ10の位置情報、姿勢情報又は動き情報を取得することで、コントローラ10に対応するオブジェクト(剣SW等)と他のオブジェクト(敵キャラクタOBE、盾SLE又は剣SWE等)とのヒット判定が可能になる。なお情報取得部111は、コントローラ80の位置情報、姿勢情報及び動き情報の少なくとも1つを取得する。これにより、コントローラ80に対応するオブジェクト(図9の盾SL)の画像を表示したり、コントローラ80に対応するオブジェクトと他のオブジェクト(敵キャラクタOBE、盾SLE又は剣SWE等)とのヒット判定が可能になる。
ゲーム処理部115はゲーム処理を行う。例えばゲームの開始処理、ゲームの進行処理、ゲームの終了処理、或いはゲーム成績の演算処理などのゲーム処理を行う。表示処理部120は、ゲーム処理の結果に基づいて、ユーザが視界を覆うように装着するHMD200(頭部装着型表示装置)の表示画像として、コントローラ10に対応するオブジェクト(剣SW等)の画像を含む画像を生成する。例えば図9、図11、図13、図14のようなゲーム画像を、HMD200の表示画像として生成する。例えば表示画像として、HMD200の表示部220に表示される立体視用の左眼用画像、右眼用画像を生成する。
そして制御部117は、ユーザがプレイするゲームの状況に応じて、反動及び振動の少なくとも一方を発生する発生機構30、60を制御する。例えばゲーム状況に応じて、発生機構30、60に反動又は振動を発生させたり、ゲーム状況に応じた発生態様で、発生機構30、60に反動又は振動を発生させる。ゲーム状況は、例えばユーザのゲームプレイの状況、ゲームの進行状況、ゲームの戦闘状況、ゲームの対戦状況、ゲームでのヒット判定の状況、ゲームに登場するキャラクタ(移動体)の状況、キャラクタやユーザのステータスパラメータの状況、或いはゲームの成績の状況などであり、例えばゲームのパラメータ等で表される種々の状況である。ゲーム状況は例えばゲーム処理部115でのゲーム処理により特定される。例えばゲーム処理で使用される各種のゲームパラメータ等の情報に基づいてユーザのゲーム状況が特定される。
例えば図11、図13に示すようにユーザの剣SWが敵の盾SLE、剣SWEや敵キャラクタOBEにヒットするようなゲーム状況になった場合には、発生機構30、60により反動を発生させたり、振動を発生させる。またゲーム状況に応じて、発生機構30、60での反動又は振動の発生態様を異ならせる。例えば反動又は振動の強さ、発生タイミング又は発生期間などの発生態様をゲーム状況に応じて異ならせる。例えば図11のように剣SWが敵の盾SLEにヒットするゲーム状況と、図13のように剣SWが敵キャラクタOBEにヒットするゲーム状況とで、発生機構30、60での反動又は振動の発生態様(強さ、タイミング又は期間等)を異ならせる。
例えば本実施形態ではユーザは視界を覆うようにHMD200を装着しており、実空間でのユーザの視界が遮断されている。このように実空間の状況が見えていないHMD200の装着状態だからこそ、剣で斬る際の反動や振動によって物体を切った感触を、コントローラ10での反動や振動の発生によりユーザは体感することが可能になる。
ここで、ゲーム状況に応じてコントローラ10に反動又は振動を発生させるとは、仮想空間内のオブジェクト(敵等)と、コントローラ10に対応する剣SW等のオブジェクトとの仮想空間内での位置に基づき判定されるヒット判定処理の結果に応じて、反動又は振動を発生させることなどである。この場合に図10、図12で説明したように、発生機構30は、コントローラ10(剣)の動作方向に対して反作用の方向に反動等を発生させる。例えば図10、図12では、ユーザはコントローラ10を下側方向に振り下ろしており、この場合にはB2、C2に示すようにヒット時の反作用の方向である上側に方向に反動等を発生させる。こうすることで、剣で斬る際の反動や振動によって物体を切った感触をユーザに体感させることが可能になる。
また図1の制御部117は、把持部20を回転中心としてコントローラ10を回転させるように、発生機構30を制御する。例えば図10、図12では、仮想空間で剣SWが他のオブジェクトにヒットしたことの反動として、把持部20を回転中心RCとしてコントローラ10を回転させるように、制御部117が発生機構30を制御する。例えば制御部117が図4のソレノイド50(動力源)を制御して、把持部20を回転中心RCとして、コントローラ10をB2、C2の方向に回転させるような反動(反力)を発生させる。こうすることで、あたかも剣SWが他のオブジェクトにヒットし、そのヒットの反動で逆方向に剣SWが押し返されたかのような仮想現実感をユーザに与えることが可能になる。
なお図10、図12において、コントローラ10の後端部と把持部20の間に設けられた発生機構60を用いて上記と同様の回転を生じさせる場合には、図10、図12のB4、C4に示す方向の反動(反力)を、発生機構60に発生させればよい。これにより、把持部20を回転中心RCとして、コントローラ10をB4、C4の方向に回転させることが可能になる。こうすることによっても、あたかも剣SWが他のオブジェクトにヒットし、そのヒットの反動で逆方向に剣SWが押し返されたかのような仮想現実感をユーザに与えることができる。即ち、反動等の発生機構60が、コントローラ10の把持部20よりも後端部側にある場合には、反動等の作用方向を、B4、C4のように、B2、C2とは逆の方向に設定する。そして先端部側の刃部分においてヒットの反作用方向に反動(衝撃)が生じているかのような錯覚を、ユーザに与える。
また本実施形態では、コントローラ10は剣型のコントローラであり、発生機構30は、剣型のコントローラ10の刃部分に設けられている。例えば図4において、発生機構30は、コントローラ10が模している剣の刃部分(剣の刃に対応する部分)に設けられており、把持部20よりも先端部に近い場所に設けられている。このようにすれば、仮想空間において剣SWの刃部分が敵キャラクタOBE、盾SLEなどの他のオブジェクトにヒットした場合にも、コントローラ10においても剣の刃に対応する部分において反動が発生するようになる。従って、あたかも本物の剣で物体を斬ったかのような仮想現実感をユーザに与えることが可能になる。
また図1の情報取得部111は、実空間でのユーザの位置情報、姿勢情報及び動き情報の少なくとも1つを取得する。例えば図2(A)〜図3(B)で説明したような受光素子や発光素子などを用いて、実空間でのユーザの位置情報、姿勢情報又は動き情報を取得する。或いは、コントローラ10に設けられたり、ユーザに取り付けられたモーションセンサ(加速度センサ、ジャイロセンサ)などを用いて、実空間でのユーザの位置情報、姿勢情報又は動き情報を取得してもよい。そして制御部117は、ユーザの位置情報、姿勢情報及び動き情報の少なくとも1つに基づいて、ゲーム状況を判断して、発生機構30、60を制御する。ここで、ゲーム状況に応じて反動又は振動を発生するとは、コントローラ10に対応する仮想空間での剣SWが他のオブジェクトにヒットしていなくても、ゲーム状況に応じて反動又は振動が発生するような場合も含んでいる。
例えばコントローラ10(剣インターフェース)に、センサ機能(位置検出機能や、加速度、角速度などの動き検出機能を含む)を搭載し、コントローラ10の位置情報、姿勢情報又は動き情報を検出可能にする。またモーションセンサや外部装置によるユーザのモニター処理により、ユーザの位置情報、姿勢情報又は動き情報も検出可能にする。そして検出された位置情報、姿勢情報又は動き情報と、ゲーム状況に応じて、反動又は振動を発生させる。例えば仮想空間においてユーザの剣SWと他のオブジェクトがヒットしていない場合にも、コントローラ10(剣)を振る動作に応じて、反動又は振動を発生させる。こうすることで、HMD200を用いたシミュレーションシステムにおいて、これまでになく、仮想現実感の向上に効果的なユーザインターフェースを実現できる。
また制御部117は、コントローラ10に対応するオブジェクトと他のオブジェクトとのヒット判定結果に応じて、発生機構30、60を制御する。コントローラ10に対応するオブジェクトは、例えば実空間でのコントローラ10の動きに応じて仮想空間において動くオブジェクト(表示物)などである。例えばコントローラ10の位置情報、姿勢情報又は動き情報に基づいて制御される仮想空間内のオブジェクトである。例えばコントローラ10に対応するオブジェクトは、図9の剣SW、盾SLなどのオブジェクトである。或いは、コントローラ10に対応するオブジェクトは、ユーザに対応する仮想空間のユーザキャラクタ(ユーザ移動体)やユーザキャラクタの手、足又は頭などの部位であってもよい。また他のオブジェクトは、コントローラ10に対応するオブジェクトとのヒット対象となるオブジェクトである。例えば他のオブジェクトは、図9の敵キャラクタOBE、盾SLE、剣SWEなどのオブジェクトである。或いは他のオブジェクトは、背景を構成する壁、ドア、建物又は道路等や、各種アイテムなどであってもよい。
コントローラ10に対応するオブジェクトと他のオブジェクトとのヒット判定処理は、図1のヒット判定部116が行う。例えばヒット判定部116は、コントローラ10に対応するオブジェクト又は当該オブジェクトを内包するヒットボリュームと、他のオブジェクト又は当該他のオブジェクトを内応するヒットボリュームとの間の交差判定処理などにより、ヒット判定処理を実現する。なお、ヒット判定処理はこのような交差判定処理には限定されず、公知の種々の判定処理を採用できる。
制御部117は、ヒット判定部116でのヒット判定結果に基づいて、発生機構30、60を制御して、コントローラ10において反動又は振動を発生させる。例えば図11、図13に示すようにユーザキャラクタの剣SWが敵の盾SLE、敵キャラクタOBE等にヒットしたと判定された場合に、図10のB2、B3、図12のC2、C3に示すように反動又は振動を発生させる。
HMD200を用いたシミュレーションシステムによれば、ユーザの視界の全周囲に亘って広がるVR空間が表現されるため、ユーザの仮想現実感は大幅に向上する。しかしながら、HMD200を装着しているユーザは、HMD200により視界が覆われているため、実空間の状況を視覚的に認識することができない。このような状況下で、ユーザは、HMD200により図9のような仮想空間での画像を見ながら、コントローラ10を振るなどして動かしてゲームをプレイする。このとき、図11、図13のようにユーザキャラクタの剣SWが盾SLEや敵キャラクタOBEにヒットしたのに、ユーザが手に持つコントローラ10に何ら手応えがないと、HMD200によりせっかく実現した仮想現実感が低下してしまう事態が生じる。
この点、本実施形態によれば、図11、図13のようにユーザキャラクタの剣SWが盾SLEや敵キャラクタOBEにヒットした際に、図10、図12で説明したように、コントローラ10の発生機構30、60が反動又は振動を発生させる。これによりユーザは、あたかも実際の剣で敵を斬ったかのような打感、触感などの手応えを体感できる。従って、実際に剣で戦っているような仮想体験が可能になるため、ユーザの仮想現実感を大幅に向上できる。
また制御部117は、コントローラ10に対応するオブジェクトが他のオブジェクトにヒットした後、他のオブジェクトが切断されたと判定された場合と、切断されなかったと判定された場合とで、発生機構30、60での反動又は振動の発生態様を異ならせてもよい。
例えば図13において、コントローラ10に対応するオブジェクトである剣SWが、他のオブジェクトである敵キャラクタOBEにヒットしたとする。この場合に、剣SWにより敵キャラクタOBEが切断されたか否かの判定処理を行う。例えばユーザがコントローラ10を振る速度が速かったり、振りの強さが強かった場合には、敵キャラクタOBEが切断されたと判定する。例えば剣SWが敵キャラクタOBEの鎧等を貫通して、敵キャラクタOBEの体(肉体、筋肉)の少なくとも一部が切断されたと判定する。一方、ユーザがコントローラ10を振る速度が遅かったり、振りの強さが弱かった場合には、敵キャラクタOBEが切断されなかったと判定する。例えば剣SWは敵キャラクタOBEの鎧等を貫通せず、敵キャラクタOBEの体は切断されなかったと判断する。そして、敵キャラクタOBEが切断されたと判定された場合と、切断されなかったと判定された場合とで、発生機構30、60での反動又は振動の発生態様を異ならせる。例えば切断されたと判定された場合には、切断されなかったと判定された場合に比べて、発生機構30が発生する反動を強くしたり、発生機構60が発生する振動を強くする。或いは、切断されたと判定された場合と、切断されなかったと判定された場合とで、発生機構60が発生する振動(或いは発生機構30が発生する振動)の発生態様を異ならせる。例えば切断判定時用の音声ファイルと、非切断判定時用の音声ファイルを用意する。そして切断判定時には、切断判定時用の音声ファイルの音声信号をトランスデューサー62に入力して、切断時に適した振動を発生させる。一方、非切断判定時には、非切断判定時用の音声ファイルの音声信号をトランスデューサー62に入力して、非切断時に適した振動を発生させる。例えば切断時には、敵の肉体を斬ったかのように感じることができる振動を発生する。例えば振動を強くしたり、振動期間を長くして切断の余韻が長く続くようにする。
また制御部117は、コントローラ10の種類情報、動き情報、他のオブジェクトの種類情報、動き情報の少なくとも1つに基づいて、発生機構30、60を制御する。コントローラ10の種類情報は、例えばコントローラ10により表す物についての種類情報である。剣型のコントローラ10を例にとれば、コントローラ10に対応する剣が、大きい剣なのか、小さい剣なのか、重い剣なのか、軽い剣なのか、太い剣なのか、細い剣なのかなどの情報である。或いはコントローラ10の種類情報は、剣の攻撃力などを種別するための情報であってもよい。例えば重い剣であれば、発生機構30、60により発生する反動又は振動を大きくし、軽い剣であれば、発生機構30、60により発生する反動又は振動を小さくする。また攻撃力が高い剣であれば、発生機構30、60により発生する反動又は振動を大きくし、攻撃力が低い剣であれば、発生機構30、60により発生する反動又は振動を小さくする。またコントローラ10が、剣以外の武器型のコントローラ(斧、槍、杖又は鞭等)である場合や、バット、ラケット、クラブなどのスポーツ器具型のコントローラである場合や、ドラムや太鼓のスティックを模した楽器具型のコントローラである場合も同様であり、コントローラ10の種類情報は、武器、スポーツ器具又は楽器具などについての情報(大きさ、重さ、攻撃力又は性能等)である。
またコントローラ10の動き情報は、例えばコントローラ10の動作速度、動作加速度又は動作方向についての情報である。例えばコントローラ10の動作速度が速い場合には、発生機構30、60により発生する反動又は振動を大きくし、動作速度が遅い場合には、発生機構30、60により発生する反動又は振動を小さくする。またコントローラ10の動作方向に応じて、反動又は振動の発生方向や強さを変化させる。また他のオブジェクトの種類情報は、当該オブジェクトで表される物の属性等を表す情報である。例えば他のオブジェクトの種類情報は、発生機構30、60により発生する反動又は振動の強さ、発生期間又は発生タイミングなどの発生態様を特定するための情報である。他のオブジェクトの種類情報は、例えば硬い物を表すオブジェクトなのか、或いは柔らかい物を表すオブジェクトなのかなどの情報である。一例としては、硬い物を表すオブジェクトである場合には、発生機構30、60により発生する反動又は振動を大きくしたり、発生期間を短くする。一方、柔らかい物を表すオブジェクトである場合には、発生機構30、60により発生する反動又は振動を小さくしたり、発生期間を長くする。但し本実施形態はこのような発生態様には限定されない。また他のオブジェクトの動き情報は、他のオブジェクトの動作速度、動作加速度又は動作方向についての情報である。例えば図11、図13では、他のオブジェクトである盾SLE、敵キャラクタOBEなどの動作速度、動作加速度又は動作方向などを加味して、発生機構30、60により発生する反動又は振動の発生態様を制御する。例えば剣SWと他のオブジェクトとの相対速度又は相対的な方向関係に応じて反動又は振動を制御する。
また制御部117は、発生機構30、60の動力源への出力信号を制御することで、発生機構が発生する反動及び振動の少なくとも一方を制御する。図4の例では、発生機構30の動力源であるソレノイド50への出力信号(制御信号又は電源電圧等)を制御することで、発生機構30が発生する反動等の大きさ、発生期間又は発生タイミング等の発生態様を制御する。例えばソレノイド50に供給する電源電圧に基づいて、反動の強弱を制御したり、ソレノイド50に供給する制御信号に基づいて、反動の発生期間又は発生タイミングを制御する。また発生機構60の動力源であるトランスデューサー62への出力信号(音信号又は電源電圧等)を制御することで、発生機構60が発生する振動等の大きさ、発生期間又は発生タイミング等の発生態様を制御する。例えばトランスデューサー62に供給する電源電圧に基づいて、振動の強弱を制御したり、トランスデューサー62に供給する制御信号に基づいて、振動の発生期間又は発生タイミングを制御する。なお動力源は、振動モータ等のモータであってもよい。例えば錘を受け部に衝突させるなどの手法ではなく、錘を動かしたり回転させた際の慣性力などにより反動又は振動を発生してもよい。
図15は本実施形態の処理例を説明するフローチャートである。図15に示すように、まずユーザの位置情報、姿勢情報又は動き情報等を取得する(ステップS1)。例えば図2(A)〜図3(B)で説明したトラッキング処理や、モーションセンサなどのセンサを用いた処理により、ユーザの位置情報、姿勢情報又は動き情報等を特定して取得する。次に、ユーザの位置情報、姿勢情報又は動き情報等に基づいて、ゲーム状況を判断する(ステップS2)。例えばユーザのゲームプレイの状況、ゲームの進行状況、ゲームの戦闘状況、ゲームの対戦状況、ゲームでのヒット判定の状況、ゲームに登場するキャラクタの状況、キャラクタやユーザのステータスパラメータの状況、或いはゲームの成績の状況などを判断する。そして、ゲーム状況に応じて発生機構30、60を制御する(ステップS3)。例えばゲーム状況に応じて、発生機構30、60が発生する反動又は振動の強さ、発生期間又は発生タイミング等の発生態様を制御する。
図16は本実施形態の詳細な処理例を説明するフローチャートである。図16に示すように、まずユーザの位置情報、姿勢情報又は動き情報等を取得する(ステップS11)。次に、ユーザの位置情報、姿勢情報又は動き情報等に基づいて、ユーザキャラクタの剣、部位等のオブジェクトと、敵キャラクタ、盾等の他のオブジェクトとのヒット判定処理を行う(ステップS12)。即ち、図11、図13に示すように剣と他のオブジェクトのヒット(衝突)が発生したか否かを判定する。そしてヒットが発生した場合には、コントローラの種類情報、動き情報、他のオブジェクトの種類情報、動き情報等に基づいて、発生機構を制御する(ステップS13、S14)。例えば発生機構の動力源(ソレノイド、トランスデューサー又はモータ等)への出力信号を制御することで、発生機構の反動又は振動の発生態様等を制御する。
また本実施形態では図17(A)に示すように、発生機構30は、錘32と、錘32の受け部34とを含み、錘32を受け部34に衝突させることで、反動を発生している。即ち発生機構30は、錘32を、動力源であるソレノイド50により移動させ、受け部34に衝突させることによって、反動(又は振動)を発生させている。このようにすれば、簡素な機構で、他のオブジェクトとのヒットによる打感等をユーザに感じさせることができる仮想的な反動の発生を実現できる。なお、発生機構30の構成は図17(A)の構成には限定されない。例えばモータを用いた回転移動などにより錘等を受け部等に打ち込むなどして、反動等の発生を実現してもよい。
また制御部117は、錘32のストローク距離を変化させることで、発生機構30が発生する反動及び振動の少なくとも一方を制御してもよい。例えば図17(A)では錘32のストローク距離LST(スイング移動距離)は短いが、図17(B)ではストローク距離LSTが長くなっている。ストローク距離LSTが長くなるほど、発生機構30が発生する反動又は振動の強さが強くなる。即ち、ストローク距離LSTにより反動又は振動の強弱を制御できる。例えば制御部117が、ヒット判定処理の結果(広義にはゲーム状況)に応じて、ストローク距離LSTを制御して、反動又は振動の強弱を制御する。錘32のストローク距離LSTは、ソレノイド50による軸部材52の移動距離を制御することで設定できる。例えば軸部材52のストッパー(弾性部材46等)によるアーム40の係止位置によりストローク距離LSTを設定できる。或いは、アーム40の長さの設定によりストローク距離LSTを設定してもよい。例えばアーム40の長さ又はストッパーによるアーム40の係止位置が異なる複数の発生機構を用意し、これらの複数の発生機構のいずれを使用するかを制御部117が制御することで、錘のストローク距離を変化させてもよい。
制御部117は、錘の種類及び受け部の種類の少なくとも一方を変化させる制御を行ってもよい。例えば制御部117が、ヒット判定処理の結果に応じて、錘又は受け部の種類(質量、材質等)を変化させて、反動又は振動の強弱又は質感等を調整する。
例えば図18(A)では、複数種類の錘32A、32B、32Cを用意している。錘32A、32B、32Cは例えばその質量が互いに異なっている。或いは、反動又は振動の強弱や質感を調整するために、錘32A、32B、32Cの材質を異ならせてもよい。そして例えばヒット判定処理の結果(ゲーム状況)に応じて、錘32A、32B、32Cのいずれを使用するかを制御する。このようにすることで、ヒット判定処理の結果に応じて、反動又は振動の強弱又は質感等を調整できるようになる。
また図18(B)では、複数種類の受け部34A、34B、34Cを用意している。受け部34A、34B、34Cは例えばその材質が互いに異なっている。或いは、受け部34A、34B、34Cの質量等を異ならせてもよい。そして例えばヒット判定処理の結果(ゲーム状況)に応じて、受け部34A、34B、34Cのいずれを使用するかを制御する。このようにすることで、ヒット判定処理の結果に応じて、反動又は振動の強弱又は質感等を調整できるようになる。具体的には図18(B)では、円盤状部材の第1、第2、第3の領域を受け部34A、34B、34Cに設定している。そしてこの円盤状部材を、制御部117からの制御信号に基づいてE1に示すように回転することで、受け部34A、34B、34Cのいずれを使用するかを制御している。
また本実施形態ではコントローラ10は、反動及び振動の少なくとも一方を発生する発生機構60(第2の発生機構)を含む。そして制御部117は、発生機構30(第1の発生機構)での反動又は振動の発生態様と、発生機構60(第2の発生機構)での反動又は振動の発生態様を異ならせる。例えば発生機構30での反動又は振動の強さ、発生期間、発生タイミング又は発生の有無等の発生態様と、発生機構60での反動又は振動の強さ、発生期間、発生タイミング又は発生の有無等の発生態様を異ならせる。例えばヒット判定処理の結果(ゲーム状況)に応じて、発生機構30の発生態様と発生機構60の発生態様を設定する。例えば発生機構30と発生機構60をどのように使い分けるかを、ヒット判定処理の結果(ゲーム状況)に応じて判断する。例えばヒット対象となる他のオブジェクトの種類(オブジェクトが表す物体の硬さ又は材質等のプロパティ)に応じて、発生機構30、60のいずれを使用するのかを判断する。
例えば図19では、例えば他のオブジェクト(敵キャラクタ等)とのヒットの発生の後、期間T1では発生機構30により強い反動を発生する。そして、期間T1よりも時間的に遅れた期間T2においては、発生機構60により弱い振動を発生する。期間T1では、発生する反動の強さは強いが、発生期間の長さは短くなっている。期間T2では、発生する振動の強さは弱いが、発生期間の長さは長くなっている。図19に示すように発生機構30での発生態様と発生機構60での発生態様を異ならせることで、ユーザが、よりリアルであると感じることができる反動又は振動の発生制御を実現できる。例えば剣で敵キャラクタ等を斬った際に、まず初めに発生機構30による強い反動による手応えをユーザは感じることができる。その後、その反動の余韻のような弱い振動が発生機構60により発生して、斬った後のユーザの手に伝わるようになる。従って、あたかも本物の剣で敵キャラクタを斬ったかのような仮想現実感をユーザに与えることが可能になる。
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(ゲーム状況、動力源、ユーザ移動体等)と共に記載された用語(ヒット判定処理の結果、ソレノイド・トランスデューサー・モータ、ユーザキャラクタ等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またコントローラの構成、構造、発生機構の構成、構造、位置情報の取得処理、仮想空間の設定処理、移動体の移動処理、表示処理、ゲーム処理、発生機構の制御処理等も、本実施形態で説明したものに限定されず、これらと均等な手法・処理・構成も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲーム装置、家庭用ゲーム装置、又は多数のユーザが参加する大型アトラクションシステム等の種々のシミュレーションシステムに適用できる。