(57)【要約】【課題】プレイヤの視界を遮るオブジェクトが突然透明になることでプレイヤに与える違和感や不自然さを防ぎながら、当該オブジェクトで視界が遮られることを防ぐことのできるゲームプログラムおよびゲーム装置を提供すること。【解決手段】ゲーム装置の記憶手段に記憶されている視点の位置を示す情報または各オブジェクトの位置を示す情報の少なくとも一方を変化させることによって、視点に対する各オブジェクトの相対位置を変化させる。次に、視点の位置を示す情報と各オブジェクトの位置を示す情報とを参照して、仮想空間内における視点から各オブジェクトまでの距離がそれぞれ所定距離以下であるか否かを判定する。次に、所定距離以下と判定されたオブジェクトについて、当該オブジェクトの透明度が徐々に増すように、当該オブジェクトの透明度を示す情報を単位時間毎に更新する。そして、透明度を示す情報を参照してオブジェクトを含む仮想画像を描画する。【選択図】図１７
2008043589.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間内において当該仮想空間に存在する少なくとも１つ以上のオブジェクトを所定の視点から観察した際に得られる仮想画像を表示装置の画面に表示するためのゲームプログラムであって、
ゲーム装置のコンピュータに、
前記ゲーム装置の記憶手段に記憶されている前記視点の位置を示す情報または前記各オブジェクトの位置を示す情報の少なくとも一方を変化させることによって、前記視点に対する前記各オブジェクトの相対位置を変化させる相対位置変化ステップと、
前記視点の位置を示す情報と前記各オブジェクトの位置を示す情報とを参照して、前記仮想空間内における前記視点から前記各オブジェクトまでの距離がそれぞれ所定距離以下であるか否かを判定する距離判定ステップと、
前記距離判定ステップにおいて前記距離が所定距離以下と判定されたオブジェクトについて、当該オブジェクトの透明度が徐々に増すように、前記ゲーム装置の記憶手段に記憶されている当該オブジェクトの透明度を示す情報を単位時間毎に更新する透明度変更ステップと、
前記透明度を示す情報を参照して前記オブジェクトを含む仮想画像を描画する描画ステップとを実行させる、ゲームプログラム。
【請求項２】
前記距離判定ステップは、各オブジェクトについて、当該オブジェクトを内包するように設定された当該オブジェクトの当たり領域の少なくとも一部が、前記視点から前記所定距離だけ離れた位置に当該視点からの視線と直交するように設定された境界面よりも前記視点側に位置しているか否かをそれぞれ判定し、
前記透明度変更ステップは、前記距離判定ステップにおいて前記当たり領域の少なくとも一部が前記境界面よりも前記視点側に位置していると判定されたオブジェクトについて、当該オブジェクトの透明度が徐々に増すように当該オブジェクトの透明度を示す値を単位時間毎に更新する、請求項１に記載のゲームプログラム。
【請求項３】
前記当たり領域の形状は、８つの頂点を有する六面体であり、
前記距離判定ステップは、前記８つの頂点の少なくとも１つが前記境界面よりも前記視点側にあるときに、当該当たり領域が設定されているオブジェクトについて、前記距離が前記所定距離以下であると判定する、請求項２に記載のゲームプログラム。
【請求項４】
前記ゲームプログラムは、
前記オブジェクトを含む仮想空間を前記視点を基準として透視変換することで得られる２次元画像において、前記視点からの距離が所定距離以下であるオブジェクトの少なくとも一部が当該２次元画像の中央を含む所定範囲内に表示されているか否かを判定する、中央表示判定ステップを更に前記コンピュータに実行させ、
前記透明度変更ステップは、前記中央表示判定ステップにおいてその少なくとも一部が前記２次元画像の中央を含む所定範囲内に表示されていると判定されたオブジェクトについてのみ、当該オブジェクトの前記透明度を示す情報を単位時間毎に更新する、請求項１に記載のゲームプログラム。
【請求項５】
前記中央表示判定ステップの判定に用いられる前記２次元画像の中央を含む所定範囲が、矩形領域であることを特徴とする、請求項４に記載のゲームプログラム。
【請求項６】
前記視点からの距離が所定距離以下であるオブジェクトを囲むような矩形領域であるオブジェクト領域を前記２次元画像において設定するオブジェクト領域設定ステップを更に前記コンピュータに実行させ、
前記中央表示判定ステップは、前記オブジェクト領域の少なくとも一部が前記２次元画像の中央を含む矩形領域と重なったときに、当該オブジェクト領域が設定されたオブジェクトは前記２次元画像の中央を含む所定範囲内に表示されていると判定する、請求項５に記載のゲームプログラム。
【請求項７】
前記透明度変更ステップは、前記透明度を示す情報を更新した後、前記距離判定ステップにおいて当該透明度を示す情報が更新されたオブジェクトの前記距離が所定距離以下ではないと判定されたときは、当該オブジェクトの不透明度が徐々に増すように当該オブジェクトの透明度を示す情報を単位時間毎に更新する、請求項１に記載のゲームプログラム。
【請求項８】
仮想空間内において当該仮想空間に存在する少なくとも１つ以上のオブジェクトを所定の視点から観察した際に得られる仮想画像を表示装置の画面に表示するゲーム装置であって、
記憶部と、
前記記憶部に記憶されている前記視点の位置を示す情報または前記各オブジェクトの位置を示す情報の少なくとも一方を変化させることによって、前記視点に対する前記各オブジェクトの相対位置を変化させる相対位置変化部と、
前記視点の位置を示す情報または前記各オブジェクトの位置を示す情報を参照して、前記仮想空間内における前記視点から前記各オブジェクトまでの距離がそれぞれ所定距離以下であるか否かを単位時間毎に判定する距離判定部と、
前記距離判定部が前記距離が所定距離以下と判定したオブジェクトについて、当該オブジェクトの透明度が徐々に増すように、前記記憶手段に記憶されている当該オブジェクトの透明度を示す情報を単位時間毎に更新する透明度変更部と、
前記透明度を示す情報を参照して前記オブジェクトを含む仮想画像を描画する描画部とを備える、ゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想空間内において当該仮想空間に存在する少なくとも１つ以上のオブジェクトを所定の視点から観察した際に得られる仮想画像を表示装置の画面に表示するためのゲームプログラムおよびゲーム装置に関する。
【背景技術】
【０００２】
近年、ゲームシステムに含まれるコンピュータの高性能化に伴い、３次元コンピュータグラフィックス技術を利用した３次元ゲームが増えている。３次元ゲームでは、キャラクタオブジェクトや建物オブジェクト等のポリゴンによって構成されるオブジェクトを３次元のゲーム空間に配置し、所定の視点によってそのゲーム空間内の様子を３次元ゲーム画面として表示している。多くの場合、プレイヤに自己の操作するプレイヤキャラクタオブジェクト（以下、単にプレイヤキャラクタと呼ぶ）を認識させるために、上記所定の視点は、プレイヤキャラクタに向けられる。この際、上記所定の視点はプレイヤキャラクタと一定の位置関係を有しながら移動するため、時としてプレイヤキャラクタを観察する視線の間に障害物が入り込む場合がある。そこで、このような場合に、当該障害物を透明あるいは半透明にする技術が開示されている。
【０００３】
例えば、上記所定の視点から見て障害物がプレイヤキャラクタを隠している状態であるかどうか判定し、隠している状態であると判定したときに当該障害物の透過処理を行う画像生成装置が開示されている（例えば、特許文献１）。また、ゲーム空間内において、プレイヤキャラクタが壁や床によって隠される位置にいるときは、当該壁や床を透過させるゲーム装置が開示されている（例えば、特許文献２）。また、上記所定の視点からの奥行き方向の距離に応じてゲーム空間を複数の領域に分割し、当該分割された各領域毎に不透明度を設定して、各領域に含まれる画素に関して当該不透明度を用いて半透明合成するゲーム装置が開示されている（例えば、特許文献３）。さらに、上記所定の視点から各オブジェクトの各画素（ドット）単位までの距離に応じて各画素の透明度を設定するゲーム装置も開示されている（例えば、特許文献４）。
【特許文献１】特開平９−５０５４１号公報
【特許文献２】特開平９−２９９６１３号公報
【特許文献３】特開２００２−１９７４８６号公報
【特許文献４】特開平１１−４２３７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述したような各特許文献に開示された装置においては、従来から以下に示す問題点があった。上記特許文献１および２に開示された装置では、プレイヤキャラクタが障害物に隠れている状態になったとき、即時に障害物を透明にしてしまう。そのため、今まで見えていた障害物が突然消えてしまうことによる違和感や不自然さをプレイヤに与えてしまう。また、上記特許文献３および４に開示されたゲーム装置では、上記所定の視点からの距離に応じて透明度を変化させているため、障害物が徐々に近づいたり遠ざかるような動きをする限りは、透明度も徐々に変化するため、プレイヤに与える違和感や不自然さをかなり軽減することはできる。しかし、例えば、画面が切り替わる等で、障害物が画面内（目の前）に突然現れた場合、即時に障害物を透明（あるいは半透明）にしてしまう。そのため、障害物が一瞬現れてすぐに消えるという違和感や不自然さをプレイヤに与えてしまうという問題があった。
【０００５】
それ故に、本発明の目的は、プレイヤの視界を遮るオブジェクトが突然透明になることによって違和感や不自然さをプレイヤに与えることを防ぎながら、当該オブジェクトで視界が遮られることを防ぐことのできるゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【０００７】
第１の発明は、仮想空間内において当該仮想空間に存在する少なくとも１つ以上のオブジェクトを所定の視点から観察した際に得られる仮想画像を表示装置の画面に表示するためのゲームプログラムであって、ゲーム装置のコンピュータに、相対位置変化ステップ（Ｓ６）と、距離判定ステップ（Ｓ２２）と、透明度変更ステップ（Ｓ３３）と、描画ステップ（Ｓ９）とを実行させる。相対位置変化ステップでは、ゲーム装置の記憶手段に記憶されている視点の位置を示す情報または各オブジェクトの位置を示す情報の少なくとも一方を変化させることによって、視点に対する各オブジェクトの相対位置を変化させる。距離判定ステップでは、視点の位置を示す情報と各オブジェクトの位置を示す情報とを参照して、視点から各オブジェクトまでの距離がそれぞれ所定距離以下であるか否かを判定する。透明度変更ステップでは、距離判定ステップにおいて距離が所定距離以下と判定されたオブジェクトについて、当該オブジェクトの透明度が徐々に増すように、ゲーム装置の記憶手段に記憶されている当該オブジェクトの透明度を示す情報を単位時間毎に更新する。描画ステップでは、透明度を示す情報を参照して、オブジェクトを含む仮想画像を描画する。
【０００８】
第２の発明は、第１の発明において、距離判定ステップは、各オブジェクトについて、当該オブジェクトを内包するように設定された当該オブジェクトの当たり領域の少なくとも一部が、視点から所定距離だけ離れた位置に当該視点からの視線と直交するように設定された境界面よりも視点側に位置しているか否かをそれぞれ判定する。また、透明度変更ステップは、距離判定ステップにおいて当たり領域の少なくとも一部が境界面よりも視点側に位置していると判定されたオブジェクトについて、当該オブジェクトの透明度が徐々に増すように当該オブジェクトの透明度を示す値を単位時間毎に更新する。
【０００９】
第３の発明は、第２の発明において、当たり領域の形状は、８つの頂点を有する六面体である。また、距離判定ステップは、８つの頂点の少なくとも１つが境界面よりも視点側にあるときに、当該当たり領域が設定されているオブジェクトについて所定距離以下であると判定する。
【００１０】
第４の発明は、第１の発明において、ゲームプログラムは、オブジェクトを含む仮想空間を視点を基準として透視変換することで得られる２次元画像において、視点からの距離が所定距離以下であるオブジェクトの少なくとも一部が当該２次元画像の中央を含む所定範囲内に表示されているか否かを判定する、中央表示判定ステップ（Ｓ２４）を更にコンピュータに実行させる。また、透明度変更ステップでは、中央表示判定ステップにおいてその少なくとも一部が前記２次元画像の中央を含む所定範囲内に表示されていると判定されたオブジェクトについてのみ、当該オブジェクトの透明度を示す情報を単位時間毎に更新する。
【００１１】
第５の発明は、第４の発明において、中央表示判定ステップの判定に用いられる２次元画像の中央を含む所定範囲が、矩形領域であることを特徴とする。
【００１２】
第６の発明は、第５の発明において、視点からの距離が所定距離以下であるオブジェクトを囲むような矩形領域であるオブジェクト領域を２次元画像において設定するオブジェクト領域設定ステップを更に前記コンピュータに実行させる。また、中央表示判定ステップは、オブジェクト領域の少なくとも一部が２次元画像の中央を含む矩形領域と重なったときに、当該オブジェクト領域が設定されたオブジェクトは２次元画像の中央を含む所定範囲内に表示されていると判定する。
【００１３】
第７の発明は、第１の発明において、透明度変更ステップは、透明度を示す情報を更新した後、距離判定ステップにおいて当該透明度を示す情報が更新されたオブジェクトの距離が所定距離以下ではないと判定されたときは、当該オブジェクトの不透明度が徐々に増すように当該オブジェクトの透明度を示す情報を単位時間毎に更新する。
【００１４】
第８の発明は、仮想空間内において当該仮想空間に存在する少なくとも１つ以上のオブジェクトを所定の視点から観察した際に得られる仮想画像を表示装置の画面に表示するゲーム装置であって、記憶部（３３）と、相対位置変化部（３０）と、距離判定部（３０）と、透明度変更部（３０）と、描画部（３０）とを備える。相対位置変化部は、記憶部に記憶されている視点の位置を示す情報または各オブジェクトの位置を示す情報の少なくとも一方を変化させることによって、視点に対する各オブジェクトの相対位置を変化させる。距離判定部は、視点の位置を示す情報または各オブジェクトの位置を示す情報を参照して、仮想空間内における所定の視点から各オブジェクトまでの距離がそれぞれ所定距離以下であるか否かを単位時間毎に判定する。透明度変更部は、距離判定部が距離が所定距離以下と判定したオブジェクトについて、当該オブジェクトの透明度が徐々に増すように、記憶手段に記憶されている当該オブジェクトの透明度を示す情報を単位時間毎に更新する。描画部は、透明度を示す情報を参照して、オブジェクトを含む仮想画像を単位時間毎に描画する。
【発明の効果】
【００１５】
上記第１の発明によれば、オブジェクトが所定の視点から所定距離内に近づいたときに、単位時間毎に透明度を上げていく。そのため、オブジェクトが仮想カメラの目前に急に現れた場合であっても、当該オブジェクトを徐々に透明にすることができ、画面内に現れたオブジェクトが急に消えてしまうという不自然さや違和感をプレイヤに与えることを軽減することができる。
【００１６】
上記第２乃至第３の発明によれば、オブジェクトが所定の視点から所定距離内に近づいたか否かの判定を、簡単な処理で実現することができる。そのため、コンピュータの処理負荷を軽減することができる。
【００１７】
上記第４の発明によれば、所定の視点から所定距離内に近づいたオブジェクトであっても、画面の端に表示されるため、実質的にはプレイヤの視界を遮らないようなオブジェクトについては透明にする処理を行わない。つまり、画面の中央付近に表示されるためにプレイヤの視界を遮ってしまうオブジェクトのみを透明にすることができる。そのため、より効率的にオブジェクトを透明にすることができる。また、プレイヤの視界を実質的には遮らないオブジェクトまで透明にすることによってプレイヤに与える違和感や不自然さを更に軽減することができる。
【００１８】
上記第５乃至第６の発明によれば、画面の中央付近にオブジェクトが表示されるか否かについて、簡単な処理で判定することができる。そのため、コンピュータの処理負荷を軽減することができる。
【００１９】
上記第７の発明によれば、一旦透明にしたオブジェクトが所定距離外に位置すれば、元の透明でない状態に徐々に戻していく。これにより、プレイヤに与える違和感を軽減することが可能となる。
【００２０】
また、本発明のゲーム装置によれば、上述した本発明のゲームプログラムと同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００２１】
図１を参照して、本発明の一実施形態に係るゲーム装置について説明する。以下、説明を具体的にするために、当該ゲーム装置を用いたゲームシステム１を一例として説明する。なお、図１は、当該ゲームシステム１を説明するための外観図である。以下、据置型ゲーム装置を一例にして、当該ゲームシステム１について説明する。
【００２２】
図１において、当該ゲームシステム１は、家庭用テレビジョン受像機等のスピーカ２ａを備えたディスプレイ（以下、モニタと記載する）２に、接続コードを介して接続される据置型ゲーム装置（以下、単にゲーム装置と記載する）３および当該ゲーム装置３に操作情報を与えるコントローラ７によって構成される。ゲーム装置３は、接続端子を介して受信ユニット６が接続される。受信ユニット６は、コントローラ７から無線送信される送信データを受信し、コントローラ７とゲーム装置３とは無線通信によって接続される。また、ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例の光ディスク４が脱着される。ゲーム装置３の上部主面には、当該ゲーム装置３の電源ＯＮ／ＯＦＦスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置３上部の蓋を開くＯＰＥＮスイッチが設けられている。ここで、プレイヤがＯＰＥＮスイッチを押下することによって上記蓋が開き、光ディスク４の脱着が可能となる。
【００２３】
また、ゲーム装置３には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード５が必要に応じて着脱自在に装着される。ゲーム装置３は、光ディスク４に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ２に表示する。さらに、ゲーム装置３は、外部メモリカード５に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置３のプレイヤは、モニタ２に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲーム進行を楽しむことができる。
【００２４】
コントローラ７は、その内部に備える通信部７５（後述）から受信ユニット６が接続されたゲーム装置３へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて送信データを無線送信する。コントローラ７は、主にモニタ２に表示されるゲーム空間に登場するプレイヤオブジェクトを操作するための操作手段である。コントローラ７は、複数の操作ボタン、キー、およびスティック等の操作部が設けられている。また、後述により明らかとなるが、コントローラ７は、当該コントローラ７から見た画像を撮像する撮像情報演算部７４を備えている。また、撮像情報演算部７４の撮像対象の一例として、モニタ２の表示画面近傍に２つのＬＥＤモジュール（以下、マーカと記載する）８Ｌおよび８Ｒが設置される。マーカ８Ｌおよび８Ｒは、コントローラ７の位置を示すためのものである。これらマーカ８Ｌおよび８Ｒは、それぞれモニタ２の前方に向かって赤外光を出力する。
【００２５】
次に、図２を参照して、ゲーム装置３の構成について説明する。なお、図２は、ゲーム装置３の機能ブロック図である。
【００２６】
図２において、ゲーム装置３は、各種プログラムを実行する例えばリスク（ＲＩＳＣ）ＣＰＵ（セントラルプロセッシングユニット）３０を備える。ＣＰＵ３０は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、メインメモリ３３等のメモリの初期化等を行った後、光ディスク４に記憶されているゲームプログラムの実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。ＣＰＵ３０には、メモリコントローラ３１を介して、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３２、メインメモリ３３、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３４、およびＡＲＡＭ（Ａｕｄｉｏ  ＲＡＭ）３５が接続される。また、メモリコントローラ３１には、所定のバスを介して、コントローラＩ／Ｆ（インターフェース）３６、ビデオＩ／Ｆ３７、外部メモリＩ／Ｆ３８、オーディオＩ／Ｆ３９、およびディスクＩ／Ｆ４１が接続され、それぞれ受信ユニット６、モニタ２、外部メモリカード５、スピーカ２ａ、およびディスクドライブ４０が接続されている。
【００２７】
ＧＰＵ３２は、ＣＰＵ３０の命令に基づいて画像処理を行うものあり、例えば、３Ｄグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。ＧＰＵ３２は、図示しない画像処理専用のメモリやメインメモリ３３の一部の記憶領域を用いて画像処理を行う。ＧＰＵ３２は、これらを用いてモニタ２に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ３１およびビデオＩ／Ｆ３７を介してモニタ２に出力する。
【００２８】
メインメモリ３３は、ＣＰＵ３０で使用される記憶領域であって、ＣＰＵ３０の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ３３は、ＣＰＵ３０によって光ディスク４から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ３３に記憶されたゲームプログラムや各種データ等がＣＰＵ３０によって実行される。
【００２９】
ＤＳＰ３４は、ゲームプログラム実行時にＣＰＵ３０において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのＡＲＡＭ３５が接続される。ＡＲＡＭ３５は、ＤＳＰ３４が所定の処理（例えば、先読みしておいたゲームプログラムやサウンドデータの記憶）を行う際に用いられる。ＤＳＰ３４は、ＡＲＡＭ３５に記憶されたサウンドデータを読み出し、メモリコントローラ３１およびオーディオＩ／Ｆ３９を介してモニタ２に備えるスピーカ２ａに出力させる。
【００３０】
メモリコントローラ３１は、データ転送を統括的に制御するものであり、上述した各種Ｉ／Ｆが接続される。コントローラＩ／Ｆ３６は、例えば４つのコントローラＩ／Ｆ３６ａ〜３６ｄで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置３とを通信可能に接続する。例えば、受信ユニット６は、上記コネクタと嵌合し、コントローラＩ／Ｆ３６を介してゲーム装置３と接続される。上述したように受信ユニット６は、コントローラ７からの送信データを受信し、コントローラＩ／Ｆ３６を介して当該送信データをＣＰＵ３０へ出力する。ビデオＩ／Ｆ３７には、モニタ２が接続される。外部メモリＩ／Ｆ３８には、外部メモリカード５が接続され、その外部メモリカード５に設けられたバックアップメモリ等とアクセス可能となる。オーディオＩ／Ｆ３９にはモニタ２に内蔵されるスピーカ２ａが接続され、ＤＳＰ３４がＡＲＡＭ３５から読み出したサウンドデータやディスクドライブ４０から直接出力されるサウンドデータをスピーカ２ａから出力可能に接続される。ディスクＩ／Ｆ４１には、ディスクドライブ４０が接続される。ディスクドライブ４０は、所定の読み出し位置に配置された光ディスク４に記憶されたデータを読み出し、ゲーム装置３のバスやオーディオＩ／Ｆ３９に出力する。
【００３１】
図３および図４を参照して、本発明の入力装置の一例であるコントローラ７について説明する。なお、図３は、コントローラ７の上面後方から見た斜視図である。図４は、コントローラ７を下面後方から見た斜視図である。
【００３２】
図３および図４において、コントローラ７は、例えばプラスチック成型によって形成されたハウジング７１を有しており、当該ハウジング７１に複数の操作部７２が設けられている。ハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【００３３】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、矢印で示す４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【００３４】
なお、十字キー７２ａは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、リング状に４方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記十字キー７２ａの代わりに設けてもかまわない。また、ハウジング７１上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー７２ａの代わりに設けてもかまわない。また、少なくとも４つの方向（前後左右）をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。
【００３５】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、Ｘボタン、Ｙボタン、およびＢボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、セレクトスイッチ、メニュースイッチ、およびスタートスイッチ等としての機能が割り当てられる。これら操作ボタン７２ｂ〜７２ｇは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。なお、図３に示した配置例では、操作ボタン７２ｂ〜７２ｄは、ハウジング７１上面の中央前後方向に沿って並設されている。また、操作ボタン７２ｅ〜７２ｇは、ハウジング７１上面の左右方向に沿って操作ボタン７２ｂおよび７２ｄの間に並設されている。そして、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００３６】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置３本体の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈも、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００３７】
また、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（番号）が設けられている。例えば、ＬＥＤ７０２は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ７から受信ユニット６へ送信データを送信する際、上記コントローラ種別に応じて複数のＬＥＤ７０２のうち、種別に対応するＬＥＤが点灯する。
【００３８】
一方、ハウジング７１下面には、凹部が形成されている。後述で明らかとなるが、ハウジング７１下面の凹部は、プレイヤがコントローラ７を把持したときに当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、例えばＡボタンとして機能する操作部であり、シューティングゲームにおけるトリガスイッチや、プレイヤオブジェクトを所定オブジェクトに対して注目させる操作等に用いられる。
【００３９】
また、ハウジング７１前面には、撮像情報演算部７４の一部を構成する撮像素子７４３が設けられる。ここで、撮像情報演算部７４は、コントローラ７が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速なコントローラ７の動きでも追跡して解析することができる。また、ハウジング７１の後面には、コネクタ７３が設けられている。コネクタ７３は、例えば３２ピンのエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【００４０】
ここで、説明を具体的にするために、コントローラ７に対して設定する座標系について定義する。図３および図４に示すように、互いに直交するＸＹＺ軸をコントローラ７に対して定義する。具体的には、コントローラ７の前後方向となるハウジング７１の長手方向をＺ軸とし、コントローラ７の前面（撮像情報演算部７４が設けられている面）方向をＺ軸正方向とする。また、コントローラ７の上下方向をＹ軸とし、ハウジング７１の上面（十字キー７２ａ等が設けられた面）方向をＹ軸正方向とする。さらに、コントローラ７の左右方向をＸ軸とし、ハウジング７１の左側面（図３では表されずに図４で表されている側面）方向をＸ軸正方向とする。
【００４１】
次に、図５を参照して、コントローラ７の内部構造について説明する。なお、図５（ａ）は、コントローラ７の上筐体（ハウジング７１の一部）を外した状態を示す斜視図である。図５（ｂ）は、コントローラ７の下筐体（ハウジング７１の一部）を外した状態を示す斜視図である。ここで、図５（ｂ）に示す基板７００は、図５（ａ）に示す基板７００の裏面から見た斜視図となっている。
【００４２】
図５（ａ）において、ハウジング７１の内部には基板７００が固設されており、当該基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７０１、ＬＥＤ７０２、水晶振動子７０３、無線モジュール７５３、およびアンテナ７５４等が設けられる。そして、これらは、基板７００等に形成された配線（図示せず）によってマイコン７５１（図６参照）に接続される。加速度センサ７０１は、コントローラ７が配置された３次元空間における傾きや振動等の算出に用いることができる加速度を検出して出力する。
【００４３】
より詳細には、図６に示すように、コントローラ７は３軸の加速度センサ７０１を備えていることが好ましい。この３軸の加速度センサ７０１は、３方向、すなわち、上下方向（図３に示すＹ軸）、左右方向（図３に示すＸ軸）、および前後方向（図３に示すＺ軸）で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、Ｘ軸とＹ軸（または他の対になった軸）のそれぞれに沿った直線加速度のみを検知する２軸の加速度検出手段を使用してもよい。例えば、この３軸または２軸の加速度センサ７０１は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能であるタイプのものでもよい。加速度センサ７０１は、シリコン微細加工されたＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍｓ：微小電子機械システム）の技術に基づいた静電容量式（静電容量結合式）であることが好ましい。しかしながら、既存の加速度検出手段の技術（例えば、圧電方式や圧電抵抗方式）あるいは将来開発される他の適切な技術を用いて３軸または２軸の加速度センサ７０１が提供されてもよい。
【００４４】
当業者には公知であるように、加速度センサ７０１に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度（直線加速度）のみを検知することができる。つまり、加速度センサ７０１からの直接の出力は、その２軸または３軸のそれぞれに沿った直線加速度（静的または動的）を示す信号である。このため、加速度センサ７０１は、非直線状（例えば、円弧状）の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【００４５】
しかしながら、加速度センサ７０１から出力される加速度の信号に対して追加の処理を行うことによって、コントローラ７に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な加速度（重力加速度）が検知されると、加速度センサ７０１からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象（コントローラ７）の傾きを判定することができる。このように、加速度センサ７０１をマイコン７５１（または他のプロセッサ）と組み合わせて用いることによって、コントローラ７の傾き、姿勢または位置を判定することができる。同様に、加速度センサ７０１を備えるコントローラ７が例えば後述するようにユーザの手で動的に加速されて動かされる場合に、加速度センサ７０１によって生成される加速度信号を処理することによって、コントローラ７のさまざまな動きおよび／または位置を算出することができる。他の実施例では、加速度センサ７０１は、信号をマイコン４２に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサが静的な加速度（例えば、重力加速度）を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【００４６】
また、無線モジュール７５３およびアンテナ７５４を有する通信部７５によって、コントローラ７がワイヤレスコントローラとして機能する。なお、水晶振動子７０３は、後述するマイコン７５１の基本クロックを生成する。
【００４７】
一方、図５（ｂ）において、基板７００の下主面上の前端縁に撮像情報演算部７４が設けられる。撮像情報演算部７４は、コントローラ７の前方から順に赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４によって構成されており、それぞれ基板７００の下主面に取り付けられる。また、基板７００の下主面上の後端縁にコネクタ７３が取り付けられる。そして、操作ボタン７２ｉが撮像情報演算部７４の後方の基板７００の下主面上に取り付けられていて、それよりさらに後方に、電池７０５が収容される。電池７０５とコネクタ７３との間の基板７００の下主面上には、バイブレータ７０４が取り付けられる。このバイブレータ７０４は、例えば振動モータやソレノイドであってよい。バイブレータ７０４が作動することによってコントローラ７に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。
【００４８】
次に、図６を参照して、コントローラ７の内部構成について説明する。なお、図６は、コントローラ７の構成を示すブロック図である。
【００４９】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、コントローラ７の前方から入射する光から赤外線のみを通過させる。ここで、モニタ２の表示画面近傍に配置されるマーカ８Ｌおよび８Ｒは、モニタ２の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ７４１を設けることによってマーカ８Ｌおよび８Ｒの画像をより正確に撮像することができる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ出射する。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ７４２が集光した赤外線を撮像する。したがって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを撮像して画像データを生成する。撮像素子７４３で生成された画像データは、画像処理回路７４４で処理される。具体的には、画像処理回路７４４は、撮像素子７４３から得られた画像データ（マーカ８Ｌおよび８Ｒの撮像画像）を処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部７５へ出力する。なお、これらの撮像情報演算部７４は、コントローラ７のハウジング７１に固設されており、ハウジング７１自体の方向を変えることによってその撮像方向を変更することができる。この撮像情報演算部７４から出力される処理結果データに基づいて、コントローラ７の位置や動きに応じた信号を得ることができ、当該信号に基づいてモニタ２の画面座標系に基づいた入力座標を得ることができる。つまり、コントローラ７は、撮像情報演算部７４から出力される処理結果データによってポインティングデバイスとして機能する。
【００５０】
加速度センサ７０１は、上述したようにコントローラ７の上下方向（Ｙ軸方向）、左右方向（Ｘ軸方向）、および前後方向（Ｚ軸方向）の３軸成分に分けてそれぞれ加速度を検知して出力するセンサである。加速度センサ７０１が検知した３軸成分の加速度を示すデータは、それぞれ通信部７５へ出力される。この加速度センサ７０１から出力される加速度データに基づいて、コントローラ７の動きを判定することができる。なお、加速度センサ７０１は、特定のアプリケーションで必要なデータに応じて何れか２軸に対してそれぞれ加速度を検出する加速度センサが用いられてもかまわない。
【００５１】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。
【００５２】
コントローラ７に設けられた操作部７２からの操作信号（キーデータ）、加速度センサ７０１からの３軸方向の加速度信号（Ｘ、Ｙ、およびＺ軸方向加速度データ）、および撮像情報演算部７４からの処理結果データは、マイコン７５１に出力される。マイコン７５１は、入力した各データ（キーデータ、Ｘ、Ｙ、およびＺ軸方向加速度データ、処理結果データ）を受信ユニット６へ送信する送信データとして一時的にメモリ７５２に格納する。ここで、通信部７５から受信ユニット６への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）であり、ブルートゥース（登録商標）で構成される通信部７５の送信間隔は５ｍｓである。マイコン７５１は、受信ユニット６への送信タイミングが到来すると、メモリ７５２に格納されている送信データを一連の操作情報として出力し、無線モジュール７５３へ出力する。そして、無線モジュール７５３は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ７５４から放射する。つまり、コントローラ７に設けられた操作部７２からのキーデータ、加速度センサ７０１からのＸ、Ｙ、およびＺ軸方向加速度データ、および撮像情報演算部７４からの処理結果データがコントローラ７から送信される。そして、ゲーム装置３の受信ユニット６でその電波信号を受信し、ゲーム装置３で当該電波信号を復調や復号することによって、一連の操作情報（キーデータ、Ｘ、Ｙ、およびＺ軸方向加速度データ、および処理結果データ）を取得する。そして、ゲーム装置３のＣＰＵ３０は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Ｂｌｕｅｔｏｏｔｈ（登録商標）の技術を用いて通信部７５を構成する場合、通信部７５は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【００５３】
次に、図７を用いて、本実施形態で想定するゲームの概要について説明する。本実施形態で想定するゲームは、シミュレーションロールプレイングゲーム（以下、ＳＲＰＧと呼ぶ）であり、特に、戦闘シーンにおける処理を想定している。具体的には、複数のプレイヤユニットと敵ユニットが表示されているマップ画面において、プレイヤは自軍のプレイヤユニットに対して「移動」というコマンドを指示することで、当該プレイヤユニットを所望の位置に移動させることができる。そして、移動先においてプレイヤユニットが敵ユニットに隣接したときは、プレイヤは「戦闘」というコマンドを指示することができる。すると、当該プレイヤユニットが携行している複数の武器（例えば、ぎんの剣、はがねの槍、等）が一覧表示されるので、プレイヤは利用したい武器を選択する。これにより、ゲーム画面がマップ画面から図７に示すような戦闘シーンの画面に切り替わる。
【００５４】
図７は、本実施形態で想定する戦闘シーンの画面の一例である。図７において、戦闘シーンでは、３Ｄの仮想空間が表示される（以下、この仮想空間を戦闘空間と呼ぶ）。そして、当該戦闘空間内においてプレイヤユニットが敵ユニットに攻撃する様子が表示される。この攻撃に合わせ、当該戦闘空間を映している仮想カメラ（視点）も適宜移動する（つまり、カメラワークが行われる）。例えば、仮想カメラは最初はプレイヤユニットの後方に位置している状態で、プレイヤユニットが敵ユニットに飛びかかって攻撃する動きに合わせて、側面に回り込んでいくというカメラワークが行われる。また、別の例としては、最初はプレイヤユニットと敵ユニットの全身が画面に映るよう、ある程度距離を取った位置（カメラを引いた位置）から、プレイヤユニットが敵ユニットに飛びかかって攻撃する動きに合わせてカメラを近づけていくというカメラワークが行われる。ここで、当該カメラワークは、ユニットの種類および使用する武器に応じてそれぞれ異なるカメラワークが予め用意されているものとする。例えば、ユニットの種類が「剣士」で、上記攻撃に使用した武器が「ぎんの剣」の場合は、上述したような後ろから側面に回り込むカメラワークが行われ、ユニットの種類が「騎士」で、使用武器が「はがねの槍」であるときは、上述したような、カメラを引いた状態から徐々にユニットに近づけていくというカメラワークが行われる。
【００５５】
上記カメラワークの際、例えば、後方から側面に回り込む際に、仮想カメラとプレイヤユニットとの間に木のオブジェクトがあるとする。そして、当該木のオブジェクトの位置が、プレイヤユニットの攻撃が丁度敵ユニットに当たる際に仮想カメラの前に来るような位置にあると、攻撃が当たる瞬間が木に遮られて見えなくなる。同様に、カメラを引いた状態から徐々に近づけていく際に、途中に木のオブジェクトがあると、この木に遮られて、プレイヤユニットの一連の攻撃動作について、一部分見えなくなることもある。特に、必殺技などで攻撃の動作に特殊なモーションを用いている場合は、当該モーションを全て見ることができなくなる。つまり、プレイヤユニット（あるいは敵ユニット）の攻撃動作が、木のオブジェクト（障害物）に遮られて、一部見えなくなることがある。そのため、本実施形態では、カメラワークの結果、上記木のオブジェクトが画面の中央付近に入り、プレイヤユニットが見えなくなるような位置に来ると、当該木のオブジェクトを徐々に透明にさせて、ユニットの動きがプレイヤに見えるようにする処理が行われる。
【００５６】
次に、上記透明にさせる処理の概要を図８〜図１５を用いて説明する。図８は、本実施形態における透明処理を行う前の上記戦闘空間の画面の一例である（説明をわかりやすくするため、上記プレイヤユニットや敵ユニット等の表示は省略する）。この画面では、木のオブジェクトが３つ表示されている。そして、画面中央の一番手前に写っている木８１を、プレイヤの視界を遮る障害物であるとして透明にしていく。このために、本実施形態では、まず、バウンディングボックスと呼ばれる領域を設定する。バウンディングボックスとは、図９に示すような、戦闘空間内に配置されている各オブジェクト（ここでは、木８１）が収まるような（望ましくは最小の）大きさの、六面体の領域である。なお、図９では説明をわかりやすくするためにバウンディングボックス９１を表示しているが、実際の戦闘画面では、バウンディングボックス９１は表示されない。
【００５７】
次に、バウンディングボックスとは別に、仮想カメラのニアクリップ面から奥行き方向に向かって所定の距離のところに境界面を設ける。そして、当該境界面よりも手前側（仮想カメラ側）に上記バウンディングボックスがきた場合、そのバウンディングボックスで囲まれている建物オブジェクトについて、透明処理を行う。図１０は、当該バウンディングボックスと境界面との関係を説明するための図である。図１０においては、仮想カメラ１０１のニアクリップ面から所定の距離のところに、境界面１０２が設けられている。また、ここでは、一例として、５つのバウンディングボックス９１Ａ〜９１Ｅが戦闘空間内に配置されている。これらのうち、バウンディングボックス９１Ｅは、その全体が境界面より仮想カメラ側に位置している。また、バウンディングボックス９１Ｄは、境界面をまたがる形で位置しており、その一部分だけが境界面より仮想カメラ側に位置している。一方、バウンディングボックス９１Ａ〜９１Ｃはそれぞれ、その全体が境界面より奥行き側に位置している。このような場合、境界面１０２より奥行き側のバウンディングボックス９１Ａ〜９１Ｃに対応するオブジェクトについては、透明処理の対象とはしない。一方、境界面１０２より仮想カメラ側にあるバウンディングボックス９１Ｅに対応するオブジェクトついては、透明処理の対象とする。また、境界面１０２をまたがって位置しているバウンディングボックス９１Ｄに対応するオブジェクトについても、透明処理の対象とする。つまり、バウンディングボックスの一部分でも境界面を越えて仮想カメラ寄りに来れば、当該バウンディングボックスが設定されているオブジェクトを透明処理の対象とする。
【００５８】
また、上記バウンディングボックスが境界面１０２を越えたらすぐに透明処理を開始するのではなく、更に、境界面を越えたバウンディングボックスが画面の中央付近に位置するか否かを判定する。そして、中央付近に位置するバウンディングボックスが設定されているオブジェクトのみ、透明処理の対象とする。これは、上記境界面より手前であっても、画面の端のほうに表示されるような位置にある場合は、必ずしもプレイヤの視界の妨げとはならないからである。
【００５９】
上記画面中央に位置するか否かの判定方法として、次のような方法を用いる。まず、上記戦闘空間を仮想カメラ位置を基準として透視変換して得られる２次元画像の座標系（画面座標系）において、図１１に示すような、当該２次元画像の中央を含む所定の大きさの領域１１１（以下、中央領域と呼ぶ）を設定する。次に、同じく画面座標系において、上記配置オブジェクトのそれぞれについて、図１２に示すような、矩形領域１２１を設定する。この矩形領域は、上記バウンディングボックスに基づいて構成される領域であり、当該バウンディングボックスを完全に覆うような（望ましくは最小の）大きさを有している。そして、図１３に示すように、上記矩形領域１２１が中央領域１１１に重なるときは、当該矩形領域１２１の設定されている木８１は透明処理の対象とし、重ならないときは透明処理の対象外とする。
【００６０】
つまり、上述の処理をまとめると、まず、３Ｄ座標系において、境界面１０２より手前側にバウンディングボックス９１が来ているか否かを判定する。次に、境界面１０２の手前に来ているものについては、更に、２Ｄ座標系において、画面中央付近に位置するかどうかを判定する。その結果、境界面１０２より手前側に来ており、かつ、画面中央付近に位置するオブジェクトのみを、透明処理の対象とする。
【００６１】
また、透明とする処理についても、すぐに透明にする（透明度を１００％にする）のではなく、１フレーム毎に一定値ずつ透明度を高めていくようにする。これにより、図１４に示すように、木８１が徐々に透明になっていき、最終的に図１５に示すように、完全に透明な状態となり、その後方の景色が見えるようになる。これにより、急に木が消えてしまうという違和感をプレイヤに与えることを防ぐことが可能となる。
【００６２】
次に、本実施形態で用いられる各種データについて説明する。図１６は、図２に示したメインメモリ３３のメモリマップを示す図解図である。図２において、メインメモリ３３は、ゲームプログラム記憶領域３３０およびデータ記憶領域３３３を含む。
【００６３】
ゲームプログラム記憶領域３３０は、ＣＰＵ３０によって実行されるゲームプログラムを記憶し、このゲームプログラムは、ゲームメイン処理プログラム３３１と、戦闘シーンプログラム３３２などによって構成される。
【００６４】
ゲームメイン処理プログラム３３１は、本実施形態に係る処理全体を制御するためのプログラムである。戦闘シーンプログラム３３２は、上述したような戦闘シーンを表示するためのプログラムである。
【００６５】
データ記憶領域３３３には、戦闘空間データ３３４、配置オブジェクトデータ３３５、ユニットデータ３３６、武器データ３３７、カメラワークデータ３３８、中央領域データ３３９、および画像データ３４０等が記憶される。なお、メインメモリ３３には、図１６に示す情報に含まれるデータの他、ゲームに登場する他のオブジェクトに関するデータ（マップ画面データ等）や仮想ゲーム空間に関するデータ（地形データ等）等、ゲーム処理に必要なデータが記憶される。
【００６６】
戦闘空間データ３３４は、戦闘空間内に配置されるオブジェクト（以下、配置オブジェクト）に関する情報（どの配置オブジェクトを戦闘空間内のどの位置に配置するかについての情報）や、使用する背景やＢＧＭ等についての情報を含む。ここで、戦闘空間は、戦闘を仕掛けたユニットのマップ画面上の場所に応じて、その内容が異なる。例えば、マップ画面上で「森」として設定されている場所で戦闘を仕掛けたときは、戦闘空間も「森」をイメージした背景が表示され、配置オブジェクトも「木」オブジェクト等の、「森」の雰囲気をプレイヤに伝えることができるようなオブジェクトが配置される。また、「街」であれば、配置オブジェクトとしては、「家」や「商店」などの、街中で戦闘を行っていることをプレイヤに伝えることができるようなオブジェクトが配置される。
【００６７】
配置オブジェクトデータ３３５は、上記戦闘空間に配置される少なくとも１つ以上の配置オブジェクトのデータ群である。配置オブジェクト１つ分のデータ、例えば、配置オブジェクト３３５１には、上記バウンディングボックスの頂点座標等を示すバウンディングボックスデータ３３５１ａ、および、後述する処理で用いられる透明フラグ３３５１ｂが含まれる。その他、「木」や「家」等の、各オブジェクト自身のポリゴンモデルデータも含まれている。
【００６８】
ユニットデータ３３６は、ゲーム中に登場する各種ユニットのデータである。各ユニットのポリゴンモデルデータや、ＨＰや攻撃力等のユニットパラメータを含む。
【００６９】
武器データ３３７は、戦闘シーンで使用する武器についてのデータである。各種武器のポリゴンモデルデータや攻撃力・使用回数等の武器パラメータを含んでいる。
【００７０】
カメラワークデータ３３８は、上述したような、戦闘シーンにおける仮想カメラの動き方についてのデータである。つまり、戦闘シーン中の、どのフレームではどの位置からどの向きで撮るか、について定義したデータである。カメラワークデータ３３８には、上述したように、ユニットの種類および戦闘シーンで使用する武器の組み合わせに対応した複数のデータが含まれている。
【００７１】
中央領域データ３３９は、図１１を用いて説明した上記中央領域１１１の画面座標系における位置および大きさについてのデータである。
【００７２】
画像データ３４０は、上記配置オブジェクトデータ３３５や、ユニットデータ３３６や、武器データ３３７や、背景オブジェクト等についての画像データ（テクスチャデータ）である。
【００７３】
次に、図１７〜図１９を参照して、ゲーム装置３によって実行されるゲーム処理について説明する。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ３０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ３３等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリ３３に読み込まれ、ＣＰＵ３０によって当該ゲームプログラムの実行が開始される。その結果、ＧＰＵ３２を介してモニタ２にゲーム画像が表示されることによって、ゲームが開始される。図１７に示すフローチャートは、ゲーム画像が戦闘シーンに切り替わった後におけるゲーム処理を示す。つまり、ゲーム開始後、マップ画面でプレイヤユニットに「戦闘」の指示を出すと、戦闘結果の計算が先に行われ、その結果を戦闘シーンとしてゲーム画像で表示するために、図１７に示すフローチャートの処理が行われる（換言すれば、戦闘シーンは戦闘結果の再生画面といえる）。なお、本実施形態においては、戦闘シーン以外の状況におけるゲーム処理は本発明と直接関係しないので、説明を省略する。また、図１７に示すステップＳ５〜ステップＳ１０の処理ループは、１フレーム毎に繰り返し実行される。
【００７４】
図１７において、まず、ＣＰＵ３０は、戦闘を行ったユニットのマップ画面上の位置（地形）に応じて、戦闘空間データ３３４を読み込む（ステップＳ１）。例えば、「森」で戦闘を行ったときは、「森」用の戦闘空間データが読み込まれる。また、このとき、図１１を用いて説明した上記中央領域１１１についてのデータである、中央領域データ３３９も読み込まれる。
【００７５】
次に、ＣＰＵ３０は、ステップＳ１で読み込んだ戦闘空間データに基づいて、必要となる配置オブジェクトデータ３３５を読み込み、必要となる配置オブジェクトを戦闘空間内に配置していく（ステップＳ２）。このとき、各配置オブジェクトのデータに含まれているバウンディングボックスデータに基づいて、当該配置オブジェクトそれぞれについて、バウンディングボックスを設定する（但し、当該バウンディングボックスは、画面上には表示されない）。また、各配置オブジェクトには、それぞれ一意に識別可能なＩＤが割り振られる。
【００７６】
次に、ＣＰＵ３０は、上記戦闘を行ったユニットのユニットデータ３３６および武器データ３３７を読み込み、武器を持った状態のユニット（正確にはそのポリゴンモデル）を戦闘空間内に配置する（ステップＳ３）。
【００７７】
次に、ＣＰＵ３０は、上記戦闘を行ったユニットおよび使用した武器に応じたカメラワークデータ３３８を読み込む（ステップＳ４）。
【００７８】
次に、ＣＰＵ３０は、上記算出された戦闘結果に基づいて、ユニットを動作させる（ステップＳ５）。つまり、戦闘結果に基づいたモーション（例えば、武器が剣の場合は、飛び上がって敵ユニットに斬りかかるという、攻撃モーション）が表示されるように、ユニットのポーズを適宜変更し、当該ユニットの位置を移動させる。
【００７９】
次に、ＣＰＵ３０は、上記ステップＳ４で読み込んだカメラワークデータ３３８に基づいて、仮想カメラの位置や向き、画角等を設定する（ステップＳ６）。このとき、上述したような、仮想カメラのニアクリップ面から奥行き方向に向かって所定の距離の位置に、当該仮想カメラの視線と直交するような境界面（図１０参照）を設定する。
【００８０】
次に、ＣＰＵ３０は、上記配置オブジェクトのそれぞれについて、透明処理を行うか否かを判定するための透明対象判定処理を行う（ステップＳ７）。この処理では、上述したように、仮想カメラのニアクリップ面に対して所定の距離内に（つまり、上記境界面の手前側に）配置オブジェクトが位置しているかどうかを判定する。更に、画面の中央付近に配置オブジェクトが位置するかを判定して、戦闘空間内の各配置オブジェクトについて透明対象にするか否かを判定する。
【００８１】
図１８は、上記ステップＳ７で示した透明対象判定処理の詳細を示すフローチャートである。図１８において、まず、ＣＰＵ３０は、まだ透明対象判定の終わっていない配置オブジェクトの中から１つ選び、当該選んだ配置オブジェクトに設定されているバウンディングボックスの８つの頂点の座標を取得する（ステップＳ２１）。ここでは、図１６の配置オブジェクト３３５１が選ばれたものとして説明する。
【００８２】
次に、ＣＰＵ３０は、当該８頂点のうち、いずれか１つでも境界面を越えているかを判定する（ステップＳ２２）。すなわち、仮想カメラの位置を原点とし、視線方向（仮想カメラの撮影方向）をＺ軸の正方向としたカメラ座標系において、上記８頂点の座標のＺ軸の値のうち、いずれか一つでも境界面の座標のＺ軸の値未満であれば、当該配置オブジェクト３３５１は上記所定の距離内にあると判定し、８頂点全てが境界面の座標のＺ軸の値以上であれば、上記所定の距離内には入っていないと判定する。
【００８３】
ステップＳ２２の判定の結果、上記配置オブジェクト３３５１が境界面より仮想カメラ側に位置していないときは（ステップＳ２２でＮＯ）、ＣＰＵ３０は、処理を後述のステップＳ２６に進める。一方、上記配置オブジェクト３３５１が境界面を越え、仮想カメラ側に位置しているときは（ステップＳ２２でＹＥＳ）、ＣＰＵ３０は、上記戦闘空間を透視変換して、作業用の２次元画像を一時的に生成する（ここでは少なくともバウンディングボックスさえ描画すればよい）。そして、当該２次元画像における上記配置オブジェクト３３５１のバウンディングボックスの８頂点の座標に基づき、当該２次元画像において当該バウンディングボックスを完全に覆うような矩形領域１２１（図１２参照）を決定し、その位置を示す情報をメインメモリ３３の任意の記憶領域に記憶する（ステップＳ２３）。
【００８４】
次に、ＣＰＵ３０は、ステップＳ１で読み込んだ中央領域データ３３９に基づいて中央領域１１１を上記２次元画像上に設定する。そして、当該中央領域１１１と上記矩形領域１２１とが重複しているか否か（図１３参照）を、双方の領域の位置情報に基づいて判定する（ステップＳ２４）。当該判定の結果、重複していなければ（ステップＳ２４でＮＯ）、当該矩形領域１２１に対応する配置オブジェクト３３５１の透明フラグ３３５１ｂをオフに設定する（ステップＳ２６）。一方、重複していれば（ステップＳ２４でＹＥＳ）、当該配置オブジェクトの透明フラグ３３５１ｂをオンに設定する（ステップＳ２５）。
【００８５】
次に、ＣＰＵ３０は、戦闘空間内の全ての配置オブジェクトについて上述したステップＳ２１〜Ｓ２６の処理を行ったか否かを判定する（ステップＳ２７）。当該判定の結果、まだ未判定の配置オブジェクトが残っていれば（ステップＳ２７でＮＯ）、ＣＰＵ３０は、上記ステップＳ２１に戻って処理を繰り返す。一方、全ての配置オブジェクトについて上記のような処理が終わっていれば（ステップＳ２７でＹＥＳ）、当該透明対象判定処理を終了する。
【００８６】
図１７に戻り、次に、ＣＰＵ３０は、実際に上記配置オブジェクトを透明にするための透明処理を行う（ステップＳ８）。図１９は、上記ステップＳ８で示した透明処理の詳細を示すフローチャートである。図１９において、まず、ＣＰＵ３０は、当該透明処理がまだ行われていない配置オブジェクトの中から一つ処理対象を選び、当該選んだ配置オブジェクトの透明フラグがオンに設定されているか否かを判定する（ステップＳ３１）。ここでも、便宜上、図１６の配置オブジェクト３３５１が選ばれたとして説明する。当該判定の結果、透明フラグ３３５１ｂがオンであれば（ステップＳ３１でＹＥＳ）、次に、当該配置オブジェクト３３５１の透明度が１００％（すなわち、完全に透明）になっているか否かを判定する（ステップＳ３２）。具体的には、当該配置オブジェクト３３５１に設定されているパラメータの一つであるアルファ値（透明度を示すパラメータ；図示せず）が０であるか否かを判定する。当該判定の結果、アルファ値が０（すなわち、透明度が１００％）であれば（ステップＳ３２でＹＥＳ）、ＣＰＵ３０は、処理を後述のステップＳ３６に進める。一方、アルファ値が０でない（すなわち、透明度が１００％ではない）ときは、ＣＰＵ３０は、当該配置オブジェクト３３５１のアルファ値（より正確には、配置オブジェクト３３５１を構成する各画素のアルファ値）を所定の値だけ下げる（ステップＳ３３）。つまり、透明度を上げる。そして、ＣＰＵ３０は処理をステップＳ３６へと進める。
【００８７】
一方、上記ステップＳ３１の判定の結果、上記選択した配置オブジェクト３３５１の透明フラグ３３５１ｂがオンではないときは（ステップＳ３１でＮＯ）、ＣＰＵ３０は、当該配置オブジェクト３３５１の透明度が０％（すなわち、完全に不透明）になっているか否かを判定する（ステップＳ３４）。これは、カメラワークの結果、一旦透明にしたオブジェクトが、その後境界面より奥行き側に位置した場合（プレイヤの視界を遮らないような位置に来た場合）に、透明にしたオブジェクトを元の状態（不透明な状態）に戻すために行われる処理である。上記ステップＳ３４においては、具体的には、上記アルファ値が２５５であるか否かを判定する。当該判定の結果、アルファ値が２５５（すなわち、透明度が０％）であれば（ステップＳ３４でＹＥＳ）、ＣＰＵ３０は、処理を後述のステップＳ３６に進める。一方、アルファ値が２５５でない（すなわち、透明度が０％ではない）ときは、ＣＰＵ３０は、当該配置オブジェクト３３５１のアルファ値を所定の値だけ上げる（ステップＳ３５）。つまり、透明度を下げる。そして、ＣＰＵ３０は処理をステップＳ３６へと進める。
【００８８】
次に、ＣＰＵ３０は、戦闘空間内の全ての配置オブジェクトについて上述したステップＳ３１〜Ｓ３５の処理を行ったか否かを判定する（ステップＳ３６）。当該判定の結果、まだ未処理の配置オブジェクトが残っていれば（ステップＳ３６でＮＯ）、ＣＰＵ３０は、上記ステップＳ３１に戻って処理を繰り返す。一方、全ての配置オブジェクトについて上記のような処理が終わっていれば（ステップＳ３６でＹＥＳ）、当該透明処理を終了する。
【００８９】
図１７に戻り、ステップＳ８の透明処理が終われば、次にＣＰＵ３０は、戦闘空間を画面に表示するための描画処理を行う（ステップＳ９）。すなわち、仮想カメラで戦闘空間を撮影した画像を生成して、ゲーム画像としてモニタ２に表示する処理がされる。その結果、上記透明処理の結果が反映された画像が画面に表示される。ステップＳ９の後、ステップＳ１０において、戦闘シーン終了か否かが判断され、ＹＥＳの場合、ゲーム処理を終了し、ＮＯの場合、ステップＳ５に戻って、ゲーム処理を繰り返す。なお、戦闘シーン終了か否かの判定は、例えば、予め戦闘シーン用として定義されている所定のフレーム数だけ上述の処理ループが繰り返されたか等で判定される。
【００９０】
このように、本実施形態では、仮想空間内において仮想カメラ（仮想空間内における視点）から所定の距離以内にオブジェクトがあるときは、当該オブジェクトを１フレーム毎に徐々に透過させていく。これにより、プレイヤの視界を遮るような障害物が急に消えてしまうといった違和感、不自然さをプレイヤに与えることを防ぐことができる。特に、従来のように距離に応じて透明度を変化させるのではなく、単位時間毎に透明度を変化させていくため、たとえ障害物が急に目の前（距離がニアクリップ面から０に近い位置）に現れたとしても、当該障害物が急に消えてしまうことを防ぎ、徐々に当該障害物を透明にしていく様を表現できる。
【００９１】
また、例えばゲームの開発者が、仮想カメラのカメラワークを定義する場合において、障害物の存在を意識しながらカメラワークを考えるといった煩わしさを軽減することが可能となる。また、仮想カメラから所定距離内にオブジェクトが来たときに、すぐに透明させるのではなく、更に、画面座標系において画面の中央付近に位置するものだけを透明させている。そのため、プレイヤの視界を遮る最低限の障害物のみを、より効率的に透明させることができる。また、バウンディングボックスという単純な３Ｄモデルをオブジェクト毎に設け、その８頂点の座標を用いて、各オブジェクトが仮想カメラから所定距離内であるかどうかを計算するため、オブジェクトが多数のポリゴンから成る複雑な形状である場合でも比較的単純な計算処理だけで透明対象の判定を行うことができ、ＣＰＵの処理負荷を軽減することが可能となる。
【００９２】
なお、上述した実施形態では、ＳＲＰＧの戦闘シーンを例として説明したが、上述したような透明処理を用いる場面がＳＲＰＧの戦闘シーンだけに限らないことはいうまでもない。仮想ゲーム空間を３Ｄで表示するゲームであれば、アクションゲームやレースゲーム等にも上述の処理を用いることができる。
【００９３】
また、上記バウンディングボックス９１や中央領域１１１の位置および大きさについて、上述の実施形態では予めデータとして用意されていた（すなわち、ゲーム処理の実行時に光ディスク４からメインメモリ３３にロードされていた）が、これに限らず、ゲーム処理の実行開始時または必要に応じてその都度バウンディングボックス９１や中央領域１１１の位置および大きさをＣＰＵ３０が演算によって求めるようにしてもよい。
【００９４】
また、上記バウンディングボックスの形状に関して、上述の実施形態では六面体の場合を例として説明したが、バウンディングボックスの形状は、これに限る物ではない。例えば、球体であってもよい。但し、処理負荷の観点から、単純な形状であることが好ましい。バウンディングボックスを球体とする場合は、上述の８頂点を用いて境界面を越えたか否かを判定する代わりに、当該球体の半径内に境界面があるか否かを判定するようにすればよい。これにより、処理負荷の軽減が可能となる。なお、ＣＰＵ３０の処理能力が十分に余裕がある場合には、オブジェクトが仮想カメラに接近したかどうかをバウンディングボックスを用いずに（すなわちオブジェクトを構成する各ポリゴンの頂点の座標に基づいて）判定するようにしてもよい。
【００９５】
また、上記中央領域１１１の位置について、上述の実施形態では、画面の中央を含む所定の領域に設定していたが、これに限らず、画面の中央を含まない任意の領域（例えば、画面の左端領域や右端領域等）に設定してもよい。このようにすれば、画面の端の方のオブジェクトのみを透過処理の対象とし、画面の中央部分のオブジェクトをあえて透過処理の対象としないことにより、画面の中央部分の視界が遮られることになり、ゲームの難易度を上げるといったようなことができる。
【００９６】
また、上記実施例では、境界面を平面としていたが、これに限らず、曲面等であってもよい。このようにすれば、ニアクリップ面から境界面までの距離を画面の位置に応じて可変にすることができるので、例えば、ニアクリップ面から境界面までの距離が画面の中心位置で最も大きく、画面の中心位置から離れるに従ってその距離が小さくなるといったような境界面を設けることができる。
【００９７】
また、上記実施形態では、カメラワークを行うことで、仮想カメラの位置等を１フレーム毎に変更していた。これに限らず、仮想カメラの位置を固定しておき、オブジェクトを適宜移動させることで、あたかも仮想カメラ自身が移動しているように表現するようしてもよい。そして、上述のように、オブジェクトが移動した結果、境界面を越えたときは、当該オブジェクトを透明にしていくようにしてもよい。
【産業上の利用可能性】
【００９８】
本発明にかかるゲームプログラムおよびゲーム装置は、仮想空間内のオブジェクトについて、プレイヤ等に違和感を与えずに透明処理を行うことができ、仮想空間の様子を表示するゲームや、画像生成処理装置等の用途に有用である。
【図面の簡単な説明】
【００９９】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置３の機能ブロック図
【図３】図１のコントローラ７の上面後方から見た斜視図
【図４】図１のコントローラ７を下面後方から見た斜視図
【図５】図１のコントローラ７の上筐体を外した状態を示す斜視図
【図６】図１のコントローラ７の構成を示すブロック図
【図７】本実施形態で想定する戦闘シーンの画面の一例
【図８】透明処理を行う前の上記戦闘空間の画面の一例
【図９】バウンディングボックスを説明するための図
【図１０】バウンディングボックスと境界面との関係を説明するための図
【図１１】中央領域を説明するための図
【図１２】矩形領域を設定するための図
【図１３】矩形領域が中央領域に重なっていることを示すための図
【図１４】透明処理途中の画面の一例
【図１５】透明処理後の画面の一例
【図１６】メインメモリ３３のメモリマップを示す図解図
【図１７】本発明の実施形態に係るゲーム処理を示すフローチャート
【図１８】図１７のステップＳ７で示した透明対象判定処理の詳細を示したフローチャート
【図１９】図１７のステップＳ８で示した透明処理の詳細を示すフローチャート
【符号の説明】
【０１００】
１…ゲームシステム
２…モニタ
２ａ…スピーカ
３…ゲーム装置
３０…ＣＰＵ
３１…メモリコントローラ
３２…ＧＰＵ
３３…メインメモリ
３４…ＤＳＰ
３５…ＡＲＡＭ
３６…コントローラＩ／Ｆ
３７…ビデオＩ／Ｆ
３８…外部メモリＩ／Ｆ
３９…オーディオＩ／Ｆ
４０…ディスクドライブ
４１…ディスクＩ／Ｆ
４…光ディスク
５…外部メモリカード
６…受信ユニット
７…コントローラ
７１…ハウジング
７２…操作部
７３…コネクタ
７４…撮像情報演算部
７４１…赤外線フィルタ
７４２…レンズ
７４３…撮像素子
７４４…画像処理回路
７５…通信部
７５１…マイコン
７５２…メモリ
７５３…無線モジュール
７５４…アンテナ
７００…基板
７０１…加速度センサ
７０２…ＬＥＤ
７０３…水晶振動子
７０４…バイブレータ
７０５…電池
【図１】
2008043589.tif 000003
【図２】
2008043589.tif 000004
【図３】
2008043589.tif 000005
【図４】
2008043589.tif 000006
【図５】
2008043589.tif 000007
【図６】
2008043589.tif 000008
【図７】
2008043589.tif 000009
【図８】
2008043589.tif 000010
【図９】
2008043589.tif 000011
【図１０】
2008043589.tif 000012
【図１１】
2008043589.tif 000013
【図１２】
2008043589.tif 000014
【図１３】
2008043589.tif 000015
【図１４】
2008043589.tif 000016
【図１５】
2008043589.tif 000017
【図１６】
2008043589.tif 000018
【図１７】
2008043589.tif 000019
【図１８】
2008043589.tif 000020
【図１９】
2008043589.tif 000021