説明

ゲームプログラムおよびゲーム装置

【課題】プレイヤの視界を遮るオブジェクトが突然透明になることでプレイヤに与える違和感や不自然さを防ぎながら、当該オブジェクトで視界が遮られることを防ぐことのできるゲームプログラムおよびゲーム装置を提供すること。
【解決手段】ゲーム装置の記憶手段に記憶されている視点の位置を示す情報または各オブジェクトの位置を示す情報の少なくとも一方を変化させることによって、視点に対する各オブジェクトの相対位置を変化させる。次に、視点の位置を示す情報と各オブジェクトの位置を示す情報とを参照して、仮想空間内における視点から各オブジェクトまでの距離がそれぞれ所定距離以下であるか否かを判定する。次に、所定距離以下と判定されたオブジェクトについて、当該オブジェクトの透明度が徐々に増すように、当該オブジェクトの透明度を示す情報を単位時間毎に更新する。そして、透明度を示す情報を参照してオブジェクトを含む仮想画像を描画する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想空間内において当該仮想空間に存在する少なくとも1つ以上のオブジェクトを所定の視点から観察した際に得られる仮想画像を表示装置の画面に表示するためのゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
近年、ゲームシステムに含まれるコンピュータの高性能化に伴い、3次元コンピュータグラフィックス技術を利用した3次元ゲームが増えている。3次元ゲームでは、キャラクタオブジェクトや建物オブジェクト等のポリゴンによって構成されるオブジェクトを3次元のゲーム空間に配置し、所定の視点によってそのゲーム空間内の様子を3次元ゲーム画面として表示している。多くの場合、プレイヤに自己の操作するプレイヤキャラクタオブジェクト(以下、単にプレイヤキャラクタと呼ぶ)を認識させるために、上記所定の視点は、プレイヤキャラクタに向けられる。この際、上記所定の視点はプレイヤキャラクタと一定の位置関係を有しながら移動するため、時としてプレイヤキャラクタを観察する視線の間に障害物が入り込む場合がある。そこで、このような場合に、当該障害物を透明あるいは半透明にする技術が開示されている。
【0003】
例えば、上記所定の視点から見て障害物がプレイヤキャラクタを隠している状態であるかどうか判定し、隠している状態であると判定したときに当該障害物の透過処理を行う画像生成装置が開示されている(例えば、特許文献1)。また、ゲーム空間内において、プレイヤキャラクタが壁や床によって隠される位置にいるときは、当該壁や床を透過させるゲーム装置が開示されている(例えば、特許文献2)。また、上記所定の視点からの奥行き方向の距離に応じてゲーム空間を複数の領域に分割し、当該分割された各領域毎に不透明度を設定して、各領域に含まれる画素に関して当該不透明度を用いて半透明合成するゲーム装置が開示されている(例えば、特許文献3)。さらに、上記所定の視点から各オブジェクトの各画素(ドット)単位までの距離に応じて各画素の透明度を設定するゲーム装置も開示されている(例えば、特許文献4)。
【特許文献1】特開平9−50541号公報
【特許文献2】特開平9−299613号公報
【特許文献3】特開2002−197486号公報
【特許文献4】特開平11−42370号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、上述したような各特許文献に開示された装置においては、従来から以下に示す問題点があった。上記特許文献1および2に開示された装置では、プレイヤキャラクタが障害物に隠れている状態になったとき、即時に障害物を透明にしてしまう。そのため、今まで見えていた障害物が突然消えてしまうことによる違和感や不自然さをプレイヤに与えてしまう。また、上記特許文献3および4に開示されたゲーム装置では、上記所定の視点からの距離に応じて透明度を変化させているため、障害物が徐々に近づいたり遠ざかるような動きをする限りは、透明度も徐々に変化するため、プレイヤに与える違和感や不自然さをかなり軽減することはできる。しかし、例えば、画面が切り替わる等で、障害物が画面内(目の前)に突然現れた場合、即時に障害物を透明(あるいは半透明)にしてしまう。そのため、障害物が一瞬現れてすぐに消えるという違和感や不自然さをプレイヤに与えてしまうという問題があった。
【0005】
それ故に、本発明の目的は、プレイヤの視界を遮るオブジェクトが突然透明になることによって違和感や不自然さをプレイヤに与えることを防ぎながら、当該オブジェクトで視界が遮られることを防ぐことのできるゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【0007】
第1の発明は、仮想空間内において当該仮想空間に存在する少なくとも1つ以上のオブジェクトを所定の視点から観察した際に得られる仮想画像を表示装置の画面に表示するためのゲームプログラムであって、ゲーム装置のコンピュータに、相対位置変化ステップ(S6)と、距離判定ステップ(S22)と、透明度変更ステップ(S33)と、描画ステップ(S9)とを実行させる。相対位置変化ステップでは、ゲーム装置の記憶手段に記憶されている視点の位置を示す情報または各オブジェクトの位置を示す情報の少なくとも一方を変化させることによって、視点に対する各オブジェクトの相対位置を変化させる。距離判定ステップでは、視点の位置を示す情報と各オブジェクトの位置を示す情報とを参照して、視点から各オブジェクトまでの距離がそれぞれ所定距離以下であるか否かを判定する。透明度変更ステップでは、距離判定ステップにおいて距離が所定距離以下と判定されたオブジェクトについて、当該オブジェクトの透明度が徐々に増すように、ゲーム装置の記憶手段に記憶されている当該オブジェクトの透明度を示す情報を単位時間毎に更新する。描画ステップでは、透明度を示す情報を参照して、オブジェクトを含む仮想画像を描画する。
【0008】
第2の発明は、第1の発明において、距離判定ステップは、各オブジェクトについて、当該オブジェクトを内包するように設定された当該オブジェクトの当たり領域の少なくとも一部が、視点から所定距離だけ離れた位置に当該視点からの視線と直交するように設定された境界面よりも視点側に位置しているか否かをそれぞれ判定する。また、透明度変更ステップは、距離判定ステップにおいて当たり領域の少なくとも一部が境界面よりも視点側に位置していると判定されたオブジェクトについて、当該オブジェクトの透明度が徐々に増すように当該オブジェクトの透明度を示す値を単位時間毎に更新する。
【0009】
第3の発明は、第2の発明において、当たり領域の形状は、8つの頂点を有する六面体である。また、距離判定ステップは、8つの頂点の少なくとも1つが境界面よりも視点側にあるときに、当該当たり領域が設定されているオブジェクトについて所定距離以下であると判定する。
【0010】
第4の発明は、第1の発明において、ゲームプログラムは、オブジェクトを含む仮想空間を視点を基準として透視変換することで得られる2次元画像において、視点からの距離が所定距離以下であるオブジェクトの少なくとも一部が当該2次元画像の中央を含む所定範囲内に表示されているか否かを判定する、中央表示判定ステップ(S24)を更にコンピュータに実行させる。また、透明度変更ステップでは、中央表示判定ステップにおいてその少なくとも一部が前記2次元画像の中央を含む所定範囲内に表示されていると判定されたオブジェクトについてのみ、当該オブジェクトの透明度を示す情報を単位時間毎に更新する。
【0011】
第5の発明は、第4の発明において、中央表示判定ステップの判定に用いられる2次元画像の中央を含む所定範囲が、矩形領域であることを特徴とする。
【0012】
第6の発明は、第5の発明において、視点からの距離が所定距離以下であるオブジェクトを囲むような矩形領域であるオブジェクト領域を2次元画像において設定するオブジェクト領域設定ステップを更に前記コンピュータに実行させる。また、中央表示判定ステップは、オブジェクト領域の少なくとも一部が2次元画像の中央を含む矩形領域と重なったときに、当該オブジェクト領域が設定されたオブジェクトは2次元画像の中央を含む所定範囲内に表示されていると判定する。
【0013】
第7の発明は、第1の発明において、透明度変更ステップは、透明度を示す情報を更新した後、距離判定ステップにおいて当該透明度を示す情報が更新されたオブジェクトの距離が所定距離以下ではないと判定されたときは、当該オブジェクトの不透明度が徐々に増すように当該オブジェクトの透明度を示す情報を単位時間毎に更新する。
【0014】
第8の発明は、仮想空間内において当該仮想空間に存在する少なくとも1つ以上のオブジェクトを所定の視点から観察した際に得られる仮想画像を表示装置の画面に表示するゲーム装置であって、記憶部(33)と、相対位置変化部(30)と、距離判定部(30)と、透明度変更部(30)と、描画部(30)とを備える。相対位置変化部は、記憶部に記憶されている視点の位置を示す情報または各オブジェクトの位置を示す情報の少なくとも一方を変化させることによって、視点に対する各オブジェクトの相対位置を変化させる。距離判定部は、視点の位置を示す情報または各オブジェクトの位置を示す情報を参照して、仮想空間内における所定の視点から各オブジェクトまでの距離がそれぞれ所定距離以下であるか否かを単位時間毎に判定する。透明度変更部は、距離判定部が距離が所定距離以下と判定したオブジェクトについて、当該オブジェクトの透明度が徐々に増すように、記憶手段に記憶されている当該オブジェクトの透明度を示す情報を単位時間毎に更新する。描画部は、透明度を示す情報を参照して、オブジェクトを含む仮想画像を単位時間毎に描画する。
【発明の効果】
【0015】
上記第1の発明によれば、オブジェクトが所定の視点から所定距離内に近づいたときに、単位時間毎に透明度を上げていく。そのため、オブジェクトが仮想カメラの目前に急に現れた場合であっても、当該オブジェクトを徐々に透明にすることができ、画面内に現れたオブジェクトが急に消えてしまうという不自然さや違和感をプレイヤに与えることを軽減することができる。
【0016】
上記第2乃至第3の発明によれば、オブジェクトが所定の視点から所定距離内に近づいたか否かの判定を、簡単な処理で実現することができる。そのため、コンピュータの処理負荷を軽減することができる。
【0017】
上記第4の発明によれば、所定の視点から所定距離内に近づいたオブジェクトであっても、画面の端に表示されるため、実質的にはプレイヤの視界を遮らないようなオブジェクトについては透明にする処理を行わない。つまり、画面の中央付近に表示されるためにプレイヤの視界を遮ってしまうオブジェクトのみを透明にすることができる。そのため、より効率的にオブジェクトを透明にすることができる。また、プレイヤの視界を実質的には遮らないオブジェクトまで透明にすることによってプレイヤに与える違和感や不自然さを更に軽減することができる。
【0018】
上記第5乃至第6の発明によれば、画面の中央付近にオブジェクトが表示されるか否かについて、簡単な処理で判定することができる。そのため、コンピュータの処理負荷を軽減することができる。
【0019】
上記第7の発明によれば、一旦透明にしたオブジェクトが所定距離外に位置すれば、元の透明でない状態に徐々に戻していく。これにより、プレイヤに与える違和感を軽減することが可能となる。
【0020】
また、本発明のゲーム装置によれば、上述した本発明のゲームプログラムと同様の効果を得ることができる。
【発明を実施するための最良の形態】
【0021】
図1を参照して、本発明の一実施形態に係るゲーム装置について説明する。以下、説明を具体的にするために、当該ゲーム装置を用いたゲームシステム1を一例として説明する。なお、図1は、当該ゲームシステム1を説明するための外観図である。以下、据置型ゲーム装置を一例にして、当該ゲームシステム1について説明する。
【0022】
図1において、当該ゲームシステム1は、家庭用テレビジョン受像機等のスピーカ2aを備えたディスプレイ(以下、モニタと記載する)2に、接続コードを介して接続される据置型ゲーム装置(以下、単にゲーム装置と記載する)3および当該ゲーム装置3に操作情報を与えるコントローラ7によって構成される。ゲーム装置3は、接続端子を介して受信ユニット6が接続される。受信ユニット6は、コントローラ7から無線送信される送信データを受信し、コントローラ7とゲーム装置3とは無線通信によって接続される。また、ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。ゲーム装置3の上部主面には、当該ゲーム装置3の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置3上部の蓋を開くOPENスイッチが設けられている。ここで、プレイヤがOPENスイッチを押下することによって上記蓋が開き、光ディスク4の脱着が可能となる。
【0023】
また、ゲーム装置3には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード5が必要に応じて着脱自在に装着される。ゲーム装置3は、光ディスク4に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ2に表示する。さらに、ゲーム装置3は、外部メモリカード5に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0024】
コントローラ7は、その内部に備える通信部75(後述)から受信ユニット6が接続されたゲーム装置3へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて送信データを無線送信する。コントローラ7は、主にモニタ2に表示されるゲーム空間に登場するプレイヤオブジェクトを操作するための操作手段である。コントローラ7は、複数の操作ボタン、キー、およびスティック等の操作部が設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。マーカ8Lおよび8Rは、コントローラ7の位置を示すためのものである。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力する。
【0025】
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
【0026】
図2において、ゲーム装置3は、各種プログラムを実行する例えばリスク(RISC)CPU(セントラルプロセッシングユニット)30を備える。CPU30は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ33等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムの実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU30には、メモリコントローラ31を介して、GPU(Graphics Processing Unit)32、メインメモリ33、DSP(Digital Signal Processor)34、およびARAM(Audio RAM)35が接続される。また、メモリコントローラ31には、所定のバスを介して、コントローラI/F(インターフェース)36、ビデオI/F37、外部メモリI/F38、オーディオI/F39、およびディスクI/F41が接続され、それぞれ受信ユニット6、モニタ2、外部メモリカード5、スピーカ2a、およびディスクドライブ40が接続されている。
【0027】
GPU32は、CPU30の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理を行う。GPU32は、これらを用いてモニタ2に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に出力する。
【0028】
メインメモリ33は、CPU30で使用される記憶領域であって、CPU30の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ33に記憶されたゲームプログラムや各種データ等がCPU30によって実行される。
【0029】
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ2に備えるスピーカ2aに出力させる。
【0030】
メモリコントローラ31は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。コントローラI/F36は、例えば4つのコントローラI/F36a〜36dで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置3とを通信可能に接続する。例えば、受信ユニット6は、上記コネクタと嵌合し、コントローラI/F36を介してゲーム装置3と接続される。上述したように受信ユニット6は、コントローラ7からの送信データを受信し、コントローラI/F36を介して当該送信データをCPU30へ出力する。ビデオI/F37には、モニタ2が接続される。外部メモリI/F38には、外部メモリカード5が接続され、その外部メモリカード5に設けられたバックアップメモリ等とアクセス可能となる。オーディオI/F39にはモニタ2に内蔵されるスピーカ2aが接続され、DSP34がARAM35から読み出したサウンドデータやディスクドライブ40から直接出力されるサウンドデータをスピーカ2aから出力可能に接続される。ディスクI/F41には、ディスクドライブ40が接続される。ディスクドライブ40は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置3のバスやオーディオI/F39に出力する。
【0031】
図3および図4を参照して、本発明の入力装置の一例であるコントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面後方から見た斜視図である。
【0032】
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0033】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、矢印で示す4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0034】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、リング状に4方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記十字キー72aの代わりに設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。また、少なくとも4つの方向(前後左右)をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。
【0035】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、Xボタン、Yボタン、およびBボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、セレクトスイッチ、メニュースイッチ、およびスタートスイッチ等としての機能が割り当てられる。これら操作ボタン72b〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0036】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置3本体の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0037】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7から受信ユニット6へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
【0038】
一方、ハウジング71下面には、凹部が形成されている。後述で明らかとなるが、ハウジング71下面の凹部は、プレイヤがコントローラ7を把持したときに当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばAボタンとして機能する操作部であり、シューティングゲームにおけるトリガスイッチや、プレイヤオブジェクトを所定オブジェクトに対して注目させる操作等に用いられる。
【0039】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えば32ピンのエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【0040】
ここで、説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するXYZ軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をZ軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をZ軸正方向とする。また、コントローラ7の上下方向をY軸とし、ハウジング71の上面(十字キー72a等が設けられた面)方向をY軸正方向とする。さらに、コントローラ7の左右方向をX軸とし、ハウジング71の左側面(図3では表されずに図4で表されている側面)方向をX軸正方向とする。
【0041】
次に、図5を参照して、コントローラ7の内部構造について説明する。なお、図5(a)は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を示す斜視図である。図5(b)は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を示す斜視図である。ここで、図5(b)に示す基板700は、図5(a)に示す基板700の裏面から見た斜視図となっている。
【0042】
図5(a)において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、水晶振動子703、無線モジュール753、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751(図6参照)に接続される。加速度センサ701は、コントローラ7が配置された3次元空間における傾きや振動等の算出に用いることができる加速度を検出して出力する。
【0043】
より詳細には、図6に示すように、コントローラ7は3軸の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向(図3に示すY軸)、左右方向(図3に示すX軸)、および前後方向(図3に示すZ軸)で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、X軸とY軸(または他の対になった軸)のそれぞれに沿った直線加速度のみを検知する2軸の加速度検出手段を使用してもよい。例えば、この3軸または2軸の加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて3軸または2軸の加速度センサ701が提供されてもよい。
【0044】
当業者には公知であるように、加速度センサ701に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、その2軸または3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【0045】
しかしながら、加速度センサ701から出力される加速度の信号に対して追加の処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な加速度(重力加速度)が検知されると、加速度センサ701からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象(コントローラ7)の傾きを判定することができる。このように、加速度センサ701をマイコン751(または他のプロセッサ)と組み合わせて用いることによって、コントローラ7の傾き、姿勢または位置を判定することができる。同様に、加速度センサ701を備えるコントローラ7が例えば後述するようにユーザの手で動的に加速されて動かされる場合に、加速度センサ701によって生成される加速度信号を処理することによって、コントローラ7のさまざまな動きおよび/または位置を算出することができる。他の実施例では、加速度センサ701は、信号をマイコン42に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサが静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0046】
また、無線モジュール753およびアンテナ754を有する通信部75によって、コントローラ7がワイヤレスコントローラとして機能する。なお、水晶振動子703は、後述するマイコン751の基本クロックを生成する。
【0047】
一方、図5(b)において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。そして、操作ボタン72iが撮像情報演算部74の後方の基板700の下主面上に取り付けられていて、それよりさらに後方に、電池705が収容される。電池705とコネクタ73との間の基板700の下主面上には、バイブレータ704が取り付けられる。このバイブレータ704は、例えば振動モータやソレノイドであってよい。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。
【0048】
次に、図6を参照して、コントローラ7の内部構成について説明する。なお、図6は、コントローラ7の構成を示すブロック図である。
【0049】
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。ここで、モニタ2の表示画面近傍に配置されるマーカ8Lおよび8Rは、モニタ2の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ741を設けることによってマーカ8Lおよび8Rの画像をより正確に撮像することができる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データ(マーカ8Lおよび8Rの撮像画像)を処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。この撮像情報演算部74から出力される処理結果データに基づいて、コントローラ7の位置や動きに応じた信号を得ることができ、当該信号に基づいてモニタ2の画面座標系に基づいた入力座標を得ることができる。つまり、コントローラ7は、撮像情報演算部74から出力される処理結果データによってポインティングデバイスとして機能する。
【0050】
加速度センサ701は、上述したようにコントローラ7の上下方向(Y軸方向)、左右方向(X軸方向)、および前後方向(Z軸方向)の3軸成分に分けてそれぞれ加速度を検知して出力するセンサである。加速度センサ701が検知した3軸成分の加速度を示すデータは、それぞれ通信部75へ出力される。この加速度センサ701から出力される加速度データに基づいて、コントローラ7の動きを判定することができる。なお、加速度センサ701は、特定のアプリケーションで必要なデータに応じて何れか2軸に対してそれぞれ加速度を検出する加速度センサが用いられてもかまわない。
【0051】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。
【0052】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの3軸方向の加速度信号(X、Y、およびZ軸方向加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、X、Y、およびZ軸方向加速度データ、処理結果データ)を受信ユニット6へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から受信ユニット6への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、受信ユニット6への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からのX、Y、およびZ軸方向加速度データ、および撮像情報演算部74からの処理結果データがコントローラ7から送信される。そして、ゲーム装置3の受信ユニット6でその電波信号を受信し、ゲーム装置3で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、X、Y、およびZ軸方向加速度データ、および処理結果データ)を取得する。そして、ゲーム装置3のCPU30は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Bluetooth(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0053】
次に、図7を用いて、本実施形態で想定するゲームの概要について説明する。本実施形態で想定するゲームは、シミュレーションロールプレイングゲーム(以下、SRPGと呼ぶ)であり、特に、戦闘シーンにおける処理を想定している。具体的には、複数のプレイヤユニットと敵ユニットが表示されているマップ画面において、プレイヤは自軍のプレイヤユニットに対して「移動」というコマンドを指示することで、当該プレイヤユニットを所望の位置に移動させることができる。そして、移動先においてプレイヤユニットが敵ユニットに隣接したときは、プレイヤは「戦闘」というコマンドを指示することができる。すると、当該プレイヤユニットが携行している複数の武器(例えば、ぎんの剣、はがねの槍、等)が一覧表示されるので、プレイヤは利用したい武器を選択する。これにより、ゲーム画面がマップ画面から図7に示すような戦闘シーンの画面に切り替わる。
【0054】
図7は、本実施形態で想定する戦闘シーンの画面の一例である。図7において、戦闘シーンでは、3Dの仮想空間が表示される(以下、この仮想空間を戦闘空間と呼ぶ)。そして、当該戦闘空間内においてプレイヤユニットが敵ユニットに攻撃する様子が表示される。この攻撃に合わせ、当該戦闘空間を映している仮想カメラ(視点)も適宜移動する(つまり、カメラワークが行われる)。例えば、仮想カメラは最初はプレイヤユニットの後方に位置している状態で、プレイヤユニットが敵ユニットに飛びかかって攻撃する動きに合わせて、側面に回り込んでいくというカメラワークが行われる。また、別の例としては、最初はプレイヤユニットと敵ユニットの全身が画面に映るよう、ある程度距離を取った位置(カメラを引いた位置)から、プレイヤユニットが敵ユニットに飛びかかって攻撃する動きに合わせてカメラを近づけていくというカメラワークが行われる。ここで、当該カメラワークは、ユニットの種類および使用する武器に応じてそれぞれ異なるカメラワークが予め用意されているものとする。例えば、ユニットの種類が「剣士」で、上記攻撃に使用した武器が「ぎんの剣」の場合は、上述したような後ろから側面に回り込むカメラワークが行われ、ユニットの種類が「騎士」で、使用武器が「はがねの槍」であるときは、上述したような、カメラを引いた状態から徐々にユニットに近づけていくというカメラワークが行われる。
【0055】
上記カメラワークの際、例えば、後方から側面に回り込む際に、仮想カメラとプレイヤユニットとの間に木のオブジェクトがあるとする。そして、当該木のオブジェクトの位置が、プレイヤユニットの攻撃が丁度敵ユニットに当たる際に仮想カメラの前に来るような位置にあると、攻撃が当たる瞬間が木に遮られて見えなくなる。同様に、カメラを引いた状態から徐々に近づけていく際に、途中に木のオブジェクトがあると、この木に遮られて、プレイヤユニットの一連の攻撃動作について、一部分見えなくなることもある。特に、必殺技などで攻撃の動作に特殊なモーションを用いている場合は、当該モーションを全て見ることができなくなる。つまり、プレイヤユニット(あるいは敵ユニット)の攻撃動作が、木のオブジェクト(障害物)に遮られて、一部見えなくなることがある。そのため、本実施形態では、カメラワークの結果、上記木のオブジェクトが画面の中央付近に入り、プレイヤユニットが見えなくなるような位置に来ると、当該木のオブジェクトを徐々に透明にさせて、ユニットの動きがプレイヤに見えるようにする処理が行われる。
【0056】
次に、上記透明にさせる処理の概要を図8〜図15を用いて説明する。図8は、本実施形態における透明処理を行う前の上記戦闘空間の画面の一例である(説明をわかりやすくするため、上記プレイヤユニットや敵ユニット等の表示は省略する)。この画面では、木のオブジェクトが3つ表示されている。そして、画面中央の一番手前に写っている木81を、プレイヤの視界を遮る障害物であるとして透明にしていく。このために、本実施形態では、まず、バウンディングボックスと呼ばれる領域を設定する。バウンディングボックスとは、図9に示すような、戦闘空間内に配置されている各オブジェクト(ここでは、木81)が収まるような(望ましくは最小の)大きさの、六面体の領域である。なお、図9では説明をわかりやすくするためにバウンディングボックス91を表示しているが、実際の戦闘画面では、バウンディングボックス91は表示されない。
【0057】
次に、バウンディングボックスとは別に、仮想カメラのニアクリップ面から奥行き方向に向かって所定の距離のところに境界面を設ける。そして、当該境界面よりも手前側(仮想カメラ側)に上記バウンディングボックスがきた場合、そのバウンディングボックスで囲まれている建物オブジェクトについて、透明処理を行う。図10は、当該バウンディングボックスと境界面との関係を説明するための図である。図10においては、仮想カメラ101のニアクリップ面から所定の距離のところに、境界面102が設けられている。また、ここでは、一例として、5つのバウンディングボックス91A〜91Eが戦闘空間内に配置されている。これらのうち、バウンディングボックス91Eは、その全体が境界面より仮想カメラ側に位置している。また、バウンディングボックス91Dは、境界面をまたがる形で位置しており、その一部分だけが境界面より仮想カメラ側に位置している。一方、バウンディングボックス91A〜91Cはそれぞれ、その全体が境界面より奥行き側に位置している。このような場合、境界面102より奥行き側のバウンディングボックス91A〜91Cに対応するオブジェクトについては、透明処理の対象とはしない。一方、境界面102より仮想カメラ側にあるバウンディングボックス91Eに対応するオブジェクトついては、透明処理の対象とする。また、境界面102をまたがって位置しているバウンディングボックス91Dに対応するオブジェクトについても、透明処理の対象とする。つまり、バウンディングボックスの一部分でも境界面を越えて仮想カメラ寄りに来れば、当該バウンディングボックスが設定されているオブジェクトを透明処理の対象とする。
【0058】
また、上記バウンディングボックスが境界面102を越えたらすぐに透明処理を開始するのではなく、更に、境界面を越えたバウンディングボックスが画面の中央付近に位置するか否かを判定する。そして、中央付近に位置するバウンディングボックスが設定されているオブジェクトのみ、透明処理の対象とする。これは、上記境界面より手前であっても、画面の端のほうに表示されるような位置にある場合は、必ずしもプレイヤの視界の妨げとはならないからである。
【0059】
上記画面中央に位置するか否かの判定方法として、次のような方法を用いる。まず、上記戦闘空間を仮想カメラ位置を基準として透視変換して得られる2次元画像の座標系(画面座標系)において、図11に示すような、当該2次元画像の中央を含む所定の大きさの領域111(以下、中央領域と呼ぶ)を設定する。次に、同じく画面座標系において、上記配置オブジェクトのそれぞれについて、図12に示すような、矩形領域121を設定する。この矩形領域は、上記バウンディングボックスに基づいて構成される領域であり、当該バウンディングボックスを完全に覆うような(望ましくは最小の)大きさを有している。そして、図13に示すように、上記矩形領域121が中央領域111に重なるときは、当該矩形領域121の設定されている木81は透明処理の対象とし、重ならないときは透明処理の対象外とする。
【0060】
つまり、上述の処理をまとめると、まず、3D座標系において、境界面102より手前側にバウンディングボックス91が来ているか否かを判定する。次に、境界面102の手前に来ているものについては、更に、2D座標系において、画面中央付近に位置するかどうかを判定する。その結果、境界面102より手前側に来ており、かつ、画面中央付近に位置するオブジェクトのみを、透明処理の対象とする。
【0061】
また、透明とする処理についても、すぐに透明にする(透明度を100%にする)のではなく、1フレーム毎に一定値ずつ透明度を高めていくようにする。これにより、図14に示すように、木81が徐々に透明になっていき、最終的に図15に示すように、完全に透明な状態となり、その後方の景色が見えるようになる。これにより、急に木が消えてしまうという違和感をプレイヤに与えることを防ぐことが可能となる。
【0062】
次に、本実施形態で用いられる各種データについて説明する。図16は、図2に示したメインメモリ33のメモリマップを示す図解図である。図2において、メインメモリ33は、ゲームプログラム記憶領域330およびデータ記憶領域333を含む。
【0063】
ゲームプログラム記憶領域330は、CPU30によって実行されるゲームプログラムを記憶し、このゲームプログラムは、ゲームメイン処理プログラム331と、戦闘シーンプログラム332などによって構成される。
【0064】
ゲームメイン処理プログラム331は、本実施形態に係る処理全体を制御するためのプログラムである。戦闘シーンプログラム332は、上述したような戦闘シーンを表示するためのプログラムである。
【0065】
データ記憶領域333には、戦闘空間データ334、配置オブジェクトデータ335、ユニットデータ336、武器データ337、カメラワークデータ338、中央領域データ339、および画像データ340等が記憶される。なお、メインメモリ33には、図16に示す情報に含まれるデータの他、ゲームに登場する他のオブジェクトに関するデータ(マップ画面データ等)や仮想ゲーム空間に関するデータ(地形データ等)等、ゲーム処理に必要なデータが記憶される。
【0066】
戦闘空間データ334は、戦闘空間内に配置されるオブジェクト(以下、配置オブジェクト)に関する情報(どの配置オブジェクトを戦闘空間内のどの位置に配置するかについての情報)や、使用する背景やBGM等についての情報を含む。ここで、戦闘空間は、戦闘を仕掛けたユニットのマップ画面上の場所に応じて、その内容が異なる。例えば、マップ画面上で「森」として設定されている場所で戦闘を仕掛けたときは、戦闘空間も「森」をイメージした背景が表示され、配置オブジェクトも「木」オブジェクト等の、「森」の雰囲気をプレイヤに伝えることができるようなオブジェクトが配置される。また、「街」であれば、配置オブジェクトとしては、「家」や「商店」などの、街中で戦闘を行っていることをプレイヤに伝えることができるようなオブジェクトが配置される。
【0067】
配置オブジェクトデータ335は、上記戦闘空間に配置される少なくとも1つ以上の配置オブジェクトのデータ群である。配置オブジェクト1つ分のデータ、例えば、配置オブジェクト3351には、上記バウンディングボックスの頂点座標等を示すバウンディングボックスデータ3351a、および、後述する処理で用いられる透明フラグ3351bが含まれる。その他、「木」や「家」等の、各オブジェクト自身のポリゴンモデルデータも含まれている。
【0068】
ユニットデータ336は、ゲーム中に登場する各種ユニットのデータである。各ユニットのポリゴンモデルデータや、HPや攻撃力等のユニットパラメータを含む。
【0069】
武器データ337は、戦闘シーンで使用する武器についてのデータである。各種武器のポリゴンモデルデータや攻撃力・使用回数等の武器パラメータを含んでいる。
【0070】
カメラワークデータ338は、上述したような、戦闘シーンにおける仮想カメラの動き方についてのデータである。つまり、戦闘シーン中の、どのフレームではどの位置からどの向きで撮るか、について定義したデータである。カメラワークデータ338には、上述したように、ユニットの種類および戦闘シーンで使用する武器の組み合わせに対応した複数のデータが含まれている。
【0071】
中央領域データ339は、図11を用いて説明した上記中央領域111の画面座標系における位置および大きさについてのデータである。
【0072】
画像データ340は、上記配置オブジェクトデータ335や、ユニットデータ336や、武器データ337や、背景オブジェクト等についての画像データ(テクスチャデータ)である。
【0073】
次に、図17〜図19を参照して、ゲーム装置3によって実行されるゲーム処理について説明する。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU30は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ33等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ33に読み込まれ、CPU30によって当該ゲームプログラムの実行が開始される。その結果、GPU32を介してモニタ2にゲーム画像が表示されることによって、ゲームが開始される。図17に示すフローチャートは、ゲーム画像が戦闘シーンに切り替わった後におけるゲーム処理を示す。つまり、ゲーム開始後、マップ画面でプレイヤユニットに「戦闘」の指示を出すと、戦闘結果の計算が先に行われ、その結果を戦闘シーンとしてゲーム画像で表示するために、図17に示すフローチャートの処理が行われる(換言すれば、戦闘シーンは戦闘結果の再生画面といえる)。なお、本実施形態においては、戦闘シーン以外の状況におけるゲーム処理は本発明と直接関係しないので、説明を省略する。また、図17に示すステップS5〜ステップS10の処理ループは、1フレーム毎に繰り返し実行される。
【0074】
図17において、まず、CPU30は、戦闘を行ったユニットのマップ画面上の位置(地形)に応じて、戦闘空間データ334を読み込む(ステップS1)。例えば、「森」で戦闘を行ったときは、「森」用の戦闘空間データが読み込まれる。また、このとき、図11を用いて説明した上記中央領域111についてのデータである、中央領域データ339も読み込まれる。
【0075】
次に、CPU30は、ステップS1で読み込んだ戦闘空間データに基づいて、必要となる配置オブジェクトデータ335を読み込み、必要となる配置オブジェクトを戦闘空間内に配置していく(ステップS2)。このとき、各配置オブジェクトのデータに含まれているバウンディングボックスデータに基づいて、当該配置オブジェクトそれぞれについて、バウンディングボックスを設定する(但し、当該バウンディングボックスは、画面上には表示されない)。また、各配置オブジェクトには、それぞれ一意に識別可能なIDが割り振られる。
【0076】
次に、CPU30は、上記戦闘を行ったユニットのユニットデータ336および武器データ337を読み込み、武器を持った状態のユニット(正確にはそのポリゴンモデル)を戦闘空間内に配置する(ステップS3)。
【0077】
次に、CPU30は、上記戦闘を行ったユニットおよび使用した武器に応じたカメラワークデータ338を読み込む(ステップS4)。
【0078】
次に、CPU30は、上記算出された戦闘結果に基づいて、ユニットを動作させる(ステップS5)。つまり、戦闘結果に基づいたモーション(例えば、武器が剣の場合は、飛び上がって敵ユニットに斬りかかるという、攻撃モーション)が表示されるように、ユニットのポーズを適宜変更し、当該ユニットの位置を移動させる。
【0079】
次に、CPU30は、上記ステップS4で読み込んだカメラワークデータ338に基づいて、仮想カメラの位置や向き、画角等を設定する(ステップS6)。このとき、上述したような、仮想カメラのニアクリップ面から奥行き方向に向かって所定の距離の位置に、当該仮想カメラの視線と直交するような境界面(図10参照)を設定する。
【0080】
次に、CPU30は、上記配置オブジェクトのそれぞれについて、透明処理を行うか否かを判定するための透明対象判定処理を行う(ステップS7)。この処理では、上述したように、仮想カメラのニアクリップ面に対して所定の距離内に(つまり、上記境界面の手前側に)配置オブジェクトが位置しているかどうかを判定する。更に、画面の中央付近に配置オブジェクトが位置するかを判定して、戦闘空間内の各配置オブジェクトについて透明対象にするか否かを判定する。
【0081】
図18は、上記ステップS7で示した透明対象判定処理の詳細を示すフローチャートである。図18において、まず、CPU30は、まだ透明対象判定の終わっていない配置オブジェクトの中から1つ選び、当該選んだ配置オブジェクトに設定されているバウンディングボックスの8つの頂点の座標を取得する(ステップS21)。ここでは、図16の配置オブジェクト3351が選ばれたものとして説明する。
【0082】
次に、CPU30は、当該8頂点のうち、いずれか1つでも境界面を越えているかを判定する(ステップS22)。すなわち、仮想カメラの位置を原点とし、視線方向(仮想カメラの撮影方向)をZ軸の正方向としたカメラ座標系において、上記8頂点の座標のZ軸の値のうち、いずれか一つでも境界面の座標のZ軸の値未満であれば、当該配置オブジェクト3351は上記所定の距離内にあると判定し、8頂点全てが境界面の座標のZ軸の値以上であれば、上記所定の距離内には入っていないと判定する。
【0083】
ステップS22の判定の結果、上記配置オブジェクト3351が境界面より仮想カメラ側に位置していないときは(ステップS22でNO)、CPU30は、処理を後述のステップS26に進める。一方、上記配置オブジェクト3351が境界面を越え、仮想カメラ側に位置しているときは(ステップS22でYES)、CPU30は、上記戦闘空間を透視変換して、作業用の2次元画像を一時的に生成する(ここでは少なくともバウンディングボックスさえ描画すればよい)。そして、当該2次元画像における上記配置オブジェクト3351のバウンディングボックスの8頂点の座標に基づき、当該2次元画像において当該バウンディングボックスを完全に覆うような矩形領域121(図12参照)を決定し、その位置を示す情報をメインメモリ33の任意の記憶領域に記憶する(ステップS23)。
【0084】
次に、CPU30は、ステップS1で読み込んだ中央領域データ339に基づいて中央領域111を上記2次元画像上に設定する。そして、当該中央領域111と上記矩形領域121とが重複しているか否か(図13参照)を、双方の領域の位置情報に基づいて判定する(ステップS24)。当該判定の結果、重複していなければ(ステップS24でNO)、当該矩形領域121に対応する配置オブジェクト3351の透明フラグ3351bをオフに設定する(ステップS26)。一方、重複していれば(ステップS24でYES)、当該配置オブジェクトの透明フラグ3351bをオンに設定する(ステップS25)。
【0085】
次に、CPU30は、戦闘空間内の全ての配置オブジェクトについて上述したステップS21〜S26の処理を行ったか否かを判定する(ステップS27)。当該判定の結果、まだ未判定の配置オブジェクトが残っていれば(ステップS27でNO)、CPU30は、上記ステップS21に戻って処理を繰り返す。一方、全ての配置オブジェクトについて上記のような処理が終わっていれば(ステップS27でYES)、当該透明対象判定処理を終了する。
【0086】
図17に戻り、次に、CPU30は、実際に上記配置オブジェクトを透明にするための透明処理を行う(ステップS8)。図19は、上記ステップS8で示した透明処理の詳細を示すフローチャートである。図19において、まず、CPU30は、当該透明処理がまだ行われていない配置オブジェクトの中から一つ処理対象を選び、当該選んだ配置オブジェクトの透明フラグがオンに設定されているか否かを判定する(ステップS31)。ここでも、便宜上、図16の配置オブジェクト3351が選ばれたとして説明する。当該判定の結果、透明フラグ3351bがオンであれば(ステップS31でYES)、次に、当該配置オブジェクト3351の透明度が100%(すなわち、完全に透明)になっているか否かを判定する(ステップS32)。具体的には、当該配置オブジェクト3351に設定されているパラメータの一つであるアルファ値(透明度を示すパラメータ;図示せず)が0であるか否かを判定する。当該判定の結果、アルファ値が0(すなわち、透明度が100%)であれば(ステップS32でYES)、CPU30は、処理を後述のステップS36に進める。一方、アルファ値が0でない(すなわち、透明度が100%ではない)ときは、CPU30は、当該配置オブジェクト3351のアルファ値(より正確には、配置オブジェクト3351を構成する各画素のアルファ値)を所定の値だけ下げる(ステップS33)。つまり、透明度を上げる。そして、CPU30は処理をステップS36へと進める。
【0087】
一方、上記ステップS31の判定の結果、上記選択した配置オブジェクト3351の透明フラグ3351bがオンではないときは(ステップS31でNO)、CPU30は、当該配置オブジェクト3351の透明度が0%(すなわち、完全に不透明)になっているか否かを判定する(ステップS34)。これは、カメラワークの結果、一旦透明にしたオブジェクトが、その後境界面より奥行き側に位置した場合(プレイヤの視界を遮らないような位置に来た場合)に、透明にしたオブジェクトを元の状態(不透明な状態)に戻すために行われる処理である。上記ステップS34においては、具体的には、上記アルファ値が255であるか否かを判定する。当該判定の結果、アルファ値が255(すなわち、透明度が0%)であれば(ステップS34でYES)、CPU30は、処理を後述のステップS36に進める。一方、アルファ値が255でない(すなわち、透明度が0%ではない)ときは、CPU30は、当該配置オブジェクト3351のアルファ値を所定の値だけ上げる(ステップS35)。つまり、透明度を下げる。そして、CPU30は処理をステップS36へと進める。
【0088】
次に、CPU30は、戦闘空間内の全ての配置オブジェクトについて上述したステップS31〜S35の処理を行ったか否かを判定する(ステップS36)。当該判定の結果、まだ未処理の配置オブジェクトが残っていれば(ステップS36でNO)、CPU30は、上記ステップS31に戻って処理を繰り返す。一方、全ての配置オブジェクトについて上記のような処理が終わっていれば(ステップS36でYES)、当該透明処理を終了する。
【0089】
図17に戻り、ステップS8の透明処理が終われば、次にCPU30は、戦闘空間を画面に表示するための描画処理を行う(ステップS9)。すなわち、仮想カメラで戦闘空間を撮影した画像を生成して、ゲーム画像としてモニタ2に表示する処理がされる。その結果、上記透明処理の結果が反映された画像が画面に表示される。ステップS9の後、ステップS10において、戦闘シーン終了か否かが判断され、YESの場合、ゲーム処理を終了し、NOの場合、ステップS5に戻って、ゲーム処理を繰り返す。なお、戦闘シーン終了か否かの判定は、例えば、予め戦闘シーン用として定義されている所定のフレーム数だけ上述の処理ループが繰り返されたか等で判定される。
【0090】
このように、本実施形態では、仮想空間内において仮想カメラ(仮想空間内における視点)から所定の距離以内にオブジェクトがあるときは、当該オブジェクトを1フレーム毎に徐々に透過させていく。これにより、プレイヤの視界を遮るような障害物が急に消えてしまうといった違和感、不自然さをプレイヤに与えることを防ぐことができる。特に、従来のように距離に応じて透明度を変化させるのではなく、単位時間毎に透明度を変化させていくため、たとえ障害物が急に目の前(距離がニアクリップ面から0に近い位置)に現れたとしても、当該障害物が急に消えてしまうことを防ぎ、徐々に当該障害物を透明にしていく様を表現できる。
【0091】
また、例えばゲームの開発者が、仮想カメラのカメラワークを定義する場合において、障害物の存在を意識しながらカメラワークを考えるといった煩わしさを軽減することが可能となる。また、仮想カメラから所定距離内にオブジェクトが来たときに、すぐに透明させるのではなく、更に、画面座標系において画面の中央付近に位置するものだけを透明させている。そのため、プレイヤの視界を遮る最低限の障害物のみを、より効率的に透明させることができる。また、バウンディングボックスという単純な3Dモデルをオブジェクト毎に設け、その8頂点の座標を用いて、各オブジェクトが仮想カメラから所定距離内であるかどうかを計算するため、オブジェクトが多数のポリゴンから成る複雑な形状である場合でも比較的単純な計算処理だけで透明対象の判定を行うことができ、CPUの処理負荷を軽減することが可能となる。
【0092】
なお、上述した実施形態では、SRPGの戦闘シーンを例として説明したが、上述したような透明処理を用いる場面がSRPGの戦闘シーンだけに限らないことはいうまでもない。仮想ゲーム空間を3Dで表示するゲームであれば、アクションゲームやレースゲーム等にも上述の処理を用いることができる。
【0093】
また、上記バウンディングボックス91や中央領域111の位置および大きさについて、上述の実施形態では予めデータとして用意されていた(すなわち、ゲーム処理の実行時に光ディスク4からメインメモリ33にロードされていた)が、これに限らず、ゲーム処理の実行開始時または必要に応じてその都度バウンディングボックス91や中央領域111の位置および大きさをCPU30が演算によって求めるようにしてもよい。
【0094】
また、上記バウンディングボックスの形状に関して、上述の実施形態では六面体の場合を例として説明したが、バウンディングボックスの形状は、これに限る物ではない。例えば、球体であってもよい。但し、処理負荷の観点から、単純な形状であることが好ましい。バウンディングボックスを球体とする場合は、上述の8頂点を用いて境界面を越えたか否かを判定する代わりに、当該球体の半径内に境界面があるか否かを判定するようにすればよい。これにより、処理負荷の軽減が可能となる。なお、CPU30の処理能力が十分に余裕がある場合には、オブジェクトが仮想カメラに接近したかどうかをバウンディングボックスを用いずに(すなわちオブジェクトを構成する各ポリゴンの頂点の座標に基づいて)判定するようにしてもよい。
【0095】
また、上記中央領域111の位置について、上述の実施形態では、画面の中央を含む所定の領域に設定していたが、これに限らず、画面の中央を含まない任意の領域(例えば、画面の左端領域や右端領域等)に設定してもよい。このようにすれば、画面の端の方のオブジェクトのみを透過処理の対象とし、画面の中央部分のオブジェクトをあえて透過処理の対象としないことにより、画面の中央部分の視界が遮られることになり、ゲームの難易度を上げるといったようなことができる。
【0096】
また、上記実施例では、境界面を平面としていたが、これに限らず、曲面等であってもよい。このようにすれば、ニアクリップ面から境界面までの距離を画面の位置に応じて可変にすることができるので、例えば、ニアクリップ面から境界面までの距離が画面の中心位置で最も大きく、画面の中心位置から離れるに従ってその距離が小さくなるといったような境界面を設けることができる。
【0097】
また、上記実施形態では、カメラワークを行うことで、仮想カメラの位置等を1フレーム毎に変更していた。これに限らず、仮想カメラの位置を固定しておき、オブジェクトを適宜移動させることで、あたかも仮想カメラ自身が移動しているように表現するようしてもよい。そして、上述のように、オブジェクトが移動した結果、境界面を越えたときは、当該オブジェクトを透明にしていくようにしてもよい。
【産業上の利用可能性】
【0098】
本発明にかかるゲームプログラムおよびゲーム装置は、仮想空間内のオブジェクトについて、プレイヤ等に違和感を与えずに透明処理を行うことができ、仮想空間の様子を表示するゲームや、画像生成処理装置等の用途に有用である。
【図面の簡単な説明】
【0099】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置3の機能ブロック図
【図3】図1のコントローラ7の上面後方から見た斜視図
【図4】図1のコントローラ7を下面後方から見た斜視図
【図5】図1のコントローラ7の上筐体を外した状態を示す斜視図
【図6】図1のコントローラ7の構成を示すブロック図
【図7】本実施形態で想定する戦闘シーンの画面の一例
【図8】透明処理を行う前の上記戦闘空間の画面の一例
【図9】バウンディングボックスを説明するための図
【図10】バウンディングボックスと境界面との関係を説明するための図
【図11】中央領域を説明するための図
【図12】矩形領域を設定するための図
【図13】矩形領域が中央領域に重なっていることを示すための図
【図14】透明処理途中の画面の一例
【図15】透明処理後の画面の一例
【図16】メインメモリ33のメモリマップを示す図解図
【図17】本発明の実施形態に係るゲーム処理を示すフローチャート
【図18】図17のステップS7で示した透明対象判定処理の詳細を示したフローチャート
【図19】図17のステップS8で示した透明処理の詳細を示すフローチャート
【符号の説明】
【0100】
1…ゲームシステム
2…モニタ
2a…スピーカ
3…ゲーム装置
30…CPU
31…メモリコントローラ
32…GPU
33…メインメモリ
34…DSP
35…ARAM
36…コントローラI/F
37…ビデオI/F
38…外部メモリI/F
39…オーディオI/F
40…ディスクドライブ
41…ディスクI/F
4…光ディスク
5…外部メモリカード
6…受信ユニット
7…コントローラ
71…ハウジング
72…操作部
73…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701…加速度センサ
702…LED
703…水晶振動子
704…バイブレータ
705…電池


【特許請求の範囲】
【請求項1】
仮想空間内において当該仮想空間に存在する少なくとも1つ以上のオブジェクトを所定の視点から観察した際に得られる仮想画像を表示装置の画面に表示するためのゲームプログラムであって、
ゲーム装置のコンピュータに、
前記ゲーム装置の記憶手段に記憶されている前記視点の位置を示す情報または前記各オブジェクトの位置を示す情報の少なくとも一方を変化させることによって、前記視点に対する前記各オブジェクトの相対位置を変化させる相対位置変化ステップと、
前記視点の位置を示す情報と前記各オブジェクトの位置を示す情報とを参照して、前記仮想空間内における前記視点から前記各オブジェクトまでの距離がそれぞれ所定距離以下であるか否かを判定する距離判定ステップと、
前記距離判定ステップにおいて前記距離が所定距離以下と判定されたオブジェクトについて、当該オブジェクトの透明度が徐々に増すように、前記ゲーム装置の記憶手段に記憶されている当該オブジェクトの透明度を示す情報を単位時間毎に更新する透明度変更ステップと、
前記透明度を示す情報を参照して前記オブジェクトを含む仮想画像を描画する描画ステップとを実行させる、ゲームプログラム。
【請求項2】
前記距離判定ステップは、各オブジェクトについて、当該オブジェクトを内包するように設定された当該オブジェクトの当たり領域の少なくとも一部が、前記視点から前記所定距離だけ離れた位置に当該視点からの視線と直交するように設定された境界面よりも前記視点側に位置しているか否かをそれぞれ判定し、
前記透明度変更ステップは、前記距離判定ステップにおいて前記当たり領域の少なくとも一部が前記境界面よりも前記視点側に位置していると判定されたオブジェクトについて、当該オブジェクトの透明度が徐々に増すように当該オブジェクトの透明度を示す値を単位時間毎に更新する、請求項1に記載のゲームプログラム。
【請求項3】
前記当たり領域の形状は、8つの頂点を有する六面体であり、
前記距離判定ステップは、前記8つの頂点の少なくとも1つが前記境界面よりも前記視点側にあるときに、当該当たり領域が設定されているオブジェクトについて、前記距離が前記所定距離以下であると判定する、請求項2に記載のゲームプログラム。
【請求項4】
前記ゲームプログラムは、
前記オブジェクトを含む仮想空間を前記視点を基準として透視変換することで得られる2次元画像において、前記視点からの距離が所定距離以下であるオブジェクトの少なくとも一部が当該2次元画像の中央を含む所定範囲内に表示されているか否かを判定する、中央表示判定ステップを更に前記コンピュータに実行させ、
前記透明度変更ステップは、前記中央表示判定ステップにおいてその少なくとも一部が前記2次元画像の中央を含む所定範囲内に表示されていると判定されたオブジェクトについてのみ、当該オブジェクトの前記透明度を示す情報を単位時間毎に更新する、請求項1に記載のゲームプログラム。
【請求項5】
前記中央表示判定ステップの判定に用いられる前記2次元画像の中央を含む所定範囲が、矩形領域であることを特徴とする、請求項4に記載のゲームプログラム。
【請求項6】
前記視点からの距離が所定距離以下であるオブジェクトを囲むような矩形領域であるオブジェクト領域を前記2次元画像において設定するオブジェクト領域設定ステップを更に前記コンピュータに実行させ、
前記中央表示判定ステップは、前記オブジェクト領域の少なくとも一部が前記2次元画像の中央を含む矩形領域と重なったときに、当該オブジェクト領域が設定されたオブジェクトは前記2次元画像の中央を含む所定範囲内に表示されていると判定する、請求項5に記載のゲームプログラム。
【請求項7】
前記透明度変更ステップは、前記透明度を示す情報を更新した後、前記距離判定ステップにおいて当該透明度を示す情報が更新されたオブジェクトの前記距離が所定距離以下ではないと判定されたときは、当該オブジェクトの不透明度が徐々に増すように当該オブジェクトの透明度を示す情報を単位時間毎に更新する、請求項1に記載のゲームプログラム。
【請求項8】
仮想空間内において当該仮想空間に存在する少なくとも1つ以上のオブジェクトを所定の視点から観察した際に得られる仮想画像を表示装置の画面に表示するゲーム装置であって、
記憶部と、
前記記憶部に記憶されている前記視点の位置を示す情報または前記各オブジェクトの位置を示す情報の少なくとも一方を変化させることによって、前記視点に対する前記各オブジェクトの相対位置を変化させる相対位置変化部と、
前記視点の位置を示す情報または前記各オブジェクトの位置を示す情報を参照して、前記仮想空間内における前記視点から前記各オブジェクトまでの距離がそれぞれ所定距離以下であるか否かを単位時間毎に判定する距離判定部と、
前記距離判定部が前記距離が所定距離以下と判定したオブジェクトについて、当該オブジェクトの透明度が徐々に増すように、前記記憶手段に記憶されている当該オブジェクトの透明度を示す情報を単位時間毎に更新する透明度変更部と、
前記透明度を示す情報を参照して前記オブジェクトを含む仮想画像を描画する描画部とを備える、ゲーム装置。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2008−43589(P2008−43589A)
【公開日】平成20年2月28日(2008.2.28)
【国際特許分類】
【出願番号】特願2006−223287(P2006−223287)
【出願日】平成18年8月18日(2006.8.18)
【出願人】(000233778)任天堂株式会社 (1,115)
【出願人】(397037890)株式会社インテリジェントシステムズ (14)
【Fターム(参考)】