(57)【特許請求の範囲】
【請求項１】
視点からの距離を表す奥行き情報を表示画面上の各ピクセルに対応づけて格納するＺバッファを用いて画像合成処理を行う画像合成装置であって、
処理対象ピクセルについて前記Ｚバッファに既に格納されている奥行き情報ＺＢを参照し、該ＺＢと該処理対象ピクセルについて新たに得られた奥行き情報ＺＰとを比較しながら描画処理を行う描画処理手段を含み、
前記描画処理手段が、前記ＺＢと前記ＺＰとの差分値を演算する差分演算手段と、半透明表示物の厚みを表現するために前記差分値を用いて半透明演算を行う半透明演算手段とを含むことを特徴とする画像合成装置。
【請求項２】
請求項１において、
前記半透明演算手段が、
前記処理対象ピクセルに対応した前記半透明表示物上の点であり視点から見て手前側の点を第１の点とし視点から見て奥側の点を第２の点とし、前記処理対象ピクセルに対応した不透明表示物上の点を第３の点とした場合において、該第１、第２の点についての奥行き情報の差分である前記差分値と、該第１〜第３の点における色情報とに基づいて前記半透明演算を行うことを特徴とする画像合成装置。
【請求項３】
請求項２において、
前記描画処理手段により得られた色情報と、前記第１、第２の点を１組とした場合に組に属する他の１点が既に描画された否かを示す組フラグとを含む画像情報を表示画面上の各ピクセルに対応づけて格納するフィールドバッファを含み、
前記半透明演算手段が、前記組フラグにより他の１点が描画されていないと判断した場合には、前記ＺＢと前記ＺＰを比較し前記Ｚバッファに格納される前記ＺＢの更新を行い、前記組フラグにより他の１点が描画されていると判断した場合には、前記更新された前記ＺＢと新たに得られた前記ＺＰとの差分値に基づき前記半透明演算を行うことを特徴とする画像合成装置。
【請求項４】
請求項２において、
半透明表示物を構成する半透明ポリゴンが裏ポリゴンであるか表ポリゴンであるかを判定する裏表判定手段を含み、
前記描画処理手段が、前記裏表判定手段により裏ポリゴンと判定された半透明ポリゴンについて前記ＺＢと前記ＺＰを比較し前記Ｚバッファに格納される前記ＺＢの更新を行い、前記裏表判定手段により表ポリゴンと判定された半透明ポリゴンについて前記更新された前記ＺＢと新たに得られた前記ＺＰとの差分値に基づき前記半透明演算を行うことを特徴とする画像合成装置。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記描画処理手段が、１フィールドに表示される表示物の中の全ての不透明表示物の描画処理を行った後に半透明表示物の描画処理を行うことを特徴とする画像合成装置。
【請求項６】
請求項１乃至４のいずれかにおいて、
前記描画処理手段が、同一の半透明表示物を構成するポリゴンに対して他の半透明表示物を構成するポリゴンに優先して順次描画処理を施すことを特徴とする画像合成装置。
【請求項７】
視点からの距離を表す奥行き情報を表示画面上の各ピクセルに対応づけて格納するＺバッファを用いて行う画像合成方法であって、
処理対象ピクセルについて前記Ｚバッファに既に格納されている奥行き情報ＺＢを参照するステップと、
参照された前記ＺＢと、該処理対象ピクセルについて新たに得られた奥行き情報ＺＰとを比較しながら描画処理を行う描画処理ステップを含み、
前記描画処理ステップが、前記ＺＢと前記ＺＰとの差分値を演算するステップと、半透明表示物の厚みを表現するために前記差分値を用いて半透明演算を行うステップとを含むことを特徴とする画像合成方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、Ｚバッファを用いて描画処理を行う画像合成装置及び画像合成方法に関する。
【０００２】
【従来の技術】
従来より、３次元ゲーム装置、３次元シミュレータ等に使用される画像合成装置として種々のものが知られている。このような画像合成装置においては半透明表現の実現が望まれている。そして、半透明表現を行う場合には、得られる画像をよりリアルなものとするために、半透明表示物の厚みを反映した半透明表現が望まれる。例えば、特開平５−３１４２４１号には、体積データバッファを用意し、この体積（ピクセル）データバッファに少なくともカラー属性、深度値、不透明度の重み値、勾配値を記憶し、これらの記憶されたデータを用いて半透明表示物の厚みを反映した半透明表現を行う従来技術が開示されている。
【０００３】
【発明が解決しようとする課題】
しかしながら、この従来技術には、まず第１に体積データバッファと呼ばれるメモリが新たに必要になるという問題がある。このように新たなメモリを用意すると、ハードウェア規模が増大化し、また制御が複雑になる。また、第２に、この従来技術は戦車等の搭乗員のトレーニングのためのシミュレータに用いられるものであり、煙、霧、爆弾の破裂等の体積効果を現実世界とほとんど同等に表現するものである。このため、かなり複雑な演算処理が必要であり、低コストが要求される３次元ゲーム装置等には不向きの画像合成技術である。
【０００４】
一方、従来より、陰面消去のための１手法としてＺバッファ法と呼ばれるものが知られている。このＺバッファ法は、視点からの距離を表す奥行き情報を表示画面上の各ピクセルに対応づけて格納するＺバッファを用意し、このＺバッファに格納される奥行き情報Ｚ値を参照しながら描画処理を行う手法である。この手法によれば陰面消去を簡易に高速に実現できるため、この手法は画像合成分野において広く一般的に使用されている。
【０００５】
しかしながら、このＺバッファ法を用いて、半透明表示物の厚みを反映した半透明表現を行う技術については知られていない。
【０００６】
本発明は以上のような技術的課題を達成するためになされたものであり、その目的とするところは、半透明表示物の厚みを反映した半透明表現を、Ｚバッファ法を利用して実現できる画像合成装置及び画像合成方法を提供することにある。
【課題を解決するための手段及び作用】
上記課題を解決するために、請求項１の本発明は、視点からの距離を表す奥行き情報を表示画面上の各ピクセルに対応づけて格納するＺバッファを用いて画像合成処理を行う画像合成装置であって、
処理対象ピクセルについて前記Ｚバッファに既に格納されている奥行き情報ＺＢを参照し、該ＺＢと該処理対象ピクセルについて新たに得られた奥行き情報ＺＰとを比較しながら描画処理を行う描画処理手段を含み、
前記描画処理手段が、前記ＺＢと前記ＺＰとの差分値を演算する差分演算手段と、半透明表示物の厚みを表現するために前記差分値を用いて半透明演算を行う半透明演算手段とを含むことを特徴とする。
【０００７】
また、請求項７の発明は、視点からの距離を表す奥行き情報を表示画面上の各ピクセルに対応づけて格納するＺバッファを用いて行う画像合成方法であって、
処理対象ピクセルについて前記Ｚバッファに既に格納されている奥行き情報ＺＢを参照するステップと、
参照された前記ＺＢと、該処理対象ピクセルについて新たに得られた奥行き情報ＺＰとを比較しながら描画処理を行う描画処理ステップを含み、
前記描画処理ステップが、前記ＺＢと前記ＺＰとの差分値を演算するステップと、半透明表示物の厚みを表現するために前記差分値を用いて半透明演算を行うステップとを含むことを特徴とする。
【０００８】
請求項１又は７の発明によれば、Ｚバッファに格納されるＺＢと新たに得られるＺＰとに基づいて各ピクセルに対する描画処理が行われると共に、このＺＢとＺＰとの差分値が求められる。そして、この差分値を用いて半透明演算が行われる。即ち、本発明によれば、体積データバッファ等の新たなメモリを用意することなく、描画処理に既に存在するＺバッファを利用して、半透明表示物の厚みが反映された半透明演算を実現できる。
【０００９】
また、請求項２の発明は、請求項１において、
前記半透明演算手段が、前記処理対象ピクセルに対応した前記半透明表示物上の点であり視点から見て手前側の点を第１の点とし視点から見て奥側の点を第２の点とし、前記処理対象ピクセルに対応した不透明表示物上の点を第３の点とした場合において、該第１、第２の点についての奥行き情報の差分である前記差分値と、該第１〜第３の点における色情報とに基づいて前記半透明演算を行うことを特徴とする。
【００１０】
請求項２の発明によれば、半透明表示物上の第１、第２の点の色情報と、不透明表示物上の第３の点の色情報と、第１、第２の点の奥行き情報の差分値とに基づいて半透明演算が行われる。この場合の半透明演算は、例えば、第１、第２の点の色情報と、第３の点の色情報と、半透明係数とに基づいて行われ、この半透明係数を例えば差分値の関数とすることで実現される。
【００１１】
また、請求項３の発明は、請求項２において、
前記描画処理手段により得られた色情報と、前記第１、第２の点を１組とした場合に組に属する他の１点が既に描画された否かを示す組フラグとを含む画像情報を表示画面上の各ピクセルに対応づけて格納するフィールドバッファを含み、前記半透明演算手段が、前記組フラグにより他の１点が描画されていないと判断した場合には、前記ＺＢと前記ＺＰを比較しＺバッファに格納される前記ＺＢの更新を行い、前記組フラグにより他の１点が描画されていると判断した場合には、前記更新された前記ＺＢと新たに得られた前記ＺＰとの差分値に基づき前記半透明演算を行うことを特徴とする。
【００１２】
請求項３の発明によれば、組フラグにより他の１点が描画されていないと判断した場合には前記ＺＢの更新が行われ、描画されていると判断された場合には、ＺＢとＺＰとの差分値に基づいて半透明演算が行われる。例えば第１の点、第２の点の順で描画された場合を例にとると、Ｚバッファには、まず第１の点のＺＢが格納される。そして、第２の点を描画する際にこのＺＢが読み出され、このＺＢと第２の点についてのＺＰとの差分値が求められ、半透明演算が行われる。第２の点、第１の点の順で描画処理が行われた場合も同様である。
【００１３】
また、請求項４の発明は、請求項２において、
半透明表示物を構成する半透明ポリゴンが裏ポリゴンであるか表ポリゴンであるかを判定する裏表判定手段を含み、
前記描画処理手段が、前記裏表判定手段により裏ポリゴンと判定された半透明ポリゴンについて前記ＺＢと前記ＺＰを比較し前記Ｚバッファに格納される前記ＺＢの更新を行い、前記裏表判定手段により表ポリゴンと判定された半透明ポリゴンについて前記更新された前記ＺＢと新たに得られた前記ＺＰとの差分値に基づき前記半透明演算を行うことを特徴とする。
【００１４】
請求項４の発明によれば、まず、裏表判定手段により裏ポリゴン（視点から見て奥側のポリゴン）と判定された半透明ポリゴンについて描画処理が行われ、そのＺＢがＺバッファに格納される。次に、表ポリゴン（視点から見て手前側のポリゴン）と判定された半透明ポリゴンについての描画処理が行われる。そして、この場合、裏ポリゴンについてＺバッファに格納されたＺＢと、表ポリゴンについてのＺＰの差分に基づいて半透明演算が行われる。
【００１５】
また、請求項５の発明は、請求項１乃至４のいずれかにおいて、
前記描画処理手段が、１フィールドに表示される表示物の中の全ての不透明表示物の描画処理を行った後に半透明表示物の描画処理を行うことを特徴とする。
請求項５の発明によれば、初めに全ての不透明表示物の描画処理を行った後に、半透明表示物の描画処理が行われる。従って、描画処理を行う際に、半透明表示物に関するものなのか、不透明表示物に関するものなのかを判断する必要がなくなる。
【００１６】
また、請求項６の発明は、請求項１乃至４のいずれかにおいて、
前記描画処理手段が、同一の半透明表示物を構成するポリゴンに対して他の半透明表示物を構成するポリゴンに優先して順次描画処理を施すことを特徴とする。
【００１７】
請求項６の発明によれば、例えば１の半透明表示物を構成する全てのポリゴンに対する描画処理を行った後に、他の半透明表示物を構成する全てのポリゴンに対する描画処理が行われることになる。
【００１８】
【実施例】
以下、本発明の好適な実施例について図面に基づき説明する。
【００１９】
図１には、本実施例の画像合成装置を３次元ゲーム装置等の３次元シミュレータに適用した場合の全体構成の一例が示される。この実施例は、操作部１２、仮想３次元空間演算部１００、画像供給部２１０、画像合成部２３０を含んでいる。仮想３次元空間演算部１００は、操作部１２から入力される操作情報に基づいて仮想３次元空間を形成するための演算を行う。画像供給部２１０は、形成された仮想３次元空間の所定の視点位置において見える画像を形成するための座標変換処理、クリッピング処理、透視投影変換等の演算処理を行う。この場合、仮想３次元空間を構成する表示物は複数のポリゴンの集合により表されており、画像供給部２１０は、これらのポリゴンの情報（頂点座標、頂点テクスチャ座標等）を画像合成部２３０に出力する。画像合成部２３０では、入力されたポリゴン情報からポリゴン内のピクセルを描画する処理、即ち各ピクセルの画像情報を求める処理が行われ、これによりディスプレイ１０への画像表示が可能となる。
【００２０】
さて、通常、この種の描画処理を行う際に、ポリゴンとポリゴンとに重なりが生じた場合、視点から見て奥側にある部分（陰面）を消去し、手前側にある部分のみをディスプレイ上に表示する必要がある。このような陰面消去手法として、Ｚバッファ法と呼ばれる手法が知られている。このＺバッファ法については、例えば情報処理ＶＯＬ．２４  ＮＯ．４（情報処理学会１９８３年４月１５日発行）に記載されている。
【００２１】
本実施例は、このＺバッファ法を用いて陰面消去を行うものである。このため、画像合成部２３０は、描画処理部２３２、Ｚバッファ２６０、フィールドバッファ２６２を含んでいる。ここで、Ｚバッファ２６０は、表示画面上の全てのピクセルに対応した格納エリアを有するメモリであり、各格納エリアには視点からの距離を表す奥行き情報であるＺ値が格納されている。また、描画処理部２３２は、処理対象ピクセルについてＺバッファに格納される奥行き情報を参照し、参照された奥行き情報と、該処理対象ピクセルについて新たに得られた奥行き情報とを比較しながら描画処理を行うものであり、その具体的な構成は図２に示される。また、フィールドバッファ２６２は、Ｚバッファ２６０と同様に示画面上の全てのピクセルに対応した格納エリアを有するメモリであり、描画処理部２３２により得られた色情報等の画像情報を格納するものである。この格納された画像情報に基づいてディスプレイ１０上に表示する画像が得られる。
【００２２】
まず、図３（Ａ）、（Ｂ）を用いてＺバッファ法について説明する。なお、以下では視点から近いほどＺバッファに格納されるＺ値が小さい場合を例にとり説明するが、これとは逆に視点から近いほどＺ値が大きい場合にも本発明の原理は当然に適用できる。図３（Ａ）に示すように、三次元表示物３００、３０１を構成するポリゴンＸ、Ｙは、スクリーン３０６上に透視投影変換されている。そして、図３（Ｂ）に示す手順により描画処理が行われる。Ｚバッファ２６０には、初期値としてＺ値の最大値Ｍ（通常は無限大値）が書き込まれている。そして、例えばポリゴンＸを描画する場合、ポリゴンＸの各ピクセルのＺ値がＺバッファ２６０に格納されている各ピクセルのＺ値よりも小さいか否かかが判断される。そして、小さいと判断された場合には、描画処理部２３２により当該ピクセルについての描画処理が行われ、更に、Ｚバッファ２６０の当該ピクセルについてのＺ値も更新される。具体的には、対応する部分のＺ値は、全てＭからＸ１〜Ｘ１２に更新される。
【００２３】
ポリゴンＹを描画する場合も、描画する全てのピクセルについてＺバッファ２６０が参照され、上記と同様の手順により描画処理と、Ｚバッファ２６０の更新が行われる。具体的には、Ｘ７、Ｘ８、Ｘ１１、Ｘ１２がＹ１、Ｙ２、Ｙ５、Ｙ６に更新され、ポリゴンＹが描画される部分のＭの値がＹ３、Ｙ４、Ｙ７、Ｙ８〜Ｙ１２に更新される。即ち、この場合は、ポリゴンＹの方がポリゴンＸよりも手前にあるため、重なっている部分は、ポリゴンＹのＺ値へと置き変わることとなる。描画処理部２３２は、以上のような手法により各ポリゴンについての描画処理を行う。
【００２４】
図２には、本実施例の主要部である描画処理部２３２の詳細な構成が示される。この描画処理部２３２によれば半透明表示物の厚みが反映された半透明演算を実現できる。この描画処理部２３２は、ピクセル描画部２３４、比較＆差分演算部２３８、書き込み制御部２４０、半透明演算部２４２を含む。
【００２５】
ピクセル描画部２３６は、画像供給部２１０からのポリゴン情報に基づいてポリゴン内の各ピクセルについての描画処理を行う。例えば、ポリゴン情報としては、色情報、ポリゴンの頂点座標等が入力される。また、テクスチャマッピングを行う場合には、頂点テクスチャ座標が入力され、グーローシェーディング等のシェーディング演算を行う場合には頂点輝度情報、頂点法線ベクトル情報等が入力される。そして、頂点座標、頂点テクスチャ座標、頂点輝度情報、頂点法線ベクトル情報等を補間処理することにより、ポリゴン内の各ピクセルのＸ、Ｙ、Ｚ座標、テクスチャ座標、輝度情報、法線ベクトル情報等が求められる。求められたＸ、Ｙ座標は、ピクセルアドレスとしてＺバッファ２６０、フィールドバッファ２６２に出力される。また、Ｚ座標は、新たに得られたピクセルの奥行き情報ＺＰとして比較＆差分演算部２３８に出力される。また、テクスチャマッピングを行う場合には、求められた各ピクセルのテクスチャ座標に基づいてテクスチャ情報記憶部２３６からテクスチャ情報が読み出され、これにより色情報等が得られる。そして、各ピクセルの色情報、輝度情報、法線ベクトル情報を含む画像情報は、半透明演算部２４２、フィールドバッファ２６２に出力される。
【００２６】
更に、ピクセル描画部２３４は、ポリゴンの表裏を判定する表裏判定部２３７を含む。
【００２７】
比較＆差分演算部２３８には、ピクセル描画部２３４から処理対象ピクセルの新たに得られた奥行き情報ＺＰが入力される。また、処理対象ピクセルのピクセルアドレス（Ｘ、Ｙ座標）はＺバッファ２６０に入力され、これにより該ピクセルについて前回にＺバッファ２６０に格納された奥行き情報ＺＢが読み出され、このＺＢも比較＆差分演算部２３８に入力される。比較＆差分演算部２３８は、ＺＰとＺＢとを比較するとと共に、ＺＰとＺＢの差分値を演算する。
【００２８】
ＺＰとＺＢの比較結果は書き込み制御部２４０に出力される。そして、ＺＰ＜ＺＢの場合には、書き込み制御部２４０の制御により、Ｚバッファ２６０の該ピクセルアドレスで指定される位置に格納されるＺ値がＺＢからＺＰに書き換えられる。また、フィールドバッファ２６２の該ピクセルアドレスで指定される位置に格納される画像情報が、ピクセル描画部２３４で得られた画像情報（色情報ＣP等）に書き換えられる。
【００２９】
半透明演算部２４２は、ピクセル描画部２３４からの画像情報と、半透明係数と、フィールドバッファ２６２に格納される画像情報とに基づいて半透明演算を行う。そして、本実施例では、半透明演算部２４２に、比較＆差分演算部２３８で演算されたＺＰとＺＢの差分値Ｄも入力され、これにより半透明表示物の厚みが反映された半透明演算が実現される。
【００３０】
図４には、半透明表示物の厚みを反映せずに半透明演算を行う場合の描画処理部２３３の構成の一例が示される。図２と異なるのは、比較部２３９が差分演算を行わない点、これにより半透明演算部２４３には差分値Ｄが入力されず半透明表示物の厚みを反映した半透明演算が行われない点、及び、フィールドバッファ部２６３に格納される画像情報の種類が異なる点等である。
【００３１】
まず、図４の構成で行う半透明演算の一例について説明する。半透明演算は、例えば次式のようにして行われる。
【００３２】
ＣQ＝Ｋ１×ＣP＋Ｋ２×ＣB                                   …（１）
ここで、Ｋ１、Ｋ２は、半透明演算を行うための係数であり、ピクセル描画部２３４から入力される。また、ＣBはフィールドバッファ部２６３から読み出された色情報であり、この色情報は半透明表示物の後景となる不透明表示物の色情報である。また、ＣPは、ピクセル描画部２３４で求められた色情報であり、この色情報は半透明表示物の色を表すものである。また、ＣQは半透明演算部２４３で更新された色情報であり、このＣQはフィールドバッファ２６３に書き込まれる。もちろん、このＣQは、ＺＰ＜ＺＢの場合にのみ更新される。
【００３３】
例えば、不透明表示物の色が白で、半透明表示物の色が青の場合には、得られる半透明の色は青となり、どのような青となるかは上式（１）にしたがって決められる。即ち、半透明係数Ｋ１、Ｋ２の値により決められる。
【００３４】
しかしながら、図４の構成による半透明演算では半透明表示物の厚みが反映されていない。即ち、半透明表示物の厚みの如何にかかわらず半透明演算部２４３から出力される結果は同じになる。
【００３５】
これに対して、図２に示す構成では、比較＆差分演算部２３８で演算された差分値に基づいて、半透明演算部２４２は、半透明表示物の厚みが反映された半透明演算を行っている。しかも、本実施例では、この差分値はピクセル描画部２３４から出力されるＺＰと、Ｚバッファ２６０に格納されるＺＢとにより得られるため、特開平５−３１４２４１の従来技術のように体積データバッファ等を新たに設ける必要がない。即ち、本実施例の最大の特徴は、Ｚバッファ法ではＺ値の比較により陰面消去する点に着目し、このＺバッファ法で使用されるＺ値を利用して半透明表示物の厚みが反映された半透明演算を行う点にある。このように本実施例ではＺバッファ法に必要とされる構成を利用しているため、新たに必要なハードウェアは、差分演算部２３８（例えば減算回路）の追加と、半透明演算部２４２における積和回路の追加等ですみ、ハードウェアの大規模化を最小限に抑えることができる。
【００３６】
例えば、図５で、半透明表示物２０を表示する場合を考える。この半透明表示物２０は半透明ポリゴン２４、２６、２８、３０等で構成される。また、半透明表示物２０の後方には不透明ポリゴン（不透明表示物）３８が位置している。ここで、視点２２及び点Ｅを結んだ線分と半透明表示物２０との交点をＡ、Ｂとし、視点２２及び点Ｆを結んだ線分と半透明表示物２０との交点をＣ、Ｄとする。また、半透明表示物の色を例えば「青」とし、不透明ポリゴン３８の色を白とする。すると、点Ｃ、Ｄ間の距離Ｌ２は点Ａ、Ｂ間の距離Ｌ１よりも大きいため、視点２２から見た場合に、点Ｃの部分の方が点Ａの部分よりも、より深い青（濃い青）に見えるはずである。しかしながら、図４の構成であると、半透明表示物の厚みが反映されないため、Ｃの部分もＡの部分も同じ濃さの青に見え、半透明表示物２０の厚みを表現できない。これに対して本実施例によれば、Ｌ１とＬ２を反映した半透明演算が行われるため、半透明表示物の厚みを表現でき、立体感を向上させることができる。
【００３７】
また、図６では、海（半透明表示物）４０の中に岩（不透明表示物）４２がある場合の例が示される。この場合も、本実施例では、Ｉ、Ｊ間の距離Ｌ３と、Ｋ、Ｌ間の距離Ｌ４とを反映して半透明演算が行われるため、海の深さを表現でき、表示画像の品質を向上できる。
【００３８】
例えば、図５の場合の半透明演算は以下の式のようになる。
ＣG＝Ｆ（ＣAB、ＣE、Ｌ１）                                  …（２）
＝Ｋ１（Ｌ１）×ＣAB＋Ｋ２（Ｌ１）×ＣE                  …（３）
ここで、ＣABは半透明表示物２０のＡ点、Ｂ点（あるいはＡ、Ｂ間）における色情報であり、ＣEは不透明ポリゴン３８のＥ点における色情報であり、ＣGは処理対象ピクセルである点Ｇに描画される色情報である。即ち、ＣGは、ＣAB、ＣE、Ｌ１の関数（関数Ｆ）となる。これは、上式（３）のように半透明係数Ｋ１、Ｋ２が距離Ｌ１の関数であると考えることもできる。
【００３９】
同様に、Ｈ点の色情報ＣHは、
0003642593.tif 000002
となる。
【００４０】
但し、半透明演算の手法は上記したものに限らず種々のものを採用できる。
【００４１】
例えば、フィルタリング手法として、
Ｒ＝ＲＹ×ＫFR
Ｇ＝ＧＹ×ＫFG
Ｂ＝ＢＹ×ＫFB                                              …（５）
という半透明演算が考えられる。ここで、Ｒ、Ｇ、Ｂは半透明演算後の色情報のＲＧＢ成分であり、ＲＹ、ＧＹ、ＢＹは不透明表示物の色情報である。また、ＫFR、ＫFG、ＫFBはフィルタリング手法における半透明係数である。
【００４２】
また、加算手法として、
Ｒ＝ＲＹ＋ＫAR×ＲPLUS
Ｇ＝ＧＹ＋ＫAG×ＧPLUS
Ｂ＝ＢＹ＋ＫAB×ＢPLUS                                      …（６）
という半透明演算が考えられる。ここで、ＲPLUS、ＧPLUS、ＢPLUSは色情報の加算値であり、ＫAR、ＫAG、ＫABは加算手法における半透明係数である。
【００４３】
また、上式（１）〜（４）を一般化したものであるブレンディング手法として、
Ｒ＝（１−ＫBR）×ＲＸ＋ＫBR×ＲＹ
Ｇ＝（１−ＫBG）×ＧＸ＋ＫBG×ＧＹ
Ｂ＝（１−ＫBB）×ＢＸ＋ＫBB×ＢＹ                          …（７）
という半透明演算が考えられる。ここで、ＲＸ、ＧＸ、ＢＸは半透明表示物の色情報である。また、ＫBR、ＫBG、ＫBBはブレンディング手法における半透明係数であり、この係数によりブレンディングの割合が決まる。例えば、ＫBR＝ＫBG＝ＫBB＝１／２の場合には、１／２ずつの割合で色情報がブレンドされる。
【００４４】
上記のいずれの手法を採用するかは任意であり、例えばフィルタリング手法、加算手法によればハードウェアの規模を小さくでき、ブレンディング手法によれば、より繊細な半透明演算が可能となる。
【００４５】
次に、本実施例の動作の一例について図７に示すフローチャートに基づいて説明する。本実施例では、まずステップＳ１で全ての不透明表示物（不透明ポリゴン）を描画してしまう。これにより、その後は、描画しようとするピクセルが半透明か不透明かを区別する必要がなくなり、処理の簡易化が図れる。もちろん、本発明においては必ずしも不透明表示物をはじめに全て描画する必要はない。例えば、半透明フラグというフラグを導入し、フィールドバッファに格納される画像情報にこの半透明フラグを含める。そして、描画処理の際にこの半透明フラグを用いて半透明か不透明かを判断すれば、ステップＳ１に示す処理は必ずしも必要なくなる。
【００４６】
次にステップＳ２で、表示されるべき複数の半透明表示物のソーティング処理を行う。これは複数の半透明表示物の重なりを可能にするために行われる。これにより、複数の半透明表示物を多重に透かして奥の物体が見えるような映像効果を得ることができる。但し、このような半透明表示物の重なりによる映像効果が必要がない場合には、ソーティング処理は必要なく、先描き優先となるように描画処理を行えばよい。
【００４７】
次に、ステップＳ３で半透明ポリゴンについてのピクセル毎の描画データを求める処理がピクセル描画部２３４により行われる。
【００４８】
さて、本実施例では、フィールドバッファの格納エリアに格納される画像情報には、カラー情報のみならず組フラグが含まれる。例えば、半透明表示物上の点であり、処理対象ピクセル（例えば図５の点Ｈ）に対応する点の、視点から見て手前側の点（図５の点Ｃ）と、奥側の点（図５の点Ｄ）とを１組とする。この時、組フラグは組に属する他の１点が既に描かれたか否かを示すフラグとなる。図５で、組となる手前側の点Ｃと奥側の点Ｄのいずれもが、まだ描画されていない場合には組フラグは例えば０になる。一方、点Ｃ、点Ｄのいずれかが描画されている場合には組フラグは１となる。
【００４９】
ステップＳ４では、この組フラグの判断が行われる。他の一点が描画されていない場合（組フラグ＝０）には、ステップＳ１１に移行し、ステップＳ３で求まった半透明ポリゴンのピクセルの奥行き情報ＺＰと、そのピクセルに対応し、Ｚバッファに格納されている前回の奥行き情報ＺＢとの比較を行う。この比較処理は、比較＆差分演算部２３８にて行われる。ＺＰ＜ＺＢと判定された場合には、ステップＳ１２で組フラグ＝１にセットしステップＳ９に移行する。ＺＰ≧ＺＢの場合には、このピクセルでの処理は終了しステップＳ１３に移行する。
【００５０】
一方、ステップＳ４で他の一点が描画されている（組フラグ＝１）と判断された場合、ステップＳ５に移行し、ＺＰとＺＢとの差分値Ｄが比較＆差分演算部２３８により演算される。この時、Ｚバッファ２６０の格納エリアには、他の一点のＺ値ＺＢが格納されている。例えば、図５でポリゴン３０、２４の順で描画処理が行われ、点Ｄ、点Ｃの順に処理された場合、Ｚバッファに格納されているＺＢはＤ点のＺ値であり、ピクセル描画部２３４から出力されるＺＰはＣ点のＺ値である。一方、点Ｃ、点Ｄの順に処理された場合、Ｚバッファに格納されているＺＢはＣ点のＺ値であり、ピクセル描画部２３４から出力されるＺＰはＤ点のＺ値である。従って、どちらの場合も、ＺＢとＺＰの差分値を求めることでＣ点とＤ点のＺ値の差分値Ｄを求めることができる。
【００５１】
ステップＳ６では、求められた差分値Ｄと、ピクセル描画部２３４からのカラー情報ＣＰと、フィールドバッファ２６２から読み出されたカラー情報ＣＢとに基づく半透明演算が半透明演算部２４２により行われる。この場合の半透明演算は例えば次式のように表される。
ＣQ＝Ｆ（ＣP、ＣB、Ｄ）                                     …（８）
＝Ｋ１（Ｄ）×ＣP＋Ｋ２（Ｄ）×ＣB                       …（９）
そして、得られたカラー情報ＣQはフィールドバッファ２６２に書き戻される。この処理は書き込み制御部２４０の制御に基づき行われる。これにより、ステップＳ７でフィールドバッファ２６２に格納される色情報が更新される。
【００５２】
その後、ステップＳ８で組みフラグ＝０にクリアする。半透明表示物の表面にテクスチャマッピングを施す場合は、ステップＳ９にてテクスチャマッピング処理が行われる。次に、ステップＳ１０でＺバッファの更新が行われる。次にステップＳ１３で、一連のピクセル描画の処理が終わったので、次に描画するものが無ければ全処理終了となり、描画するものがあればステップＳ３に戻り処理続行となる。
【００５３】
以上により、半透明表示物の厚みを考慮した半透明演算が実現される。
【００５４】
次に、本実施例の動作の他の例について図８に示すフローチャートに基づいて説明する。まずステップＴ１で全ての不透明表示物（不透明ポリゴン）を描画する処理が行われる。次に、ステップＴ２でポリゴンの裏表判定が表裏判定部２３７（図２参照）により行われる。このポリゴンの裏表判定は、ポリゴンの頂点座標（Ｘ、Ｙ）の外積を計算し、この外積のＺ座標成分の正負を求めることで実現される。ここで、表ポリゴンとは、視点から見て表向きのポリゴンをいい、裏ポリゴンとは、視点から見て裏向きのポリゴンをいう。例えば図５において、半透明ポリゴン２４、２８は表ポリゴンであり、半透明ポリゴン２６、３０は裏ポリゴンである。この場合、半透明ポリゴン２４、２８の法線ベクトルｎ１、ｎ２のＺ座標成分は負であり、半透明ポリゴン２６、３０の法線ベクトルｎ３、ｎ４のＺ座標成分は正である。
【００５５】
このようにして表裏判定を行った後、ステップＴ３で、半透明の裏ポリゴンのピクセル描画データを求める処理が行われる。次に、ステップＴ４でＺＰ＜ＺＢが判断され、ＺＰ≧ＺＢの場合はステップＴ６に移行する。ＺＰ＜ＺＢの場合には、ステップＴ５でＺバッファ２６０のＺ値が更新される。ステップＴ６で、一連のピクセル描画処理が終了したので、次に描画すべき半透明の裏ポリゴンがなければステップＴ７に移行し、あればステップＴ３に戻り処理続行となる。
【００５６】
ステップＴ７では、半透明の表ポリゴンのピクセル描画データが求められる。次に、ステップＴ８でピクセル描画部２３４で得られるＺＰとＺバッファ２６０からのＺＢとに基づいて差分値が演算される。その後、この差分値と、色情報ＣP、ＣBとに基づいてステップＴ９で半透明演算が行われ、ステップＴ１０でフィールドバッファ２６２の更新が行われる。次にステップＴ１１でＺバッファが更新される。ステップＴ１１で、一連のピクセル描画処理が終了したので、次に描画すべき半透明の表ポリゴンがなければ終了となり、あればステップＴ７に戻り処理続行となる。
【００５７】
このように、表裏判定部２３７によりポリゴンの表裏を判定する手法によれば、例えば図５において半透明ポリゴン２６、３０を描画した後に、半透明ポリゴン２４、２８が描画できるため、処理を非常に簡易にできる。
【００５８】
また、同一の半透明表示物を構成するポリゴンに対して、他の半透明表示物を構成するポリゴンに優先して描画処理を行えば、処理を更に簡易にすることができると共に、半透明演算を確実に行うことが可能となる。例えば、図５において、半透明表示物２０を構成するポリゴンを順次描画し、その後、次の半透明表示物を構成するポリゴンを順次描画する。これにより、処理を確実なものとすることができる。
【００５９】
なお、本発明は上記実施例に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。
【００６０】
例えば、本実施例では図７、図８に示すような処理の流れで半透明演算を行っているが、本発明はこれに限られるものではなく、少なくともＺバッファ法に用いられるＺ値の差分値を利用して、半透明表示物の厚みを反映した半透明演算を行うものであればよい。例えば、組フラグとは異なるフラグを用いて半透明演算を行ってもよい。
【００６１】
また、本実施例では、まずはじめに全ての不透明表示物の描画処理を行った後に、半透明表示物の描画処理を行ったが、本発明はこれに限らず、不透明表示物と半透明表示物とを混在させて描画処理することも可能である。
【００６２】
また、半透明表示物の色は一色である必要はなく、場所により異なるようにすることも可能である。
【００６３】
また、上記実施例では、ポリゴン毎に描画処理を行う場合について主に説明したが、本発明はこれに限らず、スキャンラインアルゴリズム等を用いてポリゴンに無関係にピクセル毎に処理を行う場合にも適用できる。
【００６４】
また、上記実施例では、視点から遠いほど奥行き情報が大きくなるとして説明を行ったが、視点から遠いほど奥行き情報が小さくなる場合も当然に本発明の均等な範囲に含まれる。
【００６５】
また、描画処理部の構成、画像合成部の構成、画像合成装置の全体構成も、上記実施例で説明したものに限らず種々の構成を採用できる。
【００６６】
また、本発明の画像合成装置、画像合成方法は、業務用のゲーム機、家庭用のゲーム装置、フライトシミュレータ、教習所等で使用されるドライビングシミュレータ等の種々のものに適用できる。特に、本発明の原理は、家庭用ゲーム装置、パーソナルコンピュータに使用されるゲームカートリッジ、ＣＤ−ＲＯＭ、フロッピーディスクに格納されるゲームプログラムのアルゴリズム等にも当然に適用できる。更に、多数のプレーヤが参加する大型アトラクション型のゲーム装置、シミュレーション装置にも適用できる。
【００６７】
また、ゲーム装置に適用する場合には、レーシングカーゲーム、対戦ゲーム、ロールプレイングゲーム、３次元的にマップが形成された宇宙船ゲーム等の種々のゲーム装置に本発明は適用できる。
【００６８】
また、本発明において画像合成部、描画処理部等で行われる演算処理は、専用の画像合成デバイスを用いて処理してもよいし、汎用のマイクロコンピュータ、ＤＳＰ等を利用してソフトウェア的に処理してもよい。
【００６９】
【発明の効果】
請求項１又は７の発明によれば、体積データバッファ等の新たなメモリを用意することなく、半透明表示物の厚みが反映された半透明演算を実現できる。従って、ハードウェアの小規模化を図りながらも高品質の画像を得ることができる。また、請求項２の発明によれば、第１、第２、第３の点の色情報と、差分値との基づいて半透明演算が行われ、半透明係数等を差分値の関数とすることで、半透明表示物の厚みが反映された半透明演算を実現できる。
【００７０】
また、請求項３の発明によれば、フィールドバッファに組フラグを格納し、この組みフラグを用いることで、第１、第２の点の処理順序に依存せずに、半透明表示物の厚みが反映された半透明演算を実現できる。
【００７１】
また、請求項４の発明によれば、裏表判定手段を設けることで、第２の点についての描画処理を行った後に、第１の点についての描画処理を行うことが可能となる。これにより描画処理を簡易化できる。
【００７２】
また、請求項５の発明によれば、描画処理を行う際に、半透明表示物に関するものなのか、不透明表示物に関するものなのかを判断する必要がなくなるため、描画処理を簡易化できる。
【００７３】
また、請求項６の発明によれば、半透明表示物の単位で描画処理が行われるため、確実な描画処理が可能となる。
【００７４】
【図面の簡単な説明】
【図１】本実施例を３次元シミュレータに適用した場合の全体構成を示すブロック図である。
【図２】描画処理部の具体的な構成を示すブロック図である。
【図３】図３（Ａ）、（Ｂ）は、Ｚバッファ法について説明するための図である。
【図４】半透明表示物の厚みを反映せずに半透明演算を行う場合の描画処理部の構成を示すブロック図である。
【図５】半透明表示物の厚みを反映させた半透明演算について説明するための図である。
【図６】半透明表示物の厚みを反映させた半透明演算について説明するための図である。
【図７】本実施例の動作の一例を説明するためのフローチャート図である。
【図８】本実施例の動作の他の例を説明するためのフローチャート図である。
【符号の説明】
１０  ディスプレイ
１２  操作部
１００  仮想３次元空間演算部
２１０  画像供給部
２３０  画像合成部
２３２  描画処理部
２３４  ピクセル描画部
２３６  テクスチャ情報記憶部
２３７  裏表判定部
２３８  比較＆差分演算部
２４０  書き込み制御部
２６０  Ｚバッファ
２６２  フィールドバッファ
【図１】
0003642593.tif 000003
【図２】
0003642593.tif 000004
【図３】
0003642593.tif 000005
【図４】
0003642593.tif 000006
【図５】
0003642593.tif 000007
【図６】
0003642593.tif 000008
【図７】
0003642593.tif 000009
【図８】
0003642593.tif 000010