(57)【要約】【課題】光線追跡によりシーンの画像を生成する際に、処理の途中でシーン全体の出力画像を効率的に得ることで、画像生成の途中経過を確認してレンダリング条件を短時間で設定可能とする。【解決手段】シーンにおける光源特性とオブジェクト情報に基づき、該シーンの画像の画素ごとに、視点から光線追跡を行って算出した分光放射輝度を取得する(S701)。そして、シーンの画像における光線追跡の回数に応じて、シーンの画像の縮小解像度を決定し(S703)、シーンの画像を縮小解像度となるように変換する(S705)。このように変換されたシーンの画像のサイズを復元して(S706)、プレビュー表示する(S710)ことで、レンダリングの途中経過を容易に把握できる。【選択図】  図7
2016071733.tif 000002
【特許請求の範囲】
【請求項１】
シーンの画像を生成する画像処理装置であって、
シーンにおける光源特性とオブジェクト情報に基づき、該シーンの画像の画素ごとに、視点から光線追跡を行って分光放射輝度を算出する算出手段と、
前記シーンの画像における光線追跡の進捗度合いに応じて前記シーンの画像の縮小解像度を決定する決定手段と、
前記シーンの画像の解像度を前記縮小解像度となるように変換する第1の変換手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記決定手段は、前記シーンの画像における前記光線追跡の回数に基づき、前記縮小解像度を決定することを特徴とする請求項1に記載の画像処理装置。
【請求項３】
前記決定手段は、前記光線追跡の回数の増加に応じて、前記縮小解像度を前記シーンの画像の解像度に段階的に近づけることを特徴とする請求項2に記載の画像処理装置。
【請求項４】
前記第1の変換手段は、前記算出手段で算出された複数画素の分光放射輝度を合算して1画素の分光放射輝度とすることを特徴とする請求項1乃至3のいずれか1項に記載の画像処理装置。
【請求項５】
さらに、前記算出手段で算出された画素ごとの分光放射輝度を、所定の波長範囲で合算するように変換する第2の変換手段を有することを特徴とする請求項4に記載の画像処理装置。
【請求項６】
さらに、前記第1の変換手段で変換された前記シーンの画像、または前記第2の変換手段で変換された前記シーンの画像を表示する表示手段を有する
ことを特徴とする請求項6に記載の画像処理装置。
【請求項７】
前記第1の変換手段と前記第2の変換手段のいずれによる変換を行うかを選択する選択手段を有することを特徴とする請求項5または6に記載の画像処理装置。
【請求項８】
前記選択手段は、前記表示手段でシーンにおけるオブジェクトの質感を重視した表示を行う場合に前記第1の変換手段による変換を選択し、前記表示手段でシーンにおけるオブジェクトの形状を重視した表示を行う場合に前記第2の変換手段による変換を選択することを特徴とする請求項7に記載の画像処理装置。
【請求項９】
前記算出手段は、注目画素に対する前記光線追跡における追跡方向の分布を、その直前の画素における前記光線追跡の回数および前記縮小解像度に応じて制御することを特徴とする請求項1乃至8のいずれか1項に記載の画像処理装置。
【請求項１０】
前記算出手段は、注目画素に対する前記光線追跡における追跡方向の範囲を前記縮小解像度に応じて分割し、該分割した範囲ごとに追跡方向を割り当てることを特徴とする請求項9に記載の画像処理装置。
【請求項１１】
シーンの画像を生成する画像処理装置であって、
シーンにおける光源特性とオブジェクト情報に基づき、該シーンの画像の画素ごとに、視点から光線追跡を行って分光放射輝度を算出する算出手段と、
画素ごとの分光放射輝度を、所定の波長域で合算する合算手段と、
を有することを特徴とする画像処理装置。
【請求項１２】
シーンの画像を生成する画像処理装置における画像処理方法であって、
シーンにおける光源特性とオブジェクト情報に基づき、該シーンの画像の画素ごとに、視点から光線追跡を行って分光放射輝度を算出し、
前記シーンの画像における光線追跡の進捗度合いに応じて前記シーンの画像の縮小解像度を決定し、
前記シーンの画像の解像度を前記縮小解像度となるように変換することを特徴とする画像処理方法。
【請求項１３】
シーンの画像を生成する画像処理装置であって、
シーンにおける光源特性とオブジェクト情報に基づき、該シーンの画像の画素ごとに、視点から光線追跡を行って分光放射輝度を算出し、
画素ごとの分光放射輝度を、所定の波長域で合算することを特徴とする画像処理方法。
【請求項１４】
コンピュータを請求項1乃至11の何れか1項に記載された画像処理装置の各手段として機能させるためのプログラム。
【請求項１５】
請求項14に記載されたプログラムが記録されたコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、光線追跡法を用いてシーンを描画する画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
コンピュータグラフィクス(CG)は、様々な分野で利用され、設計やデザインの分野にも普及している。設計やデザインの分野では、実物により忠実な画像を生成する技術が要求される。
【０００３】
実物に忠実な映像をCGを用いて生成する技術として、特許文献1に示されるような光線追跡法を利用したレンダリング手法が提案されている。また、CGと、デジタルカメラやデジタルビデオカメラなどで撮像した実写画像を合成して、今までにない新しい映像表現が可能になりつつある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2011-017541号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
実物に忠実なシーンをCGで再現し、実写映像と合成するためには、シーンが実物に忠実であることはもちろん、実写映像を撮像した機器の特性も加味したうえで、映像を合成することが重要となる。しかしながら、特許文献1に記載の方法では、CGをコンピュータで生成するために膨大な計算時間を必要とする。そのため、CGと実写映像の合成に必要となる照明条件の調整等、ユーザがCGのレンダリング条件を設定する際にはその試行錯誤に多大な時間を必要としていた。
【０００６】
本発明は上記問題を解決するために、光線追跡によりシーンの画像を生成する際に、処理の途中でシーン全体の出力画像を効率的に得ることで、ユーザが画像生成の途中経過を確認してレンダリング条件を短時間で設定可能とすることを目的とする。
【課題を解決するための手段】
【０００７】
上記の課題を解決するため、本発明は、シーンの画像を生成する画像処理装置であって、シーンにおける光源特性とオブジェクト情報に基づき、該シーンの画像の画素ごとに、視点から光線追跡を行って分光放射輝度を算出する算出手段と、前記シーンの画像における光線追跡の進捗度合いに応じて前記シーンの画像の縮小解像度を決定する決定手段と、前記シーンの画像の解像度を前記縮小解像度となるように変換する第1の変換手段と、を有する。
【発明の効果】
【０００８】
本発明によれば、光線追跡によりシーンの画像を生成する際に、処理の途中でシーン全体の出力画像を効率的に得ることができ、ユーザが画像生成の途中経過を確認してレンダリング条件を短時間で設定可能となる。
【図面の簡単な説明】
【０００９】
【図１】第1実施形態の装置構成例を示すブロック図、
【図２】第1実施形態の論理構成例を示すブロック図、
【図３】第1実施形態の処理内容を示すフローチャート、
【図４】光線追跡法を用いた画像装置でのCGの生成結果の一例を表す図、
【図５】第1実施形態における光線追跡処理の内容を示すフローチャート、
【図６】第1実施形態における色変換処理の内容を示すフローチャート、
【図７】第1実施形態におけるプレビューデータの生成処理の内容を示すフローチャート、
【図８】第1実施形態における縮小例を示す図、
【図９】第1実施形態における縮小解像度の決定処理の内容を示すフローチャート、
【図１０】第2実施形態における論理構成例を示すブロック図、
【図１１】第2実施形態における光線追跡処理の内容を示すフローチャート、
【図１２】第2実施形態における追跡方向範囲決定処理の内容を示すフローチャート、
【図１３】第2実施形態における追跡方向範囲の分割の様子を示す模式図、である。
【発明を実施するための形態】
【００１０】
以下、添付の図面を参照して、本発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【００１１】
＜第1実施形態＞
本実施形態では、光線追跡法によって生成されるCGの生成過程を逐次表示する画像処理装置について説明する。
【００１２】
本実施形態を説明するに先立ち、波長によって異なる光の振る舞いについて説明する。光はオブジェクトに当たるとその表面で反射する光と透過する光とに分離する。オブジェクトを透過する光は、その光の波長に応じた分光屈折率によって屈折角が変化する。例えば、分光屈折率n1(λ)の空間を通過した光線が分光屈折率n2(λ)のオブジェクトを透過する場合、オブジェクトに対する光線の入射角をφとすると、屈折角θ(λ)は次式(1)となる。
【００１３】
θ(λ)＝sin-1((n1(λ)/n2(λ))・sinφ)      …(1)
このように、屈折角は光の波長λの関数になるため、光線追跡法によって追跡する光の経路が波長によって変化することになる。従って、光の透過を忠実に再現するためには、光を分光で扱い、複数の光線から色を再現する必要がある。
【００１４】
また、正確に色を再現するためには、光源から発せられる光のすべての波長に対して追跡計算を行う必要がある。しかし、すべての波長に対して光線追跡計算を行うことは計算量が余りにも膨大となるため得策でない。そこで、実際には光線の代表的な波長を抽出して光線追跡を行い、該光線追跡結果をもとに画像生成を行う。以下、本実施形態における画像生成処理について説明する。
【００１５】
●装置構成
本実施形態の画像処理を実行する情報処理装置のブロック構成例を図1に示す。
【００１６】
CPU101は、RAMなどのメインメモリ102をワークメモリとして、ROM109や記憶部103に格納されたオペレーティングシステム(OS)やプログラムを実行し、システムバス106を介して後述する構成を制御する。なお、記憶部103は、ハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)などであり、後述する色処理を実現するプログラムや各種データを格納する。
【００１７】
USBやIEEE1394などの汎用インターフェース(I/F)104には、キーボードやマウスなどの操作部107、分光測定器などの測定部108、メモリカードやUSBメモリのような記録媒体110などが接続される。また、ビデオカード(VC)105には、モニタ111が接続される。CPU101は、ユーザインタフェイス(UI)、および、処理経過や処理結果などを示す情報をモニタ111に表示する。
【００１８】
例えば、CPU101は、操作部107を介して入力されるユーザ指示に従い、記憶部103または記録媒体110に格納されたアプリケーションプログラム(AP)をメインメモリ102の所定領域にロードする。そして、APを実行し、APに従いモニタ111にUIを表示する。
【００１９】
次に、CPU101は、ユーザによるUIの操作に従い、記憶部103や記録媒体110に格納された各種データや測定部108から測定データを入力し、メインメモリ102の所定領域にロードする。そして、APに従いメインメモリ102にロードした各種データに所定の演算処理を施す。そして、CPU101は、ユーザによるUIの操作に従い演算処理結果をモニタ111に表示したり、記憶部103や記録媒体110に格納する。
【００２０】
なお、CPU101は、システムバス106に接続された図示しないネットワークI/Fを介して、有線または無線ネットワーク上のサーバ装置との間でプログラム、データ、演算処理結果の送受信を行うこともできる。また、情報処理装置としてタブレット型コンピュータを利用することも可能であり、その場合、モニタ111のスクリーン上に重畳されたタッチパネルが操作部107である。
【００２１】
本実施形態では上記構成において、CPU101からの指令に基づき画像処理APが画像を生成してモニタ111に表示する画像処理について説明する。
【００２２】
図2は、本実施形態の画像処理装置201における論理構成を示すブロック図である。上述したように、本実施形態で図2に示す構成は画像処理APとして実現される。
【００２３】
図2において、光源特性データ入力部202は、シーンにおける光源の配置や配光特性等を示す光源特性データ211を入力する。オブジェクトデータ入力部203は、シーンを構成する各オブジェクトの配置、形状、色や質感等を示すオブジェクトデータ212を入力する。視覚特性データ入力部205は、等色関数等を示す視覚特性データ213を入力する。尚、光源特性データ211、オブジェクトデータ212、および視覚特性データ213は、記憶部103や記録媒体110、汎用インターフェース104を介して接続される他の手段から入力してもよい。
【００２４】
分光放射輝度算出部204は、オブジェクトデータ212と光源特性データ211に基づき、CPU101からの指示に従って、合成対象となるCGの各画素の分光放射輝度を算出する。この算出結果は、分光放射輝度データ207として一旦保存される。色信号値算出部206は、分光放射輝度データ207と視覚特性データ213に基づき、CPU101からの指示に従って各画素の色信号値(RGB等)を算出して、CGとしての画像データ210を出力する。画像データ210は記憶部103等に格納されるとともに、モニタ111に表示される。
【００２５】
プレビューデータ算出部208は、分光放射輝度データ207とプレビュー設定データ214とに基づいて画像の再構成を行い、プレビュー表示用のプレビューデータ209を生成してモニタ111へ表示する。プレビュー設定データ214は、CGのプレビューによるユーザの確認内容(オブジェクトの質感または形状)を示すプレビュー内容フラグを含む。また、レンダリング結果をそのままプレビュー表示するか否かを示すレンダリング結果表示フラグ、およびそのまま表示しない場合の縮小度合いを示す縮小解像度、の情報を含む。なお、レンダリング結果表示フラグおよび縮小解像度は、現在のCG生成の進捗度合によって更新されるが、処理開始前には所定の初期値が設定されている。なお、フラグについては、メインメモリ102や記憶部103、記録媒体110や、汎用インターフェース104に接続された不図示のキーボードやマウス等から入力してもよい。
【００２６】
●CG生成処理
以下、図2に示す構成を有する画像処理装置201におけるCG生成処理について、図3のフローチャートを用いて説明する。本実施形態ではCG生成の際に、1画素を処理する度にプレビュー表示を行う。
【００２７】
まずS301で、光源特性データ入力部202が光源特性データ211を読み込む。ここで光源特性データ211は、シーンを照明する光源の配光特性及び分光放射輝度を示す。次にS302で、オブジェクトデータ入力部203がオブジェクトデータ212を読み込む。ここでオブジェクトデータ212は、生成するCGにおけるシーン内のオブジェクトの位置や大きさ、反射特性等を示す。次にS303で、視覚特性データ入力部205が視覚特性データ213を入力する。ここで視覚特性データ213は、分光放射輝度を画像の色信号値に変換する際に用いるデータであり、例えば等色関数である。ここで等色関数は、可視光域の光に対する目の感度を示しており、例えばCIEXYZ表色系の等色関数である。尚、視覚特性は記憶部103などに予め記憶されたものを入力すればよい。
【００２８】
そしてS304で、出力画像において、分光放射輝度を算出する画素(以下、注目画素)を決定する。なお、注目画素は任意の順番で選択してよい。次にS305で分光放射輝度算出部204が、S304で決定した注目画素について、その分光放射輝度を示す分光放射輝度データ207を算出する。分光放射輝度の算出には光線追跡法を用いるが、その詳細は後述する。そしてS306でプレビューデータ算出部208が、分光放射輝度データ207に基づいて注目画素のプレビューデータ209を生成し、表示する。このプレビュー表示処理の詳細については後述する。
【００２９】
S307では、画像データ210の全画素について、分光放射輝度の算出およびプレビュー表示が終了したかを判定する。終了していなければS304に戻り、次の注目画素を決定して処理を継続するが、終了していればS308に進み、色信号値算出部206で全画素について分光放射輝度から色信号値を算出することで、画像データ210を生成する。この色信号値の算出方法の詳細については後述する。
【００３０】
●プレビュー表示概要
ここで、本実施形態におけるプレビュー表示の概要について、図4を用いて説明する。図4は、一般的な光線追跡(レイトレーシング)画像の生成過程におけるプレビュー表示例を示す図である。図4(a)は、光線追跡の開始後間もない状態での表示例である。一般に光線追跡法では、光源から発せられる光の軌跡を大量に処理することで画像を生成する。そのため、光線追跡の開始直後は画像全体が暗く、光が行きわたっていない状態となる。処理が進み、画像生成完了が近い状態となると、図4(b)のように表示される。図4(a)の表示に対し、図4(b)の表示に近いほど、画像に描かれたオブジェクトの形状や質感、陰影の把握が容易になる。本実施形態では分光放射輝度算出部204において光線追跡が行われ、その演算結果が分光放射輝度データ207として保持される。するとプレビューデータ算出部208が、分光放射輝度データ207に基づき、後述する図7に示す手順でプレビューデータ209を生成する。
【００３１】
●分光放射輝度算出処理(S305)
以下、S305における分光放射輝度算出処理の詳細について、図5のフローチャートを用いて説明する。本実施形態では、シーンにおける光源特性とオブジェクト情報に基づき、該シーンの画像の画素ごとに、視点から光線追跡を行って分光放射輝度を算出する。図5は一つの注目光線分の光線追跡処理を示すが、図5の処理は、光線ごとに、シーンにおいて光線が物体(オブジェクト)に当らない、または、光線が光源に当るが検出されるまで、再帰的に呼び出される。そして、光線ごとに算出された分光放射輝度の平均値によって画素の分光放射輝度が決定される。ここでは、波長λの単色光の処理を説明するが、以下の処理を可視光線の波長毎ごとに行うことで、各可視光線波長の分光放射輝度が得られる。
【００３２】
CPU101は、追跡の開始点から飛ばした注目光線がシーンに含まれる物体に当る点(以下、衝突点)を探索する(S501)。開始点は画素または衝突点である。なお、衝突点の探索は所望の方法で行えばよく、例えば、シーン内の全ての物体について、注目光線が当る点を順次判定して、開始点に最も近い点を衝突点とすればよい。
【００３３】
次にCPU101は、注目光線が物体または光源に当ったか否かの判定(S502)、さらに注目光線が光源に当ったか否かの判定(S503)を行う。注目光線が物体または光源に当らなかった場合は、注目光線の分光放射輝度を0として(S504)、注目光線の追跡を終了する。
【００３４】
また、注目光線が光源に当った場合、CPU101は、下式により、注目光線の強度と光源特性データから、注目光線の分光放射輝度E0(λ)を算出し(S505)、注目光線の追跡を終了する。算出された注目光線の分光放射輝度E0(λ)は、光線追跡結果を保持するバッファに分光放射輝度データ207として一時保存され、当該画素についてのプレビューデータの算出、および色信号値の算出に用いられる。
【００３５】
E0(λ) = P0(λ)Q(θ)S(λ)      …(2)
ここで、P0(λ)の注目光線の強度、
θは注目光線の入射角、
Q(θ)は光源のθ方向の配光特性、
S(λ)は光源の分光放射輝度。
【００３６】
光源特性データQ(θ)とS(λ)は、光源における光線の射出方向と光線の強度の関係を表す。従って、衝突点における光源の法線と光源に入射する注目光線がなす角度(入射角)に基づき、光源からの光線の強度が算出される。
【００３７】
また、注目光線が物体に当った場合、CPU101は、当該物体の反射特性と透過特性を取得する(S506)。反射特性には、衝突点における物体の法線と物体に入射する注目光線がなす角度(入射角)、並びに、法線と物体から出射する光線がなす角度(出射角)および光線強度の関係が含まれる。
【００３８】
次に、CPU101は、衝突点から飛ばす光線の数を決定し(S507)、一本の光線の方向と強度を算出する(S508)。光線の数は任意であるが、数が多いほどノイズの少ない画像が最終的に得られる。また、拡散反射の場合の光線の方向は均等分布でよく、反射光の強度Pr(λr)と透過光の強度Pt(λt)はそれぞれ次式によって算出される。
【００３９】
Pr(λr) = P0(λi)×fr(x, ωi, λr, ωr)；
Pt(λt) = P0(λi)×ft(x, ωi, λt, ωt)；      …(3)
ここで、P0(λi)は物体に入射する波長λiの光線の強度、
frは物体の反射特性、
ftは物体の透過特性。
【００４０】
一般に、反射光の強度分布は物体の表面形状に依存し、物体表面が平滑なほど、鏡面反射方向すなわちωi=ωr方向の反射強度が強くなり、それ以外の拡散反射方向への反射強度は小さくなる。
【００４１】
反射特性は、記憶部103などから入力してもよいし、測定部108から測定結果を入力してもよい。反射特性のデータ形式は、光の入射角と反射角に対応する物体の反射率が得られれば所望の形式で構わず、例えば、一意の関数でもよい。また、拡散反射は等方的に分布するためωi=45度、ωr=0度の反射特性を拡散反射に適用し、鏡面反射の反射特性は別途用意するテーブルを適用してもよい。
【００４２】
一方、物体の反射特性frは、次式に示すように、双方向反射率分布関数 (bidirectional reflectance distribution function: BRDF)で表される。
【００４３】
fr(x, ωi, λr, ωr) = dLr(x, λr, ωr)/Li(x, λi, ωi)(ωr・n)dω      …(4)
ここで、xは物体上の位置、
ωiは入射角、
λiは入射光線の波長、
Liは入射光線の強度、
ωrは反射角、
λrは出射光線の波長、
Lrは出射光線の強度、
nは法線。
【００４４】
一般に、透過光の強度分布は分光屈折率に依存するため、反射角ωrに代えて式(4)を満たす透過角ωtの場合に透過強度が最大になる。なお、透過特性は、記憶部103などから入力すればよい。透過特性のデータ形式は、光の入射角と屈折角に対応する物体の透過率が得られれば所望の形式で構わず、例えば、一意の関数でもよい。また、ωi=ωr=0度の透過特性をωtが屈折角に等しい場合に適用し、それ以外の透過特性は別途用意するテーブルを適用してもよい。
【００４５】
次に、CPU101は、光線追跡処理を実行する(S509)。つまり、S509において、図5に示す光線追跡処理が光線ごとに再帰的に呼び出され、実行される。そして、CPU101は、S507で設定した光線の数分の光線追跡が終了したか否かを判定し(S510)、未了の場合は処理をステップS508に戻して、光線追跡処理を繰り返す。
【００４６】
以上のように、S504,S505で算出された各光線の分光放射輝度の平均として、画素の分光放射輝度が算出される。すなわち、光線の総数がN、各光線の分光放射輝度がEn(λ)(nは0からN-1の整数)とすると、画素の分光放射輝度Ex(λ)は次式により算出される。
【００４７】
Ex(λ)＝1/N・ΣEn(λ)  (Σはn=0〜N-1の総和)      …(5)
●色信号値算出処理(S308)
以下、S308における画素の色信号値算出処理、すなわち画素の分光放射輝度を色信号に変換する処理について、図6を用いて説明する。尚、以下では画像の色信号値をsRGBとして説明するが、AdobeRGBなどの他の色信号値でも構わない。
【００４８】
CPU101は、分光放射輝度を色信号に変換する際に用いる視覚特性として、S303で入力した視覚特性データを取得する(S601)。具体的には、CIEXYZ表色系の等色関数x(λ)y(λ)z(λ)を取得する。
【００４９】
次に、CPU101は、描画画像の画素ごとに、S305で算出されて分光放射輝度データ207としてバッファに保持されている、注目画素の分光放射輝度Ex(λ)を取得する(S602)。そして下式により、等色関数を用いて注目画素の分光放射輝度をCIEXYZ値に変換する(S603)。
【００５０】
X = k∫Ex(λ)x(λ)d(λ)；
Y = k∫Ex(λ)y(λ)d(λ)；
Z = k∫Ex(λ)z(λ)d(λ)；      …(6)
ここで、kは定数、
積分範囲は例えば380nmから780nm。
【００５１】
次に、CPU101は、下式により、注目画素のCIEXYZ値をRGB信号値に変換し、さらにsRGB信号値に変換する(S604)。
【００５２】
┌       ┐ ┌                       ┐┌ ┐
│RLinear│ │ 3.2406 -1.5372 -0.4986││X│
│GLinear│=│-0.9689  1.8758  0.0415││Y│      …(7)
│BLinear│ │ 0.0557 -0.2040  1.0570││Z│
└       ┘ └                       ┘└ ┘
if (RLinear≦0.0031308)
R = 12.92・RLinear；
else
R = 1.055・RLinear1.0/2.4 - 0.055；
if (GLinear≦0.0031308)
G = 12.92・GLinear；
else
G = 1.055・GLinear1.0/2.4 - 0.055；
if (BLinear≦0.0031308)
B = 12.92・BLinear；
else
B = 1.055・BLinear1.0/2.4 - 0.055；      …(8)
CPU101は、上記の処理を描画画面の全画素に対して行い、描画画面に対応する画像データ210、すなわちCGを生成する。
【００５３】
●プレビュー表示処理(S306)
以下、S306における画素のプレビューデータの作成処理について、図7のフローチャートを用いて説明する。本実施形態では、S304で決定された注目画素ごとに、プレビューデータを作成してプレビュー表示を行うことで、光線追跡による途中経過が表示される。
【００５４】
CPU101はまず、プレビューデータの生成に必要となる分光放射輝度データ207を取得する(S701)。そして、プレビュー設定データ214を読み込んで、プレビュー内容フラグの値により、プレビューで確認したい内容(以下、プレビュー内容)を判別する(S702)。プレビュー内容が「形状」である場合はS708へ、「質感」である場合には、S703へ移行する。
【００５５】
プレビュー内容がオブジェクトの「質感」であれば、分光放射輝度データ207より取得した生成途中の分光放射輝度データについて、その解像度をどの程度縮小させるかを示す縮小解像度を決定する(S703)。この縮小解像度の決定方法については後述する。
【００５６】
そして、プレビュー設定データ214に基づき、プレビューデータ209を生成せずに、光線追跡によるレンダリング結果、すなわち分光放射輝度データ207をそのままプレビュー表示することが可能であるか否かを判断する(S704)。レンダリング結果のプレビュー表示が可能である場合はS707へ移行し、プレビューデータ209を生成する場合はS705へ移行する。なおS704での判断は、プレビュー設定データ214におけるレンダリング結果表示フラグに基づいて行う。レンダリング結果表示フラグは、現在のCG生成の進捗度合に応じて後述するように設定され、分光放射輝度データ207がそのままプレビュー表示可能な程度に算出されていれば1となり、未だデータ不足であれば0である。
【００５７】
プレビューデータを生成する場合、分光放射輝度データ207として保存されている生成途中の分光放射輝度データに対して、S703で決定した縮小解像度まで分光放射輝度の集約を行い、プレビューデータを生成する(S705)。ここで分光放射輝度の集約とは、図8に示すように、複数画素の分光放射輝度を加算して1つの画素の分光放射輝度とすることで、画像を縮小することである。例えば、CGの生成がまだほとんど進んでいない場合には図8(b)のように3×3画素の分光放射輝度の総和を1画素とし、それよりも少しCGの生成が進んできている場合には図8(a)のように2×2画素の分光放射輝度の総和を1画素とする。
【００５８】
そして、S705の集約処理により生成されたプレビューデータに対し、生成途中のCGデータと同じサイズとなるように、拡大処理を行う(S706)。この拡大方法は、バイキュービック法や二アレストネイバー法など、任意の方法で構わない。拡大されたプレビューデータは、プレビューデータ209としてメインメモリ102へ格納する。このように分光を保って画像の縮小、拡大を行うことで、プレビューによってシーン内でのオブジェクトの「質感」を重視した再現がなされる。
【００５９】
一方、プレビューデータを生成せず、レンダリング結果をそのままプレビュー表示する場合には、分光放射輝度データ207をプレビューデータ209へコピーする(S707)。
【００６０】
また、S702でプレビュー内容がオブジェクトの「形状」である場合、生成途中の分光放射輝度データ207の波長ごとの輝度を、所定の波長域ごとに集約する(S708)。この集約は例えば、分光放射輝度データ207の波長域ごとに輝度を合算して、所定の1つの波長の輝度とする。また、分光放射輝度データ207における所定の波長範囲ごとに、その輝度の総和を該範囲における代表波長の輝度としてもよい。この処理により、本来、色情報の基となる分光放射輝度データから色成分が失われてしまうものの、当該画素における輝度情報を疑似的に増加させることができる。そのため、プレビューはモノトーン表示となるが、シーン内でのオブジェクトの「形状」を重視した再現がなされ、図4(b)の状態により早く集束させることができる。そして、このように集約した分光放射輝度データを、プレビューデータ209へコピーする(S709)。
【００６１】
そして、プレビューデータ209をモニタ111へ表示することで、プレビュー表示が行われる(S710)。このとき、CGのレンダリングの進捗が十分であれば、レンダリング結果がそのままプレビュー表示されるが、レンダリングが未だ十分でなければ、小さい解像度のレンダリング結果が拡大表示される。
【００６２】
●プレビュー画像の解像度決定(S703)
以下、S703における解像度決定処理について、図9のフローチャートを用いて説明する。本実施形態では、生成するCGの質感についてのプレビューデータを生成する際に、画像を縮小するか否か、およびどの程度まで縮小するかを決定する。
【００６３】
まず、プレビューデータ209を作成する際に参照される縮小解像度の初期化を行う(S901)。ここで縮小解像度は、生成するCG画像(画像データ210)の出力解像度に対して1/nとして示され、このnを適宜更新することで縮小解像度を決定する。S901での初期化の際にはn＝1を設定する。なおこのとき、後述する規定値として、用意された複数の値のうち最も大きい値を設定しておく。また、後述するレンダリング結果表示フラグについても0に初期化しておく。
【００６４】
次に、生成するCGに対する、現在までの光線追跡の実行回数(追跡回数)を取得する(S902)。追跡回数は、例えばS307におけるループ回数などから取得すればよく、すなわち該ループ回数が処理画素数を示すため、該処理画素数に対してS507で決定される画素ごとの光線の数(固定値)を乗じればよい。次に、生成するCGデータに対する出力解像度を取得する(S903)。出力解像度は、所定の値で定義すればよい。ただし、例えば光線の数(固定値)をループ回数で除算した商を用いて、CGの縦画素数および横画素数をこの商の値で割った数等で求めるとよい。
【００６５】
そして、S902で取得した追跡回数が所定の規定値に達しているか判定する(S904)。規定値は、例えばCGのレンダリングの進捗度合いを示す値を保持するテーブルとして、CG全体に対する光線追跡の全実行回数(縦画素数×横画素数×画素ごとの追跡回数)の50％、25％、等を規定すればよい。仮に、CGの縦画素数が600、横画素数が800、画素ごとの追跡回数が1000であれば、規定値は全追跡回数の50％、25％にあたる240000000、120000000、となり、S901で最も大きい値が選択されている。なお、規定値の数および決定方法は上記の例に限らない。追跡回数が規定値よりも大きければS907へ移行し、規定値以下であればS905へ移行する。
【００６６】
S905では縮小解像度がより小さくなるように、すなわち縮小率が大きくなるように変更する。例えば、パラメータnをn+1にインクリメントすればよい。そして規定値のテーブルの参照先を更新し、より小さい規定値を設定する(S906)。例えば、規定値として上記のように240000000が設定されていた場合、テーブルの参照位置を変更して規定値を120000000に更新する。その後、S904へ戻る。このS904〜S905,S906のループにより、CGレンダリングの進捗度合いに応じた縮小解像度が設定される。具体的には、光線追跡回数の増加に応じて、縮小解像度が段階的に出力解像度に近づく。
【００６７】
一方、S907では、縮小解像度がS903で取得したCGの出力解像度と同じであるか否かを判定する。具体的には、n＝1であるかどうかを判定すればよい。n＝1であれば、現在までのレンダリングによってプレビュー表示に十分なデータが算出されているとして、レンダリング結果表示フラグに1をセットする(S908)。レンダリング結果表示フラグは、上記S704でプレビュー画像生成を行うか否かの決定の際に参照される1ビットフラグであり、S901で0に初期化されている。すなわち、レンダリング結果表示フラグが1であればレンダリング結果をそのままプレビュー用とし、0であればプレビュー用の縮小画像を作成する。S907でn＝1でなければ、レンダリング結果表示フラグが0のまま処理を終了し、縮小解像度を返す。
【００６８】
以上説明したように本実施形態によれば、光線追跡法によるCG画像生成の途中において、現在までの処理量に応じた縮小解像度でCG画像を再構成して、プレビュー表示を行う。これにより、CGの生成途中での画像の質感や形状をユーザが確認することが容易となり、効率的なCG作成が可能となる。
【００６９】
なお、本実施形態では1画素の処理ごとにプレビュー表示を行う例を示したが、複数画素の処理毎にプレビュー表示を行うようにしても良く、この場合、処理速度の向上が望める。
【００７０】
＜第2実施形態＞
以下、本発明に係る第2実施形態について説明する。第2実施形態における情報処理装置の構成は上述した第1実施形態と同様であるため説明を省略し、以下では特に第1実施形態と相違する点について説明する。第2実施形態では、光線追跡における追跡方向範囲を分割して該分割した範囲ごとに追跡方向を決定することで、光線の追跡方向の偏りを抑制する。
【００７１】
図10は、第2実施形態の画像処理装置201における論理構成を示すブロック図である。同図において第1実施形態の図2と同様の構成には同一番号を付して説明を省略するが、分光放射輝度算出部204がプレビュー設定データ214を参照する点が第1実施形態とは異なる。すなわち分光放射輝度算出部204には、光源特性データ211、オブジェクトデータ212に加えて、プレビュー設定データ214も入力される。
【００７２】
図11は、第2実施形態における光線追跡処理を示すフローチャートである。同図において第1実施形態の図5と同様の処理には同一ステップ番号を付してある。第2実施形態では、画素の分光放射輝度算出処理(S305)における、追跡方向分布の決定処理(S511)および光線の方向と強度の算出処理(S512)が第1実施形態とは異なる。
【００７３】
●追跡方向分布の決定(S511)
以下、S511における追跡方向分布の決定処理について、図12のフローチャートを用いて説明する。一般に、光線追跡法によって生成される画像は、CGを構成する各画素からより多くの方向に光線が射出された状態であるほど、ノイズの少ない画像が得られる。そのため、光線追跡の実行回数が少ないうちにプレビューデータを作成した場合、光線の方向に偏りが生じる可能性が大きく、プレビューデータを作成しても、画像のノイズが増加してしまうことが考えられる。このようなノイズの増加を避けるため、プレビューデータを生成する際には擬似的に多くの方向に光線が射出された状態を作り出す必要がある。そこで第2実施形態では、S511で光線の追跡方向範囲の分割を行う。
【００７４】
まず、プレビュー設定データ214から、レンダリング結果表示フラグ、および縮小解像度を取得する(S1201)。このレンダリング結果表示フラグと縮小解像度は、注目画素の直前の画素のプレビュー表示処理(S306)において設定された値が保持されている。
【００７５】
次に、レンダリング結果表示フラグが1であるか否かを確認する(S1202)。該フラグが1であれば追跡方向範囲の分割を行わずに処理を終了するが、0の場合は光線追跡の実行回数を取得する(S1203)。追跡回数は第1実施形態のS902と同様に、S307におけるループ回数から取得すればよい。
【００７６】
そして、S1201,S1203で取得した縮小解像度および追跡回数に基づいて追跡方向範囲を分割する(S1204)。例えば、プレビュー設定データ214における縮小解像度が1/2(n＝2)であって、追跡回数が10回目である場合、4画素分を合算してプレビューデータが生成される。したがってこの場合、追跡方向範囲を図13(b)に示すように4分割して、追跡方向を分割領域ごとに均等に選択する。このように、追跡方向範囲の分割数は、現在までの追跡回数および縮小解像度において、追跡方向が最大限均等に分布するように決定される。したがって、追跡回数が増加するほど、および縮小解像度が大きいほど、追跡方向範囲の分割数は増加する。なお、レンダリング結果表示フラグが1である場合には、追跡方向範囲は図13(a)に示すように分割されない。
【００７７】
そしてS512で光線の方向と強度を算出する。強度については第1実施形態のS508と同様に算出できる。方向に関しては、S511で決定された追跡方向分布をふまえて、分割範囲ごとに順次、追跡方向を設定する。すなわち、光線が射出される方向が、S511で分割した1範囲に偏らないよう、ばらつきを持たせるように設定する。
【００７８】
以上説明したように第2実施形態によれば、プレビューデータの縮小解像度および光線追跡の実行回数に応じて追跡方向を分割することで、光線追跡時における追跡方向の偏りを回避し、光線追跡途中でのプレビュー表示におけるノイズを抑制することができる。
【００７９】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記録媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【符号の説明】
【００８０】
204:分光放射輝度算出部、207:分光放射輝度データ、208:プレビューデータ算出部、209:プレビューデータ
【図１】
2016071733.tif 000003
【図２】
2016071733.tif 000004
【図３】
2016071733.tif 000005
【図５】
2016071733.tif 000006
【図６】
2016071733.tif 000007
【図７】
2016071733.tif 000008
【図８】
2016071733.tif 000009
【図９】
2016071733.tif 000010
【図１０】
2016071733.tif 000011
【図１１】
2016071733.tif 000012
【図１２】
2016071733.tif 000013
【図１３】
2016071733.tif 000014
【図４】
2016071733.tif 000015