(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-01
(45)【発行日】2024-04-09
(54)【発明の名称】画像処理装置、画像処理方法、プログラム及び記憶媒体
(51)【国際特許分類】
G06T 15/06 20110101AFI20240402BHJP
【FI】
G06T15/06
(21)【出願番号】P 2020067191
(22)【出願日】2020-04-03
【審査請求日】2023-02-06
【新規性喪失の例外の表示】特許法第30条第2項適用 令和1年11月23日九州産業大学において開催されたCEDEC+KYUSHU2019で発表
(73)【特許権者】
【識別番号】522039773
【氏名又は名称】株式会社 ラセングル
(74)【代理人】
【識別番号】100153246
【氏名又は名称】伊吹 欽也
(72)【発明者】
【氏名】鈴木 克史
【審査官】村松 貴士
(56)【参考文献】
【文献】特開2003-256865(JP,A)
【文献】徳吉雄介,“レイツリーバッファを用いた大域照明におけるノンフォトリアリスティックレンダリング”,Visual Computing / グラフィクスとCAD 合同シンポジウム2008予稿集,画像電子学会,(社)情報処理学会,2008年,'08-30
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/06
(57)【特許請求の範囲】
【請求項1】
3次元コンピュータグラフィックスに係る画像を生成する画像処理装置であって、
レイトレーシング処理により画像を描画する手段と、
前記レイトレーシング処理により前記画像が描画される際に射出されている光線と仮想空間内のオブジェクトとの交差点における法線情報を法線バッファに出力する手段と、
前記法線バッファの法線情報に基づいて前記描画された画像に含まれるオブジェクトの輪郭線を描画する手段と、
を備え、
前記法線バッファに出力する手段は、前記レイトレーシング処理の際に視線から射出された光線と最初に交差した第1のオブジェクトに対して、光を鏡面反射させる設定、および光を屈折させる設定の少なくとも一方がなされている場合であって、前記鏡面反射および屈折の少なくとも一方により射出された2次的な光線が第2のオブジェクトと交差する場合、前記2次的な光線と前記第2のオブジェクトとの交差点における法線情報を前記法線バッファに出力しないことができるように構成されていることを特徴とする画像処理装置。
【請求項2】
3次元コンピュータグラフィックスに係る画像を生成する画像処理方法であって、
レイトレーシング処理により画像を描画する工程と、
前記レイトレーシング処理により描画される際に射出されている光線と仮想空間内のオブジェクトとの交差点における法線情報を法線バッファに出力する工程と、
前記法線バッファの法線情報に基づいて前記描画された画像に含まれるオブジェクトの輪郭線を描画する工程とを含み、
前記出力する工程は、前記レイトレーシング処理の際に視線から射出された光線と最初に交差した第1のオブジェクトに対して、光を鏡面反射させる設定、および光を屈折させる設定の少なくとも一方がなされている場合であって、前記鏡面反射および屈折の少なくとも一方により射出された2次的な光線が第2のオブジェクトと交差する場合、前記2次的な光線と前記第2のオブジェクトとの交差点における法線情報を前記法線バッファに出力しないことを特徴とする画像処理方法。
【請求項3】
3次元コンピュータグラフィックスに係る画像を生成するためにコンピュータを、
レイトレーシング処理により画像を描画する手段と、
前記レイトレーシング処理により前記画像が描画される際に射出されている光線と仮想空間内のオブジェクトとの交差点における法線情報を法線バッファに出力する手段と、
前記法線バッファの法線情報に基づいて前記レイトレーシング処理手段により描画された画像に含まれるオブジェクトの輪郭線を描画する手段として機能させるプログラムであって、
前記法線バッファに出力する手段は、前記レイトレーシング処理の際に
視線から射出された光線と最初に交差した第1のオブジェクトに対して、光を鏡面反射させる設定、および光を屈折させる設定の少なくとも一方がなされている場合であって、前記鏡面反射および屈折の少なくとも一方により射出された2次的な光線が第2のオブジェクトと交差する場合、前記2次的な光線と前記第2のオブジェクトとの交差点における法線情報を前記法線バッファに出力しないことができるように構成されていることを特徴とするプログラム。
【請求項4】
請求項3に記載のプログラムを格納したコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、画像処理方法、プログラム及び記憶媒体に関する。
【背景技術】
【0002】
近年、レイトレーシングと呼ばれるレンダリング技法が用いられるようになってきている。レイトレーシングとは、光線(以下、「レイ」ともいう。)の伝搬を追跡することで、所定の視点において観測される像等をシミュレートする手法である。具体的には、視点からレイを飛ばして、イメージプレーン上の各画素にレイと3次元モデル表面との交差点の色を割り当てるサンプリング方式の処理を行うことによって、写真のような表現を得るものである。
【0003】
このようなレイトレーシングはコンピュータに非常に高い負荷がかかるため、従来はコンピュータゲーム等におけるリアルタイムレンダリングに適したものではなかったものの、2018年には例えば米Microsoft社がDirectX(登録商標)にレイトレーシングを取り入れるAPI(Application Programming Interface)セットであるDirectX Raytracing(DXR)を発表し、同年に米Nvidia社がDXRをサポートする専用ハードウェアであるGeForce(登録商標) RTXプラットフォームを発表した。これにより、リアルタイム性(即時応答性)が要求される分野でレイトレーシングを活用できるようになってきている。
【0004】
一方、所定のオブジェクトをアニメ調にしたい、または所定のオブジェクトを目立たせたい(例えば、ゲームにおいて、ユーザに選択されたキャラクタを強調するなど)という目的から、3次元コンピュータグラフィックスのレンダリング技法においては、3次元モデルの輪郭線を描画する技術として例えば背面(バックフェイス)法が知られており、上記輪郭線を描画する技術に関する各種の発明がなされてきた(非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0005】
【文献】松尾隆志,三上浩司,渡辺大地,近藤邦雄,“リアルタイム3DCGにおける物体の形状を考慮した輪郭線の誇張表現手法の提案”,一般社団法人芸術科学会,2011年12月15日,Vol.10,No.4,pp.251-262
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述のような写実性の高いレイトレーシングにおいて、所定のオブジェクトを目立たせたい等の要望から上記オブジェクトに輪郭線を描画する場合、各画像においてユーザが輪郭線を描画しない領域(非輪郭線描画領域)を指定しない限り、レンダリング対象の画像に存在する3次元モデルには一様に輪郭線が描かれることになる。言い換えると、レイトレーシングにおいて人の手により非輪郭線描画領域を設定すると、その領域には輪郭線が描かれないということになる。よって、レイトレーシングにおいて特定のオブジェクトに輪郭線を描画する場合、上述のように非輪郭線描画領域を人の手によって設定する必要があるが、これはプリレンダリングの場合は問題無いであろう。
【0007】
しかしながら、リアルタイムのレイトレーシングにおいては、そのリアルタイム性を確保することを考慮すると、人の手による非輪郭線描画領域の設定は現実的とは言えない。何故ならば、例えば、オブジェクトに輪郭線が描画される仕様のビデオゲームにおいて、特定の領域(例えば、鏡等の反射物)にあるオブジェクト(例えば、鏡に映り込んでいるオブジェクト)には輪郭線を描画しないようにする場合、常に人の手で各フレームの画像に対して非輪郭線描画領域の設定をし続けなければならない。さらには、上記ビデオゲームのフレームレートが30fpsである場合、各フレームの画像に対して1/30秒以内で人の手による設定がなされなければならないが、現状このような設定は不可能と言って良い。
【0008】
上述のように、リアルタイムなレイトレーシングが活用できるようになってきている昨今、写実性の向上だけでなく、リアルタイム性を損なうことなくより多様な表現を実現できるようになることが望まれてくるだろう。具体的には、リアルタイムなレイトレーシングにおいて、写実性向上とは違った観点の表現として所定のオブジェクトに輪郭線を描画する際、所定のオブジェクト(例えば、反射や屈折が起こる材質に映り込むオブジェクト)には輪郭線を描画しないということの実現である。もちろん、この要望はリアルタイムなレイトレーシングに限らず、リアルタイム性が求められないレイトレーシングにも当て嵌まることである。
【0009】
本発明は、上記の点に鑑みてなされたものであり、リアルタイム性を有するレイトレーシングであっても、所定のオブジェクトに輪郭線を描画する場合、より多様な表現を実現することが可能な画像処理装置、画像処理方法、プログラム及び記憶媒体を提供することを目的とするものである。
【課題を解決するための手段】
【0010】
上記の目的を達成するために、本発明の一態様に係る画像処理装置は、3次元コンピュータグラフィックスに係る画像を生成する画像処理装置であって、レイトレーシング処理により画像を描画する手段と、前記レイトレーシング処理により前記画像が描画される際に射出されている光線と仮想空間内のオブジェクトとの交差点における法線情報を法線バッファに出力する手段と、前記法線バッファの法線情報に基づいて前記描画された画像に含まれるオブジェクトの輪郭線を描画する手段と、を備え、前記法線バッファに出力する手段は、前記レイトレーシング処理の際に視線から射出された光線と最初に交差した第1のオブジェクトに対して、光を鏡面反射させる設定、および光を屈折させる設定の少なくとも一方がなされている場合であって、前記鏡面反射および屈折の少なくとも一方により射出された2次的な光線が第2のオブジェクトと交差する場合、前記2次的な光線と前記第2のオブジェクトとの交差点における法線情報を前記法線バッファに出力しないことができるように構成されていることを特徴とする。
【0011】
また上記の目的を達成するために、本発明の一態様に係る画像処理方法は、3次元コンピュータグラフィックスに係る画像を生成する画像処理方法であって、レイトレーシング処理により画像を描画する工程と、前記レイトレーシング処理により描画される際に射出されている光線と仮想空間内のオブジェクトとの交差点における法線情報を法線バッファに出力する工程と、前記法線バッファの法線情報に基づいて前記描画された画像に含まれるオブジェクトの輪郭線を描画する工程とを含み、前記出力する工程は、前記レイトレーシング処理の際に視線から射出された光線と最初に交差した第1のオブジェクトに対して、光を鏡面反射させる設定、および光を屈折させる設定の少なくとも一方がなされている場合であって、前記鏡面反射および屈折の少なくとも一方により射出された2次的な光線が第2のオブジェクトと交差する場合、前記2次的な光線と前記第2のオブジェクトとの交差点における法線情報を前記法線バッファに出力しないことを特徴とする。
【0012】
また上記の目的を達成するために、本発明の一態様に係るプログラムは、3次元コンピュータグラフィックスに係る画像を生成するためにコンピュータを、レイトレーシング処理により画像を描画する手段と、前記レイトレーシング処理により前記画像が描画される際に射出されている光線と仮想空間内のオブジェクトとの交差点における法線情報を法線バッファに出力する手段と、前記法線バッファの法線情報に基づいて前記レイトレーシング処理手段により描画された画像に含まれるオブジェクトの輪郭線を描画する手段として機能させるプログラムであって、前記法線バッファに出力する手段は、前記レイトレーシング処理の際に視線から射出された光線と最初に交差した第1のオブジェクトに対して、光を鏡面反射させる設定、および光を屈折させる設定の少なくとも一方がなされている場合であって、前記鏡面反射および屈折の少なくとも一方により射出された2次的な光線が第2のオブジェクトと交差する場合、前記2次的な光線と前記第2のオブジェクトとの交差点における法線情報を前記法線バッファに出力しないことができるように構成されていることを特徴とする。
【0013】
また上記の目的を達成するために、本発明の一態様に係る記憶媒体は、上記に記載のプログラムを格納したコンピュータが読み取り可能な記憶媒体であることを特徴とする。
【発明の効果】
【0014】
本発明によれば、リアルタイム性を有するレイトレーシングであっても、所定のオブジェクトに輪郭線を描画する場合、より多様な表現を実現することができる。
【図面の簡単な説明】
【0015】
【
図1】本発明の一実施形態に係る画像処理装置のハードウェア構成を示す図である。
【
図2】本発明の一実施形態に係る画像処理装置の機能構成を示す図である。
【
図3】本発明の一実施形態に係るレイトレーシング処理部の概要を示す図である。
【
図4】本発明の一実施形態に係るレイトレーシング処理部の制御ロジックを示すフローチャートである。
【
図5】比較例に係るレイトレーシング処理部の制御ロジックを示すフローチャートである。
【
図6】本発明の一実施形態に係る画像処理の効果を説明する模式図である。
【発明を実施するための形態】
【0016】
本発明の一実施形態に係る画像処理装置及び画像処理方法では、米Microsoft社が発表したDirectXにレイトレーシングを取り入れるAPI(Application Programming Interface)セットであるDirectX Raytracing(DXR)対応の専用ハードウェアであるグラフィックボード16(
図1参照)が用いられるものとする。なお、DXRに限定されるものではなく、他のグラフィックスAPI対応のものであってもよい。以下、本発明の実施形態について説明する。
【0017】
図1は、本発明の一実施形態に係る画像処理装置のハードウェア構成を示す図である。
【0018】
図1に示す画像処理装置1は、バス19を介して接続されたCPU(Central Processing Unit)11、GPU(Graphics Processing Unit)12、メモリ13、HDD(Hard Disc Drive)14、入力装置15、グラフィックボード16、表示装置17、インターフェース装置18を備える。この画像処理装置1は、3次元コンピュータグラフィックスに係る画像を生成する。
【0019】
CPU11は、メモリ13に記憶された各種プログラムを実行する中央演算装置である。GPU12は、メモリ13に記憶された各種プログラムやCPU11からの指示に従って3次元グラフィックス等の画像処理に係る演算を並列処理にて行うプロセッサである。
【0020】
メモリ13は、CPU11やGPU12によって実行されるプログラム及びプログラムによって使用されるデータを記憶するRAM(Random Access Memory)、ROM(Read Only Memory)等の記憶装置である。なお、ここでいうプログラムとは、特に
図4を用いて後述する制御ロジックを実現する画像処理プログラムである。このような画像処理プログラムは、例えば当該画像処理プログラムが記憶された記憶媒体を介して当該画像処理装置1にインストールされる。
【0021】
HDD14は、各種データ等を記憶する記憶装置である。SSD(Solid State Drive)であってもよい。入力装置15は、ユーザが各種情報を入力するための装置、例えばキーボード、マウスである。
【0022】
グラフィックボード16は、リアルタイムレイトレーシング対応のGPUを搭載したグラフィックスカード、例えばGeForce RTX 2070、GeForce RTX 2080等の専用ハードウェアである。表示装置17は、例えばLCD(Liquid Crystal Display)やCRT(Cathode Ray Tube)等の表示装置である。インターフェース装置18は、インターネット等の外部ネットワークに接続するためのインターフェース装置である。
【0023】
なお、上記の画像処理装置1は、単体のGPU12と、グラフィックボード16に搭載されたGPUとの少なくともいずれか一方を備えていても良い。また、画像処理装置1は、物理的に1台のコンピュータである場合に限定されるものではない。複数台のコンピュータを組み合わせることにより構成されてもよい。
【0024】
図2は、本発明の一実施形態に係る画像処理装置の機能構成を示す図である。
図3は、本発明の一実施形態に係るレイトレーシング処理部の概要を示す図である。
【0025】
図2に示す画像処理装置1は、制御部21、レイトレーシング処理部22、ポストプロセス処理部23を備える。
【0026】
制御部21は、レイトレーシング処理部22によるレイトレーシングに係る処理や、ポストプロセス処理部23によるポストプロセスに係る処理を制御する。この制御部21は、
図1のCPU11等によって実現される。
【0027】
レイトレーシング処理部22は、視点に届く光線を逆方向に追跡することにより視点における仮想空間内のオブジェクトを含む画像を描画するレイトレーシングに係る処理を行う。なお、前述の通り、レイトレーシングはパストレーシングやフォトンマッピング等の技術を含む。このレイトレーシング処理部22は、
図1のGPU12やグラフィックボード16に搭載されたGPUによって実現される。
図3を用いてレイトレーシング処理の概要について説明する。
【0028】
まずレイトレーシング処理部22は、生成すべきフレーム(静止画)毎にレンダリング対象のシーンに応じて3次元空間(仮想空間)内に
図3に示すような視点(仮想視点)301、イメージプレーン(仮想スクリーン)302及びオブジェクト(
図3では物体303、オブジェクトにはその他の不図示の物体、地面、壁等も含まれる)を配置し、次に視点301からイメージプレーン302上の各画素に対して飛ばすレイ(一次光線)R1等を生成する。
図3では説明の便宜上、一つの画素X1に対してレイR1を生成した場合を例示して以下説明するが、画素X1以外の各画素に対しても同様の処理を行うものとする。生成されたレイR1は、3次元空間を通過して物体や地面、壁等のオブジェクトに衝突する。
図3に示す例では、具体的にはレイR1は物体303と交差点Aにおいて衝突する。
【0029】
続いて、レイトレーシング処理部22は、レイR1と該レイR1と最初に交差する物体303との交差点AにおいてシャドーレイR2、反射レイR3を生成する。シャドーレイR2、反射レイR3を二次光線という。シャドーレイR2は、交差点Aから光源304の方向に生成される光線である。反射レイR3は、物体303が反射物質(光を正反射させると設定されたオブジェクト)である場合にレイR1の入射角と等しい反射角の方向に正反射(鏡面反射)して生成される光線である。なお、レイR1、シャドーレイR2、反射レイR3は、出処は様々であるがレイトレーシングによる画像生成の際に射出されている光線である。
【0030】
ここで反射物質とは、反射の法則が成り立つ正反射(鏡面反射)するものであり、例えば、反射率93%等の銀面、反射率90~95%等のアルミ電解研磨面、反射率80~85%等のガラス鏡面(アルミ合金)、反射率70~75%等の水銀・アルミ、反射率60~70%等の金・クローム・ニッケル・白金・すず、反射率50~60%等の銅・鋼・タングステン、反射率20~30%等のすず箔・銀箔・アルミ箔、反射率10~12%等の透明ガラス、反射率5%等の黒色ガラス、反射率2%等の水面等が挙げられる。物体303が反射物質であるか否かについては、物体303のメタデータに記述されており、レイトレーシング処理部22は、メタデータに基づいて物体303が反射物質であるか否かを判定する。なお、本実施形態で重要なことは、レイが交差したオブジェクトが反射物質であるか否かを判定することにあるので、その判定方法はいずれの方法であっても良い。例えば、プログラムにおける反射に関するパラメータ(反射率など)から反射物質であるか否かの判定を行っても良い。
【0031】
図3に示す例では、シャドーレイR2は、3次元空間を通過して光源304に向かって射出される。交差点Aのように当該交差点Aと光源304との間に他の物体がない場合、レイトレーシング処理部22は、交差点Aは遮蔽されていないとみなし、画素X1に対して影の描画は行わない。なお、交差点と光源304との間に他の物体がある場合、レイトレーシング処理部22は、その交差点は遮蔽されているとみなし、対応する画素は影に含まれる画素と決定する。よって、その画素には影(所望の影の色に対応するRGBの階調)に対応する色が割り当てられる。
【0032】
反射レイR3は、視点より射出されたレイR1と最初に交差した第1のオブジェクトとしての反射物質による反射によって射出された2次的な光線であって、3次元空間を通過して第2のオブジェクト、すなわち他の物体や地面、壁等に衝突する場合、レイトレーシング処理部22は、衝突した他のオブジェクトとの交差点の座標及び色相情報を確認するとともに、当該交差点からシャドーレイを生成する。また、衝突した他のオブジェクトが反射物質である場合には更に反射レイを生成する。生成されたシャドーレイや反射レイについての以降の処理は、シャドーレイR2、反射レイR3と同様である。
【0033】
以上
図3を用いてレイトレーシング処理部22の概要について説明してきたが、本実施形態に係るレイトレーシング処理部22は、さらに、後に各画素の画素値を計算するために、イメージプレーン302上の各画素毎に各々の状況に応じた(各レイ(レイR1、シャドーレイR2、反射レイR3)と交差した部分、または背景)のRGB各々の輝度(以降、単に「輝度」と呼ぶこともある)を計算し、計算された輝度に係る輝度情報をカラーバッファと称する一時的な記憶領域に出力する。また、レイトレーシング処理部22は、イメージプレーン302上の各画素毎に、レイの伝搬により衝突したオブジェクトが反射物質ではない場合に該オブジェクトの垂直方向(法線方向)の向きに係る情報、すなわち法線情報(法線ベクトル)を取得し、該法線情報を法線バッファと称する一時的な記憶領域に出力する。この出力の際に法線マップが作成される。これらカラーバッファ及び法線バッファは、GPU12内に設けられているGPUメモリに保存される。詳細については
図4を用いて後述する。
【0034】
ポストプロセス処理部23は、レイトレーシング処理部22によりレイトレーシング処理が施されて生成された画像に対して、画像処理により事後処理的に輪郭線を描画する処理を行う。具体的には、上記のイメージプレーン302上の各画素毎に、上記の法線バッファに出力された法線情報に基づいて輪郭線を追加で描画する。このポストプロセス処理部23は、レイトレーシング処理部22と同様に、
図1のGPU12やグラフィックボード16に搭載されたGPUによって実現される。
【0035】
以上に示す構成により、本実施形態に係る画像処理装置1は、複数のオブジェクトを含む3次元コンピュータグラフィックスに係る画像を生成する。レイトレーシング処理部22がレイトレーシングに係る処理を行うとともに、ポストプロセス処理部23がレイトレーシング処理部22によるレイトレーシング処理により生成された画像に対して輪郭線を追加で描画する処理を行う。なお、ポストプロセス処理部23によって輪郭線が描画された画像は表示装置17(
図1参照)に表示される。
【0036】
[本発明の一実施形態に係るレイトレーシング処理部の制御ロジック]
図4は、本発明の一実施形態に係るレイトレーシング処理部の制御ロジックを示すフローチャートである。
【0037】
以下では、
図2や
図3を適宜参照しながらレイトレーシング処理部22の動作を説明する。なお、本制御ロジックの説明では、
図3に示す物体303はプリミティブと呼ばれる決定された単位領域の集合により構成されるものとして説明を行う。プリミティブは例えば三角形等の多角形であり、以下ではプリミティブが三角形である場合を例に説明する。
【0038】
まず所定の画像を生成するにあたり、レイトレーシング処理部22は、3次元空間における視点301の位置、方向、各オブジェクト(例えば物体303等)の座標、物体の形状、各物体の表面の色、光源304の位置を取得すると、
図4に示す処理は開始される。なお、これら情報の取得については、本処理を適用する場面に応じて従来から行われている様々な手法から適宜選択して行えばよい。また、
図4に示す処理を開始する時点においては、レイの反射回数は0回である。
【0039】
まずレイトレーシング処理部22は、視点301からレイR1を射出する(S11)。ステップS11では、レイトレーシング処理部22は、上記取得した情報に基づいて、3次元空間内に視点301、物体(例えば物体303等)、光源304を配置し、その後視点301からイメージプレーン302の所定の画素X1に対するレイR1を生成して射出する。なお、一連のステップS11~S23の処理は、イメージプレーン302上の各画素に対して並列に行われる。
【0040】
レイトレーシング処理部22は、レンダリング対象の領域において所定のレイ(レイR1(ステップS11からの場合)または反射レイR3(後述するステップS22からの場合))と交差するオブジェクトがあるか否かを判定する(S12)。レイがオブジェクトと交差すると判断される場合(S12でYES)はステップS14に進む。一方、レイがオブジェクトと交差しないと判断される場合(S12でNO)は、レイトレーシング処理部22は、対応する画素が背景色となるように輝度を設定し、該輝度をカラーバッファに出力する(S13)。なお、対応する画素についてすでにカラーバッファに輝度が出力されている場合、(後述するステップS20にてYESの場合であって、例えば反射物質に空が映り込んでいる場合等)レイトレーシング処理部22は、対応する画素について、すでに書き込まれている輝度に加えて、上記背景色として計算された輝度をカラーバッファに出力する。
【0041】
次にレイトレーシング処理部22は、レイと三角形の交差判定を行う(S14)。ステップS14では、レイ(レイR1または反射レイR3)と物体303(前述の通り、厳密には物体を構成するプリミティブの三角形)との交差を判定する。レイが三角形と交差しない場合(S15でNO)、ステップS14に戻り、ステップS14の処理を繰り返す。この繰り返し処理により、レイトレーシング処理部22は、レイと交差(衝突)するプリミティブの三角形を抽出する。
【0042】
一方、レイが三角形と交差した場合(S15でYES)、レイトレーシング処理部22は、サブルーチンであるシャドーレイ処理を行う(S16)。本ステップS16は、影がある場合はその影を生成するための処理であって、従来と同様の方法(例えば
図3にて説明した処理)で行えば良いのでここではその説明を割愛する。
【0043】
ステップS17では、レイトレーシング処理部22は、上記レイと三角形との交差点の輝度を算出し、該輝度情報をカラーバッファに出力する(S17)。すなわち、ステップS17では、レイトレーシング処理部22は、レイR1を射出した所定の画素X1について上記三角形が含まれるオブジェクトに応じた輝度の計算を行い、カラーバッファに出力する。このとき、ステップS16にて上記交差点が影に相当する領域である場合は、レイトレーシング処理部22は、上記影が反映されるように輝度を計算し、該輝度がカラーバッファに書き込まれる。なお、本ステップにおいて、対応する画素についてすでにカラーバッファに輝度が出力されている場合は(後述するステップS20にてYESの場合)、視線の反射方向に反射レイR3が飛ばされた場合であって、直前のステップS15では交差と判定されたオブジェクトは反射物質に映り込んだものである。よって、この場合は、レイトレーシング処理部22は、対応する画素について、すでに書き込まれている輝度に加えて、直前のステップS15でレイ(反射レイ)と交差した点について計算された輝度をカラーバッファに出力する。すなわち、この場合(ステップS20にてYESの場合)カラーバッファには、対応する画素に対して、反射物質に関する輝度と、反射によって該反射物質に映り込むオブジェクト(または背景)の輝度が書き込まれることになる。
【0044】
その後ステップS18に進み、レイトレーシング処理部22は、レイの反射回数が1回以上であるか否かを判定する(S18)。レイの反射回数が0回の場合(S18でNO)、すなわち初めてのステップS18に係る処理の場合には、ステップS19に進み、レイトレーシング処理部22は、上記レイと三角形との交差点の法線ベクトルを取得し、その法線情報を法線バッファに出力する(S19)。ステップS19では、レイによるプリミティブの三角形への1回目の交差の場合に、当該三角形の法線情報を法線バッファに出力する。その後ステップS20に進む。
【0045】
一方、ステップS18においてレイの反射回数が1回以上の場合(S18でYES)、法線バッファへの出力は行わずにステップS20に進む。
【0046】
ステップS20に進むと、レイトレーシング処理部22は、当該プリミティブの三角形が含まれる物体303が反射物質か否かを判定する(S20)。ステップS20では、上述の通り、メタデータに基づいて物体が反射物質であるか否かを判定する。反射物質ではない場合(S20でNO)、ステップS23に進む。また反射物質である場合(S20でYES)、レイトレーシング処理部22は、レイの反射回数を1増やす(S21)。このように、本実施形態では、レイトレーシング処理部22は、レイの反射回数を計測することになる。
【0047】
ステップS22では、レイトレーシング処理部22は、上記レイとの交差した点より反射レイR3を射出する(S22)。この反射レイR3について、ステップS12~S20を行うことによって、反射物質における反射に対するレイの追跡を行うことになる。
【0048】
ステップS23では、レイトレーシング処理部22は、カラーバッファに出力されている対応する画素に対する情報に基づいて、該対応する画素に対する画素値(輝度)を計算する(S23)。
【0049】
上述のように本実施形態においては、レイトレーシング処理部22は、ステップS16により、イメージプレーン302上の各画素について、レイによる1回目に交差した物体が反射物質である場合には、1回目の交差に係る法線情報のみを法線バッファに出力する。このようにすることで、オブジェクトに輪郭線を描画する場合において、反射物質に映り込むオブジェクトには輪郭線を描画しないような表現を実現することができる。
【0050】
なお、本実施形態では、レイトレーシング処理部22は、反射回数が1回以上の場合は法線バッファへの書き出しを行わないようにしているが、反射回数が2回以上、3回以上・・・の場合は法線バッファへの書き出しを行わないようにしても良い。すなわち、反射回数がk回(kは1以上の整数)以上である場合は法線バッファに法線情報を出力しないようにしても良いのである。このようにレイトレーシング処理部22を構成することにより、反射物質に映り込むオブジェクトについて、kが1の場合は、(反射の回数に関係なく)反射にて映り込んだオブジェクト(反射像)には輪郭線が描画されないようにでき、kが2以上の整数の場合k-1回目の反射像までには輪郭線を描画し、k回目以降の反射像には輪郭線を描画しないという反射回数に応じて反射像(反射先のオブジェクト)に輪郭線の描画の有無を制御することができる。
【0051】
なお、
図4に示す一連の処理が終了すると、ポストプロセス処理部23(
図2参照)は、
図4に示す一連の処理により出力された法線バッファにより表される法線マップに基づいて、上記のイメージプレーン302上の各画素について輪郭線を追加で描画する。なお、このとき、レイによる1回目に交差したオブジェクトが反射物質である場合には、当該反射物質内に映される他のオブジェクトの輪郭線は描画されないこととなる。
【0052】
このように、本実施形態によれば、視点301から発せられたレイと最初に衝突するオブジェクトが反射物質である場合、レイトレーシング処理部22は、該反射物質そのものの面の傾きに相当する法線情報(法線ベクトル)はステップS19にて法線バッファに書き込まれ、上記反射物質に映ったその先にあるオブジェクト(ステップS20のYES以降で反射レイと交差するオブジェクト)の面の傾きに相当する法線情報は法線バッファに書き込まない。よって、法線バッファには、反射物質そのものに対する法線情報のみが出力されているので、法線バッファに出力された法線マップに基づいてオブジェクトの輪郭線を描画するポストプロセス処理部23は、反射物質に映り込んだオブジェクトに対しては輪郭線を描画しないことになるのである。
【0053】
以上のように、レイトレーシング処理部22は、生成すべき画像中のオブジェクトにおいて反射物質であるオブジェクトに対して、該反射物質に映り込むオブジェクトに対する法線ベクトルは法線バッファに出力しないように構成されている。その結果、ポストプロセス処理部23により、反射物質であるオブジェクト内に映される他のオブジェクトには輪郭線が描画されない。すなわち、レイトレーシングにより生成される画像において、反射物質に映り込んでいるオブジェクトには輪郭線を描画せず、それ以外のオブジェクトには輪郭線を描画するという表現を可能にすることができる。
【0054】
なお、本実施形態では、反射物質と設定されたオブジェクトに映り込むオブジェクトには輪郭線を描画しないようにしているが、特定の反射物質に映り込むオブジェクトには輪郭線を描画する(それ以外の反射物質に映り込むオブジェクトには輪郭線を描画しない)ようにすることもできる。例えば、反射物質である鏡に映り込むオブジェクトには輪郭線を描画し、鏡以外の反射物質に映り込むオブジェクトには輪郭線を描画しない場合は、例示した
図4に示すプログラムにおいて、ステップS17とステップS18の間にレイと交差したオブジェクトは鏡か否か(輪郭線描画が必要な反射物質か否か)の判断ブロックを設置し、レイと交差したオブジェクトが鏡ではない場合はステップS18に進み、鏡である場合は、ステップS19に進むようにすればよい。このようにすることで、特定の反射物質(上記例では鏡)に映り込むオブジェクトには輪郭線を描画し、上記特定の反射物質以外の反射物質に映り込むオブジェクトには輪郭線を描画しないという表現をすることができる。
【0055】
[従来技術に係るレイトレーシング処理部の制御ロジック]
図5は、比較例に係るレイトレーシング処理部の制御ロジックを示すフローチャートである。以下では、
図4で示した本実施形態に係るレイトレーシング処理部の動作と従来技術に係るレイトレーシング処理部の動作との違いを説明する。
【0056】
図5に示す従来技術に係る制御ロジックでは、
図4のステップS18~S19の代わりに、ステップS28が設けられている。すなわち、ステップS28において、レイトレーシング処理部は、レイの反射回数に関係なく、レイとオブジェクト(前述の通り、厳密には物体を構成するプリミティブの三角形)とが交差したときの当該三角形の法線情報を法線バッファに出力している。
【0057】
なお、
図5に示す一連の処理が終了すると、ポストプロセス処理部は、
図5に示す一連の処理により出力された法線バッファにより表される法線マップに基づいて、上記のイメージプレーン302上の各画素について輪郭線を追加で描画する。なお、このとき、レイによる1回目に交差したオブジェクトが反射物質である場合には、当該反射物質内に映される他のオブジェクトの輪郭線は描画されることとなる。
【0058】
[本発明の一実施形態に係る画像処理の効果]
図6は、本発明の一実施形態に係る画像処理の効果を説明する模式図である。
【0059】
図6(a)は、
図5に示す従来技術の制御ロジックによるレンダリング結果を模式的に示している。
図6(b)は、
図4に示す本実施形態に係る制御ロジックによるレンダリング結果を模式的に示している。
【0060】
図6(a)に示すレンダリング結果では、反射物質であるオブジェクト100内に他のオブジェクト110の反射オブジェクト110Aが描画されているが、反射オブジェクト110Aの輪郭線も描画されている。一方、
図6(b)に示すレンダリング結果では、反射物質であるオブジェクト100内に他のオブジェクト110の反射オブジェクト110Bが描画されているが、反射オブジェクト110Bの輪郭線は描画されてない(
図6においては、反射オブジェクト11Bの輪郭部を破線で示しているが、実際の画面には本破線は表示されていない)。なお、
図6(a)、(b)に示すいずれのレンダリング結果においても、反射物質であるオブジェクト100そのものの輪郭線は描画される。
【0061】
このように、本実施形態では、各画素においてレイの反射回数を計測し、その反射回数が1回以上の場合(実質、反射が起こった場合)は法線バッファへの法線情報の書き出しを行わないようにしている(レイとの交差するオブジェクトが反射物質である場合、その反射物質に映り込んだオブジェクトの面の傾きに相当する法線情報(法線ベクトル)は法線バッファに出力しないようにしている)ので、レイの反射先のオブジェクトの法線情報を適用せず、視点301から射出されたレイR1が最初に照射されたオブジェクトの法線情報のみを適用することができる。従って、描画されるオブジェクトが例えば鏡や金属等の反射物質を含む場合に、当該反射物質に映る他のオブジェクトの反射像の輪郭線を描画しないようにすることができる。すなわち、各画素について計測された反射回数に応じて法線バッファへの出力を制御しているので、所定回数以上のレイの反射先のオブジェクトの法線情報を適用せず、所定回数未満のレイの反射先のオブジェクトの法線情報のみを適用することができ、所定回数以上反射した先のオブジェクトには輪郭線が描画されないようにすることができる。
【0062】
また、本実施形態においては、レイトレーシングにて生成された画像に対して法線バッファに出力された法線情報に基づいて輪郭線を描画する構成において、視点からのレイが最初に交差したオブジェクトが反射物質である場合にその反射先のオブジェクトの法線情報を上記法線バッファには出力しないようにしている(反射先のオブジェクトの法線情報を適用しないようにしている)ので、非輪郭線描画領域を人の手で設定しなくても非輪郭線描画領域(本実施形態では反射物質)に含まれているオブジェクトには輪郭線の描画をしないようにできる。従って、反射物質に映り込むオブジェクトには輪郭線を描画しないという表現を、リアルタイムなレイトレーシングにおいても実現することができる。
【0063】
また、
図4に示すプログラムと
図5に示すプログラムとを切替えることによって、同じコンテンツでも、反射物質に映り込んだオブジェクトの輪郭線を描画する場面としない場面との双方を実現することができる。
【0064】
さらに、同じ画像において、反射物質やオブジェクトの種類に応じて、反射物質に映り込んだオブジェクトの輪郭線を描画する場合と描画しない場合とを出しわけることもできる。
【0065】
以上、本発明の実施形態について説明したが、上記実施形態は本発明の適用例を示したものであり、本発明の技術的範囲を上記実施形態の具体的構成に限定する趣旨ではない。
【0066】
例えば、上記説明においては、描画されるオブジェクトが反射物質であるか否かによって当該オブジェクト内に映される他のオブジェクトの輪郭線を描画するか否かを制御する場合を例に挙げて説明してきたが、反射の場合に限定されるものではなく、例えば屈折の場合であってもよい。例えば、レイR1が最初に交差するオブジェクトが屈折を起こすオブジェクトである場合、レイR1との交差点においてスネルの法則に基づいて計算された方向にレイ(屈折レイ(屈折によって射出された2次的な光線)と呼ぶ)が射出される。この屈折レイもレイトレーシングによる画像生成の際に射出されている光線となる。このような屈折の場合においても、レイトレーシング処理部22は、屈折レイと交差するオブジェクト(上記屈折を起こすよう設定されたオブジェクトとは異なる第2のオブジェクト)の交差点における法線情報(法線ベクトル)を法線バッファに出力しないようにすれば良い。なお、オブジェクトに対する光を屈折させる設定は、上述したようにメタデータによる記述であっても良いし、プログラムにおける所定のパラメータ(屈折率や透過率など)によるものであっても良い。
【0067】
さらには、レイトレーシング処理において、所定のオブジェクトについて正反射および屈折の双方を起こさせるように設定すること(例えば、水面に映り込んだ反射像と水に沈んでいる像とが上記水面に重畳表示される場合)も可能であり、この場合に対しても本実施形態を適用することができる。すなわち、視点301から射出されたレイR1が最初に交差したオブジェクトに対して正反射および屈折を起こすものとして設定をし、レイトレーシング処理部22を、上記正反射および屈折により射出された2次的な光線としての反射レイおよび屈折レイの各々と交差したオブジェクトの交差点における法線情報を法線バッファに出力しないように構成すればよい。
【0068】
前述した実施形態の機能を実現するように前述した実施形態の構成を動作させるプログラム(例えば
図4に示すプログラム)を記憶媒体に記憶させ、該記憶媒体に記憶されたプログラムをコードとして読み出し、コンピュータにおいて実行する処理方法も上述の実施形態の範疇に含まれる。即ちコンピュータ読み取り可能な記憶媒体も実施例の範囲に含まれる。また、前述のコンピュータプログラムが記憶された記憶媒体はもちろんそのコンピュータプログラム自体も上述の実施形態に含まれる。
【0069】
かかる記憶媒体としてはたとえばフロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD-ROM、磁気テープ、不揮発性メモリカード、ROMを用いることができる。
【0070】
また前述の記憶媒体に記憶されたプログラム単体で処理を実行しているものに限らず、他のソフトウエア、拡張ボードの機能と共同して、OS上で動作し前述の実施形態の動作を実行するものも前述した実施形態の範疇に含まれる。
【符号の説明】
【0071】
1 画像処理装置
12 GPU
16 グラフィックボード
21 制御部
22 レイトレーシング処理部
23 ポストプロセス処理部