JP4919887B2 - 画像処理プログラムおよび画像処理装置 - Google Patents

画像処理プログラムおよび画像処理装置 Download PDF

Info

Publication number
JP4919887B2
JP4919887B2 JP2007180294A JP2007180294A JP4919887B2 JP 4919887 B2 JP4919887 B2 JP 4919887B2 JP 2007180294 A JP2007180294 A JP 2007180294A JP 2007180294 A JP2007180294 A JP 2007180294A JP 4919887 B2 JP4919887 B2 JP 4919887B2
Authority
JP
Japan
Prior art keywords
vector
camera
virtual
data
game
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007180294A
Other languages
English (en)
Other versions
JP2009015793A (ja
Inventor
英明 清水
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Priority to JP2007180294A priority Critical patent/JP4919887B2/ja
Priority to US11/898,109 priority patent/US9561442B2/en
Publication of JP2009015793A publication Critical patent/JP2009015793A/ja
Application granted granted Critical
Publication of JP4919887B2 publication Critical patent/JP4919887B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • A63F13/10
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • A63F13/525Changing parameters of virtual cameras
    • A63F13/5258Changing parameters of virtual cameras by dynamically adapting the position of the virtual camera to keep a game object or game character in its viewing frustum, e.g. for tracking a character or a ball
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/6045Methods for processing data by generating or executing the game program for mapping control signals received from the input arrangement into game commands
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/64Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
    • A63F2300/646Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car for calculating the trajectory of an object
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/66Methods for processing data by generating or executing the game program for rendering three dimensional images
    • A63F2300/6661Methods for processing data by generating or executing the game program for rendering three dimensional images for changing the position of the virtual camera
    • A63F2300/6684Methods for processing data by generating or executing the game program for rendering three dimensional images for changing the position of the virtual camera by dynamically adapting its position to keep a game object in its viewing frustrum, e.g. for tracking a character or a ball

Description

本発明は、画像処理プログラムおよび画像処理装置に関し、より特定的には、方向入力に基づいて表示装置に表示されたオブジェクトを移動させる画像処理プログラムおよび画像処理装置に関する。
従来、十字スイッチやスティック等へのユーザ入力に応じて、表示装置に表示されたオブジェクトを仮想世界における前後左右に移動させるゲーム(画像処理)が一般的になっている。例えば、アナログジョイスティックまたは十字スイッチに対する「上」、「下」、「左」、および「右」操作に応じて、オブジェクトを移動させるビデオゲーム装置が開示されている(例えば、特許文献1参照)。上記特許文献1に開示されたビデオゲーム装置では、注目ノンプレイヤオブジェクトがロックされている場合、上記「上」、「下」、「左」、および「右」操作に応じて、それぞれ「注目ノンプレイヤオブジェクトに近づく方向」、「注目ノンプレイヤオブジェクトから遠ざかる方向」、「注目ノンプレイヤオブジェクトとの距離を一定に維持したまま左方向」、および「注目ノンプレイヤオブジェクトとの距離を一定に維持したまま右方向」にプレイヤオブジェクトを移動させる。また、注目ノンプレイヤオブジェクトがロックされていない場合、上記「上」、「下」、「左」、および「右」操作に応じて、それぞれ「前方」、「後方」、「左方」、および「右方」にプレイヤオブジェクトを移動させる。
特開2002−263359号公報
上述したように、従来の操作に対応するオブジェクトの移動方向は、上下操作に対応してオブジェクトが仮想世界における前後方向に移動するものが一般的である。これは、仮想世界に設定された平面に沿ってオブジェクトを移動させることを想定しており、基本的に表示画面で表現される画像において、プレイヤが直感的に認識する上下に対応する方向が仮想世界の前後方向となる環境で一定していることによる。そのため、仮想世界におけるオブジェクトの位置に応じて、オブジェクトの起立方向が変わる(例えば、仮想世界に設定されている重力方向や地形に対する法線方向が変わる)ような、変化に富んだ地形上でオブジェクトを移動させることを想定した移動方向の設定は考慮されていない。また、オブジェクトが移動している位置の地形が著しく変化したり、仮想カメラの向きが急激に変わったりした場合、オブジェクトの移動方向と操作方向との関係が直感的にわからなくなることが予想され、地形や仮想カメラの向きが変化した前後における移動方向および操作方向の連続性がとれずに操作が不安定になることも予想される。
それ故に、本発明の目的は、ユーザの方向入力に直感的に対応付けられた方向に、表示装置に表示された仮想空間内のオブジェクトを移動させる画像処理プログラムおよび画像処理装置を提供することである。
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
第1の発明は、仮想カメラ(C)から見た仮想空間内の操作対象オブジェクト(PC)を表示装置(2)に表示する画像処理装置(5)のコンピュータ(10)で実行される画像処理プログラムである。画像処理プログラムは、データ取得手段(ステップ42を実行するCPU10;以下、単にステップ番号のみ記載する)、仮想カメラ設定手段(S41)、移動方向決定手段(S46、S51)、およびオブジェクト移動手段(S48、S53)として、コンピュータを機能させる。データ取得手段は、ユーザの方向入力に基づいた方向データ(Da)を取得する。仮想カメラ設定手段は、仮想空間における仮想カメラの位置(Dc1)および姿勢(Dc2)を設定する。移動方向決定手段は、仮想空間における操作対象オブジェクトの位置(Db1、PP)に作用している仮想重力の方向または当該位置における仮想フィールド(GF)の法線の方向を示す直上ベクトル(Vw)と、仮想カメラの姿勢を示すカメラベクトル(VcX、VcY、VcZ)とに基づいて、方向データが示す方向(Vs)に応じた仮想空間内での操作対象オブジェクトの移動方向(Vm)を決定する。オブジェクト移動手段は、移動方向決定手段で決定された移動方向へ操作対象オブジェクトを移動させる。
第2の発明は、上記第1の発明において、方向データは、直交する2軸方向(x方向、y方向)を基準とした方向入力の方向(Vsx、Vsy)を示すデータである。カメラベクトルは、仮想カメラの視線方向(VcZ)、当該仮想カメラから見た表示画像の縦方向(VcY)、および当該表示画像の横方向(VcX)をそれぞれ示す直交する3つのカメラベクトルで構成される。移動方向決定手段は、3つのカメラベクトルから第1カメラベクトル(Vo;VcYまたはVcZ)および第2カメラベクトル(VcX)を選択して(S81〜S88)、当該第1カメラベクトルと直上ベクトルとに直交する第1ベクトル(Vx)と、当該第2カメラベクトルと直上ベクトルとに直交する第2ベクトル(Vy)とを算出し(S89)、当該第1ベクトルおよび当該第2ベクトルを2軸方向にそれぞれ関連付けて方向データが示す方向に応じた移動方向を決定する(S90)。
第3の発明は、上記第2の発明において、移動方向決定手段は、第1カメラベクトルと直上ベクトルとの外積によって第1ベクトルを算出し、第2カメラベクトルと直上ベクトルとの外積によって第2ベクトルを算出する(S89)。
第4の発明は、上記第2または第3の発明において、移動方向決定手段は、視線方向または縦方向を示すカメラベクトルを第1カメラベクトルとして選択し、横方向を示すカメラベクトルを第2カメラベクトルとして選択する(S81〜S88)。
第5の発明は、上記第4の発明において、移動方向決定手段は、視線方向を示すカメラベクトルと直上ベクトルとの内積値(zdn)および縦方向を示すカメラベクトルと直上ベクトルとの内積値(ydn)を用いて、視線方向および縦方向を示すカメラベクトルの一方を第1カメラベクトルとして選択する(S81〜S88)。
第6の発明は、上記第5の発明において、移動方向決定手段は、内積値を比較し、当該内積値の絶対値が小さい結果となった視線方向および縦方向を示すカメラベクトルの一方を第1カメラベクトルとして選択する(S82)。
第7の発明は、上記第6の発明において、移動方向決定手段は、内積値の絶対値が小さい結果となった視線方向および縦方向を示すカメラベクトルの一方について、当該内積値の正負に応じて当該一方のカメラベクトルを反転させて第1カメラベクトルとして選択する(S81〜S88)。
第8の発明は、上記第2または第3の発明において、移動方向決定手段は、3つのカメラベクトルと直上ベクトルとの内積値を用いて、第1および第2カメラベクトルを選択する(S81〜S88)。
第9の発明は、上記第1または第2の発明において、仮想カメラ設定手段は、所定の条件を満たすとき仮想カメラを回転させる(図15)。画像処理プログラムは、入力方向変化検出手段(S45)および移動方向維持手段(S80)として、さらにコンピュータを機能させる。入力方向変化検出手段は、方向データを用いて、ユーザの方向入力が変化したことを検出する。移動方向維持手段は、仮想カメラの回転後において、入力方向変化検出手段が方向入力の変化を検出するまで(S45でYes)、移動方向決定手段が当該仮想カメラの回転前のカメラベクトル(Dc3)に基づいて移動方向を決定する。
第10の発明は、上記第9の発明において、移動方向維持手段は、仮想カメラの回転後において、入力方向変化検出手段が方向入力の変化を検出することに応じて(S45でNo)、移動方向の仮想カメラの回転前のカメラベクトルに基づく決定を解除する。移動方向決定手段は、仮想カメラの回転後において、入力方向変化検出手段が方向入力の変化を検出することに応じて、当該回転後の仮想カメラの姿勢を示すカメラベクトルに基づいて、当該方向入力の変化後の方向データが示す方向に応じた移動方向を決定する。
第11の発明は、上記第9の発明において、仮想カメラ設定手段は、所定の条件を満たすとき仮想カメラをその視線方向を中心に回転させる。
第12の発明は、上記第9の発明において、オブジェクト姿勢決定手段(S49、S54)として、さらにコンピュータを機能させる。オブジェクト姿勢決定手段は、操作対象オブジェクトの位置に設定されている直上ベクトルおよび移動方向決定手段が決定する移動方向に基づいて、操作対象オブジェクトの姿勢を示す互いに直交する3つの姿勢ベクトル(Vt、Vf、Vr)を逐次決定する。オブジェクト姿勢決定手段は、操作対象オブジェクトの移動前後の位置に設定されている直上ベクトルの方向が変化した場合(S93でYes)、入力方向変化検出手段が方向入力の変化を検出するまで、3つの姿勢ベクトルのうち、1つの姿勢ベクトル(Vr)の方向を固定して他の2つの姿勢ベクトル(Vt、Vf)の方向を変化させて決定する。
第13の発明は、上記第1または第2の発明において、仮想空間には、その外周面に対して異なった方向の仮想重力が設定された仮想立体フィールドが設定されている(図11)。移動方向決定手段は、操作対象オブジェクトの位置における仮想立体フィールドの外周面(GFa〜GFc)に沿って操作対象オブジェクトの移動方向を決定する。オブジェクト移動手段は、仮想立体フィールドの外周面に沿って移動方向決定手段で決定された移動方向へ操作対象オブジェクトを移動させる。
第14の発明は、上記第13の発明において、仮想カメラ設定手段は、操作対象オブジェクトの位置に応じて、仮想カメラの視体積内に操作対象オブジェクトが含まれて、表示装置に操作対象オブジェクトが表示される位置および姿勢に仮想カメラを設定する。
第15の発明は、仮想カメラから見た仮想空間内の操作対象オブジェクトを表示装置に表示する画像処理装置である。画像処理装置は、データ取得手段、仮想カメラ設定手段、移動方向決定手段、およびオブジェクト移動手段を備える。データ取得手段は、ユーザの方向入力に基づいた方向データを取得する。仮想カメラ設定手段は、仮想空間における仮想カメラの位置および姿勢を設定する。移動方向決定手段は、仮想空間における操作対象オブジェクトの位置に作用している仮想重力の方向または当該位置における仮想フィールドの法線の方向を示す直上ベクトルと、仮想カメラの姿勢を示すカメラベクトルとに基づいて、方向データが示す方向に応じた仮想空間内での操作対象オブジェクトの移動方向を決定する。オブジェクト移動手段は、移動方向決定手段で決定された移動方向へ操作対象オブジェクトを移動させる。
第16の発明は、上記第15の発明において、方向データは、直交する2軸方向を基準とした方向入力の方向を示すデータである。カメラベクトルは、仮想カメラの視線方向、当該仮想カメラから見た表示画像の縦方向、および当該表示画像の横方向をそれぞれ示す直交する3つのカメラベクトルで構成される。移動方向決定手段は、3つのカメラベクトルから第1カメラベクトルおよび第2カメラベクトルを選択して、当該第1カメラベクトルと直上ベクトルとに直交する第1ベクトルと、当該第2カメラベクトルと直上ベクトルとに直交する第2ベクトルとを算出し、当該第1ベクトルおよび当該第2ベクトルを2軸方向にそれぞれ関連付けて方向データが示す方向に応じた移動方向を決定する。
第17の発明は、上記第15または第16の発明において、仮想カメラ設定手段は、所定の条件を満たすとき仮想カメラを回転させる。画像処理装置は、入力方向変化検出手段および移動方向維持手段を、さらに備える。入力方向変化検出手段は、方向データを用いて、ユーザの方向入力が変化したことを検出する。移動方向維持手段は、仮想カメラの回転後において、入力方向変化検出手段が方向入力の変化を検出するまで、移動方向決定手段が当該仮想カメラの回転前のカメラベクトルに基づいて移動方向を決定する。
上記第1の発明によれば、仮想カメラの位置や姿勢に応じて、表示装置に表示された操作対象オブジェクトを、ユーザの方向入力に直感的に対応付けられた方向に移動させることが可能となる。例えば、重力方向(法線方向)が様々な方向に設定されているゲームフィールドを用いた仮想ゲーム空間において、直感的な方向入力操作が実現可能となり、ユーザに操作の混乱を与えることもない。また、このような仮想ゲーム空間環境において、所定条件を満たすときに仮想カメラを回転させる状況であっても、直感的な方向入力操作が実現可能となり、ユーザに操作の混乱を与えることもない。
上記第2の発明によれば、仮想カメラの位置および姿勢や操作対象オブジェクトの直上方向が様々に変化する状況においても、仮想カメラの姿勢を示す直交する3つのカメラベクトルから選ばれた2つのカメラベクトルと直上ベクトルとを用いて、方向入力操作に応じた直感的な移動方向の算出が可能となる。
上記第3の発明によれば、第1カメラベクトルと直上ベクトルとに直交するベクトルを第1ベクトルとし、第2カメラベクトルと直上ベクトルとに直交するベクトルを第2ベクトルとして、当該第1ベクトルおよび第2ベクトルを基準とした移動方向を決定することができる。
上記第4の発明によれば、直上ベクトルの方向がカメラ座標における縦方向および視線方向を含む平面と平行となるように画像が生成される場合に、方向入力操作に応じた適切な移動方向の算出が可能となる。
上記第5の発明によれば、第1ベクトルを求めるために適切なカメラベクトルを、内積値を用いて選択することができる。
上記第6の発明によれば、視線方向および縦方向を示すカメラベクトルのうち、直上ベクトルとの間に成す角度が大きい一方が第1カメラベクトルとして選択され、第1ベクトルを求めるために適切なカメラベクトルが選択される。
上記第7の発明によれば、内積値の正負に応じて、適切な方向のカメラベクトルを用いて移動方向を算出することができる。
上記第8の発明によれば、第1および第2ベクトルを求めるために適切なカメラベクトルを、内積値を用いて選択することができる。
上記第9の発明によれば、仮想カメラの回転前後において、ユーザによる入力方向に変化がなければ、仮想カメラの回転前に決定された移動方向が維持される。つまり、仮想カメラが移動または回転しても、当該移動や回転が行われてない状態を仮定して移動方向が維持される。したがって、仮想カメラ回転前後にユーザが同じ方向入力を継続していれば、操作対象オブジェクトの移動方向が変わることなく継続されることになる。つまり、ユーザが操作対象オブジェクトを同じ方向に移動させ続けたい場合、仮想カメラの状態によらず同じ操作を継続すればいいため、ユーザにとって非常に分かりやすい操作となる。
上記第10の発明によれば、仮想カメラ回転後に操作対象オブジェクトの移動方向を変更したり停止させたりしたい場合、方向入力を変化させると移動方向維持状態が解除されるため、現時点の仮想カメラの位置および姿勢に基づいた移動方向に変更される。したがって、ユーザが改めて操作対象オブジェクトの移動方向を変化させる場合は、方向入力に応じて直感的に把握できる方向に操作対象オブジェクトが移動することになる。
上記第11の発明によれば、仮想カメラがその視線方向を中心に回転して、表示される画像の上下が反転するような場合も直感的な方向入力操作が実現可能となり、ユーザに操作の混乱を与えることもない。
上記第12の発明によれば、操作対象オブジェクトに作用する仮想重力が変化するような移動をする場合、姿勢ベクトルのうち1つの姿勢ベクトルの方向を固定して操作対象オブジェクトの姿勢を変化させるため、姿勢変更処理が簡素化される。
上記第13の発明によれば、重力方向(法線方向)が様々な方向に設定されている仮想立体フィールド(例えば、その中心に向かって仮想重力が設定されている立体的なゲームフィールド)を用いた画像処理であっても、その仮想重力方向に応じて直感的な方向入力操作が実現可能となり、ユーザに操作の混乱を与えることもない。
上記第14の発明によれば、上記仮想フィールドが設定された仮想空間環境において、仮想カメラを移動させたり回転させたりする状況であっても、直感的な方向入力操作が実現可能となり、ユーザに操作の混乱を与えることもない。
本発明の画像処理装置によれば、上述した画像処理プログラムと同様の効果を得ることができる。
図1および図2を参照して、本発明の一実施形態に係る画像処理プログラムを実行する装置について説明する。以下、説明を具体的にするために、当該装置の一例である据置型のゲーム装置本体5を含むゲームシステムについて説明する。なお、図1は据置型のゲーム装置3を含むゲームシステム1の外観図であり、図2はゲーム装置本体5のブロック図である。以下、当該ゲームシステム1について説明する。
図1において、ゲームシステム1は、表示手段の一例の家庭用テレビジョン受像機(以下、モニタと記載する)2と、当該モニタ2に接続コードを介して接続する据置型のゲーム装置3とから構成される。モニタ2は、ゲーム装置本体5から出力された音声信号を音声出力するためのスピーカ2aを備える。また、ゲーム装置3は、本願発明の画像処理プログラムの一例であるゲームプログラムを記録した光ディスク4と、当該光ディスク4のゲームプログラムを実行してゲーム画面をモニタ2に表示出力させるためのコンピュータを搭載したゲーム装置本体5と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体5に与えるためのコントローラ7とを備えている。
また、ゲーム装置本体5は、無線コントローラモジュール19(図2参照)を内蔵する。無線コントローラモジュール19は、コントローラ7から無線送信されるデータを受信し、ゲーム装置本体5からコントローラ7へデータを送信して、コントローラ7とゲーム装置本体5とを無線通信によって接続する。さらに、ゲーム装置本体5には、当該ゲーム装置本体5に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。
また、ゲーム装置本体5には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ17(図2参照)が搭載される。ゲーム装置本体5は、光ディスク4に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ2に表示する。また、ゲームプログラム等は、光ディスク4に限らず、フラッシュメモリ17に予め記憶されたものを実行するようにしてもよい。さらに、ゲーム装置本体5は、フラッシュメモリ17に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置本体5のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
コントローラ7は、無線コントローラモジュール19を内蔵するゲーム装置本体5へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて操作情報等の送信データを無線送信する。コントローラ7は、2つのコントロールユニット(コアユニット70およびサブユニット76)が屈曲自在な接続ケーブル79を介して互いに接続されて構成されており、主にモニタ2の表示画面に表示されるオブジェクト等を操作するための操作手段である。コアユニット70およびサブユニット76は、それぞれ片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン(十字キーやスティック等を含む)とが設けられている。また、後述により明らかとなるが、コアユニット70は、当該コアユニット70から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって例えば赤外光を出力する。また、コントローラ7(例えば、コアユニット70)は、ゲーム装置本体5の無線コントローラモジュール19から無線送信された送信データを通信部75で受信して、当該送信データに応じた音や振動を発生させることもできる。
なお、本実施例では、コアユニット70とサブユニット76とを屈曲自在な接続ケーブル79で接続したが、サブユニット76に無線ユニットを搭載することで、接続ケーブル79をなくすこともできる。例えば、無線ユニットとしてBluetooth(登録商標)ユニットをサブユニット76に搭載することで、サブユニット76からコアユニット70へ操作データを送信することが可能になる。
次に、図2を参照して、ゲーム装置本体5の内部構成について説明する。ゲーム装置本体5は、CPU(Central Processing Unit)10、システムLSI(Large Scale Integration)11、外部メインメモリ12、ROM/RTC(Read Only Memory/Real Time Clock)13、ディスクドライブ14、およびAV−IC(Audio Video−Integrated Circuit)15等を有する。
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムLSI11の内部構成については、後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置本体5の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ35または外部メインメモリ12に読み出したデータを書き込む。
また、システムLSI11には、入出力プロセッサ31、GPU(Graphics Processor Unit)32、DSP(Digital Signal Processor)33、VRAM(Video RAM)34、および内部メインメモリ35が設けられる。図示は省略するが、これらの構成要素31〜35は、内部バスによって互いに接続される。
GPU32は、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM34は、GPU32がグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU32は、VRAM34に記憶されたデータを用いて画像データを作成する。
DSP33は、オーディオプロセッサとして機能し、内部メインメモリ35や外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、AVコネクタ16を介して、読み出した画像データをモニタ2に出力するとともに、読み出した音声データをモニタ2に内蔵されるスピーカ2aに出力する。これによって、画像がモニタ2に表示されるとともに音がスピーカ2aから出力される。
入出力プロセッサ(I/Oプロセッサ)31は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ31は、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、および外部メモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
入出力プロセッサ31は、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ31は、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18およびアンテナ22を介して当該データをネットワークに送信する。また、入出力プロセッサ31は、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22、および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10は、ゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置本体5と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置本体5を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
また、入出力プロセッサ31は、アンテナ23および無線コントローラモジュール19を介して、コントローラ7から送信される操作データ等を受信し、内部メインメモリ35または外部メインメモリ12のバッファ領域に記憶(一時記憶)する。なお、内部メインメモリ35には、外部メインメモリ12と同様に、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりしてもよく、CPU10のワーク領域やバッファ領域として用いられてもかまわない。
さらに、入出力プロセッサ31には、拡張コネクタ20および外部メモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。外部メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ31は、拡張コネクタ20や外部メモリカード用コネクタ21を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
また、ゲーム装置本体5(例えば、前部主面)には、当該ゲーム装置本体5の電源ボタン24、ゲーム処理のリセットボタン25、光ディスク4を脱着する投入口、およびゲーム装置本体5の投入口から光ディスク4を取り出すイジェクトボタン26等が設けられている。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置本体5の各構成要素に対して、図示しないACアダプタを経て電力が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置本体5の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
次に、図3を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の外観構成を示す斜視図である。
図3において、コントローラ7は、コアユニット70とサブユニット76とが接続ケーブル79で接続されて構成されている。コアユニット70は、ハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。一方、サブユニット76は、ハウジング77を有しており、当該ハウジング77に複数の操作部78が設けられている。
接続ケーブル79の一方端には、コアユニット70のコネクタ73に着脱自在なコネクタ791が設けられており、接続ケーブル79の他方端は固定的にサブユニット76と接続されている。そして、接続ケーブル79のコネクタ791は、コアユニット70の後面に設けられたコネクタ73と嵌合し、コアユニット70とサブユニット76とが当該接続ケーブル79を介して接続される。
次に、図4および図5を参照して、コアユニット70について説明する。なお、図4は、コアユニット70の上面後方から見た斜視図である。図5は、コアユニット70を下面前方から見た斜視図である。
図4および図5において、コアユニット70は、例えばプラスチック成型によって形成されたハウジング71を有している。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、矢印で示す4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、リング状に4方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記十字キー72aの代わりに設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。また、少なくとも4つの方向(前後左右)をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン72b〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられる。なお、図4に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置3本体の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、無線コントローラモジュール19からコントローラ7へ、複数のLED702のうち、上記コントローラ種別に対応するLEDを点灯させるための信号が送信される。
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図6のスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、プレイヤがコアユニット70を把持したときに当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コアユニット70が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコアユニット70の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
次に、図6および図7を参照して、コアユニット70の内部構造について説明する。なお、図6は、コアユニット70の上筐体(ハウジング71の一部)を外した状態を後面側から見た斜視図である。図7は、コアユニット70の下筐体(ハウジング71の一部)を外した状態を前面側から見た斜視図である。ここで、図7に示す基板700は、図6に示す基板700の裏面から見た斜視図となっている。
図6において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751等(図7、図10参照)に接続される。また、図示しない無線モジュール753(図10参照)およびアンテナ754によって、コアユニット70がワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。
また、加速度センサ701は、操作ボタン72dの左側の基板700上(つまり、基板700の中央部ではなく周辺部)に設けられる。したがって、加速度センサ701は、コアユニット70の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分が含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコアユニット70の動きを良好な感度でゲーム装置本体5等が判定することができる。例えば、コアユニット70は、3軸の加速度センサ701を備えている。この3軸の加速度センサ701は、3方向、すなわち、上下方向、左右方向、および前後方向で直線加速度を検知する。そして、加速度センサ701でそれぞれ検知された加速度を示すデータは、通信部75に出力される。
一方、図7において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コアユニット70の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体5から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。そして、基板700の下主面上には、バイブレータ704が取り付けられる。このバイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704が作動することによってコアユニット70に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
図8および図9を参照して、サブユニット76について説明する。なお、図8は、サブユニット76の一例を示す斜視図である。図9は、図8のサブユニット76の上筐体(ハウジング77の一部)を外した状態を示す斜視図である。
図8において、サブユニット76は、例えばプラスチック成型によって形成されたハウジング77を有している。ハウジング77は、その前後方向を長手方向とし、サブユニット76において最太部となる頭部を前方に形成した流線型の立体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
ハウジング77上面の上記最太部近傍に、スティック78aが設けられる。スティック78aは、ハウジング77上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向や傾倒量を検出し、それに応じて操作信号を出力する操作部である。例えば、プレイヤがスティック先端を360°任意の方向に傾倒することによって任意の方向や位置を指定することができ、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示することができる。また、プレイヤは、スティック78aの傾倒量によって、プレイヤキャラクタ等の移動量を指示することができる。
なお、スティック78aは、プレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、上述した十字キーやリング状に4方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記スティック78aの代わりに設けてもかまわない。また、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記スティック78aの代わりに設けてもかまわない。また、タッチパッドを、上記スティック78aの代わりに設けてもかまわない。また、少なくとも4つの方向(前後左右)をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記スティック78aの代わりに設けてもかまわない。
サブユニット76のハウジング77の前面に、複数の操作ボタン78dおよび78eが設けられる。操作ボタン78dおよび78eは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン78dおよび78eに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン78dおよび78eには、XボタンおよびYボタン等としての機能が割り当てられる。これら操作ボタン78dおよび78eは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられる。なお、図8に示した配置例では、操作ボタン78dおよび78eは、ハウジング77前面の上下方向に沿って並設されている。
図9において、ハウジング77の内部には基板が固設されており、当該基板の上主面上にスティック78aおよび加速度センサ761等が設けられる。そして、これらは、基板等に形成された配線(図示せず)を介して接続ケーブル79と接続されている。加速度センサ761は、ハウジング77の長手方向の中央部かつ短手方向の中央部に配置されるのが好ましい。例えば、サブユニット76は、3軸の加速度センサ761を備えている。この3軸の加速度センサ761は、3方向、すなわち、上下方向、左右方向、および前後方向で直線加速度を検知する。そして、加速度センサ761でそれぞれ検知された加速度を示すデータは、接続ケーブル79を介して通信部75に出力される。
次に、図10を参照して、コントローラ7の内部構成について説明する。なお、図10は、コントローラ7の構成を示すブロック図である。
図10において、コアユニット70は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。また、サブユニット76は、上述した操作部78および加速度センサ761を備えており、接続ケーブル79とコネクタ791および73とを介して、マイコン751と接続されている。
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コアユニット70の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コアユニット70のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置本体5からのデータに応じて、サウンドIC707およびバイブレータ704の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置本体5から送信されたサウンドデータ等を処理する。また、マイコン751は、通信部75を介してゲーム装置本体5から送信された振動データ(例えば、バイブレータ704をONまたはOFFする信号)等に応じて、バイブレータ704を作動させる。
コアユニット70に設けられた操作部72からの操作信号(コアキーデータ)、加速度センサ701からの加速度信号(コア加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。また、接続ケーブル79を介して、サブユニット76に設けられた操作部78からの操作信号(サブキーデータ)および加速度センサ761からの加速度信号(サブ加速度データ)は、マイコン751に出力される。マイコン751は、入力した各データ(コアキーデータ、サブキーデータ、コア加速度データ、サブ加速度データ、処理結果データ)を無線コントローラモジュール19へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から無線コントローラモジュール19への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期でデータを収集して送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(Bluetooth;登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、無線コントローラモジュール19への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として、無線モジュール753へ出力する。そして、無線モジュール753は、例えばブルートゥース(登録商標)の技術に基づいて、所定周波数の搬送波を用いて操作情報で変調し、その微弱電波信号をアンテナ754から放射する。つまり、コアユニット70に設けられた操作部72からのコアキーデータ、サブユニット76に設けられた操作部78からのサブキーデータ、コアユニット70に設けられた加速度センサ701からのコア加速度データ、サブユニット76に設けられた加速度センサ761からのサブ加速度データ、および撮像情報演算部74からの処理結果データは、無線モジュール753で微弱電波信号に変調されてコアユニット70から放射される。そして、ゲーム装置3の無線コントローラモジュール19でその微弱電波信号を受信し、ゲーム装置3で当該微弱電波信号を復調や復号することによって、一連の操作情報(コアキーデータ、サブキーデータ、コア加速度データ、サブ加速度データ、および処理結果データ)を取得することができる。そして、ゲーム装置3のCPU10は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。
次に、ゲーム装置本体5が行う具体的な処理を説明する前に、図11〜図16を参照して本ゲーム装置本体5で行うゲームの概要について説明する。なお、図11は、ゲームフィールドGF上に配置されたプレイヤキャラクタPCに対する操作方向の一例を説明するための図である。図12は、ゲームフィールドGFa上にプレイヤキャラクタPCaが配置されたときのゲーム画像および操作方向の一例を示す図である。図13は、ゲームフィールドGFb上にプレイヤキャラクタPCbが配置されたときのゲーム画像および操作方向の一例を示す図である。図14は、ゲームフィールドGFc上にプレイヤキャラクタPCcが配置されたときのゲーム画像および操作方向の一例を示す図である。図15は、ゲームフィールドGFc上に配置されたプレイヤキャラクタPCcに対して、仮想カメラCの方向を変化させたときの操作方向の一例を説明するための図である。図16は、仮想カメラCの方向を変化させたとき、ゲームフィールドGFc上にプレイヤキャラクタPCcが配置されたゲーム画像および操作方向の一例を示す図である。
図11において、仮想ゲーム空間内に1つの立体で構成されるゲームフィールドGFが設けられている。例えば、ゲームフィールドGFは、所定の立体ポリゴンにテクスチャマッピングして形成されるゲームフィールドオブジェクトを3次元空間座標系に配置して構築される。そして、プレイヤは、ゲームフィールドGFの外周面上に配置されて当該外周面に沿って移動するプレイヤキャラクタPCを、例えばスティック78aを傾倒することによって当該プレイヤキャラクタPCを移動させてゲームを進行する。
図11に示すように、ゲームフィールドGFには、その中心部に向かって仮想ゲーム空間の仮想重力(以下、単に重力と記載する)が設定されている。つまり、ゲームフィールドGFは、その位置に応じて重力方向が変化するように重力が設定されている。図11の例では、ゲームフィールドGFの上面(図11に示すゲームフィールドGFa)においては、当該上面からゲームフィールドGFの中心部に向かう方向(図11に示す仮想ゲーム空間の下方向)の重力が設定されている。また、ゲームフィールドGFの側面(図11に示すゲームフィールドGFb)においては、当該側面からゲームフィールドGFの中心部に向かう方向(図11に示す仮想ゲーム空間の水平(具体的には右)方向)の重力が設定されている。さらに、ゲームフィールドGFの下面(図11に示すゲームフィールドGFc)においては、当該下面からゲームフィールドGFの中心部に向かう方向(図11に示す仮想ゲーム空間の上方向)の重力が設定されている。そして、プレイヤキャラクタPCは、ゲームフィールドGFに設定された重力に引き寄せられるように外周面上に配置され、ゲームフィールドGFの何れかのフィールド面(ゲームフィールドGFa、GFb、またはGFc)に接して配置される。他の例においては、重力方向は必ずしもゲームフィールドGFの中心部に向かう方向でなくともよく、ゲームごとに適宜設定してよい。また、坂道のような箇所においては、重力方向と外周面の方線方向とが必ずしも平行でなくともよい。
図11および図12を参照して、ゲームフィールドGFa上の位置PPaに配置されたプレイヤキャラクタPCaを想定する。この場合、ゲームフィールドGFaの上方位置に配置された仮想カメラCがプレイヤキャラクタPCaを撮像する(図11に示す仮想カメラCa)ことによって、図12に示すようなゲーム画像が生成される。この状態でプレイヤがスティック78aを上方向(図12に示す方向Su)に傾倒したとき、プレイヤキャラクタPCaを仮想カメラCaから遠ざかる方向、すなわちゲーム画像において仮想ゲーム空間における手前から奥への方向(図11および図12に示す操作方向Mu)へ移動させる操作指示となる。一方、プレイヤがスティック78aを下方向(図12に示す方向Sd)に傾倒したとき、プレイヤキャラクタPCaを仮想カメラCaに近づく方向、すなわちゲーム画像において仮想ゲーム空間における奥から手前への方向(図11および図12に示す操作方向Md)へ移動させる操作指示となる。そして、プレイヤがスティック78aを左右方向(図12に示す方向SlおよびSr)にそれぞれ傾倒したとき、プレイヤキャラクタPCaを仮想カメラCaから見て左右方向(図12に示す操作方向MlおよびMr)へそれぞれ移動させる操作指示となる。図12から明らかなように、スティック78aの上下左右方向がそれぞれゲーム画像の上下左右方向となるため、プレイヤが直感的に考える方向にプレイヤの操作方向とプレイヤキャラクタPCaの移動方向とが対応付けられている。
図11および図13を参照して、ゲームフィールドGFb上の位置PPbに配置されたプレイヤキャラクタPCbを想定する。この場合、ゲームフィールドGFbの左方位置(例えば、プレイヤキャラクタPCbの直上位置)に配置された仮想カメラCがプレイヤキャラクタPCbを撮像する(図11に示す仮想カメラCb)ことによって、図13に示すようなゲーム画像が生成される。この状態でプレイヤがスティック78aを上方向(図13に示す方向Su)に傾倒したとき、プレイヤキャラクタPCbを仮想カメラCbから見て上方向(図11および図13に示す操作方向Mu)へ移動させる操作指示となる。一方、プレイヤがスティック78aを下方向(図13に示す方向Sd)に傾倒したとき、プレイヤキャラクタPCbを仮想カメラCbから見て下方向(図11および図13に示す操作方向Md)へ移動させる操作指示となる。そして、プレイヤがスティック78aを左右方向(図13に示す方向SlおよびSr)にそれぞれ傾倒したとき、プレイヤキャラクタPCbを仮想カメラCbから見て左右方向(図13に示す操作方向MlおよびMr)へそれぞれ移動させる操作指示となる。この場合も図13から明らかなように、スティック78aの上下左右方向がそれぞれゲーム画像の上下左右方向となるため、プレイヤが直感的に考える方向にプレイヤの操作方向とプレイヤキャラクタPCbの移動方向とが対応付けられている。
図11および図14を参照して、ゲームフィールドGFc上の位置PPcに配置されたプレイヤキャラクタPCcを想定する。この場合、ゲームフィールドGFcの下方位置に配置された仮想カメラCがプレイヤキャラクタPCcを撮像する(図11に示す仮想カメラCc)ことによって、図14に示すようなゲーム画像が生成される。つまり、図14に示すように、上下逆になった状態でプレイヤキャラクタPCcがゲームフィールドGFの下面に引き寄せられて接しているゲーム画像が表現される。この状態でプレイヤがスティック78aを上方向(図14に示す方向Su)に傾倒したとき、プレイヤキャラクタPCcを仮想カメラCcに近づく方向、すなわちゲーム画像において仮想ゲーム空間における奥から手前への方向(図11および図14に示す操作方向Mu)へ移動させる操作指示となる。一方、プレイヤがスティック78aを下方向(図14に示す方向Sd)に傾倒したとき、プレイヤキャラクタPCcを仮想カメラCcから遠ざかる方向、すなわちゲーム画像において仮想ゲーム空間における手前から奥への方向(図11および図14に示す操作方向Md)へ移動させる操作指示となる。そして、プレイヤがスティック78aを左右方向(図14に示す方向SlおよびSr)にそれぞれ傾倒したとき、プレイヤキャラクタPCcを仮想カメラCcから見て左右方向(図14に示す操作方向MlおよびMr)へそれぞれ移動させる操作指示となる。この場合も図14から明らかなように、スティック78aの上下左右方向がそれぞれゲーム画像の上下左右方向となるため、プレイヤが直感的に考える方向にプレイヤの操作方向とプレイヤキャラクタPCcの移動方向とが対応付けられている。
また、図15に示すように、プレイヤキャラクタPPcの上下が画面の上下と逆になった場合に、仮想カメラCcをその撮像方向(視線方向)を中心として回転させることによってプレイヤキャラクタPPcの上下と画面の上下が合うように表示の向きを変化させる場面を想定する。なお、図15の左側が回転前の状態、右側が回転後の状態を示している。回転させる前の仮想カメラCcは、ゲームフィールドGFcの下方位置に配置されており、プレイヤキャラクタPCcを撮像している。この仮想カメラCcが撮像することによって、図14に示すようなゲーム画像が生成される。そして、視線方向を中心として同じ位置で仮想カメラCcを図示矢印方向に180°回転させて、ゲーム画像を生成する。このような回転後の仮想カメラCcが、図15においては仮想カメラCdで示されている。
ゲームフィールドGFcの下方位置に配置された仮想カメラCdがプレイヤキャラクタPCcを撮像することによって、図16に示すようなゲーム画像が生成される。したがって、図16に示すように、図14と比較して上下逆転したゲーム画像が生成され、プレイヤキャラクタPCcがゲームフィールドGFの上面(実際は、ゲームフィールドGFc)の上に配置されているようなゲーム画像が表現される。
プレイヤがスティック78aを上下左右方向(図16に示す方向Su、Sd、Sl、Sr)にそれぞれ傾倒したとき、上記仮想カメラCの回転に応じてプレイヤキャラクタPCcの移動方向が変化する。具体的には、プレイヤがスティック78aを方向Su(上方向)へ操作することに応じて、プレイヤキャラクタPCcを移動させる方向が、仮想カメラCcに近づく方向から仮想カメラCdから遠ざかる方向に変わる(図15および図16に示す操作方向Mu)。この場合、図16から明らかなように、操作方向に応じた移動方向の変化によって、スティック78aの上方向がゲーム画像の上方向への移動指示となるため、プレイヤが直感的に考える方向にプレイヤの操作方向とプレイヤキャラクタPCcの移動方向とが対応付けられるように変化をしていることになる。
また、プレイヤがスティック78aを方向Sd(下方向)へ操作することに応じて、プレイヤキャラクタPCcを移動させる方向が、仮想カメラCcから遠ざかる方向から仮想カメラCdに近づく方向に変わる(図15および図16に示す操作方向Md)。この場合、図16から明らかなように、操作方向に応じた移動方向の変化によって、スティック78aの下方向がゲーム画像の下方向への移動指示となるため、プレイヤが直感的に考える方向にプレイヤの操作方向とプレイヤキャラクタPCcの移動方向とが対応付けられるように変化をしていることになる。そして、プレイヤがスティック78aを左右方向(図16に示す方向SlおよびSr)にそれぞれ傾倒したとき、上記カメラ回転後においてはプレイヤキャラクタPCcを仮想カメラCdから見て左右方向(図16に示す操作方向MlおよびMr)へそれぞれ移動させる操作指示となる。
なお、本実施例においては、上述した仮想カメラCの回転に伴う移動方向の変化が、所定の条件を満たした場合に実施される。具体的には、仮想カメラCの回転前後において、プレイヤによるスティック78aの操作状態に変化がなければ、仮想カメラCの回転が行われていないものとして、仮想カメラCの回転前に設定されている操作方向に対応する移動方向が維持される。例えば、図16の例では、プレイヤがスティック78aを方向Sd(下方向)へ操作することを仮想カメラCの回転前後において維持している場合、プレイヤキャラクタPCcを移動させる方向も仮想カメラCcから遠ざかる方向に維持される(図16において上向き矢印Md)。そして、プレイヤがスティック78aの操作を緩めたり、操作方向を変更したりした時点で、上述したような移動方向の変化が実施される。このため、プレイヤが入力を維持し続けている間は、その方向の入力を始めた段階でプレイヤが意図していたゲーム空間内での方向にプレイヤキャラクタPCcを移動し続けることができ、突然操作方向が変わることによってプレイヤが混乱してしまったり、操作をミスしてしまったりすることを防ぐことができる。
プレイヤキャラクタPCがゲームフィールドGFaからゲームフィールドGFbを通ってゲームフィールドGFcまで移動するとき、仮想ゲーム空間に設定されている重力方向が最終的に180°回転する。このとき、上述のように画面上での方向に関わらず移動方向を維持している場合には、プレイヤキャラクタPCの動作に注目すると、プレイヤキャラクタPCはプレイヤキャラクタPCから見た前方へ移動し続けることになるので、姿勢が変化するのはプレイヤキャラクタPCの上方(起立方向)を示す上方向ベクトルVtおよび前方を示す前方向ベクトルVfだけであり、プレイヤキャラクタPCの横方向を示す横方向ベクトルVrに変化がないことになる。したがって、後述により明らかとなるが、重力方向が変化する領域をプレイヤキャラクタPCが通過する場合、プレイヤの方向指示入力が変化しない間は、横方向ベクトルVrを固定する処理を行っている。
次に、ゲームシステム1において行われるゲーム処理の詳細を説明する。以下、説明するゲーム処理においては、コアユニット70およびサブユニット76をそれぞれ操作する場合、サブユニット76から得られるスティック78aの方向入力(サブキーデータ)に基づいて行われる処理を一例として説明する。
まず、図17を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図17は、ゲーム装置本体5の外部メインメモリ12および/または内部メインメモリ35(以下、2つのメインメモリを総称して、単にメインメモリと記載する)に記憶される主なデータを示す図である。
図17に示すように、メインメモリには、キーデータDa、プレイヤキャラクタデータDb、仮想カメラデータDc、法線ベクトルデータDd、重力ベクトルデータDe、前回重力ベクトルデータDf、側面突入状態フラグデータDg、操作ベクトルデータDh、移動ベクトルデータDi、および画像データDj等が記憶される。なお、メインメモリには、図17に示すデータの他、ゲームに登場するオブジェクト等に関するデータや仮想ゲーム空間に関するデータ(背景のデータ等)等、ゲーム処理に必要な他のデータが記憶される。
キーデータDaは、コアユニット70やサブユニット76に設けられた操作部72および78の操作状況を示すデータであり、コアユニット70から送信データとして送信されてくる一連の操作情報に含まれる最新のコアキーデータおよびサブキーデータが記憶される。なお、ゲーム装置本体5に備える無線コントローラモジュール19は、コアユニット70から所定周期(例えば、1/200秒毎)に送信される操作情報に含まれるコアキーデータおよびサブキーデータを受信し、無線コントローラモジュール19に備える図示しないバッファに蓄えられる。その後、上記バッファに蓄えられた最新のコアキーデータおよびサブキーデータがゲーム処理周期である1フレーム毎(例えば、1/60秒毎)に読み出されて、メインメモリのキーデータDaが更新される。なお、以下の処理においては、これらコアキーデータおよびサブキーデータのうち、スティック78aの操作状況を示すサブキーデータが必要となるため、キーデータDaには当該サブキーデータを少なくとも記憶すればよい。また、キーデータDaには、少なくとも直近の2回のゲーム処理周期において取得したサブキーデータが記憶される。
なお、後述する処理フローでは、キーデータDaがゲーム処理周期である1フレーム毎に更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、コアユニット70からの送信周期毎にキーデータDaを更新し、当該更新されたキーデータをゲーム処理周期毎に利用する態様でもかまわない。この場合、キーデータDaを更新する周期と、ゲーム処理周期とが異なることになる。
プレイヤキャラクタデータDbは、仮想ゲーム空間に登場するプレイヤキャラクタPCの位置や姿勢を示すデータであり、プレイヤキャラクタ位置データDb1および姿勢ベクトルデータDb2を含んでいる。プレイヤキャラクタ位置データDb1は、仮想ゲーム空間におけるプレイヤキャラクタPCの位置PPを示すデータが格納される。また、姿勢ベクトルデータDb2は、仮想ゲーム空間におけるプレイヤキャラクタPCの姿勢を示すデータが格納される。例えば、姿勢ベクトルデータDb2には、プレイヤキャラクタPCの上方(起立方向)を示す上方向ベクトルVt、前方を示す前方向ベクトルVf、および横方向を示す横方向ベクトルVrを示すデータがそれぞれ格納される。
仮想カメラデータDcは、仮想ゲーム空間に配置される仮想カメラCの位置や撮像方向等を示すデータであり、カメラ位置データDc1、カメラベクトルデータDc2、および突入時カメラベクトルデータDc3を含んでいる。カメラ位置データDc1は、仮想ゲーム空間における仮想カメラCの位置を示すデータが格納される。カメラベクトルデータDc2は、仮想ゲーム空間に配置された仮想カメラCの撮像方向や向きを示すデータが格納される。例えば、カメラベクトルデータDc2は、カメラ座標系の視線方向(仮想カメラCから注視点に向かう方向)を示すカメラベクトルVcZ、カメラ座標系の右方向(仮想カメラCによって表示される表示領域の右方向)を示すカメラベクトルVcX、およびカメラ座標系の上方向(仮想カメラCによって表示される表示領域の上方向)を示すカメラベクトルVcYを示すデータがそれぞれ格納される。また、突入時カメラベクトルデータDc3は、プレイヤキャラクタPCが側面突入状態となった時点のカメラベクトルVcX、VcY、およびVcZを、カメラベクトルVcXo、VcYo、およびVcZoとして代入して、当該カメラベクトルVcXo、VcYo、およびVcZoを示すデータが一時的に格納される。
法線ベクトルデータDdは、プレイヤキャラクタPCの位置PPにおけるゲームフィールドGFの法線方向(位置PPの地形に垂直な上方向であり、典型的にはプレイヤキャラクタPCの移動方向に対して垂直となる上方向)である法線ベクトルVwを示すデータが格納される。重力ベクトルデータDeは、プレイヤキャラクタPCの位置PPにおけるゲームフィールドGFの重力方向である重力ベクトルVgを示すデータが格納される。前回重力ベクトルデータDfは、前回の処理で用いられた重力ベクトルVgを重力ベクトルVgoとして代入し、当該重力ベクトルVgoを示すデータが格納される。側面突入状態フラグデータDgは、プレイヤキャラクタPCが側面突入状態にあるか否かを示す側面突入状態フラグFの状態を示すデータが格納される。ここで、側面突入状態とは、上述のように、プレイヤキャラクタPCの移動方向を維持し続ける状態であって、例えばゲームフィールドGFの上面から側面に突入し、さらに下面へと移動していく場合などにおける状態のことである。
操作ベクトルデータDhは、プレイヤの方向入力の方向や操作量を示すデータが格納される。例えば、スティック78aの傾倒方向および傾倒量(傾倒角度)に応じてプレイヤキャラクタPCの移動方向および移動速度が指示される場合、キーデータDaに基づいてスティック78aの傾倒方向および傾倒量に応じた操作ベクトルVsが算出され、当該操作ベクトルVsを示すデータが操作ベクトルデータDhに格納される。操作ベクトルVsは、具体的にはスティック78aの上下方向の傾倒量、左右方向の傾倒量の2つの値で表される2次元ベクトルである。移動ベクトルデータDiは、仮想ゲーム空間においてプレイヤキャラクタPCが移動する方向および速度を示すデータが格納される。例えば、操作ベクトルVsに応じて、仮想ゲーム空間においてプレイヤキャラクタPCが移動する方向および速度を示す移動ベクトルVmが算出され、当該移動ベクトルVmを示すデータが移動ベクトルデータDiに格納される。
画像データDjは、プレイヤキャラクタ画像データDj1および地形画像データDj2等を含んでいる。プレイヤキャラクタ画像データDj1は、仮想ゲーム空間の位置PPにプレイヤキャラクタPCを配置してゲーム画像を生成するためのデータである。地形画像データDj2は、仮想ゲーム空間にゲームフィールドGFを配置してゲーム画像を生成するためのデータである。
次に、図18〜図20を参照して、ゲーム装置本体5において行われるゲーム処理の詳細を説明する。なお、図18は、ゲーム装置本体5において実行されるゲーム処理の流れを示すフローチャートである。図19は、図18におけるステップ46および51の移動方向算出処理の詳細な動作を示すサブルーチンである。図20は、図18におけるステップ55の側面突入検出処理の詳細な動作を示すサブルーチンである。なお、図18〜図20に示すフローチャートにおいては、ゲーム処理のうち、プレイヤがスティック78aを操作することに応じてプレイヤキャラクタPCを移動させる処理について説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図18〜図20では、CPU10が実行する各ステップを「S」と略称する。
ゲーム装置本体5の電源が投入されると、ゲーム装置本体5のCPU10は、ブートROM(例えば、ROM/RTC13)に記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図18〜図20に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
図18において、CPU10は、ゲーム処理の初期設定を行い(ステップ40)、次のステップに処理を進める。上記ステップ40における初期設定では、ゲームフィールドオブジェクトを3次元空間座標系に配置してゲームフィールドGFを構築する。なお、ゲームフィールドGFは、上述したような立体形状を有しており、当該立体外周面の各地点に対して、それぞれ上述したような重力が設定される。それぞれの地点における重力は、例えば上記立体の中心付近を向くように設定される。また、プレイヤキャラクタPCや他のオブジェクトをゲームフィールドGF外周面上の所定位置に配置し、プレイヤキャラクタPCの位置PPおよび姿勢を示すデータをプレイヤキャラクタデータDbに格納する。そして、プレイヤキャラクタPC等が配置されたゲームフィールドGFに対して、予め決められた初期位置に仮想カメラCを配置してゲーム画像をモニタ2に表示し、当該仮想カメラCの位置やカメラベクトルを示すデータを仮想カメラデータDcに格納する。また、CPU10は、各ゲームパラメータを初期化(例えば、上述したパラメータを除いた各ゲームパラメータを0に初期化)する。
次に、CPU10は、プレイヤキャラクタPCの位置PPに応じて仮想カメラCを設定し(ステップ41)、次のステップに処理を進める。つまり、カメラ位置データDc1、カメラベクトルデータDc2を適宜設定する。例えば、CPU10は、プレイヤキャラクタPC等が配置されたゲームフィールドGFに対して、少なくともプレイヤキャラクタPCが撮像範囲内(例えば、撮像範囲の中央)となるように仮想カメラCを配置して(図11参照)ゲーム画像をモニタ2に表示し、当該仮想カメラCの位置やカメラベクトルを示すデータを仮想カメラデータDcに格納する。なお、本実施例においては、上記ステップ41において、仮想カメラCの位置をプレイヤキャラクタPCの移動に常に追従するように設定する(図11参照)。また、上記ステップ41において、プレイヤキャラクタPCの位置PP等が所定の条件を満たせば、仮想カメラCの方向をその視線方向を中心として180°回転するまで、フレーム毎に徐々に角度を変化させるように設定する(図15参照)。このように、仮想カメラCの視体積内にプレイヤキャラクタPCが含まれて、モニタ2にプレイヤキャラクタPCが表示されるように仮想カメラCの位置および姿勢が設定される。
次に、CPU10は、サブキーデータを取得して(ステップ42)、次のステップに処理を進める。例えば、CPU10は、コアユニット70から受信した最新の操作情報に含まれるキーデータを用いて、キーデータDaを更新する。具体的には、コアユニット70から受信した最新の操作情報に含まれるサブキーデータ(特に、スティック78aの操作状況を示すデータ)を用いて、キーデータDaを更新する。なお、上記ステップ42で取得したサブキーデータは、最新のデータとしてキーデータDaに記憶される。また、上記ステップ42の実行前までに最新のデータとしてキーデータDaに記憶されていたサブキーデータは、前回のデータとして取り扱われて引き続きキーデータDaに記憶される。このようにキーデータDaには、少なくとも直近の2回のゲーム処理周期において取得したサブキーデータが記憶される。
次に、CPU10は、キーデータDaを参照して、プレイヤからの方向入力があるか否かを判断する(ステップ43)。例えば、CPU10は、キーデータDaに格納されているサブキーデータが、何れかの方向にスティック78aが傾倒されていることを示す場合、方向入力があると判断する。一方、CPU10は、キーデータDaに格納されているサブキーデータが、スティック78aが傾倒されていないニュートラル状態であることを示す場合、方向入力がないと判断する。そして、CPU10は、方向入力がある場合、次のステップ44に処理を進める。一方、CPU10は、方向入力がない場合、側面突入状態を解除して、次のステップ57に処理を進める。具体的には、CPU10は、側面突入状態フラグデータDgに記憶されている側面突入状態フラグFをOFFに設定する。
ステップ44において、CPU10は、プレイヤキャラクタPCが側面突入状態にあるか否かを判断する。具体的には、CPU10は、側面突入状態フラグデータDgを参照し、側面突入状態フラグFがONである場合にプレイヤキャラクタPCが側面突入状態にあると判断する。そして、CPU10は、側面突入状態にある場合、次のステップ45に処理を進める。一方、CPU10は、側面突入状態にない場合、次のステップ51に処理を進める。
ステップ45において、CPU10は、プレイヤによる方向入力の変化が閾値以内であるか否かを判断する。そして、CPU10は、方向入力の変化が閾値以内である場合、次のステップ46に処理を進める。一方、CPU10は、方向入力の変化が閾値を越えている場合、次のステップ50に処理を進める。例えば、上記ステップ45においては、キーデータDaに記憶された最新のサブキーデータが示すスティック78aの傾倒状況(例えば、傾倒方向や傾倒量)と、前回のサブキーデータが示すスティック78aの傾倒状況とが比較される。そして、両者の差が方向入力操作を変化させたレベルであることを判定するための閾値が設けられており、当該差が閾値以内であるときに方向入力操作が不変であると認識している。
ステップ50において、CPU10は、側面突入状態を解除して、次のステップ51に処理を進める。具体的には、CPU10は、側面突入状態フラグデータDgに記憶されている側面突入状態フラグFをOFFに設定する。ここで、上記ステップ50は、プレイヤキャラクタPCが側面突入状態であり(ステップ44でYes)、かつ、方向入力の変化が閾値を越えている場合(ステップ45でNo)に実行される処理であり、プレイヤキャラクタPCが側面突入状態であってもプレイヤの方向入力操作が変化すると側面突入状態が解除されることになる。
プレイヤキャラクタPCが側面突入状態にない場合(ステップ44でNoまたはステップ45でNo)、ステップ51が実行される。ステップ51において、CPU10は、プレイヤキャラクタPCの移動方向を決定する処理を行う。以下、図19を参照して、移動方向決定処理について説明する。
図19において、CPU10は、カメラベクトルVcX、VcY、およびVcZと、法線ベクトルVwと、操作ベクトルVsとを設定し(ステップ80)、処理を次のステップに進める。
図21および図22を参照して、上記ステップ80におけるカメラベクトルVcX、VcY、およびVcZと、法線ベクトルVwと、操作ベクトルVsとの設定例について説明する。後述により明らかとなるが、当該移動方向決定処理は、プレイヤキャラクタPCが側面突入状態にない場合と、側面突入状態である場合との両方において行われる処理であるが、移動方向の決定に用いられるカメラベクトルが異なっている。CPU10は、プレイヤキャラクタPCが側面突入状態にない場合、上記ステップ41で設定されたカメラベクトルVcX、VcY、およびVcZ(すなわち、カメラベクトルデータDc2に記憶されているカメラベクトル)を、そのまま以下の処理で用いるパラメータとして上記ステップ80で設定する。一方、CPU10は、プレイヤキャラクタPCが側面突入状態である場合、突入時カメラベクトルデータDc3に記憶されているカメラベクトルVcXo、VcYo、およびVcZoを、それぞれカメラベクトルVcX、VcY、およびVcZの代わりのパラメータとして取り扱って上記ステップ80で設定する。
また、CPU10は、プレイヤキャラクタ位置データDb1を参照して、位置PPにおけるゲームフィールドGFの法線ベクトルVw(位置PPの地形に垂直な上方向であり、典型的にはプレイヤキャラクタPCの移動方向(移動ベクトルVm)に対して垂直となる上方向を示すベクトル)を算出する。そして、CPU10は、当該法線ベクトルVwを示すデータを法線ベクトルデータDdに記憶する。また、CPU10は、キーデータDaに記憶された最新のサブキーデータが示すスティック78aの傾倒方向および傾倒量を用いて、操作ベクトルVsを算出する。そして、CPU10は、当該操作ベクトルVsを示すデータを操作ベクトルデータDiに記憶する。ここで、必要に応じて、法線ベクトルVwに代えて、位置PPにおける重力ベクトルを反転させたベクトル(反重力ベクトル)や、重力ベクトルと法線ベクトルとの2つのベクトルを適宜調整することによって算出したベクトルを法線ベクトルデータDdに格納するようにしても、適宜移動方向を定めることが可能である。
図19に戻り、CPU10は、上記ステップ80の処理の後、内積zdnおよびydnを算出し(ステップ81)、次のステップに処理を進める。具体的には、CPU10は、上記ステップ80で設定されたカメラベクトルVcYおよびVcZと、法線ベクトルVmとを用いて、−VcZとVwとの内積を内積zdn、VcYとVwとの内積を内積ydnとして算出する。つまり、内積zdnは法線ベクトルVwにおけるカメラ座標系の反視線方向(−VcZ方向)成分を示すパラメータであり、内積ydnは法線ベクトルVwにおけるカメラ座標系の上方向(VcY方向)成分を示すパラメータとなる。
次に、CPU10は、内積zdnの絶対値が内積ydnの絶対値より大きいか否かを判断する(ステップ82)。そして、CPU10は、|zdn|>|ydn|の場合、次のステップ83に処理を進める。一方、CPU10は、|zdn|≦|ydn|の場合、次のステップ86に処理を進める。ここで、上記ステップ82は、法線ベクトルVwの方向がカメラ座標の視線方向に近いか上下方向に近いかを判定している。すなわち、上記ステップ82では、プレイヤキャラクタPCがゲームフィールドGF上で起立している場合、仮想カメラCがプレイヤキャラクタPCの直上方向に近い位置から撮像しているか、プレイヤキャラクタPCの横方向に近い位置から撮像しているかを判定していることになる。そして、CPU10は、法線ベクトルVwの方向がカメラ座標の視線方向に近い場合にステップ83に処理を進め、法線ベクトルVwの方向がカメラ座標の上下方向に近い場合にステップ86に処理を進めている。
ステップ83において、CPU10は、内積zdnが0以上か否かを判断する。そして、CPU10は、zdn≧0の場合、ベクトルVo=VcYとしてベクトルVoを設定し(ステップ84)、次のステップ89に処理を進める。一方、CPU10は、zdn<0の場合、ベクトルVo=−VcYとしてベクトルVoを設定し(ステップ85)、次のステップ89に処理を進める。
一方、ステップ86において、CPU10は、内積ydnが0以上か否かを判断する。そして、CPU10は、ydn≧0の場合、ベクトルVo=VcZとしてベクトルVoを設定し(ステップ87)、次のステップ89に処理を進める。一方、CPU10は、ydn<0の場合、ベクトルVo=−VcZとしてベクトルVoを設定し(ステップ88)、次のステップ89に処理を進める。
ステップ89において、CPU10は、方向ベクトルVxおよびVyを算出し、次のステップに処理を進める。ここで、図21および図22に示すように、方向ベクトルVxは、スティック78aを右方向(図12等で示す方向Sr)に傾倒させた操作に対応する仮想ゲーム空間の方向(具体的には、プレイヤキャラクタPCの移動方向)を示す方向パラメータである。また、方向ベクトルVyは、スティック78aを上方向(図12等で示す方向Su)に傾倒させた操作に対応する仮想ゲーム空間の方向を示す方向パラメータである。そして、CPU10は、方向ベクトルVxを、ベクトルVoと法線ベクトルVwとの外積、すなわち、
Vx = Vo × Vw
によって算出する。また、CPU10は、方向ベクトルVyを、カメラベクトルVcXの逆方向ベクトル(−VcX)と法線ベクトルVwとの外積、すなわち、
Vy = −VcX × Vw
によって算出する。
次に、CPU10は、プレイヤキャラクタPCの移動ベクトルVmを算出して移動ベクトルデータDiを更新し(ステップ90)、当該サブルーチンによる処理を終了する。例えば、CPU10は、移動ベクトルVmを
Vm = Vx * Vsx + Vy * Vsy
によって算出する。ここで、図21および図22に示すように、Vsxは操作ベクトルVsのx方向(スティック78aを右へ傾倒させる方向)成分を示し、Vsyは操作ベクトルVsのy方向(スティック78aを上へ傾倒させる方向であり、x方向と直交する方向)成分を示している。つまり、プレイヤの方向入力の方向を示す操作ベクトルVsは、直交する2軸方向(x方向およびy方向)を基準としたパラメータであり、上記方向ベクトルVxおよびVyをそれぞれ当該2軸方向に関連付けて移動ベクトルVmを算出している。
ここで、上述した移動方向決定処理における基本原理について説明する。上述した処理においては、互いに直交する3つのカメラベクトルVcX、VcY、およびVcZの何れか2つと、移動方向に対して必ず垂直となる法線ベクトルVwとの外積を用いて、操作ベクトルVsに対応する仮想ゲーム空間の方向(移動ベクトルVm)を求めている。ここで、図21および図22に示すように、上述した処理は、ゲームフィールドGFの法線方向(もしくは重力方向)が表示画面に対して上下または前後方向に設定される、すなわち法線ベクトルVwの方向がカメラ座標におけるVcY−VcZ平面と平行であることを前提としている。したがって、表示されるゲーム画像において、位置PPからゲームフィールドGFに沿った上方向となる方向ベクトルVyは、法線ベクトルVwおよびカメラベクトルVcXに対して直交するベクトルとなる。すなわち、方向ベクトルVyは、カメラベクトルVcXの逆方向ベクトル(−VcX)と法線ベクトルVwとの外積によって求めることができる。
また、表示されるゲーム画像において、位置PPからゲームフィールドGFに沿った右方向となる方向ベクトルVxは、法線ベクトルVwおよびカメラベクトルVcYまたはVcZに対して直交するベクトルとなる。しかしながら、法線ベクトルVwの方向がカメラ座標におけるVcY−VcZ平面と平行であることを前提にして、法線ベクトルVwとカメラ座標との位置関係が仮想カメラCの移動等に応じて変化する。つまり、カメラベクトルVcYおよびVcZと法線ベクトルVwとの位置関係が、仮想カメラCの移動や撮像角度の変化に応じて変化する。本実施例では、カメラベクトルVcYおよびVcZから法線ベクトルVwの方向との差が大きい(内積値が小さい)一方を選択し、当該選択された一方(ベクトルVo)と法線ベクトルVwとの外積によって、方向ベクトルVxを求めている。なお、方向ベクトルVxおよびVyを求める際のカメラベクトルVcX、VcY、およびVcZの正負は、所望の方向に直交する方向ベクトルVxおよびVyを外積によって求めるための符号調整である。例えば、内積値の絶対値が小さい結果となったカメラベクトルVcYおよびVcZの一方について、当該内積値の正負に応じて当該一方のカメラベクトルVcYまたはVcZを反転させて符号調整している。
このように、本実施例では、カメラベクトルVcX、VcY、およびVcZと法線ベクトルVwとの内積および外積を用いることによって、プレイヤの方向入力の基準入力方向(xおよびy方向)に応じた仮想ゲーム空間における基準方向(方向ベクトルVxおよびVy)を算出している。そして、当該基準方向に基づいて、プレイヤの方向入力に応じた移動ベクトルVmを算出することによって、プレイヤの方向入力に直感的に対応付けられた移動方向を算出している。これによって、重力方向(法線方向)が様々な方向に設定されているゲームフィールドを用いた仮想ゲーム空間においても、直感的な方向入力操作が実現可能となり、プレイヤに操作の混乱を与えることもない。さらに、上記仮想ゲーム空間環境において、所定条件を満たすときに仮想カメラを回転させる状況であっても、直感的な方向入力操作が実現可能となり、プレイヤに操作の混乱を与えることもない。
なお、上述した移動方向決定処理では、カメラベクトルVcX、VcY、およびVcZのうち、カメラベクトルVcYおよびVcZの何れか一方と、カメラベクトルVcXとを用いて2つの方向ベクトルVxおよびVyを算出しているが、他の態様でカメラベクトルを選択して算出してもかまわない。例えば、上述した移動方向決定処理では、法線ベクトルVwの方向がカメラ座標におけるVcY−VcZ平面と平行であることを前提にしているために、カメラベクトルVcXを用いることを必須としているが、カメラ座標系と法線ベクトルVwとの位置関係によって、他のカメラベクトルを用いることを必須としてもよい。具体的には、ゲームフィールドGFの重力方向(法線方向)が表示画面に対して左右または前後方向に設定される、すなわち法線ベクトルVwの方向がカメラ座標におけるVcX−VcZ平面と平行であることを前提とする。この場合、カメラベクトルVcX、VcY、およびVcZのうち、カメラベクトルVcXおよびVcZの何れか一方と法線ベクトルVwとの外積、およびカメラベクトルVcYと法線ベクトルVwとの外積を用いてそれぞれ2つの方向ベクトルVxおよびVyを算出すればよい。
図18に戻り、上記ステップ51の移動方向決定処理の後、CPU10は、プレイヤキャラクタPCが姿勢変化する際の回転軸を未固定に設定する(ステップ52)。そして、CPU10は、上記ステップ51で算出された移動ベクトルVmに基づいて、プレイヤキャラクタPCを移動させ(ステップ53)、当該プレイヤキャラクタPCの姿勢を決定して(ステップ54)、次のステップ55に処理を進める。例えば、CPU10は、ゲームフィールドGF上を移動ベクトルVmに基づいてプレイヤキャラクタPCを移動させて新たな位置PPを算出して、プレイヤキャラクタ位置データDb1を更新する。そして、CPU10は、新たに算出された位置PPおよびプレイヤからの操作入力に応じてプレイヤキャラクタPCの姿勢を決定して、姿勢ベクトルデータDb2を更新する。ここで、図23に示すように、プレイヤキャラクタPCにはその姿勢を示すパラメータとしてベクトルVt、Vf、およびVrが設定されている。具体的には、プレイヤキャラクタPCの上方(起立方向)を示す上方向ベクトルVt、前方を示す前方向ベクトルVf、および横方向を示す横方向ベクトルVrによって、プレイヤキャラクタPCの姿勢が定義される。上記ステップ54では、新たに算出された位置PPおよびプレイヤからの操作入力に応じて、これら上方向ベクトルVt、前方向ベクトルVf、および横方向ベクトルVrを決定して、姿勢ベクトルデータDb2を更新する。
一方、プレイヤキャラクタPCが側面突入状態であり(ステップ44でYes)、かつ、方向入力の変化が閾値以内(すなわち、プレイヤの方向入力操作が不変)である場合(ステップ45でYes)、CPU10は、プレイヤキャラクタPCの移動方向を決定する処理を行って(ステップ46)、次のステップに処理を進める。このステップ46で行う移動方向決定処理は、上述したステップ51で行う移動方向決定処理と同様であるため、詳細な説明を省略する。ただし、ステップ46で行う移動方向決定処理においては、プレイヤキャラクタPCが側面突入状態であるため、突入時カメラベクトルデータDc3に記憶されているカメラベクトルVcXo、VcYo、およびVcZoが、それぞれカメラベクトルVcX、VcY、およびVcZとして取り扱われる。
次に、CPU10は、上記ステップ46の移動方向決定処理の後、プレイヤキャラクタPCが姿勢変化する際の回転軸を固定に設定する(ステップ47)。そして、CPU10は、上記ステップ46で算出された移動ベクトルVmに基づいて、プレイヤキャラクタPCを移動させ(ステップ48)、当該プレイヤキャラクタPCの姿勢を決定して(ステップ49)、次のステップ55に処理を進める。
例えば、上記ステップ48において、CPU10は、ゲームフィールドGF上を移動ベクトルVmに基づいてプレイヤキャラクタPCを移動させて新たな位置PPを算出して、プレイヤキャラクタ位置データDb1を更新する。ここで、ステップ48におけるプレイヤキャラクタPCの移動方向は、側面突入状態に移行した時点のカメラベクトルに基づいて算出される。したがって、側面突入状態期間で仮想カメラCが移動または回転しても、当該移動や回転が行われてない状態を仮定してプレイヤキャラクタPCの移動方向が算出される。
また、上記ステップ49において、CPU10は、新たに算出された位置PPおよびプレイヤからの操作入力に応じてプレイヤキャラクタPCの姿勢を決定して、姿勢ベクトルデータDb2を更新する。ここで、上記ステップ49の姿勢決定処理は、プレイヤキャラクタPCの姿勢を変化させる際、横方向ベクトルVrの方向を固定して他の上方向ベクトルVtおよび前方向ベクトルVfの方向を回転させる。ここで、後述により明らかとなるが、プレイヤキャラクタPCに作用する重力方向が変化し、かつ、方向入力操作に変化がないときに、側面突入状態に設定される。そして、図11等を用いて説明したように、このような環境におけるプレイヤキャラクタPCの動作に注目すると、プレイヤキャラクタPCの姿勢が変化するのはプレイヤキャラクタPCの上方向ベクトルVtおよび前方向ベクトルVfだけであり、プレイヤキャラクタPCの横方向ベクトルVrに変化がない。したがって、上記ステップ49における姿勢決定処理においては、プレイヤキャラクタPCの姿勢を決める上方向ベクトルVt、前方向ベクトルVf、および横方向ベクトルVrのうち、1つ(横方向ベクトルVr)を固定して、重力変化時におけるプレイヤキャラクタPCの姿勢変化を制御している。
ステップ55において、CPU10は、側面突入検出処理を行い、次のステップ57に処理を進める。以下、図20を参照して、側面突入検出処理の詳細な動作について説明する。
図20において、CPU10は、現在の位置PPに設定されている重力ベクトルVgを取得して重力ベクトルデータDeを更新し(ステップ91)、次のステップに処理を進める。上述したように、ゲームフィールドGFには、その中心部に向かって仮想ゲーム空間の重力が設定されている。そして、上記ステップ91においては、位置PPに設定されている重力方向(つまり、プレイヤキャラクタPCに作用している仮想重力の方向)を示す重力ベクトルVgを取得する。
次に、CPU10は、側面突入状態フラグデータDgを参照して、プレイヤキャラクタPCが側面突入状態にあるか否かを判断する(ステップ92)。そして、CPU10は、側面突入状態でない場合、次のステップ93に処理を進める。一方、CPU10は、側面突入状態である場合、次のステップ99に処理を進める。
ステップ93において、CPU10は、重力ベクトルデータDeに格納されている重力ベクトルVgと、前回重力ベクトルデータDfに格納されている重力ベクトルVgoとが等しいか否かを判断する。そして、CPU10は、Vg≠Vgoの場合、次のステップ94に処理を進める。一方、CPU10は、Vg=Vgoの場合、次のステップ99に処理を進める。ここで、前回重力ベクトルデータDfに格納されている重力ベクトルVgoは、前回の処理において取得された重力ベクトルVgであり、上記ステップ93ではプレイヤキャラクタPCに作用する重力の方向が変化したか否かを検出していることになる。
ステップ94において、CPU10は、重力回転軸ベクトルVgrを算出して、次のステップに処理を進める。ここで、重力回転軸ベクトルVgrは、重力の変化の回転軸を示すベクトルであり、重力ベクトルVgおよび重力ベクトルVgoに対して互いに垂直なベクトルを算出することによって求められる。
次に、CPU10は、プレイヤキャラクタPCの上方向ベクトルVt、前方向ベクトルVf、および横方向ベクトルVrそれぞれの方向から、重力回転軸ベクトルVgrが示す回転軸方向に最も近いものを選択し(ステップ95)、選択された方向を示すベクトルが横方向ベクトルVrであるか否かを判断する(ステップ96)。そして、CPU10は、横方向ベクトルVrが選択された場合、次のステップ97に処理を進める。一方、CPU10は、上方向ベクトルVtまたは前方向ベクトルVfが選択された場合、次のステップ99に処理を進める。
ステップ97において、CPU10は、CPU10は、側面突入状態に設定して、次のステップに処理を進める。具体的には、CPU10は、側面突入状態フラグデータDgに記憶されている側面突入状態フラグFをONに設定する。
次に、CPU10は、カメラベクトルデータDc2に格納されているカメラベクトルVcX、VcY、およびVcZを参照して、それぞれの値をそれぞれカメラベクトルVcXo、VcYo、およびVcZoに代入して突入時カメラベクトルデータDc3に格納し(ステップ98)、次のステップ99に処理を進める。
ステップ99において、重力ベクトルデータDeに格納されている重力ベクトルVgを参照して、その値を重力ベクトルVgoに代入して前回重力ベクトルデータDfに格納し、当該サブルーチンによる処理を終了する。
図18に戻り、ステップ55の側面突入検出処理の後、CPU10は、描画処理を行い(ステップ57)、次のステップに処理を進める。具体的には、CPU10は、上記ステップ41で設定された仮想カメラCから見たゲームフィールドGFおよびプレイヤキャラクタPC等の様子を示すゲーム画像を作成し、モニタ2に表示する。
次に、CPU10は、ゲームを終了するか否かを判断する(ステップ58)。ゲームを終了する条件としては、例えば、ゲームオーバーとなる条件が満たされたことや、プレイヤがゲームを終了する操作を行ったこと等がある。CPU10は、ゲームを終了しない場合に上記ステップ41に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。
上述した処理手順によって、側面突入状態において設定されるプレイヤキャラクタPCの移動方向について説明する。上述したフローチャートから明らかなように、プレイヤキャラクタPCが側面突入状態に移行してからプレイヤの方向入力変化が生じる前までの期間は、上記ステップ46の処理によってプレイヤキャラクタPCの移動方向が決定される。ここで、上記ステップ46の移動方向決定処理においては、プレイヤキャラクタPCが側面突入状態に設定された時点のカメラベクトルVcX、VcY、およびVcZに基づいて移動ベクトルVmが算出される。つまり、上記期間中に仮想カメラCが移動または回転しても、当該移動や回転が行われてない状態を仮定して移動ベクトルVmが算出される。したがって、上記期間中に仮想カメラCがその視線方向を中心に回転した場合、一時的にプレイヤの方向入力の方向とプレイヤキャラクタPCの移動方向とが逆になることがあり得る。
例えば、図14〜図16を用いて説明したように、上記期間中に仮想カメラCcがその視線方向を中心に180°回転する場合を考える。この場合、モニタ2に表示されるゲーム画像が仮想カメラCの回転に応じて上下反転して表示される(例えば、図14に示すゲーム画像から図16に示すゲーム画像への変化)。そして、上記期間中においては、上記仮想カメラCの回転後にスティック78aを下方向(方向Sd)に傾倒しているとき、図16に示すようにプレイヤキャラクタPCが仮想カメラCから遠ざかる方向(上側に記載された方向Md)への移動する。したがって、スティック78aを下方向へ傾倒する方向入力操作が表示領域の上方向となる移動指示となるため、プレイヤの方向入力の方向とプレイヤキャラクタPCの移動方向とが逆になっている。
ここで、上記仮想カメラCの回転前にスティック78aを下方向(方向Sd)に傾倒しているとき、図14に示すようにプレイヤキャラクタPCが仮想カメラCから遠ざかる仮想ゲーム空間の手前から奥へ向かう方向(方向Md)への移動している。そして、プレイヤが同じ方向入力を継続(つまり、方向Sdへの方向入力)して仮想カメラCが回転したときも(図16の状態)、プレイヤキャラクタPCが仮想カメラCから遠ざかる仮想ゲーム空間の手前から奥へ向かう方向(上側に記載された方向Md)への移動する。したがって、上記期間中にプレイヤが同じ方向入力を継続していれば、当該期間中に仮想カメラCが回転してもプレイヤキャラクタPCの移動方向が変わることなく継続されることになる。つまり、上記期間中にプレイヤキャラクタPCを同じ方向に移動させ続けたい場合、仮想カメラCの状態によらず同じ操作を継続すればいいため、プレイヤにとって非常に分かりやすい操作となる。
また、プレイヤキャラクタPCの移動方向を変更したり停止させたりしたい場合、スティック78aの傾倒状態を変化させると上記側面突入状態が解除されるため、現時点の仮想カメラCの位置および撮像角度に基づいた移動方向に変更される。例えば、仮想カメラCの回転後(図16の状態)にスティック78aの傾倒状態を変化させると、プレイヤの方向入力に直感的に対応付けられた方向にプレイヤキャラクタPCの移動方向が変更される(下側に記載された方向Mu、Md、Ml、およびMr)。したがって、プレイヤが改めてプレイヤキャラクタPCの移動方向を変化させる場合は、方向入力に応じて直感的に把握できる方向にプレイヤキャラクタPCが移動することになる。
このように、本実施形態に係る画像処理プログラムを実行する装置は、重力方向(法線方向)が様々な方向に設定されているゲームフィールドを用いた仮想ゲーム空間において、直感的な方向入力操作が実現可能となり、プレイヤに操作の混乱を与えることもない。また、このような仮想ゲーム空間環境において、所定条件を満たすときに仮想カメラを回転させる状況であっても、直感的な方向入力操作が実現可能となり、プレイヤに操作の混乱を与えることもない。
なお、上述した説明では、位置PPにおけるゲームフィールドGFの法線ベクトルVwと、カメラベクトルVcX、VcY、およびVcZとを用いて、移動ベクトルVmを算出しているが、他のベクトルとカメラベクトルVcX、VcY、およびVcZとを用いて、移動ベクトルVmを算出してもかまわない。例えば、位置PPに設定されているゲームフィールドGFの重力ベクトルVgに対する反対方向ベクトル(反重力ベクトル)を用いても、同様に移動ベクトルVmを算出することができることは言うまでもない。また、法線ベクトルVwおよび反重力ベクトルを適宜調整することによって、移動ベクトルVmを算出するようにしてもよい。これら法線ベクトルVwや反重力ベクトルは、何れもプレイヤキャラクタPCの直上方向を示すベクトルであり、仮想ゲーム空間内の位置PPに応じて定められるプレイヤキャラクタPCの姿勢(起立方向)を決定するため姿勢制御ベクトルとして用いることができるパラメータである。したがって、プレイヤキャラクタPCの起立方向を示すベクトルであれば、他の手法により本発明の直上ベクトルが定められてもよい。なお、これら法線ベクトルVwや反重力ベクトルが、本発明の直上ベクトルの一例に相当する。
また、上述した説明では、サブユニット76に設けられたスティック78aを用いた方向入力操作に応じて、プレイヤキャラクタPCを移動させる一例を用いたが、他の操作部を用いてプレイヤキャラクタPCを移動させてもかまわない。例えば、コアユニット70に設けられた十字キー72aを用いた方向入力操作に応じて、プレイヤキャラクタPCを移動させてもかまわない。この場合、コアユニット70のみでコントローラ7を構成してゲーム装置本体5に操作情報を与える態様でも、本発明を実現することができる。また、コントローラに方向入力可能な他の操作部を搭載し、当該操作部を用いた方向入力操作に応じて、プレイヤキャラクタPCを移動させてもかまわない。
また、コアユニット70やサブユニット76に与えられる方向入力操作に応じた処理を行う据置型のゲーム装置本体5に本願発明を適用した例を説明したが、携帯ゲーム装置にも適用することができる。例えば、携帯ゲーム装置の本体に搭載された方向入力操作可能な操作部を用いて、表示装置に表示されたオブジェクトを移動させる。このように本願発明を適用することで、携帯ゲーム装置等でゲームを行うには好適である。
また、上述した説明では、据置型や携帯型のゲーム装置に本願発明を適用した例を説明したが、入力装置によって操作される一般的なパーソナルコンピュータ等の情報処理装置や携帯型の情報処理装置にも適用することができる。例えば、前者の情報処理装置では、入力装置の操作部から出力されるキーデータに応じて、情報処理装置が表示しているオブジェクトを移動する等、入力装置に与えられる操作に基づいて様々な処理を行うことができる。また、後者の情報処理装置は、本体に操作部を搭載し、当該操作部から出力されるキーデータに応じた処理を実行する情報処理装置であればよく、例えば一般的なパーソナルコンピュータ、携帯電話機、PDA(Personal Digital Assistant)等のデバイスにも適用することができる。
例えば、後者の情報処理装置の一例として、他の電話機との間で無線通信する通信部を備えた携帯電話機の場合には、携帯電話機本体に各種操作ボタンが搭載される。そして、携帯電話機に搭載された操作ボタンからの出力値を用いて携帯電話機の表示画面に表示されたオブジェクトの移動制御を行う。このように本願発明を適用することで、携帯電話機等でゲームや操作を行うには好適である。
また、上述した説明では、コアユニット70およびサブユニット76とゲーム装置本体5とが無線通信によって接続された態様を用いたが、コアユニット70またはサブユニット76とゲーム装置本体5とがケーブルを介して電気的に接続されてもかまわない。この場合、コアユニット70またはサブユニット76に接続されたケーブルをゲーム装置本体5の接続端子に接続する。
また、上述したコアユニット70およびサブユニット76の形状や、それらに設けられている操作部72の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。
また、本発明の画像処理プログラムやゲームプログラムは、光ディスク4等の外部記憶媒体を通じてゲーム装置本体5に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体5に供給されてもよい。また、画像処理プログラムやゲームプログラムは、ゲーム装置本体5内部の不揮発性記憶装置に予め記録されていてもよい。なお、画像処理プログラムやゲームプログラムを記憶する情報記憶媒体としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
また、プレイヤの操作方向を入力するための手法として、加速度センサ701および761や撮像情報演算部74から得られるデータを利用して、プレイヤの操作方向を演算するようにしてもよい。例えば、加速度センサ701および761や撮像情報演算部74から得られるデータを利用すれば、プレイヤがコアユニット70やサブユニット76の本体を動かしている方向や本体の姿勢等を算出することが可能であり、これらの方向や姿勢の算出結果をプレイヤの操作方向として用いることも可能である。この場合、キーデータに代えて、加速度センサ701および761や撮像情報演算部74からのデータを用いて、プレイヤの操作方向を示す方向ベクトルを算出して利用するようにすればよい。ここで、コントローラ7から取得されるデータは2次元のベクトルではないので、所定の演算によって2次元のベクトルを算出するようにしてもよいし、加速度センサ701および761や撮像情報演算部74からのデータをそのままメインメモリに格納しておいて、ステップ90で移動ベクトルVmを算出する際に、当該2次元のベクトルを算出して利用するようにしてもよい。
以上、本発明を詳細に説明してきたが、上述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
本発明に係る画像処理プログラムおよび画像処理装置は、ユーザの方向入力に直感的に対応付けられた方向に表示装置に表示されたオブジェクトを移動させることができ、ゲームコントローラ等の入力装置に与えられる方向入力に応じて表示オブジェクトを移動させる処理等を行うプログラムおよび装置として有用である。
本発明の一実施形態に係るゲームシステム1を説明するための外観図 図1のゲーム装置本体5の機能ブロック図 図1のコントローラ7の外観構成を示す斜視図 図3のコアユニット70の上面後方から見た斜視図 図4のコアユニット70を下面前方から見た斜視図 図3のコアユニット70の上筐体を外した状態を示す斜視図 図5のコアユニット70の下筐体を外した状態を示す斜視図 図3のサブユニット76の一例を示す斜視図 図8のサブユニット76の上筐体を外した状態を示す斜視図 図3のコントローラ7の構成を示すブロック図 ゲームフィールドGF上に配置されたプレイヤキャラクタPCに対する操作方向の一例を説明するための図 ゲームフィールドGFa上にプレイヤキャラクタPCaが配置されたときのゲーム画像および操作方向の一例を示す図 ゲームフィールドGFb上にプレイヤキャラクタPCbが配置されたときのゲーム画像および操作方向の一例を示す図 ゲームフィールドGFc上にプレイヤキャラクタPCcが配置されたときのゲーム画像および操作方向の一例を示す図 ゲームフィールドGFc上に配置されたプレイヤキャラクタPCcに対して、仮想カメラCの方向を変化させたときの操作方向の一例を説明するための図 仮想カメラCの方向を変化させたとき、ゲームフィールドGFc上にプレイヤキャラクタPCcが配置されたゲーム画像および操作方向の一例を示す図 ゲーム装置本体5のメインメモリに記憶される主なデータを示す図 ゲーム装置本体5において実行されるゲーム処理の流れを示すフローチャート 図18におけるステップ46および51の移動方向算出処理の詳細な動作を示すサブルーチン 図18におけるステップ55の側面突入検出処理の詳細な動作を示すサブルーチン カメラベクトルVcX、VcY、およびVcZと、法線ベクトルVwと、操作ベクトルVsとが設定された一例について説明するための図 カメラベクトルVcX、VcY、およびVcZと、法線ベクトルVwと、操作ベクトルVsとが設定された他の例について説明するための図 プレイヤキャラクタPCに設定されるベクトルVt、Vf、およびVrの一例を説明するための図
符号の説明
1…ゲームシステム
2…モニタ
2a、706…スピーカ
3…ゲーム装置
4…光ディスク
5…ゲーム装置本体
10…CPU
11…システムLSI
12…外部メインメモリ
13…ROM/RTC
14…ディスクドライブ
15…AV−IC
16…AVコネクタ
17…フラッシュメモリ
18…無線通信モジュール
19…無線コントローラモジュール
20…拡張コネクタ
21…外部メモリカード用コネクタ
22、23…アンテナ
24…電源ボタン
25…リセットボタン
26…イジェクトボタン
31…入出力プロセッサ
32…GPU
33…DSP
34…VRAM
35…内部メインメモリ
7…コントローラ
70…コアユニット
71、77…ハウジング
72、78…操作部
73、791…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701、761…加速度センサ
702…LED
704…バイブレータ
707…サウンドIC
708…アンプ
76…サブユニット
79…接続ケーブル
8…マーカ

Claims (15)

  1. 仮想カメラから見た仮想空間内の操作対象オブジェクトを表示装置に表示する画像処理装置のコンピュータで実行される画像処理プログラムであって、
    前記コンピュータを、
    直交する2軸方向を基準としたユーザの方向入力の方向を示す方向データを取得するデータ取得手段と、
    仮想空間における前記仮想カメラの位置および姿勢を設定する仮想カメラ設定手段と、
    仮想空間における前記操作対象オブジェクトの位置に作用している仮想重力の方向または当該位置における仮想フィールドの法線の方向を示す直上ベクトルと、前記仮想カメラの姿勢を示すカメラベクトルとに基づいて、前記方向データが示す方向に応じた仮想空間内での前記操作対象オブジェクトの移動方向を決定する移動方向決定手段と、
    前記移動方向決定手段で決定された移動方向へ前記操作対象オブジェクトを移動させるオブジェクト移動手段として機能させ、
    前記カメラベクトルは、前記仮想カメラの視線方向、当該仮想カメラから見た表示画像の縦方向、および当該表示画像の横方向をそれぞれ示す直交する3つのカメラベクトルで構成され、
    前記移動方向決定手段は、前記3つのカメラベクトルから第1カメラベクトルおよび第2カメラベクトルを選択して、当該第1カメラベクトルと前記直上ベクトルとに直交する第1ベクトルと、当該第2カメラベクトルと前記直上ベクトルとに直交する第2ベクトルとを算出し、当該第1ベクトルおよび当該第2ベクトルを前記2軸方向にそれぞれ関連付けて前記方向データが示す方向に応じた前記移動方向を決定する、画像処理プログラム。
  2. 前記移動方向決定手段は、前記第1カメラベクトルと前記直上ベクトルとの外積によって前記第1ベクトルを算出し、前記第2カメラベクトルと前記直上ベクトルとの外積によって前記第2ベクトルを算出する、請求項に記載の画像処理プログラム。
  3. 前記移動方向決定手段は、前記視線方向または前記縦方向を示すカメラベクトルを前記第1カメラベクトルとして選択し、前記横方向を示すカメラベクトルを前記第2カメラベクトルとして選択する、請求項またはに記載の画像処理プログラム。
  4. 前記移動方向決定手段は、前記視線方向を示すカメラベクトルと前記直上ベクトルとの内積値および前記縦方向を示すカメラベクトルと前記直上ベクトルとの内積値を用いて、前記視線方向および前記縦方向を示すカメラベクトルの一方を前記第1カメラベクトルとして選択する、請求項に記載の画像処理プログラム。
  5. 前記移動方向決定手段は、前記内積値を比較し、当該内積値の絶対値が小さい結果となった前記視線方向および前記縦方向を示すカメラベクトルの一方を前記第1カメラベクトルとして選択する、請求項に記載の画像処理プログラム。
  6. 前記移動方向決定手段は、前記内積値の絶対値が小さい結果となった前記視線方向および前記縦方向を示すカメラベクトルの一方について、当該内積値の正負に応じて当該一方のカメラベクトルを反転させて前記第1カメラベクトルとして選択する、請求項に記載の画像処理プログラム。
  7. 前記移動方向決定手段は、前記3つのカメラベクトルと前記直上ベクトルとの内積値を用いて、前記第1および第2カメラベクトルを選択する、請求項またはに記載の画像処理プログラム。
  8. 前記仮想カメラ設定手段は、さらに前記仮想カメラを回転させ、
    前記方向データを用いて、ユーザの方向入力が変化したことを検出する入力方向変化検出手段と、
    前記仮想カメラの回転後において、前記入力方向変化検出手段が前記方向入力の変化を検出するまで、前記移動方向決定手段が当該仮想カメラの回転前のカメラベクトルに基づいて移動方向を決定する移動方向維持手段として、さらに前記コンピュータを機能させる、請求項1に記載の画像処理プログラム。
  9. 前記移動方向維持手段は、前記仮想カメラの回転後において、前記入力方向変化検出手段が前記方向入力の変化を検出することに応じて、前記移動方向の仮想カメラの回転前のカメラベクトルに基づく決定を解除し、
    前記移動方向決定手段は、前記仮想カメラの回転後において、前記入力方向変化検出手段が前記方向入力の変化を検出することに応じて、当該回転後の仮想カメラの姿勢を示すカメラベクトルに基づいて、当該方向入力の変化後の前記方向データが示す方向に応じた前記移動方向を決定する、請求項に記載の画像処理プログラム。
  10. 前記仮想カメラ設定手段は、前記仮想カメラをその視線方向を中心に回転させる、請求項に記載の画像処理プログラム。
  11. 前記操作対象オブジェクトの位置に設定されている前記直上ベクトルおよび前記移動方向決定手段が決定する移動方向に基づいて、前記操作対象オブジェクトの姿勢を示す互いに直交する3つの姿勢ベクトルを逐次決定するオブジェクト姿勢決定手段として、さらに前記コンピュータを機能させ、
    前記オブジェクト姿勢決定手段は、前記操作対象オブジェクトの移動前後の位置に設定されている前記直上ベクトルの方向が変化した場合、前記入力方向変化検出手段が前記方向入力の変化を検出するまで、前記3つの姿勢ベクトルのうち、1つの姿勢ベクトルの方向を固定して他の2つの姿勢ベクトルの方向を変化させて決定する、請求項に記載の画像処理プログラム。
  12. 前記仮想空間には、その外周面に対して異なった方向の仮想重力が設定された仮想立体フィールドが設定されており、
    前記移動方向決定手段は、前記操作対象オブジェクトの位置における前記仮想立体フィールドの外周面に沿って前記操作対象オブジェクトの移動方向を決定し、
    前記オブジェクト移動手段は、前記仮想立体フィールドの外周面に沿って前記移動方向決定手段で決定された移動方向へ前記操作対象オブジェクトを移動させる、請求項1に記載の画像処理プログラム。
  13. 前記仮想カメラ設定手段は、前記操作対象オブジェクトの位置に応じて、前記仮想カメラの視体積内に前記操作対象オブジェクトが含まれて、前記表示装置に前記操作対象オブジェクトが表示される位置および姿勢に前記仮想カメラを設定する、請求項12に記載の画像処理プログラム。
  14. 仮想カメラから見た仮想空間内の操作対象オブジェクトを表示装置に表示する画像処理装置であって、
    直交する2軸方向を基準としたユーザの方向入力の方向を示す方向データを取得するデータ取得手段と、
    仮想空間における前記仮想カメラの位置および姿勢を設定する仮想カメラ設定手段と、
    仮想空間における前記操作対象オブジェクトの位置に作用している仮想重力の方向または当該位置における仮想フィールドの法線の方向を示す直上ベクトルと、前記仮想カメラの姿勢を示すカメラベクトルとに基づいて、前記方向データが示す方向に応じた仮想空間内での前記操作対象オブジェクトの移動方向を決定する移動方向決定手段と、
    前記移動方向決定手段で決定された移動方向へ前記操作対象オブジェクトを移動させるオブジェクト移動手段とを備え、
    前記カメラベクトルは、前記仮想カメラの視線方向、当該仮想カメラから見た表示画像の縦方向、および当該表示画像の横方向をそれぞれ示す直交する3つのカメラベクトルで構成され、
    前記移動方向決定手段は、前記3つのカメラベクトルから第1カメラベクトルおよび第2カメラベクトルを選択して、当該第1カメラベクトルと前記直上ベクトルとに直交する第1ベクトルと、当該第2カメラベクトルと前記直上ベクトルとに直交する第2ベクトルとを算出し、当該第1ベクトルおよび当該第2ベクトルを前記2軸方向にそれぞれ関連付けて前記方向データが示す方向に応じた前記移動方向を決定する、画像処理装置。
  15. 前記仮想カメラ設定手段は、さらに前記仮想カメラを回転させ、
    前記画像処理装置は、
    前記方向データを用いて、ユーザの方向入力が変化したことを検出する入力方向変化検出手段と、
    前記仮想カメラの回転後において、前記入力方向変化検出手段が前記方向入力の変化を検出するまで、前記移動方向決定手段が当該仮想カメラの回転前のカメラベクトルに基づいて移動方向を決定する移動方向維持手段とを、さらに備える、請求項14に記載の画像処理装置。
JP2007180294A 2007-07-09 2007-07-09 画像処理プログラムおよび画像処理装置 Active JP4919887B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007180294A JP4919887B2 (ja) 2007-07-09 2007-07-09 画像処理プログラムおよび画像処理装置
US11/898,109 US9561442B2 (en) 2007-07-09 2007-09-10 Storage medium having image processing program stored thereon and image processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007180294A JP4919887B2 (ja) 2007-07-09 2007-07-09 画像処理プログラムおよび画像処理装置

Publications (2)

Publication Number Publication Date
JP2009015793A JP2009015793A (ja) 2009-01-22
JP4919887B2 true JP4919887B2 (ja) 2012-04-18

Family

ID=40253608

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007180294A Active JP4919887B2 (ja) 2007-07-09 2007-07-09 画像処理プログラムおよび画像処理装置

Country Status (2)

Country Link
US (1) US9561442B2 (ja)
JP (1) JP4919887B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8619080B2 (en) * 2008-09-08 2013-12-31 Disney Enterprises, Inc. Physically present game camera
JP5525177B2 (ja) * 2009-04-16 2014-06-18 任天堂株式会社 情報処理プログラム、および、情報処理装置
US20120166304A1 (en) * 2010-12-23 2012-06-28 Gyan Prakash Real-time mobile payment processing system
JP5846766B2 (ja) * 2011-06-03 2016-01-20 株式会社ソニー・コンピュータエンタテインメント ゲーム装置、ゲーム制御方法、及びゲーム制御プログラム
US9370713B2 (en) 2011-01-17 2016-06-21 Sony Corporation Game device, game control method, and game control program for controlling game in which character is moved in three dimensional space
JP5846767B2 (ja) * 2011-01-17 2016-01-20 株式会社ソニー・コンピュータエンタテインメント ゲーム装置、ゲーム制御方法、及びゲーム制御プログラム
JP5800526B2 (ja) * 2011-02-22 2015-10-28 任天堂株式会社 ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法
JP5702653B2 (ja) 2011-04-08 2015-04-15 任天堂株式会社 情報処理プログラム、情報処理装置、情報処理システム、および、情報処理方法
JP5100862B1 (ja) * 2011-06-01 2012-12-19 株式会社コナミデジタルエンタテインメント ゲーム装置、ゲーム装置の制御方法、ならびに、プログラム
WO2013173670A2 (en) 2012-05-18 2013-11-21 Thomson Licensing Processing panoramic pictures
JP5824537B2 (ja) * 2014-01-16 2015-11-25 キヤノン株式会社 情報処理装置および情報処理方法
US10388027B2 (en) * 2016-06-01 2019-08-20 Kyocera Corporation Detection method, display apparatus, and detection system
JP6755224B2 (ja) * 2017-08-28 2020-09-16 任天堂株式会社 ゲームシステム、ゲームプログラム、ゲーム装置、および、ゲーム処理方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6139433A (en) * 1995-11-22 2000-10-31 Nintendo Co., Ltd. Video game system and method with enhanced three-dimensional character and background control due to environmental conditions
JP2000200362A (ja) * 1998-12-28 2000-07-18 Square Co Ltd ゲ―ム装置、及び当たり判定方法並びに当たり判定プログラムを記録した記録媒体
EP1174167B1 (en) 2000-07-17 2006-12-27 Sony Computer Entertainment Inc. Program execution system, program execution device and recording medium and computer executable program therefor
JP4741164B2 (ja) * 2000-07-17 2011-08-03 株式会社ソニー・コンピュータエンタテインメント プログラム実行システム、プログラム実行装置、記録媒体及び画像表示方法
JP2002263359A (ja) * 2001-12-27 2002-09-17 Nintendo Co Ltd ビデオゲーム装置およびその記憶媒体
US7147560B2 (en) * 2003-05-14 2006-12-12 Sony Computer Entertainment America Inc. Selection of targets for attachment
JP4420730B2 (ja) * 2004-05-10 2010-02-24 株式会社バンダイナムコゲームス プログラム、情報記憶媒体及び電子機器
JP4580742B2 (ja) 2004-11-30 2010-11-17 任天堂株式会社 ゲームプログラムおよびゲーム装置
JP4754229B2 (ja) * 2005-02-01 2011-08-24 株式会社バンダイナムコゲームス プログラム、情報記憶媒体及び画像生成システム

Also Published As

Publication number Publication date
US9561442B2 (en) 2017-02-07
US20090017907A1 (en) 2009-01-15
JP2009015793A (ja) 2009-01-22

Similar Documents

Publication Publication Date Title
JP4919887B2 (ja) 画像処理プログラムおよび画像処理装置
JP5692904B2 (ja) 入力システム、情報処理装置、情報処理プログラム、および指示位置算出方法
US8284158B2 (en) Computer readable recording medium recording image processing program and image processing apparatus
JP5430246B2 (ja) ゲーム装置およびゲームプログラム
US8502773B2 (en) Information processing apparatus and computer-readable recording medium recording information processing program
JP4988273B2 (ja) ゲームプログラムおよびゲーム装置
US9310894B2 (en) Processing operation signals from a pointing device and/or an input device
JP5829020B2 (ja) ゲームシステム、ゲーム装置、ゲームプログラム、および、ゲーム処理方法
JP4964729B2 (ja) 画像処理プログラムおよび画像処理装置
JP5869236B2 (ja) 情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
JP2008067876A (ja) ゲーム装置およびゲームプログラム
US8917237B2 (en) Information processing system, information processing apparatus, storage medium having information processing program stored thereon, and content playback control method
JP5358168B2 (ja) ゲーム装置およびゲームプログラム
JP5757741B2 (ja) ゲームシステム、ゲーム装置、ゲームプログラム、およびゲーム処理方法
JP5259965B2 (ja) 情報処理プログラム、および、情報処理装置
JP2010142404A (ja) ゲームプログラムおよびゲーム装置
EP2524721B1 (en) Information processing program, information processing apparatus, information processing system and information processing method
JP2008142509A (ja) ゲームシステムおよびゲームプログラム
JP5937792B2 (ja) ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法
US9146703B2 (en) Storage medium, information processing apparatus, information processing system and information processing method
JP5945297B2 (ja) ゲームプログラムおよびゲーム装置
JP5350612B2 (ja) ゲームプログラム、ゲーム装置、ゲームシステムおよびゲーム処理方法
JP6045777B2 (ja) 方向制御システム、方向制御装置、方向制御プログラム、および方向制御方法
JP2014000438A (ja) ゲームプログラム、ゲーム装置、ゲームシステムおよびゲーム処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100614

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110902

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111108

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120111

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120127

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120131

R150 Certificate of patent or registration of utility model

Ref document number: 4919887

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150210

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250