JP4394122B2 - 物体表面の反射特性をサンプリングして行う実時間レンダリングの方法及びテクスチャサイズを変換する方法 - Google Patents

物体表面の反射特性をサンプリングして行う実時間レンダリングの方法及びテクスチャサイズを変換する方法 Download PDF

Info

Publication number
JP4394122B2
JP4394122B2 JP2006514640A JP2006514640A JP4394122B2 JP 4394122 B2 JP4394122 B2 JP 4394122B2 JP 2006514640 A JP2006514640 A JP 2006514640A JP 2006514640 A JP2006514640 A JP 2006514640A JP 4394122 B2 JP4394122 B2 JP 4394122B2
Authority
JP
Japan
Prior art keywords
viewpoint
texture
btf
illumination
index
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006514640A
Other languages
English (en)
Other versions
JPWO2005124691A1 (ja
Inventor
洋 川崎
亮 古川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TECHNO DREAM 21 Co Ltd
Original Assignee
TECHNO DREAM 21 Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by TECHNO DREAM 21 Co Ltd filed Critical TECHNO DREAM 21 Co Ltd
Publication of JPWO2005124691A1 publication Critical patent/JPWO2005124691A1/ja
Application granted granted Critical
Publication of JP4394122B2 publication Critical patent/JP4394122B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Description

本発明は、実在の物体の表面における反射特性をサンプリングし、それらのサンプルから双方向テクスチャ関数(Bidirectional Texture Function、以降「BTF」と表記する)として表現された表面反射モデルを生成し、生成された反射モデルによって、任意の形状モデルのレンダリングを、プログラマブルシェーダを利用して効率的に行う方法に関するものである。BTFは、任意の光源方向、視点方向で再現可能なテクスチャを定式化したモデルであり、光源方向、視点方向、テクスチャ座標をパラメータとした関数である。
本発明の方法を用いれば、BTFに基づいた任意の形状モデルのレンダリングを実時間で行うことができる。本発明は、その要素技術として、視点に依存したテクスチャの複数個のサンプルから、プログラマブルシェーダを利用して視点に関する補間を効率的に行う方法を含む。
特定の物体(以降「測定物体」と表記する)を、3次元コンピュータグラフィックス(以降「CG」と表記する)により高い現実感で再現するためには、測定物体の形状と、表面の材質感を、データとして表現する必要がある。
測定物体の表面の形状は、レーザレンジスキャナなどの形状測定装置を利用することで、ある程度詳細に測定することができる。
一方、測定物体の表面の材質感をデータとして測定、表現する方法には、様々な問題があり、CGの分野における重要課題となっている。
測定物体の表面の材質感を表す情報のうち、非常に重要な情報が、様々な方向から物体表面に光を当て、様々な方向から観測したとき、物体の見え方が、光源の方向、観測する方向によってどのように変化するか、という情報である。以降、この情報を、その測定物体の「表面反射特性」と表記する。
表面の見え方や質感の表面反射特性を一般的に表現するための形式として、双方向反射分布関数(Bidirectional Reflectance Distribution Function、以降「BRDF」と表記する)がある。BRDFは、通常のモデリングソフト等においても採用されるな、普及が進んできているが、物体表面がテクスチャを持ち、材質感が場所によって変化するときには、BRDFは表面上の点の位置によって変化する。このような場合に、BRDFを表現する手法は、未だ研究段階である。また、物体の表面が、例えば微細な凸凹(bump)や、布における織り目など、視認可能な大きさの微細な形状(以降「メゾスコピック形状」と表記する)を持つ場合、その見え方の変化を表現するには、BRDFのみでは不十分である。
前記のような場合に関して、BRDFの代わりにBTF(非特許文献2)を利用することが提案されている。BTFは、視点方向、光源方向を連続的に変化させたときの、物体表面の見え方の変化を、視点方向、光源方向をパラメータとした画像を表す関数として定式化したものである。
メゾスコピック形状を物体表面が持つ場合、BTFは、BRDFの単なる拡張であるばかりでなく、表面の微細な形状による見え方の変化をもモデリング、レンダリングするのに役立つ。応用例としては、細かい凹凸を持つ布などのテクスチャ、芝目やアスファルトなどの表現などがある。BTFにより、従来の手法では表現しきれない、多くの種類の物体を表現することが可能である。
近年、一般的なパーソナルコンピュータに搭載されるビデオボードに、プログラム可能な頂点シェーダ、プログラム可能なピクセルシェーダ(以降、単に「頂点シェーダ」「ピクセルシェーダ」と表記し、また、これらをまとめて「プログラマブルシェーダ」と表記する)の機能が搭載されるようになった。これらの機能を使うことで、ビデオボード上の画像処理装置であるGPUの内部で行われる処理、例えば、物体の形状データの頂点位置の座標変換処理や、ピクセル毎のテクスチャマッピングなどの処理を、ユーザがプログラムによって制御することができるようになっている。
頂点シェーダ、ピクセルシェーダの機能を利用して、BRDFやBTFで表された質感を形状モデルに適用して、実時間レンダリングを行うことが試みられるようになってきている。しかし、完全なBTFを実時間でレンダリングすることは未だ研究途上である。また、対象が立体物である場合については、ほとんど手が付けられていない。
また、BTFを素材の質感を表現するために利用する場合、同じような特徴を持つパターンで平面を敷き詰める手法が実用上重要である。通常の画像として表現されるテクスチャに対しては、このための手法として、有限の大きさのテクスチャ標本から、画像の小片を切り出して、平面に敷き詰める手法が提案されており、「Image Quilting」と呼ばれる(非特許文献12)。Image Quiltingは、小さなテクスチャ標本から、任意の大きさのテクスチャを得る手法であり、一種の「圧縮」と考えることもできる。
特開2003−90715号公報 N.Greene著「"Environment Mapping and Other Applications of World Projections"IEEE Computer Graphics and Applications,vol.6,no.11,pp.21−29,Nov.1986」 K.Dana and B.Van Ginneken and S.Nayar and J.Koenderink著「"Reflectance and texture of real−world surfaces","ACM Transactions on Graphics","1999",vol.18,no."1",pp.1−34」 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」 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」 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」 L.Williams著「"Pyramidal Parametrics"Computer Graphics,vol.7,no.3,pp.1−11,Jul.1983」 W.Heidrich and H.P.Seidel著「"View−independent Environment Maps"ACM SIGGRAPH/Eurographics Workshop on Graphics Hardware,pp.39−45,Aug.1998」 Y.G.Leclerc and A.F.Bobick著「"The direct computation of height from shading",Proc.of IEEE Conference on Computer Vision and Pattern Recognition,pp.552−558,1991」 P.Schroder and W.Sweldens著「"Spherical Wavelets:Efficiently Representing Functions on the Sphere",Computer Graphics Proceedings,(SIGGRAPH 95),pp.161−172,1995」 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」 Chuang,Zongker,Hindorff,Curless,Salesin,and Szeliski著「"Environment Matting Extensions:Towards Higher Accuracy and Real−Time Capture",SIGGRAPH 2000,pp.121−130,July 2000」 A.A.Efros and W.T.Freeman著「"Image Quilting for Texture Synthesis and Transfer"SIGGRAPH 2001,pp.341−346,Aug.2001」
実在する平面状の物体のテクスチャを計測し、任意の視点方向、光源方向で再生可能な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の視点依存変化の近似は、複数の視点のテクスチャデータを加重平均することで、それらの視点のデータを補間することで行われる。つまり、任意の視点に対し、その視点に近い方向の視点(以降「近傍視点」と表記する)に対応するサンプルの値に、任意の視点の位置で決まる重みを掛け、和をとった値を利用する。このとき、近傍視点の選択と、各近傍視点の重みの計算を高速化するために、各視点方向に対応する近傍視点のインデックスと、各近傍視点の重みをキューブテクスチャ(「キューブマップ」とも呼ばれる。非特許文献1)として表現する。これらのキューブテクスチャで表される球面関数を、それぞれ「近傍視点インデックス関数」及び「近傍視点重み関数」と呼ぶ。
近傍視点インデックス関数及び近傍視点重み関数を表すキューブテクスチャは、テクスチャメモリに格納しても、主メモリに格納しても良い。テクスチャメモリに格納した場合、近傍視点の選択と、近傍視点の重みの計算は、頂点シェーダまたはピクセルシェーダによって行う。主メモリに格納した場合、近傍視点の選択と、近傍視点の重みの計算は、中央演算処理装置(以降「CPU」と表記する)によって行う。場合によっては、これらのテクスチャを、テクスチャメモリと主メモリの両方に格納し、プログラマブルシェーダとCPUの両方で、近傍視点のインデックスと重みを参照することもある。
BTFを、素材の質感を表現するために利用する場合、有限の大きさのBTFから、任意の大きさのBTFを得られれば、実用上の価値が高い。そのために、「Image Quilting」(非特許文献12)の手法を応用し、有限の大きさのBTFから、BTFの小片を継ぎ合わせることで、任意の大きさに拡大されたBTFを得る。
レンダリングをCPUで行うこともできるが、プログラマブルシェーダを用いて行うことで、処理効率の大幅な向上が可能である。近傍視点インデックス関数、近傍視点重み関数を参照して、補間に利用する視点(近傍視点)のインデックスと重みを決定する。また、形状データの表面上の点とBTFとの対応を表すテクスチャ座標(形状テクスチャ座標)を、形状データ及び近傍視点におけるカメラ情報などから必要に応じて求める。
レンダリング時の照明は、非特許文献4で述べられているように、球面関数とみなし、それを球面調和関数で展開した係数として表現する。
形状テクスチャ座標と近傍視点のインデックスから、視点依存照明応答をテクスチャ読み取りによって参照する。これと、照明を表す係数との内積を画素の値として出力する。
また、Image QuiltingによりBTFを表現する場合、有限の大きさのBTFによって、拡大されたBTFを表現するために、Quilting Mapと呼ばれる座標変換テーブルを利用する。これにより、簡単な処理により、拡大されたBTFを任意の表面にマッピングすることができる。
本発明の方法により、任意の光源方向、視点方向に対するテクスチャの画素値を高速に生成することができる。これによって、任意の光源方向、視点方向で、形状データにBTFをマッピングしながら、効率的に、また実時間でレンダリングを行うことができる。
立体形状を持つ物体、或いは平面的な物体に関して、その物体の見え方、物体表面の模様、凹凸、材質感、反射特性を、複数の視点方向及び光源方向に対応する画像(CG画像または写真)の集合(データA)として記録し、記録した画像に、補間、圧縮などの処理を加えて保存し、保存したデータ(データB)から、任意の光源方向及び視点方向に関しての物体の見え方等を、画像として再生することが可能である場合、保存したデータBを、「BTF」と呼び、最初に記録したデータAを、「BTFサンプル画像集合」と呼ぶ。
本発明の効果は、BTFサンプル画像集合が与えられたとき、(1)それらのデータを圧縮または補間し、BTFとして保存し、(2)保存したBTFをテクスチャ画像または数表として、3次元表示ハードウェアの支援を受けられる形でコンピュータ内部に表現し、(3)BTFを任意の形状モデルに貼り付けて、CGレンダリングを行うことができ、(4)実時間レンダリングを実現できる、という点である。
これにより、物体の材質感を、光源方向、視点方向の移動による見え方の変化を含めて表現し、効率的に、或いは実時間で再現することが可能となる。
表現可能な物体は、表面に細かい凹凸がある物体や、毛や細かい繊維などを表面に持つ物体を含む。
また、本発明は、その要素技術として、視点に依存したテクスチャの複数個のサンプルから、プログラマブルシェーダを利用して視点に関するテクスチャの補間を効率的に行う方法を含む。
(BTFのサンプリング)本発明では、物体の見え方や、表面のテクスチャを、複数の視点方向及び光源方向に対応する画像(CG画像または写真)の集合として記録したBTFサンプル画像集合を入力データとする。入力するBTFサンプル画像集合は、複数の画像の情報、それらの画像の各々に対応する、カメラ(視点)の情報と、光源の位置情報から成る。
このうち、カメラの情報からは、対象物体に関して固定された座標系(以降「物体座標系」と表記する)と、物体座標で表された点が射影される画像上の点の位置との変換式を導出できる必要がある。
BTFサンプル画像集合は、視点方向、光源方向の両方を変化させながら生成或いは撮影することが望ましい。実物体に関して、この条件を満たすように画像を撮影し、さらにカメラの情報や光源の位置情報を記録するためには、特許文献1で説明したようなBTFサンプリング装置を利用する。
BTFサンプル画像集合から、各画像に対応するカメラの位置を、物体座標系で表された、物体座標系原点からの方向ベクトルとして表したもの(視点方向)の集合が得られる。この集合を「視点サンプリング点集合」と呼ぶ。視点サンプリング点集合は離散的な集合であり、Vと表記する。以降、本発明において、離散的な値を表す記号には、”○”のように右肩に星印を付けて区別する。Vの要素を「視点サンプリング点」と呼ぶ。iでインデックスした有限集合Vの要素(すなわち、視点サンプリング点)をv(i)と書く。Vにおいて視点サンプリング点を指し示すインデックスを「視点インデックス」と呼ぶ。
また、BTFサンプル画像集合から、各画像に対応する視点方向と、光源方向を、物体座標系で表された、物体座標系原点からの方向ベクトルの対として表したとき、固定された視点方向v(i)と対になる光源方向ベクトルの集合が得られる。この集合を「光源サンプリング点集合」と呼ぶ。光源サンプリング点集合は視点方向のインデックスiに依存するので、L(v(i))或いはL(i)と表記する。有限集合L(v(i))の要素をiでインデックスしたものを「光源方向サンプリング点」と呼び、l(i;i)∈L(v(i))と表記する。
ここで、l(i;i)の表記は、この式を、iを変数とする関数とみなし、iを定数とみなすことを表す。このとき、この関数を、l(...;i)と表記することもある。以降、本発明において、関数の変数を”;”で区切った場合、”;”の左側の記号を関数の変数、”;”の右側の記号を固定された変数とみなす。
以降、サンプリングによって近似しようとするBTFを「目的BTF」と呼ぶ。目的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、光源方向l、テクスチャ座標(s,t)、色チャネルcでインデックスされた、放射輝度値の無限集合」である。テクスチャサンプリング法Aを使う場合、v,lは、物体表面の接空間座標系で表される。テクスチャサンプリング法Bを使う場合、v,lは、物体座標系で表される。
v,lは、球面座標(spherical coordinates)を用いて、下記の数式1で表現される。
Figure 0004394122
θ,θは緯度、φ,φは経度である。テクスチャ座標pは座標(s,t)で表現し、cはRGBに対応するインデックスで、0,1,2のいずれかの値をとる。
目的BTFは、v,l,s,t,cを変数とする関数として、下記の数式2で表される。
Figure 0004394122
各BTFサンプルテクスチャのテクセル値は、関数Tのサンプルであり「BTFサンプルテクセル値」と呼ぶことにする。テクスチャ座標(s,t)は、方形の格子点でサンプリングされており、整数で表したそれぞれの格子点の座標値を(i,i)とする。テクスチャサイズを(W,H)として、下記の数式3で表される。
Figure 0004394122
これらの表記により、サンプルテクセル値は離散関数として、下記の数式4で表される。
Figure 0004394122
ただし、そのとき下記の数式5である。
Figure 0004394122
はTのサンプリングであるので、下記の数式6となる。
Figure 0004394122
BTFサンプルテクスチャ集合Tから、目的BTFである関数Tを近似した近似BTFをTで表し、下記の数式7とする。
Figure 0004394122
(BTFの近似)与えられたポリゴンメッシュにBTFを適用してレンダリングするためには、BTFサンプルテクスチャ集合から、連続な近似BTFを得る必要がある。本発明では、視点方向の変化に関しては、サンプルの重み付け和による補間によってBTFを近似する。
物体の見かけの放射輝度は、放射輝度の点光源に対する応答関数(以後「放射輝度応答関数」)と光源を表す関数との球面積分で表される。放射輝度応答関数と、光源を表す関数を、正規直交基底である球面調和関数の線形和で表すと、放射輝度応答関数と光源を表す関数との球面積分が、基底に対する係数ベクトルの内積で計算されるため、効率良くグローバルイルミネーションに対応することが可能になる(非特許文献4を参照)。本発明形態においても、放射輝度応答関数に関しては、球面調和関数展開による近似を利用する。
以降、本発明において、光源方向、色チャネル、テクスチャ座標を固定し、視点方向のみを変化させたときの、BTF或いはBTFサンプルテクセル値の変化を「視点依存変化」と呼ぶ。また、視点方向、色チャネル、テクスチャ座標を固定し、光源方向のみを変化させたときの、BTF或いはBTFサンプルテクセル値の変化を「光源依存変化」或いは「放射輝度応答」と呼ぶ。光源依存変化に関する補間手法と、視点依存変化に関する補間手法とを違うものにしたのは、BTFサンプルテクセル値の光源依存変化と視点依存変化の性質が異なるからである。
BTFサンプルテクセル値を表す関数Tにおいて、視点方向i、テクセル位置(i,i)、色チャネルcのインデックスを固定し、光源方向のインデックスiを変化させるとき、Tの値は、被測定対象においてほぼ同一の物理的な点における放射輝度値を表すことが、高い精度で保証される。
これは、同じ視点方向v(i)に対するBTFサンプルテクスチャが、固定されたカメラ位置、ターンテーブル位置で撮影されるためである。このため、BTFサンプルテクセル値を表す関数Tの光源依存変化は、同一の材質に対する光源方向を変化させたときの放射輝度値の変化にのみ起因する。
既に多くの文献で言及されているように、多くの種類の材質において、放射輝度値の光源依存変化は、比較的緩やかであり、少数の球面調和関数基底を利用することでよく近似できる。目的BTFであるTの光源依存変化も同様に緩やかであり、球面調和関数による近似が効果的であると考えられる。
一方、同一のテクセル位置(i,i)と色チャネルcで、異なる視点インデックスiを指定したときのBTFサンプルテクセル値Tの値は、測定物体の同一の物理的な点の放射輝度値に対応するとは限らない。テクスチャサンプリング法Bを利用した場合、視点方向パラメータが異なると、同一のテクセル位置(i,i)に対応する測定物体上の点は異なる。テクスチャサンプリング法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サンプルテクスチャ集合から、固定された視点インデックスi、テクセル位置(i,i)、色チャネルcにおけるBTFサンプルテクセル値の集合である、下記の数式8を取り出し、球面関数のサンプル集合とする。
Figure 0004394122
このように、特定の視点方向、テクスチャ座標、色チャネルにおける光源依存変化を表すサンプルの集合を「光源依存変化サンプル集合」と呼ぶ。
光源依存変化サンプル集合のそれぞれの要素は、光源方向を表す、下記の数式9により、単位球面上の点に対応する。この単位球面を、L(i)の要素に対応する各点を頂点として、ポリゴンメッシュに分割することができる。以降、ポリゴンメッシュを「光源サンプリングメッシュ」と呼ぶ。
Figure 0004394122
光源サンプリングメッシュを、光源依存変化サンプル集合のそれぞれの輝度値を頂点色として、キューブテクスチャにレンダリングすることで、目的BTFの光源依存変化を近似する球面関数を表現することができる。レンダリング時にスムースシェーディングを指定することで、光源依存変化サンプル集合の間で補間処理が行われ、単位球面上で密な値を持った球面関数が得られる。スムースシェーディングとしては、グーローシェーディング、フォンシェーディングなどを利用する。得られた目的BTFの光源依存変化は、目的BTFの点光源への応答関数でもあるので、これを「照明応答」と呼ぶこともある。
照明応答を近似するキューブテクスチャを、球面調和関数展開によって近似する。球面調和関数による級数展開の係数は、球面積分により得られる。球面積分は、キューブテクスチャのテクセル値と、対応する光源方向における球面調和関数の基底関数の値と、テクセルが占める立体角の大きさとの積を、各テクセルについて足し合わせた値で近似される。
得られる係数を、下記の数式10と表す。ここでNshは球面調和関数の最大次数とする。Nsh次までの基底を利用する場合、Nsh 個の係数が得られる。
Figure 0004394122
視点方向v(i)におけるTの光源依存変化をTで表すと、下記の数式11となる。ただし、Y(θ,φ;l,m)は球面調和関数を、l=(θ,φ)は連続な光源方向を、v(i)はインデックスiで指定された、離散的な値をとる視点方向を、p=(i,i)は2次元のインデックスで表されたテクスチャ座標を、cは色チャネルを表す。
Figure 0004394122
前述した手順を繰り返して、全ての各視点インデックスi、テクセル位置p=(i,i)、色チャネルcにおけるBTFの照明応答を、球面調和関数で近似する。
結果として得られた係数を、i,i,iでインデックスされた、3Nsh 次のベクトルとみなす。ベクトルの数は、‖V‖Wである。
得られたベクトルの集合を、主成分分析(Principal Component Analysis、以降「PCA」と表記する)の手法を用いて近似する。この方法は、前計算放射輝度伝達(PRT)の手法と同様である。RGB3チャネルで3Nsh 個の係数を、ベクトルとして、PCAによって近似し、K個の3Nsh 次元主成分ベクトルと、主成分得点を表す‖V‖W個のK次のベクトルに分解する。以下、3Nsh 次元主成分ベクトルを「基底ベクトル」、主成分得点を表すK次のベクトルを「重みベクトル」と表記する。
基底ベクトルの計算には特異値分解(singular value decomposition、以降「SVD」と表記する)などを用いるが、全てのベクトルを基底ベクトルの計算に利用するのは多くの計算量が必要となるので、‖V‖W個のベクトルから一部をサンプリングし、得られた少数のサンプルに対してSVDを実行し、基底ベクトルを計算しても良い。
あとで重みベクトルをテクスチャとして表現する必要性から、各基底に対応する重みベクトルの成分は、一定の値の範囲になるように正規化しておくことが望ましい。したがって、重みベクトルの各成分について、絶対値の最大値を求め、その値で全重みベクトルの各成分の値を割り、対応する基底ベクトルにその値を掛ける。この正規化の方法は、前計算放射輝度伝達(PRT)の手法と同様である。
PCAにより計算されたK個の基底ベクトルは、球面調和関数の係数として表されたBTFの照明応答の基底である。これを、本発明においては「照明応答基底」と呼ぶことにする。基底ベクトルのインデックスをk(0≦k≦K−1)とし、kで示された係数の基底を、C(c;l,m,k)で表す。cは色チャネルのインデックスで、0,1,2のいずれかの値をとる。照明応答基底L(...;k)を下記の数式12で定義する。
Figure 0004394122
PCAにより計算された重みベクトルはi,i,iでインデックスされたK次ベクトルである。その要素をインデックスk(ただしkは0以上K−1以下の整数)によりW(i,i,i;k)と表す。これにより、下記の数式13によって、視点方向v(i)、テクセル位置(i,i)に対応するBTFを近似できる。Tlaを「BTFの光源依存変化近似関数」と呼ぶ。
Figure 0004394122
(i,i,i;k)は照明応答を表し、同時に離散的な視点方向、テクスチャ座標で定義された離散関数でもあるので、「視点依存照明応答」と呼ぶ。
(BTFの視点依存変化の近似)既に述べたBTFの光源依存変化近似関数Tlaは、光源方向lの変化に対しては連続関数であり、視点方向vの変化に関しては、vが視点サンプリング点集合Vの要素である場合にのみ値を持つ離散関数である。BTFの視点依存変化の近似は、Vから複数の視点方向vを選択し、それらの視点方向でのTlaの値を重み付けした和をとることで行う。
視点サンプリング点集合V={v(i)|0≦i≦‖V‖}の要素は、光源サンプリング点の場合と同じように単位球面上に対応させることができる。視点サンプリング点集合の球面上での対応点を頂点とする三角ポリゴンメッシュによって、単位球面上を分割する。このポリゴンメッシュを「視点サンプリングメッシュ」と呼ぶ。
これにより、任意の視点方向vは、視点サンプリングメッシュに含まれる1つの三角ポリゴンに対応する。vの対応点が三角ポリゴンの内部にある場合には三角ポリゴンが、vの対応点がメッシュの辺や頂点にある場合には、辺または頂点に接続する三角ポリゴンに対応するようにする。この三角形をvの「近傍視点三角形」と呼び、下記の数式14と表記する。
Figure 0004394122
視点サンプリングメッシュの各三角形における3個の頂点は、それぞれの三角形で独立に{0,1,2}の数字でインデックスされる。このインデックスを「三角形局所インデックス」と呼ぶ。
近傍視点三角形△(v)の3個の頂点は、視点サンプリング点集合の要素である。これらをvの「近傍視点」と呼び、三角形局所インデックスの順に、下記の数式15で表す。
Figure 0004394122
(v;0)、v(v;1)、v(v;2)の視点インデックスを、下記の数式16で表す。
Figure 0004394122
これらをvから、視点インデックスへの写像とみなし、「近傍視点インデックス関数」と呼ぶ。近傍視点インデックス関数は、一般に、視点サンプリングメッシュの一部の辺において、不連続性を持つ。
Figure 0004394122
数Tは、重み関数である下記の数式17で加重平均をとった関数として、下記の数式18の形で与えられる。
Figure 0004394122
Figure 0004394122
Figure 0004394122
BTF、Tであるが、あとで述べるように視点依存照明応答Wはテクスチャとして表現されるので、Wにおいて適当なテクスチャ座標の補間を行うことで、連続的なテクスチャ座標に関しての近似BTF、Tを得ることができる。
関数Gを下記の数式19と定義すると、下記の数式20となる。G(...;k)は視点依存照明応答を補間した視点位置の関数である。G(...;k)を「補間された照明応答」と呼ぶ。
Figure 0004394122
Figure 0004394122
重み関数H(v;n)は、vを近似する3個の近傍視点の重みを表す関数である。これを「近傍視点重み関数」と呼ぶ。H(v;n)には以下の制約条件を設ける。I,jを視点サンプリング点のインデックスとする。このとき、vの視点サンプリング点v(i)に対する重み関数である下記の数式21がvに対して連続であり、下記の数式22となり、下記の数式23でなければならない。ただし、δ(x)はx=0のときのみ1であり、そうでなければ0となる関数である。
Figure 0004394122
Figure 0004394122
Figure 0004394122
前記の制約条件は、vの変化に対して、近傍視点重み関数H(v;n)の、任意の視点サンプリング点v(i)についての重みがvの変化に対して連続であること、vが1つの視点サンプリング点に一致するとき、その視点サンプリング点の重みが1になり、他の視点サンプリング点の重みが0になること、各視点サンプリング点の重みの総和が1になることを要請する。
(v;0)がメッシュの辺、頂点において、vに対して連続でないため、H(v;0)は、一般に連続でない。H(v;1)、H(v;2)も同様である。Q(v,v(i))は、vの関数とみなした場合、v(i)を頂点とする三角形の内部でのみ0でない値を持つ視点サンプリングメッシュにおける補間フィルタである。
視点方向vと、その近傍視点三角形△(v)との交点を、△(v)に関する重心座標、下記の数式24で表すとする。ただし、重心座標は、三角形局所インデックスの順に記述する。
Figure 0004394122
このとき、H(v;n)として、重心座標をそのまま値とした下記の数式25を利用することができる。
Figure 0004394122
近傍視点重み関数として重心座標をそのまま与えると、近傍視点三角形△(v)内部での線形な補間が行われる。これは、補間フィルタとしては三角フィルタ(triangle filter)にあたるが、本発明では、より滑らかな補間を行うために、下記の数式26の重み関数を使用しても良い。
Figure 0004394122
関数sは、[0,1]の区間を滑らかにつなぐために用いられる3次のエルミート(Hermite)補間関数であり、bNs(v;n)はs(b(v;n))を、下記の数式27となるように正規化した関数である。
Figure 0004394122
(プログラマブルシェーダを用いたBTFの実時間レンダリング)本発明の目的は、BTFサンプリング装置でサンプリングされたBTFを、プログラマブルシェーダを用いて効率的にすることである。そのための準備として、前述のように用意したレンダリング用のデータをテクスチャデータとして表現する必要がある。
コード化するデータは、視点依存照明応答W(i,i,i;k)、近傍視点インデックス関数i (v;n)、近傍視点重み関数H(v;n)、n∈{0,1,2}である。
レンダリング時に対象となる物体を照らす照明環境は、予めキューブマップなどで表現し、球面調和関数の係数に変換する。この変換には、視点依存照明応答を求めた場合と同様の手法を利用することができる。照明環境を球面調和関数の係数で表現したものは、通常世界座標で表されているので、これをレンダリング時のメッシュの各頂点で決められた接空間座標、或いは物体全体で共通な物体座標に変換する。変換の方法は、非特許文献4に述べられているものを用いる。変換された係数を、照明応答基底に対する重みとして表したものを、「照明応答基底による照明の表現」と呼び、L(c,k)で表すことにする。この表現は、変換された係数と照明応答基底との内積をとり、スケーリングを施すことで計算できる。
(i,i,i;k)は、iを固定するとW×Hのサイズのテクスチャ画像とみなすことができる。これを「視点依存照明応答テクスチャ」と呼び、iはそのテクスチャのインデックスとみなせる。M≧‖V‖として、(M)×(N)のサイズのテクスチャを用意する。このテクスチャに、視点依存照明応答テクスチャをインデックスiの順でタイル状に並べる。kを色チャネルとしてコード化する。ARGB4個のチャネルを用いると、Wは下記の数式28で表される枚数のテクスチャを消費する。
Figure 0004394122
近傍視点インデックス関数i (v;n)と近傍視点重み関数H(v;n)は、vに関するキューブテクスチャとして表現する。nを色チャネルとすると、これらの関数を2個のキューブテクスチャで表現できる。これらのキューブテクスチャを、それぞれ「近傍視点インデックステクスチャ」「近傍視点重みテクスチャ」と呼ぶ。
プログラマブルシェーダによるレンダリングアルゴリズムは以下のようになる。頂点シェーダによる処理と、ピクセルシェーダによる処理とに分かれる。頂点シェーダによる処理は、単に、メッシュの各頂点において、接空間基底を計算し、接空間で表現された視点、光源方向v,lを計算するのみである。頂点シェーダには、他に、テクスチャ座標pも渡される。v、l、pは頂点間で補間され、ピクセルシェーダに渡される。また、L(c,k)の計算は、照明を球面調和関数展開の係数で表したものを回転し、照明応答基底との内積をとることで行われるが、この処理は頂点シェーダで行うのが望ましい。ただし、現在のハードウェアの頂点シェーダでこれを行うことができない場合等には、CPUでこれを行っても良い。
ピクセルシェーダにおける処理を以下に示す。PIXはピクセル値を保存する変数を、IVは近傍視点インデックスを、WVは近傍視点重み関数の値を、WLは補間された照明応答の値を表す。それぞれの関数の値は、対応するテクスチャを参照することで得られる。また、照明応答基底による照明の表現L(c,k)をLB(c,k)で、視点インデックスi、テクスチャ内部でのテクスチャ座標(s,t)、基底番号kにおける視点依存照明応答テクスチャのテクセル値をLWTEX(i,s,t;k)で、視点方向v、三角形局所インデックスNにおける近傍視点インデックステクスチャ及び近傍視点重みテクスチャのテクセル値を、それぞれIVTEX(v;N)及びWVTEX(v;N)で表す。
Figure 0004394122
実際の実装でのステップ4の繰り返しは、k=0,1,...,kにおけるLWTEX(...;k)、LB(c,k)のデータを、kをARGB4要素の各色チャネルに割り当てることで、繰り返し数を下記の数式28とすることができる。
Figure 0004394122
前記のアルゴリズムでは、テクスチャの読み取りが多数行われる。また、IVTEX(v;n)のテクスチャ読み取りの結果により、LWTEX(IVq,i,i;k)のテクスチャ読み取りに使われるテクスチャ座標を決定するため、依存テクスチャ読み取り(dependent texture read)の機能が必要である。
例えば、Microsoft社のDirectXで利用されているHLSL、及びnVIDIA社のcg言語として規格化されているシェーダ記述用言語では、ps_2_x以上のピクセルシェーダがその機能を備えている。
テクスチャメモリの消費が大きいのは、視点依存照明応答テクスチャである。この情報を圧縮することで、テクスチャメモリの消費を抑えることができる。
(視点依存照明応答テクスチャの圧縮)3次元離散関数W(i,i,i;k)は通常、テクスチャ座標であるi,iに関して、原点の周りで高い自己相関を持つ。また、視点方向を表すインデックスiに関しても、iの差が視点方向の差を反映するようにインデックスを定義すれば(つまり、iが近い値を持つとき、視点方向も近くなるならば)、やはりW(i,i,i;k)は原点の周りで高い値を持つ。このことから、W(i,i,i;k)を3次元画像とみなして、直方体のブロックに分割し、ブロック毎にベクトル量子化などの圧縮を適用することで、W(i,i,i;k)を効果的に圧縮することができる。
本発明では、W(i,i,i;k)をB×B×Bの大きさの、直方体のブロックに分割する。
下記の数式29とすると、ブロックの数はS×S×S個である。このブロック毎にコードブックをNc個用意し、コードインデックスを収めたテクスチャを用意することで、W(i,i,i;k)の圧縮を行う。
Figure 0004394122
(Image Quiltingによるテクスチャの拡大)BTFを、類似した凹凸や色などのパターンが繰り返し現れるような素材の質感を表現するために利用する場合、有限の大きさのBTFから、パターンを構成するBTFの小片の標本を取り出し、それらの継ぎ目が目立たなくなるように継ぎ合わせることで、任意の大きさのBTFを生成することができる。これは、小さなBTFから、拡大された大きさのBTFを生成するので、一種の圧縮と考えられる。本発明では、「Image Quilting」(非特許文献12)の手法を応用することで、テクスチャの拡大を行う。
視点方向を表すインデックスiを固定した場合、3次元離散関数W(i,i,i;k)は、各テクセルが照明に関する応答を表すようなテクスチャ画像を表す。このテクスチャ画像に対して、Image Quiltingを適用する。適用する方法は2種類ある。一つは、各視点方向インデックスiに対して、それぞれ個別にImage Quiltingを適用する方法である。もう一つは、全ての各視点方向でのW(i,i,i;k)をまとめて一つの画像とみなし、まとめてImage Quiltingを適用する方法である。後者の方法では、視点方向インデックスiを、テクセルのチャネルを指定するインデックスの一つと見なす。
Image Quiltingの手法の概略を述べる。入力画像は与えられた画像であり、出力画像は任意の大きさを指定できる。出力画像は、方形の格子で分割される。隣り合った格子の間には、一定の幅を持った「重なり領域」を設ける。次に、出力画像の各格子と、その格子に隣接した重なり領域に対して、入力画像の部分画像を割り当てる。隣り合った格子の重なり領域では、双方の格子に対応した部分画像が、乱数を利用して割り当てられる。このとき、部分画像に割り当てられた複数の部分画像に対して、それらの画像の差が一定以下になるようにする。その上で、重なり領域において格子の分割線を生成し、それぞれの格子を分割する。格子の分割線は、その線上の画素全体に対しての双方の格子に対応した部分画像の差を加えた和が最小値をとるように生成される。このような線を、「最小コストパス」と呼ぶ。最小コストパスは、動的計画法により求めることができる。最小コストパスにより分割された各格子ごとに、入力画像から出力画像へ部分画像をコピーすることで、出力画像を得る。
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をテクスチャとして表現した場合、この変換をピクセルシェーダによって効率的に行うことができる。
(照明応答基底による照明の表現の前計算)照明応答基底による照明の表現L(c,k)の計算は、照明を球面調和関数展開の係数で表したものを回転し、照明応答基底との内積をとることで行われる。この処理を頂点シェーダで行うことができるなら、効率の点で望ましいが、現在の頂点シェーダの機能では、それは困難である。
照明が、点光源や、円状の光源のように、光源の中心を固定した回転で不変な場合には、光源の回転は2変数のみで表現できる。この対応は、光源の方向を、球面に対応させることで簡単に実現できる。そこで、各光源方向に対するL(c,k)を予め計算し、これをキューブマップなどに格納しておくことで、CPUによる回転の計算を頂点シェーダ内で行うことができる。これを、「前計算された照明の表現」と呼ぶ。
(近傍視点重み関数の連続関数化)近傍視点重み関数H(v;n)(n∈{0,1,2})は、BTFの視点依存変化の補間を行うための重み関数であり、3チャネルのキューブテクスチャで表現することができる。この関数は、視点方向vの変化に対して滑らかに変化することが望ましい。このために、H(v;n)のキューブテクスチャの読み取りのとき、双線形補間をかけることが考えられるが、この方法には深刻な問題がある。
H(v;n)は一般には視点サンプリングメッシュのポリゴンの辺において連続でない部分を持つ。このため、双線形補間をかけると、ポリゴンの辺の付近における重みの値に誤差が生じ、望ましくないアーティファクトを生じる。
この問題の解決法としては、近傍視点インデックス関数 及び近傍視点重み関数H(v;n)を表すキューブテクスチャの解像度を一致させ、キューブテクスチャのテクセルの読み取りに最近傍補間を行うことが考えられる。この方法の欠点は、多くのメモリを消費して高解像度のキューブテクスチャを利用しないと、視点の変化に対して重みが滑らかに変化せず、グラデーション状のアーティファクトが生じる場合があることである。
本発明では、視点サンプリングメッシュの辺の位置における不連続性が生じないようにH(v;n)を定義することで、この問題を解決する。以下の命題が成立する。
命題:視点サンプリングメッシュにおいて、どこでも連続であるようにH(v;n)、n∈{0,1,2}を定義できない場合が存在する。
証明:視点サンプリングメッシュ全体で連続なH(v;n),n∈{0,1,2}があるとする。このとき、視点サンプリングメッシュの頂点vでは、H(v;0)=1、H(v;1)=1、H(v;2)=1のいずれかが成立する。
H(v;n)=1のとき、頂点vを数字nに写像する関数をX(v)とする。隣り合った頂点v,vについてX(v)≠X(v)である。なぜなら、X(v)=X(v)であるなら、vが近傍視点三角形△(v)を通ってvに近づく場合、下記の数式30となり矛盾するからである。
Figure 0004394122
このとき、X(v)は、視点サンプリングの頂点に対する、N色問題の、N=3の場合の解である。視点サンプリングメッシュは球面上のグラフであるが、これはある平面グラフと同値である。平面グラフにおいて、N色問題は、N=3の場合には常に解がある訳ではない。よって視点サンプリングメッシュ全体で連続なH(v;n)、n∈{0,1,2}が存在しない場合がある。(証明終了)
N=4の場合には、視点サンプリングメッシュに対するN色問題には常に解がある。このとき、視点サンプリングメッシュ全体で連続なH(v;n)、n∈{0,1,2,3}を定義し、隣り合った頂点v,vについて、下記の数式31が成り立つようにすることができる。
Figure 0004394122
このようなH(v;n)(n∈{0,1,2,3})は、4チャネルのキューブテクスチャで表現することができる。同様に、近傍視点インデックス関数 を4チャネルのキューブテクスチャで表現すると、H(v;n)のテクセルの取得時に、双線形補間を利用してもアーティファクトが生じなくなる。双線形補間の利用により、解像度の低いキューブテクスチャを使っても、BTFの視点依存変化の補間が連続的に行われるようになる。
前計算された照明の表現、近傍視点重み関数、近傍視点インデックス関数を表すには、キューブテクスチャでなくても、3次元方向から画素値を得られるテクスチャであれば良い。例えば、Blinnらによる、緯度、軽度によるマップ(非特許文献5)、球面マップ(sphere mapping)(非特許文献6)、放物面マップ(paraboloid mapping)(非特許文献7)などを挙げることができる。
前計算された照明の表現、近傍視点重み関数、近傍視点インデックス関数を、球面マップ、放物面マップなどにより2次元テクスチャで表現する場合、複数の関数を一枚のテクスチャ画像に収めることができる。これにより、テクスチャの枚数の制限を緩和することができる。
テクスチャサンプリング法Aを用いてサンプリングを行い、BTFを平面に貼り付け、視点が無限遠にあると仮定した場合、或いは、テクスチャサンプリング法Bを用いてサンプリングを行い、物体を変形させずにBTFをマッピングして、視点が無限遠にあると仮定した場合など、接空間、或いは物体座標系で表した視点方向が、レンダリング時に一定である場合がある。
このような場合、近傍視点重み関数、近傍視点インデックス関数を、キューブテクスチャとしてテクスチャ保持する必要はなく、CPUで参照して、結果をプログラマブルシェーダに渡すだけで良い。
視点方向がレンダリング時に完全に一定でなくても、レンダリングの条件が前記の場合に近い場合、レンダリング全体で必要となる近傍視点は、全ての視点サンプリング点集合のうち、ごく一部となる。このような場合においても、近傍視点重み関数、近傍視点インデックス関数を、キューブテクスチャとして保持する必要はなく、CPUで参照して、結果をプログラマブルシェーダに渡すだけで良い。
光源方向がオブジェクト全体で一定であれば、照明応答基底による照明の表現を頂点ごとに計算する必要はなく、全体で同じ値を利用するだけで良い。
視点依存照明応答W(i,i,i;k)は、3次元テクスチャとして表現しても良いし、2次元テクスチャを格子状に区切って、並べても良い。
実施例5のように、視点依存照明応答W(i,i,i;k)を、3次元テクスチャとして表現する場合、視点のインデックスivが次の条件を満たすように定義すると良い。
条件:インデックスが1つだけ違う2つの視点サンプリング点v(i)とv(i+1)は、視点サンプリングメッシュにおいて、常に辺で接続されている。
この場合、視点インデックスとして浮動小数点値を使うことで、視点依存照明応答W(i,i,i;k)の視点による補間の一部を、テクスチャ参照フィルタで代用することができる。
近傍視点インデックステクスチャの参照をCPUから行う場合、視点依存照明応答テクスチャは、視点によってキャッシュすることができる。また、近傍視点インデックステクスチャの参照をプログラマブルシェーダで行う場合においても、CPUによる近傍視点インデックステクスチャの参照を併用し、視点依存照明応答テクスチャを、視点によってビデオボード内のテクスチャメモリにキャッシュすることができる。この方法は、レンダリング全体で必要となる近傍視点が、全ての視点サンプリング点集合のうち、ごく一部となる場合に有効である。
視点方向によって視点依存照明応答テクスチャをキャッシュする場合、近いうちに近傍視点として利用する可能性のある視点のテクスチャを、キャッシュとしてテクスチャメモリに読み込んでおくことで、テクスチャをテクスチャメモリに読み込むために生じる表示の遅れを無くすことができる。
また、視点方向によって視点依存照明応答テクスチャをキャッシュする場合、キャッシュに読み込んでおくテクスチャの視点インデックスを、視点方向を変数とした球面関数として予め決定しておき、テクスチャとしてそれを表現することで、キャッシュに読み込むテクスチャの視点インデックスを効率的に決定することができる。この場合、さらに、キャッシュするテクスチャを読み込むテクスチャメモリ中での位置を予め決定しておくことで、キャッシュにおけるメモリ管理を簡素化でき、効率的にキャッシュを働かせることができる。
前述した、キャッシュに読み込んでおくテクスチャの視点インデックスを表すテクスチャ、近傍視点重みテクスチャ、近傍視点インデックステクスチャ、前計算された照明の表現を、全て2次元テクスチャで表し、複数をまとめることで、テクスチャ数を減らすことができる。
近傍視点重みテクスチャ、近傍視点インデックステクスチャの中の表現には、かなりの任意性がある。例えば、経度によって視点番号が並んでいる場合、実数の3.6が、3と4を0.4:0.6で混合する意味にもできる。視点依存照明応答が3次元テクスチャの場合、そのままテクスチャ座標に変換することができる。
目的BTFの光源依存変化を近似するキューブテクスチャを、球面調和関数展開によって近似するとき、モンテカルロ積分を利用して計算量を節約することができる。
物体表面の凹凸の情報が、ポリゴンメッシュよりも微細な精度で得られる場合がある。例えば、凹凸マップ(bump map)が与えられる場合、或いは、shape−from−shading(非特許文献8)などの手法により、凹凸が計算できる場合などである。
この場合、異なる複数の近傍視点におけるBTFサンプルテクスチャにおいて、同一の物理的点に対応する点を、凹凸による視差の効果を加えて計算することができる。これにより、同一の物理的点に対応する点同士が滑らかに移り合うように、テクスチャにモーフィングをかけることで、より精度の高いBTFを得ることができる。
物体表面の凹凸の情報が直接得られない場合でも、異なる複数の近傍視点におけるBTFサンプルテクスチャにおいて、同一の物理的点に対応する点を推定できる場合がある。例えば、テンプレートマッチングによってテクスチャの模様の一致を探索する方法である。
テンプレートマッチングに用いる画素値としては、元のBTFサンプルテクスチャのRGB値や、各画素の光源依存変化サンプル集合を球面調和関数展開したときの係数列や、球面調和関数の係数をPCAで近似したときの重みベクトルなどを利用できる。
BTFの光源依存変化を近似するために、球面調和関数展開の代わりに、球面ウェーブレット変換(非特許文献9)を利用することもできる。
光源とレンダリングする物体の表面との距離によって、レンダリングする画素のRGB値を増減することで、光源と表面との距離による光の減衰を表現可能である。例えば、光源と表面との距離の2乗の逆数を、レンダリングする画素のRGB値に掛けることで、点光源からの距離による光の減衰を表現できる。
レンダリングする画素のそれぞれの色チャネルの値を増減することで、光源色の変化を表現できる。例えば、ホワイトバランスを調整し、光源を白色とみなせるようにして画像のサンプリングを行う場合、設定した光源色に比例した割合の値をレンダリングする画素の各色チャネルの値に掛けることで、光源色の違いを表現することが可能である。
対象物体が、透明物体や半透明物体の場合は、光が物体を透過して観測される透過光の効果がある。この場合も、本発明の方法で取り扱うことができる。透明度の低い物体は、計測対象物体の厚みが増すと、急速に透過光が減衰するため、BTFサンプリング時に、対象物体の厚みを同時に計測しておく必要がある。レンダリング時には、この厚みを利用して、レンダリングする対象物体の厚みに応じて、透過光の強度を落とせば良い。
このとき、BSSDRF(非特許文献10)などのサブサーフェスモデルを考慮した透過光の強度を計算すれば、より正確なレンダリングが可能である。また、完全な透明物体に関しては、背景にパターンを配置し、その観測パターンを計測すれば、非特許文献11などの手法を用いることで、本発明をそのまま適用することができる。
本発明のアルゴリズムを、プログラマブルシェーダによりGPU(ビデオボード上の画像処理装置)で実行する代わりに、CPUによって直接実行しても良い。CPUで実行した場合、GPUと比較して実行効率は低下するが、テクスチャの横幅、高さなどの制限や、テクスチャメモリの容量などの制限を受けなくなる。これにより、高解像度、高画質のBTFをマッピングすることが可能になる。
テクスチャサンプリング法Bにおいて、ポリゴンメッシュの各頂点に対応するテクスチャ座標は、予め計算しておき、レンダリング時には、これを参照する機構としても良い。

Claims (8)

  1. 複数の視点方向からのテクスチャのサンプルを視点に関するインデックス(以後「視点インデックス」)により参照可能な形で格納するメモリ領域と、視点の補間に用いるテクスチャを指す1乃至複数の前記視点インデックスを任意の視点方向に関して参照可能なメモリ領域と、視点の補間に用いる該テクスチャに対する重みを任意の視点方向に関して参照可能なメモリ領域とを有し、与えられた視点方向に対応する前記視点インデックスと前記重みをメモリ参照によって決定する処理と、得られた前記視点インデックスに対応する画素値をメモリ参照によって決定する処理と、得られた前記画素値と前記重みから実際に表示する画素値を視点に関して補間する処理とからなり、任意の視点方向から見た画像の生成を実現することを特徴とし、特に視点の補間に用いるテクスチャを指す視点インデックスと、視点の補間に用いるテクスチャに対する重みをメモリに保持することで、ハードウェアによる支援を容易にすることを特徴とする、実時間レンダリングの方法。
  2. 複数の視点方向でサンプリングされた、任意の照明方向に対する放射輝度の応答関数(以後「照明応答関数」)のパラメータの集合を、視点に関するインデックス(以後「視点インデックス」)によって参照可能な形で格納する第1メモリ領域と、視点の補間に用いるパラメータ値を指す1または複数の前記視点インデックスを任意の視点方向に関して参照可能な第2メモリ領域と、視点の補間に用いる該パラメータ値に対する重みを任意の視点方向に関して参照可能な第3メモリ領域と、与えられた視点方向に対応する前記視点インデックスと前記重みをメモリ参照によって決定する処理と、得られた前記視点インデックスに対応するパラメータ値をメモリ参照によって決定する処理と、得られた前記パラメータ値と前記重みから、実際の照明応答関数のパラメータを得る処理と、物体の座標系で各方向での照明の強度を表す関数のパラメータを得る処理と、得られた前記照明応答関数と前記照明の強度を表す関数との積分をとって実際に表示する画素値とする処理とからなり、任意の視点方向及び任意の照明方向並びに照明強度における画像の生成を実現することを特徴とする、実時間レンダリングの方法。
  3. 請求項1に記載の実時間レンダリングの方法において、視点の補間に用いるテクスチャを指す視点インデックスを任意の視点方向に関して参照可能なメモリ領域、及び視点の補間に用いる該テクスチャに対する重みを任意の視点方向に対して参照可能なメモリ領域について、それぞれ各画素に関して4次元以上の値を利用することで、3次元の全方向についてそれらの値の変化を連続にし、値の補間による誤差の発生を抑制したことを特徴とする、実時間レンダリングの方法。
  4. 請求項2に記載の実時間レンダリングの方法において、視点の補間に用いるテクスチャを指す視点インデックスを任意の視点方向に関して参照可能なメモリ領域、及び視点の補間に用いる該テクスチャに対する重みを任意の視点方向に対して参照可能なメモリ領域について、それぞれ各画素に関して4次元以上の値を利用することで、3次元の全方向についてそれらの値の変化を連続にし、値の補間による誤差の発生を抑制したことを特徴とする、実時間レンダリングの方法。
  5. 請求項2に記載の実時間レンダリングの方法において、照明環境が照明の方向のみで決まる場合に、各照明方向に関して、その照明強度を表す物体の座標系での関数のパラメータを予め計算しておき、それらのパラメータをメモリ領域に保持することで、実装の効率を高めることを特徴とする、実時間レンダリングの方法。
  6. 請求項2に記載の実時間レンダリングの方法において、前記第1メモリ領域内の照明応答関数のパラメータを多次元の画素値とする画像と見なして、Image Quiltingの手法により前記画像を拡大することを特徴とする、テクスチャサイズを変換する方法。
  7. 請求項6に記載のテクスチャサイズを変換する方法において、サイズを変更されたテクスチャの表現形式としてテクスチャ座標を変換する変換テーブルを有し、前記変換テーブルの内容を決定する処理を行うことを特徴とする、テクスチャサイズを変換する方法。
  8. 請求項2に記載の実時間レンダリングの方法において、サイズの違うテクスチャの間でテクスチャ座標を変換するためのテーブルを入力として加え、レンダリング時にテクスチャ座標の変換を行う処理を有し、任意の視点方向及び任意の照明方向並びに照明強度において、テクスチャサイズを変換して画像の生成を行うことができることを特徴とする、実時間レンダリングの方法。
JP2006514640A 2004-06-16 2004-06-16 物体表面の反射特性をサンプリングして行う実時間レンダリングの方法及びテクスチャサイズを変換する方法 Expired - Fee Related JP4394122B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2004/008770 WO2005124691A1 (ja) 2004-06-16 2004-06-16 物体表面の反射特性をサンプリングして行う実時間レンダリングの方法及びテクスチャサイズを変換する方法

Publications (2)

Publication Number Publication Date
JPWO2005124691A1 JPWO2005124691A1 (ja) 2008-04-17
JP4394122B2 true JP4394122B2 (ja) 2010-01-06

Family

ID=35509930

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006514640A Expired - Fee Related JP4394122B2 (ja) 2004-06-16 2004-06-16 物体表面の反射特性をサンプリングして行う実時間レンダリングの方法及びテクスチャサイズを変換する方法

Country Status (2)

Country Link
JP (1) JP4394122B2 (ja)
WO (1) WO2005124691A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101885090B1 (ko) * 2010-12-09 2018-08-03 삼성전자주식회사 영상 처리 장치, 조명 처리 장치 및 그 방법
JP5926626B2 (ja) * 2012-06-11 2016-05-25 キヤノン株式会社 画像処理装置及びその制御方法、プログラム
JP7404030B2 (ja) * 2019-10-28 2023-12-25 国際航業株式会社 強調画像モデル作成システム
CN111240736B (zh) * 2020-01-17 2023-03-10 网易(杭州)网络有限公司 模型配置的方法、装置、设备及存储介质
EP4172945A1 (en) * 2020-06-29 2023-05-03 BASF Coatings GmbH Uses of a bi-directional texture function

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6765573B2 (en) * 2000-10-26 2004-07-20 Square Enix Co., Ltd. Surface shading using stored texture map based on bidirectional reflectance distribution function

Also Published As

Publication number Publication date
JPWO2005124691A1 (ja) 2008-04-17
WO2005124691A1 (ja) 2005-12-29

Similar Documents

Publication Publication Date Title
Müller et al. Acquisition, synthesis, and rendering of bidirectional texture functions
Chen et al. Light field mapping: Efficient representation and hardware rendering of surface light fields
US6803910B2 (en) Rendering compressed surface reflectance fields of 3D objects
US6888544B2 (en) Apparatus for and method of rendering 3D objects with parametric texture maps
JP3972784B2 (ja) 画像処理装置およびその方法
Liu et al. Synthesis and rendering of bidirectional texture functions on arbitrary surfaces
US20030001859A1 (en) Interactive horizon mapping
US20030234784A1 (en) Accelerated visualization of surface light fields
Merlo et al. 3D model visualization enhancements in real-time game engines
Ma et al. Level-of-detail representation of bidirectional texture functions for real-time rendering
JP4335589B2 (ja) 3dオブジェクトをモデル化する方法
US20050083340A1 (en) Bi-scale radiance transfer
Meseth et al. Reflectance field based real-time, high-quality rendering of bidirectional texture functions
JP4394122B2 (ja) 物体表面の反射特性をサンプリングして行う実時間レンダリングの方法及びテクスチャサイズを変換する方法
Müller et al. Special relativistic visualization by local ray tracing
JP2004252603A (ja) 三次元データ処理方法
KR101286653B1 (ko) 복잡한 재질감 정보 처리 장치 및 방법
Mavridis et al. Global Illumination using Imperfect Volumes.
KR100951121B1 (ko) 간접 조명 효과를 위한 렌더링 방법
Ho et al. Unicube for dynamic environment mapping
Schneider Real-time BTF rendering
Vanhoey et al. Simplification of meshes with digitized radiance
Rushmeier 3D capture for computer graphics
Vyatkin et al. Combined method of visualization of functionally defined surfaces and three-dimensional textures
Löw et al. HDR light probe sequence resampling for realtime incident light field rendering

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090805

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090929

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091014

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121023

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131023

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees