(57)【要約】【課題】ＢＲＤＦの演算方式に適し、プログラマブルピクセルシェーダに実装した場合に、多様な表現力と良好な演算効率とを両立させことができ、さらに、シフトバリアントＢＲＤＦ化に容易に対応するできるコンパクトさを持った画像処理装置およびその方法を提供する。【解決手段】描画対象の表面上の一点に入射する光が物体表面で反射される割合を表す関数ＢＲＤＦモデルに基づいて反射率を求める画像処理装置であって、光源方向ベクトルと視点方向ベクトルと法線方向ベクトルからなるベクトルと、ＢＲＤＦモデルの特性を決める行列を含む２次形式の行列表現で計算されるＢＲＤＦモデルに基づいて反射率を計算する演算部２０３１を有する。【選択図】　　　図３
2004126692.tif 000002
【特許請求の範囲】
【請求項１】
描画対象の表面上の一点に入射する光が物体表面で反射される割合を表す関数ＢＲＤＦモデルに基づいて反射率を求める画像処理装置であって、
光源方向ベクトルと視点方向ベクトルと法線方向ベクトルからなるベクトルと、ＢＲＤＦモデルの特性を決める行列を含む２次形式の行列表現で計算されるＢＲＤＦモデルに基づいて上記反射率を計算する演算手段
を有する画像処理装置。
【請求項２】
上記光源方向と視点方向と法線方向からなるベクトルは、方向を表す３次元ベクトル、クオータニオン、極座標のいずれかである
請求項１記載の画像処理装置。
【請求項３】
上記光源方向と視点方向と法線方向からなるベクトルは、適当な線形変換を用いて次数を退化させたものである
請求項１記載の画像処理装置。
【請求項４】
上記光源方向と視点方向と法線方向からなるベクトルは、任意の初等演算、テーブル参照、またはその組み合わせによって、それらのベクトルを変換したものである
請求項１記載の画像処理装置。
【請求項５】
上記演算手段は、上記２次形式の行列表現で計算されるＢＲＤＦモデルは、上記ＢＲＤＦモデルの特性を決める行列を小行列に分割して、分化した小行列の２次形式からなる多項式を用いて評価演算する
請求項１記載の画像処理装置。
【請求項６】
上記演算手段は、上記２次形式は行列とベクトルの乗算後、ベクトル同士の乗算をする手順で計算する
請求項１記載の画像処理装置。
【請求項７】
単数または複数の上記ＢＲＤＦモデルの評価結果を加減算、乗算、除算、累乗算、２次形式を選択的に使用して合成する
請求項１記載の画像処理装置。
【請求項８】
上記演算手段は、２つの異なるベクトルからなる行列演算式と、三角行列を含む２次形式行列とベクトル乗算との和との２つの演算モードを持ち、上記ＢＲＤＦモデルを計算する複合演算器を有する
請求項１記載の画像処理装置。
【請求項９】
上記演算手段は、上記ＢＲＤＦモデルの特性を決める行列は、テクスチャマップを用いて与えられる
請求項１記載の画像処理装置。
【請求項１０】
上記演算手段は、上記ＢＲＤＦモデルの特性を決める行列の各要素を、所定のフィルタリング技術を含むＭＩＰＭＡＰ処理に基づいて補間する
請求項１記載の画像処理装置。
【請求項１１】
上記演算手段は、上記ＢＲＤＦモデルの特性を決める行列を、インデックス化されたテーブルから参照する
請求項１記載の画像処理装置。
【請求項１２】
上記演算手段は、上記ＢＲＤＦモデルの特性を決める行列を、あらかじめ与えられた複数のＢＲＤＦ生データを上記ＢＲＤＦモデルに代入して得られる複数の多項式からなる方程式を解くことによって得る
請求項１記載の画像処理装置。
【請求項１３】
上記演算手段は、光源方向に対応したディフューズ（拡散）の反射率分布が、ハーフベクターの方向に対応したスペキュラーの反射率分布と同じ分布であると仮定することによって得られる対応関係より、ポリノミナルテクスチャマップ（Ｐｏｌｙｎｏｍｉａｌ　Ｔｅｘｔｕｒｅ　Ｍａｐｓ　）のパラメータから、上記ＢＲＤＦモデルの特性を決める行列を作る
請求項１記載の画像処理装置。
【請求項１４】
描画対象の表面上の一点に入射する光が物体表面で反射される割合を表す関数ＢＲＤＦモデルに基づいて反射率を求める画像処理方法であって、
光源方向ベクトルと視点方向ベクトルと法線方向ベクトルからなるベクトルと、ＢＲＤＦモデルの特性を決める行列を含む２次形式の行列表現で計算されるＢＲＤＦモデルに基づいて上記反射率を計算する
画像処理方法。
【請求項１５】
上記光源方向と視点方向と法線方向からなるベクトルは、方向を表す３次元ベクトル、クオータニオン、極座標のいずれかである
請求項１４記載の画像処理方法。
【請求項１６】
上記光源方向と視点方向と法線方向からなるベクトルは、適当な線形変換を用いて次数を退化させたものである
請求項１４記載の画像処理方法。
【請求項１７】
上記光源方向と視点方向と法線方向からなるベクトルは、任意の初等演算、テーブル参照、またはその組み合わせによって、それらのベクトルを変換したものである
請求項１４記載の画像処理方法。
【請求項１８】
上記２次形式の行列表現で計算されるＢＲＤＦモデルは、上記ＢＲＤＦモデルの特性を決める行列を小行列に分割して、分化した小行列の２次形式からなる多項式を用いて評価演算する
請求項１４記載の画像処理方法。
【請求項１９】
上記２次形式は行列とベクトルの乗算後、ベクトル同士の乗算をする手順で計算する
請求項１４記載の画像処理方法。
【請求項２０】
単数または複数の上記ＢＲＤＦモデルの評価結果を加減算、乗算、除算、累乗算、２次形式を選択的に使用して合成する
請求項１４記載の画像処理方法。
【請求項２１】
上記ＢＲＤＦモデルは、２つの異なるベクトルからなる行列演算式と、三角行列を含む２次形式行列とベクトル乗算との和との２つの演算モードを持つ複合演算器によって計算する
請求項１４記載の画像処理方法。
【請求項２２】
上記ＢＲＤＦモデルの特性を決める行列は、テクスチャマップを用いて与えられる
請求項１４記載の画像処理方法。
【請求項２３】
上記ＢＲＤＦモデルの特性を決める行列の各要素は、所定のフィルタリング技術を含むＭＩＰＭＡＰ処理に基づいて補間する
請求項１４記載の画像処理方法。
【請求項２４】
上記ＢＲＤＦモデルの特性を決める行列は、インデックス化されたテーブルから参照する
請求項１４記載の画像処理方法。
【請求項２５】
上記ＢＲＤＦモデルの特性を決める行列は、あらかじめ与えられた複数のＢＲＤＦ生データを上記ＢＲＤＦモデルに代入して得られる複数の多項式からなる方程式を解くことによって得る
請求項１４記載の画像処理方法。
【請求項２６】
光源方向に対応したディフューズ（拡散）の反射率分布が、ハーフベクターの方向に対応したスペキュラーの反射率分布と同じ分布であると仮定することによって得られる対応関係より、ポリノミナルテクスチャマップ（Ｐｏｌｙｎｏｍｉａｌ　Ｔｅｘｔｕｒｅ　Ｍａｐｓ　）のパラメータから、上記ＢＲＤＦモデルの特性を決める行列を作る
請求項１４記載の画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、３次元コンピュータグラフィックスを実現するための画像処理装置およびその方法に係り、特に、よりリアリスティックな画像を生成するコンピュータグラフィックス装置の構成と方法に関するものである。
【０００２】
【従来の技術】
昨今のコンピュータシステムにおける演算速度の向上や描画機能の強化とも相俟って、コンピュータ資源を用いて図形や画像の作成や処理を行う「コンピュータグラフィックス（ＣＧ）」技術が盛んに研究・開発され、さらに実用化されている。
【０００３】
たとえば、３次元グラフィックスは、３次元オブジェクトが所定の光源によって照らされたときの光学現象を数学モデルで表現して、このモデルに基づいてオブジェクト表面に陰影や濃淡を付けたり、さらには模様を貼り付けたりして、よりリアルで３次元的な２次元高精細画像を生成するものである。
このようなコンピュータグラフィックスは、科学、工学、製造などの開発分
野でのＣＡＤ／ＣＡＭ、その他の各種応用分野においてますます盛んに利用されるようになってきている。
【０００４】
３次元グラフィックスは、一般には、フロントエンドとして位置づけられる「ジオメトリ・サブシステム」と、バックエンドとして位置づけられる「ラスタ・サブシステム」とにより構成される。
【０００５】
ジオメトリ・サブシステムとは、ディスプレイ・スクリーン上に表示する３次元オブジェクトの位置や姿勢などの幾何学的な演算処理を行う過程のことである。
ジオメトリ・サブシステムでは、一般にオブジェクトは多数のポリゴンの集合体として扱われ、ポリゴン単位で、「座標変換」、「クリッピング」、「光源計算」などの幾何学的な演算処理が行われる。
【０００６】
一方、ラスタ・サブシステムは、オブジェクトを構成する各ピクセル（ｐｉｘｅｌ）を塗りつぶす過程のことである。
ラスタライズ処理は、たとえばポリゴンの頂点毎に求められた画像パラメータを基にして、ポリゴン内部に含まれるすべてのピクセルの画像パラメータを補間することによって実現される。
ここで言う画像パラメータには、いわゆるＲＧＢ形式などで表される色（描画色）データ、奥行き方向の距離を表すｚ値などがある。
また、最近の高精細な３次元グラフィックス処理では、遠近感を醸し出すためのｆ（ｆｏｇ：霧）や、物体表面の素材感や模様を表現してリアリティを与えるテクスチャｔ（ｔｅｘｔｕｒｅ）なども、画像パラメータの１つとして含まれている。
【０００７】
ここで、ポリゴンの頂点情報からポリゴン内部のピクセルを発生する処理では、よくＤＤＡ（Ｄｉｇｉｔａｌ　Ｄｉｆｆｅｒｅｎｔｉａｌ　Ａｎａｌｙｚｅｒ）と呼ばれる線形補間手法を用いて実行される。
ＤＤＡプロセスでは、頂点情報からポリゴンの辺方向へのデータの傾きを求め、この傾きを用いて辺上のデータを算出した後、続いてラスタ走査方向（Ｘ方向）の傾きを算出し、この傾きから求めたパラメータの変化分を走査の開始点のパラメータ値に加えていくことで、内部のピクセルを発生していく。
【０００８】
このような３次元グラフィックスにおいて、近年、リアリスティックなコンピュータグラフィックス画像を生成するため、イルミネーションモデルの改良が行われている。一方、リアルタイムな描画性能を追求するハードウェアアーキテクチャの研究開発が行われている。
一般的に、リアルティを向上させようとすると、演算量が増加しリアルタイム性が損なわれ、リアルタイム性を向上させようとするとアルゴリズムの簡略化が要求されリアリティが犠牲になる。これらの相反する要求をできるだけ同時に実現しようとする研究開発も行われている。
【０００９】
リアルタイムな描画性能を追求する最新のハードウェア技術の中で、プログラマブルピクセルシェーダという技術がある。
プログラマブルピクセルシェーダは、ポリゴンを構成するピクセル毎に行うシェーディングの工程にプログラマビリティの機能を与えた。
このプログラマビリティによって、ＢＲＤＦ（Ｂｉ−ｄｉｒｅｃｔｉｏｎａｌＲｅｆｌｅｃｔｉｏｎ　Ｄｉｓｕｔｒｉｂｕｔｉｏｎ　Ｆｕｎｃｔｉｏｎ）という一般的な反射モデルが実装され始め、リアルタイムでかつリアリスティックな画像生成の可能性がでてきた。また、テクスチャマッピングがポリゴン表面の色彩に変化を与えるように、ＢＲＤＦの性質を変化させることも考えられる。このようなポリゴンの表面上の位置によって異なる性質を持つＢＲＤＦをシフトバリアント（Ｓｈｉｆｔｓ−ｖａｒｉａｎｔ）ＢＲＤＦという。
以下に、プログラマブルピクセルシェーダ、ＢＲＤＦ、およびシフトバリアントＢＲＤＦについて詳細に説明する。
【００１０】
プログラマブルピクセルシェーダ
プログラマブルピクセルシェーダは、ピクセル毎に行う輝度計算の工程にプログラマビリティの機能を与えるもである。
ＮＶＩＤＩＡ社のＧＦｏｒｃｅ３，ＧＦｏｒｃｅ４やＡＴＩ社のＲＡＤＥＯＮ８５００などのグラフィックスＬＳＩにプログラマブルピクセルシェーダの技術が採用されている。
ユーザは、ピクセルシェーダプログラムを工夫して書くことにより、従来のグーローシェーディングのみをサポートした固定的なハードウェアではなし得なかったリアリティのあるシェーディングモデルを、リアルタイムな実行環境で実現できるようになった。
たとえば、従来の固定的なハードウェアでも実装されていたグーローシェーディングやテクスチャマッピングなどの技術だけでなく、プログラマブルピクセルシェーダを使えばフォンシェーディング、バンプマッピング、トゥーンシェーディング、環境マッピングなども実装できる。さらに異法性反射モデルや一部のＢＲＤＦも利用できる。
【００１１】
プログラマブルピクセルシェーダを使えば、ポリゴン上にマップ化したシェーディイングパラメータの記憶場所としてテクスチャメモリを使用することができる。
たとえば、法線方向を利用するシェーダプログラムがあるとき、テクスチャメモリの各テクセルに法線方向にデータを格納しておき、ランタイム時にテクセル値から得られた法線を使ってシェーディング計算をすることができる。バンプマッピングや一部のＢＲＤＦモデルがこの方法で実現されている。
【００１２】
ＮＶＩＤＩＡ社のＧＦｏｒｃｅ３，ＧＦｏｒｃｅ４のプログラマブルピクセルシェーダの仕組みは、図１５に示すようになっている。
基本的には、このプログラマブルピクセルシェーダは、テクスチャルックアップユニット１とＡＬＵユニット２から構成されている。
上流のプログラマブル頂点シェーダからテクスチャルックアップユニット１に４つのテクスチャアドレスＴＥＸ０〜ＴＥＸ３が供給される。テクスチャルックアップユニット１は、最大４つのテクスチャアドレスに対応したＲＧＢＡの４要素のテクセルをルックアップできる。ルックアップは４並列に実行できる。ルックアップした結果はピクセルＡＬＵユニット２に出力される。
また、プログラマブル頂点シェーダは、ピクセルＡＬＵユニット２に２つのＲＧＢＡの４要素を供給する。ピクセルＡＬＵユニット２は、図１６に示すように、レジスタコンバイナ２−１，２−２，２−３という特殊な演算器を有する。
レジスタコンバイナ２−１，２−２は内積と乗算を実行し、レジスタコンバイナ２−３は加算を実行する。ピクセルＡＬＵユニット２では、入力マップ２−４，２−５を通してレジスタコンバイナ２−１にデータを入力し、入力マップ２−６，２−７を通してレジスタコンバイナ２−２にデータを入力する。これにより、乗算と内積を２並列で実行できる。ただし、内積は３次元×３次元のみである。内積演算は、たとえばフォン反射モデルやディフューズ反射モデルのベクトルの内積に利用できる。
【００１３】
ピクセルシェーダプログラムは、ユーザが定義できる数ステップのプログラムで、ピクセル毎に先頭から実行される。このプログラムが上記テクスチャルックアップユニット１およびＡＬＵユニット２を制御する。
【００１４】
ＢＲＤＦ
ＢＲＤＦは、表面上の一点に入射する光が物体表面で反射される割合を表す関数である。それは、次式のように、光源と視点の方向からなる４次元の関数として表される。
【００１５】
【数１】
2004126692.tif 000003
【００１６】
ＢＲＤＦは、従来良く知られてきたシェーディングモデルの上位概念として扱うことができる。たとえば次の３つのライティング効果は、視点と光源の向きをパラメータとするＢＲＤＦのサブセットとして考えることができる。
アンビエントライティングモデルは、視点、光源の方向とは独立に決まるライティング効果の一つである。
ディフューズ反射モデルは、光源の方向によって決まるライティング効果の一つである。
スペキュラー反射モデルは、光源と視点の方向によって決まるライティング効果の一つである。
上記の他にＢＲＤＦは、異方性を持つシェーディングモデルや光源の方向に反射するレトロリフレクションモデルなどを表現することができる。
【００１７】
汎用のＢＲＤＦも最も単純に表現するには、４次元のデータを用いればよい。しかし、産業的に利用しようとするとこのままでは実現コストが高く現実的ではない。ＢＲＤＦの表現形式は大きく分けて、以下に示すように、物理的な式、経験的な式、近似式などがある。
【００１８】
物理的な式
物理的な原理から導き出した式であり、演算が複雑なことが多い。たとえばＲｏｒｒａｎｃｅ−Ｓｐａｒｒｏｗモデル、Ｐｒｅｎ−Ｎａｙａｒモデルなどである。
【００１９】
経験的な式
人間が知覚できる顕著な特徴を再現するコンパクトな表現による式であり、見た目上確からしい結果が得られ、演算コストも低い。たとえばフォンシェーディングモデル、ポリノミナルテクスチャマップ（Ｐｏｌｙｎｏｍｉｎａｌ　Ｔｅｘｔｕｒｅ　Ｍａｐｓ：非特許文献１）、ＬａｆｏｒｔｕｎｅＢＲＤＦ（非特許文献２）モデルなどである。
【００２０】
近似値、近似式
各種の基底関数を使うものや、テーブル化したデータを使う式である。汎用のＢＲＤＦが持つ４次元テーブルをデータ圧縮したと考えられる方法である。たとえばＫａｕｚｔＢＲＤＦ（非特許文献３）モデル、ＷａｖｅｌｅｔはＳｐｈｒｉｃａｌ−Ｈａｒｍｏｎｉｃｓを用いたＢＲＤＦなどである。
【００２１】
ＬａｆｏｒｔｕｎｅＢＲＤＦモデルは、Ｇｅｎｅｒａｌｉｚｅｄ　Ｃｏｓｉｎｅ　Ｌｏｂｅを用いて定義されるＢＲＤＦである。
【００２２】
【数２】
2004126692.tif 000004
【００２３】
異方性スペキュラー効果、レトロリフレクション、オフスペキュラー効果などを再現できる。
【００２４】
ポリノミナルテクスチャマップは、セルフシャドウ効果が得意なシェーディングモデルである。
【００２５】
【数３】
2004126692.tif 000005
【００２６】
専用の測定器を使って撮影した複数枚の画像からモデルのパラメータを得ることができる。
【００２７】
Ｋａｕｚｔ−ＢＲＤＦモデルは、Ｎｏｒｍａｌｉｚｅｄ　Ｄｅｃｏｍｐｏｓｉｔｉｏｎを使って４次元のテーブルを２枚の２次元テーブルの乗算で近似したＢＲＤＦモデルである。ＮＶＩＤＩＡ社のプログラマブルピクセルシェーダを使った実装が存在する。金属やプラスティックの質感の再現性は良い。しかし、テーブルを２枚使うため、必要なデータ量は大きい。
【００２８】
シフトバリアントＢＲＤＦ
表面上の位置によって変化するＢＲＤＦをシフト−バリアントＢＲＤＦまたはＢＴＦという（以下、シフトバリアントＢＲＤＦに統一する。）。シフトバリアントＢＲＤＦは６次元の関数である。ポリゴンの表面上の位置を表す２次元のパラメータをＢＲＤＦに使いしたものと考えても良い。
表面上の各位置に異なるＢＲＤＦを持つため、一様ではないテクスチャを持つ材質をリアルに表現できる。たとえば、衣服や生地や皮膚を表現するのに適している。
プログラマブルピクセルシェーダでは、ＢＲＤＦモデルのパラメータをテクスチャマッピングと同様の回路に保持し、そのパラメータをルックアップすることによりＢＲＤＦをピクセル単位で変化させることができる。すなわち、シフトバリアントＢＲＤＦを実現できる。
【００２９】
たとえば、ＤａｕｂｅｒｔＢＲＤＦ（非特許文献４）は、ＬａｆｏｒｔｕｎｅＢＲＤＦモデルのシフトバリアントＢＲＤＦ化を試みたものである。
しかし、改良が安易であり、優れた方法とは言えない。シフトバリアント化に関しては、ＬａｆｏｒｔｕｎｅＢＲＤＦの式のパラメータをテクセルに格納したに過ぎない。ＬａｆｏｒｔｕｎｅＢＲＤＦの式を評価する座標系がシフトバリアント化されていないため、バンプマップのような表現ができない。視線方向に依存する効果をキューブマップを用いて実現している。しかし、キューブマップを使った実装では、この効果をシフトバリアント化できない。また、セルフシャドウ効果は全く考慮されていない。
【００３０】
ポリノミナルテクスチャマップは、上記数３のように６つの項からなる２次元式を使って輝度を計算する。
従来のテクスチャマッピング技術を置き換えることを目指した技術である。各項の６係数をテクセルに格納したテーブルを使えば良い。セルフシャドウ効果が特徴的である。
【００３１】
【非特許文献１】
Ｔｏｍ　Ｍａｌｚｂｅｎｄｅｒ，　ｅｔ　ａｌ．，　”Ｐｏｌｙｎｏｍｉａｌ　Ｔｅｘｔｕｒｅ　Ｍａｐｓ”，　ＣｏｍｐｕｔｅｒＧｒａｐｈｉｃｓ　（ＳＩＧＧＡＰＨ２００１　Ｐｒｏｃｅｅｄｉｎｇｓ），　ｐｐ．５１９−５２８　．
【非特許文献２】
Ｅ．Ｐ．Ｆ．Ｌａｆｏｒｔｕｎｅ，　ｅｔ　ａｌ．，　”Ｎｏｎ−Ｌｉｎｅａｒ　Ａｐｐｒｏｘｉｍａｔｉｏｎ　ｏｆ　Ｒｅｆｌｅｃｔａｎｃｅ　Ｆｕｎｃｔｉｏｎｓ”，　ＣｏｍｐｕｔｅｒＧｒａｐｈｉｃｓ　（ＳＩＧＧＡＰＨ１９９７　Ｐｒｏｃｅｅｄｉｎｇｓ），　Ａｕｇｕｓｔ　１９９７，ｐｐ．１１７−１２６　．
【非特許文献３】
Ｊ．　Ｋａｕｔｚ，　ｅｔ　ａｌ．，　”Ｉｎｔｅｒａｃｔｉｖｅ　Ｒｅｎｄｅｒｉｎｇ　ｗｉｔｈ　Ａｒｂｉｔｒａｒｙ　ＢＲＤＦｓｕｓｉｎｇ　Ｓｅｐａｒａｂｌｅ　Ａｐｐｒｏｘｉｍａｔｉｏｎｓ”，　Ｐｒｏｃｅｅｄｉｎｇｓ　ｏｆ　ｔｈｅ　１０ｔｈ　Ｅｕｒｏｇｒａｐｈｉｃｓ　Ｗｏｒｋｓｈｏｐ　ｏｎ　Ｒｅｎｄｅｒｉｎｇ，　ｐａｇｅｓ　２８１−２９２，　Ｊｕｎｅ　１９９９．
【非特許文献４】
Ｋａｔｊａ　Ｄａｕｂｅｒｔ，　ｅｔ　ａｌ．，　”Ｅｆｆｉｃｉｅｎｔ　Ｃｌｏｔｈ　Ｍｏｄｅｌｉｎｇ　ａｎｄ　Ｒｅｎｄｅｒｉｎｇ”，　ｉｎ　Ｒｅｎｄｅｒｉｎｇ　Ｔｅｃｈｎｉｑｕｅｓ　’０１　ｐｒｏｃｅｅｄｉｎｇｓ　ｏｆ　ｔｈｅ　１２ｔｈ　Ｅｕｒｏｇｒａｐｈｉｃｓ　Ｗｏｒｋｓｈｏｐ　ｏｎ　Ｒｅｎｄｅｒｉｎｇ　２００１，　Ｓｐｒｉｎｇｅｒ　Ｖｅｒｌａｇ，　Ｂｅｒｌｉｎ　．
【００３２】
【発明が解決しようとする課題】
以上述べたような、プログラマブルピクセルシェーダ、ＢＲＤＦ、およびシフトバリアントＢＲＤＦについては、以下のような不利益がある。
【００３３】
プログラマブルピクセルシェーダは、従来固定的なハードウェア回路だったピクセルシェーダにプログラマビリティを与えて、汎用演算器が持つ柔軟性を与えたもでのある。
しかし、グラフィックスハードウェアのセールスポイントである演算効率を損なわせないために、効率を優先した汎用化が行われている。
たとえば分岐命令は使えない、命令セットに直交性が無い、データタイプが８ビットに限られる、などの制約を持つ。
【００３４】
ＮＶＩＤＩＡ社のＧＦｏｒｃｅシリーズに実装されたプログラマブルピクセルシェーダでは、ピクセル毎に最大４つのテクスチャマップから４要素からなるテクセルのルックアップと数回の内積や乗算によって計算できるシェーディングモデルを想定した回路構成となっている。
各種のシェーディングモデルを実装できる一方で、実装の効率が悪かったり実装が不可能なシェーディングモデルもある。特に、行列演算を多く含むシェーディングモデルの演算効率は悪い。また、最大４つのテクスチャマップからは最大１６要素しか得られず、行列の十分な供給には不十分である。
つまり、将来利用されるであろうシェーディングモデルをできるだけ正確に予測して、効率性と汎用性のバランスが良いハードウェアアーキテクチャを考える必要がある。
【００３５】
ＢＲＤＦの表現形式は多様で、それぞれが特徴を持つ。アプリケーションは、目的に応じたＢＲＤＦの表現形式を選択すれば良い。
しかし、効率を優先し、最小限の汎用化を考慮して設計されるグラフィックスハードウェアにとっては、対応するＢＲＤＦモデルは最小限でそれによって最大限の効果が得られることが望ましい。この背反する要求をうまく満たす、都合の良いＢＲＤＦモデルが必要とされる。
【００３６】
また、良いシフトバリアントＢＲＤＦを実現するには、高い表現力を持ちかつコンパクトなＢＲＤＦの表現モデルが必要にある。
パラメータの少ないＢＲＤＦの表現形式は、シフトバリアントＢＲＤＦ化に向いている。一つのテクセルに割り当てられたパラメータが少ないと、それだけテーブルのサイズが小さくなる。逆に、パラメータが多いと、テーブルサイズが大きくなり、ＫａｕｚｔＢＲＤＦなどのテーブルを組み合わせたタイプのＢＲＤＦはシフトバリアントＢＲＤＦ化には向かない。
【００３７】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、ＢＲＤＦの演算方式に適し、プログラマブルピクセルシェーダに実装した場合に、多様な表現力と良好な演算効率とを両立させことができ、さらに、シフトバリアントＢＲＤＦ化に容易に対応するできるコンパクトさを持った画像処理装置およびその方法を提供することにある。
【００３８】
【課題を解決するための手段】
上記目的を達成するため、本発明の第１の観点は、描画対象の表面上の一点に入射する光が物体表面で反射される割合を表す関数ＢＲＤＦモデルに基づいて反射率を求める画像処理装置であって、光源方向ベクトルと視点方向ベクトルと法線方向ベクトルからなるベクトルと、ＢＲＤＦモデルの特性を決める行列を含む２次形式の行列表現で計算されるＢＲＤＦモデルに基づいて上記反射率を計算する演算手段を有する。
【００３９】
本発明の第２の観点は、描画対象の表面上の一点に入射する光が物体表面で反射される割合を表す関数ＢＲＤＦモデルに基づいて反射率を求める画像処理方法であって、光源方向ベクトルと視点方向ベクトルと法線方向ベクトルからなるベクトルと、ＢＲＤＦモデルの特性を決める行列を含む２次形式の行列表現で計算されるＢＲＤＦモデルに基づいて上記反射率を計算する。
【００４０】
本発明では、上記光源方向と視点方向と法線方向からなるベクトルは、方向を表す３次元ベクトル、クオータニオン、極座標のいずれかである。
【００４１】
また、本発明では、上記光源方向と視点方向と法線方向からなるベクトルは、適当な線形変換を用いて次数を退化させたものである。
【００４２】
また、本発明では、上記光源方向と視点方向と法線方向からなるベクトルは、任意の初等演算、テーブル参照、またはその組み合わせによって、それらのベクトルを変換したものである。
【００４３】
好適には、上記２次形式の行列表現で計算されるＢＲＤＦモデルは、上記ＢＲＤＦモデルの特性を決める行列を小行列に分割して、分化した小行列の２次形式からなる多項式を用いて評価演算する。
【００４４】
また、好適には、上記２次形式は行列とベクトルの乗算後、ベクトル同士の乗算をする手順で計算する。
【００４５】
また、単数または複数の上記ＢＲＤＦモデルの評価結果を加減算、乗算、除算、累乗算、２次形式を選択的に使用して合成する。
【００４６】
本発明では、上記ＢＲＤＦモデルは、２つの異なるベクトルからなる行列演算式と、三角行列を含む２次形式行列とベクトル乗算との和との２つの演算モードを持つ複合演算器によって計算する。
【００４７】
また、好適には、上記ＢＲＤＦモデルの特性を決める行列は、テクスチャマップを用いて与えられる。
【００４８】
好適には、上記ＢＲＤＦモデルの特性を決める行列の各要素は、所定のフィルタリング技術を含むＭＩＰＭＡＰ処理に基づいて補間する。
【００４９】
好適には、上記ＢＲＤＦモデルの特性を決める行列は、インデックス化されたテーブルから参照する。
【００５０】
また、上記ＢＲＤＦモデルの特性を決める行列は、あらかじめ与えられた複数のＢＲＤＦ生データを上記ＢＲＤＦモデルに代入して得られる複数の多項式からなる方程式を解くことによって得る。
【００５１】
また、好適には、光源方向に対応したディフューズ（拡散）の反射率分布が、ハーフベクターの方向に対応したスペキュラーの反射率分布と同じ分布であると仮定することによって得られる対応関係より、ポリノミナルテクスチャマップ（Ｐｏｌｙｎｏｍｉａｌ　Ｔｅｘｔｕｒｅ　Ｍａｐｓ　）のパラメータから、上記ＢＲＤＦモデルの特性を決める行列を作る。
【００５２】
本発明によれば、たとえば演算手段において、光源方向ベクトルと視点方向ベクトルと法線方向ベクトルからなるベクトルと、ＢＲＤＦモデルの特性を決める行列を含む２次形式の行列表現で計算されるＢＲＤＦモデルに基づいて反射率が計算される。
【００５３】
【発明の実施の形態】
以下、図面に関連付けて本発明の実施の形態を詳細に説明する。
本実施形態においては、本発明に係るＢＲＤＦモデル評価演算を採用した画像処理装置の構成および機能を説明した後、本発明に係るＢＲＤＦモデル、およびその評価演算などについて順を追って詳細に説明する。
【００５４】
図１は、本発明に係る画像処理装置の一実施形態を示すブロック図である。
【００５５】
本画像処理装置１０は、図１に示すように、インプットデバイス部１１、ディスプレイ部１２、ネットワーク部１３、およびコンピュータ部１４を有する。
【００５６】
インプットデバイス部１１は、キーボードやマウス、ジョイスティックなどの入力装置を含み、ユーザがコンピュータ部１２に指示したり、情報を入力するために使用する。
【００５７】
ディスプレイ部１２は、ＣＲＴ（Ｃａｔｈｏｄ　Ｒａｙ　Ｔｕｂｅ）やＬＣＤ（Ｌｉｑｕｉｄ　Ｃｒｙｓｔａｌ　Ｄｅｖｉｃｅ）などの画像表示装置からなり、コンピュータ部１４で生成された画像データに応じた画像表示を行う。
【００５８】
ネットワーク部１３は、ＬＡＮやインターネットなど多数のコンピュータが相互に接続されている。ネットワーク部１３を介してコンピュータ部１４は、外部とデータのやり取りを行う。
【００５９】
コンピュータ部１４は、図１に示すように、ＣＰＵ部１４１、メモリ部１４２、ブリッジ部１４３、外部入出力部１４４、外部記憶部１４５、ＬＡＮデバイス部１４６、フレームバッファ部１４７、およびグラフィックスプロセッサユニット（以下、ＧＰＵ部という）１４８を有している。
【００６０】
ＣＰＵ部１４１は、メモリ部１４２に格納されたプログラムに従ってコンピュータ全体を制御する。
【００６１】
メモリ部１４２は、ＣＰＵ部１４１が高速に読み書きするためのＤＲＡＭやＳＲＡＭなどの記憶装置で、プログラムやデータを格納する。
【００６２】
ブリッジ部１４３は、ＣＰＵ部１４１、ＧＰＵ部１４８がメモリ部１４２や外部入出力部１４４とデータをやり取りするための接続回路である。
【００６３】
外部入出力部１４４は、インプットデバイス１１や外部記憶部１４５とデータのやり取りをするためのインタフェースであり、ＵＳＢインタフェースやＩＤＥインタフェース、ＰＣＩインタフェースなどを有する。
【００６４】
外部記憶部１４５は、プログラムやデータを格納するハードディスクドライブやＣＤＲＯＭドライブ、ＭＯドライブ、メモリカードなどの大容量の記憶装置である。
【００６５】
ＬＡＮデバイス部１４６は、外部のネットワークとコンピュータ部１４を接続するためのインタフェースである。たとえばＬＡＮデバイス部１４６は、モデムやイーサネット（Ｅｔｈｅｒｎｅｔ）（登録商標）デバイス等を含む。
【００６６】
フレームバッファ部１４７は、ＧＰＵ部１４８が画像などのデータを一時的に記憶するための高速なメモリを有する。
【００６７】
ＧＰＵ部１４８は、コンピュータグラフィックスの高速描画を支援する装置である。また、ＧＰＵ部１４８は、フレームバッファ部１４７に描画された画像データを外部のディスプレイデバイス１４２に出力する作業も行う。
【００６８】
図２は、図１のＧＰＵ部１４８の具体的な構成例を示すブロック図である。
このＧＰＵ部１４８は、図２に示すように、プロセッサ部１４８１、ＲＡＭＤＡＣ１４８２、インターコネクト部１４８３、作業メモリ部１４８４、および算術演算部１４８５を有する。
【００６９】
プロセッサ部１４８１は、ＣＰＵ部１４５１から受け取った手順に従ってレンダリング処理を行う。
【００７０】
ＲＡＭＤＡＣ１４８２は、フレームバッファ部１４７に記憶された画像データをディスプレイ１２で表示するためにデジタルデータがアナログデータに変換し、変換後のアナログデータをディスプレイ１２に出力する。
【００７１】
インターコネクト部１４８３は、ＧＰＵ部１４８の内部（プロセッサ部１４８１、ＲＡＭＤＡＣ１４８２、作業メモリ部１４８４、および算術演算部１４８５）および外部にある各ブロック（フレームバッファ１４９やブリッジ部１４３）間でデータをやり取りするための接続回路である。
【００７２】
作業メモリ部１４８４は、プロセッサ部１４８１や算術演算部が使用するメモリで、プログラムや一時的な計算結果が記憶される。
【００７３】
算術演算部１４８５は、プロセッサ部１４８１がＢＲＤＦの評価計算を効率良く行うための演算器を有し、複合演算器などを実装する。
【００７４】
以上の構成を有するコンピュータ部１４は、コンピュータ部１４内に格納されたプログラムによって、たとえば図３に示すように、コンピュータ部１４の内部、特にＣＰＵ部１４１、ＧＰＵ部１４８に論理的な構成が構築される。
この論理ブロック２００は、図３に示すように、大きく３段から構成され、幾何演算部２０１、イメージ合成部２０２、およびピクセル毎演算部２０３により構成される。
【００７５】
幾何演算部２０１は、図３に示すように、アプリケーション部２０１１、カメラ座標変換部２０１２、透視変換部２０１３、およびラスタライズ部２０１４を含む。
【００７６】
アプリケーション部２０１１は、インプットデバイス１１からの操作情報に従って所定の情報処理を行い、複数のポリゴンから構成されるシーングラフを生成し、カメラ座標変換部２０１２、およびイメージ合成部２０２に出力する。
カメラ座標変換部２０１２は、各ポリゴンの座標を仮想カメラの座標を基点とした座標系に変換し、透視変換部２０１３に出力する。
透視変換部２０１３は、各ポリゴンの座標を仮想カメラの２次元の投影面に投影する。
ラスタライズ部２０１４は、各ポリゴンをディスプレイ部１２の解像度特性に合ったピクセルに分解し、ピクセル毎計算部２０３に出力する。
【００７７】
イメージ合成部２０２は、図３に示すように、イメージバッファ部２０２１およびイメージ合成演算部２０２２を含む。
【００７８】
イメージバッファ部２０２１は、一般的にフレームバッファといわれる画像を記憶保持するために使用されるメモリで、ピクセル毎計算部２０３の演算結果やイメージ合成演算部２０２２に演算結果のデータ、ディスプレイ部１２に表示するデータを一時的に保持する。
イメージ合成演算部２０２２は、イメージバッファ部２０２１に格納された画像データに対して、画像の重み付け合成などのイメージコンポジティング処理を行う（たとえば　Ｆｏｌｅｙ，ＣＯＭＰＵＴＥＲ　ＧＲＡＰＧＨＩＣＳ　ｐｒｉｎｃｉｐｌｅｓ　ａｎｄ　ｐｒａｃｔｉｃｅ，ｐｐ．８３５，Ｓｅｃｔｉｏｎ
１７．６　Ｉｍａｇｅ　Ｃｏｍｐｏｓｉｔｉｎｇ　参照）。
【００７９】
ピクセル毎計算部２０３は、ポリゴンよりも小さい単位のピクセル毎に実行される演算装置で、ラスタライズ部２０１４で用意した情報に基づいて各ピクセルのライティング計算を行う。
【００８０】
ピクセル毎計算部２０３は、図３に示すように、ＢＲＤＦ演算部２０３１、ルックアップ部２０３２、べき乗演算部２０３３、スケール演算部２０３４、およびテクスチャマップ２０３５を含む。
【００８１】
ＢＲＤＦ演算部２０３１は、後で詳述する２次形式を使って定義された本発明に係るＢＲＤＦモデルを次のように評価演算する。
【００８２】
【数４】
2004126692.tif 000006
【００８３】
ここで、Ｌ，Ｖはラスタライズ部２０１４から入力した光源と視点の方向を表すベクトルを示す。Ｎは方線の方向を表す（０，０，１）のベクトルを示す。Ｍはルックアップ部２０３２から入力した本発明に係るＢＲＤＦの性質を表すパラメータを示す。
【００８４】
小行列の全ての要素が０の場合は、その項の値は明らかに０になる、そのときは、その項の演算を省略することができる。
また、複合演算器を使うと、ＬＭ２１Ｖと（ＬＭ１１Ｌ＋ＬＭ３１Ｎ）と（ＶＭ２２Ｖ＋ＶＭ３２Ｎ）が同程度の計算コストを計算できる。これにより、ハードウェア資源の利用効率の向上を図っている。
【００８５】
ルックアップ部２０３２は、ラスタライズ部２０１４から入力したアドレスに従って各ピクセルに対応したパラメータをテクスチャマップ２０３５からルックアップする。得られたパラメータはＢＲＤＦ演算部２０３１、べき乗演算部２０３３、およびスケール演算部２０３４で行い関数演算のパラメータとして使用される。
【００８６】
本実施形態においては、後で詳述するように、単一の本発明に係るＢＲＤＦで再現しずらい表現を持つＢＲＤＦに対応するために、ＢＲＤＦ演算部２０３１の評価値をべき乗演算部２０３３やスケール演算部２０３４で変化させている。
【００８７】
べき乗演算部２０３３は、次式のように、ＢＲＤＦ演算部２０３１から入力した評価値を累乗する。
【００８８】
【数５】
2004126692.tif 000007
【００８９】
スケール演算部２０３４は、次式のように、べき乗演算部２０３３から入力した値Ｐｏｗｅｒとラスタライズ部２０１４から入力した光源の強度ＬｉｇｈｔＩｎｔｅｎｓｉｔｙとルックアップ部２０３２から入力したＲＧＢ別の反射率Ｒｅｆｌｅｃｔｉｖｉｔｙを掛け合わせる演算を行う。
【００９０】
【数６】
2004126692.tif 000008
【００９１】
スケール演算部２０３４は、数６に基づいて得られたＲｅｓｕｌｔＩｎｔｅｎｓｉｔｙをイメージバッファ２０２１に書き込む。
イメージバッファ２０２１に書き込まれたデータは、イメージ合成演算部２０２２においてイメージコンポジティング処理により合成される。これの処理により、１ポリゴンをマルチパスレンダリングの手法でシェーディングパラメータを変えながら複数回描画し、それらを合成することで目的のシェーディング結果画像を得ることができる。
【００９２】
次に、イメージ合成部を利用した場合の動作例について、図４および図５のフローチャートに関連付けて説明する。
【００９３】
本実施形態がイメージ合成部を利用して、一般的にマルチパスレンダリングと称される手法によって、１つのポリゴンに対して複数回のレンダリングを行い、各レンダリング結果をイメージコンポジティング技術の要領で合成し、１つのポリゴンを描画することができる。
この手順を、図４のフローチャートを参照して説明する。
【００９４】
ステップＳＴ１：マルチパスレンダリング初期化
まず、ステップＳＴ１において、マルチパスレンダリングを行うために必要な初期化を行う。たとえば、ポリゴンの描画先のイメージバッファのデータの消去、描画手順や作業内容を表すイメージグラフをセットなどを行う。
【００９５】
ステップＳＴ２：トラバース
ステップＳＴ２において、イメージグラフをトラバースして、１パス分の描画のためのセットアップをする。
【００９６】
ステップＳＴ３：１パス描画
ステップＳＴ３において、幾何演算部２０１、ピクセル毎演算部２０３が協調して１パス分のポリゴンをイメージバッファ２０２１に描画する。
【００９７】
ステップＳＴ４：イメージ合成
ステップＳＴ４において、今ステップや前ステップで描画したポリゴンを合成したり必要な画像処理を行う。
【００９８】
ステップＳＴ５：マルチパス完了判定
ステップＳＴ５において、全てのパス分の描画が完了したかどうかを判定する。マルチパス完了判定で、まだ途中であればステップＳＴ２からの処理に戻って、次のパスのセットアップを行い処理を継続し、最後にマルチパスレンダリングを完了させる。
【００９９】
上記の手順中、ステップＳＴ３における１パス描画のための詳細な手順は図５に示すようになる。
【０１００】
ステップＳＴ１１：カメラ座標変換
まず、ステップＳＴ１１において、カメラ座標変換部２０１２によりモデル座標系のポリゴンをカメラ座標系に変換する。
【０１０１】
ステップＳＴ１２：透視変換
ステップＳＴ１２において、透視変換部２０１３によりポリゴンをスクリーン座標に投影する。
【０１０２】
ステップＳＴ１３：内挿パラメータ初期化
ステップＳＴ１３において、ラスタライズ部２０１４によりテクスチャアドレス、光源方向、視点方向などポリゴン内の各ピクセルについて内挿補間して求める値の初期化をする。
【０１０３】
ステップＳＴ１４：内挿パラメータ補間
次に、ステップＳＴ１４において、ラスタライズ部２０１４によりテクスチャアドレス、光源方向、視点方向などを各ピクセル毎に補間して求める。
【０１０４】
ステップＳＴ１５：テクスチャルックアップ
ステップＳＴ１５において、ルックアップ部２０３２によりテクスチャアドレスに従って、テクスチャデータからテクセルの値をルックアップする。
【０１０５】
ステップＳＴ１６：ＢＲＤＦ計算
次に、ステップＳＴ１６において、ＢＲＤＦ演算部２０３１で本発明に係るＢＲＤＦモデルを評価演算する。
【０１０６】
ステップＳＴ１７：べき乗計算
ステップＳＴ１７において、べき乗演算部２０３３で、前ステップＳＴ１６で得られた評価結果をべき乗する。
【０１０７】
ステップＳＴ１８：スケール計算
ステップＳＴ１８において、スケール演算部２０３４で前ステップＳＴ１７で得られた結果をスケーリングする。
【０１０８】
ステップＳＴ１９：イメージバッファに書き込み
ステップＳＴ１９において、前ステップＳＴ１８で得られた結果をイメージバッファ２０２１に書き込む。
【０１０９】
ステップＳＴ２０：ラスタライズ完了判定
ステップＳＴ２０において、ラスタライズが完了したか否かの判定を行い、全てのポリゴン内の全てのピクセルを描画するまでステップＳＴ１４からの処理を繰り返す。
【０１１０】
次に、本発明に係るＢＲＤＦモデル、およびその評価演算などについて順を追って詳細に説明する。
【０１１１】
２次形式を用いたＢＲＤＦモデル化
本実施形態においては、ＢＲＤＦを２次形式（Ｑｕａｄｒａｔｉｃ−ｆｏｒｍ）を使い次のようにモデル化する（以下、このモデルを、本発明ＢＲＤＦモデルと呼ぶ。）。
【０１１２】
【数７】
2004126692.tif 000009
【０１１３】
ここで、行列Ｍは本発明ＢＲＤＦモデルの特性を決めるパラメータである。式の性質上、任意のＭは対称行列または三角行列に簡略化できる。また、Ｌは表面座標系での光源方向を表すベクトルを示す。Ｖは表面座標系での視点方向を表すベクトルを示す。Ｎは表面座標系での法線方向を表すベクトルを示す。
本発明ＢＲＤＦモデルは、上記Ｌ，Ｖ，Ｎを並べて構成されるベクトル〔ＬＶＮ〕を用いる。
たとえば、各Ｌ，Ｖ，Ｎは、それぞれの方向を表した３次元の単位ベクトルで良い。これを具体的に書くと以下のようになる。
【０１１４】
【数８】
2004126692.tif 000010
【０１１５】
また、各Ｌ，Ｖ，Ｎは、他のベクトル空間を用いて表したベクトルでも良い。たとえば、極座標系やクオータニオン（Ｑｕａｔｅｒｎｉｏｎ）など一般的な座標系を用いても良いし、他の特殊な座標系を使っても良い。
また、適当な線形変換を用いて次数を退化させても良い。その他、任意の初等演算やテーブル参照、またはその組み合わせによって、それらのベクトルを変換したものであってもよい。以下の例は、３次元ベクトルのＬ，Ｖを２次元に退化させたものと、Ｎを定数１に変換したものを使用している。
【０１１６】
【数９】
2004126692.tif 000011
【０１１７】
計算方法の詳細
本発明ＢＲＤＦモデルは、以下のようににモデルのパラメータを表す行列を小行列に分割して、それらの小行列からなる多項式を用いて評価演算することもできる。
【０１１８】
【数１０】
2004126692.tif 000012
【０１１９】
小行列Ｍｎｎが零行列なら、その項は明らかに値が０となる。つまり、その項の計算を省略することができる。実際の実装では、必要な項だけ実装するほうが効率がよい。
次の行列表現は以下のように計算すると、必要な乗算器の数が軽減できる。
【０１２０】
【数１１】
2004126692.tif 000013
【０１２１】
行列とベクトルの乗算の後、ベクトル同士の乗算をする手順で計算でき、乗算１２回と加算８回となる。
一方、同式は以下のようにに各項を展開した形式にもなるが、この場合、乗算１８回と加算８回が必要となる。
【０１２２】
【数１２】
2004126692.tif 000014
【０１２３】
結果、前者（数１１）の方法で計算したほうが、効率が良い。
以上のように、本発明ＢＲＤＦは積和演算だけで構成される。また、ベクトルや行列により構成される式なので、効率の良い演算が可能である。
【０１２４】
本発明ＢＲＤＦのシェーディング効果
本発明ＢＲＤＦのシェーディング効果はパラメータＭによって決まる。以下、シェーディング効果とパラメータの対応関係を説明する。
パラメータＭの中の０は零行列、Ｍｎｎは少なくとも１つの要素が０でない小行列である。
【０１２５】
アンビエントライティング効果は、光源方向と視点方向に非依存の効果を意味する。ディフューズ反射効果は光源方向に依存で視点方向には非依存の効果を意味する。スペキュラー反射効果は、光源方向と視点方向に依存の効果を意味する。それぞれ、以下のようにに一つ以上の零行列ではない小行列をもつパラメータＭで表現できる。
【０１２６】
アンビエントライティング効果パラメータ：
【０１２７】
【数１３】
2004126692.tif 000015
【０１２８】
ディフューズ反射効果パラメータ：
【０１２９】
【数１４】
2004126692.tif 000016
【０１３０】
スペキュラー反射効果パラメータ：
【０１３１】
【数１５】
2004126692.tif 000017
【０１３２】
光源方向依存効果パラメータ：
【０１３３】
【数１６】
2004126692.tif 000018
【０１３４】
視点方向依存効果パラメータ：
【０１３５】
【数１７】
2004126692.tif 000019
【０１３６】
全効果パラメータ：
【０１３７】
【数１８】
2004126692.tif 000020
【０１３８】
従来モデルとの対応
本発明ＢＲＤＦは、従来から良く知られているシェーディングモデルを包含する効果をもつ。
以下に、従来のモデルの表記と本発明ＢＲＤＦにおけるパラメータの詳細との対応を記す。
【０１３９】
アンビエントライティングモデル　ｋａ　：
【０１４０】
【数１９】
2004126692.tif 000021
【０１４１】
ディフュー反射モデル　ｋａ　（Ｎ・Ｌ）：
【０１４２】
【数２０】
2004126692.tif 000022
【０１４３】
フォン反射モデル　ｋｓ　（Ｖ・Ｌ）ｎ　：
（フォンモデルのｎ乗にあわせて、本発明ＢＲＤＦの評価結果もｎ乗する。）
【０１４４】
【数２１】
2004126692.tif 000023
【０１４５】
ＬａｆｏｒｔｕｎｅＢＲＤＦ
ρｓ　〔Ｃｘ　ｕｘ　ｖｘ　＋Ｃｙ　ｕｙ　ｖｙ　＋Ｃｚ　ｕｚ　ｖｚ　〕ｎ　：
（Ｌａｆｏｒｔｕｎｅ　ＢＲＤＦのｎ乗とρｓ　倍にあわせて、本発明ＢＲＤＦの評価結果もｎ乗、ρｓ　倍する。）
【０１４６】
【数２２】
2004126692.tif 000024
【０１４７】
ポリノミナルテクスチャマップ
ａ０　ｌｕ　２　＋ａ１　ｌｖ　２　＋ａ１　ｌｕ　ｌｖ　＋ａ３　ｌｕ　＋ａ４　ｌｖ　＋ａ５　：
【０１４８】
【数２３】
2004126692.tif 000025
【０１４９】
以上のように、本発明ＢＲＤＦを用いると、従来の各種シェーディングモデルと同等のモデルをパラメータの適切な設定で実現し、それらの効果を表現できる。さらにこれらの設定を組み合わせて複合した効果や、これらの効果を包含した効果を発現させることもできる。
【０１５０】
視点方向依存効果が不要な場合
視点方向依存効果が不要なとき、本発明ＢＲＤＦを以下のように変形してもよい。
【０１５１】
【数２４】
2004126692.tif 000026
【０１５２】
上記の式は、従来法のＬａｆｏｒｔｕｎｅＢＲＤＦとポリノミナルテクスチャマップ（Ｐｏｌｙｎｏｍｉａｌ　Ｔｅｘｔｕｒｅ　Ｍａｐｓ　）の２つのモデルにより表現できる効果を少なくとも含んでいる。Ｍ２１がＬａｆｏｒｔｕｎｅＢＲＤＦに対応し、Ｍ１１，Ｍ３１，Ｍ３３がポリノミナルテクスチャマップに対応することは以前に説明したが、これらの２つのモデルの小行列のセットからパラメータ行列Ｍが成り立っていることがわかる。
しかも、これらのモデルに対応する小行列が互いに排他的な位置を占めるため、お互いの効果は独立していると考えられる。つまり、この変形型本発明ＢＲＤＦは、ポリノミナルテクスチャマップ（Ｐｏｌｙｎｏｍｉａｌ　Ｔｅｘｔｕｒｅ　Ｍａｐｓ　）とＬａｆｏｒｔｕｎｅＢＲＤＦとが持つ相補的な効果を包含した効果を少なくとも持ち、かつそれぞれの効果を独立にコントロールできる特徴をもつ。
【０１５３】
単一の本発明ＢＲＤＦで再現しづらい表現をもつＢＲＤＦに対応するための方法単一の本発明ＢＲＤＦで再現しづらい表現をもつＢＲＤＦに対しては、単数または複数の本発明ＢＲＤＦの評価結果を各種演算によって合成し、目的のＢＲＤＦを作り出せばよい。
たとえば、各本発明ＢＲＤＦの出力を末端ノードにして、図６に示すように、各種演算器ＯＰ１〜ＯＰ３を中間ノードとしたツリーを作り、ルートノードの出力を目的のＢＲＤＦの値とする。各種演算器ＯＰ１〜ＯＰ３は、加減算、乗算、除算、累乗算、２次形式などの演算器を選択的に使用する。
【０１５４】
たとえば、ＰｈｏｎｇシェーディングやＬａｆｏｒｔｕｎｅのＢＲＤＦで使うスペキュラー反射の指向性を制御したい場合は、以下のように本発明ＢＲＤＦの評価結果をｎ−１乗（またはｎ乗）すると良い。
【０１５５】
【数２５】
2004126692.tif 000027
【０１５６】
セルフシャドウやビューディペンデント効果をよりはっきり出したいときは、以下のように異なるパラメータを持つ本発明ＢＲＤＦモデルの評価結果を掛け合わせると良い。
【０１５７】
【数２６】
2004126692.tif 000028
【０１５８】
また、本発明ＢＲＤＦモデルの評価で使用する２２　次形式の行列演算器を流用してもよい。以下の式のように、異なる本発明ＢＲＤＦモデルの評価結果を合成することもできる。
【０１５９】
【数２７】
2004126692.tif 000029
【０１６０】
ここで、ｑｕａｄＢＲＤＦ２　，ｑｕａｄＢＲＤＦ３　は、それぞれ異なる本発明ＢＲＤＦモデルの評価結果を示し、ＢＲＤＦ１　はその合成結果を示している。
【０１６１】
三角行列と行列の同時計算
本発明ＢＲＤＦの評価演算を効率よく行うため、次のように、本発明ＢＲＤＦを小行列からなる複数の項に分解した形式を用いることができることは既に述べた。
【０１６２】
【数２８】
2004126692.tif 000030
【０１６３】
このうち、ＬＭ２１Ｖと（ＬＭ１１Ｌ＋ＬＭ３１Ｎ）と（ＶＭ２２Ｖ＋ＶＭ３２Ｎ）は、同量の演算器の組み合わせによって計算できるため、これら３種の演算を選択的に演算できる複合演算器を作ると実装効率が良い。
上記３種の演算を詳しく見てみる。
【０１６４】
まず、次の２つの異なるベクトルから成る行列演算式ＬＭ２１Ｖは、乗算１２回と加算８回から構成される。
【０１６５】
【数２９】
2004126692.tif 000031
【０１６６】
次に、次の三角行列から成る２次形式行列とベクトル乗算との和（ＬＭ２１Ｌ＋ＬＭ３１Ｎ）は、それぞれ乗算９回と加算５回、乗算３回と加算２回、からなる２項を足し合わせた、乗算１２回と加算８回の演算となる。
【０１６７】
【数３０】
2004126692.tif 000032
【０１６８】
また、演算（ＶＭ２２Ｖ＋ＶＭ３２Ｎ）についても、上記と同様に乗算１２回と加算８回の演算とからなる。
つまり３種の演算、ＬＭ２１Ｖと（ＬＭ１１Ｌ＋ＬＭ３１Ｎ）と（ＶＭ２２Ｖ＋ＶＭ３２Ｎ）は、同量の計算器の組み合わせを使う２種の第１モードおよび第２モードを持った図７に示すような複合演算器ＣＯＰ１，ＣＯＰ２によって、これら３種からどれか一つを選択して演算すれば良い。
【０１６９】
図８は、図７を実現するための演算回路例を示す図である。
この演算回路３００は、図８に示すように、乗算器３０１〜３１１、加算器３１２〜３１７、およびレジスタ３１８〜３２２をツリー状に接続して構成されている。
この演算回路３００は、第１モード、第２モードで動作可能である。
第１モードでは、加算器３１３，３１７、レジスタ３１８，３２０，３２２を除く回路構成で演算を行う。
第２モードでは、乗算器３０４の加算器３１４への出力、乗算器３０８の加算器３１５４への出力、およびレジスタ３２１を除く回路構成で演算を行う。
このように、演算回路３００は、一部の配線を変更するだけ、第１モードと第２モードの演算を同じ演算回路を用いて実現できる。
【０１７０】
シフトバリアント（Ｓｈｉｆｔ−ｖａｒｉａｎｔ　）ＢＲＤＦ
図９に示すように、行列Ｍをテクセルとするテクスチャマップをつくる。実行時にテクスチャマップから行列Ｍをルックアップして、本発明ＢＲＤＦのパラメータとして使用する。
この場合、ＢＲＤＦ評価演算部４０１に対してテクスチャマップ４０２から行列ＭをＭを供給し、インタポレータ４０３からベクトルＬ，Ｖ，Ｎを供給する。そして、ＢＲＤＦ評価演算部４０１の演算結果をフレームバッファ４０４に格納する。
【０１７１】
描画しようとする表面がビュー座標系に対してスケーリングするために生じるテクスチャマップのサンプリング問題は、従来の方法と同様に本発明ＢＲＤＦのパラメータをＭＩＰＭＡＰ（複数解像度テクスチャ）化すればよい。
下式は、パラメータｍ１１−９９　を表面上のパッチΩについてｎサンプルするとき、そのパッチ領域について計算した本発明ＢＲＤＦを平均化した値と、同じパッチ領域について平均化したパラメータを用いて本発明ＢＲＤＦを計算した結果が等しいことを表している。
【０１７２】
【数３１】
2004126692.tif 000033
【０１７３】
つまり、従来のＭＩＰＭＡＰ技術やＢｉ−Ｌｉｎｅａｒ，Ｔｒｉ−Ｌｉｎｅａｒフィルタリング技術を使えば上記のサンプリング問題は解決できる。
【０１７４】
インデックスマップを利用したパラメータの取得とべき乗計算の方法
従来のテクスチャマッピングで使われてきたインデックスカラーの技術を応用して、本発明ＢＲＤＦモデルのパラメータとべき乗計算のための変換テーブルをインデックス化したテーブルに持ち、それを参照することも考えられる。
【０１７５】
図１０は、インデックスマップを利用した場合の論理回路構成を示す図である。図１０は、上述した具体的な実施形態において説明した図３の論理ブロック２００に対応し、さらに一般化した構成を有する。
図１０において、５００がインデックスマップを、５０１がラスタライズ部を、５０２がルックアップ部を、５０３がパラメータリストを、５０４がＢＲＤＦ演算部を、５０５がべき乗リスト部を、５０６がべき乗処理部を、５０７がスケール処理部をそれぞれ示している。
【０１７６】
描画オブジェクトの表面上の位置に対応するインデックスをインデックスマップ５００からルックアップ部５０２でルックアップし、そのインデックスに対応したパラメータとべき乗リストを得る。得られたパラメータは、本発明ＢＲＤＦの計算に使われる。本発明ＢＲＤＦの評価結果のべき乗値は、その評価結果値に対応した値をべき乗リストから参照し、適当な補間を行った結果が目的のべき乗値となる。
【０１７７】
本発明ＢＲＤＦのパラメータ算出方法
図１１に示すように、実世界にある布や皮膚など対象となるマテリアルの特性を特別な装置で観測して得たＢＲＤＦ生データや、それらのマテリアルの反射特性をシミュレーションによって計算した結果得たＢＲＤＦ生データから、本発明ＢＲＤＦで使用するパラメータを得ることができる。
【０１７８】
以下に、ＢＲＤＦ生データから本発明ＢＲＤＦで使用するパラメータを求める方法を説明する。
光源方向Ｌ（ｋ）　、視点方向Ｖ（ｋ）　に対応した生ＢＲＤＦデータである反射率ｒ（ｋ）　が分かっているとき、パラメータＭを未知数として本発明ＢＲＤＦモデルに当てはめる。
【０１７９】
【数３２】
2004126692.tif 000034
【０１８０】
この式を展開すると次のような多項式が得られる。
【数３３】
2004126692.tif 000035
【０１８１】
ここで、ｗ（ｋ），１１−９９　はＬ（ｋ）　、Ｖ（ｋ）　、Ｎから得られる未知数ｍ１１−９９　に対応する乗数である。
【０１８２】
観測データがｎ通り存在するとき、ｎ通りの上式からなる方程式が得られる。これらのｎ通りの式をもっとも良く満たす係数ｍ１１−９９　を求めれば、すなわちパラメータＭが求められる。
これを求めるには、上記式の両辺の値の差の２乗の平均ができるだけ小さくなるようにする最小二乗近似法などを使えばよい。
【０１８３】
ポリノミナルテクスチャマップ（Ｐｏｌｙｎｏｍｉａｌ　Ｔｅｘｔｕｒｅ　Ｍａｐｓ　）用パラメータから簡易的にスペキュラー成分を作り出す方法
ポリノミナルテクスチャマップのパラメータから、本発明ＢＲＤＦで使えるスペキュラー成分の効果を簡易的に作り出すことができる。
まず、以下の２つの分布が同一だと仮定する（図１２参照）。
すなわち、光源方向に対応しディフューズの反射率分布およびハーフベクターの方向に対応したスペキュラーの反射率分布の２つである。
この仮定より、スペキュラー成分を持つ効果は以下の式で作り出せる。
【０１８４】
【数３４】
2004126692.tif 000036
【０１８５】
ここで、ＰＴＭはポリノミナルテクスチャマップモデルの評価式である。
【０１８６】
上記式の右辺第２　項を詳しく書くと以下のようになる。
【０１８７】
【数３５】
2004126692.tif 000037
【０１８８】
この式を本発明ＢＲＤＦのパラメータ行列に当てはめると以下のようになる。
【０１８９】
【数３６】
2004126692.tif 000038
【０１９０】
上記のままではポリノミナルテクスチャマップにハーフベクターを与えた効果と同一である。
しかし、上記パラメータから得られる擬似的な法線方向などを利用して適当な変化をパラメータに与えると異方性などの効果が得られる可能性がある。この点で本発明ＢＲＤＦモデルの方が今後の効果拡張に有利である。
以上をまとめて、簡易スペキュラー効果を使った評価結果は以下のような式で求められる。
【０１９１】
【数３７】
2004126692.tif 000039
【０１９２】
以上説明したように、本発明ＢＲＤＦモデルは従来のシェーディングモデルが持つ効果を組み合わせても得られない効果を持つ。
「従来モデルとの対応」節において、従来のシェーディングアルゴリズムであるＬａｆｏｒｔｕｎｅＢＲＤＦやポリノミナルテクスチャマップ（Ｐｏｌｙｎｏｍｉａｌ　Ｔｅｘｔｕｒｅ　Ｍａｐｓ　）等と本発明ＢＲＤＦモデルとの対応関係を説明している。ここの説明に従って適当なパラメータＭを決定すれば、従来のシェーディング技術と同等の効果を本発明ＢＲＤＦモデルで表現できる。
色工学において、異なる光の効果を重ね合わせるためには個々の光の効果を加算すればよいことが一般的に知られている。本発明ＢＲＤＦモデルは線形性を有し、異なるパラメータＭを足し合わせることで効果を重ね合わせることができる。
しかし、従来のシェーディングアルゴリズムに対応したパラメータＭを重み付け加算していかに合成しても、本発明ＢＲＤＦモデルのパラメータＭの空間をすべて満たすことはできない。
したがって、本発明ＢＲＤＦモデルは従来のシェーディングモデルにはない、新しい効果を持つ。
【０１９３】
また、本発明のアルゴリズムを従来回路に基づいて設計した場合について考察する。
汎用の演算器と比較すると、図７の演算器（具体的には図８）は本発明ＢＲＤＦに特有の２つの演算モードを効率よく処理できるよう特化されている。したがって汎用の演算器でこれを処理するよりも効率よく処理できる。
また、特殊演算器であるＮＶＩＤＩＡのグラフィックスプロセッサがもつ特殊な演算器であるレジスタコンバイナと比較する。
図１６よりも詳細なレジスタコンバイナ内部の構成は不明である。しかし、図１６の詳細度で考察しても、レジスタコンバイナの非効率さは明らかである。
図１３は、図１６のレジスタコンバイナを用いて、図７の第１モードの機能を実現したものである。
また、図１４は図１６のレジスタコンバイナを用いて、図７の第２モードの機能を実現したものである。この場合３つのレジスタコンバイナＣＭＢ１〜ＣＭＢ３を３段に組み合わせる必要がある。
３段のうち最初の２段の演算は同時刻に演算できるにもかかわらず、２段に分けて演算せざるを得ないため計算の遅延が大きい。また、第１モードでは３つのうち２つのレジスタコンバイナ内の演算回路の利用効率が半減している。
第２モードでも３つのうち１つのレジスタコンバイナ内の演算回路の利用効率が半減している。
よって、本発明ＢＲＤＦモデルを従来技術であるレジスタコンバイナで演算することは非効率である。
【０１９４】
以上のように、本実施形態によれば、本発明ＢＲＤＦは、従来からリアルタイム用途で使われる多くのシェーディングモデルを一般化したモデルなので、従来モデルと同等の効果を表現できる。さらに、このモデルが持つ独自効果を表現することができる。
また、衣服や皮膚などのリアルな素材を観測、またはシミュレーションによって求めたＢＲＤＦ生データから、本発明ＢＲＤＦモデル用のパラメータを生成することができる。また、ポリノミナルテクスチャマップ（Ｐｏｌｙｎｏｍｉａｌ　Ｔｅｘｔｕｒｅ　Ｍａｐｓ　）などの従来モデルのパラメータを材料にして本発明ＢＲＤＦのパラメータを得ることもできる。
また、本発明ＢＲＤＦは、ＢＲＤＦを２次形式行列表現でモデル化したものである。モデルの評価は積和計算だけで行える。本発明ＢＲＤＦを小行列からなる多項式の形式に分解すると、不要な項の計算は省略できる。こうすることで、表現力と計算効率のトレードオフの関係を調整することができる。
また、ベクトルや行列により構成されるモデルなので、ベクトル演算器を使用して効率よく演算できる。
【０１９５】
さらに、従来のテーブル参照を多用したＢＲＤＦ表現などに比べるとコンパクトな表現形式をもつ。また、表現力と計算効率のトレードオフの関係は調節できるため、さらにコンパクトな表現形式で計算することもできる。
このようなコンパクトさを持つため、テクスチャマッピング技術と組み合わせて、シフト−バリアント（Ｓｈｉｆｔ−ｖａｒｉａｎｔ　）化することが容易である。モデルのパラメータＭをテーブルに格納し、実行時にルックアップすれば良い。
【０１９６】
ＢＲＤＦを２次形式行列表現でモデル化したため、一般的なベクトル・行列演算に特化したハードウェアであれば、このモデルを効率よく評価することができる。本発明ＢＲＤＦはモデルの評価に特殊な回路を必要としないことも特徴である。しかし、既に説明した複合演算器があれば、この本発明ＢＲＤＦをさらに効率よく演算できる。
【０１９７】
【発明の効果】
以上説明したように、本発明によれば、従来からリアルタイム用途で使われているシェーディングモデルを一般化したモデルを採用していることから、従来モデルと同等の効果を発現できる。さらに、このモデルが持つ独自効果を表現することができる。
衣服や皮膚などのリアルな素材を観測、またはシミュレーションによって求めたＢＲＤＦ生データから、本発明に係るＢＲＤＦモデル用のパラメータを生成することができる。また、ポリノミナルテクスチャマップ（Ｐｏｌｙｎｏｍｉｎａｌ　Ｔｅｘｔｕｒｅ　Ｍａｐｓ）などの従来モデルのパラメータを材料にして本発明に係るＢＲＤＦのパラメータを得ることもできる。
【０１９８】
本発明に係るＢＲＤＦは、ＢＲＤＦを２次形式行列表現でモデル化したものであり、モデルの評価は積和演算だけで行える。本発明に係るＢＲＤＦを小行列からなる多項式の形式に分解すると、不要な項の計算は省略できる。これにより、表現力と演算効率のトレードオフの関係を調整することができる。
ベクトルや行列により構成されるモデルであることから、ベクトル演算器を使用して効率良く演算することができる。
【０１９９】
従来のテーブル参照を多用したＢＲＤＦ表現などに比べるとコンパクトな表現形式を持つ。また、表現力と演算効率のトレードオフの関係は調整できるため、さらにコンパクトな表現形式で演算することもできる。
上記のようなコンパクトさを持つため、テクスチャマッピング技術と組み合わせてシフトバリアント（Ｓｈｉｆｔｓ−ｖａｒｉａｎｔ）化することが容易である。モデルのパラメータＭをテーブルに格納し、実行時にルックアップすれば良い。
【０２００】
ＢＲＤＦを２次形式行列表現でモデル化したため、一般的なベクトル・行列演算に特化したハードウェアであれば、このモデルを効率良く評価することができる。本発明に係るＢＲＤＦはモデルの評価に特殊な回路を必要としない。しかし、既に説明した複合演算器があれば、本発明に係るＢＲＤＦをさらに効率良く演算することができる。
【図面の簡単な説明】
【図１】本発明に係る画像処理装置の一実施形態を示すブロック図である。
【図２】図１のＧＰＵ部の具体的な構成例を示すブロック図である。
【図３】本実施形態に係るコンピュータ部に格納されたプログラムによって、構築された論理ブロックの構成例を示す図である。
【図４】イメージ合成部を利用した場合の動作例について説明するためのフローチャートである。
【図５】図４のステップＳＴ３における１パス描画のための詳細な手順を説明するためのフローチャートである。
【図６】単一の本発明ＢＲＤＦで再現しづらい表現をもつＢＲＤＦに対応するための方法を説明するための図である。
【図７】本発明ＢＲＤＦの評価演算を効率よく行うための好適な演算器例を説明するための図である。
【図８】図７を実現するための演算回路例を示す図である。
【図９】行列Ｍをテクセルとするテクスチャマップをつくり、実行時にテクスチャマップから行列Ｍをルックアップして、本発明ＢＲＤＦのパラメータとして使用する例を説明するための図である。
【図１０】インデックスマップを利用した場合の論理回路構成を示す図である。
【図１１】本発明ＢＲＤＦのパラメータ算出方法を説明するための図である。
【図１２】光源方向に対応しディフューズの反射率分布およびハーフベクターの方向に対応したスペキュラーの反射率分布の２つが同一であるという仮定を説明するための図である。
【図１３】図１６のレジスタコンバイナを用いて、図７の第１モードの機能を実現した場合の構成例を示す図である。
【図１４】図１６のレジスタコンバイナを用いて、図７の第２モードの機能を実現した場合の構成例を示す図である。
【図１５】従来のプログラマブルピクセルシェーダの仕組みを説明するための図である。
【図１６】図１５のピクセルＡＬＵの具体的な構成を示す図図である。
【符号の説明】
１０…画像処理装置、１１…インプットデバイス部、１２…ディスプレイ部、１３…ネットワーク部、１４…コンピュータ部、１４１…ＣＰＵ部、１４２…メモリ部、１４３…ブリッジ部、１４４…外部入出力部、１４５…外部記憶部、１４６…ＬＡＮデバイス部、１４７…フレームバッファ部、１４８…グラフィックスプロセッサユニット（ＧＰＵ部），１４８１…プロセッサ部、１４８２…ＲＡＭＤＡＣ、１４８３…インターコネクト部、１４８４…作業メモリ部、１４８５…算術演算部、２００…論理ブロック、２０１…幾何演算部、幾何演算部２０１１…アプリケーション部、２０１２…カメラ座標変換部、２０１３…透視変換部、２０１４…ラスタライズ部、２０２…イメージ合成部、２０２１…イメージバッファ部、２０２２…イメージ合成演算部、２０３…ピクセル毎演算部、２０３１…ＢＲＤＦ演算部、２０３２…ルックアップ部、２０３３…べき乗演算部、２０３４…スケール演算部、２０３５…テクスチャマップ。
【図１】
2004126692.tif 000040
【図２】
2004126692.tif 000041
【図３】
2004126692.tif 000042
【図４】
2004126692.tif 000043
【図５】
2004126692.tif 000044
【図６】
2004126692.tif 000045
【図７】
2004126692.tif 000046
【図８】
2004126692.tif 000047
【図９】
2004126692.tif 000048
【図１０】
2004126692.tif 000049
【図１１】
2004126692.tif 000050
【図１２】
2004126692.tif 000051
【図１３】
2004126692.tif 000052
【図１４】
2004126692.tif 000053
【図１５】
2004126692.tif 000054
【図１６】
2004126692.tif 000055