(57)【特許請求の範囲】
【請求項１】
３次元仮想空間に配置されたオブジェクトの深度情報を格納するための深度情報用の記憶領域と、オブジェクトの画像情報を格納するための画像情報用の記憶領域とを用いて、オブジェクトを画像表示部に描画するコンピュータに、
３次元仮想空間における仮想カメラ位置を示す座標データを制御部に認識させることにより、仮想カメラを３次元仮想空間に設定する仮想カメラ設定機能と、
３次元仮想空間において、前記仮想カメラの撮影対象となる撮影空間を規定するためのデータを制御部に認識させることにより、前記撮影空間を３次元仮想空間に規定する撮影空間規定機能と、
深度情報用の記憶領域を初期化する深度データ初期化機能と、
第１仮想カメラと第１撮影空間の内部のオブジェクトとの間における前記第１撮影空間の第１位置に、第１マスク用の無色のオブジェクトを配置することにより、画像表示部の所定の範囲をマスクするための、前記第１マスク用の無色のオブジェクトに対応する前記第１マスク用の深度データを、深度情報用の記憶領域に格納する第１深度データ格納機能と、
画像表示部の所定の前記範囲を除く範囲にオブジェクトを表示するための、第１仮想カメラから見た第１撮影空間のオブジェクト用の深度データを、深度情報用の記憶領域に格納する第２深度データ格納機能と、
深度情報用の記憶領域に格納された前記第１撮影空間のオブジェクト用の深度データに基づいて、前記第１仮想カメラから見た前記第１撮影空間のオブジェクトに対応する、オブジェクト用の画像データを、画像情報用の記憶領域に格納するオブジェクト画像格納機能と、
画像情報用の記憶領域に格納された、オブジェクト用の画像データを用いて、前記オブジェクトを描画するオブジェクト描画機能と、
を実現させ、
前記深度データ初期化機能では、深度情報用の記憶領域が再び初期化され、
前記第１深度データ格納機能では、第２仮想カメラと第２撮影空間の内部のオブジェクトとの間における前記第１位置とは異なる第２位置に、第２マスク用の無色のオブジェクトを配置することにより、前記第２マスク用の無色のオブジェクトに対応する前記第２マスク用の深度データが、深度情報用の記憶領域にさらに格納され、
前記第２深度データ格納機能では、第２仮想カメラから見た第２撮影空間のオブジェクト用の深度データが、深度情報用の記憶領域にさらに格納され、
前記オブジェクト画像格納機能では、深度情報用の記憶領域に格納された前記第２撮影空間のオブジェクト用の深度データに基づいて、前記第２仮想カメラから見た前記第２撮影空間のオブジェクトに対応する、オブジェクト用の画像データが、画像情報用の記憶領域にさらに格納され、
前記オブジェクト描画機能では、画像情報用の記憶領域に格納された、オブジェクト用の画像データを用いて、前記オブジェクトがさらに描画される、
画像処理プログラム。
【請求項２】
前記第１深度データ格納機能では、前記第１撮影空間の前記第１マスク用の無色のオブジェクトに重ならないような、前記第１位置とは異なる前記第２位置に、第２マスク用の無色のオブジェクトを配置することにより、前記第２マスク用の無色のオブジェクトに対応する前記マスク用の深度データが、深度情報用の記憶領域に格納される、
請求項１に記載の画像処理プログラム。
【請求項３】
前記コンピュータに、
深度情報用の記憶領域に格納された前記マスク用の深度データに基づいて、マスク用の無色の画像データを、画像情報用の記憶領域に格納するマスク画像格納機能、
をさらに実現させるための請求項１又は２に記載の画像処理プログラム。
【請求項４】
３次元仮想空間に配置されたオブジェクトの深度情報を格納するための深度情報用の記憶領域と、オブジェクトの画像情報を格納するための画像情報用の記憶領域とを用いて、オブジェクトを画像表示部に描画する画像処理装置であって、
３次元仮想空間における仮想カメラ位置を示す座標データを制御部に認識させることにより、仮想カメラを３次元仮想空間に設定する仮想カメラ設定手段と、
３次元仮想空間において、前記仮想カメラの撮影対象となる撮影空間を規定するためのデータを制御部に認識させることにより、前記撮影空間を３次元仮想空間に規定する撮影空間規定手段と、
深度情報用の記憶領域を初期化する深度データ初期化手段と、
第１仮想カメラと第１撮影空間の内部のオブジェクトとの間における前記第１撮影空間の第１位置に、第１マスク用の無色のオブジェクトを配置することにより、画像表示部の所定の範囲をマスクするための、前記第１マスク用の無色のオブジェクトに対応する前記第１マスク用の深度データを、深度情報用の記憶領域に格納する第１深度データ格納手段と、
画像表示部の所定の前記範囲を除く範囲にオブジェクトを表示するための、第１仮想カメラから見た第１撮影空間のオブジェクト用の深度データを、深度情報用の記憶領域に格納する第２深度データ格納手段と、
深度情報用の記憶領域に格納された前記第１撮影空間のオブジェクト用の深度データに基づいて、前記第１仮想カメラから見た前記第１撮影空間のオブジェクトに対応する、オブジェクト用の画像データを、画像情報用の記憶領域に格納するオブジェクト画像格納手段と、
画像情報用の記憶領域に格納された、オブジェクト用の画像データを用いて、前記オブジェクトを描画するオブジェクト描画手段と、
を備え、
前記深度データ初期化手段では、深度情報用の記憶領域が再び初期化され、
前記第１深度データ格納手段では、第２仮想カメラと第２撮影空間の内部のオブジェクトとの間における前記第１位置とは異なる第２位置に、第２マスク用の無色のオブジェクトを配置することにより、前記第２マスク用の無色のオブジェクトに対応する前記第２マスク用の深度データが、深度情報用の記憶領域にさらに格納され、
前記第２深度データ格納手段では、第２仮想カメラから見た第２撮影空間のオブジェクト用の深度データが、深度情報用の記憶領域にさらに格納され、
前記オブジェクト画像格納手段では、深度情報用の記憶領域に格納された前記第２撮影空間のオブジェクト用の深度データに基づいて、前記第２仮想カメラから見た前記第２撮影空間のオブジェクトに対応する、オブジェクト用の画像データが、画像情報用の記憶領域にさらに格納され、
前記オブジェクト描画手段では、画像情報用の記憶領域に格納された、オブジェクト用の画像データを用いて、前記オブジェクトがさらに描画される、
画像処理装置。
【請求項５】
３次元仮想空間に配置されたオブジェクトの深度情報を格納するための深度情報用の記憶領域と、オブジェクトの画像情報を格納するための画像情報用の記憶領域とを用いて、オブジェクトを画像表示部に描画する画像処理方法であって、
３次元仮想空間における仮想カメラ位置を示す座標データを制御部に認識させることにより、仮想カメラを３次元仮想空間に設定する仮想カメラ設定ステップと、
３次元仮想空間において、前記仮想カメラの撮影対象となる撮影空間を規定するためのデータを制御部に認識させることにより、前記撮影空間を３次元仮想空間に規定する撮影空間規定ステップと、
深度情報用の記憶領域を初期化する深度データ初期化ステップと、
第１仮想カメラと第１撮影空間の内部のオブジェクトとの間における前記第１撮影空間の第１位置に、第１マスク用の無色のオブジェクトを配置することにより、画像表示部の所定の範囲をマスクするための、前記第１マスク用の無色のオブジェクトに対応する前記第１マスク用の深度データを、深度情報用の記憶領域に格納する第１深度データ格納ステップと、
画像表示部の所定の前記範囲を除く範囲にオブジェクトを表示するための、第１仮想カメラから見た第１撮影空間のオブジェクト用の深度データを、深度情報用の記憶領域に格納する第２深度データ格納ステップと、
深度情報用の記憶領域に格納された前記第１撮影空間のオブジェクト用の深度データに基づいて、前記第１仮想カメラから見た前記第１撮影空間のオブジェクトに対応する、オブジェクト用の画像データを、画像情報用の記憶領域に格納するオブジェクト画像格納ステップと、
画像情報用の記憶領域に格納された、オブジェクト用の画像データを用いて、前記オブジェクトを描画するオブジェクト描画ステップと、
を備え、
前記深度データ初期化ステップでは、深度情報用の記憶領域が再び初期化され、
前記第１深度データ格納ステップでは、第２仮想カメラと第２撮影空間の内部のオブジェクトとの間における前記第１位置とは異なる第２位置に、第２マスク用の無色のオブジェクトを配置することにより、前記第２マスク用の無色のオブジェクトに対応する前記第２マスク用の深度データが、深度情報用の記憶領域にさらに格納され、
前記第２深度データ格納ステップでは、第２仮想カメラから見た第２撮影空間のオブジェクト用の深度データが、深度情報用の記憶領域にさらに格納され、
前記オブジェクト画像格納ステップでは、深度情報用の記憶領域に格納された前記第２撮影空間のオブジェクト用の深度データに基づいて、前記第２仮想カメラから見た前記第２撮影空間のオブジェクトに対応する、オブジェクト用の画像データが、画像情報用の記憶領域にさらに格納され、
前記オブジェクト描画ステップでは、画像情報用の記憶領域に格納された、オブジェクト用の画像データを用いて、前記オブジェクトがさらに描画される、
画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理プログラム、特に、３次元仮想空間に配置されたオブジェクトの深度情報を格納するための深度情報用の記憶領域と、オブジェクトの画像情報を格納するための画像情報用の記憶領域とを用いて、オブジェクトを画像表示部に描画する画像処理プログラムに関する。また、この画像処理プログラムを実行可能な画像処理装置、およびこの画像処理プログラムに基づいてコンピュータにより制御される画像処理方法に関する。
【背景技術】
【０００２】
従来から、オブジェクトをモニタに描画するための様々な描画技術が提案されている。特に、近年では、モニタの拡大化に伴い、１つのモニタに複数の画面を設定して、各画面にオブジェクトを表示することが行われるようになってきた。
【０００３】
複数の画面にオブジェクトを表示する技術の１つとして、たとえば、シザリング技術が知られている。このシザリング技術では、モニタ枠により規定される描画領域（親画面）の内部において２点の座標が指示されると、対向する隅角部がこの２点になるような矩形状の描画領域（子画面）が、新規の描画領域として設定される。そして、親画面および子画面それぞれに、オブジェクトが表示される。このようにして、複数の画面（親画面および子画面）をモニタに設定することができる。たとえば、野球ゲームに対してシザリング技術が適用された場合、捕手側のカメラから見た球場の画像が親画面に表示され、投手側から見た捕手の画像が子画面に表示される（非特許文献１を参照）。ここでは、子画面は、親画面の上部中央に設けられている。
【非特許文献１】実況パワフルプロ野球１２、コナミデジタルエンタテインメント、ＰＳ２版、２００５年７月１４日
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記の複数の画面にオブジェクトを表示する技術、たとえば、シザリング技術では、親画面の内部において２点の座標を指示することにより、子画面が設定できるようになっていた。しかしながら、このシザリング技術では、子画面の形状が矩形状に限定されてしまい、矩形以外の形状の画面（子画面）を設定することができないという問題があった。
【０００５】
このため、矩形以外の形状の画面（子画面）を設定する場合、フレームバッファとは別の領域に特別にレンダリングバッファを確保し、レンダリングバッファの親画面のテクスチャデータと子画面のテクスチャデータとを合成した画像データをフレームバッファに格納することにより、子画面を有する親画面を生成する技術が用いられることがある。
【０００６】
しかしながら、この技術を用いた場合、レンダリングバッファの親画面のテクスチャデータと子画面のテクスチャデータとレンダリングバッファに格納する必要があるので、メモリ容量を大量に使用してしまうという問題がある。また、レンダリング時と画像の合成時とにおいて、深度データを作成する処理を行う必要があるので、計算負荷が大きくなって計算速度が遅くなってしまうという問題がある。
【０００７】
本発明は、このような問題に鑑みてなされたものであり、本発明の目的は、メモリを圧迫することなく、複数の画面を任意の形状で自由に形成することができるようにすることにある。
【課題を解決するための手段】
【０００８】
請求項１に係る画像処理プログラムは、３次元仮想空間に配置されたオブジェクトの深度情報を格納するための深度情報用の記憶領域と、オブジェクトの画像情報を格納するための画像情報用の記憶領域とを用いて、オブジェクトを画像表示部に描画するためのものである。この画像処理プログラムでは、以下の機能が実現される。
（１）３次元仮想空間における仮想カメラ位置を示す座標データを制御部に認識させることにより、仮想カメラを３次元仮想空間に設定する仮想カメラ設定機能。
（２）３次元仮想空間において、仮想カメラの撮影対象となる撮影空間を規定するためのデータを制御部に認識させることにより、撮影空間を３次元仮想空間に規定する撮影空間規定機能。
（３）深度情報用の記憶領域を初期化する深度データ初期化機能。
（４）第１仮想カメラと第１撮影空間の内部のオブジェクトとの間における第１撮影空間の第１位置に、第１マスク用の無色のオブジェクトを配置することにより、画像表示部の所定の範囲をマスクするための、第１マスク用の無色のオブジェクトに対応する第１マスク用の深度データを、深度情報用の記憶領域に格納する第１深度データ格納機能。
（５）画像表示部の所定の範囲を除く範囲にオブジェクトを表示するための、第１仮想カメラから見た第１撮影空間のオブジェクト用の深度データを、深度情報用の記憶領域に格納する第２深度データ格納機能。
（６）深度情報用の記憶領域に格納された第１撮影空間のオブジェクト用の深度データに基づいて、第１仮想カメラから見た第１撮影空間のオブジェクトに対応する、オブジェクト用の画像データを、画像情報用の記憶領域に格納するオブジェクト画像格納機能。
（７）画像情報用の記憶領域に格納された、オブジェクト用の画像データを用いて、オブジェクトを描画するオブジェクト描画機能。
【０００９】
この画像処理プログラムでは、仮想カメラ設定機能において、３次元仮想空間における仮想カメラ位置を示す座標データを制御部に認識させることにより、仮想カメラが３次元仮想空間に設定される。撮影空間規定機能においては、３次元仮想空間において、仮想カメラの撮影対象となる撮影空間を規定するためのデータを制御部に認識させることにより、撮影空間が３次元仮想空間に規定される。深度データ初期化機能においては、深度情報用の記憶領域が初期化される。第１深度データ格納機能においては、第１仮想カメラと第１撮影空間の内部のオブジェクトとの間における第１撮影空間の第１位置に、第１マスク用の無色のオブジェクトを配置することにより、画像表示部の所定の範囲をマスクするための、第１マスク用の無色のオブジェクトに対応する第１マスク用の深度データが、深度情報用の記憶領域に格納される。第２深度データ格納機能においては、画像表示部の所定の範囲を除く範囲にオブジェクトを表示するための、第１仮想カメラから見た第１撮影空間のオブジェクト用の深度データが、深度情報用の記憶領域に格納される。オブジェクト画像格納機能においては、深度情報用の記憶領域に格納された第１撮影空間のオブジェクト用の深度データに基づいて、第１仮想カメラから見た第１撮影空間のオブジェクトに対応する、オブジェクト用の画像データが、画像情報用の記憶領域に格納される。オブジェクト描画機能においては、画像情報用の記憶領域に格納された、オブジェクト用の画像データを用いて、オブジェクトが描画される。
【００１０】
また、この画像処理プログラムでは、深度データ初期化機能において、深度情報用の記憶領域が再び初期化される。第１深度データ格納機能においては、第２仮想カメラと第２撮影空間の内部のオブジェクトとの間における第１位置とは異なる第２位置に、第２マスク用の無色のオブジェクトを配置することにより、第２マスク用の無色のオブジェクトに対応する第２マスク用の深度データが、深度情報用の記憶領域にさらに格納される。第２深度データ格納機能においては、第２仮想カメラから見た第２撮影空間のオブジェクト用の深度データが、深度情報用の記憶領域にさらに格納される。オブジェクト画像格納機能においては、深度情報用の記憶領域に格納された第２撮影空間のオブジェクト用の深度データに基づいて、第２仮想カメラから見た第２撮影空間のオブジェクトに対応する、オブジェクト用の画像データが、画像情報用の記憶領域にさらに格納される。オブジェクト描画機能においては、画像情報用の記憶領域に格納された、オブジェクト用の画像データを用いて、オブジェクトがさらに描画される。
【００１１】
この場合、まず、深度情報用の記憶領域たとえばＺバッファが、初期化される。そして、画像表示部の所定の範囲をマスクするためのマスク用の深度データが、初期化されたＺバッファに書き込まれる。この状態では、画像表示部の所定の範囲に対応するＺバッファの領域には、マスク用の深度データが書き込まれている。なお、画像表示部の所定の範囲以外の範囲に対応するＺバッファの領域には、深度データの初期値たとえば「０（ゼロ）」が書き込まれている。
【００１２】
次に、画像表示部の所定の範囲を除く範囲にオブジェクトを表示するためのオブジェクト用の深度データが、Ｚバッファに書き込まれる。そして、Ｚバッファに書き込まれたオブジェクト用の深度データに基づいて、オブジェクト用の画像データが、フレームバッファに格納される。
【００１３】
この状態では、マスク用の深度データが書き込まれたＺバッファの領域（画像表示部の所定の範囲に対応するＺバッファの領域）以外のＺバッファの領域には、オブジェクト用の深度データが書き込まれている。また、マスク用の深度データが書き込まれたＺバッファの領域（画像表示部の所定の範囲に対応するＺバッファの領域）以外のＺバッファの領域に対応する、フレームバッファの領域には、オブジェクト用の画像データが書き込まれている。なお、マスク用の深度データが書き込まれたＺバッファの領域に対しては、オブジェクト用の深度データの書き込みが禁止される。
【００１４】
最後に、フレームバッファに格納された、オブジェクト用の画像データを用いて、オブジェクトが描画される。詳細には、フレームバッファにおいてマスク用の無色の画像データが存在しない領域の、オブジェクト用の画像データを用いて、オブジェクトが描画される。
【００１５】
これにより、マスクされた所定の範囲以外の範囲（マスクされていない範囲）において、オブジェクトを画像表示部に表示することができる。すなわち、新規の画面（マスクされていない範囲）を設定し、この新規の画面にオブジェクトを表示することができる。また、レンダリングバッファを用意しなくても、Ｚバッファからフレームバッファに直接的に画像データを格納することができるので、メモリ容量を圧迫することなく、オブジェクトを新規の画面に表示することができる。以上のことから、本発明では、メモリを圧迫することなく、複数の画面を任意の形状で自由に形成することができる。
【００１６】
詳細には、この場合、まず、Ｚバッファが初期化される。そして、第１仮想カメラと第１撮影空間の内部のオブジェクトとの間における第１撮影空間の第１位置に、第１マスク用の無色のオブジェクトが配置される。すると、第１マスク用の無色のオブジェクトに対応する第１マスク用の深度データが、初期化されたＺバッファに書き込まれる。
【００１７】
この状態では、第１マスク用の無色のオブジェクトの深度を示すＺバッファの領域には、第１マスク用の深度データが書き込まれている。なお、第１マスク用の深度データが書き込まれた領域以外のＺバッファの領域には、深度データの初期値たとえば「０（ゼロ）」が書き込まれている。
【００１８】
次に、第１仮想カメラから見た第１撮影空間のオブジェクト用の深度データが、Ｚバッファに書き込まれる。そして、Ｚバッファに書き込まれた第１撮影空間のオブジェクト用の深度データに基づいて、第１仮想カメラから見た第１撮影空間のオブジェクトに対応する、オブジェクト用の画像データが、画像情報用の記憶領域に格納される。
【００１９】
この状態では、第１マスク用の深度データが書き込まれたＺバッファの領域以外のＺバッファの領域には、第１撮影空間のオブジェクト用の深度データが書き込まれている。また、第１マスク用の深度データが書き込まれたＺバッファの領域以外のＺバッファの領域に対応する、フレームバッファの領域には、第１撮影空間のオブジェクト用の画像データが書き込まれている。
【００２０】
なお、第１マスク用の深度データが書き込まれたＺバッファの領域に対しては、オブジェクト用の深度データの書き込みが禁止される。
【００２１】
最後に、フレームバッファに格納された、第１撮影空間のオブジェクト用の画像データを用いて、第１撮影空間のオブジェクトが描画される。詳細には、フレームバッファにおいて第１マスク用の無色の画像データが存在しない領域の、オブジェクト用の画像データを用いて、オブジェクトが描画される。
【００２２】
これにより、第１撮影空間用の描画範囲（マスクされた所定の範囲以外の範囲、マスクされていない範囲）において、第１撮影空間のオブジェクトを画像表示部に表示することができる。すなわち、第１撮影空間描画用の画面を設定し、この画面に第１撮影空間のオブジェクトを表示することができる。また、レンダリングバッファを用意しなくても、Ｚバッファからフレームバッファに直接的に画像データを格納することができるので、メモリ容量を圧迫することなく、第１撮影空間のオブジェクトを上記の画面に表示することができる。以上のことから、本発明では、メモリを圧迫することなく、複数の画面を任意の形状で自由に形成することができる。
【００２３】
次に、この画像処理プログラムでは、Ｚバッファが再び初期化される。そして、第２仮想カメラと第２撮影空間の内部のオブジェクトとの間における上記の第１位置とは異なる第２位置に、第２マスク用の無色のオブジェクトが配置される。すると、第２マスク用の無色のオブジェクトに対応する第２マスク用の深度データが、初期化されたＺバッファに書き込まれる。
【００２４】
この状態では、第２マスク用の無色のオブジェクトの深度を示すＺバッファの領域には、第２マスク用の深度データが書き込まれている。なお、第２マスク用の深度データが書き込まれた領域以外のＺバッファの領域には、深度データの初期値たとえば「０（ゼロ）」が書き込まれている。
【００２５】
次に、第２仮想カメラから見た第２撮影空間のオブジェクト用の深度データが、Ｚバッファに書き込まれる。そして、Ｚバッファに書き込まれた第２撮影空間のオブジェクト用の深度データに基づいて、第２仮想カメラから見た第２撮影空間のオブジェクトに対応する、オブジェクト用の画像データが、画像情報用の記憶領域に格納される。
【００２６】
この状態では、第２マスク用の深度データが書き込まれたＺバッファの領域以外のＺバッファの領域には、第２撮影空間のオブジェクト用の深度データが書き込まれている。また、第２マスク用の深度データが書き込まれたＺバッファの領域以外のＺバッファの領域に対応する、フレームバッファの領域には、第２撮影空間のオブジェクト用の画像データが書き込まれている。
【００２７】
なお、第２マスク用の深度データが書き込まれたＺバッファの領域に対しては、オブジェクト用の深度データの書き込みが禁止される。
【００２８】
最後に、フレームバッファに格納された、第２撮影空間のオブジェクト用の画像データを用いて、第２撮影空間のオブジェクトが描画される。詳細には、フレームバッファにおいて第２マスク用の無色の画像データが存在しない領域の、オブジェクト用の画像データを用いて、オブジェクトが描画される。
【００２９】
これにより、第１撮影空間の描画範囲とは異なる、第２撮影空間の描画範囲において、第２撮影空間のオブジェクトを画像表示部に表示することができる。すなわち、第２撮影空間描画用の画面をさらに設定し、この画面に第２撮影空間のオブジェクトを表示することができる。また、レンダリングバッファを用意しなくても、Ｚバッファからフレームバッファに直接的に画像データを格納することができるので、メモリ容量を圧迫することなく、第２撮影空間のオブジェクトを上記の画面に表示することができる。以上のことから、本発明では、メモリを圧迫することなく、複数の画面を任意の形状で自由に形成することができる。
【００３０】
請求項２に係る画像処理プログラムでは、請求項１に記載の画像処理プログラムにおいて、第１撮影空間の第１マスク用の無色のオブジェクトに重ならないような、上記の第１位置とは異なる第２位置に、第２マスク用の無色のオブジェクトが配置される。これにより、第２マスク用の無色のオブジェクトに対応するマスク用の深度データが、深度情報用の記憶領域に格納される。この機能は、第１深度データ格納機能において実現される。
【００３１】
この場合、第２マスク用の無色のオブジェクトを、第１マスク用の無色のオブジェクトに重ならないように配置することにより、第１撮影空間用の画面を、第２撮影空間用の画面に重ならないように、画像表示部に設定することができる。
【００３２】
請求項３に係る画像処理プログラムは、請求項１又は２に記載の画像処理プログラムにおいて、以下の機能をさらに実現させるためのプログラムである。
（６）深度情報用の記憶領域に格納されたマスク用の深度データに基づいて、マスク用の無色の画像データを、画像情報用の記憶領域に格納するマスク画像格納機能。
【００３３】
この画像処理プログラムでは、マスク画像格納機能において、深度情報用の記憶領域に格納されたマスク用の深度データに基づいて、マスク用の無色の画像データが、画像情報用の記憶領域に格納される。
【００３４】
この場合、まず、マスク用の深度データが書き込まれたＺバッファが参照される。そして、このＺバッファにおいてマスク用の深度データが書き込まれた領域に対応する、画像情報用の記憶領域たとえばフレームバッファの領域に、マスク用の無色の画像データが書き込まれる。ここで、フレームバッファにマスク用の無色の画像データが書き込まれる場合、色データとして、透明度を定義することができるＲＢＧＡデータが用いられる。このＲＧＢＡデータの「Ａ」の値を「０（ゼロ）」にすることにより、フレームバッファにおける画像データの色情報を「透明」にすることができる。このため、マスク用の画像データによりＺバッファがマスクされていたとしても、フレームバッファの色情報に影響が及ばないようにすることができる。
【００３５】
請求項４に係る画像処理装置は、３次元仮想空間に配置されたオブジェクトの深度情報を格納するための深度情報用の記憶領域と、オブジェクトの画像情報を格納するための画像情報用の記憶領域とを用いて、オブジェクトを画像表示部に描画する画像処理装置である。この画像処理装置は、３次元仮想空間における仮想カメラ位置を示す座標データを制御部に認識させることにより、仮想カメラを３次元仮想空間に設定する仮想カメラ設定手段と、３次元仮想空間において、仮想カメラの撮影対象となる撮影空間を規定するためのデータを制御部に認識させることにより、撮影空間を３次元仮想空間に規定する撮影空間規定手段と、深度情報用の記憶領域を初期化する深度データ初期化手段と、第１仮想カメラと第１撮影空間の内部のオブジェクトとの間における第１撮影空間の第１位置に、第１マスク用の無色のオブジェクトを配置することにより、画像表示部の所定の範囲をマスクするための、第１マスク用の無色のオブジェクトに対応する第１マスク用の深度データを、深度情報用の記憶領域に格納する第１深度データ格納手段と、画像表示部の所定の範囲を除く範囲にオブジェクトを表示するための、第１仮想カメラから見た第１撮影空間のオブジェクト用の深度データを、深度情報用の記憶領域に格納する第２深度データ格納手段と、深度情報用の記憶領域に格納された第１撮影空間のオブジェクト用の深度データに基づいて、第１仮想カメラから見た第１撮影空間のオブジェクトに対応する、オブジェクト用の画像データを、画像情報用の記憶領域に格納するオブジェクト画像格納手段と、画像情報用の記憶領域に格納された、オブジェクト用の画像データを用いて、オブジェクトを描画するオブジェクト描画手段とを、備えている。
【００３６】
また、この画像処理装置では、深度データ初期化手段において、深度情報用の記憶領域が再び初期化される。第１深度データ格納手段では、第２仮想カメラと第２撮影空間の内部のオブジェクトとの間における第１位置とは異なる第２位置に、第２マスク用の無色のオブジェクトを配置することにより、第２マスク用の無色のオブジェクトに対応する第２マスク用の深度データが、深度情報用の記憶領域にさらに格納される。第２深度データ格納手段では、第２仮想カメラから見た第２撮影空間のオブジェクト用の深度データが、深度情報用の記憶領域にさらに格納される。オブジェクト画像格納手段では、深度情報用の記憶領域に格納された第２撮影空間のオブジェクト用の深度データに基づいて、第２仮想カメラから見た第２撮影空間のオブジェクトに対応する、オブジェクト用の画像データが、画像情報用の記憶領域にさらに格納される。オブジェクト描画手段では、画像情報用の記憶領域に格納された、オブジェクト用の画像データを用いて、オブジェクトがさらに描画される。
【００３７】
請求項５に係る画像処理方法は、３次元仮想空間に配置されたオブジェクトの深度情報を格納するための深度情報用の記憶領域と、オブジェクトの画像情報を格納するための画像情報用の記憶領域とを用いて、オブジェクトを画像表示部に描画する画像処理方法である。この画像処理方法は、３次元仮想空間における仮想カメラ位置を示す座標データを制御部に認識させることにより、仮想カメラを３次元仮想空間に設定する仮想カメラ設定ステップと、３次元仮想空間において、仮想カメラの撮影対象となる撮影空間を規定するためのデータを制御部に認識させることにより、撮影空間を３次元仮想空間に規定する撮影空間規定ステップと、深度情報用の記憶領域を初期化する深度データ初期化ステップと、第１仮想カメラと第１撮影空間の内部のオブジェクトとの間における第１撮影空間の第１位置に、第１マスク用の無色のオブジェクトを配置することにより、画像表示部の所定の範囲をマスクするための、第１マスク用の無色のオブジェクトに対応する第１マスク用の深度データを、深度情報用の記憶領域に格納する第１深度データ格納ステップと、画像表示部の所定の範囲を除く範囲にオブジェクトを表示するための、第１仮想カメラから見た第１撮影空間のオブジェクト用の深度データを、深度情報用の記憶領域に格納する第２深度データ格納ステップと、深度情報用の記憶領域に格納された第１撮影空間のオブジェクト用の深度データに基づいて、第１仮想カメラから見た第１撮影空間のオブジェクトに対応する、オブジェクト用の画像データを、画像情報用の記憶領域に格納するオブジェクト画像格納ステップと、画像情報用の記憶領域に格納された、オブジェクト用の画像データを用いて、オブジェクトを描画するオブジェクト描画ステップとを、備えている。
【００３８】
また、この画像処理方法では、深度データ初期化ステップでは、深度情報用の記憶領域が再び初期化される。第１深度データ格納ステップでは、第２仮想カメラと第２撮影空間の内部のオブジェクトとの間における第１位置とは異なる第２位置に、第２マスク用の無色のオブジェクトを配置することにより、第２マスク用の無色のオブジェクトに対応する第２マスク用の深度データが、深度情報用の記憶領域にさらに格納される。第２深度データ格納ステップでは、第２仮想カメラから見た第２撮影空間のオブジェクト用の深度データが、深度情報用の記憶領域にさらに格納される。オブジェクト画像格納ステップでは、深度情報用の記憶領域に格納された第２撮影空間のオブジェクト用の深度データに基づいて、第２仮想カメラから見た第２撮影空間のオブジェクトに対応する、オブジェクト用の画像データが、画像情報用の記憶領域にさらに格納される。オブジェクト描画ステップでは、画像情報用の記憶領域に格納された、オブジェクト用の画像データを用いて、オブジェクトがさらに描画される。
【発明の効果】
【００３９】
本発明では、新規の画面を設定し、この新規の画面にオブジェクトを表示することができる。また、レンダリングバッファを用意しなくても、Ｚバッファからフレームバッファに直接的に画像データを格納することができるので、メモリ容量を圧迫することなく、オブジェクトを新規の画面に表示することができる。すなわち、メモリを圧迫することなく、複数の画面を任意の形状で自由に形成することができる。
【発明を実施するための最良の形態】
【００４０】
〔データ処理装置の構成と動作〕
図１は、データを処理するためのデータ処理装置の基本構成を示している。以下には、データ処理装置の一例として、家庭用コンピュータの構成が示されている。家庭用コンピュータは、家庭用コンピュータ本体およびモニタを備える。家庭用コンピュータ本体には、記録媒体１０が装填可能となっており、記録媒体１０からデータ処理用のプログラムが適宜読み出されて、データ処理用のプログラムが実行される。このようにデータ処理用のプログラムが実行されると、データ処理に関する内容を示す画像が、モニタに表示される。
【００４１】
家庭用コンピュータは、制御部１と、記憶部２と、画像表示部３と、音声出力部４と、操作入力部５、通信部２３とからなっており、それぞれがバス６を介して接続される。このバス６は、アドレスバス、データバス、およびコントロールバスなどを含んでいる。ここで、制御部１、記憶部２、音声出力部４および操作入力部５は、家庭用コンピュータ本体に含まれており、画像表示部３はモニタに含まれている。
【００４２】
制御部１は、主に、データ処理用のプログラムに基づいてデータ処理の進行を制御する。制御部１は、たとえば、ＣＰＵ（Central Processing Unit）７と、信号処理プロセッサ８と、画像処理プロセッサ９とから構成されている。ＣＰＵ７と信号処理プロセッサ８と画像処理プロセッサ９とは、それぞれがバス６を介して互いに接続されている。ＣＰＵ７は、データ処理用のプログラムからの命令を解釈し、各種のデータ処理や制御を行う。たとえば、ＣＰＵ７は、信号処理プロセッサ８に対して、画像用のデータを画像処理プロセッサに供給するように命令する。信号処理プロセッサ８は、主に、３次元空間上における計算と、３次元空間上から擬似３次元空間上への位置変換計算と、光源計算処理と、３次元空間上又は擬似３次元空間上で実行された計算結果に基づいた画像および音声データの生成加工処理とを行っている。画像処理プロセッサ９は、主に、信号処理プロセッサ８の計算結果および処理結果に基づいて、描画すべき画像用のデータをＲＡＭ１２ｂに書き込む処理を行っている。また、ＣＰＵ７は、信号処理プロセッサ８に対して、各種データを処理するように命令する。信号処理プロセッサ８は、主に、３次元空間上における各種データに対する計算と、３次元空間上から擬似３次元空間上への位置変換計算とを行っている。
【００４３】
記憶部２は、主に、プログラムデータや、プログラムデータで使用される各種データなどを格納する。記憶部２は、たとえば、記録媒体１０と、インターフェース回路１１と、ハードディスク１２ａと、ＲＡＭ（Random Access Memory）１２ｂとから構成されている。記録媒体１０には、インターフェース回路１１が接続されている。そして、インターフェース回路１１とハードディスク１２ａおよびＲＡＭ１２ｂとはバス６を介して接続されている。記録媒体１０は、オペレーションシステムのプログラムデータや、画像用のデータ、音声データ並びに各種プログラムデータからなるデータなどを記録するためのものである。この記録媒体１０は、たとえば、ＲＯＭ（Read Only Memory）カセット、光ディスク、およびフレキシブルディスクなどであり、オペレーティングシステムのプログラムデータやプログラムで利用するデータなどが記憶される。なお、記録媒体１０にはカード型メモリも含まれている。ハードディスク１２ａは、記録媒体１０から読み出された各種データを格納したり、制御部１からの処理結果を記録したりする。ＲＡＭ１２ｂは、記録媒体１０から読み出された各種データを一時的に格納したり、制御部１からの処理結果を一時的に記録したりするために用いられる。このＲＡＭ１２ｂには、各種データとともに、各種データの記憶位置を示すアドレスデータが格納されており、任意のアドレスを指定して読み書きすることが可能になっている。
【００４４】
画像表示部３は、主に、画像処理プロセッサ９によってハードディスク１２ａやＲＡＭ１２ｂに書き込まれた画像用のデータや、記録媒体１０から読み出される画像用のデータなどを画像として出力するために設けられている。この画像表示部３は、たとえば、モニタ２０と、インターフェース回路２１と、Ｄ／Ａコンバータ（Digital-To-Analogコンバータ）２２とから構成されている。モニタ２０にはＤ／Ａコンバータ２２が接続されており、Ｄ／Ａコンバータ２２にはインターフェース回路２１が接続されている。そして、インターフェース回路２１にバス６が接続されている。ここでは、画像用のデータが、インターフェース回路２１を介してＤ／Ａコンバータ２２に供給され、ここでアナログ画像信号に変換される。そして、アナログ画像信号がモニタ２０に画像として出力される。
【００４５】
ここで、画像用のデータには、たとえば、ポリゴンデータやテクスチャデータなどがある。ポリゴンデータはポリゴンを構成する頂点の座標データのことである。テクスチャデータは、ポリゴンにテクスチャを設定するためのものであり、テクスチャ指示データとテクスチャカラーデータとからなっている。テクスチャ指示データはポリゴンとテクスチャとを対応づけるためのデータであり、テクスチャカラーデータはテクスチャの色を指定するためのデータである。ここで、ポリゴンデータとテクスチャデータとには、各データの記憶位置を示すポリゴンアドレスデータとテクスチャアドレスデータとが対応づけられている。このような画像用のデータでは、信号処理プロセッサ８により、ポリゴンアドレスデータの示す３次元空間上のポリゴンデータ（３次元ポリゴンデータ）が、画面自体(視点)の移動量データおよび回転量データに基づいて座標変換および透視投影変換されて、２次元空間上のポリゴンデータ（２次元ポリゴンデータ）に置換される。そして、複数の２次元ポリゴンデータでポリゴン外形を構成して、ポリゴンの内部領域にテクスチャアドレスデータが示すテクスチャデータを書き込む。このようにして、各ポリゴンにテクスチャが貼り付けられた物体つまり各種キャラクタを表現することができる。
【００４６】
音声出力部４は、主に、記録媒体１０から読み出される音声データを音声として出力するために設けられている。音声出力部４は、たとえば、スピーカ１３と、増幅回路１４と、Ｄ／Ａコンバータ１５と、インターフェース回路１６とから構成されている。スピーカ１３には増幅回路１４が接続されており、増幅回路１４にはＤ／Ａコンバータ１５が接続されており、Ｄ／Ａコンバータ１５にはインターフェース回路１６が接続されている。そして、インターフェース回路１６にバス６が接続されている。ここでは、音声データが、インターフェース回路１６を介してＤ／Ａコンバータ１５に供給され、ここでアナログ音声信号に変換される。このアナログ音声信号が増幅回路１４によって増幅され、スピーカ１３から音声として出力される。音声データには、たとえば、ＡＤＰＣＭ（Adaptive Differential Pulse Code Modulation）データやＰＣＭ（Pulse Code Modulation）データなどがある。ＡＤＰＣＭデータの場合、上述と同様の処理方法で音声をスピーカ１３から出力することができる。ＰＣＭデータの場合、ＲＡＭ１２ｂにおいてＰＣＭデータをＡＤＰＣＭデータに変換しておくことで、上述と同様の処理方法で音声をスピーカ１３から出力することができる。
【００４７】
操作入力部５は、主に、キーボード１７と、操作情報インターフェース回路１８と、インターフェース回路１９とから構成されている。キーボード１７には、操作情報インターフェース回路１８が接続されており、操作情報インターフェース回路１８にはインターフェース回路１９が接続されている。そして、インターフェース回路１９にバス６が接続されている。キーボード１７は、プレイヤが種々の操作命令を入力するために使用する操作装置であり、プレイヤの操作に応じた操作信号をＣＰＵ７に送出する。キーボード１７には、アルファベット、数字、および記号等が記された複数のキーが設けられている。
【００４８】
通信部２３は、通信制御回路２４および通信インターフェース２５を有している。通信制御回路２４および通信インターフェース２５は、家庭用コンピュータをサーバや他のコンピュータ等に接続するために用いられる。通信制御回路２０および通信インターフェース２１は、バス１６を介してＣＰＵ７に接続されている。通信制御回路２０および通信インターフェース２１は、ＣＰＵ７からの命令に応じて、家庭用コンピュータをインターネットに接続するための接続信号を制御し発信する。また、通信制御回路２０および通信インターフェース２１は、インターネットを介して家庭用コンピュータをサーバや他のコンピュータに接続するための接続信号を制御し発信する。
【００４９】
以上のような構成からなる家庭用コンピュータの概略動作を、以下に説明する。電源スイッチ（図示省略）がオンにされ電源が投入されると、ＣＰＵ７が、ハードディスク１２ａ又は記録媒体１０に記憶されているオペレーティングシステムに基づいて、ハードディスク１２ａ又は記録媒体１０から画像用のデータ、音声データ、およびプログラムデータを読み出す。読み出された画像用のデータ、音声データ、およびプログラムデータの一部若しくは全部は、ハードディスク１２ａやＲＡＭ１２ｂに格納される。そして、ＣＰＵ７が、ハードディスク１２ａやＲＡＭ１２ｂに格納されたプログラムデータに基づいて、画像用のデータや音声データを画像や音声としてモニタ２０やスピーカ１３に出力するためのコマンドを発行する。
【００５０】
画像用のデータの場合、ＣＰＵ７からのコマンドに基づいて、まず、信号処理プロセッサ８が、３次元空間上におけるキャラクタの位置計算および光源計算などを行う。次に、画像処理プロセッサ９が、信号処理プロセッサ８の計算結果に基づいて、描画すべき画像用のデータのＲＡＭ１２ｂへの書き込み処理などを行う。そして、ＲＡＭ１２ｂに書き込まれた画像用のデータが、インターフェース回路２１を介してＤ／Ａコンバータ２２に供給される。ここで、画像用のデータがＤ／Ａコンバータ２２でアナログ映像信号に変換される。そして、画像用のデータはモニタ２０に供給され画像として表示される。
【００５１】
音声データの場合、まず、信号処理プロセッサ８が、ＣＰＵ７からのコマンドに基づいて音声データの生成および加工処理を行う。ここでは、音声データに対して、たとえば、ピッチの変換、ノイズの付加、エンベロープの設定、レベルの設定及びリバーブの付加などの処理が施される。次に、音声データは、信号処理プロセッサ８から出力されて、インターフェース回路１６を介してＤ／Ａコンバータ１５に供給される。ここで、音声データがアナログ音声信号に変換される。そして、音声データは増幅回路１４を介してスピーカ１３から音声として出力される。
【００５２】
〔データ処理装置における各種処理概要〕
本データ処理装置において実行されるプログラムは、たとえば、画像処理プログラムである。この画像処理プログラムでは、３次元仮想空間に配置されたオブジェクトの深度情報を格納するためのＺバッファと、オブジェクトの画像情報を格納するためのフレームバッファとを用いて、オブジェクトをモニタ２０に描画する。ここで、Ｚバッファおよびフレームバッファは、ＲＡＭ１２ｂに形成される記憶領域である。
【００５３】
図２は、本発明で主要な役割を果たす機能を説明するための機能ブロック図である。なお、ここでは、データの記憶部をＲＡＭ１２ｂとした場合の例を示すが、この例はデータの記憶部をＲＡＭ１２ｂに限定するものではない。たとえば、データの記憶部をハードディスク１２ａにしたり、データの記憶部をＲＡＭ１２ｂおよびハードディスク１２ａにしたりしても良い。
【００５４】
仮想カメラ設定手段５０は、３次元仮想空間における仮想カメラ位置を示す座標データをＣＰＵ７に認識させることにより、仮想カメラを３次元仮想空間に設定する機能を備えている。この手段では、３次元仮想空間における仮想カメラ位置を示す座標データをＣＰＵ７に認識させることにより、仮想カメラが、３次元仮想空間に設定される。たとえば、この手段では、第１仮想カメラ用の座標データおよび第２仮想カメラ用の座標データをＣＰＵ７に認識させることにより、第１仮想カメラおよび第２仮想カメラが、３次元仮想空間に配置される。
【００５５】
ここでは、第１仮想カメラと第２仮想カメラとが異なる位置に配置される場合の例を示すが、第１仮想カメラと第２仮想カメラとが同じ位置に配置されるようにしても良い。また、ここでは、第１仮想カメラと第２仮想カメラとが配置される位置が固定されている場合の例を示すが、第１仮想カメラと第２仮想カメラとが配置される位置を、ユーザが任意に設定することができるようにしても良い。
【００５６】
撮影空間規定手段５１は、３次元仮想空間において、仮想カメラの撮影対象となる撮影空間を規定するためのデータをＣＰＵ７に認識させることにより、撮影空間を３次元仮想空間に規定する機能を備えている。この手段では、３次元仮想空間において、仮想カメラの撮影対象となる撮影空間を規定するためのデータをＣＰＵ７に認識させることにより、撮影空間が３次元仮想空間に規定される。
【００５７】
たとえば、この手段では、仮想カメラの視界に入る全ての空間（視界空間）の内部の所定の領域が、モニタ２０に表示される空間すなわち撮影空間（視錐領域）として規定される。具体的には、図３に示すように、この撮影空間（視界空間の内部の所定の領域）は、カメラ側の面（第１面）およびカメラから離反する側の面（第２面）を所定の位置に設定することにより規定される。ここで、第１面および第２面が設定されると、第１面と第２面との間の空間が、６面体形状の撮影空間として設定される。すると、撮影空間の８つの隅角部の位置を示す座標データがＣＰＵ７に認識される。これにより、３次元仮想空間における撮影空間を、ＣＰＵ７に認識させることができる。
【００５８】
ここでは、撮影空間を規定するための第１面の位置および第２面の位置は、画像処理プログラムにおいて予め規定されている。しかしながら、第１面の位置および第２面の位置を、ユーザが任意に設定することができるようにしても良い。
【００５９】
なお、上記の撮影空間の設定は、第１仮想カメラおよび第２仮想カメラそれぞれに対して行われる。
【００６０】
深度データ初期化手段５２は、Ｚバッファを初期化する機能を備えている。この手段では、Ｚバッファを初期化する処理が、ＣＰＵ７により実行される。たとえば、Ｚバッファに格納された全ての深度データをゼロクリアする命令が、ＣＰＵ７から発行される。すると、Ｚバッファに格納された全ての深度データに「０（ゼロ）」を代入する処理が、ＣＰＵ７により実行される。たとえば、ここでは、撮影空間の内部において仮想カメラから最も遠い位置の深度データが、「０（ゼロ）」に設定される。たとえば、後述する撮影空間の第２面の深度データが、「０（ゼロ）」に設定される。
【００６１】
なお、Ｚバッファは、仮想カメラの位置を基準として撮影空間の内部の深度をまとめて保存しておくメモリ領域である。
【００６２】
第１深度データ格納手段５３は、モニタ２０の所定の範囲をマスクするためのマスク用の深度データを、Ｚバッファに格納する機能を備えている。この手段では、モニタ２０の所定の範囲をマスクするためのマスク用の深度データが、Ｚバッファに格納される。たとえば、この手段では、モニタ２０の所定の範囲をマスクするためのマスク用の深度データが、Ｚバッファに直接的に格納される。
【００６３】
また、たとえば、この手段では、モニタ２０の所定の範囲をマスクするためのマスク用の深度データが、Ｚバッファに間接的に格納される。たとえば、マスク用の深度データをＺバッファに間接的に格納される場合の一例として、マスク用のオブジェクトを撮影空間に配置することにより、モニタ２０の所定の範囲をマスクするためのマスク用の深度データが、Ｚバッファに格納される。ここでは、マスク用の深度データをＺバッファに間接的に格納される場合の例が示される。
【００６４】
この手段では、第１仮想カメラと第１撮影空間の内部のオブジェクトとの間における第１撮影空間の第１位置に、第１マスク用の無色のオブジェクトが配置される。すると、第１仮想カメラから第１マスク用の無色のオブジェクトまでの距離を算出する処理が、ＣＰＵ７により実行される。具体的には、第１仮想カメラから第１マスク用の無色のオブジェクトの各ポリゴンの各頂点までの第１距離を算出する処理が、ＣＰＵ７により実行される。そして、ここで算出された第１仮想カメラから各ポリゴンの各頂点までの第１距離を用いて、第１仮想カメラから、各ポリゴンの各頂点を除く位置までの第２距離を線形補間により算出する処理が、ＣＰＵ７により実行される。このようにして算出された、第１仮想カメラから第１マスク用のオブジェクトの表面まで距離（第１距離および第２距離）に基づいて、第１マスク用の深度データが、Ｚバッファに格納される。
【００６５】
また、この手段では、第２仮想カメラと第２撮影空間ＳＳ２の内部のオブジェクトとの間における上記の第１位置とは異なる第２位置に、第２マスク用の無色のオブジェクトが配置される。すると、第２仮想カメラから第２マスク用の無色のオブジェクトまでの距離を算出する処理が、ＣＰＵ７により実行される。具体的には、第２仮想カメラから第２マスク用の無色のオブジェクトの各ポリゴンの各頂点までの第３距離を算出する処理が、ＣＰＵ７により実行される。そして、ここで算出された第２仮想カメラから各ポリゴンの各頂点までの第３距離を用いて、第２仮想カメラから、各ポリゴンの各頂点を除く位置までの第４距離を線形補間により算出する処理が、ＣＰＵ７により実行される。このようにして算出された第２仮想カメラから第２マスク用のオブジェクトの表面まで距離（第３距離および第４距離）に基づいて、第２マスク用の深度データが、Ｚバッファに格納される。
【００６６】
なお、ここでは、第２マスク用の無色のオブジェクトは、第１マスク用の無色のオブジェクトに重ならないように、第１撮影空間に配置される。
【００６７】
マスク画像格納手段５４は、Ｚバッファに格納されたマスク用の深度データに基づいて、マスク用の無色の画像データを、フレームバッファに格納する機能を備えている。この手段では、Ｚバッファに格納されたマスク用の深度データに基づいて、マスク用の無色の画像データが、フレームバッファに格納される。
【００６８】
たとえば、この手段では、Ｚバッファに格納された第１マスク用の深度データに基づいて、第１マスク用の無色のオブジェクトに対応する第１マスク用の無色の画像データが、フレームバッファに格納される。また、たとえば、この手段では、Ｚバッファに格納された第２マスク用の深度データに基づいて、第２マスク用の無色のオブジェクトに対応する第２マスク用の無色の画像データが、フレームバッファに格納される。
【００６９】
具体的には、第１マスク用の無色のオブジェクトは、第１撮影空間において、第１仮想カメラと第１撮影空間の内部のオブジェクトとの間に配置される。このため、第１マスク用の深度データの値は、後述する第１撮影空間の内部のオブジェクトの深度データの値より、常に大きな値になる。これにより、第１マスク用の無色のオブジェクトは、第１仮想カメラから見て常に手前に位置するオブジェクトとして、ＣＰＵ７に認識される。このため、フレームバッファＭＦが更新されたときには、第１マスク用の無色のオブジェクトに対応する画像データは、無色情報を有する画像データとして、必ずフレームバッファに格納される。また、第２マスク用の無色のオブジェクトに対応する画像データも、第１マスク用の無色のオブジェクトに対応する画像データと同様に、無色情報を有する画像データとして、必ずフレームバッファに格納される。
【００７０】
第２深度データ格納手段５５は、モニタ２０の所定の範囲を除く範囲にオブジェクトを表示するためのオブジェクト用の深度データを、Ｚバッファに格納する機能を備えている。
【００７１】
この手段では、モニタ２０の所定の範囲を除く範囲にオブジェクトを表示するためのオブジェクト用の深度データが、Ｚバッファに格納される。この手段では、第１仮想カメラから見た第１撮影空間のオブジェクト用の深度データが、Ｚバッファに格納される。また、この手段では、第２仮想カメラから見た第２撮影空間ＳＳ２のオブジェクト用の深度データが、Ｚバッファに格納される。
【００７２】
この手段では、第１撮影空間に第１マスク用の無色のオブジェクトが配置された後に、第１撮影空間の内部にオブジェクトを配置する命令がＣＰＵ７から発行されると、第１撮影空間の内部の所定の位置にオブジェクトが配置される。すると、第１仮想カメラから第１撮影空間の内部のオブジェクトまでの距離を算出する処理が、ＣＰＵ７により実行される。具体的には、第１仮想カメラから第１撮影空間の内部のオブジェクトの各ポリゴンの各頂点までの第５距離を算出する処理が、ＣＰＵ７により実行される。そして、ここで算出された第１仮想カメラから各ポリゴンの各頂点までの第５距離を用いて、第１仮想カメラから、各ポリゴンの各頂点を除く位置までの第６距離を線形補間により算出する処理が、ＣＰＵ７により実行される。このようにして算出された、第１仮想カメラから第１撮影空間の内部のオブジェクトの表面まで距離（第５距離および第６距離）に基づいて、第１撮影空間の内部のオブジェクト用の深度データが、Ｚバッファに格納される。
【００７３】
また、この手段では、第２撮影空間ＳＳ２に第２マスク用の無色のオブジェクトが配置された後に、第２撮影空間ＳＳ２の内部にオブジェクトを配置する命令がＣＰＵ７から発行されると、第２撮影空間ＳＳ２の内部の所定の位置にオブジェクトが配置される。すると、第２仮想カメラから第２撮影空間ＳＳ２の内部のオブジェクトまでの距離を算出する処理が、ＣＰＵ７により実行される。具体的には、第２仮想カメラから第２撮影空間ＳＳ２の内部のオブジェクトの各ポリゴンの各頂点までの第７距離を算出する処理が、ＣＰＵ７により実行される。そして、ここで算出された第２仮想カメラから各ポリゴンの各頂点までの第７距離を用いて、第２仮想カメラから、各ポリゴンの各頂点を除く位置までの第８距離を線形補間により算出する処理が、ＣＰＵ７により実行される。このようにして算出された、第２仮想カメラから第２撮影空間ＳＳ２の内部のオブジェクトの表面まで距離（第７距離および第８距離）に基づいて、第２撮影空間ＳＳ２の内部のオブジェクト用の深度データが、Ｚバッファに格納される。
【００７４】
オブジェクト画像格納手段５６は、Ｚバッファに格納されたオブジェクト用の深度データに基づいて、オブジェクト用の画像データを、フレームバッファに格納する機能を備えている。この手段では、Ｚバッファに格納されたオブジェクト用の深度データに基づいて、オブジェクト用の画像データが、フレームバッファに格納される。
【００７５】
この手段では、Ｚバッファに格納された第１撮影空間のオブジェクト用の深度データに基づいて、第１仮想カメラから見た第１撮影空間のオブジェクトに対応する、オブジェクト用の画像データが、フレームバッファに格納される。また、この手段では、Ｚバッファに格納された第２撮影空間ＳＳ２のオブジェクト用の深度データに基づいて、第２仮想カメラから見た第２撮影空間ＳＳ２のオブジェクトに対応する、オブジェクト用の画像データが、フレームバッファに格納される。
【００７６】
具体的には、ＺバッファをＣＰＵ７に参照させ、第１撮影空間のオブジェクト用の深度データに対応するように、オブジェクト用の画像データが、フレームバッファに格納される。ここでフレームバッファに格納されるオブジェクト用の画像データは、色情報を有している。また、ＺバッファをＣＰＵ７に参照させ、第２撮影空間ＳＳ２のオブジェクト用の深度データに対応するように、オブジェクト用の画像データが、フレームバッファに格納される。ここでフレームバッファに格納されるオブジェクト用の画像データは、色情報を有している。
【００７７】
オブジェクト描画手段５７は、フレームバッファに格納された、オブジェクト用の画像データを用いて、オブジェクトを描画する機能を備えている。この手段では、フレームバッファに格納されたオブジェクト用の画像データを用いて、オブジェクトが描画される。
【００７８】
たとえば、この手段では、フレームバッファに格納されたオブジェクト用の画像データが、ＣＰＵ７からの描画命令に基づいて、モニタ２０に供給され画像として描画される。これにより、第１撮影空間の画像と第２撮影空間ＳＳ２の画像とを、１つのモニタ２０において同時に表示することができる。
【００７９】
〔画像処理システムの説明と処理フロー〕
次に、画像処理システムについて説明する。また、図８に示すフローについても同時に説明する。
【００８０】
まず、家庭用コンピュータの電源が投入され家庭用コンピュータが起動されると、画像処理プログラムが、記録媒体１０からＲＡＭ１２ｂにロードされ格納される。また、画像処理を実行する上で必要となる各種の基本データが、記録媒体１０からＲＡＭ１２ｂにロードされ格納される（Ｓ１）。そして、ＲＡＭ１２ｂに格納された基本データが、ＣＰＵ７に認識される。
【００８１】
基本データには、たとえば、３次元仮想空間に配置されるモデル（オブジェクト）のモデルデータが、含まれている。このモデルデータには、以下に示すポリゴンデータおよび各モデルを３次元仮想空間に配置するための位置座標データが含まれている。ここでは、三角形状のポリゴンを用いることにより、モデルが形成される。すなわち、モデルの表面が、複数の微小な三角形状のポリゴンにより構成されている。このポリゴンの情報を規定するためのポリゴンデータは、モデルを構成する各ポリゴンの頂点Ｃを規定するための座標データＰＸ、各ポリゴンの色を規定するための色データＰＩ、および各ポリゴンのテクスチャを規定するためのテクスチャデータＰＴを有している。なお、後述するように各モデル（オブジェクト）を３次元仮想空間に配置されたときには、各モデル（オブジェクト）のポリゴンデータが、ＣＰＵ７に認識される。
【００８２】
色データＰＩ（ＲＧＢデータ又はＲＧＢＡデータ）は、ポリゴンの頂点に定義されている。たとえば、あるポリゴンの３つの頂点のＲＧＢデータが同じ値である場合、このポリゴンには、３つの頂点のＲＧＢデータに対応する色が設定される。また、あるポリゴンの３つの頂点のＲＧＢデータが異なる値である場合、このポリゴンには、３つの頂点それぞれのＲＧＢデータに対応する色を基準として、ポリゴンの内部の色が連続的に変化するようにグラデーション処理が、ＣＰＵ７により実行される。このようにして、ポリゴンに色が設定される。
【００８３】
テクスチャデータＰＴは、ポリゴンの表面に貼り付けられる模様データである。このテクスチャデータＰＴをポリゴンの表面にマッピングすることにより、モデルの表面の模様や質感が表現される。たとえば、テクスチャ画像の４つの頂点それぞれを、隣接した２つの三角形のポリゴンの４つの頂点それぞれに対応づける処理をＣＰＵ７に実行させることにより、テクスチャデータをポリゴンの表面にマッピングすることができる。
【００８４】
なお、マスク用の無色のオブジェクトに対応するマスク用の無色の画像データが、フレームバッファＭＦに格納する場合の例が示される。このため、マスク用の無色のオブジェクト用の色データＰＩとしては、ＲＧＢＡデータが用いられる。ＲＧＢＡデータの「Ａ」は、アルファチャンネル（Ａｌｐｈａ）の略である。アルファチャンネルは、透明度を表現するものである。マスク用の無色の画像データに対しては、ＲＧＢＡデータのアルファチャンネルＡの値が「０（ゼロ）」に設定される。
【００８５】
以下では、後述する第１撮影空間ＳＳ１に第１モデルＭ１（第１オブジェクト）が配置され、後述する第２撮影空間ＳＳ２に第２モデルＭ２（第２オブジェクト）が配置される場合の例が示される。なお、第１モデルＭ１は、顔の形状を有するオブジェクトになっており、第２モデルＭ２は、太陽の形状を有するオブジェクトになっている（図３を参照）。
【００８６】
続いて、３次元仮想空間における仮想カメラ位置を示す座標データをＣＰＵ７に認識させることにより、図３に示すように、仮想カメラＣ１，Ｃ２が、３次元仮想空間に設定される（Ｓ２）。たとえば、第１仮想カメラ用の座標データおよび第２仮想カメラ用の座標データをＣＰＵ７に認識させることにより、第１仮想カメラＣ１および第２仮想カメラＣ２が、３次元仮想空間に配置される。
【００８７】
ここでは、３次元仮想空間に配置される第１仮想カメラＣ１および第２仮想カメラＣ２の視線方向および視野角は、画像処理プログラムにおいて予め規定されており、所定の方向および所定の角度に設定されている。なお、第１仮想カメラＣ１および第２仮想カメラＣ２の視線方向および視野角は、ユーザが任意に設定することができるようにしても良い。
【００８８】
すると、３次元仮想空間において、仮想カメラの撮影対象となる撮影空間ＳＳ１,ＳＳ２が、ＣＰＵ７により規定される（Ｓ３）。たとえば、第１撮影空間ＳＳ１は、第１仮想カメラＣ１側の面ＶＳ１（第１面）およびカメラから離反する側の面ＶＳ２（第２面）を所定の位置に設定することにより規定される。ここで、第１面ＶＳ１および第２面ＶＳ２が設定されると、第１面ＶＳ１と第２面ＶＳ２との間の空間が、６面体形状の第１撮影空間ＳＳ１として設定される。すると、第１撮影空間ＳＳ１の８つの隅角部の位置を示す座標データがＣＰＵ７に認識される。このようにして、第１撮影空間ＳＳ１を３次元仮想空間に設定することができる。また、この第１撮影空間ＳＳ１の設定形態と同様に、第２撮影空間ＳＳ２も３次元仮想空間に設定される。
【００８９】
ここでは、第１撮影空間ＳＳ１および第２撮影空間ＳＳ２を規定するための第１面ＶＳ１の位置および第２面ＶＳ２の位置は、画像処理プログラムにおいて予め規定されている。たとえば、第１面ＶＳ１の位置および第２面ＶＳ２は、各仮想カメラの位置を基準として、各仮想カメラから所定の距離を隔てた位置に設定される。すなわち、各仮想カメラから第１面ＶＳ１までの距離データ、および各仮想カメラから第２面ＶＳ２までの距離データが、ＲＡＭ１２ｂに予め格納されており、この距離データをＣＰＵ７に認識させることにより、第１面ＶＳ１および第２面ＶＳ２を設定することができる。
【００９０】
上記のように、第１仮想カメラＣ１の位置および第１仮想カメラＣ１に対応する第１撮影空間ＳＳ１の範囲と、第２仮想カメラＣ２の位置および第２仮想カメラＣ２に対応する第２撮影空間ＳＳ２の範囲とが設定されると、ＺバッファＭＺに格納された全ての深度データＳＤをゼロクリアする命令が、ＣＰＵ７から発行され、ＺバッファＭＺに格納された全ての深度データＳＤに「０（ゼロ）」を代入する処理が、ＣＰＵ７により実行される。このようにして、ＺバッファＭＺが初期化される（Ｓ４）。
【００９１】
そして、第１仮想カメラＣ１と第１撮影空間ＳＳ１の内部の第１モデルＭ１との間における第１撮影空間ＳＳ１の第１位置に、第１マスク用の無色のオブジェクトＢ１が配置される（Ｓ５）。たとえば、第１撮影空間ＳＳ１の第１仮想カメラＣ１側の面すなわち第１撮影空間ＳＳ１の第１面ＶＳ１に、第１マスク用の無色のオブジェクトＢ１が配置される。具体的には、図３に示すように、第１撮影空間ＳＳ１の矩形状の第１面ＶＳ１に、三角形状の第１マスク用の無色のオブジェクトＢ１が、配置される。この三角形状の第１マスク用の無色のオブジェクトＢ１の３つの頂点それぞれの座標データは、第１撮影空間ＳＳ１の矩形状の第１面ＶＳ１の３つの頂点それぞれ座標データに対応している。言い換えると、三角形状の第１マスク用の無色のオブジェクトＢ１の３つの頂点それぞれの座標データが、第１面ＶＳ１の境界である、下辺、第１仮想カメラＣ１から見た左辺、および対角線によって形成される直角三角形の３つの頂点それぞれ座標データに対応している。これにより、第１撮影空間ＳＳ１の矩形状の第１面ＶＳ１の３つの頂点を結ぶ領域（第１面ＶＳ１の直角三角形の領域）が、第１マスク用の無色のオブジェクトＢ１によりマスクされる。
【００９２】
すると、図４に示すように、第１仮想カメラＣ１から第１マスク用の無色のオブジェクトＢ１までの距離を算出する処理が、ＣＰＵ７により実行される。図４は、ある点ＣからあるポリゴンＰの表面までの距離を算出する方法を示した概念図である。たとえば、第１仮想カメラＣ１から第１マスク用の無色のオブジェクトＢ１の各ポリゴンの各頂点までの第１距離（図４ではＬ１１，Ｌ１２，Ｌ１３）を算出する処理が、ＣＰＵ７により実行される。また、ここで算出された第１仮想カメラＣ１から各ポリゴンの各頂点Ｐ１，Ｐ２，Ｐ３までの第１距離（図４ではＬ１１，Ｌ１２，Ｌ１３）を用いて、第１仮想カメラＣ１から、各ポリゴンの各頂点Ｐ１，Ｐ２，Ｐ３を除く位置（図４ではＸ印、および図示しないポリゴンの内部の各点）までの第２距離を線形補間により算出する処理が、ＣＰＵ７により実行される。すなわち、図４では、この第２距離は、第１仮想カメラＣ１から、頂点Ｐ１，Ｐ２，Ｐ３と頂点Ｐ２，Ｐ３，Ｐ１との間の点（Ｘ印）までの距離、および第１仮想カメラＣ１から、ポリゴンの内部の点（図示しない）までの距離に対応している。このようにして算出された、第１仮想カメラＣ１から第１マスク用のオブジェクトの表面まで距離（第１距離および第２距離）に基づいて、第１マスク用の深度データＳＤ１が、ＺバッファＭＺに格納される（Ｓ６、図５を参照）。
【００９３】
ここでは、たとえば、第１仮想カメラＣ１の位置から第１面ＶＳ１又は第２面ＶＳ２の重心に向かう直線、すなわち第１仮想カメラＣ１の視線方向の直線と、ここで算出された第１仮想カメラＣ１からオブジェクトの表面の各点に向かう直線とがなす角度ＡＬが、ＣＰＵ７により算出される。すると、この角度ＡＬおよび第１距離Ｌ１（図４では「Ｌ１１，Ｌ１２，Ｌ１３」、又は第２距離）を、「ＬＴ＝Ｌ１・ｃｏｓ（ＡＬ）」に代入することにより、第１仮想カメラＣ１からオブジェクトの表面の各点までの垂直距離ＬＴが算出される。そして、この垂直距離ＬＴを、第１仮想カメラＣ１から第２面ＶＳ２までの垂直距離から減算することにより、第２面ＶＳ２からオブジェクトの表面の各点までの垂直距離、すなわち第１マスク用の深度データＳＤ１が、算出される。そして、この第１マスク用の深度データＳＤ１が、ＺバッファＭＺに格納される。
【００９４】
図５は、ＺバッファＭＺの内部の状態を示す概念図、およびＺバッファＭＺを参照して形成されたフレームバッファＭＦの内部の状態を示す概念図である。この図５では、第１マスク用の深度データＳＤ１が書き込まれた部分が、左下がりの斜線で示されている。図５におけるＺバッファＭＺの斜線の部分には、上記の処理で算出された第１マスク用の深度データＳＤ１すなわち深度データの数値が書き込まれている。また、図５の白抜きの部分には、「０（ゼロ）」が書き込まれている。
【００９５】
そして、フレームバッファＭＦを更新する命令がＣＰＵ７から発行されると、ＺバッファＭＺに格納された第１マスク用の深度データＳＤ１に基づいて、第１マスク用の無色のオブジェクトＢ１に対応する第１マスク用の無色の画像データＧＤ１が、フレームバッファＭＦに格納される（Ｓ７）。
【００９６】
詳細には、ＺバッファＭＺにおいて数値が更新されたドット位置、たとえばＺバッファＭＺにおいて初期値（＝「０（ゼロ）」）より大きな値に変更されたドット位置が、ＣＰＵ７に認識される。たとえば、ドット位置を示すアドレスを（ｉ，ｊ）とすると、Ｚバッファに格納される数値は、「ＤＺ（ｉ，ｊ）」と記載することができる。この数値ＤＺ（ｉ，ｊ）の値が更新された位置、すなわち「ＤＺ（ｉ，ｊ）＞０」の値を有する位置ＤＸ（ｉ，ｊ）が、ＣＰＵ７に認識される。すると、フレームバッファＭＦを更新する命令が発行される。すると、この位置ＤＸ（ｉ，ｊ）に対応するフレームバッファＭＦのドット位置に、第１マスク用の無色のオブジェクトＢ１に対応する第１マスク用の無色の画像データＧＤ１が格納される。このような処理が、ＺバッファＭＺにおいて数値が更新されるごとにＣＰＵ７により実行される。すると、第１マスク用の無色のオブジェクトが存在する部分に対応する第１マスク用の無色の画像データＧＤ１が、フレームバッファＭＦに格納される。
【００９７】
なお、ここでは、第１マスク用の無色のオブジェクトＢ１が、第１撮影空間ＳＳ１の第１面ＶＳ１に配置されている。このため、第１マスク用の深度データＳＤ１の値は、後述する第１撮影空間ＳＳ１の内部の第１モデルＭ１の深度データＳＤの値より、常に大きな値になる。これにより、第１マスク用の無色のオブジェクトＢ１は、第１仮想カメラＣ１から見て常に手前に位置するオブジェクトとして、ＣＰＵ７に認識される。このため、フレームバッファＭＦが更新されたときには、第１マスク用の無色のオブジェクトＢ１に対応する画像データは、無色情報を有する画像データとして、必ずフレームバッファＭＦに格納されることになる。ここで、無色情報は、ＲＧＢＡデータのアルファチャンネルＡの値を「０（ゼロ）」に設定することにより定義される。
【００９８】
続いて、第１撮影空間ＳＳ１の内部に第１モデルＭ１を配置する命令がＣＰＵ７から発行される。すると、図３に示すように、第１撮影空間ＳＳ１の内部の所定の位置に第１モデルＭ１が配置される（Ｓ８）。すると、図４を用いて上記で説明したように、第１仮想カメラＣ１から第１撮影空間ＳＳ１の第１モデルＭ１までの距離を算出する処理が、ＣＰＵ７により実行される。具体的には、第１仮想カメラＣ１から第１撮影空間ＳＳ１の第１モデルＭ１の各ポリゴンの各頂点までの第５距離を算出する処理が、ＣＰＵ７により実行される。そして、ここで算出された第１仮想カメラＣ１から各ポリゴンの各頂点までの第５距離を用いて、第１仮想カメラＣ１から、各ポリゴンの各頂点を除く位置までの第６距離を線形補間により算出する処理が、ＣＰＵ７により実行される。このようにして算出された、第１仮想カメラＣ１から第１撮影空間ＳＳ１の第１モデルＭ１の表面まで距離（第５距離および第６距離）に基づいて、第１撮影空間ＳＳ１の第１モデル用の深度データＳＤＭ１が、ＺバッファＭＺに格納される（Ｓ９、図５を参照）。なお、第１撮影空間ＳＳ１の第１モデル用の深度データＳＤＭ１は、上述した第１マスク用の深度データＳＤ１の算出形態と同様にして、ＣＰＵ７により算出される。
【００９９】
図５は、ＺバッファＭＺの内部の状態を示す概念図、およびＺバッファＭＺを参照して形成されたフレームバッファＭＦの内部の状態を示す概念図である。この図５では、第１モデル用の深度データＳＤＭ１が書き込まれた部分が、右下がりの斜線で示されている。図５におけるＺバッファＭＺの斜線の部分には、上記の処理で算出された第１モデル用の深度データＳＤＭ１すなわち深度データの数値が書き込まれている。また、図５の白抜きの部分には、「０（ゼロ）」が書き込まれている。
【０１００】
そして、フレームバッファＭＦを更新する命令がＣＰＵ７から発行されると、ＺバッファＭＺに格納された第１モデル用の深度データＳＤＭ１に基づいて、第１モデル用の画像データＧＤＭ１が、フレームバッファＭＦに格納される（Ｓ１０）。
【０１０１】
詳細には、ＺバッファＭＺにおいて数値が更新されたドット位置、たとえばＺバッファＭＺにおいて初期値（＝「０（ゼロ）」）より大きな値に変更されたドット位置が、ＣＰＵ７に認識される。たとえば、ドット位置を示すアドレスを（ｉ，ｊ）とすると、Ｚバッファに格納される数値は、「ＤＺ（ｉ，ｊ）」と記載することができる。この数値ＤＺ（ｉ，ｊ）の値が更新された位置、すなわち「ＤＺ（ｉ，ｊ）＞０」の値を有する位置ＤＸ（ｉ，ｊ）が、ＣＰＵ７に認識される。すると、フレームバッファＭＦを更新する命令が発行される。すると、この位置ＤＸ（ｉ，ｊ）に対応するフレームバッファＭＦのドット位置に、第１モデルＭ１に対応する第１モデル用の画像データＧＤＭ１が格納される。このような処理が、ＺバッファＭＺにおいて数値が更新されるごとにＣＰＵ７により実行される。すると、第１モデルＭ１が存在する部分に対応する第１モデル用の画像データＧＤＭ１が、フレームバッファＭＦに格納される。
【０１０２】
なお、ここでは、ＺバッファＭＺに格納された第１撮影空間ＳＳ１の第１モデル用の深度データＳＤＭ１に基づいて、第１仮想カメラＣ１から見た第１撮影空間ＳＳ１の第１モデルＭ１に対応する第１モデル用の画像データＧＤＭ１が、フレームバッファＭＦに格納される。具体的には、ＺバッファＭＺをＣＰＵ７に参照させ、ＺバッファＭＺにおける、深度データＳＤが「０（ゼロ）」以外の値である位置、すなわち深度データＳＤが「０（ゼロ）」でない位置が、ＣＰＵ７に認識される。そして、この深度データＳＤが「０（ゼロ）」でない位置に対応するフレームバッファＭＦの位置に、第１モデル用の画像データＧＤＭ１が格納される。ここでは、第１モデル用の画像データＧＤＭ１は、色情報を有する画像データとして、フレームバッファＭＦに格納される。たとえば、色情報は、ＲＧＢＡデータにより定義される。
【０１０３】
なお、ここでは、ＺバッファＭＺに格納された第１モデル用の各深度データＳＤＭ１に対応する位置に、第１モデル用の各ドットデータが格納される。この第１モデル用の各ドットデータは、画像データＧＤＭ１に含まれている。
【０１０４】
続いて、上記のステップ４（Ｓ４）で説明したように、ＺバッファＭＺに格納された全ての深度データＳＤをゼロクリアする命令が、ＣＰＵ７から再発行され、ＺバッファＭＺに格納された全ての深度データＳＤに「０（ゼロ）」を代入する処理が、ＣＰＵ７により再実行される。このようにして、ＺバッファＭＺが再び初期化される（Ｓ１１）。
【０１０５】
そして、第２仮想カメラＣ２と第２撮影空間ＳＳ２の内部の第２モデルＭ２との間における第２撮影空間ＳＳ２の第２位置に、第２マスク用の無色のオブジェクトＢ２が配置される（Ｓ１２）。たとえば、図３に示すように、第２撮影空間ＳＳ２の第２仮想カメラＣ２側の面すなわち第２撮影空間ＳＳ２の第１面ＶＳ１に、第２マスク用の無色のオブジェクトＢ２が配置される。具体的には、第２撮影空間ＳＳ２の矩形状の第１面ＶＳ１に、三角形状の第２マスク用の無色のオブジェクトＢ２が、配置される。この三角形状の第２マスク用の無色のオブジェクトＢ２の３つの頂点それぞれの座標データは、第２撮影空間ＳＳ２の矩形状の第１面ＶＳ１の３つの頂点それぞれ座標データに対応している。言い換えると、三角形状の第２マスク用の無色のオブジェクトＢ２の３つの頂点それぞれの座標データが、第１面ＶＳ１の境界である、下辺、第１仮想カメラＣ１から見た右辺、および対角線によって形成される直角三角形の３つの頂点それぞれ座標データに対応している。これにより、第２撮影空間ＳＳ２の矩形状の第１面ＶＳ１の３つの頂点を結ぶ領域（第１面ＶＳ１の直角三角形の領域）が、第２マスク用の無色のオブジェクトＢ２によりマスクされる。
【０１０６】
すると、第２仮想カメラＣ２から第２マスク用の無色のオブジェクトＢ２までの距離を算出する処理が、ＣＰＵ７により実行される。たとえば、図４を用いて上記で説明したように、第２仮想カメラＣ２から第２マスク用の無色のオブジェクトＢ２の各ポリゴンの各頂点までの第３距離を算出する処理が、ＣＰＵ７により実行される。そして、ここで算出された第２仮想カメラＣ２から各ポリゴンの各頂点までの第３距離を用いて、第２仮想カメラＣ２から、各ポリゴンの各頂点を除く位置までの第４距離を線形補間により算出する処理が、ＣＰＵ７により実行される。このようにして算出された、第２仮想カメラＣ２から第２マスク用のオブジェクトの表面まで距離（第３距離および第４距離）に基づいて、第２マスク用の深度データＳＤ２が、ＺバッファＭＺに格納される（Ｓ１３、図６を参照）。なお、第２マスク用の深度データＳＤ２は、上述した第１マスク用の深度データＳＤ１の算出形態と同様にして、ＣＰＵ７により算出される。
【０１０７】
図６は、ＺバッファＭＺの内部の状態を示す概念図、およびＺバッファＭＺを参照して形成されたフレームバッファＭＦの内部の状態を示す概念図である。この図６では、第２マスク用の深度データＳＤ２が書き込まれた部分が、左下がりの斜線で示されている。図６におけるＺバッファＭＺの斜線の部分には、上記の処理で算出された第２マスク用の深度データＳＤ２すなわち深度データの数値が書き込まれている。また、図６の白抜きの部分には、「０（ゼロ）」が書き込まれている。
【０１０８】
そして、フレームバッファＭＦを更新する命令がＣＰＵ７から発行されると、ＺバッファＭＺに格納された第２マスク用の深度データＳＤ２に基づいて、第２マスク用の無色のオブジェクトＢ２に対応する第２マスク用の無色の画像データＧＤ２が、フレームバッファＭＦに格納される（Ｓ１４）。
【０１０９】
詳細には、ＺバッファＭＺにおいて数値が更新されたドット位置、たとえばＺバッファＭＺにおいて初期値（＝「０（ゼロ）」）より大きな値に変更されたドット位置が、ＣＰＵ７に認識される。たとえば、ドット位置を示すアドレスを（ｉ，ｊ）とすると、Ｚバッファに格納される数値は、「ＤＺ（ｉ，ｊ）」と記載することができる。この数値ＤＺ（ｉ，ｊ）の値が更新された位置、すなわち「ＤＺ（ｉ，ｊ）＞０」の値を有する位置ＤＸ（ｉ，ｊ）が、ＣＰＵ７に認識される。すると、フレームバッファＭＦを更新する命令が発行される。すると、この位置ＤＸ（ｉ，ｊ）に対応するフレームバッファＭＦのドット位置に、第２マスク用の無色のオブジェクトＢ２に対応する第２マスク用の無色の画像データＧＤ２が格納される。このような処理が、ＺバッファＭＺにおいて数値が更新されるごとにＣＰＵ７により実行される。すると、第２マスク用の無色のオブジェクトが存在する部分に対応する第２マスク用の無色の画像データＧＤ２が、フレームバッファＭＦに格納される。
【０１１０】
なお、ここでは、第２マスク用の無色のオブジェクトＢ２は、第２撮影空間ＳＳ２の第１面ＶＳ１に配置されている。このため、第２マスク用の深度データＳＤ２の値は、後述する第２撮影空間ＳＳ２の内部の第２モデルＭ２の深度データＳＤの値より、常に大きな値になる。これにより、第２マスク用の無色のオブジェクトＢ２は、第２仮想カメラＣ２から見て常に手前に位置するオブジェクトとして、ＣＰＵ７に認識される。このため、フレームバッファＭＦが更新されたときには、第２マスク用の無色のオブジェクトＢ２に対応する画像データＧＤ２は、無色情報を有する画像データとして、必ずフレームバッファＭＦに格納されることになる。ここで、無色情報は、ＲＧＢＡデータのアルファチャンネルＡの値を「０（ゼロ）」に設定することにより定義される。
【０１１１】
続いて、第２撮影空間ＳＳ２の内部に第２モデルＭ２を配置する命令がＣＰＵ７から発行される。すると、第２撮影空間ＳＳ２の内部の所定の位置に第２モデルＭ２が配置される（Ｓ１５）。すると、図４を用いて上記で説明したように、第２仮想カメラＣ２から第２撮影空間ＳＳ２の第２モデルＭ２までの距離を算出する処理が、ＣＰＵ７により実行される。具体的には、第２仮想カメラＣ２から第２撮影空間ＳＳ２の第２モデルＭ２の各ポリゴンの各頂点までの第７距離を算出する処理が、ＣＰＵ７により実行される。そして、ここで算出された第２仮想カメラＣ２から各ポリゴンの各頂点までの第７距離を用いて、第１仮想カメラＣ１から、各ポリゴンの各頂点を除く位置までの第８距離を線形補間により算出する処理が、ＣＰＵ７により実行される。このようにして算出された、第２仮想カメラＣ２から第２撮影空間ＳＳ２の第２モデルＭ２の表面まで距離（第７距離および第８距離）に基づいて、第２撮影空間ＳＳ２の第２モデル用の深度データＳＤＭ２が、ＺバッファＭＺに格納される（Ｓ１６、図６を参照）。なお、第２撮影空間ＳＳ２の第２モデル用の深度データＳＤＭ２は、上述した第１マスク用の深度データＳＤ１の算出形態と同様にして、ＣＰＵ７により算出される。
【０１１２】
図６は、ＺバッファＭＺの内部の状態を示す概念図、およびＺバッファＭＺを参照して形成されたフレームバッファＭＦの内部の状態を示す概念図である。この図６では、第２モデル用の深度データＳＤＭ２が書き込まれた部分が、右下がりの斜線で示されている。図６におけるＺバッファＭＺの斜線の部分には、上記の処理で算出された第２モデル用の深度データＳＤＭ２すなわち深度データの数値が書き込まれている。また、図６の白抜きの部分には、「０（ゼロ）」が書き込まれている。
【０１１３】
そして、フレームバッファＭＦを更新する命令がＣＰＵ７から発行されると、ＺバッファＭＺに格納された第２モデル用の深度データＳＤに基づいて、第２モデル用の画像データＧＤＭ２が、フレームバッファＭＦに格納される（Ｓ１７）。
【０１１４】
詳細には、ＺバッファＭＺにおいて数値が更新されたドット位置、たとえばＺバッファＭＺにおいて初期値（＝「０（ゼロ）」）より大きな値に変更されたドット位置が、ＣＰＵ７に認識される。たとえば、ドット位置を示すアドレスを（ｉ，ｊ）とすると、Ｚバッファに格納される数値は、「ＤＺ（ｉ，ｊ）」と記載することができる。この数値ＤＺ（ｉ，ｊ）の値が更新された位置、すなわち「ＤＺ（ｉ，ｊ）＞０」の値を有する位置ＤＸ（ｉ，ｊ）が、ＣＰＵ７に認識される。すると、フレームバッファＭＦを更新する命令が発行される。すると、この位置ＤＸ（ｉ，ｊ）に対応するフレームバッファＭＦのドット位置に、第２モデルＭ２に対応する第２モデル用の画像データＧＤＭ２が格納される。このような処理が、ＺバッファＭＺにおいて数値が更新されるごとにＣＰＵ７により実行される。すると、第２モデルＭ２が存在する部分に対応する第２モデル用の画像データＧＤＭ２が、フレームバッファＭＦに格納される。
【０１１５】
ここでは、ＺバッファＭＺに格納された第２撮影空間ＳＳ２の第２モデル用の深度データＳＤＭ２に基づいて、第２仮想カメラＣ２から見た第２撮影空間ＳＳ２の第２モデルＭ２に対応する第２モデル用の画像データＧＤＭ２が、フレームバッファＭＦに格納される。具体的には、ＺバッファＭＺをＣＰＵ７に参照させ、ＺバッファＭＺにおける、深度データＳＤが「０（ゼロ）」以外の値である位置、すなわち深度データＳＤが「０（ゼロ）」でない位置が、ＣＰＵ７に認識される。そして、この深度データＳＤが「０（ゼロ）」でない位置に対応するフレームバッファＭＦの位置に、第２モデル用の画像データＧＤＭ２が格納される。ここでは、第２モデル用の画像データＧＤＭ２は、色情報を有する画像データとして、フレームバッファＭＦに格納される。たとえば、色情報は、ＲＧＢＡデータにより定義される。
【０１１６】
なお、ここでは、ＺバッファＭＺに格納された第２モデル用の各深度データＳＤＭ２に対応する位置に、第２モデル用の各ドットデータが格納される。この第２モデル用の各ドットデータは、画像データＧＤＭ２に含まれている。
【０１１７】
すると、フレームバッファＭＦに格納された第１モデル用の画像データＧＤＭ１および第２モデル用の画像データＧＤＭ２が、ＣＰＵ７からの描画命令に基づいて、モニタ２０に供給され画像として描画される。たとえば、図７に示すように、モニタ２０の上部の直角三角形の領域に第１モデル用の第１画面Ｄ１が表示され、モニタ２０の下部の直角三角形の領域に、第２モデル用の第２画面Ｄ２が表示される（Ｓ１８）。
【０１１８】
上記のような処理を１フレームごとに繰り返し実行することにより、モニタ２０に第１画面Ｄ１および第２画面Ｄ２を設定することができる。また、上記のような処理を１フレームごとに繰り返し実行することにより、撮影空間ＳＳ１,ＳＳ２においてモデルが移動したり、撮影空間ＳＳ１,ＳＳ２においてあるモデルが他のモデルに置き換えられたりしたとしても、モニタ２０の各画面Ｄ１,Ｄ２にモデルを表示することができる。
【０１１９】
上記のように、本実施形態では、Ｚバッファを利用することにより、第１画面および第２画面を設定することができ、これら画面にオブジェクトを表示することができる。また、レンダリングバッファを用意しなくても、Ｚバッファからフレームバッファに直接的に画像データを格納することができるので、メモリ容量を圧迫することなく、オブジェクトを新規の画面に表示することができる。このように、本願発明が適用された実施形態では、メモリを圧迫することなく、複数の画面を任意の形状で自由に形成することができる。
【０１２０】
〔他の実施形態〕
（ａ）前記実施形態では、画像処理プログラムを適用しうるコンピュータの一例としての家庭用コンピュータを用いた場合の例を示したが、コンピュータは、前記実施形態に限定されず、モニタが別体に構成された画像処理装置、モニタが一体に構成された画像処理装置、画像処理プログラムを実行することによって画像処理装置として機能するパーソナルコンピュータやワークステーションなどにも同様に適用することができる。
【０１２１】
（ｂ）本発明には、前述したような画像処理プログラムおよびこのプログラムを記録したコンピュータ読み取り可能な記録媒体も含まれる。この記録媒体としては、カートリッジ以外に、たとえば、コンピュータ読み取り可能なフレキシブルディスク、半導体メモリ、ＣＤ−ＲＯＭ、ＤＶＤ、ＭＯ、ＲＯＭカセット、その他のものが挙げられる。
【０１２２】
（ｃ）前記実施形態では、マスク用の深度データＳＤ（第１マスク用の深度データＳＤ１および第２マスク用の深度データＳＤ２）がＺバッファＭＺに格納された後に、フレームバッファＭＦを更新する命令がＣＰＵ７から発行される場合の例を示したが、マスク用の深度データＳＤがＺバッファＭＺに格納された後に、フレームバッファＭＦを更新する命令を発行する処理を必ずしも実行する必要はない。この場合、マスク用の深度データＳＤに対応する、マスク用の画像データがフレームバッファＭＦに格納されないことになるが、マスク用の画像データがフレームバッファＭＦに格納されなかったとしても、本発明は実現することができる。また、この場合、色データＰＩとしては、ＲＧＢＡデータだけでなく、ＲＧＢデータも用いることができる。
【０１２３】
（ｄ）前記実施形態では、２つの仮想カメラ（第１仮想カメラＣ１、第２仮想カメラＣ２）が用いられる場合の例を示したが、仮想カメラの数は、前記実施形態に限定されず、どのようにしても良い。たとえば、３次元仮想空間に複数の仮想カメラを設置した場合、複数の仮想カメラそれぞれに撮影された複数の画面が、モニタ２０に表示される。
【図面の簡単な説明】
【０１２４】
【図１】本発明の一実施形態によるビデオゲーム装置の基本構成図。
【図２】前記ビデオゲーム装置の一例としての機能ブロック図。
【図３】３次元仮想空間に配置されるオブジェクトおよび仮想カメラを説明するための図。
【図４】Ｚバッファの深度データの算出方法を説明するための図。
【図５】Ｚバッファおよびフレームバッファの概念図（その１）。
【図６】Ｚバッファおよびフレームバッファの概念図（その２）。
【図７】画面分割後のモニタに表示されるオブジェクトを示す図。
【図８】画像処理システムを示すフロー。
【符号の説明】
【０１２５】
１  制御部
３  画像表示部
５  操作入力部
７  ＣＰＵ
１２ｂ  ＲＡＭ
１７  キーボード
２０  モニタ
５０  仮想カメラ設定手段
５１  撮影空間規定手段
５２  深度データ初期化手段
５３  第１深度データ格納手段
５４  マスク画像格納手段
５５  第２深度データ格納手段
５６  オブジェクト画像格納手段
５７  オブジェクト描画手段
ＭＦ  フレームバッファ（画像情報用の記憶領域）
ＭＺ  Ｚバッファ（深度情報用の記憶領域）
ＳＤ  深度データ
ＳＤ１  第１マスク用の深度データ
ＳＤ２  第２マスク用の深度データ
Ｃ１  第１仮想カメラ
Ｃ２  第２仮想カメラ
ＳＳ１  第１撮影空間
ＳＳ２  第２撮影空間
Ｍ１  第１モデル
Ｍ２  第２モデル
ＶＳ１  第１面
ＶＳ２  第２面
Ｂ１  第１マスク用の無色のオブジェクト
Ｂ２  第２マスク用の無色のオブジェクト
ＧＤ１  第１マスク用の無色の画像データ
ＧＤ２  第２マスク用の無色の画像データ
ＧＤＭ１  第１モデル用の画像データ
ＧＤＭ２  第２モデル用の画像データ
【要約】
【課題】メモリを圧迫することなく、複数の画面を任意の形状で自由に形成することができるようにする。
【解決手段】本プログラムでは、深度情報用の記憶領域ＭＺが初期化される。そして、画像表示部３の所定の範囲をマスクするためのマスク用の深度データＳＤ１，ＳＤ２が、深度情報用の記憶領域ＭＺに格納される。そして、画像表示部３の所定の範囲を除く範囲にオブジェクトＭ１，Ｍ２を表示するためのオブジェクト用の深度データＳＤＭ１,ＳＤＭ２が、深度情報用の記憶領域ＭＺに格納される。そして、深度情報用の記憶領域ＭＺに格納されたオブジェクト用の深度データＳＤＭ１，ＳＤＭ２に基づいて、オブジェクト用の画像データＧＤＭ１，ＧＤＭ２が、画像情報用の記憶領域ＭＦに格納される。そして、画像情報用の記憶領域ＭＦに格納された、オブジェクト用の画像データＧＤＭ１，ＧＤＭ２を用いて、オブジェクトＭ１，Ｍ２が描画される。
【選択図】図２【図１】
0004233598.tif 000002
【図２】
0004233598.tif 000003
【図３】
0004233598.tif 000004
【図４】
0004233598.tif 000005
【図５】
0004233598.tif 000006
【図６】
0004233598.tif 000007
【図７】
0004233598.tif 000008
【図８】
0004233598.tif 000009