(57)【要約】【課題】  バンプマッピングの処理効率を上げるとともに、高い画質を維持することは困難であった。【解決手段】  法線ベクトルマッピング部１０８は、ポリゴンのＬＯＤ（Level of Detail）値に応じたミップマップレベルのテクスチャ１１８をポリゴン表面にマッピングし、ポリゴン表面に擬似法線ベクトルを生成する。法線ベクトル置換部１１０は、該当するミップマップレベルのＶＱテーブル１２１を参照して、ポリゴン表面上の疑似法線ベクトルを量子化された基準法線ベクトルに置換する。輝度値取得部１１２は、該当するミップマップレベルのＣＬＵＴ１２２を参照し、ポリゴン表面上の基準法線ベクトルに対応する輝度値を取得し、ミップマップレベル間で輝度値を補間する。描画処理部１０４は、ポリゴン表面の各ピクセルのＲＧＢ値に輝度値取得部１１２により求められた輝度値を合成し、フレームバッファ１２６に書き込む。【選択図】  図１
2006127412.tif 000002
【特許請求の範囲】
【請求項１】
法線ベクトルを要素としてもつ解像度の異なる複数の法線マップを解像度レベル別に格納した法線マップ記憶部と、
描画対象物体の表面の描画詳細度に応じた解像度レベルの前記法線マップを前記表面に写像することにより、前記表面上に疑似法線ベクトルを生成する法線ベクトル写像部と、
前記表面の法線方向を量子化した基準法線ベクトルの組であって、前記解像度レベル毎に異なるベクトル値の組み合わせとなるものを格納した解像度レベル別の複数の量子化テーブルと、
前記描画詳細度に応じた解像度レベルの前記量子化テーブルを参照して、前記表面上に生成された前記擬似法線ベクトルをその量子化テーブル内のいずれかの前記基準法線ベクトルに置換する法線ベクトル置換部とを含むことを特徴とする描画処理装置。
【請求項２】
前記量子化テーブルに格納される前記基準法線ベクトルの個数は、前記描画対象物体の前記表面上に生成される異なる前記疑似法線ベクトルの数よりも少なく設定されることを特徴とする請求項１に記載の描画処理装置。
【請求項３】
前記解像度レベル毎に、前記量子化テーブルに格納された各基準法線ベクトルのインデックスと、前記描画対象物体の表面の法線方向がその基準法線ベクトルで与えられた場合の前記表面の輝度値とを対応づけて格納した解像度レベル別の複数のルックアップテーブルと、
前記描画詳細度に応じた解像度レベルの前記ルックアップテーブルを参照して、前記表面上に形成された前記基準法線ベクトルに対する輝度値を取得する輝度値取得部とをさらに含むことを特徴とする請求項１または２に記載の描画処理装置。
【請求項４】
前記法線ベクトル写像部は、前記描画詳細度に応じた少なくとも２つの異なる解像度レベルの前記法線マップを選択して、それぞれの法線マップを前記表面に写像することにより、前記表面上に各解像度レベルの疑似法線ベクトルを生成し、
前記法線ベクトル置換部は、前記少なくとも２つの異なる解像度レベルの前記量子化テーブルを参照して、前記表面上に生成された各解像度レベルの前記擬似法線ベクトルを各解像度レベルの量子化テーブル内のいずれかの前記基準法線ベクトルに置換し、
前記輝度値取得部は、前記少なくとも２つの異なる解像度レベルの前記ルックアップテーブルを参照して、前記表面上の各解像度レベルの前記基準法線ベクトルに対する輝度値を解像度レベル毎に取得し、取得された輝度値を前記少なくとも２つの異なる解像度レベル間で補間することにより、前記表面の最終的な輝度値を取得することを特徴とする請求項３に記載の描画処理装置。
【請求項５】
前記解像度レベル別の前記量子化テーブルに格納される前記基準法線ベクトルの個数は、前記解像度レベルが高いほど多くなるように設定されることを特徴とする請求項１から４のいずれかに記載の描画処理装置。
【請求項６】
法線ベクトルを要素としてもつ解像度の異なる複数の法線マップの内、描画対象物体の表面の描画詳細度に応じた解像度レベルの法線マップを前記表面に写像することにより、前記表面上に疑似法線ベクトルを生成するステップと、
前記表面上に生成された前記擬似法線ベクトルに対して前記解像度レベルに応じた量子化を施し、前記疑似法線ベクトルを量子化された基準法線ベクトルに置換するステップと、
前記表面の法線方向が前記表面上に形成された前記基準法線ベクトルであると仮定した場合の前記表面の輝度値を取得するステップとを含むことを特徴とする描画処理方法。
【請求項７】
前記輝度値を取得するステップは、量子化された各基準法線ベクトルのインデックスと、前記描画対象物体の表面の法線方向がその基準法線ベクトルで与えられた場合の前記表面の輝度値とを対応づけて格納したルックアップテーブルを参照して、前記表面上に形成された前記基準法線ベクトルに対する輝度値を取得することを特徴とする請求項６に記載の描画処理方法。
【請求項８】
前記疑似法線ベクトルを生成するステップは、前記描画詳細度に応じた少なくとも２つの異なる解像度レベルの前記法線マップを選択して、それぞれの法線マップを前記表面に写像することにより、前記表面上に各解像度レベルの疑似法線ベクトルを生成し、
前記基準法線ベクトルに置換するステップは、前記表面上に生成された前記少なくとも２つの異なる解像度レベルの前記擬似法線ベクトルに対して各解像度レベルで異なる量子化を施し、各解像度レベルの前記疑似法線ベクトルを前記基準法線ベクトルに置換し、
前記輝度値を取得するステップは、前記表面の法線方向が前記表面上に生成された前記少なくとも２つの異なる解像度レベルの前記基準法線ベクトルであると仮定した場合の前記表面の輝度値を各解像度レベルについて取得し、取得された輝度値を前記少なくとも２つの異なる解像度レベル間で補間することにより、前記表面の最終的な輝度値を取得することを特徴とする請求項６または７に記載の描画処理方法。
【請求項９】
法線ベクトルを要素としてもつ解像度の異なる複数の法線マップの内、描画対象物体の表面の描画詳細度に応じた解像度レベルの法線マップを前記表面に写像することにより、前記表面上に疑似法線ベクトルを生成するステップと、
前記表面の法線方向を量子化した基準法線ベクトルの組であって、前記解像度レベル毎に異なるベクトル値の組み合わせとなるものを格納した解像度レベル別の複数の量子化テーブルの内、前記描画詳細度に応じた解像度レベルの前記量子化テーブルを参照して、前記表面上に生成された前記擬似法線ベクトルをその量子化テーブル内のいずれかの前記基準法線ベクトルに置換するステップと、
前記解像度レベル毎に、前記量子化テーブルに格納された各基準法線ベクトルのインデックスと、前記描画対象物体の表面の法線方向がその基準法線ベクトルで与えられた場合の前記表面の輝度値とを対応づけて格納した解像度レベル別の複数のルックアップテーブルの内、前記描画詳細度に応じた解像度レベルの前記ルックアップテーブルを参照して、前記表面上に形成された前記基準法線ベクトルに対する輝度値を取得するステップとをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はコンピュータグラフィックスにおける描画処理技術に関し、特に描画処理対象の表面に法線ベクトルを写像するための描画処理装置および描画処理方法に関する。
【背景技術】
【０００２】
３次元コンピュータグラフィックスでは、一般的に３次元空間のオブジェクトを多数のポリゴンにより表現するポリゴンモデルが利用される。ポリゴンモデルの描画処理において、光源、視点位置、物体表面の反射率などを考慮してポリゴン表面に陰影をつけるシェーディングが行われる。また、写実性の高い画像を生成するために、ポリゴンモデルの表面にテクスチャ画像を貼り付けるテクスチャマッピングが行われる。
【０００３】
テクスチャマッピングにより生成される画像は、色に関する表現力を大幅に向上させることはできるが、オブジェクトの表面の凹凸を表現することはできない。オブジェクトの表面に凹凸を簡易に表現する方法として、テクスチャマッピングの考えを応用したバンプマッピングと呼ばれる方法がある。バンプマッピングでは、オブジェクトの表面にテクスチャの代わりに法線ベクトルをマッピングしてオブジェクトの表面に擬似的な法線ベクトルを生成する。こうして生成された疑似法線ベクトルがオブジェクトの表面の法線方向であると仮定してシェーディング処理を行、表面の輝度値を求め、陰影付けを行う。これによってオブジェクト表面上に擬似的に凹凸が表現される。
【０００４】
一方、テクスチャマッピングにおいて、テクスチャ画像のデータ量を少なくするために、テクスチャの各ピクセルにカラー値をもたせるのではなく、カラー値のインデックスをもたせておき、テクスチャマッピングの際にカラールックアップテーブルを参照して、実際のカラー値に変換するインデックスカラー方式がとられることがある。この方式では、あらかじめカラー値を定義した色見本をカラールックアップテーブルとして用意しておき、テクスチャの各ピクセルには、カラールックアップテーブルを参照するインデックス情報だけを格納する。たとえば、使用する色見本が２５６色の場合、テクスチャ画像の各ピクセルに８ビット分のインデックスを格納するだけでよいため、テクスチャ画像のデータ量を大幅に削減することができ、テクスチャマッピングの際に使用するメモリ量を節約することができる。
【０００５】
本出願人は、特許文献１において、テクスチャマッピングにおいて色変換に用いられるカラールックアップテーブルを法線ベクトルの参照テーブルとして利用したバンプマッピング手法を提案した。
【特許文献１】特開２００２−２０３２５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
バンプマッピングによれば、オブジェクトの表面の微細なモデリングをすることなく、凹凸を簡易に表現することができるが、オブジェクト表面のピクセル毎に法線ベクトルをマッピングし、すべての法線ベクトルについて輝度計算をする必要があり、計算コストが大きく、処理に時間がかかる。また、ピクセル毎に法線ベクトルの値を格納するため、メモリ量も多くなる。そこで、特許文献１において提案したカラールックアップテーブルを利用したバンプマッピング手法では、法線ベクトルをより数の少ない基準法線ベクトルに量子化するため、計算コストを抑え、メモリ量も少なくすることができる。法線ベクトルの量子化により、処理速度とメモリ容量の面の問題を解決することができたが、画質面でさらに改善を図る余地があった。
【０００７】
本発明はこうした課題に鑑みてなされたものであり、その目的は、処理効率が良く、画質面でも良好なバンプマッピングによる描画処理技術を提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明のある態様の描画処理装置は、法線ベクトルを要素としてもつ解像度の異なる複数の法線マップを解像度レベル別に格納した法線マップ記憶部と、描画対象物体の表面の描画詳細度に応じた解像度レベルの前記法線マップを前記表面に写像することにより、前記表面上に疑似法線ベクトルを生成する法線ベクトル写像部と、前記表面の法線方向を量子化した基準法線ベクトルの組であって、前記解像度レベル毎に異なるベクトル値の組み合わせとなるものを格納した解像度レベル別の複数の量子化テーブルと、前記描画詳細度に応じた解像度レベルの前記量子化テーブルを参照して、前記表面上に生成された前記擬似法線ベクトルをその量子化テーブル内のいずれかの前記基準法線ベクトルに置換する法線ベクトル置換部とを含む。
【０００９】
この態様によると、法線ベクトルを格納した法線マップを解像度レベル毎に複数用意し、ポリゴン表面の描画詳細度に適した解像度レベルを選択して法線マップを描画対象物体の表面に写像することができる。また、解像度レベル毎に異なる量子化テーブルを用いて疑似法線ベクトルを量子化することにより、輝度計算の計算量を減らすとともに、量子化誤差を抑えて画質を向上させることができる。
【００１０】
前記解像度レベル毎に、前記量子化テーブルに格納された各基準法線ベクトルのインデックスと、前記描画対象物体の表面の法線方向がその基準法線ベクトルで与えられた場合の前記表面の輝度値とを対応づけて格納した解像度レベル別の複数のルックアップテーブルと、前記描画詳細度に応じた解像度レベルの前記ルックアップテーブルを参照して、前記表面上に形成された前記基準法線ベクトルに対する輝度値を取得する輝度値取得部とをさらに含んでもよい。
【００１１】
ルックアップテーブルを用いることにより、基準法線ベクトルの値を法線マップとして格納する必要がなくなり、処理に必要なメモリ容量を減らすことができる。また、解像度レベルによって異なるルックアップテーブルを用意し、描画対象物体の描画詳細度に応じた解像度レベルのルックアップテーブルに切り替えることで、描画対象物体の描画詳細度に合った画質で画像を生成することができる。
【００１２】
前記法線ベクトル写像部は、前記描画詳細度に応じた少なくとも２つの異なる解像度レベルの前記法線マップを選択して、それぞれの法線マップを前記表面に写像することにより、前記表面上に各解像度レベルの疑似法線ベクトルを生成し、前記法線ベクトル置換部は、前記少なくとも２つの異なる解像度レベルの前記量子化テーブルを参照して、前記表面上に生成された各解像度レベルの前記擬似法線ベクトルを各解像度レベルの量子化テーブル内のいずれかの前記基準法線ベクトルに置換し、前記輝度値取得部は、前記少なくとも２つの異なる解像度レベルの前記ルックアップテーブルを参照して、前記表面上の各解像度レベルの前記基準法線ベクトルに対する輝度値を解像度レベル毎に取得し、取得された輝度値を前記少なくとも２つの異なる解像度レベル間で補間することにより、前記表面の最終的な輝度値を取得してもよい。
【００１３】
解像度レベル間で異なる量子化テーブルを用い、解像度レベル間で輝度値を補間することにより、疑似法線ベクトルの量子化誤差による影響を軽減し、画質を向上させることができる。
【００１４】
本発明の別の態様は、描画処理方法である。この方法は、法線ベクトルを要素としてもつ解像度の異なる複数の法線マップの内、描画対象物体の表面の描画詳細度に応じた解像度レベルの法線マップを前記表面に写像することにより、前記表面上に疑似法線ベクトルを生成するステップと、前記表面上に生成された前記擬似法線ベクトルに対して前記解像度レベルに応じた量子化を施し、前記疑似法線ベクトルを量子化された基準法線ベクトルに置換するステップと、前記表面の法線方向が前記表面上に形成された前記基準法線ベクトルであると仮定した場合の前記表面の輝度値を取得するステップとを含む。
【００１５】
本発明のさらに別の態様は、プログラムである。このプログラムは、法線ベクトルを要素としてもつ解像度の異なる複数の法線マップの内、描画対象物体の表面の描画詳細度に応じた解像度レベルの法線マップを前記表面に写像することにより、前記表面上に疑似法線ベクトルを生成するステップと、前記表面の法線方向を量子化した基準法線ベクトルの組であって、前記解像度レベル毎に異なるベクトル値の組み合わせとなるものを格納した解像度レベル別の複数の量子化テーブルの内、前記描画詳細度に応じた解像度レベルの前記量子化テーブルを参照して、前記表面上に生成された前記擬似法線ベクトルをその量子化テーブル内のいずれかの前記基準法線ベクトルに置換するステップと、前記解像度レベル毎に、前記量子化テーブルに格納された各基準法線ベクトルのインデックスと、前記描画対象物体の表面の法線方向がその基準法線ベクトルで与えられた場合の前記表面の輝度値とを対応づけて格納した解像度レベル別の複数のルックアップテーブルの内、前記描画詳細度に応じた解像度レベルの前記ルックアップテーブルを参照して、前記表面上に形成された前記基準法線ベクトルに対する輝度値を取得するステップとをコンピュータに実行させる。
【００１６】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１７】
本発明によれば、バンプマッピングの処理効率を上げるとともに、バンプマッピングによる描画の画質を高めることができる。
【発明を実施するための最良の形態】
【００１８】
図１は、実施の形態に係る描画処理装置１００の構成図である。描画処理装置１００は、３次元オブジェクトのモデル情報をもとに表示装置に表示するための描画データを生成するものであり、必要に応じて３次元オブジェクトの表面に擬似的な凹凸をもたせるためにバンプマッピング処理を行う。
【００１９】
ジオメトリ処理部１０２は、３次元オブジェクトのジオメトリ処理を行い、ポリゴンの形状やその座標位置、ポリゴンを描画する際の詳細度を示すＬＯＤ（Level of Detail）値などのポリゴン定義情報からなるディスプレイリストを生成する。バンプマッピングが行われるポリゴンについては、バンプマッピングの対象となることを示すデータが付加される。バンプマッピングを行うかどうかは、オブジェクトのモデリングの際にあらかじめ決めてもよく、描画処理の際に動的に決めてもよい。
【００２０】
バンプマッピング処理部１０６は、ジオメトリ処理部１０２からディスプレイリストを受け取り、バンプマッピングの対象となるポリゴンについて、ポリゴン表面に擬似的な凹凸をもたさせるためにバンプマッピング処理を行う。バンプマッピング処理は、ポリゴン表面に擬似的な凹凸をもたせるための法線ベクトルを画素要素としてもつテクスチャをあらかじめ用意し、そのテクスチャをテクスチャマッピングの方法にしたがってポリゴン表面にマッピングし、擬似的な法線ベクトルをポリゴン表面に生成し、ポリゴン表面の輝度値を取得することにより行われる。
【００２１】
描画処理部１０４は、描画データ記憶部１２４に設けられたフレームバッファ１２６に対して描画データの読み書きを行う。描画処理部１０４は、テクスチャをポリゴン面にマッピングしてポリゴン面の各ピクセルのＲＧＢ値を求め、バンプマッピング処理部１０６によりバンプマッピングがなされたポリゴンについては、求められたＲＧＢ値にバンプマッピング処理部１０６により取得された輝度値をブレンディングして陰影を付けて最終的なＲＧＢ値を決定し、フレームバッファ１２６に書き込む。
【００２２】
このようにしてフレームバッファ１２６に描画された画像データは、ビデオ出力に変換されて表示装置に入力され、バンプマッピングにより表面に凹凸が擬似的に表現されたオブジェクトの画像が表示される。
【００２３】
本実施の形態のバンプマッピング処理部１０６は、ポリゴン表面に生成された疑似法線ベクトルをベクトル量子化により基準法線ベクトルに置換し、基準法線ベクトルに対してのみ輝度計算を行う「量子化バンプマッピング」の手法を利用する。
【００２４】
さらに、本実施の形態のバンプマッピング処理部１０６は、解像度の異なる複数のテクスチャを用意し、ポリゴン表面の描画詳細度に応じた解像度レベルのテクスチャを選択して、ポリゴン表面にマッピングする「ミップマップ」の手法を利用する。
【００２５】
ミップマップでは、サイズの異なる複数のテクスチャを用意しておき、ポリゴンのＬＯＤ値に合った解像度のテクスチャを選択してマッピングする。一般に、テクスチャマッピングを行う際、ポリゴンのピクセル面積とテクスチャのサイズが大きく異なり、テクスチャを縮小してポリゴンに貼り付けることになる場合、描画結果にエイリアスが生じて、画質が著しく低下する。そこでミップマップでは、あらかじめ元のテクスチャの１／２、１／４、１／８、…といったサイズのテクスチャを用意しておき、たとえば、視点から遠いポリゴンほど解像度の低いテクスチャをマッピングする。これにより、通常のテクスチャマッピングよりも精密なちらつきの少ない画像表現が可能になる。
【００２６】
以下、バンプマッピング処理部１０６の構成を詳しく説明する。
【００２７】
法線ベクトルマッピング部１０８は、ジオメトリ処理部１０２により生成されたディスプレイリストに基づいて、バンプマッピングを行うポリゴンを特定し、特定されたポリゴンの表面に擬似的な凹凸をもたせるために法線ベクトルをマッピングする。
【００２８】
ポリゴン表面に擬似的な凹凸をもたせるための法線ベクトルのデータは、法線マップ記憶部１１６にテクスチャ１１８の形式で格納されている。テクスチャ１１８は、通常のテクスチャマッピングで利用される場合は、各ピクセルの色データを格納したものであるが、ここではピクセル毎に法線ベクトルの値を格納した法線マップ（バンプマップともいう）として利用される。法線マップは、２次元表面の凹凸を示す高さデータを微分処理して各ピクセルの法線方向を示す法線ベクトルを求めることにより得られる。
【００２９】
本実施の形態では、ミップマップ処理を行うため、テクスチャ１１８はミップマップの解像度レベル（以下、ミップマップレベルという）毎に複数用意され、ポリゴンのＬＯＤ値に応じてミップマップレベルが選択され、そのミップマップレベルのテクスチャ１１８がバンプマッピングに利用される。
【００３０】
法線ベクトルマッピング部１０８は、法線マップ記憶部１１６からポリゴンのＬＯＤ値に応じたミップマップレベルのテクスチャ１１８を読み出し、通常のテクスチャマッピングの方法によって、テクスチャ１１８に格納された法線ベクトルをポリゴン面に貼り付ける。これによりポリゴン面の本来の垂直方向を示す法線ベクトルに対してバンプマップによる揺らぎが加わり、ポリゴン表面上に擬似的な法線ベクトルが生成される。
【００３１】
法線ベクトル置換部１１０は、法線ベクトルマッピング部１０８によりポリゴン表面上に生成された疑似法線ベクトルに対してベクトル量子化の処理を施し、基準法線ベクトルに置換する。ベクトル量子化は、３次元オブジェクトの表面上で取りうる任意の疑似法線ベクトルに対して、所定の個数の基準法線ベクトルを代表ベクトルとして定めておき、与えられた疑似法線ベクトルをそれに最も近い基準法線ベクトルで近似することにより行われる。ここで、基準法線ベクトルの個数は、３次元オブジェクトの表面上に生成される疑似法線ベクトルの個数よりも少なく設定する。
【００３２】
基準法線ベクトルの組み合わせは、ミップマップレベル別にＶＱ（Vector Quantization）テーブル１２１の形で量子化ベクトル記憶部１２０に格納されている。ＶＱテーブル１２１は、基準法線ベクトルのインデックスに基準法線ベクトルの座標値を対応づけたテーブルである。
【００３３】
ＶＱテーブル１２１内の基準法線ベクトルの組み合わせは、たとえば、球面を２５６分割し、２５６面の多面体で近似したときの各分割面の垂直方向を示す２５６個の法線ベクトルから構成される。２５６個の基準法線ベクトルの選び方には任意性があり、球面を２５６分割するときの多面体の位相をずらせば、異なる２５６個の基準法線ベクトルが得られる。そこで、ミップマップレベル毎に異なる基準法線ベクトルの組み合わせを選択し、ミップマップレベル別にＶＱテーブル１２１を設ける。たとえば、ミップマップレベルがレベル０からレベル７までの８段階である場合、８種類のＶＱテーブル１２１が設けられる。ここでレベル０は最も解像度が高く、レベル１、２、…、７の順に解像度が低くなるとする。
【００３４】
図２は、ミップマップレベル０のＶＱテーブル１２１を説明する図である。基準法線ベクトルのインデックス１〜２５６の各々に対して、基準法線ベクトルの３次元座標値（ｘ１，ｙ１，ｚ１）〜（ｘ２５６，ｙ２５６，ｚ２５６）が対応づけられている。他のミップマップレベル１〜７についても同様に基準ベクトルの各インデックスに対して基準法線ベクトルの３次元座標値を対応したＶＱテーブル１２１が設定されるが、ミップマップレベルによって基準法線ベクトルの座標値は異なっている。ミップマップレベルによって異なる基準法線ベクトルの組み合わせを用いることにより、ベクトル量子化に伴う量子化誤差を吸収することが可能になる。
【００３５】
なお、ミップマップレベルによって基準法線ベクトルの個数を変えてもよい。たとえば、ミップマップレベル０のＶＱテーブル１２１は２５６個の基準法線ベクトルをもつが、ミップマップレベル１のＶＱテーブル１２１は１２８個、ミップマップレベル２のＶＱテーブル１２１は６４個など、解像度が低くなるにつれ、基準法線ベクトルの個数を減らして、精度を落とすようにしてもよい。たとえば、遠くにあるオブジェクトや注目度の低いオブジェクトについては画質を落としてかまわないから、低い解像度レベルのＶＱテーブル１２１を選び、より少ない基準法線ベクトルを利用することで、画質を犠牲にして処理コストを下げ、近くにあるオブジェクトや注目度の高いオブジェクトについては、高い解像度レベルのＶＱテーブル１２１を選び、より多い基準法線ベクトルを利用することで、精細な凹凸表現により画質を高めるようにすることができる。
【００３６】
法線ベクトル置換部１１０は、ポリゴンのＬＯＤ値に対応したミップマップレベルを選択し、そのミップマップレベルのＶＱテーブル１２１を参照し、ポリゴン表面上に生成された疑似法線ベクトルをその疑似法線ベクトルに最も近い基準法線ベクトルに変換する。
【００３７】
量子化ベクトル記憶部１２０には、ＶＱテーブル１２１内の基準法線ベクトルのインデックスに輝度値を対応づけて格納したカラールックアップテーブル（以下、ＣＬＵＴと呼ぶ）１２２が記憶されている。オブジェクトの表面の法線方向がＶＱテーブル１２１内の基準法線ベクトルであるとした場合、その表面の輝度値は、光源の種類と位置を仮定してシェーディング処理を行うことにより算出することができる。ＣＬＵＴ１２２は、そのようにして計算された輝度値を基準法線ベクトルのインデックスに対応づけたテーブルである。ＶＱテーブル１２１がミップマップレベル別に設けられたことに対応して、ＣＬＵＴ１２２もミップマップレベル別に設けられることになる。
【００３８】
図３は、ミップマップレベル０のＣＬＵＴ１２２を説明する図である。基準法線ベクトルのインデックス１〜２５６に輝度値α１〜α２５６が対応づけられて格納されている。図２のミップマップレベル０のＶＱテーブル１２１内の基準法線ベクトルの座標値に基づいて、各基準法線ベクトルに対して輝度計算が行われ、得られた輝度値が基準法線ベクトルのインデックスに対応づけて格納されている。このＣＬＵＴ１２２は、ミップマップレベル０の基準法線ベクトルのインデックスから対応する輝度値を取得するために参照される。他のミップマップレベル１〜７についても同様に各基準法線ベクトルに対する輝度値が計算され、インデックスと対応づけて格納される。
【００３９】
輝度値取得部１１２は、ポリゴンのＬＯＤ値に対応するミップマップレベルのＣＬＵＴ１２２を参照し、ポリゴン表面に形成された基準法線ベクトルに対応する輝度値を取得する。輝度値取得部１１２は、バンプマッピングにより決定されたポリゴン表面の輝度値に関するデータを描画処理部１０４に与える。
【００４０】
ミップマップによるテクスチャマッピングを行う際、ミップマップレベルが離散的であるために、オブジェクト表面においてミップマップレベルが変わるとき、マップされるテクスチャの解像度が急に切り替わるため、画質が劣化することがある。また、テクスチャを貼り付けたオブジェクトが奥行き方向に移動すると、ミップマップレベルが奥行きに応じて切り替わり、貼り付けられるテクスチャの解像度が急に変わるため、オブジェクトの表面にちらつきが生じ、見づらくなることがある。
【００４１】
このような問題を回避するため、ミップマップでは、異なるミップマップレベルのテクスチャをミップマップレベル間で滑らかに補間して中間のテクスチャを作成するのが通常である。このように、ミップマップによるテクスチャマッピングでは、テクスチャの縦横の方向のピクセル値の線形補間だけでなく、ミップマップの解像度の階層レベル間の線形補間も行うトライリニアフィルタリングが利用される。
【００４２】
本実施の形態では、トライリニアフィルタリングによるミップマップ処理を量子化バンプマッピングに適用する。従来のバンプマッピングは、法線ベクトルを直接操作するものであったため、ミップマップレベル間の補間を行うためには、法線ベクトル同士を直接演算処理する必要があり、処理が複雑で扱いにくかった。しかしながら、量子化バンプマッピングは、量子化された基準法線ベクトルに輝度値を対応づけたＣＬＵＴ１２２を利用する手法であるため、通常のテクスチャマッピングと構成が全く同じであり、ミップマップのようなテクスチャマップの関連技術をそのまま利用することができる。以下、トライリニアフィルタリングによるミップマップ処理を行う場合のバンプマッピング処理部１０６の動作を説明する。
【００４３】
バンプマッピング処理部１０６は、ポリゴンのＬＯＤ値を参照して、そのＬＯＤ値に対応するミップマップレベルを２つ選び、２つのミップマップレベルのテクスチャを用いてトライリニア補間を行う。
【００４４】
たとえばＬＯＤ値が０〜６３までの値をとる場合、６４段階のＬＯＤ値を８段階のミップマップレベル０〜７に対応させることになる。８の倍数のＬＯＤ値０、８、１６、…、５６をそれぞれミップマップレベル０、１、２、…、７に対応させるとすると、８の倍数でないＬＯＤ値は、２つの隣接するミップマップレベルの中間にあることになる。そこで、あるＬＯＤ値が与えられると、そのＬＯＤ値が中間に属することになる２つの隣接するミップマップレベルを選択する。
【００４５】
法線ベクトルマッピング部１０８は、ポリゴンのＬＯＤ値に応じた２つの隣接するミップマップレベルのテクスチャ１１８を選択し、それぞれのテクスチャ１１８をポリゴン表面にマッピングし、ポリゴン表面に２つのミップマップレベルの疑似法線ベクトルを生成する。
【００４６】
法線ベクトル置換部１１０は、ポリゴンのＬＯＤ値に応じた２つの隣接するミップマップレベルのＶＱテーブル１２１のそれぞれを用いて、ポリゴン表面に生成された各ミップマップレベルの疑似法線ベクトルを基準法線ベクトルに置換する。これによりポリゴン表面には２つの隣接するミップマップレベルの基準法線ベクトルが形成される。
【００４７】
輝度値取得部１１２は、ポリゴンのＬＯＤ値に応じた２つの隣接するミップマップレベルのＣＬＵＴ１２２のそれぞれを用いて、ポリゴン表面に形成された各ミップマップレベルの基準法線ベクトルのインデックスに対応する輝度値を取得する。これにより、２つのミップマップレベルにおいてバンプマッピング先のピクセルの輝度値が取得されることになる。
【００４８】
輝度値取得部１１２は、さらに、２つのミップマップレベルの輝度値をミップマップレベル間で線形補間することにより、ポリゴンのＬＯＤ値に対応した最終的な輝度値を求める。たとえば、ＬＯＤ値が３の場合、ＬＯＤ値０がミップマップレベル０に、ＬＯＤ値８がミップマップレベル１に対応するから、ミップマップレベル０で求めた輝度値とミップマップレベル１で求めた輝度値の間を３：５の比で内分することによって、ＬＯＤ値３に対する輝度値を求める。
【００４９】
このようにミップマップレベル間で輝度値の補間を行うことにより、ミップマップレベルがオブジェクトの表面上で変化する場合やオブジェクトが奥行き方向に移動した場合の画質の劣化を抑えることができる。また、ミップマップレベルによって異なるＶＱテーブル１２１を利用してミップマップレベル間で補間を行うため、疑似法線ベクトルをベクトル量子化した際の量子化誤差による影響を軽減することができる。
【００５０】
図４は、以上の構成の描画処理装置１００によるバンプマッピングによる描画処理手順を説明するフローチャートである。フローチャートの説明にあたって、図５および図６を適宜参照する。
【００５１】
バンプマッピング処理部１０６は、ポリゴン定義情報からなるディスプレイリストをジオメトリ処理部１０２から取得する（Ｓ１０）。
【００５２】
バンプマッピング処理部１０６は、取得したディスプレイリストにバンプマッピングの対象となるポリゴンがあれば（Ｓ１２のＹ）、バンプマッピング処理Ｓ１４〜Ｓ２２を行う。バンプマッピングの対象となるポリゴンが複数ある場合には、それらのポリゴンのすべてについてバンプマッピング処理を行う。バンプマッピングの対象となるポリゴンがない場合（Ｓ１２のＮ）、バンプマッピング処理は行われず、通常の描画処理Ｓ２４のみが行われる。
【００５３】
ポリゴンに対してバンプマッピングを行うかどうかは、ポリゴンのＬＯＤ値をもとに決定してもよい。たとえば、ＬＯＤ値が比較的小さい場合、すなわち詳細度を上げて描画する必要がある場合は、バンプマッピングを行い、ＬＯＤ値が比較的大きい場合、すなわち詳細度を下げて描画してもよい場合は、バンプマッピングを省略するようにしてもよい。
【００５４】
バンプマッピング処理部１０６は、ポリゴンのＬＯＤ値に合ったミップマップレベルを選択する（Ｓ１４）。ミップマップレベル間の補間を行う場合は、ＬＯＤ値が中間に属する２つの隣接するミップマップレベルが選択される。ミップマップレベル間の補間を行わない場合は、ＬＯＤ値に最も近い１つのミップマップレベルが選択される。
【００５５】
法線ベクトルマッピング部１０８は、法線マップ記憶部１１６から該当するミップマップレベルのテクスチャ１１８を読み出し、テクスチャマッピングの方法によって、テクスチャ１１８に格納された法線ベクトルをポリゴン面にマッピングする（Ｓ１６）。
【００５６】
図５（ａ）は、ピクセル単位で法線ベクトルがマッピングされたポリゴン面を説明する図である。この例では、ポリゴン面は、縦横６ピクセル、合計３６ピクセルからなる四角形である。各ピクセルには、テクスチャ１１８に格納された法線ベクトルがマッピングされ、ポリゴン面の本来の法線ベクトルＮと合成されることにより、各ピクセルの擬似的な法線ベクトルＮ'が決まる。同図は、ポリゴン面の各ピクセルの疑似法線ベクトルＮ'を表している。疑似法線ベクトルＮ'の具体的な算出方法を以下に示す。
【００５７】
ポリゴン面上の点Ｐ（ｘ，ｙ，ｚ）をパラメータ座標（ｓ，ｔ）で表すと、点Ｐ＝［ｘ（ｓ，ｔ），ｙ（ｓ，ｔ），ｚ（ｓ，ｔ）］とかける。ポリゴン面のｓ方向、ｔ方向の折線ベクトルは、Ｐｓ，Ｐｔであるから、点Ｐにおける法線ベクトルＮはＮ＝Ｐｓ×Ｐｔで与えられる。ここで、Ｐｓ，Ｐｔはそれぞれ点Ｐのｓ、ｔに関する偏微分、記号×はベクトルの外積を示す。
【００５８】
バンプマップの値をＢとし、ポリゴン面上の点Ｐ（ｓ，ｔ）にマッピングされるバンプマップの点の座標（ｕ，ｖ）とすると、バンプマッピング後の点Ｐの疑似法線ベクトルＮ'は、次式のように計算される。
Ｎ'＝Ｎ＋Ｄ
Ｄ＝｛Ｂｕ（Ｎ×Ｐｔ）−Ｂｖ（Ｎ×Ｐｓ）｝／｜Ｎ｜
ここで、Ｂｕ、Ｂｖはバンプマップの値Ｂのｕ、ｖ方向の偏微分である。
【００５９】
次に、法線ベクトル置換部１１０は、該当するミップマップレベルのＶＱテーブル１２１を参照して、ポリゴン表面に生成された疑似法線ベクトルＮ'を基準法線ベクトルに量子化し、その基準法線ベクトルのインデックスを各ピクセルに割り当てる（Ｓ１８）。法線ベクトル置換部１１０は、疑似法線ベクトルＮ'をＶＱテーブル１２１内の最も近い基準法線ベクトルＮｑ＊に置き換えることで量子化を行う。最も近い基準法線ベクトルＮｑ＊は、疑似法線ベクトルＮ'とＶＱテーブル１２１内の各基準法線ベクトルＮｑとの内積（Ｎ'，Ｎｑ）を求め、その内積値を正規化した（Ｎ'，Ｎｑ）／｜Ｎ'｜／｜Ｎｑ｜の値が最も小さいものを選ぶことにより、求められる。
【００６０】
図５（ｂ）は、基準法線ベクトルＮｑ＊のインデックスが各ピクセルにマッピングされたポリゴン面を説明する図である。ポリゴン面の各ピクセルには基準法線ベクトルＮｑ＊のインデックスが割り付けられている。基準法線ベクトルＮｑ＊の座標値はＶＱテーブル１２１にもたせ、ポリゴン面には基準法線ベクトルＮｑ＊のインデックスの情報しか与えないため、ポリゴン情報を格納するためのメモリ容量を少なくすることができる。
【００６１】
次に、輝度値取得部１１２は、該当するミップマップレベルのＣＬＵＴ１２２を参照し、ポリゴン面上に形成された基準法線ベクトルＮｑ＊のインデックスに対応する輝度値αを読み出し、各ピクセルにその輝度値αを割り付ける（Ｓ２０）。
【００６２】
図５（ｃ）は、各ピクセルに輝度値αがマッピングされたポリゴンを説明する図である。各ピクセルには基準法線ベクトルＮｑ＊のインデックスに対応した輝度値αが割り付けられている。
【００６３】
輝度値取得部１１２は、さらに必要に応じてミップマップレベル間で輝度値の補間を行う（Ｓ２２）。２つのミップマップレベルが選択された場合、ステップＳ１６〜Ｓ２０において、２つのミップマップレベルのそれぞれについて、疑似法線ベクトルの生成、基準法線ベクトルへの変換、基準法線ベクトルのインデックスに対応する輝度値の取得がなされている。輝度値取得部１１２は、２つのミップマップレベルにおいて取得された輝度値をＬＯＤ値に関する内分比で線形補間して最終的な輝度値を算出する。
【００６４】
図６（ａ）〜（ｃ）は、ミップマップ処理によるバンプマッピングを説明する図である。図６（ａ）は、ミップマップレベル０のテクスチャを用いたバンプマッピングの様子を示したものである。ポリゴン面１３０ａには、ミップマップレベル０のテクスチャがマッピングされることにより、縦横６ピクセルの疑似法線ベクトルＮ'が生成されている。各ピクセルの疑似法線ベクトルＮ'は、ミップマップレベル０のＶＱテーブル１２１を用いて基準法線ベクトルＮｑ＊に量子化される。さらに、各ピクセルの基準法線ベクトルＮｑ＊はミップマップレベル０のＣＬＵＴ１２２ａを用いて輝度値αに変換され、各ピクセルに輝度値が割り付けられた輝度値マップ１３２ａが生成される。
【００６５】
図６（ｂ）は、ミップマップレベル１のテクスチャを用いたバンプマッピングの様子を示す。ポリゴン面１３０ｂには、ミップマップレベル１のテクスチャがマッピングされることにより、縦横４ピクセルの疑似法線ベクトルＮ'が生成されている。各ピクセルの疑似法線ベクトルＮ'は、ミップマップレベル１のＶＱテーブル１２１を用いて基準法線ベクトルＮｑ＊に量子化される。さらに、各ピクセルの基準法線ベクトルＮｑ＊はミップマップレベル１のＣＬＵＴ１２２ｂを用いて輝度値αに変換され、各ピクセルに輝度値が割り付けられた輝度値マップ１３２ｂが生成される。
【００６６】
図６（ｃ）は、ミップマップレベル２のテクスチャを用いたバンプマッピングの様子を示す。ポリゴン面１３０ｃには、ミップマップレベル２のテクスチャがマッピングされることにより、縦横２ピクセルの疑似法線ベクトルＮ'が生成されている。各ピクセルの疑似法線ベクトルＮ'は、ミップマップレベル２のＶＱテーブル１２１を用いて基準法線ベクトルＮｑ＊に量子化される。さらに、各ピクセルの基準法線ベクトルＮｑ＊はミップマップレベル２のＣＬＵＴ１２２ｃを用いて輝度値αに変換され、各ピクセルに輝度値が割り付けられた輝度値マップ１３２ｃが生成される。
【００６７】
輝度値取得部１１２は、たとえば、ポリゴンのＬＯＤ値がミップマップレベル０とミップマップレベル１の中間にある場合、ミップマップレベル０の輝度値マップ１３２ａとミップマップレベル１の輝度値マップ１３２ｂの間でＬＯＤ値に関する内分比で線形補間を行い、中間の輝度値マップを生成することにより、ポリゴン表面の輝度値を求める。
【００６８】
ミップマップレベルが異なると、疑似法線ベクトルＮ'の量子化に用いるＶＱテーブル１２１が異なり、同じ疑似法線ベクトルＮ'であっても量子化された基準法線ベクトルＮｑ＊の値は異なることになる。したがって、ミップマップレベルによって輝度値も少しずつ異なるものとなっている。ミップマップレベル間で輝度値の補間を行うことにすれば、疑似法線ベクトルＮ'を量子化したことによる量子化誤差を減らすことができる。複数のミップマップレベルを用いることで異なる基準法線ベクトルの組み合わせを利用したことになり、実質的に基準法線ベクトルの個数を増やして量子化粒度をより細かくしたことに相当するからである。
【００６９】
バンプマッピングの対象となるポリゴンについて、バンプマッピング処理が終了すると、描画処理部１０４は、ディスプレイリストに基づいて、ポリゴンの描画データをフレームバッファ１２６に書き込む（Ｓ２４）。このとき、バンプマッピングにより輝度値がマッピングされているポリゴンでは、ポリゴンのテクスチャは、その輝度値が反映されたものとなり、輝度値に応じた陰影が付けられ、凹凸が擬似的に表現される。なお、描画処理部１０４は、ポリゴン面にテクスチャをマッピングしない場合は、バンプマッピング処理部１０６から得られた輝度値をそのままＲＧＢ値として直接フレームバッファ１２６に描画するように構成してもよい。
【００７０】
以上述べたように、本実施の形態によれば、ピクセル毎に法線ベクトルをマッピングしてバンプマッピングが行われているので、ポリゴンの画像は凹凸が精細に表現されたものとなる。また、量子化バンプマッピングの利用により、マッピングされる法線ベクトルの数よりも少ない基準法線ベクトルについてのみ輝度値を導出すればよいため、シェーディング処理の計算コストを大幅に減らすことができ、バンプマッピング処理を高速化することができる。また、基準法線ベクトルのインデックスをキーとして対応する輝度値を参照することのできるＣＬＵＴを用いることで、バンプマッピングの際に必要なメモリ容量を減らすことができる。
【００７１】
また、本実施の形態によれば、ミップマップレベル別の法線マップをあらかじめ用意し、ポリゴン表面のＬＯＤ値に応じたミップマップレベルの法線マップを選択してバンプマッピングを行うことにより、ＬＯＤ値に応じた解像度でバンプマッピングによる画像を生成することができる。
【００７２】
さらには、本実施の形態によれば、トライリニアフィルタリングによるミップマップ処理を用いているため、ミップマップレベルの切り替わりによる量子化ノイズを抑えることができる。また異なるミップマップレベルにおいては異なる基準法線ベクトルの組み合わせを利用して疑似法線ベクトルを量子化するため、ミップマップレベル間でテクスチャの補間をすることにより、ベクトル量子化に伴う量子化誤差による画質の劣化を抑えることができる。量子化バンプマッピングにより計算量を減らして処理を高速化すると同時に、量子化誤差をミップマップレベル間の補間により吸収して、画質を向上させることができる。
【００７３】
このように、本実施の形態の量子化バンプマッピングによれば、マッピングする法線ベクトルを十分に精細に設定していても、バンプマッピング処理の負荷は、基準法線ベクトルの数により決まるために、画像の精細さを保ちつつ高速に処理を行うことができる。これにより、オブジェクトが移動したり、光源位置が変わったりしても、リアルタイムにバンプマッピング処理を行うことができる。
【００７４】
また、ＣＬＵＴを利用した量子化バンプマッピングは、ミップマップ処理との整合性が良く、トライリニアフィルタリングによるミップマップ処理を量子化バンプマッピングに適用することにより、ベクトル量子化に伴う量子化誤差による影響を軽減し、バンプマッピングの画質を向上させることができる。
【００７５】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００７６】
上記の実施の形態では、ポリゴンの面単位でバンプマッピングを行ったが、より大きな単位、たとえばオブジェクト単位で、オブジェクト表面に対してバンプマッピングの処理を行ってもよい。
【００７７】
上記の実施の形態では、球面を２５６分割したときの分割面の法線方向を示す基準法線ベクトルの組み合わせを用意しておき、その基準法線ベクトルの組み合わせに対して輝度値をあらかじめ計算してＣＬＵＴに格納したが、基準法線ベクトルはバンプマッピングの際に動的に生成してもよい。バンプマップをポリゴン面にマッピングして疑似法線ベクトルを求める時点で、その都度、疑似法線ベクトルを量子化し、基準法線ベクトルを求め、その基準法線ベクトルに対して輝度計算してＣＬＵＴに格納するようにしてもよい。ポリゴン毎に量子化と輝度計算の手間がかかるが、ポリゴン毎に最適化した処理が可能になり、画質が向上する。
【００７８】
また、上記の実施の形態では、光源の種類や位置に変化がないとして、あらかじめ輝度計算した後のＣＬＵＴを利用して輝度値を取得したが、光源の種類や位置に変化がある場合は、その都度輝度計算をやり直して、ＣＬＵＴを更新してもよい。
【００７９】
基準法線ベクトルの個数は、量子化バンプマッピングに求められる精度や最終的な画像の品質に対する要求などに応じて、オブジェクトのモデリング時に設計することができる。一般には、基準法線ベクトルの個数は、計算量と画質のトレードオフによって決まる。また、状況に応じて画質のニーズが変わる場合には、動的に基準法線ベクトルの個数を変更してもよい。また、ＬＯＤ値に応じて基準法線ベクトルの個数を変えてもよい。たとえば、ポリゴンの描画詳細度が上がるにつれて、基準法線ベクトルの個数を増やすことにより、バンプマッピングの精度を調整することができる。
【００８０】
上記の説明では、２つのミップマップレベル間で輝度値の補間を行ったが、３つ以上のミップマップレベルで得られた輝度値を補間することにより、ポリゴンのＬＯＤ値に対応した最終的な輝度値を求めてもよい。またミップマップレベル間の補間機能は、オプションであるから、画質の要求や処理性能などの要因に応じてミップマップレベル間の補間を適宜省いてもよい。
【図面の簡単な説明】
【００８１】
【図１】実施の形態に係る描画処理装置の構成図である。
【図２】図１のＶＱテーブルを説明する図である。
【図３】図１のＣＬＵＴを説明する図である。
【図４】実施の形態に係るバンプマッピングによる描画処理手順を説明するフローチャートである。
【図５】バンプマッピングによりポリゴン表面に輝度値がマッピングされる様子を説明する図である。
【図６】ミップマップ処理によるバンプマッピングによりポリゴン表面に輝度値がマッピングされる様子を説明する図である。
【符号の説明】
【００８２】
１００  描画処理装置、  １０２  ジオメトリ処理部、  １０４  描画処理部、  １０６  バンプマッピング処理部、  １０８  法線ベクトルマッピング部、  １１０  法線ベクトル置換部、  １１２  輝度値取得部、  １１６  法線マップ記憶部、  １１８  テクスチャ、  １２０  量子化ベクトル記憶部、  １２１  ＶＱテーブル、  １２２  ＣＬＵＴ、  １２４  描画データ記憶部、  １２６  フレームバッファ。
【図１】
2006127412.tif 000003
【図２】
2006127412.tif 000004
【図３】
2006127412.tif 000005
【図４】
2006127412.tif 000006
【図５】
2006127412.tif 000007
【図６】
2006127412.tif 000008