(57)【要約】【課題】特定の３次元オブジェクトを強調表示した画像を容易に生成する技術を提供する。【解決手段】複数の３次元オブジェクトから画像を生成する画像生成装置であって、強調表示する３次元オブジェクトから画像データを生成して第１のフレームバッファに格納する第１の描画手段と、強調表示しない３次元オブジェクトから画像データを生成して第２のフレームバッファに格納する第２の描画手段と、第１のフレームバッファに格納された画像データの上に第２のフレームバッファに格納された画像データを半透明に重ね合わせることで特定の３次元オブジェクトが他の３次元オブジェクトに隠れず強調表示された表示画像を生成する画像生成手段とを有する。ここで、画像生成手段は、アキュムレーションバッファを用いて画像データを半透明に重ね合わせることが好ましい。【選択図】図２
2008009895.tif 000002
【特許請求の範囲】
【請求項１】
複数の３次元オブジェクトから画像を生成する画像生成装置であって、
前記複数の３次元オブジェクトのうち強調表示する３次元オブジェクトから第１の画像データを生成する第１の描画手段と、
前記複数の３次元オブジェクトのうち強調表示する３次元オブジェクト以外の３次元オブジェクトから第２の画像データを生成する第２の描画手段と、
前記第１の画像データに、前記第２の画像データを半透明に重ね合わせることで画像を生成する画像生成手段と、
を有することを特徴とする画像生成装置。
【請求項２】
第１のフレームバッファ、第２のフレームバッファおよびアキュムレーションバッファをさらに有し、
前記第１の描画手段は、生成した前記第１の画像データを前記第１のフレームバッファに格納し、
前記第２の描画手段は、生成した前記第２の画像データを前記第２のフレームバッファに格納し、
前記画像生成手段は、前記第１および第２のフレームバッファに格納された前記第１および第２の画像データを、前記アキュムレーションバッファを用いて重ね合わせること
を特徴とする請求項１に記載の画像生成装置。
【請求項３】
複数の３次元オブジェクトから画像を生成する画像生成方法であって、
情報処理装置が、
前記複数の３次元オブジェクトのうち強調表示する３次元オブジェクトから第１の画像データを生成し、
前記複数の３次元オブジェクトのうち強調表示する３次元オブジェクト以外の３次元オブジェクトから第２の画像データを生成し、
前記第１の画像データに、前記第２の画像データを半透明に重ね合わせることで画像を生成する
ことを特徴とする画像生成方法。
【請求項４】
前記情報処理装置は、第１のフレームバッファ、第２のフレームバッファおよびアキュムレーションバッファを有しており、
生成した前記第１の画像データを前記第１のフレームバッファに格納し、
生成した前記第２の画像データを前記第２のフレームバッファに格納し、
前記第１および第２のフレームバッファに格納された前記第１および第２の画像データを、前記アキュムレーションバッファを用いて重ね合わせること
を特徴とする請求項３に記載の画像生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３次元画像を生成する技術に関し、特に複数の３次元オブジェクトのうち特定の３次元オブジェクトが強調表示された画像を生成する技術に関する。
【背景技術】
【０００２】
３次元コンピュータグラフィックスは、仮想３次元空間において管理される３次元オブジェクトを、計算によってコンピュータのスクリーン平面に投影して描画を行う技術である。
【０００３】
３次元オブジェクトをスクリーン平面に投影する際に、複数のオブジェクトが同一の画素（ピクセル）に投影される場合がある。このような場合には、最も手前の（ユーザの視点に最も近い）オブジェクトを描画し、このオブジェクトの背後にある他のオブジェクトを描画しない必要がある。
【０００４】
このように最も手前のオブジェクトのみを描画する処理を、陰線陰面消去という。陰線陰面消去では、画素ごとに奥行き情報を格納するＺバッファを利用して最も手前のオブジェクトの描画を行うＺバッファ法を用いることが一般的である（非特許文献１）。
【０００５】
ただし、このように複数のオブジェクトを重ね合わせて描画する場合に、必ずしも最も手前にあるオブジェクトのみが描画されるというわけではない。例えば、水や雲、霧といった半透明のオブジェクトを表現する場合には、これらのオブジェクトの背後に位置するオブジェクトが透けて見えるように描画される必要がある。あるいは、本来は手前のオブジェクトによって隠れてしまうオブジェクトであっても、その存在がユーザに分かるように手前にあるオブジェクトを半透明にし、強調表示したいオブジェクトが見えるように描画する場合もある。
【０００６】
このような半透明オブジェクトの描画は、従来は、アルファ値（透明度）を用いたアルファブレンディングと呼ばれる手法によって行われている。アルファブレンディングでは、すでに描かれているオブジェクトの色に新しく描くオブジェクトの色を合成する際に、新しいオブジェクトの色に透明度を表すアルファ値（０が完全な透明、１が完全な不透明）を重み付け係数として掛けて、既に描かれているオブジェクトの色に足し合わせる。このようにして、半透明なオブジェクトを表現することができる。
【０００７】
ところで、画像データを格納するバッファの１つとして、アキュムレーションバッファと呼ばれるものが知られている（非特許文献２）。アキュムレーションバッファは、すでに格納された画像データ（画素値）に、新たな画像データを足し合わせる処理を高速に処理することが可能なバッファである。アキュムレーションバッファを用いて、画像データを足し合わせる際には、既存の画像データと新しく足し合わせる画像データとを、重み付け係数を指定してどのような割合で足し合わせるか指定することができる。
【０００８】
アキュムレーションバッファは、例えば、画像のギザギザ（ジャギー）を目立たなくさせるアンチエイリアシング処理、動きのある物体を表現するためのモーションブラーなどに用いられる。また、実写画像とＣＧ画像を合成する際に、違和感を感じさせないようにＣＧ画像に対して適度な暈けを生じさせるためにアキュムレーションバッファを利用する技術が開示されている（特許文献１）。
【特許文献１】特許第３４５０８３３号公報
【非特許文献１】Mason Woo、他３名、「ＯｐｅｎＧＬ  プログラミングガイド」、第２版、ピアソン・エデュケーション、２００２年４月
【非特許文献２】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.
【発明の開示】
【発明が解決しようとする課題】
【０００９】
３次元オブジェクトを描画する場合に、他のオブジェクトの背後に位置し、本来であれば陰線陰面消去処理によって描画されないオブジェクトであっても、そのオブジェクトの重要度に応じて故意に強調して表示したい場合がある。このような場合には、強調表示したいオブジェクトよりも手前にある（視点に近い位置にある）オブジェクトを半透明描画することで、対象のオブジェクトを強調表示する。
【００１０】
このような半透明描画では、上述のアルファブレンディングを用いる。しかし、アルファブレンディングにおいては、重ね合わせて表示する複数のオブジェクトの描画順序（重ね合わせる順序）が重要となる。既に描画されたオブジェクトの上に、新たなオブジェクトに透明度をかけて重ね合わせるため、最も奥にあるオブジェクトから順番に重ね合わせる必要がある。つまり、描画しようとする全てのオブジェクトに対して、視点からの位置を計算し、これにしたがってより遠くに存在するオブジェクトから描画しなければならない。このように複数のオブジェクトを重ね合わせる処理には計算コストがかかるという問題がある。
【００１１】
また、複数のクライアント（プログラム）から同一の３次元空間上にオブジェクトを描画したい場合がある。このような場合、異なるクライアントが描画するオブジェクト間で奥行きを比較することができないので、視点に遠いオブジェクトから描画することができないという問題もある。
【００１２】
本発明は上記実情に鑑みてなされたものであって、その目的とするところは、複数の３次元オブジェクトのうち一部の３次元オブジェクトを強調表示する処理を効率的に行うことのできる技術を提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するために本発明では、以下の手段または処理によって、複数の３次元オブジェクトから構成される３次元画像において、特定の３次元オブジェクトが強調表示された画像を生成する。本発明は、複数の３次元オブジェクトから画像を生成する画像生成装置であって、第１の描画手段と第２の描画手段と画像生成手段とを有する。
【００１４】
第１の描画手段は、複数の３次元オブジェクトのうち強調表示する３次元オブジェクトから画像データ（第１の画像データ）を生成する。生成した第１の画像データを第１のフレームバッファに格納することが好ましい。また、第２の描画手段は、複数の３次元オブジェクトのうち強調表示する３次元オブジェクト以外の３次元オブジェクトから画像データ（第２の画像データ）を生成する。生成した第２の画像データを第２のフレームバッファに格納することが好ましい。
【００１５】
各描画手段が行う３次元オブジェクトから画像データを生成する処理は、既存のどのような技術により行われても良い。すなわち、描画手段は、３次元オブジェクトの形状や位置を元に計算によってスクリーン平面上に投影された画像を生成する。ここで、各描画手段は、陰面消去のためにＺバッファを用いることが好ましい。
【００１６】
そして、画像生成手段は、第１のフレームバッファに格納された第１の画像データと第
２のフレームバッファに格納された第２の画像データとを重ね合わせることで、表示すべき画像を生成する。ここで、画像生成手段は、第１の画像データに対して、第２の画像データを半透明にして重ね合わせることで、第１の画像データが強調表示された表示画像を生成する。画像生成手段は、アキュムレーションバッファを用いて、第１の画像データと第２の画像データの重ね合わせを行うことが好ましい。特に、画像生成手段は、アキュムレーションバッファに第１の画像データを格納し、所定の透明度を重み付け係数として掛けた第２の画像データを足し合わせることで表示画像を生成することが好ましい。
【００１７】
このように、本発明では、強調表示したい３次元オブジェクトとそれ以外の３次元オブジェクトを別々に描画してから、強調表示する画像に強調表示しない画像を半透明に重ね合わせることで、特定の３次元オブジェクトが強調表示された画像を生成している。このように、強調表示する３次元オブジェクトとそれ以外の３次元オブジェクトを別々に描画することで、半透明に重ね合わせる際に、視点の位置から遠くにある３次元オブジェクトから描画する必要がなくなる。つまり、それぞれにオブジェクトについて奥行きを計算してソートする処理を省くことができ、効率的な画像生成が可能となる。
【００１８】
なお、本発明は、上記手段の少なくとも一部を含む画像生成装置として捉えることができる。また、本発明は、上記処理の少なくとも一部を含む画像生成方法、または、かかる方法を実現するためのプログラムとして捉えることもできる。上記手段および処理の各々は可能な限り互いに組み合わせて本発明を構成することができる。
【発明の効果】
【００１９】
本発明によれば、複数の３次元オブジェクトのうち一部の３次元オブジェクトを強調表示する処理を効率的に行うことが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。
【００２１】
＜構成＞
図１は、本発明の実施形態である画像生成装置１のハードウェア構成を示す図である。本実施形態に係る画像生成装置１は、複数の３次元オブジェクトのうち特定のオブジェクトのみを通常に描画し、その他のオブジェクトを半透明に描画することで、特定のオブジェクトを強調表示した画像を生成する。画像生成装置１によって生成された画像は、画像表示装置２に表示される。
【００２２】
本実施形態に係る画像生成装置１は、グラフィックチップ（ＧＰＵ）１１，画像メモリ１２，ＣＰＵ１３、主記憶装置１４から構成される。
【００２３】
画像メモリ１２は、読み書き可能なメモリであり、画像データを格納する２つのフレームバッファと画像データの積算処理に用いられるアキュムレーションバッファを有する。なお、本実施形態においては、画像メモリ１２は、主記憶装置１４とは独立したメモリであり、画像処理のために専用で使用されるメモリである。
【００２４】
ＧＰＵ１１は、画像表示処理を担う半導体チップである。ＧＰＵ１１は、ＣＰＵ１３から３次元オブジェクトデータを受け取り、３次元座標から２次元座標への座標変換処理や、画像データを生成するレンダリング（描画）処理に特化した半導体チップである。ＧＰＵ１１は、画像メモリ１２内の２つのフレームバッファに格納された画像を重ね合わせて、最終的な表示画像を生成し、画像表示装置２に出力する。
【００２５】
図２は、画像生成装置１の機能ブロックを示す図である。第１描画部２１は、入力され
た強調表示する３次元オブジェクトのデータをレンダリングして画像データを生成し、生成した画像データを第１フレームバッファ２２に格納する。第１描画部２１は、ポリゴンなどの３次元オブジェクトの頂点座標をスクリーン平面に投影する座標変換処理や、スクリーン座標系に投影された頂点内部の画素値を求める処理を行う。なお、第１描画部２１は、各画素に対応する点の奥行きも計算し、描画する３次元オブジェクトのうちで一番手前のオブジェクトの画素値をその画素の画像データとする。本実施形態においては、この陰線陰面消去はＺバッファを用いて行う。
【００２６】
第２描画部２３は、入力された３次元オブジェクトのデータをレンダリングして画像データを生成し、生成した画像データを第２フレームバッファ２４に格納する。第２描画部２３は、基本的に第１描画部２１と同様であるため詳細な説明は省略する。
【００２７】
なお、第１描画部２１には強調表示する３次元オブジェクトデータが、第２描画部２３にはそれ以外の３次元オブジェクトデータが入力される。本実施形態においては、第１描画部２１と第２描画部２３はＧＰＵ１１によってその機能が実現される。また、第１描画部２１および第２描画部２３にデータを入力するのは、ＣＰＵ１３上で実行しているプログラムである。ここで、第１描画部２１に３次元オブジェクトデータを入力するプログラムと、第２描画部２３に３次元オブジェクトデータを入力するプログラムは同一のものであっても異なるもの（プログラム自体は同一であっても異なるプロセスとして実行される場合も含む）であっても良い。
【００２８】
重ね合わせ処理部（画像生成手段）２５は、アキュムレーションバッファを利用して第１フレームバッファ２２と第２フレームバッファ２４に格納された画像データの合成を行う。ここで、アキュムレーションバッファについて説明する。アキュムレーションバッファは、画像データを格納可能なバッファ（メモリ）であるが、格納している画像データに新たな画像データを足し合わせる処理が可能である。新たな画像データを足し合わせる際に、所定の重み付け係数を掛けて足し合わせることが可能である。すなわち、アキュムレーションバッファ中の画素値Ｃｄは、新たな画像データの画素値をＣｓ、重み付け係数（透明度）をαとして、
Ｃｄ  ←  Ｃｄ  ＋  α×Ｃｓ
とする処理を行える。このアキュムレーションバッファをハードウェアで構成することによって、この積算処理を高速に行うことが可能である。
【００２９】
重ね合わせ処理部２５は、このアキュムレーションバッファを用いて、第１フレームバッファ２２に格納されている画像データに、第２フレームバッファ２４に格納されている画像データに所定の透明度を重み付けとして掛けた上で足し合わせて、これら２つの画像データを合成する。重ね合わされて生成された画像データは、画像表示装置２へと出力されて表示される。
【００３０】
＜処理フロー＞
次に、図３，図４を用いて、画像生成装置１が行う処理の流れについて説明する。
【００３１】
図３は、本実施形態に係る画像生成装置１が、特定の３次元オブジェクトが強調表示された画像を生成する処理の流れを示すフローチャートである。
【００３２】
まず、第１描画部２１が強調表示する３次元オブジェクトのデータをＣＰＵ１３から取得し、この３次元データを元に画像データを生成して、生成された画像データを第１フレームバッファ２２に格納する（Ｓ１１）。ここで、第１描画部２１によって生成され第１フレームバッファ２２に格納された画像データを、Ｃ１と表す。
【００３３】
次に、第２描画部２３が強調表示しない３次元オブジェクトのデータをＣＰＵ１３から取得し、この３次元データを元に画像データを生成して、生成された画像データを第２フレームバッファ２４に格納する（Ｓ１２）。ここで、第２描画部２２によって生成され第２フレームバッファ２４に格納された画像データを、Ｃ２と表す。
【００３４】
以下、第１描画部２１および第２描画部２３が行う、３次元オブジェクトデータから画像データを生成してフレームバッファに格納する描画処理について説明する。図４は、第１描画部２１および第２描画部２３が行う描画処理の流れを示すフローチャートである。なお、以下の説明では、第１描画部２１および第２描画部２３は描画処理において基本的に同様の処理を行うため、両者を区別せずに描画部と呼ぶことにする。
【００３５】
まず、描画部はフレームバッファを初期化する（Ｓ２１）。すなわち、フレームバッファの各画素値にゼロを格納する。
【００３６】
次に、描画部は、ＣＰＵ１３から、描画対象である３次元オブジェクト（ポリゴン等）のデータを取得する（Ｓ２２）。３次元オブジェクトデータは、そのオブジェクトの３次元仮想空間上での位置・形状等の図形データを含む。また、描画部は、視点の位置、光源の数やその位置などのデータも取得する。
【００３７】
そして、描画部は、取得した３次元オブジェクトデータを元に、座標変換処理やシェーディング、ライティングなどのレンダリング処理を行う（Ｓ２３）。レンダリング処理の結果、画像内の各画素に表示される画素値が定まるので、描画部はフレームバッファにその画素値を格納する（Ｓ２４）。この際、Ｚバッファ方を用いて陰線陰面消去処理を行うことで、ある３次元オブジェクトの後ろにある３次元オブジェクトが描画されないようにする。
【００３８】
描画部は、全ての３次元オブジェクトについて描画処理が終了したか判定し（Ｓ２５）、終了していない場合（Ｓ２５−ＮＯ）にはＳ２２に戻り次の３次元オブジェクトの描画処理を行う。全ての３次元オブジェクトについて描画処理が終了している場合（Ｓ２５−ＹＥＳ）には、描画処理を終了する。
【００３９】
このようにして、第１描画部２１および第２描画部２３は取得した３次元オブジェクトデータを元に画像データを生成して、生成された画像データをそれぞれ第１フレームバッファ２２および第２フレームバッファ２４に格納する。
【００４０】
図３のフローチャートの説明に戻る。強調表示する３次元オブジェクトと強調表示しない３次元オブジェクトに対して描画処理が施され、生成された画像データがそれぞれが異なるフレームバッファに画像データに格納された後、重ね合わせ処理部２５がこれらの画像データの重ね合わせをアキュムレーションバッファを用いて行う。重ね合わせ処理部２５は、まず、アキュムレーションバッファ（ＡＣＭ）を初期化する（Ｓ１３）。すなわち、アキュムレーションバッファの各画素値にゼロを格納する。
【００４１】
そして、重ね合わせ処理部２５は、アキュムレーションバッファに、第１フレームバッファに格納されている画像データＣ１をコピー（ロード）する（Ｓ１４）。この操作は、以下のように表される。
ＡＣＭ  ←  Ｃ１
【００４２】
次に、重ね合わせ処理部２５は、アキュムレーションバッファに、第２フレームバッファに格納されている画像データＣ２に所定の透明度αを重み付け係数として掛けて足し合わせる（Ｓ１５）。この操作は、以下のように表される。
ＡＣＭ  ← ＡＣＭ ＋ α×Ｃ２
なお、α＝０は完全な透明であることを意味し、α＝１は完全な不透明であることを意味する。
【００４３】
なお、重み付け係数として使用される透明度αは、重ね合わせ処理部２５がＣＰＵ１３から取得しても良く、重ね合わせ処理部２５があらかじめ保持していても良い。
【００４４】
最後に、重ね合わせ処理部２５は、２つの画像データを重ね合わせて生成した画像データを画像表示装置２に出力する（Ｓ１６）。これによって、強調表示するべき３次元オブジェクトが通常に（透過表示されずに）表示され、その他の３次元オブジェクトが透過表示された画像が表示される。したがって、強調表示するべき特定の３次元オブジェクトが、他の３次元オブジェクトの背後に位置する場合であっても、隠されずに表示される。
【００４５】
＜動作例＞
図５を用いて、本実施形態に係る画像生成装置１が特定の３次元オブジェクトを強調表示した画像を生成する処理の動作例を説明する。
【００４６】
図５は、車両、人、建物等の３次元オブジェクトから構成されるシーン５１から画像を生成する動作を説明する図である。ここで生成する画像は、ユーザに車両および人の位置を知らせるという目的のための生成される。したがって、画像生成装置１は、車両および人が建物等の背後に位置する場合であっても、ユーザが認識できるように強調して表示する。すなわち、画像生成装置１は、建物等を半透明に表示し、車両および人物を通常に（透過処理せずに）表示することで、車両および人物を強調表示する。
【００４７】
画像生成装置１は、シーン５１のうちから強調表示するべき３次元オブジェクト（すなわち、車両および人）に第１描画部２１を用いて描画処理を施し、画像データ５２を生成する。この画像データ５２は第１フレームバッファ２２に格納される。次に、画像生成装置１は、シーン５１のうちから強調表示するべき３次元オブジェクト以外の３次元オブジェクト（すなわち、建物および木）に第２描画部２３を用いて描画処理を施し、画像データ５３を生成する。この画像データ５３は第２フレームバッファ２４に格納される。
【００４８】
最後に、画像生成装置１は、重ね合わせ処理部２５を用いて、画像データ５２の上に、画像データ５３を半透明に重ね合わせることで、車両および人が強調表示された画像データ５４を生成する。
【００４９】
＜本実施形態の作用・効果＞
本実施形態に係る画像生成装置１によれば、複数の３次元オブジェクトから構成される３次元画像において、特定の３次元オブジェクトを強調表示した画像を生成することが可能となる。この強調表示は、強調表示しない３次元オブジェクトを半透明で描画することによって実現されるが、半透明に重ね合わせる処理を実行する際にアキュムレーションバッファを用いることで、視点から遠い３次元オブジェクトから順番に描画する必要がなくなる。すなわち、視点からの位置計算および視点からの位置に基づいた描画順序のソート処理を省略することが可能となり、効率的な描画が実現できる。
【００５０】
また、複数の３次元オブジェクトが異なるクライアント（プログラム）から同一の画面に描画される場合に、複数のオブジェクト間で奥行きの比較ができない場合がある。本実施形態に係る画像生成装置１では、オブジェクト間の奥行きの比較が必要でないので、このような場合であっても、他のオブジェクトを半透明表示にして特定のオブジェクトを強調表示した画像を生成することが可能である。
【００５１】
また、強調表示する３次元オブジェクトと、強調表示しない３次元オブジェクトは、それぞれ通常の描画処理によって描画される。したがって、この描画処理においてはＺバッファ法を用いた陰線陰面消去を行うことが可能である。
【００５２】
さらに、強調表示したいオブジェクトだけが移動した場合など、強調表示したいオブジェクトのみを再描画したい場合には、第１描画部２１のみが再描画処理を行って、再描画され第１フレームバッファ２２に格納された画像データと、第２フレームバッファに格納されている画像データを、重ね合わせることで表示画像を得ることができる。すなわち、強調表示しないオブジェクトについての再描画処理を行う必要がない。これは、強調表示しないオブジェクトのみを再描画し、強調表示するオブジェクトに再描画の必要がない場合にも同様に当てはまる。
【００５３】
＜変形例＞
本実施形態においては、第１描画部２１、第２描画部２３および重ね合わせ処理部２５は、ＧＰＵ１１によってその機能が実現されたが、ＣＰＵ１３がプログラムを実行することによってその機能が実現されても良い。
【００５４】
また、フレームバッファおよびアキュムレーションバッファは、専用の画像メモリ１２内に設けられたが、主記憶装置１４内のメモリを使用しても構わない。
【図面の簡単な説明】
【００５５】
【図１】本実施形態に係る画像生成装置のハードウェア構成を示す図である。
【図２】本実施形態に係る画像生成装置の機能ブロックを示す図である。
【図３】本実施形態に係る画像生成装置の画像生成処理を示すフローチャートである。
【図４】本実施形態に係る画像生成装置の第１描画部２１および第２描画部２３が行う描画処理を示すフローチャートである。
【図５】本実施形態に係る画像生成装置の動作の例を説明する図である。
【符号の説明】
【００５６】
１      画像生成装置
２      画像表示装置
１１    ＧＰＵ
１２    画像メモリ
１３    ＣＰＵ
１４    主記憶装置
２１    第１描画部
２２    第１フレームバッファ
２３    第２描画部
２４    第２フレームバッファ
２５    重ね合わせ処理部
【図１】
2008009895.tif 000003
【図２】
2008009895.tif 000004
【図３】
2008009895.tif 000005
【図４】
2008009895.tif 000006
【図５】
2008009895.tif 000007