(57)【要約】【課題】  視点の姿勢を変化させながら仮想物体を観察するときに、周囲環境から仮想物体への映り込みを適切に表現する為の技術を提供すること。【解決手段】  視点の位置姿勢を取得し（Ｓ１０２０）、環境マッピング画像のうち、仮想物体の環境マッピング対象領域に対して環境マッピングを行う場合に用いる領域を、視点の姿勢に基づいて特定し（Ｓ１０４０，Ｓ１０６０）、特定した領域中の画像を環境マッピング対象領域に対して環境マッピングし（Ｓ１０６０）、環境マッピングが成された仮想物体を含む仮想空間を、視点から見た場合に見える画像を生成する。【選択図】  図７
2006252060.tif 000002
【特許請求の範囲】
【請求項１】
仮想物体に対して環境マッピングを行うために用いる環境マッピング画像を保持する第１の保持工程と、
前記仮想物体を配置する仮想空間における視点の位置姿勢を取得する取得工程と、
前記環境マッピング画像のうち、前記仮想物体の環境マッピング対象領域に対して環境マッピングを行う場合に用いる領域を、前記視点の姿勢に基づいて特定する特定工程と、
前記環境マッピング画像のうち前記特定工程で特定した領域中の画像を、前記環境マッピング対象領域に対して環境マッピングする環境マッピング工程と、
前記環境マッピング工程で環境マッピングが成された仮想物体を含む仮想空間を、前記視点から見た場合に見える画像を生成する生成工程と
を備えることを特徴とする画像処理方法。
【請求項２】
前記特定工程は、
前記環境マッピング対象領域を構成する頂点における法線ベクトル（単位ベクトル）をｎ、視線ベクトルをｅとすると、反射ベクトルｒをｒ＝−２ｎ（ｎ・ｅ）＋ｅとして求める第１の工程と、
前記反射ベクトルｒ＝（Ｘ、Ｙ、Ｚ）とすると、当該頂点に対応する前記環境マッピング画像上の対応点位置（ｕ、ｖ）を、ｕ＝Ｘ／ｍ、ｖ＝Ｙ／ｍ、ｍ＝√（Ｘ２＋Ｙ２＋（Ｚ＋１）２）として求める第２の工程と、
前記環境マッピング画像の中心部を原点とした場合に、前記視点のロール角分だけ前記対応点位置（ｕ、ｖ）を当該原点周りに回転させた位置（ｕ’、ｖ’）を得る第３の工程と、
前記第１乃至３の工程を前記環境マッピング対象領域を構成するそれぞれの頂点について行うことで得られる、それぞれの頂点に対応する前記環境マッピング画像上の対応点位置で囲まれた領域内の画像を、前記環境マッピング対象領域に対して環境マッピングするために用いる領域として特定することを特徴とする請求項１に記載の画像処理方法。
【請求項３】
前記特定工程は、
前記環境マッピング画像の中心部を原点とした場合に、前記視点のロール角分だけ前記環境マッピング画像を当該原点周りに回転させた回転後環境マッピング画像を得る第１の工程と、
前記環境マッピング対象領域を構成する頂点における法線ベクトル（単位ベクトル）をｎ、視線ベクトルをｅとすると、反射ベクトルｒをｒ＝−２ｎ（ｎ・ｅ）＋ｅとして求める第２の工程と、
前記反射ベクトルｒ＝（Ｘ、Ｙ、Ｚ）とすると、当該頂点に対応する前記回転後環境マッピング画像上の対応点位置（ｕ、ｖ）を、ｕ＝Ｘ／ｍ、ｖ＝Ｙ／ｍ、ｍ＝√（Ｘ２＋Ｙ２＋（Ｚ＋１）２）として求める第３の工程と、
前記第２，３の工程を前記環境マッピング対象領域を構成するそれぞれの頂点について行うことで得られる、それぞれの頂点に対応する前記回転後環境マッピング画像上の対応点位置で囲まれた領域内の画像を、前記環境マッピング対象領域に対して環境マッピングするために用いる領域として特定することを特徴とする請求項１に記載の画像処理方法。
【請求項４】
前記環境マッピング対象領域はポリゴンであることを特徴とする請求項１乃至３の何れか１項に記載の画像処理方法。
【請求項５】
仮想物体に対して環境マッピングを行うために用いる環境マッピング画像を保持する第１の保持手段と、
前記仮想物体を配置する仮想空間における視点の位置姿勢を取得する取得手段と、
前記環境マッピング画像のうち、前記仮想物体の環境マッピング対象領域に対して環境マッピングを行う場合に用いる領域を、前記視点の姿勢に基づいて特定する特定手段と、
前記環境マッピング画像のうち前記特定手段が特定した領域中の画像を、前記環境マッピング対象領域に対して環境マッピングする環境マッピング手段と、
前記環境マッピング手段によって環境マッピングが成された仮想物体を含む仮想空間を、前記視点から見た場合に見える画像を生成する生成手段と
を備えることを特徴とする画像処理装置。
【請求項６】
コンピュータに請求項１乃至４の何れか１項に記載の画像処理方法を実行させることを特徴とするプログラム。
【請求項７】
請求項６に記載のプログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想空間の画像を生成するための技術に関するものである。
【背景技術】
【０００２】
従来から、仮想的に設定された三次元空間内に存在するオブジェクト（物品）を、ＣＧ（コンピュータ・グラフィックス）技術を用いて生成することによって、仮想三次元空間内の任意の視点から観察される画像を生成し、仮想現実感を提示するための情報処理装置が提案されている。特にその中でも、装置の使用者の頭部位置・姿勢を計測し、これを仮想三次元空間内を観察する視点として設定するような情報処理装置では、装置の使用者の頭部の動きに追従して、装置の使用者自身が仮想三次元空間を観察しているように画像が変化するため、装置の使用者に対して仮想三次元空間への高い没入感を与えることができる。
【０００３】
このような装置では、装置の使用者に対してより現実に近い感覚を提示するために、画像を生成する処理を高速に実現すると共に、生成する画像の質を向上させることが技術的な課題となっている。その課題を解決するための手段の一つとして、環境マッピングと呼ばれる技術が知られている。環境マッピングとは、仮想のオブジェクトに対して、周囲環境の映り込みを表現するための技術であり、その手法が非特許文献１に開示されている。
【０００４】
環境マッピングでは、仮想のオブジェクトに映り込むべき周囲環境の画像である環境マッピング画像をあらかじめ用意し、映り込みを生じさせる仮想オブジェクトに対して、この環境マッピング画像をテクスチャとしてマッピングする。このとき、仮想オブジェクトを観察する視点と仮想オブジェクト頂点の法線とから算出される反射ベクトルに基づき、環境マッピング画像中で仮想オブジェクトにマッピングされるべき領域を決定する。この方法により、あたかも仮想オブジェクトに周囲環境が映り込んでいるかのような表現を得ることができる。
【０００５】
ＣＧで同様の表現を実現するための他の手法として、レイ・トレーシング法などが挙げられる。レイ・トレーシング法とは、仮想オブジェクトに当たる光線を視点から追跡し、光線と交差する点を求める手法であり、非特許文献２に開示されている。
【０００６】
環境マッピングは、レイ・トレーシング法と比較して、高速に処理することが可能であるため、仮想現実感の提示やコンピュータ・ゲームなど、リアルタイムでの処理が必須となる装置において、特に広く用いられている技術である。その一方で、環境マッピングは、仮想オブジェクトへの映り込みをあくまで簡易的に表現する手法であるため、レイ・トレーシング法よりも、映り込み表現の正確性に劣ることが多い。
【０００７】
環境マッピングでは、視点の位置や方向および仮想オブジェクトの位置については変化しないものとみなし、仮想オブジェクトを回転させたときに、環境マッピング画像中のマッピングする領域を変更するということを前提としている。そのため、仮想オブジェクトの位置が変化する場合や、視点位置・姿勢を変化させながら仮想オブジェクトを観察するような場合には、その前提が成立しないため、仮想オブジェクトの映り込みの変化が不自然なものとなり、装置の使用者に違和感を生じさせることがあった。
【０００８】
この違和感を軽減するために、移動する仮想オブジェクトの位置をもとに環境マッピング画像を移動または回転させる技術が提案されている。
【非特許文献１】Ｂｌｉｎｎ，  Ｊ．  Ｆ．  ａｎｄ  Ｎｅｗｅｌｌ，  Ｍ．  Ｅ．  Ｔｅｘｔｕｒｅ  ａｎｄ  ｒｅｆｌｅｃｔｉｏｎ  ｉｎ  ｃｏｍｐｕｔｅｒ  ｇｅｎｅｒａｔｅｄ  ｉｍａｇｅｓ．  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｏｆ  ｔｈｅ  ＡＣＭ  Ｖｏｌ．  １９，  Ｎｏ．  １０  （Ｏｃｔｏｂｅｒ  １９７６），  ５４２−５４７．
【非特許文献２】Ｔｕｒｎｅｒ  Ｗｈｉｔｔｅｄ．  Ａｎ  ｉｍｐｒｏｖｅｄ  ｉｌｌｕｍｉｎａｔｉｏｎ  ｍｏｄｅｌ  ｆｏｒ  ｓｈａｄｅｄ  ｄｉｓｐｌａｙ，  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｏｆ  ｔｈｅ  ＡＣＭ，  Ｖｏｌ．２３  Ｎｏ．６  （Ｊｕｎｅ  １９８０）  ３４３−３４９．
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、従来の手法では、環境マッピング画像の移動や回転は、仮想オブジェクトの位置のみに依存し、仮想オブジェクトを観察する視点には依存しない。そのため、この手法は、仮想オブジェクトが移動する場合には有効であるが、仮想オブジェクトを観察する視点位置・姿勢を変化させたときの映り込みには対処されないままであった。
【００１０】
特に、視点の姿勢のうちロール成分（視線を軸としたときの視点の回転成分）を変化させ、静止している仮想オブジェクトを観察する場合、本来、変化しないはずの仮想オブジェクトへの映り込みが変化するという現象が発生する。これは、視線方向を固定し、仮想オブジェクトを回転させるという環境マッピングの前提に由来する。
【００１１】
本発明は以上の問題に鑑みてなされたものであり、視点の姿勢を変化させながら仮想物体を観察するときに、周囲環境から仮想物体への映り込みを適切に表現する為の技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の目的を達成するために、例えば、本発明の画像処理方法は以下の構成を備える。
【００１３】
即ち、仮想物体に対して環境マッピングを行うために用いる環境マッピング画像を保持する第１の保持工程と、
前記仮想物体を配置する仮想空間における視点の位置姿勢を取得する取得工程と、
前記環境マッピング画像のうち、前記仮想物体の環境マッピング対象領域に対して環境マッピングを行う場合に用いる領域を、前記視点の姿勢に基づいて特定する特定工程と、
前記環境マッピング画像のうち前記特定工程で特定した領域中の画像を、前記環境マッピング対象領域に対して環境マッピングする環境マッピング工程と、
前記環境マッピング工程で環境マッピングが成された仮想物体を含む仮想空間を、前記視点から見た場合に見える画像を生成する生成工程と
を備えることを特徴とする。
【００１４】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。
【００１５】
即ち、仮想物体に対して環境マッピングを行うために用いる環境マッピング画像を保持する第１の保持手段と、
前記仮想物体を配置する仮想空間における視点の位置姿勢を取得する取得手段と、
前記環境マッピング画像のうち、前記仮想物体の環境マッピング対象領域に対して環境マッピングを行う場合に用いる領域を、前記視点の姿勢に基づいて特定する特定手段と、
前記環境マッピング画像のうち前記特定手段が特定した領域中の画像を、前記環境マッピング対象領域に対して環境マッピングする環境マッピング手段と、
前記環境マッピング手段によって環境マッピングが成された仮想物体を含む仮想空間を、前記視点から見た場合に見える画像を生成する生成手段と
を備えることを特徴とする。
【発明の効果】
【００１６】
本発明の構成により、視点の姿勢を変化させながら仮想物体を観察するときに、周囲環境から仮想物体への映り込みを適切に表現することができる。
【発明を実施するための最良の形態】
【００１７】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００１８】
［第１の実施形態］
＜システムの構成について＞
先ず、観察者の視点の位置姿勢に応じた仮想空間の画像を生成し、表示するためのシステムについて、このシステムのハードウェア構成を示す図１を用いて説明する。同図に示す如く、本実施形態に係るシステムは、コンピュータ１００、表示装置２００、位置姿勢検出装置３００、操作デバイス４００により構成されている。
【００１９】
先ず、コンピュータ１００について説明する。コンピュータ１００は、ＣＰＵ１０１、ＲＡＭ１０２、画像出力装置１０３、ＶＲＡＭ１０４、システムバス１０５、ディスク装置１０６、入力装置１０７を備える。
【００２０】
ＣＰＵ１０１はＲＡＭ１０２にロードされているプログラムやデータを用いて本コンピュータ１００全体の制御を行うと共に、コンピュータ１００が行う後述の各処理を実行する。
【００２１】
ＲＡＭ１０２は、ディスク装置１０６からロードされたプログラムやデータを一時的に記憶するためのエリア、入力装置１０７を介して外部から受信した各種のデータを一時的に記憶するためのエリア、そして、ＣＰＵ１０１が各処理を実行する際に用いるワークエリアなど、各種のエリアを適宜提供することができる。
【００２２】
画像出力装置１０３は、例えばグラフィックスカードなどの機器によって実現されるものであり、本実施形態では、画像出力装置１０３はその内部にＶＲＡＭ１０４を保持している。画像出力装置１０３は、ＣＰＵ１０１からの指示を受けると、仮想空間の画像生成処理（ＣＧ描画処理）を行い、生成した画像を適切な信号に変換して表示装置２００に送出する。ＶＲＡＭ１０４は、画像出力装置１０３が仮想空間の画像を生成するために用いるデータ、例えば、仮想空間中に配置される仮想物体（ポリゴンで構成されているものとする）を構成する各ポリゴンの頂点座標値データ、各ポリゴンの構成情報、テクスチャデータ等を保持する為のメモリとして機能すると共に、生成した仮想空間の画像のデータを一時的に記憶するためのメモリとしても機能する。なお、ＶＲＡＭ１０４は必ずしも画像出力装置１０３の内部に設ける必要はなく、ＲＡＭ１０２によってＶＲＡＭ１０４の機能を実現してもよい。
【００２３】
なお、画像出力装置１０３による仮想空間の画像生成処理の詳細については後述する。
【００２４】
ディスク装置１０６は、ハードディスクドライブ装置に代表される大容量情報記憶装置であって、ここにはＯＳ（オペレーティングシステム）や、コンピュータ１００が行う後述の各処理をＣＰＵ１０１に実行させるためのプログラムやデータが保存されており、これらはＣＰＵ１０１の制御に従ってＲＡＭ１０２や（その一部は）ＶＲＡＭ１０４にロードされる。
【００２５】
入力装置１０７は、位置姿勢検出装置３００や操作デバイス４００から受けた各種の信号をデータとして受ける為のインターフェースとして機能するものであり、受けたデータはＲＡＭ１０２に送出する。
【００２６】
システムバス１０５は、上述の各部を繋ぐもので、上述の各部はこのシステムバス１０５を介して互いにデータ通信を行うことができる。
【００２７】
次に、操作デバイス４００について説明する。操作デバイス４００は、キーボードやマウスなどにより構成されており、本コンピュータ１００の操作者が操作することで、各種の指示をＣＰＵ１０１に対して入力することができる。
【００２８】
次に、表示装置２００について説明する。表示装置２００は、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ１０１による処理結果（画像情報）、例えば、ＣＰＵ１０１による制御に従って画像出力装置１０３が生成した仮想空間の画像を表示する。
【００２９】
次に、位置姿勢検出装置３００について説明する。位置姿勢検出装置３００は、観察者の視点の位置姿勢を検出するための装置群でもって構成されている。視点の位置姿勢を検出するための具体的な技術については後述する。
【００３０】
＜画像出力装置１０３について＞
次に、画像出力装置１０３について説明する。図２は、画像出力装置１０３の機能構成を示す図である。画像出力装置１０３は上述の通り、仮想空間の画像を生成する処理を行うのであるが、より具体的には、仮想空間中に配置されたそれぞれの仮想物体を視点から見た画像を生成する。また、本実施形態では仮想物体はポリゴンでもって構成されているものとするし、ポリゴンによってはテクスチャ画像をマッピングする。
【００３１】
よって画像出力装置１０３は、このような仮想物体を仮想空間中に配置し、仮想物体を配置した仮想空間を視点から見た場合に見える画像を生成するための機能構成、即ち図２に示す如く構成を有することになる。なお、同図において「記憶部」なるものは全てＶＲＡＭ１０４またはＲＡＭ１０２によって実現される。また、この「記憶部」なるものが記憶保持する後述の各種のデータは、ディスク装置１０６から適宜ロードされたものである。
【００３２】
光源情報記憶部５００は、仮想空間中に設定される光源に係る情報を記憶保持する。光源に係る情報には、平行光源、点光源といった光源の種類、光源色、光源の強さ、光源の位置方向など、仮想物体に対して所望の光を照光する為に必要なデータが含まれる。
【００３３】
形状モデル記憶部５１０は、仮想物体の形状データを記憶保持する。この形状データには、仮想物体を構成する各ポリゴンについてのデータ、ポリゴンを構成する各頂点についてのデータが含まれている。
【００３４】
図３は、仮想物体を構成する各頂点に関するデータの構成例を示す図である。同図に示したテーブル６５０は１つの仮想物体について１つ存在する。６４０は、仮想物体を構成する各頂点を識別するための情報（同図では頂点データ識別番号）が登録された列で、６５０は、頂点の座標値（仮想物体について予め設定されたローカル座標系における座標値）と、法線ベクトルとのセット（６００ａ、６００ｂ、６００ｃ）が頂点毎に登録された列である。よってこのテーブルを参照すると、頂点の識別番号を１つ特定すれば、この頂点の座標値、及び法線ベクトルは特定することができる。
【００３５】
図４は、仮想物体を構成する各ポリゴンに関するデータの構成例を示す図である。同図に示したテーブル６６０は１つの仮想物体について１つ存在する。
【００３６】
６７０は、仮想物体を構成する各ポリゴンを識別するための情報（同図では面識別番号）が登録された列である。
【００３７】
６８０は、１つのポリゴンを構成するそれぞれの頂点の識別番号を登録した列である。例えば、面識別番号が「１」のポリゴンは、頂点データ識別番号が「１」，「２」，「３」の頂点でもって構成されているということがこの列６８０を参照すれば特定できるし、面識別番号が「２」のポリゴンは、頂点データ識別番号が「２」，「３」，「４」の頂点でもって構成されているということがこの列６８０を参照することで特定することができる。
【００３８】
６９０は、テクスチャマッピングに用いるテクスチャ画像が保持されているメモリ領域へのポインタ、又はその画像ファイル名など、テクスチャ画像を参照するための情報（参照情報）が登録された列である。なお、ポリゴンによってはテクスチャマッピングを行わないものもあるので、そのようなポリゴンについてはこの列６９０には何も登録しない。例えば、面識別番号が「１」のポリゴンには参照情報６９０ａが登録されているので、このポリゴンにはこの参照情報６９０ａで特定されるテクスチャ画像を用いたテクスチャマッピングを行うのであるが、面識別番号が「２」のポリゴンには何の参照情報も登録されていないので、このポリゴンにはテクスチャマッピングは行わないということがこの列６９０を参照することで特定することができる。
【００３９】
７１０は、テクスチャマッピング対象のポリゴンを構成するそれぞれの頂点が、テクスチャ画像上のどの座標位置に対応するのかを登録する為の列である。なお、ポリゴンによってはテクスチャマッピングを行わないものもあるので、そのようなポリゴンについてはこの列７１０には何も登録しない。例えば面識別番号が「１」のポリゴンを構成する各頂点（頂点データ識別番号が「１」、「２」、「３」の頂点）には、参照情報６９０ａで特定されるテクスチャ画像上で座標値（ｕ１，ｖ１）、（ｕ２，ｖ２）、（ｕ３，ｖ３）のそれぞれの箇所が対応するということがこの列７１０を参照することで特定することができる。
【００４０】
これにより、例えば面識別番号が「１」のポリゴンには、参照情報６９０ａで特定されるテクスチャ画像のうち、座標値（ｕ１，ｖ１）、（ｕ２，ｖ２）、（ｕ３，ｖ３）で囲まれた領域中の画像をテクスチャマッピングするという情報が得られる。
【００４１】
７００は、環境マッピングを行うポリゴンについては「１」のフラグ、環境マッピングを行わない（テクスチャマッピングを行わない旨も含む）ポリゴンについては「０」のフラグを登録する列である。従って同図の例では、面識別番号が「１」のポリゴンに対しては環境マッピングを行うということが、この列７００を参照することで特定することができる。本実施形態では、視点の姿勢に応じて、テクスチャ画像のうち環境マッピングに用いる領域を動的に変更するので、テクスチャ画像のうち、フラグが「１」のポリゴンに対してマッピングする領域は視点の姿勢に応じて動的に変更される。この変更について詳しくは後述する。
【００４２】
また、形状モデル記憶部５１０には、ポリゴンの質感に関する情報や、環境マッピングを適用しない通常のテクスチャ画像などの情報も保持されている。
【００４３】
図２に戻って、視点位置姿勢記憶部５２０は、仮想空間中に設定される視点の位置や姿勢を記憶保持する。本実施形態ではこの視点位置姿勢記憶部５２０には、上記位置姿勢検出装置３００によって得られる視点の位置姿勢が格納されることになる。
【００４４】
ポリゴン描画部５５０は、この視点から見える仮想空間の画像を生成する。
【００４５】
環境マッピング画像記憶部５３０は、環境マッピングに用いるテクスチャ画像（環境マッピング画像）を保持する。環境マッピング画像は、ポリゴンに対して、映り込みを付加するために使用される画像である。この環境マッピング画像は、予め映り込む現実の周囲環境を撮影して取得する必要がある。
【００４６】
図５は、環境マッピング画像の一例を示す図である。この画像の取得方法について図６を用いて説明する。図６は、環境マッピング画像を得るための構成を示す図である。
【００４７】
まず、仮想空間を設定しようとする現実空間（観察者が移動しうる現実空間）中に、鏡など、反射率の高い曲面体Ｂを周囲の環境が映り込むように配置する。一般的に、曲面体Ｂには球体や半球体などが用いられるが、放物面体、双曲面体などの曲面体を用いてもよい。この曲面体ＢをカメラＡで撮影することによって、図５に示すような環境マッピング画像を取得する。
【００４８】
このとき、カメラＡの光軸が曲面体Ｂの中心を通過するようにし、カメラＡの焦点距離を長くとることが望ましい。本実施形態では、曲面体Ｂに映り込む画像をカメラＡで撮影することで環境マッピング画像を取得したが、カメラＡに魚眼レンズなどの高視野のレンズを装着し、周囲環境を直接撮影するようにしてもよい。この場合、曲面体Ｂは不要となる。また、本実施形態では、環境マッピング画像に実写画像を用いているが、これに限定するものではなく、例えば、ＣＧを描画して得た画像を曲面体にマッピングし、その画像を環境マッピング画像として用いてもよい。
【００４９】
画像回転行列記憶部５４０は、後述する回転行列のデータを記憶保持する。この回転行列は、環境マッピング画像回転部５７０によって生成されるものであり、視点の姿勢に基づいて生成する。回転行列についての説明は後述する。
【００５０】
ポリゴン描画部５５０は、光源情報記憶部５００、形状モデル記憶部５１０、視点位置姿勢記憶部５２０のそれぞれが保持しているデータを用いて、ポリゴンを仮想空間中に配置することで仮想物体を生成する。環境マッピング部５６０は、この仮想物体において環境マッピングを行うと設定されたポリゴン（図４のテーブルにおいて、列７００のフラグ値が「１」のポリゴン）に対して、環境マッピング画像（列６６０においてこのポリゴンに対する参照情報で特定されるテクスチャ画像）のうち後述する処理で特定される領域をマッピングする。
【００５１】
そしてポリゴン描画部５５０は、環境マッピングが施されたポリゴンを有する仮想物体を配置した仮想空間を視点から見た画像を生成する。生成した画像は出力画像記憶部５８０に送出される。
【００５２】
出力画像記憶部５８０は受けた画像を画像出力部５９０に出力するのであるが、画像出力部５９０は、受けた画像を上記表示装置２００に適した形式の信号に変換して上記表示装置２００に出力する。
【００５３】
＜仮想空間画像の生成処理について＞
次に、上記コンピュータ１００が行う、仮想空間画像の生成処理について、同処理のフローチャートを示す図７を用いて説明する。なお、同図のフローチャートに従った処理をＣＰＵ１０１に実行させるためのプログラムやデータはディスク装置１０６に保存されており、これを適宜ＣＰＵ１０１による制御に従ってＲＡＭ１０２にロードし、ＣＰＵ１０１がこれを用いて処理を実行することで、コンピュータ１００は以下説明する各処理を実行することになる。
【００５４】
先ず、コンピュータ１００を起動すると、各種の初期化処理を行うのであるが、この初期化処理には、図２に示した各記憶部が保持する対象のデータ群をディスク装置１０６からＲＡＭ１０２にロードする処理も含まれている（ステップＳ１０１０）。
【００５５】
次に、観察者の視点の位置姿勢を取得する（ステップＳ１０２０）。観察者の視点位置を取得するための方法は様々なものが考えられ、本実施形態では何れの方法を用いても良いのであるが、例えば以下のような方法がある。
【００５６】
位置姿勢検出装置３００を磁気センサ、磁気の発信源、位置姿勢計算装置により構成する。磁気の発信源は現実空間中に所定の位置姿勢でもって配置する。磁気センサは観察者の視点（右目、若しくは左目）近傍位置に取り付ける。位置姿勢計算装置は、磁気センサ、磁気の発信源を制御すると共に、磁気センサから受けた信号をデータとしてコンピュータ１００に送出する。
【００５７】
このような構成において、磁気の発信源は現実空間中に磁界を発生する。よって、磁気センサは、自身の位置姿勢に応じて検出される磁気の変化を検知し、検知した結果を信号として位置姿勢計算装置に送出する。この信号は、センサ座標系（磁気の発信源の位置を原点とし、この原点で互いに直交する３軸をそれぞれｘ軸、ｙ軸、ｚ軸とする座標系）における磁気センサの位置姿勢を示すものである。
【００５８】
よって位置姿勢計算装置は、この信号をデータとしてコンピュータ１００に送出する。これにより、コンピュータ１００は、磁気センサのセンサ座標系における位置姿勢を得ることができる。この場合、視点と磁気センサとの位置姿勢関係は予め測定されており、測定した結果をデータとしてコンピュータ１００のディスク装置１０６に保存しているので、このデータを「センサ座標系における磁気センサの位置姿勢を示すデータ」に加えれば、結果として「センサ座標系における視点の位置姿勢」を得ることができる。
【００５９】
また、世界座標系（現実空間中の所定の１点を原点とし、この原点で互いに直交する３軸をそれぞれｘ軸、ｙ軸、ｚ軸とする座標系）と磁気の発信源との位置姿勢関係を予め求めておき、これをデータとしてディスク装置１０６に保存させておけば、このデータを、先に求めた「センサ座標系における視点の位置姿勢」に加えることで、「世界座標系における視点の位置姿勢」を求めることができる。なお、このような視点の位置姿勢を求める方法は、センサが光学式センサ、超音波センサのように磁気センサでなくても適用可能である。
【００６０】
また、このほかの方法も考えられる。即ち、観察者の視点の位置近傍に現実空間を撮像するカメラを取り付ける。また、現実空間中には、このカメラで撮像可能な範囲内に複数のマーカを配置する。それぞれのマーカの現実空間中における位置情報は予めディスク装置１０６に保存しておく。そしてこのカメラで撮像した現実空間画像におけるマーカ位置と、現実空間中におけるマーカの位置とを用いて観察者の視点の位置を求める。
【００６１】
また、マーカなどの識別対象を観察者が保持し、別の場所に設置したカメラによって識別対象を撮影し、同様の手段で観察者の視点の位置姿勢を算出するようにしてもよい。
【００６２】
このように、観察者の視点の位置姿勢を取得する方法については様々なものが考えられ、本実施形態には様々なものが適用できる。また、求めた位置姿勢が属する座標系については適宜決めればよい。
【００６３】
また、本実施形態では視点の位置と姿勢の両方を取得するようにしているが、視点の姿勢のみが動き、視点の位置に関してはほとんど動かないような状況もある。このような場合には、視点の姿勢のみを求め、視点の位置については、固定された視点の位置データをディスク装置１０６に保存させておく。この場合、ステップＳ１０２０では視点の姿勢は何れかの方法によって求め、視点の位置についてはこのディスク装置１０６に保存されている視点の位置データをＲＡＭ１０２にロードすることで視点の位置姿勢をＲＡＭ１０２に取得する。
【００６４】
次に、ＣＰＵ１０１は、ＲＡＭ１０２にロードしたデータ群のうち、光源データ、仮想物体の形状データ、視点の位置姿勢データ、環境マッピング画像を順次画像出力装置１０３のＶＲＡＭ１０４に転送する（ステップＳ１０３０）。なお、画像出力装置１０３内にＶＲＡＭ１０４を設けず、ＲＡＭ１０２内の一部のエリアをＶＲＡＭ１０４として用いる場合には、ステップＳ１０３０の処理は省略する。
【００６５】
次に、視点の姿勢成分に基づいて、以下の処理で用いる回転行列を求める（ステップＳ１０４０）。ここで、回転行列、及びその求め方について説明する。
【００６６】
図８は、環境マッピング画像とそれに設けた座標系を示す図である。同図において８００は環境マッピング画像で、以下の処理のために、画像の中心位置を原点Ｏ、この原点を通る横軸をｕ軸、この原点を通る縦軸をｖ軸、そして画像の縦、横のサイズをそれぞれ１に正規化した座標系を設定する。
【００６７】
上述のとおり、テクスチャマッピングを行うポリゴンについては、このテクスチャ画像のうち、どの領域をマッピングに用いるのかが列７１０に定義されている。より詳しくは、Ｎ（Ｎ≧３）個の頂点で構成されるポリゴンに対してテクスチャマッピングを行う場合、このＮ頂点のそれぞれに対応するテクスチャ画像上のＮ点で囲まれた領域（基本領域）が、このポリゴンに対してテクスチャマッピングされる。
【００６８】
しかし、このテクスチャマッピングが環境マッピングである場合、本実施形態では、この基本領域は視点の姿勢に応じてテクスチャ画像上を移動する。
【００６９】
そのためにはステップＳ１０４０では先ず、視点のロール角（視線方向を軸とした場合に、この軸周りの回転角）ｐを得る。これは、ステップＳ１０２０で取得した視点の姿勢成分を用いれば得られる。そしてロール角をｐとした場合の回転行列Ｒを以下の式に従って求める。
【００７０】
｜  ｃｏｓ（ｐ）  ｓｉｎ（ｐ）  ｜
Ｒ＝｜                              ｜
｜−ｓｉｎ（ｐ）  ｃｏｓ（ｐ）  ｜
求めた回転行列のデータはＲＡＭ１０２もしくはＶＲＡＭ１０４内の画像回転行列記憶部５４０に相当するエリアに格納する。
【００７１】
次に、ＣＰＵ１０１は画像出力装置１０３を制御して、ポリゴン描画部５５０を動作させ、光源情報記憶部５００、形状モデル記憶部５１０、視点位置姿勢記憶部５２０が保持しているデータを用いて、ポリゴンを仮想空間中に配置することで仮想物体を生成する（ステップＳ１０５０）。即ち、図４のテーブルを参照してそれぞれのポリゴンを仮想空間中に配置するのであるが、例えば面識別番号が「１」のポリゴンを仮想空間中に配置する場合には、頂点データ識別番号が「１」、「２」、「３」のそれぞれの頂点の座標値を図３のテーブルから取得し、取得した座標にそれぞれの頂点を配置することで、面識別番号が「１」のポリゴンを仮想空間中に配置することができる。これはその他のポリゴンについても同様である。なお、各ポリゴンを仮想空間中に配置して仮想物体を仮想空間中に配置するための処理についてはこのような処理に限定するものではない。
【００７２】
次に、ＣＰＵ１０１は画像出力装置１０３を制御して、環境マッピング部５６０を動作させ、形状モデル記憶部５１０、視点位置姿勢記憶部５２０、環境マッピング画像記憶部５３０、画像回転行列記憶部５４０が保持しているデータを用いて、ステップＳ１０５０で生成された仮想物体を構成するポリゴンのうち、環境マッピングを行うポリゴンを特定し、特定したポリゴンに対して環境マッピングを行う（ステップＳ１０６０）。
【００７３】
ここで、本実施形態に係る環境マッピング処理の詳細について図９を用いて説明する。図９は、ステップＳ１０６０における処理の詳細を示すフローチャートである。
【００７４】
先ず、図４のテーブルの列７００を参照してフラグ値が「１」であるものを検索する（ステップＳ２０１０）。図４では面識別番号が「１」のポリゴンが検索される。そしてフラグ値が「１」のものが見つかった場合には処理をステップＳ２０２０に進める。以下の説明ではステップＳ２０１０における検索で面識別番号が「ｇ」のポリゴン（以下、ポリゴンｇと呼称する）のフラグ値が検索にヒットしたとする。
【００７５】
よって、次に、環境マッピング画像のうち、このポリゴンｇにマッピングする領域を決定する（ステップＳ２０２０）。先ず、ポリゴンｇを構成する頂点Ａ１、Ａ２、、、ＡＮの法線ベクトルを得る。即ち、図４のテーブルを参照し、面識別番号が「ｇ」のポリゴンについて列６８０を参照して、ポリゴンｇを構成する頂点Ａ１、Ａ２、、、ＡＮの識別番号を特定し、図３のテーブルから、頂点Ａ１、Ａ２、、、ＡＮの識別番号に対応して保持されている法線ベクトルを得る。
【００７６】
そして、頂点Ａ１、Ａ２、、、ＡＮに対応する環境マッピング画像上の対応点位置を求めるのであるが、先ず、頂点Ａ１の法線ベクトルをｎ（単位ベクトルに正規化）、視線ベクトル（視点の姿勢成分から一意に特定可能）をｅとすると、反射ベクトルｒを以下の式に従って求める。
【００７７】
ｒ＝−２ｎ×（ｎ・ｅ）＋ｅ
ここで（ｎ・ｅ）は、ベクトルｅとｎとの内積を示す。そしてｒ＝（Ｘ、Ｙ、Ｚ）とした場合に、頂点Ａ１に対応する環境マッピング画像上の対応点位置Ｋ１（ｕ１、ｖ１）は以下の式に従って求めることができる。
【００７８】
ｕ１＝Ｘ／ｍ
ｖ１＝Ｙ／ｍ
但し、ｍ＝√（Ｘ２＋Ｙ２＋（Ｚ＋１）２）
このような処理をその他の頂点Ａ２、Ａ３、、ＡＮについても行う。これにより、頂点Ａ１、Ａ２、、、ＡＮに対応する環境マッピング画像上の対応点位置Ｋ１、Ｋ２、、、ＫＮを求めることができる。なお、それぞれの頂点について求めた対応点位置はそれぞれ図４のリストの列７１０の対応する位置に上書きする。
【００７９】
次に、求めた対応点位置Ｋ１、Ｋ２、、、ＫＮを、上記原点Ｏ周りに回転させた対応点位置Ｋ’１、Ｋ’２、、、Ｋ’Ｎを得る（ステップＳ２０３０）。回転には上記回転行列Ｒを用いる。なお、ステップＳ２０３０で求めたそれぞれの対応点位置はそれぞれ図４のリストの列７１０の対応する位置に上書きする。
【００８０】
よって、ポリゴンｇに対して環境マッピングを行う場合には、環境マッピング画像のうち、Ｋ’１、Ｋ’２、、、Ｋ’Ｎで囲まれた領域内の画像をポリゴンｇに対してマッピングすればよい。
【００８１】
これにより、環境マッピング画像のうち、視点のロール角に応じて、環境マッピング対象ポリゴンにマッピングする領域を特定することができる。
【００８２】
よって次に、図４のテーブルにおいて、ポリゴンｇに対応する列７１０に登録されている各対応点位置で囲まれた（環境マッピング画像内の）領域をポリゴンｇに対してマッピングする（ステップＳ２０４０）。この環境マッピング画像は、ポリゴンｇに対応する列６９０に登録されている参照情報を参照すれば一意に特定することができる。
【００８３】
そして、処理をステップＳ２０１０に戻し、以降の処理を繰り返す。
【００８４】
図７に戻って、ＣＰＵ１０１は画像出力装置１０３を制御してポリゴン描画部５５０を動作させ、環境マッピングが施された仮想物体を含む仮想空間を視点から見た画像（仮想空間画像）を生成し、更にＣＰＵ１０１は画像出力部５９０を制御して出力画像記憶部５８０、画像出力部５９０を動作させ、生成された仮想空間の画像を表示装置２００に出力する（ステップＳ１０７０）。
【００８５】
そして、以上の処理を終了する旨をＣＰＵ１０１が検知した場合、例えば、操作デバイス４００を操作者が操作して処理を終了させる旨の指示を入力し、ＣＰＵ１０１がこれを検知した場合、若しくは予め定めた終了条件に合致したことをＣＰＵ１０１が検知した場合には本処理を終了するのであるが、検知していない場合には処理をステップＳ１０８０を介してステップＳ１０２０に戻し、以降の処理を繰り返す。
【００８６】
以上の説明により、本実施形態によって、視点の姿勢が変化すればそれに伴って、環境マッピング対象領域にマッピングされる画像も変化するので、結果として周囲環境から仮想物体への映り込みを適切に表現することができるので、観察者は違和感無く環境マッピングが施された仮想物体を観察することができる。
【００８７】
なお、本実施形態では仮想空間中の視点として、実際の観察者の視点を用いたが、これに限定するものではなく、テレビゲームのように、操作デバイス４００を操作することでその位置や姿勢を変更することのできる視点を仮想空間中に配置するようにしても良い。
【００８８】
［第２の実施形態］
第１の実施形態では、環境マッピング対象ポリゴンを構成する各頂点に対応する環境マッピング画像上の対応点位置を、環境マッピング画像の中心部周りに視点のロール角分だけ回転させた対応点位置で囲まれた領域を、環境マッピング対象ポリゴンにマッピングする領域として特定したが、本実施形態では、先ず環境マッピング画像の中心部周りに視点のロール角分だけ環境マッピング画像を回転させた回転後環境マッピング画像を得る。そして、環境マッピング対象ポリゴンを構成する各頂点に対応する回転後環境マッピング画像上の対応点位置で囲まれた領域を、環境マッピング対象ポリゴンにマッピングする領域として特定する。
【００８９】
なお、本実施形態に係るシステムのハードウェア構成については第１の実施形態と同じであるとするが、画像出力部５９０の機能構成が第１の実施形態と異なる。図１０は、本実施形態に係る画像出力部５９０の機能構成を示すブロック図である。本実施形態に係る画像出力部５９０の機能構成は、第１の実施形態に係る画像出力部５９０の機能構成から画像回転表列記憶部５４０を省いた構成となる。
【００９０】
本実施形態では、環境マッピング画像回転部５７０は第１の実施形態と同様にして回転行列を生成するのであるが、この回転行列を用いて、環境マッピング画像そのものを原点Ｏ周りに回転させ、回転後環境マッピング画像を得る。そして環境マッピング画像記憶部５３０が記憶保持している環境マッピング画像を、この回転後環境マッピング画像に更新する。これにより、以降用いる環境マッピング画像は、この回転後環境マッピング画像となる。
【００９１】
図１１は、本実施形態に係る仮想空間画像処理のフローチャートである。同図において、図７と同じステップ番号については同じ処理であるので、説明は省略する。
【００９２】
ステップＳ１０４５では、ＣＰＵ１０１は、画像出力部５９０を制御して環境マッピング画像回転部５７０を動作させ、先ず、第１の実施形態と同様にして回転行列を生成し、生成した回転行列を用いて、環境マッピング画像を原点Ｏ周りに視点のロール角分だけ回転させ、回転後環境マッピング画像を得る。即ち、環境マッピング画像を構成するそれぞれの画素を原点Ｏ周りに視点のロール角分だけ回転させた画素群を得、これを回転後環境マッピング画像とする。
【００９３】
ここで一般的には、画像を回転させると、回転後の画像に欠損が生じる。図１２（ａ）は、回転前の画像（画像Ａ）の例を示す図で、図１２（ｂ）は図１２（ａ）に示した画像Ａを回転させた画像（画像Ｂ）の例を示す図である。画像Ｂにおいて、斜線で示した部分は元の画像Ａには存在しないものであると共に、元の画像Ａの角部は画像Ｂでは損なわれている。このように、一般には画像を回転させると、元の画像の情報の一部は欠損することになる。
【００９４】
しかし、環境マッピングにおいては、環境マッピング画像のうち、円の内側の領域のみがマッピングに使用される。図１３（ａ）は回転前の環境マッピング画像（画像Ｃ）の例を示す図で、図１３（ｂ）は図１３（ａ）に示した画像Ｃを回転させた環境マッピング画像（画像Ｄ）の例を示す図である。同図に示す如く、画像Ｄは画像Ｂと同様に、回転前の画像の情報が一部欠損しているものの、実際に使用される円の内側の領域（同図では「有効領域」）は回転前と比べても欠損していないので、環境マッピング画像を回転させても、使用する部分の情報欠損はない。
【００９５】
また、ステップＳ１０６５では、ＣＰＵ１０１は画像出力部５９０を制御することで環境マッピング部５６０を動作させ、形状モデル記憶部５１０、視点位置姿勢記憶部５２０、環境マッピング画像記憶部５３０が保持しているデータを用いて環境マッピングを行う。
【００９６】
図１４は、ステップＳ１０６５における処理のフローチャートである。同図のフローチャートは、図９のフローチャートからステップＳ２０３０を省いたものとなっている。即ち、環境マッピング対象ポリゴンに対してはステップＳ２０２０、Ｓ２０４０の処理を行う。即ち、回転後環境マッピング画像のうち、環境マッピング対象ポリゴンにマッピングする領域を決定し（ステップＳ２０２０）、決定した領域をこの環境マッピング対象ポリゴンに対してマッピングする（ステップＳ２０４０）。即ち第１の実施形態に係るステップＳ２０２０，Ｓ２０４０では、環境マッピング画像を用いていたものの、本実施形態に係るステップＳ２０２０、Ｓ２０４０では回転後環境マッピング画像を用いる点のみが異なる。
【００９７】
［第３の実施形態］
上記各実施形態では仮想空間の画像は表示装置２００に表示するものとしているが、観察者の頭部にＨＭＤ（頭部装着型表示装置）を到着し、このＨＭＤが有する表示画面にコンピュータ１００が生成した仮想空間の画像を生成するようにしても良い。その場合、このＨＭＤには観察者の視点の位置姿勢を計測するために上述の磁気センサを取り付けるようにしても良いし、カメラを取り付けるようにしても良い。
【００９８】
［その他の実施形態］
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【００９９】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１００】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１０１】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０１０２】
【図１】システムのハードウェア構成を示す図である。
【図２】画像出力装置１０３の機能構成を示す図である。
【図３】仮想物体を構成する各頂点に関するデータの構成例を示す図である。
【図４】仮想物体を構成する各ポリゴンに関するデータの構成例を示す図である。
【図５】環境マッピング画像の一例を示す図である。
【図６】環境マッピング画像を得るための構成を示す図である。
【図７】仮想空間画像の生成処理のフローチャートである。
【図８】環境マッピング画像とそれに設けた座標系を示す図である。
【図９】ステップＳ１０６０における処理の詳細を示すフローチャートである。
【図１０】本発明の第２の実施形態に係る画像出力部５９０の機能構成を示すブロック図である。
【図１１】本発明の第２の実施形態に係る仮想空間画像処理のフローチャートである。
【図１２】（ａ）は、回転前の画像（画像Ａ）の例を示す図で、（ｂ）は（ａ）に示した画像Ａを回転させた画像（画像Ｂ）の例を示す図である。
【図１３】（ａ）は回転前の環境マッピング画像（画像Ｃ）の例を示す図で、（ｂ）は（ａ）に示した画像Ｃを回転させた環境マッピング画像（画像Ｄ）の例を示す図である。
【図１４】ステップＳ１０６５における処理のフローチャートである。
【図１】
2006252060.tif 000003
【図２】
2006252060.tif 000004
【図３】
2006252060.tif 000005
【図４】
2006252060.tif 000006
【図５】
2006252060.tif 000007
【図６】
2006252060.tif 000008
【図７】
2006252060.tif 000009
【図８】
2006252060.tif 000010
【図９】
2006252060.tif 000011
【図１０】
2006252060.tif 000012
【図１１】
2006252060.tif 000013
【図１２】
2006252060.tif 000014
【図１３】
2006252060.tif 000015
【図１４】
2006252060.tif 000016