図1を参照して、本発明の実施形態における、情報処理システムの構成の一例について説明する。図1は、本発明の実施形態における、情報処理システムの構成の一例を示す図である。
本発明の情報処理システムは、PC100A、HMD(ヘッドマウントディスプレイ)101A、PC100B、HMD101B、赤外線カメラ104等から構成される。以下、PC100A、PC100Bを総称する場合、PC100と記載する。また、HMD101A、HMD101Bを総称する場合、HMD101と記載する。
PC100とHMD101(表示装置)、赤外線カメラ104は、図1に示すLAN150や、USB(Universal Serial Bus)等を介して通信可能に接続されている。
部屋には、3DCG(オブジェクト/3次元モデル)が対応付けられた二次元マーカであるターゲットマーカが貼り付けられた現実物体(モック103)が存在し、当該ターゲットマーカ105をHMD101のカメラが撮像して当該マーカの座標の情報をPC100が算出して記憶することで、PC100は、各種マーカに対応付けられたオブジェクトを外部メモリから読み出して当該オブジェクトを配置する空間上の座標を算出し、HMD101で撮像された現実画像上に、HMD101のから見た角度のオブジェクトを重畳して重畳画像(MR画像)の生成処理を行う。当該重畳画像の生成方法の具体的な内容は、各引用文献に示した通り公知であるため、ここでは詳細な説明は割愛する。
PC100Aは、HMD101Aから、HMD101Aで撮像した現実画像を取得して重畳画像を生成し、HMD101Aのディスプレイに表示させるべく、HMD101Aに重畳画像を送信する。また、PC100Bは、HMD101Bから、HMD101Bで撮像した現実画像を取得して重畳画像を生成し、HMD101Bのディスプレイに表示させるべく、HMD101Bに重畳画像を送信する。
各PC100には、本発明の各種実施形態にて用いる各種データが予め記憶されている。PC100AとPC100Bに記憶されているデータは同様の構成を備えているため、例えばモック103に対して対応付けて記憶されている(モック103のターゲットマーカ105を認識した場合に描画される)オブジェクトはPC100AとPC100Bで共通である。
また、ターゲットマーカ105に対するどの座標(位置)に当該オブジェクトを描画するかも共通である。つまり、ターゲットマーカ上の一点を原点とした、オブジェクトを配置する座標、及びオブジェクトを配置する角度が同一であるため、HMD101Aを被るユーザとHMD101Bを被るユーザは、各ユーザの視点から見た、同じオブジェクトを閲覧することができる。
例えばHMD101Aを被るユーザとHMD101Bを被るユーザが向かい合っている状態で、各ユーザの間にあるオブジェクト(モック103及びターゲットマーカ105)が、HMD101Aを被るユーザから見て右に傾いた場合、HMD101Bを被るユーザには当該オブジェクトが左に傾いたように見える。
ユーザは、当該モック103を持ち運ぶことで、当該モック103に貼付されたターゲットマーカに対応するオブジェクトを移動させる。マーカの移動に応じてオブジェクトを移動させる技術は、例えば「公開特許公報/特開2013−50883」等に記載の通り、既存の技術であるため、ここでは説明を割愛する。
赤外線カメラ104は、HMD101に設置された光マーカ(オプティカルマーカ)を撮影し、撮影した結果取得したHMD101の位置姿勢の情報(座標の情報)をPC100に送信する。
尚、図1に示す各種端末、マーカ等の構成は一例であり、用途や目的に応じて様々な構成例がある。例えば、図1の説明においては、HMD101の空間上の位置姿勢を特定するために赤外線カメラを用いたが、HMD101の位置や姿勢を特定できれば、どのような形態でも構わない。例えば、部屋の壁面に予め大きさ・識別情報が登録されたマーカを貼り付けておき、HMDが撮像した画像中の3つのマーカ(その位置は既知)それぞれのサイズから、HMD101からそれぞれまでの位置検出マーカまでの距離を求める。そして、逆に、3つの位置検出マーカから求めた3つの距離が重なる位置を、HMD101の位置として決定するようにしてもよい。HMDの向いている角度は、当該画像中のマーカの傾きから算出可能である。以上が図1の、本発明の実施形態における、情報処理システムの構成の一例についての説明である。
次に図2を参照して、本発明の実施形態における、各種装置のハードウェア構成の一例について説明する。図2は、本発明の実施形態における、各種装置のハードウェア構成の一例を示す図である。尚、図2のPC100とHMD101のハードウェアの構成は一例であり、用途や目的に応じて様々な構成例がある。
まず、PC100は、CPU201、ROM202、RAM203、システムバス204、入力コントローラ205、ビデオコントローラ206、メモリコントローラ207、通信I/Fコントローラ208、入力デバイス209、ディスプレイ210、外部メモリ211等を備える。
CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
また、ROM202あるいは外部メモリ211には、CPU201の制御プログラムであるBIOS(Basic Input / OutputSystem)やオペレーティングシステムや、各種装置の実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。RAM203は、CPU201の主メモリ、ワークエリア等として機能する。
CPU201は、処理の実行に際して必要なプログラム等をRAM203にロードして、プログラムを実行することで各種動作を実現するものである。
また、入力コントローラ(入力C)205は、キーボードやマウス250等のポインティングデバイスからの入力を制御する。
ビデオコントローラ(VC)206は、ディスプレイ210等の表示器への表示を制御する。表示器は液晶ディスプレイでもCRTでも構わない。
メモリコントローラ(MC)207は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフレキシブルディスク(FD)或いはPCMCIAカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ211へのアクセスを制御する。
通信I/Fコントローラ(通信I/FC)208は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。通信I/Fコントローラ208は、赤外線カメラ104との通信を制御する。
尚、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ210上での表示を可能としている。また、CPU201は、ディスプレイ210上の不図示のマウスカーソル等でのユーザ指示を可能とする。
本発明のPC100が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ211に格納されている。
次に、HMD101は、右目ビデオカメラ221、左目ビデオカメラ222、右目ディスプレイ223、左目ディスプレイ224、コントローラ225等を備える。
右目ビデオカメラ221と、左目ビデオカメラ222は、現実世界を撮影するビデオカメラである。右目ビデオカメラ221は、右目ディスプレイ223に表示するための画像を撮影し、左目ビデオカメラ222は、左目ディスプレイ224に表示するための画像を撮影する。撮影された画像(現実空間画像)は、コントローラ225がPC100に送信し、通信I/Fコントローラ208を通じてPC100が受信する。
PC100から通信I/Fコントローラ208を通じて複合現実画像が送信されると、コントローラ225が受信し、受信した複合現実画像を右目ディスプレイ223と左目ディスプレイ224に表示させる。この時、右目ビデオカメラ221で撮影された現実空間画像に基づいて生成された複合現実画像は、右目ディスプレイ223に表示し、左目ビデオカメラ222で撮影された現実空間画像に基づいて生成された複合現実画像は、左目ディスプレイ224に表示する。以上が図2の、本発明の実施形態における、各種装置のハードウェア構成の一例についての説明である。
次に図3を参照して、本発明の実施形態における、各種装置の機能構成の一例について説明する。図3は、本発明の実施形態における、各種装置の機能構成の一例を示す図である。
PC100のマーカ情報記憶部301は、マーカの画像(識別画像)、マーカのサイズ、マーカのID、いずれのオブジェクトと当該マーカが対応付けられているかを記憶する記憶部である。撮像画像受信部302は、HMD101より現実画像である撮像画像を受信して取得する処理部である。
位置情報受信部303は、赤外線カメラ104からHMD101の位置・姿勢の情報を受信して取得する処理部である。
オブジェクト記憶部304は、オブジェクト(3次元モデル)の情報を記憶する記憶部である。オブジェクト配置位置特定部305は、オブジェクトを配置する位置を、撮像画像のマーカ位置等から特定する特定部である。
手情報取得部306は、撮像画像から手(手の画像)を検出し、検出した手の数、空間上の手の位置の情報を取得する。手の位置は、例えば、三角測量でHMDのカメラから手までの距離を測定し、PC100が、当該HMD101から手までの距離の情報とHMD101の位置・姿勢の情報から、空間上の手の位置(座標)を特定するものとする。
オブジェクト透過判定部307は、手情報取得部306で取得された手の情報(例えば手の数の情報)を用いて、オブジェクトを透過するか(オブジェクトを透過して重畳した重畳画像を生成するか)を判定する判定部である。例えば、撮像画像中の手の数が所定数以上か判定し、所定数以上である場合に、ターゲットマーカ105に対応するオブジェクトを透過するものと判定する。
例えば、撮像画像において手が2つ以上検出された場合であって、ターゲットマーカ105が検出された場合、当該ターゲットマーカ105の添付されたモック103の受け渡しが行われるものと判断し、モック103が見えるように(受け渡しの際、受け取り側のユーザがモック103を取り落としたりすることのないように)、モック103に重畳された、ターゲットマーカ105に対応するオブジェクトを透過すると決定するものである。
オブジェクト透過処理部308は、オブジェクト透過判定部307による判定結果に従って、撮像画像と、HMDの位置・姿勢の情報、ターゲットマーカの大きさ・角度から特定されるオブジェクトの描画位置の情報、手情報取得部306で取得された手の情報(例えば手の数の情報)を用いて、透過したオブジェクトの描画処理を行う。
重畳画像生成部309は、オブジェクト透過処理部308で描画した透過されたオブジェクトを、撮像画像に重畳した重畳画像(MR画像)を生成する生成部である。生成した重畳画像は、HMD101に表示させるにあたって視差合わせが行われる。
重畳画像送信部310は、重畳画像生成部309により生成された重畳画像を、HMD101に送信する送信部である。
HMD101の撮像処理部311は、現実画像(撮像画像)を撮像する。また、撮像画像送信部312は、撮像処理部で撮像して取得した撮像画像をPC100に送信する。重畳画像受信部313は、重畳画像を受信し、重畳画像表示部314は、受信した重畳画像をディスプレイに表示する。
赤外線カメラ104の撮像処理部321は、HMD101に設置された光マーカを撮像する処理部である。位置情報送信部322は、当該撮像処理部321で撮像した情報を以て、HMD101の位置・姿勢を特定し、当該位置・姿勢の情報をPC100に送信する。以上が図3の、本発明の実施形態における、各種装置の機能構成の一例についての説明である。
次に図4を参照して、本発明の実施形態における、重畳画像の表示処理の流れについて説明する。図4は、本発明の実施形態における、重畳画像の表示処理の流れを示すフローチャートである。
図4の処理の説明後、図5の図を参照して、本発明の第1の実施形態〜第4の実施形態について説明する。図4は、第1の実施形態〜第4の実施形態における共通の処理である。
HMD101は、撮像処理の開始指示を受け付ける(ステップS401)。また、一方、PC100のCPU201は、HMD101より撮像画像を取得した場合に、重畳画像を生成してHMDに返信する処理を開始する指示を受け付け、待機する(ステップS407)。
赤外線カメラ104は、HMD101の位置を検知すべく撮像処理の開始指示を受け付ける(ステップS413)。尚、HMD101には、赤外線カメラで位置を検出可能にすべく、赤外線センサが設置されているものとする。
HMD101は、撮像処理を行い(例えばマーカ画像を撮像して/ステップS402)、撮像した画像である撮像画像(現実画像)をPC100に順次送信する(ステップS403)。ここでいう撮像処理は例えばビデオ撮像である。
赤外線カメラ104は、撮像処理を行い(ステップS414)、HMDの位置、姿勢の情報をPC100に送信する(ステップS415)。当該HMDの位置とは、MR空間上の位置である。ここでは、予め定義された仮想空間の原点と、現実空間の所定の位置との位置合わせ(MR空間を定義)が行われていることを前提とし、赤外線カメラ104は、当該原点からのHMDの相対位置(相対座標)、及び、HMDの角度・方向の情報を取得して、PC100に送信する。
PC100のCPU201は、HMD101より撮像画像を受信して外部メモリに記憶し、(ステップS408)、赤外線カメラ104よりHMDの位置・姿勢の情報を受信して、随時外部メモリに記憶する(ステップS409)。
PC100のCPU201は、HMD101より受信した撮像画像(現実画像)に、仮想空間上に配置したオブジェクトの画像を重畳した重畳画像(MR画像)を生成する処理を実行する(ステップS410)。
本発明の第1の実施形態における、重畳画像の生成処理(ステップS410)の詳細については、図5〜図8の説明で後述する。
本発明の第2の実施形態における、重畳画像の生成処理(ステップS410)の詳細については、図9〜図11の説明で後述する。
本発明の第3の実施形態における、重畳画像の生成処理(ステップS410)の詳細については、図12〜図14の説明で後述する。
本発明の第4の実施形態における、重畳画像の生成処理(ステップS410)の詳細については、図15〜図16の説明で後述する。
PC100のCPU201は、ステップS410で生成した重畳画像をHMD101に送信し(ステップS411)、HMD101が重畳画像を受信して(ステップS404)、表示画面に表示する(ステップS405)。
HMD101は撮像処理の終了指示を受け付けたか判定し(ステップS406)、終了指示を受け付けた場合には処理を終了し(ステップS406でYES)、終了指示を受け付けていない場合は撮像処理を継続する(ステップS406でNO/ステップS402に処理を戻す)。
PC100のCPU201は、重畳画像を生成してHMDに返信する処理を終了する終了指示を受け付けたか判定し(ステップS412)、終了指示を受け付けた場合には処理を終了し(ステップS412でYES)、終了指示を受け付けていない場合は処理を継続する(ステップS412でNO/ステップS408に処理を戻す)。
赤外線カメラ104は撮像処理の終了指示を受け付けたか判定し(ステップS416)、終了指示を受け付けた場合には処理を終了し(ステップS416でYES)、終了指示を受け付けていない場合は撮像処理を継続する(ステップS416でNO/ステップS414に処理を戻す)。以上が図4の、本発明の実施形態における、重畳画像の表示処理の流れについての説明である。
<第1の実施形態>
次に図5〜図8を参照して、本発明の第1の実施形態について説明する。本発明の第1の実施形態においては、撮像画像から検出された手の数に応じて、ターゲットマーカに重畳するオブジェクトを透過し、現実物体の存在をユーザに通知する。
図5を参照して、本発明の第1の実施形態における、重畳画像の生成処理の流れについて説明する。
PC100のCPU201は、撮像画像を解析してターゲットマーカ105の画像を1つ取得し、外部メモリに記憶されているマーカ画像と比較して当該ターゲットマーカ105のどのIDのマーカかを特定する(ステップS501)。そして、当該マーカに対応する
オブジェクトを外部メモリより取得する。
ここで図6を参照して、本発明の第1の実施形態において用いる各種データの構成の一例について説明する。図6に示す各データは、PC100の外部メモリに記憶されているものとする。
マーカ情報600は、オブジェクトを空間上に配置するために用いられるマーカの情報である。マーカID601は、マーカの識別情報である。サイズ602は、マーカのサイズであり、マーカイメージは、それぞれ一意に識別可能なマーカの画像データ(識別画像)である。
オブジェクト対応付け情報610は、マーカと、オブジェクトの対応付けを示し、オブジェクトの空間上の座標を記憶するテーブルである。オブジェクトID611は、オブジェクトを一意に識別するための識別情報である。
マーカID612は、マーカの識別情報であり、オブジェクトID611の示すオブジェクトがいずれのマーカIDのマーカに対応付けられているかを示す。PC100のCPU201は、マーカID612のマーカ(ターゲットマーカ)を検出した場合、当該マーカの中心点を原点とし、当該マーカの傾きからX軸、Y軸、Z軸を算出して、オブジェクトID611のオブジェクトを、オブジェクト相対座標613の示す位置に配置する。
オブジェクト世界座標614は、オブジェクトID611の示すオブジェクトの、空間上における原点からの相対座標(MR空間内における世界座標)を示す。オブジェクト世界座標は、当該オブジェクトに対応するターゲットマーカを撮像するHMD101の位置・姿勢の情報、及び当該HMD101によって撮像された当該ターゲットマーカの大きさ、方向、傾き等の情報を用いて、逐次、PC100のCPU201が算出し、オブジェクト世界座標614に記憶するものとする。つまり、オブジェクト世界座標614の値は、HMD101がマーカID612のターゲットマーカを撮像し、当該ターゲットマーカが空間上(MR空間上)を移動することで変動する。
オブジェクト情報620は、オブジェクト(PC100で読込可能な3次元画像ファイル(例えば3次元CADファイル)であるものとする)と、当該オブジェクトの識別情報であるオブジェクトID621の対応付け情報である。
また、当該オブジェクトID621のオブジェクトを透過して描画するか否かを示す透過フラグ623が対応付けて記憶されている。透過フラグ623=1の場合、当該オブジェクトの透過率を、透過率624の示す透過率に変更する。第1の実施形態においては、透過率624は一律で50%の値が設定されているものとする。透過フラグ623=0の場合、オブジェクトを透過しない。つまり、オブジェクトの透過率を0%とする。
透過条件630は、オブジェクトを透過する条件(透過フラグ623を1に変更するための条件)である。第1の実施形態において、透過条件630は、手検出数631である。手検出数631において、n=撮像画像から検出された手の数である。
つまり、第1の実施形態においては、撮像画像から検出された手の数≧2(所定の数)である場合に、透過フラグ623を1に変更する。当該手検出数631の値は、ユーザ操作に応じて、PC100に表示される不図示の設定画面から任意に変更可能であるものとする。以上が図6の説明である。
図5の説明に戻る。PC100のCPU201は、HMD101から取得した撮像画像より手の画像を検出する(ステップS503)。例えば、手の形状、色を予めPC100の外部メモリに記憶しておき、当該手の形状、色と所定以上類似する画像を手の画像として特定し、手(ユーザの体の一部/請求項でいう身体情報)を検出するものとする。そして、手検出数631を参照して、所定数以上の手が検出されたか判定する(ステップS504)。
所定数以上の手が検出されたと判定された場合(ステップS504でYES)、ステップS502で取得したオブジェクトの透過フラグ623を1に変更し、透過率を50%に変更して(ステップS505)、当該透過されたオブジェクトを撮像画像に重畳して重畳画像を生成する(ステップS506)。オブジェクトの透過表示(透過されたオブジェクトが重畳された重畳画像)の様子については、図7及び図8の説明に示す。
手の検出に応じて、現実物体(ターゲットマーカ105が貼り付けられたモック103)の受け渡しに際し、オブジェクトを透過表示して、オブジェクトが重畳された、オブジェクトが対応付けられている現実物体が視認可能になる。つまり、現実物体の受け渡しが容易になる。
所定数以上の手が検出されなかったと判定された場合(ステップS504でNO)、ステップS502で取得したオブジェクトの透過フラグ623を0に変更し、透過率を0%に変更して(ステップS507)、当該非透過状態のオブジェクトを撮像画像に重畳して重畳画像を生成する(ステップS508)。
PC100のCPU201は、撮像画像中の全てのマーカについてステップS501〜S508の処理を適用したかを判定し(ステップS509)、全てのマーカについてステップS501〜S508の処理を適用していないと判定した場合(ステップS509でNO)、処理をステップS501の前に戻して、ステップS501で、未処理のマーカを取得する。
全てのマーカについてステップS501〜S508の処理を適用したと判定した場合(ステップS509でYES)、処理を終了する。以上が図5の説明である。
図7及び図8は、本発明の第1の実施形態における、オブジェクトの透過表示の様子を示す図である。図7は、透過条件630(手検出数631)=n≧2である場合の、オブジェクトの透過表示の様子を示す。状態700は、HMD101のカメラで撮像された現実画像である。状態710は、撮像画像に、モック103のターゲットマーカ105に対応付けられたオブジェクト711を重畳した重畳画像である。手の検出数は1であるため、オブジェクト711は透過率=0%で描画、重畳されている。
状態720は、手を2つ検出した場合の重畳画像を示す。手を2つ検出することで(モックの受け渡しが行われるものと推測して)、オブジェクトを透過している。オブジェクトが透過されることにより、状態720に示すように、状態710ではオブジェクトが重なって見えなかったモック103とマーカ105が視認可能となっている。
つまり、オブジェクトの受け渡しに際し、オブジェクトに対応する現実物体の存在をユーザに通知することが可能となっている。
また、図8は、透過条件630(手検出数631)=n≧3である場合の、オブジェクトの透過表示の様子を示す。状態800は、図7の状態700と同様である。状態810は、撮像画像に、モック103のターゲットマーカ105に対応付けられたオブジェクト711を重畳した重畳画像である。手の検出数は2以下であるため、オブジェクト711は透過率=0%で描画、重畳されている。
状態820は、手を3つ検出した場合の重畳画像を示す。手を3つ検出することで(モックの受け渡しが行われるものと推測して)、オブジェクトを透過している。オブジェクトが透過されることにより、状態820に示すように、状態810ではオブジェクトが重なって見えなかったモック103とマーカ105が視認可能となっている。
以上が本発明の第1の実施形態の説明である。本発明の第1の実施形態によれば、オブジェクトの受け渡しに際し、オブジェクトに対応する現実物体の存在をユーザに通知することが可能である。
<第2の実施形態>
次に図9〜図11を参照して、本発明の第2の実施形態について説明する。本発明の第2の実施形態においては、撮像画像から検出された手とオブジェクトとの距離に応じて、ターゲットマーカに重畳するオブジェクトを透過し、現実物体の存在をユーザに通知する。
図9を参照して、本発明の第2の実施形態における、重畳画像の生成処理の流れについて説明する。図9の処理をするまでの前処理である図4の処理については上述したため説明は割愛する。
また、ステップS501〜S503の処理は、第1の実施形態と同様の処理であるため、説明は割愛する。
PC100のCPU201は、検出した手の、MR空間上の座標を特定する(ステップS901)。具体的には、PC100のCPU201が、検出した手の画像を参照し、三角測量の技術を用いて、HMD101から見た手までの距離・手の位置を算出する。そして、HMD101の位置・姿勢から、当該三角測量で算出した手までの距離・手の位置の情報を用いて、MR空間上の手の座標(位置)を特定するものとする。当該手の座標の特定処理は、検出された手の数だけ行われる。
ステップS901で特定された手の座標の情報は、随時、PC100の外部メモリに記憶される。
ここで図10を参照して、本発明の第2の実施形態において用いる各種データの構成の一例を示す図である。図10に示す各データは、PC100の外部メモリに記憶されているものとする。
マーカ情報1000は、図6のマーカ情報600と同一のため、説明は割愛する。オブジェクト対応付け情報1010は、マーカとオブジェクトの対応付けを示し、オブジェクトの空間上の座標を記憶するテーブルである。更に、オブジェクトが他のオブジェクトと接触しているか、また、どのオブジェクトと接触しているかを記憶するテーブルである。
オブジェクトID1011、マーカID1012、オブジェクト相対座標1013、オブジェクト世界座標1014は、図6のオブジェクトID611、マーカID612、オブジェクト相対座標613、オブジェクト世界座標614と同一のため、説明は割愛する。
接触先オブジェクト1015は、オブジェクトID1011が接触しているオブジェクトである。当該オブジェクトの接触判定(他のオブジェクトと接触しているか、及び、どのオブジェクトと接触しているか)は、PC100のCPU201が、各オブジェクトのオブジェクト世界座標1014、及び、各オブジェクトの形状(オブジェクト1022から特定)を用いて行う。当該オブジェクト同士の接触判定は、既存の技術のため、ここでは説明を割愛する。
接触フラグ1016は、接触しているオブジェクトの少なくともいずれか一方が手のオブジェクトである場合(図10でいう、オブジェクトID1011=hand111〜444)、接触状態であるものとして、1の値が挿入される。接触しているオブジェクトのいずれもが手のオブジェクトでない場合、非接触状態であるものとして、0の値が挿入される。
オブジェクト情報1020は、図6のオブジェクト情報620と同一のため説明は割愛する。尚、透過フラグ1023=nullは、透過しない(透過不可能な)種別のオブジェクトであることを示す。
透過条件1030は、オブジェクトを透過する条件(透過フラグ1023を1に変更するための条件)である。第2の実施形態において、透過条件1030は、手検出数1031、所定距離1032、接触フラグ1033である。手検出数1031において、n=撮像画像から検出された手の数である。また、所定距離1032は、HMD101からの所定距離内に手検出数1031を満たすだけの数の手があるかを判定するための条件である。接触フラグ1033は、当該所定距離1032にある手の内少なくとも1つの手が、オブジェクトに接触しているかを判定するための条件である。
第2の実施形態において、手検出数1031、所定距離1032、接触フラグ1033はAND条件である。つまり、透過条件1030によれば、撮像画像から検出された手の数≧2(所定の数)であって、且つ、当該2以上の手がHMD101の周囲2m以内(所定の距離範囲内)に存在し、当該HMD101の周囲2m以内に存在する手のいずれか1つでもオブジェクト(例えば後述の図11でいうオブジェクト1111)に接触している場合に、オブジェクト1111の透過フラグ1023を1に変更する。当該手検出数1031及び所定距離1032の値は、ユーザ操作に応じて、PC100に表示される不図示の設定画面から任意に変更可能であるものとする。以上が図10の説明である。
図9の説明に戻る。
PC100のCPU201は、外部メモリに記憶されている手のオブジェクトを1つ取得して(ステップS902)、手のオブジェクトをステップ0S901で特定した座標に、ステップS502で取得したオブジェクトをステップS501で特定されたターゲットマーカの座標に基づいて、それぞれ仮想空間上に配置する(ステップS903)。
尚、当該手のオブジェクトは、オブジェクトID1011=hand111〜のオブジェクトとして、予めPC100の外部メモリに記憶されている。当該手のオブジェクトは、手が検出されたタイミングで外部メモリから読み出され、オブジェクト情報1020、オブジェクト対応付け情報1010に追加され、手が検出されなくなったタイミングで、オブジェクト情報1020、オブジェクト対応付け情報1010から削除されるものとする。手のオブジェクトのオブジェクト世界座標1014には、ステップS901で特定された手の座標が記憶され、随時更新される。
PC100のCPU201は、所定距離1032を参照して、HMD101の位置(ステップS409で取得して、外部メモリに記憶されている座標)から周囲2m以内にある手のオブジェクトを、手のオブジェクトのオブジェクト世界座標1014を参照して特定する(ステップS904)。
PC100のCPU201は、手検出数1031を参照して、HMD101の周囲2m以内に、手が所定数以上あるか判定する(ステップS504)。HMD101の周囲2m以内に、手が所定数以上ないと判定された場合(ステップS504でNO)、処理をステップS507に移行する。ステップS507以降の処理は図5で説明した内容と同一のため、ここでは説明を割愛する。
HMD101の周囲2m以内に、手が所定数以上あると判定された場合(ステップS504でYES)、PC100のCPU201は、当該HMD101の周囲2m以内に存在する手のオブジェクトの接触先オブジェクト1015、接触フラグ1016を参照して、当該HMD101の周囲2m以内に存在する手のオブジェクトのいずれかが、ステップS502で取得したオブジェクトと接触しているかを判定する(ステップS905)。
HMD101の周囲2m以内に存在する手のオブジェクトのいずれも、オブジェクトと接触していないと判定された場合(ステップS905でNO)、処理をステップS507に移行する。HMD101の周囲2m以内に存在する手のオブジェクトのいずれかが、オブジェクトと接触していると判定された場合(ステップS905でYES)、処理をステップS505に移行する。ステップS505以降の処理は図5で説明した内容と同一のため、ここでは説明を割愛する。以上が図9の説明である。
図11を参照して、本発明の第2の実施形態における、オブジェクトの透過表示の様子について説明する。状態1100は、HMD101のカメラで撮像された現実画像の状態を示す。状態1110は、撮像画像に、モック103のターゲットマーカ105に対応付けられたオブジェクト1111を重畳した重畳画像である。また、1112は、別途、MR空間上の所定の座標に配置されたオブジェクトである。
状態1120は、手を2つ検出した場合の重畳画像を示す。手を2つ検出することで(モックの受け渡しが行われるものと推測して)、手の接触しているオブジェクト(受け渡しがされると推測されるオブジェクト)を透過している。一方、手が接触していないオブジェクトは(受け渡しがされないと推測し)、透過をせずに描画・重畳している。
オブジェクトが透過されることにより、状態1120に示すように、状態1110ではオブジェクトが重なって見えなかったモック103とマーカ105が視認可能となっている。以上が図11の説明である。
以上が本発明の第2の実施形態の説明である。本発明の第2の実施形態によれば、オブジェクトの受け渡しに際し、オブジェクトに対応する現実物体の存在をユーザに通知することが可能である。
具体的には、HMDから所定範囲内に手があり、手のいずれかがターゲットマーカに対応するオブジェクトに接触している場合に、ターゲットマーカに対応するオブジェクト(接触中のオブジェクト)を透過させることで、ターゲットマーカの付された現実物体を視認可能にすることができる。
例えば、2人以上のユーザのいずれかがオブジェクトに触れて相手に受け渡そうとしており、且つ、手が、HMDから近い位置にあるユーザ自身の手、又はオブジェクトを受け取るユーザ/渡すユーザの手であると判断された場合に、オブジェクトを透過するものである。
尚、上述した第2の実施形態においては、HMD101から所定距離内に、所定数以上の手があり、手がオブジェクトに接触している場合にオブジェクトの透過処理を行っているが、例えば、単純に所定数以上の手が検出され、手がオブジェクトに接触している場合にオブジェクトの透過処理を行うようにしてもよい。具体的には、図9のステップS904をスキップして、ステップS504の判定を、ステップS503で検出した手の総数に対して実行し、図9の処理を実行することで実現可能である。
<第3の実施形態>
次に図12〜図14を参照して、本発明の第3の実施形態について説明する。本発明の第3の実施形態においては、撮像画像から検出された手の情報と、オブジェクトとHMDが接近しているか否かに応じて、ターゲットマーカに重畳するオブジェクトを透過し、現実物体の存在をユーザに通知する。
図12を参照して、本発明の第3の実施形態における、重畳画像の生成処理の流れについて説明する。図12の処理をするまでの前処理である図4の処理については上述したため説明は割愛する。
ステップS501〜S504の処理は、第1の実施形態と同様の処理であるため、説明は割愛する。また、ステップS901〜S905の処理は、第2の実施形態と同様の処理であるため、説明は割愛する。
PC100のCPU201は、ステップS1201で、ステップS502で取得した(ステップS905でYESと判定された)オブジェクトの移動量を特定する。つまり、オブジェクトがどの程度の速度で、どの程度の距離、どの方向に向けて移動しているかを特定する。オブジェクトの移動量の情報は、例えば図13に示すような、PC100のCPU201が、PC100の外部メモリに随時記憶しているオブジェクトの座標の履歴を用いて特定される。
図13は、本発明の第3の実施形態において用いる各種データの構成の一例を示す図である。図13に示す各データは、PC100の外部メモリに記憶されているものとする。オブジェクト移動履歴1300は、オブジェクト(オブジェクトID1301)ごとに、所定のタイミングで(例えば、ステップS903でオブジェクトが配置されるタイミングで)随時記憶され、更新される。時刻1302は、オブジェクトID1301のオブジェクトが、オブジェクト世界座標1303に存在した時刻の情報である。
また、HMD座標履歴1310は、HMD101(HMD ID1311)ごとに、所定のタイミングで(例えば、ステップS409でHMD101の位置・姿勢の情報を受信して記憶するタイミングで)随時記憶され、更新される。時刻1312は、HMD ID1311のHMD101が、HMD世界座標1313に存在した時刻の情報である。以上が図13の説明である。
図12の説明に戻る。PC100のCPU201は、ステップS502で取得した(ステップS905でYESと判定された)オブジェクトが、HMD101に接近したか判定する(ステップS1202)。ここでは、1秒前から5cm以上(所定の値以上)HMD101と当該オブジェクトが接近したかを、オブジェクト座標履歴1300、HMD座標履歴1310を参照して判定するものとする。
当該所定の値(不図示/XX秒前からXX以上接近したか、という条件を示す値)は、予め、PC100の外部メモリに記憶されているものとする。また、当該所定の値は、ユーザ操作に応じて、PC100に表示される不図示の設定画面から任意に変更可能であるものとする。
PC100のCPU201は、オブジェクトがHMD101に接近したと判定した場合(ステップS1202でYES)、処理をステップS505に移行し、オブジェクトがHMD101に接近していないと判定した場合(ステップS1202でNO)、処理をステップS507に移行する。ステップS505以降の処理は図5で説明した内容と同一のため、ここでは説明を割愛する。以上が図12の説明である。
図14は、本発明の第3の実施形態における、各HMDにおけるオブジェクトの通常表示及び透過表示の様子を示す図である。
状態1400、状態1410は、オブジェクトを受け取る側のユーザが装着しているHMD101Aの画面状態を示す。状態1450、状態1460は、オブジェクトを渡す側のユーザが装着しているHMD101Bの画面状態を示す。
状態1400は、HMD101Aに表示されている、HMD101Bのユーザがオブジェクト1401(ターゲットマーカ105の付されたモック103)を持っている重畳画像の状態を示す。状態1410への画面遷移の様子から分かるとおり、HMD101A(受け取る側のユーザ)とオブジェクト1401が接近した場合に、オブジェクト1401を1411に示すように透過する。
状態1450は、HMD101Bに表示されている、HMD101Bのユーザがオブジェクト1401(ターゲットマーカ105の付されたモック103)を持っている重畳画像の状態を示す、状態1400と同時刻の画像である。状態1460は、状態1410と同時刻の画像である。状態1450から状態1460に移行するにあたり、オブジェクト1401はHMD101Bから離れている(接近していない)ため、透過処理は行わない。つまり、オブジェクト(ターゲットマーカ105の付されたモック103)の受け取り手のユーザに対して、オブジェクトを透過して確認させるものである。以上が図14の説明である。
以上が本発明の第3の実施形態の説明である。本発明の第3の実施形態によれば、オブジェクトの受け渡しに際し、オブジェクトに対応する現実物体の存在をユーザに通知することが可能である。
具体的には、手の状態(手が所定数以上か、手がオブジェクトに触れているか等)と、オブジェクトがユーザに接近している(ユーザがオブジェクトの受け取り手であると推測される)場合に、オブジェクトを透過するものである。
尚、上述した第3の実施形態においては、HMD101から所定距離内に、所定数以上の手があるか、また、手が接触しているオブジェクトがHMD101に接近したかに応じてオブジェクトの透過処理を行っているが、例えば、所定数以上の手が検出され、オブジェクトがHMD101に接近したかに応じてオブジェクトの透過処理を行うようにしてもよい。具体的には、図12のステップS902〜S904、S905をスキップして図12の処理を実行することで実現可能である。
また、例えば、手とオブジェクトが接触している状態で、オブジェクトがHMD101に接近したかに応じてオブジェクトの透過処理を行うようにしてもよい。具体的には、図12のステップS904、S504をスキップして図12の処理を実行することで実現可能である。
<第4の実施形態>
次に図15、図16を参照して、本発明の第4の実施形態について説明する。本発明の第4の実施形態においては、2つ以上のHMD101のカメラで同じオブジェクトが撮像されている場合に、撮像画像から検出された手の状態に応じて、ターゲットマーカに重畳するオブジェクトを透過し、現実物体の存在をユーザに通知する。
図15を参照して、本発明の第4の実施形態における、重畳画像の生成処理の流れについて説明する。図15の処理をするまでの前処理である図4の処理については上述したため説明は割愛する。
PC100AのCPU201は、PC100Bに対して、HMD101Bで撮像中のマーカの情報を要求する(ステップS1501)。尚、当該HMD101Bで撮像中のマーカの情報は、図16の撮像マーカID1602を示すものであり、後に実行するステップS501で撮像画像中より取得、特定されて、PC100の外部メモリに記憶されるものとする。ここでは、既に一度ステップS501の処理が行われ、HMD101で撮像中のマーカの情報が各PC100に記憶済みであるものとして説明を行う。
ここで図16を参照して、本発明の第4の実施形態において用いる各種データの構成の一例について説明する。図16に示す各データは、PC100の外部メモリに記憶されているものとする。
撮像マーカ情報1600(識別画像情報記憶手段に該当)は、いずれのHMD101(HMD ID1601)で、いずれのマーカが撮像中かを示す。撮像マーカID1602は、HMD ID1601の示すHMD101で撮像中のマーカIDである。
透過率設定1610は、手の検出数と透過率の値を対応付けたテーブルである。手の検出数が2の場合は、オブジェクトの透過率(透過率1624)は、40%に設定される。また、手の検出数が3の場合は、オブジェクトの透過率(透過率1624)は、60%に設定される。また、手の検出数が4以上の場合は、オブジェクトの透過率(透過率1624)は、80%に設定される。
例えば、オブジェクトを片手で渡し、片手で受け取る場合、手の検出数は2であると考えられる。例えば片手で持てるような軽い現実物体(モック103)であれば、取り落とした際の危険性が低いと推測し、低い透過率でオブジェクトを描画する。また、オブジェクトを両手で渡し、両手で受け取る場合、手の検出数は4であると考えられる。両手で渡し両手受け取るような重い現実物体、また、重要物等であれば、取り落とす危険性をより確実に低減するため、現実物体がよく見えるよう、高い透過率でオブジェクトを描画する。
オブジェクト情報1620のオブジェクトID1621、オブジェクト1622、透過フラグ1623は、図6のオブジェクトID621、オブジェクト622、透過フラグ623はと同じであるため説明は割愛する。透過率1624は、PC100のCPU201が、手の検出数に応じて設定、変更する。以上が図16の説明である。
図15の説明に戻る。PC100BのCPU201は、PC100Aより、HMD101Bの撮像マーカ情報1600の要求を受け付け(ステップS1502)、外部メモリより、HMD101Bの撮像マーカ情報1600を取得して、PC100Aに送信する(ステップS1503)。PC100AのCPU201はこれを受信して、自装置内の撮像マーカ情報1600(HMD ID=HMD101Bに対応するデータ列)に記憶する。また、ステップS501において、HMD101Aの撮像画像よりマーカ画像を取得してマーカIDを特定し、自装置内の撮像マーカ情報1600(HMD ID=HMD101Aに対応するデータ列)に記憶する。
ステップS502〜S504の処理は、第1の実施形態と同様の処理であるため、説明は割愛する。ステップS901〜S905の処理は、第2の実施形態と同様の処理であるため、説明は割愛する。ステップS1201、S1202の処理は、第3の実施形態と同様の処理であるため、説明は割愛する。
PC100AのCPU201は、ステップS502で取得したオブジェクト(ステップS1202でYESと判定されたオブジェクト)が、複数のHMD101で撮像されているか判定する(ステップS1505)。ここでは、当該オブジェクトに対応するターゲットマーカがHMD101AとHMD101Bで撮像されている場合、当該オブジェクトが複数のHMD101で撮像されていると判定するものとする。
ステップS502で取得したオブジェクト(ステップS1202でYESと判定されたオブジェクト)が、複数のHMD101で撮像されていないと判定された場合(ステップS1505でNO)、処理をステップS508に移行する。ステップS508以降の処理は図5の説明で前述したため、ここでは説明を割愛する。
ステップS502で取得したオブジェクト(ステップS1202でYESと判定されたオブジェクト)が、複数のHMD101で撮像されていると判定された場合(ステップS1505でYES)、処理をステップS1506に移行する。つまり、撮像マーカ情報1600において、HMD ID1601=HMD101Aの撮像マーカID1602と、HMD ID1601=HMD101Bの撮像マーカID1602との両方に、当該オブジェクトに対応するマーカID(図6でいうマーカID612)が記憶されていた場合、処理をステップS1506に移行する。
PC100AのCPU201は、透過率設定1610を参照し、ステップS503で検出した手の検出数に基づいて、当該オブジェクトの透過率を決定する(ステップS1506/透過率決定手段に該当)。そして、当該オブジェクトに対応する透過フラグ1623を1に変更し、透過率1624に、ステップS1506で決定した透過率の値を挿入して(ステップS1507)、当該オブジェクトをステップS1506で決定した透過率に従って透過して配置した重畳画像を生成する(ステップS1508)。
その後処理をステップS510に移行する。ステップS510の処理は図5の説明で前述したため、ここでは説明を割愛する。
以上が本発明の第4の実施形態の説明である。本発明の第4の実施形態によれば、オブジェクトの受け渡しに際し、オブジェクトに対応する現実物体の存在をユーザに通知することが可能である。
具体的には、手の状態(手が所定数以上か、手がオブジェクトに触れているか等)と、オブジェクトが複数のユーザによって見られている(2人以上のユーザ間でオブジェクトの受け渡しがあると推測される)場合に、オブジェクトを透過するものである。
また、検出した手の数によって、透過率を調整することができる。
尚、上述した第4の実施形態においては、HMD101から所定距離内に、所定数以上の手があり、手が接触しているオブジェクトがHMD101に接近し、2人以上のユーザがオブジェクトを見ている(複数のHMDがオブジェクトを撮像している)場合に、手の数に応じて透過率を変更したオブジェクトを描画して、重畳画像を生成するようにしたが、例えば、所定数以上の手が検出され、2人以上のユーザがオブジェクトを見ている場合に、オブジェクトを透過するようにしてもよい。具体的には、図15のステップS901〜S904、S905、S1201、S1202をスキップして、ステップS1507及びS1508をそれぞれステップS505、S506に置き換えて図15の処理を実行することで実現可能である。
また、例えば、オブジェクトに手が接触しており、2人以上のユーザがオブジェクトを見ている場合に、オブジェクトを透過するようにしてもよい。具体的には、図15のステップS904、S1201、S1202をスキップして、ステップS1507及びS1508をそれぞれステップS505、S506に置き換えて図15の処理を実行することで実現可能である。
また、例えば、所定数以上の手が検知され、オブジェクトがHMD101に接近し、また、2人以上のユーザがオブジェクトを見ている場合に、オブジェクトを透過するようにしてもよい。具体的には、図15のステップS904をスキップして、ステップS1507及びS1508をそれぞれステップS505、S506に置き換えて図15の処理を実行することで実現可能である。
また、例えば、手とオブジェクトが接触している状態で、オブジェクトがHMD101に接近し、また、2人以上のユーザがオブジェクトを見ている場合に、オブジェクトを透過するようにしてもよい。具体的には、図15のステップS504、S1201、S1202をスキップして、ステップS1507及びS1508をそれぞれステップS505、S506に置き換えて図15の処理を実行することで実現可能である。
また、上述した各実施形態において、PC100に透過率設定1610を記憶させ、ステップS505・S506の処理を、ステップS1506〜S1508に置き換えてPC100に実行させることで、手の検出数に応じて透過率を変更させることが可能である。
手の検出数に応じて透過率を変更する実施形態においては、例えば、オブジェクトを片手で渡し、片手で受け取る場合(手の検出数が2である場合/例えば片手で持てるような軽い現実物体であれば、取り落とした際の危険性が低いと推測し)、低い透過率でオブジェクトを描画し、また、オブジェクトを両手で渡し、両手で受け取る場合(手の検出数が4である場合/両手で渡し両手受け取るような重い現実物体、また、重要物等であれば、取り落とす危険性をより確実に低減するため)現実物体がよく見えるよう、高い透過率でオブジェクトを描画する。
また、本発明の各実施形態においては、オブジェクト自体の透過率を変更して描画し、現実物体の存在をユーザに確認させるものとしたが、ユーザへの通知方法はこれに限るものではない。
例えば図17に示すように、オブジェクトを透過する代わりに、手から所定範囲内にあるオブジェクト1701(オブジェクトの一部)を描画しないように制御する(1711)ことで、現実物体の存在をユーザに通知し、確認させるようにしてもよい。
また、例えば、オブジェクトを透過する代わりに、オブジェクトの色を変更することで、オブジェクトによって隠されている現実物体の存在をユーザに通知するようにしてもよい。
また、例えば、オブジェクトを透過する代わりに、オブジェクト自体のサイズを縮小して、オブジェクトと重なっている現実物体の存在をユーザに通知し、確認させるようにしてもよい。
また、本発明の実施形態においては、オブジェクトの受け渡しがされるか否かの判定基準として手を検出することを条件としたが、手に限らず、ユーザの体の少なくとも一部を検出したか判定するようにしてもよい。
例えば、第1の実施形態における手の検出数の代わりに、肌色(ユーザの体のいずれか)の検出数を条件としてもよい。
また、人感センサ等を用いて人の体温を検出し、手の検出数の代わりに、当該人感センサで検出された体温(人)の検出数を条件としてもよい。
また、HMD101の位置を人の位置であるものとし、手の検出数の代わりに、視界内にHMD101が存在するかを特定して、当該特定されたHMDの数を条件としてもよい。
以上説明したように、本発明によれば、オブジェクトの受け渡しに際し、オブジェクトに対応する現実物体の存在をユーザに通知することが可能な仕組みを提供することができる。
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。