デフォーカス画像の生成方法及び生成装置
【課題】3次元CGにおいて、デフォーカス画像を効率よく生成し、リアルタイムでの表示を可能にする手段を提供する。
【解決手段】ビューボリューム内に配置された対象物に対して、観察者の視点からの透視変換を行うことにより、2次元画像を生成する方法である。この方法は以下のステップを備える:
(a)前記ビューボリューム内の空間を、観察者からの視点に近いほど細かくされた複数のボクセルに区切るステップ;
(b)前記ボクセルの中心から前記視点への光路を辿ることにより、前記観察者の網膜上でのボケ量を算出するステップ;
(c)前記網膜上でのボケ量に対応する、前記ボクセル中での頂点ずれ範囲を算出して記録するステップ;
(d)前記頂点ずれ範囲に応じて、当該頂点を実際にずらすステップ;
(e)前記視点から見た前記2次元画像を透視変換により生成するステップ。
【解決手段】ビューボリューム内に配置された対象物に対して、観察者の視点からの透視変換を行うことにより、2次元画像を生成する方法である。この方法は以下のステップを備える:
(a)前記ビューボリューム内の空間を、観察者からの視点に近いほど細かくされた複数のボクセルに区切るステップ;
(b)前記ボクセルの中心から前記視点への光路を辿ることにより、前記観察者の網膜上でのボケ量を算出するステップ;
(c)前記網膜上でのボケ量に対応する、前記ボクセル中での頂点ずれ範囲を算出して記録するステップ;
(d)前記頂点ずれ範囲に応じて、当該頂点を実際にずらすステップ;
(e)前記視点から見た前記2次元画像を透視変換により生成するステップ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、3次元コンピュータグラフィックス(3DCG)の分野において、デフォーカス画像を生成する方法及び装置に関するものである。すなわち、本発明は、3次元空間内に配置された対象物に対する透視変換を行うことにより2次元画像を生成するに際してデフォーカス画像を生成できる方法及び装置に関するものである。
【背景技術】
【0002】
反射・屈折の表示はコンピュータグラフィクスの研究の中で重要なテーマの一つである。従来からレイトレーシングによってこれらの処理が実現されているが、処理時間が膨大である。そのため近年は、グラフィックスハードウェアの機能である環境マッピングを使ってリアルタイムで反射・屈折を近似的に表示する手法が一般的に使われている。
【0003】
レイトレーシングはもともと光学系設計のための手法であり、正確な屈折をシミュレートするために現在も使われている。精度が要求される光学系の設計には、近似手法は現在使われていない。
【0004】
しかし、人間がメガネレンズを通して見える様子をシミュレートする目的であれば、近似手法でも実用上問題ないことが期待できる。リアルタイム表示になることにより、設計検証の効率が上がるだけでなく、販売店での顧客への提示といった応用も可能となる。
【0005】
リアルタイムの反射・屈折を考慮した表示を行う技術に関して、関連研究を以下に記載する。さらに、人間の視力矯正のシミュレーションに関する関連研究についても紹介する。
【0006】
(リアルタイムの反射・屈折表示)
反射を近似するためにBlinnによって提案された環境マッピング(非特許文献1)は、ハードウェアにより実装できるため(非特許文献2及び3)、リアルタイム表示の応用に広く用いられている。環境マッピングは映りこむ物体が無限遠にあるという前提が伴うため、特に近くにある(ローカルな)物体に関して誤差が大きいという欠点があった。
【0007】
近年、これを改良するための手法が考案されている。Hakura らは、ローカル物体に関しては別のレイヤーとし、個別の環境マップをレイトレーシングによる前処理で用意することでこれを解決した(非特許文献4)。しかしながら、この方法では反射・屈折物体が動いてローカル物体が頻繁に変わる場合、前処理やり直しのコストが大きい。Szirmay-Kalos らは、画素ごとに奥行き値zも持つキューブマップを求め、反射・屈折方向へのレイと物体の交点を、繰り返し計算で近似することで、ローカル物体のより正確な反射・屈折をリアルタイムで実現した(非特許文献5)。この手法の目的はゲームであるため、屈折はシーンに置かれた透過物体の雰囲気を出すことが目的であった。
【0008】
レンズを通して見たシーン全体の様子を検証するためには、より正確な手法が必要となる。そこで、本発明者らは、レンズ各頂点を通してレイとシーンの交差計算を行い、レイトレーシングと同等の正確さを実現する手法を提案している(特願2006−124656号参照)。
【0009】
(視力矯正のシミュレーション)
人間の眼の特性を考慮した描画手法として、被写界深度のシミュレーションは以前から行われている(非特許文献6及び7)。
【0010】
眼球をレンズ系としてとらえ、視力の矯正まで考慮したシミュレーションモデルはMostafawy らによって提案された(非特許文献8)。Loos らは、波動光学的なアプローチであるwavefront tracing を活用し、累進焦点レンズ(境目のない遠近両用レンズ)による視力矯正のシミュレーションを行った(非特許文献9)。また、Barskyは、Vision Realistic Renderingという概念を導入し、被写界深度の導入を行った(非特許文献11)。
【0011】
これらの従来手法はいずれも分散レイトレーシングを使って処理を行っているため、表示速度は遅くリアルタイム処理は不可能である。
【0012】
また、本発明者らは、ボクセルごとに頂点ずれ量を格納しておき、その頂点ずれ量に基づいてボケ画像を生成する手法を提案している(非特許文献12)。この手法によれば、ほぼリアルタイムでボケ画像を生成することができる。ただし、この手法では、
・ビューボリューム外の空間にもボクセルを想定しているために計算効率が悪い点
・空間を等間隔で区切ることでボクセルを生成しているため、実際の見え方とは若干の違いがある点
において改善の余地があった。
【非特許文献1】1) J.F. Blinn and M.E. Newell. Texture and reflection in computer generated images. Communications of the ACM, Vol. 19, No. 10, pp. 542-547, 1976.
【非特許文献2】2) P.Haeberli and M.Segal. Texture mapping as A fundamental drawing primitive. In Fourth Eurographics Workshop on Rendering, pp. 259-266, 1993.
【非特許文献3】3) D.Voorhies and J. Foran. Reflection vector shading hardware. In Proc. SIGGRAPH '94, pp. 163-166, 1994.
【非特許文献4】4) Z.S. Hakura, J.M. Snyder, and J.E. Lengyel. Parameterized environment maps. In SI3D '01: Proceedings of the 2001 symposium on Interactive 3D graphics, pp. 203-208, 2001.
【非特許文献5】5) L. Szirmay-Kalos, B. Aszodi, I. Lazanyi, and M. Premecz. Approximate Ray-Tracing on the GPU with Distance Impostors. Computer Graphics Forum (Proc. Eurographics 2005), Vol.24, No.3, pp. 685-704, 2005.
【非特許文献6】6) R.L. Cook, T.Porter, and L.Carpenter. Distributed Ray Tracing. In Proc. SIGGRAPH'84, pp. 137-146, 1984.
【非特許文献7】7) P.Haeberli and K.Akeley. The accumulation buffer: hardware support for high-quality rendering. In Proc. SIGGRAPH '90, pp. 309-318, 1990.
【非特許文献8】8) S.Mostafawy, O.Kermani, and H.Lubatschowski. Virtual Eye: Retinal Image Visualization of the Human Eye. IEEE CG&A, Vol.17, No.1, pp. 8-12, January-February 1997.
【非特許文献9】9) J.Loos, Ph. Slusallek, and H.-P. Seidel. Using wavefront tracing for the visualization and optimization of progressive lenses. Computer Graphics Forum (Proc. Eurographics 1998), Vol.17, No.3, pp. 255-263, 1998.
【非特許文献10】10) J.Amanatides and A.Woo. A fast voxel traversal algorithm for ray tracing. In Proc. Eurographics 1987, pp. 3-10, 1987.
【非特許文献11】BARSKY B. A.: Vision-realistic rendering: simulation of the scanned foveal image from wavefront data of human subjects. In Proc. APGV '04 (2004), pp. 73-81.
【非特許文献12】情報処理学会研究報告Vol.2006, No.91, pp.25-30 「頂点ベースのレイトレーシングを用いた屈折矯正結果の表示」
【発明の開示】
【発明が解決しようとする課題】
【0013】
本発明は、前記した状況に鑑みてなされたものである。本発明は、デフォーカス画像を効率よく生成し、リアルタイムでの表示を可能にする手段を提供することを目的としている。
【課題を解決するための手段】
【0014】
前記した課題を解決するために、本発明は、以下のいずれかの項目に記載される構成を備えている。
【0015】
(項目1)
ビューボリューム内に配置された対象物に対して、観察者の視点からの透視変換を行うことにより、2次元画像を生成する方法であって、さらに、以下のステップを備えた画像生成方法:
(a)前記ビューボリューム内の空間を、観察者からの視点に近いほど細かくされた複数のボクセルに区切るステップ;
(b)前記ボクセルの中心から前記視点への光路を辿ることにより、前記観察者の網膜上でのボケ量を算出するステップ;
(c)前記網膜上でのボケ量に対応する、前記ボクセル中での頂点ずれ範囲を算出して記録するステップ;
(d)前記頂点ずれ範囲に応じて、当該頂点を実際にずらすステップ;
(e)前記視点から見た前記2次元画像を透視変換により生成するステップ。
【0016】
項目1に係る発明によれば、網膜上でのボケ量に対応する、ボクセル中での頂点ずれ範囲を算出する。ここで、頂点とは、ポリゴンを構成する要素となるものである。得られた頂点ずれ範囲を用いて、頂点を、実際に、当初の位置からずらす。これにより、当初の位置とはずれた位置に、当該頂点を有するポリゴンが生成される。この状態で透視変換を行う。この作業を繰り返すことで、透視変換によって得られた画像においては、位置がずらされた対象物が重ねて表示されるために、当該対象物は、ぼやけて見えることになる。すなわち、これにより、デフォーカス画像を生成することができる。
【0017】
また、項目1に係る発明によれば、観察者の視点に近いほど、細かくボクセルを区切っているので、ボクセルごとのぼけ量(デフォーカス量)を細かく変更できる。このため、実際の見え方をより正確にシミュレートすることができる。また、このようなボクセル設定は、3次元モデリング空間を用いた画像生成に必須の透視変換と親和性の高い処理となるので、画像生成に要する処理時間を短縮することが可能になる。
【0018】
(項目2)
さらに、
(f)前記視点から前記ボクセルの中心への光路を求めるステップ
を有しており、このステップは、前記ステップ(b)の前に行われ、
かつ、前記ステップ(b)は、前記ステップ(f)で求めた光路を逆に辿ることにより実行される、項目1に記載の画像生成方法。
【0019】
(項目3)
前記ステップ(b)において、前記ボクセルの中心から前記視点への光路を辿る手法として、波面追跡法が用いられている、項目1又は2に記載の画像生成方法。
【0020】
(項目4)
3次元空間内に配置された対象物に対する透視変換を行うことにより2次元画像を生成する装置であって、
この装置は、記憶部と画像生成部とを備えており、
前記記憶部は、処理に必要なデータやコンピュータソフトウエアを格納するものであり、
前記画像生成部は、以下の処理を行うことを特徴とする画像生成装置:
(a)前記ビューボリューム内の空間を、観察者からの視点に近いほど細かくされた複数のボクセルに区切るステップ;
(b)前記ボクセルの中心から前記視点への光路を辿ることにより、前記観察者の網膜上でのボケ量を算出するステップ;
(c)前記網膜上でのボケ量に対応する、前記ボクセル中での頂点ずれ範囲を算出して記録するステップ;
(d)頂点ずれ範囲に応じて、当該頂点を実際にずらすステップ;
(e)前記視点から見た前記2次元画像を透視変換により生成するステップ。
【0021】
(項目5)
3次元空間内に配置された対象物に対する透視変換を行うことにより2次元画像を生成する方法であって、さらに、以下のステップを備えた画像生成方法を、コンピュータにより実行させることを特徴とするコンピュータプログラム:
(a)前記ビューボリューム内の空間を、観察者からの視点に近いほど細かくされた複数のボクセルに区切るステップ;
(b)前記ボクセルの中心から前記視点への光路を辿ることにより、前記観察者の網膜上でのボケ量を算出するステップ;
(c)前記網膜上でのボケ量に対応する、前記ボクセル中での頂点ずれ範囲を算出して記録するステップ;
(d)頂点ずれ範囲に応じて、当該頂点を実際にずらすステップ;
(e)前記視点から見た前記2次元画像を透視変換により生成するステップ。
【発明の効果】
【0022】
本発明によれば、デフォーカス画像を効率よく生成し、リアルタイムでの表示を可能にする手段を提供することができる。
【発明を実施するための最良の形態】
【0023】
以下、本発明の一実施形態を、添付図面を参照して説明する。
【0024】
(画像生成装置)
まず、本実施形態の実施に用いる画像生成装置を、図1に基づいて説明する。この画像生成装置は、入力部10と、入力インタフェース11と、表示部20と、出力インタフェース21と、記憶部30と、画像生成部40と、バス50とを備えている。これらの構成要素は、ワークステーションやコンピュータなどのハードウエア自体、又は、ハードウエアにコンピュータプログラムを組み込むことによって構成することができる。
【0025】
入力部10は、入力インタフェース11を介してバス50に接続されている。入力部10は、例えばキーボードやマウスやタッチパッドなどの適宜な入力機器であり、これを用いて操作者からの指令を入力できるようになっている。
【0026】
表示部20は、出力インタフェース21を介してバス50に接続されている。出力部20は、例えばディスプレイやプリンタなどの適宜な出力機器である。出力部20は、画像生成部40で生成された画像(透視変換により得た2次元画像)を受け取って利用者に提示できる構成になっている。
【0027】
記憶部30は、データ(コンピュータプログラムを含む)の記憶や読み出しができる機器である。記憶部30としては、磁気的記憶装置(例えばハードディスク)、半導体記憶装置(例えばメモリボード)、光学的記憶装置(例えばDVDなどの光ディスクを用いた記憶装置)など、適宜の装置を用いることができる。記憶部30は、ワークステーションやコンピュータに内蔵されているものでも、インターフェース機器を介して外部に接続されるものでもよい。さらに、記憶部30としては、ネットワークを介して利用できる記憶装置であってもよい。記憶部30は、物理的には複数存在する記憶装置によって構成されていてもよい。
【0028】
本実施形態に係る記憶部30には、ワークステーションやコンピュータを用いて画像生成部40を構成するためのコンピュータプログラムや、本実施形態の方法の実施に用いるデータが予め格納されている。また、記憶部30は、本実施形態の方法の実施に伴って生成されるデータを格納できるようになっている。
【0029】
画像生成部40は、以下の処理を行う構成となっている。
(a)前記ビューボリューム内の空間を、観察者からの視点に近いほど細かくされた複数のボクセルに区切るステップ;
(b)前記ボクセルの中心から前記視点への光路を辿ることにより、前記観察者の網膜上でのボケ量を算出するステップ;
(c)前記網膜上でのボケ量に対応する、前記ボクセル中での頂点ずれ範囲を算出して記録するステップ;
(d)頂点ずれ範囲に応じて、当該頂点を実際にずらすステップ;
(e)前記視点から見た前記2次元画像を透視変換により生成するステップ。
【0030】
これらの処理の詳細は、本実施形態に係る画像生成方法の説明(後述)において述べる。画像生成部40は、ワークステーションやコンピュータ上で、コンピュータプログラムを実行することにより、機能要素として構成されるものである。
【0031】
バス50は、前記した各部間でのデータのやりとりを可能にする伝送路である。バス50としては、一本のバスを共用する構成に限らず、専用のバスを別途用いる構成であってもよい。また、伝送路としては、有線でなく無線でもよい。要するに伝送路としては、データのやりとりができればよく、物理的構成や使用するプロトコルは制約されない。
【0032】
(本実施形態に係る画像生成方法)
つぎに、本実施形態に係る画像生成方法を説明する。以下においては、まず、レンズによる歪みを正確に表示するための屈折処理に用いる、頂点ベースのレイトレーシングについて説明する。なお、本実施形態の説明においては、対象となる物体はすべてポリゴンモデルとしている。
【0033】
(アルゴリズム)
毎フレームについて行われる処理手順は、以下のとおりである。図2と対応させて説明する。なお、このアルゴリズムは、発明者らによる前記した非特許文献12に記載されているものと同様である。
( 1 ) 反射・屈折物体表面1の頂点1aでの反射・屈折ベクトルをすべて求める;
( 2 ) 仮想視点2と視野を求め、環境マップを描画する;
( 3 ) 反射・屈折物体の各頂点について:
( a ) 反射・屈折ベクトルの延長がシーン中の物体3と交差する点(交点)4を求める;
( b ) 上記交点4と仮想視点2を結ぶ直線5を求める;
( c ) 上記直線5と環境マップ投影面6との交点を求める;
( d ) 上記交点4の、環境マップ画像上での座標を、頂点1aのテクスチャ座標とする;
( 4 ) 本来の視点から反射・屈折物体とシーン全体を描画する。
【0034】
上記(2) の仮想視点2は、反射・屈折ベクトルをいくつか選び、それらの延長線に最も近くなる点として求める。本アルゴリズムでは、反射・屈折物体の各頂点について正確な位置が映りこむことが基本的に保証される。
【0035】
例外として、頂点と仮想視点のずれに起因して遮蔽物体の食い違いが起こる場合がある。これは反射・屈折物体が大きく、かつレイの広がりが極端に大きい場合にほぼ限られ、レンズのシミュレーションでは問題にならない。
【0036】
図2では反射の例について示しているが、レンズのような屈折物体の場合は、入射と出射の2 回の屈折を経たあとのレイを求めて同様の手順を実行する。
【0037】
(反射と屈折の表示結果)
頂点ベースのレイトレーシングの反射の表示例を図3(a)及び(b)に示す。比較として、従来のキューブマッピングによる反射の表示例を図3(c)及び(d)に示す。キューブマッピングではずれが生じる、視点に近い物体の映りこみも、頂点ベースのレイトレーシングでは正確に処理されていることがわかる。これらの図では、車のドアミラーに映りこんだ画像を表示している。図3(b)及び図3(d)の画像では、ミラーのワイヤーフレームモデルを重ね合わせている。多数の球は、反射ベクトルとシーンとの交点に配置した。頂点ベースのレイトレーシングでは交点が正確に頂点部分に映りこんでいる。また、レンズを通した屈折の表示例を図4に示す。この図は、凹レンズを通した屈折の表示結果を示している。図4(b)は図4(a)の右端付近を拡大したもので、レンズ頂点をワイヤーフレームで表示し、屈折ベクトルとシーンの交点に小さな球を配置したものである。この図においても、屈折ベクトルの交点が頂点に正確に映りこんでいることがわかる。
【0038】
(本実施形態の方法)
以下、本実施形態に係るボケ画像の生成方法を、図5を主に参照しながら説明する。この方法は、大きく、前処理と、レンダリングとに分けられる。前処理では、ボクセルごとに、頂点のずれ範囲を算出し、これを当該ボクセルと関連づけて記憶部30に記録しておく。レンダリング時には、頂点ずれ範囲に応じて、各ポリゴンの各頂点を変位させて、描画処理を行う。以下、詳しく説明する。
【0039】
(図5のステップSA−1)
まず、ボクセルの区切りを、図6(a)を参照しながら説明する。この例では、視点1からのビューボリューム2が設定されている。ビューボリュームとは、モデル化された3D空間のうちで、透視変換が行われる領域である。ここで、本実施形態では、視点1とビューボリューム2との間に、レンズ3が配置されている。
【0040】
本実施形態においては、ボクセルを、ビューボリューム2内の空間を分割することにより生成する。つまり、ボクセルの集合が、本実施形態でのビューボリュームを構成していることになる。ここで、本実施形態では、ビューボリューム2内の空間を、観察者の視点1に近いほど細かく区切る(図6(a)参照)。すなわち、奥行き方向、上下方向及び左右方向(つまりXYZ方向)のいずれにおいても、視点に近いほど細かい(小さい)ボクセルとなるように区切る。このような区切りは、正規化デバイス座標系(NDC)を等間隔に区切ることで実現することができる。このため、必要な計算量を少なく抑えることができるという利点がある(後述)。
【0041】
(図5のステップSA−2)
ついで、視点1からボクセル4の中心への光路を求める。この方法の詳細な手順を図7に基づいて説明する。
【0042】
(図7のステップSB−1)
まず、図8に示されるように、ボクセル4の中心にモデルを配置する。具体的には、ある奥行きのボクセル群を、まず対象とする。このボクセル群のそれぞれの中心(奥行き方向における中心)に、矩形モデル5をそれぞれ配置する。これらの矩形モデルは、ボクセルによって異なる色とされている。
【0043】
(図7のステップSB−2)
ついで、この状態で、レンズ3での屈折も考慮して、各矩形モデル5を描画(透視変換)する。描画の結果の一例を図9に示す。この描画結果においては、各ボクセルに対応して異なる色が付されているので、色を基準にして、ボクセルを特定することができる。
【0044】
(図7のステップSB−3)
その後、描画結果の画像(図9参照)から、投影面上での各矩形モデルの中心位置(XY平面内における中心)を求める。
【0045】
(図7のステップSB−4)
さらに、視点から、投影面上で矩形中央となる位置に向かう光線(Ray)を求める。つまり、この光線は、視点からボクセル中心への向かうことになる。
【0046】
本実施形態では、このように求めた光路を逆に辿ることで、網膜上でのボケ量を算出する(後述)。
【0047】
(図5のステップSA−3)
ついで、網膜上でのボケ量を算出する。この算出の概略は、前記のようにして得られた、視点からボクセル中心への光路を、今度はボクセルから、視点(瞳)を介して、網膜まで辿るというものである。本実施形態では、ボクセル中心から、視点を経由して網膜への光路を辿る手法として、波面追跡法が用いられている。
【0048】
(図5のステップSA−4)
ついで、網膜上でのボケ量に対応する、ボクセル中での頂点ずれ範囲を算出して記録する。
【0049】
(図5のステップSA−5及びSA−6)
ついで、視点から見た2次元画像を透視変換により生成する。この2次元画像の生成は、基本的に、非特許文献12に記載された頂点ベースのレイトレーシング法により行なうことができる。
【0050】
本実施形態の手法によれば、得られた頂点ずれ範囲に応じて、後述の「GPUによるレンダリングの実装」で説明するような方法で各頂点をずらしながら複数回の透視変換を行う。このため、透視変換によって得られた画像においては、頂点ずれ範囲内で位置がずらされた複数のポリゴンで構成される対象物がぼやけて見えることになる。これにより、デフォーカス画像を生成することができる。
【0051】
また、この手法によれば、観察者の視点に近いほど、細かくボクセルを区切っているので、ボクセルごとのぼけ量(デフォーカス量)を細かく変更できる。このため、実際の見え方をより正確にシミュレートすることができる。また、このようなボクセル設定は、3次元モデリング空間を用いた画像生成に必須の透視変換と親和性の高い処理となるので、画像生成に要する処理時間を短縮することが可能になる。
【0052】
(本実施形態の具体例)
以下、本実施形態の手法を用いてボケ画像を生成する具体例を説明する。まず、本実施例のステップSA−3において採用した波面追跡法の詳細を説明し、その後、それを用いたボケ画像の生成方法を説明する。
【0053】
(波面追跡法)
波面追跡法自体は、光線追跡の一手法として従来から存在する。ある地点での波面は、波の動きの方向により表される。たとえば法線ベクトルN、二つの主方向e1及びe2、並びに対応する主曲率κ1及びκ2が、波の動きの方向を示す。二つの主方向e1及びe2は互いに直交している。曲率は、曲率の中心が波の動きと反対側にあるとき、負となる。
【0054】
距離dで拡散ないし進行すると、波面は単純に以下のように変形する。
ここで、ベクトルN、e1及びe2は変化しない。
【0055】
この変形はスネルの法則によって導かれるが、このことはよく知られているので、結果のみをここに示した。方向ベクトルNは、
N'=μN+γN(s)のように変形される。ここで、N(s)は、屈折性表面の単位法線ベクトル(unit normal vector)であり、μ=n1/n2、γ=−μcosφ+cosφ'である。n1及びn2は、それぞれ、表面前後の媒質の屈折率である。φ及びφ'は、それぞれ、入射角及び屈折角を示す。
【0056】
単位ベクトル
を考える。これは、入射する波面と表面の両方に共通の接ベクトルである。ベクトルuに対応する曲率は、以下のようにして得られる。
【0057】
もう一つの単位ベクトルv=N×uを考える。さらに、ベクトルuと主方向ベクトルe1をとの角度ωを考える。すなわち、
このとき、オイラーの公式により、
であり、これは、入力する波について、u,v方向の曲率(directional curvature)κu、κv及びトーションκuvを決定する。屈折により、波面のu,v方向の曲率は、以下のように変化する:
【0058】
ここで、κu(s)、κv(s)及びκuvは、それぞれ、入射点における屈折性表面の、u,v方向性の曲率及びトーションである。これらは、式3を使うことにより、波面と同様に計算できる。屈折後の波面を表すために、式3を変形することにより、主曲率と主方向を見いだす必要がある。
【0059】
表1は、提案手法における波面追跡の操作の用法を示している。すなわち、この表は、各ボクセルのためのボケ領域(blur field)の計算において、どの操作がどの段階で使用されるかを表している。
【0060】
【表1】
【0061】
表1は、各ボクセルのための前計算の処理を示している。これらの操作は、各ボクセルの波源から視点への、二重に屈折された光線(double refracted ray)について行われる。
【0062】
(眼のモデル)
乱視を含む屈折異常による見え方をシミュレートするために、従来は、波面追跡法と分散レイトレーシングを使う技術が知られている(非特許文献9参照)。本実施形態では、眼内の領域において、新たな波面追跡法を使用する。このモデルでは、眼のレンズにおける波面を変形して、円錐に似たコーノイド形状(revolved conoid shape)を形成し、そして、この形状を網膜の位置で切り取り、正確なボケ量、すなわち点広がり形状を獲得する。このボケ量はブラーフィールド(blur field)の値として、記憶部30に格納される。
【0063】
この実施形態では、レンズ機構としての眼を、薄い、トーリックレンズと見なした。このレンズは、方向に依存し、かつ、レンズ表面にわたって均一な屈折力を持つものとした。眼科学の見地からは、この眼球モデルは、近視、遠視、老視に加えて、直乱視や斜乱視を扱えることになる。
【0064】
(薄いトーリックレンズによる波面変形)
一般に、眼における波面の変形は複雑な法則に基づいている。そこで、この実施形態では、眼を、薄いトーリックレンズに近似したことに加えて、さらに、入射する光線の方向が、レンズに直交すると仮定した。この仮定は、以下の理由で合理的である。すなわち、眼球は、興味のある領域に向けて回転し、光線が、網膜の中心窩において収束する。
【0065】
以降においては、入射された波面の単純な変形を導入することにより、波面が屈折して網膜に収束する状態を記述する。
【0066】
眼鏡用レンズで屈折され、角膜の表面に向けて並進した後の状態を、主曲率κ1及びκ2、並びに、主方向e1及びe2をそれぞれ備えた波面として記述する。図10に記述されるように、ここでは、眼のレンズの座標系を、右手座標系とし、さらに、その原点を入射部分とした。さらに、z軸を、波面法線ベクトルと一致させた。x軸は、波面及びレンズの両方に接して、かつ水平になるようにした。簡単のため、x軸の正方向は、y軸が上を向くように決める。
【0067】
入射した波面におけるあらゆる接線ベクトルは、レンズについても接線ベクトルとなるので、x軸を共通の接線に選ぶことができ、ここでは接ベクトルuで示される。これにより、トーリックレンズによる変形を受けた波面を記述できる。
【0068】
ω1を、x軸と、第1の主方向e1との間の角度とする。そして、式3にω=−ω1を代入して、方向性の曲率κx、κy及びκkyを得ることができる。
【0069】
眼のレンズの表面における波面の変形のために、ここで、スネルの法則に代えて、バージェンスの法則(vergence formula)を導入する。ここで、トーリックレンズにおける方向依存性の屈折力を、乱視における入力パラメータのセットとして導入する。
【0070】
まず、基本的な屈折力P1及びP2、並びに、x軸と第1の主方向ω1(e)との間の角度を与えると、方向依存性の屈折力Px(x−z平面内において)、Py(y−z平面内において)、及びPxyを、式3の適用によって得る。ここで、κ1=P1、κ2=P2、ω=−ω1(e)を代入する。
【0071】
光学においては、基本的なバージェンスの法則は、
で表される。ここでVは入力光のバージェンスであり、定義によって、V=nκと表せる。ここで、入力側における媒質の屈折率nと、入力点の曲率κが用いられている。また、Pはレンズの屈折力、V'は、出力光のバージェンスである。この実施形態では、この式を、方向性の曲率及び誘導される法則に拡張し、乱視による波面の変形を導く。ここで、
である。ここで、μ=n1/n2であり、n1は空気の屈折率、n2は硝子体(Vitreous humor)の屈折率である。
【0072】
このようにして最終的に、波面は、5式に従って網膜に収束する。ここで、κu=κ'x、κv=κ'y、そして、κuv=κ'xyであり、主曲率κ'1及びκ'2と、第1の主方向ω'1=−ωの角度を得る。
【0073】
(網膜における光の広がりの評価)
前記したような光は、トーリックレンズで屈折されると、一般的には、一点に収束しない。あるサイズの、円形の瞳を通ってきた光は、円錐に似た形状となる。この形状は、スタームのコーノイド(Sturm's conoid)として知られている。ここでは、二つの焦線(focal line)が互いに直交している(図11参照)。そこで、以下、(1)スタームのコーノイドを分析し、(2)人の眼による調節を検討する。これにより、瞳と、コーノイドを形成する一定の点光源からの光とが与えられたときに、網膜に投影される光の広がりの形状を求める。ついで、眼の調節についても検討する。
【0074】
スタームのコーノイドを簡単に検討するために、当面はz方向における回転を無視する。すなわち、ここで、ω'1=0とする。一点に投影された光の広がりをシミュレートするために、z軸に直交する平面での、コーノイドの断面に着目する。zを、角膜と網膜との間における定数パラメータzeとする。これにより、以下に示す楕円の式を得る。
また、rpは瞳の半径である。上記のaとbは、z軸に沿う直角三角形の相似を使うことで得られる(例えば、図11における△AOCと△BPC)。パラメータκ'1とκ'2とは、人の眼による調整をどこ程度組み込むかによって決定される(後述)。
【0075】
網膜においては、ze=zrであり、a、b及びω'1で記述される楕円形状は、光源の点広がりを表す。ボクセルにおける波源からの光波が追跡され、そして、網膜での楕円を得ることができる。この形状をボケのパターン(すなわち「網膜上でのボケ量」)とする。このパターンは、各ボクセルからの光源が、それぞれ、生み出すものである。このボケのパターンを、それぞれのボクセルに関連付けて記録する。ただし、a、b及びω'1を記録する代わりに、これと等価な2×2の行列をボクセル値として記録する。この行列は、単位円を、方向付けされた楕円に変換するものである。このようにして前計算された、それぞれのボクセルについての行列が、ブラーフィールドの要素となる。
【0076】
この行列のスケーリングファクタを決めるために、網膜と、正規化デバイス座標系(NDC)との、幾何学的な関係を考察する必要がある。NDCにおけるスケールは、本実施形態でのボクセル空間と等価なものとなっている。
【0077】
shとsvを、水平及び垂直方向のそれぞれにおける、網膜からNDCへのスケーリングファクタとする。また、ボクセル(vx,vy,vz)における最終的なブラーフィールドの値Bvx,vy,vz(すなわち「頂点ずれの範囲」)は以下のようになる。
【0078】
図12は、shがどのように計算されるかを表している。網膜における小さい水平方向の長さhrは正規化デバイス座標系(NDC)における長さhNDCに割り当てられる。スケーリングファクタshは、hNDC/hrにより計算される。垂直なスケーリングファクタsvは同様に計算できる。
【0079】
ここで、式9における右辺の変数は、いずれも、それぞれのボクセルに応じて変化しうることに注意する。2×2行列の乗算の結果は、それぞれのボクセルに対応して格納される。
【0080】
(眼による調節)
よく知られているように、人の眼は、ボケのパターン網膜状での最小錯乱円となるように屈折力を調節しようとする。zrを眼球モデルにおける薄いレンズと網膜との距離とする。この条件は、式8においてa=−bとすることで満足される。したがって、下記式を得る。
【0081】
上記の法則を、式3,7,4および5を用いて拡張し、そして、n1=1.0という事実を用いると、下記式を得る。
ここで、
である。光学的には、κバーは、眼に入射する波面の平均の曲率であり、そして、Pバーは、眼の平均的な屈折力である。
【0082】
Pminバーを、標準的な、非乱視の眼における最小の(緩んだ)調節での屈折力とし、ΔPを、最大の調節能力Δmaxによって限界付けられた、調節屈折力とする。すなわち、
とする。これにより
となる。
【0083】
式11及び12から、下記式を得る。
【0084】
上記の調節の式の意味は以下のようである。入射光の平均曲率κバーは、通常負である。これが小さくなると(つまり−κバーが大きくなると)、光波が眼に近い位置からくることになり、調節に要する努力ΔPが大きくなる。逆も同様である。Δmaxの標準的な値は表2に示される。この値は年をとるにつれて低下する。
【0085】
【表2】
【0086】
Aを、使用者が定義する乱視成分とする。つまり、A=P1,min−P2,minである。ここでP1,min及びP2,minは、最小の調節における、眼の基本的な屈折力であり、これは、以下のようになる。
【0087】
したがって、
である。そして、定義により、調節を考慮に入れた、眼の基本的な屈折力を得ることができる。
【0088】
波面追跡モジュールは、上記の二つの値を、ユーザが定義したパラメータω1(e)とともに受け取り、前記した追跡を可能にしている。つまり、本実施形態では、眼のレンズのパラメータを、眼の調節機能まで考慮して設定することが可能である。
【0089】
前記した表2は、標準的な眼のパラメータである。表3は、見え方をシミュレーションするために制御が必要なパラメータの例を示している。
【0090】
【表3】
【0091】
以上により、波面追跡法を用いて、網膜上でのボケ量を、傾きを持つ楕円状の範囲として算出できる。各ボクセルに対応する頂点ずれ範囲は、ブラーフィールドの値(式(9)の2×2行列)として格納される。頂点を実際にずらせる動作は、以下で述べるレンダリングにおいて行う。
【0092】
(GPUによるレンダリングの実装)
レンダリングの主要なループにおいては、ユーザが指定したサンプリングの回数に応じて、シーンは繰り返して描画される。そして、描画結果が混合されて、ボケ画像が生成される。
【0093】
それぞれのサンプリングにおいては、一個の変位種ベクトル(以下、種ベクトル。図13(a))が生成され、これが、頂点シェーダに供給される。種ベクトルは、2Dのベクトルで、単位円の中心を起点とし、当該単位円の内部においてランダムに生成された点を終点とするベクトルとなっている。
【0094】
頂点シェーダでは、種ベクトルが、頂点位置に応じた実際の2D変位ベクトルに変換される(図13(b))。この変換には、前記で求めたブラーフィールドのボクセル値となる2×2行列Bvx,vy,vz(式9、図13(c))が使用される。このボクセル値は、頂点のNDC座標により参照される。ここで、視点座標系(カメラ座標系)とNDC座標系との関係を図14に示す。このようなボクセルの区切り方は、GPUで頂点処理をする際の中間結果であるNDC座標系を等間隔に区切ることで実現できる。こうすることによって、眼の近くを密にできるという品質上の利点だけでなく、表示処理時の各物体頂点座標の中間データを変位に利用することができるという、処理性能上の大きな利点がある。この座標系(NDC)での頂点は、一般に表示処理では必ず計算されるものなので、NDC座標を元に所属ボクセルが簡単に分かる。そして、そのボクセルでの変位量もNDC座標系の値であらかじめ保持しておけば、中間座標に加算するだけで変位処理が終了する。つまり、余計な座標変換が不要になるという利点がある。
【0095】
現実的には、頂点シェーダで必ず計算されるのはNDC座標の一歩手前の同次座標(x, y, z, w)である。本実施例では、この同次座標のwでx, y, zのそれぞれを除算することによりNDC座標を得て、2D変位ベクトルを足した後再び同次座標に戻すという処理で頂点を変位させる。
【0096】
ブラーフィールドの値Bvx,vy,vzは、3Dテクスチャまたは部分的な2Dテクスチャを並べた2Dテクスチャとして頂点シェーダに与えられる。ブラーフィールドの典型的なサイズは、x及びy方向において32×32ボクセル、z(深さ)方向において128ボクセルである。それぞれのフィールド値は2×2の行列であり、4要素のテクセル(texel;テクスチャ画素)として表現できる。
【0097】
変位のための頂点シェーダ用コードの例を以下に示す。これは、OpenGLシェーダ言語を使ったものである。この動作により、ポリゴンの頂点を実際にずらして描画することができる。頂点のずれ量を変えながら、複数回の描画を行い、得られた画像を重ね合わせることで、ボケ画像を生成することができる。
【0098】
【0099】
図15は、本実施例における処理の全体を示す説明図である。ここに示されているように、透視変換は、第1回目のパスと第2回目のパスについてそれぞれ描画し、それらを組み合わせた2次元画像を使用者に呈示する。このような、パスごとの描画という処理自体はよく知られた手法なので、詳細な説明は省略する。
【0100】
(結果及び性能)
性能は、シーンに含まれる全てのポリゴンの数により影響される。特に、屈折レンズにおけるメッシュの複雑さは影響力を持つ。なぜなら、光線は、頂点ごとに追跡されるからである。ここでは、1000個の頂点を持つように区切られたポリゴンのモデルを使う。これは、実質的には、光線追跡法(ray tracing)と同じ程度に正確な画像を生成できるものである。以下の実験は、以下の条件で行われた。
3.2GHz Pentium4 CPU
NVIDIA GPU GeForce 7800GTX Graphics使用
1024×768ピクセルの出力画像サイズ
【0101】
レンズを通過しながら2回屈折した状態のレンダリングでは、およそ10000ポリゴンのシーンについて、30〜40fps(frame per second)を達成した。色収差を考慮した場合、スループットは15fpsに低下した(図16参照)。図16は、色収差を考慮した描画の例である。ここでは、RGBの三色についてそれぞれ別に描画している。また、各色について、異なる屈折率を設定している。例えば、(R:1.60, G:1.61, B:1.62)である。このようにして得た画像を重ねた画像を、二次元画像として使用者に呈示する。これにより、色収差の状況を知ることができる。
【0102】
焦点ボケの表示処理は、各頂点を移動範囲内でサンプリングした複数回の描画結果を合成することで行う。その性能は、サンプリングの数に影響される。ここでは、10サンプリングのボケ画像を使用する。これは、経験上、レンズ設計の検証には十分であると考えられる。レンズによる屈折がない場合、図17の左側に示すボケ画像のフレームレートは、およそ30fpsである。眼鏡レンズによる屈折の影響を考慮に入れたレンダリングの場合は7fpsから20fps以上となった。ただし、これは、シーンの複雑さ、ウインドウサイズ、サンプリングの数によって影響される。図17の中央及び右側の画像は、それそれ、20.1fpsであった。このときの条件は、10サンプリングで、1024×768ウインドウであった。図17の画像においては、瞳の直径は2cmに設定されており、焦点ボケの結果を強調している。ブラーフィールドの値は、瞳のサイズrpに比例している。このことは、式8及び9から明らかである。
【0103】
図18は、設計中の累進焦点レンズ(progressive lens)の検証結果を示している。レンズの上半分は近視を矯正するように設計され、下半分は、レンズ中央で老視を矯正するように設計されている。下半分の左右はうまく矯正できていないが、これは、累進焦点レンズの設計が難しいことを示している。
【0104】
乱視の例が図19に示されている。ここでは、ブラーフィールドの一部におけるボクセル情報が、楕円群として示されている。図19は、裸眼の乱視についての、シミュレーションによる描画結果である。対象物である新聞は、かなり近くに配置されている(左下の隅で6.1cm、右上の隅で10.7cm)。この距離では人間の眼による調整が難しく、焦点ボケが起こる。乱視の設定なので、焦点ボケ範囲すなわちブラーフィールドは楕円状になる。ブラーフィールドの一部(新聞とほぼ同じ深さにあるボクセル群)が、各ボクセルについて、楕円で表示されている。ここで、それぞれのブラーフィールドの楕円自体も、ちょうど自らの大きさの範囲内でボケて表示されていることに注目されたい。また、楕円形状は、視点からの距離に応じて異なっている。これは、スタームのコーノイドとして説明した現象に基づいている。
【0105】
全てのブラーフィールドについての観察は図20に示されている。図20では、8×8×128のボクセルのブラーフィールドを観察した状態が示されている(右上)。また、ブラーフィールドを適用した結果も示されている(右下)。それぞれの小さい円は、ボクセルについてのブラーフィールド値を表している。視点の近くではボクセルの間隔が非常に狭くなるため、それぞれの円は互いに近づいてひとかたまりに見えている。円のサイズは、その地点での頂点ずれ範囲を示している。これは先の図19に示したとおりである。ここでは強い近視および老視がシミュレートされており、焦点は、右側のコンピュータディスプレイのモデルにのみに合っている。焦点が合う場所では、ブラーフィールドの値は零となり、円は表示されていない。
【0106】
この実施形態では、ブラーフィールドを生成するための前計算に、波面追跡を使用する。この前計算には、8×8×128ボクセルのブラーフィールドの場合で300ミリ秒を要した。ブラーフィールドが16×16×128であれば1秒、32×32×256であれば7秒を要した。
【0107】
(結論)
以上説明したように、本実施例の手法によれば、人の視力を考慮した、高速なレンダリング方法を提供することができる。本手法の特徴は以下の通りである。
・ほぼリアルタイムのフレームレートで、屈折とボケとを表現できる。
・様々な症状の視力と眼球レンズによる屈折とをシミュレートできる精細な眼球モデルを採用している。
・ボケ情報を空間的に分散して前計算し、ブラーフィールドとして格納しておく。
【0108】
ブラーフィールドは、焦点ボケの高速描画のために利用できる新しい概念である。プログラム可能なGPUを使用して簡単に実装することができ、データ自体も単純で容量もさほど大きくない。空間内の位置に応じた物体の変位を必要とするような応用分野であれば、幅広い分野でブラーフィールドを適用することができる。もしプログラマが頂点変位のルーティンを追加するならば、ブラーフィールドは分散レイトレーシングと組み合わせることもできる。
【0109】
ブラーフィールドの技術を使う場合、対象物は、メッシュ化されたポリゴンに分割される必要がある。また、このポリゴンは、ブラーフィールドのボクセルサイズと同程度の粒度である必要がある。
【0110】
なお、前記の例においては、眼鏡レンズを用いた例を示したが、眼鏡レンズを用いなくても、視力による見え方を生成する必要がある場面であれば、本発明を適用可能である。
【0111】
なお、本発明の範囲は、前記実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることはもちろんである。
【0112】
例えば、前記した各構成要素は、機能ブロックとして存在していればよく、独立したハードウエアとして存在しなくても良い。また、実装方法としては、ハードウエアを用いてもコンピュータソフトウエアを用いても良い。さらに、本発明における一つの機能要素が複数の機能要素の集合によって実現されても良い。本発明における複数の機能要素が一つの機能要素により実現されても良い。
【0113】
また、機能要素は、物理的に離間した位置に配置されていてもよい。この場合、機能要素どうしがネットワークにより接続されていても良い。
【図面の簡単な説明】
【0114】
【図1】本実施形態に係る画像生成装置の、概略的な機能ブロック図である。
【図2】頂点ベースのレイトレーシングによる画像生成方法を説明するための説明図である。
【図3】図2の方法により描画した結果を示す図であって、図(a)及び(b)は頂点ベースのレイトレーシングによる描画結果を示し、図(c)及び(d)は従来のキューブマッピングによる描画結果を示している。
【図4】凹レンズを通した屈折における描画結果を示す図である。図(b)は図(a)の右端付近を拡大したものである。
【図5】本実施形態における画像生成方法の一例を説明するためのフローチャートである。
【図6】本実施形態における画像生成方法の一例を説明するための説明図である。
【図7】本実施形態において、レンズ経路を求める方法の一例を説明するためのフローチャートである。
【図8】レンズ経路を求める手法を説明するための説明図である。
【図9】図8の例において、矩形モデルを描画した結果の一例を示す説明図である。
【図10】波面追跡法における波面の計算手法を説明するための図である。図(a)は入力波、図(b)は乱視の眼による屈折力、図(c)は屈折された波を示している。
【図11】トーリックレンズにより形成されるスタームのコーノイドを示す図である。
【図12】網膜上でのボケ量を、ボクセルでの頂点ずれ量に換算するための計算手法を説明するための説明図である。
【図13】ボクセルでの頂点ずれ量の計算を説明するための説明図である。図(a)は、どのボクセルにも共通する種ベクトルの例を示す図である。図(b)は、種ベクトルを用いて、あるボクセルでの頂点に与える実際の変位を示すベクトルの図(NDC座標系)である。図(c)は、あるボクセルでのブラーフィールドの値を示す計算例である。
【図14】視点座標系から正規化デバイス座標系に変換する手順を説明するための説明図である。
【図15】実施例における描画手順の詳細を示す説明図である。
【図16】色収差を考慮した描画例を示す図である。
【図17】近視及び遠視をシミュレートしたことによって得られた描画例を示す図である。
【図18】累進焦点レンズを介して対象物を見た状態をシミュレートした画像の例である。
【図19】乱視の裸眼における見え方のシミュレーション結果である。図(a)はボケを考慮していない場合の画像例、図(b)はボケを考慮した場合の画像例である。
【図20】ブラーフィールドの例を説明するための説明図である。
【符号の説明】
【0115】
1 視点
2 ビューボリューム
3 レンズ
4 ボクセル
5 矩形モデル
10 入力部
11 入力インタフェース
20 表示部
21 出力インタフェース
30 記憶部
40 画像生成部
50 バス
【技術分野】
【0001】
本発明は、3次元コンピュータグラフィックス(3DCG)の分野において、デフォーカス画像を生成する方法及び装置に関するものである。すなわち、本発明は、3次元空間内に配置された対象物に対する透視変換を行うことにより2次元画像を生成するに際してデフォーカス画像を生成できる方法及び装置に関するものである。
【背景技術】
【0002】
反射・屈折の表示はコンピュータグラフィクスの研究の中で重要なテーマの一つである。従来からレイトレーシングによってこれらの処理が実現されているが、処理時間が膨大である。そのため近年は、グラフィックスハードウェアの機能である環境マッピングを使ってリアルタイムで反射・屈折を近似的に表示する手法が一般的に使われている。
【0003】
レイトレーシングはもともと光学系設計のための手法であり、正確な屈折をシミュレートするために現在も使われている。精度が要求される光学系の設計には、近似手法は現在使われていない。
【0004】
しかし、人間がメガネレンズを通して見える様子をシミュレートする目的であれば、近似手法でも実用上問題ないことが期待できる。リアルタイム表示になることにより、設計検証の効率が上がるだけでなく、販売店での顧客への提示といった応用も可能となる。
【0005】
リアルタイムの反射・屈折を考慮した表示を行う技術に関して、関連研究を以下に記載する。さらに、人間の視力矯正のシミュレーションに関する関連研究についても紹介する。
【0006】
(リアルタイムの反射・屈折表示)
反射を近似するためにBlinnによって提案された環境マッピング(非特許文献1)は、ハードウェアにより実装できるため(非特許文献2及び3)、リアルタイム表示の応用に広く用いられている。環境マッピングは映りこむ物体が無限遠にあるという前提が伴うため、特に近くにある(ローカルな)物体に関して誤差が大きいという欠点があった。
【0007】
近年、これを改良するための手法が考案されている。Hakura らは、ローカル物体に関しては別のレイヤーとし、個別の環境マップをレイトレーシングによる前処理で用意することでこれを解決した(非特許文献4)。しかしながら、この方法では反射・屈折物体が動いてローカル物体が頻繁に変わる場合、前処理やり直しのコストが大きい。Szirmay-Kalos らは、画素ごとに奥行き値zも持つキューブマップを求め、反射・屈折方向へのレイと物体の交点を、繰り返し計算で近似することで、ローカル物体のより正確な反射・屈折をリアルタイムで実現した(非特許文献5)。この手法の目的はゲームであるため、屈折はシーンに置かれた透過物体の雰囲気を出すことが目的であった。
【0008】
レンズを通して見たシーン全体の様子を検証するためには、より正確な手法が必要となる。そこで、本発明者らは、レンズ各頂点を通してレイとシーンの交差計算を行い、レイトレーシングと同等の正確さを実現する手法を提案している(特願2006−124656号参照)。
【0009】
(視力矯正のシミュレーション)
人間の眼の特性を考慮した描画手法として、被写界深度のシミュレーションは以前から行われている(非特許文献6及び7)。
【0010】
眼球をレンズ系としてとらえ、視力の矯正まで考慮したシミュレーションモデルはMostafawy らによって提案された(非特許文献8)。Loos らは、波動光学的なアプローチであるwavefront tracing を活用し、累進焦点レンズ(境目のない遠近両用レンズ)による視力矯正のシミュレーションを行った(非特許文献9)。また、Barskyは、Vision Realistic Renderingという概念を導入し、被写界深度の導入を行った(非特許文献11)。
【0011】
これらの従来手法はいずれも分散レイトレーシングを使って処理を行っているため、表示速度は遅くリアルタイム処理は不可能である。
【0012】
また、本発明者らは、ボクセルごとに頂点ずれ量を格納しておき、その頂点ずれ量に基づいてボケ画像を生成する手法を提案している(非特許文献12)。この手法によれば、ほぼリアルタイムでボケ画像を生成することができる。ただし、この手法では、
・ビューボリューム外の空間にもボクセルを想定しているために計算効率が悪い点
・空間を等間隔で区切ることでボクセルを生成しているため、実際の見え方とは若干の違いがある点
において改善の余地があった。
【非特許文献1】1) J.F. Blinn and M.E. Newell. Texture and reflection in computer generated images. Communications of the ACM, Vol. 19, No. 10, pp. 542-547, 1976.
【非特許文献2】2) P.Haeberli and M.Segal. Texture mapping as A fundamental drawing primitive. In Fourth Eurographics Workshop on Rendering, pp. 259-266, 1993.
【非特許文献3】3) D.Voorhies and J. Foran. Reflection vector shading hardware. In Proc. SIGGRAPH '94, pp. 163-166, 1994.
【非特許文献4】4) Z.S. Hakura, J.M. Snyder, and J.E. Lengyel. Parameterized environment maps. In SI3D '01: Proceedings of the 2001 symposium on Interactive 3D graphics, pp. 203-208, 2001.
【非特許文献5】5) L. Szirmay-Kalos, B. Aszodi, I. Lazanyi, and M. Premecz. Approximate Ray-Tracing on the GPU with Distance Impostors. Computer Graphics Forum (Proc. Eurographics 2005), Vol.24, No.3, pp. 685-704, 2005.
【非特許文献6】6) R.L. Cook, T.Porter, and L.Carpenter. Distributed Ray Tracing. In Proc. SIGGRAPH'84, pp. 137-146, 1984.
【非特許文献7】7) P.Haeberli and K.Akeley. The accumulation buffer: hardware support for high-quality rendering. In Proc. SIGGRAPH '90, pp. 309-318, 1990.
【非特許文献8】8) S.Mostafawy, O.Kermani, and H.Lubatschowski. Virtual Eye: Retinal Image Visualization of the Human Eye. IEEE CG&A, Vol.17, No.1, pp. 8-12, January-February 1997.
【非特許文献9】9) J.Loos, Ph. Slusallek, and H.-P. Seidel. Using wavefront tracing for the visualization and optimization of progressive lenses. Computer Graphics Forum (Proc. Eurographics 1998), Vol.17, No.3, pp. 255-263, 1998.
【非特許文献10】10) J.Amanatides and A.Woo. A fast voxel traversal algorithm for ray tracing. In Proc. Eurographics 1987, pp. 3-10, 1987.
【非特許文献11】BARSKY B. A.: Vision-realistic rendering: simulation of the scanned foveal image from wavefront data of human subjects. In Proc. APGV '04 (2004), pp. 73-81.
【非特許文献12】情報処理学会研究報告Vol.2006, No.91, pp.25-30 「頂点ベースのレイトレーシングを用いた屈折矯正結果の表示」
【発明の開示】
【発明が解決しようとする課題】
【0013】
本発明は、前記した状況に鑑みてなされたものである。本発明は、デフォーカス画像を効率よく生成し、リアルタイムでの表示を可能にする手段を提供することを目的としている。
【課題を解決するための手段】
【0014】
前記した課題を解決するために、本発明は、以下のいずれかの項目に記載される構成を備えている。
【0015】
(項目1)
ビューボリューム内に配置された対象物に対して、観察者の視点からの透視変換を行うことにより、2次元画像を生成する方法であって、さらに、以下のステップを備えた画像生成方法:
(a)前記ビューボリューム内の空間を、観察者からの視点に近いほど細かくされた複数のボクセルに区切るステップ;
(b)前記ボクセルの中心から前記視点への光路を辿ることにより、前記観察者の網膜上でのボケ量を算出するステップ;
(c)前記網膜上でのボケ量に対応する、前記ボクセル中での頂点ずれ範囲を算出して記録するステップ;
(d)前記頂点ずれ範囲に応じて、当該頂点を実際にずらすステップ;
(e)前記視点から見た前記2次元画像を透視変換により生成するステップ。
【0016】
項目1に係る発明によれば、網膜上でのボケ量に対応する、ボクセル中での頂点ずれ範囲を算出する。ここで、頂点とは、ポリゴンを構成する要素となるものである。得られた頂点ずれ範囲を用いて、頂点を、実際に、当初の位置からずらす。これにより、当初の位置とはずれた位置に、当該頂点を有するポリゴンが生成される。この状態で透視変換を行う。この作業を繰り返すことで、透視変換によって得られた画像においては、位置がずらされた対象物が重ねて表示されるために、当該対象物は、ぼやけて見えることになる。すなわち、これにより、デフォーカス画像を生成することができる。
【0017】
また、項目1に係る発明によれば、観察者の視点に近いほど、細かくボクセルを区切っているので、ボクセルごとのぼけ量(デフォーカス量)を細かく変更できる。このため、実際の見え方をより正確にシミュレートすることができる。また、このようなボクセル設定は、3次元モデリング空間を用いた画像生成に必須の透視変換と親和性の高い処理となるので、画像生成に要する処理時間を短縮することが可能になる。
【0018】
(項目2)
さらに、
(f)前記視点から前記ボクセルの中心への光路を求めるステップ
を有しており、このステップは、前記ステップ(b)の前に行われ、
かつ、前記ステップ(b)は、前記ステップ(f)で求めた光路を逆に辿ることにより実行される、項目1に記載の画像生成方法。
【0019】
(項目3)
前記ステップ(b)において、前記ボクセルの中心から前記視点への光路を辿る手法として、波面追跡法が用いられている、項目1又は2に記載の画像生成方法。
【0020】
(項目4)
3次元空間内に配置された対象物に対する透視変換を行うことにより2次元画像を生成する装置であって、
この装置は、記憶部と画像生成部とを備えており、
前記記憶部は、処理に必要なデータやコンピュータソフトウエアを格納するものであり、
前記画像生成部は、以下の処理を行うことを特徴とする画像生成装置:
(a)前記ビューボリューム内の空間を、観察者からの視点に近いほど細かくされた複数のボクセルに区切るステップ;
(b)前記ボクセルの中心から前記視点への光路を辿ることにより、前記観察者の網膜上でのボケ量を算出するステップ;
(c)前記網膜上でのボケ量に対応する、前記ボクセル中での頂点ずれ範囲を算出して記録するステップ;
(d)頂点ずれ範囲に応じて、当該頂点を実際にずらすステップ;
(e)前記視点から見た前記2次元画像を透視変換により生成するステップ。
【0021】
(項目5)
3次元空間内に配置された対象物に対する透視変換を行うことにより2次元画像を生成する方法であって、さらに、以下のステップを備えた画像生成方法を、コンピュータにより実行させることを特徴とするコンピュータプログラム:
(a)前記ビューボリューム内の空間を、観察者からの視点に近いほど細かくされた複数のボクセルに区切るステップ;
(b)前記ボクセルの中心から前記視点への光路を辿ることにより、前記観察者の網膜上でのボケ量を算出するステップ;
(c)前記網膜上でのボケ量に対応する、前記ボクセル中での頂点ずれ範囲を算出して記録するステップ;
(d)頂点ずれ範囲に応じて、当該頂点を実際にずらすステップ;
(e)前記視点から見た前記2次元画像を透視変換により生成するステップ。
【発明の効果】
【0022】
本発明によれば、デフォーカス画像を効率よく生成し、リアルタイムでの表示を可能にする手段を提供することができる。
【発明を実施するための最良の形態】
【0023】
以下、本発明の一実施形態を、添付図面を参照して説明する。
【0024】
(画像生成装置)
まず、本実施形態の実施に用いる画像生成装置を、図1に基づいて説明する。この画像生成装置は、入力部10と、入力インタフェース11と、表示部20と、出力インタフェース21と、記憶部30と、画像生成部40と、バス50とを備えている。これらの構成要素は、ワークステーションやコンピュータなどのハードウエア自体、又は、ハードウエアにコンピュータプログラムを組み込むことによって構成することができる。
【0025】
入力部10は、入力インタフェース11を介してバス50に接続されている。入力部10は、例えばキーボードやマウスやタッチパッドなどの適宜な入力機器であり、これを用いて操作者からの指令を入力できるようになっている。
【0026】
表示部20は、出力インタフェース21を介してバス50に接続されている。出力部20は、例えばディスプレイやプリンタなどの適宜な出力機器である。出力部20は、画像生成部40で生成された画像(透視変換により得た2次元画像)を受け取って利用者に提示できる構成になっている。
【0027】
記憶部30は、データ(コンピュータプログラムを含む)の記憶や読み出しができる機器である。記憶部30としては、磁気的記憶装置(例えばハードディスク)、半導体記憶装置(例えばメモリボード)、光学的記憶装置(例えばDVDなどの光ディスクを用いた記憶装置)など、適宜の装置を用いることができる。記憶部30は、ワークステーションやコンピュータに内蔵されているものでも、インターフェース機器を介して外部に接続されるものでもよい。さらに、記憶部30としては、ネットワークを介して利用できる記憶装置であってもよい。記憶部30は、物理的には複数存在する記憶装置によって構成されていてもよい。
【0028】
本実施形態に係る記憶部30には、ワークステーションやコンピュータを用いて画像生成部40を構成するためのコンピュータプログラムや、本実施形態の方法の実施に用いるデータが予め格納されている。また、記憶部30は、本実施形態の方法の実施に伴って生成されるデータを格納できるようになっている。
【0029】
画像生成部40は、以下の処理を行う構成となっている。
(a)前記ビューボリューム内の空間を、観察者からの視点に近いほど細かくされた複数のボクセルに区切るステップ;
(b)前記ボクセルの中心から前記視点への光路を辿ることにより、前記観察者の網膜上でのボケ量を算出するステップ;
(c)前記網膜上でのボケ量に対応する、前記ボクセル中での頂点ずれ範囲を算出して記録するステップ;
(d)頂点ずれ範囲に応じて、当該頂点を実際にずらすステップ;
(e)前記視点から見た前記2次元画像を透視変換により生成するステップ。
【0030】
これらの処理の詳細は、本実施形態に係る画像生成方法の説明(後述)において述べる。画像生成部40は、ワークステーションやコンピュータ上で、コンピュータプログラムを実行することにより、機能要素として構成されるものである。
【0031】
バス50は、前記した各部間でのデータのやりとりを可能にする伝送路である。バス50としては、一本のバスを共用する構成に限らず、専用のバスを別途用いる構成であってもよい。また、伝送路としては、有線でなく無線でもよい。要するに伝送路としては、データのやりとりができればよく、物理的構成や使用するプロトコルは制約されない。
【0032】
(本実施形態に係る画像生成方法)
つぎに、本実施形態に係る画像生成方法を説明する。以下においては、まず、レンズによる歪みを正確に表示するための屈折処理に用いる、頂点ベースのレイトレーシングについて説明する。なお、本実施形態の説明においては、対象となる物体はすべてポリゴンモデルとしている。
【0033】
(アルゴリズム)
毎フレームについて行われる処理手順は、以下のとおりである。図2と対応させて説明する。なお、このアルゴリズムは、発明者らによる前記した非特許文献12に記載されているものと同様である。
( 1 ) 反射・屈折物体表面1の頂点1aでの反射・屈折ベクトルをすべて求める;
( 2 ) 仮想視点2と視野を求め、環境マップを描画する;
( 3 ) 反射・屈折物体の各頂点について:
( a ) 反射・屈折ベクトルの延長がシーン中の物体3と交差する点(交点)4を求める;
( b ) 上記交点4と仮想視点2を結ぶ直線5を求める;
( c ) 上記直線5と環境マップ投影面6との交点を求める;
( d ) 上記交点4の、環境マップ画像上での座標を、頂点1aのテクスチャ座標とする;
( 4 ) 本来の視点から反射・屈折物体とシーン全体を描画する。
【0034】
上記(2) の仮想視点2は、反射・屈折ベクトルをいくつか選び、それらの延長線に最も近くなる点として求める。本アルゴリズムでは、反射・屈折物体の各頂点について正確な位置が映りこむことが基本的に保証される。
【0035】
例外として、頂点と仮想視点のずれに起因して遮蔽物体の食い違いが起こる場合がある。これは反射・屈折物体が大きく、かつレイの広がりが極端に大きい場合にほぼ限られ、レンズのシミュレーションでは問題にならない。
【0036】
図2では反射の例について示しているが、レンズのような屈折物体の場合は、入射と出射の2 回の屈折を経たあとのレイを求めて同様の手順を実行する。
【0037】
(反射と屈折の表示結果)
頂点ベースのレイトレーシングの反射の表示例を図3(a)及び(b)に示す。比較として、従来のキューブマッピングによる反射の表示例を図3(c)及び(d)に示す。キューブマッピングではずれが生じる、視点に近い物体の映りこみも、頂点ベースのレイトレーシングでは正確に処理されていることがわかる。これらの図では、車のドアミラーに映りこんだ画像を表示している。図3(b)及び図3(d)の画像では、ミラーのワイヤーフレームモデルを重ね合わせている。多数の球は、反射ベクトルとシーンとの交点に配置した。頂点ベースのレイトレーシングでは交点が正確に頂点部分に映りこんでいる。また、レンズを通した屈折の表示例を図4に示す。この図は、凹レンズを通した屈折の表示結果を示している。図4(b)は図4(a)の右端付近を拡大したもので、レンズ頂点をワイヤーフレームで表示し、屈折ベクトルとシーンの交点に小さな球を配置したものである。この図においても、屈折ベクトルの交点が頂点に正確に映りこんでいることがわかる。
【0038】
(本実施形態の方法)
以下、本実施形態に係るボケ画像の生成方法を、図5を主に参照しながら説明する。この方法は、大きく、前処理と、レンダリングとに分けられる。前処理では、ボクセルごとに、頂点のずれ範囲を算出し、これを当該ボクセルと関連づけて記憶部30に記録しておく。レンダリング時には、頂点ずれ範囲に応じて、各ポリゴンの各頂点を変位させて、描画処理を行う。以下、詳しく説明する。
【0039】
(図5のステップSA−1)
まず、ボクセルの区切りを、図6(a)を参照しながら説明する。この例では、視点1からのビューボリューム2が設定されている。ビューボリュームとは、モデル化された3D空間のうちで、透視変換が行われる領域である。ここで、本実施形態では、視点1とビューボリューム2との間に、レンズ3が配置されている。
【0040】
本実施形態においては、ボクセルを、ビューボリューム2内の空間を分割することにより生成する。つまり、ボクセルの集合が、本実施形態でのビューボリュームを構成していることになる。ここで、本実施形態では、ビューボリューム2内の空間を、観察者の視点1に近いほど細かく区切る(図6(a)参照)。すなわち、奥行き方向、上下方向及び左右方向(つまりXYZ方向)のいずれにおいても、視点に近いほど細かい(小さい)ボクセルとなるように区切る。このような区切りは、正規化デバイス座標系(NDC)を等間隔に区切ることで実現することができる。このため、必要な計算量を少なく抑えることができるという利点がある(後述)。
【0041】
(図5のステップSA−2)
ついで、視点1からボクセル4の中心への光路を求める。この方法の詳細な手順を図7に基づいて説明する。
【0042】
(図7のステップSB−1)
まず、図8に示されるように、ボクセル4の中心にモデルを配置する。具体的には、ある奥行きのボクセル群を、まず対象とする。このボクセル群のそれぞれの中心(奥行き方向における中心)に、矩形モデル5をそれぞれ配置する。これらの矩形モデルは、ボクセルによって異なる色とされている。
【0043】
(図7のステップSB−2)
ついで、この状態で、レンズ3での屈折も考慮して、各矩形モデル5を描画(透視変換)する。描画の結果の一例を図9に示す。この描画結果においては、各ボクセルに対応して異なる色が付されているので、色を基準にして、ボクセルを特定することができる。
【0044】
(図7のステップSB−3)
その後、描画結果の画像(図9参照)から、投影面上での各矩形モデルの中心位置(XY平面内における中心)を求める。
【0045】
(図7のステップSB−4)
さらに、視点から、投影面上で矩形中央となる位置に向かう光線(Ray)を求める。つまり、この光線は、視点からボクセル中心への向かうことになる。
【0046】
本実施形態では、このように求めた光路を逆に辿ることで、網膜上でのボケ量を算出する(後述)。
【0047】
(図5のステップSA−3)
ついで、網膜上でのボケ量を算出する。この算出の概略は、前記のようにして得られた、視点からボクセル中心への光路を、今度はボクセルから、視点(瞳)を介して、網膜まで辿るというものである。本実施形態では、ボクセル中心から、視点を経由して網膜への光路を辿る手法として、波面追跡法が用いられている。
【0048】
(図5のステップSA−4)
ついで、網膜上でのボケ量に対応する、ボクセル中での頂点ずれ範囲を算出して記録する。
【0049】
(図5のステップSA−5及びSA−6)
ついで、視点から見た2次元画像を透視変換により生成する。この2次元画像の生成は、基本的に、非特許文献12に記載された頂点ベースのレイトレーシング法により行なうことができる。
【0050】
本実施形態の手法によれば、得られた頂点ずれ範囲に応じて、後述の「GPUによるレンダリングの実装」で説明するような方法で各頂点をずらしながら複数回の透視変換を行う。このため、透視変換によって得られた画像においては、頂点ずれ範囲内で位置がずらされた複数のポリゴンで構成される対象物がぼやけて見えることになる。これにより、デフォーカス画像を生成することができる。
【0051】
また、この手法によれば、観察者の視点に近いほど、細かくボクセルを区切っているので、ボクセルごとのぼけ量(デフォーカス量)を細かく変更できる。このため、実際の見え方をより正確にシミュレートすることができる。また、このようなボクセル設定は、3次元モデリング空間を用いた画像生成に必須の透視変換と親和性の高い処理となるので、画像生成に要する処理時間を短縮することが可能になる。
【0052】
(本実施形態の具体例)
以下、本実施形態の手法を用いてボケ画像を生成する具体例を説明する。まず、本実施例のステップSA−3において採用した波面追跡法の詳細を説明し、その後、それを用いたボケ画像の生成方法を説明する。
【0053】
(波面追跡法)
波面追跡法自体は、光線追跡の一手法として従来から存在する。ある地点での波面は、波の動きの方向により表される。たとえば法線ベクトルN、二つの主方向e1及びe2、並びに対応する主曲率κ1及びκ2が、波の動きの方向を示す。二つの主方向e1及びe2は互いに直交している。曲率は、曲率の中心が波の動きと反対側にあるとき、負となる。
【0054】
距離dで拡散ないし進行すると、波面は単純に以下のように変形する。
ここで、ベクトルN、e1及びe2は変化しない。
【0055】
この変形はスネルの法則によって導かれるが、このことはよく知られているので、結果のみをここに示した。方向ベクトルNは、
N'=μN+γN(s)のように変形される。ここで、N(s)は、屈折性表面の単位法線ベクトル(unit normal vector)であり、μ=n1/n2、γ=−μcosφ+cosφ'である。n1及びn2は、それぞれ、表面前後の媒質の屈折率である。φ及びφ'は、それぞれ、入射角及び屈折角を示す。
【0056】
単位ベクトル
を考える。これは、入射する波面と表面の両方に共通の接ベクトルである。ベクトルuに対応する曲率は、以下のようにして得られる。
【0057】
もう一つの単位ベクトルv=N×uを考える。さらに、ベクトルuと主方向ベクトルe1をとの角度ωを考える。すなわち、
このとき、オイラーの公式により、
であり、これは、入力する波について、u,v方向の曲率(directional curvature)κu、κv及びトーションκuvを決定する。屈折により、波面のu,v方向の曲率は、以下のように変化する:
【0058】
ここで、κu(s)、κv(s)及びκuvは、それぞれ、入射点における屈折性表面の、u,v方向性の曲率及びトーションである。これらは、式3を使うことにより、波面と同様に計算できる。屈折後の波面を表すために、式3を変形することにより、主曲率と主方向を見いだす必要がある。
【0059】
表1は、提案手法における波面追跡の操作の用法を示している。すなわち、この表は、各ボクセルのためのボケ領域(blur field)の計算において、どの操作がどの段階で使用されるかを表している。
【0060】
【表1】
【0061】
表1は、各ボクセルのための前計算の処理を示している。これらの操作は、各ボクセルの波源から視点への、二重に屈折された光線(double refracted ray)について行われる。
【0062】
(眼のモデル)
乱視を含む屈折異常による見え方をシミュレートするために、従来は、波面追跡法と分散レイトレーシングを使う技術が知られている(非特許文献9参照)。本実施形態では、眼内の領域において、新たな波面追跡法を使用する。このモデルでは、眼のレンズにおける波面を変形して、円錐に似たコーノイド形状(revolved conoid shape)を形成し、そして、この形状を網膜の位置で切り取り、正確なボケ量、すなわち点広がり形状を獲得する。このボケ量はブラーフィールド(blur field)の値として、記憶部30に格納される。
【0063】
この実施形態では、レンズ機構としての眼を、薄い、トーリックレンズと見なした。このレンズは、方向に依存し、かつ、レンズ表面にわたって均一な屈折力を持つものとした。眼科学の見地からは、この眼球モデルは、近視、遠視、老視に加えて、直乱視や斜乱視を扱えることになる。
【0064】
(薄いトーリックレンズによる波面変形)
一般に、眼における波面の変形は複雑な法則に基づいている。そこで、この実施形態では、眼を、薄いトーリックレンズに近似したことに加えて、さらに、入射する光線の方向が、レンズに直交すると仮定した。この仮定は、以下の理由で合理的である。すなわち、眼球は、興味のある領域に向けて回転し、光線が、網膜の中心窩において収束する。
【0065】
以降においては、入射された波面の単純な変形を導入することにより、波面が屈折して網膜に収束する状態を記述する。
【0066】
眼鏡用レンズで屈折され、角膜の表面に向けて並進した後の状態を、主曲率κ1及びκ2、並びに、主方向e1及びe2をそれぞれ備えた波面として記述する。図10に記述されるように、ここでは、眼のレンズの座標系を、右手座標系とし、さらに、その原点を入射部分とした。さらに、z軸を、波面法線ベクトルと一致させた。x軸は、波面及びレンズの両方に接して、かつ水平になるようにした。簡単のため、x軸の正方向は、y軸が上を向くように決める。
【0067】
入射した波面におけるあらゆる接線ベクトルは、レンズについても接線ベクトルとなるので、x軸を共通の接線に選ぶことができ、ここでは接ベクトルuで示される。これにより、トーリックレンズによる変形を受けた波面を記述できる。
【0068】
ω1を、x軸と、第1の主方向e1との間の角度とする。そして、式3にω=−ω1を代入して、方向性の曲率κx、κy及びκkyを得ることができる。
【0069】
眼のレンズの表面における波面の変形のために、ここで、スネルの法則に代えて、バージェンスの法則(vergence formula)を導入する。ここで、トーリックレンズにおける方向依存性の屈折力を、乱視における入力パラメータのセットとして導入する。
【0070】
まず、基本的な屈折力P1及びP2、並びに、x軸と第1の主方向ω1(e)との間の角度を与えると、方向依存性の屈折力Px(x−z平面内において)、Py(y−z平面内において)、及びPxyを、式3の適用によって得る。ここで、κ1=P1、κ2=P2、ω=−ω1(e)を代入する。
【0071】
光学においては、基本的なバージェンスの法則は、
で表される。ここでVは入力光のバージェンスであり、定義によって、V=nκと表せる。ここで、入力側における媒質の屈折率nと、入力点の曲率κが用いられている。また、Pはレンズの屈折力、V'は、出力光のバージェンスである。この実施形態では、この式を、方向性の曲率及び誘導される法則に拡張し、乱視による波面の変形を導く。ここで、
である。ここで、μ=n1/n2であり、n1は空気の屈折率、n2は硝子体(Vitreous humor)の屈折率である。
【0072】
このようにして最終的に、波面は、5式に従って網膜に収束する。ここで、κu=κ'x、κv=κ'y、そして、κuv=κ'xyであり、主曲率κ'1及びκ'2と、第1の主方向ω'1=−ωの角度を得る。
【0073】
(網膜における光の広がりの評価)
前記したような光は、トーリックレンズで屈折されると、一般的には、一点に収束しない。あるサイズの、円形の瞳を通ってきた光は、円錐に似た形状となる。この形状は、スタームのコーノイド(Sturm's conoid)として知られている。ここでは、二つの焦線(focal line)が互いに直交している(図11参照)。そこで、以下、(1)スタームのコーノイドを分析し、(2)人の眼による調節を検討する。これにより、瞳と、コーノイドを形成する一定の点光源からの光とが与えられたときに、網膜に投影される光の広がりの形状を求める。ついで、眼の調節についても検討する。
【0074】
スタームのコーノイドを簡単に検討するために、当面はz方向における回転を無視する。すなわち、ここで、ω'1=0とする。一点に投影された光の広がりをシミュレートするために、z軸に直交する平面での、コーノイドの断面に着目する。zを、角膜と網膜との間における定数パラメータzeとする。これにより、以下に示す楕円の式を得る。
また、rpは瞳の半径である。上記のaとbは、z軸に沿う直角三角形の相似を使うことで得られる(例えば、図11における△AOCと△BPC)。パラメータκ'1とκ'2とは、人の眼による調整をどこ程度組み込むかによって決定される(後述)。
【0075】
網膜においては、ze=zrであり、a、b及びω'1で記述される楕円形状は、光源の点広がりを表す。ボクセルにおける波源からの光波が追跡され、そして、網膜での楕円を得ることができる。この形状をボケのパターン(すなわち「網膜上でのボケ量」)とする。このパターンは、各ボクセルからの光源が、それぞれ、生み出すものである。このボケのパターンを、それぞれのボクセルに関連付けて記録する。ただし、a、b及びω'1を記録する代わりに、これと等価な2×2の行列をボクセル値として記録する。この行列は、単位円を、方向付けされた楕円に変換するものである。このようにして前計算された、それぞれのボクセルについての行列が、ブラーフィールドの要素となる。
【0076】
この行列のスケーリングファクタを決めるために、網膜と、正規化デバイス座標系(NDC)との、幾何学的な関係を考察する必要がある。NDCにおけるスケールは、本実施形態でのボクセル空間と等価なものとなっている。
【0077】
shとsvを、水平及び垂直方向のそれぞれにおける、網膜からNDCへのスケーリングファクタとする。また、ボクセル(vx,vy,vz)における最終的なブラーフィールドの値Bvx,vy,vz(すなわち「頂点ずれの範囲」)は以下のようになる。
【0078】
図12は、shがどのように計算されるかを表している。網膜における小さい水平方向の長さhrは正規化デバイス座標系(NDC)における長さhNDCに割り当てられる。スケーリングファクタshは、hNDC/hrにより計算される。垂直なスケーリングファクタsvは同様に計算できる。
【0079】
ここで、式9における右辺の変数は、いずれも、それぞれのボクセルに応じて変化しうることに注意する。2×2行列の乗算の結果は、それぞれのボクセルに対応して格納される。
【0080】
(眼による調節)
よく知られているように、人の眼は、ボケのパターン網膜状での最小錯乱円となるように屈折力を調節しようとする。zrを眼球モデルにおける薄いレンズと網膜との距離とする。この条件は、式8においてa=−bとすることで満足される。したがって、下記式を得る。
【0081】
上記の法則を、式3,7,4および5を用いて拡張し、そして、n1=1.0という事実を用いると、下記式を得る。
ここで、
である。光学的には、κバーは、眼に入射する波面の平均の曲率であり、そして、Pバーは、眼の平均的な屈折力である。
【0082】
Pminバーを、標準的な、非乱視の眼における最小の(緩んだ)調節での屈折力とし、ΔPを、最大の調節能力Δmaxによって限界付けられた、調節屈折力とする。すなわち、
とする。これにより
となる。
【0083】
式11及び12から、下記式を得る。
【0084】
上記の調節の式の意味は以下のようである。入射光の平均曲率κバーは、通常負である。これが小さくなると(つまり−κバーが大きくなると)、光波が眼に近い位置からくることになり、調節に要する努力ΔPが大きくなる。逆も同様である。Δmaxの標準的な値は表2に示される。この値は年をとるにつれて低下する。
【0085】
【表2】
【0086】
Aを、使用者が定義する乱視成分とする。つまり、A=P1,min−P2,minである。ここでP1,min及びP2,minは、最小の調節における、眼の基本的な屈折力であり、これは、以下のようになる。
【0087】
したがって、
である。そして、定義により、調節を考慮に入れた、眼の基本的な屈折力を得ることができる。
【0088】
波面追跡モジュールは、上記の二つの値を、ユーザが定義したパラメータω1(e)とともに受け取り、前記した追跡を可能にしている。つまり、本実施形態では、眼のレンズのパラメータを、眼の調節機能まで考慮して設定することが可能である。
【0089】
前記した表2は、標準的な眼のパラメータである。表3は、見え方をシミュレーションするために制御が必要なパラメータの例を示している。
【0090】
【表3】
【0091】
以上により、波面追跡法を用いて、網膜上でのボケ量を、傾きを持つ楕円状の範囲として算出できる。各ボクセルに対応する頂点ずれ範囲は、ブラーフィールドの値(式(9)の2×2行列)として格納される。頂点を実際にずらせる動作は、以下で述べるレンダリングにおいて行う。
【0092】
(GPUによるレンダリングの実装)
レンダリングの主要なループにおいては、ユーザが指定したサンプリングの回数に応じて、シーンは繰り返して描画される。そして、描画結果が混合されて、ボケ画像が生成される。
【0093】
それぞれのサンプリングにおいては、一個の変位種ベクトル(以下、種ベクトル。図13(a))が生成され、これが、頂点シェーダに供給される。種ベクトルは、2Dのベクトルで、単位円の中心を起点とし、当該単位円の内部においてランダムに生成された点を終点とするベクトルとなっている。
【0094】
頂点シェーダでは、種ベクトルが、頂点位置に応じた実際の2D変位ベクトルに変換される(図13(b))。この変換には、前記で求めたブラーフィールドのボクセル値となる2×2行列Bvx,vy,vz(式9、図13(c))が使用される。このボクセル値は、頂点のNDC座標により参照される。ここで、視点座標系(カメラ座標系)とNDC座標系との関係を図14に示す。このようなボクセルの区切り方は、GPUで頂点処理をする際の中間結果であるNDC座標系を等間隔に区切ることで実現できる。こうすることによって、眼の近くを密にできるという品質上の利点だけでなく、表示処理時の各物体頂点座標の中間データを変位に利用することができるという、処理性能上の大きな利点がある。この座標系(NDC)での頂点は、一般に表示処理では必ず計算されるものなので、NDC座標を元に所属ボクセルが簡単に分かる。そして、そのボクセルでの変位量もNDC座標系の値であらかじめ保持しておけば、中間座標に加算するだけで変位処理が終了する。つまり、余計な座標変換が不要になるという利点がある。
【0095】
現実的には、頂点シェーダで必ず計算されるのはNDC座標の一歩手前の同次座標(x, y, z, w)である。本実施例では、この同次座標のwでx, y, zのそれぞれを除算することによりNDC座標を得て、2D変位ベクトルを足した後再び同次座標に戻すという処理で頂点を変位させる。
【0096】
ブラーフィールドの値Bvx,vy,vzは、3Dテクスチャまたは部分的な2Dテクスチャを並べた2Dテクスチャとして頂点シェーダに与えられる。ブラーフィールドの典型的なサイズは、x及びy方向において32×32ボクセル、z(深さ)方向において128ボクセルである。それぞれのフィールド値は2×2の行列であり、4要素のテクセル(texel;テクスチャ画素)として表現できる。
【0097】
変位のための頂点シェーダ用コードの例を以下に示す。これは、OpenGLシェーダ言語を使ったものである。この動作により、ポリゴンの頂点を実際にずらして描画することができる。頂点のずれ量を変えながら、複数回の描画を行い、得られた画像を重ね合わせることで、ボケ画像を生成することができる。
【0098】
【0099】
図15は、本実施例における処理の全体を示す説明図である。ここに示されているように、透視変換は、第1回目のパスと第2回目のパスについてそれぞれ描画し、それらを組み合わせた2次元画像を使用者に呈示する。このような、パスごとの描画という処理自体はよく知られた手法なので、詳細な説明は省略する。
【0100】
(結果及び性能)
性能は、シーンに含まれる全てのポリゴンの数により影響される。特に、屈折レンズにおけるメッシュの複雑さは影響力を持つ。なぜなら、光線は、頂点ごとに追跡されるからである。ここでは、1000個の頂点を持つように区切られたポリゴンのモデルを使う。これは、実質的には、光線追跡法(ray tracing)と同じ程度に正確な画像を生成できるものである。以下の実験は、以下の条件で行われた。
3.2GHz Pentium4 CPU
NVIDIA GPU GeForce 7800GTX Graphics使用
1024×768ピクセルの出力画像サイズ
【0101】
レンズを通過しながら2回屈折した状態のレンダリングでは、およそ10000ポリゴンのシーンについて、30〜40fps(frame per second)を達成した。色収差を考慮した場合、スループットは15fpsに低下した(図16参照)。図16は、色収差を考慮した描画の例である。ここでは、RGBの三色についてそれぞれ別に描画している。また、各色について、異なる屈折率を設定している。例えば、(R:1.60, G:1.61, B:1.62)である。このようにして得た画像を重ねた画像を、二次元画像として使用者に呈示する。これにより、色収差の状況を知ることができる。
【0102】
焦点ボケの表示処理は、各頂点を移動範囲内でサンプリングした複数回の描画結果を合成することで行う。その性能は、サンプリングの数に影響される。ここでは、10サンプリングのボケ画像を使用する。これは、経験上、レンズ設計の検証には十分であると考えられる。レンズによる屈折がない場合、図17の左側に示すボケ画像のフレームレートは、およそ30fpsである。眼鏡レンズによる屈折の影響を考慮に入れたレンダリングの場合は7fpsから20fps以上となった。ただし、これは、シーンの複雑さ、ウインドウサイズ、サンプリングの数によって影響される。図17の中央及び右側の画像は、それそれ、20.1fpsであった。このときの条件は、10サンプリングで、1024×768ウインドウであった。図17の画像においては、瞳の直径は2cmに設定されており、焦点ボケの結果を強調している。ブラーフィールドの値は、瞳のサイズrpに比例している。このことは、式8及び9から明らかである。
【0103】
図18は、設計中の累進焦点レンズ(progressive lens)の検証結果を示している。レンズの上半分は近視を矯正するように設計され、下半分は、レンズ中央で老視を矯正するように設計されている。下半分の左右はうまく矯正できていないが、これは、累進焦点レンズの設計が難しいことを示している。
【0104】
乱視の例が図19に示されている。ここでは、ブラーフィールドの一部におけるボクセル情報が、楕円群として示されている。図19は、裸眼の乱視についての、シミュレーションによる描画結果である。対象物である新聞は、かなり近くに配置されている(左下の隅で6.1cm、右上の隅で10.7cm)。この距離では人間の眼による調整が難しく、焦点ボケが起こる。乱視の設定なので、焦点ボケ範囲すなわちブラーフィールドは楕円状になる。ブラーフィールドの一部(新聞とほぼ同じ深さにあるボクセル群)が、各ボクセルについて、楕円で表示されている。ここで、それぞれのブラーフィールドの楕円自体も、ちょうど自らの大きさの範囲内でボケて表示されていることに注目されたい。また、楕円形状は、視点からの距離に応じて異なっている。これは、スタームのコーノイドとして説明した現象に基づいている。
【0105】
全てのブラーフィールドについての観察は図20に示されている。図20では、8×8×128のボクセルのブラーフィールドを観察した状態が示されている(右上)。また、ブラーフィールドを適用した結果も示されている(右下)。それぞれの小さい円は、ボクセルについてのブラーフィールド値を表している。視点の近くではボクセルの間隔が非常に狭くなるため、それぞれの円は互いに近づいてひとかたまりに見えている。円のサイズは、その地点での頂点ずれ範囲を示している。これは先の図19に示したとおりである。ここでは強い近視および老視がシミュレートされており、焦点は、右側のコンピュータディスプレイのモデルにのみに合っている。焦点が合う場所では、ブラーフィールドの値は零となり、円は表示されていない。
【0106】
この実施形態では、ブラーフィールドを生成するための前計算に、波面追跡を使用する。この前計算には、8×8×128ボクセルのブラーフィールドの場合で300ミリ秒を要した。ブラーフィールドが16×16×128であれば1秒、32×32×256であれば7秒を要した。
【0107】
(結論)
以上説明したように、本実施例の手法によれば、人の視力を考慮した、高速なレンダリング方法を提供することができる。本手法の特徴は以下の通りである。
・ほぼリアルタイムのフレームレートで、屈折とボケとを表現できる。
・様々な症状の視力と眼球レンズによる屈折とをシミュレートできる精細な眼球モデルを採用している。
・ボケ情報を空間的に分散して前計算し、ブラーフィールドとして格納しておく。
【0108】
ブラーフィールドは、焦点ボケの高速描画のために利用できる新しい概念である。プログラム可能なGPUを使用して簡単に実装することができ、データ自体も単純で容量もさほど大きくない。空間内の位置に応じた物体の変位を必要とするような応用分野であれば、幅広い分野でブラーフィールドを適用することができる。もしプログラマが頂点変位のルーティンを追加するならば、ブラーフィールドは分散レイトレーシングと組み合わせることもできる。
【0109】
ブラーフィールドの技術を使う場合、対象物は、メッシュ化されたポリゴンに分割される必要がある。また、このポリゴンは、ブラーフィールドのボクセルサイズと同程度の粒度である必要がある。
【0110】
なお、前記の例においては、眼鏡レンズを用いた例を示したが、眼鏡レンズを用いなくても、視力による見え方を生成する必要がある場面であれば、本発明を適用可能である。
【0111】
なお、本発明の範囲は、前記実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることはもちろんである。
【0112】
例えば、前記した各構成要素は、機能ブロックとして存在していればよく、独立したハードウエアとして存在しなくても良い。また、実装方法としては、ハードウエアを用いてもコンピュータソフトウエアを用いても良い。さらに、本発明における一つの機能要素が複数の機能要素の集合によって実現されても良い。本発明における複数の機能要素が一つの機能要素により実現されても良い。
【0113】
また、機能要素は、物理的に離間した位置に配置されていてもよい。この場合、機能要素どうしがネットワークにより接続されていても良い。
【図面の簡単な説明】
【0114】
【図1】本実施形態に係る画像生成装置の、概略的な機能ブロック図である。
【図2】頂点ベースのレイトレーシングによる画像生成方法を説明するための説明図である。
【図3】図2の方法により描画した結果を示す図であって、図(a)及び(b)は頂点ベースのレイトレーシングによる描画結果を示し、図(c)及び(d)は従来のキューブマッピングによる描画結果を示している。
【図4】凹レンズを通した屈折における描画結果を示す図である。図(b)は図(a)の右端付近を拡大したものである。
【図5】本実施形態における画像生成方法の一例を説明するためのフローチャートである。
【図6】本実施形態における画像生成方法の一例を説明するための説明図である。
【図7】本実施形態において、レンズ経路を求める方法の一例を説明するためのフローチャートである。
【図8】レンズ経路を求める手法を説明するための説明図である。
【図9】図8の例において、矩形モデルを描画した結果の一例を示す説明図である。
【図10】波面追跡法における波面の計算手法を説明するための図である。図(a)は入力波、図(b)は乱視の眼による屈折力、図(c)は屈折された波を示している。
【図11】トーリックレンズにより形成されるスタームのコーノイドを示す図である。
【図12】網膜上でのボケ量を、ボクセルでの頂点ずれ量に換算するための計算手法を説明するための説明図である。
【図13】ボクセルでの頂点ずれ量の計算を説明するための説明図である。図(a)は、どのボクセルにも共通する種ベクトルの例を示す図である。図(b)は、種ベクトルを用いて、あるボクセルでの頂点に与える実際の変位を示すベクトルの図(NDC座標系)である。図(c)は、あるボクセルでのブラーフィールドの値を示す計算例である。
【図14】視点座標系から正規化デバイス座標系に変換する手順を説明するための説明図である。
【図15】実施例における描画手順の詳細を示す説明図である。
【図16】色収差を考慮した描画例を示す図である。
【図17】近視及び遠視をシミュレートしたことによって得られた描画例を示す図である。
【図18】累進焦点レンズを介して対象物を見た状態をシミュレートした画像の例である。
【図19】乱視の裸眼における見え方のシミュレーション結果である。図(a)はボケを考慮していない場合の画像例、図(b)はボケを考慮した場合の画像例である。
【図20】ブラーフィールドの例を説明するための説明図である。
【符号の説明】
【0115】
1 視点
2 ビューボリューム
3 レンズ
4 ボクセル
5 矩形モデル
10 入力部
11 入力インタフェース
20 表示部
21 出力インタフェース
30 記憶部
40 画像生成部
50 バス
【特許請求の範囲】
【請求項1】
ビューボリューム内に配置された対象物に対して、観察者の視点からの透視変換を行うことにより、2次元画像を生成する方法であって、さらに、以下のステップを備えた画像生成方法:
(a)前記ビューボリューム内の空間を、観察者からの視点に近いほど細かくされた複数のボクセルに区切るステップ;
(b)前記ボクセルの中心から前記視点への光路を辿ることにより、前記観察者の網膜上でのボケ量を算出するステップ;
(c)前記網膜上でのボケ量に対応する、前記ボクセル中での頂点ずれ範囲を算出して記録するステップ;
(d)前記頂点ずれ範囲に応じて、当該頂点を実際にずらすステップ;
(e)前記視点から見た前記2次元画像を透視変換により生成するステップ。
【請求項2】
さらに、
(f)前記視点から前記ボクセルの中心への光路を求めるステップ
を有しており、このステップは、前記ステップ(b)の前に行われ、
かつ、前記ステップ(b)は、前記ステップ(f)で求めた光路を逆に辿ることにより実行される、請求項1に記載の画像生成方法。
【請求項3】
前記ステップ(b)において、前記ボクセルの中心から前記視点への光路を辿る手法として、波面追跡法が用いられている、請求項1又は2に記載の画像生成方法。
【請求項4】
3次元空間内に配置された対象物に対する透視変換を行うことにより2次元画像を生成する装置であって、
この装置は、記憶部と画像生成部とを備えており、
前記記憶部は、処理に必要なデータやコンピュータプログラムを格納するものであり、
前記画像生成部は、以下の処理を行うことを特徴とする画像生成装置:
(a)前記ビューボリューム内の空間を、観察者からの視点に近いほど細かくされた複数のボクセルに区切るステップ;
(b)前記ボクセルの中心から前記視点への光路を辿ることにより、前記観察者の網膜上でのボケ量を算出するステップ;
(c)前記網膜上でのボケ量に対応する、前記ボクセル中での頂点ずれ範囲を算出して記録するステップ;
(d)前記頂点ずれ範囲に応じて、当該頂点を実際にずらすステップ;
(e)前記視点から見た前記2次元画像を透視変換により生成するステップ。
【請求項5】
3次元空間内に配置された対象物に対する透視変換を行うことにより2次元画像を生成する方法であって、さらに、以下のステップを備えた画像生成方法を、コンピュータにより実行させることを特徴とするコンピュータプログラム:
(a)前記ビューボリューム内の空間を、観察者からの視点に近いほど細かくされた複数のボクセルに区切るステップ;
(b)前記ボクセルの中心から前記視点への光路を辿ることにより、前記観察者の網膜上でのボケ量を算出するステップ;
(c)前記網膜上でのボケ量に対応する、前記ボクセル中での頂点ずれ範囲を算出して記録するステップ;
(d)前記頂点ずれ範囲に応じて、当該頂点を実際にずらすステップ;
(e)前記視点から見た前記2次元画像を透視変換により生成するステップ。
【請求項1】
ビューボリューム内に配置された対象物に対して、観察者の視点からの透視変換を行うことにより、2次元画像を生成する方法であって、さらに、以下のステップを備えた画像生成方法:
(a)前記ビューボリューム内の空間を、観察者からの視点に近いほど細かくされた複数のボクセルに区切るステップ;
(b)前記ボクセルの中心から前記視点への光路を辿ることにより、前記観察者の網膜上でのボケ量を算出するステップ;
(c)前記網膜上でのボケ量に対応する、前記ボクセル中での頂点ずれ範囲を算出して記録するステップ;
(d)前記頂点ずれ範囲に応じて、当該頂点を実際にずらすステップ;
(e)前記視点から見た前記2次元画像を透視変換により生成するステップ。
【請求項2】
さらに、
(f)前記視点から前記ボクセルの中心への光路を求めるステップ
を有しており、このステップは、前記ステップ(b)の前に行われ、
かつ、前記ステップ(b)は、前記ステップ(f)で求めた光路を逆に辿ることにより実行される、請求項1に記載の画像生成方法。
【請求項3】
前記ステップ(b)において、前記ボクセルの中心から前記視点への光路を辿る手法として、波面追跡法が用いられている、請求項1又は2に記載の画像生成方法。
【請求項4】
3次元空間内に配置された対象物に対する透視変換を行うことにより2次元画像を生成する装置であって、
この装置は、記憶部と画像生成部とを備えており、
前記記憶部は、処理に必要なデータやコンピュータプログラムを格納するものであり、
前記画像生成部は、以下の処理を行うことを特徴とする画像生成装置:
(a)前記ビューボリューム内の空間を、観察者からの視点に近いほど細かくされた複数のボクセルに区切るステップ;
(b)前記ボクセルの中心から前記視点への光路を辿ることにより、前記観察者の網膜上でのボケ量を算出するステップ;
(c)前記網膜上でのボケ量に対応する、前記ボクセル中での頂点ずれ範囲を算出して記録するステップ;
(d)前記頂点ずれ範囲に応じて、当該頂点を実際にずらすステップ;
(e)前記視点から見た前記2次元画像を透視変換により生成するステップ。
【請求項5】
3次元空間内に配置された対象物に対する透視変換を行うことにより2次元画像を生成する方法であって、さらに、以下のステップを備えた画像生成方法を、コンピュータにより実行させることを特徴とするコンピュータプログラム:
(a)前記ビューボリューム内の空間を、観察者からの視点に近いほど細かくされた複数のボクセルに区切るステップ;
(b)前記ボクセルの中心から前記視点への光路を辿ることにより、前記観察者の網膜上でのボケ量を算出するステップ;
(c)前記網膜上でのボケ量に対応する、前記ボクセル中での頂点ずれ範囲を算出して記録するステップ;
(d)前記頂点ずれ範囲に応じて、当該頂点を実際にずらすステップ;
(e)前記視点から見た前記2次元画像を透視変換により生成するステップ。
【図1】
【図2】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13(a)】
【図13(b)】
【図13(c)】
【図14】
【図3(a)】
【図3(b)】
【図3(c)】
【図3(d)】
【図4(a)】
【図4(b)】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図2】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13(a)】
【図13(b)】
【図13(c)】
【図14】
【図3(a)】
【図3(b)】
【図3(c)】
【図3(d)】
【図4(a)】
【図4(b)】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公開番号】特開2009−3812(P2009−3812A)
【公開日】平成21年1月8日(2009.1.8)
【国際特許分類】
【出願番号】特願2007−165624(P2007−165624)
【出願日】平成19年6月22日(2007.6.22)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.PENTIUM
【出願人】(599118414)日本SGI株式会社 (6)
【Fターム(参考)】
【公開日】平成21年1月8日(2009.1.8)
【国際特許分類】
【出願日】平成19年6月22日(2007.6.22)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.PENTIUM
【出願人】(599118414)日本SGI株式会社 (6)
【Fターム(参考)】
[ Back to top ]