以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.シミュレーションシステム
図1は、本実施形態のシミュレーションシステム(シミュレータ、ゲームシステム、画像生成システム)の構成例を示すブロック図である。本実施形態のシミュレーションシステムは例えばバーチャルリアリティ(VR)をシミュレートするシステムであり、ゲームコンテンツを提供するゲームシステム、運転シミュレータやスポーツ競技シミュレータなどのリアルタイムシミュレーションシステム、或いは映像等のコンテンツを提供するコンテンツ提供システムなどの種々のシステムに適用可能である。なお、本実施形態のシミュレーションシステムは図1の構成に限定されず、その構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
ライド筐体10(広義には筐体)は、プレーヤが搭乗可能な筐体である。具体的には本実施形態のライド筐体10は、複数のプレーヤが搭乗可能な筐体となっている。例えば実空間の複数のプレーヤがライド筐体10の複数のライド位置に搭乗する。ライド位置は、例えばプレーヤが位置して仮想体験ゲームをプレイする場所である。ライド筐体10には、複数のプレーヤが搭乗する複数のライド位置が例えば予め設定されており、複数のプレーヤの各プレーヤは、自身が搭乗する位置として設定された各ライド位置に搭乗して仮想体験ゲームをプレイする。そして本実施形態のライド筐体10は例えば可動筐体となっており、可動機構によってライド筐体10の姿勢が変化する。
操作部160は、プレーヤ(ユーザ)が種々の操作情報(入力情報)を入力するためのものである。操作部160は、例えばパドル、杖、ゲームコントローラ、ガン型コントローラ、レバー、操作ボタン、方向指示キー、ハンドル、アクセルペダル、ブレーキペダル又は音声入力装置等の種々の操作デバイスにより実現できる。
記憶部170は各種の情報を記憶する。記憶部170は、処理部100や通信部196などのワーク領域として機能する。ゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部170に保持される。記憶部170の機能は、半導体メモリ(DRAM、VRAM)、HDD(ハードディスクドライブ)、SSD、光ディスク装置などにより実現できる。記憶部170は、仮想空間情報記憶部172、描画バッファ178を含む。
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(DVD、BD、CD)、HDD、或いは半導体メモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータ(入力装置、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
表示部190は、LCD、有機ELディスプレイ、或いはCRTなどにより実現できる。表示部190は、プレーヤの視界を覆うように配置される。表示部190は、例えば後述の図2(A)、図3(A)のHMD200のディスプレイである。頭部装着型表示装置であるHMD200は、プレーヤの頭部に装着されて、プレーヤの眼前に画像を表示する装置である。HMD200は非透過型であることが望ましいが、透過型であってもよい。またHMD200は、いわゆるメガネタイプのHMDであってもよい。またプレーヤの視界を覆うように配置される表示部190は、HMD200以外の表示装置の表示部であってもよい。例えばプレーヤの視界を覆うドーム形状の表示スクリーンを有するような表示装置の表示部であってもよい。
例えば図2(A)、図3(A)のHMD200は、表示部190の他に、センサ部や処理部を含むことができる。或いはHMD200は発光素子を含むことができる。センサ部は、例えばヘッドトラッキングなどのトラッキング処理を実現するためのものである。例えばセンサ部を用いたトラッキング処理により、HMD200の位置、方向を特定する。HMD200の位置、方向が特定されることで、プレーヤの視点位置、視線方向を特定できる。
トラッキング方式としては種々の方式を採用できる。トラッキング方式の一例である第1のトラッキング方式では、後述の図2(A)、図2(B)で詳細に説明するように、センサ部として複数の受光素子(フォトダイオード等)を設ける。そして外部に設けられた発光素子(LED等)からの光(レーザー等)をこれらの複数の受光素子により受光することで、現実世界の3次元空間でのHMD200(プレーヤの頭部)の位置、方向を特定する。第2のトラッキング方式では、後述の図3(A)、図3(B)で詳細に説明するように、複数の発光素子(LED)をHMD200に設ける。そして、これらの複数の発光素子からの光を、外部に設けられた撮像部で撮像することで、HMD200の位置、方向を特定する。第3の方式では、モーションセンサを設け、このモーションセンサを用いてHMD200の位置、方向を特定する。モーションセンサは例えば加速度センサやジャイロセンサなどにより実現できる。例えば3軸の加速度センサと3軸のジャイロセンサを用いた6軸のモーションセンサを用いることで、現実世界の3次元空間でのHMD200の位置、方向を特定できる。なお、第1のトラッキング方式と第2のトラッキング方式の組合わせ、或いは第1のトラッキング方式と第3のトラッキング方式の組合わせなどにより、HMD200の位置、方向を特定してもよい。またHMD200の位置、方向を特定することでプレーヤの視点位置、視線方向を特定するのではなく、プレーヤの視点位置、視線方向を直接に特定するトラッキング処理を採用してもよい。またデプスカメラ、RGBカメラ、環境認識カメラなどのカメラを用いてプレーヤの周囲の実空間の認識処理を行い、認識処理の結果に基づいてプレーヤの位置や方向等を特定してもよい。例えば認識された実空間の物体との相対的位置関係からプレーヤの位置や方向等を特定してもよい。
例えばHMD200の表示部190は有機ELディスプレイ(OEL)や液晶ディスプレイ(LCD)などにより実現できる。具体的にはHMD200の表示部190には、プレーヤの左眼の前に設定される第1のディスプレイ又は第1の表示領域と、右眼の前に設定される第2のディスプレイ又は第2の表示領域が設けられており、立体視表示が可能になっている。立体視表示を行う場合には、例えば視差が異なる左眼用画像と右眼用画像を生成し、第1のディスプレイに左眼用画像を表示し、第2のディスプレイに右眼用画像を表示する。或いは1つのディスプレイの第1の表示領域に左眼用画像を表示し、第2の表示領域に右眼用画像を表示する。またHMD200には左眼用、右眼用の2つの接眼レンズ(魚眼レンズ)が設けられており、これによりプレーヤの視界の全周囲に亘って広がるVR空間が表現される。そして接眼レンズ等の光学系で生じる歪みを補正するための補正処理が、左眼用画像、右眼用画像に対して行われる。
音出力部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、仮想空間設定部104、ゲーム処理部106、仮想カメラ制御部112、表示処理部120、音処理部130を含む。ゲーム処理部106は、移動体処理部108、筐体制御部110を含む。上述したように、これらの各部により実行される本実施形態の各処理は、プロセッサ(或いはプロセッサ及びメモリ)により実現できる。なお、これらの構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
情報取得部102は種々の情報の取得処理を行う。例えば情報取得部102は、プレーヤの位置情報(視点位置情報)、方向情報(視線方向情報)及び姿勢情報(動き情報)の少なくとも1つを含むプレーヤ情報を取得する。
仮想空間設定部104は、オブジェクトが配置される仮想空間(オブジェクト空間)の設定処理を行う。例えば、移動体(車、人、ロボット、電車、飛行機、船、モンスター又は動物等)、マップ(地形)、建物、観客席、コース(道路)、アイテム、樹木、壁、水面などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)を仮想空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。具体的には、記憶部170の仮想空間情報記憶部172には、仮想空間でのオブジェクト(パーツオブジェクト)の位置、回転角度、移動速度又は移動方向等の情報であるオブジェクト情報がオブジェクト番号に対応づけて記憶される。即ち、オブジェクト情報が仮想空間情報として仮想空間情報記憶部172に記憶される。仮想空間設定部104は、例えば各フレーム毎に、仮想空間情報であるオブジェクト情報の更新処理を行う。
ゲーム処理部106は、プレーヤがゲームをプレイするための種々のゲーム処理を行う。別の言い方をすれば、ゲーム処理部106(シミュレーション処理部)は、プレーヤが仮想現実(バーチャルリアリティ)を体験するための種々のシミュレーション処理を実行する。ゲーム処理は、例えば、ゲーム開始条件が満たされた場合にゲームを開始する処理、開始したゲームを進行させる処理、ゲーム終了条件が満たされた場合にゲームを終了する処理、或いはゲーム成績を演算する処理などである。このゲーム処理部106は、移動体処理部108、筐体制御部110を含む。
移動体処理部108は、仮想空間内で移動する移動体についての種々の処理を行う。例えば仮想空間(オブジェクト空間、ゲーム空間)において移動体を移動させる処理や、移動体を動作させる処理を行う。例えば移動体処理部108は、操作部160によりプレーヤが入力した操作情報や、取得されたトラッキング情報や、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、移動体(モデルオブジェクト)を仮想空間内で移動させたり、移動体を動作(モーション、アニメーション)させる制御処理を行う。具体的には、移動体の移動情報(位置、回転角度、速度、或いは加速度)や動作情報(パーツオブジェクトの位置、或いは回転角度)を、1フレーム(例えば1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動体の移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。移動体は、例えば実空間のプレーヤに対応する仮想プレーヤや、仮想プレーヤが搭乗する搭乗移動体である。搭乗移動体は、例えば仮想空間に登場するボート、船、車、飛行機、戦車、ロボット又は魔法のじゅうたん等の乗り物を模した移動体である。仮想プレーヤは、実空間のプレーヤに対応する仮想空間のプレーヤキャラクタやアバターと呼ばれるものである。そして実空間のライド筐体10に対応する仮想空間の搭乗移動体に仮想プレーヤが搭乗する。移動体処理部108は、このような搭乗移動体を仮想空間内で移動させたり、仮想プレーヤを仮想空間内に移動させる処理を行う。
筐体制御部110は、ライド筐体10の制御処理を行う。例えばライド筐体10の可動機構を制御して、実空間のライド筐体10の姿勢や位置を変化させる制御処理を行う。例えばライド筐体10の姿勢や位置が変化することで、ライド筐体10に搭乗するプレーヤのプレイ位置が変化する。
仮想カメラ制御部112は、仮想カメラの制御を行う。例えば、操作部160により入力されたプレーヤの操作情報やトラッキング情報などに基づいて、仮想カメラを制御する処理を行う。
例えば仮想カメラ制御部112は、プレーヤの一人称視点又は三人称視点として設定される仮想カメラの制御を行う。例えば仮想空間において移動するプレーヤ移動体の視点(一人称視点)に対応する位置に、仮想カメラを設定して、仮想カメラの視点位置や視線方向を設定することで、仮想カメラの位置(位置座標)や姿勢(回転軸回りでの回転角度)を制御する。或いは、移動体(仮想プレーヤ、搭乗移動体)に追従する視点(三人称視点)の位置に、仮想カメラを設定して、仮想カメラの視点位置や視線方向を設定することで、仮想カメラの位置や姿勢を制御する。
例えば仮想カメラ制御部112は、視点トラッキングにより取得されたプレーヤの視点情報のトラッキング情報に基づいて、プレーヤの視点変化に追従するように仮想カメラを制御する。例えば本実施形態では、プレーヤの視点位置、視線方向の少なくとも1つである視点情報のトラッキング情報(視点トラッキング情報)が取得される。このトラッキング情報は、例えばHMD200のトラッキング処理を行うことで取得できる。そして仮想カメラ制御部112は、取得されたトラッキング情報(プレーヤの視点位置及び視線方向の少なくとも一方の情報)に基づいて仮想カメラの視点位置、視線方向を変化させる。例えば、仮想カメラ制御部112は、実空間でのプレーヤの視点位置、視線方向の変化に応じて、仮想空間での仮想カメラの視点位置、視線方向(位置、姿勢)が変化するように、仮想カメラを設定する。このようにすることで、プレーヤの視点情報のトラッキング情報に基づいて、プレーヤの視点変化に追従するように仮想カメラを制御できる。
表示処理部120は、ゲーム画像(シミュレーション画像)の表示処理を行う。例えば処理部100で行われる種々の処理(ゲーム処理、シミュレーション処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に表示する。具体的には、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)を、描画バッファ178(フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ)に描画する。これにより、仮想空間において仮想カメラ(所与の視点。左眼用、右眼用の第1、第2の視点)から見える画像が生成される。なお、表示処理部120で行われる描画処理は、頂点シェーダ処理やピクセルシェーダ処理等により実現することができる。
音処理部130(音処理のプログラムモジュール)は、処理部100で行われる種々の処理の結果に基づいて音処理を行う。具体的には、楽曲(音楽、BGM)、効果音、又は音声などのゲーム音を生成し、ゲーム音を音出力部192に出力させる。
そして本実施形態のシミュレーションシステムは図1に示すように、ライド筐体10と仮想空間設定部104とゲーム処理部106と表示処理部120を含む。
ライド筐体10は、実空間の複数のプレーヤが複数のライド位置に搭乗する筐体である。例えばライド筐体10には、複数のプレーヤの各プレーヤが搭乗するライド位置が設定されており、プレーヤは当該ライド位置に搭乗してゲームをプレイする。このライド位置は、プレーヤがゲームプレイを行うプレイ位置としてライド筐体10に設定されている場所である。
仮想空間設定部104は、複数のプレーヤに対応する複数の仮想プレーヤを、仮想空間に配置設定する処理を行う。例えばプレーヤのアバターである仮想プレーヤを、ゲーム空間である仮想空間に登場させる。一例としては、ライド筐体10に対応する搭乗移動体に対して仮想プレーヤを搭乗させて、プレーヤの操作情報に基づいて当該搭乗移動体を仮想空間内において移動させる。仮想プレーヤは、例えばプレーヤに対応するプレーヤキャラクタであり、プレーヤの視点からその一部又は全部が見えるようなキャラクタであってもよいし、プレーヤの視点には非表示の仮想的なキャラクタであってもよい。
ゲーム処理部106は、複数のプレーヤが参加するゲームの処理を行う。例えば複数のプレーヤが協力してプレイするゲームを進行させたり、種々のゲームイベントを発生したり、或いはプレーヤのゲーム成績を演算するなどのゲーム処理を行う。そして表示処理部120は、仮想空間画像を表示部190に表示する処理を行う。例えば複数の仮想プレーヤの各仮想プレーヤの視点から見える仮想空間画像を、複数のプレーヤの各プレーヤの視界を覆うように配置された表示部190に表示する処理を行う。例えば仮想プレーヤの視点に仮想カメラを設定し、この仮想カメラから仮想空間を見た画像である仮想空間画像を生成し、HMD200などのプレーヤの視界を覆うように配置された表示部190に当該仮想空間画像を表示する。
そして本実施形態では、複数のプレーヤの第1のプレーヤのライド方向と第2のプレーヤのライド方向とが互いに異なる方向になるように、ライド筐体10での複数のプレーヤのライド方向が設定されている。例えば第1のプレーヤのライド方向は第1のライド方向に設定され、第2のプレーヤのライド方向は第1のライド方向とは異なる第2のライド方向に設定される。ライド方向は、プレーヤがライド筐体10に搭乗してゲームをプレイするときに向く方向である。例えばライド方向は、プレーヤがライド筐体10のライド位置に座ったり立ったりして搭乗した際に当該プレーヤが向く方向である。例えばプレーヤのライド方向を規制する規制部材(例えば座席)がライド筐体10に設けられており、この規制部材により、複数のプレーヤの各プレーヤのライド方向が設定される。
そして仮想空間設定部104は、第1のプレーヤに対応する第1の仮想プレーヤの配置方向と、第2のプレーヤに対応する第2の仮想プレーヤの配置方向とが、基準方向に向くように、第1の仮想プレーヤと第2の仮想プレーヤを仮想空間に配置設定する。例えば実空間の第1のプレーヤに対応する第1の仮想プレーヤと、実空間の第2のプレーヤに対応する第2の仮想プレーヤが、ゲーム空間である仮想空間に登場する。そして実空間での第1のプレーヤとライド方向と第2のプレーヤのライド方向が異なる方向になっていても、仮想空間における第1の仮想プレーヤの配置方向と第2の仮想プレーヤの配置方向については、同じ基準方向になるように配置設定される。基準方向は、仮想空間において仮想プレーヤが向く方向の基準として設定されている方向である。仮想プレーヤの配置方向は、プレーヤに対応する仮想プレーヤを仮想空間に配置する際における仮想プレーヤの方向であり、例えば仮想空間での仮想プレーヤの向く方向(体が向く方向)である。なお、第1、第2の仮想プレーヤの配置方向が基準方向に完全に一致している必要は必ずしもなく、第1、第2の仮想プレーヤの配置方向と基準方向との間に許容範囲内のズレがあってもよい。
また本実施形態のシミュレーションシステムは、仮想プレーヤの視点に対応する仮想カメラを制御する仮想カメラ制御部112を含む。仮想カメラ制御部112は、プレーヤのライド位置に対するプレーヤの相対的な視点位置(頭部の位置)の情報を相対位置情報として取得する。またプレーヤのライド方向に対するプレーヤの相対的な視線方向(頭部の方向)の情報を相対回転情報として取得する。例えばライド筐体10でのプレーヤのライド位置に対する相対的な視点の位置情報を、相対位置情報として取得する。またライド筐体10でのプレーヤのライド方向に対する相対的な視線の回転情報を、相対回転情報(相対方向情報)として取得する。そして仮想カメラ制御部112は、仮想プレーヤの配置位置と相対位置情報に基づいて仮想カメラの視点位置(仮想プレーヤの視点位置)を求める。また仮想プレーヤの配置方向と相対回転情報に基づいて仮想カメラの視線方向(仮想プレーヤの視線方向)を求める。
即ち仮想プレーヤの視点に対応する仮想カメラの視点位置は、仮想プレーヤの配置位置を基準に設定される。また仮想カメラの視線方向は、仮想プレーヤの配置方向を基準に設定される。例えばHMD200のトラッキング処理などを利用して、プレーヤのライド位置に対する相対的な視点位置の情報である相対位置情報と、プレーヤのライド方向に対する相対的な視線方向の情報である相対回転情報が取得される。例えば情報取得部102が、これらの相対位置情報、相対回転情報の取得処理を行う。相対回転情報は、例えばライド方向に対する視線方向の角度を表す情報である。そして仮想プレーヤの配置位置と相対位置情報に基づいて仮想カメラの視点位置が求められる。例えば仮想プレーヤの配置位置に対して相対位置情報を加える処理を行うことで、仮想カメラの視点位置が求められる。また仮想プレーヤの配置方向と相対回転情報に基づいて仮想カメラの視線方向が求められる。例えば仮想プレーヤの配置方向に対して相対回転情報を加える処理を行うことで、仮想カメラの視線方向が求められる。そして、このようにして求められた視点位置、視線方向に設定された仮想カメラから見た画像が、プレーヤに表示される仮想空間画像として生成されるようになる。
またライド筐体10は、第1のライド位置に設けられ、第1のプレーヤが第1のライド位置において第1のライド方向で搭乗する第1のライド部を含む。このような第1のライド部を設けることで、実空間での第1のプレーヤのライド方向を第1のライド方向に設定できる。またライド筐体10は、第1のライド位置とは異なる第2のライド位置に設けられ、第2のプレーヤが第2のライド位置において第1のライド方向とは異なる第2のライド方向で搭乗する第2のライド部を含む。このような第2のライド部を設けることで、実空間での第2のプレーヤのライド方向を第2のライド方向に設定できる。例えば第1のライド部は、ライド筐体10の第1のライド位置に搭乗する第1のプレーヤの方向が第1のライド方向になるように、第1のプレーヤの向く方向を規制している。例えば第1のライド部は、第1のプレーヤの方向を第1のライド方向に規制する規制部材を有している。また第2のライド部は、ライド筐体10の第2のライド位置に搭乗する第2のプレーヤの方向が第2のライド方向になるように、第2のプレーヤの向く方向を規制している。例えば第2のライド部は、第2のプレーヤの方向を第2のライド方向に規制する規制部材を有している。
また複数のプレーヤの第3のプレーヤのライド筐体でのライド方向は、第1のプレーヤのライド方向とは異なる方向に設定されている。例えばライド筐体10は、第3のライド位置に設けられ、第3のプレーヤが第3のライド位置において、第1のプレーヤのライド方向とは異なる方向で搭乗する第3のライド部を含む。このような第3のライド部を設けることで、実空間での第3のプレーヤのライド方向を、第1のプレーヤのライド方向とは異なる方向に設定できる。第1のプレーヤのライド方向とは異なる方向とは、第2のプレーヤのライド方向と同じ方向であってもよいし、第1のプレーヤのライド方向及び第2のプレーヤのライド方向と異なる方向であってもよい。例えば第3のライド部は、ライド筐体10の第3のライド位置に搭乗する第3のプレーヤの方向が、第1のライド方向とは異なる方向になるように規制している。例えば第3のライド部は、第3のプレーヤの方向を第1のライド方向とは異なる方向に規制する規制部材を有している。
そして仮想空間設定部104は、第3のプレーヤに対応する第3の仮想プレーヤの配置方向が、基準方向に向くように、第3の仮想プレーヤを仮想空間に配置設定する。例えば実空間での第1のプレーヤのライド方向と第3のプレーヤのライド方向が異なる方向になっていても、仮想空間における第1の仮想プレーヤの配置方向と第3の仮想プレーヤの配置方向については、同じ方向である基準方向になるように配置設定される。例えば第2の仮想プレーヤの配置方向と第3の仮想プレーヤの配置方向も、同じ方向である基準方向になるように配置設定される。そして仮想空間設定部104は、第2の仮想プレーヤを、第2のプレーヤのライド位置に対応する配置位置とは異なる位置に配置し、第3の仮想プレーヤを、第3のプレーヤのライド位置に対応する配置位置とは異なる位置に配置する。例えば実空間での第2のプレーヤのライド位置に対応する仮想空間の配置位置を、第2の配置位置とし、実空間での第3のプレーヤのライド位置に対応する仮想空間の配置位置を、第3の配置位置とする。この場合に仮想空間設定部104は、第2の仮想プレーヤを、第2の配置位置とは異なる位置に配置し、第3の仮想プレーヤを、第3の配置位置とは異なる位置に配置する。
具体的には仮想空間設定部104は、第2の仮想プレーヤを、第3のプレーヤのライド位置に対応する配置位置に配置し、第3の仮想プレーヤを、第2のプレーヤのライド位置に対応する配置位置に配置する。例えば上述のように第2、第3のプレーヤのライド位置に対応する仮想空間の配置位置を、第2、第3の配置位置とする。この場合に仮想空間設定部104は、第2の仮想プレーヤを第3の配置位置に配置し、第3の仮想プレーヤを第2の配置位置に配置する。例えば第2、第3の仮想プレーヤを、同じ基準方向に向けながら、その配置位置を入れ替える。
またゲーム処理部106は、複数のプレーヤに対応する複数の仮想プレーヤが搭乗する移動体を、仮想空間において移動させる処理を行う。即ち複数の仮想プレーヤが搭乗する移動体である搭乗移動体を仮想空間内において移動させる。例えば複数のプレーヤの操作情報に基づいて移動体を移動させる。そしてこの場合に基準方向は、移動体の移動方向に対応する方向である。例えば第1のプレーヤのライド方向と第2のプレーヤのライド方向が異なる方向に設定されている場合にも、第1、第2の仮想プレーヤの配置方向を、第1、第2の仮想プレーヤが搭乗する移動体の移動方向に対応する方向に設定する。また第3のプレーヤのライド方向と第1のプレーヤのライド方向が異なる方向に設定されている場合にも、第1、第2、第3の仮想プレーヤの配置方向を、第1、第2、第3の仮想プレーヤが搭乗する移動体の移動方向に対応する方向に設定する。このようにすることで、第1、第2、第3の仮想プレーヤを、移動体の移動方向の方を向くように配置設定できるようになる。
またプレーヤに対応する仮想プレーヤの配置方向又は配置位置が、プレーヤのライド方向又はライド位置とは異なる方向又は位置に設定されていたとする。この場合にも音処理部130は、仮想プレーヤの配置方向又は配置位置に応じた音源を仮想空間に設定する。そして実空間で取得されたプレーヤの音声を、設定された音源から発生させる処理を行う。例えば本実施形態では、マイクなどの音声取得デバイスを用いて、実空間でのプレーヤの音声を取得する。例えばゲーム中にプレーヤが発する叫び声などの音声や、チャットの会話音声などを取得する。そして仮想空間においてこの音声を発生する音源を、仮想プレーヤの配置方向又は配置位置に応じて設定する。そして仮想プレーヤの配置方向又は配置位置に応じて設定された音源から、実空間で取得されたプレーヤの音声を発生させる。即ち実空間でのプレーヤの位置、方向ではなく、仮想空間での仮想プレーヤの位置、方向に応じて音源を設定し、当該音源から、当該仮想プレーヤに対応するプレーヤの音声を発生させる。このようにすることで、仮想空間でのプレーヤの位置、方向と、実空間でのプレーヤの位置、方向とが対応しない場合にも、プレーヤの音声についての適正な音場形成処理を実現できるようになる。
またゲーム処理部106は、第1のプレーヤが第1の操作部を用いて入力した第1の操作情報と、第2のプレーヤが第2の操作部を用いて入力した第2の操作情報に基づいて、ゲーム処理を行う。例えばライド筐体10に搭乗する第1、第2のプレーヤの第1、第2の操作部による操作情報に基づいて、ゲーム進行処理、ゲーム成績演算処理などのゲーム処理を行う。例えばライド筐体10に対応する移動体を、これらの第1、第2の操作部による第1、第2の操作情報に基づいて移動させるゲーム処理を行う。或いは、第1、第2の操作情報に基づいて、対戦のためのゲーム処理を行ったり、各種のゲームイベントを発生させるためのゲーム処理を行う。またライド筐体10に第3のプレーヤが搭乗する場合には、第1、第2、第3のプレーヤの第1、第2、第3の操作部による第1、第2、第3の操作情報に基づいて、移動体を移動させるゲーム処理や、対戦のためのゲーム処理や、ゲームイベント発生のためのゲーム処理を行う。
この場合に本実施形態では、第1のプレーヤの第1の操作部の操作範囲と、第2のプレーヤの第2の操作部の操作範囲とが、互いに重ならない範囲に設定される。例えばライド筐体10の第1のライド位置に搭乗する第1のプレーヤが第1の操作部を操作し、ライド筐体10の第2のライド位置に搭乗する第2のプレーヤが第2の操作部を操作したとする。この場合に、第1のプレーヤの第1の操作部の操作範囲と第2のプレーヤの第2の操作部の操作範囲とが重ならないように、第1、第2のプレーヤのライド位置やライド方向が設定されている。同様に第3のプレーヤがライド筐体10に搭乗する場合には、第1のプレーヤの第1の操作部の操作範囲と、第2のプレーヤの第2の操作部の操作範囲と、第3のプレーヤの第3の操作部の操作範囲とが、互いに重ならない範囲に設定される。
またゲーム処理部106は、第1のプレーヤに対応する第1の仮想プレーヤと、第2のプレーヤに対応する第2の仮想プレーヤが搭乗する移動体を、第1、第2の操作情報に基づいて、仮想空間において移動させる処理を行う。この移動体の移動処理は移動体処理部108が行う。例えば第1、第2の仮想プレーヤが移動体に搭乗する場合に、第1、第2の仮想プレーヤの配置方向である基準方向は、当該移動体の移動方向に対応する方向に設定される。そして第1、第2のプレーヤが第1、第2の操作部を操作することによる第1、第2の操作情報に基づいて、当該移動体が仮想空間において移動する。即ち移動体が基準方向に対応する方向に移動する。なお第3のプレーヤもゲームに参加する場合には、ゲーム処理部106は、第1、第2、第3のプレーヤに対応する第1、第2、第3の仮想プレーヤが搭乗する移動体を、第1、第2、第3のプレーヤの第1、第2、第3の操作部による第1、第2、第3の操作情報に基づいて、仮想空間において移動させる処理を行う。
そしてゲーム処理部106は、第1の操作情報による第1の入力値と、第2の操作情報による第2の入力値の合算値に基づいて、移動体を仮想空間において移動させる処理を行う。例えば第1の入力値と第2の入力値の合算処理を行い、合算処理により得られた合算値に基づいて、移動体を仮想空間において移動させる。例えば第1の入力値や第2の入力値が大きいほど、速い速度や加速度で移動体を移動させる。また第1、第2の入力値の一方の入力値が例えばゼロであっても、他方の入力値に基づいて移動体を移動させる。このようにすることで、第1、第2のプレーヤの協力プレイにより、第1、第2の仮想プレーヤが搭乗する移動体を仮想空間で移動させるゲームを実現できる。なお第3のプレーヤもゲームに参加する場合には、ゲーム処理部106は、第1、第2、第3のプレーヤの第1、第2、第3の入力値の合算値に基づいて、移動体を移動させる処理を行う。
また表示部190は、例えば複数のプレーヤの各プレーヤが装着するHMD200の表示部である。即ち本実施形態では表示処理部120は、仮想空間画像として、プレーヤが視界を覆うように装着するHDM200の表示画像を生成する。このように、プレーヤが視界を覆うようにHMD200を装着する場合には、プレーヤに対応する仮想空間の仮想プレーヤの配置方向等を変更しても、プレーヤに気づかれなくて済むようになる。そして例えば第1、第2のプレーヤのライド方向が異なる場合にも、仮想空間において第1、第2の仮想プレーヤの配置方向が基準方向を向くように設定することで、ライド筐体10における場所的な制約を解消しながら、プレーヤに不自然さを感じさせない仮想現実を実現することが可能になる。なお、表示処理部120は、HMD200以外の表示部に仮想空間画像を表示する処理を行ってもよい。即ち本実施形態の表示部190は、プレーヤの視界を覆うように配置された表示部であればよい。
またライド筐体10は例えば可動筐体である。可動筐体は可動機構を有しており、この可動機構を用いてライド筐体10の姿勢などを制御できるようになっている。このライド筐体10の制御は筐体制御部110が行う。例えば姿勢の制御としては、ヨーイングや上下移動などの制御がある。
具体的にはライド筐体10は、後述する図4、図5のライド筐体10のベース部40のヨーイングを行う第1の可動機構と、ライド筐体10のベース部40の上下移動を行う第2の可動機構を有する。例えば第1の可動機構を用いることで、ライド筐体10のベース部40を、例えば鉛直方向に沿った回転軸の回りに回転させて、ヨーイングの回転運動を行わせることができる。また第2の可動機構を用いることで、ライド筐体10のベース部40の上下移動を行って、上下方向にベース部40を揺らすなどの制御が可能になる。
この場合に第2の可動機構は、ベース部40を上下移動させる複数のアクチュエータを含む。アクチュエータは例えばエアバネやエアシリンダなどの伸縮部により実現できる。そして複数のアクチュエータの第1のアクチュエータがベース部40を上方向に移動させるときに、複数のアクチュエータの第2のアクチュエータもベース部40を上方向に移動させる。また第1のアクチュエータがベース部40を下方向に移動させるときに、第2のアクチュエータもベース部40を下方向に移動させる。このようにすることで、第1、第2のアクチュエータなどの複数のアクチュエータを用いて、ベース部40を上下移動させることが可能になる。また第1、第2のアクチュエータが連動してベース部40を上下移動させることで、プレーヤの3D酔いの発生を防止できる。ここで3D酔いとは、例えば立体感のある動きの激しい映像を見続けることで、めまいなどの乗り物酔いのような症状を起こすことである。
なお本実施形態では、プレーヤがプレイするゲームのゲーム処理として、仮想現実のシミュレーション処理を行う。仮想現実のシミュレーション処理は、実空間での事象を仮想空間で模擬するためのシミュレーション処理であり、当該事象をプレーヤに仮想体験させるための処理である。例えば実空間のプレーヤに対応する仮想プレーヤやその搭乗移動体などの移動体を、仮想空間で移動させたり、移動に伴う環境や周囲の変化をプレーヤに体感させるための処理を行う。
また図1の本実施形態のシミュレーションシステムの処理は、業務用ゲーム装置や家庭用ゲーム装置などの処理装置、施設に設置されるPC等の処理装置、プレーヤが背中等に装着する処理装置(バックパックPC)、或いはこれらの処理装置の分散処理などにより実現できる。或いは、本実施形態のシミュレーションシステムの処理を、サーバシステムと端末装置により実現してもよい。例えばサーバシステムと端末装置の分散処理などにより実現してもよい。
2.トラッキング処理
次にトラッキング処理の例について説明する。図2(A)に本実施形態のシミュレーションシステムに用いられるHMD200の一例を示す。図2(A)に示すようにHMD200には複数の受光素子201、202、203(フォトダイオード)が設けられている。受光素子201、202はHMD200の前面側に設けられ、受光素子203はHMD200の右側面に設けられている。またHMDの左側面、上面等にも不図示の受光素子が設けられている。
またプレーヤPLは、所定部位である手にパドル型のコントローラ270(広義には操作部)を所持している。コントローラ270はパドル(オール)の形状を模した操作部材である。コントローラ270の先端にはトラッキング装置272が設けられている。トラッキング装置272には、HMD200と同様に複数の受光素子204、205、206が設けられている。このようなトラッキング装置272が設けられたコントローラ270を用いることで、HMD200の場合と同様に、コントローラ270の位置、方向等の情報を取得できる。例えばコントローラ270の動き情報を取得できる。これによりプレーヤPLがコントローラ270を操作したときの操作情報を取得することが可能になる。
図2(B)に示すように、ライド筐体10の周辺には、ベースステーション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のトラッキング処理が実現され、プレーヤPLの頭の位置や向く方向(視点位置、視線方向)を検出できるようになる。例えばプレーヤPLの位置情報や姿勢情報(方向情報)を検出できるようになる。
またコントローラ270のトラッキング装置272に設けられる受光素子204、205、205、206が、ベースステーション280、284からのレーザーを受光することで、コントローラ270の位置及び方向の少なくとも一方を検出できるようになり、コントローラ270を操作するプレーヤPLの操作情報を取得できるようになる。
図3(A)にHMD200の他の例を示す。図3(A)では、HMD200に対して複数の発光素子231〜236が設けられている。これらの発光素子231〜236は例えばLEDなどにより実現される。発光素子231〜234は、HMD200の前面側に設けられ、発光素子235や不図示の発光素子236は、背面側に設けられる。これらの発光素子231〜236は、例えば可視光の帯域の光を出射(発光)する。具体的には発光素子231〜236は、互いに異なる色の光を出射する。なお図2(A)のようにプレーヤPLがコントローラ270を所持する場合には、コントローラ270のトラッキング装置272に対して発光素子を設ければよい。
そして図3(B)に示す撮像部150を、プレーヤPLの周囲の少なくとも1つの場所(例えば前方側、或いは前方側及び後方側など)に設置し、この撮像部150により、HMD200の発光素子231〜236の光を撮像する。即ち、撮像部150の撮像画像には、これらの発光素子231〜236のスポット光が映る。そして、この撮像画像の画像処理を行うことで、プレーヤPLの頭部(HMD)のトラッキングを実現する。即ちプレーヤPLの頭部の3次元位置や向く方向(視点位置、視線方向)を検出する。
例えば図3(B)に示すように撮像部150には第1、第2のカメラ151、152が設けられており、これらの第1、第2のカメラ151、152の第1、第2の撮像画像を用いることで、プレーヤPLの頭部の奥行き方向での位置等が検出可能になる。またHMD200に設けられたモーションセンサのモーション検出情報に基づいて、プレーヤPLの頭部の回転角度(視線)も検出可能になっている。従って、このようなHMD200を用いることで、プレーヤPLが、周囲の360度の全方向うちのどの方向を向いた場合にも、それに対応する仮想空間(仮想3次元空間)での画像(プレーヤの視点に対応する仮想カメラから見える画像)を、HMD200の表示部190に表示することが可能になる。
また撮像部150により、コントローラ270のトラッキング装置272の発光素子の光を撮像することで、HMD200の場合と同様に、コントローラ270の位置及び方向の少なくとも一方を検出できる。
なお、発光素子231〜236として、可視光ではなく赤外線のLEDを用いてもよい。また、例えばデプスカメラ等を用いるなどの他の手法で、プレーヤの頭部や手(所定部位)の位置や動き等を検出するようにしてもよい。
また、プレーヤPLやコントローラ270の位置情報や方向情報や姿勢情報を検出するトラッキング処理の手法は、図2(A)〜図3(B)で説明した手法には限定されない。例えばHMD200やトラッキング装置272に設けられたモーションセンサ等を用いて、HMD200、トラッキング装置272のトラッキング処理を行って、位置情報や方向情報や姿勢情報を検出してもよい。即ち、図2(B)のベースステーション280、284、図3(B)の撮像部150などの外部装置を設けることなく、トラッキング処理を実現する。或いは、公知のアイトラッキング、フェイストラッキング又はヘッドトラッキングなどの種々の視点トラッキング手法を用いてもよい。或いはプレーヤのモーション(モーションデータ)を検出して特定するモーショントラッキングの手法を用いてもよい。
3.ライド筐体
次に本実施形態のライド筐体10の構成例について説明する。図4はライド筐体10の構成例を示す斜視図であり、図5は分解斜視図である。ライド筐体10は、基台12、ベース部40、ライド部41、42、43、44を含む。またライド筐体10は、基台12に対してベース部40を可動させるための駆動機構20と、リング状の可動部材30を含む。これらの駆動機構20と可動部材30とにより、ライド筐体10のベース部40のヨーイングを行う第1の可動機構が実現される。
ライド部41、42、43、44はベース部40に設けられている。図4ではライド部41、42、43、44は、座面と背もたれを有するシートにより実現されている。図4ではライド部41に対してプレーヤPLが着座している。他のライド部42、43、44に対しても各プレーヤが着座する。
基台12には円形状の穴部14が設けられている。図5に示すように駆動機構20は穴部14の下方の基台12の内部空間に収容される。駆動機構20は上面視でのフレーム形状が六角形になっており、その六角形の各頂点に対応する場所に、駆動部であるモータ24−1〜24−6と、ローラー26−1〜26−6が設けられている。ローラー26−1〜26−6は、例えばモータ24−1〜24−6の回転軸に取り付けられており、モータ24−1〜24−6の回転軸が回転することでローラー26−1〜26−6が回転する。これらのローラー26−1〜26−6の内側に、可動部材30が配置される。具体的には、リング状の可動部材30の外周面がローラー26−1〜26−6に接触するように、可動部材30が設置される。このようにすれば、モータ24−1〜24−6によるローラー26−1〜26−6の回転により、リング状の可動部材30が鉛直軸を回転軸として回転する。これにより、可動部材30に取り付けられているベース部40が鉛直軸を回転軸として回転し、ベース部40のヨーイングの回転運動が実現される。
また可動部材30の上面側には、アクチュエータ(伸縮部)である複数のエアバネ32−1〜32−4が設けられている。そしてエアバネ32−1〜32−4の上端部が取付具34−1〜34−4により、ベース部40の下面に取り付けられる。これらのエアバネ32−1〜32−4は、エアコンプレッサやバブルを用いて空気の供給や排出が行われることで、鉛直方向に沿って伸縮する。このようにエアバネ32−1〜32−4が伸縮することで、ベース部40の上下移動が可能になる。即ち、複数のエアバネ32−1〜32−4が同時に伸びることで、ベース部40の主面の方向を水平面の方向に維持しながら、ベース部40が上方向に移動する。また複数のエアバネ32−1〜32−4が同時に縮むことで、ベース部40の主面の方向を水平面の方向に維持しながら、ベース部40が下方向に移動する。これにより、ベース部40の上下移動が可能になる。即ち、エアバネ32−1〜32−4を用いることで、ライド筐体10のベース部40の上下移動を行う第2の可動機構が実現される。
このように本実施形態の第2の可動機構は、ベース部40を上下移動させる複数のアクチュエータを含む。図4、図5では、これらの複数のアクチュエータはエアバネ32−1〜32−4により実現される。なおアクチュエータは例えばエアシリンダなどの伸縮部により実現してもよい。そして複数のアクチュエータの第1のアクチュエータであるエアバネ32−1がベース部40を上方向に移動させるときに、複数のアクチュエータの第2のアクチュエータであるエアバネ32−2(或いはエアバネ32−3、32−4)もベース部40を上方向に移動させる。また第1のアクチュエータであるエアバネ32−1がベース部40を下方向に移動させるときに、第2のアクチュエータであるエアバネ32−2(或いはエアバネ32−3、32−4)もベース部40を下方向に移動させる。このようにすることで、ベース部40の主面の方向を水平面の方向に維持しながら、ベース部40の上下移動が可能になる。
以上の図4、図5のライド筐体10によれば、ライド筐体10のベース部40のヨーイングの回転運動や、ベース部40の上下移動が可能になる。そして、このベース部40にはライド部41〜44が設けられており、プレーヤは、ライド部41〜44に着座することでライド筐体10に搭乗する。従って、ライド筐体10の第1の可動機構によりベース部40のヨーイングの回転運動を行うことで、プレーヤが着座する各ライド部41〜44もヨーイングの回転運動を行うようになる。これにより、プレーヤのプレイ位置を回転させることが可能になり、ヨーイングによる回転運動をプレーヤに体感させることができる。またライド筐体10の第2の可動機構によりベース部40の上下移動を行うことで、プレーヤが着座するライド部41〜44も上下移動を行うことになる。これによりプレーヤのプレイ位置を上下に細かく揺らすことが可能になり、コースのガタガタ道や水面の上下の揺らぎなどをプレーヤに体感させることが可能になる。
なおプレイ位置は、仮想現実(VR)のシミュレーションゲームをプレイする際にプレーヤが位置するプレイポジションである。例えばプレイ位置はライド部のライド位置である。例えばプレーヤがライド部に座って、仮想現実のシミュレーションゲームをプレイする場合には、プレイ位置はライド部のシートでの着座位置である。プレーヤが、バイク、自転車、又は馬などの乗り物や動物を模擬したライド部にまたがっている場合には、プレイ位置は、またがっている位置である。またプレーヤが立ち姿勢でシミュレーションゲームをプレイする場合には、プレイ位置は、例えばライド部での立ち位置である。本実施形態のシミュレーションシステムは、プレーヤのプレイ位置をゲーム処理の結果(ゲーム状況)に基づいて変化させることが可能なライド筐体10を有している。このように、プレイ位置(ライド位置)を変化させることで、例えば仮想空間において仮想プレーヤが搭乗する移動体の移動に伴う方向の変化等を、プレーヤに体感させることが可能になり、仮想現実感の向上を図れる。
図6は本実施形態のシミュレーションシステムにより実現されるゲームの一例の説明図である。本実施形態では、複数のプレーヤがボートBTに搭乗して、川下りを行うシミュレーションゲームが実現される。各プレーヤが、図2(A)に示すようなパドルを模したコントローラ270を手に持って漕ぐことで、ボートBTを移動させることができる。仮想空間のボートBTが回転した場合には、図4、図5で説明したライド筐体10のヨーイングの回転運動を行うことで、仮想空間でのボートBTの動きとライド筐体10の動きを連動させる。またライド筐体10の上下移動を行うことで、水面の変化等によるボートBTの揺れをプレーヤに体感させることができる。このようなライド筐体10のヨーイングや上下移動を行うことで、プレーヤの3D酔いの防止などを実現できるようになる。
4.本実施形態の手法
次に本実施形態の手法について説明する。なお、以下では、実空間のプレーヤに対応する仮想空間の仮想プレーヤがボートに搭乗して、川下りを体験するゲームに本実施形態の手法を適用した場合について主に説明する。但し本実施形態の手法が適用されるゲームはこのようなゲームには限定されない。例えば本実施形態の手法は種々のゲーム(競争ゲーム、ロボットゲーム、FPS(First Person shooter)や格闘ゲーム等の対戦ゲーム、電車や飛行機等の乗り物のシミュレーションゲーム、RPG、アクションゲーム、仮想体験ゲーム、スポーツゲーム、ホラー体験ゲーム、或いは音楽ゲーム等)に適用でき、ゲーム以外にも適用可能である。
4.1 仮想プレーヤの配置
本実施形態では、プレーヤが可動筐体に搭乗し、実空間での方向とは異なった方向を向いて仮想空間上でゲームをプレイする仕組みを提供する。このため本実施形態のシミュレーションシステムは、実空間でのプレーヤの位置や方向を検出し、仮想空間でのゲームの演算制御を行う。そしてプレーヤの仮想空間における位置からの視点に基づきゲーム画像を生成し、生成されたゲーム画像を、プレーヤの視界を覆うように配置された表示部に表示する。実空間の複数のプレーヤは、1つの可動する床板部(ベース部)に搭乗する。そして実空間においては、床板部上にある複数のプレイ位置(座席)に対して、第2のプレーヤは、第1のプレーヤ(前向き着座)とは異なった方向(後ろ向き)に配置される。一方、仮想空間においては、第2のプレーヤ(第2の仮想プレーヤ)は、実空間における方向(後ろ向き)とは異なって方向であって、第1のプレーヤ(第1の仮想プレーヤ)と同じ方向(前向き)に配置される。
具体的には本実施形態では、実空間の複数のプレーヤがライド筐体10の複数のライド位置に搭乗する。例えば図7では、ライド筐体10に対して複数のライド位置PR1、PR2、PR3、PR4が設定されている。ライド位置PR1、PR2、PR3、PR4は例えば座席の位置である。そして図8に示すように、これらの複数のライド位置PR1、PR2、PR3、PR4に対して複数のプレーヤPL1、PL2、PL3、PL4が搭乗する。例えばプレーヤPL1、PL2、PL3、PL4がライド位置PR1、PR2、PR3、PR4に着座する。そして図9に示すように本実施形態では、これらのプレーヤPL1、PL2、PL3、PL4に対応する複数の仮想プレーヤVPL1、VPL2、VPL3、VPL4が、仮想空間に配置設定される。例えば実空間のライド筐体10に対応する移動体MVが仮想空間に用意される。この移動体MVは例えば図6のボートBTである。この移動体MVに搭乗するように仮想プレーヤVPL1、VPL2、VPL3、VPL4が配置設定される。そして複数のプレーヤPL1〜PL4が参加するゲームの処理が行われ、複数の仮想プレーヤVPL1〜VPL4の各仮想プレーヤの視点から見える仮想空間画像が、複数のプレーヤPL1〜PL4の各プレーヤの視界を覆うように配置された表示部190に表示される。例えばプレーヤPL1〜PL4が視界を覆うように装着するHMD1〜HMD4の表示部190に、当該仮想空間画像が表示される。この仮想空間画像は仮想空間において仮想カメラから見える画像である。
そして本実施形態では図7、図8に示すように、実空間でのプレーヤPL1(第1のプレーヤ)のライド方向D1とプレーヤPL2(第2のプレーヤ)のライド方向D2とが、互いに異なる方向になるように、ライド筐体10でのプレーヤPL1〜PL4のライド方向が設定されている。ライド方向D1〜D4は例えば座席の方向である。例えば図7、図8では、プレーヤPL1のライド方向D1は前向き方向であり、プレーヤPL2のライド方向D2は後ろ向き方向であり、向く方向が異なっており、例えば反対方向になっている。プレーヤPL1のライド方向D1とプレーヤPL3(第3のプレーヤ)のライド方向D3も異なっている。一方、プレーヤPL1のライド方向D1とプレーヤPL4(第4のプレーヤ)のライド方向D4は同じ方向になっており、プレーヤPL2のライド方向D2とプレーヤPL3のライド方向D3も同じ方向になっている。即ちプレーヤPL1のライド方向D1及びプレーヤPL4のライド方向D4は前向き方向になっており、プレーヤPL2のライド方向D2及びプレーヤPL3のライド方向D3は後ろ向き方向になっている。
そして本実施形態では図9のA2に示すように、プレーヤPL1に対応する仮想プレーヤVPL1(第1の仮想プレーヤ)の配置方向E1と、プレーヤPL2に対応する仮想プレーヤVPL2(第2の仮想プレーヤ)の配置方向E2とが、基準方向ERに向くように、仮想プレーヤVPL1と仮想プレーヤVPL2を仮想空間に配置設定する。即ち図9のA1に示すように、実空間においてはプレーヤPL1のライド方向D1とプレーヤPL2のライド方向D2は異なる方向になっている。例えばライド方向D1は前向き方向であり、ライド方向D2は後ろ向き方向である。これに対して図9のA2に示すように、仮想空間においては、プレーヤPL1に対応する仮想プレーヤVPL1の配置方向E1と、プレーヤPL2に対応する仮想プレーヤVPL2の配置方向E2は、同じ方向になっている。例えば配置方向E1及び配置方向E2が前向き方向である基準方向ERに設定される。これにより、例えばプレーヤPL2が装着するHMD2には、ライド方向D2である後ろ向き方向に向いた場合の仮想空間画像ではなくて、配置方向E2である前向き方向に向いた場合の仮想空間画像が表示されるようになる。なお配置方向E1、E2、E3、E4は、例えば仮想空間での仮想プレーヤVPL1、VPL2、VPL3、VPL4の向く方向(正面方向)であり、例えば移動体MVでの仮想プレーヤVPL1、VPL2、VPL3、VPL4のライド方向である。
例えば実空間においてプレーヤが搭乗するライド筐体10には場所的な制約がある。例えば複数のプレーヤが搭乗してゲームをプレイするライド筐体10は、その設置面積が大きくなってしまう。このためアミューズメント施設でのライド筐体10の占有面積が大きくなってしまうという問題が生じる。従って、ライド筐体10の設置面積を小さくしながらも、1つのライド筐体10において多くの人数のプレーヤがプレイできるような筐体にすることが望ましい。また図4、図5のように可動機構を用いてライド筐体10のベース部40の姿勢を変化させる場合には、複数のプレーヤが、ベース部40の中央位置に近い場所に座るようにすること望ましい。中央位置からのプレーヤの距離が離れてしまうと、ベース部40の姿勢変化のために用いられるモータやエアバネ等の駆動部に対して、大きな駆動能力が必要になってしまうからである。例えば図5の駆動機構20により可動部材30のヨーイングの回転運動を行う場合に、中央位置からのプレーヤの距離が離れてしまうと、回転モーメントが大きくなってしまう。このため、モータ24−1〜24〜6に対して大きな駆動能力が要求されるようになってしまう。
一方、HMDのようにプレーヤの視界を覆うように表示部が配置される表示装置では、表示部により視界が遮られてしまい、プレーヤが周囲の状況を視覚的に把握することは難しい。従って、設置面積を小さくするために、ライド筐体10に搭乗する複数のプレーヤ間の距離を近づけ過ぎると、プレーヤの体が他のプレーヤにぶつかってしまったり、プレーヤの所持物(操作部等)が他のプレーヤにぶつかってしまうなどの問題が生じる。例えば図8では、プレーヤPL1、PL2、PL3、PL4は、図2(A)で説明したコントローラ270である操作部BP1、BP2、BP3、BP4を手に持っている。これらの操作部BP1〜BP4は、ボートにおけるパドルを模したものであり、プレーヤPL1〜PL4は、操作部BP1〜BP4をパドルのように操作することで、仮想空間でのボートである移動体MVを水面上で走行させることができる。しかしながら、ライド筐体10の設置面積を小さくすると、プレーヤが所持する操作部が他のプレーヤにぶつかってしまうなどの問題も発生する。例えば図8において、プレーヤPL1、PL4のみならず、プレーヤPL2、PL3も前向き方向にライド筐体10に座るような配置であると、後ろのプレーヤPL2、PL3の操作部BP2、BP3が、前のプレーヤPL1、PL4に当たってしまうなどの問題が発生する。
このようにライド筐体10でのプレーヤの配置には様々な場所的な制約がある。一方、仮想空間での仮想プレーヤの向く方向についても、ゲームの設定に従うように決める必要がある。例えば図6のような川下りのゲームでは、ボートBTを漕ぐ複数の仮想プレーヤは、ゲームの設定上、同じ方向を向いていることが望ましい。そして、このようなゲーム設定に従って、実空間のライド筐体10でのプレーヤのライド方向を決めてしまうと、ライド筐体10でのプレーヤの配置の場所的な制約を満たすことができなくなる。例えば仮想空間でのゲーム設定に沿うように、実空間のライド筐体10においても全てのプレーヤPL1〜PL4のライド方向D1〜D4が前向き方向に設定されてしまうと、後ろのプレーヤの体や操作部が前のプレーヤにぶつかってしまうなどの問題が発生してしまう。
そこで本実施形態では、実空間でのプレーヤのライド方向とは異なる方向になるように、仮想空間での仮想プレーヤの配置方向を設定できるようにする。例えば図9のA1に示すように実空間においては、プレーヤPL2のライド方向D2は後ろ向き方向になっているが、A2に示すように仮想空間においては、プレーヤPL2に対応する仮想プレーヤVPL2の配置方向E2を、後ろ向き方向ではなくて前向き方向に設定する。プレーヤPL2は視界を覆うようにHMD2を装着しているため、このように仮想空間での仮想プレーヤVPL2の向く方向が、実空間とは異なる方向に変更されても、不自然さを感じない。
このようにすれば、実空間においては、ライド筐体10でのプレーヤの配置効率や、プレーヤの体や操作部が他のプレーヤにぶつからないようにすることを考慮して、各プレーヤのライド方向やライド位置を設定できる。そして仮想空間においては、仮想空間でのゲーム設定に従うように仮想プレーヤの配置方向や配置位置を設定できるようになる。従って、実空間のライド筐体10における場所的な制約を解消しながら、プレーヤに不自然さを感じさせない仮想現実を実現できるシミュレーションシステムの提供が可能になる。
また本実施形態では図7、図8に示すように、ライド筐体10は、ライド位置PR1(第1のライド位置)に設けられ、プレーヤPL1がライド位置PR1においてライド方向D1(第1のライド方向)で搭乗するライド部41を有する。またライド筐体10は、ライド位置PR2(第2のライド位置)に設けられ、プレーヤPL2がライド位置PR2においてライド方向D2(第2のライド方向)で搭乗するライド部42を有する。同様にライド筐体10は、ライド位置PR3(第3のライド位置)に設けられ、プレーヤPL3がライド位置PR3においてライド方向D3(第3のライド方向)で搭乗するライド部43や、ライド位置PR4(第4のライド位置)に設けられ、プレーヤPL4がライド位置PR4においてライド方向D4(第4のライド方向)で搭乗するライド部44を有する。
このようなライド部41、42を設けることで、プレーヤPL1のライド方向D1を、例えば前向き方向などに規制でき、プレーヤPL2のライド方向D2を、例えば後ろ向き方向などのライド方向D1とは異なる方向に規制できる。従って、これらのライド部41、42を設けることで、プレーヤPL1のライド方向D1とプレーヤPL2のライド方向D2とが互いに異なる方向になるように、各プレーヤのライド方向を設定できるようになる。同様にライド部43を設けることで、プレーヤPL3のライド方向D3を、例えば後ろ向き方向などのライド方向D1とは異なる方向に規制できる。またライド部44を設けることで、プレーヤPL4のライド方向D4を、例えば前向き方向などのライド方向D1と同じ方向に規制できるようになる。
なお図9、図10では、ライド部の背もたれや座面が規制部材となって、各プレーヤのライド方向が規制されているが、ライド方向を規制する規制部材はこれに限定されない。例えばシートの肘掛けや、シートに対してプレーヤを固定するベルトや、或いは長辺方向がライド方向に沿った1又は複数の棒状部材などの種々の規制部材により、ライド方向を規制することが可能である。
また図7、図8ではプレーヤPL3(第3のプレーヤ)のライド筐体10でのライド方向D3は、プレーヤPL1のライド方向D1とは異なる方向に設定されている。例えばプレーヤPL1のライド方向D1は前向き方向であるのに対して、プレーヤPL3のライド方向D3は後ろ向き方向になっている。
この場合に本実施形態では図9のA2に示すように、プレーヤPL3に対応する仮想プレーヤVPL3(第3の仮想プレーヤ)の配置方向E3が、基準方向ERに向くように、仮想プレーヤVPL3を仮想空間に配置設定する。そして仮想プレーヤVPL2を、プレーヤPL2のライド位置PR2に対応する配置位置(PV3)とは異なる配置位置PV2に配置する。また仮想プレーヤVPL3を、プレーヤPL3のライド位置PR3に対応する配置位置(PV2)とは異なる配置位置PV3に配置する。
即ち、実空間ではプレーヤPL2はライド筐体10の左後ろのライド位置PR2に座っている。そして、このライド筐体10の左後ろのライド位置PR2に対応する移動体MVの左後ろの配置位置はPV3である。従って、通常ならば、移動体MVでの仮想プレーヤVPL2の配置位置はPV3になるはずであるが、本実施形態では、このPV3とは異なる右後ろの配置位置PV2に仮想プレーヤVPL2を配置する。
また実空間ではプレーヤPL3はライド筐体10の右後ろのライド位置PR3に座っている。そして、このライド筐体10の右後ろのライド位置PR3に対応する移動体MVの右後ろの配置位置はPV2である。従って、通常ならば、移動体MVでの仮想プレーヤVPL3の配置位置はPV2になるはずであるが、本実施形態では、このPV2とは異なる左後ろの配置位置PV3に仮想プレーヤVPL3を配置する。
より具体的には本実施形態では、仮想プレーヤVPL2を、プレーヤPL3のライド位置PR3に対応する右後ろの配置位置PV2に配置し、仮想プレーヤVPL3を、プレーヤPL2のライド位置PR2に対応する左後ろの配置位置PV3に配置する。別の言い方をすれば図10のB1に示すように、仮想プレーヤVPL2、VPL3の中央点CTを基準にして配置位置及び配置方向を180度回転させる。これにより図10のB2においては後ろ向き方向であった仮想プレーヤVPL2、VPL3の配置方向E2、E3が、B3に示すように前向き方向になる。即ち基準方向ERになる。またB2では、仮想プレーヤVPL2の配置位置PV2は左側であり、仮想プレーヤVPL3の配置位置PV3は右側であったのが、B3では、仮想プレーヤVPL2の配置位置PV2は右側になり、仮想プレーヤVPL3の配置位置PV3は左側になる。
このように本実施形態では、仮想プレーヤVPL2、VPL3の配置方向E2、E3だけではなく、配置位置PV2、PV3についても変更している。例えば実空間のプレーヤPL1、PL2、PL3、PL4は操作部BP1、BP2、BP3、BP4を手に持ってボートを漕ぐ操作を行う。そして仮想プレーヤVPL1、VPL2、VPL3、VPL4は、操作部BP1、BP2、BP3、BP4に対応するパドルCP1、CP2、CP3、CP4を手に持っている。
この場合に図9のA1において、実空間のプレーヤPL2は自身の右側に川の水面があるものとして操作部BP2を操作する。またプレーヤPL3は自身の左側に川の水面があるものとして操作部BP3を操作する。従って、仮想空間において、仮想プレーヤVPL2を、移動体MVの左後ろの位置に前向き方向で配置し、仮想プレーヤVPL3を、移動体MVの右後ろの位置に前向き方向で配置してしまうと、水面の位置に矛盾が生じてしまう。即ち、実空間では、プレーヤPL2の右側に水面があるはずなのに、仮想空間では、仮想プレーヤVPL2の左側に水面が存在し、実空間では、プレーヤPL3の左側に水面があるはずなのに、仮想空間では、仮想プレーヤVPL3の右側に水面が存在するというような矛盾が生じてしまう。
この点、本実施形態では、図9のA2に示すように、仮想プレーヤVPL2は、移動体MVの左後ろではなく、右後ろの位置に前向き方向で配置される。従って、A2の仮想空間においても、A1の実空間と同様に、自身の右側に水面が存在するようになり、パドルCP2を右側の水面に入れて漕ぐことが可能になる。またA2に示すように、仮想プレーヤVPL3は、移動体MVの右後ろではなく、左後ろの位置に前向き方向で配置される。従って、A2の仮想空間においても、A1の実空間と同様に、自身の左側に水面が存在するようになり、パドルCP3を左側の水面に入れて漕ぐことが可能になる。従って、実空間と仮想空間との間で矛盾が生じないようになり、プレーヤが不自然さを感じない仮想現実を実現できるようになる。
また本実施形態では、複数のプレーヤPL1〜PL4に対応する複数の仮想プレーヤVPL1〜VPL4が搭乗する移動体MVを、仮想空間において移動させる処理を行う。そして基準方向ERは、移動体の移動方向に対応する方向となっている。即ち仮想プレーヤPL1〜PL4の配置方向が、移動体の移動方向に対応する基準方向ERを向くように、仮想プレーヤVPL1〜VPL4が配置設定される。このようにすれば、仮想空間において移動体MVが移動する場合に、仮想プレーヤVPL1〜VPL4は、移動体MVの移動方向である基準方向ERに向くように移動体MVに搭乗するようになる。これにより移動体に搭乗して仮想空間を移動するゲームに好適な仮想空間画像を、プレーヤに表示できるようになる。
なお基準方向ERは、移動体MVの移動方向には限定されず、移動体MVの移動方向とは異なる方向を基準方向ERに設定してもよい。例えば仮想空間においてプレーヤが注視すべき方向を基準方向ERに設定してもよい。例えばゲームにおいてイベントが発生する方向を基準方向ERに設定してもよい。また第1のグループの仮想プレーヤと第2のグループの仮想プレーヤとで、配置方向となる基準方向を異ならせてもよい。例えば第1のグループの仮想プレーヤの配置方向を第1の基準方向に設定し、第2のグループの仮想プレーヤの配置方向を第2の基準方向に設定してもよい。また移動体MVの移動方向に対応する方向は、移動体MVの移動方向そのものであってもよいし、移動方向と所定の方向関係になる方向であってもよい。例えば移動方向と直交する方向などであってもよい。
また仮想プレーヤVPL1〜VPL4の配置方向E1〜E4は、例えば仮想空間において各仮想プレーヤのデフォルト状態において向く方向として設定される方向であり、デフォルト状態(初期状態)ではプレーヤPL1〜PL4のHMD1〜HMD4には、配置方向E1〜E4を視線方向とする仮想空間画像が表示される。一方、図11に示すようにプレーヤPL2、PL3が頭部を動かして、ライド方向D2、D3とは異なる方向に視線方向VD2、VD3を変化させたとする。この場合には、プレーヤPL2、PL3の視線方向VD2、VD3の変化が、HMD2、HMD3のトラッキング処理により取得され、仮想プレーヤVPL2、VPL3の視線方向VE2、VE3も対応する方向に向くように変化する。具体的にはプレーヤPL2、PL3の視線方向VD2、VD3の相対的な回転角度(相対回転情報)が取得され、仮想プレーヤVPL2、VPL3の視線方向VE2、VE3も、この相対的な回転角度だけ変化する。即ち、プレーヤPL2、PL3のライド方向D2、D3に対する視線方向VD2、VD3の相対回転情報が取得され、仮想プレーヤの配置方向E2、E3と相対回転情報(回転角度)に基づいて視線方向VE2、VE3が求められる。
例えば図11ではプレーヤPL2は、視線方向VD2を、ライド方向D2に対して右方向側に変化させている。この場合に仮想プレーヤVPL2の視線方向VE2も、配置方向E2に対して右方向側に変化する。即ち配置方向E2はライド方向D2の反対方向になっているが、ライド方向D2に対する視線方向VD2の変化方向は右方向側であり、配置方向E2に対する視線方向VE2の変化方向も右方向側になり、相対的に同じ方向側に同じ回転角度だけ変化する。またプレーヤPL3は、視線方向VD3を、ライド方向D3に対して左方向側に変化させている。この場合に仮想プレーヤVPL3の視線方向VE3も、配置方向E3に対して左方向側に変化する。即ち配置方向E3はライド方向D3の反対方向になっているが、ライド方向D3に対する視線方向VD3の変化方向は左方向側であり、配置方向E3に対する視線方向VE3の変化方向も左方向側になり、相対的に同じ方向側に同じ回転角度だけ変化する。このようにすることで、配置方向E2、E3をライド方向D2、D3とは異なる方向に設定しても、矛盾の無い仮想空間画像をプレーヤPL2、PL3のHMD2、HMD3に表示できるようになる。
なおプレーヤのライド方向や仮想プレーヤの配置方向の設定としては種々の変形実施が可能である。例えば図12ではプレーヤPL1のライド方向D1は左斜め前方向、プレーヤPL2のライド方向D2は左斜め後ろ方向に設定されている。またプレーヤPL3のライド方向D3は右斜め後ろ方向、プレーヤPL4のライド方向D4は右斜め前方向に設定されている。即ちライド筐体10の中央から放射状となる方向に各ライド方向が設定されている。このようなライド方向の設定とすることで、少ない占有面積のライド筐体10に対してより多くのプレーヤを搭乗させることが可能になる。
そして図12では、このようなライド方向D1〜D4で搭乗するプレーヤPL1〜PL4に対応する仮想プレーヤVPL1、VPL4の配置方向E1〜E4が、基準方向ERに設定される。このようにすることで、ライド筐体10での効率的なプレーヤ配置を実現しながら、プレーヤに不自然さを感じさせない仮想現実を実現できるようになる。
また本実施形態では、プレーヤに対応する仮想プレーヤの配置方向又は配置位置が、プレーヤのライド方向又はライド位置とは異なる方向又は位置に設定されている。この場合に、仮想プレーヤの配置方向又は配置位置に応じた音源を仮想空間に設定し、実空間で取得されたプレーヤの音声を、このように設定された音源から発生させる。
例えば図13ではプレーヤPL2が叫び声を発している。このプレーヤPL2の叫び声などの音声はマイクにより集音される。そして、集音された音声は他のプレーヤPL1、PL3、PL4のスピーカから出力される。このように他のプレーヤの音声を聞けるようにすることで、仮想現実感の向上を図れる。或いはプレーヤ間でチャットによる会話などが可能になる。
そして、このようにして集音された音声の音場形成の処理を行う際に、実空間でのプレーヤの位置情報、方向情報に基づいて音場形成を行うと、矛盾が生じるおそれがある。例えば図13において実空間では、プレーヤPL2はプレーヤPL1の真後ろにおいて、後ろ向きの方向のライド方向D2で着座している。そしてライド方向D2に対して右方向に顔を向けて音声を発している。従って、実空間でのプレーヤの位置情報、方向情報に基づいて音場形成の処理を行うと、プレーヤPL1には、プレーヤPL1の真後ろにおいて、左斜め後ろ方向SD2にプレーヤPL2が音声を発しているような音場が形成されてしまうことになる。ところが、仮想空間では、プレーヤPL2に対応する仮想プレーヤVPL2は、プレーヤPL1の右斜め後ろ側において、前向き方向の配置方向E2で着座している。従って、実空間のように左斜め後ろ方向SD2にプレーヤPL2が音声を発しているような音場が形成されてしまうと、仮想空間の状況と一致しなくなり矛盾が生じてしまう。
そこで本実施形態では、プレーヤの音声の音場形成の処理の際に、実空間でのプレーヤの位置情報、方向情報ではなく、仮想空間での仮想プレーヤの位置情報、方向情報を用いる。例えば図13において仮想空間の仮想プレーヤVPL2の配置方向E2、配置位置PV2に基づき音源を設定し、配置方向E2、配置位置PV2に応じて音声が発生されるような音場を形成する。即ち、仮想プレーヤVPL2の配置方向E2に対して右側方向である方向SE2の方に音声を発しているものとして音場形成の処理を行う。このようにすれば、例えばプレーヤPL1には、自身の右斜め後ろ側において、右斜めの方向SE2にプレーヤPL2が音声を発生しているように聞こえるようになる。従って、仮想空間の状況と一致するようになり、上記のような矛盾が生じるのを防止できるようになる。
また本実施形態では、プレーヤPL1が操作部BP1(第1の操作部)を用いて入力した第1の操作情報と、プレーヤPL2が操作部BP2(第2の操作部)を用いて入力した第2の操作情報に基づいて、ゲーム処理を行う。例えばプレーヤPL1に対応する仮想プレーヤVPL1とプレーヤPL2に対応する仮想プレーヤVPL2が搭乗する移動体MVを、第1、第2の操作情報に基づいて、仮想空間において移動させる処理を行う。例えば4人のプレーヤがライド筐体10に搭乗する場合には、プレーヤPL1〜PL4が操作部BP1〜BP4を用いて入力した第1〜第4の操作情報に基づいて、ゲーム処理を行う。例えばプレーヤPL1〜PL4に仮想プレーヤVPL1〜VPL4が搭乗する移動体MVを、第1〜第4の操作情報に基づいて、仮想空間において移動させる処理を行う。このようにすることで、移動体MVに搭乗するプレーヤの操作情報を反映させた移動体の移動処理などのゲーム処理を実現できるようになる。
そして本実施形態では図14に示すように、プレーヤPL1の操作部BP1の操作範囲AR1と、プレーヤPL2の操作部BP2の操作範囲AR2とは、互いに重ならない範囲に設定される。例えばプレーヤPL1のライド位置PR1に対して、操作部BP1の操作範囲AR1は左斜め前方向に設定されており、プレーヤPL2のライド位置PR2に対して、操作部BP2の操作範囲AR2は左斜め後ろ方向に設定されている。例えば操作範囲AR1は、プレーヤPL1の正面側の方向であって、ライド筐体10のベース部40(床板部)の外周位置付近の障害物がない場所に設定されている。また操作範囲AR2は、プレーヤPL2の正面側の方向であって、ライド筐体10のベース部40の外周位置付近の障害物がない場所に設定されており、両者の操作範囲AR1、AR2は重ならないようになっている。同様に4人のプレーヤがライド筐体10に搭乗する場合には、プレーヤPL1、PL2、PL3、PL4の操作部BP1、BP2、BP3、BP4の操作範囲AR1、AR2、AR3、AR4が、互いに重ならない範囲に設定される。
例えば、このような操作範囲の設定を行わないと、プレーヤの操作部同士がぶつかってしまったり、操作部が他のプレーヤにぶつかってしまうなどの事態が発生するおそれがある。例えばプレーヤは視界を覆うようにHMDを装着しているため、自身の周囲の様子を視覚的に把握できず、このような事態が発生する可能性が高い。この点、本実施形態では、操作部の操作範囲が互いに重ならないように設定されている。従って、プレーヤの操作部同士がぶつかってしまったり、操作部が他のプレーヤにぶつかってしまうような事態が発生するのを防止できるようになる。例えば本実施形態では、プレーヤPL2のライド方向D2がプレーヤPL1のライド方向D1の反対方向に設定されている。従って図14において、操作範囲AR1はプレーヤPL1のライド位置PR1に対して前方向側に設定され、操作範囲AR2はプレーヤPL2のライド位置PR2に対して後ろ方向側に設定されるため、操作範囲AR1とAR2が重なってしまうのを効果的に防止できる。
なお、操作部の操作範囲が重ならないようにする設定は、プレーヤのライド方向の設定により実現してもよいし、ライド筐体10への操作部の取り付け態様などにより実現してもよい。例えば、プレーヤが操作部を手に所持して自由に動かせるのではなく、取付具を用いてライド筐体10に対して各プレーヤの操作部を取り付ける。そして、この取付具による取り付け方を工夫することで、操作部の操作範囲が重ならないようにする設定を実現してもよい。
また本実施形態では仮想プレーヤが搭乗する移動体をプレーヤの操作情報に基づいて仮想空間において移動させる。例えば図15のG1では、プレーヤPL1、PL4の両方が操作部BP1、BP4により漕ぐ操作を行っている。この場合にはG2に示すように移動体MVは前方向に移動する。G3では、右側のプレーヤPL4だけが操作部BP4を操作している。この場合にはG4に示すようにライド筐体10に対応する移動体(MV)は左方向に曲がる移動を行う。この時に図4、図5で説明したライド筐体10は、駆動機構20及び可動部材30による第1の可動機構により、左回転のヨーイングの回転運動を行う。このようにすることで、移動体が左方向に曲がっていることをプレーヤに体感させることができる。またG5では、左側のプレーヤPL1だけが操作部BP1を操作している。この場合にはG6に示すようにライド筐体10に対応する移動体は右方向に曲がる移動を行う。この時にライド筐体10は第1の可動機構により、右回転のヨーイングの回転運動を行う。このようにすることで、移動体が右方向に曲がっていることをプレーヤに体感させることができる。
そして本実施形態では、複数のプレーヤの操作情報による入力値の合算値に基づいて、移動体を仮想空間において移動させる。例えば4人のプレーヤがライド筐体10に搭乗する場合には、プレーヤPL1〜PL4の第1〜第4の操作情報による第1〜第4の入力値の合算値に基づいて、移動体を仮想空間において移動させる。
例えば図16においてプレーヤPL1が操作部BP1により漕ぐ操作を行うことで、入力値IV1(第1の入力値)が取得される。入力値IV1は、プレーヤPL1による操作部BP1の操作量に応じてその値が変化する。例えば操作部BP1の操作量が大きければ入力値IV1は大きくなり、操作量が小さければ入力値IV1は小さくなる。またプレーヤPL2が操作部BP2により漕ぐ操作を行うことで、入力値IV2(第2の入力値)が取得される。入力値IV2は、プレーヤPL2による操作部BP2の操作量に応じてその値が変化する。例えば操作部BP2の操作量が大きければ入力値IV2は大きくなり、操作量が小さければ入力値IV2は小さくなる。同様にプレーヤPL3、PL4が操作部BP3、BP4により漕ぐ操作を行うことで、入力値IV3、IV4が取得され、これらの入力値IV3、IV4は、操作部BP3、BP4の操作量に応じてその値が変化する。
そして本実施形態では、これらの入力値IV1〜IV4の合算値に基づいて、仮想空間での移動体MVの移動処理を行う。例えば入力値IV1〜IV4の各入力値が大きければ、その合算値も大きくなり、移動体MVの移動速度又は移動加速度が大きくなる。また入力値IV1〜IV4の各入力値が小さければ、その合算値も大きくなり、移動体MVの移動速度又は移動加速度が小さくなる。この場合に実空間においては、プレーヤPL1、PL4のライド方向D1、D4と、プレーヤPL2、PL3のライド方向D2、D3は反対方向になっている。しかしながら、図9で説明したように仮想空間においては、仮想プレーヤVPL1、VPL4の配置方向E1、E4と、仮想プレーヤVPL2、VPL3の配置方向E2、E3は同じ方向になっている。従って図16のように操作が行われた場合に、プレーヤPL1、PL4の操作部BP1、BP4の操作方向と、プレーヤPL2、PL3の操作部BP2、BP3の操作方向は、同じ方向であるとして、入力値IV1〜IV4の合算値に基づく移動体MVの移動処理を行う。例えば実空間では入力値IV1の操作方向と入力値IV2の操作方向は反対方向であるが、これが同じ方向であるとして入力値IV1と入力値IV2の合算処理(加算処理)を行う。また実空間では入力値IV3の操作方向と入力値IV4の操作方向は反対方向であるが、これが同じ方向であるとして入力値IV3と入力値IV4の合算処理を行う。このようにすることで仮想空間での仮想プレーヤの配置方向を反映した適切な移動体MVの移動処理を実現できるようになる。
なお本実施形態の表示部190は、複数のプレーヤの各プレーヤが装着するHMDの表示部となっている。例えばHMDはプレーヤの視界を覆うように装着されるため、図9のように実空間でのプレーヤのライド方向と仮想空間での仮想プレーヤの配置方向を異ならせても、プレーヤに気づかれないで済むようになる。そして、このようなHMDの表示部に仮想空間画像を表示することで、プレーヤの視界の全周囲に亘って広がるVR空間を表現できるようになり、プレーヤの仮想現実感を大幅に向上できる。
また本実施形態ではライド筐体10は、可動筐体となっており、ライド筐体10のベース部40のヨーイングを行う第1の可動機構と、ベース部40の上下移動を行う第2の可動機構を含む。例えば図4、図5で説明したように、駆動機構20及び可動部材30により第1の可動機構が実現され、エアバネ32−1〜32−4により第2の可動機構が実現される。そして図15で説明したように移動体が左方向や右方向に曲がるような移動が行われる場合には、第1の可動機構によりベース部40のヨーイングが行われる。このようにすれば、仮想空間での移動体の左回転や右回転と、実空間でのライド筐体10の左回転や右回転が連動するようになる。これによりプレーヤの仮想現実感の向上を図れると共に3D酔いの防止等を図れるようになる。また第2の可動機構がベース部40の上下移動を行うことで、移動体が水面を移動する場合の水面の変化や移動体が地面を移動する場合の地面のガタガタ道などの表現が可能になり、プレーヤの仮想現実感の向上や3D酔いの防止等の実現が可能になる。
一方、本実施形態では、可動機構によるベース部40のローリングやピッチングについては行わないようにする。例えば図9においてライド筐体10のベース部40が左方向に傾くローリングが行われた場合に、プレーヤPL1は、ベース部40のローリングを左方向へのローリングとして体感することができるが、プレーヤPL2は後ろ向きに座っているため、ベース部40のローリングを右方向へのローリングとして体感してしまう。またベース部40が右方向に傾くローリングが行われた場合に、プレーヤPL1は、ベース部40のローリングを右方向へのローリングとして体感することができるが、プレーヤPL2は左方向へのローリングとして体感してしまう。従って、実空間と仮想空間との間で矛盾が生じてしまい、プレーヤが不自然さを感じる事態が生じてしまう。またベース部40が前方向に傾くピッチングが行われた場合に、プレーヤPL1は、ベース部40のピッチングを前方向へのピッチングとして体感することができるが、プレーヤPL2は後ろ方向へのピッチングとして体感してしまう。またベース部40が後ろ方向に傾くピッチングが行われた場合に、プレーヤPL1は、ベース部40のピッチングを後ろ方向へのピッチングとして体感することができるが、プレーヤPL2は前方向へのピッチングとして体感してしまう。従って、実空間と仮想空間との間で矛盾が生じてしまい、プレーヤが不自然さを感じる事態が生じてしまう。
この点、本実施形態では、第1の可動機構によるベース部40のヨーイングと第2の可動機構によるベース部40の上下移動が行われるだけであるため、上記のような実空間と仮想空間の間で矛盾が生じる事態を防止できる。そして、このようなヨーイングと上下移動を行うことで、プレーヤの仮想現実感の向上と3D酔いの発生の防止とを実現できるという利点がある。
4.2 配置例
次に本実施形態の種々の配置例について説明する。図17(A)の実空間のライド筐体10では、プレーヤPLA、PLBが前方向の向きに配置され、プレーヤPLC、PLDが後ろ方向の向きに配置されている。一方、図17(B)の仮想空間の移動体MVでは、プレーヤPLA、PLBに対応する仮想プレーヤVPLA、VPLBが前方向の向きに配置されると共に、プレーヤPLC、PLDに対応する仮想プレーヤVPLC、VPLDも前方向の向きに配置される。即ちプレーヤPLC、PLDについては方向が反対方向に設定される。更に仮想プレーヤVPLCはプレーヤPLDの配置位置に対応する位置に配置され、仮想プレーヤVPLDはプレーヤPLCの配置位置に対応する位置に配置されており、仮想プレーヤVPLC、VPLDについての配置位置の入れ替えが行われている。
また図18(A)の実空間のライド筐体10では、プレーヤPLA、PLBが前方向の向きに配置され、プレーヤPLC、PLDが後ろ方向の向きに配置されている。一方、図18(B)の仮想空間では、ライド筐体10に対応して2つの移動体MV1、MV2が用意される。そして移動体MV1の前側に仮想プレーヤVPLA、VPLBが配置され、後ろ側にゴーストプレーヤGPLA、GPLBが配置される。また移動体MV2の前側に仮想プレーヤVPLC、VPLDが配置され、後ろ側にゴーストプレーヤGPLC、GPLDが配置される。ゴーストプレーヤGPLA〜GPLDはコンピュータにより制御されるノンプレーヤキャラクタである。
図19(A)の配置例では、プレーヤPLA、PLBは筐体(ライド筐体)の前方側を向いた状態で座席(広義にはライド部)に座り、プレーヤPLC、PLDは筐体の後方側を向いた状態で座席に座る。そしてプレーヤPLA、PLCは自分の体の左側においてパドル(広義には操作部)を漕ぎ、プレーヤPLB、PLDは自分の体の右側においてパドルを漕ぐ。
一方、ゲーム空間である仮想空間においては、図19(B)、図19(C)に示すようにプレーヤに対応する仮想プレーヤを配置する。例えばプレーヤPLA、PLBのHMDの画面(PLA、PLBの仮想空間内)においては、図19(B)のような向きで配置する。即ちボート(広義には移動体)の前列側に仮想プレーヤVPLA、VPLBを配置する。そして仮想プレーヤVPLAの真後ろに仮想プレーヤVPLCを配置し、仮想プレーヤVPLBの真後ろに仮想プレーヤVPLDを配置する。
またプレーヤPLC、PLDのHMDの画面(PLC、PLDの仮想空間内)においては、図19(C)のような向きで配置する。即ちボートの前列側に仮想プレーヤVPLC、VPLDを配置する。ここで筐体の前方方向に対してボートの前方方向は反対方向になっている。そして仮想プレーヤVPLCの真後ろに仮想プレーヤVPLAを配置し、仮想プレーヤVPLDの真後ろに仮想プレーヤVPLBを配置する。
図19(A)〜図19(C)のような配置を採用するのは、実空間と仮想空間とで、プレーヤが漕ぐパドルの位置や、回転による移動及び遠心力の相対的な方向を一致させるためである。例えば図19(B)のように配置することで、図19(A)の実空間と同様に図19(B)の仮想空間においても、仮想プレーヤVPLAの左側にパドルが位置し、仮想プレーヤVPLBの右側にパドルが位置するようになる。また図19(C)のように配置することで、図19(A)の実空間と同様に図19(C)の仮想空間においても、仮想プレーヤVPLCの左側にパドルが位置し、仮想プレーヤVPLDの右側にパドルが位置するようになる。従って、実空間と仮想空間との間でパドルの位置に矛盾が生じないようになる。
また例えば実空間において図20(A)に示すような方向の遠心力CFが発生したとする。例えば筐体(ライド筐体)のヨーイングによる回転により、このような方向の遠心力CFが発生したとする。この場合に図20(B)のゲーム中の仮想プレーヤVPLCに対しては、ヨーイングによる回転により、CFGに示すような方向の遠心力が作用すべきある。しかしながら、実際にはプレーヤPLCは、実空間での筐体の回転により、CFRに示すような方向の遠心力が働いていると体感してしまう。従って、実空間と仮想空間とで遠心力の方向の不一致が発生してしまう。この点、図19(A)〜図19(C)の配置手法によれば、このような遠心力の方向の不一致の問題が発生するのを防止できる。即ち図19(C)のゲーム中においても、仮想プレーヤVPLCに対して、紙面において左斜め方向に遠心力が働くことになるため、実空間と仮想空間とで遠心力の方向が一致するようになる。
また図19(A)〜図19(C)の配置手法によれば、プレーヤの全員が、自身の画面上(仮想空間)においては、自分がボートの前列側に座っている状態となる。例えばプレーヤPLA、PLBの画面においては、図21(A)に示すように、対応する仮想プレーヤVPLA、VPLBがボートの前列側に座っている状態になる。またプレーヤPLC、PLDの画面においては、図21(B)に示すように、対応する仮想プレーヤVPLC、VPLDがボートの前列側に座っている状態になる。従って、各プレーヤの前方側に他のプレーヤがいない状態になるため、プレーヤの視界が遮られずに済むという利点がある。
また図19(A)〜図19(C)の配置手法によれば、実空間で横に座っている人は、仮想空間(ゲーム中)においても同じ位置に座っている状態になる。例えば実空間ではプレーヤPLAの右隣にプレーヤPLBが座っているが、仮想空間においても仮想プレーヤVPLAの右隣に仮想プレーヤVPLBが座っている状態になる。また実空間ではプレーヤPLCの右隣にプレーヤPLDが座っているが、仮想空間においても仮想プレーヤVPLCの右隣に仮想プレーヤVPLDが座っている状態になる。
また図19(A)〜図19(C)の配置手法では、実空間において背面側に座っている2人のプレーヤについては、実空間と仮想空間とで位置関係が変化する。例えば実空間では、プレーヤPLAの背面側にプレーヤPLDが座り、プレーヤPLBの背面側にプレーヤPLCが座っている。これに対して仮想空間では、仮想プレーヤVPLAの背面側に仮想プレーヤVPLCが座り、仮想プレーヤVPLBの背面側に仮想プレーヤVPLDが座っている。このため、実空間で背面側に座っているプレーヤが音声を発すると、実空間と仮想空間での配置位置の違いにより違和感が生じるおそれがある。例えば図22(A)においてプレーヤPLCが音声を発すると、図22(B)のH1に示すように仮想プレーヤVPLDの位置から、後ろ側方向に音声が発せられたように聞こえてしまう。そこで図22(B)のH2に示すように、仮想プレーヤVPLCの位置から前側方向に音声が発せられたように聞こえるように、音場の形成処理を行う。例えば音声の音源を仮想プレーヤVPLCの位置に設定し、音声の発声方向も前側方向に設定する。即ち図13で説明したような音源の設定処理や音場の形成処理を行うようにする。このようにすることで、プレーヤが不自然さを感じないボイスチャットシステム等を実現できるようになる。
4.3 詳細な処理例
次に本実施形態の詳細な処理例について説明する。例えば本実施形態では、プレーヤの頭部(HMD)とパドル(パドル型コントローラ)のトラッキング処理を行い、ゲーム中に反映させる。しかしながら、各プレーヤの座席の位置や方向は、実空間と仮想空間とで異なる上に、どのプレーヤの画面上かによっても差異があるため、トラッキング情報をそのまま反映させることはできない。そこで、どのようにしてトラッキング情報の加工を行い、各プレーヤの画面上に反映させればよいかが課題となる。
例えば本実施形態ではプレーヤの頭部と、プレーヤが所持するパドルのトラッキング処理を行い、トラッキング情報(位置情報、回転情報)を取得する。このトラッキング処理は図2(A)〜図3(B)で説明した手法などにより実現できる。
またゲーム中において可視化されるのは、プレーヤの体の部位と持ち物である。例えば可視化される部位はプレーヤの頭部である。但し、視界の邪魔になるため自分自身の頭部は表示しないようにする。即ち、各プレーヤの画面上では、他のプレーヤの頭部は表示されるが、自身のプレーヤの頭部は非表示にする。また可視化されるのは、所持物であるパドルやプレーヤの下半身である。ここで下半身に対してはトラッキング処理は行われず、ボートに固定して表示する。例えば下半身はボートの一部のような取り扱いとする。
取得されたトラッキング情報は、図23に示すように、各プレーヤに割り当てられたPC(処理装置)のみに直接に送信される。トラッキング結果が反映された全プレーヤ分の頭部及びパドルの表示を、各プレーヤの画面上(HMD)において行うためには、ネットワーク通信によるトラッキング情報の伝達が必要になる。
ここで、前述したように、各プレーヤの座席の位置、方向は、実空間と仮想空間(ゲーム)とで異なったものになる上に、どのプレーヤの画面上なのかによっても差異があるため、トラッキング情報をそのまま反映させることができないという問題がある。例えば図21(A)に示すように、プレーヤPLAの画面上では、仮想プレーヤVPLBはボートの前列の右側に座っている。一方、図21(B)に示すように、プレーヤPLC、PLCの画面上では、仮想プレーヤVPLBはボートの後列の右側に座っている。
そこで本実施形態では、プレーヤのライド位置に対する相対的な視点位置の情報である相対位置情報と、プレーヤのライド方向に対するプレーヤの相対的な視線方向の情報である相対回転情報を取得する。そして仮想プレーヤの配置位置と相対位置情報に基づいて仮想カメラの視点位置を求め、仮想プレーヤの配置方向と相対回転情報に基づいて仮想カメラの視線方向を求める。具体的には以下に説明するような手順で処理を行う。
まず手順1では、トラッキング情報を、座席の位置(広義にはライド位置)に対する相対位置情報と、座席の方向(広義にはライド方向)に対する相対回転情報に変換する。ここで座席の位置(ライド位置)は、図24に示すように、例えば座面中央の点から地面への垂線の足の位置とする。また座席の方向(ライド方向)は、例えば座面に座ったプレーヤの正面方向とする。そして、トラッキング情報である頭部の位置(視点位置)の情報を、座席の位置に対する相対的な頭部の位置を表す相対位置情報に変換する。またトラッキング情報である頭部の方向(視線方向)の情報を、座席の方向に対する相対的な頭部の方向を表す相対回転情報に変換する。
次に手順2では、手順1で得られた相対位置情報、相対回転情報を、プレーヤ番号に関連づけて他のPCに送信する。即ち図23で説明したようなネットワーク通信により他のPCに送信する。
次に手順3では、手順2で受信情報を受信したPC上において、当該受信情報に含まれるプレーヤ番号から、当該PC上における各プレーヤの座席のワールド空間での位置情報、回転情報を求める。ワールド空間での位置情報、回転情報とは、ボートが配置されている仮想空間における絶対的な位置、方向の情報である。即ち、ワールド空間での位置情報、回転情報は、仮想プレーヤの配置位置、配置方向の情報である。
次に手順4では、図25に示すように、ワールド空間での位置情報、回転情報に対して、受信情報に含まれる相対位置情報、相対回転情報を加える処理(加算処理)を行う。具体的には仮想プレーヤの配置位置、配置方向の情報に対して、相対位置情報、相対回転情報を加える処理を行う。これにより、トラッキング対象である頭部及びパドル(パドル側コントローラ)のワールド空間での位置情報、回転情報を求める。即ち、仮想カメラの視点位置、視線方向の情報を求める。
以上の手順1〜手順4の処理を、全プレーヤ分の頭部及びパドルに対して実行する。これにより、画面後のプレーヤの座席の位置の際は、手順3の処理により吸収されるようになる。また手順1において、座席の位置、方向に対する相対位置情報、相対回転情報を求めているため、その後の手順2〜手順4において、実空間と仮想空間との間でのプレーヤの方向の差異を考慮する必要がなくなる。従って、上述したような課題を解消して、トラッキング対象の適正なトラッキング処理を実現できるようになる。
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(筐体、ライド部、操作部、移動体等)と共に記載された用語(ライド筐体、座席、コントローラ・パドル、ボート等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またシミュレーションシステムの構成、ライド筐体の構成、構造、仮想プレーヤの配置設定処理、仮想空間画像の生成及び表示処理、ライド方向の設定、ゲーム処理、音処理等も、本実施形態で説明したものに限定されず、これらと均等な手法・処理・構成も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲーム装置、家庭用ゲーム装置、又は多数のプレーヤが参加する大型アトラクションシステム等の種々のシミュレーションシステムに適用できる。