(57)【要約】    【構成】  ゲーム装置１０は表示装置２６を含み、表示装置にはゲーム画面（１００）が表示される。たとえば、ゲーム画面（１００）には、プレイヤキャラクタ（１０２）、ノンプレイヤキャラクタ（１０４）および背景オブジェクトなどが表示される。ゲーム画面に対応するゲーム画像の描画を終えたとき、Ｚバッファ２０ｂからＺ値の最小値が取得され、この最小値が所定の閾値未満である場合に、次のフレームのゲーム画像を描画するときに、仮想カメラ（２００）に近い対象のオブジェクト（１０２、１０４）の検出を行い、所定の基準値よりも近い対象オブジェクトの透明度を高くする。    【効果】  仮想カメラに近いオブジェクトを毎フレーム検出する必要がないため、処理コストを削減することができる。【選択図】  図１
2018147002.tif 000002
【特許請求の範囲】
【請求項１】
画像処理装置のコンピュータで実行される画像処理プログラムであって、
所定の描画期間毎に、Ｚバッファを用いて、仮想空間内に配置された仮想カメラに基づいた画像の描画処理を行う描画ステップと、
前記描画処理後に、前記Ｚバッファ内に奥行き値が所定の値より小さい部分があるか否かを判断する判断ステップと、
前回の描画時における前記判断ステップにおいて、奥行き値が所定の値より小さい部分があると判断された場合に、前記仮想空間内において、前記仮想カメラに所定の基準よりも近いオブジェクトの検出を行う検出ステップとを前記コンピュータに実行させ、
前記描画ステップはさらに、前記検出ステップにおいて検出された前記仮想カメラに近いオブジェクトに対して透明度を高くして、または表示されないようにして、前記仮想空間の描画を行う、画像処理プログラム。
【請求項２】
前記判断ステップは、前記Ｚバッファ内の奥行き値の最小値が所定の閾値より小さいか否かを判断することで、奥行き値が所定の値より小さい部分があるか否かを判断する、請求項１記載の画像処理プログラム。
【請求項３】
前記オブジェクトには、描画対象となるモデルと、描画対象とならない簡易形状が定義され、
前記検出ステップは、検出の対象となるオブジェクトのそれぞれについて、前記簡易形状と前記仮想カメラの位置関係に基づいて、前記所定の基準よりも近い前記オブジェクトの検出を行う、請求項１または２記載の画像処理プログラム。
【請求項４】
前記検出ステップは、前記仮想カメラの撮影範囲に基づいて前記仮想空間の一部に設定された探索範囲において前記所定の基準よりも近いオブジェクトの候補を検出する、請求項３記載の画像処理プログラム。
【請求項５】
前記簡易形状は、仮想空間内においてオブジェクト同士の衝突判定に用いられる簡易形状である、請求項３または４記載の画像処理プログラム。
【請求項６】
前記検出ステップは、前記簡易形状と前記仮想カメラのニアクリップ面との距離に基づいて、前記所定の基準よりも近い前記オブジェクトの検出を行う、請求項３ないし５のいずれかに記載の画像処理プログラム。
【請求項７】
ユーザの操作に基づいて前記仮想カメラを制御するカメラ制御ステップを前記コンピュータにさらに実行させる、前記１ないし６のいずれかに記載の画像処理プログラム。
【請求項８】
ユーザの操作に基づいて前記仮想空間におけるプレイヤキャラクタの動作を制御し、前記プレイヤキャラクタの移動に従って前記仮想カメラを移動させるカメラ移動ステップを前記コンピュータにさらに実行させる、請求項１ないし７のいずれかに記載の画像処理プログラム。
【請求項９】
所定の描画期間毎に、Ｚバッファを用いて、仮想空間内に配置された仮想カメラに基づいた画像の描画処理を行う描画手段と、
前記描画処理後に、前記Ｚバッファ内に奥行き値が所定の値より小さい部分があるか否かを判断する判断手段と、
前回の描画時における前記判断手段において、奥行き値が所定の値より小さい部分があると判断された場合に、前記仮想空間内において前記仮想カメラに所定の基準よりも近いオブジェクトの検出を行う検出手段を備え、
前記描画手段はさらに、前記検出手段において検出された前記仮想カメラに近いオブジェクトに対して透明度を高くして、または表示されないようにして、前記仮想空間の描画を行う、画像処理システム。
【請求項１０】
前記判断手段は、前記Ｚバッファ内の奥行き値の最小値が所定の閾値より小さいか否かを判断することで、奥行き値が所定の値より小さい部分があるか否かを判断する、請求項９記載の画像処理システム。
【請求項１１】
前記オブジェクトには、描画対象となるモデルと、描画対象とならない簡易形状が定義され、
前記検出手段は、検出の対象となるオブジェクトのそれぞれについて、前記簡易形状と前記仮想カメラの位置関係に基づいて、前記所定の基準よりも近い前記オブジェクトを検出する、請求項９または１０記載の画像処理システム。
【請求項１２】
前記検出手段は、前記仮想カメラの撮影範囲に基づいて前記仮想空間の一部に設定された探索範囲から前記所定の基準よりも近いオブジェクトの候補を検出する、請求項１１記載の画像処理システム。
【請求項１３】
前記簡易形状は、仮想空間内においてオブジェクト同士の衝突判定に用いられる簡易形状である、請求項１１または１２記載の画像処理プログラム。
【請求項１４】
前記検出手段は、前記簡易形状と前記仮想カメラのニアクリップ面との距離に基づいて、前記所定の基準よりも近い前記オブジェクトを検出する、請求項１１ないし１３のいずれかに記載の画像処理システム。
【請求項１５】
ユーザの操作に基づいて前記仮想カメラを制御するカメラ制御手段をさらに備える、請求項９ないし１４のいずれかに記載の画像処理システム。
【請求項１６】
ユーザの操作に基づいて前記仮想空間におけるプレイヤキャラクタの動作を制御し、前記プレイヤキャラクタの移動に従って前記仮想カメラを移動させるカメラ移動手段をさらに備える、請求項９ないし１５のいずれかに記載の画像処理システム。
【請求項１７】
Ｚバッファと、
所定の描画期間毎に、前記Ｚバッファを用いて、仮想空間内に配置された仮想カメラに基づいた画像の描画処理を行う描画処理部と、
前記描画処理後に、前記Ｚバッファ内に奥行き値が所定の値より小さい部分があるか否かを判断する判断処理部と、
前回の描画時における前記判断ステップにおいて、奥行き値が所定の値より小さい部分があると判断された場合に、前記仮想空間内において前記仮想カメラに所定の基準よりも近いオブジェクトの検出を行う検出処理部を備え、
前記描画処理部はさらに、前記検出処理部において検出された前記仮想カメラに近いオブジェクトに対して透明度を高くして、または表示されないようにして、前記仮想空間の描画を行う、画像処理装置。
【請求項１８】
（ａ）所定の描画期間毎に、Ｚバッファを用いて、仮想空間内に配置された仮想カメラに基づいた画像の描画処理を行うステップと、
（ｂ）前記描画処理後に、前記Ｚバッファ内に奥行き値が所定の値より小さい部分があるか否かを判断するステップと、
（ｃ）前回の描画時における前記判断ステップにおいて、奥行き値が所定の値より小さい部分があると判断された場合に、前記仮想空間内において前記仮想カメラに所定の基準よりも近いオブジェクトの検出を行うステップとを含み、
（ｄ）ステップ（ａ）はさらに、前記ステップ（ｃ）において検出された前記仮想カメラに近いオブジェクトに対して透明度を高くして、または表示されないようにして、前記仮想空間の描画を行う、画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は画像処理プログラム、画像処理システム、画像処理装置および画像処理方法に関し、特にたとえば、仮想カメラに近いオブジェクトの透明度を変化させる、画像処理プログラム、画像処理システム、画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
この種の画像処理装置の一例が特許文献１に開示されている。この特許文献１の立体視表示制御装置としてのゲーム装置は、仮想オブジェクトが存在する仮想空間について、右仮想カメラおよび左仮想カメラで撮影することにより右目用画像および左目用画像を生成して立体視可能にＬＣＤに表示する。このとき、プイレイヤオブジェクトが仮想カメラに近い位置に存在するときに、透明化した表示に変更する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−７４８８１
【発明の概要】
【発明が解決しようとする課題】
【０００４】
この特許文献１のゲーム装置では、プレイヤキャラクタの位置からカメラ位置までの撮影方向についての距離が基準値よりも大きいか否かでプレイヤキャラクタを透明化するかどうかが決定される。通常、プレイヤキャラクタの位置は、プレイヤキャラクタの足元の位置であるため、たとえば、プレイヤキャラクタがカメラに向かって手を伸ばした場合に、プレイヤキャラクタの手が部分的にカメラに設定されたニアクリップ面を超えてカメラに近づいてしまう場合がある。この場合、プレイヤキャラクタの手の内部が見えてしまうおそれがある。このような状況は開発者等が意図していないため、改善の余地があった。また、特許文献１のゲーム装置では、画像を生成（描画）する度に、プレイヤキャラクタの位置からカメラ位置までの撮影方向についての距離を算出する必要があり、処理コストについても改善の余地があった。
【０００５】
それゆえに、この発明の主たる目的は、新規な、画像処理プログラム、画像処理システム、画像処理装置および画像処理方法を提供することである。
【０００６】
また、この発明の他の目的は、カメラに近いオブジェクトの検出精度を確保した上で、処理コストを削減することができる、画像処理プログラム、画像処理システム、画像処理装置および画像処理方法を提供することである。
【課題を解決するための手段】
【０００７】
第１の発明は、画像処理装置のコンピュータで実行される画像処理プログラムであって、描画ステップと、判断ステップと、検出ステップとをコンピュータに実行される。描画ステップは、所定の描画期間毎に、Ｚバッファを用いて、仮想空間内に配置された仮想カメラに基づいた画像の描画処理を行う。判断ステップは、描画処理後に、Ｚバッファ内に奥行き値が所定の値より小さい部分があるか否かを判断する。検出ステップは、前回の描画時における判断ステップにおいて、奥行き値が所定の値より小さい部分があると判断された場合に、仮想空間内において仮想カメラに所定の基準よりも近いオブジェクトの検出を行う。描画ステップはさらに、検出ステップにおいて検出された仮想カメラに近いオブジェクトに対して透明度を高くして、または表示されないようにして、仮想空間の描画を行う。
【０００８】
第１の発明によれば、Ｚバッファ内の奥行き値が所定の値よりも小さい部分がある場合に、仮想カメラに所定の基準よりも近いオブジェクトを検出する処理を実行するので、毎回検出ステップを実行する場合よりも処理コストを低減することができる。また、奥行き値に基づいて仮想カメラの近くに何らかのオブジェクトが配置されていることを判断した後に、仮想カメラに所定の基準値よりも近いオブジェクトの検出を行うので、少なくとも何かが仮想カメラの近くに存在する状況に限られ、所定の基準に余裕をもたせた判定を行っても、仮想カメラの近くに配置されたオブジェクトの検出を高い精度で行うことができる。つまり、検出精度を確保することができる。
【０００９】
第２の発明は、第１の発明に従属し、判断ステップは、Ｚバッファ内の奥行き値の最小値が所定の閾値より小さいか否かを判断することで、奥行き値が所定の値より小さい部分があるか否かを判断する。
【００１０】
第２の発明によれば、Ｚバッファの最小値を取得するだけなので、検出ステップを実行するか否かを判断するための処理負荷が増大することは無い。
【００１１】
第３の発明は、第１または第２の発明に従属し、オブジェクトには、描画対象となるモデルと、描画対象とならない簡易形状が定義される。検出ステップは、検出の対象となるオブジェクトのそれぞれについて、簡易形状と仮想カメラの位置関係に基づいて、所定の基準よりも近いオブジェクトの検出を行う。
【００１２】
第３の発明によれば、簡易形状を用いるので、複雑な形状のオブジェクトであっても、所定の基準よりも近いオブジェクトを容易に検出することができる。また、描画対象のオブジェクトが簡易形状からはみ出す場合があっても、Ｚバッファ内の奥行き値に基づいて近いオブジェクトがあることを判断した後に簡易形状を用いて所定の基準よりも近いオブジェクトの検出を行うので、検出精度を確保することができる。
【００１３】
第４の発明は、第３の発明に従属し、検出ステップは、仮想カメラの撮影範囲に基づいて仮想空間の一部に設定された探索範囲において所定の基準よりも近いオブジェクトの候補を検出する。
【００１４】
第４の発明によれば、仮想空間の一部に設定された探索範囲から所定の基準よりも近いオブジェクトの候補を検出するので、仮想空間に配置されるすべてのオブジェクトのうち、探索範囲に含まれる一部のオブジェクトについてのみ所定の基準値よりも近いか否かを判断すればよいため、出来る限り判断処理を軽減することができる。
【００１５】
第５の発明は、第３または第４の発明に従属し、簡易形状は、仮想空間内においてオブジェクト同士の衝突判定に用いられる簡易形状である。
【００１６】
第５の発明によれば、衝突判定のための簡易形状を用いるので、仮想カメラに所定の基準よりも近いオブジェクトを検出するための簡易形状を用意する必要がない。
【００１７】
第６の発明は、第３ないし第５の発明のいずれかに従属し、検出ステップは、簡易形状と仮想カメラのニアクリップ面との距離に基づいて、所定の基準よりも近いオブジェクトの検出を行う。
【００１８】
第６の発明によれば、仮想カメラとニアクリップ面との距離は一定であるため、仮想カメラのニアクリップ面との距離に基づいて、仮想カメラに所定の基準よりも近いオブジェクトを検出することもできる。
【００１９】
第７の発明は、第１ないし第６の発明に従属し、ユーザの操作に基づいて仮想カメラを制御するカメラ制御ステップをコンピュータにさらに実行させる。
【００２０】
第８の発明は、第１ないし第７の発明に従属し、ユーザの操作に基づいて仮想空間におけるプレイヤキャラクタの動作を制御し、プレイヤキャラクタの移動に従って仮想カメラを移動させるカメラ移動ステップをコンピュータにさらに実行させる。
【００２１】
第９の発明は、描画手段と、判断手段と、検出手段を備える、画像処理システムである。描画手段は、所定の描画期間毎に、Ｚバッファを用いて、仮想空間内に配置された仮想カメラに基づいた画像の描画処理を行う。判断手段は、描画処理後に、Ｚバッファ内に奥行き値が所定の値より小さい部分があるか否かを判断する。検出手段は、前回の描画時における判断ステップにおいて、奥行き値が所定の値より小さい部分があると判断された場合に、仮想空間内において仮想カメラに所定の基準よりも近いオブジェクトの検出を行う。描画手段はさらに、検出手段において検出された仮想カメラに近いオブジェクトに対して透明度を高くして、または表示されないようにして、仮想空間の描画を行う。
【００２２】
第１０の発明は、Ｚバッファと、描画処理部と、判断処理部と、検出処理部を備える、画像処理装置である。描画処理部は、所定の描画期間毎に、Ｚバッファを用いて、仮想空間内に配置された仮想カメラに基づいた画像の描画処理を行う。判断処理部は、描画処理後に、Ｚバッファ内に奥行き値が所定の値より小さい部分があるか否かを判断する。検出処理部は、前回の描画時における判断ステップにおいて、奥行き値が所定の値より小さい部分があると判断された場合に、仮想空間内において仮想カメラに所定の基準よりも近いオブジェクトの検出を行う。描画処理部はさらに、検出処理部において検出された仮想カメラに近いオブジェクトに対して透明度を高くして、または表示されないようにして、仮想空間の描画を行う。
【００２３】
第１１の発明は、（ａ）所定の描画期間毎に、Ｚバッファを用いて、仮想空間内に配置された仮想カメラに基づいた画像の描画処理を行うステップと、（ｂ）描画処理後に、Ｚバッファ内に奥行き値が所定の値より小さい部分があるか否かを判断するステップと、（ｃ）前回の描画時における判断ステップにおいて、奥行き値が所定の値より小さい部分があると判断された場合に、仮想空間内において仮想カメラに所定の基準よりも近いオブジェクトの検出を行うステップとを含み、（ｄ）ステップ（ａ）はさらに、ステップ（ｃ）において検出された仮想カメラに近いオブジェクトに対して透明度を高くして、または表示されないようにして、仮想空間の描画を行う、画像処理方法である。
【００２４】
第９ないし第１１の発明においても、第１の発明と同様に、カメラに近いオブジェクトの検出精度を確保した上で、処理コストを削減することができる。
【発明の効果】
【００２５】
この発明によれば、カメラに近いオブジェクトの検出精度を確保した上で、処理コストを削減することができる。
【００２６】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００２７】
【図１】図１はゲーム装置の電気的な構成の限定しない一例を示すブロック図である。
【図２】図２は図１に示す表示装置に表示されるゲーム画面の限定しない第１の例を示す図解図である。
【図３】図３は図２に示すゲーム画面が表示される場合のシーンの一部を横方向から見た場合の限定しない一例を示す図解図である。
【図４】図４は図３において仮想カメラをノンプレイヤキャラクタに近づけた状態の一例を示す図解図である。
【図５】図５は図４に示す場合において表示装置に表示されるゲーム画面の限定しない第２の例を示す図解図である。
【図６】図６は図１に示す表示装置に表示されるゲーム画面の限定しない第３の実施例を示す図解図である。
【図７】図７（Ａ）は仮想カメラの撮影範囲を仮想ゲーム空間の真上方向から俯瞰的に見た図解図であり、図７（Ｂ）は視点とファークリップ面で構成された錐体を視点の斜め後方から見た図解図である。
【図８】図８は対象のオブジェクトに定義される簡易形状の限定しない一例および仮想カメラと簡易形状との距離を示す図解図である。
【図９】図９は図１に示すメインメモリのメモリマップの限定しない一例を示す図解図である。
【図１０】図１０は図１に示すＣＰＵのゲーム全体処理の限定しない一例の一部を示すフロー図である。
【図１１】図１１は図１に示すＣＰＵのゲーム全体処理の他の一部であって、図１０に後続するフロー図である。
【発明を実施するための形態】
【００２８】
図１を参照して、限定しない画像処理装置の一例であるゲーム装置１０はＣＰＵ１２を含み、ＣＰＵ１２は、入力装置１４、ディジタル／アナログ（Ｄ／Ａ）変換器１６、メインメモリ２０、ＧＰＵ２２およびインターフェイス（I／Ｆ）２４に接続される。また、ゲーム装置１０は、スピーカ１８および表示装置２６を含む。ＣＰＵ１２は、Ｄ／Ａ変換器１６を介してスピーカ１８に接続され、Ｉ／Ｆ２４を介して表示装置２６に接続される。
【００２９】
ただし、画像形成装置は、ゲーム装置１０に限定される必要はなく、汎用のＰＣ（デスクトップＰＣ、ノートＰＣ、タブレットＰＣなどの各種のＰＣ）、携帯電話機またはスマートフォンでもよい。また、ゲーム装置１０としては、携帯型のゲーム装置、据置型のゲーム装置、または、携帯型と据置型との切り替えが可能なゲーム装置を用いることができ、アーケードゲーム機を用いることもできる。据置型のゲーム装置の場合、ゲーム装置本体に、テレビジョン受像機のようなモニタおよびコントローラが接続されるため、この場合には、ゲームシステム（画像処理システム）と呼ぶことができる。
【００３０】
ＣＰＵ１２は、ゲーム装置１０の全体制御を司る。入力装置１４は、たとえば、ゲーム装置１０に設けられる各種の押しボタンないしスイッチであり、または、ゲーム装置１０の本体に有線または無線で接続され、各種の押しボタンないしスイッチを含むコントローラである。入力装置１４は、ユーザないしプレイヤ（以下、単に「プレイヤ」という）によって、メニュー選択、ゲーム操作、および、仮想カメラの移動およびズームなどの各種の操作ないし入力に用いられる。ただし、入力装置１４としては、タッチパネルなどのポインティングデバイス、マイクおよびカメラなどの入力手段が、押しボタンないしスイッチに代えて、または、押しボタンないしスイッチとともに設けられてもよい。また、タッチパネルは、後述する表示装置２６に組み込まれる場合もある。この場合の表示装置２６は、タッチパネル一体型表示装置である。
【００３１】
Ｄ／Ａ変換器１６は、ＣＰＵ１２から与えられる音声データをアナログのゲーム音声に変換し、スピーカ１８に出力する。ただし、ゲーム音声は、ゲームのキャラクタないしオブジェクトの擬制音、効果音、音楽（ＢＧＭ）のようなゲームに必要な音を意味する。
【００３２】
メインメモリ２０は、揮発性のメモリであり、ＣＰＵ１２のワークメモリやバッファメモリとして使用され、フレームバッファ２０ａおよびＺバッファ（デプスバッファとも呼ばれる）２０ｂが設けられる。
【００３３】
ただし、フレームバッファ２０ａおよびＺバッファ２０ｂは、後述するＧＰＵ２２がアクセス可能なメモリであれば、メインメモリ２０以外のメモリに設けられてもよい。
【００３４】
メインメモリ２０は、ＧＰＵ２２がグラフィクスコマンド（作画命令）を実行するために必要な画像生成データ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。
【００３５】
フレームバッファ２０ａは、たとえばラスタスキャンモニタ（表示装置２６）の１フレーム分の画像データを描画または蓄積しておくためのメモリであり、ＧＰＵ２２によって１フレーム（たとえば、１／６０秒）毎に書き換えられる。具体的には、フレームバッファ２０ａは、１画素（ピクセル）毎に、画像の色情報を順序立てて記憶している。ここで、色情報は、Ｒ、Ｇ、Ｂ、Ａについてのデータであり、たとえば、８ビットのＲ（赤）データ、８ビットのＧ（緑）データ、８ビットのＢ（青）データおよび８ビットのＡ（アルファ）データである。Ａデータは、マスク（マット画像）についてのデータである。ＣＰＵ１２がフレームバッファ２０ａの画像データを読み出し、Ｉ／Ｆ２４を介して表示装置２６に出力することによって、表示装置２６の画面上に３次元（３Ｄ）のゲーム画像が表示される。
【００３６】
また、Ｚバッファ２０ｂは、フレームバッファ２０ａに対応する画素数×１画素当たりの奥行きデータ（奥行き情報）のビット数に相当する記憶容量を有し、フレームバッファ２０ａの各記憶位置に対応するドットの奥行きデータ（Ｚ値）を記憶するものである。
【００３７】
また、メインメモリ２０は、ゲーム装置１０で実行されるゲームのアプリケーションについてのプログラムを記憶する。ただし、アプリケーションは、ゲームのアプリケーションに限定される必要は無く、文書作成アプリケーション、電子メールアプリケーション、お絵描きアプリケーション、文字練習用アプリケーション、語学トレーニングアプリケーション、学習アプリケーションなどの様々なアプリケーションも実行可能である。
【００３８】
図示は省略するが、アプリケーショのプログラムは、ゲーム装置１０に内蔵されるＨＤＤおよびＲＯＭのような不揮発性のメモリに記憶されており、不揮発性のメモリから読み出され、メインメモリ２０に記憶される。また、ゲーム装置１０に装着可能なＳＤカード、メモリスティックまたは光学ディスクのような外部メモリからアプリケーションのプログラムを読み出し、メインメモリ２０に記憶するようにしてもよい。さらに、ゲーム装置１０が通信機能を備える場合には、通信可能に接続された外部のコンピュータからアプリケーションのプログラムをダウンロードし、メインメモリ２０に記憶するようにしてもよい。これらについては、いずれか１つの方法または２つ以上の方法が採用される。
【００３９】
ＧＰＵ２２は、描画手段の一部を形成し、ＣＰＵ１２からのグラフィクスコマンドに従って画像データを生成する。より具体的には、ＧＰＵ２２は、グラフィクスコマンドに従って３Ｄグラフィックスの表示に必要な計算処理、たとえば、レンダリングの前処理にあたる３Ｄ座標から２Ｄ座標への座標変換などの処理およびテクスチャマッピングなどの最終的なレンダリング処理を行うことで、画像データを生成する。ここで、テクスチャマッピングとは、ピクセル単位で、ポリゴンの色とテクスチャの色を合成して最終的な色をピクセル単位で出力する処理を意味する。
【００４０】
表示装置２６は、ＬＣＤまたは有機ＥＬディスプレイであり、ゲーム装置１０に一体的に設けられる。ただし、ゲーム装置１０の本体にテレビモニタのような表示装置２６が接続される場合もある。
【００４１】
なお、図１に示すゲーム装置１０の電気的な構成は単なる一例であり、これに限定される必要はない。
【００４２】
上述したようなゲーム装置１０では、仮想空間内（仮想ゲーム空間内）で進行するゲームをプレイすることができる。この実施例のゲームでは、プレイヤキャラクタ１０２（図２参照）は、プレイヤの操作に従って、仮想のゲーム空間内に設定されたマップ内を自由に移動することができる。プレイヤキャラクタ１０２は、仮想のゲーム空間内において、敵キャラクタと闘ったり、アイテムを取得したり、目的の場所ないし位置に到達したりして、最終的な目的を達成する。
【００４３】
なお、この実施例のゲームでは、プレイヤキャラクタ１０２の体力値が無くなる（０になる）と、ゲームオーバになる。たとえば、体力値は、プレイヤキャラクタ１０２が移動するなどの動作を行うことにより減少される。プレイヤキャラクタ１０２が敵キャラクタからの攻撃を受けた場合またはプレイヤキャラクタ１０２が谷底に落ちるなどして仮想のゲーム空間外に出た場合（ミスした場合）にも、ゲームオーバになる。一方、プレイヤキャラクタ１０２が食べ物を食べたり、薬を飲んだり、睡眠を取ったりすることにより、体力値は増加される。
【００４４】
図２には、この実施例のゲームにおいて、表示装置２６に表示されるゲーム画面１００の一例が示される。詳細な説明は省略するが、仮想ゲーム空間内に、草木（花も含む）オブジェクト、地形オブジェクトおよび建物オブジェクトのような仮想オブジェクト（背景オブジェクト）が設けられるとともに、プレイヤキャラクタ１０２が配置される。また、仮想ゲーム空間内には、敵キャラクタまたは村人キャラクタなどのノンプレイヤキャラクタ１０４も配置される。さらに、仮想ゲーム空間内には、アイテム（図示せず）などの他のノンプレイヤキャラクタ１０４も配置される。このような仮想ゲーム空間を仮想カメラ２００（図３参照）で撮影した画像がゲーム画面１００として表示装置２６に表示される。
【００４５】
具体的には、キャラクタないしオブジェクト（以下、単に「オブジェクト」という）が３Ｄの仮想ゲーム空間内に配置（モデリング）され、仮想カメラ２００（視点）から見た３Ｄ画像（仮想カメラ２００の撮影画像）が、仮想カメラ２００の位置が原点となるように、視点座標ないしはカメラ座標に座標変換される。座標変換された画像は、視点位置を中心として、スクリーン（投影スクリーンまたは仮想スクリーン）上に透視投影される（透視投影変換）。投影スクリーン上に投影された画像が、ゲーム画面１００として、Ｚバッファ法に従って表示装置２６に表示される。
【００４６】
ただし、オブジェクトは、ローカル座標系で規定されるモデルで表現（定義）されており、そのモデルに基づき、ワールド座標系（仮想ゲーム空間内）に配置される。
【００４７】
ここで、Ｚバッファ法では、ゲーム画面１００などの画面を構成する各画素（ピクセル）に色情報（ＲＧＢ値）の他に奥行き情報（Ｚ値）が持たされ、フレームバッファ２０ａに画像を描画する際には同じ座標のピクセルの奥行き情報を比較して、より手前にあるものがフレームバッファ２０ａに書き込まれる。より具体的には、Ｚバッファ法では、仮想カメラ２００から遠い（奥側の）オブジェクトから描画され、フレームバッファ２０ａの所定のピクセルにオブジェクトを描画する際に、当該オブジェクトの表面のＺ値がＺバッファ２０ｂに保存される。次に、同じピクセル（以下、「対象のピクセル」ということがある）に別のオブジェクトが描画されることになった場合、上記保存されたＺ値と今回描画する別のオブジェクトのＺ値の大きさが比較される。
【００４８】
別のオブジェクトのＺ値の方が大きい場合には、つまり仮想カメラ２００から見て別のオブジェクトが既に描画されたオブジェクト（描画済みのオブジェクト）よりも奥にあれば、手前の描画済みのオブジェクトに隠れて見えないため、新たに対象のピクセルへの描画処理は実行されない。
【００４９】
逆に、今回のＺ値の方が小さい場合には、つまり仮想カメラ２００から見て今回描画する別のオブジェクトが既に描画されたオブジェクトよりも手前にあれば、新たに対象のピクセルへの描画処理が実行される。つまり、対象のピクセルに別のオブジェクトが描画（上書き）される。このとき、別のオブジェクトが不透明である場合には、既に描画されたオブジェクトと書換えられることになるが、別のオブジェクトが不透明でない場合には、既に描画されたオブジェクトの手前（前面）に別のオブジェクトが半透明または透明で描画される。
【００５０】
通常、仮想カメラ２００は、プレイヤキャラクタ１０２の後方に所定の位置関係を有して配置され、プレイヤキャラクタ１０２に追従する。仮想カメラ２００の向きも所定の向きに決定される。この実施例では、プレイヤキャラクタ１０２の所定の位置（中心（腰）の位置）に注視点が設定され、注視点を向くように仮想カメラ２００の向きが決定される。また、仮想カメラ２００の画角は、所定の画角に設定される。ただし、仮想カメラ２００の画角は、シーン１５０に応じて適宜変更されてもよい。また、仮想カメラ２００は、プレイヤの操作に従って、位置、向きおよび画角の少なくとも１つが変化（制御）される場合もある。この場合には、仮想カメラ２００は、プレイヤキャラクタ１０２に追従しない。
【００５１】
図３は図２に示すゲーム画面１００が表示される場合のシーン１５０の一部を仮想カメラ２００とは異なる視点から見た場合の限定しない一例を示す図解図である。この図３においては（後述する図４も同様）、プレイヤキャラクタ１０２と仮想カメラ２００の間に存在する（配置される）ノンプレイヤキャラクタ１０４と、仮想カメラ２００との距離ｄ（位置関係）を分かり易く示すために、仮想カメラ２００を図示してある。また、図３には、仮想カメラ２００の撮影範囲２５０の一部が図示される。この図３に示す仮想カメラ２００の撮影画像が図２に示すゲーム画面１００に相当する。
【００５２】
図３からも分かるように、仮想カメラ２００を基準にすると、プレイヤキャラクタ１０２よりも近くにノンプレイヤキャラクタ１０４が存在する。また、ノンプレイヤキャラクタ１０４は、ニアクリップ面２５２よりも仮想カメラ２００から離れている。このため、図２に示すように、ノンプレイヤキャラクタ１０４は、ゲーム画面１００において、プレイヤキャラクタ１０２よりも手前に表示されている。
【００５３】
図２および図３に示す場合では、プレイヤキャラクタ１０２はノンプレイヤキャラクタ１０４に背中を向けるように立ち、遠く（画面の奥の方）を向いている。また、ノンプレイヤキャラクタ１０４は、地面にしゃがんで、正面（画面の手前の方）を向いている。
【００５４】
図４は図３に示す状態から仮想カメラ２００をノンプレイヤキャラクタ１０４に近づけた場合のシーン１５０の限定しない一例を示す図解図である。図５は図４に示す状態において仮想カメラ２００で撮影された撮影画像に対応するゲーム画面１００の一例を示す図解図である。
【００５５】
図２および図３に示す状態において、プレイヤの操作に従って、プレイヤキャラクタ１０２が移動されると、仮想カメラ２００も、プレイヤキャラクタ１０２の移動に従って移動される。プレイヤキャラクタ１０２がゲーム画面１００の奥の方（ここでは、ノンプレイヤキャラクタ１０４から離れる方向）に移動すると、それに従って仮想カメラ２００も移動される。このとき、図４に示すように、仮想カメラ２００は、ノンプレイヤキャラクタ１０４に近づく。言い換えると、ニアクリップ面２５２がノンプレイヤキャラクタ１０４に接近する。この図４に示す状態において、仮想カメラ２００で撮影された撮影画像に対応するゲーム画面１００では、図５からも分かるように、ノンプレイヤキャラクタ１０４がアップで表示される（大きく表示される）。
【００５６】
したがって、たとえば、プレイヤキャラクタ１０２、ノンプレイヤキャラクタ１０４および仮想カメラ２００が一直線上に並ぶ場合には、プレイヤキャラクタ１０２の全部がノンプレイヤキャラクタ１０４に隠れてしまい、プレイヤがプレイヤキャラクタ１０２を視認できないことがある。また、プレイヤキャラクタ１０２の一部がノンプレイヤキャラクタ１０４に隠れる場合またはノンプレイヤキャラクタ１０４に隠れない場合であっても、ゲーム画面１００の見た目が悪く、プレイヤがプレイヤキャラクタ１０２またはゲーム画面１００を見難いことがある。仮想カメラ２００がさらにノンプレイヤキャラクタ１０４に近づいた場合には、仮想カメラ２００のニアクリップ面２５２がノンプレイヤキャラクタ１０４のモデルに入り込んでしまい、ノンプレイヤキャラクタ１０４の内側が描画されてしまうことになる。そのような場合、何が描画されているのか分かり難くなり、ゲーム画面１００の見た目が悪くなる。
【００５７】
このため、この実施例では、仮想カメラ２００が対象のオブジェクトに近づいたかどうかを判断し、近づいたことが判断された対象のオブジェクトを透明または半透明で表示するようにしてある。つまり、仮想カメラ２００に近い対象のオブジェクトの透明度が高くなるように仮想空間が描画される。ここで、対象のオブジェクトは、所定の基準よりも仮想カメラ２００の近くに配置された場合に、透明または半透明で表示する処理が実行されるオブジェクトを意味する。
【００５８】
図６は図４に示した場合からさらに仮想カメラ２００がノンプレイヤキャラクタ１０４に近づいたことに応じて、ノンプレイヤキャラクタ１０４を半透明で描画した場合のゲーム画面１００を示す。このように、ノンプレイヤキャラクタ１０４を半透明で描画した場合には、ノンプレイヤキャラクタ１０４を透過して、ノンプレイヤキャラクタ１０４の背面側に存在するオブジェクトを視認することができる。当然のことながら、ノンプレイヤキャラクタ１０４が透明で（表示装置２６に表示されないように）描画された場合にも同様のことが言える。
【００５９】
なお、図３−図６に示した例では、プレイヤの操作に従ってプレイヤキャラクタ１０２が移動される場合にその移動に従って仮想カメラ２００が移動される場合について説明したが、プレイヤの操作に従って仮想カメラ２００が移動さる場合についても同様である。したがって、仮想カメラ２００がプレイヤキャラクタ１０２に近づく場合には、プレイヤキャラクタ１０２が半透明または透明にされることもある。
【００６０】
この実施例では、Ｚバッファ法により描画処理が実行されるため、まず、描画後にＺバッファ２０ｂに保存されたＺ値に基づいて仮想カメラ２００の近くに何らかのオブジェクトが存在するかどうかが判断される。Ｚ値に基づいて仮想カメラ２００の近くに何らかのオブジェクトが存在することが判断された場合には、次の描画処理に先立って、位置情報に基づいて仮想カメラ２００の近くに対象のオブジェクトが配置されているかどうかが判断される。仮想カメラ２００の近くに配置されたオブジェクトについては、描画処理において、透明度を高くして描画される、または、表示装置２６に表示されないように描画される。
【００６１】
具体的には、フレームバッファ２０ａに１フレーム分の画像を描画し終えたときに、Ｚバッファ２０ｂに保存された各ピクセルのＺ値から最小値を取得し、Ｚ値の最小値が所定の閾値（第１閾値）よりも小さいかどうかを判断する。つまり、Ｚバッファ２０ｂ内に、第１閾値よりも小さいＺ値が保存された部分（ピクセル）があるかどうかが判断される。対象のオブジェクトは、複数種類有り、各対象のオブジェクトの形状および大きさは異なるため、第１閾値は、すべての対象のオブジェクトがニアクリップ面２５２に接触することが無い値に設定される。ただし、この実施例では、前回のフレームの描画結果から得られたＺ値に基づいて仮想カメラ２００の近くに何らかのオブジェクトが存在するかどうかを判断するため、第１閾値は、仮想カメラ２００やオブジェクトが移動したとしても、次の描画時に何らかのオブジェクトがニアクリップ面２５２に接触することが無いような値に設定される。第１閾値は後述する第２閾値が示す距離よりも長い距離に相当する値に設定される。
【００６２】
Ｚ値の最小値が第１閾値以上である場合には、仮想カメラ２００の近くにオブジェクトが配置されていない（存在しない）と判断して、オブジェクトのＡデータを最大値（Ａ＝１）から低減しないで、次のフレームの画像についての描画処理が実行される。
【００６３】
一方、Ｚ値の最小値が第１閾値よりも小さい場合には、仮想カメラ２００の近くに何らかのオブジェクトが配置されている（存在する）可能性があると判断して、仮想カメラ２００の近くに配置されている対象のオブジェクトが探索される。つまり、仮想ゲーム空間内に配置されるすべての対象のオブジェクトのうち、仮想カメラ２００の近くに配置される対象のオブジェクトが検出される。つまり、半透明または透明にする対象のオブジェクトの候補が検出されるのである。
【００６４】
ただし、対象のオブジェクトが、ニアクリップ面２５２よりも仮想カメラ２００の近くに配置され、または、仮想カメラ２００から遠くに配置され、数フレームから数十フレーム程度の短時間において、移動または変形した場合であっても、ニアクリップ面２５２に接触しないまたは引っ掛からない場合には、ゲーム画面１００に表示されることが無いため、仮想カメラ２００に近過ぎる範囲および仮想カメラ２００から遠過ぎる範囲については、対象のオブジェクトを探索しない。ただし、仮想カメラ２００の画角の右端および左端の外側に対象のオブジェクトが配置されている場合であっても、オブジェクトが短時間において移動または変形した場合に、ニアクリップ面２５２に接触する可能性がある場合には、ゲーム画面１００に表示されるため、画角からはみ出ている範囲であっても、対象のオブジェクトを探索する必要がある。
【００６５】
この実施例では、オブジェクトの変形とは、手または／および足を伸ばしたり、大きさが変化したり、オブジェクトが武器のようなアイテムを装備または所持したりすることにより、オブジェクトの形状または／および大きさが変わることを意味する。
【００６６】
したがって、図７（Ａ）および図７（Ｂ）において点線で示すような範囲が探索範囲２６０として設定される。図７（Ａ）は３Ｄの仮想ゲーム空間の一部を真上から俯瞰的に見た図解図である。図７（Ｂ）は仮想カメラ２００から仮想ゲーム空間を見た場合に、ニアクリップ面２５２とファークリップ面２５４を設定し、仮想カメラ２００（視点）とファークリップ面２５４で決定されるピラミッド状の錐体（四角錐）２５０ａを仮想カメラ２００の斜め後方から見た図解図である。ただし、錐体２５０ａのうち、ニアクリップ面２５２とファークリップ面２５４とで挟まれる四角錐台の部分が視体積である。また、図７（Ａ）および図７（Ｂ）では、各種のオブジェクトは省略してある。
【００６７】
図７（Ａ）および図７（Ｂ）に示すように、探索範囲２６０は、撮影範囲２５０に基づいて仮想ゲーム空間の一部に設定される。具体的には、探索範囲２６０は、ニアクリップ面２５２をその内部に含み、対象のオブジェクトが短時間において移動または変形した場合であっても、ニアクリップ面２５２に接触または引っ掛からない（跨がない）程度の大きさ（範囲）である。このことは、撮影範囲２５０の左右方向のみならず、上下方向についても該当する。上述したように、対象のオブジェクトは、複数種類有り、各対象のオブジェクトの形状および大きさは異なるため、探索範囲２６０の大きさは、各対象のオブジェクトの形状および大きさを考慮して設定される。図７（Ａ）に示すように、仮想空間の一部を真上から俯瞰的に見た場合には、探索範囲２６０は、台形形状であり、図７（Ｂ）に示すように、仮想カメラ２００の斜め後方から見た場合には、四角錐台の形状である。ただし、探索範囲２６０は、直方体の形状に設定されてもよい。
【００６８】
探索範囲２６０内に配置されている対象のオブジェクトが検出された場合には、つまり、仮想カメラ２００の近くに対象のオブジェクトが配置されている場合には、この対象のオブジェクトと仮想カメラ２００との距離ｄが所定の閾値（第２閾値）未満であるかどうかが判断される。つまり、仮想カメラ２００の近くに配置されている対象のオブジェクトを半透明または透明にするべきかどうかが判断される。第２閾値（所定の基準値）は、仮想カメラ２００からニアクリップ面２５２までの距離Ｄに所定の余白（余裕）に相当する距離を加えた距離に設定される。このように第２閾値を設定するのは、上述したように、対象のオブジェクトは、種類によって形状および大きさが異なるからである。
【００６９】
なお、対象のオブジェクトが探索範囲２６０内に配置されているかどうかは、対象のオブジェクトの３次元位置が探索範囲２６０に含まれているかどうかで判断される。
【００７０】
また、仮想カメラ２００と対象のオブジェクトとの距離ｄを算出する場合には、対象のオブジェクトの描画されるモデルの形状のままでは、距離ｄの算出が複雑になり、処理コストがかかってしまう。したがって、この実施例では、簡易な形状（簡易形状）ＳＨを用いて、対象のオブジェクトと仮想カメラ２００との距離ｄが第２閾値未満であるかどうかを判定するようにしてある。
【００７１】
簡易形状ＳＨは、衝突判定（当り判定）に用いられる所定の形状である。この簡易形状ＳＨは仮想の形状であるため、描画されることは無い。図８に示すように、この実施例では、所定の形状は、カプセル形状である。すなわち、仮想ゲーム空間において縦方向に延びる所定長さの線分から一定距離となる部分を判定形状とする。なお、実際の判定のためには、カプセル形状のモデルを保持する必要があるわけではなく、当該線分と距離が定義されていればよい。ただし、所定の形状は、球形状または円筒形状であってもよい。また、簡易形状ＳＨと仮想カメラ２００の距離ｄは、簡易形状ＳＨと仮想カメラ２００の最短距離である。この実施例では、仮想ゲーム空間におけるプレイヤキャラクタ１０２の身長が１８０ｃｍに設定されており、所定の線分の長さは４０ｃｍ−５０ｃｍ程度であり、一定距離は、８０ｃｍ−１００ｃｍ程度に設定される。これは、プレイヤキャラクタ１０２などの通常の大きさのオブジェクトが手足を伸ばした場合に簡易形状ＳＨから対象のオブジェクトがはみ出さない大きさである。また、簡易形状ＳＨは、その最下点とプレイヤキャラクタ１０２などのオブジェクトの最下点が一致するように設定される。
【００７２】
上記のように、通常の大きさのオブジェクトが手足を伸ばした場合でもはみ出さない大きさに簡易形状ＳＨは設定されるが、大きいオブジェクトや一部が長いオブジェクトの場合には、一部が簡易形状ＳＨからはみ出す場合がある。このような場合、近いと判定する距離を長くして余裕をもたせることが考えられるが、単に距離を長くするだけではあまり仮想カメラ２００に近くないオブジェクトも検出されることになり、検出精度が下がる可能性がある。しかし、この実施例では、Ｚ値に基づいて仮想カメラ２００の近くに何らかのオブジェクトが配置されていることを判断した後に、簡易形状ＳＨを用いて仮想カメラ２００との距離ｄが第２閾値未満であるかどうかを判断するので、少なくとも何かが仮想カメラ２００の近くに存在する状況に限られ、第２閾値に余裕をもたせた判定を行っても、仮想カメラ２００の近くに配置された対象のオブジェクトの検出を高い精度で行うことができる。すなわち、検出精度を確保することができる。また、常に距離の判定を行う必要も無いため、処理コストが削減できる。
【００７３】
対象のオブジェクトのうち、簡易形状ＳＨと仮想カメラ２００との距離ｄが第２閾値以上である場合には、当該対象のオブジェクトは半透明または透明にされない。つまり、Ａデータの値は変化されない。一方、対象のオブジェクトのうち、簡易形状ＳＨと仮想カメラ２００との距離ｄが第２閾値未満である場合には、当該対象のオブジェクトは半透明または透明にされる。つまり、Ａデータの値が低減される。この実施例では、簡易形状ＳＨと仮想カメラ２００との距離ｄが第２閾値未満であることが判断される毎に（毎フレーム）、Ａデータの値が半分に低減される。つまり、次第に透明度が高くされる。ただし、Ａデータの値から所定の値が毎フレーム減算されるようにしてもよい。
【００７４】
なお、この実施例では、簡易形状ＳＨと仮想カメラ２００との距離ｄが第２閾値未満であるかどうかを判断するようにしてあるが、仮想カメラ２００とニアクリップ面２５２までの距離Ｄは一定であるため、簡易形状ＳＨとニアクリップ面２５２までの距離が所定の閾値未満であるかどうかを判断するようにしてもよい。
【００７５】
対象のオブジェクトが不透明である場合には、Ａデータの値は１（最大値）であり、フレームバッファ２０ａでは、既に描画されたオブジェクトと書換えられることになるが、対象のオブジェクトが不透明でない場合には、Ａデータの値は、０．０００１（最小値）以上最大値未満であり、既に描画されたオブジェクトの手前（前面）に対象のオブジェクトが半透明または略透明で描画される。この実施例では、Ａデータの最小値は“０．０００１”であり、これ以上は低減されない。
【００７６】
なお、この実施例では、Ａデータの最小値を“０．０００１”にしてあるが、これは、Ａ＝０の場合に、対象のオブジェクトが描画されないからである。対象のオブジェクトが描画されない場合には、当該対象のオブジェクトのＺ値がＺバッファ２０ｂに保存されないため、Ｚ値を用いて仮想カメラ２００の近くに対象のオブジェクトが配置されているかどうかを正しく判断することができない。したがって、別の実施例において、Ａ＝０の場合にもＺバッファ２０ｂが更新される前提であれば、最小値をＡ＝０としてもよい。なお、Ａ＝０の場合、オブジェクトは完全に透明にされる。
【００７７】
また、対象のオブジェクトが半透明または透明にされた後に、仮想カメラ２００との距離ｄが第２閾値以上になった場合には、Ａデータの値が増大される。この実施例では、簡易形状ＳＨと仮想カメラ２００との距離ｄが第２閾値以上であることが判断される毎に、Ａデータの値が倍数に増大される。つまり、次第に透明度が低くされる。ただし、Ａデータの値に所定の値が毎フレーム加算されるようにしてもよい。このようにすることで、見た目の急激な変化を抑え自然な見た目にすることができる。なお、Ａデータの最大値は“１”であり、これ以上は増大されない。
【００７８】
したがって、仮想カメラ２００との距離ｄが第２閾値よりも近い場合には、オブジェクトは次第に透明度（または不透明度）が増大（または低減）され、透明度（または不透明度）が増大（または低減）された後に、仮想カメラ２００との距離ｄが第２閾値よりも遠くなった場合には、オブジェクトは次第に透明度（または不透明度）が低減（または増大）される。このため、ゲーム画面１００またはオブジェクトの透明度（または不透明度）の変化が滑らかであり、自然な変化となる。
【００７９】
なお、図示は省略するが、透明度が変化されるのは対象のオブジェクト自体であり、対象のオブジェクトの影および光源として機能する対象のオブジェクトからの光については透明度を変化させない。ゲーム画面１００の見易さを考慮して、対象のオブジェクトを半透明または透明にしてあるだけであり、対象のオブジェクトの存在自体が無くなる訳ではないからである。たとえば、ランプを模したオブジェクトが透明にされた場合に、その明りも透明にしてしまうと、ランプを消していないにも拘わらず、ゲーム画面１００が暗くなってしまうので、ランプの光はそのままにする。
【００８０】
図９は図１に示したゲーム装置１０のメインメモリ２０のメモリマップ３００の一例を示す図解図である。図９に示すように、メインメモリ２０は、プログラム記憶領域３０２およびデータ記憶領域３０４を含む。プログラム記憶領域３０２には、この実施例のゲームのアプリケーションについてのプログラム（ゲームプログラム）が記憶され、ゲームプログラムは、メイン処理プログラム３０２ａ、画像生成プログラム３０２ｂ、画像表示プログラム３０２ｃ、音生成プログラム３０２ｄ、音出力プログラム３０２ｅ、操作検出プログラム３０２ｆ、オブジェクト制御プログラム３０２ｇ、仮想カメラ制御プログラム３０２ｈおよび最小値検出プログラム３０２ｉなどを含む。
【００８１】
メイン処理プログラム３０２ａは、この実施例のゲームについての全体処理（ゲーム全体処理）のメインルーチンを処理するためのプログラムである。
【００８２】
画像生成プログラム３０２ｂは、画像生成データ３０４ｂを用いてゲーム画像の画像データを生成するためのプログラムである。たとえば、仮想ゲーム空間が描画され、描画された仮想ゲーム空間が透視投影変換されて、Ｚバッファ法に従ってゲーム画面１００に対応するゲーム画像の画像データがフレームバッファ２０ａに生成（描画）される。画像表示プログラム３０２ｃは、画像生成プログラム３０２ｂに従って生成されたゲーム画像の画像データを表示装置２６に出力するためのプログラムである。
【００８３】
音生成プログラム３０２ｄは、ゲーム音声に対応する音声データを生成するためのプログラムである。音出力プログラム３０２ｅは、音生成プログラム３０２ｄに従って生成された音声データをＤ／Ａ変換器１６を介してスピーカ１８に出力するためのプログラムである。
【００８４】
操作検出プログラム３０２ｆは、プレイヤによる操作に応じて入力装置１４から入力された操作データを検出するためのプログラムである。検出された操作データは、後述する操作データバッファ３０４ａに記憶される。
【００８５】
オブジェクト制御プログラム３０２ｇは、操作データに従ってプレイヤキャラクタ１０２を移動等させたり、操作データに従わないでノンプレイヤキャラクタ１０４を配置したり（出現させたり）移動等させたりするためのプログラムである。仮想カメラ制御プログラム３０２ｈは、操作データに従って、または、操作データに従わないで、仮想カメラ２００の位置、向きおよび画角の少なくとも１つを制御するためのプログラムである。
【００８６】
最小値検出プログラム３０２ｉは、ゲーム画面１００が表示（更新）されたときに、つまり、１フレーム（所定の描画期間）が経過したときに、Ｚバッファ２０ｂからＺ値の最小値を検出するためのプログラムである。検出されたＺ値の最小値に対応する最小値データ３０４ｇは、データ記憶領域３０４に記憶される。
【００８７】
図示は省略するが、プログラム記憶領域３０２には、他のゲーム装置またはコンピュータと通信するための通信プログラムおよびゲームデータを不揮発性のメモリに保存するためのセーブプログラムなども記憶される。
【００８８】
データ記憶領域３０４には、図１にも示したように、フレームバッファ２０ａおよびＺバッファ２０ｂが設けられる。フレームバッファ２０ａおよびＺバッファ２０ｂについては既に説明してあるため、重複した説明は省略する。また、データ記憶領域３０４には、操作データバッファ３０４ａも設けられる。操作データバッファ３０４ａは、操作検出プログラム３０２ｆに従って検出された操作データを時系列に従って記憶する。操作データがＣＰＵ１２の処理に使用されると、操作データバッファ３０４ａから消去される。
【００８９】
また、データ記憶領域３０４には、画像生成データ３０４ｂ、プレイヤキャラクタデータ３０４ｃ、ノンプレイヤキャラクタデータ３０４ｄ、仮想カメラデータ３０４ｅ、対象データ３０４ｆおよび最小値データ３０４ｇなどのデータが記憶される。
【００９０】
操作データバッファ３０４ａは、入力装置１４からの操作データを一時記憶するための領域である。画像生成データ３０４ｂは、ゲーム画面１００の画像データなどを生成するためのポリゴンデータおよびテクスチャデータなどのデータである。
【００９１】
プレイヤキャラクタデータ３０４ｃは、仮想ゲーム空間内に配置されるプレイヤキャラクタ１０２の画像データ、プレイヤキャラクタ１０２の現在の３次元位置を示す座標データ、透明度および透明フラグを含む。透明フラグは、透明度の値を低減させるかどうかを判断するためのフラグである。透明フラグがオンである場合には、透明度の値が低減される。一方、透明フラグがオフであり、透明度の値が１未満である場合には、透明度の値が増大される。この透明度の値が色情報のＡデータの値に反映される。後述するノンプレイヤキャラクタデータ３０４ｄに含まれる透明度および透明フラグも同様である。
【００９２】
ノンプレイヤキャラクタデータ３０４ｄは、仮想ゲーム空間内に配置されるノンプレイヤキャラクタ１０４の画像データ、ノンプレイヤキャラクタ１０４の現在の３次元位置を示す座標データ、透明度および透明フラグを含む。ただし、複数のノンプレイヤキャラクタ１０４が仮想ゲーム空間内に配置される場合には、各ノンプレイヤキャラクタ１０４についてのノンプレイヤキャラクタデータが記憶される。複数のノンプレイヤキャラクタのうち、半透明または透明にしないノンプレイヤキャラクタについては、つまり、対象のオブジェクト以外のオブジェクトについては、ノンプレイヤキャラクタデータに透明度および透明フラグは含まれない。
【００９３】
仮想カメラデータ３０４ｅは、仮想ゲーム空間における仮想カメラ（視点）２００の現在の３次元位置の座標データ、向き（視線方向）についてのデータ（基準方向からの角度データまたは注視点の座標データ）および画角についてのデータである。
【００９４】
対象データ３０４ｆは、探索範囲２６０内に存在することが検出された対象のオブジェクトを識別するためのデータである。最小値データ３０４ｇは、Ｚバッファ２０ｂから検出したＺ値の最小値についての数値データであり、毎フレーム更新される。
【００９５】
図示は省略するが、データ記憶領域３０４には、他のデータが記憶されるとともに、ゲーム処理（情報処理）に必要なフラグおよびカウンタ（タイマ）が設けられる。
【００９６】
図１０および図１１は、図１に示したＣＰＵ１２およびＧＰＵ２２によって実行されるゲーム全体処理についてのフロー図である。なお、図１０および図１１に示すフロー図の各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。
【００９７】
ゲーム装置１０の電源が投入されると、ゲーム全体処理の実行に先だって、ＣＰＵ１２は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ２０等の各コンポーネントが初期化される。そして、不揮発性のメモリ等からゲームプログラムが読み出され、メインメモリ２０に記憶され、ＣＰＵ１２によって当該ゲームプログラムの実行が開始される。
【００９８】
図１０に示すように、ＣＰＵ１２は、ゲーム全体処理を開始すると、ステップＳ１で、初期処理を実行する。初期処理では、たとえば、ＣＰＵ１２は、ゲーム画像を生成および表示するための仮想ゲーム空間を構築し、この仮想ゲーム空間に登場するプレイヤキャラクタ１０２およびノンプレイヤキャラクタ等のオブジェクトを初期位置に配置するとともに、この仮想ゲーム空間に登場する地面オブジェクトおよび山オブジェクト等の仮想オブジェクトを所定の位置に配置する。さらに、ＣＰＵ１２は、ゲーム制御処理で用いる各種パラメータの初期値を設定する。
【００９９】
続いて、ＣＰＵ１２は、ステップＳ３で、入力装置１４から入力される操作データを取得し、ステップＳ５で、ゲーム制御処理を実行する。たとえば、ＣＰＵ１２は、操作データに従って、プレイヤキャラクタ１０２を移動させ、または／および、プレイヤキャラクタ１０２に任意のアクションを実行させる。このとき、ＣＰＵ１２は、プレイヤキャラクタ１０２に追従するように仮想カメラ２００を移動させる。また、ＣＰＵ１２は、操作データに従わずに、敵キャラクタなどのノンプレイヤキャラクタ１０４を移動させ、または／および、ノンプレイヤキャラクタ１０４に任意のアクションを実行される。さらに、ＣＰＵ１２は、プレイヤキャラクタ１０２の勝敗または順位を判断する、または／および、ゲームクリアまたはゲームオーバを判断する。さらにまた、ＣＰＵ１２は、操作データに従って、仮想カメラ２００の位置、向きおよび画角の少なくとも１つを変化させる。ただし、通常、仮想カメラ２００は、プレイヤキャラクタ１０２を注視するとともに、当該プレイヤキャラクタ１０２と所定距離を保って追従するように仮想空間に配置されるが、プレイヤの操作によって、位置、向きおよび画角の少なくとも１つが変化された場合には、変化後の位置または／および向きに配置され、変更後の画角に設定される。ただし、プレイヤが操作しない場合にも、ゲームの文脈によって、自動的（強制的）に、仮想カメラ２００の位置、向きおよび画角の少なくとも１つが変化されることもある。
【０１００】
次のステップＳ７では、ＣＰＵ１２は、最小値データ３０４ｇが示すＺ値の最小値が第１閾値未満かどうかを判断する。最小値データ３０４ｇは、後述のステップＳ２７で前回記憶されたＺ値の最小値である。初回は所定の初期値が記憶されている。ステップＳ７で“ＮＯ”であれば、つまり、Ｚ値の最小値が第１閾値以上であれば、仮想カメラ２００の近くにオブジェクトは配置されていないと判断し、ステップＳ９で、ＣＰＵ１２は、すべての対象のオブジェクト（ノンプレイヤキャラクタデータ３０４ｄ）についての透明フラグをオフし、透明度を低減して、図１１に示すステップＳ２１に進む。ただし、ステップＳ９では、ＣＰＵ１２は、透明度が最小値である場合には、つまり、不透明に設定されている場合には、透明度を低減しない。
【０１０１】
一方、ステップＳ７で“ＹＥＳ”であれば、つまり、Ｚ値の最小値が第１閾値未満であれば、ステップＳ１１で、仮想カメラ２００に近い対象のオブジェクトを探す。つまり、ＣＰＵ１２は、探索範囲２６０に含まれる対象のオブジェクトを検出する。このとき、ＣＰＵ１２は、検出した１または複数の対象のオブジェクトを個別に識別するためのデータを対象データ３０４ｆとして記憶される。
【０１０２】
続いて、ステップＳ１３では、ＣＰＵ１２は、仮想カメラ２００に近い対象のオブジェクトを検出したかどうかを判断する。ステップＳ１３で“ＮＯ”であれば、つまり、仮想カメラ２００に近い対象のオブジェクトを検出していなければ、ステップＳ９に進む。一方、ステップＳ１３で“ＹＥＳ”であれば、つまり、仮想カメラ２００に近い対象のオブジェクトを検出すれば、ＣＰＵ１２は、ステップＳ１５で、仮想カメラ２００と簡易形状ＳＨの距離ｄを算出する。
【０１０３】
次のステップＳ１７では、ＣＰＵ１２は、ステップＳ１５で算出した距離ｄが第２閾値未満であるかどうかを判断する。つまり、ＣＰＵ１２は、半透明または透明にする対象のオブジェクトが有るかどうかを判断する。ステップＳ１７で“ＮＯ”であれば、つまり、ステップＳ１５で算出した距離ｄが第２閾値以上であれば、ステップＳ９に進む。一方、ステップＳ１７で“ＹＥＳ”であれば、つまり、ステップＳ１５で算出した距離ｄが第２閾値未満であれば、ステップＳ１９で、該当する簡易形状ＳＨが定義された対象のオブジェクト（ノンプレイヤキャラクタデータ３０４ｄ）についての透明フラグをオンし、透明度を増大して、ステップＳ２１に進む。ただし、ステップＳ１９では、ＣＰＵ１２は、透明度が最大値である場合には、つまり、完全に透明に設定されている場合には、透明度を増大しない。
【０１０４】
ただし、ステップＳ１１において、複数の対象のオブジェクトが検出された場合には、ステップＳ１５、Ｓ１７、Ｓ１９の処理は、対象のオブジェクトの各々について実行される。
【０１０５】
図１１に示すように、ステップＳ２１では、ＣＰＵ１２およびＧＰＵ２２は、ゲーム画像を生成する。簡単に説明すると、ＣＰＵ１２およびＧＰＵ２２は、ステップＳ５のゲーム制御処理の結果を表すデータをメインメモリ２０から読み出し、また、ゲーム画像を生成するために必要なデータをメインメモリ２０から読み出し、ゲーム画像を生成する。たとえば、ゲーム画像を生成する場合には、ＣＰＵ１２の指示の下、ＧＰＵ２２は、仮想空間内のオブジェクトの画像をフレームバッファ２０ａに書き込んでいく。仮想空間内のオブジェクトには、たとえば地形オブジェクト、プレイヤキャラクタ１０２およびノンプレイヤキャラクタ１０４等が含まれるが、奥側のオブジェクトから順番に描画が行われる。このとき、ＧＰＵ２２は、Ｚバッファ２０ｂを参照し、Ｚバッファ２０ｂに記憶されたＺ値よりも手前側のオブジェクトの画像を描画する場合には、フレームバッファ２０ａの対象のピクセルに当該オブジェクトの画像を上書きし、Ｚバッファ２０ｂの当該対象のピクセルに当該オブジェクトのＺ値を上書きする。このとき、対象のオブジェクト（ノンプレイヤキャラクタ１０４）は、透明度に応じたＡデータの値で描画される。
【０１０６】
次のステップＳ２３では、ＣＰＵ１２は、スピーカ１８に出力するためのゲーム音声を、ステップＳ５のゲーム制御処理の結果に応じて生成する。続いて、ステップＳ２５で、ＣＰＵ１２は、ゲーム画像およびゲーム音声を出力する。つまり、ＣＰＵ１２は、ゲーム画像の画像データをＩ／Ｆ２４を介して表示装置２６に出力するとともに、ゲーム音声をＤ／Ａ変換器１６を介してゲーム音声の音声データをスピーカ１８に出力する。
【０１０７】
続くステップＳ２７では、ＧＰＵ２２は、ステップＳ２１の処理によってＺバッファ２０ｂに保存されたＺ値のうち、最小値を取得する。そして、ＣＰＵ１２は、Ｚ値の最小値についての最小値データ３０４ｇをデータ記憶領域３０４に記憶（更新）する。記憶されたＺ値の最小値は、次回フレームの処理において判断に使われる。Ｚ値の最小値は、ＧＰＵ２２が実行した処理の結果得られるデータであるので、ＣＰＵ１２の処理コストをあまりかけずに取得することができる。
【０１０８】
そして、ステップＳ２９では、ＣＰＵ１２は、ゲームを終了するかどうかを判断する。ステップＳ２９の判断は、たとえば、ゲームオーバになったか否か、あるいは、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ゲームオーバになったか否かは、たとえばプレイヤキャラクタ１０２の体力値が０になったか否か等によって判断される。
【０１０９】
ステップＳ２９で“ＮＯ”であれば、つまり、ゲームを終了しない場合には、図１０に示したステップＳ３に戻る。一方、ステップＳ２９で“ＹＥＳ”であれば、つまり、ゲームを終了する場合には、ゲーム全体処理を終了する。
【０１１０】
なお、ステップＳ３−Ｓ２９のスキャンタイムが、１フレームである。
【０１１１】
この実施例によれば、Ｚ値の最小値が第１閾値未満である場合に、仮想カメラに近い対象のオブジェクトを検出し、検出した対象のオブジェクトと仮想カメラの距離を算出して、対象のオブジェクトを半透明または透明にするかどうかを判断するので、ゲーム画像を描画する度に仮想カメラと対象のオブジェクトとの距離を算出する場合に比べて処理コストを削減することができる。
【０１１２】
また、この実施例によれば、Ｚ値に基づいて仮想カメラの近くに何らかのオブジェクトが配置されていることを判断した後に、仮想カメラに第２閾値よりも近いオブジェクトの検出を行うので、少なくとも何かが仮想カメラの近くに存在する状況に限られ、第２閾値に余裕をもたせた判定を行っても、仮想カメラの近くに配置されたオブジェクトの検出を高い精度で行うことができる。つまり、検出精度を確保することができる。
【０１１３】
さらに、この実施例によれば、仮想カメラと対象のオブジェクトとの距離を算出する場合に簡易形状を用いるようにしてあるが、簡易形状は対象のオブジェクトの当り判定に用いる形状であるため、対象のオブジェクトを半透明または透明にするかどうかを判定するための形状を新たに開発する必要はない。
【０１１４】
なお、この実施例では、携帯型または据え置き型あるいはそれらの切り替えが可能なゲーム装置について説明したが、ゲーム処理の一部または全部がゲーム装置と通信可能に接続される他のゲーム装置またはコンピュータで実行されてもよい。かかる場合には、この実施例のゲーム装置と、当該ゲーム装置と通信可能に接続される他のゲーム装置またはコンピュータによって、ゲームシステム（画像処理システム）が構成される。
【０１１５】
また、この実施例で示したゲームの内容、ゲーム装置の構成および具体的数値は単なる例示であり、限定されるべきでなく、実際の製品に応じて適宜変更可能である。
【符号の説明】
【０１１６】
１０  …ゲーム装置
１２  …ＣＰＵ
１４  …入力装置
１８  …スピーカ
２０  …メインメモリ
２０ａ  …フレームバッファ
２０ｂ  …Ｚバッファ（デプスバッファ）
２２  …ＧＰＵ
２６  …表示装置
【図１】
2018147002.tif 000003
【図２】
2018147002.tif 000004
【図３】
2018147002.tif 000005
【図４】
2018147002.tif 000006
【図５】
2018147002.tif 000007
【図６】
2018147002.tif 000008
【図７】
2018147002.tif 000009
【図８】
2018147002.tif 000010
【図９】
2018147002.tif 000011
【図１０】
2018147002.tif 000012
【図１１】
2018147002.tif 000013
【手続補正書】
【提出日】平成30年2月22日(2018.2.22)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
第９の発明は、描画手段と、判断手段と、検出手段を備える、画像処理システムである。描画手段は、所定の描画期間毎に、Ｚバッファを用いて、仮想空間内に配置された仮想カメラに基づいた画像の描画処理を行う。判断手段は、描画処理後に、Ｚバッファ内に奥行き値が所定の値より小さい部分があるか否かを判断する。検出手段は、前回の描画時における判断手段において、奥行き値が所定の値より小さい部分があると判断された場合に、仮想空間内において仮想カメラに所定の基準よりも近いオブジェクトの検出を行う。描画手段はさらに、検出手段において検出された仮想カメラに近いオブジェクトに対して透明度を高くして、または表示されないようにして、仮想空間の描画を行う。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２２
【補正方法】変更
【補正の内容】
【００２２】
第１０の発明は、Ｚバッファと、描画処理部と、判断処理部と、検出処理部を備える、画像処理装置である。描画処理部は、所定の描画期間毎に、Ｚバッファを用いて、仮想空間内に配置された仮想カメラに基づいた画像の描画処理を行う。判断処理部は、描画処理後に、Ｚバッファ内に奥行き値が所定の値より小さい部分があるか否かを判断する。検出処理部は、前回の描画時における判断処理部において、奥行き値が所定の値より小さい部分があると判断された場合に、仮想空間内において仮想カメラに所定の基準よりも近いオブジェクトの検出を行う。描画処理部はさらに、検出処理部において検出された仮想カメラに近いオブジェクトに対して透明度を高くして、または表示されないようにして、仮想空間の描画を行う。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
第１１の発明は、（ａ）所定の描画期間毎に、Ｚバッファを用いて、仮想空間内に配置された仮想カメラに基づいた画像の描画処理を行うステップと、（ｂ）描画処理後に、Ｚバッファ内に奥行き値が所定の値より小さい部分があるか否かを判断するステップと、（ｃ）前回の描画時におけるステップ（ｂ）において、奥行き値が所定の値より小さい部分があると判断された場合に、仮想空間内において仮想カメラに所定の基準よりも近いオブジェクトの検出を行うステップとを含み、（ｄ）ステップ（ａ）はさらに、ステップ（ｃ）において検出された仮想カメラに近いオブジェクトに対して透明度を高くして、または表示されないようにして、仮想空間の描画を行う、画像処理方法である。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
ただし、画像処理装置は、ゲーム装置１０に限定される必要はなく、汎用のＰＣ（デスクトップＰＣ、ノートＰＣ、タブレットＰＣなどの各種のＰＣ）、携帯電話機またはスマートフォンでもよい。また、ゲーム装置１０としては、携帯型のゲーム装置、据置型のゲーム装置、または、携帯型と据置型との切り替えが可能なゲーム装置を用いることができ、アーケードゲーム機を用いることもできる。据置型のゲーム装置の場合、ゲーム装置本体に、テレビジョン受像機のようなモニタおよびコントローラが接続されるため、この場合には、ゲームシステム（画像処理システム）と呼ぶことができる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００６８
【補正方法】変更
【補正の内容】
【００６８】
探索範囲２６０内に配置されている対象のオブジェクトが検出された場合には、つまり、仮想カメラ２００の近くに対象のオブジェクトが配置されている場合には、この対象のオブジェクトと仮想カメラ２００との距離ｄが所定の閾値（第２閾値）未満であるかどうかが判断される。つまり、仮想カメラ２００の近くに配置されている対象のオブジェクトを半透明または透明にするべきかどうかが判断される。第２閾値（所定の基準）は、仮想カメラ２００からニアクリップ面２５２までの距離Ｄに所定の余白（余裕）に相当する距離を加えた距離に設定される。このように第２閾値を設定するのは、上述したように、対象のオブジェクトは、種類によって形状および大きさが異なるからである。
【手続補正６】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１７
【補正方法】変更
【補正の内容】
【請求項１７】
Ｚバッファと、
所定の描画期間毎に、前記Ｚバッファを用いて、仮想空間内に配置された仮想カメラに基づいた画像の描画処理を行う描画処理部と、
前記描画処理後に、前記Ｚバッファ内に奥行き値が所定の値より小さい部分があるか否かを判断する判断処理部と、
前回の描画時における前記判断処理部において、奥行き値が所定の値より小さい部分があると判断された場合に、前記仮想空間内において前記仮想カメラに所定の基準よりも近いオブジェクトの検出を行う検出処理部を備え、
前記描画処理部はさらに、前記検出処理部において検出された前記仮想カメラに近いオブジェクトに対して透明度を高くして、または表示されないようにして、前記仮想空間の描画を行う、画像処理装置。
【手続補正７】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１８
【補正方法】変更
【補正の内容】
【請求項１８】
（ａ）所定の描画期間毎に、Ｚバッファを用いて、仮想空間内に配置された仮想カメラに基づいた画像の描画処理を行うステップと、
（ｂ）前記描画処理後に、前記Ｚバッファ内に奥行き値が所定の値より小さい部分があるか否かを判断するステップと、
（ｃ）前回の描画時における前記ステップ（ｂ）において、奥行き値が所定の値より小さい部分があると判断された場合に、前記仮想空間内において前記仮想カメラに所定の基準よりも近いオブジェクトの検出を行うステップとを含み、
（ｄ）ステップ（ａ）はさらに、前記ステップ（ｃ）において検出された前記仮想カメラに近いオブジェクトに対して透明度を高くして、または表示されないようにして、前記仮想空間の描画を行う、画像処理方法。