(57)【要約】【課題】  透明度の変化するオブジェクトを描画する場合において、ポリゴンの描画順序によらずに少ない処理量で適切な画像を描画する。【解決手段】  フェードイン／アウトによりオブジェクトの透明度が変化し、フレーム毎にα値変化率が設定される。処理対象としたオブジェクトのα値変化率に基準閾値を乗算し、１００で除算して書込閾値を設定する。オブジェクトに含まれるポリゴンを順次処理対象とし、処理対象としたポリゴンについて登録されているα値にα値変化率を乗算し、１００で除算して現α値を算出する。ここで、当該ポリゴンのＺ値よりも大きなＺ値がＺバッファに登録されてなければ、当該ポリゴンをフレームバッファに画像を描画するが、現α値が書込閾値より大きいときのみ、当該ポリゴンのＺ値をＺバッファに書き込む。当該ポリゴンのＺ値よりも大きなＺ値が既にＺバッファに登録されていれば、当該ポリゴンをフレームバッファに描画しない。【選択図】    図８
2005149315.tif 000002
【特許請求の範囲】
【請求項１】
複数のポリゴンから構成され、透明度の変化するオブジェクトを描画するための画像描画装置であって、
前記複数のポリゴンを視点位置から透視変換したスクリーン上の各画素について視点座標系のＺ値をそれぞれ算出するＺ値算出手段と、
前記オブジェクトの透明度の変化率を設定する変化率設定手段と、
前記変化率設定手段に設定された変化率に応じて、前記オブジェクトを構成する各ポリゴンを透視変換した各画素のＺ値をＺバッファに書き込むか否かの透明度についての閾値を設定する閾値設定手段と、
前記変化率設定手段に設定された変化率において各ポリゴンを透視変換した各画素の透明度を、前記閾値設定手段により設定された閾値と比較する透明度比較手段と、
前記透明度比較手段によって前記閾値よりも透明度が低いと判定されたポリゴンの画素について、前記Ｚ値算出手段により算出されたＺ値をＺバッファに書き込むＺバッファ書き込み手段と、
前記Ｚバッファ書き込み手段によってＺバッファに書き込まれたＺ値に基づいて、各ポリゴンを透視変換した各画素の画像をフレームバッファに描画する画像描画手段と、
前記画像描画手段によりフレームバッファに書き込まれた画像を表示手段に表示させる表示制御手段と
を備えることを特徴とする画像描画装置。
【請求項２】
前記変化率設定手段は、前記オブジェクトの透明度の変化率を、時間の経過に応じて順次変化させて設定し、
前記閾値設定手段は、前記透明度の変化率が変化させられる度に、前記閾値を設定する
ことを特徴とする請求項１に記載の画像描画装置。
【請求項３】
前記オブジェクトがフェードインまたはフェードアウトされるオブジェクトであるか否かを検出するフェードイン／アウト検出手段をさらに備え、
前記変化率設定手段は、前記フェードイン／アウト検出手段によりフェードインまたはフェードアウトされるオブジェクトである旨が検出されたときに、当該オブジェクトの透明度の変化率を設定する
ことを特徴とする請求項１または２に記載の画像描画装置。
【請求項４】
描画対象となるオブジェクトは、複数あり、
前記変化率設定手段は、前記複数のオブジェクトを順次処理対象オブジェクトとして、それぞれ透明度の変化率を設定し、
前記閾値設定手段は、前記複数のオブジェクトにそれぞれ設定された透明度の変化率に応じて、オブジェクト毎に前記閾値を設定する
ことを特徴とする請求項１乃至３のいずれか１項に記載の画像描画装置。
【請求項５】
前記変化率設定手段は、透明度の変化率が同時に変化させられる複数のオブジェクトをまとめて処理対象とし、処理対象とした単位毎に透明度の変化率を設定し、
前記閾値設定手段は、前記処理対象とした単位毎に前記閾値を設定する
ことを特徴とする請求項４に記載の画像描画装置。
【請求項６】
描画対象となるオブジェクトは、複数あり、
前記複数のオブジェクトを、それぞれに設定された中心点の視点座標系のＺ値に基づいて、前記視点位置からの距離が遠い順にソートするオブジェクトソート手段と、
前記オブジェクトソート手段によりソートされた順番に、各オブジェクトを処理対象として、前記Ｚ値算出手段、前記変化率設定手段、前記閾値設定手段、前記透明度比較手段、前記Ｚバッファ書き込み手段、及び前記画像描画手段による処理を行わせる処理制御手段とをさらに備える
ことを特徴とする請求項１乃至５のいずれか１項に記載の画像描画装置。
【請求項７】
前記オブジェクトは、ビデオゲームにおいて所定の条件が成立することで登場及び退場するキャラクタである
ことを特徴とする請求項１乃至６のいずれか１項に記載の画像描画装置。
【請求項８】
前記フレームバッファは、それぞれ前記画像描画手段による描画単位に応じて２つだけ用意され、
前記Ｚバッファは、各描画単位に共通で１つだけ用意されている
ことを特徴とする請求項１乃至７のいずれか１項に記載の画像描画装置。
【請求項９】
コンピュータ装置の記憶装置に設けられるＺバッファ及びフレームバッファを用いて、複数のポリゴンから構成され、透明度の変化するオブジェクトを描画するための方法であって、
前記複数のポリゴンを視点位置から透視変換したスクリーン上の各画素について視点座標系のＺ値をそれぞれ算出し、
前記オブジェクトの透明度の変化率を設定し、
前記設定された変化率に応じて、前記オブジェクトを構成する各ポリゴンを透視変換した各画素のＺ値をＺバッファに書き込むか否かの透明度についての閾値を設定し、
前記設定された変化率において各ポリゴンを透視変換した各画素の透明度を、各ポリゴンの透明度と、前記設定された閾値と比較し、
比較の結果により前記閾値よりも透明度が低い判定されたポリゴンの画素について、前記算出されたＺ値をＺバッファに書き込むＺバッファ書き込み、
前記Ｚバッファに書き込まれたＺ値に基づいて、各ポリゴンを透視変換した各画素の画像を前記フレームバッファに描画し、
前記フレームバッファに書き込まれた画像を表示手段に表示する
ことを特徴とする画像描画方法。
【請求項１０】
複数のポリゴンから構成され、透明度の変化するオブジェクトを描画するためのプログラムであって、
前記複数のポリゴンを視点位置から透視変換したスクリーン上の各画素についてＺ値をそれぞれ算出するＺ値算出手段、
前記オブジェクトの透明度の変化率を設定する変化率設定手段、
前記変化率設定手段に設定された変化率に応じて、前記オブジェクトを構成する各ポリゴンを透視変換した各画素のＺ値をＺバッファに書き込むか否かの透明度についての閾値を設定する閾値設定手段、
前記変化率設定手段に設定された変化率において各ポリゴンを透視変換した各画素の透明度を、前記閾値設定手段により設定された閾値と比較する透明度比較手段と、
前記透明度比較手段によって前記閾値よりも透明度が低いと判定されたポリゴンの画素について、前記Ｚ値算出手段により算出されたＺ値をＺバッファに書き込むＺバッファ書き込み手段と、
前記Ｚバッファ書き込み手段によってＺバッファに書き込まれたＺ値に基づいて、各ポリゴンを透視変換した各画素の画像をフレームバッファに描画する画像描画手段、及び、
前記画像描画手段によりフレームバッファに書き込まれた画像を表示手段に表示させる表示制御手段
としてコンピュータ装置を機能させるためのプログラム。
【請求項１１】
複数のポリゴンから構成され、透明度の変化するオブジェクトを描画するためのプログラムを記録した記録媒体であって、
前記プログラムは、
前記複数のポリゴンを視点位置から透視変換したスクリーン上の各画素について視点座標系のＺ値をそれぞれ算出するＺ値算出手段、
前記オブジェクトの透明度の変化率を設定する変化率設定手段、
前記変化率設定手段に設定された変化率に応じて、前記オブジェクトを構成する各ポリゴンを透視変換した各画素のＺ値をＺバッファに書き込むか否かの透明度についての閾値を設定する閾値設定手段、
前記変化率設定手段に設定された変化率において各ポリゴンを透視変換した各画素の透明度を、前記閾値設定手段により設定された閾値と比較する透明度比較手段と、
前記透明度比較手段によって前記閾値よりも透明度が低いと判定されたポリゴンの画素について、前記Ｚ値算出手段により算出されたＺ値をＺバッファに書き込むＺバッファ書き込み手段と、
前記Ｚバッファ書き込み手段によってＺバッファに書き込まれたＺ値に基づいて、各ポリゴンを透視変換した各画素の画像をフレームバッファに描画する画像描画手段、及び、
前記画像描画手段によりフレームバッファに書き込まれた画像を表示手段に表示させる表示制御手段
としてコンピュータ装置を機能させることを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像描画装置及び方法等に関し、特にＺバッファ法を用いて、透明度が変化するオブジェクトを描画するための画像処理に関するものである。
【背景技術】
【０００２】
従来のビデオゲームにおいては、ゲームの進行に合わせて複数のポリゴンから構成されるオブジェクトをフェードイン／フェードアウトさせることにより、その透明度を変化させることが行われていた。ここで、複数のポリゴンにおいて透明度が同時に変化することがあった（例えば、特許文献１参照）。
【０００３】
複数のポリゴンから構成されるオブジェクトを描画する場合、視点に近い側のポリゴンを画像として表示するための隠面消去の処理にＺバッファ法が広く用いられている。ポリゴンには透明度を表すα値（本明細書においては、小さいほど透明度が高いものとする）が設定されているが、前面側のポリゴンに隠された後面側のポリゴンが表示されないようにするため、従来のＺバッファ法においては、予め設定した書込閾値に従って、ポリゴンのＺ値をＺバッファへ書き込むかどうかを決めるものとしていた。
【０００４】
図１は、従来のＺバッファ法の処理の例を説明する図である。ここで、図１（ａ）及び（ｂ）に示すように、α値を７０としたポリゴン群７０１が視点の位置に近い前面側にあり、α値を８０としたポリゴン群７０２が視点の位置から遠い後面側にあるものとする。ポリゴン群７０１、７０２を含むオブジェクトは、全体として透明度を変化させることが可能であるが、その透明度の変化がないときには透明度の変化率が１００％と、完全に透明になってしまうと透明度の変化率が０％と設定される。ポリゴン群７０１、７０２を含むオブジェクトの透明度が変化していない場合、すなわち透明度の変化率を１００％とした場合には、ポリゴン群７０１の現α値は、それぞれ７０×１００／１００＝７０、ポリゴン群７０２の現α値は、８０×１００／１００＝８０となる。
【０００５】
ここで、前面側のポリゴン群７０１が先に処理対象とされると、ポリゴン群７０１のα値が書込閾値よりも高くなっているので、ポリゴン群７０１のＺ値がＺバッファに書き込まれるとともに、ポリゴン群７０１がフレームバッファに描画される。こととなる。次に後面側のポリゴン群７０２が処理対象とされると、より小さなＺ値が既にＺバッファに書き込まれているため、ポリゴン群７０２がフレームバッファに描画されない。この場合には、図１（ｃ）に示すように、後面側のポリゴン群７０２を表示することなく、前面側のポリゴン群７０１を表示画面上に表示させることができる。
【０００６】
【特許文献１】特開２００１−２２４８４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、透明度が変化するオブジェクトの画像を生成する場合、次のような問題が生じることになっていた。図１（ａ）、（ｂ）に示したような２つのポリゴン群７０１、７０２の画像を描画する場合、図１（ｄ）に示すように、透明度の変化率を８０％としたときには、当該時点において前面側のポリゴン群７０１のα値は５６で閾値の６０よりも低く、後面側のポリゴン群７０２のα値は６４で閾値の６０よりも高く設定されることとなる。
【０００８】
ここで、前面側のポリゴン群７０１が後面側のポリゴン群７０２よりも先に処理される場合には、α値が閾値よりも低いポリゴン群７０１のＺ値がＺバッファに書き込まれなくなるので、α値が閾値よりも高い後面側のポリゴン群７０２がフレームバッファに描画されることとなる。この場合には、図１（ｄ）に示すように、後面側に存在するはずのポリゴン群７０２がポリゴン群７０１の前面側に表示されてしまうという問題が生じてしまっていた。
【０００９】
この問題を解消するためには、描画対象となる全てのポリゴンを視点の位置から遠い順にソートしておき、ソートした順番にフレームバッファへの描画を行うことが考えられる。しかしながら、ソートの処理は、少なくともポリゴン数の２乗のオーダーで計算量が増加するため、これを行うと多くのポリゴンを処理することができない。これに対してポリゴン数を少なくすると、表示される画像が角張ったものとなってしまい、リアルさが失われてしまうという問題があった。
【００１０】
また、後面側に隠されるポリゴンが表示されないようにするために、仮想スクリーンに投影されるのがポリゴンの表面側であるか裏面側であるかを判定し、表面側と判定されたポリゴンについてのみフレームバッファに書き込むようにするものもあった。しかしながら、ここでも、全てのポリゴンについて表面側であるか裏面側であるかを判定するのには、非常に大きな処理量を要するという問題があった。
【００１１】
本発明は、透明度の変化するオブジェクトを描画する場合において、ポリゴンの描画順序によらずに少ない処理量で適切な画像を描画することができる画像描画装置及び方法等を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明の第１の観点にかかる画像描画装置は、複数のポリゴンから構成され、透明度の変化するオブジェクトを描画するための画像描画装置であって、前記複数のポリゴンを視点位置から透視変換したスクリーン上の各画素について視点座標系のＺ値をそれぞれ算出するＺ値算出手段と、前記オブジェクトの透明度の変化率を設定する変化率設定手段と、前記変化率設定手段に設定された変化率に応じて、前記オブジェクトを構成する各ポリゴンを透視変換した各画素のＺ値をＺバッファに書き込むか否かの透明度についての閾値を設定する閾値設定手段と、前記変化率設定手段に設定された変化率において各ポリゴンを透視変換した各画素の透明度を、前記閾値設定手段により設定された閾値と比較する透明度比較手段と、前記透明度比較手段によって前記閾値よりも透明度が低いと判定されたポリゴンの画素について、前記Ｚ値算出手段により算出されたＺ値をＺバッファに書き込むＺバッファ書き込み手段と、前記Ｚバッファ書き込み手段によってＺバッファに書き込まれたＺ値に基づいて、各ポリゴンを透視変換した各画素の画像をフレームバッファに描画する画像描画手段と、前記画像描画手段によりフレームバッファに書き込まれた画像を表示手段に表示させる表示制御手段とを備えることを特徴とする。
【００１３】
上記画像描画装置では、各ポリゴンの各画素のＺ値をＺバッファに書き込むか否かを判断するための閾値は、オブジェクトの透明度の変化率によって設定される。このため、オブジェクトの透明度の変化率がいずれに設定されても、当該変化率における各ポリゴンの各画素の透明度と閾値との大小関係を一定のものにすることができる。このため、透視変換によりスクリーン上に同一の画素として投影される２つのポリゴンのうち前面側（視点に近い側）のポリゴンが先に、後面側（視点に遠い側）のポリゴンが後に処理されるときであっても、後面側のポリゴンを処理するときに前面側のポリゴンの画素についてのＺ値がＺバッファに既に書き込まれているかどうかは、透明度の変化率の設定に関わらず、常に同じになる。
【００１４】
また、透明度の変化率の設定に関わらずに前面側のポリゴンの各画素のＺ値をＺバッファに書き込むかどうかが決まるため、後面側のポリゴンの画素の画像（前面側のポリゴンと同一部分の画像）をフレームバッファに描画するかどうかということも常に同じになる。つまり、後面側のポリゴンから先に処理をする必要がないので、Ｚ値に応じてポリゴンをソートする必要はない。従って、上記画像描画装置では、透明度の変化するオブジェクトを描画する場合において、ポリゴンの描画順序によらずに少ない処理量で適切な画像を描画することができるようになる。
【００１５】
なお、上記画像描画装置におけるオブジェクトとは、透明度の変化率がその時々で一律に定められる複数のポリゴンの集まりのことをいう。例えば、ビデオゲームのキャラクタのように一体として形態が定められるものであっても、透明度の変化率が異なるように定められる部分があるときには、透明度の変化率が同じに定められる各部分が、ここで言うオブジェクトとして適用される。
【００１６】
上記画像描画装置において、前記変化率設定手段は、前記オブジェクトの透明度の変化率を、時間の経過に応じて順次変化させて設定し、前記閾値設定手段は、前記透明度の変化率が変化させられる度に、前記閾値を設定するものとすることができる。
【００１７】
この場合には、透明度の変化率が時間の経過に応じて変化すれば、それに応じて閾値も変化することとなる。このため、透明度の変化率が順次変化させられた一連の画像のいずれにおいても、後面側のポリゴンが表示されているかどうかが一律に決まるので、時間の経過に応じて少しずつ状態が変化する画像を順次表示するような動画像も、違和感なく表示させることができるようになる。
【００１８】
上記画像描画装置は、前記オブジェクトがフェードインまたはフェードアウトされるオブジェクトであるか否かを検出するフェードイン／アウト検出手段をさらに備えるものとすることができる。この場合において、前記変化率設定手段は、前記フェードイン／アウト検出手段によりフェードインまたはフェードアウトされるオブジェクトである旨が検出されたときに、当該オブジェクトの透明度の変化率を設定するものとすることができる。
【００１９】
オブジェクトをフェードインまたはフェードアウトさせるときには、これによって透明度の変化率を変化させなければならない。フェードインまたはフェードアウトされるオブジェクトを検出して、その検出結果により透明度の変化率を設定していくことにより、オブジェクトのフェードインまたはフェードアウトをスムースに行うことができるようになる。
【００２０】
上記画像描画装置において、描画対象となるオブジェクトは、複数あってもよい。この場合において、前記変化率設定手段は、前記複数のオブジェクトを順次処理対象オブジェクトとして、それぞれ透明度の変化率を設定し、前記閾値設定手段は、前記複数のオブジェクトにそれぞれ設定された透明度の変化率に応じて、オブジェクト毎に前記閾値を設定することができる。
【００２１】
この場合には、透明度の変化率が異なるように設定される複数のオブジェクトが存在していても、それぞれの透明度の変化率に応じてオブジェクト毎に透明度の変化率が設定されるので、各オブジェクトについて適切な画像を描画できるようになる。なお、透明度比較手段、Ｚバッファ書き込み手段、及び画像描画手段による処理も、それぞれのオブジェクトについて順次行っていくものとすることができる。
【００２２】
ここで、前記変化率設定手段は、透明度の変化率が同時に変化させられる複数のオブジェクトをまとめて処理対象とし、処理対象とした単位毎に透明度の変化率を設定し、前記閾値設定手段は、前記処理対象とした単位毎に前記閾値を設定することもできる。
【００２３】
この場合には、透明度の変化率の設定及び閾値の設定を、複数のオブジェクトでまとめて行うことができるようになるので、その分の処理量を小さくすることができる。なお、透明度比較手段、Ｚバッファ書き込み手段、及び画像描画手段による処理も、処理対象とした単位毎に順次行っていくものとすることができる。
【００２４】
上記画像描画装置において、描画対象となるオブジェクトは、複数あってもよい。この場合において、上記画像描画装置は、前記複数のオブジェクトを、それぞれに設定された中心点の視点座標系のＺ値に基づいて、前記視点位置からの距離が遠い順にソートするオブジェクトソート手段と、前記オブジェクトソート手段によりソートされた順番に、各オブジェクトを処理対象として、前記Ｚ値算出手段、前記変化率設定手段、前記閾値設定手段、前記透明度比較手段、前記Ｚバッファ書き込み手段、及び前記画像描画手段による処理を行わせる処理制御手段とをさらに備えるものとすることができる。
【００２５】
複数のオブジェクトの位置が重なり合っているときには、前面側にあるオブジェクトのポリゴンの方が後面側にあるオブジェクトのポリゴンよりも前面側にあることの方が多い。このように各オブジェクトに設定された中心点により視点位置からの距離が遠い順にソートしておくことで、異なるオブジェクトのポリゴンによる影響を最小限に抑えることができる。また、ポリゴン単位のソートではなく、オブジェクト単位のソートであれば、ソートされる対象の数も限られるので、それほど処理量を大きくすることもない。
【００２６】
上記画像描画装置において、前記オブジェクトは、例えば、ビデオゲームにおいて所定の条件が成立することで登場及び退場するキャラクタとすることができる。
【００２７】
このようにゲームのキャラクタを描画対象のオブジェクトとして適用することで、透明度を変化させながら登場及び退場させることができ、その透明度が変化している間のキャラクタの画像も適切に表示されるので、ゲームの臨場感を増すことができる。
【００２８】
上記画像描画装置において、前記フレームバッファは、それぞれ前記画像描画手段による描画単位に応じて２つだけ用意され、前記Ｚバッファは、各描画単位に共通で１つだけ用意されたものであってもよい。
【００２９】
ここでは、透明度に応じて複数のＺバッファを用意する必要はない。画像描画手段により画像の描画を行うフレームバッファと、表示制御手段により描画した画像を読み出すフレームバッファとが用意されていればよく、交互に用いることによって２つだけフレームバッファを用意しておけばよいことになる。Ｚバッファは、画像の描画を行う際にのみ用いられるので、１つだけ用意されていればよいことになる。このようにＺバッファ及びフレームバッファは、最低限の数だけ用意しておけばよいので、これらに必要な記憶容量を小さくすることができる。
【００３０】
上記目的を達成するため、本発明の第２の観点にかかる画像描画方法は、コンピュータ装置の記憶装置に設けられるＺバッファ及びフレームバッファを用いて、複数のポリゴンから構成され、透明度の変化するオブジェクトを描画するための方法であって、前記複数のポリゴンを視点位置から透視変換したスクリーン上の各画素について視点座標系のＺ値をそれぞれ算出し、前記オブジェクトの透明度の変化率を設定し、前記設定された変化率に応じて、前記オブジェクトを構成する各ポリゴンを透視変換した各画素のＺ値をＺバッファに書き込むか否かの透明度についての閾値を設定し、前記設定された変化率において各ポリゴンを透視変換した各画素の透明度を、各ポリゴンの透明度と、前記設定された閾値と比較し、比較の結果により前記閾値よりも透明度が低い判定されたポリゴンの画素について、前記算出されたＺ値をＺバッファに書き込むＺバッファ書き込み、前記Ｚバッファに書き込まれたＺ値に基づいて、各ポリゴンを透視変換した各画素の画像を前記フレームバッファに描画し、前記フレームバッファに書き込まれた画像を表示手段に表示することを特徴とする。
【００３１】
上記目的を達成するため、本発明の第３の観点にかかるプログラムは、複数のポリゴンから構成され、透明度の変化するオブジェクトを描画するためのプログラムであって、前記複数のポリゴンを視点位置から透視変換したスクリーン上の各画素についてＺ値をそれぞれ算出するＺ値算出手段、前記オブジェクトの透明度の変化率を設定する変化率設定手段、前記変化率設定手段に設定された変化率に応じて、前記オブジェクトを構成する各ポリゴンを透視変換した各画素のＺ値をＺバッファに書き込むか否かの透明度についての閾値を設定する閾値設定手段、前記変化率設定手段に設定された変化率において各ポリゴンを透視変換した各画素の透明度を、前記閾値設定手段により設定された閾値と比較する透明度比較手段と、前記透明度比較手段によって前記閾値よりも透明度が低いと判定されたポリゴンの画素について、前記Ｚ値算出手段により算出されたＺ値をＺバッファに書き込むＺバッファ書き込み手段と、前記Ｚバッファ書き込み手段によってＺバッファに書き込まれたＺ値に基づいて、各ポリゴンを透視変換した各画素の画像をフレームバッファに描画する画像描画手段、及び、前記画像描画手段によりフレームバッファに書き込まれた画像を表示手段に表示させる表示制御手段としてコンピュータ装置を機能させることを特徴とする。
【００３２】
上記目的を達成するため、本発明の第４の観点にかかるコンピュータ読み取り可能な記録媒体は、複数のポリゴンから構成され、透明度の変化するオブジェクトを描画するためのプログラムを記録し、前記プログラムは、前記複数のポリゴンを視点位置から透視変換したスクリーン上の各画素についてＺ値をそれぞれ算出するＺ値算出手段、前記オブジェクトの透明度の変化率を設定する変化率設定手段、前記変化率設定手段に設定された変化率に応じて、前記オブジェクトを構成する各ポリゴンを透視変換した各画素のＺ値をＺバッファに書き込むか否かの透明度についての閾値を設定する閾値設定手段、前記変化率設定手段に設定された変化率において各ポリゴンを透視変換した各画素の透明度を、前記閾値設定手段により設定された閾値と比較する透明度比較手段と、前記透明度比較手段によって前記閾値よりも透明度が低いと判定されたポリゴンの画素について、前記Ｚ値算出手段により算出されたＺ値をＺバッファに書き込むＺバッファ書き込み手段と、前記Ｚバッファ書き込み手段によってＺバッファに書き込まれたＺ値に基づいて、各ポリゴンを透視変換した各画素の画像をフレームバッファに描画する画像描画手段、及び、前記画像描画手段によりフレームバッファに書き込まれた画像を表示手段に表示させる表示制御手段としてコンピュータ装置を機能させることを特徴とする。
【発明の効果】
【００３３】
本発明によれば、透明度の変化するオブジェクトを描画する場合において、ポリゴンの描画順序によらずに少ない処理量で適切な画像を描画することができるようになる。
【発明を実施するための最良の形態】
【００３４】
以下、添付図面を参照して、本発明の実施の形態について説明する。ここでは、ビデオゲームにおいて仮想三次元空間に存在して透明度が変化するオブジェクトを描画する場合に、本発明を適用した場合を例として説明する。
【００３５】
図２は、この実施の形態にかかるビデオゲームを実行するためのビデオゲーム装置１００の構成を示すブロック図である。図示するように、ビデオゲーム装置１００は、ビデオゲーム本体１０１を中心として構築される。このビデオゲーム本体１０１は、その内部バス１１９に接続された制御部１０３、ＲＡＭ（Random Access Memory）１０５、ハードディスク・ドライブ（ＨＤＤ）１０７、サウンド処理部１０９、グラフィック処理部１１１、ＤＶＤ／ＣＤ−ＲＯＭドライブ１１３、通信インターフェイス１１５、及びインターフェイス部１１７を含む。
【００３６】
このビデオゲーム本体１０１のサウンド処理部１０９は、スピーカーであるサウンド出力装置１２５に、グラフィック処理部１１１は、表示画面１２２を有する表示装置１２１に接続されている。ＤＶＤ／ＣＤ−ＲＯＭドライブ１１３には、記録媒体（ＤＶＤ−ＲＯＭまたはＣＤ−ＲＯＭ）１３１を装着し得る。通信インターフェイス１１５は、ネットワーク１５１に接続される。インターフェイス部１１７には、入力部（コントローラ）１６１とメモリカード１６２とが接続されている。
【００３７】
制御部１０３は、ＣＰＵ（Central Processing Unit）やＲＯＭ（Read Only Memory）などを含み、ＨＤＤ１０７や記録媒体１３１上に格納されたプログラムを実行し、ビデオゲーム装置１００の制御を行う。制御部１０３は、内部タイマを備えている。ＲＡＭ１０５は、制御部１０３のワークエリアである。ＨＤＤ１０７は、プログラムやデータを保存するための記憶領域である。サウンド処理部１０９は、制御部１０３により実行されているプログラムがサウンド出力を行うよう指示している場合に、その指示を解釈して、サウンド出力装置１２５にサウンド信号を出力する。
【００３８】
グラフィック処理部１１１は、制御部１０３から出力される描画命令に従って、フレームメモリ（フレームバッファ）１１２（図では、グラフィック処理部１１１の外側に描かれているが、グラフィック処理部１１１を構成するチップに含まれるＲＡＭ内に設けられる）に画像を展開し、表示装置１２１の表示画面１２２上に画像を表示するビデオ信号を出力する。グラフィック処理部１１１は、画像を描画するためのＺバッファをＲＡＭ内に設けている。
【００３９】
グラフィック処理部１１１から出力されるビデオ信号に含まれる画像の１フレーム時間は、例えば３０分の１秒であり、グラフィック処理部１１１は、ここでは、フレーム単位（すなわち、３０分の１秒単位）で１枚の画像を描画する。フレームメモリ１１２は、フレーム毎にそれぞれ１つだけ、２フレーム分設けられており、一方に展開された画像データを出力しているときに、他方に画像が展開される。Ｚバッファは、各フレーム共通で１つだけ設けられている。グラフィック処理部１１１には、半透明のポリゴンのＺ値をＺバッファに書き込むかどうかを判断するための透明度の閾値がセットされる。
【００４０】
ＤＶＤ／ＣＤ−ＲＯＭドライブ１１３は、記録媒体１３１に対しプログラム及びデータの読み書きを行う。通信インターフェイス１１５は、ネットワーク１５１に接続され、他のコンピュータとの通信を行う。入力部１６１は、方向キー及び複数の操作ボタンを備え、方向キーの操作により後述するプレイヤキャラクタを移動させ、操作ボタンの操作により所定の処理を行わせるものである。方向キーは、カーソルの移動やメッセージなどのためにも用いられ、操作ボタンは、所定の指示を入力するために用いられる。
【００４１】
インターフェイス部１１７は、入力部１６１からの入力データをＲＡＭ１０５に出力し、制御部１０３がそれを解釈して演算処理を実施する。インターフェイス部１１７は、また、制御部１０３からの指示に基づいて、ＲＡＭ１０５に記憶されているゲームの進行状況を示すデータをメモリーカード１６２に保存させ、メモリーカード１６２に保存されている中断時のゲームのデータを読み出して、ＲＡＭ１０５に転送する。
【００４２】
ビデオゲーム装置１００でゲームを行うためのプログラム及びデータは、最初例えば記録媒体１３１に記憶されている。このプログラム及びデータは、実行時にＤＶＤ／ＣＤ−ＲＯＭドライブ１１３により読み出されて、ＲＡＭ１０５にロードされる。制御部１０３は、ＲＡＭ１０５にロードされたプログラム及びデータを処理し、描画命令をグラフィック処理部１１１に出力し、サウンド出力の指示をサウンド処理部１０９に出力する。制御部１０３が処理を行っている間の中間的なデータは、ＲＡＭ１０５に記憶される。
【００４３】
この実施の形態にかかるビデオゲームは、プレイヤキャラクタを含む複数のキャラクタが仮想三次元空間に設けられたフィールド上で動作しながらゲームが進行していく。これらのキャラクタは、その全てが常にフィールド上に存在するのではなく、所定の場面においてフィールド上に登場したり、フィールドから退場するキャラクタもある。フェードインして登場したり、フェードアウトして退場するキャラクタもある。フェードインして登場するキャラクタとしては、例えばプレイヤキャラクタとのバトルを開始するときに登場する敵キャラクタがある。フェードアウトして退場するキャラクタとしては、例えばバトルにおいてＨＰ（残りダメージ値）が０になって行動不能となったキャラクタがある。
【００４４】
このフィールドが形成された仮想三次元空間に存在するオブジェクト（キャラクタを含む）の位置は、ワールド座標系の座標によって示される。各オブジェクトは、複数のポリゴンによって構成され、各ポリゴンの位置は、オブジェクト毎に定められたローカル座標系の座標によって示される。各ポリゴンには、透明度を表すα値（透明度が高いほど値が低い）が設定されているが、オブジェクトがフェードイン／フェードアウトする際に、この透明度が変化する。
【００４５】
この透明度が同時に変化する単位が、この実施の形態におけるオブジェクトの処理単位である。例えば、キャラクタなどは、胴体、頭、手、足などのパーツを一体として動作形態が変化するものであるが、フェードイン／フェードアウトする際における透明度の変化がパーツ毎に定まる場合には、各パーツがオブジェクトとして適用されるものとなる。以下、この実施の形態にかかるビデオゲームに適用されるオブジェクトを、全ての部位を一体として透明度が変化するキャラクタを例として説明する。
【００４６】
図３は、この実施の形態にかかるビデオゲームで適用されるキャラクタの例を示す図である。このキャラクタ２００が存在することとなる仮想三次元空間は、ワールド座標系（Ｘ，Ｙ，Ｚ）によって示される。この実施の形態にかかるビデオゲームでは、図３に示すのと同様の構成を有する複数のキャラクタが、イベントの発生など所定の条件の成立によって、ゲームの場面に登場し（仮想三次元空間に出現し）、ゲームの場面から退場する（仮想三次元空間から消失する）ものとなっている。これらの場合において、フェードイン／フェードアウトの処理が行われる場合もある。
【００４７】
図３に示すように、キャラクタ２００は、ポリゴン２０２ａ、２０２ｂを含む複数のポリゴンによって構成されており、各ポリゴンの頂点位置は、ローカル座標系（ｘ，ｙ，ｚ）によって示される。後述するように、キャラクタ２００などのオブジェクト毎にそのモデルデータが用意されるものとなる。キャラクタ２００のほぼ中心位置には、中心点２０１が設けられており、キャラクタ２００位置は、中心点２０１のワールド座標系における座標で示される。キャラクタ２００の方向は、ローカル座標系の各座標軸がワールド座標系の各座標軸に対してなす角で表される。
【００４８】
次に説明する透視変換の処理を行う際には、まず、キャラクタ２００の各ポリゴンの頂点位置の座標が、ローカル座標系の座標からワールド座標系の座標に変換される。なお、ポリゴン２０２ａ、２０２ｂは、中心点２０１を挟んで対向する位置にある。次に説明する仮想カメラの視点の位置によっては、その一方によって他方の少なくとも一部が隠される場合がある。
【００４９】
図３に示すキャラクタ２００などの各キャラクタが、ゲームの場面に登場し、ゲームの場面から退場する様子などのゲームの進行状況は、仮想カメラにより仮想三次元空間を透視変換することで表示画面１２２上に映し出され、プレイヤに認識されるものとなる。図４は、この透視変換の様子を模式的に示す。仮想三次元空間内に仮想カメラ３０１が置かれ、仮想スクリーン３０２上に投影された画像が表示画面に表示される画像となる。この仮想カメラ３０１の位置が視点３０３、仮想カメラ３０１の向きが視軸３０４、視点３０３と仮想スクリーン３０２の四隅を結んだ４本の直線が作る領域が視界３０５となる。
【００５０】
このように仮想スクリーン３０２上に画像を投影するために用いられる座標系が視点座標系（Ｘ’，Ｙ’，Ｚ’）であり、視軸３０４の方向が視点座標系のＺ’軸となる。Ｚ’座標の値は、視点３０３から遠くに行くに従って大きくなる。仮想スクリーン３０２上における座標系がスクリーン座標系であるが、そのｘ’軸及びｙ’軸の方向は、視点座標系のＸ’軸、Ｙ’軸の方向と同じである。ワールド座標系の座標（ローカル座標系の座標から変換された座標を含む）は、透視変換の処理により、視点座標系の座標に変換され、さらにスクリーン座標系の座標に変換される。
【００５１】
透視変換を行ってフレームメモリ１１２に画像を描画する際に、隠面消去の処理及びテクスチャマッピングの処理が行われる。隠面消去の処理としては、Ｚバッファ法が適用されている。図では、仮想三次元空間に透明度の変化がないキャラクタ２００Ａと、フェードインまたはフェードアウトにより透明度が変化しているキャラクタ２００Ｂとが存在しているが、キャラクタ２００Ａと２００Ｂとに対してＺバッファ法、テクスチャマッピングの処理を行う際に、異なる処理が適用される。その詳細については後述する。
【００５２】
次に、この実施の形態にかかるビデオゲームにおいて適用されている各種のデータについて説明する。ここでは、キャラクタ２００などのオブジェクトをゲームの場面に登場／退場させ、その様子を透視変換して表示画面１２２上に表示させるために必要なデータについて説明する。このようなデータとしては、オブジェクトのモデルデータを登録したモデルデータテーブル、マッピングされるテクスチャのデータを登録したテクスチャテーブル、及び現時点で仮想三次元空間内に存在し、表示対象となるオブジェクトを登録する表示オブジェクトテーブルがある。
【００５３】
図５は、モデルデータテーブルの例を示す図である。このモデルデータテーブル４００は、オブジェクト毎のモデルデータを登録したテーブルであり、記録媒体１３１に予め記録されているが、ＨＤＤ１０７に転送して用いるものとしてもよい。図示するように、モデルデータテーブル４００は、当該オブジェクトを一意に認識するためのオブジェクトＩＤ４０１を含んでいる。
【００５４】
オブジェクトデータテーブル４００は、また、当該オブジェクトを構成するポリゴンに関するデータとして、ポリゴン識別番号４１１ａ、４２１ａ、…及び頂点座標４１１ｂ、４２１ｂ、…を含むポリゴンデータ４１１、４２１、…と、テクスチャＮｏ．４１２ａ、４２２ａ、…及びＵＶ座標４１２ｂ、４２２ｂ、…（頂点座標４１１ｂ、４２１ｂ、…に対応）を含むテクスチャデータ４１２、４２２、…とを、ポリゴン毎に対応付けて登録している。
【００５５】
ポリゴン識別番号４１１ａ、４２１ａ、…及びテクスチャＮｏ．４１２ａ、４２２ａ、…は、それぞれポリゴン及び対応するテクスチャを一意に識別するためのものである。頂点座標４１１ｂ、４２１ｂ、…及びＵＶ座標４１２ｂ、４２２ｂ、…は、ポリゴンの頂点位置を当該オブジェクトのローカル座標系の座標で示す。ゲームの進行に伴って位置及び形態が変化しないオブジェクトであれば、頂点座標４１１ｂ、４２１ｂ、…及びＵＶ座標４１２ｂ、４２２ｂ、…をワールド座標系の座標で示してもよいが、その旨もオブジェクトデータテーブル４００に登録しておく必要がある。
【００５６】
図６は、テクスチャテーブルの例を示す図である。このテクスチャテーブル５００は、モデルデータテーブル４００に登録されたテクスチャ毎に用意されており、記録媒体１３１に予め記録されているが、ＨＤＤ１０７に転送して用いるものとしてよい。図示するように、テクスチャテーブル５００は、テクスチャＮｏ．５０１と、ＵＶ座標５１１、５２１、…、ＲＧＢデータ５１２、５２２、…、α値５１３、５２３、…を含むＵＶ座標データ５１０、５２０、…を含んでいる。
【００５７】
テクスチャＮｏ．５０１は、オブジェクトテーブル４００に登録されたテクスチャＮｏ．と対応している。ＵＶ座標５１１、５２１、…は、当該テクスチャＮｏ．に対応付けてオブジェクトテーブル４００に登録されたＵＶ座標を含んでいる。ＲＧＢデータ５１２、５２２、…は、当該座標における色彩をＲＧＢのデータで表したものであり、これに従ってポリゴン内の色彩が連続的に変化する。α値５１３、５２３、…は、当該座標における透明度を示すものであり、値が高いほど透明度が低く、これに従ってポリゴン内の透明度が連続的に変化する。
【００５８】
図７は、表示オブジェクトテーブルの例を示す図である。この表示オブジェクトテーブル６００は、ゲームの進行度合いに伴って、現時点で仮想三次元空間に存在し、表示画面１２２上への表示対象となるオブジェクトを登録するものである。表示オブジェクトテーブル６００は、各フレームにおいて表示対象となるオブジェクト毎に生成され、ＲＡＭ１０５に記憶される。位置、形態及び透明度が変化しないオブジェクトについては、予め表示オブジェクトテーブル６００を用意して記録媒体１３１に記録しておき、ＲＡＭ１０５に転送して用いるものとしてもよい。もっとも、表示オブジェクトテーブル６００に登録されているオブジェクトであっても、視界３０５の範囲内に存在しなければ、表示画面１２２上に表示されることはない。
【００５９】
図示するように、表示オブジェクトテーブル６００は、オブジェクトＩＤ６０１と、変化種類６０２と、α値変化率６０３と、表示位置６０４とを含んでいる。オブジェクトＩＤ６０１は、表示対象となるオブジェクトのＩＤであり、モデルデータテーブル４００のオブジェクトＩＤ４０１のうちのいずれかが登録される。変化種類６０２は、当該オブジェクトがフェードインまたはフェードアウトしている状態にあるかどうかを示す。フェードイン及びフェードアウトしてないで通常の状態で表示される場合には、変化種類６０２として何の情報も登録されない。
【００６０】
α値変化率６０３は、当該オブジェクト全体のα値の変化率を示す。当該オブジェクト全体としてのα値が変化していないときにα値変化率６０３が１００％なり、完全に透明になるとα値変化率が０％となる。α値変化率６０３は、フェードインしているときには０％から１００％までフレーム毎に順次増加し、フェードアウトしているときには１００％から０％まで順次減少する。変化種類６０２に何も登録されてなく、通常の状態で表示される場合のα値変化率６０３は、１００％となる。表示処理を行う際の各ポリゴンのα値は、テクスチャテーブル５００に登録されたα値５１３、５２３、…に従って定められるα値にα値変化率６０３を乗算した値となる。表示位置６０４は、当該オブジェクトの中心点のワールド座標系における座標を示す。
【００６１】
表示オブジェクトテーブル６００に登録されているオブジェクトが、キャラクタ２００のように、その方向や形態がゲームの進行度合いに伴って変化するオブジェクトである場合には、その方向や形態に関するデータも登録されることとなる。オブジェクト毎にフェードイン／アウトの速度を異ならせる場合には、その速度に関するデータも登録されることとなる。もっとも、オブジェクトの方向や形態の変化については、本発明とは直接的な関係がないため、詳細な説明を省略する。
【００６２】
新たなオブジェクトがゲームの場面に登場するときには、当該オブジェクトについて表示オブジェクトテーブル６００が生成されるが、それがフェードインして登場するオブジェクトであると、変化種類６０２にフェードインと設定される。フェードイン設定で登録されたオブジェクトのα値変化率６０３は、フレーム毎に０％から順次増加させられ、１００％となるとフェードイン設定が削除される。
【００６３】
フェードアウトしてゲームの場面から退場するオブジェクトがあると、当該オブジェクトの表示オブジェクトテーブル６００の変化種類６０２にフェードアウトと設定される。フェードアウト設定で登録されたオブジェクトのα値変化率６０３は、フレーム毎に１００％から順次減少させられる。α値変化率６０３が０％まで減少させられると当該オブジェクトがゲームの場面から完全に退場することとなり、表示オブジェクトテーブル６００が削除される。
【００６４】
次に、この実施の形態にかかるビデオゲームにおける隠面消去の処理として適用されるＺバッファ法について詳しく説明する。各フレームにおいて表示オブジェクトテーブル６００に登録されているオブジェクトについて、透視変換により視点座標系に変換した表示位置６０４のＺ’座標が大きいもの、すなわち視点３０３の位置から遠いオブジェクトから順番にソートし、ソートした順番に処理対象としていく。まず、処理対象としたオブジェクトについて表示オブジェクトテーブル６００に登録されているα値変化率６０３に基準閾値（例えば、６０）を乗算し、これを１００で除算した値を書込閾値として設定する。
【００６５】
次に、処理対象となったオブジェクトでは、モデルデータテーブル４００に登録されているポリゴンを順番に処理対象としていく。まず、処理対象としたポリゴンの頂点の座標を透視変換によりスクリーン座標系の座標にまで変換する。そして、当該ポリゴンをスクリーン座標系に透視変換して仮想スクリーン３０２上に投影される各画素についてのＺ’値を算出する。また、当該ポリゴンについてテクスチャテーブル５００に登録されているα値５１３、５２３に表示オブジェクトテーブルに登録されているα値変化率６０３を乗算し、これを１００で除算した値を現α値として算出する。現α値は、当該ポリゴンをスクリーン座標系に透視変換して仮想スクリーン３０２上に投影される各画素について算出される。
【００６６】
ここで、当該ポリゴンの各画素について、そのＺ’値よりも大きなＺ’値がＺバッファに登録されてなく、現α値が書込閾値よりも大きい（すなわち、その画素の透明度が書込閾値よりも低い）場合には、その画素のＺ’値をＺバッファに書き込む。これとともに、その画素をフレームバッファ（フレームメモリ１１２）に描画する。当該ポリゴンの各画素について、そのＺ’値よりも大きなＺ’値が既にＺバッファに登録されている（すなわち、当該ポリゴンの画素よりも前面側に書込閾値よりも現α値の大きな他のポリゴンの画素がある）場合には、その画素のＺ’値のＺバッファへの書き込みも、フレームバッファへの画像の描画も行わない。当該ポリゴンの各画素について、そのＺ’値よりも大きなＺ’値がＺバッファに登録されていないが、現α値が書込閾値以下（すなわち、その画素の透明度が書込閾値以上）ある場合には、その画素のＺ’値をＺバッファに書き込まないで、フレームバッファへの画像の描画のみを行う。
【００６７】
以下、この実施の形態にかかるビデオゲームにおける処理について説明する。ここでは説明を簡単にするため、本発明に特に関わる処理以外は、説明を省略している場合があるものとする。また、以下の説明において制御部１０３の処理として記載しているもののうちには、実際には制御部１０３からの指示に基づいてグラフィック処理部１１１が行っている処理が含まれている。
【００６８】
図８は、このビデオゲームにおいて、各フレームで実行されるオブジェクト表示処理を示すフローチャートである。このオブジェクト表示処理は、各フレームにおいて行われるものである。オブジェクト表示処理においては、まず、現時点のゲームの進行状況に応じて表示対象となるオブジェクトを決定するための表示オブジェクト決定処理を行う（ステップＳ１０１）。
【００６９】
図９は、ステップＳ１０１の表示オブジェクト決定処理を詳細に示すフローチャートである。表示オブジェクト決定処理では、制御部１０３は、ゲームの進行状況に応じて今回のフレームで新たに表示対象となり、表示オブジェクトテーブル６００が新たに追加されるオブジェクトがあるかどうかを判定する（ステップＳ２０１）。表示オブジェクトテーブル６００が新たに追加されるオブジェクトがなければ、そのままステップＳ２０５の処理に進む。
【００７０】
表示オブジェクトテーブル６００が新たに追加されるオブジェクトがあれば、制御部１０３は、当該オブジェクトがフェードインして仮想三次元空間に登場するオブジェクトであるかどうかを判定する（ステップＳ２０２）。フェードインして登場するオブジェクトであれば、制御部１０３は、変化種類６０２にフェードインと登録した表示オブジェクトテーブル６００を追加して、ＲＡＭ１０５に記憶させる（ステップＳ２０３）。フェードインして登場するオブジェクトでなければ、制御部１０３は、変化種類６０２に何も登録していない表示オブジェクトテーブル６００を追加して、ＲＡＭ１０５に記憶させる（ステップＳ２０４）。ステップＳ２０３、Ｓ２０４の処理の後、ステップＳ２０５の処理に進む。
【００７１】
ステップＳ２０５では、制御部１０３は、ゲームの進行状況に応じて今回のフレームで新たにフェードアウトを開始するオブジェクトがあるかどうかを判定する。新たにフェードアウトを開始するオブジェクトがなければ、そのままステップＳ２０７の処理に進む。新たにフェードアウトを開始するオブジェクトがあれば、制御部１０３は、当該オブジェクトの表示オブジェクトテーブル６００の変化種類６０２にフェードアウトと登録して（ステップＳ２０６）、ステップＳ２０７の処理に進む。
【００７２】
ステップＳ２０７からは、制御部１０３は、ＲＡＭ１０５に記憶されている表示オブジェクトテーブル６００を順次処理対象としていくが、ここで、全ての表示オブジェクトテーブル６００を処理対象として、処理が終了したかどうかを判定する（ステップＳ２０７）。
【００７３】
未だ処理対象としていない表示オブジェクトテーブル６００があれば、制御部１０３は、処理対象の表示オブジェクト６００を次のもの（最初にこの処理が行われるときは、最初のもの）にして、新たな処理対象に対応するオブジェクトの表示位置を決定し、表示位置６０４として表示オブジェクトテーブル６００に登録する（ステップＳ２０８）。ここで、キャラクタ２００のように方向や形態が変化するオブジェクトであれば、その方向や形態も決定する。表示位置、方向、形態ともに変化しない固定されているオブジェクトであれば、特にここで処理を行う必要はない。
【００７４】
次に、制御部１０３は、処理対象となっている表示オブジェクトテーブル６００の変化種類６０２にフェードインと登録されているかどうかを判定する（ステップＳ２０９）。フェードインと登録されていなければ、そのままステップＳ２１３の処理に進む。フェードインと登録されていれば、制御部１０３は、当該表示オブジェクトテーブル６００に登録されているα値変化率６０３を所定量だけ増加させる（ステップＳ２１０）。
【００７５】
制御部１０３は、α値変化率６０３を増加させた結果として、α値変化率６０３が１００％となり、当該オブジェクトのフェードインを終了したことになったかどうかを判定する（ステップＳ２１１）。当該オブジェクトのフェードインを終了していなければ、そのままステップＳ２１３の処理に進む。当該オブジェクトのフェードインを終了した場合には、制御部１０３は、処理対象となっている表示オブジェクトテーブル６００の変化種類６０２に登録されているフェードインを削除する（ステップＳ２１２）。そして、ステップＳ２０７の処理に戻る。
【００７６】
ステップＳ２１３では、制御部１０３は、処理対象となっている表示オブジェクトテーブル６００の変化種類６０２にフェードアウトと登録されているかどうかを判定する。フェードアウトと登録されていなければ、そのままステップＳ２０７の処理に戻る。フェードアウトと登録されていれば、制御部１０３は、当該表示オブジェクトテーブル６００に登録されているα値変化率６０３を所定量だけ減少させる（ステップＳ２１４）。
【００７７】
制御部１０３は、α値変化率６０３を増加させた結果として、α値変化率６０３が０％となり、当該オブジェクトのフェードアウトを終了したことになったかどうかを判定する（ステップＳ２１５）。当該オブジェクトのフェードアウトを終了していなければ、そのままステップＳ２０７の処理に戻る。当該オブジェクトのフェードアウトを終了した場合には、制御部１０３は、処理対象となっている表示オブジェクトテーブル６００そのものをＲＡＭ１０５から消去する（ステップＳ２１６）。そして、ステップＳ２０７の処理に戻る。
【００７８】
ステップＳ２０７において、未だ処理対象としていない表示オブジェクトテーブル６００がないと判定した場合には、これで表示オブジェクト決定処理を終了し、図８のオブジェクト表示処理に復帰する。
【００７９】
図８のオブジェクト表示処理に戻って説明を続けると、制御部１０３は、ゲームの進行状況（例えば、表示対象となるオブジェクトの位置）に従って、仮想カメラ３０１の視点３０３の位置、視軸３０４の方向、仮想スクリーン３０２の位置などを決定する（ステップＳ１０２）。もっとも、仮想カメラ３０１が固定されている場合には、このステップの処理は行わなくてもよい。
【００８０】
次に、制御部１０３は、全ての表示オブジェクトテーブル６００にワールド座標系で登録されているオブジェクトの表示位置６０４を、ステップＳ１０２で決定した（或いは、固定されている）視点３０３の位置及び視軸３０４の方向に応じた視点座標系の座標位置に変換する。そして、制御部１０３は、Ｚ’座標が大きいものから順番に、すなわち視点３０３の位置から遠いものから順番に、全ての表示オブジェクトテーブル６００に登録されているオブジェクトをソートする（ステップＳ１０３）。
【００８１】
ステップＳ１０４からは、制御部１０３は、ステップＳ１０３でソートされた順番に各オブジェクトを順次処理対象としていく。もっとも、オブジェクトの表示位置６０４に応じた視点座標系の座標で視界３０５の範囲、或いは視界３０５よりも若干広く定められた所定の範囲に含まれなくなるオブジェクトは、処理対象から除いてもよい。ここで、制御部１０３は、全てのオブジェクトを処理対象として、処理が終了したかどうかを判定する（ステップＳ１０４）。
【００８２】
未だ処理対象としていないオブジェクトがあれば、制御部１０３は、予め定められた基準閾値に当該オブジェクトの表示オブジェクトテーブル６００に登録されているα値変化率６０３を乗算し、これを１００で除算した値を、Ｚバッファへの書込閾値として設定する（ステップＳ１０５）。
【００８３】
ステップＳ１０６からは、制御部１０３は、処理対象のオブジェクトについてモデルデータテーブル４００に登録されている各ポリゴンを順次処理対象としていくが、ここで、当該オブジェクトの全てのポリゴンについて処理が終了したかどうかを判定する（ステップＳ１０６）。
【００８４】
未だ処理対象としていないポリゴンがあれば、制御部１０３は、当該ポリゴンのローカル座標系の座標をワールド座標系の座標に変換し、さらに視点座標系の座標に変換し、さらにスクリーン座標系の座標に変換する透視変換の処理を行う。ここで、処理対象のポリゴンをスクリーン座標系に透視変換して仮想スクリーン３０２上に投影される各画素についてのＺ’値を算出する（ステップＳ１０７）。制御部１０３は、この透視変換の結果により当該ポリゴンの少なくとも一部が視界３０５の範囲内に含まれるかどうか、すなわち仮想スクリーン３０２に投影されるかどうかを判定する（ステップＳ１０８）。当該ポリゴンの全てが視界３０５の範囲に含まれなければ、ステップＳ１０６の処理に戻り、制御部１０３は、全てのポリゴンを処理対象としたかどうかを再び判定するものとなる。
【００８５】
当該ポリゴンの少なくとも一部が視界の範囲に含まれていれば、制御部１０３は、当該ポリゴンについてテクスチャテーブル５００に登録されたα値５１３、５２３に対応するオブジェクトのα値変化率６０３を乗算し、これを１００で除算して現α値を算出する。この現α値の算出は、当該ポリゴンに含まれるスクリーン座標系の全ての点について行うものとする（ステップＳ１０９）。
【００８６】
制御部１０３は、次に、処理対象となっているポリゴンに含まれる点のＺ’値が、スクリーン座標系において対応する座標位置でＺバッファに書き込まれているＺ’値よりも小さいかどうかを判定する（ステップＳ１１０）。処理対象となっているポリゴンを仮想スクリーン３０２上に投影したときの全て画素のＺ’値がＺバッファに書き込まれているＺ’値以上となっていれば、ステップＳ１０６の処理に戻る。
【００８７】
処理対象となっているポリゴンの少なくとも一部の画素のＺ’値がＺバッファに書き込まれているＺ’値よりも小さければ、制御部１０３は、ステップＳ１０９で算出した現α値の全てがステップＳ１０５で算出した書込閾値以下であるかどうかを判定する（ステップＳ１１１）。現α値の全てが書込閾値以下である場合には、そのままステップＳ１１３の処理に進む。
【００８８】
現α値の一部でも書込閾値よりも大きいものがあれば、制御部１０３は、当該ポリゴンのスクリーン座標系の座標位置においてＺ’値がＺバッファのＺ’値よりも小さくなる画素について、その画素のＺ’値をＺバッファに新たに書き込む（ステップＳ１１２）。そして、ステップＳ１１３の処理に進む。ステップＳ１１３では、制御部１０３は、当該ポリゴンを透視変換して仮想スクリーン３０２上に投影される各画素の画像をフレームメモリ１１２に書き込む。そして、ステップＳ１０６の処理に戻る。
【００８９】
ステップＳ１０６において、全てのポリゴンを処理対象として処理が終了したと判定すると、ステップＳ１０４の処理に戻る。ステップＳ１０４において、全てのオブジェクトを処理対象として処理が終了したと判定すると、制御部１０３は、フレームメモリ１１２に描画された画像に基づいてビデオ信号を生成し、表示装置１２１の表示画面１２２として表示させる（ステップＳ１１４）。そして、当該フレームにおけるオブジェクト表示処理が終了する。
【００９０】
以下、この実施の形態にかかるビデオゲームにおいて、透明度が変化するオブジェクトを描画する際のＺバッファ法の処理について具体的に説明する。図１は、この実施の形態におけるＺバッファ法の処理を具体的に説明する図である。ここでは、ここで描画対象となるポリゴンは、図１（ａ）及び（ｂ）に示したものと同一であり、基準閾値は６０であるものとする。
【００９１】
図１（ａ）に示すように、ポリゴン群７０１、７０２を含むオブジェクトの透明度が変化していない場合、すなわちα値変化率が１００％である場合には、ポリゴン群７０１の現α値は、それぞれ７０×１００／１００＝７０、ポリゴン群７０２の現α値は、８０×１００／１００＝８０となる。このとき、Ｚバッファへの書込閾値は、６０×１００／１００＝６０と設定される。
【００９２】
ここで、前面側にあるポリゴン群７０１が先に処理対象とされた場合、ポリゴン群７０１の現α値が書込閾値よりも大きいため、ポリゴン群７０１のＺ’値がＺバッファに書き込まれる。次に、後面側にあるポリゴン群７０２が処理対象とされた場合には、より小さなＺ’値が既にＺバッファに書き込まれているため、ポリゴン群７０２の画像はフレームバッファに書き込まれない。この場合には、図１０（ａ）に示すように、後面側のポリゴン群７０２を表示することなく、前面側のポリゴン群７０１を表示画面上に表示させることができる。
【００９３】
一方、図１０（ｂ）に示すように、ポリゴン群７０１、７０２を含むオブジェクトの透明度が変化してα値変化率が８０％に設定された場合には、ポリゴン群７０１の現α値は、それぞれ７０×８０／１００＝５６、ポリゴン群７０２の現α値は、８０×８０／１００＝６４となる。このとき、Ｚバッファへの書込閾値は、６０×６０／１００＝４８と設定される。
【００９４】
ここでも、前面側にあるポリゴン群７０１が先に処理対象とされた場合、ポリゴン群７０１の現α値が書込閾値よりも大きいため、ポリゴン群７０１のＺ’値がＺバッファに書き込まれる。次に、後面側にあるポリゴン群７０２が処理対象とされた場合にも、より小さなＺ’値が既にＺバッファに書き込まれているため、ポリゴン群７０２のの画像はフレームバッファに書き込まれない。この場合にも、図１０（ｂ）に示すように、後面側のポリゴン群７０２を表示することなく、前面側のポリゴン群７０１を表示画面上に表示させることができるようになる。
【００９５】
以上説明したように、この実施の形態にかかるビデオゲームでは、処理対象のオブジェクトの各ポリゴンのＺ’値をＺバッファに書き込むかどうかを決めるための書込閾値は、当該オブジェクトのα値変化率６０３に応じて設定される。各ポリゴンの現α値も、α値変化率６０３に応じて算出される。このため、オブジェクトのα値変化率６０３がどのように設定されても、書込閾値と各ポリゴンの現α値との大小関係を一定のものとすることができる。
【００９６】
このため、前面側のポリゴンが後面側のポリゴンよりも先に処理対象となってしまう場合であっても、前面側のポリゴンのＺ’値がＺバッファに書き込まれているかどうかは、オブジェクトα値変化率６０３の設定に関わらずに定まるものとなる。従って、後から後面側のポリゴンの画像をフレームバッファに描画するかどうかを一律に定めることができる。これによって、ポリゴンの処理順序によらずに同じ結果を得て、オブジェクトの向きが変化したりしても適切な画像を得ることができる。
【００９７】
また、ポリゴンの処理順序によらずに同じ結果を得ることができるので、オブジェクトを構成する各ポリゴンを予めソートしておく必要がない。ソートの処理の計算量は、ポリゴンの数に応じて少なくとも２乗のオーダーで増加するが、各ポリゴンのＺ’値をＺバッファに書き込むための処理は、ポリゴンの数に応じて１乗のオーダーで増加するだけである。従って、オブジェクトを構成するポリゴンの数が多くなっても、あまり計算量を増加させることがなく、少ない計算量で画像を描画できるようになる。
【００９８】
もっとも、仮想三次元空間内に表示オブジェクトとして複数のオブジェクトが存在する場合には、その表示位置６０４を透視変換した視点座標系のＺ’値に基づいて、オブジェクト単位でのソートを行っている。ただ、ポリゴンの数とは異なり、オブジェクトの数は通常一定数に限られるため、ソートの処理によってもそれほど多くの計算量の増加を招かない。
【００９９】
また、オブジェクト同士が重なり合う場合においては、前面側にあるオブジェクトのポリゴンの方が後面側にあるオブジェクトのポリゴンよりも前面側にあることが多い。ここではオブジェクト単位のソートを行うことで、異なるオブジェクトのポリゴンについて、後面側にあるものを前面側にあるものよりも先に処理することが多くなるので、異なるオブジェクトのポリゴンによる影響を最小限に抑えることができる。
【０１００】
また、複数のオブジェクトを順次処理していく際において、各ポリゴンのＺ’値をＺバッファに書き込むかどうかを決めるための書込閾値は、オブジェクト毎に設定されるものとなっている。このため、フェードイン／フェードアウトするオブジェクトが混在して、オブジェクト毎にα値変化率６０３が異なるように設定される場合であっても、各オブジェクトについて適切な画像を描画することができるようになる。
【０１０１】
また、表示オブジェクトテーブル６００にオブジェクトの変化種類６０２としてフェードインまたはフェードアウトを設定するものとなっており、このような場合には、フレーム毎にα値変化率６０３を所定量ずつ変化させいくことができる。そして、フレーム毎にα値変化率６０３が変化すると、これに応じて書込閾値も変化させられていくものとなる。これにより、変化の過程におけるいずれのフレームでも後面側のポリゴンを表示させるかどうかを一律に定めて、適切な画像を描画することができるようになっている。こうして時間の経過に応じてオブジェクトの透明度を連続的に変化していく動画像を違和感なく生成することができ、オブジェクトのフェードインまたはフェードアウトをスムースに行うことができる。
【０１０２】
ところで、α値変化率６０３の変化に応じて書込閾値を変化させる対象となるオブジェクトには、ビデオゲームにおけるキャラクタも含まれている。このキャラクタの登場または退場を適切な画像でフェードインまたはフェードアウト表示させることができるようになるので、ゲームの臨場感を高くすることができるようになる。
【０１０３】
なお、この実施の形態にかかるビデオゲーム装置１００において用意されているフレームバッファの数は、１フレームの画像当たりで１つだけで、画像データの読み出しと画像の展開とを交互に行うために全体としても必要な数は２つだけである。Ｚバッファの数は、全体として１つだけである。α値が互いに異なるポリゴンのＺ’値を別々のＺバッファに書き込む必要は全くないからであり、この１つだけのＺバッファの内容に基づいてフレームバッファに画像を描画できるからである。このため、Ｚバッファ及びフレームバッファの数は最低限だけ用意すればよいので、そのために必要となる記憶容量を、小さくすることができる。
【０１０４】
本発明は、上記の実施の形態に限られず、種々の変形、応用が可能である。以下、本発明に適用可能な上記の実施の形態の変形態様について説明する。
【０１０５】
上記の実施の形態では、１フレーム毎にオブジェクト表示処理を行って、フレームメモリ１１２に画像を描画するものとしていた。これに対して、インターレース走査により１フレームが２フィールドで構成される場合には、１フィールド毎にオブジェクト表示処理を行って、フレームメモリ１１２に画像を描画するものとしてもよい。或いは、処理対象となるポリゴン数が多い場合などには、２フレーム毎にオブジェクト表示処理を行って、フレームメモリ１１２に画像を描画するものとすることもできる。この場合は、連続する２つのフレームで同じ画像が表示画面１２２として表示される。
【０１０６】
上記の実施の形態では、図８のオブジェクト表示処理において、１つ１つのオブジェクトを処理単位として、視点３０３の位置から遠い順に処理対象としていた。これに対して、同時にフェードイン／フェードアウトし、同一のフレームにおけるα値変化率６０３の設定が同一となる複数のオブジェクトがある場合には、それら複数のオブジェクトをまとめて処理対象とするものとしてもよい。表示オブジェクト決定処理においてα値変化率６０３を増加または減少させる処理も、まとめて行うことができる。
【０１０７】
この場合には、１つ１つのオブジェクトに対して書込閾値を求めるのではなく、まとめて処理単位となっている複数のオブジェクトのα値変化率に基準閾値を乗算し、これを１００で除算した値を書込閾値として設定することができる。このようにα値変化率６０３の設定および／または書込閾値の設定をまとめて行うものとすることにより、さらに処理量を削減することができるようになる。
【０１０８】
上記の実施の形態では、オブジェクトの透明度が変化する原因として、フェードインとフェードアウトを例として挙げていたが、これ以外の原因により透明度が変化するオブジェクト、例えば透明度が高くなったり低くなったりを連続して繰り返すオブジェクトについても、本発明における処理対象とすることができる。この場合、表示オブジェクトテーブル６００の変化種類６０２に変化の態様を登録しておき、それに従ってα値変化率６０３を算出するものとすればよい。
【０１０９】
上記の実施の形態では、ビデオゲームを実行するためのプラットフォームとして専用機であるビデオゲーム装置１００を適用していた。これに対して、ビデオゲーム本体１０１と同様の構成要素を備え、画像を描画する機能を有するものであれば、汎用のパーソナルコンピュータなどを適用してもよい。表示装置１２１及びサウンド出力装置１２５をビデオゲーム本体１０１と同一の筐体内に納めた構成を有する携帯ゲーム機を適用するものとしてもよい。
【０１１０】
携帯ゲーム機の場合は、記録媒体１３１として、ＤＶＤ−ＲＯＭやＣＤ−ＲＯＭの代わりに半導体メモリカードを適用することができる。携帯ゲーム機には、このメモリカードを挿入するためのカードスロットをＤＶＤ／ＣＤ−ＲＯＭドライブ１１３の代わりに設けることができる。汎用のパーソナルコンピュータの場合には、本発明に係るプログラム及びデータを記録媒体１３１に格納して提供するのではなく、ＨＤＤ１０７に予め格納して提供してもよい。本発明にかかるプログラム及びデータを格納して提供するための記録媒体は、ハードウェアの物理的形態及び流通形態に応じて任意のものを適用することができる。
【０１１１】
上記の実施の形態では、ビデオゲーム装置１００のプログラム及びデータは、記録媒体１３１に格納されて配布されるものとしていた。これに対して、これらのプログラム及びデータをネットワーク１５１上に存在するサーバ装置が有する固定ディスク装置に格納しておき、ビデオゲーム本体１０１にネットワーク１５１を介して配信するものとしてもよい。ビデオゲーム装置１００において、通信インターフェイス１１５がサーバ装置から受信したプログラム及びデータは、ＨＤＤ１０７に保存し、実行時にＲＡＭ１０５にロードすることができる。ビデオゲームのプログラムの一部として適用されるものだけでなく、上記したように画像を描画する機能を含むプログラム全般を、同様の方法により配布するものとすることができる。
【産業上の利用可能性】
【０１１２】
本発明は、ビデオゲームを初めとして、画像を描画するためのコンピュータグラフィックス処理の分野において利用することができる。
【図面の簡単な説明】
【０１１３】
【図１】従来例において、透明度が変化するオブジェクトを描画する際のＺバッファ法の処理を具体的に説明する図である。
【図２】本発明の実施の形態に適用されるビデオゲーム装置の構成を示すブロック図である。
【図３】本発明の実施の形態のビデオゲームで描画されるオブジェクト（キャラクタ）の構成例を示す図である。
【図４】図３のオブジェクト（キャラクタ）を含む仮想三次元空間を透視変換するための処理を模式的に示す図である。
【図５】表示対象となるオブジェクト毎に記憶されたモデルデータテーブルの例を示す図である。
【図６】図５のテクスチャ毎に記憶されたテクスチャテーブルの例を示す図である。
【図７】各フレームにおいて表示対象となるオブジェクトを登録するための表示オブジェクトテーブルの例を示す図である。
【図８】本発明の実施の形態のビデオゲームで実行されるオブジェクト表示処理を示すフローチャートである。
【図９】図８の表示オブジェクト決定処理を詳細に示すフローチャートである。
【図１０】本発明の実施の形態において、透明度が変化するオブジェクトを描画する際のＺバッファ法の処理を具体的に説明する図である。
【符号の説明】
【０１１４】
１００  ビデオゲーム装置
１０１  ビデオゲーム本体
１０３  制御部
１０５  ＲＡＭ
１０７  ＨＤＤ
１０９  サウンド処理部
１１１  グラフィック処理部
１１３  ＤＶＤ／ＣＤ−ＲＯＭドライブ
１１５  通信インターフェイス
１１７  インターフェイス部
１１９  内部バス
１２１  表示装置
１２２  表示画面
１２５  サウンド出力装置
１３１  記録媒体
１５１  ネットワーク
１６１  入力部
１６２  メモリーカード
２００  キャラクタ
２０２ａ、２０２ｂ  ポリゴン
４００  モデルデータテーブル
５００  テクスチャテーブル
６００  表示オブジェクトテーブル
【図１】
2005149315.tif 000003
【図２】
2005149315.tif 000004
【図３】
2005149315.tif 000005
【図４】
2005149315.tif 000006
【図５】
2005149315.tif 000007
【図６】
2005149315.tif 000008
【図７】
2005149315.tif 000009
【図８】
2005149315.tif 000010
【図９】
2005149315.tif 000011
【図１０】
2005149315.tif 000012