(57)【特許請求の範囲】
【請求項１】
Ｍ個の画素の集合からなり、個々の画素ごとに、光の入射方向および／または反射方向に関する角度に依存して定まる反射特性を示すテーブルが定義された原テクスチャデータを、コンピュータが読み込む原データ準備段階と、
コンピュータが、前記Ｍ個の画素の中からＮ個（Ｎ＜Ｍ）の代表画素を定め、残りの（Ｍ−Ｎ）個の画素を一般画素とする代表画素決定段階と、
コンピュータが、前記個々の一般画素について、それぞれ自己の反射特性に近似した反射特性をもつ代表画素を近似代表画素として選択する近似代表画素選択段階と、
コンピュータが、前記Ｍ個の画素のうち、Ｎ個の代表画素については、それぞれ自己の反射特性を示すテーブルを収録し、（Ｍ−Ｎ）個の一般画素については、選択された近似代表画素を示すデータを収録した圧縮テクスチャデータを作成するデータ圧縮段階と、
を有するレンダリング用テクスチャデータの作成方法において、
前記近似代表画素選択段階で、個々の代表画素について、前記原テクスチャデータによって定義されているテーブルの角度のパラメータを所定のオフセット量だけシフトさせることにより、複数のバリエーションをもったテーブルを定義し、これらのテーブルすべてを比較対象としたときに最も近似するテーブルを最近似テーブルと決定し、この最近似テーブルを派生させた代表画素を近似代表画素として選択し、
前記データ圧縮段階で、一般画素については、選択された近似代表画素を示すデータとともに、当該近似代表画素を選択する要因となった最近似テーブルについてのオフセット量を示すデータを収録した圧縮テクスチャデータを作成することを特徴とするレンダリング用テクスチャデータの作成方法。
【請求項２】
請求項１に記載のテクスチャデータの作成方法において、
原データ準備段階で、光の入射方向および／または反射方向に関する角度を、所定範囲の角度を等分割して得られる複数通りの角度値によって表現したテーブルを読み込み、
近似代表画素選択段階で、個々の角度値に対して前記等分割された角度の整数倍に対応する所定のオフセット量を加算もしくは減算するシフトを行い、加算もしくは減算の結果、シフト後の角度値が前記所定範囲の一端から食み出してしまう場合には、食み出し分を前記所定範囲の他端からカウントするローテーションを行うことを特徴とするレンダリング用テクスチャデータの作成方法。
【請求項３】
請求項２に記載のテクスチャデータの作成方法において、
原データ準備段階で、テクスチャデータのマッピング対象となる仮想物体の表面上に、サンプル点Ｑと、このサンプル点Ｑの位置に立てた法線ｎと、前記サンプル点Ｑを含み前記法線ｎに直交する基準面Ｓと、前記サンプル点Ｑを通る前記基準面Ｓ上の基準線ζと、を定義し、前記サンプル点Ｑに入射する照明光と前記法線ｎとのなす角をθＬ、前記基準面Ｓ上への前記照明光の投影像と前記基準線ζとのなす角をφＬ、前記サンプル点Ｑから射出する反射光と前記法線ｎとのなす角をθＶ、前記基準面Ｓ上への前記反射光の投影像と前記基準線ζとのなす角をφＶとしたときに、「θＬ，φＬ，θＶ，φＶ」の関数として与えられる反射係数Ｋ（θＬ，φＬ，θＶ，φＶ）をテーブルとして定義した原テクスチャデータを読み込むことを特徴とするレンダリング用テクスチャデータの作成方法。
【請求項４】
請求項３に記載のテクスチャデータの作成方法において、
原データ準備段階で、０〜３６０°の角度範囲をα等分することにより、φＬの角度値をα通り設定し、φＶの角度値をα通り設定し、０〜９０°の角度範囲をβ等分することにより、θＬの角度値をβ通り設定し、θＶの角度値をβ通り設定し、個々の画素についてそれぞれ合計α２×β２通りの反射特性を示すテーブルを読み込むことを特徴とするレンダリング用テクスチャデータの作成方法。
【請求項５】
請求項４に記載のテクスチャデータの作成方法において、
近似代表画素選択段階で、Ｕφ＝３６０°／αなる式で与えられる単位角度Ｕφを定義し、φＬおよびφＶを、Δφ＝ｉ×Ｕφ（但し、ｉ＝０，１，２，…，α−１）なる式で与えられるα通りのオフセット量Δφだけそれぞれシフトさせた合計α２通りの組み合わせのバリエーションをもったテーブルを定義することを特徴とするレンダリング用テクスチャデータの作成方法。
【請求項６】
請求項４に記載のテクスチャデータの作成方法において、
近似代表画素選択段階で、Ｕφ＝３６０°／αなる式で与えられる単位角度Ｕφを定義し、Ｕθ＝９０°／βなる式で与えられる単位角度Ｕθを定義し、φＬおよびφＶを、Δφ＝ｉ×Ｕφ（但し、ｉ＝０，１，２，…，α−１）なる式で与えられるα通りのオフセット量Δφだけそれぞれシフトさせるとともに、θＬおよびθＶを、Δθ＝ｊ×Ｕθ（但し、ｊ＝０，１，２，…，β−１）なる式で与えられるβ通りのオフセット量Δθだけそれぞれシフトさせた合計α２×β２通りの組み合わせのバリエーションをもったテーブルを定義することを特徴とするレンダリング用テクスチャデータの作成方法。
【請求項７】
請求項１〜６のいずれかに記載のテクスチャデータの作成方法において、
原データ準備段階で、反射特性を示すデータとして、三原色ＲＧＢの波長をもった照明光それぞれについての反射率を示す数値をもったテーブルを読み込むことを特徴とするレンダリング用テクスチャデータの作成方法。
【請求項８】
請求項７に記載のテクスチャデータの作成方法において、
近似代表画素選択段階で、自己の反射特性を示すテーブルと比較対象となるテーブルとについて、対応する個々の反射率の差の二乗和が最小となるテーブルを最近似テーブルと決定することを特徴とするレンダリング用テクスチャデータの作成方法。
【請求項９】
請求項１〜８のいずれかに記載のテクスチャデータの作成方法において、
原データ準備段階で、実在の物体に対して、種々の方向から照明光を照射した状態で、種々の方向から撮影を行い、得られた複数の撮影画像に基づいて用意された原テクスチャデータを読み込むことを特徴とするレンダリング用テクスチャデータの作成方法。
【請求項１０】
請求項１〜８のいずれかに記載のテクスチャデータの作成方法における代表画素決定段階、近似代表画素選択段階、データ圧縮段階をコンピュータに実行させるためのプログラム。
【請求項１１】
請求項１〜９のいずれかに記載のテクスチャデータの作成方法によって作成された圧縮テクスチャデータを、三次元仮想物体の表面にマッピングし、これを所定の視点から観察したときに得られる投影画像を示す二次元データを生成するレンダリング方法であって、
コンピュータが、前記三次元仮想物体の構造を示す物体データを入力する物体データ入力段階と、
コンピュータが、前記圧縮テクスチャデータを入力するテクスチャデータ入力段階と、
コンピュータが、オペレータの指示に基づいて、レンダリングに必要な照明環境、視点位置、マッピング態様、投影平面を定めるレンダリング条件を設定するレンダリング条件設定段階と、
コンピュータが、前記三次元仮想物体上の各サンプル点Ｑについて、当該サンプル点Ｑの位置にマッピングされる前記圧縮テクスチャデータ内の対応画素を決定する対応画素決定段階と、
コンピュータが、前記対応画素が代表画素であった場合には、当該代表画素について収録されているテーブルによって示される反射特性を利用して、前記サンプル点Ｑからの反射光を演算し、前記対応画素が一般画素であった場合には、「当該一般画素について収録されているデータによって示された近似代表画素」について収録されているテーブルを、「当該一般画素について収録されているデータによって示されたオフセット量」だけシフトして得られるテーブルによって示される反射特性を利用して、前記サンプル点Ｑからの反射光を演算する反射光演算段階と、
コンピュータが、各サンプル点Ｑからの反射光に基づいて、前記投影平面上に得られる投影画像を示す二次元データを生成する二次元データ生成段階と、
を有することを特徴とするテクスチャデータを用いたレンダリング方法。
【請求項１２】
Ｍ個の画素の集合からなり、個々の画素ごとに、光の入射方向および／または反射方向に関する角度に依存して定まる反射特性を示すテーブルが定義された原テクスチャデータを入力してこれを格納する原データ格納部と、
前記Ｍ個の画素の中からＮ個（Ｎ＜Ｍ）の代表画素を定め、残りの（Ｍ−Ｎ）個の画素を一般画素とする代表画素決定部と、
前記個々の一般画素について、それぞれ自己の反射特性に近似した反射特性をもつ代表画素を近似代表画素として選択する近似代表画素選択部と、
前記Ｍ個の画素のうち、Ｎ個の代表画素については、それぞれ自己の反射特性を示すテーブルを収録し、（Ｍ−Ｎ）個の一般画素については、選択された近似代表画素を示すデータを収録した圧縮テクスチャデータを作成するデータ圧縮部と、
を備えるレンダリング用テクスチャデータの作成装置において、
前記近似代表画素選択部が、個々の代表画素について、前記原テクスチャデータによって定義されているテーブルの角度のパラメータを所定のオフセット量だけシフトさせることにより、複数のバリエーションをもったテーブルを定義し、これらのテーブルすべてを比較対象としたときに最も近似するテーブルを最近似テーブルと決定し、この最近似テーブルを派生させた代表画素を近似代表画素として選択し、
前記データ圧縮部が、一般画素については、選択された近似代表画素を示すデータとともに、当該近似代表画素を選択する要因となった最近似テーブルについてのオフセット量を示すデータを収録した圧縮テクスチャデータを作成することを特徴とするレンダリング用テクスチャデータの作成装置。
【請求項１３】
請求項１２に記載のテクスチャデータの作成装置によって作成された圧縮テクスチャデータを、三次元仮想物体の表面にマッピングし、これを所定の視点から観察したときに得られる投影画像を示す二次元データを生成するレンダリング装置であって、
前記三次元仮想物体の構造を示す物体データを入力してこれを格納する物体データ格納部と、
前記圧縮テクスチャデータを入力してこれを格納するテクスチャデータ格納部と、
レンダリングに必要な照明環境、視点位置、マッピング態様、投影平面を定めるレンダリング条件を設定するレンダリング条件設定部と、
前記三次元仮想物体上のサンプル点Ｑの位置にマッピングされる前記圧縮テクスチャデータ内の対応画素を決定する対応画素決定部と、
前記対応画素が代表画素であった場合には、当該代表画素について収録されているテーブルによって示される反射特性を利用して、前記サンプル点Ｑからの反射光を演算し、前記対応画素が一般画素であった場合には、「当該一般画素について収録されているデータによって示された近似代表画素」について収録されているテーブルを、「当該一般画素について収録されているデータによって示されたオフセット量」だけシフトして得られるテーブルによって示される反射特性を利用して、前記サンプル点Ｑからの反射光を演算する反射光演算部と、
各サンプル点Ｑからの反射光に基づいて、前記投影平面上に得られる投影画像を示す二次元データを生成する二次元データ生成部と、
を備えることを特徴とするテクスチャデータを用いたレンダリング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レンダリング用テクスチャデータの作成方法に関し、特に、反射特性が、光の入射方向や反射方向に関する角度に依存して定まる高次元テクスチャデータの圧縮技術に関する。
【背景技術】
【０００２】
コンピュータの性能向上により、産業界の様々な分野でＣＧ画像が利用されるようになってきている。たとえば、建築物、家具、自動車などの設計段階では、通常、多くのＣＧ画像が利用されている。また、コンピュータを利用した製品のプレゼンテーションや映画などの種々の映像表現においても、物品の様々なＣＧ画像が不可欠である。更に、最近では、商品カタログなどにも、実際の商品写真の代わりに、ＣＧ画像が利用される例も少なくない。
【０００３】
建築物、家具、自動車の内装部品などの物品データは、仮想物体の三次元データであるのに対して、提示用のＣＧ画像は、通常、二次元画像として用意される。したがって、三次元の物品データを利用してＣＧ画像を作成する際には、コンピュータ内に仮想物体の三次元データを取り込み、照明条件、視点位置、投影平面を設定した上で、三次元の仮想物体の二次元投影像を投影平面上に得るためのレンダリング処理が行われる。この処理は、基本的には、照明条件で定められた光源からの照明光が仮想物体の各部で反射して視点位置へ向かう現象をコンピュータ上でシミュレートするものであり、視点位置へ向かう反射光の強度を演算する処理ということができる。
【０００４】
また、仮想物体の表面に何らかの絵柄や模様を張り付けた表現を行いたい場合には、予め二次元のテクスチャデータを用意しておき、レンダリング時に、このテクスチャデータを物体データの表面にマッピングする処理が行われる。テクスチャデータは、基本的には、反射特性の分布を示す２次元の画像データであり、これを仮想物体の表面にマッピングすることにより、反射特性が部分ごとに異なる性質をもった物体を表現することが可能になる。
【０００５】
一方、最近は、テクスチャデータとして、単なる２次元の画像データではなく、高次元画像データを用いる方法も提案されている。たとえば、下記の非特許文献１には、ＢＴＦ（Bi-directional Texture Function）と呼ばれている６次元の関数で示されるテクスチャデータを用いるレンダリング処理が開示されている。このＢＴＦは、光の入射方向や反射方向によって異なる反射特性を定義する関数であり、照明光の入射方向を示す２つの角度θＬ，φＬと、反射光の射出方向を示す２つの角度θＶ，φＶと、二次元ｕｖ座標系における座標値ｕ，ｖという合計６個の変数（θＬ，φＬ，θＶ，φＶ，ｕ，ｖ）によって、特定の反射特性を定義する関数になる。また、素材の表面付近の内部散乱を考慮するために、多重散乱の反射点を表わす変数ｘ，ｙを更に加えた８次元の関数として、ＢＳＳＲＤＦ（Bi-directional Surface Scattering Reflectance Distribution Function）も提案されている。このＢＳＳＲＤＦは、合計８個の変数（θＬ，φＬ，θＶ，φＶ，ｕ，ｖ，ｘ，ｙ）によって、特定の反射特性を定義する関数になる。
【０００６】
このような高次元画像として与えられるテクスチャデータは、通常、数値テーブルの形式で用意されるが、そのデータ容量は次元が高くなればなるほど膨大な量になる。そこで、このような高次元画像からなるテクスチャデータに対しては、データを圧縮して利用する技術が提案されている。たとえば、下記の特許文献１には、テクスチャデータに含まれる画像情報を、光源非依存画像と輝度マップとに分離してデータ量を圧縮する技術が開示されている。また、下記の特許文献２には、テクスチャデータを符号化して圧縮する技術が開示されている。
【非特許文献１】G. Muller, J. Meseth, M. Sattler, R. Sarlette and R. Klein 2004, Acquisition, Synthesis and Rendering of Bidirectional Texture Functions. In Eurographics 2004 STAR-State of The Art Report
【特許文献１】特開２００４−２３４２８５号公報
【特許文献２】特開２００４−２３４４７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述したとおり、高次元画像として与えられるテクスチャデータは、データ容量が膨大になるため、小規模なコンピュータシステムで取り扱うためには、これを圧縮することが不可欠になる。しかしながら、一般に、圧縮率向上と品質維持とは相反するファクターであり、圧縮率を高めれば、テクスチャデータの品質が劣化することになり、品質を維持しようとすれば、圧縮率が低下することになる。また、圧縮されたテクスチャデータを利用してレンダリングを行う場合には、これを部分的に展開する処理が必要になるが、従来提案されている圧縮手法で得られたテクスチャデータは、高速な展開処理を行うことが困難である。
【０００８】
そこで本発明は、高速な展開処理が可能であり、しかも圧縮率向上と品質維持とを可能な限り両立させることができるレンダリング用テクスチャデータの作成方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
(1)   本発明の第１の態様は、
Ｍ個の画素の集合からなり、個々の画素ごとに、光の入射方向および／または反射方向に関する角度に依存して定まる反射特性を示すテーブルが定義された原テクスチャデータを、コンピュータが読み込む原データ準備段階と、
コンピュータが、このＭ個の画素の中からＮ個（Ｎ＜Ｍ）の代表画素を定め、残りの（Ｍ−Ｎ）個の画素を一般画素とする代表画素決定段階と、
コンピュータが、個々の一般画素について、それぞれ自己の反射特性に近似した反射特性をもつ代表画素を近似代表画素として選択する近似代表画素選択段階と、
コンピュータが、原テクスチャデータ上のＭ個の画素のうち、Ｎ個の代表画素については、それぞれ自己の反射特性を示すテーブルを収録し、（Ｍ−Ｎ）個の一般画素については、選択された近似代表画素を示すデータを収録した圧縮テクスチャデータを作成するデータ圧縮段階と、
を有するレンダリング用テクスチャデータの作成方法において、
近似代表画素選択段階で、個々の代表画素について、原テクスチャデータによって定義されているテーブルの角度のパラメータを所定のオフセット量だけシフトさせることにより、複数のバリエーションをもったテーブルを定義し、これらのテーブルすべてを比較対象としたときに最も近似するテーブルを最近似テーブルと決定し、この最近似テーブルを派生させた代表画素を近似代表画素として選択し、
データ圧縮段階で、一般画素については、選択された近似代表画素を示すデータとともに、当該近似代表画素を選択する要因となった最近似テーブルについてのオフセット量を示すデータを収録した圧縮テクスチャデータを作成するようにしたものである。
【００１０】
(2)   本発明の第２の態様は、上述した第１の態様に係るレンダリング用テクスチャデータの作成方法において、
原データ準備段階で、光の入射方向および／または反射方向に関する角度を、所定範囲の角度を等分割して得られる複数通りの角度値によって表現したテーブルを読み込み、
近似代表画素選択段階で、個々の角度値に対して前記等分割された角度の整数倍に対応する所定のオフセット量を加算もしくは減算するシフトを行い、加算もしくは減算の結果、シフト後の角度値が所定範囲の一端から食み出してしまう場合には、食み出し分を所定範囲の他端からカウントするローテーションを行うようにしたものである。
【００１１】
(3)   本発明の第３の態様は、上述した第２の態様に係るレンダリング用テクスチャデータの作成方法において、
原データ準備段階で、テクスチャデータのマッピング対象となる仮想物体の表面上に、サンプル点Ｑと、このサンプル点Ｑの位置に立てた法線ｎと、サンプル点Ｑを含み法線ｎに直交する基準面Ｓと、サンプル点Ｑを通る基準面Ｓ上の基準線ζと、を定義し、サンプル点Ｑに入射する照明光と法線ｎとのなす角をθＬ、基準面Ｓ上への照明光の投影像と基準線ζとのなす角をφＬ、サンプル点Ｑから射出する反射光と法線ｎとのなす角をθＶ、基準面Ｓ上への反射光の投影像と基準線ζとのなす角をφＶとしたときに、「θＬ，φＬ，θＶ，φＶ」の関数として与えられる反射係数Ｋ（θＬ，φＬ，θＶ，φＶ）をテーブルとして定義した原テクスチャデータを読み込むようにしたものである。
【００１２】
(4)   本発明の第４の態様は、上述した第３の態様に係るレンダリング用テクスチャデータの作成方法において、
原データ準備段階で、０〜３６０°の角度範囲をα等分することにより、φＬの角度値をα通り設定し、φＶの角度値をα通り設定し、０〜９０°の角度範囲をβ等分することにより、θＬの角度値をβ通り設定し、θＶの角度値をβ通り設定し、個々の画素についてそれぞれ合計α２×β２通りの反射特性を示すテーブルを読み込むようにしたものである。
【００１３】
(5)   本発明の第５の態様は、上述した第４の態様に係るレンダリング用テクスチャデータの作成方法において、
近似代表画素選択段階で、Ｕφ＝３６０°／αなる式で与えられる単位角度Ｕφを定義し、φＬおよびφＶを、Δφ＝ｉ×Ｕφ（但し、ｉ＝０，１，２，…，α−１）なる式で与えられるα通りのオフセット量Δφだけそれぞれシフトさせた合計α２通りの組み合わせのバリエーションをもったテーブルを定義するようにしたものである。
【００１４】
(6)   本発明の第６の態様は、上述した第４の態様に係るレンダリング用テクスチャデータの作成方法において、
近似代表画素選択段階で、Ｕφ＝３６０°／αなる式で与えられる単位角度Ｕφを定義し、Ｕθ＝９０°／βなる式で与えられる単位角度Ｕθを定義し、φＬおよびφＶを、Δφ＝ｉ×Ｕφ（但し、ｉ＝０，１，２，…，α−１）なる式で与えられるα通りのオフセット量Δφだけそれぞれシフトさせるとともに、θＬおよびθＶを、Δθ＝ｊ×Ｕθ（但し、ｊ＝０，１，２，…，β−１）なる式で与えられるβ通りのオフセット量Δθだけそれぞれシフトさせた合計α２×β２通りの組み合わせのバリエーションをもったテーブルを定義するようにしたものである。
【００１５】
(7)   本発明の第７の態様は、上述した第１〜第６の態様に係るレンダリング用テクスチャデータの作成方法において、
原データ準備段階で、反射特性を示すデータとして、三原色ＲＧＢの波長をもった照明光それぞれについての反射率を示す数値をもったテーブルを読み込むようにしたものである。
【００１６】
(8)   本発明の第８の態様は、上述した第７の態様に係るレンダリング用テクスチャデータの作成方法において、
近似代表画素選択段階で、自己の反射特性を示すテーブルと比較対象となるテーブルとについて、対応する個々の反射率の差の二乗和が最小となるテーブルを最近似テーブルと決定するようにしたものである。
【００１７】
(9)   本発明の第９の態様は、上述した第１〜第８の態様に係るレンダリング用テクスチャデータの作成方法において、
原データ準備段階で、実在の物体に対して、種々の方向から照明光を照射した状態で、種々の方向から撮影を行い、得られた複数の撮影画像に基づいて用意された原テクスチャデータを読み込むようにしたものである。
【００１８】
(10)  本発明の第１０の態様は、上述した第１〜第８の態様に係るレンダリング用テクスチャデータの作成方法における代表画素決定段階、近似代表画素選択段階、データ圧縮段階をコンピュータに実行させるためのプログラムを用意したものである。
【００２０】
(11)  本発明の第１１の態様は、上述した第１〜第９の態様に係るレンダリング用テクスチャデータの作成方法によって作成された圧縮テクスチャデータを、三次元仮想物体の表面にマッピングし、これを所定の視点から観察したときに得られる投影画像を示す二次元データを生成するレンダリング方法において、
コンピュータが、三次元仮想物体の構造を示す物体データを入力する物体データ入力段階と、
コンピュータが、圧縮テクスチャデータを入力するテクスチャデータ入力段階と、
コンピュータが、オペレータの指示に基づいて、レンダリングに必要な照明環境、視点位置、マッピング態様、投影平面を定めるレンダリング条件を設定するレンダリング条件設定段階と、
コンピュータが、三次元仮想物体上の各サンプル点Ｑについて、当該サンプル点Ｑの位置にマッピングされる圧縮テクスチャデータ内の対応画素を決定する対応画素決定段階と、
コンピュータが、対応画素が代表画素であった場合には、当該代表画素について収録されているテーブルによって示される反射特性を利用して、サンプル点Ｑからの反射光を演算し、対応画素が一般画素であった場合には、「当該一般画素について収録されているデータによって示された近似代表画素」について収録されているテーブルを、「当該一般画素について収録されているデータによって示されたオフセット量」だけシフトして得られるテーブルによって示される反射特性を利用して、サンプル点Ｑからの反射光を演算する反射光演算段階と、
コンピュータが、各サンプル点Ｑからの反射光に基づいて、投影平面上に得られる投影画像を示す二次元データを生成する二次元データ生成段階と、
を行うようにしたものである。
【００２１】
(12)  本発明の第１２の態様は、
Ｍ個の画素の集合からなり、個々の画素ごとに、光の入射方向および／または反射方向に関する角度に依存して定まる反射特性を示すテーブルが定義された原テクスチャデータを入力してこれを格納する原データ格納部と、
Ｍ個の画素の中からＮ個（Ｎ＜Ｍ）の代表画素を定め、残りの（Ｍ−Ｎ）個の画素を一般画素とする代表画素決定部と、
個々の一般画素について、それぞれ自己の反射特性に近似した反射特性をもつ代表画素を近似代表画素として選択する近似代表画素選択部と、
Ｍ個の画素のうち、Ｎ個の代表画素については、それぞれ自己の反射特性を示すテーブルを収録し、（Ｍ−Ｎ）個の一般画素については、選択された近似代表画素を示すデータを収録した圧縮テクスチャデータを作成するデータ圧縮部と、
を備えるレンダリング用テクスチャデータの作成装置において、
近似代表画素選択部が、個々の代表画素について、原テクスチャデータによって定義されているテーブルの角度のパラメータを所定のオフセット量だけシフトさせることにより、複数のバリエーションをもったテーブルを定義し、これらのテーブルすべてを比較対象としたときに最も近似するテーブルを最近似テーブルと決定し、この最近似テーブルを派生させた代表画素を近似代表画素として選択し、
データ圧縮部が、一般画素については、選択された近似代表画素を示すデータとともに、当該近似代表画素を選択する要因となった最近似テーブルについてのオフセット量を示すデータを収録した圧縮テクスチャデータを作成するようにしたものである。
【００２２】
(13)  本発明の第１３の態様は、上述した第１２の態様に係るレンダリング用テクスチャデータの作成装置によって作成された圧縮テクスチャデータを、三次元仮想物体の表面にマッピングし、これを所定の視点から観察したときに得られる投影画像を示す二次元データを生成するレンダリング装置において、
三次元仮想物体の構造を示す物体データを入力してこれを格納する物体データ格納部と、
圧縮テクスチャデータを入力してこれを格納するテクスチャデータ格納部と、
レンダリングに必要な照明環境、視点位置、マッピング態様、投影平面を定めるレンダリング条件を設定するレンダリング条件設定部と、
三次元仮想物体上のサンプル点Ｑの位置にマッピングされる圧縮テクスチャデータ内の対応画素を決定する対応画素決定部と、
対応画素が代表画素であった場合には、当該代表画素について収録されているテーブルによって示される反射特性を利用して、サンプル点Ｑからの反射光を演算し、対応画素が一般画素であった場合には、「当該一般画素について収録されているデータによって示された近似代表画素」について収録されているテーブルを、「当該一般画素について収録されているデータによって示されたオフセット量」だけシフトして得られるテーブルによって示される反射特性を利用して、サンプル点Ｑからの反射光を演算する反射光演算部と、
各サンプル点Ｑからの反射光に基づいて、投影平面上に得られる投影画像を示す二次元データを生成する二次元データ生成部と、
を設けるようにしたものである。
【発明の効果】
【００２３】
本発明に係るレンダリング用テクスチャデータの作成方法によれば、圧縮率向上と品質維持とを、これまで以上に両立させた圧縮テクスチャデータを得ることが可能になり、しかも高速な展開処理が可能な圧縮テクスチャデータを得ることができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明を図示する実施形態に基づいて説明する。
＜＜＜  §１．レンダリング処理の基本概念  ＞＞＞
本発明は、コンピュータを用いたレンダリング処理に係るものであり、特に、表面に繊維シート（布などの繊維質材料からなるシート）を張り付けた三次元仮想物体についてのレンダリング処理に応用した場合に有用である。ここでは、説明の便宜上、従来の一般的なレンダリング処理の基本概念を説明しておく。
【００２５】
図１は、一般的なレンダリング処理の原理を示す斜視図である。この例は、三次元仮想物体１０を、視点Ｅから観察したときに、投影平面Ｈ上に二次元投影画像１５を求めるシェーディングモデルを示すものである。このとき、二次元画像として用意されているテクスチャデータ２０を、仮想物体１０の表面にマッピングした状態で、投影画像１５を求める演算が行われる。
【００２６】
このようなレンダリング処理を行うために、まず、仮想物体１０を示す物体データが用意される。たとえば、図示の例では、ＸＹＺ三次元座標系上に定義された多数のポリゴン（多角形）の集合として、仮想物体１０が表現されており、仮想物体１０の表面の各部は、それぞれポリゴンによって構成されている。したがって、仮想物体１０を示す物体データは、このポリゴンの集合体からなる三次元形状データということになり、仮想物体１０の実体は物体データということになる。以下、説明の文脈に応じて、これを仮想物体１０と呼んだり、物体データ１０と呼んだりする。
【００２７】
一方、テクスチャデータ２０は、ｕｖ二次元座標系上に定義された二次元画像データであり、二次元平面上に配列された多数の画素の集合体である。ここに示す例では、ハート型の絵柄模様が表現されている。もちろん、テクスチャデータ２０によって表現される模様は、必ずしも人為的に描かれた絵柄模様だけではなく、天然素材がもつ固有の陰影模様の場合もある。たとえば、無地の絨毯を表現するテクスチャデータには、人為的な模様は描かれていないが、絨毯の毛並みによる陰影模様が表現されていることになる。結局、このテクスチャデータ２０は、二次元平面上における反射特性の分布を示す反射特性データということができる。レンダリング処理を行う際には、このｕｖ座標系上に定義されたテクスチャデータ２０を、ＸＹＺ座標系上に定義された仮想物体１０の表面にマッピングし、仮想物体表面の各部の反射特性を決定することになる。
【００２８】
なお、テクスチャデータ２０は、たとえば、スキャナ装置やデジタルカメラなどを用いて、実在の繊維シートを撮影することによって用意することもできるし、ＣＧの技術を用いて、コンピュータ上で人為的に作成することもできる。
【００２９】
レンダリング処理にあたっては、この他、照明条件、視点位置、投影平面を設定する必要がある。照明条件としては、光源の種類（たとえば、形状、大きさ、波長特性など）や位置などを設定する。図示の例の場合、光源Ｇ、視点Ｅ、投影平面Ｈが図示の位置に設定されている。また、三次元仮想物体１０の表面に、どのようにして二次元テクスチャデータ２０をマッピングするかを示すマッピング態様（たとえば、相対的な位置や向き）も設定しておく必要がある。一方、投影平面Ｈ上には、ｘｙ二次元座標系が定義されており、投影画像１５（レンダリング処理の目的物として得られる二次元画像）は、このｘｙ座標系上の画像データとして得られることになる。
【００３０】
いま、図示のとおり、仮想物体１０上にサンプル点Ｑを定義し、このサンプル点Ｑから視点Ｅに向かう反射光Ｖを考える。この反射光Ｖは、光源Ｇからの照明光Ｌが、サンプル点Ｑで反射することにより得られる光であり、視点Ｅの位置で観察される光である。もっとも、ここでいう「反射」とは、「鏡面反射」のみでなく、「拡散反射」も含めた広い概念であり、サンプル点Ｑに様々な角度で入射する照明光がそれぞれ反射光として視点Ｅに向かうことになる。したがって、図示の反射光Ｖは、様々な角度から入射した照明光から得られる反射光の集まりというべきものになる。
【００３１】
１つのサンプル点Ｑから視点Ｅに向かう反射光Ｖと投影平面Ｈとの交点位置に、当該反射光Ｖの強度に応じた画素値をもつ画素Ｐを定義するようにし、仮想物体１０の表面上の多数のサンプル点から視点Ｅに向かう各反射光について、同様に、投影平面Ｈ上に画素を定義すれば、多数のサンプル点について定義された多数の画素の集合により、三次元仮想物体１０の二次元投影画像１５が投影平面Ｈ上に得られることになる。実用上は、予め投影平面Ｈ上に所望の解像度で画素配列を定義しておき、視点Ｅと個々の画素Ｐの代表点（たとえば、中心位置）とを結ぶ線を仮想物体１０上へと伸ばし、仮想物体表面との交点位置にサンプル点Ｑを定義し、上述した手法により、個々の画素Ｐの画素値を演算すれば、必要な解像度をもった二次元データを得ることができる。
【００３２】
このように、投影平面Ｈ上の画素Ｐの画素値を求めるためには、サンプル点Ｑから画素Ｐを通って視点Ｅに向かう反射光Ｖの強度を求める必要があるが、このような反射光Ｖの強度は、基本的に、サンプル点Ｑに入射する照明光Ｌの強度と、サンプル点Ｑにおける光の反射率（鏡面反射率や拡散反射率）とを考慮した演算によって求めることができる。もちろん、このとき、サンプル点Ｑを含むポリゴンの向きを考慮に入れた演算が行われ、サンプル点Ｑにマッピングされたテクスチャデータ２０（ｕｖ座標系上に定義された二次元画像データ）も考慮に入れた演算が行われる。したがって、仮想物体１０の表面が曲面であれば、当該曲面に応じた陰影をもった投影画像１５が得られることになり、テクスチャデータ２０が、図示のように、ハート型の絵柄の情報をもっていれば、投影画像１５上にも、このハート型の絵柄が表現されることになる（図１では、この絵柄の図示は省略）。
【００３３】
図２は、図１に示すレンダリング処理において、サンプル点Ｑからの反射光の強度を演算する最も単純な手法を示す斜視図である。図示のとおり、ＸＹＺ三次元座標系上の１点として定義されるサンプル点Ｑから視点Ｅに向かう反射光Ｖの強度Ｉ（Ｖ）は、
Ｉ（Ｖ）＝Ｋ・Ｉ（Ｌ）
なる式で表わされる。ここで、Ｉ（Ｌ）は照明光Ｌのサンプル点Ｑの位置における強度であり、Ｋは反射係数である。照明光Ｌの強度Ｉ（Ｌ）は、光源Ｇの輝度、光源Ｇとサンプル点Ｑとの距離、サンプル点Ｑが所属するポリゴンに対する照明光Ｌの入射角といったパラメータによって決定される。これに対して、反射係数Ｋは、テクスチャデータ２０によって決定される。そこで、まず、テクスチャデータ２０を仮想物体１０の表面に所定のマッピング態様でマッピングした場合に、サンプル点Ｑの位置が、テクスチャデータ２０のどの座標に対応するかを求め、当該対応座標に位置する画素Ｔ（ｕ，ｖ）を決定する。図２には、サンプル点Ｑに対応する画素Ｔ（ｕ，ｖ）の位置がＸ印で示されている。そして、この対応画素Ｔ（ｕ，ｖ）の画素値として定義されている値が、サンプル点Ｑの位置における反射係数Ｋになる。
【００３４】
テクスチャデータ２０として、カラー画像を用いる場合は、個々の原色ごとに、それぞれ所定の反射係数（反射率）が定義される。図３は、テクスチャデータ２０を構成する画素配列を示す平面図である。ここでは、図示の便宜上、６行８列の非常に小規模な画素配列を示しているが、実用上は、より大きな画素配列からなるテクスチャデータが用いられる。図の個々の正方形が１つの画素（一般的には、Texture Cellの意味で「テクセル」と呼ばれる）を示しており、画素Ｔ（ｕ，ｖ）は、座標値（ｕ，ｖ）で示される位置の画素に対応する。この例では、１つの画素Ｔ（ｕ，ｖ）の画素値として、３つの係数Ｋｒ，Ｋｇ，Ｋｂが定義されている。ここで、係数Ｋｒは原色Ｒ（赤）の波長成分をもった照明光についての反射率、係数Ｋｇは原色Ｇ（緑）の波長成分をもった照明光についての反射率、係数Ｋｂは原色Ｂ（青）の波長成分をもった照明光についての反射率である。
【００３５】
このようなカラー画像からなるテクスチャデータ２０をマッピングした場合、サンプル点Ｑからの反射光の強度は、光の各波長成分ごとに演算される。たとえば、反射光Ｖの赤色波長成分の強度Ｉｒ（Ｖ）は、照明光Ｌの赤色波長成分のサンプル点Ｑの位置における強度Ｉｒ（Ｌ）と、反射係数Ｋｒとを用いて、
Ｉｒ（Ｖ）＝Ｋｒ・Ｉｒ（Ｌ）
なる式で求めることができる。
【００３６】
＜＜＜  §２．高次元画像をテクスチャとして用いるモデル  ＞＞＞
§１では、テクスチャデータ２０として、二次元画像を用いた例を示した。このような二次元画像をマッピングするモデルでは、サンプル点Ｑの反射特性が、照明光の入射角や反射光の射出角に依存しないものとして取り扱っているが、パイル地のような三次元構造をもった繊維シートを物体表面に張り付けた場合、厳密には、照明光の入射角や反射光の射出角に依存した異方性反射の特性を考慮した取り扱いをしなければならない。
【００３７】
このように、光の入射方向や反射方向に関する角度に依存して、反射特性が異なるような取り扱いを行う基本的なモデルとして、ＢＲＤＦ（Bi-directional Reflectance Distribution Function）と呼ばれるモデルが提案されている。図４は、このＢＲＤＦモデルの原理を説明するための斜視図である。図示のとおり、仮想物体表面上のサンプル点Ｑの位置に法線ｎを立て、サンプル点Ｑを含み、法線ｎに直交する直交平面Ｓ（以下、基準面Ｓと呼ぶ）を定義する。そして、法線ｎと入射照明光Ｌとのなす角をθＬ、基準面Ｓ上への入射照明光Ｌの投影像Ｌ′とこの基準面Ｓ上のサンプル点Ｑを通る所定の基準線ζとのなす角度をφＬとし、入射照明光Ｌの向きを角度θＬおよび角度φＬの組み合わせで定義する。同様に、法線ｎと反射光Ｖとのなす角をθＶ、基準面Ｓ上への反射光Ｖの投影像Ｖ′と基準線ζとのなす角度をφＶとし、反射光Ｖの向きを角度θＶおよび角度φＶの組み合わせで定義する。いわば、角度θＬ，θＶは、入射照明光および反射光の仰角に相当する（本来の「仰角」は、水平面に対する角度を意味するので、角度θＬ，θＶは、厳密に言えば「９０°−仰角」であるが、ここでは、便宜上、単に「仰角」と呼ぶことにする）。また、角度φＬ，φＶは、入射照明光および反射光の方位角に相当する。
【００３８】
ここで、サンプル点Ｑにおける入射照明光Ｌの強度をＩ（Ｌ）としたとき、サンプル点Ｑからの反射光Ｖの強度Ｉ（Ｖ）を、θＬ，φＬ，θＶ，φＶの関数として与えられる反射係数Ｋ（θＬ，φＬ，θＶ，φＶ）を用いて、
Ｉ（Ｖ）＝Ｋ（θＬ，φＬ，θＶ，φＶ）・Ｉ（Ｌ）
なる式で求めるのが、ＢＲＤＦモデルである。このＢＲＤＦモデルの特徴は、反射係数Ｋを、入射照明光Ｌの向きを示すパラメータ「θＬ，φＬ」および反射光Ｖの向きを示すパラメータ「θＶ，φＶ」の関数として与える点にある。
【００３９】
このＢＲＤＦモデルに、テクスチャマッピングの概念を付加したものが、前掲の非特許文献１等に記載されているＢＴＦ（Bi-directional Texture Function）モデルである。ＢＴＦモデルでは、上記ＢＲＤＦモデルで用いた４つの角度パラメータに、更に、二次元ｕｖ座標系上での座標値（ｕ，ｖ）がパラメータとして加わることになり、サンプル点Ｑにおける入射照明光Ｌの強度をＩ（Ｌ）としたとき、サンプル点Ｑからの反射光Ｖの強度Ｉ（Ｖ）は、
Ｉ（Ｖ）＝Ｋ（θＬ，φＬ，θＶ，φＶ，ｕ，ｖ）・Ｉ（Ｌ）
なる式で与えられる。すなわち、図４に示す反射光Ｖの強度Ｉ（Ｖ）は、入射照明光Ｌがどの方向からサンプル点Ｑに照射され、反射光Ｖがサンプル点Ｑからどの方向に射出するか、という角度に関するパラメータに依存して定まるとともに、サンプル点Ｑの位置（ｕ，ｖ座標値）にも依存して定まるファクターということになる。
【００４０】
図５は、このＢＴＦモデルで用いる６次元テクスチャデータ２０の構造を示す平面図である。上述したとおり、このＢＴＦモデルにおいて、反射係数Ｋは、６次元の関数Ｋ（θＬ，φＬ，θＶ，φＶ，ｕ，ｖ）として定義されるパラメータであるから、この６次元テクスチャデータ２０自身は、６次元空間上に配置された多数の画素の集合から構成される６次元の画像データということになり、個々の画素が特定の反射係数Ｋに相当する画素値を有することになる。ただ、ここでは、説明の便宜上、図５に示す例のように、この６次元テクスチャデータ２０を、ｕｖ平面上の二次元画素配列として図示することにする。この場合、この二次元画素配列上の個々の画素Ｔ（ｕ，ｖ）には、４つのパラメータ「θＬ，φＬ，θＶ，φＶ」の関数として定まる反射係数Ｋ（θＬ，φＬ，θＶ，φＶ）がそれぞれ定義されていることになる。
【００４１】
ここで、反射係数Ｋ（θＬ，φＬ，θＶ，φＶ）は、θＬ，φＬ，θＶ，φＶをそれぞれ変数として含む何らかの関数式として定義することも可能であるが、実用上は、数値テーブルとして定義するのが一般的であり、本発明も、数値テーブルとして定義する取り扱いを行うことを前提としている。このように反射係数Ｋを数値テーブルとして定義する場合、角度のパラメータθＬ，φＬ，θＶ，φＶは連続量として取り扱うことはできないので、離散的な取り扱いを行わざるを得ない。
【００４２】
図６に、角度θＬの離散的な定義の一例を示す。上述したとおり、角度θＬは、サンプル点Ｑに入射する照明光Ｌの法線に対する角度を示すものである。図６には、サンプル点Ｑに対して、６通りの仰角をもって入射する照明光Ｌ１〜Ｌ６が描かれている。これら照明光Ｌ１〜Ｌ６の入射角θＬ１〜θＬ６は、図示のとおり、０°，１５°，３０°，４５°，６０°，７５°である。入射角（仰角）に関しては、このように１５°おきに６通りの角度を離散的に定義しておけば、実用上、ある程度の精度をもったテクスチャ表現が可能になる。
【００４３】
一方、図７には、角度φＬの離散的な定義の一例を示す。上述したとおり、角度φＬは、サンプル点Ｑに入射する照明光Ｌの基準面Ｓ上への投影像Ｌ′と基準線ζ（この例では、φＬ１＝０°の方向）とのなす角度であり、照明光Ｌの方位角を示すものである。図７には、サンプル点Ｑに対して、１２通りの方向から入射する照明光の方位角が描かれている。すなわち、図７の紙面は基準面Ｓに対応し、この基準面Ｓ上に、０°〜３６０°の範囲内の方位角が３０°おきに定義されている。方位角に関しては、このように３０°おきに１２通りの角度を離散的に定義しておけば、実用上、ある程度の精度をもったテクスチャ表現が可能になる。
【００４４】
以上、入射照明光Ｌに関する角度θＬ，φＬについての離散的定義例を示したが、反射光Ｖに関する角度θＶ，φＶについても同様の定義を行うことができる。すなわち、角度θＶに関しては、０°，１５°，３０°，４５°，６０°，７５°という６通りの離散的定義を行い、角度φＶに関しては、０°〜３６０°の範囲内の方位角を３０°おきに定義すればよい。
【００４５】
このような離散的な定義を行うと、角度θＬおよびθＶはそれぞれ６通りの値をとり、角度φＬおよびφＶはそれぞれ１２通りの値をとることになるので、これら４つの角度の組み合わせは、６×１２×６×１２＝５１８４通りということになる。したがって、図５に示すテクスチャデータ２０の１つの画素Ｔ（ｕ，ｖ）に定義される反射係数Ｋは、それぞれの角度値の組み合わせに応じて５１８４通りの値をとることになる。
【００４６】
この５１８４通りの反射係数Ｋの値は、反射特性を示すテーブルＲ（ｕ，ｖ）として用意することができる。図８は、このような反射特性を示すテーブルＲ（ｕ，ｖ）を用いて定義したテクスチャデータ２０の構成例を示す平面図である。この例では、ｕｖ座標系上の二次元画素配列としてテクスチャデータ２０が定義されているが、個々の画素Ｔ（ｕ，ｖ）には、それぞれ図示するような反射特性を示すテーブルＲ（ｕ，ｖ）が定義されている。このテーブルＲ（ｕ，ｖ）は、６通りの角度θＬ（θＬ１〜θＬ６）、１２通りの角度φＬ（φＬ１〜φＬ１２）、６通りの角度θＶ（θＶ１〜θＶ６）、１２通りの角度φＶ（φＶ１〜φＶ１２）のすべての組み合わせ（５１８４通りの組み合わせ）について、それぞれ３つの反射係数Ｋｒ，Ｋｇ，Ｋｂを定義するものである。ここで、各係数Ｋｒ，Ｋｇ，Ｋｂは、前述したとおり、照明光の各原色波長成分についての反射率を示す値である。
【００４７】
この図８に示すようなテクスチャデータ２０を用いたＢＴＦモデルによるレンダリング処理は、次のようにして行われる。まず、図１に示すように、三次元仮想物体１０の表面に、このテクスチャデータ２０をマッピングし、サンプル点Ｑの位置に対応する画素Ｔ（ｕ，ｖ）を決定する。次に、光源Ｇの位置やサンプル点Ｑが所属するポリゴンの向きなどを考慮することにより、サンプル点Ｑに入射する照明光Ｌの角度θＬ，φＬ、サンプル点Ｑから射出する反射光Ｖの角度θＶ，φＶを決定する。なお、基準線ζの方向は、たとえば、「ｕ軸のマッピング方向」のように予め定めておけばよい。そして、図８に示す画素Ｔ（ｕ，ｖ）についての反射特性を示すテーブルＲ（ｕ，ｖ）を参照して、特定の角度θＬ，φＬ，θＶ，φＶの組み合わせに対応する３つの反射係数Ｋｒ，Ｋｇ，Ｋｂを求める。最後に、これら３つの反射係数Ｋｒ，Ｋｇ，Ｋｂに基づいて、反射光Ｖの各原色成分ごとの強度値を求め、投影面Ｈ上の画素Ｐの画素値を決定すればよい。
【００４８】
＜＜＜  §３．従来のベクトル量子化によるデータ圧縮方法  ＞＞＞
さて、§２で述べたＢＴＦモデルなど、高次元画像をテクスチャとして用いるモデルの場合、テスクチャデータ２０のデータ容量は膨大なものとなる。図８に示すテクスチャデータ２０は、図示の便宜上、ｕｖ座標系上に６行８列の画素配列をもった小規模のものとなっているが、実用上はより大きな画素配列が用いられる。
【００４９】
たとえば、ｕｖ座標系上に５１２行５１２列の画素配列をもったテクスチャデータのデータ容量を考えてみよう。この場合、二次元画素配列上に定義される画素の総数は（５１２×５１２）個となる。二次元画像をテクスチャとして用いるモデルの場合、個々の画素には、３つの反射係数Ｋｒ，Ｋｇ，Ｋｂの値を定義するだけでよいので、１つの係数の値を１バイトで表現したとすると、テスクチャデータ２０のデータ総容量は、（５１２×５１２×３）バイトで足りる。これは、一般的なパソコンの実装メモリ空間に十分展開可能な容量である。
【００５０】
ところが、上述したＢＴＦモデルなど、高次元画像をテクスチャとして用いるモデルでは、個々の画素のそれぞれに、たとえば、図８に示すような反射特性を示すテーブルＲ（ｕ，ｖ）を収容する必要がある。ここで、角度θＬ，θＶについては、図６に示すように６通りの離散的な角度を定義し、角度φＬ，φＶについては、図７に示すように１２通りの離散的な角度を定義し、４通りの角度の組み合わせごとに、それぞれ１バイトで表現した反射係数Ｋｒ，Ｋｇ，Ｋｂを定義したとすると、テスクチャデータ２０のデータ総容量は、（５１２×５１２×６×１２×６×１２×３）バイトとなる。これは４Ｇバイトを越える容量であり、一般的なパソコンの場合、実装メモリ空間に展開することが困難な容量である。もちろん、ｕｖ座標系上に定義する二次元画素配列のサイズをより大きくしたり、離散的な角度定義をより細かくしたりすれば、テスクチャデータ２０のデータ総容量は更に増加する。
【００５１】
したがって、図１に示すようなレンダリング処理を、一般的なパソコン等のシステムで実行する場合、ＢＴＦモデルなどの高次元画像からなるテスクチャデータ２０をそのまま利用することはできない。このため、前掲の特許文献１，２などには、高次元画像からなるテスクチャデータ２０を圧縮して利用する技術が提案されている。高次元画像の圧縮には、通常、ベクトル量子化という手法が利用される。たとえば、図８に示すＢＴＦモデルの場合、図の下半分に示された１つの画素についての反射特性を示すテーブルＲ（ｕ，ｖ）は、４つの変数（θＬ，φＬ，θＶ，φＶ）のすべての組み合わせ（５１８４通りの組み合わせ）について、それぞれ特定の反射係数を定義するテーブルであるので、数学的には、５１８４本の互いに直交する座標軸をもった５１８４次元の座標系上に定義された１本のベクトルと等価である。したがって、図の上半分に示された４８個の画素をもつテクスチャデータ２０は、この５１８４次元の座標系上に定義された４８本のベクトルとして表現することができる。そこで、この４８本のベクトルのうちのいくつかを代表ベクトルと定め、それ以外のベクトルについては、最も近似する代表ベクトル（５１８４次元座標空間上におけるユークリッド距離が最小の代表ベクトル）に置き換えることにより、データの総容量を減少させることができる。これがベクトル量子化によるデータ圧縮の基本概念である。
【００５２】
図９は、このようなベクトル量子化の概念に基づく高次元テクスチャデータの圧縮原理を示す平面図である。圧縮前の原テクスチャデータ２０は、図８に示すように、合計４８個の画素Ｔ（ｕ，ｖ）のすべてについて、反射特性を示すテーブルＲ（ｕ，ｖ）が収録されている。これに対して、図９に示す圧縮テクスチャデータ２５では、合計４８個の画素のうち、４個の画素Ｔ１，Ｔ２，Ｔ３，Ｔ４を代表画素と定め、残りの４４個の画素を一般画素と定めている。そして、この４個の代表画素Ｔ１，Ｔ２，Ｔ３，Ｔ４については、それぞれ反射特性を示すテーブルＲ１，Ｒ２，Ｒ３，Ｒ４（図８に示すテーブルＲ（ｕ，ｖ）と同等のテーブル）が収録されているが、残りの一般画素、たとえば、第ｉ番目の一般画素Ｔｉについては、テーブルＲｉを収録する代わりに、テーブルＲｉに最も近似するテーブルを収録した近似代表画素（代表画素Ｒ１〜Ｔ４のいずれか）を示すデータが収録されている。
【００５３】
たとえば、一般画素Ｔｉに本来収録すべきテーブルＲｉと、４つの代表画素に収録されているテーブルＲ１〜Ｒ４とをそれぞれ比較した結果、テーブルＲ３が最も近似していると判断された場合には、一般画素Ｔｉには、近似代表画素Ｔ３を示すデータが収録されることになる。このような手法を利用すれば、図８に示すような原テクスチャデータ２０に基づいて、図９に示すような圧縮テクスチャデータ２５を作成することが可能であり、圧縮後のデータ容量を大幅に低減させることができる。すなわち、圧縮テクスチャデータ２５では、４つの代表画素Ｔ１〜Ｔ４についてのみ、データ容量の大きなテーブルを収容すれば足り、残りの４４個の一般画素については、近似代表画素を示すデータのみを収容すればよい。
【００５４】
このような圧縮テクスチャデータ２５は、一般的なパソコンの実装メモリ空間に展開することが可能になるので、実用上、パソコンにおいてもレンダリング処理が可能になる。この圧縮テクスチャデータ２５を利用して、所定のサンプル点Ｑの位置における反射特性を求めるために、代表画素の位置を参照する必要がある場合には、当該代表画素に収録された反射特性を示すテーブルをそのまま利用すればよい。一方、一般画素の位置を参照する必要がある場合には、当該一般画素に収録されたデータから当該一般画素についての近似代表画素を認識し、この近似代表画素に収録された反射特性を示すテーブルを代用すればよい。
【００５５】
もちろん、このようなデータ圧縮を行うと、テクスチャデータ自身の品質は低下することになる。これは、一般画素Ｔｉについては、本来のテーブルＲｉの代わりに、近似代表画素のテーブル（たとえば、Ｒ３）を代用することになるので、本来の正しい反射特性ではない近似的な特性が用いられるからである。テクスチャデータの品質を維持するためには、画素の総数に対する代表画素の割合を高める必要がある。代表画素が増えれば増えるほど、一般画素の本来のテーブルに対して、より近似したテーブルをもつ近似代表画素が選択される可能性が高まるからである。しかしながら、代表画素の割合を増やせば増やすほど、圧縮率が低下することになる。結局、従来提案されている圧縮方法では、圧縮率向上と品質維持とを両立させることができない。本発明は、このような課題を解決するための新規な技術を提案するものである。
【００５６】
＜＜＜  §４．本発明の基本的着眼点  ＞＞＞
本発明は、§２で述べたＢＴＦモデル用のテクスチャデータに代表されるように、個々の画素ごとに、光の入射方向や反射方向といった角度に依存して定まる反射特性を示すテーブルが定義されたテクスチャデータの効率的な圧縮方法を提案するものである。まず、この圧縮方法の着眼点を説明する。
【００５７】
いま、図１０の側面図に示すような表面構造をもった実在の繊維シート３０を考える。この繊維シート３０の表面には、図示のとおり、毛並繊維３１，３２，３３が植毛されているものとする。たとえば、絨毯やカーペットなどは、図示のような繊維シート３０の代表格である。ここでは、説明の便宜上、この繊維シート３０上の領域Ａの部分に植毛されている毛並繊維３１は斜め左方向に傾斜した状態となっており、領域Ｂの部分に植毛されている毛並繊維３２は垂直上方を向いており、領域Ｃの部分に植毛されている毛並繊維３３は斜め右方向に傾斜した状態となっているものとする。
【００５８】
さて、この実在の繊維シート３０に基づいて、図８に示すような原テクスチャデータ２０を用意し、これを圧縮して、図９に示すような圧縮テクスチャデータ２５を作成することを考えてみよう。
【００５９】
まず、原テクスチャデータ２０を作成するには、実在の繊維シート３０に対して、様々な方向から照明光を照射し、これを様々な方向から撮影することにより多数の撮影画像を収集する。そして、繊維シート３０上の同一位置に関する個々の撮影画像の画素値に基づいて、当該位置の「角度に依存した反射特性」を求めればよい。たとえば、図１０にＴ１と記された位置についての反射特性は、様々な撮影条件で収集された多数の撮影画像におけるＴ１に対応する位置の画素値により決定することができる。こうして、図１０にＴ１，Ｔ２，Ｔｉと記された位置には、それぞれ固有の反射特性を示すテーブルＲ１，Ｒ２，Ｒｉが定義されることになり、このような固有の反射特性を示すテーブルが定義された多数の画素の集合によって原テクスチャデータ２０が構成されることになる。
【００６０】
続いて、この原テクスチャデータ２０を構成するＭ個の画素の中からＮ個（Ｎ＜Ｍ）の代表画素を定め、残りの（Ｍ−Ｎ）個の画素を一般画素とし、この一般画素については、近似代表画素を選択することにより、圧縮テクスチャデータ２５を作成する。ここでは、図１０に示す繊維シート３０上のＴ１と記された位置に対応する画素が代表画素Ｔ１として選択され、Ｔ２と記された位置に対応する画素が代表画素Ｔ２として選択されたものとし、Ｔｉと記された位置に対応する画素は一般画素Ｔｉとして残ったものとしよう。この場合、代表画素Ｔ１，Ｔ２については、原テクスチャデータ２０に定義されているテーブルＲ１，Ｒ２がそのまま用いられることになるが、一般画素Ｔｉについては、原テクスチャデータ２０に定義されているテーブルＲｉの代わりに、代表画素Ｔ１，Ｔ２についてのテーブルＲ１，Ｒ２のうち、より近似している方を代用することになる。
【００６１】
図１０に示す例では、上述したとおり、領域Ａの毛並繊維３１は斜め左方向に伸び、領域Ｂの毛並繊維３２は垂直上方に伸び、領域Ｃの毛並繊維３３は斜め右方向に伸びている。このような場合、通常は、代表画素Ｔ２のテーブルＲ２の方が、代表画素Ｔ１のテーブルＲ１よりも、一般画素ＴｉについてのテーブルＲｉに対する近似度が高くなると考えられる。これは、領域Ｃの毛並繊維３３が斜め右方向に伸びているのに対して、領域Ａの毛並繊維３１は逆方向である斜め左方向に伸びているため、垂直上方に伸びた毛並繊維３２をもつ領域Ｂの方が反射特性に関する近似度が高くなると考えられるからである。
【００６２】
図１１は、これら３つの領域Ａ，Ｂ，Ｃ内の画素Ｔ１，Ｔ２，Ｔｉについて、原テクスチャデータ２０に定義されている反射特性を示すテーブルＲ１，Ｒ２，Ｒｉの相関関係を示す平面図である。なお、図８では、θＬ，φＬ，θＶ，φＶの４つの角度の組み合わせについてのテーブルＲ（ｕ，ｖ）を例示したが、図１１では、図示の便宜上、仰角θＬ，θＶが特定の角度に固定されているものとして、方位角φＬ，φＶの組み合わせについてのテーブルのみを示すことにする。すなわち、図１１に示すテーブルＲ１，Ｒ２，Ｒｉは、たとえば、図８に示すテーブルＲ（ｕ，ｖ）におけるθＬ１，θＶ１に対応する部分のみを抜き出した部分テーブルであり、ここには、それぞれ１２通りのφＬ（φＬ１〜φＬ１２）と、１２通りのφＶ（φＶ１〜φＶ１２）との組み合わせによって、合計１４４通りの反射特性が定義されている。
【００６３】
圧縮テクスチャデータ２５を作成する場合、代表画素Ｔ１，Ｔ２については、図示されているテーブルＲ１，Ｒ２をそのまま用いることができるが、一般画素Ｔｉについては、本来のテーブルＲｉ（原テクスチャデータ２０に収録されているテーブル）の代わりに、テーブルＲ１，Ｒ２のうちのいずれか近似度の高いテーブルを代用しなければならない。そして、従来提案されている一般的な圧縮方法によると、上述したとおり、テーブルＲｉとテーブルＲ２との近似度の方が、テーブルＲｉとテーブルＲ１との近似度よりも高くなるため、テーブルＲｉに最も近似するテーブルはテーブルＲ２ということになる。その結果、圧縮テクスチャデータ２５では、図示された領域Ｃの一般画素Ｔｉについては、代表画素Ｔ２のテーブルＲ２を代用することを示すデータが収録されることになる。
【００６４】
実際、図１０に示す領域Ａ，Ｂ，Ｃの毛並繊維３１，３２，３３の向きを考慮すると、斜め右方向に伸びている毛並繊維３３が植毛された領域Ｃの反射特性としては、全く逆方向に伸びている毛並繊維３１が植毛された領域Ａの反射特性を代用するよりも、垂直上方に伸びている毛並繊維３２が植毛された領域Ｂの反射特性を代用した方が好ましいと考えられる。また、図１１において、テーブルＲｉ−Ｒ１間の近似度と、テーブルＲｉ−Ｒ２間の近似度と、を定量的に評価すれば、後者の方が前者より高くなるであろう。したがって、従来の一般的な圧縮方法では、代表画素Ｔ２が一般画素Ｔｉについての近似代表画素として選出されることになる。
【００６５】
ところが、本願発明者は、図１０において、領域Ａに植毛されている毛並繊維３１の方位角（毛並繊維３１を繊維シート３０のシート面上に投影したときの向きを示す角度、図７に示す０〜３６０°の角度に相当）を１８０°だけシフトさせると、領域Ｃに植毛されている毛並繊維３３と同じ向きになる点に着目した。すなわち、毛並繊維３１の左方への傾斜角と毛並繊維３３の右方への傾斜角とが等しかったとすると、方位角を１８０°シフトさせた毛並繊維３１は、毛並繊維３３と完全に一致することになる。別言すれば、図１０において、Ｔｉの位置に所定の方位角φＬの方向から照明光Ｌを照射したときに、所定の方位角φＶの方向に射出する反射光Ｖの反射特性は、Ｔ１の位置に所定の方位角（φＬ＋１８０°）の方向から照明光Ｌを照射したときに、所定の方位角（φＶ＋１８０°）の方向に射出する反射光Ｖの反射特性と等価になる。
【００６６】
そこで、領域Ａの代表画素Ｔ１について定義されているテーブルＲ１の方位角φＬおよびφＶを１８０°だけシフトさせることにより、新たなテーブルを定義する。図１２の左側に示すテーブルＲ１＊は、このようにして定義されたテーブルである。ここで、このテーブルＲ１＊の列見出し「φＬ７」，「φＬ８」，…は、図１１の左側に示すテーブルＲ１の列見出し「φＬ７」，「φＬ８」，…（図１１では、「φＬ７」，「φＬ８」の図示は省略されている）に対応し、テーブルＲ１＊の行見出し「φＶ７」，「φＶ８」，…は、図１１の左側に示すテーブルＲ１の行見出し「φＶ７」，「φＶ８」，…（図１１では、「φＶ７」，「φＶ８」の図示は省略されている）に対応する。
【００６７】
二つのテーブルＲ１，Ｒ１＊において、同一の見出しで特定される行や列のコンテンツは同一である。別言すれば、見出しが同じ行や列は、コンテンツも同じになるように、テーブルコンテンツのシフトが行われている。たとえば、テーブルＲ１＊の列見出し「φＬ７」で示される第１列目のコンテンツは、テーブルＲ１の列見出し「φＬ７」で示される第７列目のコンテンツに一致し（行は入れ替わっている）、テーブルＲ１＊の行見出し「φＶ７」で示される第１行目のコンテンツは、テーブルＲ１の行見出し「φＬ７」で示される第７行目のコンテンツに一致する（列は入れ替わっている）。より具体的に説明すれば、テーブルＲ１およびＲ１＊は、いずれも１２行１２列の表であるが、テーブルＲ１＊の１行１列目のセル（左上のセル）の内容は、テーブルＲ１の７行７列目のセルの内容に等しい。このようなテーブルＲ１＊を作成すれば、テーブルＲｉに最も近似するテーブルは、テーブルＲ２ではなく、テーブルＲ１＊ということになる。
【００６８】
結局、図１０に示す例において、一般画素Ｔｉについての近似代表画素を選出する場合、従来どおりの手法を採れば、代表画素Ｔ２が近似代表画素として選出されることになるが、方位角のシフトという本発明に係る手法を採れば、「方位角を１８０°シフトさせる」という条件を加味することにより、代表画素Ｔ１を近似代表画素として選出することが可能になる。この場合、一般画素Ｔｉについては、テーブルＲｉを収録する代わりに、「代表画素Ｔ１」という情報と「方位角を１８０°シフト」という情報を収録しておけばよい。実際のレンダリング処理において、一般画素Ｔｉが参照された場合には、この収録された情報に基づいて、「代表画素Ｔ１」に収録されているテーブルＲ１を抽出した後「方位角を１８０°シフト」させる処理を施してテーブルＲ１＊を作成し、このテーブルＲ１＊を用いて反射特性を決定すればよい。
【００６９】
＜＜＜  §５．本発明によるデータ圧縮方法の基本理念  ＞＞＞
以上、§４では、図１０に示す毛並繊維３１，３３の傾斜方向が逆向きの関係にあることを利用して、「方位角を１８０°シフトさせる」という条件付きで代表画素Ｔ１を一般画素Ｔｉの近似代表画素として選出すると、うまくゆく例を示した。しかしながら、実際には、必ずしもこのような最適な代表画素が存在するとは限らない。そこで実用上は、方位角のシフト量（以下、オフセット量と呼ぶ）を複数通り設定しておき、個々の代表画素についてのテーブルを、これら複数通りのオフセット量だけシフトさせることにより、複数のバリエーションをもったテーブルを定義し、これらのテーブルすべてを比較対象としたときに最も近似するテーブルを最近似テーブルと決定し、この最近似テーブルを派生させた代表画素を近似代表画素として選択すればよい。
【００７０】
図１３は、照明光Ｌの方位角φＬを所定のオフセット量だけシフトさせることにより、テーブルのコンテンツをローテーションさせ、複数のバリエーションをもったテーブルを定義する原理を示す平面図である。図１３(a) が「もとのテーブル」であるとすると、図１３(b) は、φＬを３０°シフトしたテーブルに相当する。この例では、φＶについてのシフトは行われていない。ここで、列見出しに着目すると、図１３(a) のテーブルでは、第１列目の列見出しが「φＬ１」であり、以下、「φＬ２」，「φＬ３」，…と続き、第１２列目の列見出しが「φＬ１２」となっているのに対して、図１３(b) のテーブルでは、第１列目の列見出しが「φＬ２」であり、以下、「φＬ３」，「φＬ４」，…と続き、第１２列目の列見出しが「φＬ１」となっている。
【００７１】
結局、図１３(a) に示す「もとのテーブル」において、第１列目のコンテンツをそっくり第１２列目へとまわし、第２列目のコンテンツを第１列目へと移動し、第３列目のコンテンツを第２列目へとまわし、…とそれぞれ１列分だけ左方向へローテーションシフトさせると、図１３(b) に示すテーブル（φＬをオフセット量３０°だけシフトしたテーブル）が得られることになる。同様に、図１３(a) に示す「もとのテーブル」のコンテンツを、それぞれ２列分だけ左方向へローテーションシフトさせると、図１３(c) に示すテーブル（φＬをオフセット量６０°だけシフトしたテーブル）が得られる。以下、図１３(d) 〜図１３(l) の各テーブルは、図１３(a) に示すテーブルを基準として、方位角φＬをオフセット量９０°〜３３０°だけシフトしたテーブルを示している。
【００７２】
このように、方位角φＬを３０°刻みのオフセット量でそれぞれローテーションシフトさせることにより、図示のとおり、合計１２通りのバリエーションをもったテーブルが得られる。これら１２通りのテーブルは、いずれも同一のデータをコンテンツとして含んでいるが、「各データをどの列に含んでいるか」が互いに異なることになる。
【００７３】
この図１３では、入射する照明光Ｌの方位角φＬを３０°刻みのオフセット量でそれぞれローテーションシフトさせたものであり、射出する反射光Ｖの方位角φＶについてのシフトは行っていないが、実際には、この図１３(a) 〜(l) に示す個々のテーブルについて、それぞれ反射光Ｖの方位角φＶを３０°刻みのオフセット量でそれぞれローテーションシフトさせたバリエーションも作成する。たとえば、図１３(a) のテーブルにおいて、第１行目のコンテンツをそっくり第１２行目へとまわし、第２行目のコンテンツを第１行目へと移動し、第３行目のコンテンツを第２行目へとまわし、…とそれぞれ１行分だけ上方向へローテーションシフトさせると、φＶをオフセット量３０°だけシフトしたテーブルが得られることになる。図１２の左側に示すテーブルＲ１＊は、図１３(g) に示す「φＬを１８０°シフトしたテーブル」に対して、更に「φＶを１８０°シフト」することにより得られたテーブルということになる。
【００７４】
このように、図１３(a) に示す「もとのテーブル」に対して、方位角φＬを３０°刻みのオフセット量でそれぞれローテーションシフトさせることにより、図１３(a)〜(l) に示す１２通りのバリエーションを作成し、これら１２通りのバリエーションのそれぞれに対して、更に方位角φＶを３０°刻みのオフセット量でそれぞれローテーションシフトさせたバリエーションを作成すると、図１３(a) に示すもとのテーブルから派生した合計１４４通りのバリエーションが得られることになる。図１２の左側に示すテーブルＲ１＊は、この１４４通りのバリエーションのうちの１つである。
【００７５】
本発明によるデータ圧縮方法の基本理念は、たとえば、図１１に示すように２つの代表画素Ｔ１，Ｔ２が定められた場合に、これら代表画素について定義されているテーブルＲ１，Ｒ２の角度のパラメータφＬ，φＶをそれぞれ様々なオフセット量だけシフトさせることにより、複数のバリエーションをもったテーブルを定義し、一般画素ＴｉについてのテーブルＲｉに最も近似しているテーブルを見つける際に、これら複数のバリエーションのすべてを比較対象とする、という点にある。図１１に示す単純な例の場合、従来の方法では、テーブルＲｉに最も近似するテーブルの候補は、テーブルＲ１，Ｒ２のわずか２候補しかないが、本発明の方法では、上述した方法によりバリエーションを生じさせることにより、テーブルＲ１から派生したテーブルが１４４種類、テーブルＲ２から派生したテーブルが１４４種類、合計２８８種類の候補が得られる。
【００７６】
もちろん、このようなバリエーションを生じさせた候補の中から、テーブルＲｉに最も近似するテーブルを選択した場合、テーブルＲｉに代用するテーブルを指定するためには、どの代表画素についてのテーブルから派生したどのバリエーションであるかを特定する必要がある。したがって、従来の方法では、たとえば図１１に示す一般画素Ｔｉについては、「近似代表画素Ｔ２」を示す情報を収録しておけば足りるが、本発明の方法では、たとえば図１２に示す一般画素Ｔｉについては、「近似代表画素Ｔ１」を示す情報に加えて、「φＬのオフセット量１８０°、φＶのオフセット量１８０°」というオフセット量を示す情報も収録しておく必要がある。もっとも、このようなオフセット量を示す情報のデータ容量は、テーブルＲｉ全体のデータ容量に比べれば極めて小さいため、テクスチャデータの圧縮方法として、従来の方法の代わりに本発明の方法を採っても、データの圧縮率はほとんど低下することはない。
【００７７】
一方、圧縮後のテクスチャデータの品質に着目すると、本発明の方法により得られた圧縮テクスチャデータの品質は、従来の方法により得られた圧縮テクスチャデータの品質よりも格段に向上することは明らかである。上述の例の場合、従来の方法では、テーブルＲｉの代用候補がテーブルＲ１，Ｒ２のわずか２種類であるのに対し、本発明の方法では、候補数は２８８種類と飛躍的に増加するので、当然、代用されるテーブルの近似度も向上し、大幅な品質向上が見込まれる。そのため、本発明の方法を採れば、代表画素の数を多少減らしたとしても、従来の方法よりも高い品質をもった圧縮テクスチャデータを得ることも可能である。
【００７８】
たとえば、図９に示す例では、合計４８個の画素の中から４個の画素Ｔ１〜Ｔ４を代表画素として定め、残りの４４個の一般画素Ｔｉについては、４通りのテーブルＲ１〜Ｒ４のいずれかを代用することによりデータ量を圧縮していたが、本発明の方法を採れば、代表画素の数を３個に減らしたとしても、従来の方法よりも高い品質をもった圧縮テクスチャデータを得ることが期待できる。たとえば、代表画素がＴ１〜Ｔ３の３つしかなくても、これら代表画素のテーブルＲ１〜Ｒ３について、それぞれ１４４通りのバリエーションを作成すれば、代用テーブルの候補は４３２種類にも増大することになり、従来の方法の場合の３種類の候補に比べて飛躍的に向上する。
【００７９】
結局、本発明に係る圧縮方法を採用すれば、従来よりも少ない代表画素で対応することが可能になり、全体的な圧縮率の向上を図ることができ、しかも従来より高い品質をもった圧縮テクスチャデータを作成することが可能になる。また、圧縮や展開は、テーブルコンテンツのシフト動作で行うことができるので、高速な展開処理が可能になる。
【００８０】
なお、図１１〜図１３では、図示の便宜上、特定の仰角θＬ，θＶについてのテーブルのみを示したが、実際には、これらの各テーブルは、ＢＴＦモデルにおけるテクスチャデータを構成する１画素に定義された反射特性を示すテーブルの一部分のみを抜き出して示した部分テーブルである。ＢＴＦモデルの場合、１画素に定義される反射特性を示す本来のテーブルは、図８に示すテーブルＲ（ｕ，ｖ）のように、７２行７２列のサイズのマトリックスになる。図１１〜図１３に示すテーブルは、この図８に示すテーブルＲ（ｕ，ｖ）において、たとえば、θＬ１，θＶ１に対応する部分（左上の一部分）のみを抜き出した部分テーブル（１２行１２列のサイズのマトリックス）に相当する。
【００８１】
したがって、実際には、バリエーションを派生させるための「もとのテーブル」は、図１３(a) に示す部分テーブルではなく、図８に示すようなテーブルＲ（ｕ，ｖ）ということになる。そして、たとえば、φＬを３０°シフトさせたテーブルは、図１３(b) に示す部分テーブルではなく、図１４に示すようなテーブルということになる。図１３(b) に示す部分テーブルは、この図１４に示すテーブルにおいて、たとえば、θＬ１，θＶ１に対応する部分（左上の一部分）のみを抜き出したものに相当する。
【００８２】
もっとも、図１４に示すテーブルにおいて、「θＬ２，θＶ１」に該当する部分テーブルに着目すると、やはり第１列目の列見出しが「φＬ２」であり、以下、「φＬ３」，「φＬ４」，…と続き、第１２列目の列見出しが「φＬ１」となっている。したがって、図８に示すもとのテーブルの「θＬ２，θＶ１」に該当する部分テーブルにおいて、第１列目のコンテンツをそっくり第１２列目へとまわし、第２列目のコンテンツを第１列目へと移動し、第３列目のコンテンツを第２列目へとまわし、…とそれぞれ１列分だけ左方向へローテーションシフトさせることにより、図１４に示す「θＬ２，θＶ１」に該当する部分テーブルが得られることになる。他の部分テーブルについても全く同様である。
【００８３】
一方、図１５は、図８に示すテーブルＲ（ｕ，ｖ）を「もとのテーブル」として、φＶを３０°シフトさせたテーブルである。このテーブルも、個々の部分テーブルごとに、第１行目のコンテンツをそっくり第１２行目へとまわし、第２行目のコンテンツを第１行目へと移動し、第３行目のコンテンツを第２行目へとまわし、…とそれぞれ１行分だけ上方向へローテーションシフトさせることにより得られる。
【００８４】
結局、図９に示す例のように、４つの代表画素Ｔ１〜Ｔ４を定義した場合、これら各代表画素についてのテーブルＲ１〜Ｒ４は、実際には、それぞれが図８に示すようなサイズ（７２行７２列のマトリックス）のテーブルＲ（ｕ，ｖ）ということになる。そこで、これら各テーブルＲ１〜Ｒ４について、それぞれ同じサイズの１４４通りのバリエーションが作成されることになる。図１４，図１５に示すテーブルは、この１４４通りのバリエーションの１つである。一方、一般画素Ｔｉについても、同様に、７２行７２列のマトリックスからなるテーブルＲｉが用意されており、図９に示すように４つの代表画素を定義した場合、１４４×４通りの候補の中から、このテーブルＲｉに最も近似するテーブルが選択されることになる。
【００８５】
＜＜＜  §６．本発明に係るテクスチャデータの作成方法の基本手順  ＞＞＞
続いて、図１６の流れ図を参照しながら、本発明に係るレンダリング用テクスチャデータの作成方法の基本手順を説明する。なお、この基本手順において、ステップＳ１１は、必ずしもコンピュータを用いて実行する必要はないが、ステップＳ１２〜Ｓ１４の各段階は、コンピュータによって実行することを前提とした処理である。
【００８６】
まず、ステップＳ１１の原データ準備段階では、Ｍ個の画素の集合からなり、個々の画素ごとに、光の入射方向もしくは反射方向、または入射方向と反射方向との双方（本願では、「入射方向および／または反射方向」と記述する）に関する角度に依存して定まる反射特性を示すテーブルが定義された原テクスチャデータが用意される。前述の例では、図８に示すテクスチャデータ２０が、このステップＳ１１で用意される原テクスチャデータに相当する。
【００８７】
なお、ここに示す実施形態では、前述したとおり、ＢＴＦモデルに基づくレンダリングを行うことを前提としたＢＴＦモデルのテクスチャを取り扱う例を述べるが、本発明の適用は、ＢＴＦモデルのテクスチャに限定されるものではない。ただ、実用上は、ＢＴＦモデルへの適用が最も好ましい形態であり、以下の説明も、このＢＴＦモデルのテクスチャに適用した例を前提として述べることにする。
【００８８】
ＢＴＦモデルでは、図４を参照して既に説明したとおり、テクスチャデータのマッピング対象となる仮想物体の表面上に、サンプル点Ｑと、このサンプル点Ｑの位置に立てた法線ｎと、サンプル点Ｑを含み法線ｎに直交する基準面Ｓと、サンプル点Ｑを通る基準面Ｓ上の基準線ζと、が定義される。そして、サンプル点Ｑに入射する照明光Ｌと法線ｎとのなす角をθＬ、基準面Ｓ上への照明光Ｌの投影像Ｌ′と基準線ζとのなす角をφＬ、サンプル点Ｑから射出する反射光Ｖと法線ｎとのなす角をθＶ、基準面Ｓ上への反射光Ｖの投影像Ｖ′と基準線ζとのなす角をφＶとしたときに、「θＬ，φＬ，θＶ，φＶ」の関数として与えられる反射係数Ｋ（θＬ，φＬ，θＶ，φＶ）をテーブルとして定義したテクスチャデータが用いられることになる。したがって、ステップＳ１１で用意される原テクスチャデータは、たとえば、図５に示すようなデータということになる。この反射係数Ｋは、二次元ｕｖ座標系の各座標値ｕ，ｖを変数として加えることにより、Ｋ（θＬ，φＬ，θＶ，φＶ，ｕ，ｖ）なる６つの変数をもった関数として表現できることは既に述べたとおりである。
【００８９】
なお、反射係数Ｋ（θＬ，φＬ，θＶ，φＶ）は、θＬ，φＬ，θＶ，φＶを変数とした関数式として定義することも可能であるが、本発明では、各反射係数Ｋ（θＬ，φＬ，θＶ，φＶ）が数値テーブルとして与えられることを前提としており、実際には、図８に例示したようなテーブルＲ（ｕ，ｖ）の形式で定義される。このテーブルＲ（ｕ，ｖ）の個々のセルには、既に説明したとおり、反射特性を示すデータとして、三原色ＲＧＢの波長をもった照明光それぞれについての反射率を示す数値Ｋｒ，Ｋｇ，Ｋｂがコンテンツとして収録されている。もっとも、モノクロ画像の処理だけを目的としたレンダリング処理に用いるテクスチャデータの場合は、このような各原色ごとの反射率を用意する必要はなく、単一の反射率を示すデータのみを収録しておけば十分である。
【００９０】
このような数値テーブルとして反射係数Ｋを定義する場合、変数θＬ，φＬ，θＶ，φＶに対しては連続量を定義することができないので、予め所定範囲内の離散的な角度値を定義しておく必要がある。前述した実施形態の場合、方位角φＬ，φＶに関しては、図７に示すとおり、０〜３６０°の角度範囲を１２等分することにより、１２通りの角度０°，３０°，６０°，…，３３０°を設定しているが、より一般的には、０〜３６０°の角度範囲をα等分することにより、φＬの角度値をα通り設定し、φＶの角度値をα通り設定すればよい。同様に、仰角θＬ，θＶに関しては、図６に示すとおり、０°〜９０°の角度範囲を６等分することにより、６通りの角度０°，１５°，３０°，４５°，６０°，７５°を設定しているが、より一般的には、０〜９０°の角度範囲をβ等分することにより、θＬの角度値をβ通り設定し、θＶの角度値をβ通り設定すればよい。その結果、個々の画素についてそれぞれ合計α２×β２通りの反射特性を示すテーブルが用意できる。前述の実施形態の場合、α＝１２，β＝６であるから、図８に示されているとおり、１つの画素Ｔ（ｕ，ｖ）について、α２×β２＝５１８４通りの反射特性を示すテーブルＲ（ｕ，ｖ）が用意できる。
【００９１】
このステップＳ１１で用意すべき原テクスチャデータは、ＣＧの技術を用いて、コンピュータ上で人為的に作成することもできるが、スキャナ装置やデジタルカメラなどを用いて、実在の繊維シートを撮影することによって用意することも可能である。ＣＧの技術を用いて人為的に作成する場合は、仮想繊維シートの三次元構造データ（たとえば、毛並の状態などを三次元データで表現したもの）を用意し、この仮想繊維シートの個々の位置にサンプル点Ｑを定義して、入射照明光Ｌの角度θＬ，φＬを様々に変えたときに様々な角度θＶ，φＶをもって射出する反射光Ｖの強度をシミュレーションによって求めればよい。
【００９２】
一方、実在の繊維シートを撮影することによって用意する場合は、実在の物体に対して、種々の方向から照明光を照射した状態で、種々の方向から撮影を行い、得られた複数の撮影画像に基づいて原テクスチャデータを用意すればよい。具体的には、入射照明光Ｌの角度θＬ，φＬが様々に変わるように照明環境を調整し、カメラの位置を変えて反射光Ｖの角度θＶ，φＶが様々となるような画像を撮影すればよい。実在の繊維シート上の同一位置に関する個々の撮影画像の画素値に基づいて、当該位置の「角度に依存した反射特性」を求めることができる。
【００９３】
さて、図１６のステップＳ１２における代表画素決定段階では、ステップＳ１１で用意された原テクスチャデータを構成するＭ個の画素の中から、Ｎ個（Ｎ＜Ｍ）の代表画素を定める処理が行われる。残りの（Ｍ−Ｎ）個の画素は一般画素となる。図９に示す例は、Ｍ＝４８、Ｎ＝４の設定例である。代表画素は、全くランダムに定めることもできるし、ある程度規則的に抽出して定めることも可能である。
【００９４】
ランダムに定める場合には、コンピュータ上で乱数を発生させ、この乱数に基づいて座標値（ｕ，ｖ）を選出し、当該座標値に対応する画素を代表画素と定める処理を、Ｎ個の代表画素が決定されるまで続ければよい。一方、規則的に抽出して定める場合は、たとえば、ＭとＮとの比に基づいて、所定間隔ごとに代表画素を抽出する所定の規則を定めればよい。なお、代表画素の数Ｎは、圧縮率を左右するパラメータになるので、最終的に得られる圧縮テクスチャデータに要求されるデータ容量に応じて、適宜、設定すればよい。
【００９５】
続くステップＳ１３では、個々の一般画素について、それぞれ自己の反射特性に近似した反射特性をもつ代表画素を近似代表画素として選択する近似代表画素選択段階が実行される。このとき、既に述べたとおり、個々の代表画素について、原テクスチャデータによって定義されているテーブルの角度のパラメータを所定のオフセット量だけシフトさせることにより、複数のバリエーションをもったテーブルを定義し、これらのテーブルすべてを比較対象としたときに最も近似するテーブルを最近似テーブルと決定し、この最近似テーブルを派生させた代表画素を近似代表画素として選択する処理が行われる。
【００９６】
具体的には、個々の角度値に対して所定のオフセット量を加算もしくは減算するシフトを行い、加算もしくは減算の結果、シフト後の角度値が所定範囲の一端から食み出してしまう場合には、食み出し分を当該所定範囲の他端からカウントするローテーションを行うようにすればよい。オフセット量を加算するか減算するかによって、シフトの移動方向が決まる。図１３(a) 〜(l) は、このようなローテーションシフトの結果の一例を示すものである。
【００９７】
一般論として、方位角φＬ，φＶを、０〜３６０°の角度範囲をα等分することにより、それぞれα通りに設定した場合には、Ｕφ＝３６０°／αなる式で与えられる単位角度Ｕφを定義し、φＬおよびφＶを、Δφ＝ｉ×Ｕφ（但し、ｉ＝０，１，２，…，α−１）なる式で与えられるα通りのオフセット量Δφだけそれぞれシフトさせることにより、合計α２通りの組み合わせのバリエーションをもったテーブルを定義することができる。前述した実施形態は、α＝１２に設定し、単位角度Ｕφ＝３０°としたものである。その結果、φＬおよびφＶのそれぞれについて、オフセット量Δφ＝０°，３０°，６０°，…，３３０°に設定した１２通りのバリエーションが作成でき、１つの代表画素についての「もとのテーブル」から、合計１４４通りの組み合わせのバリエーションをもったテーブルを派生させることができる。
【００９８】
代表画素がＮ個ある場合には、結局、比較対象となるテーブルは、１４４×Ｎ通りのバリエーションをもつことになる。したがって、この場合、個々の一般画素Ｔｉについて、それぞれ自己の反射特性を示すテーブルＲｉに最も近似するテーブルを、この１４４×Ｎ通りのバリエーションの中から選択する処理が行われる。
【００９９】
なお、２つのテーブルの近似度を定量的に評価する手法としては、種々の手法が知られているが、たとえば、比較対象となる２つのテーブルについて、対応する個々の反射率の差の二乗和を、近似度を示すパラメータとして利用し、この値が最小となるテーブルを最近似テーブルと決定すればよい。
【０１００】
たとえば、図８に示すようなサイズをもった２組のテーブルＲ（ｕ，ｖ）が比較対象となった場合を考えてみよう。この場合、第１のテーブルにおける特定のセルに収録されている反射率がＫｒ１，Ｋｇ１，Ｋｂ１であり、第２のテーブルにおける同じ位置にある特定のセルに収録されている反射率がＫｒ２，Ｋｇ２，Ｋｂ２であったとすると、当該セルに関する差の二乗和は、「（Ｋｒ１−Ｋｒ２）２＋（Ｋｇ１−Ｋｇ２）２＋（Ｋｂ１−Ｋｂ２）２」で示される。このような差の二乗和を全セル（図８の例の場合、合計５１８４個のセル）について求め、その総和を、第１のテーブルと第２のテーブルとの近似度を示すパラメータとすればよい。このパラメータ値が最も小さい比較対象が、最近似テーブルということになり、この最近似テーブルを派生させた代表画素が近似代表画素として選択される。
【０１０１】
最後のステップＳ１４では、原テクスチャデータを構成するＭ個の画素のうち、Ｎ個の代表画素については、それぞれ自己の反射特性を示すテーブルをそのまま収録し、（Ｍ−Ｎ）個の一般画素については、ステップＳ１３で選択された近似代表画素を示すデータを収録することにより、圧縮テクスチャデータを作成するデータ圧縮段階が実行される。このとき、一般画素については、選択された近似代表画素を示すデータとともに、当該近似代表画素を選択する要因となったテーブル（最近似テーブル）についてのオフセット量を示すデータを収録するようにする。たとえば、図１２に示す例のように、一般画素Ｔｉについて、自己の反射特性を示すテーブルＲｉの最近似テーブルがテーブルＲ１＊であったとすると、この一般画素Ｔｉについては、テーブルＲｉを収録する代わりに、近似代表画素Ｔ１を示すデータと、この近似代表画素Ｔ１についての「もとのテーブル」を派生させて最近似テーブルＲ１＊を得るためのオフセット量（この例の場合、ΔＬφ＝１８０°，ΔＶφ＝１８０°）を示すデータと、が収録されることになる。
【０１０２】
こうして、ステップＳ１４によって、図９に示すような圧縮テクスチャデータ２５が作成されたとすると、そのデータ構造は次のようなものになる。まず、４つの代表画素Ｔ１〜Ｔ４については、原テクスチャデータと同様に、テーブルＲ１〜Ｒ４がそのまま収録されている。これらのテーブルは、図８に示す反射特性を示すテーブルＲ（ｕ，ｖ）と同じサイズをもったテーブルとなるので、代表画素に関しては、データ容量削減の効果は全く見られないことになる。これに対して、残りの一般画素Ｔｉについては、このような大容量のテーブルは収録されておらず、近似代表画素を示すデータ（たとえば、Ｔ１）および当該近似代表画素を選択する要因となった最近似テーブルについてのオフセット量（たとえば、ΔＬφ＝１８０°，ΔＶφ＝１８０°）を示すデータのみが収録されているので、データ容量は大幅に削減されることになる。
【０１０３】
＜＜＜  §７．本発明に係るレンダリング方法の基本手順  ＞＞＞
次に、図１７の流れ図を参照しながら、本発明に係るテクスチャデータを用いたレンダリング方法の基本手順を説明する。ここで説明するレンダリング処理は、基本的には、図１を参照しながら§１で述べたレンダリング処理と同等の処理である。すなわち、その目的は、各部の反射特性を示すテクスチャデータを三次元仮想物体の表面にマッピングし、これを所定の視点から観察したときに得られる投影画像を示す二次元データを生成することである。ただ、用いるテクスチャデータとして、§６で述べた手順で作成された圧縮テクスチャデータ２５を用いることが前提となっている。
【０１０４】
この圧縮テクスチャデータ２５のデータ構造上の特徴は、上述したとおり、一般画素Ｔｉについて、近似代表画素を示すデータだけでなく、この近似代表画素についての「もとのテーブル」を派生させて最近似テーブルを得るためのオフセット量を示すデータが収録されている点である。
【０１０５】
この図１７に示すステップＳ２１〜Ｓ２７の各段階は、いずれもコンピュータによって実行される処理である。まず、ステップＳ２１において、三次元仮想物体の構造を示す物体データ１０を入力する物体データ入力段階が実行される。続いて、ステップＳ２２において、圧縮テクスチャデータ２５を入力するテクスチャデータ入力段階が実行される。更に、ステップＳ２３において、オペレータの指示に基づいて、レンダリングに必要な照明環境、視点位置、マッピング態様、投影平面を定めるレンダリング条件を設定するレンダリング条件設定段階が実行される。以上の各段階は、本来のレンダリング処理を実行するための準備段階ということになる。
【０１０６】
続いて、ステップＳ２４〜Ｓ２７に示す本来のレンダリング処理がコンピュータの演算によって実行される。ます、ステップＳ２４では、三次元仮想物体１０上の各サンプル点Ｑについて、当該サンプル点Ｑの位置にマッピングされる圧縮テクスチャデータ２５内の対応画素を決定する対応画素決定段階が実行される。サンプル点Ｑの位置にマッピングされる対応画素は、ステップＳ２３で設定されたマッピング態様を参照することにより決定できる。
【０１０７】
次に、ステップＳ２５において、このサンプル点Ｑからの反射光Ｖを演算する反射光演算段階が実行される。このとき、反射光Ｖの強度を求める演算に、サンプル点Ｑの対応画素に収録されている反射特性が利用される。すなわち、対応画素が代表画素であった場合には、当該代表画素について収録されているテーブルによって示される反射特性を利用して、サンプル点Ｑからの反射光Ｖの強度演算が行われる。一方、対応画素が一般画素であった場合には、「当該一般画素について収録されているデータによって示された近似代表画素」について収録されているテーブルを、「当該一般画素について収録されているデータによって示されたオフセット量」だけシフトして得られるテーブルによって示される反射特性を利用して、サンプル点Ｑからの反射光Ｖの強度演算が行われることになる。
【０１０８】
たとえば、サンプル点Ｑの対応画素が、図９に示す代表画素Ｔ１であった場合には、当該代表画素Ｔ１について収録されているテーブルＲ１によって示される反射特性を利用して、サンプル点Ｑからの反射光Ｖの強度演算が行われる。テーブルＲ１は、たとえば、図８に示すような７２行７２列のマトリックスからなるテーブルである。ＢＴＦモデルを用いてサンプル点Ｑからの反射光Ｖを演算する場合には、ステップＳ２１で入力した物体データおよびステップＳ２３で設定したレンダリング条件に基づいて、θＬ，φＬ，θＶ，φＶの値が定まっているので、この７２行７２列のマトリックスからなるテーブルを参照することにより、該当するセルに定義された反射率Ｋｒ，Ｋｇ，Ｋｂを求めることができる（θＬ，φＬ，θＶ，φＶの値は離散的に定義されているので、必要に応じて、補間を行うことが可能である）。こうして得られた反射率Ｋｒ，Ｋｇ，Ｋｂに基づいて、反射光Ｖの各原色成分ごとの強度が演算される。
【０１０９】
一方、サンプル点Ｑの対応画素が、図９に示す一般画素Ｔｉであり、たとえば、「近似代表画素：Ｔ１」、「オフセット量：ΔＬφ＝３０°，ΔＶφ＝０°」のようなデータが収録されていた場合には、次のような手順で、サンプル点Ｑからの反射光Ｖの強度演算が行われることになる。まず、指定された近似代表画素Ｔ１について収録されているテーブルＲ１が読み出される（上述したとおり、このテーブルＲ１は、たとえば、図８に示すような７２行７２列のマトリックスからなるテーブルである）。そして、このテーブルＲ１に対して、「オフセット量：ΔＬφ＝３０°，ΔＶφ＝０°」に応じたローテーションシフトを実行して、たとえば、図１４に示すような７２行７２列のマトリックスからなるテーブルを得る。あとは、このテーブルを参照することにより、特定の反射率Ｋｒ，Ｋｇ，Ｋｂを求め、反射光Ｖの各原色成分ごとの強度を演算すればよい。
【０１１０】
このように、テーブルコンテンツのシフト演算自体は、それほど負担の大きな演算ではないので、パソコン等の小規模システムで実行しても、ＣＰＵの負荷はそれほど大きくならない。なお、実用上は、図８に示すような７２行７２列のマトリックスからなるテーブル全体についてローテーションシフトを行い、図１４に示すような７２行７２列のマトリックスからなるテーブル全体を求める必要はなく、たとえば、「θＬ１，θＶ１についての部分テーブル」のように、参照するセルを含んでいる特定の部分テーブルに関してのみローテーションシフトを行えば十分である。
【０１１１】
続く、ステップＳ２６により、上述したステップＳ２４，Ｓ２５の処理が、必要な全サンプル点に関して繰り返し実行される。そして、最後のステップＳ２７では、各サンプル点Ｑからの反射光に基づいて、投影平面Ｈ上に得られる投影画像１５を示す二次元データを生成する二次元データ生成段階が実行される。
【０１１２】
＜＜＜  §８．本発明に係る装置の基本構成  ＞＞
ここでは、図１６の流れ図に示した「レンダリング用テクスチャデータの作成方法」および図１７の流れ図に示した「テクスチャデータを用いたレンダリング方法」を実行するための装置を、図１８のブロック図を参照しながら説明する。この図１８において、上段に示すテクスチャデータの作成装置１００は、図１６のステップＳ１２，Ｓ１３，Ｓ１４を実行するための装置であり、下段に示すレンダリング装置２００は、図１７のステップＳ２１〜Ｓ２７を実行するための装置である。いずれの装置も、コンピュータに専用のプログラムを組み込むことにより実現される装置であり、個々のブロックとして示す構成要素は、コンピュータのハードウエアとソフトウエアとの組み合わせにより実現されることになる。
【０１１３】
まず、テクスチャデータの作成装置１００は、図示のとおり、原データ格納部１１０，代表画素決定部１２０，データ圧縮部１３０，近似代表画素選択部１４０によって構成されている。このテクスチャデータの作成装置１００は、圧縮前の原テクスチャデータに基づいて、圧縮テクスチャデータを作成する処理を行う装置なので、ある程度高性能のコンピュータシステムにより構成するのが好ましい。前述したとおり、圧縮前の原テクスチャデータのデータは、たとえば４ＧＢといった大容量になるので、一般的なパソコンで取り扱うのは困難である。
【０１１４】
原データ格納部１１０は、図１６のステップＳ１１で用意された原テクスチャデータを入力して格納する機能を有する構成要素である。すなわち、原データ格納部１１０は、Ｍ個の画素の集合からなり、個々の画素ごとに、光の入射方向および／または反射方向に関する角度に依存して定まる反射特性を示すテーブルが定義された原テクスチャデータを入力してこれを格納する機能を有する。
【０１１５】
代表画素決定部１２０は、このＭ個の画素の中からＮ個（Ｎ＜Ｍ）の代表画素を定め、残りの（Ｍ−Ｎ）個の画素を一般画素とする構成要素であり、その処理内容は、図１６のステップＳ１２の処理として述べたとおりである。
【０１１６】
また、近似代表画素選択部１４０は、代表画素決定部１２０からＮ個の代表画素を示す情報を受け取り、残りの（Ｍ−Ｎ）個の一般画素について、それぞれ自己の反射特性に近似した反射特性をもつ代表画素を近似代表画素として選択する処理を実行する。この処理内容は、図１６のステップＳ１３の処理として述べたとおりである。すなわち、個々の代表画素について、原データ格納部１１０内に格納されている原テクスチャデータによって定義されているテーブルの角度のパラメータを所定のオフセット量だけシフトさせることにより、複数のバリエーションをもったテーブルを定義し、これらのテーブルすべてを比較対象としたときに最も近似するテーブルを最近似テーブルと決定し、この最近似テーブルを派生させた代表画素を近似代表画素として選択する処理が実行される。
【０１１７】
データ圧縮部１３０は、原データ格納部１１０内に格納されている原テクスチャデータを構成するＭ個の画素のうち、Ｎ個の代表画素については、それぞれ自己の反射特性を示すテーブルをそのまま収録し、（Ｍ−Ｎ）個の一般画素については、近似代表画素選択部１４０によって選択された近似代表画素を示すデータとともに、当該近似代表画素を選択する要因となった最近似テーブルについてのオフセット量を示すデータを収録することにより、圧縮テクスチャデータを作成する処理を実行する。この処理内容は、図１６のステップＳ１４の処理として述べたとおりである。
【０１１８】
一方、レンダリング装置２００は、図示のとおり、物体データ格納部２１０，テクスチャデータ格納部２２０，レンダリング条件設定部２３０，対応画素決定部２４０，反射光演算部２５０，二次元データ生成部２６０によって構成されており、テクスチャデータの作成装置１００によって作成された圧縮テクスチャデータを、三次元仮想物体の表面にマッピングし、これを所定の視点から観察したときに得られる投影画像を示す二次元データを生成する機能を果たす。このレンダリング装置２００は、容量の大きな原テクスチャデータを取り扱う必要はなく、圧縮テクスチャデータのみを取り扱える機能を有していればよいので、一般的なパソコンなどの小規模システムで構成することが可能である。
【０１１９】
物体データ格納部２１０は、三次元仮想物体の構造を示す物体データを入力してこれを格納する機能を果たし、テクスチャデータ格納部２２０は、テクスチャデータの作成装置１００によって作成された圧縮テクスチャデータを入力してこれを格納する機能を果たし、レンダリング条件設定部２３０は、レンダリングに必要な照明環境、視点位置、マッピング態様、投影平面を定めるレンダリング条件を設定する機能を果たす。これら各構成要素は、図１７のステップＳ２１，Ｓ２２，Ｓ２３に対応する各段階を実行する構成要素ということになる。
【０１２０】
また、対応画素決定部２４０は、図１７のステップＳ２４に対応する段階を実行する機能を有し、物体データ、圧縮テクスチャデータ、レンダリング条件を参照して、三次元仮想物体上のサンプル点Ｑの位置にマッピングされる圧縮テクスチャデータ内の対応画素を決定する処理を実行する。
【０１２１】
反射光演算部２５０は、図１７のステップＳ２５に対応する段階を実行する機能を有し、物体データ、圧縮テクスチャデータ内の対応画素によって示される情報、レンダリング条件を参照して、サンプル点Ｑからの反射光の強度を演算する。具体的には、対応画素が代表画素であった場合には、当該代表画素について収録されているテーブルによって示される反射特性を利用して、サンプル点Ｑからの反射光の強度演算を行う。また、対応画素が一般画素であった場合には、「当該一般画素について収録されているデータによって示された近似代表画素」について収録されているテーブルを、「当該一般画素について収録されているデータによって示されたオフセット量」だけシフトして得られるテーブルによって示される反射特性を利用して、サンプル点Ｑからの反射光の強度演算を行う。
【０１２２】
二次元データ生成部２６０は、図１７のステップＳ２７に対応する段階を実行する機能を有し、物体データ、反射光強度、レンダリング条件に基づいて、投影画像データを生成する。すなわち、各サンプル点Ｑからの反射光に基づいて、投影平面Ｈ上に得られる投影画像１５を示す二次元データを生成し、これを投影画像データとして出力する。
【０１２３】
＜＜＜  §９．変形例  ＞＞＞
最後に、上述した基本的実施形態の変形例をいくつか述べておく。
(1)   仰角に関するバリエーション
これまで述べた基本的実施形態では、たとえば、代表画素について定義された「もとのテーブル」に関する方位角φＬ，φＶをシフトさせることにより、比較対象となるテーブルのバリエーションを派生させていた。しかしながら、バリエーションの派生は、必ずしも方位角φＬ，φＶのシフトにより行う必要はなく、仰角θＬ，θＶのシフトにより行ってもかまわない。
【０１２４】
図１９は、図８に示すテーブルＲ（ｕ，ｖ）を「もとのテーブル」として、θＬを１５°シフトさせたテーブルである。ここで、θＬに関する大列見出し（ここでは、φＬに関する列と区別する上で、θＬに関する列を「大列」と呼ぶ）に着目すると、図８に示すテーブルでは、第１大列目が「θＬ１」、第２大列目が「θＬ２」、…、第６大列目が「θＬ６」となっているのに対して、図１９に示すテーブルでは、第１大列目が「θＬ２」、第２大列目が「θＬ３」、…、第６大列目が「θＬ１」となっている。すなわち、図８に示すもとのテーブルの「θＬ１」に該当する第１大列目のコンテンツをそっくり第６大列目へとまわし、第２大列目のコンテンツを第１大列目へと移動し、第３大列目のコンテンツを第２大列目へとまわし、…とそれぞれ１大列分だけ左方向へローテーションシフトさせることにより、図１９に示すテーブルが得られることになる。ここで、各大列に収容されている個々の部分テーブルの内容に関しては、図８に示すテーブルと図１９に示すテーブルとに差はない。
【０１２５】
一方、図２０は、図８に示すテーブルＲ（ｕ，ｖ）を「もとのテーブル」として、θＶを１５°シフトさせたテーブルである。ここで、θＶに関する大行見出し（ここでは、φＶに関する行と区別する上で、θＶに関する行を「大行」と呼ぶ）に着目すると、図８に示すテーブルでは、第１大行目が「θＶ１」、第２大行目が「θＶ２」、…、第６大行目が「θＶ６」となっているのに対して、図２０に示すテーブルでは、第１大行目が「θＶ２」、第２大行目が「θＶ３」、…、第６大行目が「θＶ１」となっている。すなわち、図８に示すもとのテーブルの「θＶ１」に該当する第１大行目のコンテンツをそっくり第６大行目へとまわし、第２大行目のコンテンツを第１大行目へと移動し、第３大行目のコンテンツを第２大行目へとまわし、…とそれぞれ１大行分だけ上方向へローテーションシフトさせることにより、図２０に示すテーブルが得られることになる。
【０１２６】
以上は、θＬあるいはθＶのオフセット量を１５°に設定してローテーションシフトさせた例であるが、オフセット量を３０°，４５°，６０°，７５°に設定すれば、２大列（２大行），３大列（３大行），４大列（４大行），５大列（５大行）分のローテーションシフトが可能になる。このような仰角θＬ，θＶのシフトにより「もとのテーブル」を派生させると、合計６×６＝３６通りのバリエーションを得ることができる。
【０１２７】
ただ、実用上は、仰角θＬ，θＶのシフトに基づくバリエーションよりも、方位角φＬ，φＶのシフトに基づくバリエーションを作成した方が、個々の一般画素について、より近似度の高い最近似テーブルが見つかる可能性が高いと考えられる。これは、実在の繊維シートの場合、図１０に示す例のように、方位角をシフトさせると毛並みの方向が一致する構造をもったケース（回転対称となるケース）が多いためである。これは絨毯やカーペットのようにベース生地に植毛された毛並繊維を有する繊維シートだけでなく、縦糸と横糸とを織り込んだ繊維シートに関しても同様である（この場合は、オフセット量を９０°もしくは１８０°に設定した場合に、最も近似度の高いテーブルが得られるものと予想される）。
【０１２８】
したがって、実用上は、仰角θＬ，θＶのシフトに基づくバリエーションは、方位角φＬ，φＶのシフトに基づくバリエーションと併用するのが好ましい。具体的には、０〜３６０°の角度範囲をα等分して、Ｕφ＝３６０°／αなる式で与えられる単位角度Ｕφを定義し、０〜９０°の角度範囲をβ等分して、Ｕθ＝９０°／βなる式で与えられる単位角度Ｕθを定義する（上述の例の場合、α＝１２，β＝６）。そして、φＬおよびφＶを、Δφ＝ｉ×Ｕφ（但し、ｉ＝０，１，２，…，α−１）なる式で与えられるα通りのオフセット量Δφだけそれぞれシフトさせるとともに、θＬおよびθＶを、Δθ＝ｊ×Ｕθ（但し、ｊ＝０，１，２，…，β−１）なる式で与えられるβ通りのオフセット量Δθだけそれぞれシフトさせた合計α２×β２通りの組み合わせのバリエーションをもったテーブルを定義すればよい。
【０１２９】
(2)   ランダムシフトによるバリエーション
これまで述べた基本的実施形態では、代表画素について定義された「もとのテーブル」に基づいてバリエーションを派生させる際に、ローテーションシフトを行っていた。しかしながら、本発明で行うテーブルコンテンツのシフトは、必ずしもローテーションシフトに限定されるものではなく、ランダムなシフトを行ってもかまわない。たとえば、第１列目を第７列目にもってゆき、第７列目を第９列目にもってゆき、第９列目を第３列目にもってゆき、第２列目と第８列目とを交換し、…といったデタラメなシフトでもかまわない。あるいは、行と列を含めて全くランダムにシフトさせてもかまわない。すなわち、二次元マトリックス上に配置されているタイルをゴチャゴチャにかき混ぜて配置しなおすようなランダムなシフトでもよい。このようなランダムなシフトでは、個々のタイルごとに、それぞれランダムなオフセット量が設定されることになる。
【０１３０】
要するに、代表画素について定義された「もとのテーブル」に対して、テーブルコンテンツ（上述の例にいう個々のタイル）の配置を何らかの方法で入れ替えることにより、「異なるテーブル」を作成し、これをバリエーションとして用いることができればよい。そうすれば、一般画素のテーブルの代用として利用できるテーブルの候補の数がそれだけ増えることになるので、より近似度の高いテーブルを最近似テーブルとして選択できる可能性が高くなり、より品質の高い圧縮テクスチャデータを得ることができるのである。
【０１３１】
しかしながら、ある１つの一般画素Ｔｉについて、バリエーションとして作成された所定のテーブルを最近似テーブルとして選択した場合、「もとのテーブル」に対して、どのようなシフトを行うと、当該最近似テーブルが得られるのか、という情報を記録しておく必要がある。別言すれば、個々のコンテンツごとに「もとのテーブル上の位置を基準としたオフセット量」を記録しておかねばならない。
【０１３２】
したがって、実用上は、これまで述べた基本的実施形態に示すとおり、ローテーションシフトを行うのが好ましい。このローテーションシフトでは、テーブル上のすべてのコンテンツに対して同一のオフセット量が設定されるので、たとえば、「オフセット量：ΔＬφ＝３０°，ΔＶφ＝０°」というように、角度値を指定するだけで、すべてのコンテンツに対するシフト動作を定義することができる。また、コンピュータによるシフト動作も非常に負担の軽い演算処理で実行が可能になる。
【図面の簡単な説明】
【０１３３】
【図１】テクスチャデータを利用した一般的なレンダリング処理の概念を示す斜視図である。
【図２】図１に示すレンダリング処理において、サンプル点Ｑからの反射光の強度を演算する最も単純な手法を示す斜視図である。
【図３】カラー画像からなる２次元テクスチャデータの画素配列を示す平面図である。
【図４】ＢＲＤＦモデルおよびＢＴＦモデルの原理を説明するための斜視図である。
【図５】ＢＴＦモデルで用いる６次元テクスチャデータの構造を示す平面図である。
【図６】ＢＴＦモデルにおける離散的な仰角定義の一例を示す正面図である。
【図７】ＢＴＦモデルにおける離散的な方位角定義の一例を示す正面図である。
【図８】反射特性を示すテーブルＲ（ｕ，ｖ）を用いて定義した６次元テクスチャデータ２０の構成例を示す平面図である。
【図９】高次元テクスチャデータの圧縮原理を示す平面図である。
【図１０】テクスチャの元になる繊維シートの表面構造を示す側面図である。
【図１１】高次元テクスチャデータにおける反射特性の近似具合を示す平面図である。
【図１２】高次元テクスチャデータにおける反射特性の近似具合を示す別な平面図である。
【図１３】方位角を所定のオフセット量だけシフトさせることにより、テーブルのコンテンツをローテーションさせ、複数のバリエーションをもったテーブルを定義する原理を示す平面図である。
【図１４】図８に示すテーブルＲ（ｕ，ｖ）について、φＬを３０°シフトすることにより得られるテーブルを示す平面図である。
【図１５】図８に示すテーブルＲ（ｕ，ｖ）について、φＶを３０°シフトすることにより得られるテーブルを示す平面図である。
【図１６】本発明に係るレンダリング用テクスチャデータの作成方法の基本手順を示す流れ図である。
【図１７】本発明に係るテクスチャデータを用いたレンダリング方法の基本手順を示す流れ図である。
【図１８】本発明に係るテクスチャデータの作成装置およびレンダリング装置の基本構成を示すブロック図である。
【図１９】図８に示すテーブルＲ（ｕ，ｖ）について、θＬを１５°シフトすることにより得られるテーブルを示す平面図である。
【図２０】図８に示すテーブルＲ（ｕ，ｖ）について、θＶを１５°シフトすることにより得られるテーブルを示す平面図である。
【符号の説明】
【０１３４】
１０：物体データ（三次元仮想物体）
１５：二次元投影画像
２０：テクスチャデータ（原テクスチャデータ）
２５：圧縮テクスチャデータ
３０：繊維シート
３１，３２，３３：毛並繊維
１００：テクスチャデータの作成装置
１１０：原データ格納部
１２０：代表画素決定部
１３０：データ圧縮部
１４０：近似代表画素選択部
２００：レンダリング装置
２１０：物体データ格納部
２２０：テクスチャデータ格納部
２３０：レンダリング条件設定部
２４０：対応画素決定部
２５０：反射光演算部
２６０：二次元データ生成部
Ａ，Ｂ，Ｃ：繊維シート上の領域
Ｅ：視点
Ｇ：光源
Ｈ：投影平面
Ｉ（Ｌ）：照明光の強度
Ｉ（Ｖ）：反射光の強度
Ｋ，Ｋｒ，Ｋｇ，Ｋｂ：反射係数
Ｋ（θＬ，φＬ，θＶ，φＶ）：反射係数
Ｌ，Ｌ１〜Ｌ６：照明光
Ｌ′：照明光の投影像
ｎ：法線
Ｐ：投影平面上の画素
Ｑ，Ｑ（Ｘ，Ｙ，Ｚ）：サンプル点
Ｒ１〜Ｒ４：代表画素についての反射特性を示すテーブル
Ｒｉ：一般画素についての反射特性を示すテーブル
Ｒ（ｕ，ｖ）：反射特性を示すテーブル
Ｓ：基準面
Ｓ１１〜Ｓ２７：流れ図の各ステップ
Ｔ１〜Ｔ４：代表画素
Ｔｉ：一般画素
Ｔ（ｕ，ｖ）：テクスチャを構成する画素
ｕ，ｖ：テクスチャを定義する二次元座標系の各座標軸
Ｖ：反射光
Ｖ′：反射光の投影像
Ｘ，Ｙ，Ｚ：三次元座標系の各座標軸
ｘ，ｙ：投影平面Ｈ上の二次元座標系の各座標軸
θＬ：照明光Ｌの入射角
θＬ１〜θＬ６：照明光Ｌの入射角
θＶ：反射光Ｖの射出角
θＶ１〜θＶ６：反射光Ｖの射出角
ζ：基準線
φＬ：照明光Ｌの方位角
φＬ１〜φＬ１２：照明光Ｌの方位角
φＶ：反射光Ｖの方位角
【図１】
0004802676.tif 000002
【図２】
0004802676.tif 000003
【図３】
0004802676.tif 000004
【図４】
0004802676.tif 000005
【図５】
0004802676.tif 000006
【図６】
0004802676.tif 000007
【図７】
0004802676.tif 000008
【図８】
0004802676.tif 000009
【図９】
0004802676.tif 000010
【図１０】
0004802676.tif 000011
【図１１】
0004802676.tif 000012
【図１２】
0004802676.tif 000013
【図１３】
0004802676.tif 000014
【図１４】
0004802676.tif 000015
【図１５】
0004802676.tif 000016
【図１６】
0004802676.tif 000017
【図１７】
0004802676.tif 000018
【図１８】
0004802676.tif 000019
【図１９】
0004802676.tif 000020
【図２０】
0004802676.tif 000021