説明

画像生成装置および画像生成方法

【課題】特定の3次元オブジェクトを強調表示した画像を容易に生成する技術を提供する。
【解決手段】複数の3次元オブジェクトから画像を生成する画像生成装置であって、強調表示する3次元オブジェクトから画像データを生成して第1のフレームバッファに格納する第1の描画手段と、強調表示しない3次元オブジェクトから画像データを生成して第2のフレームバッファに格納する第2の描画手段と、第1のフレームバッファに格納された画像データの上に第2のフレームバッファに格納された画像データを半透明に重ね合わせることで特定の3次元オブジェクトが他の3次元オブジェクトに隠れず強調表示された表示画像を生成する画像生成手段とを有する。ここで、画像生成手段は、アキュムレーションバッファを用いて画像データを半透明に重ね合わせることが好ましい。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、3次元画像を生成する技術に関し、特に複数の3次元オブジェクトのうち特定の3次元オブジェクトが強調表示された画像を生成する技術に関する。
【背景技術】
【0002】
3次元コンピュータグラフィックスは、仮想3次元空間において管理される3次元オブジェクトを、計算によってコンピュータのスクリーン平面に投影して描画を行う技術である。
【0003】
3次元オブジェクトをスクリーン平面に投影する際に、複数のオブジェクトが同一の画素(ピクセル)に投影される場合がある。このような場合には、最も手前の(ユーザの視点に最も近い)オブジェクトを描画し、このオブジェクトの背後にある他のオブジェクトを描画しない必要がある。
【0004】
このように最も手前のオブジェクトのみを描画する処理を、陰線陰面消去という。陰線陰面消去では、画素ごとに奥行き情報を格納するZバッファを利用して最も手前のオブジェクトの描画を行うZバッファ法を用いることが一般的である(非特許文献1)。
【0005】
ただし、このように複数のオブジェクトを重ね合わせて描画する場合に、必ずしも最も手前にあるオブジェクトのみが描画されるというわけではない。例えば、水や雲、霧といった半透明のオブジェクトを表現する場合には、これらのオブジェクトの背後に位置するオブジェクトが透けて見えるように描画される必要がある。あるいは、本来は手前のオブジェクトによって隠れてしまうオブジェクトであっても、その存在がユーザに分かるように手前にあるオブジェクトを半透明にし、強調表示したいオブジェクトが見えるように描画する場合もある。
【0006】
このような半透明オブジェクトの描画は、従来は、アルファ値(透明度)を用いたアルファブレンディングと呼ばれる手法によって行われている。アルファブレンディングでは、すでに描かれているオブジェクトの色に新しく描くオブジェクトの色を合成する際に、新しいオブジェクトの色に透明度を表すアルファ値(0が完全な透明、1が完全な不透明)を重み付け係数として掛けて、既に描かれているオブジェクトの色に足し合わせる。このようにして、半透明なオブジェクトを表現することができる。
【0007】
ところで、画像データを格納するバッファの1つとして、アキュムレーションバッファと呼ばれるものが知られている(非特許文献2)。アキュムレーションバッファは、すでに格納された画像データ(画素値)に、新たな画像データを足し合わせる処理を高速に処理することが可能なバッファである。アキュムレーションバッファを用いて、画像データを足し合わせる際には、既存の画像データと新しく足し合わせる画像データとを、重み付け係数を指定してどのような割合で足し合わせるか指定することができる。
【0008】
アキュムレーションバッファは、例えば、画像のギザギザ(ジャギー)を目立たなくさせるアンチエイリアシング処理、動きのある物体を表現するためのモーションブラーなどに用いられる。また、実写画像とCG画像を合成する際に、違和感を感じさせないようにCG画像に対して適度な暈けを生じさせるためにアキュムレーションバッファを利用する技術が開示されている(特許文献1)。
【特許文献1】特許第3450833号公報
【非特許文献1】Mason Woo、他3名、「OpenGL プログラミングガイド」、第2版、ピアソン・エデュケーション、2002年4月
【非特許文献2】Paul Haeberli and Kurt Akeley, "The Accumulation Buffer: Hardware Support for High-Quality Rendering", ACM Computer Graphics, vol. 24, No. 4, pp. 309-318, Aug. 1990.
【発明の開示】
【発明が解決しようとする課題】
【0009】
3次元オブジェクトを描画する場合に、他のオブジェクトの背後に位置し、本来であれば陰線陰面消去処理によって描画されないオブジェクトであっても、そのオブジェクトの重要度に応じて故意に強調して表示したい場合がある。このような場合には、強調表示したいオブジェクトよりも手前にある(視点に近い位置にある)オブジェクトを半透明描画することで、対象のオブジェクトを強調表示する。
【0010】
このような半透明描画では、上述のアルファブレンディングを用いる。しかし、アルファブレンディングにおいては、重ね合わせて表示する複数のオブジェクトの描画順序(重ね合わせる順序)が重要となる。既に描画されたオブジェクトの上に、新たなオブジェクトに透明度をかけて重ね合わせるため、最も奥にあるオブジェクトから順番に重ね合わせる必要がある。つまり、描画しようとする全てのオブジェクトに対して、視点からの位置を計算し、これにしたがってより遠くに存在するオブジェクトから描画しなければならない。このように複数のオブジェクトを重ね合わせる処理には計算コストがかかるという問題がある。
【0011】
また、複数のクライアント(プログラム)から同一の3次元空間上にオブジェクトを描画したい場合がある。このような場合、異なるクライアントが描画するオブジェクト間で奥行きを比較することができないので、視点に遠いオブジェクトから描画することができないという問題もある。
【0012】
本発明は上記実情に鑑みてなされたものであって、その目的とするところは、複数の3次元オブジェクトのうち一部の3次元オブジェクトを強調表示する処理を効率的に行うことのできる技術を提供することにある。
【課題を解決するための手段】
【0013】
上記目的を達成するために本発明では、以下の手段または処理によって、複数の3次元オブジェクトから構成される3次元画像において、特定の3次元オブジェクトが強調表示された画像を生成する。本発明は、複数の3次元オブジェクトから画像を生成する画像生成装置であって、第1の描画手段と第2の描画手段と画像生成手段とを有する。
【0014】
第1の描画手段は、複数の3次元オブジェクトのうち強調表示する3次元オブジェクトから画像データ(第1の画像データ)を生成する。生成した第1の画像データを第1のフレームバッファに格納することが好ましい。また、第2の描画手段は、複数の3次元オブジェクトのうち強調表示する3次元オブジェクト以外の3次元オブジェクトから画像データ(第2の画像データ)を生成する。生成した第2の画像データを第2のフレームバッファに格納することが好ましい。
【0015】
各描画手段が行う3次元オブジェクトから画像データを生成する処理は、既存のどのような技術により行われても良い。すなわち、描画手段は、3次元オブジェクトの形状や位置を元に計算によってスクリーン平面上に投影された画像を生成する。ここで、各描画手段は、陰面消去のためにZバッファを用いることが好ましい。
【0016】
そして、画像生成手段は、第1のフレームバッファに格納された第1の画像データと第
2のフレームバッファに格納された第2の画像データとを重ね合わせることで、表示すべき画像を生成する。ここで、画像生成手段は、第1の画像データに対して、第2の画像データを半透明にして重ね合わせることで、第1の画像データが強調表示された表示画像を生成する。画像生成手段は、アキュムレーションバッファを用いて、第1の画像データと第2の画像データの重ね合わせを行うことが好ましい。特に、画像生成手段は、アキュムレーションバッファに第1の画像データを格納し、所定の透明度を重み付け係数として掛けた第2の画像データを足し合わせることで表示画像を生成することが好ましい。
【0017】
このように、本発明では、強調表示したい3次元オブジェクトとそれ以外の3次元オブジェクトを別々に描画してから、強調表示する画像に強調表示しない画像を半透明に重ね合わせることで、特定の3次元オブジェクトが強調表示された画像を生成している。このように、強調表示する3次元オブジェクトとそれ以外の3次元オブジェクトを別々に描画することで、半透明に重ね合わせる際に、視点の位置から遠くにある3次元オブジェクトから描画する必要がなくなる。つまり、それぞれにオブジェクトについて奥行きを計算してソートする処理を省くことができ、効率的な画像生成が可能となる。
【0018】
なお、本発明は、上記手段の少なくとも一部を含む画像生成装置として捉えることができる。また、本発明は、上記処理の少なくとも一部を含む画像生成方法、または、かかる方法を実現するためのプログラムとして捉えることもできる。上記手段および処理の各々は可能な限り互いに組み合わせて本発明を構成することができる。
【発明の効果】
【0019】
本発明によれば、複数の3次元オブジェクトのうち一部の3次元オブジェクトを強調表示する処理を効率的に行うことが可能となる。
【発明を実施するための最良の形態】
【0020】
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。
【0021】
<構成>
図1は、本発明の実施形態である画像生成装置1のハードウェア構成を示す図である。本実施形態に係る画像生成装置1は、複数の3次元オブジェクトのうち特定のオブジェクトのみを通常に描画し、その他のオブジェクトを半透明に描画することで、特定のオブジェクトを強調表示した画像を生成する。画像生成装置1によって生成された画像は、画像表示装置2に表示される。
【0022】
本実施形態に係る画像生成装置1は、グラフィックチップ(GPU)11,画像メモリ12,CPU13、主記憶装置14から構成される。
【0023】
画像メモリ12は、読み書き可能なメモリであり、画像データを格納する2つのフレームバッファと画像データの積算処理に用いられるアキュムレーションバッファを有する。なお、本実施形態においては、画像メモリ12は、主記憶装置14とは独立したメモリであり、画像処理のために専用で使用されるメモリである。
【0024】
GPU11は、画像表示処理を担う半導体チップである。GPU11は、CPU13から3次元オブジェクトデータを受け取り、3次元座標から2次元座標への座標変換処理や、画像データを生成するレンダリング(描画)処理に特化した半導体チップである。GPU11は、画像メモリ12内の2つのフレームバッファに格納された画像を重ね合わせて、最終的な表示画像を生成し、画像表示装置2に出力する。
【0025】
図2は、画像生成装置1の機能ブロックを示す図である。第1描画部21は、入力され
た強調表示する3次元オブジェクトのデータをレンダリングして画像データを生成し、生成した画像データを第1フレームバッファ22に格納する。第1描画部21は、ポリゴンなどの3次元オブジェクトの頂点座標をスクリーン平面に投影する座標変換処理や、スクリーン座標系に投影された頂点内部の画素値を求める処理を行う。なお、第1描画部21は、各画素に対応する点の奥行きも計算し、描画する3次元オブジェクトのうちで一番手前のオブジェクトの画素値をその画素の画像データとする。本実施形態においては、この陰線陰面消去はZバッファを用いて行う。
【0026】
第2描画部23は、入力された3次元オブジェクトのデータをレンダリングして画像データを生成し、生成した画像データを第2フレームバッファ24に格納する。第2描画部23は、基本的に第1描画部21と同様であるため詳細な説明は省略する。
【0027】
なお、第1描画部21には強調表示する3次元オブジェクトデータが、第2描画部23にはそれ以外の3次元オブジェクトデータが入力される。本実施形態においては、第1描画部21と第2描画部23はGPU11によってその機能が実現される。また、第1描画部21および第2描画部23にデータを入力するのは、CPU13上で実行しているプログラムである。ここで、第1描画部21に3次元オブジェクトデータを入力するプログラムと、第2描画部23に3次元オブジェクトデータを入力するプログラムは同一のものであっても異なるもの(プログラム自体は同一であっても異なるプロセスとして実行される場合も含む)であっても良い。
【0028】
重ね合わせ処理部(画像生成手段)25は、アキュムレーションバッファを利用して第1フレームバッファ22と第2フレームバッファ24に格納された画像データの合成を行う。ここで、アキュムレーションバッファについて説明する。アキュムレーションバッファは、画像データを格納可能なバッファ(メモリ)であるが、格納している画像データに新たな画像データを足し合わせる処理が可能である。新たな画像データを足し合わせる際に、所定の重み付け係数を掛けて足し合わせることが可能である。すなわち、アキュムレーションバッファ中の画素値Cdは、新たな画像データの画素値をCs、重み付け係数(透明度)をαとして、
← C + α×C
とする処理を行える。このアキュムレーションバッファをハードウェアで構成することによって、この積算処理を高速に行うことが可能である。
【0029】
重ね合わせ処理部25は、このアキュムレーションバッファを用いて、第1フレームバッファ22に格納されている画像データに、第2フレームバッファ24に格納されている画像データに所定の透明度を重み付けとして掛けた上で足し合わせて、これら2つの画像データを合成する。重ね合わされて生成された画像データは、画像表示装置2へと出力されて表示される。
【0030】
<処理フロー>
次に、図3,図4を用いて、画像生成装置1が行う処理の流れについて説明する。
【0031】
図3は、本実施形態に係る画像生成装置1が、特定の3次元オブジェクトが強調表示された画像を生成する処理の流れを示すフローチャートである。
【0032】
まず、第1描画部21が強調表示する3次元オブジェクトのデータをCPU13から取得し、この3次元データを元に画像データを生成して、生成された画像データを第1フレームバッファ22に格納する(S11)。ここで、第1描画部21によって生成され第1フレームバッファ22に格納された画像データを、C1と表す。
【0033】
次に、第2描画部23が強調表示しない3次元オブジェクトのデータをCPU13から取得し、この3次元データを元に画像データを生成して、生成された画像データを第2フレームバッファ24に格納する(S12)。ここで、第2描画部22によって生成され第2フレームバッファ24に格納された画像データを、C2と表す。
【0034】
以下、第1描画部21および第2描画部23が行う、3次元オブジェクトデータから画像データを生成してフレームバッファに格納する描画処理について説明する。図4は、第1描画部21および第2描画部23が行う描画処理の流れを示すフローチャートである。なお、以下の説明では、第1描画部21および第2描画部23は描画処理において基本的に同様の処理を行うため、両者を区別せずに描画部と呼ぶことにする。
【0035】
まず、描画部はフレームバッファを初期化する(S21)。すなわち、フレームバッファの各画素値にゼロを格納する。
【0036】
次に、描画部は、CPU13から、描画対象である3次元オブジェクト(ポリゴン等)のデータを取得する(S22)。3次元オブジェクトデータは、そのオブジェクトの3次元仮想空間上での位置・形状等の図形データを含む。また、描画部は、視点の位置、光源の数やその位置などのデータも取得する。
【0037】
そして、描画部は、取得した3次元オブジェクトデータを元に、座標変換処理やシェーディング、ライティングなどのレンダリング処理を行う(S23)。レンダリング処理の結果、画像内の各画素に表示される画素値が定まるので、描画部はフレームバッファにその画素値を格納する(S24)。この際、Zバッファ方を用いて陰線陰面消去処理を行うことで、ある3次元オブジェクトの後ろにある3次元オブジェクトが描画されないようにする。
【0038】
描画部は、全ての3次元オブジェクトについて描画処理が終了したか判定し(S25)、終了していない場合(S25−NO)にはS22に戻り次の3次元オブジェクトの描画処理を行う。全ての3次元オブジェクトについて描画処理が終了している場合(S25−YES)には、描画処理を終了する。
【0039】
このようにして、第1描画部21および第2描画部23は取得した3次元オブジェクトデータを元に画像データを生成して、生成された画像データをそれぞれ第1フレームバッファ22および第2フレームバッファ24に格納する。
【0040】
図3のフローチャートの説明に戻る。強調表示する3次元オブジェクトと強調表示しない3次元オブジェクトに対して描画処理が施され、生成された画像データがそれぞれが異なるフレームバッファに画像データに格納された後、重ね合わせ処理部25がこれらの画像データの重ね合わせをアキュムレーションバッファを用いて行う。重ね合わせ処理部25は、まず、アキュムレーションバッファ(ACM)を初期化する(S13)。すなわち、アキュムレーションバッファの各画素値にゼロを格納する。
【0041】
そして、重ね合わせ処理部25は、アキュムレーションバッファに、第1フレームバッファに格納されている画像データC1をコピー(ロード)する(S14)。この操作は、以下のように表される。
ACM ← C1
【0042】
次に、重ね合わせ処理部25は、アキュムレーションバッファに、第2フレームバッファに格納されている画像データC2に所定の透明度αを重み付け係数として掛けて足し合わせる(S15)。この操作は、以下のように表される。
ACM ← ACM + α×C2
なお、α=0は完全な透明であることを意味し、α=1は完全な不透明であることを意味する。
【0043】
なお、重み付け係数として使用される透明度αは、重ね合わせ処理部25がCPU13から取得しても良く、重ね合わせ処理部25があらかじめ保持していても良い。
【0044】
最後に、重ね合わせ処理部25は、2つの画像データを重ね合わせて生成した画像データを画像表示装置2に出力する(S16)。これによって、強調表示するべき3次元オブジェクトが通常に(透過表示されずに)表示され、その他の3次元オブジェクトが透過表示された画像が表示される。したがって、強調表示するべき特定の3次元オブジェクトが、他の3次元オブジェクトの背後に位置する場合であっても、隠されずに表示される。
【0045】
<動作例>
図5を用いて、本実施形態に係る画像生成装置1が特定の3次元オブジェクトを強調表示した画像を生成する処理の動作例を説明する。
【0046】
図5は、車両、人、建物等の3次元オブジェクトから構成されるシーン51から画像を生成する動作を説明する図である。ここで生成する画像は、ユーザに車両および人の位置を知らせるという目的のための生成される。したがって、画像生成装置1は、車両および人が建物等の背後に位置する場合であっても、ユーザが認識できるように強調して表示する。すなわち、画像生成装置1は、建物等を半透明に表示し、車両および人物を通常に(透過処理せずに)表示することで、車両および人物を強調表示する。
【0047】
画像生成装置1は、シーン51のうちから強調表示するべき3次元オブジェクト(すなわち、車両および人)に第1描画部21を用いて描画処理を施し、画像データ52を生成する。この画像データ52は第1フレームバッファ22に格納される。次に、画像生成装置1は、シーン51のうちから強調表示するべき3次元オブジェクト以外の3次元オブジェクト(すなわち、建物および木)に第2描画部23を用いて描画処理を施し、画像データ53を生成する。この画像データ53は第2フレームバッファ24に格納される。
【0048】
最後に、画像生成装置1は、重ね合わせ処理部25を用いて、画像データ52の上に、画像データ53を半透明に重ね合わせることで、車両および人が強調表示された画像データ54を生成する。
【0049】
<本実施形態の作用・効果>
本実施形態に係る画像生成装置1によれば、複数の3次元オブジェクトから構成される3次元画像において、特定の3次元オブジェクトを強調表示した画像を生成することが可能となる。この強調表示は、強調表示しない3次元オブジェクトを半透明で描画することによって実現されるが、半透明に重ね合わせる処理を実行する際にアキュムレーションバッファを用いることで、視点から遠い3次元オブジェクトから順番に描画する必要がなくなる。すなわち、視点からの位置計算および視点からの位置に基づいた描画順序のソート処理を省略することが可能となり、効率的な描画が実現できる。
【0050】
また、複数の3次元オブジェクトが異なるクライアント(プログラム)から同一の画面に描画される場合に、複数のオブジェクト間で奥行きの比較ができない場合がある。本実施形態に係る画像生成装置1では、オブジェクト間の奥行きの比較が必要でないので、このような場合であっても、他のオブジェクトを半透明表示にして特定のオブジェクトを強調表示した画像を生成することが可能である。
【0051】
また、強調表示する3次元オブジェクトと、強調表示しない3次元オブジェクトは、それぞれ通常の描画処理によって描画される。したがって、この描画処理においてはZバッファ法を用いた陰線陰面消去を行うことが可能である。
【0052】
さらに、強調表示したいオブジェクトだけが移動した場合など、強調表示したいオブジェクトのみを再描画したい場合には、第1描画部21のみが再描画処理を行って、再描画され第1フレームバッファ22に格納された画像データと、第2フレームバッファに格納されている画像データを、重ね合わせることで表示画像を得ることができる。すなわち、強調表示しないオブジェクトについての再描画処理を行う必要がない。これは、強調表示しないオブジェクトのみを再描画し、強調表示するオブジェクトに再描画の必要がない場合にも同様に当てはまる。
【0053】
<変形例>
本実施形態においては、第1描画部21、第2描画部23および重ね合わせ処理部25は、GPU11によってその機能が実現されたが、CPU13がプログラムを実行することによってその機能が実現されても良い。
【0054】
また、フレームバッファおよびアキュムレーションバッファは、専用の画像メモリ12内に設けられたが、主記憶装置14内のメモリを使用しても構わない。
【図面の簡単な説明】
【0055】
【図1】本実施形態に係る画像生成装置のハードウェア構成を示す図である。
【図2】本実施形態に係る画像生成装置の機能ブロックを示す図である。
【図3】本実施形態に係る画像生成装置の画像生成処理を示すフローチャートである。
【図4】本実施形態に係る画像生成装置の第1描画部21および第2描画部23が行う描画処理を示すフローチャートである。
【図5】本実施形態に係る画像生成装置の動作の例を説明する図である。
【符号の説明】
【0056】
1 画像生成装置
2 画像表示装置
11 GPU
12 画像メモリ
13 CPU
14 主記憶装置
21 第1描画部
22 第1フレームバッファ
23 第2描画部
24 第2フレームバッファ
25 重ね合わせ処理部



【特許請求の範囲】
【請求項1】
複数の3次元オブジェクトから画像を生成する画像生成装置であって、
前記複数の3次元オブジェクトのうち強調表示する3次元オブジェクトから第1の画像データを生成する第1の描画手段と、
前記複数の3次元オブジェクトのうち強調表示する3次元オブジェクト以外の3次元オブジェクトから第2の画像データを生成する第2の描画手段と、
前記第1の画像データに、前記第2の画像データを半透明に重ね合わせることで画像を生成する画像生成手段と、
を有することを特徴とする画像生成装置。
【請求項2】
第1のフレームバッファ、第2のフレームバッファおよびアキュムレーションバッファをさらに有し、
前記第1の描画手段は、生成した前記第1の画像データを前記第1のフレームバッファに格納し、
前記第2の描画手段は、生成した前記第2の画像データを前記第2のフレームバッファに格納し、
前記画像生成手段は、前記第1および第2のフレームバッファに格納された前記第1および第2の画像データを、前記アキュムレーションバッファを用いて重ね合わせること
を特徴とする請求項1に記載の画像生成装置。
【請求項3】
複数の3次元オブジェクトから画像を生成する画像生成方法であって、
情報処理装置が、
前記複数の3次元オブジェクトのうち強調表示する3次元オブジェクトから第1の画像データを生成し、
前記複数の3次元オブジェクトのうち強調表示する3次元オブジェクト以外の3次元オブジェクトから第2の画像データを生成し、
前記第1の画像データに、前記第2の画像データを半透明に重ね合わせることで画像を生成する
ことを特徴とする画像生成方法。
【請求項4】
前記情報処理装置は、第1のフレームバッファ、第2のフレームバッファおよびアキュムレーションバッファを有しており、
生成した前記第1の画像データを前記第1のフレームバッファに格納し、
生成した前記第2の画像データを前記第2のフレームバッファに格納し、
前記第1および第2のフレームバッファに格納された前記第1および第2の画像データを、前記アキュムレーションバッファを用いて重ね合わせること
を特徴とする請求項3に記載の画像生成方法。



【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2008−9895(P2008−9895A)
【公開日】平成20年1月17日(2008.1.17)
【国際特許分類】
【出願番号】特願2006−181911(P2006−181911)
【出願日】平成18年6月30日(2006.6.30)
【出願人】(502087460)株式会社トヨタIT開発センター (232)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】