(57)【特許請求の範囲】
【請求項１】
仮想空間に設定した３次元物体を所定の投影面上に透視変換して擬似３次元画像を生成する画像生成装置であって、該仮想空間における半透明の物体を描画する場合、
前記半透明の物体の頂点における法線ベクトルを求める法線ベクトル導出部と、
視点から前記半透明の物体の頂点を見た場合の視線ベクトルが設定された視線ベクトル部と、
前記半透明の物体の不透明度を表すパラメータであって前記視線ベクトルと前記法線ベクトルとの間の角度に応じて変化し且つ該角度が０゜の場合に複数の値を取り得るパラメータを格納した変換テーブルと、
前記法線ベクトル導出部により求められた法線ベクトルと前記視線ベクトル部から入力した視線ベクトルとに対応する前記変換テーブルに格納されたパラメータに基づき、前記半透明の物体の不透明の程度を表す不透明度を導出する不透明度導出部と
を備え、
前記不透明度を用いて前記半透明の物体の画像の生成を行なうことを特徴とする画像生成装置。
【請求項２】
請求項１記載の画像生成装置において、前記変換テーブルは、半透明の物体の輪郭の強調に用い得るパラメータであって、前記視線ベクトルと前記法線ベクトルとの間の角度が０゜で最小となり±９０゜で最大となるパラメータを含むことを特徴とする画像生成装置。
【請求項３】
仮想空間に設定した３次元物体を所定の投影面上に透視変換して擬似３次元画像を生成する画像生成方法であって、該仮想空間における半透明の物体を描画する場合、視点から該半透明の物体の頂点を見た場合の視線ベクトルが設定された視線ベクトル部と、該半透明の物体の不透明度を表すパラメータであって該視線ベクトルと該半透明の物体の頂点における法線ベクトルとの間の角度に応じて変化し且つ該角度が０゜の場合に複数の値を取り得るパラメータを格納した変換テーブルとを用いるものであり、  前記半透明の物体の頂点における法線ベクトルを求める法線ベクトル導出ステップと、
前記法線ベクトル導出ステップにより求められた法線ベクトルと前記視線ベクトル部から入力した視線ベクトルとに対応する前記変換テーブルに格納されたパラメータに基づき、前記半透明の物体の不透明の程度を表す不透明度を求める不透明度導出ステップと
を備え、
前記不透明度を用いて半透明の物体の画像の生成を行なうことを特徴とする画像生成方法。
【請求項４】
請求項３記載の画像生成方法において、前記変換テーブルは、半透明の物体の輪郭の強調に用い得るパラメータであって、前記視線ベクトルと前記法線ベクトルとの間の角度が０゜で最小となり±９０゜で最大となるパラメータを含むことを特徴とする画像描画方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像生成装置および方法に関し、特にゲーム装置等の３次元画像生成装置において仮想空間における半透明の物体を描画する画像生成装置および方法に関する。
【０００２】
【従来の技術】
３次元画像を生成する例えばゲーム装置等の従来の３次元画像生成装置において、ゲーム等の仮想的な３次元空間（仮想空間）に存在する、あるポリゴンまたは背景等のオブジェクト（３次元物体）に対し、視点から見て手前に他の半透明のポリゴンを描画しようとする場合、この半透明のポリゴンを通して、奥にあるポリゴンまたは背景が透けて見えるように描画（半透明描画）を行なっていた。半透明のポリゴンを描画する場合には、ポリゴンのピクセルに設定されている半透明の状態、言い換えれば不透明さの程度（以下、「不透明度」という）と、ポリゴンのピクセルの色データと、背景のピクセル毎の色データとを用いて所定の半透明演算を行ない、描画を行なっていた。
【０００３】
【発明が解決しようとする課題】
しかし、上述された従来の画像生成装置における半透明描画処理においては、予め設定されている不透明度を用いて描画をしていた。視点からの向きによって不透明度が異なるようなポリゴン、例えばシャボン玉、ガラス壜または煙等に対する簡易かつ効果的な半透明描画は行なわれていないという問題があった。
そこで、本発明の目的は、上記問題を解決するためになされたものであり、視点からの向きによって不透明度が異なるようなポリゴンの半透明描画を簡易かつ効果的に行なうことのできる画像生成装置および方法を提供することにある。
【０００４】
【課題を解決するための手段】
請求項１記載の発明の画像生成装置は、仮想空間に設定した３次元物体を所定の投影面上に透視変換して擬似３次元画像を生成する画像生成装置であって、該仮想空間における半透明の物体を描画する場合、前記半透明の物体の頂点における法線ベクトルを求める法線ベクトル導出部と、視点から前記半透明の物体の頂点を見た場合の視線ベクトルが設定された視線ベクトル部と、前記半透明の物体の不透明度を表すパラメータであって前記視線ベクトルと前記法線ベクトルとの間の角度に応じて変化し且つ該角度が０゜の場合に複数の値を取り得るパラメータを格納した変換テーブルと、前記法線ベクトル導出部により求められた法線ベクトルと前記視線ベクトル部から入力した視線ベクトルとに対応する前記変換テーブルに格納されたパラメータに基づき、前記半透明の物体の不透明の程度を表す不透明度を導出する不透明度導出部とを備え、前記不透明度を用いて前記半透明の物体の画像の生成を行なうものである。
【０００５】
請求項２記載の発明の画像生成装置は、請求項１において、前記変換テーブルは、半透明の物体の輪郭の強調に用い得るパラメータであって、前記視線ベクトルと前記法線ベクトルとの間の角度が０゜で最小となり±９０゜で最大となるパラメータを含むことができるものである。
【０００９】
請求項３記載の発明の画像生成方法は、仮想空間に設定した３次元物体を所定の投影面上に透視変換して擬似３次元画像を生成する画像生成方法であって、該仮想空間における半透明の物体を描画する場合、視点から該半透明の物体の頂点を見た場合の視線ベクトルが設定された視線ベクトル部と、該半透明の物体の不透明度を表すパラメータであって該視線ベクトルと該半透明の物体の頂点における法線ベクトルとの間の角度に応じて変化し且つ該角度が０゜の場合に複数の値を取り得るパラメータを格納した変換テーブルとを用いるものであり、  前記半透明の物体の頂点における法線ベクトルを求める法線ベクトル導出ステップと、前記法線ベクトル導出ステップにより求められた法線ベクトルと前記視線ベクトル部から入力した視線ベクトルとに対応する前記変換テーブルに格納されたパラメータに基づき、前記半透明の物体の不透明の程度を表す不透明度を求める不透明度導出ステップとを備え、前記不透明度を用いて半透明の物体の画像の生成を行なうものである。
【００１０】
請求項４記載の発明の画像生成方法は、請求項３において、前記変換テーブルは、半透明の物体の輪郭の強調に用い得るパラメータであって、前記視線ベクトルと前記法線ベクトルとの間の角度が０゜で最小となり±９０゜で最大となるパラメータを含むことができるものである。
【００１１】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００１２】
図１は、本発明の実施の形態の画像生成装置および方法の概念を示す。図１において、符号１０は視点、１２はゲーム装置等の３次元画像生成装置における仮想空間上のポリゴンにより形成される３次元物体、１６は３次元物体１２が２次元画像へ透視変換されて擬似３次元画像が表示されるスクリーン等の２次元表示部、１４はスクリーン等の２次元表示部１６上に投影された擬似３次元画像である。
【００１３】
図２は、本発明の実施の形態の画像生成装置における半透明描画の際の視点とポリゴンの各部分との関係を示す。図２で図１と同じ符号を付した部分は同じものを示すため説明は省略する。図２において、符号２０は仮想空間に設定された半透明描画を行なおうとするポリゴン、２１はポリゴン２０上の頂点等の点Ｐ１における法線ベクトルＮ１、２２はポリゴン２０上の頂点等の点Ｐ２における法線ベクトルＮ２、２３はポリゴン２０上の頂点等の点Ｐ３における法線ベクトルＮ３、２４はポリゴン２０上の頂点等の点Ｐ４における法線ベクトルＮ４、２５はポリゴン２０上の頂点等の点Ｐ５における法線ベクトルＮ５、Ｎ１Ｚは法線ベクトルＮ１（２１）のＺ軸方向成分、Ｎ２Ｚは法線ベクトルＮ２（２２）のＺ軸方向成分、Ｎ４Ｚは法線ベクトルＮ４（２４）のＺ軸方向成分、Ｎ５Ｚは法線ベクトルＮ５（２５）のＺ軸方向成分である。視線ベクトル（不図示）のＺ軸方向成分と法線ベクトルＮ１（２１）等のＺ軸方向成分Ｚ１等とがなす角度を近似的に０°とみなし、ポリゴン２０の各頂点Ｐ１等における法線ベクトルＮ１（２１）等のＺ軸方向の成分Ｎ１Ｚ等と各頂点Ｐ１等における不透明度とを対応付けておくことにより、各頂点Ｐ１等間の点における不透明度を補間により求めることができる。すなわち、法線ベクトルＮ１（２１）等のＺ軸方向の成分Ｎ１Ｚ等を不透明度の処理に使用することができる。
【００１４】
３次元画像処理においてよく知られているグーロー・シェーディング（Gouraud Shading）技法は、擬似的な曲面を表現するシェーディング技法の一つであり、ポリゴンに例えばＺ軸方向に平行な照明光を照射して、隣接するポリゴンが共有する頂点の法線ベクトルを周囲のポリゴンの法線ベクトルの平均値から求め、そのベクトルを用いて各頂点の輝度を求め、さらにポリゴン内部の各点における輝度をこれら頂点輝度の補間により求めていく技法である。グーロー・シェーディングは計算量が多いため、通常、その処理はハードウェアにより実行されている。したがって、不透明度の処理に必要なＺ軸方向の成分Ｎ１Ｚ等を計算する代わりに、グーロー・シェーディングの処理においてハードウェアにより計算されたＮ１Ｚ等を用いることにより、不透明度の処理のための計算量を低減させることができる。この結果、視点の移動に伴いリアルタイムに不透明度を更新して半透明描画の処理を実行しても、従来より極めて短い時間で処理することができる。
【００１５】
図３は、本発明の実施の形態の画像生成装置の半透明描画処理における視点とポリゴンの各部分との関係を示す。図３で図１および図２と同じ符号を付した部分は同じ意味を有するため説明は省略する。図３において、符号３１は視点１０からポリゴン２０上の点Ｐ１を見た場合の視線ベクトル、θ１は視線ベクトル３１と法線ベクトルＮ１（２１）とがなす角度、３２は視点１０からポリゴン２０上の点Ｐ２を見た場合のを見た場合の視線ベクトル、θ２は視線ベクトル３２と法線ベクトルＮ２（２２）とがなす角度、３３は視点１０からポリゴン２０上の点Ｐ３を見た場合のを見た場合の視線ベクトル、θ３は視線ベクトル３３と法線ベクトルＮ３（２３）とがなす角度（０度であるため不図示）、３４は視点１０からポリゴン２０上の点Ｐ４を見た場合のを見た場合の視線ベクトル、θ４は視線ベクトル３４と法線ベクトルＮ４（２４）とがなす角度、３５は視点１０からポリゴン２０上の点Ｐ５を見た場合のを見た場合の視線ベクトル、θ５は視線ベクトル３５と法線ベクトルＮ５（２５）とがなす角度である。
【００１６】
図３に示されるように、視点１０からポリゴン２０の各点Ｐ１等を見た場合における視線ベクトル３１等と各点Ｐ１等における法線ベクトルＮ１（２１）等とのなす角度θ１等は、各点Ｐ１等により異なる。したがって、同じポリゴン２０上であっても半透明描画の処理は与えられた視点１０とポリゴン上の各点Ｐ１等との組合せにより異なってくる。そこで、ポリゴン２０の各頂点Ｐ１等における法線ベクトルＮ１（２１）等と視線ベクトル３１等とのなす角度θ１等に各頂点Ｐ１等における不透明度を対応付けておくことにより、各頂点Ｐ１等間の点における不透明度を補間により求めることができる。すなわち、法線ベクトルＮ１（２１）等と視線ベクトル３１等とのなす角度θ１等を不透明度の処理に使用することができる。
【００１７】
３次元画像処理においてよく知られている他の技法として、フォン・シェーディング（Phong Shading）技法がある。フォン・シェーディング技法は、隣接するポリゴンが共有する頂点の法線ベクトルを周囲のポリゴンの法線ベクトルの平均値から求め、そのベクトルを用いてポリゴンの稜線上の法線ベクトルを補間により求め、さらにポリゴン内部の各点の法線ベクトルを同様にして求め、生成されたすべての法線ベクトルについて輝度計算を行なう技法である。フォン・シェーディングは計算量が多いため、通常、その処理はハードウェアにより実行されている。したがって、不透明度の処理に必要なθ１等を計算する代わりにフォン・シェーディングの処理においてハードウェアにより計算されたθ１等を用いることにより、不透明度の処理のための計算量を低減させることができる。この結果、視点の移動に伴いリアルタイムに不透明度を更新して半透明描画の処理を実行しても、従来より極めて短い時間で処理することができる。
【００１８】
図４は、本発明の実施の形態における画像生成装置の半透明描画処理が適用される一例を示す。図４において、２種類の異なるポリゴンにつき、視点１０とポリゴン上の各部分との関係を説明する。図４（Ａ）、（Ｂ）で図１ないし図３と同じ符号を付した部分は同じ部分を示すため説明は省略する。図４（Ａ）において、符号４０は木を現すポリゴン（カーブＡ１）、４１はポリゴン４０の周辺部であって葉等に隙間が多い部分、４２はポリゴン４０の中央部であって葉等に隙間がほとんどない部分である。図４（Ａ）に示されるように、視点１０から視線ベクトル３３等によりポリゴン４０を見ると、中央部４２、すなわち視線ベクトル３３とポリゴン４０の中央部４２から出た法線ベクトル２３（不図示）とのなす角度が０度である部分は、葉等に隙間がほとんどないため背景等が透けて見える箇所は少ない。一方、周辺部４１、すなわち視線ベクトル３５とポリゴン４０の周辺部４１から出た法線ベクトル２５とのなす角度がθ５である部分は、中央部４２と比較して葉等に隙間がある部分が多いため背景等が透けてみえる箇所が多い。図４（Ａ）ではハッチングの濃淡により上述の隙間の少なさまたは多さを表現している。この濃淡で示されるような情報が、本発明の実施の形態における画像生成装置において、半透明描画を行なうための情報としてピクセル毎に記録されている。
【００１９】
図４（Ｂ）において、符号４５は壜を現すポリゴン（カーブＢ１）、４６はポリゴン４５の周辺部であって不透明に近い部分、４７はポリゴン４５の中央部であって完全透明に近い部分である。図４（Ｂ）に示されるように、視点１０から視線ベクトル３３によりポリゴン４５を見ると、中央部４７、すなわち視線ベクトル３３とポリゴン４５の中央部４７から出た法線ベクトル２３（不図示）とのなす角度が０度である部分は、完全透明に近いため背景等が透けて見える箇所は多い。一方、周辺部４６、すなわち視線ベクトル３５とポリゴン４５の周辺部４６から出た法線ベクトル２５とのなす角度がθ５である部分は、中央部４７と比較して不透明に近い部分が多いため背景等が透けてみえる箇所は少ない。図４（Ｂ）では図４（Ａ）と同様にハッチングの濃淡により上述の透明状態を表現している。この濃淡で示されるような情報が、本発明の実施の形態における画像生成装置において、半透明描画を行なうための情報としてピクセル毎に記録されている。
【００２０】
図５は、図４（Ａ）および図４（Ｂ）に示されたポリゴン４０等について、視線ベクトル３３等とポリゴン４０等の法線ベクトル２５等とのなす角度θに関するカーブＡ１等のオパシティを表すグラフである。図５（Ａ）、（Ｂ）で図４と同じ符号を付した部分は同じ部分を示すため説明は省略する。図５（Ａ）は、図４（Ａ）に示された木等のポリゴン４０（以下、「カーブＡ１（４０）」と参照することもある）等について、視線ベクトル３３等とポリゴン４０の法線ベクトル２３等とのなす角度θに関するカーブＡ１（４０）の不透明度（オパシティ）をグラフで表す。ここでオパシティとは、不透明度を表す０から１の間の値をとるパラメータであって、完全透明の場合はオパシティは０、完全不透明の場合はオパシティは１であり、オパシティを用いて半透明描画が行なわれる。図５に示されるように、カーブＡ１（４０）はθ＝０°（中央部４２）でオパシティが１と最も大きくなっており、θ＝±９０°（周辺部４１）でオパシティが０と最も小さくなっていることが示されている。他の例のカーブＡ２（４３）は、θ＝０°で最もオパシティが大きくなっているが１ではなく、θ＝±９０°で最もオパシティが小さくなっているが０とはならないことが示されている。上述のように、θ＝０°で最もオパシティが大きくなり、θ＝±９０°で最もオパシティが小さくなるパターンには木の他に雲、煙等種々の例がある。
【００２１】
煙の場合は、燃焼している中央付近を濃く表現し、拡散して消えていく部分を薄く表現するというように、煙全体のオパシティを決めることができる。さらに、複数の煙がある場合、例えば燃え盛っている煙と消えかかっている煙とがある場合に、いずれの煙も同じカーブＡ１（４０）等を用いた上で、さらに、燃え盛っている煙は全体として濃く表現し、消えかかっている煙は全体として薄く表現することも同時に行なうことができる。
【００２２】
図５（Ｂ）は、図４（Ｂ）に示された壜等のポリゴン４５（以下、「カーブＢ１（４５）」と参照することもある）等について、視線ベクトル３３等とポリゴン４５の法線ベクトル２３等とのなす角度θに関するカーブＢ４５の不透明度（オパシティ）をグラフで表す。図５（Ａ）で示されるポリゴンの場合と異なり、カーブＢ１（４５）はθ＝０°（中央部４７）でオパシティが０ではないが最も小さくなっており、θ＝±９０°（周辺部４６）でオパシティが１ではないが最も大きくなっていることが示されている。他の例のカーブＢ２（４８）は、例えばシャボン玉のようにθ＝０°の近傍ではほとんど透明であるためオパシティが０と最も小さくなっており、θ＝±９０°ではほとんど不透明であるためオパシティが１と最も大きくなっていることが示されている。上述のように、θ＝０°で最もオパシティが小さくなり、θ＝±９０°で最もオパシティが大きくなるパターンには種々の例がある。
【００２３】
上述の角度θに対するオパシティの値は、後述されるように変換テーブル６５に格納されているが、中央部４２等に対して左右が対象となるポリゴンの場合にはθ＝-９０°からθ＝＋９０°までのすべてのオパシティを格納しないで、θ＝０°からθ＝＋９０°またはθ＝−９０°までの片側のオパシティのみを格納しておくことができる。
【００２４】
図６は、本発明の実施の形態の画像生成装置におけるオパシティ演算のための回路を示す。図６において、符号７０はポリゴン・データ、７１はポリゴン・データ７０の内のポリゴン形状データ、７２はポリゴン・データ７０の内の色データ、７７はポリゴン・データ７０の内の全体のオパシティ・データ、６１、６２および６３はグーロー・シェーディング等においてハードウェアにより処理された結果得られる法線ベクトルＮ１等のＸ成分（Ｎｘ）、Ｙ成分（Ｎｙ）およびＺ成分（Ｎｚ）を各々セットされるＸ成分（Ｎｘ）部、Ｙ成分（Ｎｙ）部およびＺ成分（Ｎｚ）部、６０はＸ成分（Ｎｘ）部、Ｙ成分（Ｂｙ）部およびＺ成分（Ｎｚ）部を有する法線ベクトル部、６７は視線ベクトルが設定された視線ベクトル部、６４はＺ成分（Ｎｚ）部６３から法線ベクトルＮ１等の法線データ（Ｚ成分Ｎｚ）６３と視線ベクトル部６７から得られる視線ベクトルとを入力して、視点による不透明度７４を計算する不透明度導出部、６６は色データ７２、背景の色データ７５、不透明度導出部６４により計算された不透明度７４およびその他の不透明度７７を入力して、半透明処理を行ない描画データ７６を出力する半透明処理部である。その他の不透明度７７には、上述の図５（Ａ）について説明された煙全体のオパシティ等があげられる。不透明度導出部６４には、図５（Ａ）または（Ｂ）等で示されたカーブＡ１（４０）等に対応するθに対するオパシティの値が変換テーブル６５として格納されており、この変換テーブル６５に基づいてオパシティを得ることができる。
【００２５】
変換テーブル６５には複数のバンク（不図示）があり、このバンクに各々異なるカーブＡ１（４０）等を格納しておくことができる。例えば、ガラスの器、シャボン玉のように物体の輪郭（周辺部）を強調したい場合はカーブＢ１（４５）またはカーブＢ２（４６）のようなカーブを用いることができ、例えば、樹木、煙または炎のように物体の輪郭（周辺部）を不明瞭にしたい場合はカーブＡ１（４０）またはカーブＡ２（４１）のようなカーブを用いることができる。ホスト・コンピュータ（不図示）から変換テーブル６５中のバンクを指定することにより、異なるカーブを有する異なるポリゴンを指定することができる。カーブＡ１（４０）等のデータは、図５（Ａ）または（Ｂ）等で示されるカーブの性質上、θが正または負側のデータのみとすることもできる。この結果、１つのカーブＡ１（４０）等に割当てるバンクの容量を半分にすることができ、さらに多くのカーブに対するデータを格納することができる。
【００２６】
【発明の効果】
以上説明したように、本発明の画像生成装置および方法によれば、視点からの向きによって不透明度が異なるようなポリゴンに対して、法線を利用してオパシティを計算することにより、視点が変更した場合にリアルタイムにオパシティを計算し、かつオパシティの更新に多くの時間を要しない画像生成装置および方法を提供することができる。
さらに本発明の画像生成装置および方法によれば、複数の不透明度を物体毎に設定することができるため、視点からの向きによって不透明度が異なるポリゴンを、より簡易かつ効果的に表現することができる画像生成装置および方法を提供することができる。
【図面の簡単な説明】
【図１】  本発明の実施の形態の画像生成装置および方法の概念を示す図である。
【図２】  本発明の実施の形態の画像生成装置における半透明描画の際の視点とポリゴンの各部分との関係を示す図である。
【図３】  本発明の実施の形態の画像生成装置の半透明描画処理における視点とポリゴンの各部分との関係を示す図である。
【図４】  本発明の実施の形態における画像生成装置の半透明描画処理が適用される一例を示す図である。
【図５】  図４に示されたポリゴンについて、視線ベクトルとポリゴンの法線ベクトルとのなす角度θに関するカーブのオパシティを表すグラフである。
【図６】  本発明の実施の形態の画像生成装置におけるオパシティ演算のための回路を示す図である。
【符号の説明】
１０  視点、  １２  仮想空間上の３次元物体、  １４  投影された擬似３次元画像、  １６  スクリーン等の２次元表示部、  ２０  ポリゴン、  ２１、２２、２３、２４、２５  法線ベクトル、  ３１、３２、３３、３４、３５  視線ベクトル、  ４０  木（カーブＡ１）、  ４１、４６  周辺部、  ４２、４７  中央部、  ４３  カーブＡ２、  ４５  壜（カーブＢ）、  ４８  カーブＢ２、６０  法線ベクトル部、  ６１  法線ベクトルのＸ成分（Ｎｘ）部、  ６２  法線ベクトルのＹ成分（Ｎｙ）部、  ６３  法線ベクトルのＺ成分（Ｎｚ）部、６４  不透明度導出部、  ６５  変換テーブル、  ６６  半透明処理部、  ７０  ポリゴン・データ、  ７１  ポリゴン形状データ、  ７３  法線データ（Ｚ成分Ｎｚ）、  ７４  不透明度、  ７５  背景の色データ、  ７６  描画データ、  ７７  その他の不透明度。
【図１】
0004425381.tif 000002
【図２】
0004425381.tif 000003
【図３】
0004425381.tif 000004
【図４】
0004425381.tif 000005
【図５】
0004425381.tif 000006
【図６】
0004425381.tif 000007