(57)【特許請求の範囲】
【請求項１】
３次元空間で定義される三角形を２次元空間に透視投影して２次元空間での三角形を陰影付けする画像処理装置において、
３次元空間で定義される三角形の頂点座標からなる行列の逆行列を面勾配要素係数として計算する少なくとも一つの面勾配要素係数計算部と、
前記面勾配要素係数計算部で計算された面勾配要素係数を共通に用いて前記三角形のテクスチャ座標の補間係数を計算する少なくとも一つの補間係数計算部と、
前記補間係数を用いて透視投影補正を行なう少なくとも一つの補正部とを備えたことを特徴とする透視投影計算装置。
【請求項２】
３次元空間で定義される三角形を２次元空間に透視投影して２次元空間での三角形を陰影付けする画像処理装置において、
３次元空間で定義される三角形の頂点座標からなる行列の逆行列を面勾配要素係数として計算する少なくとも一つの面勾配要素係数計算部と、
前記面勾配要素係数計算部で計算された面勾配要素係数を共通に用いて前記三角形のテクスチャ座標，光源強度減衰率，頂点正規モデル座標の補間係数を計算する少なくとも一つの補間係数計算部と、
前記補間係数を用いて透視投影補正を行なう少なくとも一つの補正部とを備えたことを特徴とする透視投影計算装置。
【請求項３】
請求項１または２に記載の透視投影計算装置において、
前記補間計算式が、奥行きに関する項を含み、前記奥行きに関する項として奥行き座標の逆数値を用いることを特徴とする透視投影計算装置。
【請求項４】
３次元空間で定義される三角形を２次元空間に透視投影して２次元空間での三角形を陰影付けする画像処理方法において、
３次元空間で定義される三角形の頂点座標からなる行列の逆行列を面勾配要素係数として計算し、
前記面勾配要素係数を共通に用いて前記三角形のテクスチャ座標の補間係数を計算し、
前記補間係数を用いて透視投影補正を行なうことを特徴とする透視投影計算方法。
【請求項５】
３次元空間で定義される三角形を２次元空間に透視投影して２次元空間での三角形を陰影付けする画像処理方法において、
３次元空間で定義される三角形の頂点座標からなる行列の逆行列を面勾配要素係数として計算し、
前記面勾配要素係数を共通に用いて前記三角形のテクスチャ座標，光源強度減衰率，頂点正規モデル座標の補間係数を計算し、
前記補間係数を用いて透視投影補正を行なうことを特徴とする透視投影計算方法。
【請求項６】
請求項４または５に記載の透視投影計算方法において、
前記補間計算式が、奥行きに関する項を含み、前記奥行きに関する項として奥行き座標の逆数値を用いることを特徴とする透視投影計算方法。
【発明の詳細な説明】
【０００１】
【発明の属するの技術分野】
本発明は、画像処理装置の図形発生方式に係り、特に、透視投影が施された３次元図形に対する幾何学的パラメータを補正する透視投影計算装置および透視投影計算方法に関する。
【０００２】
【従来の技術】
透視投影された図形、例えば透視投影された三角形に陰影付けする場合には、一般に、透視投影後三角形の各頂点座標を用いてスパン毎に線形補間を行ない、透視投影後三角形の内部の各点について、陰影付けに必要かつ十分な幾何学的パラメータを近似的に求める。
【０００３】
また、透視投影による臨場感を損なわないための方法としては、透視投影後三角形の各頂点座標を用いてスパン毎に２次補間を行ない、透視投影後三角形の内部の各点について、陰影付けに必要かつ十分な幾何学的パラメータを近似的に求める。
【０００４】
さらに、例えば特開平３−１９８１７２号は、スパン毎の補間をせず、三次元空間での平面図形上で、陰影付けに必要かつ十分な幾何学的パラメータを演算して求める方法を記載しているが、補間に用いる補間係数の具体的な算出方法については示していない。
【０００５】
面毎に補間を行なう方法として、 Juan Pineda : A Parallel Algorithm for Polygon Rasterization, Computer Graphics, Volume２２, Number ４, August 1988, pp.17−20 が知られている。しかし、透視投影後の図形に対する処理に関しては言及していない。
【０００６】
【発明が解決しようとする課題】
上記従来技術では、スパン毎に補間を行なうため、補間に必要な補間係数を算出する際、除算を含む演算をスパン毎に行なう必要があった。加えて、同一スパン上の補間であっても、補間の対象となる幾何学的パラメータが異なる場合は、除算を含む演算である補間係数計算をパラメータ毎に行なう必要があった。
【０００７】
また、上記従来技術における透視投影の効果は、正確でなく、近似であった。
【０００８】
本発明の目的は、陰影付けの際に必要な除算回数を減らし、面毎の正確な透視投影補正を高速に実行できる透視投影計算装置を提供することである。
【０００９】
本発明他の目的は、陰影付けの際に必要な除算回数を減らし、面毎の正確な透視投影補正を高速に実行できる透視投影計算方法を提供することである。
【００１０】
【課題を解決するための手段】
本発明は、上記目的を達成するために、３次元空間で定義される三角形を２次元空間に透視投影して２次元空間での三角形を陰影付けする画像処理装置において、３次元空間で定義される三角形の頂点座標からなる行列の逆行列を面勾配要素係数として計算する少なくとも一つの面勾配要素係数計算部と、前記面勾配要素係数計算部で計算された面勾配要素係数を共通に用いて前記三角形のテクスチャ座標の補間係数を計算する少なくとも一つの補間係数計算部と、前記補間係数を用いて透視投影補正を行なう少なくとも一つの補正部とを備えた透視投影計算装置を提案する。
【００１１】
本発明は、また、３次元空間で定義される三角形を２次元空間に透視投影して２次元空間での三角形を陰影付けする画像処理装置において、３次元空間で定義される三角形の頂点座標からなる行列の逆行列を面勾配要素係数として計算する少なくとも一つの面勾配要素係数計算部と、前記面勾配要素係数計算部で計算された面勾配要素係数を共通に用いて前記三角形のテクスチャ座標，光源強度減衰率，頂点正規モデル座標の補間係数を計算する少なくとも一つの補間係数計算部と、前記補間係数を用いて透視投影補正を行なう少なくとも一つの補正部とを備えた透視投影計算装置を提案する。
【００１３】
補間計算式は、奥行きに関する項を含むこともでき、より具体的には、奥行きに関する項として奥行き座標の逆数値を用いる。
【００１４】
本発明は、上記他の目的を達成するために、３次元空間で定義される三角形を２次元空間に透視投影して２次元空間での三角形を陰影付けする画像処理方法において、３次元空間で定義される三角形の頂点座標からなる行列の逆行列を面勾配要素係数として計算し、前記面勾配要素係数を共通に用いて前記三角形のテクスチャ座標の補間係数を計算し、前記補間係数を用いて透視投影補正を行なう透視投影計算方法を提案する。
【００１５】
本発明は、さらに、３次元空間で定義される三角形を２次元空間に透視投影して２次元空間での三角形を陰影付けする画像処理方法において、３次元空間で定義される三角形の頂点座標からなる行列の逆行列を面勾配要素係数として計算し、前記面勾配要素係数を共通に用いて前記三角形のテクスチャ座標，光源強度減衰率，頂点正規モデル座標の補間係数を計算し、前記補間係数を用いて透視投影補正を行なう透視投影計算方法を提案する。
【００１７】
補間計算式は、奥行きに関する項を含むこともでき、より具体的には、奥行きに関する項として奥行き座標の逆数値を用いる。
【００１８】
本発明においては、陰影付けをする際に必要な複数の幾何学的パラメータに対して共通に使用可能な３次元空間における面勾配要素係数を採用して除算回数を減らし、透視投影後図形の陰影付けに必要な複数の幾何学的パラメータを３次元空間で面毎に補間するため、正確な透視投影補正を高速に行なうことができる。
【００１９】
【発明の実施の形態】
次に、図１〜図１７を参照して、本発明による透視投影計算装置および透視投影計算方法の実施例を説明する。
【００２０】
図１は、本発明による透視投影計算装置の一実施例を採用した画像処理システムの構成の一例を示すブロック図である。このシステムは、図形頂点情報入力部１０００と、画像処理装置２０００と、メモリモジュール３０００と、表示部４０００とからなる。画像処理装置２０００は、透視投影補正計算部２１００と、図形発生部２２００とを含む。メモリモジュール３０００は、フレームバッファ３１００と、デプスバッファ３２００とからなる。
【００２１】
図２は、透視投影補正計算部２１００の構成の一例を示すブロック図である。透視投影補正計算部２１００は、透視投影の補正処理を実行する部分であって、面勾配要素係数計算部２３１０と、補間係数計算部２３２０と、画素アドレス計算部２４００と、補正部２５２０とからなる。
【００２２】
補間係数計算部２３２０は、奥行き座標補間係数計算部２３２１と、テクスチャ座標補間係数計算部２３２２とを含み、補正部２５２０は、奥行き座標補正部２５２１と、テクスチャ座標補正部２５２２とを含む。
【００２３】
図３は、透視投影補正計算部２１００の構成要素である面勾配要素係数計算部２３１０の構成の一例を示すブロック図である。面勾配要素係数計算部２３１０は、図形頂点情報入力部１０００から図形頂点情報を得る。頂点座標行列構成器２３１０(ａ)は、図形頂点情報すなわち３次元空間で定義される三角形の頂点座標(ｖ０頂点座標１１１１，ｖ１頂点座標１１１２，ｖ２頂点座標１１１３)を基に、マトリックスを構成する。逆行列計算器２３１０(ｂ)は、そのマトリックスを基に、逆行列すなわち面勾配要素係数２３１０(１)を計算する。
【００２４】
図４は、補間係数計算部２３２０の一構成要素である奥行き座標補間係数計算部２３２１の構成の一例を示すブロック図である。奥行き座標行列構成器２３２１(ａ)は、視点−前面クリップ面間距離からなるマトリックスを構成する。乗算器２３２１(ｃ)は、面勾配要素計算部２３１０で計算された面勾配要素係数２３１０(１)と奥行き座標行列構成器２３２１(ａ)で構成された視点−前面クリップ面間距離からなるマトリックスとを乗算する。乗算器２３２１(ｄ)は、その結果と符号変換行列２３２１(ｂ)とを乗算し、奥行き座標補間係数２３２１(１)を算出する。ここで、符号変換行列２３２１(ｂ)は、視点座標系１１１０ｃからｒｅｃＺ座標系１１８０ｃへの変換を意味する。
【００２５】
図５は、補間係数計算部２３２０の一構成要素であるテクスチャ座標補間係数計算部２３２２の構成の一例を示すブロック図である。テクスチャ座標補間係数計算部２３２２は、図形頂点情報入力部１０００から図形頂点情報を得る。テクスチャ座標行列構成器２３２２(ａ)は、図形頂点情報すなわち３次元空間で定義される三角形の頂点テクスチャ座標(ｖ０頂点テクスチャ座標１１２１，ｖ１頂点テクスチャ座標１１２２，ｖ２頂点テクスチャ座標１１２３)を基に、マトリックスを構成する。乗算器２３２２(ｂ)は、そのマトリックスと面勾配要素計算部２３１０で計算された面勾配要素係数２３１０(１)とを乗算し、テクスチャ座標補間係数２３２２(１)を算出する。テクスチャ座標補間係数２３２２(１)は、テクスチャ座標ｓ成分補間係数と、テクスチャ座標ｔ成分補間係数とからなる。
【００２６】
図６は、補正部２５２０の一構成要素である奥行き座標補正部２５２１の構成の一例を示すブロック図である。乗算器２５２１(ａ)は、奥行き座標補間係数２３２１(１)のｘ成分と、画素アドレス計算部２４００により発生されたアドレスのｘ成分とを乗算する。加算器２５２１(ｃ)は、その結果と奥行き座標補間係数２３２１(１)のコンスタント成分とを加算する。一方、乗算器２５２１(ｂ)は、奥行き座標補間係数２３２１(１)のｙ成分と、画素アドレス計算部２４００により発生されたアドレスのｙ成分とを乗算する。最後に、加算器２５２１(ｄ)は、加算器２５２１(ｃ)の出力と乗算器２５２１(ｂ)の出力とを加算し、補正後奥行き座標２５２０(１)を算出する。
【００２７】
図７は、補正部２５２０の一構成要素でありテクスチャ座標補正部２５２２のｓ成分であるテクスチャ座標ｓ成分補正部２５２２ｓの構成の一例を示すブロック図である。テクスチャ座標ｓ成分補正部２５２２ｓの乗算器２５２２ｓ(ａ)は、画素アドレス計算部２４００により発生されたアドレスのｘ成分と補正後奥行き座標２５２０(１)より計算される値−ｎｅａｒ／ｒｅｃＺとを乗算する。乗算器２５２２ｓ(ｂ)は、その結果とテクスチャ座標ｓ成分補間係数２３２２(１)ｓのｘ成分とを乗算する。乗算器２５２２ｓ(ｃ)は、画素アドレス計算部２４００により発生されたアドレスのｙ成分と補正後奥行き座標２５２０(１)より計算される値−ｎｅａｒ／ｒｅｃＺとを乗算する。乗算器２５２２ｓ(ｅ)は、その結果とテクスチャ座標ｓ成分補間係数２３２２(１)ｓのｙ成分とを乗算する。さらに、乗算器２５２２ｓ(ｄ)は、テクスチャ座標ｓ成分補間係数２３２２(１)ｓのｚ成分と補正後奥行き座標２５２０(１)より計算される値−ｎｅａｒ／ｒｅｃＺとを乗算する。加算器２５２２ｓ(ｆ)は、その結果と乗算器２５２２ｓ(ｂ)の出力とを加算する。最後に、加算器２５２２ｓ(ｇ)は、その結果と２５２２ｓ(ｅ)の出力とを加算し、補正後テクスチャｓ成分座標２５２０(２)ｓを算出する。
【００２８】
図８は、図２の透視投影補正計算部２１００の構成を拡張した一例を示すブロック図である。すなわち、奥行き座標および頂点テクスチャ座標の他に、頂点光源強度等の３次元空間で定義された平面上で線形性が保たれる幾何学的パラメータを取り扱うように拡張した透視投影補正計算部２１００の一例である。３次元空間で定義された平面上で線形性が保たれる幾何学的パラメータであれば、奥行き座標および頂点テクスチャ座標と同様の処理により、透視投影補正が可能となる。
【００２９】
ここでは、輝度計算に必要な光源強度減衰率を同様の構成で透視投影補正を行なう。また、法線ベクトル１１３０，光源方向ベクトル１１４０，視点方向ベクトル１１９０，光源反射ベクトル１１５０に関しては、３次元空間での平面上で線形性を保つような空間において、透視投影補正を行なう。その空間を(ｕ，ｖ，ｗ)空間と呼び、座標系を正規化モデル座標系と呼ぶ。
【００３０】
図８における頂点座標および頂点テクスチャ座標の処理手順は、図２の処理手順と同じである。また、拡張された幾何学的パラメータである光源強度減衰率および頂点正規モデル座標は、図２の頂点テクスチャ座標と同様に処理する。
【００３１】
さらに説明すると、図８では、輝度計算に必要な法線，奥行き座標，頂点テクスチャ座標，光源，視点等の幾何学的パラメータについて、図２と同様の構成で透視投影補正を行なう。具体的には、光源と図形内各点との位置関係により決定する光源強度減衰率１１６０と、面の向きを示す法線ベクトル１１３０と、光源の方向を示す光源方向ベクトル１１４０と、視点の方向を示す視点方向ベクトル１１９０と、光源の反射方向を示す光源反射ベクトル１１５０である。法線ベクトル１１３０，光源方向ベクトル１１４０，視点方向ベクトル１１９０，光源反射ベクトル１１５０に関しては、３次元空間での平面上で線形性を保つような空間において透視投影補正を行なう。その空間を(ｕ，ｖ，ｗ)空間と呼び、座標系を正規化モデル座標系と呼ぶ。すなわち、実際の透視投影補正は、それらベクトルが線形に補間できる正規化モデル座標系での値(ｕ，ｖ，ｗ)に変換したものを用いる。例えば、３次元空間で定義された三角形頂点の正規化モデル座標系での座標値は、頂点正規モデル座標と呼ばれる。
【００３２】
図９は、画素アドレス計算部と補正部２５２０とともに図形発生部２２００を構成している輝度計算部２５１０の構成の一例を示すブロック図である。テクスチャ色取得部２５１０(ａ)は、補正後テクスチャ座標２５２０(２)を基に、テクスチャの色であるＣ=(Ｒ，Ｇ，Ｂ)を取得する。光源による減衰無し環境／拡散／鏡面成分輝度計算部２５１０(ｂ)は、そのテクスチャ色と補正後光源強度減衰率とを基に、光源による減衰無しの環境／拡散／鏡面成分の輝度を求める。スポット角減衰率計算器２５１０(ｃ)は、補正後正規モデル座標を基に、逆向きの光源ベクトル１１A０と光源方向ベクトル１１４０との内積(−Ｌｄｉｒ・Ｌｉ)のＬｃｏｎｃ乗を求める。光源入射角照度計算器２５１０(ｄ)は、法線ベクトル１１３０と光源方向ベクトル１１４０との内積(Ｌ・Ｎ)を求める。
【００３３】
鏡面反射減衰率計算器２５１０(ｅ)は、視点方向ベクトル１１９０と光源反射ベクトル１１５０との内積(Ｖ・Ｒ)のＳｃｏｎｃ乗を算出する。ここで、Ｌｃｏｎｃとは、スポット光源強度指数であり、Ｓｃｏｎｃとは、鏡面反射指数である。次に、乗算器２５１０(ｆ)は、光源による減衰無し環境／拡散／鏡面成分輝度計算部２５１０(ｂ)の出力とスポット角減衰率計算器２５１０(ｃ)の出力とを乗算する。乗算器２５１０(ｇ)は、その結果と光源入射角照度計算器２５１０(ｄ)の出力とを乗算する。乗算器２５１０(ｈ)は、乗算器２５１０(ｆ)の出力と鏡面反射減衰率計算器２５１０(ｅ)の出力とを乗算する。
【００３４】
以上の一連の処理を光源数分だけ実行する。全光源分の環境成分計算器２５１０(ｊ)，全光源分の拡散成分計算器２５１０(ｋ)，全光源分の鏡面成分計算器２５１０(ｌ)は、それぞれを光源数分だけ加算する。最後に、輝度合成用加算器２５１０(ｏ)は、自然界環境成分と放射成分の輝度計算器２５１０(ｉ)の出力と、全光源分の環境成分計算器２５１０(ｊ)の出力と、全光源分の拡散成分計算器２５１０(ｋ)の出力と、全光源分の鏡面成分計算器２５１０(ｌ)の出力とを加算して、画素輝度２５１０(ｌ)を算出する。
【００３５】
図１０〜図１７を参照して、このような構成の透視投影計算装置の動作を説明する。
【００３６】
図１０は、表示部４０００に表示された三角形１１００を示す図である。これは、３次元空間で定義される三角形が２次元空間に透視投影された三角形である。その下の図表は、表示部４０００に表示された三角形１１００の頂点におけるｐｄｃ座標１１７０，ｒｚｃ座標１１８０，ｖｒｃ座標１１１０，テクスチャ座標１１２０，光源強度減衰率１１６０，正規モデル座標１１Ｂ０を示している。ここで、ｐｄｃ座標１１７０は、表示部４０００に表示された三角形の座標であり、ｒｚｃ座標１１８０は、透視投影後の座標であり、ｖｒｃ座標１１１０は、透視投影前の座標であり、テクスチャ座標１１２０は、上記三角形にマッピングされるテクスチャ画像との対応を示す座標であり、光源強度減衰率１１６０は、光源と図形内各点との位置関係により決定されるスカラ値であり、正規モデル座標１１Ｂ０は、法線ベクトル１１３０，光源方向ベクトル１１４０，視点方向ベクトル１１９０，光源反射ベクトル１１５０が３次元空間での平面上で線形性を保つ空間である正規モデル座標系における座標値である。
【００３７】
なお、ｐｄｃ１１７０ｃは“Ｐｈｙｓｉｃａｌ Ｄｅｖｉｃｅ Ｃｏｏｒｄｉｎａｔｅｓ”(物理デバイス座標系)、ｒｚｃ１１８０ｃは“ｒｅｃＺ Ｃｏｏｒｄｉｎａｔｅｓ”(ｒｅｃＺ座標系)、ｖｒｃ１１１０ｃは“Ｖｉｅｗ Ｒｅｆｅｒｅｎｃｅ Ｃｏｏｒｄｉｎａｔｅｓ”(視点座標系)の略である。ただし、ｒｅｃＺ１１８０ｚは、ｖｒｃ上で奥行き座標の逆数と比例関係にある。
【００３８】
図１１は、それらの幾何学的パラメータと表示対象三角形との関係を示す図である。ｖｒｃ１１１０ｃ上の三角形内のある点(ｘｖ，ｙｖ，ｚｖ)１１１０には、透視投影のための補正が必要な幾何学的パラメータとして、奥行き座標１１８０ｚ，テクスチャ座標１１２０，光源強度減衰率１１６０，正規モデル座標１１Ｂ０が複数存在する。ｖｒｃ１１１０ｃ上の三角形内のある点(ｘｖ，ｙｖ，ｚｖ)１１１０は、透視投影により、投影面上にマッピングされ、ｒｚｃ１１８０ｃ上の点(ｘｒ，ｙｒ，ｚｒ)１１８０となる。マッピングされたｒｚｃ１１８０ｃ上の点は、表示部４０００におけるｐｄｃ１１７０ｃ上の点(ｘ，ｙ，ｚ)１１７０になる。
【００３９】
図１２は、前記三種類の座標系とｖｒｃ１１１０ｃ／ｒｚｃ１１８０ｃ／ｐｄｃ１１７０ｃとの相互関係を示す図である。ｖｒｃ１１１０ｃは、視点が原点にある。表示しようとする図形モデルは、この座標系において定義される。ｒｚｃ１１８０ｃは、ｖｒｃ１１１０ｃに対して、人間の視覚システムと類似の視覚効果を作り出す透視投影を施した後の座標系である。ｒｚｃ１１８０ｃ上に描画された図形は、ｐｄｃ１１７０ｃに変換され、表示部４０００に表示される。
【００４０】
図１３は、補正部２５２０内で処理される補間計算式の代表的なものとして、奥行き座標２５２１(ｅ)およびテクスチャ座標のｓ成分２５２２ｓ(ｈ)に関する補間計算式を示す図である。補間後のｒｚｃ１１８０ｃにおける奥行き座標ｒｅｃＺ２５２０(１)は、
ｒｅｃＺ＝ｒｅｃＺｘ×ｘｒ＋ｒｅｃＺｙ×ｙｒ＋ｒｅｃＺｃ
で求められる。ここで、(ｘｒ，ｙｒ)は、補間対象点のｒｚｃ座標１１８０であり、(ｒｅｃＺｘ，ｒｅｃＺｙ，ｒｅｃＺｃ)は、補間係数計算部２３２０で求められた奥行き座標補間係数２３２１(１)である。
【００４１】
テクスチャ座標１１２０は、(ｓ，ｔ)という二成分を有する。その一成分であるｓ成分の補間後の座標ｓ２５２０(２)ｓは、
ｓ＝(Sｘ×ｘｒ＋Sｙ×ｙｒ＋Sｚ)×ｚｖ
で求められる。ここで、(ｘｒ，ｙｒ)は、補間対象点のｒｚｃ座標１１８０であり、(Sｘ，Sｙ，Sｃ)は、補間係数計算部２３２０で求めたテクスチャ座標ｓ成分補間係数２３２２(１)ｓであって、ｚｖは、補間対象点の奥行きｖｒｃ座標１１１０であり、補間後のｒｚｃ１１８０ｃにおける奥行き座標ｒｅｃＺ２５２０(１)から求められる。本実施例における計算式は、ｚｖ＝−ｎｅａｒ／ｒｅｃＺである。ただし、ｎｅａｒは、ｖｒｃ１１１０ｃにおける視点と前クリップ面との距離である。ここで、補間対象点のｒｚｃ座標１１８０は、ｐｄｃ座標１１７０から線形な関係式より算出できる。なお、他の複数の幾何学的パラメータに関する補間計算式は、前記テクスチャ座標１１２０のｓ成分の場合と同様に求めることができる。
【００４２】
図１４は、輝度計算部２５１０で処理される輝度計算式を示す図である。画素の各色成分Ｃは、自然界に存在する環境光により照らされる図形の色Ｃａと、図形そのものが放つ放射光の色Ｃｅと、光源により照らされる図形の環境反射光成分色Ｃａｉと、光源により照らされる図形の拡散反射光成分色Ｃｄｉと、光源により照らされる図形の鏡面反射光成分色Ｃｓｉとの和で表される。すなわち、
Ｃ＝Ｃａ＋Ｃｅ＋Σ(Ｃａｉ＋Ｃｄｉ＋Ｃｓｉ)
で求められる。ここで、Ｃは(Ｒ，Ｇ，Ｂ)の三成分からなり、ｉは光源番号を表す。Ｃａｉ，Ｃｄｉ，Ｃｓｉは、以下のように求められる。
Ｃａｉ＝Ｋａ×Ｌａｉ×Ｃｔｅｌ×Ｌａｔｔｉ×(−Ｌｄｉｒｉ・Ｌｉ)^Ｌｃｏｎｃ
Ｃｄｉ＝Ｋｄ×Ｌｄｉ×Ｃｔｅｌ×Ｌａｔｔｉ×(−Ｌｄｉｒｉ・Ｌｉ)^Ｌｃｏｎｃ×(Ｎ・Ｌｉ)
Ｃｓｉ＝Ｋｓ×Ｌｓｉ×Ｃｔｅｌ×Ｌａｔｔｉ×(−Ｌｄｉｒｉ・Ｌｉ)^Ｌｃｏｎｃ×(Ｖ・Ｒｉ)^Sｃｏｎｃ
ただし、(−Ｌｄｉｒｉ・Ｌｉ)，(Ｎ・Ｌｉ)，(Ｖ・Ｒｉ)は内積である。ここで、(Ｋａ，Ｋｄ，Ｋｓ)は、材質の反射係数、(Ｌａ，Ｌｄ，Ｌｓ)は、光源の色、Ｃｔｅｌは、テクスチャ色、Ｌａｔｔは、光源強度減衰率１１６０、Ｌｄｉｒは、光源ベクトル１１Ａ０、Ｌは光源方向ベクトル１１４０、Ｎは法線ベクトル１１３０、Ｖは、視点方向ベクトル１１９０、Ｒは、光源反射ベクトル１１５０、Ｌｃｏｎｃは、スポット光源強度指数、Sｃｏｎｃは、鏡面反射指数である。
【００４３】
図１５は、表示しようとする三角形の視点からの奥行きとその逆数との関係をｚ値および１／ｚ値をパラメータとするグラフ３２１０により示す図である。このグラフの横軸は、奥行きであるｚ値を表し、縦軸は、その逆数の１／ｚ値を表している。
【００４４】
図１６は、いくつかの１／ｚ値に対するｚ値を示す図である。ｚ値と１／ｚ値との対応表３２４０は、１／ｚ値(０.１から１.０まで)を等間隔に刻んだ場合のｚ値を示している。ｚ値数直線３２２０および１／ｚ値数直線３２３０は、ｚ値および１／ｚ値対応表３２４０を数直線表現したものである。
【００４５】
図１７は、ｚ値をデプスバッファ３２００に格納した場合と、１／ｚ値をデプスバッファ３２００に格納した場合との関係を示す図である。例えば、１ｍｍから１０6ｍｍすなわち１０００ｍまでのｚ値を解像度１ｍｍでデプスバッファ３２００に格納した場合のｚ値格納デプスバッファ３２５０について考える。この場合は、デプスバッファ３２００を最低１０6分割する必要があることは容易に分かる。ここで、１ｍ＋１ｍｍと１ｍ＋２ｍｍの差と、１００ｍ＋１ｍｍと１００ｍ＋２ｍｍの差では、１ｍｍの重要度が異なることは明らかである。すなわち視点に近い位置では、正確な奥行き値を必要とするが、視点から遠い位置では１ｍｍの差は重要ではなくなる。そこで、視点に近い付近の解像度を上げるためにデプスバッファ３２００に１／ｚ値を格納したものが、１／ｚ値格納デプスバッファ３２６０である。１／ｚ値をデプスバッファ３２００に格納すると視点に近い付近の解像度が上がるのは、図１５および図１６から明らかである。例えば、１／ｚ値をデプスバッファ３２００に格納する際の条件として、視点からの距離が１０3ｍｍすなわち１ｍ以内の奥行き値に関しては、解像度１ｍｍを保証するとすると、デプスバッファ３２００を１０3分割すれば十分である。この例では、１ｍｍから１０6ｍｍすなわち１０００ｍまでの奥行き値をデプスバッファに格納する際、単純にｚ値をデプスバッファに格納した場合と比べて、１／ｚ値を格納した場合の方がデプスバッファのサイズを１／１０００(＝１０3／１０6）に圧縮できることを示している。その結果、例えば、ｚ値を２４ｂｉｔ／ｐｉｘｅｌでデプスバッファ３２００に格納した場合と比べて、１／ｚ値をデプスバッファ３２００に格納すれば、１６ｂｉｔ／ｐｉｘｅｌで済むことになる。
【００４６】
これらのことを踏まえ、図形の例として三角形を採り、奥行き座標およびテクスチャ座標１１２０の正確な透視投影補正の処理について説明する。
【００４７】
まず、図形頂点情報入力部１０００は、透視投影補正計算部２１００内の面勾配要素係数計算部２３１０に、三角形頂点のｖｒｃ座標１１１０を送り、一方、テクスチャ座標補間係数計算部２３２２に、三角形の頂点に対応するテクスチャ座標１１２０を送る。
【００４８】
面勾配要素係数計算部２３１０は、与えられた三頂点分のｖｒｃ座標１１１０からなる行列の逆行列を求め、面勾配要素係数２３１０(１)とする。三角形１１００の各頂点をそれぞれｖ０、ｖ１、ｖ２とし、対応するｐｄｃ座標１１７０を(ｘ０,ｙ０,ｚ０)，(ｘ１,ｙ１,ｚ１)，(ｘ２,ｙ２,ｚ２)とし、ｒｚｃ座標１１８０を(ｘｒ０,ｙｒ０,ｚｒ０)，(ｘｒ１,ｙｒ１,ｚｒ１)，(ｘｒ２,ｙｒ２,ｚｒ２)とし、ｖｒｃ座標１１１０を(ｘｖ０,ｙｖ０,ｚｖ０)，(ｘｖ１,ｙｖ１,ｚｖ１)，(ｘｖ２,ｙｖ２,ｚｖ２)とすると、ｖｒｃ座標１１１０からなる行列Ｍは、数式１となる。面勾配要素係数２３１０(１)はＭの逆行列であるから、数式２となる。
【００４９】
【数１】
0003635359.tif 000002
【００５０】
【数２】
0003635359.tif 000003
面勾配要素係数２３１０(１)は、３次元空間で定義される三角形の面勾配を意味する係数であって、複数の幾何学的パラメータに共通に使用できる。さらに、面勾配要素係数２３１０(１)と、以下に算出手順を説明する補間係数および補間係数からなる補間計算式は、三角形内で共通に使用可能である。
【００５１】
奥行き座標補間係数計算部２３２１は、面勾配要素係数２３１０(１)を基に、奥行き座標補間係数２３２１(１)を算出し、テクスチャ座標補間係数計算部２３２２は、先ほど与えられた情報および面勾配要素係数２３１０(１)を基に、テクスチャ座標補間係数２３２２(１)を算出する。
【００５２】
具体的な算出方法の内、まず、奥行き座標補間係数２３２１(１)について述べる。視点と投影面との距離をｖｒｃ上で１とすると、透視投影が、数式３で表され、透視投影後座標は１／ｚｖに比例することが分かる。ここでは、ｒｅｃＺ＝ｎｅａｒ／(−ｚｖ)と定義する。ただし、ｎｅａｒは、視点と前クリップ面との距離である。したがって、数式４を満たすＡを求めれば、このＡが奥行き座標補間係数２３２１(１)となる。すなわち、数式５となる。
【００５３】
【数３】
0003635359.tif 000004
【００５４】
【数４】
0003635359.tif 000005
【００５５】
【数５】
0003635359.tif 000006
次に、テクスチャ座標補間係数２３２２(１)について述べる。テクスチャ座標は、透視投影の影響を正確に反映させるために、３次元空間での補正を行なう。数式６を満たすＢを求めれば、このＢが、テクスチャ座標補間係数２３２２(１)となる。すなわち、数式７となる。
【００５６】
【数６】
0003635359.tif 000007
【００５７】
【数７】
0003635359.tif 000008
画素アドレス計算部２４００により発生された透視投影補正すべき座標および先ほど求められた奥行き座標補間係数２３２１(１)から、補間計算式
ｒｅｃＺ＝ｒｅｃＺｘ×ｘｒ＋ｒｅｃＺｙ×ｙｒ＋ｒｅｃＺｃ２５２１(ｅ)
により、補正後の奥行き座標２５２０(１)が求められる。奥行きに関する実際の処理においては、奥行き座標そのものは用いず、奥行き座標の逆数値を取り扱っている。また、画素アドレス計算部２４００により発生させた透視投影補正すべき座標と先ほど求めたテクスチャ座標補間係数２３２２(１)と補正後の奥行き座標２５２０(１)とから、補間計算式
ｓ＝(Sｘ×ｘｒ＋Sｙ×ｙｒ＋Sｚ)×ｚｖ２５２２ｓ(ｈ)
により、テクスチャのｓ成分に関する補正後のテクスチャ座標２５２０(２)ｓが求められる。このように、幾何学的パラメータは、３次元空間で補間され、陰影付けに関して透視投影による効果を正確に表現できる。
【００５８】
なお、奥行き座標およびテクスチャ座標１１２０以外の複数の幾何学的パラメータに関しては、前記テクスチャ座標１１２０と同様の手順で処理すると、透視投影補正を実現できる。その構成は、図８に示した通りである。
【００５９】
さて、画素アドレス計算部２４００で発生させた透視投影補正すべき座標における複数の幾何学的パラメータの補正が済んだので、輝度計算部２５１０において、補正後幾何学的パラメータを基に輝度計算を行なう。輝度計算方法は、前述の通りである。
【００６０】
輝度計算部２５１０で計算された色は、表示制御部２６００に送られ、補正後の奥行き座標２５２０(１)は、デプス比較部２５３０に送られる。その際、デプスバッファ３２００の圧縮を考慮し、補間計算式
ｒｅｃＺ＝ｒｅｃＺｘ×ｘｒ＋ｒｅｃＺｙ×ｙｒ＋ｒｅｃＺｃ２５２１(ｅ)
により得られる奥行き座標の逆数値そのものを、デプス比較部２５３０に送る。デプスバッファ３２００に格納されている奥行き座標と補正後の奥行き座標２５２０(１)とを比べ、条件が成立した際には、補正後の奥行き座標２５２０(１)がデプスバッファ３２００に渡される。表示制御部２６００では、輝度計算部２５１０，デプス比較部２５３０，フレームバッファ３１００からの情報を基に、フレームバッファ３１００に色を書き込み(書き込まない場合もある)、表示部４０００に表示する。これら一連の処理を三角形内の全ての点について実行すると、一つの三角形に対する処理が完結する。
【００６１】
本実施例では、正確な透視投影補正を行なったテクスチャマッピング付きフォンシェーディングについて述べたが、幾何学的パラメータとして三角形の頂点における色を採用すると、正確な透視投影補正を行なったグーロシェーディングも可能である。
【００６２】
幾何学的パラメータとして、奥行き座標とテクスチャ座標１１２０と光源強度減衰率１１６０と正規モデル座標１１Ｂ０との四種類を挙げたが、３次元空間内の平面上で線形性が保たれる幾何学的パラメータであれば、どのようなものであっても、上記と同様の透視投影補正を実行できる。
【００６３】
本実施例では、デプスバッファ３２００に奥行き座標の逆数である１／ｚ値すなわちｒｅｃＺを格納したが、単に奥行き座標であるｚ値を格納してもよい。また、視点に近い付近の奥行き値の解像度が高くなるような非線形な奥行き値に代わる値を格納することも可能である。
【００６４】
【発明の効果】
本発明においては、補間の対象となる複数の幾何学的パラメータに対して共通に使用可能な３次元空間で定義される三角形の面勾配を意味する係数を計算する面勾配要素係数計算部と、面勾配要素係数計算部で得られた面勾配要素係数より補間係数を計算する補間係数計算部と、補間係数計算部で得られた補間係数を用いて正確な透視投影補正を行なう補正部とを備えているので、除算回数の増加を避けながら、透視投影補正を面毎に正確かつ高速処理できる透視投影計算装置が得られる。
【図面の簡単な説明】
【図１】本発明による透視投影計算装置の一実施例を採用した画像処理システムの構成の一例を示すブロック図である。
【図２】透視投影補正計算部の構成の一例を示すブロック図である。
【図３】透視投影補正計算部の構成要素である面勾配要素係数計算部の構成の一例を示すブロック図である。
【図４】補間係数計算部の一構成要素である奥行き座標補間係数計算部の構成の一例を示すブロック図である。
【図５】補間係数計算部の一構成要素であるテクスチャ座標補間係数計算部の構成の一例を示すブロック図である。
【図６】補正部の一構成要素である奥行き座標補正部の構成の一例を示すブロック図である。
【図７】補正部の一構成要素でありテクスチャ座標補正部のｓ成分であるテクスチャ座標ｓ成分補正部の構成の一例を示すブロック図である。
【図８】図２の透視投影補正計算部の構成を拡張した一例を示すブロック図である。
【図９】画素アドレス計算部と補正部とともに図形発生部を構成している輝度計算部の構成の一例を示すブロック図である。
【図１０】表示部に表示された三角形を示す図である。
【図１１】幾何学的パラメータと表示対象三角形との関係を示す図である。
【図１２】三種類の座標系とｖｒｃ１１１０ｃ／ｒｚｃ１１８０ｃ／ｐｄｃ１１７０ｃとの相互関係を示す図である。
【図１３】補正部内で処理される補間計算式の代表的なものとして、奥行き座標およびテクスチャ座標のｓ成分に関する補間計算式を示す図である。
【図１４】輝度計算部で処理される輝度計算式を示す図である。
【図１５】表示しようとする三角形の視点からの奥行きとその逆数との関係をｚ値および１／ｚ値をパラメータとするグラフにより示す図である。
【図１６】いくつかの１／ｚ値に対するｚ値を示す図である。
【図１７】ｚ値をデプスバッファに格納した場合と、１／ｚ値をデプスバッファに格納した場合との関係を示す図である。
【符号の説明】
１０００  図形頂点情報入力部
１１００  ｐｄｃ上図形(三角形)
１１１０  ｖｒｃ座標
１１１０ｃ  視点座標系
１１１１  第一頂点ｖｒｃ座標
１１１２  第二頂点ｖｒｃ座標
１１１３  第三頂点ｖｒｃ座標
１１２０  テクスチャ座標
１１２１  第一頂点テクスチャ座標
１１２２  第二頂点テクスチャ座標
１１２３  第三頂点テクスチャ座標
１１３０  法線ベクトル
１１４０  光源方向ベクトル
１１５０  光源反射ベクトル
１１６０  光源強度減衰率
１１７０  ｐｄｃ座標
１１７０ｃ  物理デバイス座標系
１１７１  第一頂点ｐｄｃ座標
１１７２  第二頂点ｐｄｃ座標
１１７３  第三頂点ｐｄｃ座標
１１８０  ｒｚｃ座標
１１８０ｃ  ｒｅｃＺ座標系
１１８０ｚ  ｒｚｃ座標ｚ成分
１１９０  視点方向ベクトル
１１Ａ０  光源ベクトル
１１Ｂ０  正規モデル座標
２０００  画像処理装置
２１００  透視投影補正計算部
２２００  図形発生部
２３００  CPU(中央処理装置)
２３１０  面勾配要素係数計算部
２３１０(ａ)  頂点座標行列構成器
２３１０(ｂ)  逆行列計算器
２３１０(１)  面勾配要素係数
２３２０  補間係数計算部
２３２１  奥行き座標補間係数計算部
２３２１(ａ)  視点と前クリップ面との距離から構成される行列構成器
２３２１(ｂ)  符号変換行列
２３２１(ｃ)  符号変換前奥行き座標補間係数計算用乗算器
２３２１(ｄ)  符号変換用乗算器
２３２１(１)  奥行き座標補間係数
２３２２  テクスチャ座標補間係数計算部
２３２２(ａ)  テクスチャ座標行列構成器
２３２２(ｂ)  テクスチャ座標補間係数計算用乗算器
２３２２(１)  テクスチャ座標補間係数
２３２２(１)ｓ  テクスチャ座標補間係数のｓ成分
２３２６  光源強度減衰率補間係数計算部
２３２７  正規モデル座標補間係数計算部
２４００  画素アドレス計算部
２５００  グラフィックスプロセッサ
２５１０  輝度計算部
２５１０(ａ)  テクスチャ色取得部
２５１０(ｂ)  光源による減衰無し環境／拡散／鏡面成分輝度計算部
２５１０(ｃ)  スポット角減衰率計算器
２５１０(ｄ)  光源入射角照度計算器
２５１０(ｅ)  鏡面反射減衰率計算器
２５１０(ｆ)  環境成分輝度計算用乗算器
２５１０(ｇ)  拡散成分輝度計算用乗算器
２５１０(ｈ)  鏡面成分輝度計算用乗算器
２５１０(ｉ)  自然界環境成分と放射成分の輝度計算器
２５１０(ｊ)  全光源分の環境成分計算器
２５１０(ｋ)  全光源分の拡散成分計算器
２５１０(ｌ)  全光源分の鏡面成分計算器
２５１０(ｍ)  自然界環境成分，放射成分と環境成分の輝度計算用加算器
２５１０(ｎ)  拡散成分と鏡面成分の輝度計算用加算器
２５１０(ｏ)  輝度合成用加算器
２５１０(１)  画素の輝度
２５２０  補正部
２５２０(１)  補正後奥行き座標
２５２０(２)  補正後テクスチャ座標
２５２０(２)ｓ  補正後テクスチャ座標のｓ成分
２５２０(６)  補正後光源強度減衰率
２５２０(７)  光源ベクトル
２５２０(８)  補正後正規モデル座標
２５２１  奥行き座標補正部
２５２１(ａ)  奥行き座標補間計算式ｘ成分計算用乗算器
２５２１(ｂ)  奥行き座標補間計算式ｙ成分計算用乗算器
２５２１(ｃ)  奥行き座標補間計算式のｘ成分とコンスタント成分の計算用加算器
２５２１(ｄ)  補正後奥行き座標計算用加算器
２５２１(ｅ)  奥行き座標補間計算式
２５２２  テクスチャ座標補正部
２５２２ｓ  テクスチャ座標ｓ成分補正部
２５２２ｓ(ａ)  透視投影前ｘ座標計算用乗算器
２５２２ｓ(ｂ)  テクスチャ座標ｓ成分補間計算式ｘ成分計算用乗算器
２５２２ｓ(ｃ)  透視投影前ｙ座標計算用乗算器
２５２２ｓ(ｄ)  テクスチャ座標ｓ成分補間計算式ｚ成分計算用乗算器
２５２２ｓ(ｅ)  テクスチャ座標ｓ成分補間計算式ｙ成分計算用乗算器
２５２２ｓ(ｆ)  テクスチャ座標ｓ成分補間計算式ｘ成分とｚ成分計算用加算器２５２２ｓ(ｇ)  補正後テクスチャｓ成分座標計算用加算器
２５２２ｓ(ｈ)  テクスチャｓ成分座標補間計算式
２５２６  光源強度減衰率補正部
２５２７  正規モデル座標補正部
２５３０  デプス比較部
２６００  表示制御部
３０００  メモリモジュール
３１００  フレームバッファ
３２００  デプスバッファ
３２１０  ｚ値と１／ｚ値とのグラフ
３２２０  ｚ値数直線
３２３０  １／ｚ値数直線
３２４０  ｚ値と１／ｚ値との対応表
３２５０  ｚ値格納デプスバッファ
３２６０  １／ｚ値格納デプスバッファ
４０００  表示部
【図１】
0003635359.tif 000009
【図２】
0003635359.tif 000010
【図３】
0003635359.tif 000011
【図４】
0003635359.tif 000012
【図５】
0003635359.tif 000013
【図６】
0003635359.tif 000014
【図７】
0003635359.tif 000015
【図８】
0003635359.tif 000016
【図９】
0003635359.tif 000017
【図１０】
0003635359.tif 000018
【図１１】
0003635359.tif 000019
【図１２】
0003635359.tif 000020
【図１３】
0003635359.tif 000021
【図１４】
0003635359.tif 000022
【図１５】
0003635359.tif 000023
【図１６】
0003635359.tif 000024
【図１７】
0003635359.tif 000025