(57)【要約】【課題】拡散反射率の低い物体を含むシーンについて、ノイズを低減したCG画像を生成する。【解決手段】光源からシーンに射出された第1の光線を追跡し、拡散物体に衝突した位置に対応するシーンの区分に第1のフォトンを配置することでフォトン分布マップを作成する(S502)。次に、視点からシーンに射出された第2の光線を追跡し、第1のフォトンが配置されていない光沢物体または透過物体に衝突した位置に対応するシーン区分に第2のフォトンを配置することで、フォトン分布マップを補間する(S503)。そして、前記第1および第2のフォトンを用いたサンプリングによるレイトレーシングを行うことで、シーンを表す画像の画素値を算出する(S504,S505)。【選択図】  図5
2015114775.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータグラフィックスによりシーンを表わす画像を生成する画像処理装置であって、
光源からシーンに射出された第1の光線を追跡する第1の追跡手段と、
前記第1の光線が第1の物体に衝突した位置に対応する前記シーンの区分に対し、前記光源からの光の影響を示す第1のフォトンを配置する第1の配置手段と、
視点から前記シーンに射出された第2の光線を追跡する第2の追跡手段と、
前記第2の光線が、前記第1のフォトンが配置されていない第2の物体に衝突した位置に対応する前記シーンの区分に対し、前記光源からの光の影響を示す第2のフォトンを配置する第2の配置手段と、
前記第1および第2のフォトンを用いたレイトレーシングにより、前記シーンを表す画像の画素値を算出するレンダリング手段と、
を有することを特徴とする画像処理装置。
【請求項２】
さらに、前記シーンの区分ごとに前記第1および第2のフォトンを管理するフォトン管理手段を有し、
前記第1および第2の配置手段は、前記第1および第2のフォトンを前記区分ごとに配置することを特徴とする請求項1に記載の画像処理装置。
【請求項３】
前記レンダリング手段は、前記第1および第2のフォトンの分布に応じて、前記レイトレーシングにおける光線方向の分布を決定することを特徴とする請求項1または2に記載の画像処理装置。
【請求項４】
前記第2の物体は、前記第1の物体よりも拡散反射率が低いことを特徴とする請求項3に記載の画像処理装置。
【請求項５】
前記第2の物体は、所定値以上の鏡面反射率を有する光沢物体または所定値以上の透過率を有する透過物体であることを特徴とする請求項3または4に記載の画像処理装置。
【請求項６】
前記第2の配置手段は、前記第2の光線が前記光沢物体に衝突する位置における、該光線の反射方向に対応する反射方向フォトンと、光源方向に対応する光源方向フォトンを、前記第2のフォトンとして配置することを特徴とする請求項5に記載の画像処理装置。
【請求項７】
前記レンダリング手段は、前記視点から射出される1次光線について、前記第1のフォトンと前記反射方向フォトンの分布に応じて前記光線方向の分布を決定することを特徴とする請求項6に記載の画像処理装置。
【請求項８】
前記レンダリング手段は、前記シーン内での反射または透過を経た2次光線について、前記第1のフォトンと前記光源方向フォトンの分布に応じて前記光線方向の分布を決定することを特徴とする請求項6または7に記載の画像処理装置。
【請求項９】
前記レンダリング手段では、前記2次光線については、前記第1のフォトンの分布と、前記光源方向フォトンにおける前記2次光線の反射方向に応じて、前記光線方向の分布を決定することを特徴とする請求項8に記載の画像処理装置。
【請求項１０】
前記光源方向フォトンは前記光沢物体の反射特性の情報を有し、
前記レンダリング手段では、前記反射特性の情報に応じて、前記光源方向フォトンにおける前記2次光線の反射方向を取得することを特徴とする請求項9に記載の画像処理装置。
【請求項１１】
前記第2の配置手段は、前記第2の光線が前記透過物体に衝突する位置における、該光線の透過方向に対応する透過方向フォトンを、前記第2のフォトンとして配置することを特徴とする請求項5に記載の画像処理装置。
【請求項１２】
前記レンダリング手段では、前記シーン内での反射または透過を経た2次光線について、前記第1のフォトンの分布と、前記透過方向フォトンにおける前記2次光線の透過方向に応じて、前記光線方向の分布を決定することを特徴とする請求項11に記載の画像処理装置。
【請求項１３】
前記透過方向フォトンは前記透過物体の透過特性の情報を有し、
前記レンダリング手段では、前記透過特性の情報に応じて、前記透過方向フォトンにおける前記2次光線の透過方向を取得することを特徴とする請求項12に記載の画像処理装置。
【請求項１４】
前記第1および第2のフォトンは、前記光源から物体表面へ入射する光線における、位置情報、エネルギー量、入射方向、入射位置の法線方向、物体表面の反射率、物体の屈折率、物体の透過率、およびフォトンの種類、の少なくとも1つの情報を有することを特徴とする請求項1乃至13のいずれか1項に記載の画像処理装置。
【請求項１５】
コンピュータグラフィックスによりシーンを表わす画像を生成する画像処理装置であって、
光源からシーンに射出された第1の光線を追跡する第1の追跡手段と、
前記第1の光線が第1の物体に衝突した位置に対応する前記シーンの区分に対し、前記光源からの光の影響を示す第1のフォトンを配置する第1の配置手段と、
視点から前記シーンに射出された第2の光線を追跡する第2の追跡手段と、
前記第2の光線が、前記第1の物体よりも拡散反射率が低い第2の物体に衝突した位置に対応する前記シーンの区分に対し、前記光源からの光の影響を示す第2のフォトンを配置する第2の配置手段と、
前記第1および第2のフォトンを用いたレイトレーシングにより、前記シーンを表す画像の画素値を算出するレンダリング手段と、
を有することを特徴とする画像処理装置。
【請求項１６】
第1および第2の追跡手段、第1および第2の配置手段、レンダリング手段を有し、コンピュータグラフィックスによりシーンを表わす画像を生成する画像処理装置における画像処理方法であって、
前記第1の追跡手段が、光源からシーンに射出された第1の光線を追跡し、
前記第1の配置手段が、前記第1の光線が第1の物体に衝突した位置に対応する前記シーンの区分に対し、前記光源からの光の影響を示す第1のフォトンを配置し、
前記第2の追跡手段が、視点から前記シーンに射出された第2の光線を追跡し、
前記第2の配置手段が、前記第2の光線が、前記第1のフォトンが配置されていない第2の物体に衝突した位置に対応する前記シーンの区分に対し、前記光源からの光の影響を示す第2のフォトンを配置し、
前記レンダリング手段が、前記第1および第2のフォトンを用いたレイトレーシングにより、前記シーンを表す画像の画素値を算出することを特徴とする画像処理方法。
【請求項１７】
第1および第2の追跡手段、第1および第2の配置手段、レンダリング手段を有し、コンピュータグラフィックスによりシーンを表わす画像を生成する画像処理装置における画像処理方法であって、
前記第1の追跡手段が、光源からシーンに射出された第1の光線を追跡し、
前記第1の配置手段が、前記第1の光線が第1の物体に衝突した位置に対応する前記シーンの区分に対し、前記光源からの光の影響を示す第1のフォトンを配置し、
前記第2の追跡手段が、視点から前記シーンに射出された第2の光線を追跡し、
前記第2の配置手段が、前記第2の光線が、前記第1の物体よりも拡散反射率が低い第2の物体に衝突した位置に対応する前記シーンの区分に対し、前記光源からの光の影響を示す第2のフォトンを配置し、
前記レンダリング手段が、前記第1および第2のフォトンを用いたレイトレーシングにより、前記シーンを表す画像の画素値を算出することを特徴とする画像処理方法。
【請求項１８】
コンピュータに、請求項1乃至15のいずれか1項に記載の画像処理装置の各手段を実行させるためのプログラム。
【請求項１９】
請求項18に記載のプログラムを記憶したことを特徴とするコンピュータ可読な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィックスによりシーンを表わす画像を生成する画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
近年、コンピュータグラフィックス(以下、CG)は様々な分野で利用されている。CGは設計やデザインの分野でも広く利用されており、このような分野では、実物により忠実な画像を生成する技術が要求される。CGを用いて実物を忠実に再現する手法として、レイトレーシング法(光線追跡法)が知られている。
【０００３】
レイトレーシング法は、三次元空間における仮想的な光の伝搬経路を追跡することで反射や屈折を表現可能であるため、実物に忠実な画像生成に適した手法である。また、レイトレーシング法を周囲からの環境光にも対応させた、パストレーシング法と呼ばれる手法も存在する。パストレーシング法ではモンテカルロサンプリング(乱数処理)を用いて、画素ごとに様々な方向から到達する光の経路を算出する。そのため、サンプリング数(光の経路数)が少ない場合は画素間で経路に偏りが生じ、ノイズの要因となる。
【０００４】
ノイズを低減するには、モンテカルロサンプリングのサンプル数を増加させる必要があるが、膨大な処理時間を要する。そのため、準モンテカルロ法による乱数の効率化によってノイズの低減を図った手法(特許文献1参照)や、映像の品質に関わる重要な領域のみを重点的にサンプリングする手法も存在する。後者の1つが双方向レイトレーシング法と呼ばれる手法であり、光源と視点双方から光線を追跡することによって、効率的なサンプリングを実現する。双方向レイトレーシング法としては、輝度の高い領域を重点的に処理するメトロポリス光輸送方式や、光源からの光線を"フォトン"としてシーン中に拡散させる方式(非特許文献1参照)も存在する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表2010-501100号公報
【非特許文献】
【０００６】
【非特許文献１】"Importance Driven Path Tracing using the Photon Map",Henrik Wann Jensen,Eurographics Rendering Workshop,44-4 self
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記特許文献1に記載の手法では、純粋な乱数を用いていないため、レンダリング結果に誤差が生じる可能性があり、さらに、ノイズの低下量も小さい。一方、非特許文献1に記載の手法では、透過物体や光沢物体等、拡散反射率の低い物体に対しては効率的なサンプリングが行えず、ノイズが低減できない。
【０００８】
本発明は上記の課題を鑑み、拡散反射率の低い物体を含むシーンについて、ノイズを低減したコンピュータグラフィックス画像を生成することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するための一手段として、本発明の画像処理装置は以下の構成を備える。すなわち、コンピュータグラフィックスによりシーンを表わす画像を生成する画像処理装置であって、光源からシーンに射出された第1の光線を追跡する第1の追跡手段と、前記第1の光線が第1の物体に衝突した位置に対応する前記シーンの区分に対し、前記光源からの光の影響を示す第1のフォトンを配置する第1の配置手段と、視点から前記シーンに射出された第2の光線を追跡する第2の追跡手段と、前記第2の光線が、前記第1のフォトンが配置されていない第2の物体に衝突した位置に対応する前記シーンの区分に対し、前記光源からの光の影響を示す第2のフォトンを配置する第2の配置手段と、前記第1および第2のフォトンを用いたレイトレーシングにより、前記シーンを表す画像の画素値を算出するレンダリング手段と、を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、拡散反射率の低い物体を含むシーンについて、ノイズを低減したコンピュータグラフィックス画像を生成することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明にかかる一実施形態における画像処理システムの構成を示すブロック図、
【図２】レイトレーシングの概要を説明する図、
【図３】レイの追跡方法を説明する図、
【図４】双方向レイトレーシングについて説明する図、
【図５】本実施形態における双方向レイトレーシング処理を示すフローチャート、
【図６】本実施形態におけるフォトン分布マップ生成処理を示すフローチャート、
【図７】本実施形態におけるフォトン分布マップ補間処理を示すフローチャート、
【図８】本実施形態におけるサンプリング数算出処理を示すフローチャート、
【図９】本実施形態におけるレイトレーシング処理を示すフローチャート、
【図１０】第2実施形態におけるフォトン分布マップ補間処理を示すフローチャート、
【図１１】フォトン補間処理を説明する図、である。
【発明を実施するための形態】
【００１２】
以下、添付の図面を参照して、本発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【００１３】
＜第1実施形態＞
本実施形態では、特に光沢物体を含むシーンの双方向レイトレーシングにおけるノイズ低減手法について説明する。
【００１４】
●システム構成
図1は、本実施形態における画像処理装置のシステム構成を示すブロック図である。本実施形態の画像処理装置はコンピュータグラフィックス(以下、CG)画像の生成装置として機能し、CPU101、メインメモリ102、記憶装置103、入力装置104、表示装置105、バス106を備える。CPU101は演算処理や各種プログラムの実行を行う。メインメモリ102は処理に必要なプログラム、データ、作業領域などをCPU101に提供する。記憶装置103は画像生成プログラムや光源やオブジェクトの特性データを蓄積する装置であり、例えばハードディスクが用いられる。尚、光源やオブジェクトの特性データの詳細については後述する。入力装置104はユーザ操作を入力するための装置であり、例えばキーボードやマウスである。表示装置105はCPU101が生成した画像を表示するための装置であり、CRTや液晶画面などで構成される。バス106は上述の各部をつなぐバスである。なお、実際のシステムには上記以外にも様々な構成要素が存在するが、本発明の主眼ではないため詳細な説明は省略する。
【００１５】
●一般的なレイトレーシング
ここで、一般的なレイトレーシング法の概要について、図2,図3を用いて説明する。
実世界においては、光線(以降、レイ)は光源から発生し、様々な経路を経て、視点(カメラ)に到達する。そのため、レンダリングにおいても、光源から仮想的にレイを発生させ、レイが視点に到達するまでの処理を行うことが望ましい。しかしながら、光源から視点までのレイを追跡した場合、視点に到達しないレイも多く発生するため、無駄となってしまう処理も多い。そのため、通常のレイトレーシングにおいては視点方向からレイを発生させる。
【００１６】
図2は、一般的なレイトレーシング法の概要を示す図である。図2(a)に示すように、レンダリング時は仮想空間209内に、視点位置(視点201)と視野角204、前方クリップ面202、後方クリップ面203を決定する。そして、視野角204、前方クリップ面202、後方クリップ面203で囲まれた台形領域205をレンダリング領域とし、レンダリング対象となる各種物体は仮想空間209内に設置される。レンダリング領域が決定されると、図2(b)に示すように、視点201から前方クリップ面202に対し、レイを画素ごとに放出する。例えばレンダリング結果を800x600画素で表示する場合であれば、前方クリップ面を800x600に分割し、各画素の中心にレイを放出する。
【００１７】
図3は、レイの追跡方法を示す図である。図3(a)は、物体表面に光が入射した際のレイの挙動を示す。物体表面に入射した光は、物体表面で様々な方向に反射される。この際、どの方向にどれだけの強度で反射されるかは、物体の反射特性によって決まる。ここで重視すべきは、反射方向が複数存在することである。図3(b)は、視点からのレイの追跡方法を説明する図である。視点308から放出したレイは、物体305に衝突し、反射される。その後、壁などに衝突・反射を繰り返し、光源302にたどり着くまで追跡処理を行う。物体305に衝突したレイは、様々な方向に反射されるため、レイ306,307等の複数方向に分岐する。この分岐方向を乱数によって決定することで、様々な方向へのレイを発生させる手法として、モンテカルロサンプリング(パストレーシング法)がある。しかしながらモンテカルロサンプリングでは、1画素に対して数千から数万のサンプリング数が必要であるため、多大な処理時間を要する。サンプリング数が十分でない場合には、各画素間の輝度差が大きくなり、ノイズの要因となってしまう。
【００１８】
したがって、モンテカルロサンプリングよりもさらに効率的なサンプリング手法が必要となる。このようなさらに効率的なサンプリング手法として、反射するレイの方向にバイアスをかけて、サンプリング数を空間領域ごとに制御する双方向レイトレーシング法が挙げられる。
【００１９】
図4は、一般的な双方向レイトレーシング法の概要を示す図である。図4(a)に示すように双方向レイトレーシング法では、通常のレイトレーシング法による処理を実施する前に、光源からのレイを発生させる。すなわち、光源401から各方向に満遍なくレイを放出し、各レイが拡散物体404と衝突した場合、衝突座標上にフォトンと呼ばれる一定のエネルギーを持った粒子を配置する。図4(a)のシーンにおいては、拡散物体404や床402、壁403が拡散物体である。ここで拡散物体とは、拡散反射率が高い(所定値以上である)、光沢のないマットな物体である。
【００２０】
一方、光沢物体405や透過物体406にレイが衝突した場合には、レイは反射または透過し、拡散物体に衝突するまで処理を繰り返す。そのため、光沢物体と透過物体の表面にはフォトンが配置されない。ここで光沢物体とは鏡面反射率が高い物体、透過物体とは透過率の高い物体であり、いずれも拡散物体よりも拡散反射率が低いことは言うまでもない。
【００２１】
図4(b)は、図4(a)のシーンにおいて、視点408から見たフォトンの分布を表している。図4(b)においては点線円で囲まれているように、フォトンが密になっている空間領域がいくつかあるが、このような領域は以下の2点において重要である。まず1点目は、画像化した際に輝度が高く、サンプリング数不足によるノイズが目立ちやすいということである。そして2点目は、光が集まる領域であるため、反射したレイが光源にたどり着く可能性が高いことである。したがってこのような領域は、通常のレイトレーシング法において、視点からレイを放出する際や反射レイの方向を決定する際に、重点的にレイを放出する空間領域を決定する手掛かりとなる。しかしながら図4(b)に示すように、光沢物体や透過物体などの反射特異性を示す物体にはフォトンが配置されないため、その領域については重要度が判断できず、レイの放出(サンプリング数)を多くすべきか否かの判断が困難となる。したがって、透過物体や光沢物体を含む領域についてノイズ量を確実に削減するためには、当該領域に対して大量のレイを放出する必要があり、処理の効率化が妨げられる。
【００２２】
ここで図4(c)に、一般的な双方向レイトレーシング法におけるフォトンのデータ構造を示す。まず、仮想空間209を複数区分(以下、ブロック)に分割し、各ブロックに対しフォトンの格納数を保持させる。なお、ブロックの形状としては例えば立方体が考えられる。そして各フォトンには、シーン内での位置情報としての位置座標、エネルギー量、光源からの入射方向、入射位置における法線方向、物体表面の反射率、物体の透過特性としての屈折率、透過率、およびフォトンの種類、等の情報が記録される。このようにデータを階層構造で保持することにより、フォトンデータへの効率的なアクセスを可能とする。以下、このようなフォトンのデータ構造を、フォトン分布マップと称する。フォトン分布マップはすなわちフォトンデータを管理するフォトン管理手段として機能し、ブロックに格納された分のフォトンにアクセスするだけで、各ブロックの空間内での重要度が判別できる。また、各フォトンはエネルギー量を保持することから、フォトン分布マップは光源からの光の影響、すなわちエネルギー寄与状況をマップ化したものと見なせる。
【００２３】
●本実施形態の双方向レイトレーシング(光沢物体に対応)
本実施形態では上述した双方向レイトレーシング法において、シーン内に含まれる光沢物体に応じてフォトン分布マップを補間することで、ノイズの少ないCG画像を得ることを目的とする。以下、本実施形態における双方向レイトレーシング処理について、詳細に説明する。
【００２４】
図5は、本実施形態における双方向レイトレーシング処理を示すフローチャートである。まずS501で、レンダリングサイズ(画素数)、視点データ、光源データ、オブジェクトデータ、等のシーンデータを読み込む。視点データは、視点位置、視線方向、画角から成る。光源データは、光源の明るさ情報である放射輝度、光源位置から成る。オブジェクトデータは、シーン内に配置する各物体の位置、ポリゴンから成る形状データのほか、表面反射特性、屈折率から成る。
【００２５】
次にS502で、光源データを用いて光源位置から仮想空間209内にレイを放出し、フォトン分布マップを生成する。このフォトン分布マップは上記図4(c)に示したデータ構造を有する。なお、このフォトン分布マップ生成処理の詳細については後述するが、このS502の終了時点では、仮想空間209内の光沢物体にはフォトンが配置されていない。
【００２６】
次にS503で、視点方向から仮想空間209内にレイを放出し、フォトンが配置されていない領域にフォトンを補間する。そしてS504で、シーン内のフォトン分布に応じて、レンダリングを行う各画素に1次光線(1次レイ)のサンプリング数を割り振り、S505で該サンプリング数を用いたレイトレーシング処理を実行する。なおS505のレイトレーシングにおいても、フォトン分布に応じて2次光線(2次レイ)のサンプリングを行う。これにより、本実施形態ではノイズの少ないCG画像を出力することができる。
【００２７】
●フォトン分布マップ算出(S502)
以下、上記S502におけるフォトン分布マップの算出処理について、図6のフローチャートを用いて説明する。なお本実施形態では、シーン内に拡散物体と光沢物体が含まれる場合を例として説明する。実際には、さらに透過物体が含まれる場合も考えられるが、その場合については第2実施形態にて説明する。
【００２８】
まずS601で、光源から仮想空間209内にレイを放出する。このときのレイの方向は、乱数によって決定する。そしてS602で、レイと仮想空間209内の各物体との衝突判定を行う。そしてS603で衝突物体が光沢物体であるか否かを判定し、光沢物体であればS604に進み、光沢物体でない、すなわち拡散物体であればS605に進む。なお、この判定は予め定められた物体特性の情報に基づいて行う。
【００２９】
S604では、衝突した光沢物体の反射方向にレイを反射させる。なお、反射方向は光沢物体の表面反射特性に依存する。反射したレイは、S602に戻って衝突判定からの処理を繰り返す。
【００３０】
一方、S605では、レイの追跡を停止してフォトンを生成する。このとき、フォトンを生成するか消滅するかを選択する。衝突した拡散物体の反射率がR(0＜R＜1)であれば、フォトンを生成する確率はRになる。実際の処理では乱数a(0＜a＜1)を発生させ、a≦Rの場合はフォトンを生成し、それ以外は消滅させるようにする。フォトンを生成する場合、物体との衝突位置座標、光源から物体への入射方向、エネルギー量、等をフォトン分布マップに記録して、処理を終了する。
【００３１】
以上の処理を、必要なフォトン数に対して実施することで、光源から放出された光線の追跡により、光源からのエネルギー寄与の状態を表すフォトン分布マップが生成される。
【００３２】
●フォトン分布マップ補間(S503)
以下、上記S503におけるフォトン分布マップの補間処理について、図7のフローチャートを用いて説明する。
【００３３】
まずS701で、図4(c)に示すように仮想空間209を分割した空間ブロックから1つのブロックを抽出し、視点からそのブロックに向けてレイ(1次レイ)を放出する。そしてS702で、1次レイと仮想空間209内の各物体との衝突判定を行い、S703で衝突位置の周辺に他のフォトンが分布しているか否かを判定する。衝突位置周辺にフォトンが分布していれば、該衝突した物体は拡散物体であると考えられ、当該衝突位置にフォトンを補間する必要がないと判断し、そのまま処理を終了する。一方、衝突位置周辺にフォトンが分布していなければ、衝突した物体は光沢物体であると考えられ、フォトンを補間するためにS705に進む。
【００３４】
S705では、光沢物体の反射方向にレイ(2次レイ)を放出する。すなわち図11(a)の左側に示すように、視点位置と光沢物体を結ぶベクトルの正反射方向に、1本目の2次レイ1301を放出する。この2次レイ1301は、拡散物体に衝突するまでシーン内での反射を繰り返す。次にS706では、2次レイと拡散物体との衝突位置を算出し、その周辺の所定範囲内に存在するフォトンを探索する。そしてS707で、光沢物体に配置される反射方向フォトンを算出する。すなわち図11(a)の右側に示すように、S706で探索された2次レイの衝突位置周辺のフォトンを用いて、反射方向フォトン1311を算出する。具体的には、衝突位置周辺でＮ個のフォトンが検出され、衝突した拡散物体の反射率をＲ(0≦Ｒ≦1.0)とすると、光沢物体にはＮ×Ｒ個の反射方向フォトンが配置される。なお、この配置位置としては、1次レイの衝突位置周辺の所定範囲内に所定の規則で配置されれば良く、当該ブロック内の光沢物体表面であれば特に制限しない。
【００３５】
次にS708では、光源方向にレイを放出する。すなわち図11(a)の左側に示すように、視点位置からの1次レイが光沢物体に衝突した点から光源方向に2本目の2次レイ1302を放出する。次にS709で図11(a)の右側に示すように、光沢物体に配置される光源方向フォトン1312を算出する。具体的には、2次レイ1302が光源に到達した場合、光源から放出されるフォトン数をＬ個、光源から光沢物体までの距離をｒとすると、光は距離の2乗で減衰するため、光沢物体に到達するフォトン数は、Ｌ/(ｒxｒ)個となる。そのため、光沢物体にはＬ/(ｒxｒ)個の光源方向フォトンを配置させる。なお、光源から放出されるフォトン数Ｌとしては、予め定められているものとする。また、光源方向フォトンの配置位置については反射方向フォトンと同様に、当該ブロック内の光沢物体表面であれば特に制限しない。
【００３６】
そしてS710で、S707で算出した反射方向フォトン1311と、S709で算出した光源方向フォトン1312を、フォトン分布マップに記録する。なお、反射方向フォトンと光源方向フォトンが区別できるように、図4(c)のフォトン分布マップにおける「種類」情報に適切なフラグを記述しておく。
【００３７】
このように本実施形態では光沢物体に対し、視点方向からのレイ追跡により2種類のフォトンを配置する。以上の補間処理を、全ての空間ブロックに対して行う。なお、1つのブロックに対し複数本のレイを、少しずつ位置をずらしながら放出しても良い。このとき、フォトンが配置されていないブロックに対し、レイを重点的に放出すればより効果的である。なお、本実施形態では視点から空間ブロックに対してレイを放出する例を示したが、視点から各画素に向けて放出しても構わない。
【００３８】
このようにS503によれば、視点から放出された光線の追跡により、光源からの光線追跡で生成されたフォトン分布マップを補間する。
【００３９】
●サンプリング数算出(S504)
以下、上記S504における各画素のサンプリング数の算出処理について、図8のフローチャートを用いて説明する。
【００４０】
まずS801で、視点からレンダリングを行う各画素に対しレイを放出する。このとき、例えば画素中央部に向けてレイを放出すれば良い。次にS802で、各レイが最初に衝突する、フォトン分布マップにおけるブロックを算出し、該ブロック内のフォトン数を取得して各画素に対応づける。つまり、各画素がフォトン数を保持する状態となる。このとき、ブロック内に光沢物体が含まれる場合には、図11(b)の左側に示すように、視点から射出される1次レイの重点サンプリングに反射方向フォトン1311を利用する。すなわち、上記S503で補間された反射方向フォトン1311を、S502で生成された通常のフォトン(以下、通常フォトンとも称する)と同様にフォトン数としてカウントする。
【００４１】
そしてS803で、全画素が保持している全フォトン数Ｆpを算出し、S804で、各画素のサンプリング数を決定する。具体的には、i番目の画素が保持するフォトン数をＦiとし、全画素に対してＳp回のサンプリングを実施する場合、i番目の画素におけるサンプリング数Siは、以下の式(1)により算出される。
Ｓi＝Ｓp×(Ｆi/Ｆp)      …(1)
すなわちS504によれば、ブロック内に光沢物体が含まれる場合、通常フォトンと反射方向フォトンの分布に応じて、各画素に対する1次レイのサンプリング数、すなわち光線方向の分布を決定する。
【００４２】
●レイトレーシング処理(S505)
以下、上記S505における本実施形態のレイトレーシング処理について、図9のフローチャートを用いて説明する。なお図9は、i番目の画素に対する処理を示しており、実際には同処理を全画素に対して行う。
【００４３】
まずS901で、S504で算出したi番目の画素に対するサンプリング数Ｓiを取得し、S902で変数nに初期値として0をセットする。そしてS903で、視点から画素にレイ(1次レイ)を放出する。このとき、レイの減衰率Ａnを1に初期化しておく。
【００４４】
次にS904でレイと物体との衝突を判定し、衝突があればS905に進み、衝突がなければS909に進む。S905では衝突物体が光源であるか否かを判定する。光源であればS906へ進み、光源でなければS907に進む。S906では、減衰率Ａnと光源の放射輝度から、視点に入る放射輝度Ｉnを以下の式(2)により算出した後、S909に進む。
Ｉn＝Ａn×Ｌ      …(2)
S907では、画素値の算出に必要なレイの減衰率Ａnを算出する。
【００４５】
ここで、レイが光沢物体A、B、および透過物体Cに衝突した後、光源にたどり着いた場合を考える。このとき、物体Aと物体Bの反射率をそれぞれ、ｋA、ｋBとし、物体Cの透過率をＴC、光源の放射輝度をＬとすると、視点に入る放射輝度Ｉは以下の式(3)で算出される。
Ｉ＝ｋA×ｋB×ＴC×Ｌ      …(3)
ここで、下式(4)のように、各物体の反射率と透過率をまとめて減衰率Ａとして表現する。
2015114775.tif 000003
【００４６】
すると、視点に入る放射輝度Ｉは下式(5)のように表せる。
Ｉ＝Ａ×Ｌ      …(5)
式(5)によれば、減衰率Ａを求めることで、視点に入るレイの輝度の算出が可能であることが分かる。そのため本ステップでは、衝突した物体の反射率(または透過率)を取得し、これを減衰率Ａnにかけ合わせていく。
【００４７】
S908では、物体から反射する2次レイを重点サンプリングするブロック(重点サンプリングブロック)を決定する。まず、シーン中の各ブロック内の通常フォトン数Ｆb(0＜b＜M、Mはブロック数)を抽出し、シーン中の全ての通常フォトン数Ｆ=ΣＦbをカウントする。次に、各ブロックのフォトン含有率ａbを以下の式(6)で算出する。
ａb＝Ｆb/Ｆ  (0≦ａb≦1)      …(6)
このフォトン含有率ａbが高いほど、重点サンプリングブロックとなるため、フォトン含有率ａbの高い順に全ブロックをソートしておく。このとき、Σａb＝1となる。
【００４８】
このとき本実施形態では、光沢物体を含むブロックについては、図11(b)の右側に示すように光源方向フォトン1312を利用して、ブロック内のフォトン数を以下のように算出する。
【００４９】
まず、2次レイの発射位置から光源方向フォトンまでのベクトルをＶ、光源方向フォトンの法線方向をＮ、入射方向(光源方向)をＬとすると、光源方向フォトンから見た光源の正反射方向Ｒは、以下の式(7)で示される。
Ｒ＝Ｌ−2(Ｌ・Ｎ)Ｎ      …(7)
ここで、2次レイの発射位置に対し光源方向フォトンが寄与するエネルギーはＲとＶの角度差に依存するため、ＲとＶの内積で計算可能である。すなわち、2次レイの発射位置から見たブロック内の光沢物体のフォトンの数ＦbL2は、該ブロック内における実際の光源方向フォトンの数をＦbL個とすると、下式(8)で表わされる。
ＦbL2＝ＦbL×(Ｒ・Ｖ)      …(8)
そのため、光沢物体を含むブロックの場合、ブロック内のフォトン数は通常フォトン数に光源方向フォトン1312の寄与分を加算した値、すなわちＦb＋ＦbL2となる。したがってフォトン含有率は以下の式(9)で算出される。
【００５０】
ａb＝(Ｆb＋ＦbL2)/Ｆ  (0≦ａb≦1)      ・・・(9)
なお、(9)式における全フォトン数Ｆには、光沢物体を含むブロック内のフォトン数が反映されている。
【００５１】
以上のようにS908で全ブロックがフォトン含有率ａbでソートされると、次にS909で乱数c(0≦c≦1)を発生させてレイの方向を決定し、放出する。具体的には、乱数cが以下の式(10)で表わされる場合、S908でソートされたブロックの並びのうち、j番目のブロックに向けてレイを放出する。式(10)によれば、フォトン含有率が高いブロックほど、高確率にレイが放出されることが分かる。
2015114775.tif 000004
【００５２】
このように本実施形態のレイトレーシング処理においては、ブロック内に光沢物体が含まれる場合、通常フォトンと光源方向フォトンの分布に応じて、2次レイのサンプリング数、すなわち光線方向の分布を決定する。
【００５３】
S910では、変数nがサンプリング数Ｓiに達したか否かを判定し、達していればS911に進むが、達していなければS912でnをインクリメントした後にS903に戻って、次のサンプリング処理を開始する。
【００５４】
S911では、各サンプリングにおける放射輝度Ｉnの平均値を下式(11)により算出し、この値を当該画素(i番目の画素)の画素値として用いる。
Ｉ＝(ΣＩn)/Ｓi      …(11)
図9に示すレイトレーシング処理をRGBの各バンドに対して行うことで、1画素におけるRGB値が得られる。更に、RGB値の算出を全画素に対して実行することで、レンダリング結果を画像データとして得ることができる。
【００５５】
以上説明したように本実施形態によれば、光沢物体に対しても、1次レイ、2次レイの双方に対して効率的にサンプリングが行える。したがって、光沢物体が配置されたシーンにおいても、実写と同等の映像再現で、かつノイズの少ない高画質なCG画像生成が可能となる。
【００５６】
＜第2実施形態＞
以下、本発明にかかる第2実施形態について説明する。上述した第1実施形態では、光沢物体を含むシーンにおけるノイズ低減手法を示した。第2実施形態ではさらに透過物体も含む場合のノイズ低減手法について説明する。なお、第2実施形態におけるシステム構成は第1実施形態と同様であるため、同様の処理内容については説明を省略する。例えば、第2実施形態における双方向レイトレーシング処理の概要は、第1実施形態と同様に図5のフローチャートに従い、光源からのフォトン生成処理や、視点からのフォトン生成処理については第1実施形態とほぼ同様である。
以下、特に第1実施形態と異なる点について、説明する。
【００５７】
●フォトン分布マップ算出処理(S502)
第2実施形態におけるフォトン分布マップ算出処理(S502)においては、上記図6のフローチャートにおいて、S603で衝突物体が光沢物体であるか否かの判定に加えて、さらに透過物体であるか否かの判定を行うようにする。そして、衝突物体が光沢物体または透過物体であればS604に進み、いずれでもなければ拡散物体であるとしてS605に進む。
【００５８】
そしてS604では、衝突物体が光沢物体であればその反射方向にレイを反射させ、衝突物体が透過物体であればその透過方向にレイを透過させる。なお、透過方向は透過物体の屈折率に依存する。そして反射または透過したレイは、S602に戻って衝突判定からの処理を繰り返す。
【００５９】
●フォトン分布マップ補間処理(S503)
第2実施形態におけるフォトン分布マップ補間処理(S503)について、図10のフローチャートを用いて説明する。なお、図10において第1実施形態の図7と同様の処理には同一番号を付し、説明を省略する。すなわち図10では図7に対し、S704の判定処理と、該判定から分岐するS711〜S713の処理が追加されている点が異なる。
【００６０】
S703で衝突位置の周辺に他のフォトンが分布していなければ、衝突した物体は光沢物体または透過物体であると考えられるため、さらにS704で衝突した物体が光沢物体であるか否かを判定する。光沢物体であればS705に進んで図7と同様に光沢物体処理によるフォトン生成・補間を行う。
【００６１】
一方、S704で衝突した物体が光沢物体でなければすなわち透過物体であるため、S711に進んで透過物体処理によるフォトン生成・補間を行う。S711では、透過方向にレイを放出する。すなわち図11(c)の左側に示すように、視点位置から放出されたレイを、スネルの法則によって屈折率から算出される透過方向に透過させる。透過した2次レイは拡散物体に衝突するまで、反射・透過を繰り返す。次にS712では、2次レイと拡散物体との衝突位置を算出し、その周辺の所定範囲内に存在するフォトンを探索する。そしてS713で2次レイの衝突位置周辺のフォトンを用いて、図11(c)の右側に示すように、透過物体に配置される透過方向フォトン1313を算出し、フォトン分布マップに記録する。具体的には、衝突位置周辺でＮ個のフォトンが検出され、衝突した拡散物体の反射率をＲ、透過物体の透過率をＴとすると、透過物体にはＮ×Ｒ×Ｔ個の透過方向フォトンを配置する。なお、その配置位置については光沢物体に対する場合と同様に、当該ブロック内の透過物体表面であれば特に制限しない。なお、透過方向フォトン1313を図4(c)のフォトン分布マップに記録する際には、その「種類」情報に、当該フォトンが透過方向フォトンである旨を識別可能とするフラグを記述しておく。
【００６２】
●サンプリング数算出(S504)
第2実施形態における各画素のサンプリング数の算出処理(S504)については、第1実施形態で図8のフローチャートに示した処理とほぼ同様である。
【００６３】
第1実施形態ではS802において、各レイが最初に衝突するブロックを算出し、該ブロック内のフォトン数を取得して各画素に対応づける。このとき、ブロック内に光沢物体が含まれる場合には、1次レイの重点サンプリングに反射方向フォトンを通常のフォトンと同様にカウントして、S803で全画素が保持している全フォトン数Ｆpを算出する例を示した。第2実施形態ではS802においてさらに、透過方向フォトンもカウント対象とする。すなわち、ブロック内に透過物体が含まれる場合は、図11(d)の左側に示すように、1次レイの重点サンプリングにおいて透過方向フォトン1313を利用する。図8における他の処理については第1実施形態と同様であるため、説明を省略する。
【００６４】
このように第2実施形態では、シーン内で各レイが初めに衝突した物体が透過物体であれば透過方向フォトンをカウントに含めることで、画素ごとのサンプリング数Ｓiを決定する。
【００６５】
●レイトレーシング処理(S505)
第2実施形態におけるレイトレーシング処理(S505)については、第1実施形態で図9のフローチャートに示した処理とほぼ同様である。
【００６６】
第1実施形態ではS908において、光沢物体による反射を考慮して2次レイの重点サンプリングブロックを決定する例を示したが、第2実施形態ではさらに、透過物体による透過を考慮して、2次レイの重点サンプリングブロックを決定する。以下、第2実施形態における、透過を考慮した重点サンプリングについて説明する。
【００６７】
第2実施形態ではS908において、まず第1実施形態と同様に、シーン中の各ブロック内の通常フォトン数Ｆb(0＜b＜M、Mはブロック数)を抽出し、シーン中の全ての通常フォトン数Ｆをカウントする。そして、各ブロックのフォトン含有率ａbを上記式(6)で算出し、フォトン含有率ａbの高い順に全ブロックをソートしておく。
【００６８】
このとき第2実施形態では、透過物体を含むブロックについては、図11(d)の右側に示すように透過方向フォトン1313を利用して、ブロック内のフォトン数を以下のように算出する。
【００６９】
まず、2次レイの始点から透過方向フォトン1313までのベクトルをＶとし、Ｖの長さを延長して拡散物体との交点を算出して、ブロック内での該交点から所定範囲内のフォトン数ＦTを算出する。そして、2次レイの始点である拡散物体の反射率をＲ、フォトン分布マップに格納された透過方向フォトン1313の透過特性(透過率)をＴとし、透過物体には下式(12)に示すＦT2個のフォトンが配置されているとする。第2実施形態では、このＦT2をフォトン数としてカウントする。
【００７０】
ＦT2＝ＦT×Ｒ×Ｔ      …(12)
したがって透過物体を含むブロックの場合、ブロック内のフォトン数は通常フォトン数に透過方向フォトン1313の寄与分を加算した値、すなわちＦb＋ＦT2となる。したがって、透過物体を含むブロックについてのフォトン含有率は以下の式(13)で算出される。
ａb＝(Ｆb＋ＦT2)/Ｆ  (0≦ａb≦1)      ・・・(13)
なお、(13)式における全フォトン数Ｆには、透過物体を含むブロック内のフォトン数が反映されている。
【００７１】
なお、ここでは処理速度を優先し、ベクトルＶを単純に延長することで拡散物体との交点を求める例を示したが、スネルの法則を用いてベクトルＶを透過方向に屈折させた後、拡散物体との交点を求めても構わない。
図9における他の処理については第1実施形態と同様であるため、説明を省略する。
【００７２】
以上説明したように第2実施形態によれば、透過物体に対しても、1次レイ、2次レイの双方に対して効率的にサンプリングが行える。したがって、透過物体が配置されたシーンにおいても、実写と同等の映像再現で、かつノイズの少ない高画質なCG画像生成が可能となる。
【００７３】
なお、第1および第2実施形態ではサンプリング数の決定にフォトンの数を用いる例を示したが、この他の要素として、視点からの距離、フォトン密度の変化量などを考慮してもよい。
【００７４】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、まず、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又はコンピュータ可読な各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【図１】
2015114775.tif 000005
【図２】
2015114775.tif 000006
【図３】
2015114775.tif 000007
【図４】
2015114775.tif 000008
【図５】
2015114775.tif 000009
【図６】
2015114775.tif 000010
【図７】
2015114775.tif 000011
【図８】
2015114775.tif 000012
【図９】
2015114775.tif 000013
【図１０】
2015114775.tif 000014
【図１１】
2015114775.tif 000015