(57)【特許請求の範囲】
【請求項１】
画像中に陰影を生成する、コンピュータで自動的に実施する方法であって、
ピクセルの配列を有する深さマップを計算する段階であって、前記深さマップのピクセルは、光源から、前記ピクセルを通して見える、最も近い障害物の一部までの深さを示す深さ値に対応する値と関連付けられている段階と、
前記画像のピクセルを通して見える点を、光空間に投影する段階であって、前記投影の結果が前記深さマップのピクセルである段階と、
前記見える点と前記光源との間の距離を計算する段階と、
前記深さマップの前記ピクセルに関連する深さ値を読み出す段階と、を有し、
前記画像の前記ピクセルについて、所定のベースバイアスと、前記見える点がある表面の法線及び前記見える点における入射光の方向の関係との関数として、適応的バイアスを計算する段階と、
前記画像中の前記点について、前記見える点と前記光源との間の距離を、対応する深さマップ値と前記適応的バイアスとの和と比較する段階と、
前記比較に応じて、前記点を通して見える点を、光が当たっている、または影になっているとラベリングする段階とをさらに有することを特徴とする、方法。
【請求項２】
前記表面法線と前記入射光の方向との点乗積で前記所定のベースバイアスを除算することにより、前記適応的バイアスを計算することを特徴とする、
請求項１に記載の方法。
【請求項３】
前記適応的バイアスは最大値を限度とする、
請求項１または２に記載の方法。
【請求項４】
請求項１ないし３いずれか一項に記載の方法を実行するコード命令を実行する手段を有するグラフィックス処理ユニット。
【請求項５】
コンピュータで実行されたとき、請求項１ないし３いずれか一項に記載の方法のすべての段階を実行するコンピュータ実行可能命令を格納したコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像における陰影生成方法に関する。
【背景技術】
【０００２】
グラフィックスのレンダリングにおいては、リアルタイムで現実感のある画像を生成することが重要である。完全な視覚リアリズムを実現する上での問題点は、基本的に、現実世界の視覚的効果を高速かつ正確に表すのが複雑なことである。シーンには、いろいろなテクスチャ、カラーグラデーション、反射、半透明、そしてほとんどの場合、陰影が含まれている。陰影により、２次元の画像に３次元的な外観を与えられるので、画像の現実感が増す。
陰影の生成は、例えばゲーム環境では非常に重要であるが、それはゲームユーザの操作に応じたシーンの動きに応じて、リアルタイムで陰影を生成しなければならないからである。
【０００３】
従来から、シーン中のオブジェクトがどのように陰影を投影するか、およびレンダリングした画像においてその陰影をいかに表現するか決定する方法はたくさんある。
【０００４】
一般的に用いられるシャドウボリューム法という陰影方法が、非特許文献１に記載されている。
【０００５】
この文献では、陰影を投影するオブジェクトのシルエットを形成して陰影を決定する。この方法によりうまく陰影を生成できるが、単純なシーンにしか適用できず、計算量が大きくなってしまう。
【０００６】
リアルタイムの陰影生成におけるもう少し一般的な方法が、非特許文献２に記載されている。
【０００７】
この方法は効率的かつ実装し易いが、陰影マップの解像度が有限なため、サンプリングしなければならないという欠点がある。すなわち、ほとんど常に、１つのシャドウマップのテクセル（texel）が最終的な画像の複数のピクセルで使われるため、エイリアシングアーティファクトが生じる。最もよく知られたアーティファクトは、最終画像における陰影ブロックの出現である。
【０００８】
このアーティファクトは、一般的に、非特許文献３に開示された、複数の陰影マップを用いて点に集まる光のパーセンテージを決定するパーセンテージクローザーフィルタリングを用いて低減できる。シーンの可視部分のみの陰影マップにフォーカスすることにより、このようなエイリアシングアーティファクトを低減する、その他多くの方法が工夫されている。しかし、これらの方法はすべてビューに依存し、ユーザの動きごとに陰影マップを再生成しなければならない。さらに、陰影マップの室がユーザの位置によって一定ではない。
【０００９】
距離情報の精度とマップの解像度の限界により、その他のアーティファクトが発生する。すなわち、距離の比較により、互いに非常に接近したオブジェクトを隠蔽する間違った値や、光の方向にほぼ接する面に対して間違った値を返すことがある。この問題を解決するため、ユーザが画定したバイアス値で比較する距離をオフセットして、間違った陰影を排除する。しかし、これにより陰影が必要もないのにシフトしてしまう。すべてのシーンのレンダリングに同じバイアス値を用いるため、「問題となる」オブジェクトにより、アーティファクトを避けるため、他のすべての陰影をシフトしなければならない。
【００１０】
特許文献１は、グラフィックスレンダリングシステムにおける陰影付け方法の改善方法を提案するものである。陰影マッピングのためのバイアスの自動計算を提案している。しかし、この特許文献で提案の方法は、複雑な計算を、すなわち、光源から最も近い２つの表面までの距離の計算を必要とする。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】米国特許第５，８７０，０９７号（出願日１９９６年１月２７日、出願人Snyder）
【非特許文献】
【００１２】
【非特許文献１】F.  Crow、「Shadow  Algorithms  for  Computer  Graphics」、SIGGRAPH会報、１９７７年
【非特許文献２】L.  Williams、「Casting  curved  shadows  on  curved  surfaces」SIGGRAPH会報、１９７８年
【非特許文献３】M.  Bunnell  and  F.  Pellacini、「Shadow  Map  Antialiasing」GPU  Gems,  Addison  Wesley  Edition、２００４年
【発明の概要】
【発明が解決しようとする課題】
【００１３】
本発明はこうした欠点のうち少なくとも１つの欠点を解消することを提案するものである。
【課題を解決するための手段】
【００１４】
本発明は、画像中に陰影を生成する方法に関する。該方法は、ピクセルの配列を有する深さマップを計算する段階であって、前記深さマップのピクセルは、光源から、前記ピクセルを通して見える、最も近い障害物の一部までの深さを示す深さ値を有する段階と、仮想カメラから見える各点を前記光空間に投影する段階と、前記投影された見える点と前記光源との間の距離を計算する段階と、前記光源から前記投影された見える点までの、光線に対応する、前記深さマップ中の深さ値を読み出す段階とを有する。
【００１５】
本方法はさらに、各ピクセルについて、所定のベースバイアスと、前記見える点がある前記表面の方向との関数として、適応的バイアスを計算する段階と、前記画像中の各点について、前記見える点と前記光源との間の距離を、対応する深さマップ値と前記適応的バイアスとの和と比較する段階と、前記比較に応じて前記ピクセルを、光が当たっている、または影になっているとしてラベリングする段階とを有する。
【００１６】
好ましくは、前記適応的バイアスは前記表面法線に依存する。
【００１７】
好ましい実施形態では、前記表面法線と前記入射光の方向との点乗積による、前記所定のベースバイアスの商として前記適応的バイアスを画定する。
【００１８】
好ましくは、前記適応的バイアスは最大値を限度とする。
【００１９】
第２の態様では、本発明は、前記請求項のいずれかに記載の方法を実行するコード命令を実行する手段を有するグラフィックス処理ユニットに関する。
【００２０】
また、第３の態様では、本発明は、画像の陰影を計算するコンピュータプログラム製品に関する。該コンピュータプログラム製品は、請求項１ないし４のいずれかの方法の段階を実行するコンピュータプログラムコードを含むコンピュータ読み取り可能媒体を有する。
【００２１】
また、第２の態様では、本発明は、前記請求項のいずれかに記載の方法を実行するコード命令を実行する手段を有するグラフィックス処理ユニットに関する。
【００２２】
第３の態様では、本発明は、画像の陰影を計算するコンピュータプログラム製品に関する。該コンピュータプログラム製品は、本発明による方法の段階を実行するコンピュータプログラムコードを含むコンピュータ読み取り可能媒体を有する。
【００２３】
本発明の他の特徴及び利点は、添付した図面を参照して例示する、本発明の限定的ではない実施形態の説明により明らかになるだろう。
【図面の簡単な説明】
【００２４】
【図１】陰影を生成しなければならないシーンの概観を示す図である。
【図２】バイアスを適応させる、陰影マッピングのアルゴリズムを示す図である。
【図３】本発明の好ましい実施形態による、バイアス計算で用いる値を示す図である。
【図４】表面上のエイリアシング現象を示す図である。
【図５】本発明の一実施形態による陰影マッピング方法を実装した装置を示す図である。
【発明を実施するための形態】
【００２５】
図１において、陰影を生成しなければならないシーンを示した。ここで提案する方法により、リアルタイムでの陰影の生成が可能となる。ビデオゲームをしているとき、ユーザの操作に応じたシーン中の人の配置に応じて、陰影をリアルタイムで生成しなければならない。そのため、本方法は、好都合に、コンピュータまたはそのグラフィックス処理ボード上のグラフィックス処理ユニット（ＧＰＵ）により実行される。ＧＰＵは、ソフトウェア命令を実行して、以下に開示する方法を実行する。コード命令はメモリなどのコンピュータ読み取り可能媒体に格納されている。
【００２６】
本方法では、基本的に、シーン中に光源と仮想カメラを配置する。一実施形態を図１に示す。
【００２７】
仮想カメラ１は、ある視点からシーンをキャプチャ（capture）する。その結果、そのシーンを表す画像１０が得られる。この画像に陰影を生成しなければならない。光源２は図１に示したように配置されている。シーン中に球体４が配置され、画像１０の障害物（occluding  object）を表している。画像１０の一部のピクセルは、平面３に属する点に関連している。これらのピクセルは、仮想カメラ１からその平面の点が見える、画像１０のピクセルに対応している。光源２は、光線５を投影し、球面４の一部を照らす。画像１０は、仮想カメラ１のある点から見た３次元シーンを表すピクセルアレイを有する。光源２に対して、深さマップ６を計算する。深さマップ６は、ピクセルアレイを含み、各ピクセルは、カラー値ではなく、深さ値（depth  value）を有している。深さマップの各画素は座標（ｘｓｍ，ｙｓｍ）を有する。一実施形態では、深さ値は、深さマップに垂直なｚ軸を基準にして画定される。
【００２８】
図２に示したフローチャートは、リアルタイム・シャドウマッピング・アルゴリズムに基づくが、この方法に限定するものではない。本発明はどのシャドウマッピングをベースとした方法に基づいてもよい。
【００２９】
透視シャドウマッピング法の場合、後述のステップＥ２とＥ７が異なる。
ステップＥ１において、カメラを光源の位置におく。これは仮想現実であるからこそできることである。
【００３０】
ステップＥ２において、光源位置に配置したカメラから、シーンをレンダリングする（render）。このカメラ位置から見える各点について、図１では参照数字８で示した距離ｄｓｍ（ｘｓｍ，ｙｓｍ）を、シャドウマップに格納する。シャドウマップは、グラフィックスメモリに格納された深さマップテクスチャ（depth-map  texture）である。
【００３１】
ステップＥ３において、レンダリングプロセスを開始する。この後のステップでは、カメラを元の位置に配置する。
【００３２】
ステップＥ４において、ユーザはバイアスｂｂａｓｅを画定する。このバイアスは、シーンのスケールにのみ依存する。例えば、値０，１は、長さの単位がメートルのシーンに適している。
【００３３】
ステップＥ５において、最終画像中のものとして、第１のピクセルＰｉｘを選択する。すべてのピクセルが順番に選択される。他の実施形態では、プロセッサ能力に応じて、複数のピクセルを同時に処理してもよい。
【００３４】
ステップＥ６において、ピクセルＰｉｘを通して見える点Ｐを光空間に投影する。光空間は、光源２から見た、画像（１０）に表されたシーンの表示に対応している。
【００３５】
ステップＥ７において、本技術分野の当業者には周知の任意の方法により、例えばユークリッド距離を用いて、Ｐから光源までの距離ｄｐを計算する。この距離は図１に参照数字９で示した。
【００３６】
この光線は、光源から点Ｐまで、座標（ｘｓｍ，ｙｓｍ）のピクセル（１１）で深さマップと交わり、それに対応する、最も近い障害物（occluder）との距離ｄｓｍ（ｘｓｍ，ｙｓｍ）は、ステップＥ８で深さマップから求められる。
【００３７】
ステップＥ９において、適応的バイアスを計算する。図４に示したように、従来の方法では、表面にエイリアシングが生じていた。エイリアシングアーティファクトは、レンダリングされる表面が光が進む方向と接するときに表れる。
【００３８】
シャドウマップの各ピクセルが、ピクセル中の可視点との距離を格納しているので、サンプリングレートが限られていると、点に光があたっているか、影になっているかラベル付けされたゾーンができる。
【００３９】
アーティファクトを除去するには、バイアス値を上げなければならない。逆に、光の進行方向にほぼ垂直な表面は、高いバイアス値は必要としない。
本発明の本実施形態では、各可視点の表面の方向に基づき、ピクセルごとのバイアス適応関数を画定する。ユーザが画定する、シーンスケールのみに依存するベースバイアス値ｂｂａｓｅについて、陰影の決定に用いられる実際のバイアスｂは、次式で計算される：
【００４０】
【数１】
0005437475.tif 000002
ここで、「．」はベクトル点乗積であり、Ｎは表面の法線であり、Ｌは入射光の方向であり、εは、ＮがＬとほぼ垂直になった時にバイアス値が無限大にならないようにする最小値である。
【００４１】
図３は、ＬとＮを示す図である。ベクトルＬとＮが共線的であればあるほど、すなわちベクトルＬとＮがなす角が小さくなればなるほど、適応的バイアスｂの値は低くなり、すなわちベースバイアスｂｂａｓｅに近くなる。確かに、このような場合、ピクセルの、影になった、または光が当たった特徴に関する不確実性は低い。そのため、深さを比較する際の許容幅は小さい。ベクトルＬとＮが直角に近くなればなるほど、すなわちベクトルＬとＮが為す角度が開くと、適応的バイアスｂの値は大きくなり、すなわち（例えば、ｂｂａｓｅの値の２０倍までに）大きくなる。この場合、ピクセルの、影になった、または光が当たった特徴に関する不確実性が高くなる。深さ比較の許容幅は大きい。
【００４２】
ステップＥ１０において、テストを行う。Ｄｐは光源から点Ｐまでの距離を表し、Ｄｓｍは光源からシャドウマップまでの距離を表す。
【００４３】
ｄｐ≧ｄｓｍ＋ｂであれば、ステップＥ１１に進み、ピクセルＰｉｘに関連する点Ｐは影になったピクセルとしてラベリングされる（labeled）。
【００４４】
ｄｐ＜ｄｓｍ＋ｂであれば、ステップＥ１２に進み、ピクセルＰｉｘに関連する点Ｐは光が当たったピクセルとしてラベリングされる（labeled）。
【００４５】
次に、ステップＥ１３に進み、これがシーンの最後のピクセルかチェックするため、テストを行う。最後であれば、すべてのシーンが処理されている。最後でなければ、ステップＥ１５に進み、次のピクセルを選択し、ステップＥ６に戻る。以下、すべてのピクセルを処理するまで、同様である（ステップＥ１４）。
【００４６】
画像のすべてのピクセルが、光が当たっているか影になっているかいずれかのラベリングが為されると、そのピクセルに、それぞれ光を当てるか影にする画像処理方法を実行する。
【００４７】
図５は、画像に陰影を生成するように構成された装置５のハードウェアの実施形態を示す図である。装置５は、例えば、パーソナルコンピュータ、ラップトップコンピュータ、ゲームコンソール、その他の画像処理装置である。装置５は、以下の構成要素を有し、これらはアドレス・データバス５５でリンクされている：
−マイクロプロセッサ５１（またはＣＰＵ）
−グラフィックスカード５２。これは次の構成要素を有する：
−複数のグラフィックス処理ユニット５２０（ＧＰＵ）
−グラフィックスＲＡＭ（Random  Access  Memory）５２１
−ＲＯＭ（Read  Only  Memory）等の不揮発性メモリ５６
−ＲＡＭ（Random  Access  Memory）５７
−１つまたは複数のＩ／Ｏ（Input/Output）デバイス５４。これは例えばキーボード、マウス、ウェブカメラなどである。
−電源５８
装置５は、例えば、リアルタイムで、グラフィックスカードで計算され構成された、レンダリングされた画像を表示する、グラフィックスカード５２に直接接続されたディスプレイスクリーンなどのディスプレイ装置５３も有する。変形例では、ディスプレイ装置５３は装置５の外部にある。
【００４８】
メモリ５２、５６、及び５７の説明で用いる用語「レジスタ」は、上記の各メモリにおける、小容量（少量のバイナリデータ）のメモリ領域、及び（プログラム全体を格納できる、または計算したデータや表示するデータを表すデータのすべて、またはその一部を格納できる）大容量のメモリ領域を言う。
電源を投入すると、マイクロプロセッサ５１はＲＡＭ５７にあるアルゴリズムの命令をロードして実行する。
【００４９】
メモリＲＡＭ５７は、具体的に、次の構成要素を有する：
−レジスタ５７０に、装置５の電源投入時にロードされる「prog」プログラムと、
−レンダリングするシーンを表すデータ５７１。
【００５０】
本発明の方法のステップを実施するアルゴリズムは、これらのステップを実施する装置５に付随するグラフィックスカード５２のメモリＧＲＡＭ５２１に格納される。電源投入され、シーンを表すデータ５７１がＲＡＭ５７に一旦ロードされると、グラフィックスカードのＧＰＵ５２０は、ＧＲＡＭ５２１中のこれらのデータをロードして、ＨＬＳＬ言語（High  Level  Shader  Language）やＧＬＳＬ言語（OpenGL  Shading  Language）などを用いて、「shaders」と呼ぶマイクロプログラムの形式で、これらのアルゴリズムの命令を実行する。
【００５１】
メモリＧＲＡＭ４２１は、具体的に、次の構成要素を有する：
−レジスタ５２１０中の、レンダリングするシーンを表すデータ５２１０。
−深さマップにある深さ値５２１１
−１つまたは複数の点Ｐについて、可視点Ｐと光源２の間の距離ｄｐ５２１２
−可視点Ｐに関連する深さマップのピクセルについて計算した適応的バイアス５２１３。
【００５２】
変形例では、電源は装置５の外部にある。
【００５３】
好ましい実施形態で説明したように本発明は、好都合にも、グラフィックス処理ボード上のグラフィックス処理ユニット（ＧＰＵ）を用いて計算する。
【００５４】
また、本発明は、好ましくは、ソフトウェアコード命令として実施され、メモリ（フラッシュメモリ、ＳＤＲＡＭ等）などのコンピュータ読み取り可能媒体に記憶される。この命令はグラフィックス処理ユニットにより読み出される。
【００５５】
本発明の実施形態の上記の説明は、例示と説明を目的にしたものである。包括的であること、開示した詳細な内容に本発明を限定することを意図したものではない。当業者には、上記の教示を考慮して、多くの変更や変形が可能であることが明らかであろう。そのため、本発明の範囲はこの詳細な説明により限定されるのではなく、添付した特許請求の範囲により限定される。
【図１】
0005437475.tif 000003
【図２】
0005437475.tif 000004
【図３】
0005437475.tif 000005
【図４】
0005437475.tif 000006
【図５】
0005437475.tif 000007