(57)【特許請求の範囲】
【請求項１】
複数の視点方向からのテクスチャのサンプルを視点に関するインデックス（以後「視点インデックス」）により参照可能な形で格納するメモリ領域と、視点の補間に用いるテクスチャを指す１乃至複数の前記視点インデックスを任意の視点方向に関して参照可能なメモリ領域と、視点の補間に用いる該テクスチャに対する重みを任意の視点方向に関して参照可能なメモリ領域とを有し、与えられた視点方向に対応する前記視点インデックスと前記重みをメモリ参照によって決定する処理と、得られた前記視点インデックスに対応する画素値をメモリ参照によって決定する処理と、得られた前記画素値と前記重みから実際に表示する画素値を視点に関して補間する処理とからなり、任意の視点方向から見た画像の生成を実現することを特徴とし、特に視点の補間に用いるテクスチャを指す視点インデックスと、視点の補間に用いるテクスチャに対する重みをメモリに保持することで、ハードウェアによる支援を容易にすることを特徴とする、実時間レンダリングの方法。
【請求項２】
複数の視点方向でサンプリングされた、任意の照明方向に対する放射輝度の応答関数（以後「照明応答関数」）のパラメータの集合を、視点に関するインデックス（以後「視点インデックス」）によって参照可能な形で格納する第1メモリ領域と、視点の補間に用いるパラメータ値を指す1または複数の前記視点インデックスを任意の視点方向に関して参照可能な第２メモリ領域と、視点の補間に用いる該パラメータ値に対する重みを任意の視点方向に関して参照可能な第３メモリ領域と、与えられた視点方向に対応する前記視点インデックスと前記重みをメモリ参照によって決定する処理と、得られた前記視点インデックスに対応するパラメータ値をメモリ参照によって決定する処理と、得られた前記パラメータ値と前記重みから、実際の照明応答関数のパラメータを得る処理と、物体の座標系で各方向での照明の強度を表す関数のパラメータを得る処理と、得られた前記照明応答関数と前記照明の強度を表す関数との積分をとって実際に表示する画素値とする処理とからなり、任意の視点方向及び任意の照明方向並びに照明強度における画像の生成を実現することを特徴とする、実時間レンダリングの方法。
【請求項３】
請求項１に記載の実時間レンダリングの方法において、視点の補間に用いるテクスチャを指す視点インデックスを任意の視点方向に関して参照可能なメモリ領域、及び視点の補間に用いる該テクスチャに対する重みを任意の視点方向に対して参照可能なメモリ領域について、それぞれ各画素に関して４次元以上の値を利用することで、３次元の全方向についてそれらの値の変化を連続にし、値の補間による誤差の発生を抑制したことを特徴とする、実時間レンダリングの方法。
【請求項４】
請求項２に記載の実時間レンダリングの方法において、視点の補間に用いるテクスチャを指す視点インデックスを任意の視点方向に関して参照可能なメモリ領域、及び視点の補間に用いる該テクスチャに対する重みを任意の視点方向に対して参照可能なメモリ領域について、それぞれ各画素に関して４次元以上の値を利用することで、３次元の全方向についてそれらの値の変化を連続にし、値の補間による誤差の発生を抑制したことを特徴とする、実時間レンダリングの方法。
【請求項５】
請求項２に記載の実時間レンダリングの方法において、照明環境が照明の方向のみで決まる場合に、各照明方向に関して、その照明強度を表す物体の座標系での関数のパラメータを予め計算しておき、それらのパラメータをメモリ領域に保持することで、実装の効率を高めることを特徴とする、実時間レンダリングの方法。
【請求項６】
請求項２に記載の実時間レンダリングの方法において、前記第１メモリ領域内の照明応答関数のパラメータを多次元の画素値とする画像と見なして、Image Quiltingの手法により前記画像を拡大することを特徴とする、テクスチャサイズを変換する方法。
【請求項７】
請求項６に記載のテクスチャサイズを変換する方法において、サイズを変更されたテクスチャの表現形式としてテクスチャ座標を変換する変換テーブルを有し、前記変換テーブルの内容を決定する処理を行うことを特徴とする、テクスチャサイズを変換する方法。
【請求項８】
請求項２に記載の実時間レンダリングの方法において、サイズの違うテクスチャの間でテクスチャ座標を変換するためのテーブルを入力として加え、レンダリング時にテクスチャ座標の変換を行う処理を有し、任意の視点方向及び任意の照明方向並びに照明強度において、テクスチャサイズを変換して画像の生成を行うことができることを特徴とする、実時間レンダリングの方法。
【発明の詳細な説明】
【技術分野】  本発明は、実在の物体の表面における反射特性をサンプリングし、それらのサンプルから双方向テクスチャ関数（Ｂｉｄｉｒｅｃｔｉｏｎａｌ  Ｔｅｘｔｕｒｅ  Ｆｕｎｃｔｉｏｎ、以降「ＢＴＦ」と表記する）として表現された表面反射モデルを生成し、生成された反射モデルによって、任意の形状モデルのレンダリングを、プログラマブルシェーダを利用して効率的に行う方法に関するものである。ＢＴＦは、任意の光源方向、視点方向で再現可能なテクスチャを定式化したモデルであり、光源方向、視点方向、テクスチャ座標をパラメータとした関数である。
本発明の方法を用いれば、ＢＴＦに基づいた任意の形状モデルのレンダリングを実時間で行うことができる。本発明は、その要素技術として、視点に依存したテクスチャの複数個のサンプルから、プログラマブルシェーダを利用して視点に関する補間を効率的に行う方法を含む。
【背景技術】  特定の物体（以降「測定物体」と表記する）を、３次元コンピュータグラフィックス（以降「ＣＧ」と表記する）により高い現実感で再現するためには、測定物体の形状と、表面の材質感を、データとして表現する必要がある。
測定物体の表面の形状は、レーザレンジスキャナなどの形状測定装置を利用することで、ある程度詳細に測定することができる。
一方、測定物体の表面の材質感をデータとして測定、表現する方法には、様々な問題があり、ＣＧの分野における重要課題となっている。
測定物体の表面の材質感を表す情報のうち、非常に重要な情報が、様々な方向から物体表面に光を当て、様々な方向から観測したとき、物体の見え方が、光源の方向、観測する方向によってどのように変化するか、という情報である。以降、この情報を、その測定物体の「表面反射特性」と表記する。
表面の見え方や質感の表面反射特性を一般的に表現するための形式として、双方向反射分布関数（Ｂｉｄｉｒｅｃｔｉｏｎａｌ  Ｒｅｆｌｅｃｔａｎｃｅ  Ｄｉｓｔｒｉｂｕｔｉｏｎ  Ｆｕｎｃｔｉｏｎ、以降「ＢＲＤＦ」と表記する）がある。ＢＲＤＦは、通常のモデリングソフト等においても採用されるな、普及が進んできているが、物体表面がテクスチャを持ち、材質感が場所によって変化するときには、ＢＲＤＦは表面上の点の位置によって変化する。このような場合に、ＢＲＤＦを表現する手法は、未だ研究段階である。また、物体の表面が、例えば微細な凸凹（ｂｕｍｐ）や、布における織り目など、視認可能な大きさの微細な形状（以降「メゾスコピック形状」と表記する）を持つ場合、その見え方の変化を表現するには、ＢＲＤＦのみでは不十分である。
前記のような場合に関して、ＢＲＤＦの代わりにＢＴＦ（非特許文献２）を利用することが提案されている。ＢＴＦは、視点方向、光源方向を連続的に変化させたときの、物体表面の見え方の変化を、視点方向、光源方向をパラメータとした画像を表す関数として定式化したものである。
メゾスコピック形状を物体表面が持つ場合、ＢＴＦは、ＢＲＤＦの単なる拡張であるばかりでなく、表面の微細な形状による見え方の変化をもモデリング、レンダリングするのに役立つ。応用例としては、細かい凹凸を持つ布などのテクスチャ、芝目やアスファルトなどの表現などがある。ＢＴＦにより、従来の手法では表現しきれない、多くの種類の物体を表現することが可能である。
近年、一般的なパーソナルコンピュータに搭載されるビデオボードに、プログラム可能な頂点シェーダ、プログラム可能なピクセルシェーダ（以降、単に「頂点シェーダ」「ピクセルシェーダ」と表記し、また、これらをまとめて「プログラマブルシェーダ」と表記する）の機能が搭載されるようになった。これらの機能を使うことで、ビデオボード上の画像処理装置であるＧＰＵの内部で行われる処理、例えば、物体の形状データの頂点位置の座標変換処理や、ピクセル毎のテクスチャマッピングなどの処理を、ユーザがプログラムによって制御することができるようになっている。
頂点シェーダ、ピクセルシェーダの機能を利用して、ＢＲＤＦやＢＴＦで表された質感を形状モデルに適用して、実時間レンダリングを行うことが試みられるようになってきている。しかし、完全なＢＴＦを実時間でレンダリングすることは未だ研究途上である。また、対象が立体物である場合については、ほとんど手が付けられていない。
また、ＢＴＦを素材の質感を表現するために利用する場合、同じような特徴を持つパターンで平面を敷き詰める手法が実用上重要である。通常の画像として表現されるテクスチャに対しては、このための手法として、有限の大きさのテクスチャ標本から、画像の小片を切り出して、平面に敷き詰める手法が提案されており、「Ｉｍａｇｅ  Ｑｕｉｌｔｉｎｇ」と呼ばれる（非特許文献１２）。Ｉｍａｇｅ  Ｑｕｉｌｔｉｎｇは、小さなテクスチャ標本から、任意の大きさのテクスチャを得る手法であり、一種の「圧縮」と考えることもできる。
【特許文献１】        特開２００３−９０７１５号公報
【非特許文献１】      Ｎ．Ｇｒｅｅｎｅ著「”Ｅｎｖｉｒｏｎｍｅｎｔ  Ｍａｐｐｉｎｇ  ａｎｄ  Ｏｔｈｅｒ  Ａｐｐｌｉｃａｔｉｏｎｓ  ｏｆ  Ｗｏｒｌｄ  Ｐｒｏｊｅｃｔｉｏｎｓ”ＩＥＥＥ  Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ  ａｎｄ  Ａｐｐｌｉｃａｔｉｏｎｓ，ｖｏｌ．６，ｎｏ．１１，ｐｐ．２１−２９，Ｎｏｖ．１９８６」
【非特許文献２】      Ｋ．Ｄａｎａ  ａｎｄ  Ｂ．Ｖａｎ  Ｇｉｎｎｅｋｅｎ  ａｎｄ  Ｓ．Ｎａｙａｒ  ａｎｄ  Ｊ．Ｋｏｅｎｄｅｒｉｎｋ著「”Ｒｅｆｌｅｃｔａｎｃｅ  ａｎｄ  ｔｅｘｔｕｒｅ  ｏｆ  ｒｅａｌ−ｗｏｒｌｄ  ｓｕｒｆａｃｅｓ”，”ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｇｒａｐｈｉｃｓ”，”１９９９”，ｖｏｌ．１８，ｎｏ．”１”，ｐｐ．１−３４」
【非特許文献３】      Ｋ．Ｅ．Ｔｏｒｒａｎｃｅ  ａｎｄ  Ｅ．Ｍ．Ｓｐａｒｒｏｗ著「”Ｔｈｅｏｒｙ  ｆｏｒ  ｏｆｆ−ｓｐｅｃｕｌａｒ  ｒｅｆｌｅｃｔｉｏｎ  ｆｒｏｍ  ｒｏｕｇｈｅｎｅｄ  ｓｕｒｆａｃｅｓ”，Ｊ．Ｏｐｔ．Ｓｏｃ．Ａｍ．，ｖｏｌ．５７，ｐｐ．１１０５−１１０４，１９６７」
【非特許文献４】      Ｓｌｏａｎ  ａｎｄ  Ｐｅｔｅｒ−Ｐｉｋｅ  ａｎｄ  Ｊａｎ  Ｋａｕｔｚ  ａｎｄ  Ｊｏｈｎ  Ｓｎｙｄｅｒ著「”Ｐｒｅｃｏｍｐｕｔｅｄ  Ｒａｄｉａｎｃｅ  Ｔｒａｎｓｆｅｒ  ｆｏｒ  Ｒｅａｌ−Ｔｉｍｅ  Ｒｅｎｄｅｒｉｎｇ  ｉｎ  Ｄｙｎａｍｉｃ，Ｌｏｗ−Ｆｒｅｑｕｅｎｃｙ  Ｌｉｇｈｔｉｎｇ  Ｅｎｖｉｒｏｎｍｅｎｔｓ”ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｇｒａｐｈｉｃｓ（ＴＯＧ），２００２，ｐｐ．５２７−５３６」
【非特許文献５】      Ｊ．Ｆ．Ｂｌｉｎｎ  ａｎｄ  Ｍ．Ｅ．Ｎｅｗｅｌｌ著「”Ｔｅｘｔｕｒｅ  ａｎｄ  ｒｅｆｌｅｃｔｉｏｎ  ｉｎ  ｃｏｍｐｕｔｅｒ  ｇｅｎｅｒａｔｅｄ  ｉｍａｇｅｓ”Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｏｆ  ｔｈｅ  ＡＣＭ，ｖｏｌ．１９，ｎｏ．１０，ｐｐ．５４２−５４７，Ｏｃｔ．１９７６」
【非特許文献６】      Ｌ．Ｗｉｌｌｉａｍｓ著「”Ｐｙｒａｍｉｄａｌ  Ｐａｒａｍｅｔｒｉｃｓ”Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ，ｖｏｌ．７，ｎｏ．３，ｐｐ．１−１１，Ｊｕｌ．１９８３」
【非特許文献７】      Ｗ．Ｈｅｉｄｒｉｃｈ  ａｎｄ  Ｈ．Ｐ．Ｓｅｉｄｅｌ著「”Ｖｉｅｗ−ｉｎｄｅｐｅｎｄｅｎｔ  Ｅｎｖｉｒｏｎｍｅｎｔ  Ｍａｐｓ”ＡＣＭ  ＳＩＧＧＲＡＰＨ／Ｅｕｒｏｇｒａｐｈｉｃｓ  Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｇｒａｐｈｉｃｓ  Ｈａｒｄｗａｒｅ，ｐｐ．３９−４５，Ａｕｇ．１９９８」
【非特許文献８】      Ｙ．Ｇ．Ｌｅｃｌｅｒｃ  ａｎｄ  Ａ．Ｆ．Ｂｏｂｉｃｋ著「”Ｔｈｅ  ｄｉｒｅｃｔ  ｃｏｍｐｕｔａｔｉｏｎ  ｏｆ  ｈｅｉｇｈｔ  ｆｒｏｍ  ｓｈａｄｉｎｇ”，Ｐｒｏｃ．ｏｆ  ＩＥＥＥ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ  ａｎｄ  Ｐａｔｔｅｒｎ  Ｒｅｃｏｇｎｉｔｉｏｎ，ｐｐ．５５２−５５８，１９９１」
【非特許文献９】      Ｐ．Ｓｃｈｒｏｄｅｒ  ａｎｄ  Ｗ．Ｓｗｅｌｄｅｎｓ著「”Ｓｐｈｅｒｉｃａｌ  Ｗａｖｅｌｅｔｓ：Ｅｆｆｉｃｉｅｎｔｌｙ  Ｒｅｐｒｅｓｅｎｔｉｎｇ  Ｆｕｎｃｔｉｏｎｓ  ｏｎ  ｔｈｅ  Ｓｐｈｅｒｅ”，Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｅｄｉｎｇｓ，（ＳＩＧＧＲＡＰＨ  ９５），ｐｐ．１６１−１７２，１９９５」
【非特許文献１０】    Ｈ．Ｗ．Ｊｅｎｓｅｎ，Ｓ．Ｒ．Ｍａｒｓｃｈｎｅｒ，Ｍ．Ｌｅｖｏｙ  ａｎｄ  Ｐ．Ｈａｎｒａｈａｎ著「”Ａ  Ｐｒａｃｔｉｃａｌ  Ｍｏｄｅｌ  ｆｏｒ  Ｓｕｂｓｕｒｆａｃｅ  Ｌｉｇｈｔ  Ｔｒａｎｓｐｏｒｔ”，Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｅｄｉｎｇｓ（ＳＩＧＧＲＡＰＨ２００１  Ｃｏｎｆｅｒｅｎｃｅ  Ｐｒｏｃｅｅｄｉｎｇｓ），ｐｐ．５１１−５１８，Ａｕｇ．１２−１７，２００１」
【非特許文献１１】    Ｃｈｕａｎｇ，Ｚｏｎｇｋｅｒ，Ｈｉｎｄｏｒｆｆ，Ｃｕｒｌｅｓｓ，Ｓａｌｅｓｉｎ，ａｎｄ  Ｓｚｅｌｉｓｋｉ著「”Ｅｎｖｉｒｏｎｍｅｎｔ  Ｍａｔｔｉｎｇ  Ｅｘｔｅｎｓｉｏｎｓ：Ｔｏｗａｒｄｓ  Ｈｉｇｈｅｒ  Ａｃｃｕｒａｃｙ  ａｎｄ  Ｒｅａｌ−Ｔｉｍｅ  Ｃａｐｔｕｒｅ”，ＳＩＧＧＲＡＰＨ  ２０００，ｐｐ．１２１−１３０，Ｊｕｌｙ  ２０００」
【非特許文献１２】    Ａ．Ａ．Ｅｆｒｏｓ  ａｎｄ  Ｗ．Ｔ．Ｆｒｅｅｍａｎ著「”Ｉｍａｇｅ  Ｑｕｉｌｔｉｎｇ  ｆｏｒ  Ｔｅｘｔｕｒｅ  Ｓｙｎｔｈｅｓｉｓ  ａｎｄ  Ｔｒａｎｓｆｅｒ”ＳＩＧＧＲＡＰＨ  ２００１，ｐｐ．３４１−３４６，Ａｕｇ．２００１」
【発明の開示】
実在する平面状の物体のテクスチャを計測し、任意の視点方向、光源方向で再生可能なＢＴＦとして表現し、これを任意の形状データにマッピングしてレンダリングを行うことは、立体感の高い、リアルなテクスチャを実現するために重要な課題である。さらに、ＢＴＦを、素材の質感を表現するために利用する場合、有限の大きさをもつＢＴＦのデータから、任意の大きさのＢＴＦを生成することが、実用上の大きな課題となる。
また、立体形状を持った、実在する物体を計測し、任意の視点方向、光源方向に関してレンダリングを行うことは、実在物体をリアルに表現するために重要な課題である。
本発明は、上記のようなレンダリングを、実時間で行う方法である。
本発明では、頂点シェーダ、ピクセルシェーダの機能を利用して、ＢＴＦを形状データに適用してレンダリングする。テクスチャを形状データに貼り付けてレンダリングすることを、一般に、そのテクスチャの形状データへの「マッピング」と呼ぶことから、ＢＴＦを形状データに適用してレンダリングすることも、以降「マッピング」と表記する。
本発明では、ＢＴＦのデータを、実在する測定物体を撮影するか、データで表された測定物体の画像をＣＧによって合成することで得る。このとき、光源方向、視点方向を変化させながら、対象物体の実際の画像または合成画像を、撮影または生成する。この処理を、「ＢＴＦのサンプリング」と呼ぶ。
実在する測定物体をサンプリングすることは、測定物体の写真を、膨大な種類の条件下で撮影する必要がある。本発明では、実在する測定物体のサンプリングは、特許文献１で説明したようなサンプリング装置（以降「ＢＴＦサンプリング装置」と表記する）などを利用して、なされているものとする。
サンプリングされたＢＴＦのデータ（以降「ＢＴＦサンプル画像集合」と表記する）は、離散的な光源方向、視点方向でのみ取得されたものである。ＢＴＦを、任意の光源方向、視点方向で形状データにマッピングするためには、連続な光源方向、視点方向でＢＴＦを定義する必要がある。
また、ピクセルシェーダが読み取ることのできるデータ領域のうち、大きなデータを格納できる場所は、ビデオボード上のテクスチャメモリのみである。よって、ＢＴＦを頂点シェーダ、ピクセルシェーダによって効率的にレンダリングするには、ＢＴＦのデータをテクスチャデータとして表現することが必要となる。本発明では、これらの条件を満たすために、ＢＴＦサンプル画像集合を近似、圧縮し、テクスチャメモリに格納可能な複数のテクスチャデータとして表現する。
ＢＴＦの変化には、光源方向の変化によるものと、視点方向の変化によるものがある。光源方向の変化によるＢＴＦの変化は、各照明方向に位置する点光源に対する放射輝度の応答関数であり、これを「ＢＴＦの照明応答」或いは「ＢＴＦの光源依存変化」と表記し、視点方向の変化によるＢＴＦの変化を「ＢＴＦの視点依存変化」と表記する。
本発明において、ＢＴＦの照明応答は、照明応答を表す球面関数のパラメータとして保存される。球面関数を表すパラメータとしては、非特許文献４のように、球面調和関数を基底としたときの係数ベクトルなどを利用することができる。本発明では、このパラメータを、画素値として２次元の画像データとして格納する。これにより、テクスチャメモリにもデータを格納することができ、テクスチャと同様に扱うことができる。なお、通常のデータとしてメインメモリに格納しても良い。
また、ＢＴＦの視点依存変化の近似は、複数の視点のテクスチャデータを加重平均することで、それらの視点のデータを補間することで行われる。つまり、任意の視点に対し、その視点に近い方向の視点（以降「近傍視点」と表記する）に対応するサンプルの値に、任意の視点の位置で決まる重みを掛け、和をとった値を利用する。このとき、近傍視点の選択と、各近傍視点の重みの計算を高速化するために、各視点方向に対応する近傍視点のインデックスと、各近傍視点の重みをキューブテクスチャ（「キューブマップ」とも呼ばれる。非特許文献１）として表現する。これらのキューブテクスチャで表される球面関数を、それぞれ「近傍視点インデックス関数」及び「近傍視点重み関数」と呼ぶ。
近傍視点インデックス関数及び近傍視点重み関数を表すキューブテクスチャは、テクスチャメモリに格納しても、主メモリに格納しても良い。テクスチャメモリに格納した場合、近傍視点の選択と、近傍視点の重みの計算は、頂点シェーダまたはピクセルシェーダによって行う。主メモリに格納した場合、近傍視点の選択と、近傍視点の重みの計算は、中央演算処理装置（以降「ＣＰＵ」と表記する）によって行う。場合によっては、これらのテクスチャを、テクスチャメモリと主メモリの両方に格納し、プログラマブルシェーダとＣＰＵの両方で、近傍視点のインデックスと重みを参照することもある。
ＢＴＦを、素材の質感を表現するために利用する場合、有限の大きさのＢＴＦから、任意の大きさのＢＴＦを得られれば、実用上の価値が高い。そのために、「Ｉｍａｇｅ  Ｑｕｉｌｔｉｎｇ」（非特許文献１２）の手法を応用し、有限の大きさのＢＴＦから、ＢＴＦの小片を継ぎ合わせることで、任意の大きさに拡大されたＢＴＦを得る。
レンダリングをＣＰＵで行うこともできるが、プログラマブルシェーダを用いて行うことで、処理効率の大幅な向上が可能である。近傍視点インデックス関数、近傍視点重み関数を参照して、補間に利用する視点（近傍視点）のインデックスと重みを決定する。また、形状データの表面上の点とＢＴＦとの対応を表すテクスチャ座標（形状テクスチャ座標）を、形状データ及び近傍視点におけるカメラ情報などから必要に応じて求める。
レンダリング時の照明は、非特許文献４で述べられているように、球面関数とみなし、それを球面調和関数で展開した係数として表現する。
形状テクスチャ座標と近傍視点のインデックスから、視点依存照明応答をテクスチャ読み取りによって参照する。これと、照明を表す係数との内積を画素の値として出力する。
また、Ｉｍａｇｅ  ＱｕｉｌｔｉｎｇによりＢＴＦを表現する場合、有限の大きさのＢＴＦによって、拡大されたＢＴＦを表現するために、Ｑｕｉｌｔｉｎｇ  Ｍａｐと呼ばれる座標変換テーブルを利用する。これにより、簡単な処理により、拡大されたＢＴＦを任意の表面にマッピングすることができる。
本発明の方法により、任意の光源方向、視点方向に対するテクスチャの画素値を高速に生成することができる。これによって、任意の光源方向、視点方向で、形状データにＢＴＦをマッピングしながら、効率的に、また実時間でレンダリングを行うことができる。
立体形状を持つ物体、或いは平面的な物体に関して、その物体の見え方、物体表面の模様、凹凸、材質感、反射特性を、複数の視点方向及び光源方向に対応する画像（ＣＧ画像または写真）の集合（データＡ）として記録し、記録した画像に、補間、圧縮などの処理を加えて保存し、保存したデータ（データＢ）から、任意の光源方向及び視点方向に関しての物体の見え方等を、画像として再生することが可能である場合、保存したデータＢを、「ＢＴＦ」と呼び、最初に記録したデータＡを、「ＢＴＦサンプル画像集合」と呼ぶ。
本発明の効果は、ＢＴＦサンプル画像集合が与えられたとき、（１）それらのデータを圧縮または補間し、ＢＴＦとして保存し、（２）保存したＢＴＦをテクスチャ画像または数表として、３次元表示ハードウェアの支援を受けられる形でコンピュータ内部に表現し、（３）ＢＴＦを任意の形状モデルに貼り付けて、ＣＧレンダリングを行うことができ、（４）実時間レンダリングを実現できる、という点である。
これにより、物体の材質感を、光源方向、視点方向の移動による見え方の変化を含めて表現し、効率的に、或いは実時間で再現することが可能となる。
表現可能な物体は、表面に細かい凹凸がある物体や、毛や細かい繊維などを表面に持つ物体を含む。
また、本発明は、その要素技術として、視点に依存したテクスチャの複数個のサンプルから、プログラマブルシェーダを利用して視点に関するテクスチャの補間を効率的に行う方法を含む。
【発明を実施するための最良の形態】  （ＢＴＦのサンプリング）本発明では、物体の見え方や、表面のテクスチャを、複数の視点方向及び光源方向に対応する画像（ＣＧ画像または写真）の集合として記録したＢＴＦサンプル画像集合を入力データとする。入力するＢＴＦサンプル画像集合は、複数の画像の情報、それらの画像の各々に対応する、カメラ（視点）の情報と、光源の位置情報から成る。
このうち、カメラの情報からは、対象物体に関して固定された座標系（以降「物体座標系」と表記する）と、物体座標で表された点が射影される画像上の点の位置との変換式を導出できる必要がある。
ＢＴＦサンプル画像集合は、視点方向、光源方向の両方を変化させながら生成或いは撮影することが望ましい。実物体に関して、この条件を満たすように画像を撮影し、さらにカメラの情報や光源の位置情報を記録するためには、特許文献１で説明したようなＢＴＦサンプリング装置を利用する。
ＢＴＦサンプル画像集合から、各画像に対応するカメラの位置を、物体座標系で表された、物体座標系原点からの方向ベクトルとして表したもの（視点方向）の集合が得られる。この集合を「視点サンプリング点集合」と呼ぶ。視点サンプリング点集合は離散的な集合であり、Ｖ＊と表記する。以降、本発明において、離散的な値を表す記号には、”○＊”のように右肩に星印を付けて区別する。Ｖ＊の要素を「視点サンプリング点」と呼ぶ。ｉｖでインデックスした有限集合Ｖ＊の要素（すなわち、視点サンプリング点）をｖ＊（ｉｖ）と書く。Ｖ＊において視点サンプリング点を指し示すインデックスを「視点インデックス」と呼ぶ。
また、ＢＴＦサンプル画像集合から、各画像に対応する視点方向と、光源方向を、物体座標系で表された、物体座標系原点からの方向ベクトルの対として表したとき、固定された視点方向ｖ＊（ｉｖ）と対になる光源方向ベクトルの集合が得られる。この集合を「光源サンプリング点集合」と呼ぶ。光源サンプリング点集合は視点方向のインデックスｉｖに依存するので、Ｌ＊（ｖ＊（ｉｖ））或いはＬ＊（ｉｖ）と表記する。有限集合Ｌ＊（ｖ＊（ｉｖ））の要素をｉｌでインデックスしたものを「光源方向サンプリング点」と呼び、ｌ＊（ｉｌ；ｉｖ）∈Ｌ＊（ｖ＊（ｉｖ））と表記する。
ここで、ｌ＊（ｉｌ；ｉｖ）の表記は、この式を、ｉｌを変数とする関数とみなし、ｉｖを定数とみなすことを表す。このとき、この関数を、ｌ＊（．．．；ｉｖ）と表記することもある。以降、本発明において、関数の変数を”；”で区切った場合、”；”の左側の記号を関数の変数、”；”の右側の記号を固定された変数とみなす。
以降、サンプリングによって近似しようとするＢＴＦを「目的ＢＴＦ」と呼ぶ。目的ＢＴＦのサンプルとして、視点方向と光源方向のパラメータを付与されたテクスチャ画像を「ＢＴＦサンプルテクスチャ」と呼ぶ。サンプルテクスチャの集合を「ＢＴＦサンプルテクスチャ集合」と呼ぶ。
ＢＴＦサンプル画像集合を処理することで、ＢＴＦサンプルテクスチャ集合が得られる。ＢＴＦサンプル画像集合とＢＴＦサンプルテクスチャ集合の違いは、ＢＴＦサンプル画像集合が、サンプリングされた画像のままなのに対し、ＢＴＦサンプルテクスチャ集合は、目的ＢＴＦの、ある視点サンプリング点、光源方向サンプリング点において目的ＢＴＦを近似するサンプルになっていることである。
サンプルテクスチャ集合は、離散的なテクスチャの集合であり、これを連続なＢＴＦとして扱うには補間を行う必要がある。ＢＴＦサンプルテクスチャ集合を元にして、実際に補間、近似され、生成された連続なＢＴＦを「近似ＢＴＦ」と表記する。
ＢＴＦサンプル画像集合から、ＢＴＦサンプルテクスチャ集合を生成する方法は、大きく２種類に分かれる。
１つ目は、撮影された画像に座標変換を施し、ＢＴＦサンプルテクスチャ集合の全ての画像において、同一の座標における画素が同一の物理的な点にほぼ対応するように画像を変形させる方法である。測定物体が平面物体である場合、ＢＴＦサンプリング装置に取り付けられた各カメラの内部パラメータ及び外部パラメータを利用して、斉次変換と呼ばれる画像変換を行うことで、このような画像を得ることができる。カメラの内部パラメータ及び外部パラメータは、サンプリング時の視点方向に依存するので、この処理は視点方向毎に違ったパラメータを使って行う。以降、この処理を「レクティフィケーション」と呼ぶ。
レクティフィケーションによってテクスチャサンプリングを行う場合、ＢＴＦサンプルテクスチャに付与される視点方向、光源方向は、接空間座標系で表現される。このとき、得られる近似ＢＴＦでは、同一の座標における画素が常に同一の物理的な点に対応する。このような近似ＢＴＦは、通常のテクスチャ画像と同様に、テクスチャ座標を持った任意の曲面に対してマッピングし、レンダリングに利用することができる。テクスチャサンプリングにレクティフィケーションを使う方法を「テクスチャサンプリング法Ａ」と呼ぶ。
２つ目の方法は、ＢＴＦサンプル画像集合内の画像に座標変換を施さずに、そのままの画像、或いはその画像の一部をＢＴＦサンプルテクスチャとして使用する方法である。この方法は、測定物体が立体物体である場合に利用する。このようにして作成されたＢＴＦサンプルテクスチャ集合から得られる近似ＢＴＦは、同一の座標における画素が、視点方向パラメータによって異なる物理的な点に対応する。ＢＴＦサンプルテクスチャに付与される視点方向、光源方向は、物体座標系で表現される。
このような近似ＢＴＦは、通常のテクスチャとは違い、レンダリングする形状とテクスチャとのマッピングを、視点方向によって変化させる必要がある。このような近似ＢＴＦをレンダリングに使用する場合、レンダリング対象であるポリゴンメッシュとしては、測定物体の形状を近似したものを使用し、ポリゴンメッシュの各頂点に対応するテクスチャ座標をレンダリング時に計算する。テクスチャ座標の計算には、視点毎に用意されたカメラの内部パラメータ、外部パラメータを使用する。テクスチャサンプリングにレクティフィケーションを使わない方法を「テクスチャサンプリング法Ｂ」と呼ぶ。
ＢＴＦは「視点方向ｖ、光源方向ｌ、テクスチャ座標（ｓ，ｔ）、色チャネルｃでインデックスされた、放射輝度値の無限集合」である。テクスチャサンプリング法Ａを使う場合、ｖ，ｌは、物体表面の接空間座標系で表される。テクスチャサンプリング法Ｂを使う場合、ｖ，ｌは、物体座標系で表される。
ｖ，ｌは、球面座標（ｓｐｈｅｒｉｃａｌ  ｃｏｏｒｄｉｎａｔｅｓ）を用いて、下記の数式１で表現される。
【数１】
0004394122.tif 000002
θｖ，θｌは緯度、φｖ，φｌは経度である。テクスチャ座標ｐは座標（ｓ，ｔ）で表現し、ｃはＲＧＢに対応するインデックスで、０，１，２のいずれかの値をとる。
目的ＢＴＦは、ｖ，ｌ，ｓ，ｔ，ｃを変数とする関数として、下記の数式２で表される。
【数２】
0004394122.tif 000003
各ＢＴＦサンプルテクスチャのテクセル値は、関数Ｔのサンプルであり「ＢＴＦサンプルテクセル値」と呼ぶことにする。テクスチャ座標（ｓ，ｔ）は、方形の格子点でサンプリングされており、整数で表したそれぞれの格子点の座標値を（ｉｓ，ｉｔ）とする。テクスチャサイズを（Ｗｔ，Ｈｔ）として、下記の数式３で表される。
【数３】
0004394122.tif 000004
これらの表記により、サンプルテクセル値は離散関数として、下記の数式４で表される。
【数４】
0004394122.tif 000005
ただし、そのとき下記の数式５である。
【数５】
0004394122.tif 000006
Ｔ＊はＴのサンプリングであるので、下記の数式６となる。
【数６】
0004394122.tif 000007
ＢＴＦサンプルテクスチャ集合Ｔ＊から、目的ＢＴＦである関数Ｔを近似した近似ＢＴＦをＴａで表し、下記の数式７とする。
【数７】
0004394122.tif 000008
（ＢＴＦの近似）与えられたポリゴンメッシュにＢＴＦを適用してレンダリングするためには、ＢＴＦサンプルテクスチャ集合から、連続な近似ＢＴＦを得る必要がある。本発明では、視点方向の変化に関しては、サンプルの重み付け和による補間によってＢＴＦを近似する。
物体の見かけの放射輝度は、放射輝度の点光源に対する応答関数（以後「放射輝度応答関数」）と光源を表す関数との球面積分で表される。放射輝度応答関数と、光源を表す関数を、正規直交基底である球面調和関数の線形和で表すと、放射輝度応答関数と光源を表す関数との球面積分が、基底に対する係数ベクトルの内積で計算されるため、効率良くグローバルイルミネーションに対応することが可能になる（非特許文献４を参照）。本発明形態においても、放射輝度応答関数に関しては、球面調和関数展開による近似を利用する。
以降、本発明において、光源方向、色チャネル、テクスチャ座標を固定し、視点方向のみを変化させたときの、ＢＴＦ或いはＢＴＦサンプルテクセル値の変化を「視点依存変化」と呼ぶ。また、視点方向、色チャネル、テクスチャ座標を固定し、光源方向のみを変化させたときの、ＢＴＦ或いはＢＴＦサンプルテクセル値の変化を「光源依存変化」或いは「放射輝度応答」と呼ぶ。光源依存変化に関する補間手法と、視点依存変化に関する補間手法とを違うものにしたのは、ＢＴＦサンプルテクセル値の光源依存変化と視点依存変化の性質が異なるからである。
ＢＴＦサンプルテクセル値を表す関数Ｔ＊において、視点方向ｉｖ、テクセル位置（ｉｓ，ｉｔ）、色チャネルｃのインデックスを固定し、光源方向のインデックスｉｌを変化させるとき、Ｔ＊の値は、被測定対象においてほぼ同一の物理的な点における放射輝度値を表すことが、高い精度で保証される。
これは、同じ視点方向ｖ＊（ｉｖ）に対するＢＴＦサンプルテクスチャが、固定されたカメラ位置、ターンテーブル位置で撮影されるためである。このため、ＢＴＦサンプルテクセル値を表す関数Ｔ＊の光源依存変化は、同一の材質に対する光源方向を変化させたときの放射輝度値の変化にのみ起因する。
既に多くの文献で言及されているように、多くの種類の材質において、放射輝度値の光源依存変化は、比較的緩やかであり、少数の球面調和関数基底を利用することでよく近似できる。目的ＢＴＦであるＴの光源依存変化も同様に緩やかであり、球面調和関数による近似が効果的であると考えられる。
一方、同一のテクセル位置（ｉｓ，ｉｔ）と色チャネルｃで、異なる視点インデックスｉｖを指定したときのＢＴＦサンプルテクセル値Ｔ＊の値は、測定物体の同一の物理的な点の放射輝度値に対応するとは限らない。テクスチャサンプリング法Ｂを利用した場合、視点方向パラメータが異なると、同一のテクセル位置（ｉｓ，ｉｔ）に対応する測定物体上の点は異なる。テクスチャサンプリング法Ａを利用した場合であっても、物体表面のメゾスコピックな形状変化や、カメラパラメータの誤差などの影響により、レクティフィケーションの処理に誤差が発生する。そのため、この場合でも、同一のテクセル位置が異なった物理的な点に対応することがある。
このため、材質の反射特性の変化が激しい物体や、メゾスコピックな形状を表面に持つ物体を扱う場合、ＢＴＦサンプルテクセル値を表す関数Ｔ＊の視点依存変化は、物理的な点の位置の変化に起因する放射輝度値の急激な変化を含むことがある。このような変化を低次元の球面調和関数で近似すると、高周波数成分が削除され、テクスチャの重要な特徴が損なわれてしまう恐れがある。
この考えから、本発明では、ＢＴＦサンプルテクセル値の視点依存変化をベクトル量子化によって圧縮、保存し、目的ＢＴＦの視点依存変化の近似を、ＢＴＦサンプルテクセル値の重み付け和によって行っている。サンプル値に掛ける重みは、重心座標（ｂａｒｙｃｅｎｔｒｉｃ  ｃｏｏｒｄｉｎａｔｅｓ）の値をそのまま重みとして利用するものと、重心座標の有理関数をとり、より滑らかな重み変化を実現したものの２種類が、実装し易く効果が高い。
（鏡面反射成分及び自己影の分離）前述した手順に関し、ＢＴＦの近似をするときに問題になる点として、物体表面の鏡面反射と、物体の形状により物体自身に落とされる影（以降「自己影」と表記する）がある。
鏡面反射及び自己影が画像に含まれる場合、これらの成分の光源依存変化は、光源方向の移動に対して急激に変化することがある。このような場合、光源依存変化を低次元の球面調和関数で近似すると、高周波数成分が削除され、鏡面反射や自己影が消えてしまうことがある。よってこれらの成分は、ＢＴＦサンプルテクスチャ集合から予め分離しておくことが望ましい。
ＢＴＦサンプルテクスチャ集合から鏡面反射と自己影を分離する手法を述べる。物体表面の各点における反射モデル（拡散反射と鏡面反射を含むもの）を、ＢＴＦサンプルテクスチャ集合のデータに当てはめて鏡面反射を求める。また、自己影の分離に関しては、モデルの形状と光源位置から予想される自己影の位置を求め、その位置における値の変化をとることで、自己影による値の変化の大きさを求めることができる。
ＢＴＦサンプルテクスチャ集合から鏡面反射と自己影を分離する別の手法も述べる。まず、そのまま光源依存変化を低次元の球面調和関数で近似し、逆に近似した値と元のＢＴＦサンプルテクスチャ集合との画素値の差を求め、差の大きい場所を求める。差の大きい場所のうち、ＢＴＦサンプルテクスチャの値の方が大きい場所は、鏡面反射のモデルに当てはめ、各表面上の点における鏡面反射の強さを決める。逆にＢＴＦサンプルテクスチャの値の方が小さい場所は、自己影とみなす。
鏡面反射及び自己影は、レンダリング時にＢＴＦとは別にレンダリングすることができる。鏡面反射のレンダリングには、既存の反射モデルによる手法を使う。例えば、トランス・スパロー（Ｔｏｒｒａｎｃｅ  Ｓｐａｒｒｏｗ）のモデル（非特許文献３）を利用して、鏡面反射をレンダリングすることができる。
自己影についても、既存のレンダリング手法を使ってレンダリングできる。それぞれのレンダリング結果は、最後にＢＴＦのレンダリング結果と合成する。鏡面反射は、値の足し算または掛け算によって、自己影の値は、掛け算によってＢＴＦのレンダリング結果と合成する。
（ＢＴＦの光源依存変化の近似）目的ＢＴＦの光源依存変化は、ＢＴＦの各画素において、点光源の方向を変えたときの放射輝度値の応答関数と見ることができる。物体を任意の光源環境に置いた場合、各点における放射輝度値は、その点から各方向への照明の強度を球面関数として表すとき、放射輝度値の応答関数と光源を表す関数との球面積分で表される。放射輝度値の応答関数と光源を表す関数とを正規直交基底である球面調和関数の線形和で表すと、放射輝度伝達関数と光源を表す関数との球面積分が、基底に対する係数ベクトルの内積で計算されるため、効率良くグローバルイルミネーションに対応することが可能になる（非特許文献４）。また、球面調和関数による展開係数に、主成分分析を適用すると、さらに効率的な正規直交基底を算出することができる。そこで、ここでは実施形態として、球面調和関数によって求めた展開係数を主成分分析したものを、放射輝度値の応答関数と光源を表す関数との正規直交基底として利用する。
まず、ＢＴＦサンプルテクスチャ集合から、固定された視点インデックスｉｖ、テクセル位置（ｉｓ，ｉｔ）、色チャネルｃにおけるＢＴＦサンプルテクセル値の集合である、下記の数式８を取り出し、球面関数のサンプル集合とする。
【数８】
0004394122.tif 000009
このように、特定の視点方向、テクスチャ座標、色チャネルにおける光源依存変化を表すサンプルの集合を「光源依存変化サンプル集合」と呼ぶ。
光源依存変化サンプル集合のそれぞれの要素は、光源方向を表す、下記の数式９により、単位球面上の点に対応する。この単位球面を、Ｌ＊（ｉｖ）の要素に対応する各点を頂点として、ポリゴンメッシュに分割することができる。以降、ポリゴンメッシュを「光源サンプリングメッシュ」と呼ぶ。
【数９】
0004394122.tif 000010
光源サンプリングメッシュを、光源依存変化サンプル集合のそれぞれの輝度値を頂点色として、キューブテクスチャにレンダリングすることで、目的ＢＴＦの光源依存変化を近似する球面関数を表現することができる。レンダリング時にスムースシェーディングを指定することで、光源依存変化サンプル集合の間で補間処理が行われ、単位球面上で密な値を持った球面関数が得られる。スムースシェーディングとしては、グーローシェーディング、フォンシェーディングなどを利用する。得られた目的ＢＴＦの光源依存変化は、目的ＢＴＦの点光源への応答関数でもあるので、これを「照明応答」と呼ぶこともある。
照明応答を近似するキューブテクスチャを、球面調和関数展開によって近似する。球面調和関数による級数展開の係数は、球面積分により得られる。球面積分は、キューブテクスチャのテクセル値と、対応する光源方向における球面調和関数の基底関数の値と、テクセルが占める立体角の大きさとの積を、各テクセルについて足し合わせた値で近似される。
得られる係数を、下記の数式１０と表す。ここでＮｓｈは球面調和関数の最大次数とする。Ｎｓｈ次までの基底を利用する場合、Ｎｓｈ２個の係数が得られる。
【数１０】
0004394122.tif 000011
視点方向ｖ＊（ｉｖ）におけるＴの光源依存変化をＴｌで表すと、下記の数式１１となる。ただし、Ｙ（θ，φ；ｌ，ｍ）は球面調和関数を、ｌ＝（θｌ，φｌ）は連続な光源方向を、ｖ＊（ｉｖ）はインデックスｉｖで指定された、離散的な値をとる視点方向を、ｐ＝（ｉｓ，ｉｔ）は２次元のインデックスで表されたテクスチャ座標を、ｃは色チャネルを表す。
【数１１】
0004394122.tif 000012
前述した手順を繰り返して、全ての各視点インデックスｉｖ、テクセル位置ｐ＝（ｉｓ，ｉｔ）、色チャネルｃにおけるＢＴＦの照明応答を、球面調和関数で近似する。
結果として得られた係数を、ｉｖ，ｉｓ，ｉｔでインデックスされた、３Ｎｓｈ２次のベクトルとみなす。ベクトルの数は、‖Ｖ＊‖ＷｔＨｔである。
得られたベクトルの集合を、主成分分析（Ｐｒｉｎｃｉｐａｌ  Ｃｏｍｐｏｎｅｎｔ  Ａｎａｌｙｓｉｓ、以降「ＰＣＡ」と表記する）の手法を用いて近似する。この方法は、前計算放射輝度伝達（ＰＲＴ）の手法と同様である。ＲＧＢ３チャネルで３Ｎｓｈ２個の係数を、ベクトルとして、ＰＣＡによって近似し、Ｋ個の３Ｎｓｈ２次元主成分ベクトルと、主成分得点を表す‖Ｖ＊‖ＷｔＨｔ個のＫ次のベクトルに分解する。以下、３Ｎｓｈ２次元主成分ベクトルを「基底ベクトル」、主成分得点を表すＫ次のベクトルを「重みベクトル」と表記する。
基底ベクトルの計算には特異値分解（ｓｉｎｇｕｌａｒ  ｖａｌｕｅ  ｄｅｃｏｍｐｏｓｉｔｉｏｎ、以降「ＳＶＤ」と表記する）などを用いるが、全てのベクトルを基底ベクトルの計算に利用するのは多くの計算量が必要となるので、‖Ｖ＊‖ＷｔＨｔ個のベクトルから一部をサンプリングし、得られた少数のサンプルに対してＳＶＤを実行し、基底ベクトルを計算しても良い。
あとで重みベクトルをテクスチャとして表現する必要性から、各基底に対応する重みベクトルの成分は、一定の値の範囲になるように正規化しておくことが望ましい。したがって、重みベクトルの各成分について、絶対値の最大値を求め、その値で全重みベクトルの各成分の値を割り、対応する基底ベクトルにその値を掛ける。この正規化の方法は、前計算放射輝度伝達（ＰＲＴ）の手法と同様である。
ＰＣＡにより計算されたＫ個の基底ベクトルは、球面調和関数の係数として表されたＢＴＦの照明応答の基底である。これを、本発明においては「照明応答基底」と呼ぶことにする。基底ベクトルのインデックスをｋ（０≦ｋ≦Ｋ−１）とし、ｋで示された係数の基底を、Ｃ（ｃ；ｌ，ｍ，ｋ）で表す。ｃは色チャネルのインデックスで、０，１，２のいずれかの値をとる。照明応答基底Ｌｂ（．．．；ｋ）を下記の数式１２で定義する。
【数１２】
0004394122.tif 000013
ＰＣＡにより計算された重みベクトルはｉｖ，ｉｓ，ｉｔでインデックスされたＫ次ベクトルである。その要素をインデックスｋ（ただしｋは０以上Ｋ−１以下の整数）によりＷ＊（ｉｖ，ｉｓ，ｉｔ；ｋ）と表す。これにより、下記の数式１３によって、視点方向ｖ＊（ｉｖ）、テクセル位置（ｉｓ，ｉｔ）に対応するＢＴＦを近似できる。Ｔｌａを「ＢＴＦの光源依存変化近似関数」と呼ぶ。
【数１３】
0004394122.tif 000014
Ｗ＊（ｉｖ，ｉｓ，ｉｔ；ｋ）は照明応答を表し、同時に離散的な視点方向、テクスチャ座標で定義された離散関数でもあるので、「視点依存照明応答」と呼ぶ。
（ＢＴＦの視点依存変化の近似）既に述べたＢＴＦの光源依存変化近似関数Ｔｌａは、光源方向ｌの変化に対しては連続関数であり、視点方向ｖの変化に関しては、ｖが視点サンプリング点集合Ｖ＊の要素である場合にのみ値を持つ離散関数である。ＢＴＦの視点依存変化の近似は、Ｖ＊から複数の視点方向ｖを選択し、それらの視点方向でのＴｌａの値を重み付けした和をとることで行う。
視点サンプリング点集合Ｖ＊＝｛ｖ＊（ｉｖ）｜０≦ｉｖ≦‖Ｖ＊‖｝の要素は、光源サンプリング点の場合と同じように単位球面上に対応させることができる。視点サンプリング点集合の球面上での対応点を頂点とする三角ポリゴンメッシュによって、単位球面上を分割する。このポリゴンメッシュを「視点サンプリングメッシュ」と呼ぶ。
これにより、任意の視点方向ｖは、視点サンプリングメッシュに含まれる１つの三角ポリゴンに対応する。ｖの対応点が三角ポリゴンの内部にある場合には三角ポリゴンが、ｖの対応点がメッシュの辺や頂点にある場合には、辺または頂点に接続する三角ポリゴンに対応するようにする。この三角形をｖの「近傍視点三角形」と呼び、下記の数式１４と表記する。
【数１４】
0004394122.tif 000015
視点サンプリングメッシュの各三角形における３個の頂点は、それぞれの三角形で独立に｛０，１，２｝の数字でインデックスされる。このインデックスを「三角形局所インデックス」と呼ぶ。
近傍視点三角形△Ｎ（ｖ）の３個の頂点は、視点サンプリング点集合の要素である。これらをｖの「近傍視点」と呼び、三角形局所インデックスの順に、下記の数式１５で表す。
【数１５】
0004394122.tif 000016
ｖＮ（ｖ；０）、ｖＮ（ｖ；１）、ｖＮ（ｖ；２）の視点インデックスを、下記の数式１６で表す。
【数１６】
0004394122.tif 000017
これらをｖから、視点インデックスへの写像とみなし、「近傍視点インデックス関数」と呼ぶ。近傍視点インデックス関数は、一般に、視点サンプリングメッシュの一部の辺において、不連続性を持つ。
0004394122.tif 000018
数Ｔａは、重み関数である下記の数式１７で加重平均をとった関数として、下記の数式１８の形で与えられる。
【数１７】
0004394122.tif 000019
【数１８】
0004394122.tif 000020
0004394122.tif 000021
ＢＴＦ、Ｔａであるが、あとで述べるように視点依存照明応答Ｗ＊はテクスチャとして表現されるので、Ｗ＊において適当なテクスチャ座標の補間を行うことで、連続的なテクスチャ座標に関しての近似ＢＴＦ、Ｔａを得ることができる。
関数Ｇを下記の数式１９と定義すると、下記の数式２０となる。Ｇ（．．．；ｋ）は視点依存照明応答を補間した視点位置の関数である。Ｇ（．．．；ｋ）を「補間された照明応答」と呼ぶ。
【数１９】
0004394122.tif 000022
【数２０】
0004394122.tif 000023
重み関数Ｈ（ｖ；ｎ）は、ｖを近似する３個の近傍視点の重みを表す関数である。これを「近傍視点重み関数」と呼ぶ。Ｈ（ｖ；ｎ）には以下の制約条件を設ける。Ｉ，ｊを視点サンプリング点のインデックスとする。このとき、ｖの視点サンプリング点ｖ＊（ｉ）に対する重み関数である下記の数式２１がｖに対して連続であり、下記の数式２２となり、下記の数式２３でなければならない。ただし、δ（ｘ）はｘ＝０のときのみ１であり、そうでなければ０となる関数である。
【数２１】
0004394122.tif 000024
【数２２】
0004394122.tif 000025
【数２３】
0004394122.tif 000026
前記の制約条件は、ｖの変化に対して、近傍視点重み関数Ｈ（ｖ；ｎ）の、任意の視点サンプリング点ｖ＊（ｉ）についての重みがｖの変化に対して連続であること、ｖが１つの視点サンプリング点に一致するとき、その視点サンプリング点の重みが１になり、他の視点サンプリング点の重みが０になること、各視点サンプリング点の重みの総和が１になることを要請する。
ｉｖＮ（ｖ；０）がメッシュの辺、頂点において、ｖに対して連続でないため、Ｈ（ｖ；０）は、一般に連続でない。Ｈ（ｖ；１）、Ｈ（ｖ；２）も同様である。Ｑ（ｖ，ｖ＊（ｉｖ））は、ｖの関数とみなした場合、ｖ＊（ｉｖ）を頂点とする三角形の内部でのみ０でない値を持つ視点サンプリングメッシュにおける補間フィルタである。
視点方向ｖと、その近傍視点三角形△Ｎ（ｖ）との交点を、△Ｎ（ｖ）に関する重心座標、下記の数式２４で表すとする。ただし、重心座標は、三角形局所インデックスの順に記述する。
【数２４】
0004394122.tif 000027
このとき、Ｈ（ｖ；ｎ）として、重心座標をそのまま値とした下記の数式２５を利用することができる。
【数２５】
0004394122.tif 000028
近傍視点重み関数として重心座標をそのまま与えると、近傍視点三角形△Ｎ（ｖ）内部での線形な補間が行われる。これは、補間フィルタとしては三角フィルタ（ｔｒｉａｎｇｌｅ  ｆｉｌｔｅｒ）にあたるが、本発明では、より滑らかな補間を行うために、下記の数式２６の重み関数を使用しても良い。
【数２６】
0004394122.tif 000029
関数ｓは、［０，１］の区間を滑らかにつなぐために用いられる３次のエルミート（Ｈｅｒｍｉｔｅ）補間関数であり、ｂＮｓ（ｖ；ｎ）はｓ（ｂＮ（ｖ；ｎ））を、下記の数式２７となるように正規化した関数である。
【数２７】
0004394122.tif 000030
（プログラマブルシェーダを用いたＢＴＦの実時間レンダリング）本発明の目的は、ＢＴＦサンプリング装置でサンプリングされたＢＴＦを、プログラマブルシェーダを用いて効率的にすることである。そのための準備として、前述のように用意したレンダリング用のデータをテクスチャデータとして表現する必要がある。
コード化するデータは、視点依存照明応答Ｗ＊（ｉｖ，ｉｓ，ｉｔ；ｋ）、近傍視点インデックス関数ｉｖＮ（ｖ；ｎ）、近傍視点重み関数Ｈ（ｖ；ｎ）、ｎ∈｛０，１，２｝である。
レンダリング時に対象となる物体を照らす照明環境は、予めキューブマップなどで表現し、球面調和関数の係数に変換する。この変換には、視点依存照明応答を求めた場合と同様の手法を利用することができる。照明環境を球面調和関数の係数で表現したものは、通常世界座標で表されているので、これをレンダリング時のメッシュの各頂点で決められた接空間座標、或いは物体全体で共通な物体座標に変換する。変換の方法は、非特許文献４に述べられているものを用いる。変換された係数を、照明応答基底に対する重みとして表したものを、「照明応答基底による照明の表現」と呼び、Ｌｂ（ｃ，ｋ）で表すことにする。この表現は、変換された係数と照明応答基底との内積をとり、スケーリングを施すことで計算できる。
Ｗ＊（ｉｖ，ｉｓ，ｉｔ；ｋ）は、ｉｖを固定するとＷｔ×Ｈｔのサイズのテクスチャ画像とみなすことができる。これを「視点依存照明応答テクスチャ」と呼び、ｉｖはそのテクスチャのインデックスとみなせる。ＭｔＮｔ≧‖Ｖ＊‖として、（ＭｔＷｔ）×（ＮｔＨｔ）のサイズのテクスチャを用意する。このテクスチャに、視点依存照明応答テクスチャをインデックスｉｖの順でタイル状に並べる。ｋを色チャネルとしてコード化する。ＡＲＧＢ４個のチャネルを用いると、Ｗ＊は下記の数式２８で表される枚数のテクスチャを消費する。
【数２８】
0004394122.tif 000031
近傍視点インデックス関数ｉｖＮ（ｖ；ｎ）と近傍視点重み関数Ｈ（ｖ；ｎ）は、ｖに関するキューブテクスチャとして表現する。ｎを色チャネルとすると、これらの関数を２個のキューブテクスチャで表現できる。これらのキューブテクスチャを、それぞれ「近傍視点インデックステクスチャ」「近傍視点重みテクスチャ」と呼ぶ。
プログラマブルシェーダによるレンダリングアルゴリズムは以下のようになる。頂点シェーダによる処理と、ピクセルシェーダによる処理とに分かれる。頂点シェーダによる処理は、単に、メッシュの各頂点において、接空間基底を計算し、接空間で表現された視点、光源方向ｖ，ｌを計算するのみである。頂点シェーダには、他に、テクスチャ座標ｐも渡される。ｖ、ｌ、ｐは頂点間で補間され、ピクセルシェーダに渡される。また、Ｌｂ（ｃ，ｋ）の計算は、照明を球面調和関数展開の係数で表したものを回転し、照明応答基底との内積をとることで行われるが、この処理は頂点シェーダで行うのが望ましい。ただし、現在のハードウェアの頂点シェーダでこれを行うことができない場合等には、ＣＰＵでこれを行っても良い。
ピクセルシェーダにおける処理を以下に示す。ＰＩＸはピクセル値を保存する変数を、ＩＶは近傍視点インデックスを、ＷＶは近傍視点重み関数の値を、ＷＬは補間された照明応答の値を表す。それぞれの関数の値は、対応するテクスチャを参照することで得られる。また、照明応答基底による照明の表現Ｌｂ（ｃ，ｋ）をＬＢ（ｃ，ｋ）で、視点インデックスｉｖ、テクスチャ内部でのテクスチャ座標（ｓ，ｔ）、基底番号ｋにおける視点依存照明応答テクスチャのテクセル値をＬＷＴＥＸ（ｉｖ，ｓ，ｔ；ｋ）で、視点方向ｖ、三角形局所インデックスＮにおける近傍視点インデックステクスチャ及び近傍視点重みテクスチャのテクセル値を、それぞれＩＶＴＥＸ（ｖ；Ｎ）及びＷＶＴＥＸ（ｖ；Ｎ）で表す。
0004394122.tif 000032
実際の実装でのステップ４の繰り返しは、ｋ＝０，１，．．．，ｋにおけるＬＷＴＥＸ（．．．；ｋ）、ＬＢ（ｃ，ｋ）のデータを、ｋをＡＲＧＢ４要素の各色チャネルに割り当てることで、繰り返し数を下記の数式２８とすることができる。
【数２８】
0004394122.tif 000033
前記のアルゴリズムでは、テクスチャの読み取りが多数行われる。また、ＩＶＴＥＸ（ｖ；ｎ）のテクスチャ読み取りの結果により、ＬＷＴＥＸ（ＩＶｑ，ｉｓ，ｉｔ；ｋ）のテクスチャ読み取りに使われるテクスチャ座標を決定するため、依存テクスチャ読み取り（ｄｅｐｅｎｄｅｎｔ  ｔｅｘｔｕｒｅ  ｒｅａｄ）の機能が必要である。
例えば、Ｍｉｃｒｏｓｏｆｔ社のＤｉｒｅｃｔＸで利用されているＨＬＳＬ、及びｎＶＩＤＩＡ社のｃｇ言語として規格化されているシェーダ記述用言語では、ｐｓ＿２＿ｘ以上のピクセルシェーダがその機能を備えている。
テクスチャメモリの消費が大きいのは、視点依存照明応答テクスチャである。この情報を圧縮することで、テクスチャメモリの消費を抑えることができる。
（視点依存照明応答テクスチャの圧縮）３次元離散関数Ｗ＊（ｉｖ，ｉｓ，ｉｔ；ｋ）は通常、テクスチャ座標であるｉｓ，ｉｔに関して、原点の周りで高い自己相関を持つ。また、視点方向を表すインデックスｉｖに関しても、ｉｖの差が視点方向の差を反映するようにインデックスを定義すれば（つまり、ｉｖが近い値を持つとき、視点方向も近くなるならば）、やはりＷ＊（ｉｖ，ｉｓ，ｉｔ；ｋ）は原点の周りで高い値を持つ。このことから、Ｗ＊（ｉｖ，ｉｓ，ｉｔ；ｋ）を３次元画像とみなして、直方体のブロックに分割し、ブロック毎にベクトル量子化などの圧縮を適用することで、Ｗ＊（ｉｖ，ｉｓ，ｉｔ；ｋ）を効果的に圧縮することができる。
本発明では、Ｗ＊（ｉｖ，ｉｓ，ｉｔ；ｋ）をＢｖ×Ｂｓ×Ｂｔの大きさの、直方体のブロックに分割する。
下記の数式２９とすると、ブロックの数はＳｖ×Ｓｓ×Ｓｔ個である。このブロック毎にコードブックをＮｃ個用意し、コードインデックスを収めたテクスチャを用意することで、Ｗ＊（ｉｖ，ｉｓ，ｉｔ；ｋ）の圧縮を行う。
【数２９】
0004394122.tif 000034
（Ｉｍａｇｅ  Ｑｕｉｌｔｉｎｇによるテクスチャの拡大）ＢＴＦを、類似した凹凸や色などのパターンが繰り返し現れるような素材の質感を表現するために利用する場合、有限の大きさのＢＴＦから、パターンを構成するＢＴＦの小片の標本を取り出し、それらの継ぎ目が目立たなくなるように継ぎ合わせることで、任意の大きさのＢＴＦを生成することができる。これは、小さなＢＴＦから、拡大された大きさのＢＴＦを生成するので、一種の圧縮と考えられる。本発明では、「Ｉｍａｇｅ  Ｑｕｉｌｔｉｎｇ」（非特許文献１２）の手法を応用することで、テクスチャの拡大を行う。
視点方向を表すインデックスｉｖを固定した場合、３次元離散関数Ｗ＊（ｉｖ，ｉｓ，ｉｔ；ｋ）は、各テクセルが照明に関する応答を表すようなテクスチャ画像を表す。このテクスチャ画像に対して、Ｉｍａｇｅ  Ｑｕｉｌｔｉｎｇを適用する。適用する方法は２種類ある。一つは、各視点方向インデックスｉｖに対して、それぞれ個別にＩｍａｇｅ  Ｑｕｉｌｔｉｎｇを適用する方法である。もう一つは、全ての各視点方向でのＷ＊（ｉｖ，ｉｓ，ｉｔ；ｋ）をまとめて一つの画像とみなし、まとめてＩｍａｇｅ  Ｑｕｉｌｔｉｎｇを適用する方法である。後者の方法では、視点方向インデックスｉｖを、テクセルのチャネルを指定するインデックスの一つと見なす。
Ｉｍａｇｅ  Ｑｕｉｌｔｉｎｇの手法の概略を述べる。入力画像は与えられた画像であり、出力画像は任意の大きさを指定できる。出力画像は、方形の格子で分割される。隣り合った格子の間には、一定の幅を持った「重なり領域」を設ける。次に、出力画像の各格子と、その格子に隣接した重なり領域に対して、入力画像の部分画像を割り当てる。隣り合った格子の重なり領域では、双方の格子に対応した部分画像が、乱数を利用して割り当てられる。このとき、部分画像に割り当てられた複数の部分画像に対して、それらの画像の差が一定以下になるようにする。その上で、重なり領域において格子の分割線を生成し、それぞれの格子を分割する。格子の分割線は、その線上の画素全体に対しての双方の格子に対応した部分画像の差を加えた和が最小値をとるように生成される。このような線を、「最小コストパス」と呼ぶ。最小コストパスは、動的計画法により求めることができる。最小コストパスにより分割された各格子ごとに、入力画像から出力画像へ部分画像をコピーすることで、出力画像を得る。
Ｉｍａｇｅ  ＱｕｉｌｔｉｎｇをＢＴＦに適用する場合、入力画像を入力ＢＴＦと呼び、出力画像を「出力ＢＴＦ」と呼ぶことにする。Ｉｍａｇｅ  Ｑｕｉｌｔｉｎｇを適用するためには、重なり領域において、複数の格子に対応した入力ＢＴＦの、部分画像の差を評価する必要がある。各視点方向に対して個別にＩｍａｇｅ  Ｑｕｉｌｔｉｎｇを適用する場合、各テクセル値は、照明に対する応答を表す球面関数の基底に対する係数である。このときの差の評価値として、各係数の２乗に、球面関数基底による重みを掛け、それらの和をとったものを利用する。最小コストパスの生成にも、同じ方法で差を評価した値を利用する。
全ての視点方向でのＢＴＦをまとめて同一の画像とみなし、Ｉｍａｇｅ  Ｑｕｉｌｔｉｎｇを適用する場合、各テクセル値は、照明に対する応答を表す球面関数の各基底に対する係数である。このときの差の評価値は、各係数の２乗に、球面関数基底及び視点インデックスに依存する重みを掛け、それらの和をとったものを利用する。最小コストパスの生成にも、同じ方法で差を評価した値を利用する。
本発明では、出力ＢＴＦを表現するために、Ｑｕｉｌｔｉｎｇ  Ｍａｐと呼ばれる座標変換テーブルを利用する。まず、全ての視点方向でのＢＴＦをまとめて同一の画像とみなす場合を考える。このとき、出力ＢＴＦを表現するためには、出力ＢＴＦのテクスチャ座標を入力ＢＴＦのテクスチャ座標に変換する座標変換テーブルを用意すれば良い。この座標変換テーブルをテクスチャとして表現すると、ピクセルシェーダを利用することで出力ＢＴＦを効率的にレンダリングできる。また、各視点方向に対して個別にＩｍａｇｅ  Ｑｕｉｌｔｉｎｇを適用する場合、各視点インデックスに対して個別の座標変換テーブルを作成することで、出力ＢＴＦを表現することができる。
Ｉｍａｇｅ  Ｑｕｉｌｔｉｎｇによって作成されたＢＴＦをレンダリングする場合には、物体の形状モデルの各頂点で与えられたテクスチャ座標を、Ｑｕｉｌｔｉｎｇ  Ｍａｐによって変換するだけで良い。Ｑｕｉｌｔｉｎｇ  Ｍａｐをテクスチャとして表現した場合、この変換をピクセルシェーダによって効率的に行うことができる。
（照明応答基底による照明の表現の前計算）照明応答基底による照明の表現Ｌｂ（ｃ，ｋ）の計算は、照明を球面調和関数展開の係数で表したものを回転し、照明応答基底との内積をとることで行われる。この処理を頂点シェーダで行うことができるなら、効率の点で望ましいが、現在の頂点シェーダの機能では、それは困難である。
照明が、点光源や、円状の光源のように、光源の中心を固定した回転で不変な場合には、光源の回転は２変数のみで表現できる。この対応は、光源の方向を、球面に対応させることで簡単に実現できる。そこで、各光源方向に対するＬｂ（ｃ，ｋ）を予め計算し、これをキューブマップなどに格納しておくことで、ＣＰＵによる回転の計算を頂点シェーダ内で行うことができる。これを、「前計算された照明の表現」と呼ぶ。
（近傍視点重み関数の連続関数化）近傍視点重み関数Ｈ（ｖ；ｎ）（ｎ∈｛０，１，２｝）は、ＢＴＦの視点依存変化の補間を行うための重み関数であり、３チャネルのキューブテクスチャで表現することができる。この関数は、視点方向ｖの変化に対して滑らかに変化することが望ましい。このために、Ｈ（ｖ；ｎ）のキューブテクスチャの読み取りのとき、双線形補間をかけることが考えられるが、この方法には深刻な問題がある。
Ｈ（ｖ；ｎ）は一般には視点サンプリングメッシュのポリゴンの辺において連続でない部分を持つ。このため、双線形補間をかけると、ポリゴンの辺の付近における重みの値に誤差が生じ、望ましくないアーティファクトを生じる。
この問題の解決法としては、近傍視点インデックス関数  及び近傍視点重み関数Ｈ（ｖ；ｎ）を表すキューブテクスチャの解像度を一致させ、キューブテクスチャのテクセルの読み取りに最近傍補間を行うことが考えられる。この方法の欠点は、多くのメモリを消費して高解像度のキューブテクスチャを利用しないと、視点の変化に対して重みが滑らかに変化せず、グラデーション状のアーティファクトが生じる場合があることである。
本発明では、視点サンプリングメッシュの辺の位置における不連続性が生じないようにＨ（ｖ；ｎ）を定義することで、この問題を解決する。以下の命題が成立する。
命題：視点サンプリングメッシュにおいて、どこでも連続であるようにＨ（ｖ；ｎ）、ｎ∈｛０，１，２｝を定義できない場合が存在する。
証明：視点サンプリングメッシュ全体で連続なＨ（ｖ；ｎ），ｎ∈｛０，１，２｝があるとする。このとき、視点サンプリングメッシュの頂点ｖｉでは、Ｈ（ｖｉ；０）＝１、Ｈ（ｖｉ；１）＝１、Ｈ（ｖｉ；２）＝１のいずれかが成立する。
Ｈ（ｖｉ；ｎ）＝１のとき、頂点ｖｉを数字ｎに写像する関数をＸ（ｖｉ）とする。隣り合った頂点ｖｉ，ｖｊについてＸ（ｖｉ）≠Ｘ（ｖｊ）である。なぜなら、Ｘ（ｖｉ）＝Ｘ（ｖｊ）であるなら、ｖが近傍視点三角形△Ｎ（ｖｉ）を通ってｖｊに近づく場合、下記の数式３０となり矛盾するからである。
【数３０】
0004394122.tif 000035
このとき、Ｘ（ｖｉ）は、視点サンプリングの頂点に対する、Ｎ色問題の、Ｎ＝３の場合の解である。視点サンプリングメッシュは球面上のグラフであるが、これはある平面グラフと同値である。平面グラフにおいて、Ｎ色問題は、Ｎ＝３の場合には常に解がある訳ではない。よって視点サンプリングメッシュ全体で連続なＨ（ｖ；ｎ）、ｎ∈｛０，１，２｝が存在しない場合がある。（証明終了）
Ｎ＝４の場合には、視点サンプリングメッシュに対するＮ色問題には常に解がある。このとき、視点サンプリングメッシュ全体で連続なＨ（ｖ；ｎ）、ｎ∈｛０，１，２，３｝を定義し、隣り合った頂点ｖｉ，ｖｊについて、下記の数式３１が成り立つようにすることができる。
【数３１】
0004394122.tif 000036
このようなＨ（ｖ；ｎ）（ｎ∈｛０，１，２，３｝）は、４チャネルのキューブテクスチャで表現することができる。同様に、近傍視点インデックス関数  を４チャネルのキューブテクスチャで表現すると、Ｈ（ｖ；ｎ）のテクセルの取得時に、双線形補間を利用してもアーティファクトが生じなくなる。双線形補間の利用により、解像度の低いキューブテクスチャを使っても、ＢＴＦの視点依存変化の補間が連続的に行われるようになる。
【実施例１】  前計算された照明の表現、近傍視点重み関数、近傍視点インデックス関数を表すには、キューブテクスチャでなくても、３次元方向から画素値を得られるテクスチャであれば良い。例えば、Ｂｌｉｎｎらによる、緯度、軽度によるマップ（非特許文献５）、球面マップ（ｓｐｈｅｒｅ  ｍａｐｐｉｎｇ）（非特許文献６）、放物面マップ（ｐａｒａｂｏｌｏｉｄ  ｍａｐｐｉｎｇ）（非特許文献７）などを挙げることができる。
【実施例２】  前計算された照明の表現、近傍視点重み関数、近傍視点インデックス関数を、球面マップ、放物面マップなどにより２次元テクスチャで表現する場合、複数の関数を一枚のテクスチャ画像に収めることができる。これにより、テクスチャの枚数の制限を緩和することができる。
テクスチャサンプリング法Ａを用いてサンプリングを行い、ＢＴＦを平面に貼り付け、視点が無限遠にあると仮定した場合、或いは、テクスチャサンプリング法Ｂを用いてサンプリングを行い、物体を変形させずにＢＴＦをマッピングして、視点が無限遠にあると仮定した場合など、接空間、或いは物体座標系で表した視点方向が、レンダリング時に一定である場合がある。
このような場合、近傍視点重み関数、近傍視点インデックス関数を、キューブテクスチャとしてテクスチャ保持する必要はなく、ＣＰＵで参照して、結果をプログラマブルシェーダに渡すだけで良い。
【実施例３】  視点方向がレンダリング時に完全に一定でなくても、レンダリングの条件が前記の場合に近い場合、レンダリング全体で必要となる近傍視点は、全ての視点サンプリング点集合のうち、ごく一部となる。このような場合においても、近傍視点重み関数、近傍視点インデックス関数を、キューブテクスチャとして保持する必要はなく、ＣＰＵで参照して、結果をプログラマブルシェーダに渡すだけで良い。
【実施例４】  光源方向がオブジェクト全体で一定であれば、照明応答基底による照明の表現を頂点ごとに計算する必要はなく、全体で同じ値を利用するだけで良い。
【実施例５】  視点依存照明応答Ｗ＊（ｉｖ，ｉｓ，ｉｔ；ｋ）は、３次元テクスチャとして表現しても良いし、２次元テクスチャを格子状に区切って、並べても良い。
【実施例６】  実施例５のように、視点依存照明応答Ｗ＊（ｉｖ，ｉｓ，ｉｔ；ｋ）を、３次元テクスチャとして表現する場合、視点のインデックスｉｖが次の条件を満たすように定義すると良い。
条件：インデックスが１つだけ違う２つの視点サンプリング点ｖ＊（ｉｖ）とｖ＊（ｉｖ＋１）は、視点サンプリングメッシュにおいて、常に辺で接続されている。
この場合、視点インデックスとして浮動小数点値を使うことで、視点依存照明応答Ｗ＊（ｉｖ，ｉｓ，ｉｔ；ｋ）の視点による補間の一部を、テクスチャ参照フィルタで代用することができる。
【実施例７】  近傍視点インデックステクスチャの参照をＣＰＵから行う場合、視点依存照明応答テクスチャは、視点によってキャッシュすることができる。また、近傍視点インデックステクスチャの参照をプログラマブルシェーダで行う場合においても、ＣＰＵによる近傍視点インデックステクスチャの参照を併用し、視点依存照明応答テクスチャを、視点によってビデオボード内のテクスチャメモリにキャッシュすることができる。この方法は、レンダリング全体で必要となる近傍視点が、全ての視点サンプリング点集合のうち、ごく一部となる場合に有効である。
【実施例８】  視点方向によって視点依存照明応答テクスチャをキャッシュする場合、近いうちに近傍視点として利用する可能性のある視点のテクスチャを、キャッシュとしてテクスチャメモリに読み込んでおくことで、テクスチャをテクスチャメモリに読み込むために生じる表示の遅れを無くすことができる。
【実施例９】  また、視点方向によって視点依存照明応答テクスチャをキャッシュする場合、キャッシュに読み込んでおくテクスチャの視点インデックスを、視点方向を変数とした球面関数として予め決定しておき、テクスチャとしてそれを表現することで、キャッシュに読み込むテクスチャの視点インデックスを効率的に決定することができる。この場合、さらに、キャッシュするテクスチャを読み込むテクスチャメモリ中での位置を予め決定しておくことで、キャッシュにおけるメモリ管理を簡素化でき、効率的にキャッシュを働かせることができる。
【実施例１０】  前述した、キャッシュに読み込んでおくテクスチャの視点インデックスを表すテクスチャ、近傍視点重みテクスチャ、近傍視点インデックステクスチャ、前計算された照明の表現を、全て２次元テクスチャで表し、複数をまとめることで、テクスチャ数を減らすことができる。
【実施例１１】  近傍視点重みテクスチャ、近傍視点インデックステクスチャの中の表現には、かなりの任意性がある。例えば、経度によって視点番号が並んでいる場合、実数の３．６が、３と４を０．４：０．６で混合する意味にもできる。視点依存照明応答が３次元テクスチャの場合、そのままテクスチャ座標に変換することができる。
【実施例１２】  目的ＢＴＦの光源依存変化を近似するキューブテクスチャを、球面調和関数展開によって近似するとき、モンテカルロ積分を利用して計算量を節約することができる。
【実施例１３】  物体表面の凹凸の情報が、ポリゴンメッシュよりも微細な精度で得られる場合がある。例えば、凹凸マップ（ｂｕｍｐ  ｍａｐ）が与えられる場合、或いは、ｓｈａｐｅ−ｆｒｏｍ−ｓｈａｄｉｎｇ（非特許文献８）などの手法により、凹凸が計算できる場合などである。
この場合、異なる複数の近傍視点におけるＢＴＦサンプルテクスチャにおいて、同一の物理的点に対応する点を、凹凸による視差の効果を加えて計算することができる。これにより、同一の物理的点に対応する点同士が滑らかに移り合うように、テクスチャにモーフィングをかけることで、より精度の高いＢＴＦを得ることができる。
【実施例１４】  物体表面の凹凸の情報が直接得られない場合でも、異なる複数の近傍視点におけるＢＴＦサンプルテクスチャにおいて、同一の物理的点に対応する点を推定できる場合がある。例えば、テンプレートマッチングによってテクスチャの模様の一致を探索する方法である。
テンプレートマッチングに用いる画素値としては、元のＢＴＦサンプルテクスチャのＲＧＢ値や、各画素の光源依存変化サンプル集合を球面調和関数展開したときの係数列や、球面調和関数の係数をＰＣＡで近似したときの重みベクトルなどを利用できる。
【実施例１５】  ＢＴＦの光源依存変化を近似するために、球面調和関数展開の代わりに、球面ウェーブレット変換（非特許文献９）を利用することもできる。
【実施例１６】  光源とレンダリングする物体の表面との距離によって、レンダリングする画素のＲＧＢ値を増減することで、光源と表面との距離による光の減衰を表現可能である。例えば、光源と表面との距離の２乗の逆数を、レンダリングする画素のＲＧＢ値に掛けることで、点光源からの距離による光の減衰を表現できる。
【実施例１７】  レンダリングする画素のそれぞれの色チャネルの値を増減することで、光源色の変化を表現できる。例えば、ホワイトバランスを調整し、光源を白色とみなせるようにして画像のサンプリングを行う場合、設定した光源色に比例した割合の値をレンダリングする画素の各色チャネルの値に掛けることで、光源色の違いを表現することが可能である。
【実施例１８】  対象物体が、透明物体や半透明物体の場合は、光が物体を透過して観測される透過光の効果がある。この場合も、本発明の方法で取り扱うことができる。透明度の低い物体は、計測対象物体の厚みが増すと、急速に透過光が減衰するため、ＢＴＦサンプリング時に、対象物体の厚みを同時に計測しておく必要がある。レンダリング時には、この厚みを利用して、レンダリングする対象物体の厚みに応じて、透過光の強度を落とせば良い。
このとき、ＢＳＳＤＲＦ（非特許文献１０）などのサブサーフェスモデルを考慮した透過光の強度を計算すれば、より正確なレンダリングが可能である。また、完全な透明物体に関しては、背景にパターンを配置し、その観測パターンを計測すれば、非特許文献１１などの手法を用いることで、本発明をそのまま適用することができる。
【実施例１９】  本発明のアルゴリズムを、プログラマブルシェーダによりＧＰＵ（ビデオボード上の画像処理装置）で実行する代わりに、ＣＰＵによって直接実行しても良い。ＣＰＵで実行した場合、ＧＰＵと比較して実行効率は低下するが、テクスチャの横幅、高さなどの制限や、テクスチャメモリの容量などの制限を受けなくなる。これにより、高解像度、高画質のＢＴＦをマッピングすることが可能になる。
【実施例２０】  テクスチャサンプリング法Ｂにおいて、ポリゴンメッシュの各頂点に対応するテクスチャ座標は、予め計算しておき、レンダリング時には、これを参照する機構としても良い。