説明

入力装置を制御し、コリジョンデータを生成し、カメラ角度を制御する方法およびシステム

【課題】ゲームプレーヤにより良好なゲームプレーイング体験を提供する。
【解決手段】方法は、コントローラのポインタ位置および傾斜角をサンプリングするステップと、サンプリングに基づいて中心領域傾斜値を計算するステップと、計算した中心領域傾斜値に基づいて上限および下限傾斜値限度を計算するステップと、ビデオゲームシステムが、ゲームプレーヤのコントローラの使用に基づいて仮想ポインタY軸値を処理することができるように、計算した値を格納するステップを含み、ポインタ位置は、コントローラとモニタの画面との間の相互関係に基づいている。

【発明の詳細な説明】
【技術分野】
【0001】
優先権の特典
本願は、共に参照によりその全体が本明細書に組み込まれる2007年6月12日出願の米国仮出願第60/929,143号および2007年6月13日出願の米国仮出願第60/929,144号の特典を主張するものである。
【0002】
本発明の実施形態は、入力装置を制御し、コリジョンデータを生成し、カメラ角度を制御する方法およびシステムに関する。
【背景技術】
【0003】
ビデオゲームコンソールは、1970年代初期から存在している。この世代の最も人気のあるゲームの1つは、ピンポン型のビデオゲームであるPongであった。以来、こうしたビデオゲームを提供するビデオゲームコンソールは、大きな変化を遂げてきた。
【0004】
今日、3つの主要なビデオゲームコンソールは、Sony Playstation 3、Microsoft 360、およびNintendo Wiiである。これらのコンソールはそれぞれ非常に成功を収めている。例えば、Nintendo Wiiが非常に成功を収めている一要因には、そのワイヤレスコントローラであるWii Remoteがある。
【0005】
Wii Remoteは、ハンドヘルドポインティングデバイスとして使用され、3次元の運動を検出する。Wii Remoteは、内蔵加速度計と赤外線検出の組合せを使用して、WiiコンソールのSensor Bar内のLEDに向けられたときに(3D)空間内の位置を感知する。この設計により、ユーザは、従来型ボタン押下だけでなく、物理的ジェスチャによってゲームを制御することが可能になる。
【0006】
Wii Remoteは、Sensor Bar内に配置されたLEDからの光を感知する。Wii RemoteがTV画面上のカーソルの上下、左右運動を制御して、メニューオプションまたは1人用シュータ型ゲームにおける敵などのオブジェクトをポイントしているときに、Sensor Barが必要となる。Wii RemoteおよびSensor Barを有するWiiビデオゲームコンソールはゲームプレーヤに良好なゲーミング体験を提供するが、ポインタ位置決めを検出するのに主にSensor Barを利用しなければならないという制限がある。例えば、プレーヤがWii RemoteのポインタをSensor Barによって感知される光検出エリアの外部の位置に移動すると、Wii Remoteによって提供される光データを検出することができない。ポインタがこのエリア外にある場合、ゲームプレーヤは、ゲームを制御することができなくなる。
【発明の概要】
【発明が解決しようとする課題】
【0007】
したがって、ゲームプレーヤにより良好なゲームプレーイング体験を提供することが求められている。
【課題を解決するための手段】
【0008】
本発明のある実施形態は、コントローラのポインタ位置および傾斜角をサンプリングするステップと、サンプリングに基づいて中心領域傾斜値を計算するステップと、計算した中心領域傾斜値に基づいて上限および下限傾斜値限度を計算するステップと、ビデオゲームシステムが、ゲームプレーヤのコントローラの使用に基づいて仮想ポインタY軸値を処理することができるように、計算した値を格納するステップを含み、ポインタ位置が、コントローラとモニタの画面との間の相互関係に基づいている方法を提供する。
【0009】
ある実施形態は、コントローラのポインタ位置および傾斜角をサンプリングするステップと、サンプリングに基づいて中心領域傾斜値を計算するステップと、計算した中心領域傾斜値に基づいて上限および下限傾斜値限度を計算するステップと、計算に基づいてY軸値を求めるステップと、計算に基づいてX軸値を求めるステップと、ビデオゲームシステムが、ゲームプレーヤのコントローラの使用に基づいて仮想ポインタX軸値およびY軸値を処理することができるように、求めたX軸値およびY軸値を格納するステップを含み、ポインタ位置が、コントローラとモニタの画面との間の相互関係に基づいている方法を記述する。
【0010】
本発明に適合するある実施形態は、コンピュータで実行されたときに、コントローラの位置決めに基づいて位置を処理する方法をコンピュータに実行させる命令を格納するコンピュータ読み取り可能な記録媒体を提供する。こうした命令は、コントローラのポインタ位置および傾斜角をサンプリングするステップと、サンプリングに基づいて中心領域傾斜値を計算するステップと、計算した中心領域傾斜値に基づいて上限および下限傾斜値限度を計算するステップと、およびビデオゲームシステムが、ゲームプレーヤのコントローラの使用に基づいて仮想ポインタY軸値を処理することができるように、計算した値を格納するステップ含み、ポインタ位置が、コントローラとモニタの画面との間の相互関係に基づいている方法をコンピュータに実行させる。
【0011】
本発明に適合するある実施形態は、コンピュータで実行されたときに、コントローラの位置決めに基づいて位置を処理する方法をコンピュータに実行させる命令を格納するコンピュータ読み取り可能な記録媒体を提供する。こうした命令は、コントローラのポインタ位置および傾斜角をサンプリングするステップと、サンプリングに基づいて中心領域傾斜値を計算するステップと、計算した中心領域傾斜値に基づいて上限および下限傾斜値限度を計算するステップと、計算に基づいてY軸値を求めるステップと、計算に基づいてX軸値を求めるステップと、ビデオゲームシステムが、ゲームプレーヤのコントローラの使用に基づいて仮想ポインタX軸値およびY軸値を処理することができるように、求めたX軸値およびY軸値を格納するステップを含み、ポインタ位置が、コントローラとモニタの画面との間の相互関係に基づいている方法をコンピュータに実行させる。
【図面の簡単な説明】
【0012】
【図1】例示的ビデオゲーム装置のブロック図である。
【図2A】本発明のある実施形態に適合するビデオゲーム装置に結合されたモニタの画面および例示的LEDモジュールを含む例示的システムを示す図である。
【図2B】本発明のある実施形態に適合するコントローラの光センサおよび加速度センサを使用してどのようにカーソル経路に沿ったカーソルの移動が実施されるかについての例示的実施形態を示す図である。
【図3A】本発明のある実施形態に適合するLEDモジュールによって提供される赤外線パターンを示す例示的実施形態を与える図である。
【図3B】本発明のある実施形態に適合する画面に対するコントローラの傾斜を示す図である。
【図3C】コントローラの加速度センサからのサンプリング済み傾斜データを本発明のある実施形態に適合するコントローラの位置決めに基づいてどのように正規化することができるかを示す図である。
【図4】本発明のある実施形態に適合するコントローラの加速度センサおよび/またはジャイロセンサを使用して仮想ポインタY軸値を計算する例示的方法の流れ図を示す図である。
【図5】本発明のある実施形態に適合する仮想ポインタ位置をサンプリングする例示的方法の流れ図を示す図である。
【図6】本発明のある実施形態に適合するコントローラの傾斜角を計算する例示的方法の流れ図を示す図である。
【図7】本発明のある実施形態に適合するコントローラの加速度センサおよび/またはジャイロセンサを使用して仮想ポインタX軸値を計算する例示的方法を示す図である。
【図8】2D平面セグメントを生成することに基づいて3D経路を画定する技法を示す図である。
【図9A】図8に示す技法を改善するのに使用することのできる例示的3Dセグメントを示す図である。
【図9B】アバタが1組の接続された経路線平面に沿って移動することができるように互いに結合された複数の3Dセグメントを示す図である。
【図10】所定の経路の例示的俯瞰図を示す図である。
【図11】本発明のある実施形態に適合する各3Dセグメントについてフロア、天井、および壁データを格納するビデオゲーム装置メモリの一実施形態を示す図である。
【図12A】3D世界の中を移動するアバタの例示的実施形態を示す図である。
【図12B】3D世界の中を移動するアバタの例示的実施形態を示す図である。
【図12C】3D世界の中を移動するアバタの例示的実施形態を示す図である。
【図13】所定の経路が中間線を含む一実施形態を示す図である。
【図14】所定の経路内のアバタの位置に基づいてどのようにカメラ角度を変更することができるかについての一例を示す図である。
【発明を実施するための形態】
【0013】
以下、本発明の例示的実施形態を詳細に参照する。これらの例が添付の図面に示されている。同一または類似の部分を参照するのに、図面全体を通して同一の参照番号が可能な限り使用される。
【0014】
図1は、例示的ビデオゲーム装置1のブロック図である。ビデオゲーム装置1は、CPUブロック10、ビデオブロック11、サウンドブロック12、および通信装置130を含む。図1はまた、ビデオゲーム装置1で実行されるゲームをプレイする目的で操作するのに使用されるコントローラ3も示す。
【0015】
CPUブロック10は、バスアービタ100、CPU101、メインメモリ102、ブートROM103、およびCDドライブ104を含む。バスアービタ100は、1つまたは複数のバスを介して相互に接続された装置にバス占有時間を割り当てることによってデータを送信および受信することができる。CPU101は、受信ユニット142を介してメインメモリ102、ブートROM103、CDドライブ104、ビデオブロック11、サウンドブロック12、バックアップメモリ(図示せず)、およびコントローラ3にアクセスすることができる。例えば、受信ユニット142をワイヤレスインターフェースまたは有線通信ポートとして提供することができる。
【0016】
ビデオブロック11はとりわけ、ビデオディスプレイプロセッサ(VDP)110、グラフィックメモリ111、およびビデオエンコーダ112(ビデオブロック11の外部に図示)を含む。サウンドブロック12はとりわけ、サウンドプロセッサ120、サウンドメモリ121、およびD/A変換器122(サウンドブロック12の外部に図示)を含む。
【0017】
CPU101は、電源がオンにされたときにブートROM103に格納された初期化プログラムを実行し、装置1を初期化し、例えばCD105がCDドライブ104にインストールされたことをCPU101が検出したとき、CD105に格納されたオペレーティングシステムプログラムデータをメインメモリ102に転送する。
【0018】
その後で、CPU101は、オペレーティングシステムに従って動作し、本発明のある実施形態による、CD105に格納されたゲーム処理方法のプログラムを引き続きメインメモリ102に転送して実行する。
【0019】
さらに、CPU101は、ゲーム処理イメージデータをグラフィックメモリ111に転送し、サウンドデータをサウンドメモリ121に転送する。CPU101で実行されるプログラムの処理ステップは、コントローラ3からのオペレーション信号および通信装置130からの通信データの入力、そのような入力基づくコントローラ3へのコマンド出力、ならびにビデオブロック11で実施すべきイメージ出力およびサウンドブロック12で実施すべきサウンド出力の制御を含む。
【0020】
メインメモリ102は、上述のオペレーティングシステムプログラムデータおよび他のプログラムを格納することができ、静的変数および動的変数のための作業域も提供することができる。ブートROM103は、初期プログラムローダの記憶領域である。
【0021】
CDドライブ104はCD105を受けることができ、CD105がその中にインストールされたとき、CPU101は、CD105上で提供されるデータを読み取る。CPU101は、読み取ったデータを出力し、CPU101の制御に従ってデータを転送する。
【0022】
CD105は、ビデオゲーム装置1にゲーム処理を実行させるプログラムと、イメージ表示用のイメージデータと、サウンド出力用のサウンドデータとを格納する。記録媒体はCD105には限定されず、他の様々な機械読み取り可能な記録媒体でよい。CD105に格納されたデータグループをメインメモリ102に転送し、または通信装置130を介して、入力ポート131に接続されたゲーム供給サーバのリモートメモリ装置に転送することも可能である。このタイプの設定により、リモートサーバのセキュアディスクなどからのデータ伝送が可能となる。
【0023】
グラフィックメモリ111は、前述のようにCD105から読み取ったイメージデータを格納し、VDP110は、グラフィックメモリ111に格納されたイメージデータの中からイメージ表示に必要なイメージデータを読み取り、座標変換(幾何学的演算)、テクスチャザッピング処理、表示優先順位処理、シェーディング処理、およびCPU101から供給されるイメージ表示に必要な情報に従う任意の他の必要な表示処理を実行する。この必要な情報は、例えばコマンドデータ、視点位置データ、光源位置データ、オブジェクト指定データ、オブジェクト位置データ、テクスチャ指定データ、テクスチャ密度データ、および視野変換マトリックスデータを含むことができる。さらに、例えば上述の座標変換などの処理を実施するようにCPU101を構成することが可能である。言い換えれば、装置の動作能力を考慮して、それぞれの処理ステップをそれぞれの装置に割り当てることができる。ビデオエンコーダ112は、VDP110で生成されたイメージデータを、例えばNTSCフォーマットの規定のテレビジョン信号に変換することができ、そのような信号を、外部接続されたメインモニタ113に出力することができる。
【0024】
サウンドメモリ121は、上述のように、CD105から読み取ったサウンドデータを格納する。サウンドプロセッサ120は、CPU101から供給されるコマンドデータに基づいてサウンドメモリ121に格納された波形データなどのサウンドデータを読み取り、例えば、デジタル信号プロセッサ(DSP)機能に従って様々なエフェクト処理およびデジタル/アナログ(D/A)変換処理を実施する。D/A変換器122は、サウンドプロセッサ120で生成されたサウンドデータをアナログ信号に変換し、そのような信号を、外部接続されたスピーカ123に出力する。
【0025】
通信装置130は、ビデオゲーム装置1に接続可能な装置、例えばモデムまたは端末アダプタであり、ビデオゲーム装置1を外部回路に接続するアダプタとして機能する。さらに、通信装置130は、公衆回路網に接続されたゲーム供給サーバから送信されたデータを受信し、そのようなデータをCPUブロック10のバスに供給する。そのような公衆回路網に、加入者回路、専用線、有線またはワイヤレス回線などとしてアクセスすることができる。
【0026】
ビデオゲーム装置1は、接続端末を介して受信ユニット142に接続される。受信ユニット142は、コントローラ3からワイヤレスに送信された送信データを受信し、それによって、コントローラ3およびビデオゲーム装置1をワイヤレス通信で互いに接続することを可能にする。ビデオゲーム装置1でプレイするゲームプレーヤは、モニタ113上に表示されるゲームイメージを注視しながらコントローラ3を操作することによってゲームを楽しむことができる。例えば、コントローラ3は、参照により本明細書に組み込まれる「Game System and Storage Medium Having Game Program Stored Thereon」という名称の米国出願第11/404844号(米国公開公報第2007/0049374号)および/または「Game Controller and Game System」という名称の米国出願11/504086号(米国公開公報第2007/0072680号)に記載のコントローラでよい。
【0027】
コントローラ3は、例えばBluetooth(登録商標)の技術を使用して、その中に含まれる通信部分からの送信データを、受信ユニット142に接続されたビデオゲーム装置1にワイヤレスに送信する。コントローラ3は、フレキシブル接続ケーブル23によって互いに接続されたコアユニット21およびサブユニット22という2つの制御ユニットを含む。この実施形態は、コントローラが2つのユニットを含むことを示すが、コントローラ3は単一の装置または複数の装置でよいことを当業者はここで理解されよう。コントローラ3は、モニタ113上に表示されるゲームスペース内に現れるプレーヤオブジェクトを主に操作するための操作手段である。コアユニット21およびサブユニット22はそれぞれ、とりわけ複数の操作ボタン、キー、ジョイスティックなどの動作部分を含む。コアユニット21は、コアユニット21から見たイメージを取り込む光センサ、1つまたは複数の加速度センサ、および/またはその中のジャイロ素子によって定義される少なくとも1つの軸の周りの回転(または角速度)を検出するジャイロセンサを含む。図2Bを参照しながら以下でより完全に説明するが、光センサの撮像対象の一例として、1つまたは複数のLEDモジュールをモニタ113のディスプレイ画面の周辺に設けることができる。1つまたは複数のLEDモジュールはそれぞれ、モニタ113から離れる赤外線光を出力する。この実施形態ではコアユニット21およびサブユニット22が接続ケーブル23で互いに接続されるが、サブユニット22はワイヤレスユニットを有することができ、それによって接続ケーブル23が不要となる。例えばサブユニット22は、ワイヤレスユニットとしてBluetooth(登録商標)ユニットを有することができ、それによってサブユニット22は操作データをコアユニット21に送信することができる。
【0028】
コアユニット21は、その前面で、光センサ内に含まれるイメージピックアップ素子を提供する。光センサは、コアユニット21によって取り込まれたイメージデータを解析し、解析したイメージデータからの高輝度を有するかなりの大きさのエリアに基づいて、モニタ113に対応する中心領域、例えば図3Aの中心領域304を検出する際の助けとなるデータを提供する。光センサは、例えば最大サンプリング周期約200フレーム/秒を有することができ、したがって比較的高速なコアユニット21の運動さえもトレースおよび解析することができる。
【0029】
光センサは、赤外線フィルタ、レンズ、イメージピックアップ素子、およびイメージ処理回路を含む。赤外線フィルタは、コアユニット21の前面に入射する光の中で赤外光のみが通過することを可能にする。レンズは、赤外線フィルタを通過した赤外光を収集し、赤外線光をイメージピックアップ素子に出力する。イメージピックアップ素子は、例えばCMOSセンサやCCDなどの固体撮像デバイスである。イメージピックアップ素子は、レンズで収集された赤外光のイメージを取り込む。したがって、イメージピックアップ素子は、赤外線フィルタを通過した赤外光のみのイメージを取り込んでイメージデータを生成する。イメージピックアップ素子で生成されたイメージデータが、イメージ処理回路で処理される。具体的には、イメージ処理回路は、イメージピックアップ素子から得られたイメージデータを処理し、高輝度を有するイメージデータのスポットを識別し、識別した位置座標およびエリアのサイズを表す処理結果データを受信ユニット142に出力する。
【0030】
光センサは、コアユニット21のハウジングに固定される。コアユニット21のハウジングの方向を変更することにより、光センサの撮像方向を変更することができる。コアユニット21のハウジングはフレキシブル接続ケーブル23でサブユニット22に接続され、したがって、光センサの撮像方向はサブユニット22の方向および位置を変更することでは変化しない。後でより詳細に説明するように、光センサで出力された処理結果データに基づいて、コアユニット21の位置および運動にしたがって信号を得ることができる。
【0031】
上述のコアユニット21の1つまたは複数の加速度センサを3軸加速度センサとして設けることができる。さらに、サブユニット22も3軸加速度センサを含むことができる。各3軸加速度センサは、3つの方向、すなわち上/下方向、左/右方向、および順/逆方向の線形加速度を検出することができる。あるいは、ゲームプロセスで使用される制御信号のタイプに応じて、上/下方向および左/右方向(または他の方向の対)のそれぞれに沿った線形加速度のみを検出する2軸加速度検出センサを別の実施形態で使用することもできる。例えば3軸加速度センサまたは2軸加速度センサは、Analog Devices,Inc.またはSTMicroelectronics N.V.から入手可能なタイプのものでよい。各加速度センサは、シリコンマイクロマシンンドMEMS(Micro Electro Mechanical Systems)技術に基づく静電容量(容量結合)型のものでよい。しかし、現在存在し、または後に開発される任意の他の適切な加速度検出技術(例えば圧電型またはピエゾ抵抗型)を使用して、3軸加速度センサまたは2軸加速度センサを提供することができる。
【0032】
この実施形態の目的について当業者は理解するであろうが、加速度センサで使用される加速度検出手段は、加速度センサの各軸に対応する直線に沿った加速度(線形加速度)を検出することができる。言い換えれば、加速度センサの直接出力のそれぞれは、加速度センサの2軸または3軸のそれぞれに沿った線形加速度(静的または動的)を示す信号を生成する。結果として、加速度センサは、非線形(例えば弓状)経路に沿った運動、回転、回転運動、角変位、傾斜、位置、または姿勢を直接的に検出することができない。
【0033】
しかし、本明細書の説明から当業者は理解するであろうが、各加速度センサから出力された加速度信号の追加処理により、コアユニット21およびサブユニット22に関する追加情報を推測または計算することができる。例えば、静的加速度(すなわち重力)を検出することにより、加速度センサの出力を使用して、傾斜角と検出した加速度とを相関付けることによって重力ベクトルに対するオブジェクト(コアユニット21またはサブユニット22)の傾斜を推論することができる。このようにして、加速度センサをビデオゲーム装置1(または別のプロセッサ)と組み合わせて使用して、コアユニット21およびサブユニット22の傾斜、姿勢、または位置を求めることができる。同様に、加速度センサを含むコアユニット21、または加速度センサを含むサブユニット22が本明細書で説明するように例えばユーザの手による動的加速を受けたときに加速度センサで生成される加速度信号の処理により、コアユニット21およびサブユニット22の様々な運動および/または位置を計算または推論することができる。
【0034】
別の実施形態では、各加速度センサは、ビデオゲーム装置1に信号を出力する前に加速度センサから出力される加速度信号の所望の処理を実施するために、組込み信号プロセッサまたは他のタイプの専用プロセッサを含むことができる。例えば、加速度センサが静的加速度(すなわち重力)を検出するように意図されたとき、組込みプロセッサまたは専用プロセッサは、検出した加速度信号を対応する傾斜角に変換することができる。各加速度センサで検出される加速度を表すデータが、コントローラ3から受信ユニット142に送信される。
【0035】
別の例示的実施形態では、加速度センサのうちの少なくとも1つを、例えば回転素子または振動素子を組み込む任意の適切な技術のジャイロセンサで置き換えることができ、またはそれと組み合わせて使用することができる。コントローラ3のジャイロセンサは、例えば回転素子または振動素子を組み込む任意の適切な技術を含むことができる。この実施形態で使用することのできる例示的ジャイロセンサは、例えばAnalog Devices,Inc.から入手可能である。ジャイロセンサは、その中のジャイロ素子によって定義された少なくとも1つの軸の周りの回転(または角速度)を直接的に検出することができる。
【0036】
ジャイロセンサを使用するとき、ビデオゲーム装置1は、検出の開始時に傾斜の値を初期化することができる。次いで、ビデオゲーム装置1は、ジャイロセンサで生成された角速度データを統合することができる。次に、ビデオゲーム装置1は、傾斜の初期化値からの傾斜の変化を計算することができる。この場合、計算された傾斜は角度に対応する。したがって、計算された傾斜をベクトルとして表すことができる。したがって、初期化がない場合、加速度検出センサで絶対的方向を求めることができる。ジャイロセンサの計算された値は、ジャイロセンサが使用されるときの角度の傾斜である。ある実施形態では、加速度センサを使用してジャイロセンサと組み合わせ、ビデオゲーム装置1にデータを提供することができる。話を簡単にするために、本明細書でのジャイロセンサまたは加速度センサで生成されたデータへの参照は、ジャイロセンサと加速度センサの一方または両方からのデータを含むことができる。さらに、コントローラ3はそれ自体で、またはビデオゲーム装置1と組み合わせて、こうしたステップの少なくとも一部を処理できることを当業者はここで理解されよう。
【0037】
入力装置の制御
図2Aに、ビデオゲーム装置1に結合されたモニタ113の例示的画面204および例示的LEDモジュール202を示す。この特定の実施形態では、画面204は、アバタ206、カーソル208、およびカーソル経路210を表示する。ある実施形態では、カーソル208および/またはカーソル経路210は、ゲームプレーヤにとって不可視でよい。ある実施形態では、カーソル208および/またはカーソル経路210は存在しないことがある。この特定の実施形態では、コントローラ3はLEDモジュール202と共に働いてカーソル経路210に沿ったカーソル208の位置を求め、それによってアバタ206がカーソル208の方向に移動することができる。
【0038】
例えば接続サブユニット22がコアユニット21に接続されない場合、ゲームプレーヤは、(光センサの使用による)コアユニット21のポインティング機能および加速度センサを使用することによってアバタ206の移動を制御することができる。アバタ206とコアユニット21のポインティング位置との間にカーソルを提供することにより、ビデオゲーム装置1は、ゲームプレーヤがアバタ206に容易に追従することを可能にする。ゲームプレーヤがカーソル経路210内の位置、すなわちポインタ位置をポイントする場合、ビデオゲーム装置は、カーソル経路210内のカーソル208を表示することができ、アバタ206が微妙に移動していることを示すことができる。
【0039】
図2Bに、コントローラ3の光センサおよび加速度センサを使用してどのようにこの移動が実施されるかについての例示的実施形態を示す。コントローラ3およびLEDモジュール202に基づいて、ビデオゲーム装置1で検出することのできる3つのゾーンが存在する。3つのゾーンは画面ゾーン204、光感知ゾーン220、および加速度感知ゾーン230を含む。ゲームプレーヤが画面ゾーン204または光感知ゾーン220にコントローラ3をポイントしたとき、ビデオゲーム装置1は、光センサからのデータと加速度センサからのデータをどちらも使用することができる。しかし、ゲームプレーヤが光感知ゾーン220の外側であるが、まだ加速度感知ゾーン230の中にコントローラ3をポイントしたとき、ビデオゲーム装置1は、コントローラ3からの加速度センサ(および/またはジャイロセンサ)データのみを使用することができる。ある実施形態では、ポインタ位置が画面ゾーン204内、光感知ゾーン220内、および/または加速度感知ゾーン230内に位置するどうかに基づいて、カーソル208の色を変更することができる。
【0040】
この特定の実施形態では、ゲームプレーヤが光感知ゾーン220の外側にコントローラを移動させた場合にも、依然としてプレーヤがカーソル経路210に沿ってカーソル208を制御し、したがってゲーム内のアバタ206の移動を制御することが可能である。例えば、ユーザは、画面ゾーン204上の位置Aから、画面ゾーン204の外側であるがまだ光感知ゾーン220内である位置Bまでポインタ位置を移動することができる。光センサおよび加速度センサは、コントローラ3に関するデータを生成することができ、コントローラ3は、生成されたデータをビデオゲーム装置1に提供する。したがって、ビデオゲーム装置1は、ポインタ位置Aに対応する位置から、カーソル経路210に沿ったポインタ位置Bに対応する位置までカーソル208の位置を調節することができる。ある実施形態では、光センサおよび加速度センサはさらに、変更されたポインタ位置の速度および加速度に関する追加のデータを生成することができる。この追加のデータは、アバタの特性を変更することができ、その結果、例えばアバタは、追加のデータに基づいてスピードアップまたはスローダウンすることができる。
【0041】
ゲームプレーヤがコントローラ3をポインタ位置Bからポインタ位置Cまで移動したとき、コントローラ3は、光感知ゾーン220が終了するポイントまで光センサデータを提供することができる。ポインタ位置が光感知ゾーン220の外側であるがまだ加速度センサゾーン230の中に移動した後、加速度センサ(および/またはジャイロセンサ)がデータを提供することで、ゲームプレーヤは、カーソル経路210に沿ってカーソル208の位置を依然として制御することができる。加速度センサは、位置Cの位置に関するデータを生成することができる。コントローラ3は、このデータをビデオゲーム装置1に提供することができ、ビデオゲーム装置1は、カーソル経路210に沿ってカーソル208の位置を更新する。さらに、このデータは、アバタ206の特性(例えば速度など)を変更することになる、速度や加速度などの追加の情報を含むことができる。
【0042】
例えば、画面ゾーン204(さらには光感知ゾーン220)内のポインタ位置の位置決めを求めるために、LEDモジュール202は、画面ゾーン204(または光感知ゾーン220)内に赤外線パターンを与えることができる。図3Aに、LEDモジュール202によって提供されるパターンを示す例示的実施形態を与える。このパターンは、上端領域302、中心領域304、および下端領域306を含む。これらの領域は、X軸320およびY軸330をセットアップするのに使用することができる。
【0043】
ユーザがコントローラ3のポインタ位置をこれらの領域のうちの1つを通じて移動し、またはある領域から次の領域に移動したとき、ビデオゲーム装置1は、カーソル経路210に沿ってカーソル208の位置決めを調節することができる。ビデオゲーム装置1は、位置決めデータ(光センサデータ、ジャイロセンサデータ、および/または加速度計データ)を例えば毎秒30回サンプリングすることによってポインタ位置を求める。ビデオゲーム装置1がデータの平均を取ることができるように、こうしたサンプルのうちの1つまたは複数をデータブロックに格納することができる。例えばゲームプレーヤは、ゲームをまだプレイしながら、立った位置から座ることがある。座ることにより、コントローラの傾斜が画面204に対して変化する可能性が高い(例えば図3Bを参照)。図3Bでは、プレーヤが座った場合、プレーヤは、ポインタ位置を操作するためにコントローラを画面204に向けてより上向きに傾斜させなればならなくなる可能性が高い。このことは、サンプリングのためのコントローラ3の傾斜角および位置に影響を及ぼすことになる。
【0044】
位置決めデータをサンプリングし、平均を取ることにより、ビデオゲーム装置1は、ゲームプレイに大幅な影響を及ぼすことなくプレーヤの運動を補償することができる。図3Cに、加速度センサからのサンプリング済み傾斜データをゲームプレーヤに従うコントローラの位置に基づいてどのように正規化することができるかを示す。例えば、ゲームプレーヤは、コントローラ3の傾斜角が0°となるように、ゲームのプレイ中に立っている可能性がある。プレーヤが座ったとき、モニタ113の画面に向けて上向きに、例えば傾斜角19°でコントローラを傾斜させなければならない可能性がある。この19°からのずれがある場合、その結果としてプレーヤの移動が生じる。この傾斜データの正規化がない場合、ゲームのプレイが劇的な影響を受ける可能性がある。図3Aに対応する例示的サンプリングプロセスをさらに図5に示す。
【0045】
図4に、加速度センサおよび/またはジャイロセンサを使用して仮想ポインタY軸値を計算する例示的方法の流れ図を示す。図示する手順を、ステップを削除し、ステップを移動し、または追加のステップをさらに含むように変更できることを当業者は理解されよう。初期スタートステップ400の後、ビデオゲームシステム(例えばビデオゲーム装置1および/またはコントローラ3)は、有効な画面ポインタ値を得ることができるかどうかを判定する(402)。有効な画面ポインタ値を得ることができない場合、以下で説明するステップ408に進む。一方、有効な画面ポインタ値を得ることができる場合、ビデオゲームシステムは、コントローラ3のポインタ位置および傾斜角をサンプリングすることができる(404)。サンプリングステップ404は、図5に示される例示的サンプリング方法でよい。
【0046】
ポインタ位置および傾斜角をサンプリングした後、ビデオゲームシステムは、サンプリングした画面ポインタ位置から、中心領域304に対応するコントローラの傾斜角を計算する(406)。このステップにより、ビデオゲームシステムが、例えばゲームプレーヤがゲームをプレイ中に座っているか、それとも立っているかに基づいて傾斜角を正規化することが可能となる。計算ステップ406は、図6に示される例示的計算方法でよい。
【0047】
中心領域304からの傾斜角を計算した後、ビデオゲームシステムは、計算される中心領域傾斜角に規定の最大傾斜角を追加して上側傾斜角を求め、計算される中心領域から規定の最小傾斜角を引いて下側傾斜角を求めることによって下側傾斜角を計算する。例えば、図3Cに示されるように、ゲームプレーヤがゲームをプレイ中に座っている場合、計算される中心領域304は19°となる。最大および最小傾斜角はそれぞれ20°および20°でよい。その場合、上側傾斜角は、19°(中心領域傾斜角)+20°(規定の最大傾斜角)=39°となる。下側傾斜角は、19°(中心領域傾斜角)−20°(規定の最小傾斜角)=−1°となる。最大および最小傾斜角は任意の数でよいことを当業者はここで理解されよう。
【0048】
次いで、ビデオゲームシステムは、上側傾斜角、下側傾斜角、および中心領域傾斜角を、対応するY軸値に変換する(410)。例えば、図3Aおよび3Cに示されるように、中心領域傾斜角19°はY軸値=0に対応する。上側傾斜角39°はY軸値1に対応し、下側傾斜角−1°はY軸値−1に対応する。こうした傾斜角を対応するY軸値に変換した後、ビデオゲームシステムは、ビデオゲームシステム1がアバタ206の移動を適切にレンダリングすることができるように仮想ポインタY軸値を−1から1の間に制限することができる(412)。実際の傾斜角が最大傾斜角を超過した場合であっても、Y軸値はやはり1に制限される。同じことが最小傾斜角についてもあてはまる。最後に、処理を終了する(414)。
【0049】
図5に、仮想ポインタ位置をサンプリングする例示的方法の流れ図を示す。例えば、この仮想ポインタ位置のサンプリングは、図4のサンプリングステップ404でよい。図示する手順を、ステップを削除し、ステップを移動し、または追加のステップをさらに含むように変更できることを当業者はここで理解されよう。初期スタートステップ500の後、ビデオゲームシステムは、ポインタの加速度が許容公差限界内にあるかどうかを判定する(502)。ポインタの加速度が許容公差限界内にない場合、方法はステップ504に進み、ビデオゲームシステムはポインタ位置をサンプリングしない。一方、ポインタ位置移動の加速度が許容公差限界内にある場合、ビデオゲームシステムは、ポインタ位置が何らかの規定の領域(例えば、図3Aに示される上端領域302、中心領域304、または下端領域306)に入ったかどうかを判定する(406)。ポインタ位置が規定の領域に入っていない場合、方法はステップ504に進み、ビデオゲームシステムはポインタ位置をサンプリングしない。
【0050】
ポインタ位置が規定の領域に入った場合、ビデオゲームシステムは、現在のポインタ位置および加速度センサから計算されるコントローラの傾斜角をサンプリングする(508)。コントローラの傾斜角をサンプリングした後、ビデオゲームシステムは、ポインタ位置が上端領域302内に位置するかどうかを判定する(510)。ポインタ位置が上端領域302内に位置する場合、ビデオゲームシステムは、新しくサンプリングしたデータ(またはデータブロック)を上端領域302用のサンプリングデータ記憶バッファに格納する(512)。次に、ビデオゲームシステムは、上端領域302用のデータバッファに格納されたデータブロックが9個以上存在するかどうかを判定する(514)。データブロックが9個以上存在する場合、ビデオゲームシステムは、8個のデータブロックが上端領域302用のデータバッファ内に残るまで、最も古いデータブロックのうちの1つまたは複数を除去し(516)、処理を終了することができる(540)。この例示的実施形態では8個のデータブロックが使用されるが、データバッファは、この領域に関して任意の数のデータブロックを割り当てることができる。上端領域302用のデータバッファに格納されたデータブロックが9個未満である場合、ビデオゲームシステムは、データブロックを除去する必要はなく、処理を終了することができる(540)。
【0051】
ステップ510でポインタ位置が上端領域302内に位置していないと判定した場合、ビデオゲームシステムは、ポインタ位置が中心領域304内に位置するかどうかを判定する(520)。ポインタ位置が中心領域304内に位置する場合、ビデオゲームシステムは、新しくサンプリングしたデータ(またはデータブロック)を中心領域304用のサンプリングデータ記憶バッファに格納する(522)。次に、ビデオゲームシステムは、中心領域304用のデータバッファに格納されたデータブロックが9個以上存在するかどうかを判定する(524)。データブロックが9個以上存在する場合、ビデオゲームシステムは、8個のデータブロックが中心領域304用のデータバッファ内に残るまで、最も古いデータブロックのうちの1つまたは複数を除去し(526)、処理を終了することができる(540)。この例示的実施形態では8個のデータブロックが使用されるが、データバッファは、この領域に関して任意の数のデータブロックを割り当てることができる。中心領域304用のデータバッファに格納されたデータブロックが9個未満である場合、ビデオゲームシステムは、データブロックを除去する必要はなく、処理を終了することができる(540)。
【0052】
ステップ520でポインタ位置が中心領域304内に位置していないと判定した場合、ビデオゲームシステムは、ポインタ位置が下端領域306内に位置するかどうかを判定する(530)。次いで、ビデオゲームシステムは、新しくサンプリングしたデータ(またはデータブロック)を中心領域306用のサンプリングデータ記憶バッファに格納する(532)。次に、ビデオゲームシステムは、下端領域306用のデータバッファに格納されたデータブロックが9個以上存在するかどうかを判定する(534)。データブロックが9個以上存在する場合、ビデオゲームシステムは、8個のデータブロックが下端領域306用のデータバッファ内に残るまで、最も古いデータブロックのうちの1つまたは複数を除去し(536)、方法は終了に進むことができる(540)。この例示的実施形態では8個のデータブロックが使用されるが、データバッファは、この領域に関して任意の数のデータブロックを割り当てることができる。下端領域306用のデータバッファに格納されたデータブロックが9個未満である場合、ビデオゲームシステムは、データブロックを除去する必要はなく、処理を終了することができる(540)。
【0053】
図6に、サンプリング結果から中心領域304に基づくコントローラの傾斜角を計算する例示的方法の流れ図を示す。例えば、この傾斜角の計算は、図4の計算ステップ406でよい。図示する手順を、ステップを削除し、ステップを移動し、または追加のステップをさらに含むように変更できることを当業者はここで理解されよう。初期スタートステップ600の後、ビデオゲームシステムは、図5のステップ522で格納されるデータブロックなどの、中心領域304に関するサンプリング済みデータブロックが2つ以上存在するかどうかを判定する(602)。中心領域304に関するサンプリング済みデータブロックが2つ以上存在しない場合、サンプルが少なく、信頼性が低いので、ビデオゲームシステムは、サンプル結果を計算する際にデフォルト値を使用する(604)。
【0054】
サンプリング済みデータブロックが2つ以上存在する場合、ビデオゲームシステムは、中心領域304に関するサンプルデータの平均を取り(606)、中心領域304に関する平均のコントローラの傾斜角および対応するポインタY軸値を計算する。次いで、ビデオゲームシステムは、上端領域302に関して2つ以上のサンプリング済みブロックが格納されるかどうかを判定する(608)。2つ以上のサンプリング済みブロックが格納される場合、ビデオゲームシステムは、上端領域302に関するサンプリング済みデータブロックの平均を取り(610)、上端領域302に関する平均のコントローラの傾斜値に対応するポインタY軸値を計算する。サンプリング後データブロックの平均を取った後、ビデオゲームシステムは、中心領域に関する平均傾斜角からのY軸値1の周りの傾斜角と、上端領域302に関するポインタY軸値および平均傾斜角と、こうしたY軸値間の差とを計算する(612)。次いで、ビデオゲームシステムは、Y軸値−1の周りの傾斜角と、中心領域304に関する平均ポインタY軸値と、コントローラ3の傾斜角とを使用することにより、中心領域304に関する正確な傾斜角を求める(614)。ステップ614で正確な傾斜角を求めた後、処理を終了することができる(624)。
【0055】
ステップ608に戻って、上端領域302に関して2つ以上のサンプルデータブロックが格納されていない場合、ビデオゲームシステムは、下端領域306に関して格納されたサンプリング済みデータブロックが2つ以上存在するかどうかを判定する(616)。サンプリング済みデータブロックが2つ以上存在しない場合、上端領域および下端領域に関するサンプリング数が少な過ぎるので、ビデオゲームシステムは、中心領域304に関する平均コントローラ傾斜角が中心領域304に関する傾斜角と等しいとみなす。等化ステップ622の後、処理を終了する(624)。
【0056】
一方、ステップ616に戻って、下端領域306に関して格納されたサンプリング済みデータブロックが2つ以上存在する場合、ビデオゲームシステムは、下端領域306の関するサンプリング済みデータブロックの平均を取り(618)、下端領域306に関する平均のコントローラの傾斜値に対応するポインタY軸値を計算する。サンプリング済みデータブロックの平均を取った後、ビデオゲームシステムは、中心領域304に関する平均傾斜角からのY軸値1の周りの傾斜角と、下端領域306に関するポインタY軸値および平均傾斜角と、こうしたY軸値間の差とを計算する(620)。次いで、ビデオゲームシステムは、Y軸値−1の周りの傾斜角と、中心領域304に関する平均ポインタY軸値と、コントローラ傾斜角とを使用することにより、中心領域304に関する正確な傾斜角を求める(614)。決定ステップ614の後、処理を終了することができる(624)。
【0057】
図7は、仮想ポインタX軸値を計算する例示的方法を示す。図示する手順を、ステップを削除し、ステップを移動し、または追加のステップをさらに含むように変更できることを当業者はここで理解されよう。初期スタートステップ700の後、ビデオゲームシステムは、有効なポインタ値を得ることができるかどうかを判定する(702)。有効なポインタ値を得ることができない場合、方法は、以下で説明するステップ714に進む。一方、有効な画面ポインタ値を得ることができる場合、ビデオゲームシステムは、ポインタ位置およびコントローラ3の傾斜角をサンプリングすることができる(704)。サンプリングステップ704は、図5に示される例示的サンプリング方法でよい。
【0058】
ポインタ位置および傾斜角をサンプリングした後、ビデオゲームシステムは、サンプリング済み画面ポインタ位置から、中心領域304に対応するコントローラの傾斜角を計算する(706)。例えば、計算ステップ706は、図6で実施されたコントローラ傾斜角計算でよい。次いで、ビデオゲームシステムは、仮想ポインタのY軸値を計算する(708)。例えば、計算ステップ708は、図4で実施されたY軸値計算でよい。仮想ポインタのY軸値を計算した後、ビデオゲームシステムは、画面上のポインタ位置のX軸値が仮想ポインタのX軸値と等しいとみなす(710)。その後で、ビデオゲームシステムは、ビデオゲームシステムがアバタの移動を適切にレンダリングすることができるように、例えば図3Aおよび3Cに示されるように仮想ポインタX軸値を−1から1の間に「固定」する(712)。最後に、処理を終了することができる(728)。
【0059】
判定ステップ702に戻って、有効な画面ポインタを得ることができないと判定した場合、ビデオゲームシステムは、サンプリング済み画面ポインタ位置から、中心領域304に対応する仮想ポインタのY軸値を計算する(714)。例えば、計算ステップ714は、図6で実施されるコントローラ傾斜角計算でよい。次いで、ビデオゲームシステムは、以下の式を使用することによって仮想ポインタのX軸値の絶対値を求める(716)。
【0060】
仮想ポインタX軸値=cosine(arcsine(仮想ポインタY軸値))
仮想ポインタのX軸値の絶対値を求めた後、ビデオゲームシステムは、仮想ポインタのY座標が最小値(例えばY=−1)または最大値(例えばY=1)に対応するかどうかを判定する(718)。そうでない場合、ビデオゲームシステムは、以前にフレーミングしたポインタX軸値を仮想ポインタX軸値の符号(正/負)として割り当てる(720)。このことは、画面204上に表示するために計算された仮想ポインタの最後のX軸値の符号を取り、符号を、決定ステップ716で与えられるX軸値の絶対値と組み合わせることによって行われる。割当てステップの後、処理を終了することができる(728)。
【0061】
判定ステップ718に戻って、仮想ポインタのY軸値が最大値または最小値に対応する場合、ビデオゲームシステムは、コントローラ3上の加速度センサによって与えられる加速度値が規定の値よりも高く、水平加速度を有するかどうか(すなわち、コントローラ3が水平方向に移動したかどうか)を検出する(722)。そうである場合、ビデオゲームシステムは、コントローラの運動方向から仮想ポインタのX軸値の符号(正/負)を求める(724)。決定ステップ724の後、処理を終了することができる(728)。
【0062】
検出ステップ722に戻って、加速度値が規定の値を超過せず、水平加速度がなく、すなわちコントローラ3が水平方向に移動していないことが検出された場合、ビデオゲームシステムは、ゲームプレーヤがコントローラ3をローリングする方向から仮想ポインタのX軸値の符号(正/負)を求める(726)(コントローラ3をひねることにより、ポインタはコントローラ3の運動方向に移動する)。決定ステップ726の後、処理を終了することができる(728)。
【0063】
コリジョンデータの生成
あるゲームは、X、Y、およびZ軸で画定された仮想3次元(3D)世界の中をアバタが移動する必要がある。仮想世界の中のこの移動の一部は、所定の経路に基づくことができる。アバタ206は、所定の経路に基づいて3D世界の中を飛行することができる。所定の経路は、X軸およびZ軸に基づいて構成され、アバタ206は、Y軸の方向に自由に移動することができる。ある実施形態では、プレーヤが操作するアバタを除くゲーム内の他のキャラクタを、3つの軸とは無関係に、所定の経路内で移動させることができる。さらに、この所定の経路をバリア線でさらに画定することができ、それによって、アバタ206がこうしたバリア線内に位置する限り、経路に沿ってどこにでも移動することができる。このようにゲームを構築することで、利点が得られる。例えば、3D世界内に経路を画定することにより、アバタ206が3D世界全体にわたって移動する機能が制限され、ゲームが必要とするメモリおよび処理を少なくすることができる。次いで、ゲームプレーヤは、経路がバリア線の外側に延びるのでない限り、経路に沿ってアバタ206を移動する能力、経路に沿う方向を選ぶ能力(逆方向および順方向)、アバタの速度を選ぶ能力などを有することになる。図8を参照すると、上側バリア線804および下側バリア線806で所定の経路をさらに画定することができる。ある実施形態では、ゲーム自体の中で、こうした線はゲームプレーヤにとって不可視である。こうした線は、アバタ206がこうしたバリア線の外側に移動することができないように定義される。図8に示すように、ゲーム設計者がアバタ206の経路線に基づいて2D平面セグメントを生成することによってこの経路をモデル化した場合、アバタ206またはゲーム中の他のキャラクタがこうした未定義空間802の1つの中にあえて進むときにエラーが生じることがある。
【0064】
図9Aに、図8の実施形態の結果として生じる可能性のあるエラーを予防するのに使用することのできる例示的3Dセグメント900を示す。3Dセグメント900は、上側バリア限界902の上側バリア線804、下側バリア限界904の下側バリア線806、上側バリア限界902と下側バリア限界904の左側部分を接続する左側壁908、ならびに上側バリア限界902と下側バリア限界904の右側部分を接続する右側壁を含む。この実施形態では、アバタ206の経路線は、3Dセグメント900の上側バリア線804および下側バリア線806に基づく。このアバタ206の経路線により、ゲームプレーヤは、3Dセグメント900の上側バリア線804と下側バリア線806間の経路線平面内の任意の点に沿ってアバタ206を移動することが可能となる。
【0065】
図9Bに、アバタ206が1組の接続された経路線平面に沿って移動することができるように互いに結合された複数の3Dセグメントを示す。こうしたセグメントは、アバタ206の属性であり、アバタ206の位置に基づいて生成される。例えば、図10に、アバタAおよびBがその中で移動している所定の経路1000の俯瞰図を示す。図10からわかるように、経路1000は「8の字」構成を有する。各アバタは、アバタの前および後ろに生成される3Dセグメントを有する。例えば、アバタAは、最外前縁1002から最外後縁1004まで延びるすべての3Dセグメントを備える。さらに、アバタBは、順方向セグメント1012の最外前方セグメント1006から逆方向セグメント1014の最外後方セグメント1008まで延びる、現セグメント1010、順方向セグメント1012、および逆方向セグメントを備える。最外前方セグメント1006は、最外前縁1007まで延び、最外後方セグメント1008は最外後縁1009まで延びる。例えば、各アバタは、その位置に基づいて生成される5つのセグメント、すなわちアバタの現在位置について1つの現セグメント1010と、前方セグメント1012および後方セグメント1014についてそれぞれ2つを有することができる。2つの順方向セグメント1012および2つの逆方向セグメント1014が上記の実施形態で示されるが、任意の数の順方向セグメント1012および逆方向セグメント1014を生成できることを当業者はここで理解されよう。ある実施形態では、アバタBが同時に2つ以上のセグメント内にある場合、例えばBが所定の経路線を順方向に移動しており、あるセグメントから次のセグメントに遷移する場合、現セグメント1010は複数のセグメントを含むことがある。
【0066】
こうしたセグメントは、アバタ自体にのみ関係する属性であるので、あるアバタに関連するセグメントは、別のアバタに影響を及ぼさない。例えば、アバタAが左上側から、図10に示される8の字構成の経路1000の交差エリアに近づくとき、アバタBが右上側から交差に近づくときに、アバタBは、アバタAのセグメントの1つに進入すること、および順方向に移動することができる。
【0067】
上述のように、アバタに対応するセグメントは、アバタの位置決めに基づいて生成される。アバタBが、現セグメント1010から最外前方セグメント1006に向かって次のセグメントに順方向に移動するとき、現セグメント1010の後の次のセグメントが新しい現セグメントとなり、後方セグメント1014の最外後方セグメントが除去される。次いで、最外後方セグメントは、端部の隣の後方セグメントとなる。したがって、最外前方セグメント1006の外側の第1セグメントが生成され、それが新しい最外前方セグメントとなる。アバタの移動に基づくこうしたセグメントの生成および除去の利点は、アバタAが、経路1000左上側から8の字構成の経路1000の交差を通過した後に、左下側から8の字構成の8の字の交差を通過する場合に、対応する除去されずに残ったセグメントにぶつかることはないということにある。
【0068】
経路1000のこうしたセグメントは、アバタ206の位置を計算して、新しいセグメントを生成する必要があるかどうかを判定することによって生成される。新しいセグメントを生成すべきであると判定される場合、ビデオゲーム装置1は、セグメントデータを求めて、メモリ、例えば図11に示されるメモリ1100にアクセスする。ある実施形態では、各セグメントについてのフロアデータをメモリの異なるフロア部分に格納することができる(図示せず)。例えば、メモリ1100のフロア部分は、すべてのセグメントについてのフロアデータのみを格納することができる。したがって、すべてのセグメントについての天井、右側壁、および左側壁データを、それ自体のそれぞれの異なるメモリ部分に格納することができる。ある実施形態では、図11のメモリ1100で示されるように、メモリ1100は、各セグメントのフロア、天井、および壁データを順次格納することができる。この代替実施形態は、ビデオゲーム装置1がアクセスしなければならないのがメモリ1100の4つの部分ではなく、1つの部分のみとなるので、効率的なビデオゲーム装置1を提供する。メモリ1100内に提供されるセグメントデータにアクセスした後、ビデオゲーム装置1は、フロア1104、天井1106、右側壁1108、および左側壁1110を有する対応するセグメント1102を生成することができる。より多くのセグメントを生成すべきであると判定されるとき、ビデオゲーム装置1は、追加のセグメントデータを求めてメモリ1100にアクセスすることができる。
【0069】
カメラ角度の制御
上述したように、あるゲームは、アバタが所定の経路に基づいて3次元(3D)世界で移動する必要がある。所定の経路は、X軸およびZ軸に基づいて構成され、アバタ206は、Y軸の方向に自由に移動することができる。ある実施形態では、プレーヤが操作するアバタを除くゲーム内の他のキャラクタを、3つの軸とは無関係に、所定の経路内で移動させることができる。例えば、図12Aに示されるように、アバタ206は、この所定の経路に基づいて3D世界の中を飛行することができ、この所定の経路は、カメラ線を有する経路平面でよい。上側カメラ線1204および下側カメラ線1206で所定の経路1202をさらに画定することができる。こうしたカメラ線1204および1206は、図8に示すバリア線804および806に対応することができ、またはバリア線804および806とは完全に無関係とすることができる。ある実施形態では、ゲーム自体の中で、こうした線はゲームプレーヤにとって不可視である。ある実施形態では、所定の経路は中間線も含むことができる。この中間線は、上側カメラ線1204と下側カメラ線1206のほぼ中間でよく、または上側カメラ線1204と下側カメラ線1206(ならびに/あるいは上側バリア線804と下側バリア線806)の間の任意の所定の経路でよい。中間線は、アバタ206の位置に基づいてカメラ1208の角度を調節するための基準点を与える。
【0070】
ある実施形態では、中間線をなくすことができ、ビデオゲーム装置は、上側カメラ線1204および下側カメラ線1206に対するアバタ位置に基づいてカメラ角度を調節する。アバタ206が一方のカメラ線に近づくと、他方のカメラ線から遠ざかる。カメラ1208の角度は、接近するカメラ線に向かって増大する。ある実施形態では、アバタ206の位置に対する中間線および/またはカメラ線の距離の一定の比に達するまでカメラ角度が変化しないようにカメラ角度を決定することもできる。この比のしきい値が満たされると、カメラ角度を変更することができる。あるいは、一定の比に達するまでカメラ角度が小さい角度増分で変化することができ、次いでその後、角度が指数関数的に急激に変化することができる。
【0071】
さらに、アバタ206の速度、ならびに中間線とアバタ206との距離によってカメラ1208の位置を定義することができる。例えば、図12Bに示すように、アバタ206が高速度で移動中である場合、カメラ1208の角度がアバタ206に追従し、アバタ206がこの高速度で移動する効果を与える。したがって、図12Cで示すように、アバタ206が低い速度で移動する場合、カメラ1208の角度をアバタ206に対してより垂直にすることができる。図12Bおよび12Cに示すように、カメラ1208の角度をキャラクタの直後にすることができ、アバタ206の位置に対して垂直にすることができ、またはアバタ206の位置に対して水平な角度にすることができる。アバタ206の速度によってカメラの位置を定義することができるので、プレーヤは、アバタ206の前にあるアイテムの位置を容易に突き止めることができる。
【0072】
図13に、所定の経路が中間線1302を含む例示的実施形態を示す。中間線1302は、0°のカメラ角度を指すことができ、上側カメラ線1204および下側カメラ線1206は、それぞれ30°および−30°のカメラ角度を指すことができる。アバタ206が経路線に沿って移動中に中間線1302上にとどまる場合、カメラは、0°の垂直角度からアバタに対して焦点を合わせることができる。アバタ206が上側カメラ線1204に沿って移動する場合、カメラは30°の角度でアバタ206に追従する。したがって、アバタ206が下側カメラ線1206に沿って移動する場合、カメラ1208は、−30°の角度でアバタ206に追従する。したがって、カメラ1208の角度は、中間線1302に対するアバタ206の位置に基づいて調節される。例えば、アバタ206が中間線1302と上側カメラ線1204の中間に配置される場合、カメラ1208は、15°の角度でアバタ206に追従することができる。したがって、アバタ206が中間線1302と下側カメラ線1206の中間に配置される場合、カメラ1208は、−15°の角度でアバタ206に追従することができる。30°と−30°を上側カメラ線1204および下側カメラ線1206として示したが、上側カメラ線1204および下側カメラ線1206ならびに中間線1302に対して任意の角度を使用できることを当業者はここで理解されよう。
【0073】
図14に示すように、3D世界の上側カメラ線1204および下側カメラ線1206に基づいて中間線1302を調節することができる。例えば、崖の下降などの下側地形1402への突然の降下を示すために、ゲーム設計者は、アバタ206が経路線内で垂直に移動しないときであっても、崖の下降を移動する効果をゲームプレーヤに与えたいことがある。さらに、ある実施形態では、上側カメラ線1204および下側カメラ線1206の設定は、例えば下側カメラ線1206と下側地形1402との間で示すように、3D風景の地形とは何の関係も有さない可能性がある。さらに、図14は、アバタ206が経路上の進路を維持するときであってもカメラ角度が変化する可能性があることを示す。
【0074】
中間線1302を上記で示したが、アバタの位置に基づいてカメラ角度を求めるために他の方法を使用することができる。例えば、中間線を含むように所定の経路を画定する代わりに、アバタ206に追従するカメラ角度が、上側カメラ線1204と下側カメラ線1206の両方に対するアバタの位置に基づくことができ、上側カメラ線1204および下側カメラ線1206は、それぞれ上側バリア線804および下側バリア線806でよい。例えば、角度は、アバタ206と上側カメラ線1204の間の距離をアバタ206と下側カメラ線1206の間の距離と比較した比に基づくことができる。例えば、アバタ206が上側カメラ線1204に近づくとき、カメラ1208の角度を増大させることができる。
【0075】
本明細書で開示した方法を、データ処理装置、例えばプログラム可能プロセッサ、コンピュータ、または複数のコンピュータによる実行のため、またはその動作を制御するためのコンピュータプログラム製品、すなわち情報キャリアと、例えば機械読み取り可能な記憶装置または伝播信号として有形に具体化されたコンピュータプログラムとして実装することができる。コンパイル型言語またはインタプリタ型言語を含む任意の形式のプログラミング言語でコンピュータプログラムを書き込むことができ、スタンドアロンプログラムまたはモジュール、コンポーネント、サブルーチン、あるいはコンピューティング環境での使用に適した他のユニットを含む任意の形式でコンピュータプログラムを配置することができる。1つのコンピュータ上で、あるいは1つのサイト、または複数のサイトにわたって分散し、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるようにコンピュータプログラムを配置することができる。
【0076】
上述の明細書では、特定の例示的実施形態を参照しながら本発明を説明した。しかし、添付の特許請求の範囲に記載の本発明のより広い精神および範囲から逸脱することなく、様々な修正および変更を行えることは明らかであろう。したがって、明細書および図面は限定的なものとしてではなく例示的なものとみなすべきである。本発明の他の実施形態は、本明細書で開示された本発明の仕様および実施を考慮することで当業者には明らかである。

【特許請求の範囲】
【請求項1】
コントローラのポインタ位置および傾斜角をサンプリングするステップと、
前記サンプリングに基づいて中心領域傾斜値を計算するステップと、
前記計算した中心領域傾斜値に基づいて上限および下限傾斜値限度を計算するステップと、
ビデオゲームシステムが、ゲームプレーヤの前記コントローラの使用に基づいて仮想ポインタY軸値を処理することができるように、前記計算した値を格納するステップと、を備え、
前記ポインタ位置は、前記コントローラとモニタの画面との間の相互関係に基づいている方法。
【請求項2】
コントローラのポインタ位置および傾斜角をサンプリングするステップと、
前記サンプリングに基づいて中心領域傾斜値を計算するステップと、
前記計算した中心領域傾斜値に基づいて上限および下限傾斜値限度を計算するステップと、
前記計算に基づいてY軸値を求めるステップと、
前記計算に基づいてX軸値を求めるステップと、
ビデオゲームシステムが、ゲームプレーヤの前記コントローラの使用に基づいて仮想ポインタX軸値およびY軸値を処理することができるように、前記求めたX軸値および前記Y軸値を格納するステップと、を備え、
前記ポインタ位置は、前記コントローラとモニタの画面との間の相互関係に基づいている方法。
【請求項3】
前記サンプリングするステップは、前記ポインタ位置をサンプリングすることができず、かつ前記傾斜角をサンプリングすることができるとき、1つまたは複数の前記計算した傾斜値のみに基づいてアバタを操作するステップを備える請求項1または2に記載の方法。
【請求項4】
前記モニタの前記画面上にカーソルを表示するステップと、
前記傾斜値に基づいて前記カーソルを移動するステップと、
前記表示されたカーソルの方向に向けて前記アバタを移動するステップと、を備え、
前記カーソルを移動するステップは、前記カーソルをカーソル経路内で移動させる請求項3に記載の方法。
【請求項5】
前記カーソルを表示するステップは、
前記ポインタ位置をサンプリングすることができるかどうかを判定するステップと、
前記判定に基づいて前記カーソルの色を変更するステップと、を備える請求項4に記載の方法。
【請求項6】
コンピュータで実行されたときに、コントローラの位置決めに基づいて位置を処理する方法を前記コンピュータに実行させる命令を格納するコンピュータ読み取り可能な記録媒体であって、前記方法は、
前記コントローラのポインタ位置および傾斜角をサンプリングするステップと、
前記サンプリングに基づいて中心領域傾斜値を計算するステップと、
前記計算した中心領域傾斜値に基づいて上限および下限傾斜値限度を計算するステップと、
ビデオゲームシステムが、ゲームプレーヤの前記コントローラの使用に基づいて仮想ポインタY軸値を処理することができるように、前記計算した値を格納するステップと、を備え、
前記ポインタ位置は、前記コントローラとモニタの画面との間の相互関係に基づいているコンピュータ読み取り可能な記録媒体。
【請求項7】
コンピュータで実行されたときに、コントローラの位置決めに基づいて位置を処理する方法を前記コンピュータに実行させる命令を格納するコンピュータ読み取り可能な記録媒体であって、前記方法は、
前記コントローラのポインタ位置および傾斜角をサンプリングするステップと、
前記サンプリングに基づいて中心領域傾斜値を計算するステップと、
前記計算した中心領域傾斜値に基づいて上限および下限傾斜値限度を計算するステップと、
前記計算に基づいてY軸値を求めるステップと、
前記計算に基づいてX軸値を求めるステップと、
ビデオゲームシステムが、ゲームプレーヤの前記コントローラの使用に基づいて仮想ポインタX軸値およびY軸値を処理することができるように、前記求めたX軸値および前記Y軸値を格納するステップと、を備え、
前記ポインタ位置は、前記コントローラとモニタの画面との間の相互関係に基づいているコンピュータ読み取り可能な記録媒体。
【請求項8】
前記サンプリングするステップは、前記ポインタ位置をサンプリングすることができず、かつ前記傾斜角をサンプリングすることができるとき、1つまたは複数の前記計算した傾斜値のみに基づいてアバタを操作するステップを備える請求項6または7に記載のコンピュータ読み取り可能な記録媒体。
【請求項9】
前記モニタの前記画面上にカーソルを表示するステップと、
前記傾斜値に基づいて前記カーソルを移動するステップと、
表示された前記カーソルの方向に向けて前記アバタを移動するステップと、を備え、
前記カーソルを移動するステップは、前記カーソルをカーソル経路内で移動させる請求項8に記載のコンピュータ読み取り可能な記録媒体。
【請求項10】
前記カーソルを表示するステップは、
前記ポインタ位置をサンプリングすることができるかどうかを判定するステップと、
前記判定に基づいて前記カーソルの色を変更するステップと、を備える請求項9に記載のコンピュータ読み取り可能な記録媒体。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図3C】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9A】
image rotate

【図9B】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12A】
image rotate

【図12B】
image rotate

【図12C】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2012−256371(P2012−256371A)
【公開日】平成24年12月27日(2012.12.27)
【国際特許分類】
【出願番号】特願2012−206135(P2012−206135)
【出願日】平成24年9月19日(2012.9.19)
【分割の表示】特願2008−154024(P2008−154024)の分割
【原出願日】平成20年6月12日(2008.6.12)
【出願人】(000132471)株式会社セガ (811)
【Fターム(参考)】