明 細 書 物体表面の反射特性をサンプリングして行う実時間レンダリングの 方法及びテクスチャサイズを変換する方法 技術分野
本発明は、 実在の物体の表面における反射特性をサンプリングし、 そ れらのサンプルから双方向テクスチャ関数 (Bidirectional Texture Function, 以降 「BTF」 と表記する) として表現された表面反射モデ ルを生成し、生成された反射モデルによって、任意の形状モデルのレン ダリングを、プログラマブルシェーダを利用して効率的に行う方法に関 するものである。 BTF は、 任意の光源方向、 視点方向で再現可能なテ クスチヤを定式化したモデルであり、 光源方向、視点方向、 テクスチャ 座標をパラメータとした関数である。
本発明の方法を用いれば、 BTF に基づいた任意の形状モデルのレン ダリングを実時間で行うことができる。本発明は、その要素技術として、 視点に依存したテクスチャの複数個のサンプルから、プログラマブルシ エーダを利用して視点に関する補間を効率的に行う方法を含む。 背景技術
特定の物体 (以降 「測定物体」 と表記する) を、 3次元コンピュータグ ラフィックス (以降 「CG」 と表記する) により高い現実感で再現するた めには、 測定物体の形状と、 表面の材質感を、 データとして表 ^ fる必要 力 ^ある。
測定物体の表面の形状は、 レーザレンジスキャナなどの形状測定装置を 利用することで、 ある程度詳細に測定することができる。
一方、測定物体の表面の材質感をデータとして測定、表現する方法には、 様々な問題があり、 CGの分野における重要課題となっている。
測定物体の表面の材質感を表す情報のうち、 非常に重要な情報が、 様々 な方向から物体表面に光を当て、 様々な方向から観測したとき、 物体の見 え方が、 光源の方向、 観測する方向によってどのように変化する力、 とい う情報である。 以降、 この情報を、 その測定物体の 「表面反射特性」 と表 記する。
表面の見え方や質感の表面反射特性を一般的に表現するための形式と して、 双方向反射分布関数 (Bidirectional Reflectance Distribution
Function, 以降 「BRDF」 と表記する) がある。 BRDFは、 通常のモデリ ングソフト等においても採用されるなど、 普及が進んできているが、 物体 表面がテクスチャを持ち、材質感が場所によって変化するときには、 BRDF は表面上の点の位置によって変化する。 このような場合に、 BRDFを表現 する手法は、 未だ研究段階である。 また、 物体の表面が、 例えば微細な凸 凹 (bump) や、 布における織り目など、 視認可能な大きさの微細な形状 (以降 「メゾスコピック形状」 と表記する) を持つ場合、 その見え方の変 化を表現するには、 BRDFのみでは不十分である。
前記のような場合に関して、 BRDFの代わりに BTF (非特許文献 2 ) を 利用することが提案されている。 BTFは、 視点方向、 光源方向を連続的に 変化させたときの、 物体表面の見え方の変化を、 視点方向、 光源方向をパ ラメータとした画像を表す関数として定式ィヒしたものである。
メゾスコピック形状を物体表面が持つ場合、 BTFは、 BRDFの単なる拡 張であるばかりでなく、 表面の微細な形状による見え方の変化をもモデリ ング、 レンダリングするのに役立つ。 応用例としては、 細かい凹凸を持つ 布などのテクスチャ、 芝目やアスファルトなどの表現などがある。 BTFに より、 従来の手法では表現しきれない、 多くの種類の物体を表現すること が可能である。
近年、 一般的なパーソナルコンピュータに搭载されるビデオボ一ドに、 プログラム可能な頂点シェーダ、 プログラム可能なピクセルシエーダ (以 降、 単に 「頂点シエーダ」 「ピクセルシエーダ」 と表記し、 また、 これら をまとめて 「プログラマブルシェーダ」 と表記する) の機能が搭載される ようになった。 これらの機能を使うことで、 ビデオボード上の画像処理装 置である GPUの内部で行われる処理、例えば、物体の形状データの頂点位 置の座標変換処理や、 ピクセル毎のテクスチャマッピングなどの処理を、 ユーザがプログラムによって制御することができるようになつている。
頂点シヱーダ、 ピクセルシエーダの機能を利用して、 BRDFや BTFで表 された質感を形状モデルに適用して、 実時間レンダリングを行うことが試 みられるようになってきている。 しかし、 完全な BTFを実時間でレンダリ ングすることは未だ研究途上である。 また、 対象が立体物である場合につ いては、 ほとんど手が付けられていない。
また、 BTFを素材の質感を表現するために利用する場合、 同じような特 徴を持つパターンで平面を敷き詰める手法が実用上重要である。 通常の画 像として表現されるテクスチャに対しては、 このための手法として、 有限 の大きさのテクスチャ標本から、 画像の小片を切り出して、 平面に敷き詰 める手法が提案されており、 ("Image Quiltingj と呼ばれる (非特許文献 1 2 )。 Image Quiltingは、 小さなテクスチャ標本から、 任意の大きさの
テクスチャを得る手法であり、 一種の 「圧縮」 と考えることもできる。 特許文献 1 特開 2 0 0 3— 9 0 7 1 5号公報
非特許文献 N. Greene 著 「 "Environment Mapping and
Other Applications of World Projections" IEEE Computer Graphics and Applications, vol. 6, no. 11, pp. 21-29, Nov. 1986 J
非特許文献 2 K. Dana and B. Van Ginneken and S. Nayar and J. oenderink 著 「 "Reflectance and texture of real-world surfaces", "ACM Transactions on Graphics", "1999", vol. 18, no. "1", pp. 1-34」
非特許文献 3 K. E. Torrance and E. M. Sparrow著 「"Theory for off-specular reflection from roughened surfaces", J.Opt.Soc.Am., vol. 57, pp. 1105-1104, 1967」
非特許文献 4 Sloan and Peter-Pike and Jan Kautz and John
Snyder著 「,,Precomputed Radiance Transfer for Real-Time Rendering in Dynamic, Low -Frequency Lighting Environments" ACM Transactions on Graphics (TOG), 2002, pp. 527-536」
非特許文献 5 J. F. Blinn and M. E. Newell著 「"Texture and reflection in computer generated images" Communications of the ACM, vol. 19, no. 10, pp. 542-547, Oct. 1976」
非特許文献 6 L. Williams 著 「 "Pyramidal Parametrics"
Computer Graphics, vol. 7, no. 3, pp. 1-11, Jul. 1983」
非特許文献 7 W. Heidrich and H. P. Seidel 著 「 "View-independent Environment Maps" ACM SIGGRAPH I Eurographics Workshop on Graphics Hardware, pp. 39-45, Aug. 1998 J 非特許文献 8 Y. G. Leclerc and A. F. Bobick著 「,,The direct
computation of neight irom snaaing", Proc. of
IEEE Conference on Computer Vision and Pattern Recognition, pp. 552-558, 1991」 非特許文献 9 P. Schroder and W. Sweldens著 「,,Spherical
Wavelets: Efficiently Representing Functions on the Sphere", Computer Graphics Proceedings, (SIGGRAPH 95), pp. 161-172, 1995」
非特許文献 1 0 H. W. Jensen, S. R. Marschner, M. Levoy and P.
Hanrahan 著 「 "A Practical Model for Subsurface Light Transport", Computer Graphics Proceedings (SIGGRAPH2001 Conference Proceedings), pp. 511-518, Aug. 12-17, 2001」
非特許文献 1 Chuang, Zongker, Hindorff, Curless, Salesin, and Szeliski 著 「 "Environment Matting Extensions : Towards Higher Accuracy and Real-Time Capture", SIGGRAPH 2000, pp. 121-130, July 2000」
非特許文献 1 2 A. A. Efros and W. T. Freeman著 「,,Image
Quilting for Texture Synthesis and Transfer" SIGGRAPH 2001, pp. 341-346, Aug. 2001J 発明の開示
実在する平面状の物体のテクスチャを計測し、 任意の視点方向、 光源方 向で再生可能な BTFとして表現し、 これを任意の形状データにマッピング してレンダリングを行うことは、 立体感の高い、 リアルなテクスチャを実 現するために重要な課題である。 さらに、 BTFを、 素材の質感を表現する ために利用する場合、 有限の大きさをもつ BTFのデータから、 任意の大き さの BTFを生成すること力 実用上の大きな課題となる。
また、 立体形状を持った、 実在する物体を計測し、 任意の視点方向、 光 源方向に関してレンダリングを行うことは、 実在物体をリアルに表現する ために重要な課題である。
本発明は、 上記のようなレンダリングを、 実時間で行う方法である。
本発明では、 頂点シェーダ、 ピクセルシヱーダの機能を利用して、 BTF を形状データに適用してレンダリングする。 テクスチャを形状データに貼 り付けてレンダリングすることを、 一般に、 そのテクスチャの形状データ への 「マッピング」 と呼ぶことから、 BTFを形状データに適用してレンダ リングすることも、 以降 「マッピング」 と表記する。
本発明では、 BTFのデータを、 実在する測定物体を撮影するか、 データ で表された測定物体の画像を CGによつて合成することで得る。 このとき、 光源方向、 視点方向を変化させながら、 対象物体の実際の画像または合成 画像を、撮影または生成する。 この処理を、「BTFのサンプリング」 と呼ぶ。
実在する測定物体をサンプリングすることは、 測定物体の写真を、 膨大 な種類の条件下で撮影する必要がある。 本発明では、 実在する測定物体の サンプリングは、 特許文献 1で説明したようなサンプリング装置 (以降
「BTFサンプリング装置」 と表記する) などを利用して、 なされているも のとする。
サンプリングされた BTFのデータ (以降 「; BTFサンプル画像集合」 と表 記する) は、 離散的な光源方向、 視点方向でのみ取得されたものである。 BTFを、 任意の光源方向、 視点方向で形状データにマッピングするために は、 連続な光源方向、 視点方向で BTFを定義する必要がある。
また、 ピクセルシエーダが読み取ることのできるデータ領域のうち、 大 きなデータを格納できる場所は、 ビデオボード上のテクスチャメモリのみ である。 よって、 BTFを頂点シヱーダ、 ピクセルシエーダによって効率的 にレンダリングするには、 BTFのデータをテクスチャデータとして表現す ることが必要となる。 本発明では、 これらの条件を満たすために、 BTFサ ンプル画像集合を近似、 圧縮し、 テクスチャメモリに格納可能な複数のテ クスチヤデータとして表現する。
BTFの変化には、 光源方向の変化によるものと、 視点方向の変化による ものがある。 光源方向の変化による BTFの変化は、 各照明方向に位置する 点光源に対する放射輝度の応答関数であり、 これを 「BTFの照明応答」 或 いは 「BTFの光源依存変化」 と表記し、 視点方向の変化による BTFの変化 を 「BTFの視点依存変化」 と表記する。
本発明において、 BTFの照明応答は、 照明応答を表す球面関数のパラメ ータとして保存される。 球面関数を表すパラメータとしては、 非特許文献 4のように、 球面調和関数を基底としたときの係数べクトルなどを利用す ることができる。 本発明では、 このパラメータを、 画素値として 2次元の
画像データとして格納する。 これにより、 テクスチャメモリにもデータを 格納することができ、 テクスチャと同様に扱うことができる。 なお、 通常 のデータとしてメインメモリに格納しても良い。
また、 BTFの視点依存変化の近似は、 複数の視点のテクスチャデータを 加重平均することで、 それらの視点のデータを補間することで行われる。 つまり、 任意の視点に対し、 その視点に近い方向の視点 (以降 「近傍視点」 と表記する) に対応するサンプルの値に、 任意の視点の位置で決まる重み を掛け、 和をとつた値を利用する。 このとき、 近傍視点の選択と、 各近傍 視点の重みの計算を高速化するために、 各視点方向に対応する近傍視点の インデックスと、 各近傍視点の重みをキューブテクスチャ (「キューブマツ プ J とも呼ばれる。 非特許文献 1 ) として表現する。 これらのキューブテ タスチヤで表される球面関数を、 それぞれ 「近傍視点インデックス関数」 及び 「近傍視点重み関数」 と呼ぶ。
近傍視点ィンデックス関数及び近傍視点重み関数を表すキューブテクス チヤは、 テクスチャメモリに格納しても、 主メモリに格納しても良い。 テ タスチヤメモリに格納した場合、 近傍視点の選択と、 近傍視点の重みの計 算は、 頂点シエーダまたはピクセルシエーダによって行う。 主メモリに格 納した場合、 近傍視点の選択と、 近傍視点の重みの計算は、 中央演算処理 装置 (以降 「CPU」 と表記する) によって行う。 場合によっては、 これら のテクスチャを、 テクスチャメモリと主メモリの両方に格納し、 プロダラ マブルシヱーダと CPUの両方で、 近傍視点のインデックスと重みを参照す ることもある。
BTFを、素材の質感を表現するために利用する場合、有限の大きさの BTF から、 任意の大きさの BTFを得られれば、 実用上の価値が高い。 そのため に、 「Image Quilting」 (非特許文献 1 2 ) の手法を応用し、 有限の大きさ の BTF力ゝら、 BTFの小片を継ぎ合わせることで、 任意の大きさに拡大され た BTFを得る。
レンダリングを CPUで行うこともできるが、 プログラマブルシェーダを 用いて行うことで、 処理効率の大幅な向上が可能である。 近傍視点インデ ックス関数、 近傍視点重み関数を参照して、 補間に利用する視点 (近傍視 点) のインデックスと重みを決定する。 また、 形状データの表面上の点と BTFとの対応を表すテクスチャ座標 (形状テクスチャ座標) を、 形状デー タ及び近傍視点におけるカメラ情報などから必要に応じて求める。
レンダリング時の照明は、 非特許文献 4で述べられているように、 球面
4 008770
7
関数とみなし、 それを球面調和関数で展開した係数として表現する。
形状テタスチヤ座標と近傍視点のィンデックスから、 視点依存照明応答 をテクスチャ読み取りによって参照する。 これと、 照明を表す係数との内 積を画素の値として出力する。
また、 Image Quiltingにより BTFを表現する場合、 有限の大きさの BTF によって、 拡大された BTFを表現するために、 Quilting Mapと呼ばれる座 標変換テーブルを利用する。 これにより、 簡単な処理により、 拡大された BTFを任意の表面にマッビングすることができる。
本発明の方法により、 任意の光源方向、 視点方向に対するテクスチャの 画素値を高速に生成することができる。 これによつて、 任意の光源方向、 視点方向で、 形状データに BTFをマッピングしながら、 効率的に、 また実 時間でレンダリングを行うことができる。
立体形状を持つ物体、或いは平面的な物体に関して、その物体の見え方、 物体表面の模様、 凹凸、 材質感、 反射特性を、 複数の視点方向及び光源方 向に対応する画像(CG画像または写真) の集合(データ A) として記録し、 記録した画像に、 補間、 圧縮などの処理を加えて保存し、 保存したデータ
(データ B) 力 ら、任意の光源方向及び視点方向に関しての物体の見え方等 を、画像として再生することが可能である場合、保存したデ一タ Bを、 rBTFj と呼び、 最初に記録したデータ Aを、 「BTFサンプル画像集合」 と呼ぶ。 本発明の効果は、 BTFサンプノレ画像集合が与えられたとき、 (1 ) それら のデータを圧縮または補間し、 BTFとして保存し、 (2 ) 保存した BTFをテ クスチヤ画像または数表として、 3次元表示ハードウエアの支援を受けら れる形でコンピュータ内部に表現し、 (3 ) BTFを任意の形状モデルに貼り 付けて、 CGレンダリングを行うことができ、 (4 ) 実時間レンダリングを 実現できる、 という点である。
これにより、 物体の材質感を、 光源方向、 視点方向の移動による見え方 の変化を含めて表現し、 効率的に、 或いは実時間で再現することが可能と なる。
表現可能な物体は、 表面に細かい凹凸がある物体や、 毛や細かい繊維な どを表面に持つ物体を含む。
また、 本発明は、 その要素技術として、 視点に依存したテクスチャの複 数個のサンプルから、 プログラマブルシェーダを利用して視点に関するテ クスチヤの補間を効率的に行う方法を含む。
発明を実施するための最良の形態
(BTFのサンプリング)本発明では、物体の見え方や、表面のテクス チヤを、 複数の視点方向及び光源方向に対応する画像 (CG画像または 写真) の集合として記録した BTF サンプル画像集合を入力データとす る。 入力する BTF サンプル画像集合は、 複数の画像の情報、 それらの 画像の各々に対応する、 カメラ (視点) の情報と、 光源の位置情報から 成る。
このうち、 カメラの情報からは、 対象物体に関して固定された座標系 (以降 「物体座標系」 と表記する) と、 物体座標で表された点が射影さ れる画像上の点の位置との変換式を導出できる必要がある。
BTFサンプル画像集合は、視点方向、光源方向の両方を変化させなが ら生成或いは撮影することが望ましい。 実物体に関して、 この条件を満 たすように画像を撮影し、 さらにカメラの情報や光源の位置情報を記録 するためには、 特許文献 1で説明したような BTFサンプリング装置を 利用する。
BTFサンプル画像集合から、各画像に対応するカメラの位置を、物体 座標系で表された、 物体座標系原点からの方向べクトルとして表したも の (視点方向) の集合が得られる。 この集合を 「視点サンプリング点集 合」 と呼ぶ。 視点サンプリング点集合は離散的な集合であり、 V*と表記 する。 以降、 本発明において、 離散的な値を表す記号には、 "〇*"のよう に右肩に星印を付けて区別する。 V*の要素を 「視点サンプリング点」 と 呼ぶ。 ivでインデックスした有限集合 V*の要素 (すなわち、 視点サンプ リング点) を v*(iv)と書く。 V*において視点サンプリング点を指し示すィ ンデックスを 「視点インデックス」 と呼ぶ。
また、 BTFサンプル画像集合から、 各画像に対応する視点方向と、 光 源方向を、 物体座標系で表された、 物体座標系原点からの方向べクトル の対として表したとき、固定された視点方向 v*(iv)と対になる光源方向べ クトルの集合が得られる。 この集合を 「光源サンプリング点集合」 と呼 ぶ。 光源サンプリング点集合は視点方向のインデックス ivに依存するの で、 L*(v*(iv))或いは L*(iv)と表記する。有限集合 L*(v*(iv))の要素を ΰでィ ンデックスしたものを 「光源方向サンプリング点」 と呼び、 r(ii;iv) ≡ L*(v'(iv))と表記する。
ここで、 Γ(ΰ;ίν)の表記は、 この式を、 iiを変数とする関数とみなし、 iv を定数とみなすことを表す。 このとき、 この関数を、 l*(...;iv)と表記する
こともある。 以降、 本発明において、 関数の変数を";"で区切った場合、 ";"の左側の記号を関数の変数、 ";"の右側の記号を固定された変数とみな す。
以降、 サンプリングによって近似しょうとする BTFを 「目的 BTFJ と呼ぶ。 目的 BTF のサンプルとして、 視点方向と光源方向のパラメ一 タを付与されたテクスチャ画像を 「BTF サンプルテクスチャ」 と呼ぶ。 サンプルテクスチャの集合を 「BTFサンプルテクスチャ集合」 と呼ぶ。
BTFサンプル画像集合を処理することで、 BTFサンプルテクスチャ 集合が得られる。 BTFサンプル画像集合と BTFサンプルテクスチャ集 合の違いは、 BTFサンプル画像集合が、 サンプリングされた画像のまま なのに対し、 BTFサンプルテクスチャ集合は、 目的 BTFの、 ある視点 サンプリング点、 光源方向サンプリング点において目的 BTF を近似す るサンプルになっていることである。
サンプルテクスチャ集合は、 離散的なテクスチャの集合であり、 これ を連続な BTFとして极うには補間を行う必要がある。 BTFサンプルテ クスチヤ集合を元にして、実際に補間、近似され、生成された連続な BTF を 「近似 BTF」 と表記する。
BTFサンプル画像集合から、 BTFサンプルテクスチャ集合を生成す る方法は、 大きく 2種類に分かれる。
1つ目は、撮影された画像に座標変換を施し、 BTFサンプルテクスチ ャ集合の全ての画像において、 同一の座標における画素が同一の物理的 な点にほぼ対応するように画像を変形させる方法である。 測定物体が平 面物体である場合、 BTFサンプリング装置に取り付けられた各カメラの 内部パラメータ及び外部パラメータを利用して、 斉次変換と呼ばれる画 像変換を行うことで、 このような画像を得ることができる。 カメラの内 部パラメータ及び外部パラメータは、 サンプリング時の視点方向に依存 するので、 この処理は視点方向毎に違ったパラメータを使って行う。 以 降、 この処理を 「レクティフィケーシヨン」 と呼ぶ。
レクティフィケ一ションによってテクスチャサンプリングを行う場 合、 BTFサンプルテクスチャに付与される視点方向、 光源方向は、 接空 間座標系で表現される。 このとき、 得られる近似 BTFでは、 同一の座 標における画素が常に同一の物理的な点に対応する。 このような近似 BTFは、 通常のテクスチャ画像と同様に、 テクスチャ座標を持った任意 の曲面に対してマッピングし、 レンダリングに利用することができる。
テクスチャサンプリングにレクティフィケーシヨンを使う方法を 「テク スチヤサンプリング法 A」 と呼ぶ。
2つ目の方法は、 BTFサンプル画像集合内の画像に座標変換を施さず に、 そのままの画像、 或いはその画像の一部を BTFサンプルテクスチ ャとして使用する方法である。 この方法は、 測定物体が立体物体である 場合に利用する。 このようにして作成された BTFサンプルテクスチャ 集合から得られる近似 BTF は、 同一の座標における画素が、 視点方向 パラメータによつて異なる物理的な点に対応する。 BTFサンプルテクス チヤに付与される視点方向、 光源方向は、 物体座標系で表現される。
このような近似 BTFは、 通常のテクスチャとは違い、 レンダリング する形状とテクスチャとのマッピングを、 視点方向によって変化させる 必要がある。 このような近似 BTF をレンダリングに使用する場合、 レ ンダリング対象であるポリゴンメッシュとしては、 測定物体の形状を近 似したものを使用し、 ポリゴンメッシュの各頂点に対応するテクスチャ 座標をレンダリング時に計算する。 テクスチャ座標の計算には、 視点毎 に用意されたカメラの内部パラメータ、 外部パラメータを使用する。 テ タスチヤサンプリングにレクティフィケーションを使わない方法を 「テ クスチヤサンプリング法 B」 と呼ぶ。
BTFは 「視点方向 v、 光源方向 1、 テクスチャ座標 (s,t)、 色チャネル c でインデックスされた、 放射輝度値の無限集合」 である。 テクスチャサ ンプリング法 Aを使う場合、 v,lは、物体表面の接空間座標系で表される。 テクスチャサンプリング法 Bを使う場合、 v,lは、物体座標系で表される。
v,lは、 球面座標 (spherical coordinates) を用いて、 下記の数式 1で 表現される。
(数 1 )
V = (θν, φν), 1 = (θι, φι), (0 < θυ, θι < π 0 < φν, φι < 2π) θν,θιは緯度、 φν,φιは経度である。 テクスチャ座標 ρは座標 (s,t)で表現 し、 cは RGBに対応するィンデックスで、 0,1,2のいずれかの値をとる。
目的 BTFほ、 v,l,s,t,cを変数とする関数として、 下記の数式 2で表さ れる。
(数 2 )
T(v, 1, p, c) ≡ Γ ( , ^, , i, C)
差替え ] ¾紙 mrnm
各 BTFサンプルテクスチャのテクセル値は、 関数 Tのサンプルであ り 「BTFサンプルテクセノレ値」 と呼ぶことにする。 テクスチャ座標 (s,t) は、 方形の格子点でサンプリングされており、 整数で表したそれぞれの 格子点の座標値を (ia,it)とする。 テクスチャサイズを (Wt,Ht)として、 下記 の数式 3で表される。
これらの表記により、サンプルテクセル値は離散関数として、下記の 数式 4で表される。
(数 4 )
T* {iv, ih is、 i c)≡ T*(v* (iv), isAW, it H, c) ただし、 そのとき下記の数式 5である。
T*は Tのサンプリングであるので、 下記の数式 6となる。
(数 6 ) -
T*(v*(¾), (ir, iv), i8 W, it H, c) « T(v*(iv), l*(ir, iv), iaAW7 itAH, c)
BTFサンプルテクスチヤ集合 T*から、目的 BTFである関数 Τを近似 した近似 BTFを Taで表し、 下記の数式 7とする。
(数 7 )
Γα(ν, 1, 5, ί, c) Γ(ν, 1, s, t, c)
(BTFの近似) 与えられたポリゴンメッシュに BTFを適用してレン ダリングするためには、 BTFサンプルテクスチャ集合から、連続な近似 BTFを得る必要がある。 本発明では、 視点方向の変化に関しては、 サン プルの重み付け和による補間によって BTFを近似する。
物体の見かけの放射輝 は、 放射輝度の点光源に対する応答関数 (以 後 「放射輝度応答関数」) と光源を表す関数との球面積分で表される。 放 射輝度応答関数と、 光源を表す関数を、 正規直交基底である球面調和関
差替え 用紙 (W )
数の線形和で表すと、 放射輝度応答関数と光源を表す関数との球面積分 が、 基底に対する係数ベクトルの内積で計算されるため、 効率良くグロ 一バルイルミネーションに対応することが可能になる (非特許文献 4を 参照)。 本発明形態においても、放射輝度応答関数に関しては、球面調和 関数展開による近似を利用する。
以降、 本発明において、 光源方向、 色チャネル、 テクスチャ座標を固 定し、 視点方向のみを変化させたときの、 BTF或いは BTFサンプルテ クセル値の変化を 「視点依存変化」 と呼ぶ。 また、 視点方向、 色チヤネ ル、 テクスチャ座標を固定し、 光源方向のみを変化させたときの、 BTF 或いは BTF サンプルテクセル値の変化を 「光源依存変化」 或いは 「放 射輝度応答」 と呼ぶ。 光源依存変化に関する補間手法と、 視点依存変化 に関する補間手法とを違うものにしたのは、 BTFサンプルテクセル値の 光源依存変化と視点依存変化の性質が異なるからである。
BTFサンプルテクセル値を表す関数 T*において、 視点方向 iv、 テク セル位置 (is,it)、 色チャネル cのインデックスを固定し、 光源方向のイン デックス iiを変化させるとき、 T*の値は、 被測定対象においてほぼ同一 の物理的な点における放射輝度値を表すこと力 高い精度で保証される。
これは、 同じ視点方向 v*(iv)に対する BTFサンプルテクスチャが、 固 定されたカメラ位置、 ターンテーブル位置で撮影されるためである。 こ のため、 BTF サンプルテクセノレ値を表す関数 T*の光源依存変化は、 同 一の材質に対する光源方向を変化させたときの放射輝度値の変化にのみ 起因する。
既に多くの文献で言及されているように、 多くの種類の材質において、 放射輝度値の光源依存変化は、 比較的緩やかであり、 少数の球面調和関 数基底を利用することでよく近似できる。 目的 BTFである Tの光源依 存変化も同様に緩やかであり、 球面調和関数による近似が効果的である と考えられる。
一方、 同一のテクセル位置 (i
s, it)と色チャネル cで、 異なる視点インデ ックス i
vを指定したときの BTFサンプルテクセル値 T*の値は、 測定物 体の同一の物理的な点の放射輝度値に対応するとは限らない。 テクスチ ヤサンプリング法 Bを利用した場合、 視点方向パラメータが異なると、 同一のテ
。 テクスチ ヤサンプリング法 Aを利用した場合であつても、 物体表面のメゾスコピ ックな形状変化や、 カメラパラメータの誤差などの影響により、 レクテ
ィフィケーシヨンの処理に誤差が発生する。 そのため、 この場合でも、 同一のテクセル位置が異なった物理的な点に対応することがある。
このため、 材質の反射特性の変化が激しい物体や、 メゾスコピックな 形状を表面に持つ物体を扱う場合、 BTFサンプルテクセル値を表す関数 T*の視点依存変化は、 物理的な点の位置の変化に起因する放射輝度値の 急激な変化を含むことがある。 このような変化を低次元の球面調和関数 で近似すると、 高周波数成分が削除され、 テクスチャの重要な特徴が損 なわれてしまう恐れがある。
この考えから、本発明では、 BTFサンプルテクセル値の視点依存変化 をベク トル量子化によって圧縮、 保存し、 目的 BTF の視点依存変化の 近似を、 BTFサンプノレテクセル値の重み付け和によって行っている。 サ ンプノレィ直に掛ける重みは、 重 、座標 (barycentric coordinates) の値を そのまま重みとして利用するものと、 重心座標の有理関数をとり、 より 滑らかな重み変化を実現したものの 2種類が、 実装し易く効果が高い。
(鏡面反射成分及び自己影の分離)前述した手順に関し、 BTFの近似 をするときに問題になる点として、 物体表面の鏡面反射と、 物体の形状 により物体自身に落とされる影 (以降 「自己影」 と表記する) がある。
鏡面反射及び自己影が画像に含まれる場合、 これらの成分の光源依存 変化は、 光源方向の移動に対して急激に変化することがある。 このよう な場合、 光源依存変化を低次元の球面調和関数で近似すると、 高周波数 成分が削除され、 鏡面反射や自己影が消えてしまうことがある。 よって これらの成分は、 BTFサンプルテクスチャ集合から予め分離しておくこ とが望ましい。
BTF サンプルテクスチヤ集合から鏡面反射と自己影を分離する手法 を述べる。 物体表面の各点における反射モデル (拡散反射と鏡面反射を 含むもの) を、 BTFサンプルテクスチャ集合のデータに当てはめて鏡面 反射を求める。 また、 自己影の分離に関しては、 モデルの形状と光源位 置から予想される自己影の位置を求め、 その位置における値の変化をと ることで、 自己影による値の変化の大きさを求めることができる。
BTF サンプルテクスチヤ集合から鏡面反射と自己影を分離する別の 手法も述べる。 まず、 そのまま光源依存変化を低次元の球面調和関数で 近似し、 逆に近似した値と元の BTFサンプルテクスチャ集合との画素 値の差を求め、 差の大きい場所を求める。 差の大きい場所のうち、 BTF サンプルテクスチヤの値の方が大きレ、場所は、 鏡面反射のモデルに当て
はめ、 各表面上の点における鏡面反射の強さを決める。 逆に BTFサン プルテクスチヤの値の方が小さレ、場所は、 自己影とみなす。
鏡面反射及び自己影は、 レンダリング時に BTF とは別にレンダリン グすることができる。 鏡面反射のレンダリングには、 既存の反射モデル による手法を使う。 例えば、 トランス 'スパロー (Torrance Sparrow) のモデル (非特許文献 3 ) を利用して、 鏡面反射をレンダリングするこ とができる。
自己影についても、既存のレンダリング手法を使ってレンダリングで きる。 それぞれのレンダリング! ¾果は、 最後に BTF のレンダリング結 果と合成する。 鏡面反射は、 値の足し算または掛け算によって、 自己影 の値は、 掛け算によって BTFのレンダリング結果と合成する。
(BTFの光源依存変化の近似) 目的 BTFの光源依存変化は、 BTFの 各画素において、 点光源の方向を変えたときの放射輝度値の応答関数と 見ることができる。 物体を任意の光源環境に置いた場合、 各点における 放射輝度値は、 その点から各方向への照明の強度を球面関数として表す とき、放射輝度値の応答関数と光源を表す関数との球面積分で表される。 放射輝度値の応答関数と光源を表す関数とを正規直交基底である球面調 和関数の線形和で表すと、 放射輝度伝達関数と光源を表す関数との球面 積分が、 基底に対する係数ベクトルの内積で計算されるため、 効率良く グローバルィルミネ一ションに対応することが可能になる (非特許文献 4 )。 また、 球面調和関数による展開係数に、 主成分分析を適用すると、 さらに効率的な正規直交基底を算出することができる。 そこで、 ここで は実施形態として、 球面調和関数によって求めた展開係数を主成分分析 したものを、 放射輝度値の応答関数と光源を表す関数との正規直交基底 として利用する。
まず、 BTFサンプルテクスチャ集合から、固定された視点インデック ス iv、 テクセノレ位置 (i8,it)、 色チャネル cにおける BTFサンプルテクセ ル値の集合である、 下記の数式 8を取り出し、 球面関数のサンプル集合 とする。
(数 8 )
{Γ* ( , i is,it, c)|0 ≤ ≤ II *( ) II 一 1} このように、 特定の視点方向、 テクスチャ座標、 色チャネルにおける 光源依存変化を表すサンプルの集合を 「光源依存変化サンプル集合」 と
差替え ] ¾紙 (ま f.則 2fi)
呼ぶ。
光源依存変化サンプル集合のそれぞれの要素は、 光源方向を表す、 下 記の数式 9により、 単位球面上の点に対応する。 この単位球面を、 L*(iv) の要素に対応する各点を頂点として、 ポリゴンメッシュに分割すること ができる。 以降、 ポリゴンメッシュを 「光源サンプリングメッシュ」 と 呼ぶ。
光源サンプリングメッシュを、 光源依存変化サンプル集合のそれぞれ の輝度値を頂点色として、 キューブテクスチャにレンダリングすること で、 目的 BTF の光源依存変化を近似する球面関数を表現することがで きる。 レンダリング時にスムースシェーディングを指定することで、 光 源依存変化サンプル集合の間で補間処理が行われ、 単位球面上で密な値 を持った球面関数が得られる。 スムースシェーディングとしては、 グー ローシェーディング、 フォンシェーディングなどを利用する。 得られた 目的 BTFの光源依存変化は、 目的 BTFの点光源への応答関数でもある ので、 これを 「照明応答」 と呼ぶこともある。
照明応答を近似するキューブテクスチャを、 球面調和関数展開によつ て近似する。 球面調和関数による級数展開の係数は、 球面積分により得 られる。 球面積分は、 キューブテクスチャのテクセル値と、 対応 る光 源方向における球面調和関数の基底関数の値と、 テクセルが占める立体 角の大きさとの積を、各テクセルについて足し合わせた値で近似される。
得られる係数を、 下記の数式 1 0と表す。 ここで NShは球面調和関数 の最大次数とする。 Ν 次までの基底を利用する場合、 Nsh2個の係数が 得られる。
(数 1 0 )
C(i
v, 、 it, c; q, r), (q, r)€ {(q, r)€ Z
2|0 < q < N
sh - 1, -I < r < 1} 視点方向 v*(i
v)における Tの光源依存変化を Tiで表すと、 下記の数式 1 1となる。 ただし、 Υ(θ,φ;1,ηι)は球面調和関数を、 1=(θι,φι) は連続な 光源方向を、 v*(i
v)はインデックス i
vで指定された、 離散的な値をとる視 点方向を、
2次元のインデックスで表されたテクスチャ座標を、
差替え用紙 (規則 2
cは色チャネルを表す。
(数 1 1 ) (v,( ),1 , c)ョ , r)
前述した手順を繰り返して、 全ての各視点インデックス iv、 テクセル 位置 p=(is,it)、 色チャネル cにおける BTFの照明応答を、 球面調和関数 で近似する。
結果として得られた係数を、 iv,is,itでインデックスされた、 3 Nsh2次 のベク トルとみなす。 ベクトルの数は、 || V* || Wt Htである。
得られたベタ トルの集合を、 主成分分析 (Principal Component Analysis, 以降 「PCA」 と表記する) の手法を用いて近似する。 この方 法は、 前計算放射輝度伝達 (PRT) の手法と同様である。 RGB 3チヤネ ルで 3 N 2個の係数を、 べクトルとして、 PCAによって近似し、 K個の 3 Nsh2次元主成分べクトルと、 主成分得点を表す II V* II Wt Ht個の K次 のベク トルに分解する。 以下、 3 Nsh2次元主成分ベクトルを 「基底べク トル」、 主成分得点を表す K次のベクトルを 「重みベク トル」 と表記す 底べクトノレの計昇には特異ィ直分角军 (singular value decomposition^ 以降 「SVD」 と表記する) などを用いるが、 全てのベク トルを基底べク トルの計算に利用するのは多くの計算量が必要となるので、 II V* II Wt Ht個のべクトルから一部をサンプリングし、得られた少数のサンプルに 対して SVDを実行し、 基底ベクトルを計算しても良い。
あとで重みべクトルをテクスチャとして表現する必要性から、 各基底 に対応する重みべクトルの成分は、 一定の値の範囲になるように正規化 しておくことが望ましレ、。したがって、重みべクトルの各成分について、 絶対値の最大値を求め、 その値で全重みべク トルの各成分の値を割り、 対応する基底ベクトルにその値を掛ける。 この正規化の方法は、 前計算 放射輝度伝達 (PRT) の手法と同様である。
PCAにより計算された K個の基底べク トルは、 球面調和関数の係数 として表された BTF の照明応答の基底である。 これを、 本発明におい ては 「照明応答基底」 と呼ぶことにする。 基底ベクトルのインデックス を k (0 ≤ k ≤ K-l)とし、 kで示された係数の基底を、 C(c;l,m,k)で表 す。 cは色チャネルのインデックスで、 0,1,2のいずれかの値をとる。 照
差替え 1紙 (規則
明応答基底ひ (…; k)を下記の数式 1 2で定義する。
PCAにより計算された重みべクトルは iv,is,itでィンデッタスされた K 次べク トルである。 その要素をインデックス k (ただし kは 0以上 K-1 以下の整数)により W*(iv,is,it;k)と表す。 これにより、 下記の数式 1 3に よって、 視点方向 v*(iv)、 テクセル位置 (is,it)に対応する BTFを近似でき る。 Tiaを 「BTFの光源依存変化近似関数」 と呼ぶ。
(数 1 3 )
K-1
ria(v*(iv), s,it, C)≡ W^iv, is it k)Lb(l, c; k)
W*(iv,is,it;k)は照明応答を表し、 同時に離散的な視点方向、テクスチャ 座標で定義された離散関数でもあるので、 「視点依存照明応答」 と呼ぶ。
(BTFの視点依存変化の近似) 既に述べた BTFの光源依存変化近似 関数 Ί¾は、 光源方向 1 の変化に対しては連続関数であり、 視点方向 V の変化に関しては、 Vが視点サンプリング点集合 V*の要素である場合に のみ値を持つ離散関数である。 BTFの視点依存変化の近似は、 V*から複 数の視点方向 Vを選択し、 それらの視点方向での の値を重み付けし た和をとることで行う。
視点サンプリング点集合 V* = {v*(iv) | 0 ≤ iv ≤ II V* II }の要素は、 光源サンプリング点の場合と同じように単位球面上に対応させることが できる。 視点サンプリング点集合の球面上での対応点を頂点とする三角 ポリゴンメッシュによって、 単位球面上を分割する。 このポリゴンメッ シュを 「視点サンプリングメッシュ」 と呼ぶ。
これにより、 任意の視点方向 Vは、 視点サンプリングメッシュに含ま れる 1つの三角ポリゴンに対応する。 V の対応点が三角ポリゴンの内部
にある場合には三角ポリゴンが、 V の対応点がメッシュの辺や頂点にあ る場合には、 辺または頂点に接続する三角ポリゴンに対応するようにす る。 この三角形を Vの 「近傍視点三角形」 と呼び、 下記の数式 14と表 記する。
. (数 14)
AN(v)
視点サンプリングメッシュの各三角形における 3個の頂点は、 それぞ れの三角形で独立に {0,1,2}の数字でィンデッタスされる。 このィンデッ タスを 「三角形局所インデックス」 と呼ぶ。
近傍視点三角形 ΔΝ(ν)の 3個の頂点は、 視点サンプリング点集合の要 素である。 これらを Vの 「近傍視点」 と呼び、 三角形局所インデックス の順に、 下記の数式 15で表す。
(数 15) ν^(ν;0),ν^(ν;1),ν^(ν;2) vN(v;0)、 vN(v;l)、 vN(v;2)の視点インデックスを、 下記の数式 16で表 す。
(数 16) (v;0), (v;l) (v;2) これらを Vから、 視点インデックスへの写像とみなし、 「近傍視点ィ ンデックス関数」 と呼ぶ。 近傍視点インデックス関数は、 一般に、 視点 サンプリングメッシュの一部の辺において、 不連続 1·生を持つ。
離散的なテクス
it H)において、 近似 BTFを表す関 数 Taは、重み関数である下記の数式 17で加重平均をとつた関数として、 下記の数式 18の形で与えられる。
差替え用紙 (規則 26
(数 18)
n=0
2 K-l
= (v; )∑ W ( (v; ), , ; (1, c; k)
= Lb(l, c; k)
この定義は離散的なテクスチャ座標 (is W,it H)に関しての近似 BTF、 Τ&であるが、 あとで述べるように視点依存照明応答 W*はテクス チヤとして表現さ,れるので、 W*において適当なテクスチャ座標の補間を 行うことで、連続的なテクスチャ座標に関しての近似 BTF、 Taを得るこ とができる。
関数 G を下記の数式 19と定義すると、 下記の数式 20となる。 G (…; k)は視点依存照明応答を補間した視点位置の関数である。 G (…; k) を 「補間された照明応答」 と呼ぶ。
(数 19)
2
G(v,is,it;k)≡ ^H(v;n)W* (i (v; n, k), i8 , it) n=0
(数 20)
K-l
Γ°(ν, 1, isAW, itAHy c) = ^ G(v, is, it; k)Lb(l, c; k) fc=0 重み関数 H(v;n)は、 vを近似する 3個の近傍視点の重みを表す関数で ある。 これを 「近傍視点重み関数」 と呼ぶ。 H(v;n)には以下の制約条件 を設ける。 I,j を視点サンプリング点のインデックスとする。 このとき、
差替え用紙 (規則 26)
vの視点サンプリング点 v*(i)に対する重み関数である下記の数式 2 1が V に対して連続であり、 下記の数式 2 2となり、 下記の数式 2 3でなけ ればならない。 ただし、 δ(χ)は x=0のときのみ 1であり、 そうでなけれ ば 0となる関数である。
(数 2 1 ) i i i
(数 2 3 )
前記の制約条件は、 vの変化に対して、 近傍視点重み関数 H(v;n)の、 任意の視点サンプリング点 v*(i)についての重みが Vの変化に対して連続 であること、 V が 1つの視点サンプリング点に一致するとき、 その視点 サンプリング点の重みが 1になり、 他の視点サンプリング点の重みが 0 になること、 各視点サンプリング点の重みの総和が 1になることを要請 する。
iv N(v;0)がメッシュの辺、 頂点において、 V に対して連続でないため、 H(v;0)は、 一般に連続でない。 Η(ν;1)、 Η(ν;2)も同様である。 Q(v,v*(iv)) は、 Vの関数とみなした場合、 v*(iv)を頂点とする三角形の内部でのみ 0 でない値を持つ視点サンプリングメッシュにおける補間フィルタである。
視点方向 V と、 その近傍視点三角形 ΔΝ(ν)との交点を、 ΔΝ(ν)に関す る重心座標、 下記の数式 2 4で表すとする。 ただし、 重心座標は、 三角 形局所インデックスの順に記述する。
差替え用紙 (規則 26)
(数 2 4 )
0), (ν; ι) (ν; 2))
このとき、 H(v;n)として、 重心座標をそのまま値とした下記の数式 2 5を利用することができる。
(数 2 5 )
Hb(^ n) ≡ bN (v n) 近傍視点重み関数として重心座標をそのまま与えると、 近傍視点三角 形 ΔΝ(ν)内部での線形な補間が行われる。 これは、 補間フィルタとして は三角フィルタ (triangle filter) にあたるが、 本発明では、 より滑らか な補間を行うために、 下記の数式 2 6の重み関数を使用しても良い。
(数 2 6 )
丑 ; Π)ョ (V; )ョ where 3(χ)ョ 十 2
関数 sは、 [0,1]の区間を滑らかにつなぐために用いられる 3次のエル ミート (Hermite) 補間関数であり、 bNs(
v;
n)は
s(bN(
v;
n))を、 下記の数 式 2 7となるように正規化した関数である。
(数 2 7 ) l
n=0
(プログラマブルシェーダを用いた BTFの実時間レンダリング) 本 発明の目的は、 BTFサンプリング装置でサンプリングされた BTFを、 プログラマプルシェーダを用いて効率的にすることである。 そのための 準備として、 前述のように用意したレンダリング用のデータをテクスチ ャデータとして表現する必要がある。
コード化するデータは、 視点依存照明応答 W*(iv,ia,it;k)、 近傍視点ィ ンデッタス関数 ivN(v;n)、 近傍視点重み関数 H(v;n)、 n ≡ {0,1,2} であ
'S o
差替 え周紙 (規則 26)
レンダリング時に対象となる物体を照らす照明環境は、 予めキューブ マップなどで表現し、 球面調和関数の係数に変換する。 この変換には、 視点依存照明応答を求めた場合と同様の手法を利用することができる。 照明環境を球面調和関数の係数で表現したものは、 通常世界座標で表さ れているので、 これをレンダリング時のメッシュの各頂点で決められた 接空間座標、 或いは物体全体で共通な物体座標に変換する。 変換の方法 は、 非特許文献 4に述べられているものを用いる。 変換された係数を、 照明応答基底に対する重みとして表したものを、「照明応答基底による照 明の表現」 と呼び、 L c,k)で表すことにする。 この表現は、 変換された 係数と照明応答基底との内積をとり、 スケーリングを施すことで計算で きる。
W*(iv,is,it;k)は、 ivを固定すると WtxHtのサイズのテクスチャ画像と みなすことができる。 これを 「視点依存照明応答テクスチャ」 と呼び、 ivはそのテクスチャのインデックスとみなせる。 Mt Nt ≥ || V* || として、 (Mt Wt)x(Nt Ht)のサイズのテクスチャを用意する。 このテクスチャに、 視点依存照明応答テタスチヤをインデックス ivの順でタイル状に並べる。 kを色チャネルとしてコード化する。 ARGB 4個のチャネルを用いると、 W*は下記の数式 2 8で表される枚数のテクスチヤを消費する。
近傍視点インデックス関数 ivN(v;n)と近傍視点重み関数 H(v;n)は、 V に関するキューブテクスチャとして表現する。 nを色チャネルとすると、 これらの関数を 2個のキューブテクスチャで表現できる。 これらのキュ ーブテクスチャを、 それぞれ「近傍視点インデックステクスチャ」 「近傍 視点重みテクスチャ」 と呼ぶ。
プログラマブルシェーダによるレンダリングアルゴリズムは以下の ようになる。 頂点シエーダによる処理と、 ピクセルシエーダによる処理 とに分かれる。 頂点シエーダによる処理は、 単に、 メッシュの各頂点に おいて、 接空間基底を計算し、 接空間で表現された視点、 光源方向 v,l を計算するのみである。 頂点シエーダには、 他に、 テクスチャ座標 pも 渡される。 v、 1、 pは頂点間で補間され、 ピクセルシエーダに渡される。 また、 Lb(c,k)の計算は、 照明を球面調和関数展開の係数で表したものを
差替え用紙 (規則 26)
回転し、 照明応答基底との内積をとることで行われるが、 この処理は頂 点シエーダで行うのが望ましい。 ただし、 現在のハードウェアの頂点シ エーダでこれを行うことができない場合等には、 CPUでこれを行っても 良い。
' ピクセルシェ一ダにおける処理を以下に示す。 PIXはピクセル値を保 存する変数を、 IVは近傍視点インデックスを、 WVは近傍視点重み関数 の値を、 WLは補間された照明応答の値を表す。それぞれの関数の値は、 対応するテクスチャを参照することで得られる。 また、 照明応答基底に よる照明の表現 L c,k)を LB(c,k)で、 視点インデックス iv、 テクスチャ 内部でのテグスチヤ座標 (s,t)、 基底番号 kにおける視点依存照明応答テ タスチヤのテクセル値を LWTEX(iv,s,t;k)で、 視点方向 v、 三角形局所ィ ンデックス N における近傍視点インデックステクスチャ及び近傍視点 重みテク スチャのテクセル値を、 それぞれ IVTEX(v;N)及び WVTEX(v;N)で表す。
ステップ 1 PIX[c] 0, c = 0,l,2
ステップ 2 IV[n]― IVTEX(vln), n = 0, 1,2
ステップ 3 WV[n]― WVTEX (v;n), n = 0,1,2
ステップ 4 k=0,l,...,K-lに関してステップ 4.1、 4.2を繰り返す。 ステップ 4.1 WL[k]― WV[0] LWTEX(IV[0] ,s,t;k)
+ WV[1] xLWTEX(IV[l] , s,t;k)
+ WV[2] xLWTEX(IV[2] ,s,t;k)
ステップ 4.2 PIX[c]ト PIX[c] + WLlk〗xLB(c,k), c = 0, 1,2 ステップ 5 PIX[c]をピクセル値として出力
実際の実装でのステップ 4 の繰り返しは、 k=0,l,..., k における LWTEX (…; k)、 LB (c,k)のデータを、 kを ARGB 4要素の各色チャネル に割り当てることで、繰り返し数を下記の数式 2 8とすることができる。
前記のアルゴリズムでは、 テクスチャの読み取りが多数行われる。 ま た、 IVTEX(v;n)のテクスチャ読み取りの結果により、 LWTEX(IVqふ, it;k) のテクスチャ読み取りに使われるテクスチャ座標を決定するため、 依存 テクスチャ読み取り (dependent texture read) の機能が必要である。 差替え用紙 (規則 26)
例えば、 Microsoft 社の DirectX で利用されている HLSL、 及び nVIDIA社の eg言語として規格化されているシヱーダ記述用言語では、 ps—2_x以上のピクセルシエーダがその機能を備えている。
テクスチャメモリの消費が大きいのは、視点依存照明応答テクスチャ である。 この情報を圧縮することで、 テクスチャメモリの消費を抑える ことができる。
(視点依存照明応答テクスチャの圧縮) 3次元離散関数 W*(iv,is,it;k) は通常、 テクスチャ座標である is, itに関して、 原点の周りで高い自己相 関を持つ。 また、 視点方向を表すインデックス ivに関しても、 ivの差が 視点方向の差を反映するようにインデックスを定義すれば (つまり、 iv が近い値を持つとき、 視点方向も近くなるならば)、 やはり W*(iv,is,it;k) は原点の周りで高い値を持つ。 このこと力 ら、 W*(iv,is,it;k)を 3次元画像 とみなして、 直方体のブロックに分割し、 ブロック毎にベクトル量子化 などの圧縮を適用することで、 W*(iv,is,it;k)を効果的に圧縮することがで さる。
本発明では、 W*(iv,is,it;k)を BvxBsxBtの大きさの、 直方体のブロック に分割する。
下記の数式 2 9とすると、 ブロックの数は SvxSsxSt個である。 この ブロック毎にコードブックを Nc個用意し、 コードィンデッタスを収め たテクスチャを用意することで、 W*(iv,is,it;k)の圧縮を行う。
(数 2 9 )
Sv ≡ \\\V*\\/BV] ,S3 三 「 t/B 三 「 / ,
(Image Quiltingによるテクスチャの拡大) BTFを、 類似した凹凸 や色などのパターンが繰り返し現れるような素材の質感を表現するため に利用する場合、 有限の大きさの BTFから、 パターンを構成する BTF の小片の標本を取り出し、 それらの継ぎ目が目立たなくなるように継ぎ 合わせることで、 任意の大きさの BTF を生成することができる。 これ は、 小さな BTF力 ら、 拡大された大きさの BTFを生成するので、 一種 の圧縮と考えられる。本発明では、 「Image QuiltingJ (非特許文献 1 2 ) の手法を応用することで、 テクスチャの拡大を行う。
視点方向を表すインデックス ivを固定した場合、 3次元離散関数 W*(ivふ, it;k)は、各テクセルが照明に関する応答を表すようなテクスチャ 画像を表す。このテクスチャ画像に対して、 Image Quiltingを適用する。
差替え用紙 〖規則 26)
適用する方法は 2種類ある。 一つは、 各視点方向インデックス ivに対し て、 それぞれ個別に Image Quiltin を適用する方法である。 もう一つ は、 全ての各視点方向での W*(iv,is,it;k)をまとめて一つの画像とみなし、 まとめて Image QuHtingを適用する方法である。 後者の方法では、 視 点方向インデックス ivを、 テクセルのチャネルを指定するインデックス の一つと見なす。
Image Quiltin の手法の概略を述べる。入力画像は与えられた画像で あり、 出力画像は任意の大きさを指定できる。 出力画像は、 方形の格子 で分割される。 隣り合った格子の間には、 一定の幅を持った 「重なり領 域」 を設ける。 次に、 出力画像の各格子と、 その格子に隣接した重なり 領域に対して、 入力画像の部分画像を割り当てる。 隣り合った格子の重 なり領域では、 双方の格子に対応した部分画像が、 乱数を利用して割り ¾てられる。 このとき、 部分画像に割り当てられた複数の部分画像に対 して、 それらの画像の差が一定以下になるようにする。 その上で、 重な り領域において格子の分割線を生成し、 それぞれの格子を分割する。 格 子の分割線は、 その線上の画素全体に対しての双方の格子に対応した部 分画像の差を加えた和が最小値をとるように生成される。 このような線 を、 「最小コストパス」 と呼ぶ。 最小コストパスは、 動的計画法により求 めることができる。 最小コストパスにより分割された各格子ごとに、 入 力画像から出力画像へ部分画像をコピーすることで、 出力画像を得る。
Image Quiltingを BTFに適用する場合、 入力画像を入力 BTFと呼 ぴ、 出力画像を 「出力 BTF」 と呼ぶことにする。 Image Quiltingを適 用するためには、重なり領域において、複数の格子に対応した入力 BTF の、 部分画像の差を評価する必要がある。 各視点方向に対して個別に Image Quiltingを適用する場合、各テクセル値は、 照明に対する応答を 表す球面関数の基底に対する係数である。このときの差の評価値として、 各係数の 2乗に、 球面関数基底による重みを掛け、 それらの和をとつた ものを利用する。 最小コストパスの生成にも、 同じ方法で差を評価した 値を利用する。
全ての視点方向での BTF をまとめて同一の画像とみなし、 Image Quiltingを適用する場合、 各テクセル値は、 照明に対する応答を表す球 面関数の各基底に対する係数である。 このときの差の評価値は、 各係数 の 2乗に、 球面関数基底及び視点インデックスに依存する重みを掛け、 それらの和をとつたものを利用する。 最小コストパスの生成にも、 同じ
方法で差を評価した値を利用する。
本発明では、 出力 BTFを表現するために、 Quilting Mapと呼ばれる 座標変換テーブルを利用する。 まず、 全ての視点方向での BTF をまと めて同一の画像とみなす場合を考える。 このとき、 出力 BTF を表現す るためには、 出力 BTFのテクスチャ座標を入力 BTFのテクスチャ座標 に変換する座標変換テーブルを用意すれば良い。 この座標変換テーブル をテクスチャとして表現すると、 ピクセルシエーダを利用することで出 力 BTF を効率的にレンダリングできる。 また、 各視点方向に対して個 別に Image Quiltingを適用する場合、 各視点インデックスに対して個 別の座標変換テーブルを作成することで、 出力 BTF を表現することが できる。
Image Quiltingによって作成された BTFをレンダリングする場合に は、物体の形状モデルの各頂点で与えられたテクスチャ座標を、 Quilting Mapによって変換するだけで良い。 Quilting Mapをテクスチャとして 表現した場合、 この変換をピクセルシエーダによって効率的に行うこと ができる。
(照明応答基底による照明の表現の前計算) 照明応答基底による照明 の表現 Lb(C,k)の計算は、照明を球面調和関数展開の係数で表したものを 回転し、 照明応答基底との内積をとることで行われる。 この処理を頂点 シエーダで行うことができるなら、 効率の点で望ましいが、 現在の頂点 シェ一ダの機能では、 それは困難である。
照明が、 点光源や、 円状の光源のように、 光源の中心を固定した回転 で不変な場合には、光源の回転は 2変数のみで表現できる。この対応は、 光源の方向を、 球面に対応させることで簡単に実現できる。 そこで、 各 光源方向に対する Lb(c,k)を予め計算し、 これをキューブマップなどに格 納しておくことで、 CPUによる回転の計算を頂点シヱーダ内で行うこと ができる。 これを、 「前計算された照明の表現」 と呼ぶ。
(近傍視点重み関数の連続関数化) 近傍視点重み関数 H(v;n) (n e {0,1,2})は、 BTFの視点依存変化の補間を行うための重み関数であり、 3チャネルのキューブテクスチャで表現することができる。この関数は、 視点方向 Vの変化に対して滑らかに変化することが望ましい。 このため に、 H(v;n)のキューブテクスチャの読み取りのとき、 双線形補間をかけ ることが考えられるが、 この方法には深刻な問題がある。
H(v;n)は一般には視点サンプリングメッシュのポリゴンの辺におい
て連続でない部分を持つ。 このため、 双線形補間をかけると、 ポリゴン の辺の付近における重みの値に誤差が生じ、 望ましくないアーティファ クトを生じる。
この問題の解決法としては、 近傍視点ィンデッタス関数 及び近傍 視点重み関数 H(v;n)を表すキューブテクスチャの解像度を一致させ、 キ ユーブテクスチャのテクセルの読み取りに最近傍補間を行うことが考え られる。 この方法の欠点は、 多くのメモリを消費して高解像度のキュー ブテクスチャを利用しないと、 視点の変化に対して重みが滑らかに変化 せず、 グラデーション状のアーティファタトが生じる場合があることで める σ
本発明では、視点サンプリングメッシュの辺の位置における不連続性 が生じないように Η(ν;η)を定義することで、 この問題を解決する。 以下 の命題が成立する。
命題:視点サンプリングメッシュにおいて、 どこでも連続であるよう に Η(ν;η)、 η {0,1,2} を定義できない場合が存在する。
証明:視点サンプリングメッシュ全体で連続な Η(ν;η),η ≡ {0,1,2} があるとする。 このとき、 視点サンプリングメッシュの頂点 Viでは、 H(vi;0)=l、 H(vi;l)=l、 H(vi;2)=lのいずれかが成立する。
H(Vi;n)=lのとき、頂点 Viを数字 nに写像する関数を X(Vi)とする。 隣 り合った頂点 Vi,vjについて X(Vi)≠X(Vj)である。 なぜなら、 Χ(νί) = Χ(ν であるなら、 Vが近傍視点三角形 AN(Vi)を通って Vjに近づく場合、 下記 の数式 3 0となり矛盾するからである。
(数 3 0 )
0 = lim Ο ν, ν
V→Vj
= v¾¾j ¾(νι)(ν) = (Vj)(v) = ¾(Vj) (Vj) = 1 このとき、 X(vi)は、 視点サンプリングの頂点に対する、 N色問題の、 N=3の場合の解である。視点サンプリングメッシュは球面上のグラフで あるが、 これはある平面グラフと同値である。 平面グラフにおいて、 N 色問題は、 N=3の場合には常に解がある訳ではなレ、。 よって視点サンプ リングメッシュ全体で連続な H(v;n)、 n ≡ {0,1,2} が存在しない場合が ある。 (証明終了)
差替え ^紙 (規則 26)
N=4の場合には、 視点サンプリングメッシュに対する N色問題には 常に解がある。 このとき、 視点サンプリングメッシュ全体で連続な H(v;n)、 n ≡ {0,1,2,3} を定義し、 隣り合った頂点 Vi, について、 下記 の数式 3 1が成り立つようにすることができる。
(数 3 1)
3
^ ί (ν; ) = 1?
η=0
¾(Vl) =5(n-m),m6 {0, 1,2,3} n(Vj) = 1 - δ(η -m),m G {0, 1, 2, 3} このような H(v;n)(n E {0,1,2,3} )は、 4チャネルのキューブテクス チヤで表現することができる。同様に、近傍視点インデックス関数 を 4チャネルのキューブテクスチャで表現すると、 H(v;n)のテクセルの取 得 §寺に、 双線形補間を利用してもアーティファクトが生じなくなる。 双 線形補間の利用により、 解像度の低いキューブテクスチャを使っても、 BTFの視点依存変化の補間が連続的に行われるようになる。
(実施例 1) , 前計算された照明の表現、 近傍視点重み関数、 近傍視点インデックス 関数を表すには、 キューブテクスチャでなくても、 3次元方向から画素 値を得られるテクスチャであれば良い。例えば、 Blinnらによる、緯度、 軽度によるマップ (非特許文献 5)、 球面マップ (sphere mapping) (非 特許文献 6)、 放物面マップ (paraboloid mapping) (非特許文献 7) な どを挙げることができる。
(実施例 2 )
前計算された照明の表現、 近傍視点重み関数、 近傍視点インデックス 関数を、 球面マップ、 放物面マップなどにより 2次元テクスチャで表現 する場合、 複数の関 を一枚のテクスチャ画像に収めることができる。 これにより、 テクスチャの枚数の制限を緩和することができる。
テクスチャサンプリング法 Aを用いてサンプリングを行い、 BTFを平
差替 え 用紙 (W )
面に貼り付け、 視点が無限遠にあると仮定した場合、 或いは、 テクスチ ヤサンプリング法 Bを用いてサンプリングを行い、 物体を変形させずに BTFをマッピングして、視点が無限遠にあると仮定した場合など、接空 間、 或いは物体座標系で表した視点方向が、 レンダリング時に一定であ る場合がある。
このような場合、 近傍視点重み関数、 近傍視点ィンデックス関数を、 キュープテクスチャとしてテクスチャ保持する必要はなく、 CPUで参照 して、 結果をプログラマブルシヱーダに渡すだけで良い。 (実施例 3 )
視点方向がレンダリング時に完全に一定でなくても、 レンダリングの 条件が前記の場合に近い場合、 レンダリング全体で必要となる近傍視点 は、 全ての視点サンプリング点集合のうち、 ごく一部となる。 このよう な場合においても、 近傍視点重み関数、 近傍視点インデックス関数を、 キューブテクスチャとして保持する必要はなく、 CPUで参照して、結果 をプログラマブルシェーダに渡すだけで良い。
(実施例 4 )
光源方向がオブジェクト全体で一定であれば、 照明応答基底による照 明の表現を頂点ごとに計算する必要はなく、 全体で同じ値を利用するだ けで良い。
(実施例 5 )
視点依存照明応答 W*(iv,is,it;k)は、 3次元テクスチャとして表現して も良いし、 2次元テクスチャを格子状に区切って、 並べても良い。
(実施例 6 )
実施例 5のように、 視点依存照明応答 W*(iv,is,it;k)を、 3次元テクス チヤとして表現する場合、視点のィンデックス ivが次の条件を満たすよ うに定義すると良い。
条件:インデックスが 1つだけ違う 2つの視点サンプリング点 v*(iv) と v*(iv+l)は、 視点サンプリングメッシュにおいて、 常に辺で接続され ている。
この場合、 視点ィンデックスとして浮動小数点値を使うことで、 視点
依存照明応答 W*(iv,is,it;k)の視点による補間の一部を、テクスチャ参照フ ィルタで代用することができる。
(実施例 7 )
近傍視点ィンデックステクスチャの参照を CPUから行う場合、 視点 依存照明応答テクスチャは、視点によってキャッシュすることができる。 また、 近傍視点ィンデックステクスチャの参照をプログラマブルシェ一 ダで行う場合においても、 CPUによる近傍視点ィンデックステクスチャ の参照を併用し、 視点依存照明応答テクスチャを、 視点によってビデオ ボード内のテクスチャメモリにキャッシュすることができる。 この方法 は、 レンダリング全体で必要となる近傍視点が、 全ての視点サンプリン グ点集合のうち、 ごく一部となる場合に有効である。
(実施例 8 )
視点方向によって視点依存照明応答テクスチャをキャッシュする場 合、 近いうちに近傍視点として利用する可能性のある視点のテクスチャ を、 キャッシュとしてテクスチャメモリに読み込んでおくことで、 テク スチヤをテクスチャメモリに読み込むために生じる表示の遅れを無くす ことができる。
(実施例 9 )
また、視点方向によつて視点依存照明応答テクスチヤをキャッシュす る場合、キヤッシュに読み込んでおくテクスチヤの視点ィンデックスを、 視点方向を変数とした球面関数として予め決定しておき、 テクスチャと してそれを表現することで、 キャッシュに読み込むテクスチャの視点ィ ンデックスを効率的に決定することができる。 この場合、 さらに、 キヤ ッシュするテクスチャを読み込むテクスチャメモリ中での位置を予め決 定しておくことで、 キャッシュにおけるメモリ管理を簡素化でき、 効率 的にキヤッシュを働かせることができる。
(実施例 1 0 )
前述した、 キャッシュに読み込んでおくテクスチャの視点ィンデック スを表すテクスチャ、 近傍視点重みテクスチャ、 近傍視点インデックス テクスチャ、前計算された照明の表現を、全て 2次元テクスチャで表し、
複数をまとめることで、 テクスチャ数を減らすことができる。
(実施例 1 1 )
近傍視点重みテクスチヤ、近傍視点ィンデッタステクスチャの中の表 現には、 かなりの任意性がある。 例えば、 経度によって視点番号が並ん でいる場合、実数の 3.6力 3と 4を 0.4:0.6で混合する意味にもできる。 視点依存照明応答が 3次元テクスチヤの場合、 そのままテクスチャ座標 に変換することができる。
(実施例 1 2 )
目的 BTFの光源依存変化を近似するキューブテクスチャを、 球面調 和関数展開によって近似するとき、 モンテカルロ積分を利用して計算量 を節約することができる。
(実施例 1 3 )
物体表面の凹凸の情報が、 ポリゴンメッシュよりも微細な精度で得ら れる場合がある。例えば、凹凸マップ(bump map)が与えられる場合、 或いは、 shape-from-shading (非特許文献 8 ) などの手法により、 凹凸 が計算できる場合などである。
この場合、 異なる複数の近傍視点における BTFサンプルテクスチャ において、 同一の物理的点に対応する点を、 凹凸による視差の効果を加 えて計算することができる。 これにより、 同一の物理的点に対応する点 同士が滑らかに移り合うように、 テクスチャにモーフイングをかけるこ とで、 より精度の高い BTFを得ることができる。
(実施例 1 4 )
物体表面の凹凸の情報が直接得られない場合でも、 異なる複数の近傍 視点における BTFサンプルテクスチャにおいて、 同一の物理的点に対 応する点を推定できる場合がある。 例えば、 テンプレートマッチングに よってテクスチャの模様の一致を探索する方法である。
テンプレートマッチングに用いる画素値としては、 元の BTFサンプ ルテクスチャの RGB値や、 各画素の光源依存変化サンプル集合を球面 調和関数展開したときの係数列や、 球面調和関数の係数を PCAで近似 したときの重みべクトルなどを利用できる。
(実施例 1 5 )
BTFの光源依存変化を近似するために、球面調和関数展開の代わりに、 球面ウエーブレッ ト変換 (非特許文献 9 ) を利用することもできる。
(実施例 1 6 )
光源とレンダリングする物体の表面との距離によって、 レンダリング する画素の RGB値を増減することで、 光源と表面との距離による光の 減衰を表現可能である。 例えば、 光源と表面との距離の 2乗の逆数を、 レンダリングする画素の RGB値に掛けることで、 点光源からの距離に よる光の減衰を表現できる。
(実施例 1 7 )
レンダリングする画素のそれぞれの色チャネルの値を増減すること で、 光源色の変化を表現できる。 例えば、 ホワイトバランスを調整し、 光源を白色とみなせるようにして画像のサンプリングを行う場合、 設定 した光源色に比例した割合の値をレンダリングする画素の各色チャネル の値に掛けることで、 光源色の違いを表現することが可能である。
(実施例 1 8 )
対象物体が、 透明物体や半透明物体の場合は、 光が物体を透過して観 測される透過光の効果がある。 この場合も、 本発明の方法で取り扱うこ とができる。 透明度の低い物体は、 計測対象物体の厚みが増すと、 急速 に透過光が減衰するため、 BTFサンプリング時に、 対象物体の厚みを同 時に計測しておく必要がある。 レンダリング時には、 この厚みを利用し て、 レンダリングする対象物体の厚みに応じて、 透過光の強度を落とせ ば良い。
このとき、 BSSDRF (非特許文献 1 0 ) などのサブサーフェスモデル を考慮した透過光の強度を計算すれば、 より正確なレンダリングが可能 である。 また、 完全な透明物体に関しては、 背景にパターンを配置し、 その観測パターンを計測すれば、 非特許文献 1 1などの手法を用いるこ とで、 本発明をそのまま適用することができる。
(実施例 1 9 )
本発明のアルゴリズムを、 プログラマブルシェーダにより GPU (ビ デォボード上の画像処理装置) で実行する代わりに、 CPUによって直接 実行しても良い。 CPUで実行した場合、 GPUと比較して実行効率は低 下するが、 テクスチャの横幅、 高さなどの制限や、 テクスチャメモリの 容量などの制限を受けなくなる。 これにより、 高解像度、 高画質の BTF をマッビングすることが可能になる。
(実施例 2 0 )
テクスチャサンプリング法 Bにおいて、 ポリゴンメッシュの各頂点に 対応するテクスチャ座標は、 予め計算しておき、 レンダリング時には、 これを参照する機構としても良い。