(57)【特許請求の範囲】
【請求項１】
コンピュータが，
仮想光源（１５）からある対象物（１７）において反射してある視点（２０）へ至る光の経路をサンプリングするサンプリング工程と，
前記サンプリング工程で得られた経路を用いて前記経路の密度を求め，前記経路と前記対象物（１７）との交点における鏡面反射の分布関数であって，前記経路の密度を用いて表現される前記分布関数を得て，当該分布関数の最大値が所定の値以下となるように当該分布関数の係数を求め，当該係数と前記経路の密度を用いて表現される表面粗さと既に知られた表面粗さのうちの小さい方を求め，当該小さい方のパラメータと０のうちの大きい方を推定鏡面荒さとして求める演算処理をすることで，前記対象物表面の推定鏡面荒さを得る推定鏡面荒さ取得工程と，を含む
シェーディング方法。
【請求項２】
仮想光源（１５）からある対象物（１７）において反射してある視点（２０）へ至る光の経路をサンプリングするためのサンプリング部（１０１）と，
前記サンプリング部（１０１）で得られた経路を用いて，前記経路と前記対象物（１７）との交点における鏡面反射の分布関数であって，前記経路の密度を用いて表現される前記分布関数を得て，当該分布関数の最大値が所定の値以下となるように当該分布関数の係数を求め，当該係数と前記経路の密度を用いて表現される表面粗さと既に知られた表面粗さのうちの小さい方を求め，当該小さい方のパラメータと０のうちの大きい方を推定鏡面荒さとして求める演算処理をすることで，前記対象物表面の推定鏡面荒さを得る推定鏡面荒さ取得部（１０２）と，を含む
コンピュータグラフィックシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，サンプリング結果を用いて適切な鏡面反射の荒さを推定し，その推定鏡面荒さを用いてシェーディングを行うことで，アーティファクトが抑圧されたリアルタイム大局照明レンダリングシステムに関する。
【背景技術】
【０００２】
コンピュータグラフィックスにおいて，現実に近い物体の輝度を求めるため，大局照明（ＧＩ）によるレンダリングが行われる。大局照明は，光源からの直接光成分のみならず，間接光成分をも考慮する照明計算である。間接光について，どの方向にどのくらいの強度で光が反射されるかを表わすため，双方向反射率分布関数（ＢＲＤＦ）が用いられる。
【０００３】
大局照明において，間接光成分を求める方法として，ファイナルギャザリング（下記非特許文献１）が知られている。ファイナルギャザリングは，複数の光線を追跡し，間接光成分を求める方法である。
【０００４】
また，間接光成分を求める手法として，仮想点光源を用いたインスタントラジオシティ法が知られている（下記非特許文献２）。また，同じ方向の光線を一度に追跡する手法としてレイバンドルズ（Ｒａｙ−Ｂｕｎｄｌｅｓ）がある。
【０００５】
どの方向にどのくらいの強度で光が反射されるかを表わすため，双方向反射率分布関数（ＢＲＤＦ）が提案されている。すでに知られたＢＲＤＦのモデルの例は，拡散反射を表わすランバートモデル，鏡面反射を表わすフォンモデル，ブリンのモデル，及びクック・トランスのモデルである。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】HACHISUKA, T. 2005. High-quality global illumination renderingusing rasterization. In GPU Gems 2. Addison-Wesley Professional,ch. 38, 615〜634.
【非特許文献２】KELLER, A. 1997. Instant radiosity. In ACM SIGGRAPH ’97,49〜56.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来の方法に基づいて大局照明（ＧＩ）によるレンダリングを実現しようとすると，アーティファクトが生ずるという問題がある。また，レイバンドルズ（Ｒａｙ−Ｂｕｎｄｌｅｓ）は，鏡面反射でのサンプリング効率が悪いという問題がある。オフラインレンダリングの場合，サンプル数を増やすことで，レイバンドルズによっても現実に近いコンピュータグラフィックスを得ることができる。しかしながら，計算数が増加するため，レイバンドルズは，リアルタイムレンダリングに向かない。
【０００８】
鏡面反射モデルについてレイバンドルズ（Ｒａｙ−Ｂｕｎｄｌｅｓ）又はインスタントラジオシティを用いてシェーディングを行った場合，シャープなアーティファクトが生ずるという問題がある。
【０００９】
そこで，本発明は，アーティファクトが生じないリアルタイム大局照明レンダリングシステムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は，基本的には，サンプリング結果を用いて適切な鏡面の荒さを推定し，求めた推定鏡面荒さ（αｉ）を用いてシェーディングを行うことで，アーティファクトが生じないリアルタイム大局照明レンダリングを行うことができるという知見に基づく。
【００１１】
本発明の第１の側面は，サンプリング結果を用いてアーティファクトが生じない適切な鏡面の荒さを推定し，その推定鏡面荒さを用いてシェーディングを行うコンピュータによるシェーディング方法に関する。この方法は，サンプリング工程（Ｓ１０１）と，推定鏡面荒さ取得工程（Ｓ１０２）とを含む。推定鏡面荒さを得た後は，通常の方法に基づいてシェーディングを行えばよい。
【００１２】
サンプリング工程（Ｓ１０１）は，仮想光源からある対象物において反射してある視点へ至る光の経路を複数のサンプルについてサンプリングする工程である。
【００１３】
推定鏡面荒さ取得工程（Ｓ１０２）は，サンプリング工程で得られた経路を用いて，対象物表面における分布関数を得て，分布関数の最大値が所定の値以下となるように演算処理することで，対象物表面の推定鏡面荒さを得るための工程である。この工程により求められた推定鏡面荒さを用いることで，アーティファクトが生じないリアルタイム大局照明レンダリングを行うことができる。
【００１４】
本発明の第２の側面は，サンプリング結果を用いてアーティファクトが生じない適切な鏡面の荒さを推定し，シェーディングを行うコンピュータグラフィックシステムに関する。つまり，このシステムは，第１の側面のサンプリング方法を実現するコンピュータグラフィックスシステムである。このシステムは，サンプリング部１０１と，推定鏡面荒さ取得部１０２とを有する。
【００１５】
サンプリング部１０１は，仮想光源からある対象物において反射してある視点へ至る光の経路を複数のサンプルについてサンプリングするための要素である。
【００１６】
推定鏡面荒さ取得部１０２は，サンプリング部で得られた経路を用いて，分布関数の最大値が所定の値以下となるように演算処理することで，対象物表面の推定鏡面荒さを得るための要素である。 
【発明の効果】
【００１７】
本発明のシェーディング方法は，上記の方法に基づくため，少ない数のサンプリングデータに基づいて，アーティファクトを抑制した対象物表面の推定鏡面荒さ（αｉ）を求めて，シェーディングを行うことができる。よって，本発明のシェーディング方法を用いれば，特に鏡面反射を含むシーンについてリアルタイム大局照明レンダリングを実現できることとなる。
【図面の簡単な説明】
【００１８】
【図１】図１は，本発明の第１の態様に関するシェーディング方法の例を説明するためのフローチャートである。
【図２】図２は，第１の態様に係るコンピュータグラフィックシステムのブロック図である。
【図３】図３は，間接照明の光路を説明するための図である。
【図４】図４は，本発明のシステムのハードウェア構成例を示すブロック図である。
【図５】図５は，本発明の第２の態様に関するシェーディング方法を説明するための工程例である。
【図６】図６は，本発明の第２の態様に関するコンピュータを用いたコンピュータグラフィックの描画システムを説明するためのブロック図である。
【図７】図７は，コーネルボックス中の点光源と鏡面像のコンピュータグラフィックスに関する。
【発明を実施するための形態】
【００１９】
図１は，本発明の第１の態様に関するシェーディング方法の例を説明するためのフローチャートである。図１に示されるように，この方法は，サンプリング工程（Ｓ１０１）と，推定鏡面荒さ取得工程（Ｓ１０２）とを含む。鏡面荒さパラメータ（α）を用いたシェーディングはすでに知られている。したがって，本発明は，推定鏡面荒さ（αｉ）を得た後は，推定鏡面荒さ（αｉ）を鏡面荒さパラメータとして用い，通常の方法に基づいてシェーディングを行えばよい。
【００２０】
図２は，第１の態様に係るコンピュータグラフィックシステムのブロック図である。図２に示されるコンピュータグラフィックシステムは，サンプリング結果を用いてアーティファクトが生じない適切な鏡面の荒さを推定し，シェーディングを行うシステムである。図２に示されるシステムは，サンプリング部１０１と，推定鏡面荒さ取得部１０２とを有する。このシステムは，特に図示しないものの，表示部と，得られた推定鏡面荒さ（αｉ）を用いてシェーディングを行うシェーディング部を有するものが好ましい。これにより，このシステムは，得られた推定鏡面荒さ（αｉ）を用いてコンピュータグラフィックスを得て，これを表示部に表示させることができる。
【００２１】
図３は，間接照明の光路を説明するための図である。光源１１からの光は，たとえば，壁１３のある点１５で反射し，対象物１７の表面上のある点１９において反射する。この点１５が仮想光源となる。そして，ある点１９で反射した光は，視点２０へと到達する。この光路は，たとえば，コンピュータが，視点２０，対象物１７の表面，壁１３及び光源１１の座標を記憶部から読み出し，光路を求める演算を行うことで求めることができる。そして，このシステムは，例えば，座標値と関連して，反射に関する係数を設計できるようにされている。このため，コンピュータは，例えば，記憶部に，対象物１７上のある点１９及び壁１３のある点１５に関連した反射に関する係数を記憶する。この係数は，例えば，データベースに記憶されても良いし，バッファに一時的に記憶されても良い。そして，コンピュータは，対象物１７上のある点１９及び壁１３のある点１５における反射に関する係数を読み出す。このコンピュータは，読みだした係数を用いて，反射経路を求めることができるものであってもよい。このようにして，コンピュータは，仮想光源１５からある対象物１７において反射して，ある視点２０へ至る光の経路をサンプリングできる。
【００２２】
なお，実際の計算に当たっては，視点２０から複数の光線を発射し，ある点１９で反射した光が，壁１３のある点１５で反射し，光源１１へと到達する光路を求めても良い。また，視点２０と対象物１７との間に仮想スクリーンを求めてもよい。そして，そのスクリーン上のサンプルと視点２０とを接続し，複数の視線を求めてもよい。さらに，複数の視線のうち，対象物１７に到達するものを求めてもよい。この光路を求める方法は，例えばレイトレーシング法において既に知られている。また，実際の計算においては，視点２０から複数の光線を発射し，複数の地点で反射した光が，他の点で反射し，光源１１へと到達する光路を求めても良い。
【００２３】
サンプリング部１０１は，光源１１からある対象物１７において反射してある視点２０へ至る光の経路を複数のサンプル（サンプリングポイント）についてサンプリングするための要素である。この要素は，プログラム，制御装置，演算装置及び記憶装置等により実装される。サンプルは，たとえば，視線経路中の仮想スクリーン上の点であってもよい。
【００２４】
推定鏡面荒さ取得部１０２は，サンプリング部で得られた経路を用いて，対象物の表面の推定鏡面荒さ（αｉ）を得るための要素である。推定鏡面荒さ取得部１０２は，サンプリング部で得られた経路を用いて，視線と物体との交点（衝突点）を求め，この交点における分布関数を求める。この分布関数は座標と関連して記憶部に記憶されている。このため，交点の座標を用いて記憶部から分布関数を読み出すことができる。この分布関数は，所定の関数により表現されるものであり，物体表面の荒さパラメータαを用いて表現される。分布関数は，物体表面の荒さを示す関数といえる。この物体表面の荒さパラメータαは既知であり，たとえば，座標値又は物体と関連して記憶部に記憶されている。そして，推定鏡面荒さ取得部１０２は，経路の密度を求め，分布関数を経路の密度を用いて表現し，分布関数の最大値が所定の値以下となるように演算処理する。経路の密度は，解析的に取得してもよい。また，経路の密度は，たとえば，あるサンプリングポイントから所定範囲内に存在する経路の密度であってもよいし，仮想スクリーン上のあるポイントから所定範囲内に存在する経路の密度であってもよい。また経路の密度は，一定面積のスクリーンを通過する経路の数を求めて，スクリーンの面積と経路の数とを用いることによっても求めることができる。分布関数を経路の密度を用いて表現するためには，分布関数と経路の密度との関係式を記憶しておき，経路の密度を求めた後にその関係式に基づいて分布関数を表現する演算を行えるようにしておけばよい。この演算は，プログラムによっても実現でき，ハードウェアによっても実現できる。このようにして，推定鏡面荒さ取得部１０２は，対象物表面の推定鏡面荒さ（αｉ）を得ることができる。この所定の値は，演算処理を行う前に記憶部から読み出せばよい。このように経路の密度を求め，分布関数の最大値が所定の値以下となるような推定鏡面荒さ（αｉ）を求め，この推定鏡面荒さ（αｉ）を用いてシェーディングを行う。このため，本発明のシステムは，アーティファクトを抑圧することができる。こ推定鏡面荒さ取得部１０２は，実際には，プログラム，制御装置，演算装置及び記憶装置等により実装される。
【００２５】
図４は，本発明のシステムのハードウェア構成例を示すブロック図である。このシステムは，入力装置２１，制御装置２２，演算装置２３，記憶装置２４及び画像処理ブロック２５を有する。そして，各要素はバス２６により情報の授受ができるように接続されている。また，このシステムは，バス２６を介してインターフェース（Ｉ／Ｆ）２７と接続されている。このため，例えばこのシステムは，Ｉ／Ｆ２７を介して，プログラムを格納した情報記録媒体２８と接続することができる。このプログラムは，コンピュータを，所定の手段や所定の機能を有する装置として機能させるためのものである。また，このプログラムは，コンピュータに所定のステップを実行させるためのものである。なお，Ｉ／Ｆ２７を介して接続されるメモリが，記憶装置２４の全部又は一部として機能してもよい。
【００２６】
画像処理ブロック２５は，グラフィック処理ユニット（ＧＰＵ）２２及びビデオＲＡＭ（ＶＲＡＭ）３０を有する。そして，ＧＰＵ２９及びＶＲＡＭ３０は，情報の授受を行うことができるように接続されている。図中符号３１は表示画面（モニタ）を示す。ＧＰＵ及びＶＲＡＭ３０が本発明のシェーディング方法を実現してもよい。
【００２７】
また，例えば，制御装置２２，演算装置２３，記憶装置２４の作業空間，及び情報記録媒体２８に格納されたプログラムが，サンプリング部１０１と，推定鏡面荒さ取得部１０２として機能してもよい。そして，この場合，記憶装置２４及び情報記録媒体２８の記憶領域が，演算に必要な情報を記憶する領域及び作業領域として機能する。入力装置２１から操作情報が入力された場合，操作情報はバス２６を介して制御装置２２へ伝えられる。すると，制御装置２２は，情報記録媒体２８に格納されるプログラムを読出し，所定の処理を行う。制御装置２２は，プログラムからの指令に従って，記憶装置２４や情報記録媒体２８に記憶される各種情報を読出し，演算装置２３において所定の演算を行う。制御装置２２は，演算結果を適宜記憶装置２４に記憶し，演算結果を用いて所定の処理を行い，適宜フレームバッファ等の記憶装置２４に記憶させた後，モニタ３１から適切な情報を出力する。
【００２８】
上記のシステムは，本発明のシェーディング方法を実現し，コンピュータグラフィックスを得るため，ジオメトリ部，レンダリング部，フレームバッファ及び表示部として機能するものでもよい。ジオメトリ部は，ポリゴンデータを受け取り，輝度計算を含む計算を行う。レンダリング部は，頂点情報や輝度データを含む情報を用いて，レンダリング処理を行う。レンダリング部を経て得られるラスタデータは，フレームバッファに一時的に記憶され，表示部に表示される。
【００２９】
次に，本発明の第１のサンプリング方法について説明する。
【００３０】
サンプリング工程（Ｓ１０１）は，仮想光源１５からある対象物１９において反射してある視点２０へ至る光の経路を複数のサンプルについてサンプリングする工程である。このサンプリング工程は，たとえば，レイトレーシング法における通常のサンプリング工程を採用できる。
【００３１】
以下，サンプリング工程の例を説明する。なお，以下の例はあくまで例示のためのものであって，光源１１，仮想光源１５，対象物１９及び視点２０へ至る経路を求めることができれば，以下の方法以外の方法を用いてもよいことは明らかである。
【００３２】
工程１  ある視線２０からスクリーン上のある画素を通って物体１７方向に向かう視線を求める。その後，求めた視線と交差する物体１７を調べる。この工程では，たとえば，視点の座標を記憶部から読み出す。そして，視点の座標から，複数方向へ視線を放射する。この際，スクリーン上のある画素を通る視線を求めてもよい。それぞれの視線と交差する物体を調べる。この際，１又は複数の物体の座標（又は物体を構成するポリゴンの頂点座標）を記憶部から読み出す。そして，読み出した座標を用いて，視線と物体が交差するか否か求める演算を行う。このようにして，スクリーン上のある画素を通る視線が，ある物体と交差するか否か判断することができる。ある物体と視線とが交差するか否か判断した後は，それぞれの視線について，交差する物体の情報を記憶部に記憶する。
【００３３】
工程２  ある視線と交差する物体が存在する場合，視線と物体との交点を求める演算を行う。ある視線に対して，交差する物体が複数ある場合には，例えばある視線とすべての物体との交点を求めてもよい。この際，物体を構成するポリゴンの頂点座標を記憶部から読み出し，あるポリゴンとある視線との交点を求める演算をしてもよい。
【００３４】
工程３  ある視線と交差する物体の交点までの距離を求め，最も視点に近い物体を抽出してもよい。そして，ある視線に関して，交差する物体の内，ある物体が最も視点側に存在することも合わせて記憶してもよい。ある視線についてある物体が最も視点側に存在することは，たとえば，視点と物体との交点の座標との距離を比較する演算を行うことで求めることができる。
【００３５】
このようにして，ある物体と交差する視線群を求めることができる。そして，複数の視線の内，ある物体と交差すると判断されたものに関する情報を記憶部に記憶してもよい。更には，複数の視線のうち，ある物体と交差し，しかもある物体が最前面にあると判断された物に関する情報を記憶部に記憶してもよい。また，記憶部に記憶されたこれらの情報を読み出すことで，ある物体と交差する視線を読み出すことができる。
【００３６】
上記の経路に存在する物体又は壁が，反射又は屈折を起こす物体か否か判断する。これは，記憶部に物体（又は物体に含まれるポリゴン）に関する情報とともに，反射する物体であるか又は屈折を起こす物体であるかについての情報が格納されているため，その情報を記憶部から読み出して判断すればよい。上記の経路に存在する物体又は壁が，反射又は屈折を起こす物体の場合，反射方向又は屈折方向を求めるためのデータを記憶部から読み出して，上記の視線方向に関する情報と合わせて演算することで，反射方向又は屈折方向を求める。そのうえで，求めた反射方向又は屈折方向を新たな視線として，上記の工程２及び工程３を行い，反射又は屈折して見える物体を抽出する演算を行う。
【００３７】
上記のようにすることで，あるスクリーン上の複数の経路を求めることができる。また，あるスクリーン上の複数のサンプルの内，ある物体と交差する視線と関連するものの経路をも求めることができる。
【００３８】
推定鏡面荒さ取得工程（Ｓ１０２）は，サンプリング工程で得られた複数の経路を用いて，対象物表面における分布関数を得て，分布関数の最大値が所定の値以下となるように演算処理することで，対象物表面の推定鏡面荒さ（αｉ）を得るための工程である。
【００３９】
たとえば，この工程では，コンピュータが，サンプリング工程で求めた，ある視点からの視線のうちある物体と交差する視線群の経路を記憶部から読み出す。そのうえで，交点座標と関連し，記憶部から各交点における分布関数を読み出す。分布関数は，入射した光の反射率の分布を示す既知の関数である。
【００４０】
交点（衝突点）分布関数が求まった場合，対象物表面の推定鏡面荒さ（αｉ）を得る。すなわち，サンプリング工程で求めた複数の経路から，経路の密度を求めて，分布関数を表現する。そして，分布関数の最大値が経路の密度を含んで表現された所定の値以下となるような演算処理を行う。この工程を実現するために，例えば，あらかじめ所定の値を記憶部に記憶しておく。そして，この演算を行う場合，上記の所定の値を記憶部から読み出す。そして，分布関数の最大値を求める演算を行う。その後，分布関数の最大値が所定の値以下（又は未満）となるような演算を行う。このようにすると，分布関数の最大値が所定の値以下となるような推定鏡面荒さ（αｉ）を求めることができる。本発明のシステムは，この推定鏡面荒さ（αｉ）を用いてシェーディングを行う。このため，アーティファクトが発生する事態を抑制できる。
【００４１】
次に，本発明の第２の態様について説明する。第２の態様は，本発明のシェーディング方法によりアーティファクトが生じない適切な推定鏡面反射の荒さを求められることを明確に実現する態様である。図５は，本発明の第２の態様に関するシェーディング方法を説明するための工程例である。図５に示されるように，このシェーディング方法は，サンプリング工程（Ｓ１０１）と，推定密度算出工程（Ｓ１１２）と，分布関数取得工程（Ｓ１１３）と，推定鏡面荒さ算出工程（Ｓ１１４）とを含む。
【００４２】
図６は，本発明の第２の態様に関するコンピュータを用いたコンピュータグラフィックの描画システムを説明するためのブロック図である。図６に示されるように，このシステムは，サンプリング部１０１と，推定密度算出部１１２と，分布関数取得部１１３と，推定鏡面荒さ算出部１１４とを含む。サンプリング部１０１，推定密度算出部１１２，分布関数取得部１１３，及び推定鏡面荒さ算出部１１４は，それぞれサンプリング工程（Ｓ１０１），推定密度算出工程（Ｓ１１２），分布関数取得工程（Ｓ１１３），及び推定鏡面荒さ算出工程（Ｓ１１４）を実装するためのコンピュータにおける仮想的な要素である。コンピュータの入出力部，記憶部，演算部，制御部，及びそれらを接続するバスが，上記の各要素を実現する。
【００４３】
サンプリング部１０１は，仮想光源から対象物において反射してある視点へ至る複数のサンプルにおける光の輝度をサンプリングするための手段である。
【００４４】
推定密度算出部１１２は，サンプリング部で得られた経路を用いて，経路の密度である推定密度（確率密度）を求めるための手段である。
【００４５】
分布関数取得部１１３は，サンプリング部１０１で求めた経路のうち対象物との交点における分布関数を取得するための手段である。
【００４６】
推定鏡面荒さ算出部１１４は，分布関数取得部１１３で得られた分布関数を推定密度算出部１１２が求めた経路の密度を用いて，最大値が所定の値以下となるように演算処理することで，対象物表面の推定鏡面荒さを求めるための手段である。
【００４７】
サンプリング工程（Ｓ１０１）は，コンピュータが，仮想光源からある対象物において反射してある視点へ至る視線のサンプルにおける光の輝度経路をサンプリングするための工程である。仮想光源は，仮想的な３次元コンピュータグラフィックスにおける光源である。この工程は第一の態様におけるサンプリング工程と同様である。
【００４８】
推定密度算出工程（Ｓ１１２）は，サンプリング工程で得られた経路を用いて，経路の密度である推定密度（確率密度）を求めるための工程である。位置ｙにおける推定密度は，dハット（ｙ）のように表わすことができる。サンプリング工程では，通常複数の経路が求められる。この例では，経路の密度を，解析的に求める。すなわち，あらかじめ複数の経路を求めた場合に，求めた経路の数に応じで経路の密度を求めることができるようにしてもよく，また求めた複数の経路の位置から経路の密度を求めることができるようにしてもよい。前者の場合は，経路の数を求めた後，求めた経路の数を用いて所定の演算処理を行うことで経路の密度を求めることができる。また，後者の場合は，サンプリング工程で複数の経路を位置も合わせて求めた場合，所定の演算処理を行うことで経路の密度を求めることができる。
【００４９】
分布関数取得工程（Ｓ１１３）は，サンプリング工程（Ｓ１０１）で求めた経路のうち対象物との交点における分布関数を取得するための工程である。サンプリング工程（Ｓ１０１）では，視線（すなわち経路）と対象物との交点が求められる。そして，この工程（Ｓ１１３）では，例えば，コンピュータが記憶部から交点の座標を読み出す。そして，コンピュータが，交点の座標を用いて，読みだした交点の座標と関連して記憶されている分布関数を記憶部から読み出す。このようにして経路状の対象物との交点における分布関数を得ることができる。なお，分布関数は，対象物の荒さパラメータαを用いた所定の関数である。  
【００５０】
推定鏡面荒さ算出工程（Ｓ１１４）は，分布関数取得工程（Ｓ１１３）で得られた分布関数の最大値が所定の値以下となるように演算処理することで，サンプルを含む対象物表面の推定鏡面荒さを求めるための工程である。推定鏡面荒さ（αｉ）とは，コンピュータグラフィックスにおいてある物体の表面における鏡面反射を求める際に用いられるアーティファクトの生じにくい鏡面の荒さを推定した値である。本発明は，既に知られた表面粗さ（α）ではなく，この推定鏡面荒さを表面の粗さとして用いることで，アーティファクトを抑圧したコンピュータグラフィックスを達成できる。分布関数を，たとえば，経路の密度dハット（ｙ）を用いて表現することができる。そして，分布関数の最大値が所定の値以下となるように演算処理することで，推定鏡面荒さ（αｉ）を求めることができる。たとえば，そして，分布関数の最大値（すなわち，経路の密度を含む関数の最大値）を求め，これが所定の値以下となるように経路の密度を含む関数の係数を求める。その後，その係数及び経路の密度を用いて表面粗さを表現する。そのうえで，その係数及び経路の密度を用いて表面粗さと，既に知られた表面粗さ（α）とのうち小さい方を求める演算を行う。そして，この態様では，その求められた小さい方のパラメータと０のうち大きい方を推定鏡面荒さとする。この演算は，コンピュータが，記憶部より分布関数，経路の密度dハット（ｙ）を読み出して，所定の演算を行う回路又はプログラムにより求めることができる。
【００５１】
コンピュータは，上記のようにして推定鏡面荒さを求めることができる。そして，コンピュータは，この推定鏡面荒さを用いて間接光を含むシーンを描画するシェーディング処理を行う。本発明のシステムは，特に鏡面物体の表面を描画するために有効である。シェーディング処理を行った後に，ラスタライズを行うことで，コンピュータグラフィックスを得ることができる。
【実施例１】
【００５２】
以下の実施例においては，アーティファクトをスムージングにより抑圧する。この方法は，光沢を有する物体の粗さパラメータをカーネル密度推定に基づいてクランピングすることにより求める。一般的に，推定密度は，以下の式で表わすことができる。
【００５３】
【数１】
0005937957.tif 000002
【００５４】
ここで，ｄハット（ｙ）は，位置ｙにおける推定密度であり，Ｋはカーネル関数であり，ｙｉは，ｉ番目の粒子の位置であり，Φはその粒子の重み関数であり，ｒはカーネル半径であり，Ｖ（ｒ）は標準化係数である。
【００５５】
なお，粒子は，サンプルした経路に相当する。
【００５６】
カーネル半径が小さすぎると推定密度分布がシャープになり現実のものとは大きくかけ離れてしまう。この実施例においては，粒子ごとに異なるカーネル半径を採用することができる。
【００５７】
【数２】
0005937957.tif 000003
【００５８】
ｉ番目の粒子の位置ｙｉにおける推定密度ｄハット（ｙｉ）が与えられれば，ｉ番目の粒子のカーネル半径ｒｉを以下のように近似して求めることができる。
【００５９】
【数３】
0005937957.tif 000004
【００６０】
上記の式においてｎは，最近接粒子の数である。本実施例において，分散関数Ｄを以下のカーネル関数として取り扱う。
【００６１】
【数４】
0005937957.tif 000005
【００６２】
すなわち，物質の粗さパラメータをおよそｒに関するものとして取り扱う。Ｄの最大値は，以下の式を満たすように上限が設定される。
【００６３】
【数５】
0005937957.tif 000006
【００６４】
上記の式を満たすため，この実施例では，物質の粗さに関して新しい概念を用いた。
【００６５】
例えば，鏡面反射成分がフォンの分布に従う場合，分布関数Ｄを以下のように表わすことができる。
【００６６】
【数６】
0005937957.tif 000007
【００６７】
ここで，α（アルファ）は，フォンのモデルにおけるハイライトの特性を示す指数値である。この場合，αは，以下の式を満たすように求められる。
【００６８】
【数７】
0005937957.tif 000008
【００６９】
すると，ｉ番目の粒子の荒さパラメータαを以下の推定鏡面荒さαｉとしてクランプすることができる。
【００７０】
【数８】
0005937957.tif 000009
【００７１】
上記した分布関数Ｄの式を用いて，物質の表面粗さをクランプするため，以下の仮定を用いた。
【００７２】
【数９】
0005937957.tif 000010
【００７３】
ここで，ｄ（ｘ，ｗｉ）は，位置ｘ及び方向ｗｉにおける単位立体角あたりのサンプルの密度である。ｗｉ及びｗ’ｉは，それぞれ，ｉ番目のサンプルにおける入射方向及び出射方向である。例えば，図４に示すパス（ｘ０，ｘ１，ｘ２，ｘ３）がサンプリングされた場合について検討する。簡単のために，位置ｘｊにおけるｉ番目の粒子の推定密度ｄハット（ｙｊ）を，ｄハットｊとし，ｄ（ｘｊｗｊ，ｋ）をｄｊ，ｋとする。なお，ｗｊ，ｋは，位置ｘｊから位置ｘkへの方向を意味する。
【００７４】
ファイナルギャザリング計算において，ｄハットは，ｄ３，２が無限大であるから，以下のように求められる。
【００７５】
【数１０】
0005937957.tif 000011
【００７６】
Ｎは，サンプルの数であり，ｐｇは，ＰＤＦ（確率密度関数）である。
【００７７】
光路（ｘ０，ｘｊ，ｘ３）（ここで，ｊは１又は２）で示される点光源からの１バウンス間接光の場合，ｄハットは次式で与えられる。
【００７８】
【数１１】
0005937957.tif 000012
【００７９】
【数１２】
0005937957.tif 000013
【００８０】
適切なｎを，反射の重みから求めることができる。
【００８１】
【数１３】
0005937957.tif 000014
【００８２】
ここで，ｎ’は，ユーザが設定できるパラメータである。
【実施例２】
【００８３】
上記のアルゴリズムを評価した。その結果を図７に示す。図７は，コーネルボックス中の点光源と鏡面像のコンピュータグラフィックスに関する（アルファが３００，Ｎが８４）。図７中（ａ）は，抑圧を行わない例（比較例）を示し，（ｂ）はＶＳＬ（ＶＳＬごとに最大１０サンプル点のもの）の例（比較例）を示し，（ｃ）は本発明（仮想的な最大近接数ｎに関連するパラメータｎ’を８としたもの）の描画例を示し，（ｄ）はグラウンドトルース（フレームバッファとして６４０×４８０ピクセル，ＶＰＬのシャドウマップ：２５６×２５６ピクセル，レイバンドルズ：２５６×２５６ピクセルを用い，ＧＰＵとしてＡＭＤ  ＲＡＤＥＯＮ  ＨＤ６８５０を用いたもの）を示す。
【００８４】
本実施例においても，全てのピクセルにおいて同じランダム数が用いられたため，モンテカルロインテグレーションによる分散により，アーティファクトが若干生じている。
【産業上の利用可能性】
【００８５】
本発明は，コンピュータグラフィックスに関するため，コンピュータやアミューズメントの分野にて利用されうる。
【符号の説明】
【００８６】
１０１  サンプリング部
１０２  推定鏡面荒さ取得部
【００８７】
なお，本発明は，添付した論文及び論文中に引用された文献に含まれる事項及びこれらから当業者にとって自明な発明をも含むものである。
【図１】
0005937957.tif 000015
【図２】
0005937957.tif 000016
【図３】
0005937957.tif 000017
【図４】
0005937957.tif 000018
【図５】
0005937957.tif 000019
【図６】
0005937957.tif 000020
【図７】
0005937957.tif 000021