【文献】
スクウェア・エニックス公式攻略本 キングダム ハーツII(プレイステーション2版),株式会社集英社,2005年12月27日,第1刷,第009〜011頁
【文献】
CD−ROM Fan 11月号別冊 Online Player Vol.001,株式会社毎日コミュニケーションズ,2001年11月8日,第122〜123頁
(58)【調査した分野】(Int.Cl.,DB名)
前記パンニングを行うステップは、前記カーソルから前記ディスプレイの中心点までの距離に少なくとも応じて前記パンニングのスピードを制御するステップをさらに含む、請求項1または2に記載の方法。
前記カーソルが前記第1領域内に配置されている時間の長さに少なくとも基づいて、前記パンニングのスピードを制御することをさらに含む、請求項1ないし3のいずれかに記載の方法。
前記パンニングを行うステップは、基準位置に対する前記カーソルの位置に少なくとも基づいて3次元パンニングの方向を制御するステップをさらに含む、請求項1ないし8のいずれかに記載の方法。
【発明を実施するための最良の形態】
【0028】
(ビデオゲームプラットフォーム例)
図1はゲーム機100、テレビ102およびコントローラ107を含むゲームシステム10の非限定例を示す図である。
【0029】
ゲーム機100は、自機のハウジング110内に形成されたスロット105に挿入される光ディスク104に格納されているゲームプログラムまたはその他のアプリケーションを実行する。ゲームプログラムまたはその他のアプリケーションを実行した結果は、ゲーム機100にケーブル106で接続されているテレビ102の画面101に表示される。ゲームプログラムまたはその他のアプリケーションに関連する音声は、テレビ102のスピーカ109から出力される。
図1においてはビデオゲームソフトウェアを格納するのに光ディスクを使用しているが、その代わりにまたはそれに加えて、ゲームプログラムまたはその他のアプリケーションは、半導体メモリ、光磁気メモリ、磁気メモリ等の記憶媒体に格納しても良いし、そして/またはネットワーク上から、またはその他の手段で、ダウンロードしても良い。
【0030】
コントローラ107は、ゲームコントロールデータ等のデータをゲーム機100に無線送信する。ゲームコントロールデータは、例えば複数の操作ボタンやキー、スティック等を有するコントローラ107の操作部を使用して生成してもよい。また、コントローラ107はゲーム機100から送信されるデータを無線受信してもよい。コントローラ107とゲーム機100の間での無線送信にはBluetooth(ブルートゥース;登録商標)などのいずれかの無線プロトコルを使用すれば良い。
【0031】
後述のように、コントローラ107は、発光装置108aと108bからの画像を撮像して処理する撮像情報演算部を含む。発光装置108aと108bの間の中点は、テレビ102の画面101の垂直中心線と一致することが好ましい。発光装置108aと108bからの画像は、コントローラ107が指し示す方向と画面101からコントローラ107までの距離を判定するのに利用することができる。非限定の一例として、発光装置108aと108bを、2つのLEDモジュール(以下、マーカと記載する)としてテレビ102のディスプレイ画面近傍に設置してもよい。マーカはそれぞれ赤外光を発し、コントローラ107の撮像情報演算部はLEDモジュールからの出力光を検知して、そして上述したように、コントローラ107の指示方向と画面101からコントローラ107までの距離を判定する。以下の記述から明らかなように、本明細書中に記載されているオブジェクト攻撃シミュレーションシステムおよび方法の様々な実施例においては、上述のようなマーカの使用は必要としない。
【0032】
図1においては、マーカ108aと108bはテレビ102上に位置しているが、テレビ102の下方に位置しても良いし、それ以外の配置としてもよい。
【0033】
図2のブロック図において、ゲーム機100は、ビデオゲームプログラム(ただし必ずしもこれに限定されない)を含む様々なタイプのアプリケーションを実行するリスク(RISC)セントラルプロセッシングユニット(CPU)204を備える。CPU204は、ブートROM(図示せず)に記憶されている起動プログラムを実行し、これによってゲーム機100を初期化し、そして光ディスクドライブ208に挿入された光ディスク104に記録されているアプリケーションを実行する。ゲーム機100のハウジング110に設けられているユーザ操作可能なイジェクトボタン210は、光ディスクドライブ208から光ディスクを取り出すのに使用してもよい。
【0034】
一実施例として、光ディスクドライブ208は、CPU204とグラフィックスプロセッサー216での実行用に開発されたアプリケーションを格納する第1光ディスク(例えば第1サイズおよび/または第1データ構造等を持つ光ディスク)と元来その他のCPUおよび/またはグラフィックスプロセッサーでの実行用に開発されたアプリケーションを格納する第2光ディスク(例えば第2サイズおよび/または第2データ構造を持つ光ディスク)の両方を収納する。例えば、第2光ディスクは元来Nintendo GameCube(登録商標)のプラットフォーム用に開発されたアプリケーションなどであってもよい。
【0035】
CPU204は、グラフィックスプロセッシングユニット(GPU)216とそれに関連付けられたグラフィックスメモリ220、音声デジタル信号プロセッサ(DSP)218、内部メインメモリ222および入出力(IO)プロセッサ224を含むシステムLSI202に接続されている。
【0036】
システムLSI202のIOプロセッサ224は、一つ以上のUSBポート226、一つ以上の標準メモリカードスロット(コネクタ)228、WiFiモジュール230、フラッシュメモリ232および無線コントローラモジュール240に接続されている。
【0037】
USBポート226は、ゲーム機100に様々な種類の外部機器を接続するのに利用される。それらの機器は、非限定例として、ゲームコントローラ、キーボード、外付けハードディスクドライブなどの記憶装置、プリンタ、デジタルカメラなどである。また、USBポート226は有線ネットワーク(例えばLAN)接続にも利用してもよい。一実施例として、2つのUSBポート226が設けられる。
【0038】
標準メモリカードスロット(コネクタ)228は、業界標準型メモリカード(例えばSDメモリカード)を収納するのに適している。一実施例として、一つのメモリカードスロット228が設けられている。この業界標準型メモリカードは基本的にデータ記憶媒体として使用される。例えば、プレイヤがあるゲームのゲームデータをメモリカードに格納し、そのメモリカードを友人宅へ持参し、友人のゲーム機でそのゲームを楽しむこともできる。またメモリカードを、ゲーム機とパソコンやデジタルカメラなどの間でのデータ転送に使用してもよい。
【0039】
WiFiモジュール230は、ゲーム機100の無線アクセスポイントへの接続を可能にする。無線アクセスポイントは、他の場所に居るプレイヤたちとの(音声チャット有りまたは無しの)オンラインゲーム、ウェブ閲覧、電子メール、ファイルのダウンロード(ゲームのダウンロードを含む)、そしてその他多くのオンライン活動のためのインターネット接続を提供する。いくつかの実施例においては、WiFiモジュールを適切な装備の携帯型ゲーム機など他のゲーム機との通信に利用してもよい。ここではモジュール230を、IEEE802.11規格群関連で一般的に使用される「WiFi」と記載する。しかしながら、ゲーム機100はその代わりにまたはそれに加えて、他の無線標準規格に対応する無線モジュールを使用しても勿論良い。
【0040】
非限定例として、フラッシュメモリ232は、ゲームセーブデータ、システムファイル、ゲーム機の内部アプリケーション、そしてダウンロードデータ(ゲームなど)を格納する。
【0041】
無線コントローラモジュール240は、一つ以上のコントローラ107から無線送信される信号を受信し、受信した信号をIOプロセッサ224に送る。コントローラ107から無線コントローラモジュール240に送信される信号は、コントロ−ラ107自身によって生成された信号を含んでいても良いし、コントローラ107に接続されている他の機器によって生成された信号を含んでいても良い。一例として、一部のゲームにおいては、右手と左手で別々に行う入力を利用する場合もある。そのようなゲームの場合は、コントローラ107に別のコントローラ(図示せず)を接続し、コントローラ107が無線コントローラモジュール240に、自身が生成した信号および当該別のコントローラが生成した信号を送信することもあり得る。
【0042】
無線コントローラモジュール240も、コントローラ107へ信号を無線送信してもよい。非限定例として、コントローラ107(および/またはコントローラ107に接続されている別のコントローラ)に振動回路を設け、振動回路を制御するための振動回路制御信号が、無線コントローラモジュール240を介して送信されるようにしてもよい。さらなる非限定例として、コントローラ107にスピーカ(図示せず)を設けて(または接続して)、スピーカから出力する音声信号を、無線コントローラモジュール240を介してコントロ−ラ107に無線送信してもよい。さらなる非限定例として、コントローラ107にディスプレイ装置(図示せず)を設けて(または接続して)、ディスプレイ装置から出力するディスプレイ信号を、無線コントローラモジュール240を介してコントロ−ラ107に無線送信してもよい。
【0043】
専用メモリカードスロット246は、専用メモリカードを収納するためのものである。一実施例として、このようなスロットが2つ設けられている。専用メモリカードは、非標準コネクタや非標準メモリ構造などの非標準の特徴を持っている。例えば、一つ以上のメモリカードスロット246が、Nintendo GameCube(登録商標)のプラットフォーム用に開発されたメモリカードを収納するようにしてもよい。この場合、上記のようなスロットに挿入されたメモリカードは、Nintendo GameCube(登録商標)のプラットフォーム用に開発されたゲームからデータを転送することができる。一実施例として、メモリカードスロット246を、当該スロットに挿入されているメモリカードに対して読み取り専用アクセスの設定で使用し、メモリカードのデータのコピーや、スロット228に挿入されている標準メモリカードなど他の記憶媒体への当該データの転送について制限を設けるようにしてもよい。
【0044】
一つ以上のコントローラコネクタ244は、各ゲームコントローラへの有線接続に適している。一実施例として、4つのコントローラコネクタが、Nintendo GameCube(登録商標)のプラットフォーム用ゲームコントローラへの有線接続用に設けられる。またコネクタ244はそれぞれ、無線ゲームコントローラからの信号を受信する無線受信機に接続されていてもよい。これらコネクタは、Nintendo GameCube(登録商標)のプラットフォーム用に開発されたゲームの光ディスクが光ディスクドライブ208に挿入された時に、プレイヤが特に当該プラットフォーム用のコントローラを使用できるようにするものである。
【0045】
コネクタ248は、ゲーム機100を例えば通常の壁コンセントからの直流電力に接続するために設けられる。電力は一つまたはそれ以上の数の電池からのものでも勿論よい。
【0046】
GPU216は、CPU204からの指示に基づいて画像処理を行う。GPU216は、例えば3次元(3D)グラフィックスを表示するのに必要な演算を行う回路を含む。GPU216は、画像処理専用のグラフィックスメモリ220と内部メインメモリ222の一部を使用して画像処理を行う。GPU216は、音声/画像コネクタ214によって、音声/画像IC(インターフェース)212を介してテレビ102へ出力する画像データを生成する。
【0047】
音声DSP218は、CPU204からの指示に基づいて音声処理を行う。音声DSP218によって生成された音声は、音声/画像コネクタ214によって、音声/画像IC212を介してテレビ102へ出力される。
【0048】
外部メインメモリ206および内部メインメモリ222は、CPU204が直接アクセス可能な記憶領域である。これらのメモリは例えば、CPU204が光ディスク104から読み取るゲームプログラムなどのアプリケーションプログラムや様々なタイプのデータなどを記憶することができる。
【0049】
ROM/RTC238はリアルタイムクロックを含み、外部からの電力が供給されなくても使用できるよう内部バッテリ(図示せず)で動作することが好ましい。ROM/RTC238はまた、ゲーム機で使用可能なブートROMとSRAMを含んでいてもよい。
【0050】
電源ボタン242は、ゲーム機100の電源を入れたり切ったりするのに使用する。一実施例として、電源ボタン242は、不意に誤って電源を切ってしまう可能性を減らすために、所定の時間(例えば1〜2秒)押し続けないとゲーム機の電源が切れないように設定される。リセットボタン243はゲーム機100をリセット(再起動)するために使用される。
【0051】
図3および
図4においては、一例であるコントローラ107が、操作ボタン302a〜302hが設けられたハウジング301を備えている。ハウジング301は略直方体形状を有しており、プレイヤが片手で把持可能な大きさである。十字スイッチ302aは、ハウジング301上面の中央前面側に設けられている。十字スイッチ302aは十字型の4方向プッシュスイッチであり、矢印で示す方向(前後左右)に対応する操作部分が、十字の突出片にそれぞれ配置される。プレイヤは十字スイッチ302aのいずれかの操作部分を押下することによって、前後左右いずれかの方向を選択する。例えばプレイヤは、十字スイッチ302aを操作することによって、仮想ゲーム世界に登場するキャラクタを色々な方向に動かすことができる。
【0052】
一例として十字スイッチ302aの説明をしたが、他の態様の操作部を使用してもかまわない。非限定例として、リング状に4方向の操作部分を備えたプッシュスイッチとセンタスイッチとを含む複合スイッチを使用してもかまわない。またもう一つの非限定例として、自身の傾倒方向に応じて信号を出力する、ハウジング301上面から突出した傾倒可能なスティックを使用してもかまわない。さらにもう一つの非限定例として、自身のスライド方向に応じて信号を出力する、水平移動可能な円盤状部材を使用してもかまわない。さらにもう一つの非限定例として、タッチパッドを使用してもかまわない。さらにもう一つの非限定例として、プレイヤによって押下されたときに割り当てられた信号を出力する、少なくとも4つの方向(前後左右)にそれぞれ対応する分離して設けられたスイッチを使用してもかまわない。
【0053】
ボタン(またはキー)302b〜302gは、ハウジング301上面の十字スイッチ302aより後面側に設けられる。ボタン302b〜302gは、プレイヤによって押下されたときに割り当てられた信号を出力する操作部である。例えば、ボタン302b〜302dは、Xボタン、Yボタン、およびBボタンであり、ボタン302e〜302gは、セレクトスイッチ、メニュースイッチ、およびスタートスイッチである。通常これらボタン302b〜302gには、ゲーム機100が実行するアプリケーションに応じてさまざまな機能が割り当てられる。
図3に示した配置例では、ボタン302b〜302dは、ハウジング301上面の中央前後方向に沿って直線的に配置されている。また、ボタン302e〜302gは、ハウジング301上面の左右方向に沿ってボタン302bと302dの間に直線的に配置されている。ボタン302fは、コントローラ107を把持しているプレイヤが不意に誤って押下する可能性を減らすため、ハウジング301の上面に埋没していてもよい。
【0054】
ハウジング301上面の十字スイッチ302aより前面側に、ボタン302hが設けられる。ボタン302hは、遠隔からゲーム機100の電源をオン/オフする電源スイッチである。ボタン302hも、プレイヤが不意に誤って押下する可能性を減らすため、ハウジング301の上面に埋没していてもよい。
【0055】
また、ハウジング301上面のボタン302cより後面側に、複数の(例えば4つの)LED304が設けられる。コントローラ107は、ゲーム機100で使用する他のコントローラと区別するために、コントローラ種別(番号)が割り当てられている。LED304は、割り当てられた上記コントローラ番号をプレイヤに視覚的に示すために用いてもよい。例えば、コントローラ107が無線コントローラモジュール240に信号を送信する際、上記コントローラ種別に応じて複数のLEDのうち、種別に対応するLEDが点灯する。
【0056】
図3Bにおいて、ハウジング301下面には、凹部308が形成されている。凹部308は、プレイヤがコントローラ107を把持したときに当該プレイヤの人差し指や中指が位置するような場所に形成される。凹部308の後面側傾斜面308aには、ボタン302iが設けられる。ボタン302iは、例えばAボタンとして機能し、一例としてはシューティングゲームにおけるトリガスイッチとして用いられる。
【0057】
図4において、コントローラのハウジング301の前面には、撮像素子305aが設けられる。撮像素子305aは、マーカ108aと108bから受信した画像データを解析する、コントローラ107の撮像情報演算部の一部を構成する。撮像情報演算部305は、例えば最大200フレーム/秒程度のサンプリング周期であるため、比較的高速なコントローラ107の動きでも追跡して解析することができる。なお、本明細書中に記載されているオブジェクト攻撃シミュレーションの技術は、撮像情報演算部305からの情報を利用しなくても実現することができるので、撮像情報演算部の動作の詳細な記述は省略する。
【0058】
また、コントローラのハウジング301の後面には、コネクタ303が設けられている。コネクタ303は、機器をコントローラ107に接続するのに使用される。例えば、プレイヤが両手でのゲーム操作入力を利用してゲームを楽しむことができるように、コントローラ107と同様のまたは異なった構成の第2コントローラを、コネクタ303を通じてコントローラ107に接続するようにしてもよい。他のゲーム機のゲームコントローラ、また、キーボードやキーパッド、タッチパッドなどの入力装置、そしてスピーカやディスプレイなどの出力装置などの機器を、コネクタ303を介してコントローラ107に接続してもよい。
【0059】
ここで、以下の説明を容易にするために、コントローラ107の座標システムを定義付ける。
図3と
図4に示すように、左手XYZ座標系がコントローラ107に対して定義付けられている。本座標系は勿論非限定例として記載されるものであり、本明細書に記載のシステムおよび方法は、他の座標系を使用しても同様に適用可能である。
【0060】
図5のブロック図に示すように、コントローラ107は3軸直線加速度センサ507を含み、3軸直線加速度センサ507は、上下方向(
図3〜4に示すZ軸)、左右方向(
図3〜4に示すX軸)、および前後方向(
図3〜4に示すY軸)の3軸でそれぞれ直線加速度を検知する。なお、加速度センサ507としては、Y軸とZ軸のみでそれぞれ直線加速度を検出する2軸直線加速度計、またはZ軸のみで直線加速度を検出する1軸直線加速度計が用いられてもかまわない。一般的に、加速度計の選択は(例えば3軸センサか2軸センサか)必要な制御信号の種類によって決められる。非限定例として、この3軸または2軸の直線加速度計は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ507は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式もしくは静電容量結合式であることが好ましい。しかしながら、既存の加速度計の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて3軸または2軸の直線加速度センサ507が提供されてもよい。
【0061】
当業者には公知であるように、加速度センサ507に用いられるような直線加速度計は、加速度センサの持つ各軸に対応する直線に沿った加速度のみを検知することができる。つまり、加速度センサ507からの直接の出力は、その2軸または3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ507は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【0062】
しかしながら、加速度センサ507から出力される直線加速度信号に対して追加の処理を行うことによって、コントローラ107に関するさらなる情報を推測または算出(すなわち判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な直線加速度(重力)が検知されると、加速度センサ507からの直線加速度出力を用いて、傾斜角度と検知された直線加速度とを相関させることによって重力ベクトルに対する対象の傾きを測定することができる。このように、加速度センサ507をコントローラ107のマイクロコンピュータ502(または他のプロセッサ)と組み合わせて用いることによって、コントローラ107の傾き、姿勢または位置を測定することができる。同様に、加速度センサ507を備えるコントローラ107が、例えば以下で説明するようにユーザの手で動的に加速されて動かされる場合に、加速度センサ507によって生成される直線加速度信号を処理することによって、コントローラ107のさまざまな動きおよび/または位置を算出することができる。
【0063】
他の実施例では、加速度センサ507は、信号をマイクロコンピュータ502に出力する前に内蔵の加速度計から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサが静的な加速度(例えば、重力)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角(または別の所望のパラメータ)に変換するものであってもよい。
【0064】
図5を再び参照する。コントローラ107の撮像情報演算部305は、赤外線フィルタ528、レンズ529、撮像素子305a、および画像処理回路530を含んでいる。赤外線フィルタ528は、コントローラ107の前面に入射する光から赤外光のみを通過させる。レンズ529は、赤外線フィルタ528からの赤外光を集光して撮像素子305aに収束させる。撮像素子305aは、例えばCMOSセンサやあるいはCCDのような固体撮像装置であり、レンズ529がマーカ108aと108bから集光した赤外光を撮像する。したがって、撮像素子305aは、赤外線フィルタ528を通過した赤外光だけを撮像して、それに基づいた画像データを生成する。この画像データは画像処理回路530で処理される。画像処理回路530は、画像データの高輝度領域を検出し、この検出に基づいて高輝度領域の検出位置座標および面積を表す処理結果データを通信部506へ出力する。この情報から、コントローラ107がどの方向を指し示しているか、また画面101に対してどれだけの距離にあるかが測定できる。
【0065】
また、コントローラ107は振動回路512を備えていてもよい。振動回路512は振動モータやソレノイドなどであってもよい。コントローラ107は振動回路512を起動(例えばゲーム機100からの信号に反応して)させることで振動し、その振動はコントローラ107を把持するプレイヤの手に伝わる。これにより、いわゆる振動対応ゲームが実現できる。
【0066】
上述のように、加速度センサ507は、加速度をコントローラ107の3軸方向成分の形で、すなわちコントローラ107の上下方向(Z軸方向)、左右方向(X軸方向)、および前後方向(Y軸方向)の3軸方向成分の形で検知し出力する。加速度センサ507によって3軸方向成分として検知された加速度を表すデータは、通信部506へ出力される。この加速度センサ507から出力された加速度データに基づいて、コントローラ107の動作が判定できる。
【0067】
通信部506は、マイクロコンピュータ502、メモリ503、無線モジュール504、およびアンテナ505を含んでいる。マイクロコンピュータ502は、処理の際にメモリ503を記憶領域として用いながら、データを無線送受信する無線モジュール504を制御する。マイクロコンピュータ502には、操作部302からの操作信号(例えば十字スイッチ、ボタンまたはキーデータ)、加速度センサ507からの3軸(X、Y、Z)方向の加速度信号、および撮像情報演算部305からの処理結果データを含むデータが供給される。マイクロコンピュータ502は、供給されたデータをゲーム機100へ送信する送信データとして一時的にメモリ503に格納する。ここで、通信部506からゲーム機100への無線送信は、所定の周期毎に行われる。ゲームの処理は1/60秒(16.7ms)を単位として行われることが一般的であるので、それよりも短い周期で無線送信を行うことが好ましい。例えば、ブルートゥース(登録商標)で構成される通信部の送信間隔は5msである。マイクロコンピュータ502は、送信タイミングが到来すると、メモリ503に格納されている送信データを一連の操作情報として無線モジュール504へ出力する。そして、無線モジュール504は、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて、操作情報を、所定周波数を持つ搬送波信号としてアンテナ505から送信する。つまり、操作部302からの操作信号データ、加速度センサ507からのX軸、Y軸およびZ軸方向加速度データ、および撮像情報演算部305からの処理結果データがコントローラ107から送信される。ゲーム機100は当該搬送波信号を受信し、それを復調や復号することによって操作情報(例えば操作信号データ、X軸、Y軸そしてZ軸方向加速度データ、および処理結果データ)を取得する。そしてゲーム機100のCPU204は、取得したデータと現在実行中のアプリケーションとに基づいて、アプリケーション処理を行う。なお、Bluetooth(登録商標)の技術を用いて通信部506を構成する場合、コントローラ107は、ゲーム機100以外のデバイスから無線送信されたデータを受信することもできる。
【0068】
上述の非限定例のシステムは、当該ソフトウェアは、コントローラ107を使用したユーザ入力に反応して変形が進行していくオブジェクトを画面101上にインタラクティブに生成させるための、光ディスク104またはその他のメモリに格納されているソフトウェアを実行するのに使用できる。以下、そのようなディスプレイを生成するための、非限定例のソフトウェア制御技術を説明する。
【0069】
(非限定ポインティング制御例)
図6Aおよび
図6Bは、上述のシステムによって生成されディスプレイ装置102上に表示されている、非限定例としてのゲーム画面例1000を説明する図である。ゲーム画面例1000は、3次元世界1002(ここでは一つの窓と4面の壁を含むビルの内部)を示している。本非限定実施例においては、ディスプレイ装置102上に2次元投影される3次元世界1002は、以下の3つの領域またはエリアに分けられる。
・最内側エリア1004
・最内側エリア1004を取り囲む第1仮想カメラパンニング制御エリア1006
・仮想カメラパンニング制御エリア1006を取り囲む追加仮想カメラパンニング制御エリア1008
【0070】
限定されない一例として、これら3つの領域またはエリア1004、1006および1008は、ディスプレイ画面101の2次元表面に対して定められる。しかしながら他の実施例では、これらの領域またはエリアは、3次元世界1002内部の3次元領域または3次元空間として定められることもありうる。
【0071】
本非限定の実施例においては、カーソルもディスプレイ装置102に表示されている。当該カーソル1010が表示される位置は、上述の携帯型コントローラ107の指示方向によって制御される。ゲームプレイヤが、携帯型コントローラ107を動かして違う方向を指し示すたびに、カーソル1010の位置はその動きに合わせてディスプレイ装置102上の指し示された位置に移動する。また他の非限定実施例においては、2次元アナログもしくはデジタルジョイスティック、マウス、トラックボール、タッチスクリーン上のタッチペンや指の位置、またはその他いずれか使い勝手のよい入力手段やその他手段によってカーソル位置を制御することもありうる。
【0072】
なお
図6Aおよび
図6Bにおいては領域1004、1006そして1008の輪郭は実線で示されているが、ゲームプレイヤやその他ユーザが実際に目にするディスプレイにおいては、各領域の範囲や境界線は示されていても良いし示されてなくてもよい。いくつかの非限定の実施例においては、視覚的刺激をユーザに与え、それによりユーザが、カーソル1010が現在どの領域に位置しているのか分かるようにするのが望ましいかもしれない。また、その他の非限定実施例においてはこのような視覚的刺激を与えることはしない。そのような実施例では、聴覚的、またはその他の刺激が与えられすることもあり得るし、以下に説明するパンニング制御以外の適用例においてはそのような刺激は必要でない場合もあり得る。
【0073】
図6Aおよび
図6Bに示す非限定の実施例においては、現在カーソル1010は、携帯型ポインティングデバイスによって最内側領域1004に位置している。本非限定実施例においては、カーソル1010が最内側領域1004に位置している場合は、仮想カメラ視点は変化しない。ある非限定実施例においては、カーソル1010の位置を最内側領域1004内で動かすことによって、一貫して一定の仮想カメラ視点が維持される。これはつまり、3次元世界1002内の様々なオブジェクトの投影が変わらないということであり、そしてそれと同様にどのオブジェクトが見えているかも変わらないということである。すなわち、カーソル1010が最内側領域1004にある時には、カーソルを動かすことによってゲームプレイのその他の局面、例えば武器の照準方向の制御、を行うことができる。例えば1人称シューティングゲームにおいて、領域1004内でカーソル1010を上に向かって動かすことにより、武器がカーソルに向かって上方に傾くようにしてもよい。同様に、カーソル位置を左に動かすことで、武器の方向が左に動きカーソル等を追うようにしてもよい。
【0074】
本非限定実施例においては、ユーザが携帯型コントローラの指示位置を変えてカーソルを仮想カメラ制御エリア1006に動かしたときに、カーソル位置が仮想カメラの視点の変化に影響を与え始める。ある非限定の実施例においては、ユーザがカーソル1010を最内側エリア1004から仮想カメラ制御エリア1006に動かした場合、描かれている武器はカーソル位置に照準が合ったままでも良いが、それと同時に仮想カメラの視点がカーソル位置に示された方向にパンし始めても良い。したがって、例えばもしユーザがカーソルを右に動かして領域1006に移動させた場合、システムは、3次元世界1002における今まで表示していた部分の右手の異なる部分が現れるように、仮想カメラ視点のパンニングを開始してもよい。
【0075】
ある非限定の実施例においては、パンニングを行うスピードはあらかじめプログラムされており、ユーザがカーソル1010を動かすスピードに依らなくても良い。つまり本非限定実施例においては、3次元パンニング(上下左右への、また場合によっては、スクリーン中央もしくはその他任意の地点に対する現在のカーソル位置に基づいて定められたベクトルに沿ってのパンニング)を起動し、そしてその方向を制御するのは、カーソル1010の位置であって、その位置変化のスピードではない。本非限定実施例においては、ユーザがスクリーン中央部に対して右側にある仮想カメラ制御エリア1006の一部分へとカーソル1010を移動させる度に、仮想カメラの視点が所定のスピードで右の方へパンし始める。カーソル1010が仮想カメラ制御エリア1006内に留まっている間は、そのようなパンニングが継続される(例えば3次元世界1002の360度回転)。同様にして、ユーザがスクリーン中央上部にある仮想カメラ制御エリア1006の一部分にカーソル1010を配置する度に、システムは仮想カメラの視点を上方にパンし始める。また、左方および下方へのパンニングを行うという効果は、カーソル1010をそれぞれ仮想カメラ制御エリア1006の左側の部分および下側の部分に移動させることで実現できる。
【0076】
ある非限定実施例による模擬効果は、1人称シューター(プレイヤキャラクタ)が頭もしくは身体をカーソル位置の方向に向ける様子をシミュレーションするという効果である。そのような実施例においては、1人称シューターが身体を左もしくは右に向ける様子をシミュレーションするために、水平方向への360度回転を(右へもしくは左へ)行うことが望ましいであろう。そのような非限定実施例においては、現実世界において人が首を曲げてほぼ真上そしてほぼ真下を見ることができる(それ以上の範囲は無理だが)のと同じように、1人称シューターの頭部の上方および下方への可動範囲を制限してもよい。その他の非限定実施例において、例えば6自由度で自由に動けるスペースポッドの動きをシミュレーションする場合においては、パンニング角度の範囲を全方向に360度とする場合もありうるし、任意の方向への回転としたり、もしくは他の応用例においては、その他の制限を設けることもありうる。
【0077】
ある非限定実施例においては、仮想カメラ制御エリアを一つだけとすることもあり、それを例えば最内側領域1004の外側にあるのいずれかの位置であると定義づけることもあり得る。しかしながら、
図6Aおよび
図6Bにおいては1006と1008の二つの異なる仮想カメラパンニング制御エリアを示している。追加仮想カメラパンニング制御エリア1008は、内側の仮想カメラ制御エリア1006を取り囲んでいる。
図6Aおよび
図6Bに示す非限定実施例において、異なる二つの仮想カメラ制御エリア1006と1008では、仮想カメラがそれぞれ異なるスピードでパンするように制御されている。例えばある非限定実施例においては、カーソル1010を内側仮想カメラパンニング制御エリア1006に配置することによって、仮想カメラを比較的遅いスピードでパンさせ、カーソル1010をエリア1006を取り囲む外側仮想カメラパンニング制御エリア1008に配置することによって、仮想カメラの視点を速いスピードでパンさせても良い。仮想カメラパンニング制御エリアもしくは領域は、任意のサイズと形で、1からN(Nは整数)個までのいずれかの数で構成できる。仮想カメラ制御エリアはディスプレイに対して対称であっても非対称であってもよい。例えばいくつかの非限定実施例において、仮想カメラ制御エリアは、ディスプレイ中央に対して左右にある部分がより幅広く、もしくは面積がより大きく、そしてディスプレイの上部と下部にある部分のサイズがずっと小さくてもよいし(場合によっては存在していなくてもよい)、その逆でもよい。いかなる所望の構成も可能である。
【0078】
ある非限定の実施例においては、ユーザが「ビューロックモード」を起動する(例えばZボタンなどを押下する)ことによって、仮想カメラパンニング制御エリア1006と1008の効果を無効にすることができるようなオプションを持てるようにしてもよい。そのような非限定実施例の「ビューロックモード」は、ユーザが仮想カメラのアングルを変えてしまうことなく、カーソル1010をスクリーン上で何処にでも動かすことができるのを可能にするものである。その他の非限定実施例においては、カーソル1010が仮想カメラパンニング制御領域内に位置しているときに自動的にパンニングを提供する仮想カメラパンニング制御を起動するためには、ユーザはボタンを押下するか、もしくはその他の制御手段を作動させなければならない場合もあり得る。
【0079】
上述の効果において、仮想カメラは、仮にカーソルが仮想カメラ制御領域1006と1008内で静止していてもパンニングを継続する。本願の非限定例である携帯型コントローラを使用する際には、コントローラの360度の物理的回転を必ずしも伴わない場合がある(例えば非限定例として、コントローラが通常ディスプレイ装置近傍に位置しているセンサ周辺に向けて使用される場合もあるため)という点を考慮すると、仮想カメラの360度パンニングを実現するために、ユーザが携帯型コントローラを物理的に約360度回転させる必要がない場合もある。そのような非限定実施例において全てのユーザがしなければならないのは、仮想カメラ制御領域1006と1008内で、カーソル1010を、ディスプレイの中心からカメラをパンしたい方向に向かってずれた位置に配置することである。そのような実施例において本システムは、ユーザにいかなる他の追加的動作もさせることなく、所望の方向に自動的に仮想カメラパンニングを行う。
【0080】
本非限定実施例においては、ユーザは仮想カメラがパンするスピードを、ディスプレイ中央からカーソルまでの距離を特定することによって制御することができる。
図6Aおよび
図6Bに示す非限定の実施例においては、パンニングのスピードは「速い」と「遅い」の2種類がある。ユーザがカーソル1010をディスプレイの端部近傍に配置した場合、仮想カメラは素早くパンする。そしてユーザがカーソル1010を、ディスプレイの端部にそれほど近くない内側仮想カメラ制御領域1006に配置した場合は、仮想カメラはパンニングを続けるものの、スピードは遅くなる。そしてカーソル1010を最内側領域1004に配置した場合、パンニングは完全に止まる。このような設定にすることで、ユーザは1人称シューティングゲームやその他の1人称ゲームにおいて、内側仮想カメラ制御領域1006によって提供される精巧なパンニング制御を利用して、敵に向かって非常に素早く振り向く動きをシミュレーションしたり、自身の回転方向を細かく調整したりすることができるというオプションを得ることができる。
【0081】
その他の非限定実施例においては、ディスプレイ中央もしくはディスプレイの端からカーソル1010までの距離、またはどれだけの距離をユーザがカーソルを移動させたか、またはどのくらいの速度でユーザがカーソルを移動させたか、などに基づいて可変のパンニング速度を算出することもあり得る。
【0082】
さらに他の非限定実施例においては、仮想カメラがパンするスピードを、カーソル1010が仮想カメラ制御領域内にどのくらいの間留まっているかに基づいて決定しても良い。例えばある非限定実施例においては、カーソル1010が初めて仮想カメラ制御領域1006に移動したときに、比較的遅めのスピードのパンニングが始まる。そして、カーソルが仮想カメラ制御領域1006に長く留まるほど、スピードの速いパンニングが行われる。ある非限定の実施例においては、仮想カメラのパンニングには2種類のスピード(速いと遅い)のみがあり、時間閾値(例えば2秒)を、カーソル1010が仮想カメラ制御領域に留まっている時間との比較に使う場合もある。その他の非限定実施例では、カーソルが仮想カメラ制御領域に留まっている時間と、仮想カメラのパンニングの速度との間に、正比例関係ができるように計算が行われることもあり得る。
【0083】
本明細書における「パンニング」は、三脚の上に乗せたヘッドが回転する実際のカメラのそれと類似したものであることを意図している。三脚に乗せた映画用カメラを現実世界で使用する場合、カメラの方向を左右に動かすことができ、またカメラの方向を上方にそして下方に調整することができる。つまり、本明細書における「パンニング」とは、仮想空間において仮想カメラの向きを変える(仮想カメラを回転させる)ことである。3D透視射影または直交射影のための視点を生成する際に、3D視点のパンニングがマトリックス変換を単に使用することで実現できることは、当業者には周知である。これに関しては、フォーリー他(Foley et al)著、「コンピュータグラフィックスプリンシプルズアンドプラクティス(Computer Graphics Principles AND Practice)」、第2版、アディソンウェズリー(Addison Wesley)社、1990年、セクション6.2、p.237−252等を参照するとよい。このようなパンニングや他の仮想カメラ制御の効果は周知であり、映画撮影、アニメーション、ダンスシミュレーション、3次元視覚化、そして他の様々な場面において広く利用されている。これに関しては、米国出願第6325717号明細書等を参照するとよい。
【0084】
本非限定実施例においては、ユーザがカーソル1010を動かすスピードに基づいてパンニングのスピードを制御するようなことは通常ないが、他の非限定実施例においては、ユーザがカーソルを動かすスピードを、パンニングのスピードに影響を与えたり、パンニングのスピードを決定したりするための入力として利用することもありうる。さらに本非限定の実施例においては、どのようなパンニング効果が期待できるかということをユーザに示すためにカーソルの表示が使われているが、他の実施例においては、カーソル以外のオブジェクトを表示する場合や、オブジェクトを何も表示せずに、ユーザがどの方向または位置を指し示しているのか自分で分かっている(例えば携帯型ポインティングデバイスの物理的位置に基づいて)ということに依存する場合や、もしくは音声を利用したり、触覚または視覚フィードバックを利用したりすることもあり得る。
【0085】
ある非限定実施例においては、ゲームオブジェクトを指し示したりまたは視線方向を変えたりするために、カーソル1010を、DPD光学ポインティングデバイス107を介して制御する。この場合、カーソル1010がゲームディスプレイ内の「エリアI」(1004)にあるときにはスクローリングは発生しない、つまり、ユーザは自由にそして簡単にディスプレイ中央部に存在するオブジェクトを指し示すことができる。また、カーソル1010がゲームディスプレイ内の「エリアII」にあるときは、ゆっくりとしたスクローリングが発生する、つまり、元々の視点の背後にある壁を含むゲーム空間を見回すことができる。さらに、カーソル1010がゲームディスプレイ内の「エリアIII」(1008)にあるときは、速いスクローリングが発生する。
【0086】
図7A〜9Bは上述の非限定実施例をさらに説明する図である。カーソルが内側領域1004にある場合、仮想カメラ1052の視線方向を変えることなく、仮想武器1050で狙いをつけてカーソル位置を追うことができる。この場合の非限定例として、ユーザは仮想カメラ1052の位置を変えることなく、内側領域1004内でカーソル1010を自由にどこへでも動かすことができる。これは
図7Aと7Bにおいて示されている。したがって例えば
図7Cに表されているように、ユーザがカーソル1010を少し左に動かしただけでカーソルが内側領域1004に留まっている場合、仮想カメラ1052の方向は変わらない(
図7Bに表されている通り)。
【0087】
図8Aおよび
図8Bに示されているように、ユーザが内側領域1004から内側カーソル制御領域1006にカーソル1010を移動させた場合、システムは自動的に仮想カメラ1052の制御を始めて、カーソル1010の位置に対応する方向にゆっくりとパンさせる。
【0088】
図9Aと9Bに示されているように、ユーザが内側カーソル制御領域1006から、それを取り囲む外側カーソル制御領域1008へカーソル1010を移動させた場合、システムは仮想カメラ1052がカーソル1010の位置に対応する方向にパンするスピードを上げる。
【0089】
上述のように、パンニング制御領域は、どのようなサイズや形状、そして構成であっても良い。
図10は別の非限定実施例を示している。ここでは、ディスプレイの上方部分に仮想カメラパンニング制御領域1016があり、それを取り囲む仮想カメラパンニング制御領域1014がディスプレイのほぼ上半面に位置し、そしてディスプレイの残りの部分を領域1012が占めている。この別の非限定実施例においては、カーソル1010の位置が変化したときに、エリア1012、1014および1016の位置およびサイズもカーソルの動きに従って変化する。この別の非限定実施例では、カーソル1010がディスプレイ範囲より上に存在するとき、エリア1016および1014もディスプレイ範囲より上に移動して、そのサイズが縮小する。この特徴により、3Dゲームの制御が容易で快適なものとなる。ユーザが射撃の際にディスプレイの上端エリアに表示されている移動標的を指し示したいときに、ユーザは例えばディスプレイの上部を指し示す。しかしながら、もしエリア1016が
図6Aおよび
図6Bに示したのと同じ状態である場合は、ゲーム表示画像がすばやく向きを変えてしまい、標的を正確に捉えることが困難になりうる。この別の非限定実施例においては、各エリア1016、1014および1012のサイズおよび範囲はカーソル位置によって動的に変化し、それによりユーザは、いかなる標的もスムーズなパンニングと快適な制御によって指し示すことができる。
【0090】
(非限定ソフトウェア制御例)
図11は、光ディスクなどの記憶装置に格納されており、
図1〜5に関連付けて説明した上記システム上で動作して上述のパンニング機能を提供する、ゲームまたは他のソフトウェアの非限定実施例のフローチャートである。ここに示す例においては、ソフトウェアはハードウェアを初期化し(ブロック1102)、そして3次元世界のモデルを生成し、当該モデルを読み出す(ブロック1104)。そしてソフトウェアは初期仮想カメラ視点を設定し(ブロック1106)、3D世界を当該初期仮想カメラ視点で表示することで(ブロック1108)、
図6や
図7のような画面を表示する。そして、本非限定実施例では、光学ポインティング入力または他の入力を取得し(ブロック1110)、当該ポインティング入力を処理し(ブロック1112)、それにより表示画像をアニメーション化する。このとき、必要であれば、仮想カメラの視点を変更する(ブロック1112)。そしてシステムは、リアルタイムでインタラクティブなアニメーション効果を生むために、画面表示を適当な頻度で更新する(ブロック1114)。その後、ブロック1112〜1114の処理が繰り返される。
【0091】
図12は、非限定のプロセスポインタ入力ルーチン例1112を示す。本非限定実施例において、システムはポインタ位置が変化したかどうかを判定する(ブロック1116)。もしポインタ位置が変化していない場合、ブロック1112の処理を終了してもよい(ブロック1130)。もしポインタ位置が変化している場合は(判定ブロック1116でYes)、システムは(カーソルを使用している場合は)カーソル1010の位置を動かしてもよい(ブロック1118)。そして、システムは適切な動作をするために、カーソル位置をディスプレイ上の所定の各領域と比較する機能1119を作動または実行してもよい。
図12に示す本非限定実施例においては、システムは新たなポインタ位置が上述の内側ゾーン1004内にあるかどうかを判定する(ブロック1120)。もしそうである場合(判定ブロック1120でYes)、システムは武器の画像をアニメーション化し、仮想カメラの視点を変えることなくポインタ位置を追ってもよい(ブロック1122)。つまり、カーソルの位置に応じて武器の向きが変化するようにゲーム画像を生成し、アニメーションとして表示するようにしてもよい。ブロック1122の後、プロセスポインタ入力ルーチン1112は終了する。一方、もしシステムが、新たなポインタ位置が内側ゾーン1004に無いと判定した場合、システムは当該新たなポインタ位置が外側ゾーン1006および1008にあるかどうかを判定してもよい(判定ブロック1124)。もし新たなカーソル位置1010が外側ゾーン(エリア1006および1008)にある場合、システムは仮想カメラを当該新たなカーソル位置1010に対応する方向に(カーソル位置と同じ方向に)、そしてカーソル1010の正確な現在位置に基づいていてもよい所定のスピードで、パンしてもよい(ブロック1126)。いくつかの非限定実施例においては、ポインティングデバイスがいずれの領域にも向いていない方向を指し示している場合もあり得る。そのような場合は、それに対して適切な動作が行われることもあり得る(ブロック1128)。ブロック1126または1128の後、プロセスポインタ入力ルーチン1112は終了する。
【0092】
図13は、異なる二つの仮想カメラパンニングスピードを持つ、異なる二つの仮想カメラ制御領域1006と1008を提供する機能1119に関する別の非限定実施例を示している。この非限定実施例においては、
図12に示すブロック1118の次に、
図12に示すブロック1120と同様の判定処理が実行される(ブロック1120’)。ブロック1120’の判定結果が肯定の場合、
図12に示すブロック1122と同様の処理が実行される(ブロック1122’)。一方、ブロック1120’の判定結果が否定の場合、新たなカーソル位置が内側仮想カメラ制御ゾーン内にあるか否かが判定される(判定ブロック1132)。新たなカーソル位置が内側仮想カメラ制御ゾーン内にある場合(判定ブロック1132でYes)、システムは仮想カメラの視点を当該新たなカーソル位置の方向に徐々に変えていく(パンする)(ブロック1134)。それに対して、新たなカーソル位置が外側仮想カメラ制御ゾーン1008にある場合(判定ブロック1136でYes)は、システムは仮想カメラの視点を当該新たなカーソル位置の方向に急激に変える(パンする)(ブロック1138)。つまり、ブロック1138においては、ブロック1134よりも速いスピードでパンニングが行われる。なお、いくつかの非限定実施例においては、ポインティングデバイスがいずれの領域にも向いていない方向を指し示している場合もあり得る(判定ブロック1136でNo)。そのような場合は、それに対して適切な動作が行われることもあり得る(ブロック1140)。なお、ブロック1122’,1134,1138,または1140の後、プロセスポインタ入力ルーチン1112は終了する。
【0093】
図14は、パンニングのスピード制御に時間を利用する、さらに別の非限定実施例を示している。本非限定実施例においては、
図12に示すブロック1118の次に、ポインタが仮想制御ゾーンにあるか否かが判定される(判定ブロック1142)。ポインタが仮想制御ゾーンにある場合(判定ブロック1142でYes)、システムはタイマーをスタート(インクリメント)する(ブロック1144)。ある非限定実施例においては、もしタイマ−が特定の閾値よりも小さい値の時は(判定ブロック1146)、システムは仮想カメラの視点をカーソルの方向に徐々に変えていく(パンする)(ブロック1148)。もしタイマーの値が閾値よりも大きい場合は、つまりカーソル位置が仮想カメラパンニング制御ゾーンに当該時間閾値よりも長い間留まっている場合は、システムは仮想カメラの視点をカーソルの現在位置の方向に急激に変更する(ブロック1150)。つまり、ブロック1150においては、ブロック1148よりも速いスピードでパンニングが行われる。なお、ポインタが仮想制御ゾーンにない場合(判定ブロック1142でNo)、
図12に示すブロック1122と同様の処理が実行される。当該処理、または、ブロック1148もしくは1150の後、プロセスポインタ入力ルーチン1112は終了する。
【0094】
(ゲームディスプレイ例)
図15A、15Bおよび15Cは、本明細書で記載している技術を利用した、実際のビデオゲームのスクリーンショット例である。この非限定実施例において実行される1人称シューティングゲームでは、ディスプレイ上にその画像が現れるバイザーをキャラクタは被っている。このバイザーは、カーソルが仮想カメラのパンニングを誘発しない最内側領域1004の輪郭を大まかに表したものでもよい。また、仮想カメラパンニング制御領域1006を、バイザー視界領域を取り囲むエリアと等しくすることにより、1人称シューターキャラクタがバイザー領域内に現れている敵を視認して撃つために自身の頭部の向きを変えたり身体を回転させたりする必要がなくなり、そしてこれが現実感覚を生む。この非限定実施例においては、ユーザがカーソルをバイザー領域外に移動させるたびに、仮想カメラは、カーソル位置のディスプレイ中央に対するずれに対応した方向へパンニングを始める。さらに、カーソル位置がディスプレイ画面の端に近づくほど、速いパンニングが行われる。本非限定実施例においては、ユーザが現実世界で自分の頭の向きを変えたり、上を向いたり、下を向いたり、もしくは自分の身体の向きを変えたりする事で見ることのできるであろう範囲をシミュレートするために、水平パンニングは360度に渡って行われるが、垂直パンニングは180度以内の範囲でしか行われない。
【0095】
本発明は、本明細書において、非限定実施例に関連付けて記載されているが、本発明はこれに限定されるものではない。例えば本発明は上述のように、3D仮想カメラパンニングに関連付けて記載されているが、その代わりに2Dもしくは3D視点制御手段を用いることもあり得る。また、非限定実施例で提供されているのは、家庭用ビデオゲーム機器用の1人称シューティングゲームであるが、どのようなタイプのゲームを実行してもよいし、いかなるタイプの図形表示ディスプレイや、仮想現実ディスプレイ、またそれ以外のディスプレイを提供してもよい。そしてそのために、いかなるタイプのコンピュータグラフィックスを用いてもよいし、別のコンピュータプラットフォームを使用してもよい。本発明は請求項によって定義づけられることを意図しており、本明細書中に詳細に記述されているか否かに関わらず、本発明に相当する同等の構成全てを網羅するものとする。