(57)【要約】【課題】  視覚表現形式が異なるオブジェクトが混在するようなシーンにおいても、オブジェクトに対する視覚表現形式毎に描画順序や描画方法を考慮せずに、各オブジェクトの描画を行うことを可能にすること。【解決手段】  同じ描画方法で描画されるオブジェクトの集合を仮想空間を構成する各オブジェクトから特定して、特定した集合に含まれるオブジェクトにより形成される階層構造を生成し（Ｓ２０６）、特定した集合に含まれる各オブジェクトを、この集合に含まれる各オブジェクトに共通の描画方法により、生成した階層構造に従って描画する（Ｓ２０７〜Ｓ２０９）。【選択図】  図２
2005149209.tif 000002
【特許請求の範囲】
【請求項１】
現実空間に重畳するための仮想空間の画像を生成する複合現実感提示方法であって、
仮想空間を構成する各オブジェクトを描画する際の描画方法を示すデータを保持する第１の保持工程と、
前記仮想空間を構成する各オブジェクト間の階層構造を示すデータを保持する第２の保持工程と、
前記第１の保持工程で保持しているデータを参照して、同じ描画方法で描画されるオブジェクトの集合を、前記仮想空間を構成する各オブジェクトから特定する特定工程と、
前記第２の保持工程で保持しているデータを参照して、前記特定工程で特定した集合に含まれるオブジェクトにより形成される階層構造を生成する生成工程と、
前記特定工程で特定した集合に含まれる各オブジェクトを、当該集合に含まれる各オブジェクトに共通の描画方法により、前記生成工程で生成した階層構造に従って描画する描画工程とを備え、
前記生成工程、前記描画工程による処理を、前記特定工程で特定した１つ以上の集合毎に行うことを特徴とする複合現実感提示方法。
【請求項２】
前記第１の保持工程では、
ｚバッファにオブジェクトの画像の各画素に対応するｚ座標値を記録する第１の描画方法、
前記フレームバッファにオブジェクトの画像を描画する際に、当該画像を構成する各画素のｚ座標値と、ｚバッファに保持されているデータが示すｚ座標値とを比較し、より視点位置に近いｚ座標値を有する画素のみを前記フレームバッファに描画すると共に、当該画素のｚ座標値をｚバッファに記録する第２の描画方法、
前記フレームバッファにオブジェクトの画像を描画する際に、当該画像と先に前記フレームバッファに描画されている画像とのブレンディング処理を行うことで、前記オブジェクトの画像を描画する第３の描画方法
のうち少なくとも１つ以上の描画方法を示すデータが前記仮想空間を構成する各オブジェクトについて保持しており、
前記生成工程では前記第１の保持工程で保持されているデータを参照して、前記仮想空間を構成する各オブジェクトの描画方法が前記第１乃至３の描画方法の何れであるかを判断することにより、同じ描画方法で描画されるオブジェクトの集合を特定することを特徴とする請求項１に記載の複合現実感提示方法。
【請求項３】
更に、前記仮想空間を構成する各オブジェクトの内、１つ以上のオブジェクトの描画方法を示すデータを変更する変更工程を備えることを特徴とする請求項１に記載の複合現実感提示方法。
【請求項４】
現実空間に重畳するための仮想空間の画像を生成する複合現実感提示装置であって、
仮想空間を構成する各オブジェクトを描画する際の描画方法を示すデータを保持する第１の保持手段と、
前記仮想空間を構成する各オブジェクト間の階層構造を示すデータを保持する第２の保持手段と、
前記第１の保持手段が保持しているデータを参照して、同じ描画方法で描画されるオブジェクトの集合を、前記仮想空間を構成する各オブジェクトから特定する特定手段と、
前記第２の保持手段が保持しているデータを参照して、前記特定手段が特定した集合に含まれるオブジェクトにより形成される階層構造を生成する生成手段と、
前記特定手段が特定した集合に含まれる各オブジェクトを、当該集合に含まれる各オブジェクトに共通の描画方法により、前記生成手段が生成した階層構造に従って描画する描画手段とを備え、
前記生成手段、前記描画手段による処理を、前記特定手段が特定した１つ以上の集合毎に行うことを特徴とする複合現実感提示装置。
【請求項５】
コンピュータに請求項１乃至３の何れか１項に記載の複合現実感提示方法を実行させることを特徴とするプログラム。
【請求項６】
請求項５に記載のプログラムを格納することを特徴とする、コンピュータ読み取り可能な記憶媒体。
【請求項７】
現実世界の映像を撮影し取り込む実写画像入力ステップと、
仮想世界を構成するために必要なCGオブジェクトデータおよびシーンデータを保持する仮想空間情報記憶ステップと、
CGオブジェクトを描画する際の視覚表現形式に関する情報を保持する視覚表現形式記憶ステップと、
利用者がCGオブジェクトに対して視覚表現形式を任意に変更させるための視覚表現形式設定ステップと、
仮想空間情報記憶ステップ、視覚表現形式記憶ステップ、視覚表現形式設定ステップの情報を元に、視覚表現に応じてCGオブジェクトの描画手段を適切に選択するシーングラフマルチパス描画ステップと、
実写画像入力部から入力された現実世界の画像を描画する実写画像描画ステップと、
マスク形式のCGオブジェクトを描画するマスクオブジェクト描画ステップと、
ノーマル形式のCGオブジェクトを描画するノーマルオブジェクト描画ステップと、
半透過形式のCGオブジェクトを描画する半透過オブジェクト描画ステップと、
利用者に現実世界画像と仮想世界画像とを合成した画像を提示する画像表示ステップと
を備えることを特徴とする複合現実感方法。
【請求項８】
前記視覚表現形式記憶ステップは、前記CGオブジェクトの視覚表現形式を識別するための情報を保持することを特徴とする請求項７に記載の複合現実感方法。
【請求項９】
前記マスクオブジェクト描画ステップは、フレームバッファの更新を行わず、Zバッファの更新を行うことを特徴とする請求項７に記載の複合現実感方法。
【請求項１０】
前記半透過オブジェクト描画ステップは、Zバッファの更新を行わず、フレームバッファの更新を行うことを特徴とする請求項７に記載の複合現実感方法。
【請求項１１】
前記半透過オブジェクト描画ステップは、更新前の描画対象領域の画素値とCGオブジェクトの画素値とを加算することによって、描画対象領域に描画される画素値を定め、フレームバッファの更新を行うことを特徴とする請求項７に記載の複合現実感方法。
【請求項１２】
前記シーングラフマルチパス描画ステップは、シーン全体を表現するシーングラフから視覚表現形式別にシーングラフを再構成することを特徴とする請求項７に記載の複合現実感方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、観察者に複合現実感を提示するために、現実空間に重畳させるための仮想空間の画像を生成する技術に関するものである。
【背景技術】
【０００２】
現実世界と仮想世界とを違和感なく自然に結合する複合現実感（MR: Mixed Reality）の技術を応用した装置が盛んに提案されている。これらの複合現実感提示装置は、カメラなどの撮像装置によって撮影した現実空間の画像に対し、コンピュータグラフィックス（CG: Computer Graphics）で描画した仮想空間の画像を結合し、使用者に提示している。
【０００３】
複合現実感を提示する装置では、まず現実世界の実写画像を背景として描画し、その上から仮想世界を構成するCGオブジェクトを描画して合成する方法が一般的に用いられている。しかし、この方法では、常に現実世界の手前に仮想世界が存在するように描画されてしまうため、現実世界の物体が仮想世界を隠蔽するような場合には適切な表現が行えない。
【０００４】
そこで、現実世界の物体（現実物体）をあらかじめモデリングしておき、CGオブジェクトとして扱うということが行われる。そして、仮想CGオブジェクトを描画する前に現実物体のCGオブジェクトの描画を行うのであるが、現実物体のCGオブジェクトについてはフレームバッファには描画せず、Zバッファにのみ描画を行う。この処理によって、仮想CGオブジェクトを描画するときに、仮想CGオブジェクトと現実物体のCGオブジェクトとの奥行き判定が行われ、仮想世界のCGオブジェクトが現実物体のCGオブジェクトよりも奥に存在する部分については、フレームバッファへの描画が行われない。
【０００５】
そのため、あたかも現実世界の物体が仮想世界を遮蔽しているかのように表現することができる。特にここでは、この現実物体のCGオブジェクトをマスクオブジェクト、マスクオブジェクトの見え方の特性である視覚表現形式をマスク形式と呼ぶ。一方、通常の仮想CGオブジェクトの視覚表現形式をノーマル形式と呼ぶ。
【０００６】
通常、Zバッファでの奥行き判定が行われた後にフレームバッファへの描画が行われるため、Zバッファのみを更新するマスクオブジェクトの描画と、フレームバッファとZバッファの双方を更新する仮想CGオブジェクトの描画とを同時に行うことはできず、二度に分けて描画を行う必要がある。また、仮想CGオブジェクトとマスクオブジェクトを描画する際には、必ずマスクオブジェクト、仮想CGオブジェクトの順に描画を行わなければ所望の結果を得ることができない。
【０００７】
また、現実または仮想のガラス等の反射物への仮想CGオブジェクトの写り込みを表現したり、光学シースルー型のヘッドアップディスプレイといった表示装置を模擬して仮想CGオブジェクトを描画するような場合には、Zバッファには描画を行わず、フレームバッファのみに描画を行う。特にここでは、このような方式で描画されるCGオブジェクトを半透過オブジェクト、半透過オブジェクトの視覚表現形式を半透過形式と呼ぶ。
【０００８】
半透過オブジェクトの描画には、通常、アルファブレンドと呼ばれる手法が用いられる。これは、半透過CGオブジェクトに予めアルファ値と呼ばれる透過係数を設定しておき、フレームバッファの更新を行う際に、更新前の描画対象領域の画素値と半透過CGオブジェクトの画素値とをアルファ値に応じた比率で合成することによって半透明のCGオブジェクトを描画する方法である。しかし、反射物体への仮想CGオブジェクトの写り込みや、光学シースルー型の表示装置を模擬するような表示を行う場合、アルファブレンドによる合成方法では写実性に欠けるという問題があった。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
通常の仮想CGオブジェクト、マスクオブジェクト、半透過オブジェクトが同一のシーンに混在しているような場合、通常は、Zバッファでの奥行き判定が行われた後にフレームバッファへの描画が行われるため、Zバッファのみを更新するマスクオブジェクトの描画と、フレームバッファとZバッファの双方を更新する仮想CGオブジェクトの描画およびフレームバッファのみを更新する半透過オブジェクトの描画とを同時に行うことはできず、複数回に分けて描画を行う必要がある。
【００１０】
また、描画の順序についても考慮しなければならない。例えば、通常の仮想CGオブジェクトとマスクオブジェクトとが同一のシーンに存在している場合においては、フレームバッファへの描画時に、これまでにZバッファに描画された結果を用いてCGオブジェクトの陰面消去を行うため、必ずマスクオブジェクトを先に描画しなければならない。この描画順を逆にした場合には、マスクオブジェクトによる現実世界の隠蔽が正しく行われない。また、通常の仮想CGオブジェクトと半透過オブジェクトとが同一のシーンに存在している場合、半透過オブジェクトの描画の際には、フレームバッファに描画された画像の画素値を参照するので、必ず通常の仮想CGオブジェクトを先に描画しなければならない。この描画順を逆にした場合には、半透過オブジェクトが他のオブジェクトに遮蔽されてしまう。
【００１１】
すなわち、上記３種類のオブジェクトが混在するシーンにおいては、マスクオブジェクト、通常の仮想CGオブジェクト、半透過オブジェクトの順に描画を行わなければならない。また、三者はそれぞれ描画を行うバッファが異なっているため、描画対象となるオブジェクトに応じて独立に描画処理を行う必要がある。
【００１２】
このため、従来装置においては、描画するオブジェクトの見え方の特性である視覚表現形式に合わせて描画順序および描画方法を考慮した上で、使用者が独立にオブジェクトの描画を行うような機構を別途作る必要があるため、使用者に高度な知識と膨大な手間を要求するものであった。
【００１３】
本発明は以上の問題に鑑みてなされたものであり、視覚表現形式が異なるオブジェクトが混在するようなシーンにおいても、オブジェクトに対する視覚表現形式毎に描画順序や描画方法を考慮せずに、各オブジェクトの描画を行うことを可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の目的を達成するために、例えば本発明の複合現実感提示方法は以下の構成を備える。
【００１５】
即ち、現実空間に重畳するための仮想空間の画像を生成する複合現実感提示方法であって、
仮想空間を構成する各オブジェクトを描画する際の描画方法を示すデータを保持する第１の保持工程と、
前記仮想空間を構成する各オブジェクト間の階層構造を示すデータを保持する第２の保持工程と、
前記第１の保持工程で保持しているデータを参照して、同じ描画方法で描画されるオブジェクトの集合を、前記仮想空間を構成する各オブジェクトから特定する特定工程と、
前記第２の保持工程で保持しているデータを参照して、前記特定工程で特定した集合に含まれるオブジェクトにより形成される階層構造を生成する生成工程と、
前記特定工程で特定した集合に含まれる各オブジェクトを、当該集合に含まれる各オブジェクトに共通の描画方法により、前記生成工程で生成した階層構造に従って描画する描画工程とを備え、
前記生成工程、前記描画工程による処理を、前記特定工程で特定した１つ以上の集合毎に行うことを特徴とする。
【００１６】
本発明の目的を達成するために、例えば本発明の複合現実感提示装置は以下の構成を備える。
【００１７】
即ち、現実空間に重畳するための仮想空間の画像を生成する複合現実感提示装置であって、
仮想空間を構成する各オブジェクトを描画する際の描画方法を示すデータを保持する第１の保持手段と、
前記仮想空間を構成する各オブジェクト間の階層構造を示すデータを保持する第２の保持手段と、
前記第１の保持手段が保持しているデータを参照して、同じ描画方法で描画されるオブジェクトの集合を、前記仮想空間を構成する各オブジェクトから特定する特定手段と、
前記第２の保持手段が保持しているデータを参照して、前記特定手段が特定した集合に含まれるオブジェクトにより形成される階層構造を生成する生成手段と、
前記特定手段が特定した集合に含まれる各オブジェクトを、当該集合に含まれる各オブジェクトに共通の描画方法により、前記生成手段が生成した階層構造に従って描画する描画手段とを備え、
前記生成手段、前記描画手段による処理を、前記特定手段が特定した１つ以上の集合毎に行うことを特徴とする。
【発明の効果】
【００１８】
本発明の構成により、視覚表現形式が異なるオブジェクトが混在するようなシーンにおいても、オブジェクトに対する視覚表現形式毎に描画順序や描画方法を考慮せずに、各オブジェクトの描画を行うことを可能にすることができる。
【発明を実施するための最良の形態】
【００１９】
以下、添付の図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００２０】
［第１の実施形態］
図５は、本実施形態に係る複合現実感提示装置として機能するコンピュータの基本構成を示す図である。
【００２１】
５０１はＣＰＵで、ＲＡＭ５０２やＲＯＭ５０３に格納されているプログラムやデータを用いて本装置全体の制御を行うと共に、後述する仮想空間の画像の生成処理、現実空間との重畳処理（詳しくは後述するが、場合によってはこの処理は行わなくても良い）などを実行する。
【００２２】
５０２はＲＡＭで、外部記憶装置５０７や記憶媒体ドライブ装置５０８からロードされたプログラムやデータを一時的に記憶するためのエリアを備えると共に、ＣＰＵ５０１が各種の処理を行うために用いるワークエリアも備える。尚、本実施形態では、このＲＡＭ５０２にはフレームバッファとして機能するエリアと、ｚバッファとして機能するエリアとが設けられているものとする。
【００２３】
５０３はＲＯＭで、本装置全体の制御を行うためのプログラムや、本装置を起動するためのブートプログラム等を格納する。
【００２４】
５０４、５０５は夫々キーボード、マウスで、各種の指示をＣＰＵ５０１に対して入力するためのユーザインターフェースとして機能するものであるが、ユーザインターフェースとしてはこれ以外の装置を用いても良く、キーボード、マウスに限定するものではない。
【００２５】
５０６は表示装置で、ＣＲＴや液晶画面などにより構成されており、ここにＣＰＵ５０１が処理した結果を文字や画像として表示することができる。
【００２６】
５０７は外部記憶装置で、ハードディスクドライブ装置などの大容量情報記憶装置として機能するものであり、ここにＯＳ（オペレーティングシステム）や、ＣＰＵ５０１に後述する仮想空間の画像の生成処理等、本装置にインターフェース５０９を介して接続される不図示のＨＭＤを頭部に装着する観察者に複合現実感を提示する為の一連の処理を実行させるためのプログラムやデータが保存されている。
【００２７】
また、外部記憶装置５０７にはこのほかにも、仮想空間の画像を描画するために必要なデータ、例えば、仮想空間を構成するオブジェクトに係るデータ（オブジェクトの形状データ、テクスチャデータ等）、仮想空間のサイズや位置などの環境を示すデータなどが保存されている。
【００２８】
これらプログラムやデータは必要に応じてＣＰＵ５０１の制御により、ＲＡＭ５０２に読み出される。
【００２９】
５０８は記憶媒体ドライブ装置で、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記憶媒体に記録されたプログラムやデータを読み出し、ＲＡＭ５０２や外部記憶装置５０７に出力する。なお、外部記憶装置５０７が保存しているプログラムやデータをこの記憶媒体に記録しておき、これらプログラムやデータを記憶媒体ドライブ装置５０８によってＲＡＭ５０２にロードするようにしても良い。
【００３０】
５０９はインターフェース（Ｉ／Ｆ）５０９で、現実空間に仮想空間が重畳された画像（即ち複合現実空間画像）を観察者に提示するために、この観察者の頭部に装着するＨＭＤを本装置に接続するために用いられるものである。
【００３１】
インターフェース５０９にＨＭＤを接続する場合、このＨＭＤが光学シースルータイプのものである場合には、本装置（複合現実感提示装置）が生成した仮想空間の画像をインターフェース５０９を介してＨＭＤの表示部に出力し、ＨＭＤがビデオシースルータイプのものである場合には、ＨＭＤに装着されたカメラ等の撮像装置により撮像された現実空間の画像をこのインターフェース５０９を介して本装置に入力し、更にこのインターフェース５０９を介して、この現実空間の画像に本装置が生成した仮想空間の画像を重畳した画像（即ち複合現実空間画像）をＨＭＤの表示部に出力する。
【００３２】
５１０は上述の各部を繋ぐバスである。
【００３３】
図１は、本実施形態に係る複合現実空間提示装置を含むシステムの機能構成を示す図である。
【００３４】
実写画像入力部１０１は、ＨＭＤに装着された１つ以上のカメラ等の撮像装置により撮像された現実空間の画像を後段の実写画像描画部１０６に入力するためのインターフェースとして機能するものである。なお、ＨＭＤが光学シースルータイプのものである場合には、現実空間の画像の本装置への入力は行われないために、実写画像入力部１０１、実写画像描画部１０６は不要となる。
【００３５】
仮想空間情報記憶部１０２は、仮想空間を構成する各オブジェクトに係るデータや、仮想空間を構成する各オブジェクト間の階層構造を示すシーングラフのデータ等、仮想空間に係るデータを記憶する。ここで「仮想空間を構成する各オブジェクトに係るデータ」とは、例えば、各オブジェクトの形状情報やテクスチャ情報などがこれに含まれる。即ち、各オブジェクトを描画するために必要な情報（データ）である。また、このデータには、観察者に提示する為の文字情報も含まれる。
【００３６】
また、「シーングラフ」とは、仮想空間を構成する各オブジェクトを階層化・構造化してシーンに配置することにより、シーン全体を記述するためのデータ構造である。各オブジェクトが仮想空間中で配置される位置姿勢の情報についても、シーングラフで記述される。例えばSGI社のグラフィックス・ライブラリであるOpen Inventor（登録商標）では、シーングラフのデータを参照して各オブジェクトの描画処理を行うことによって、シーン中の各オブジェクト間の階層構造を維持したオブジェクトの描画を効率的に実現している。
【００３７】
視覚表現形式記憶部１０３は、各オブジェクトの視覚表現形式を示すデータを各オブジェクトを特定する情報と関連づけて保持している。例えば、各オブジェクト固有のＩＤ番号と、視覚表現形式を示すデータとを関連づけたテーブルを保持している。視覚表現形式には、例えばマスク形式、ノーマル形式、半透過形式がある。
【００３８】
マスク形式とは上述の通り、現実空間における現実物体が仮想空間に作用を及ぼしている状況（例えば、現実物体による仮想物体の隠蔽など）を表現するために用いられる。ノーマル形式とは、これもまた上述の通り、仮想空間における仮想物体（所謂本明細書では「オブジェクト」）を描画するために用いられる。半透過形式は、現実空間のガラスに仮想空間が映りこむような表現や、ヘッドアップディスプレイなどの光学シースルー型表示装置を模擬するような場合に用いられる。
【００３９】
このように、仮想空間を構成する各オブジェクトに対する視覚表現形式を示すデータが視覚表現形式記憶部１０３に保持されている。なお、従来の技術として説明したように、オブジェクトの視覚表現形式が異なれば、オブジェクトの画像の描画方法（フレームバッファ、及び／又はｚバッファをどのようにして用いて描画するか）が異なるので、換言すれば視覚表現形式記憶部１０３には、各オブジェクトの画像の描画方法を示すデータが保持されていることになる。
【００４０】
なお、１つのオブジェクトに対する視覚表現形式を示すデータに２つ以上の視覚表現形式（例えばノーマル形式と半透過形式）を示すデータを含ませ、実際に設定すべき方を選択するようにしても良い。この場合、視覚表現形式設定部１０４は、２つ以上の視覚表現形式から実際に設定すべき方を選択する。この選択は操作者が行っても良いし、予め設定されたデータに従って設定するようにしても良い。また、視覚表現形式設定部１０４により、１つのオブジェクトに対する視覚表現形式を示すデータに新たな視覚表現形式を追加するようにしても良い。
【００４１】
そして１つのオブジェクトに対する視覚表現形式を示すデータに２つの視覚表現形式を示すデータが含まれている場合に（視覚表現形式設定部１０４で新たに追加することで２つの視覚表現形式を示すデータを含ませるようにしても良い）、この視覚表現形式設定部１０４により何れか１つを選択すると、この選択した視覚表現形式が以降、このオブジェクトに設定された視覚表現形式となる。設定された視覚表現形式のデータはこのオブジェクトを特定する情報に関連づけて上記視覚表現形式記憶部１０３に保持されることになる。
【００４２】
シーングラフマルチパス描画部１０５には、これから描画しようとする対象が視覚表現形式単位で指示される。即ち、マスク形式、ノーマル形式、半透過形式の順でオブジェクトを描画するよう指示される。
【００４３】
これによりシーングラフマルチパス描画部１０５は、同じ描画方法で描画すると設定されたオブジェクトの集合（即ち、マスク形式で描画すると設定されたオブジェクトの集合、ノーマル形式で描画すると設定されたオブジェクトの集合、半透過形式で描画すると設定されたオブジェクトの集合）を視覚表現形式記憶部１０３が保持するデータを参照して特定し、特定した集合に含まれる各オブジェクトのデータを仮想空間情報記憶部１０２から読み出して後段のマスクオブジェクト描画部１０７、ノーマルオブジェクト描画部１０８、半透過オブジェクト描画部１０９の何れか１つに出力する。
【００４４】
また、シーングラフマルチパス描画部１０５は、仮想空間情報記憶部１０２が保持するシーングラフのデータを用いて、指示された視覚表現形式と同じ視覚表現形式が設定されているオブジェクトにより形成される階層構造を示すシーングラフのデータを生成する処理を行う。この処理についての詳細は後述する。
【００４５】
このようにして、シーングラフマルチパス描画部１０５は、指示された視覚表現形式と同じ視覚表現形式が設定されているオブジェクトの集合を特定し、特定した集合に含まれる各オブジェクトを描画するためのデータ、及び特定した集合に含まれるオブジェクトにより形成される階層構造を示すシーングラフのデータを出力する。この一連の出力処理を、マスク形式、ノーマル形式、半透過形式について行うことで、シーングラフマルチパス描画部１０５は、同じ描画方法で描画すると設定したオブジェクトの集合毎に、オブジェクトを描画するためのデータ、シーングラフのデータを出力することができる。
【００４６】
なお、シーン中に存在しない視覚表現形式があれば、当然、その視覚表現形式についてはシーングラフマルチパス描画部１０５には指示しない。
【００４７】
ここで、シーングラフマルチパス描画部１０５が行う上記処理、同じ描画方法で描画すると設定されたオブジェクトの集合を視覚表現形式記憶部１０３が保持するデータを参照して特定し、特定した集合に含まれる各オブジェクトのデータを仮想空間情報記憶部１０２から読み出して後段のマスクオブジェクト描画部１０７、ノーマルオブジェクト描画部１０８、半透過オブジェクト描画部１０９の何れか１つに出力する処理について、より詳細に説明する。
【００４８】
本実施形態では上述の通り、オブジェクトの描画を指示する場合には、視覚表現形式単位で指示する。シーングラフマルチパス描画部１０５はこの指示を受け、受けた指示の視覚表現形式と同じ視覚表現形式が設定されている（先に視覚表現形式設定部１０４を用いて上述の通り設定した）オブジェクトを特定する情報（例えばＩＤ番号）を、視覚表現形式記憶部１０３が保持するデータを参照して特定する。この処理は、上述の通り、視覚表現形式記憶部１０３は、各オブジェクトの視覚表現形式を示すデータを各オブジェクトを特定する情報と関連づけて保持しているので、指示された視覚表現形式に関連づけられたオブジェクトを特定する情報を特定することにより実現可能である。このようにしてシーングラフマルチパス描画部１０５は、指示された視覚表現形式と同じ視覚表現形式が設定されているオブジェクトを特定する情報を得ることができる。
【００４９】
次にシーングラフマルチパス描画部１０５は、上述の処理により得られる「指示された視覚表現形式と同じ視覚表現形式が設定されているオブジェクトを特定する情報」を用いて、この情報で特定されるオブジェクトを描画するためのデータを仮想空間情報記憶部１０２が保持しているデータから読み出す。
【００５０】
このようにしてシーングラフマルチパス描画部１０５は、指示された視覚表現形式と同じ視覚表現形式が設定されているオブジェクトの集合に含まれる各オブジェクトを描画する為のデータを読み出すことができる。
【００５１】
当然、シーングラフマルチパス描画部１０５により読み出された夫々のオブジェクトのデータは、この夫々のオブジェクトに共通の視覚表現形式に従って描画されるものである。この視覚表現形式には上述の通り、３つの形式の何れかが設定されているので、この３つの何れかに応じて、シーングラフマルチパス描画部１０５が読み出したオブジェクトのデータ、及び読み出したオブジェクトが属する集合について作成したシーングラフのデータの出力先が異なる。
【００５２】
例えばシーングラフマルチパス描画部１０５に指示された視覚表現形式がマスク形式である場合には、シーングラフマルチパス描画部１０５が読み出したオブジェクトのデータはマスク形式のものであり、且つ作成したシーングラフのデータはマスク形式で描画されると設定されたオブジェクト間の階層構造を示すものであるので、これらオブジェクトのデータ、及びシーングラフのデータをマスクオブジェクト描画部１０７に出力する。
【００５３】
例えばシーングラフマルチパス描画部１０５に指示された視覚表現形式がノーマル形式である場合には、シーングラフマルチパス描画部１０５が読み出したオブジェクトのデータはノーマル形式のものであり、且つ作成したシーングラフのデータはノーマル形式で描画されると設定されたオブジェクト間の階層構造を示すものであるので、これらオブジェクトのデータ、及びシーングラフのデータをノーマルオブジェクト描画部１０８に出力する。
【００５４】
例えばシーングラフマルチパス描画部１０５に指示された視覚表現形式が半透過形式である場合には、シーングラフマルチパス描画部１０５が読み出したオブジェクトのデータは半透過形式のものであり、且つ作成したシーングラフのデータは半透過形式で描画されると設定されたオブジェクト間の階層構造を示すものであるので、これらオブジェクトのデータ、及びシーングラフのデータを半透過オブジェクト描画部１０９に出力する。
【００５５】
マスクオブジェクト描画部１０７、ノーマルオブジェクト描画部１０８、半透過オブジェクト描画部１０９は夫々、シーングラフマルチパス描画部１０５から受けた各オブジェクトのデータ、及びシーングラフのデータを用いて、夫々の視覚表現形式に従ったシーングラフを描画する処理を行う。ここで「シーングラフの描画」とは、シーングラフを構成する各オブジェクトの画像を、各オブジェクトの階層構造に従って描画する処理を指すものとする。
【００５６】
ここで、マスクオブジェクト描画部１０７によるマスクオブジェクトの描画方法については従来と同様の方法、即ち、（初期化状態では、ｚバッファには無限遠を示すデータが格納されている）、マスクオブジェクトの画像を構成する各画素のｚ座標値をｚバッファに書き込む処理を行う。より具体的には、マスクオブジェクトの画像を構成する画素のｚ座標値と、この画素の位置に対応するｚバッファ内の位置に格納されているｚ座標値とを比較し、より値が小さい方（より視点位置に近い方）の画素をｚバッファに記録する処理を行う。
【００５７】
また、ノーマルオブジェクト描画部１０８による描画方法についても従来と同様の方法でもって行う。即ち、ノーマルオブジェクトの画像を構成する各画素のｚ座標値（各画素が示すノーマルオブジェクト上の位置のｚ座標値）と、ｚバッファに格納されているデータが示すｚ座標値とを比較し、より値が小さい方（より視点位置に近い方）の画素をフレームバッファに記録する。また、比較したフレームバッファにおける画素のｚ座標値の方が、比較したｚバッファにおける画素のｚ座標値よりも小さい値であった場合には、比較したｚバッファにおける画素のｚ座標値を比較したフレームバッファにおける画素のｚ座標値に更新する処理を行う。これにより、常にｚバッファには、より視点位置に近いｚ座標値が格納されていることになる。このような処理を行うことにより、２つのオブジェクトが視点位置から見て重なっていても、より視点位置に近い部分が手前に描画される。
【００５８】
また、半透過オブジェクト描画部１０９による描画方法についても従来と同様の方法でもって行う。即ち、これから半透過型のオブジェクトとしてフレームバッファ上に描画するオブジェクトの画像と、先にフレームバッファに格納されている画像との周知のブレンディング処理（本実施形態ではαブレンド処理）を行うことにより、先にフレームバッファに格納されている画像上に半透明のオブジェクトの画像を形成することができる。
【００５９】
なお、シーン中にマスクオブジェクトを設定せず、描画を行わない場合には、マスクオブジェクト描画部１０７は不要となるので、省略しても良い。また、シーン中に半透過オブジェクトを設定せず、描画を行わない場合には、半透過オブジェクト描画部１０９は不要となるので、省略しても良い。
【００６０】
実写画像描画部１０６は、実写画像入力部１０１から入力された現実空間の画像を描画する処理を行う。尚上述の通り、ＨＭＤが光学シースルータイプのものである場合には、現実空間の画像の本装置への入力は行われないために、実写画像描画部１０６は実写画像入力部１０１と同様に、不要となる。
【００６１】
画像表示部１１０は、例えばＨＭＤを装着する観察者の眼前に位置する表示部に対応するものであり、実写画像入力部１０１から入力され、実写画像描画部１０６が描画した現実空間画像上に、マスクオブジェクト描画部１０７、ノーマルオブジェクト描画部１０８、半透過オブジェクト描画部１０９の何れかにより描画されたオブジェクトの画像により形成する仮想空間の画像とが重畳された画像を表示する。尚、ＨＭＤが光学シースルータイプのものである場合には、現実空間の画像の本装置への入力は成されないので、画像表示部１１０は、現実空間は透過させて観察者に見せるととに、透過面上に仮想空間の画像を表示する。
【００６２】
以上説明した各部が、本実施形態に係る複合現実感提示装置を含むシステムの機能構成であるが、本実施形態では、実写画像描画部１０６、シーングラフマルチパス描画部１０５、マスクオブジェクト描画部１０７、ノーマルオブジェクト描画部１０８、半透過オブジェクト描画部１０９の夫々はプログラムとして実現する。即ち、これらの各部の機能をＣＰＵ５０１に行わせるためのプログラムとしてＲＡＭ５０２上にロードされるものとする。
【００６３】
また、仮想空間情報記憶部１０２、視覚表現形式記憶部１０３については本実施形態では、外部記憶装置５０７内に設けられた記憶領域に対応するものであり、実写画像入力部１０１については、インターフェース部５０９に相当するものである。また、視覚表現形式設定部１０４は、キーボード５０４やマウス５０５に相当するものである。
【００６４】
しかし、図１に示した各部は、以上のような形態に限定されるものではなく、例えば、図１に示した各部が専用ハードウェアにより構成されているようなものであっても良い。
【００６５】
次に、本実施形態に係る複合現実感提示装置が行う、仮想空間の画像を生成し、現実空間の画像上に重畳して出力する処理について、同処理のフローチャートを示す図２を用いて以下、説明する。尚、図２に示すフローチャートに従ったプログラムは、ＲＡＭ５０２にロードし、ＣＰＵ５０１がこれを実行することにより、本実施形態に係る複合現実感提示装置は以下説明する各処理を行うことになる。
【００６６】
先ず、以下説明する処理に先立って、外部記憶装置５０７内に設けられた仮想空間情報記憶部１０２に相当する記憶領域内には、上述の通り、仮想空間を構成する各オブジェクトを描画するためのシーングラフのデータが記憶されているものとする。
【００６７】
そして先ず、複合現実感提示装置を起動するので、ＣＰＵ５０１は外部記憶装置５０７内に保存されているＯＳのプログラム、ＲＯＭ５０３内のブートプログラム等を実行することにより、本装置の初期化処理（この初期化処理には以下行う各処理のための初期化処理も含む）を行う（ステップＳ２０１）。
【００６８】
本装置が起動され、本装置の初期化処理が完了すると、次に、ＨＭＤに搭載されたカメラなどの撮像装置が撮像した現実空間の画像がＩ／Ｆ５０９を介して本装置内に入力され、ＲＡＭ５０２内の所定のエリアに格納される（ステップＳ２０２）。なお、ＨＭＤが光学シースルー型のものである場合には、現実空間の画像の撮像処理は行わないので、ステップＳ２０２における処理は省略する。
【００６９】
次に、キーボード５０４やマウス５０５を用いて、仮想空間を構成する各オブジェクトに対する視覚表現形式を入力する（ステップＳ２０３）。入力した視覚表現形式を示すデータは、設定先のオブジェクトを特定する情報と関連づけて外部記憶装置５０７内の視覚表現形式記憶部１０３に相当する記憶領域内に保存される。
【００７０】
例えば表示装置５０６上に、仮想空間を構成する各オブジェクトのうちの所望のオブジェクトをキーボード５０４やマウス５０５を用いて選択可能にし、選択したオブジェクトが識別可能なように表示すると共に、選択したオブジェクトに対して設定する為の視覚表現形式のメニューを表示する（このメニューには「ノーマル形式」、「マスク形式」、「半透過形式」の３つの選択項目が表示されている）。
【００７１】
そしてこのメニューから１つをキーボード５０４やマウス５０５を用いて選択する。選択すれば、選択した視覚表現形式を示すデータが、現在選択されているオブジェクトを特定する情報と関連づけられて、外部記憶装置５０７内の視覚表現形式記憶部１０３に相当する記憶領域内に保存される。
【００７２】
なお、オブジェクトによってはデフォルトの視覚表現形式が設定されていても良く、その場合にはこのオブジェクトに対する設定は行わなくても良い。
【００７３】
次に、ＲＡＭ５０２に設けられたフレームバッファ、ｚバッファをクリアする（ステップＳ２０４）。例えば、フレームバッファのクリアとは、フレームバッファ内を０の値を示すデータで埋める処理である。また、ｚバッファのクリアとは、ｚバッファ内を無限遠の距離を示すデータで埋める処理である。
【００７４】
次に、ステップＳ２０２でＲＡＭ５０２内の所定のエリアに格納された現実空間の画像を、フレームバッファに書き込む（ステップＳ２０５）。ここでは、フレームバッファに画像を書き込むことを「描画する」と表現することもある。
【００７５】
次に、仮想空間を構成する各オブジェクトのうち、同じ描画方法で描画されるオブジェクトの集合毎に、集合内のオブジェクトが形成する階層構造をシーングラフとして生成する処理を行う（ステップＳ２０６）。以下、ステップＳ２０６における処理にについてより詳細に説明する。
【００７６】
先ずシーングラフマルチパス描画部１０５に相当するプログラムをＣＰＵ５０１が実行することにより、外部記憶装置５０７内の仮想空間情報記憶部１０２に相当する記憶領域内に記憶されているシーングラフのデータをＲＡＭ５０２内の所定のエリアに読み出す。このシーングラフのデータとは、上述の通り、仮想空間を構成する各オブジェクト間の階層構造を示すデータである。
【００７７】
図３は、仮想空間を構成する各オブジェクト間の階層構造の一例を示す図である。以下の説明では、図３に示すシーングラフを例に取り説明するが、同図に示したシーングラフの形態以外に対しても以下の説明の本質が適用可能であることは、以下の説明より明らかである。
【００７８】
同図では、マスク形式で描画すると設定されたオブジェクトを円で示しており、Ａ，Ｅ，Ｈで示すオブジェクトがこれに相当する。ノーマル形式で描画すると設定されたオブジェクトは正方形で示しており、Ｂ，Ｄ，Ｆ，Ｇ，Ｉで示すオブジェクトがこれに相当する。また、半透過形式で描画すると設定されたオブジェクトは六角形で示しており、Ｃ、Ｊで示すオブジェクトがこれに相当する。
【００７９】
ここで、マスク形式が指示されると、マスク形式で描画すると設定されたオブジェクト、即ち、Ａ，Ｅ，Ｈで示すオブジェクトの描画が指示されたのであるから、その描画の際にはこれら３つのオブジェクト間の階層構造を示すシーングラフのデータが必要となる。そこで、マスク形式が指示されると、図３に示すシーングラフから、Ａ，Ｅ，Ｈで示すオブジェクトにより形成される階層構造を示すシーングラフを生成する。より具体的には、図３に示す階層構造におけるＡ，Ｅ，Ｈの各オブジェクト間の階層構造を維持したままで、且つＡ，Ｅ，Ｈのオブジェクトのみで形成される階層構造を示すシーングラフを生成する。
【００８０】
生成したシーングラフを図４の４０１に示す。シーングラフ４０１は、図３に示す階層構造におけるＡ，Ｅ，Ｈの各オブジェクト間の階層構造を維持したままで、且つＡ，Ｅ，Ｈのオブジェクトのみで形成される階層構造を示すシーングラフとなっていることが分かる。
【００８１】
これはステップＳ２０３でノーマル形式、半透過形式が指示されても同様である。
【００８２】
例えばノーマル形式が指示されると、ノーマル形式で描画すると設定されたオブジェクト、即ち、Ｂ，Ｄ，Ｆ，Ｇ，Ｉで示すオブジェクトの描画が指示されたのであるから、その描画の際にはこれら５つのオブジェクト間の階層構造を示すシーングラフのデータが必要となる。そこで、ノーマル形式が指示されると、図３に示すシーングラフから、Ｂ，Ｄ，Ｆ，Ｇ，Ｉで示すオブジェクトにより形成される階層構造を示すシーングラフを生成する。より具体的には、図３に示す階層構造におけるＢ，Ｄ，Ｆ，Ｇ，Ｉの各オブジェクト間の階層構造を維持したままで、且つＢ，Ｄ，Ｆ，Ｇ，Ｉのオブジェクトのみで形成される階層構造を示すシーングラフを生成する。
【００８３】
生成したシーングラフを図４の４０２に示す。シーングラフ４０２は、図３に示す階層構造におけるＢ，Ｄ，Ｆ，Ｇ，Ｉの各オブジェクト間の階層構造を維持したままで、且つＢ，Ｄ，Ｆ，Ｇ，Ｉのオブジェクトのみで形成される階層構造を示すシーングラフとなっていることが分かる。
【００８４】
また、半透過形式が指示されると、半透過形式で描画すると設定されたオブジェクト、即ち、Ｃ、Ｊで示すオブジェクトの描画が指示されたのであるから、その描画の際にはこれら２つのオブジェクト間の階層構造を示すシーングラフのデータが必要となる。そこで、半透過形式が指示されると、図３に示すシーングラフから、Ｃ、Ｊで示すオブジェクトにより形成される階層構造を示すシーングラフを生成する。より具体的には、図３に示す階層構造におけるＣ、Ｊの各オブジェクト間の階層構造を維持したままで、且つＣ、Ｊのオブジェクトのみで形成される階層構造を示すシーングラフを生成する。
【００８５】
生成したシーングラフを図４の４０３に示す。シーングラフ４０３は、図３に示す階層構造におけるＣ、Ｊの各オブジェクト間の階層構造を維持したままで、且つＣ、Ｊのオブジェクトのみで形成される階層構造を示すシーングラフとなっていることが分かる。
【００８６】
このようにして、仮想空間情報記憶部１０２から読み出されたシーングラフのデータ（上記説明では図３に示すシーングラフのデータに相当）を用いて、指示された視覚表現形式と同じ視覚表現形式が設定されたオブジェクトにより形成される階層構造を示すシーングラフのデータを生成する。
【００８７】
なお、生成したシーンのグラフのデータはＲＡＭ５０２内の所定のエリアに一時的に記憶させる。
【００８８】
なお、以上の説明では、ノーマル形式、マスク形式、半透過形式の夫々の視覚表現形式で描画されるオブジェクトの数は何れも２以上であったが、例えばノーマル形式で描画されると設定されたオブジェクトの数が１である場合もあり得る。その場合、ノーマル形式に対するシーングラフはこの１つのオブジェクトの位置姿勢位置などの情報を含むのみで、オブジェクト間の階層構造を表すものではない。またその場合、上記説明において「集合」には「構成要素数が１である集合」を含むものとする。
【００８９】
図２に戻って、次に、マスク形式が設定されたオブジェクトを描画するためのデータ（マスク形式が設定されたオブジェクトの各画素のｚ座標値を示すデータ）を外部記憶装置５０７からＲＡＭ５０２に読み出し、読み出したデータと、ステップＳ２０６で生成したマスク形式が設定されたオブジェクトの集合に対するシーングラフのデータとを用いて、マスク形式が設定されたオブジェクトを描画するためのデータが示すｚ座標値と、先にｚバッファに格納されているｚ座標値との比較結果に応じて上述のｚバッファの更新処理を行う（ステップＳ２０７）。
【００９０】
次に、ノーマル形式が設定されたオブジェクトを描画するためのデータを外部記憶装置５０７からＲＡＭ５０２に読み出し、読み出したデータと、ステップＳ２０６で生成したノーマル形式が設定されたオブジェクトの集合に対するシーングラフのデータとを用いて、上述の通り、ｚバッファに格納されているｚ座標値と比較しながら、フレームバッファにノーマル形式が設定されたオブジェクトを描画するためのデータを書き込む処理を行う（ステップＳ２０８）。
【００９１】
次に、半透過形式が設定されたオブジェクトを描画するためのデータを外部記憶装置５０７からＲＡＭ５０２に読み出し、読み出したデータと、ステップＳ２０６で生成した半透過形式が設定されたオブジェクトの集合に対するシーングラフのデータとを用いて、上述の通り、先にフレームバッファに格納されている画像のデータと、半透過形式が設定されたオブジェクトを描画するためのデータとのブレンディング処理を行う（ステップＳ２０９）。
【００９２】
本実施形態では、このブレンディング処理は以下の手順に従って行う。先にフレームバッファに格納されている画像中の注目画素の値をＸ、この注目画素の位置にブレンディングしようとする画素（半透過形式が設定されたオブジェクトにおける画素）の値をＹとすると、Ｚ＝Ｘ＋Ｙを計算し、フレームバッファにおける上記注目画素の画素値をＺに更新する。
【００９３】
なお、このブレンディング処理についてはこのような処理に限定されるものではなく、周知のαブレンディング処理を適用しても良い。
【００９４】
以上の処理により、フレームバッファには現実空間の画像に、仮想空間の画像（各視覚表現形式によるオブジェクトの画像）が重畳された画像が格納されていることになるので、これをＩ／Ｆ５０９を介してＨＭＤの表示部に出力する。
【００９５】
そして、以上の処理を完了する指示がキーボード５０４やマウス５０５を用いてＣＰＵ５０１に指示されていれば、本処理を終了し、指示されていない場合には処理をステップＳ２０２に戻し、以降の処理を繰り返す。
【００９６】
以上の説明により、本実施形態によって、仮想空間を構成する各オブジェクトの画像を描画する際に、視覚表現形式が同じオブジェクトの集合毎に描画するので、従来のように、描画順番が煩雑になることはない。
【００９７】
また、視覚表現形式が同じオブジェクトの集合毎に描画を行うためには、例えば図４に示すような各視覚表現形式毎のシーングラフを作成する必要があるのであるが、このシーングラフをシーンの作成者に意識させることなく、図３に示すようなシーングラフに従った各オブジェクトの画像を描画する事ができるので、作成者に与える負荷を軽減させることができる。
【００９８】
また、オブジェクトの見え方の特性（即ち、視覚表現形式）毎に描画順や描画方法を上記作成者に考慮させる描画機構を別途作る必要もないので、作成者に与える負荷を軽減させることができると共に、より簡便な構成でもって複合現実感を提示することができる。
【００９９】
［第２の実施形態］
上記ステップＳ２０７におけるマスクオブジェクトの描画処理において、先にフレームバッファに格納されている画像中の注目画素の値をＸ、マスクオブジェクトの画像において、この注目画素の位置に対応する位置の画素の値をＹとした場合に、Ｚ＝Ｘ＋Ｙを計算し、フレームバッファにおける上記注目画素の画素値をＺに更新する処理を更に行うようにしても良い。
【０１００】
この場合、仮想の光源によって現実物体を照明しているかのような効果を得ることができる。
【０１０１】
また、このような、ステップＳ２０７におけるフレームバッファの更新処理を行う／行わないの選択を行うことができるようにしても良く、この選択をキーボード５０４やマウス５０５でもって行うようにしても良いし、予めマスクオブジェクト毎にこのような更新処理を行う／行わない旨のデータを付加しておいて、描画時にＣＰＵ５０１がオブジェクト毎に更新処理を行う／行わないを切り替えても良い。
【０１０２】
［その他の実施形態］
本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０１０３】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１０４】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１０５】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０１０６】
【図１】本発明の第１の実施形態に係る複合現実空間提示装置を含むシステムの機能構成を示す図である。
【図２】本発明の第１の実施形態に係る複合現実感提示装置が行う、仮想空間の画像を生成し、現実空間の画像上に重畳して出力する処理のフローチャートである。
【図３】仮想空間を構成する各オブジェクト間の階層構造の一例を示す図である。
【図４】図３に示すシーングラフから、各視覚表現形式に対して生成されたシーングラフを示す図である。
【図５】本発明の第１の実施形態に係る複合現実感提示装置として機能するコンピュータの基本構成を示す図である。
【図１】
2005149209.tif 000003
【図２】
2005149209.tif 000004
【図３】
2005149209.tif 000005
【図４】
2005149209.tif 000006
【図５】
2005149209.tif 000007