次に、本発明の実施の形態を実施形態に基づいて以下の順序で説明する。
A.第1実施形態:
A−1.情報処理装置の構成:
A−2.ARシナリオ作成処理:
B.第2実施形態:
B−1.ARシナリオを実行する装置の構成:
B−2.ARシナリオ実行処理:
C.第3実施形態:
D.第4実施形態:
E.変形例:
A.第1実施形態:
A−1.情報処理装置の構成:
図1は、本発明の第1実施形態における情報処理装置としての頭部装着型表示装置100(HMD100)の外観構成を示す説明図である。HMD100は、頭部に装着する表示装置であり、ヘッドマウントディスプレイ(Head Mounted Display、HMD)とも呼ばれる。本実施形態のHMD100は、使用者が、虚像を視認すると同時に外景も直接視認可能な光学透過型の頭部装着型表示装置である。本実施形態のHMD100は、請求項における情報処理装置に相当する。
HMD100は、使用者の頭部に装着された状態において使用者に虚像を視認させる画像表示部20と、画像表示部20を制御する制御部10(コントローラー10)と、を備えている。
画像表示部20は、使用者の頭部に装着される装着体であり、本実施形態では眼鏡形状を有している。画像表示部20は、右保持部21と、右表示駆動部22と、左保持部23と、左表示駆動部24と、右光学像表示部26と、左光学像表示部28と、カメラ61と、赤外線LED64と、TOFセンサー63と、マイク69と、を含んでいる。右光学像表示部26および左光学像表示部28は、それぞれ、使用者が画像表示部20を装着した際に使用者の右および左の眼前に位置するように配置されている。右光学像表示部26の一端と左光学像表示部28の一端とは、使用者が画像表示部20を装着した際の使用者の眉間に対応する位置で、互いに接続されている。
右保持部21は、右光学像表示部26の他端である端部ERから、使用者が画像表示部20を装着した際の使用者の側頭部に対応する位置にかけて、延伸して設けられた部材である。同様に、左保持部23は、左光学像表示部28の他端である端部ELから、使用者が画像表示部20を装着した際の使用者の側頭部に対応する位置にかけて、延伸して設けられた部材である。右保持部21および左保持部23は、眼鏡のテンプル(つる)のようにして、使用者の頭部に画像表示部20を保持する。
右表示駆動部22と左表示駆動部24とは、使用者が画像表示部20を装着した際の使用者の頭部に対向する側に配置されている。なお、以降では、右保持部21および左保持部23を総称して単に「保持部」とも呼び、右表示駆動部22および左表示駆動部24を総称して単に「表示駆動部」とも呼び、右光学像表示部26および左光学像表示部28を総称して単に「光学像表示部」とも呼ぶ。
表示駆動部22,24は、液晶ディスプレイ241,242(Liquid Crystal Display、以下「LCD241,242」とも呼ぶ)や投写光学系251,252等を含む(図9参照)。表示駆動部22,24の構成の詳細は後述する。光学部材としての光学像表示部26,28は、導光板261,262(図2参照)と調光板とを含んでいる。導光板261,262は、光透過性の樹脂材料等によって形成され、表示駆動部22,24から出力された画像光を使用者の眼に導く。調光板は、薄板状の光学素子であり、使用者の眼の側とは反対の側である画像表示部20の表側を覆うように配置されている。調光板は、導光板261,262を保護し、導光板261,262の損傷や汚れの付着等を抑制する。また、調光板の光透過率を調整することによって、使用者の眼に入る外光量を調整して虚像の視認のしやすさを調整できる。なお、調光板は省略可能である。
カメラ61は、使用者が画像表示部20を装着した際の使用者の眉間に対応する位置に配置されている。そのため、カメラ61は、使用者が画像表示部20を頭部に装着した状態において、使用者の視線方向の外部の景色である外景を撮像し、撮像画像を取得する。カメラ61は、撮像した外景のR成分とG成分とB成分とのそれぞれのデータとしてのRGBデータを後述する制御部10のセンサー制御部145に送信する。詳細については後述するが、取得された撮像画像の中の特定の対象を元として、設定された順序に沿って静止画像や動画の表示や音声出力を含むAR(Augmented Reality)シナリオが生成される。生成されたARシナリオは、本実施形態のHMD100や撮像部を有するHMD100と異なる画像表示装置などで実行されると、ARシナリオを実行する画像表示装置の撮像部が撮像した撮像画像の中から検出された対象物に対応付けて、本実施形態のHMD100が生成したARシナリオが再生される。本実施形態のカメラ61は、単眼カメラであるが、ステレオカメラであってもよい。また、複数のカメラ61によって複数の撮像画像が取得されてもよい。カメラ61は、請求項における第1撮像部に相当する。ARシナリオは、請求項におけるシナリオ情報に相当する。
赤外線LED64およびTOFセンサー63は、カメラ61と隣り合う位置である使用者が画像表示部20を装着した際の使用者の眉間に対応する位置に配置されている。赤外線LED64は、赤外線を発光する発光ダイオード(Light Emitting Diode ,LED)である。TOFセンサー63は、赤外線LED64が発光した赤外線が特定の対象に反射した反射光を検出する。なお、赤外線LED64とTOFセンサー63とを合わせて、距離センサー65とも呼ぶ。距離センサー65は、物体の表面で反射した赤外線反射光の無数の点のデータを制御部10のセンサー制御部145に送信する。なお、他の実施形態では、複数の距離センサー65が用いられてもよいし、本実施形態とは異なる方法によってカメラ61の撮像範囲の中の被写体までの距離が測定されてもよい。なお、以降では、測定された距離をD成分として、RGBデータに合わせて、RGBDデータともいう。
図2は、画像表示部20のカメラ61が被写体であるペットボトルPTを撮像している状態のイメージ図である。図2には、画像表示部20を頭部に装着した使用者USが、キャップCPが装着されていないペットボトルPTに、右手に保持したキャップCPを装着させようとしている状態が示されている。この状態では、画像表示部20のカメラ61は、カメラ61の画角θの範囲の外景を撮像できる。
マイク69は、外部の音声を取得する装置である。マイク69は、使用者が画像表示部20を装着した際の右表示駆動部22における使用者と対向する側の反対側(外側)に形成されている。
画像表示部20は、さらに、画像表示部20を制御部10に接続するための接続部40を有している。接続部40は、制御部10に接続される本体コード48と、右コード42と、左コード44と、連結部材46と、を含んでいる。右コード42と左コード44とは、本体コード48が2本に分岐したコードである。右コード42は、右保持部21の延伸方向の先端部APから右保持部21の筐体内に挿入され、右表示駆動部22に接続されている。同様に、左コード44は、左保持部23の延伸方向の先端部APから左保持部23の筐体内に挿入され、左表示駆動部24に接続されている。連結部材46は、本体コード48と、右コード42および左コード44と、の分岐点に設けられ、イヤホンプラグ30を接続するためのジャックを有している。イヤホンプラグ30からは、右イヤホン32および左イヤホン34が延伸している。
画像表示部20と制御部10とは、接続部40を介して各種信号の伝送を行なう。本体コード48における連結部材46とは反対側の端部と、制御部10と、のそれぞれには、互いに嵌合するコネクター(図示しない)が設けられている。本体コード48のコネクターと制御部10のコネクターとの嵌合/嵌合解除により、制御部10と画像表示部20とが接続されたり切り離されたりする。右コード42と、左コード44と、本体コード48とには、例えば、金属ケーブルや光ファイバーを採用できる。
制御部10は、HMD100を制御するための装置である。制御部10は、決定キー11と、点灯部12と、表示切替キー13と、トラックパッド14と、輝度切替キー15と、方向キー16と、メニューキー17と、電源スイッチ18と、を含んでいる。決定キー11は、押下操作を検出して、制御部10で操作された内容を決定する信号を出力する。点灯部12は、HMD100の動作状態を、その発光状態によって通知する。HMD100の動作状態としては、例えば、電源のON/OFF等がある。点灯部12としては、例えば、LEDが用いられる。表示切替キー13は、押下操作を検出して、例えば、コンテンツ動画の表示モードを3Dと2Dとに切り替える信号を出力する。トラックパッド14は、トラックパッド14の操作面上での使用者の指の操作を検出して、検出内容に応じた信号を出力する。トラックパッド14としては、静電式や圧力検出式、光学式といった種々のトラックパッドを採用できる。輝度切替キー15は、押下操作を検出して、画像表示部20の輝度を増減する信号を出力する。方向キー16は、上下左右方向に対応するキーへの押下操作を検出して、検出内容に応じた信号を出力する。電源スイッチ18は、スイッチのスライド操作を検出することで、HMD100の電源投入状態を切り替える。
図3は、第1実施形態におけるHMD100の構成を機能的に示すブロック図である。図3に示すように、画像表示部20は、カメラ61と、距離センサー65としてのTOFセンサー63および赤外線LED64と、マイク69と、を備えている。なお、図3では、画像表示部20によって使用者に視認させる虚像を生成するための機能およびCPU140における虚像の生成に関連する機能の一部については、図示を省略している。以降では、画像表示部20が虚像を生成することを、単に、画像を表示するともいい、生成される虚像を、単に、表示画像ともいう。
制御部10は、CPU140と、操作部135と、インターフェイス180と、データ記憶部120と、電源130と、ROM121と、RAM122と、を有している。操作部135は、使用者による操作を受け付け、決定キー11、表示切替キー13、トラックパッド14、輝度切替キー15、方向キー16、メニューキー17、電源スイッチ18、から構成されている。インターフェイス180は、制御部10に対して、コンテンツの供給元となる種々の外部機器OAを接続するためのインターフェイスである。外部機器OAとしては、例えば、パーソナルコンピューター(PC)や携帯電話端末、ゲーム端末等、がある。インターフェイス180としては、例えば、USBインターフェイス、マイクロUSBインターフェイス、メモリーカード用インターフェイス等、を用いることができる。
電源130は、HMD100の各部に電力を供給する。電源130としては、例えば二次電池を用いることができる。ROM121は、種々のコンピュータープログラムを格納している。CPU140は、ROM121に格納されているコンピュータープログラムを読み出し、RAM122に書き込みを実行することにより、種々のコンピュータープログラムを実行する。CPU140は、ARシナリオ制御部141と、物体トラッキング部142と、物体認識部143と、3Dモデル生成部144と、センサー制御部145と、UI制御部146と、ARシナリオ操作設定部147と、付加情報取得部148と、不要画像消去部149と、AR画像抽出部151と、を有している。
センサー制御部145は、カメラ61から送信された撮像画像のRGBデータと、距離センサー65から送信された撮像範囲の無数の点のデータと、を取得する。センサー制御部145は、カメラ61および距離センサー65から取得したデータを、物体トラッキング部142と三次元モデル生成部144(3Dモデル生成部144)とのそれぞれに送信する。また、センサー制御部145は、UI制御部146から送信された制御信号に基づいて、カメラ61および距離センサー65を制御する。
3Dモデル生成部144は、ARシナリオ制御部141から送信される制御信号に基づいて、センサー制御部145から送信された撮像画像のRGBデータと距離センサー65の距離データと用いて、撮像範囲の中の対象について、三次元モデル(3Dモデル)を生成する。3Dモデル生成部144は、距離センサー65によって取得された距離データに基づいて、撮像範囲の物体の形状を取得し、取得した物体の形状における同一の境界を検出して、3Dモデルを生成する。また、3Dモデル生成部144は、撮像画像のRGBデータに基づいて、生成した3Dモデルに着色する。3Dモデル生成部144は、生成した着色済みの3Dモデルと、検出した同一の境界のデータと、を物体認識部143へと送信する。
物体認識部143は、ARシナリオ制御部141から送信される制御信号に基づいて、3Dモデル生成部144によって生成された3Dモデルおよび検出された同一の境界のデータを用いて、連続している境界のデータを有する3Dモデルを1つの物体として認識する。換言すれば、物体認識部143は、連続していない境界のデータに基づいて、3Dモデルを切り離して、1つ1つの物体として認識する。また、物体認識部143は、ARシナリオ制御部141を介して、後述するデータ記憶部120に記憶された人体のパーツ(例えば、手や足)の情報を取得する。物体認識部143は、認識した物体に対して、取得した人体のパーツの情報を基にパターンマッチングや統計的識別法を用いることで、3Dモデルの中から人体を抽出する。
物体トラッキング部142は、ARシナリオ制御部141から送信される制御信号に基づいて、認識された物体の1つ1つの内、カメラ61が撮像している間に動いている物体の動きを特定する。物体トラッキング部142は、動いている物体(移動物体)と動いていない物体(静止物体)とを特定する情報を、UI制御部146およびARシナリオ制御部141へと送信する。
UI制御部146は、マイク69が取得した音声や操作部135が受け付けた操作に基づいて、画像表示部20、イヤホン32,34、および、CPU140に含まれる各部へと制御信号を送信する。例えば、UI制御部146は、操作部135が受け付けた操作に基づいて、カメラ61および距離センサー65を制御する制御信号をセンサー制御部145へと送信する。また、物体トラッキング部142から送信された特定した物体について、物体のそれぞれを使用者が選択して操作できるように、物体のそれぞれを画像表示部20に表示するための画像信号を画像表示部20へと送信する。また、UI制御部146は、後述するARシナリオ作成処理において、マイク69によって取得された音声を自動的に文字画像へと変換するテキスト変換部152を有している。テキスト変換部152は、取得された音声を音声認識して、対応する文字画像へと変換する。
ARシナリオ操作設定部147は、HMD100によって作成されたARシナリオが操作する状況について設定する。なお、ARシナリオには、使用者によってARシナリオに挿入された音声や文字画像などが含まれる。ARシナリオ操作設定部147は、例えば、生成された動画に対応付けられている対象物が、ARシナリオを実行可能な装置が撮像した撮像範囲の中から、画像認識によって現実の対象として検出された場合などに、装置がARシナリオを実行できるように設定する。また、ARシナリオ操作設定部147は、ARシナリオを実行可能な装置が撮像した撮像範囲において、予め設定された特定の物体が検出されることにより、実行されるARシナリオにおける複数の分岐などを設定する。なお、ARシナリオが実行されている場合に、撮像範囲の中から検出された現実の対象に対応付けられて表示され、実行されているARシナリオに含まれる画像をAR画像とも呼ぶ。
付加情報取得部148は、UI制御部146から送信されるユーザーインターフェース(UI)としての操作部135が受け付けた操作信号やマイク69が取得した音声と、ARシナリオ制御部141から送信される制御信号とに基づいて、ARシナリオに付加する情報を取得する。ARシナリオに付加される情報としては、例えば、操作部135が受け付けた操作によって設定される画像の拡大または縮小といった表示方法の設定や、マイク69が取得した音声が変換されたテキストの挿入などがある。
ARシナリオ制御部141は、ARシナリオを作成するために、CPU140の各部を制御する。ARシナリオ制御部141は、物体トラッキング部142によって特定された移動物体および静止物体と、UIが受け付けた操作と、に基づいて、AR画像として生成される物体とAR画像として生成されない物体と区別し、区別した結果を不要画像消去部149およびAR画像抽出部151へと送信する。また、ARシナリオ制御部141は、データ記憶部120と各種データを送受信することにより、既に作成されたARシナリオを読み込んで編集したり、新規で作成したARシナリオをデータ記憶部120に記憶させたりする。
不要画像消去部149は、ARシナリオ制御部141およびARシナリオ操作設定部147から送信された制御信号に基づいて、特定された物体の内、AR画像として生成されない物体の画像を消去する。換言すれば、不要画像消去部149は、撮像画像の中から、AR画像として生成する物体を選択するともいえる。不要画像消去部149は、不要な物体として消去した画像の画像信号をARシナリオ制御部141へと送信する。本実施形態では、操作部135が所定の操作を受け付けない場合には、不要画像消去部149は、撮像された人間の体を不要な物体として自動的に消去する。なお、他の実施形態では、不要画像消去部149は、自動的に人間の体などを消去する必要はない。
AR画像抽出部151は、ARシナリオ制御部141から送信された制御信号に基づいて、AR画像としてARシナリオに表示させる物体を抽出して、画像を生成する。AR画像抽出部151は、距離センサー65によって取得された距離データに基づいて、AR画像を三次元の画像として生成する。また、AR画像抽出部151は、カメラ61によって取得されたRGBデータに基づいて、生成したAR画像に着色を行なう。AR画像抽出部151は、抽出したAR画像として生成する物体を特定する信号をARシナリオ制御部141へと送信する。また、AR画像抽出部151は、操作部135を介して所定の操作を受け付けることにより、データ記憶部120に記憶された特定の物体を、自動的にAR画像として生成する物体として抽出できる。抽出される物体としては、例えば、CAD(computer aided design)によって作成された図面によって特定される物体などがある。
ARシナリオ制御部141は、不要画像消去部149から送信された不要な物体として消去された画像の画像信号と、AR画像抽出部151によって抽出されたAR画像の画像信号と、を受信して、ARシナリオを作成する。ARシナリオ制御部141は、ARシナリオを作成する場合に、ARシナリオを作成した情報処理装置としてのHMD100の各種機器の性能を表す機器情報テーブルTB1を作成する。機器情報テーブルTB1には、HMD100が備える各種機器の性能として、カメラ61の性能としての解像度や画角、画像表示部20の表示領域や解像度、CPU140の処理能力、距離センサー65の画角や測定距離の精度、ROM121およびRAM122の能力などが含まれている。
また、ARシナリオ制御部141は、ARシナリオが実行されるときのAR画像の表示などの実行される各種処理のトリガーとなる条件と、条件の検出に応じて定まる順序に沿って実行されるAR画像の表示などのオブジェクト情報と、を含むシナリオデータ管理テーブルTB2も作成する。オブジェクト情報は、実行される処理のデータ(例えば、AR画像)と、データを出力させる処理を実行するための制御に必要な制御情報と、を含んでいる。言い換えると、ARシナリオは、実行される各種処理の順序を実現するための条件と、オブジェクト情報とを含むシナリオデータ管理テーブルTB2を有している。ARシナリオ制御部141は、シナリオデータ管理テーブルTB2を有するARシナリオが実行された場合に、ARシナリオを実行する装置が有する機器の性能に対応させてシナリオデータ管理テーブルTB2に含まれる制御情報を変更できるように、機器情報テーブルTB1を当該制御情報に対応付けて作成する。なお、本明細書におけるオブジェクト情報が含む出力されるデータとは、画像の表示や音声の出力などに加え、音声の入力を受け付ける状態に変化させるといった入力を待機する状態も含む。
図4は、シナリオデータ管理テーブルTB2が含むオブジェクト情報の一例を示す説明図である。図4に示すように、オブジェクト情報は、ARシナリオが実行されたときの後述する処理である表示関連実行処理(図4の表示関連)、物体認識処理(図4の物体認識)、UIデータ出力処理(図4のUI)に区分されている。オブジェクト情報では、出力されるデータと当該データを出力するための制御情報とが対応付けられている。本実施形態のオブジェクト情報では、ARシナリオを実行する装置の性能に関係する情報が制御情報として記憶されている。例えば、1つのオブジェクト情報としては、オブジェクトの名称がキャップであり、種別が3Dモデルであり、当該制御情報としての特徴点の座標が(X1,Y1,Z1)として特定され、画像として表示される場合に特徴点の座標が(X2,Y2,Z2)に設定されて表示され、画像として表示される際の表示領域のサイズが表示領域全体の大きさを1としたときにS1(<1)倍の大きさとして表示される。この制御情報に対応した3Dモデルの画像データは、データの欄に示されたキャップCPである。この制御情報は、表示関連および物体認識の対象として記憶されている。なお、図4に示すデータの内の「CP」については、説明のために便宜上示した記号であり、データとしては記憶されていない。なお、本実施形態では、制御情報とデータとが対応付けて記憶されているが、他の実施形態では、制御情報とデータとは別々の情報として記憶されていてもよい。また、本実施形態では、特徴点の座標として、CG(computer graphics)空間(モデル空間)の座標として記憶されているが、他の実施形態では、それ以外の空間の座標として記憶されていてもよいし、2次元の座標として記憶されていてもよい。また、機器情報テーブルTB1は、CG空間の座標における1ピクセルと実空間の座標における単位面積との対応情報を有している。機器情報テーブルTB1が当該対応情報を有することで、実空間での1ミリメートル(mm)当たりのピクセル数、または、1ピクセル当たりの実空間での長さの関係を対応付けることができる。
図4に示す表示関連の内のオブジェクト名称が表示ナビ1では、種別が文字画像であるため、ARシナリオが実行されているときにデータの「キャップを・・・」の文字画像が表示される。また、図4に示す物体認識は、撮像範囲から検出された対象を認識するデータについてであり、オブジェクト名称がペットボトルの例では、3DモデルとしてのペットボトルPTが撮像範囲から検出されると物体認識が開始される。特徴点としての座標(X4,Y4,Z4)の位置を基準としてペットボトルPTの検出が判断される。ペットボトルPTの変形がないため、制御情報の物体形状変化として、固定が記憶されている。また、許容認識精度としてペットボトルPTを検出する際の誤差がS4(mm)まで許容される。撮像範囲からペットボトルPTの検出を終了するか否かとして、終了時の状態であるキャップCP装着後が記憶されている。
図4に示すUIの内のオブジェクト名称が音声ナビ2では、データとして記憶された「キャップをAR画像の・・・」が種別として記憶された音声として主力される。当該音声が録音された時間または再生される時間としての録音時間がS5(s)として記憶されている。また、音声ナビ2には、代替テキストへのリンクが有りとして記憶されているため、ARシナリオを実行している装置が音声を出力する機器を備えていない場合に、音声として出力される予定のデータが文字画像として表示される。図4に示すUIの内のオブジェクト名称が入力確認1では、種別が音声認識であるため、ARシナリオが実行されているときにマイクなどの音声取得が可能な機器によって、データとして記憶された「はい」の音声を取得する。また、入力確認1では、入力受付へのリンクが有りとして記憶されているため、ARシナリオを実行している装置が音声を取得する機器を備えていない場合に、音声として入力される予定のデータをキーボードやマウスといった他のUIからの操作をとして受け付けることもできる。
ARシナリオ制御部141は、作成した機器情報テーブルTB1とシナリオデータ管理テーブルTB2とを関連付けて、データ記憶部120に記憶させる。ARシナリオ制御部141が機器情報テーブルTB1とシナリオデータ管理テーブルTB2とを関連付けて記憶することで、ARシナリオが実行される装置の性能と、ARシナリオを作成した情報処理装置との性能と、に違いがある場合でも、所定の順序に沿って、不具合を抑制したARシナリオが実行される。なお、ARシナリオ制御部141は、請求項における生成部に相当し、データ記憶部120は、請求項における記憶部に相当する。また、本実施形態では、ARシナリオは、画像シナリオである。
A−2.ARシナリオ作成処理:
図5は、ARシナリオ作成処理の流れを示すフローチャートである。ARシナリオ作成処理は、カメラ61を有する情報処理装置としてのHMD100によってARシナリオが作成される処理である。HMD100のARシナリオ制御部141は、機器情報テーブルTB1とシナリオデータ管理テーブルTB2とを対応付けてデータ記憶部120に記憶させて、ARシナリオを作成する。
ARシナリオ作成処理では、初めに、ARシナリオ制御部141がARシナリオを作成する情報処理装置としてのHMD100の機器情報テーブルTB1を作成する(ステップS11)。ARシナリオ制御部141は、HMD100におけるカメラ61の性能、距離センサー65の性能、マイク69の性能、ROM121およびRAM122の性能、および、HMD100が対応しているUIについての機器情報テーブルTB1を作成する。これら各種機器の性能として、例えば、カメラ61の解像度やカメラ61の画角、または内部パラメーターなどが挙げられ、距離センサー65の撮像範囲の被写体の対象までの距離として測定した深度の精度などが挙げられる。なお、カメラ61の内部パラメーターとは、カメラ61に含まれるイメージセンサーの1画素あたりの横方向・縦方向のそれぞれの長さ(または、それぞれの方向の画素密度)とカメラ61の焦点距離とに基づいて画素数で表現された焦点距離、および、カメラ61の光軸とイメージセンサーとの交点を原点とするときのイメージセンサーの中心座標である。
ARシナリオ制御部141は、機器情報テーブルTB1を作成すると、ARシナリオを作成するためのカメラ61を用いた外景の撮像およびマイク69を用いた外部音声の取得である録音を開始する(ステップS13)。本実施形態では、図2に示したように、ARシナリオ制御部141は、HMD100を装着した使用者USが、キャップCPが装着されていないペットボトルPTにキャップCPを装着させるためのARシナリオを作成する。
図6ないし図8は、使用者USがARシナリオを作成するときのカメラ61の撮像画像IMGを示す説明図である。図6から図8までの各図には、図2に示すように、使用者USがペットボトルPTにキャップCPを装着させるときに、装着したHMD100のカメラ61が撮像した動画の内の撮像画像IMGが示されている。本実施形態では、画像表示部20を装着した使用者USのカメラ61の撮像画像IMGが使用者USの視野と同じ範囲になるように、カメラ61の画角が設定されている。
図6には、互いに装着されていないペットボトルPTとキャップCPとが撮像された撮像画像IMGが示されている。本実施形態では、使用者USがペットボトルPTに装着されていないキャップCPを、ペットボトルPTに装着するARシナリオが作成される。
図7には、キャップCPをペットボトルPTに装着するために、使用者USが、キャップCPを右手RHで保持して、ペットボトルPTにおけるキャップCPを装着させる場所である開口部PTaに移動させようとしている途中の状態の撮像画像IMGが示されている。また、本実施形態では、図7に示すキャップCPをペットボトルPTの開口部PTaに移動させるときに、使用者USは、「キャップを開口部の位置に移動させてください」と発言する。そのため、HMD100のマイク69は、使用者USの発言を外部音声として取得する。
図8には、使用者USが、キャップCPをペットボトルPTの開口部PTaに移動させた後に、キャップCPをペットボトルPTの開口部PTaの中心軸を中心として、上面から見たときに時計回り(以降では、単に、「時計回り」とも言う)の方向へと回転させているときの状態の撮像画像IMGが示されている。
図5のステップS13の処理が行なわれた後、操作部135は、撮像および録音を終了する所定の操作の受付を待機する(ステップS15)。撮像および録音を終了する所定の操作が受け付けられない場合には(ステップS15:NO)、ARシナリオ制御部141は、引き続き、ARシナリオを作成するための撮像および録音を実行し、所定の操作の受付を待機する(ステップS13)。ステップS15の処理において、使用者が、ペットボトルPTにキャップCPを装着させ、さらにキャップCPを回転させてペットボトルPTにキャップCPを固定させた後に、操作部135が所定の操作を受け付けると(ステップS15:YES)、ARシナリオ制御部141は、撮像および録音を終了する。
ARシナリオ制御部141は、ARシナリオを作成するための撮像および録音を終了すると、撮像画像に基づいて、表示関連のシナリオデータ管理テーブルTB2を作成する(ステップS17)。本実施形態では、ARシナリオ制御部141は、撮像した被写体や録音によって取得した音声を時系列の経過に沿って、被写体や音声のそれぞれに対して、図4に示すデータを作成する。例えば、キャップCPの動きについて、不要画像消去部149は、不要な物体として認識した使用者USの右手RHを撮像画像から削除する。その後、AR画像抽出部151は、右手RHが撮像されていない状態のキャップCPの画像に基づいて、右手RHに保持されて撮像されていないキャップCPの部分の画像を作成する。ARシナリオ制御部141は、撮像されたキャップCPに対してエッジ検出などを行なうことで、自動的に図4に示す特徴点、表示位置、表示領域のサイズを設定する。操作部135が所定の操作を受け付けることで、ARシナリオ制御部141は、特徴点、表示位置、表示領域のサイズを変更できる。また、ARシナリオ制御部141は、作成したキャップCPのデータに対して、例えば、不要だと使用者に判断される特定のマークなどの画像を削除したり、付加することもできる。また、ARシナリオ制御部141は、各処理の前後関係を変更することで、ARシナリオが実行される場合の順序を変更できる。
図5のステップS17の処理の後、ARシナリオ制御部141は、撮像画像に含まれる被写体に対しての全ての表示関連のシナリオデータ管理テーブルTB2を作成したか否かを判定する(ステップS19)。ARシナリオ制御部141は、全ての表示関連のシナリオデータ管理テーブルTB2を作成していないと判定した場合には(ステップS19:NO)、引き続き、まだ作成していない表示関連のシナリオデータ管理テーブルTB2を作成する。換言すると、ARシナリオ制御部141は、作成していない表示関連のデータがある場合には、当該データについてのシナリオデータ管理テーブルTB2を作成する。本実施形態では、ARシナリオ制御部141は、図4に示すオブジェクト名称が「キャップ」のシナリオデータ管理テーブルTB2を作成した後に、まだシナリオデータ管理テーブルTB2として作成されていない図4に示す「表示ナビ1」の表示関連のシナリオデータ管理テーブルTB2を作成する。ARシナリオ制御部141は、録音された「キャップを開口部の位置に移動させてください」の音声を基として、表示画像としての図4に示すデータを作成する。本実施形態では、操作部135が使用者から操作を受け付けることで、ARシナリオ制御部141は、作成するデータの内の一部である「開口部」に対して、撮像されたキャップCPの画像を置換した文字画像を作成する。
図5のステップS19の処理において、ARシナリオ制御部141は、全ての表示関連のシナリオデータ管理テーブルTB2を作成したと判定した場合には(ステップS19:YES)、次に、物体認識のシナリオデータ管理テーブルTB2を作成する(ステップS21)。本実施形態では、ARシナリオ制御部141は、静止している被写体であるペットボトルPTを、ARシナリオが実行されているときの撮像画像から検出して物体認識する対象としてのシナリオデータ管理テーブルTB2のオブジェクト情報を作成する。操作部135が所定の操作を受け付けることにより、ARシナリオ制御部141は、カメラ61の撮像画像の中から、物体認識する対象を選択する。物体認識部143によって1つ1つの物体が切り離されて認識されているため、操作部135が操作されて、撮像画像の中のペットボトルPTの一部が選択されると、ARシナリオ制御部141は、ペットボトルPT全体を物体認識する対象として選択する。ARシナリオ制御部141は、カメラ61によって撮像されたペットボトルPTに形状変化がなかったため、自動的に、図4に示す物体形状変化を「固定」として設定する。また、ARシナリオ制御部141は、図4に示す許容認識精度として、撮像されたペットボトルPTに大きさにと比例した寸法を自動的に設定する。また、本実施形態では、キャップCPがペットボトルPTの開口部PTaに装着されて時計回りに回された後に撮像が終了しているため、ARシナリオ制御部141は、操作部135が所定の操作を受け付けることで、図4に示す終了時の状態を、「キャップ装着後」として設定する。なお、キャップCPとペットボトルPTとは、請求項における特定対象に相当する。
図5のステップS21の処理の後、ARシナリオ制御部141は、全ての物体認識のシナリオデータ管理テーブルTB2を作成したか否かを判定する(ステップS23)。ARシナリオ制御部141は、全ての物体認識のシナリオデータ管理テーブルTB2を作成していないと判定した場合には(ステップS23:NO)、引き続き、残りの物体認識のシナリオデータ管理テーブルTB2を作成する(ステップS21)。
ステップS23の処理において、ARシナリオ制御部141は、全ての物体認識のシナリオデータ管理テーブルTB2を作成したと判定した場合には(ステップS23:YES)、次に、UIのシナリオデータ管理テーブルTB2を作成する(ステップS25)。本実施形態では、作成する物体認識のシナリオデータ管理テーブルTB2は、図4に示すオブジェクト情報が「キャップCP」のデータおよび「ペットボトル」のデータのみであり、他に作成するシナリオデータ管理テーブルTB2がないため、ARシナリオ制御部141は、ステップS25の処理を行なう。ARシナリオ制御部141は、図4に示す「音声ナビ2」を、UIのシナリオデータ管理テーブルTB2のオブジェクト情報として作成する。ARシナリオ制御部141は、録音された「キャップを開口部の位置に移動させてください」の音声を基として、ARシナリオが実行されている場合に音声として出力される図4に示すデータを作成する。本実施形態では、操作部135が所定の操作を受け付け、マイク69が所定の音声を取得することにより、ARシナリオ制御部141は、録音された音声の内の一部である「開口部」を、「AR画像」に置換した音声データを作成する。本実施形態では、UIのシナリオデータ管理テーブルTB2のオブジェクト情報が作成されているときに、操作部135が所定の操作を受け付けて、録音された音声が再生されているときの「開口部」の前後である2点を指定することで、ARシナリオ制御部141は、2点間に存在する音声を別の音声に置換できる。ARシナリオ制御部141は、UIのオブジェクト情報が作成されているときに、マイク69が「AR画像」の音声を新規に取得することで、ARシナリオ制御部141は、録音された「開口部」に、新規に取得された音声である「AR画像」を置換できる。本実施形態では、ARシナリオ制御部141によって作成されるシナリオデータ管理テーブルTB2のオブジェクト情報の一例として、図4に示すデータが挙げられる。また、ARシナリオ制御部141は、操作部135が所定の操作を受け付けることで、作成した音声データを、ARシナリオを実行する装置が音声を出力できる機器を備えていない場合に、文字画像を表示する代替手段の設定としての図4に示す代替テキストへのリンクを「有り」に設定する。
図5のステップS25の処理の後、ARシナリオ制御部141は、全てのUIのシナリオデータ管理テーブルTB2を作成したか否かを判定する(ステップS27)。ARシナリオ制御部141は、全てのUIのシナリオデータ管理テーブルTB2を作成していないと判定した場合には(ステップS27:NO)、引き続き、残りのUIのシナリオデータ管理テーブルTB2を作成する(ステップS25)。本実施形態では、ARシナリオ制御部141は、UIのシナリオデータ管理テーブルTB2として図4に示すオブジェクト名称が「音声ナビ2」のデータを作成した後に、まだ作成されていないシナリオデータ管理テーブルTB2としての図4に示す「入力確認」のUIのデータを作成する。ARシナリオ制御部141は、操作部135が所定の操作を受け付けることにより、図4に示す「入力確認1」のシナリオデータ管理テーブルTB2のオブジェクト情報を作成する。「入力確認1」は、ARシナリオが実行されているときに、ARシナリオに沿った動作を使用者が終了したときに入力される「はい」の音声データである。本実施形態では、入力確認1として設定されるデータは音声データであるため、ARシナリオ制御部141は、ARシナリオを実行している装置に音声を取得する機器が備えられていない場合に、例えばキーボードなどの他のUIが操作を検出できるように、図4に示す入力受付のリンクを「有り」に設定する。
図5のステップS27の処理において、ARシナリオ制御部141は、全てのUIのシナリオデータ管理テーブルTB2を作成したと判定した場合には(ステップS27:YES)、次に、作成した機器情報テーブルTB1とシナリオデータ管理テーブルTB2と対応付けたARシナリオをデータ記憶部120に記憶させて(ステップS29)、CPU140は、AR作成シナリオ処理を終了する。
以上説明したように、本実施形態のHMD100では、データ記憶部120は、AR画像を含むARシナリオを作成した情報処理装置としてのHMD100の各種機器の性能を表す機器情報テーブルTB1を記憶している。また、データ記憶部120は、ARシナリオが実行されるときのAR画像の表示などのトリガーとなる条件と、条件の検出に応じて定まる順序に沿って実行されるオブジェクト情報と、を含むシナリオデータ管理テーブルTB2を機器情報テーブルTB1と対応付けて記憶している。ARシナリオが実行された場合に、機器情報テーブルTB1は、ARシナリオを実行する装置が有する機器の性能に対応させてシナリオデータ管理テーブルTB2に含まれる制御情報を変更できるように当該制御情報に対応付けられて記憶されている。そのため、本実施形態のHMD100のデータ記憶部120に記憶されたARシナリオが他の装置で実行された場合に、データ記憶部120に記憶されたARシナリオが実行されるために必要な機器について機器情報テーブルTB1を参照できる。ARシナリオを実行する装置は、機器情報テーブルTB1を参照することで、ARシナリオを実行する装置と機器情報テーブルTB1に記憶された各種機器の性能に違いがあっても、不具合を抑制したARシナリオを所定の順序に沿って実行できる。ここでいう不具合としては、例えば、処理速度の遅延、解像度の問題、認識する被写体までの距離の精度、他の装置に対応しているUIなどが挙げられる。
また、本実施形態のHMD100では、ARシナリオ制御部141が機器情報テーブルTB1とシナリオデータ管理テーブルTB2とを含むARシナリオを作成する。機器情報テーブルTB1は、ARシナリオを作成した情報処理装置としてのHMD100の機器の性能を表す情報である。そのため、本実施形態のHMD100では、ARシナリオが作成されるときに、簡便に機器情報テーブルTB1が作成される。
また、本実施形態のHMD100では、作成されるARシナリオに含まれる1つの処理では、カメラ61の撮像画像の中から検出された被写体の位置に対応付けられて画像が表示されるように作成される。そのため、本実施形態のHMD100では、カメラ61の撮像範囲の中からARシナリオに含まれるAR画像が作成されるため、使用者は、AR画像として作成したい被写体を撮像するだけでARシナリオを作成でき、ARシナリオを作成する際の使用者の使い勝手が向上する。
また、本実施形態のHMD100では、機器情報テーブルTB1にカメラ61の性能の情報が含まれているため、ARシナリオを実行する装置の画像表示部の性能と、機器情報テーブルTB1のカメラ61の性能と、の違いによるARシナリオ実行時の表示画像の不具合を抑制できる。
また、本実施形態のHMD100では、機器情報テーブルTB1には、撮像範囲の中の被写体までの距離を測定する距離センサー65の画角や測定距離の精度といった性能が含まれている。そのため、本実施形態のHMD100では、距離センサー65の撮像範囲の中に含まれる被写体までの距離を含むAR画像が自動的に作成され、距離の情報に基づくAR画像が作成されるため、使用者は、簡便に立体的なAR画像を含むARシナリオを作成でき、ARシナリオを作成する際の使用者の使い勝手がより向上する。
また、本実施形態のHMD100では、ARシナリオは、音声を出力するUIデータ出力処理を含み、機器情報テーブルTB1には、音声を出力するUIデータ出力処理を行なうために必要な機器の性能の情報が含まれている。そのため、本実施形態のHMD100では、ARシナリオに含まれる画像表示の処理に加えて、音声出力の処理も含まれるため、使用者の利便性が向上する。
B.第2実施形態:
B−1.ARシナリオを実行する装置の構成:
図9は、第2実施形態におけるARシナリオを実行する装置としてのHMD100aの構成を機能的に示すブロック図である。第2実施形態のHMD100aは、第1実施形態のHMD100と比較して、画像表示部20aが10軸センサー66を有することと、制御部10aのCPU140aが機器設定部168、方向特定部166、画像設定部165を有すること、とが異なり、HMD100aの他の構成は、第1実施形態のHMD100と同じである。なお、図9では、図3に示す第1実施形態のARシナリオ制御部141、物体トラッキング部142、物体認識部143、3Dモデル生成部144、センサー制御部145、UI制御部146、ARシナリオ操作設定部147、付加情報取得部148、不要画像消去部149、AR画像抽出部151を合わせて、シナリオ作成部164として示している。また、図9では、図3で図示を省略されていた画像表示部20aにおける虚像を生成するための機能と、CPU140aが有する虚像の生成に関連する機能と、が図示されている。
画像表示部20aが有する10軸センサー66は、加速度(3軸)、角速度(3軸)、地磁気(3軸)、および、気圧(1軸)を検出するセンサーである。10軸センサー66は、画像表示部20aにおける右表示駆動部22の近くに内蔵されており、画像表示部20aが使用者の頭部に装着されているときには、使用者の頭部の動きや位置を検出する。
図9に示すように、制御部10aは、データ記憶部120と、操作部135と、ROM121と、RAM121と、電源130と、インターフェイス180と、CPU140aと、送信部51(Tx51)と、送信部52(Tx52)と、を有する。CPU140aは、ROM121に格納されているコンピュータープログラムを読み出し、RAM122に書き込みを実行することにより、オペレーティングシステム150(OS150)、表示制御部190、画像処理部160、画像設定部165、機器設定部168、シナリオ作成部164、および、方向特定部166として機能する。
表示制御部190は、右表示駆動部22および左表示駆動部24を制御する制御信号を生成する。具体的には、表示制御部190は、制御信号により、右LCD制御部211による右LCD241の駆動ON/OFF、右バックライト制御部201による右バックライト221の駆動ON/OFF、左LCD制御部212による左LCD242の駆動ON/OFF、左バックライト制御部202による左バックライト222の駆動ON/OFFなど、を個別に制御する。これにより、表示制御部190は、右表示駆動部22および左表示駆動部24のそれぞれによる画像光の生成および射出を制御する。例えば、表示制御部190は、右表示駆動部22および左表示駆動部24の両方に画像光を生成させたり、一方のみに画像光を生成させたり、両方共に画像光を生成させなかったりする。
表示制御部190は、右LCD制御部211と左LCD制御部212とに対する制御信号のそれぞれを、送信部51および52を介して送信する。また、表示制御部190は、右バックライト制御部201と左バックライト制御部202とに対する制御信号のそれぞれを送信する。
画像処理部160は、コンテンツに含まれる画像信号やARシナリオに含まれる画像信号を取得する。画像処理部160は、取得した画像信号から、垂直同期信号VSyncや水平同期信号HSync等の同期信号を分離する。また、画像処理部160は、分離した垂直同期信号VSyncや水平同期信号HSyncの周期に応じて、PLL(Phase Locked Loop)回路等(図示しない)を利用してクロック信号PCLKを生成する。画像処理部160は、同期信号が分離されたアナログ画像信号を、A/D変換回路等(図示しない)を用いてディジタル画像信号に変換する。その後、画像処理部160は、変換後のディジタル画像信号を、対象画像の画像データ(RGBデータ)として、1フレームごとにデータ記憶部120内のDRAMに格納する。なお、画像処理部160は、必要に応じて、画像データに対して、解像度変換処理、輝度、彩度の調整といった種々の色調補正処理、キーストーン補正処理等の画像処理を実行してもよい。
画像処理部160は、生成されたクロック信号PCLK、垂直同期信号VSync、水平同期信号HSync、DRAMに格納された画像データ、のそれぞれを、送信部51、52を介して送信する。なお、送信部51を介して送信される画像データを「右眼用画像データ」とも呼び、送信部52を介して送信される画像データを「左眼用画像データ」とも呼ぶ。送信部51、52は、制御部10と画像表示部20との間におけるシリアル伝送のためのトランシーバーとして機能する。
方向特定部166は、10軸センサー66によって検出された加速度等に基づいて、画像表示部20aの位置や向きの変化を算出する。算出された画像表示部20aの位置や向きの変化は、後述する機器設定部168によって画像表示部20aに表示される画像の表示位置の補正等に用いられる。
機器設定部168は、ARシナリオを実行するHMD100aが有する各種機器(例えば、カメラ61など)の性能を表す実行装置情報テーブルTB3を作成する。また、機器設定部168は、データ記憶部120に記憶された機器情報テーブルTB1とシナリオデータ管理テーブルTB2とを含むARシナリオを取得する。機器設定部168は、作成した実行装置情報テーブルTB3と取得したARシナリオの機器情報テーブルTB1とを比較する。機器設定部168は、ARシナリオを実行するために必要なHMD100aが有する各種機器の性能の内、実行するARシナリオを作成した情報処理装置の機器情報テーブルTB1に含まれる機器の性能と異なる機器があるか否かを判定する。機器設定部168は、機器情報テーブルTB1に含まれる機器の性能と異なる機器をHMD100aが有していると判定した場合には、機器情報テーブルTB1に関連付けられているシナリオデータ管理テーブルTB2のデータを変更する。詳細については後述するが、データの変更としては、例えば、ARシナリオを作成した情報処理装置のカメラ61の解像度がARシナリオを実行するHMD100aのカメラ61aの解像度よりも高い場合には、機器設定部168は、シナリオデータ管理テーブルTB2に含まれるオブジェクト情報の制御情報に含まれる解像度を小さくした後に、画像表示部20aに当該データに基づく画像を表示させる。換言すると、機器設定部168は、実行するARシナリオの機器情報テーブルTB1とARシナリオを実行するHMD100aの実行装置情報テーブルTB3との違いに応じて、実行するARシナリオのシナリオデータ管理テーブルTB2の制御情報を変更する。なお、機器設定部168は、請求項における情報取得部と制御情報変更部とに相当する。カメラ61aは、請求項における第2撮像部に相当する。
画像設定部165は、画像表示部20aに表示させる画像(表示画像)の各種設定を行なう。例えば、画像設定部165は、表示画像の表示位置や表示画像の大きさや表示画像の輝度などを設定したり、表示画像を使用者に立体的に視認させるために視差を形成するように右眼用画像データと左眼用画像データとを設定する。第2実施形態では、カメラ61aの画角は、画像表示部20aを装着した使用者が正面を見ているときの視野と同じになるように設定されている。そのため、画像設定部165は、機器設定部168によって撮像画像の中から検出された物体の位置に対応付けてARシナリオに含まれるAR画像を画像表示部20aに表示させることができる。
B−2.ARシナリオ実行処理:
図10は、ARシナリオ実行処理の流れを示すフローチャートである。ARシナリオ実行処理は、HMD100aのCPU140aが、データ記憶部120に記憶されたARシナリオを実行することで、ARシナリオに含まれるAR画像や音声が出力される処理である。ARシナリオ実行処理では、初めに、機器設定部168が、ARシナリオを実行するHMD100aの実行装置情報テーブルTB3を作成または確認する情報テーブル確認処理を行なう(ステップS40)。
図11は、情報テーブル確認処理の流れを示すフローチャートである。情報テーブル確認処理では、初めに、機器設定部168が、ARシナリオを実行する実行装置としてのHMD100aの実行装置情報テーブルTB3があるか否かを判定する(ステップS41)。HMD100aでは、過去にARシナリオが実行されておらず、HMD100aが実行装置情報テーブルTB3を有していない場合には(ステップS41:NO)、機器設定部168は、ARシナリオを実行するために必要な情報としてのHMD100aの機器とOSとの入力を操作部135によって受け付ける(ステップS43)。機器設定部168は、所定の操作画面を画像表示部20aに表示させることで、使用者への操作部135を介した入力を促す。次に、機器設定部168は、実行しようとしているARシナリオが、入力された機器やOSに対応しているか否かを判定する(ステップS45)。機器設定部168は、実行しようとしているARシナリオが入力された機器やOSに対応していると判定した場合には(ステップS45:YES)、ARシナリオを実行するためのアプリケーションプログラムインターフェイス(API)を設定する(ステップS47)。その後、機器設定部168は、実行しようとしているARシナリオに対応した実行装置情報テーブルTB3を設定して(ステップS49)、情報テーブル確認処理を終了する。
ステップS41の処理において、既にARシナリオが実行されていた場合には、HMD100aは、実行しようとするARシナリオに対応した実行装置情報テーブルTB3を有しているため(ステップS41:YES)、機器設定部168は、既に有している実行装置情報テーブルTB3を、ARシナリオを実行するための実行装置情報テーブルTB3として設定する(ステップS49)。ステップS45の処理において、機器設定部168は、実行しようとしているARシナリオに、入力された機器やOSが対応していないと判定した場合には(ステップS45:NO)、実行装置情報テーブルTB3を作成せずに、CPU140aは、情報テーブル確認処理を終了する。
情報テーブル確認処理が終了すると(図10のステップS40)、機器設定部168は、情報テーブル確認処理が行なわれたARシナリオがHMD100aによって実行可能か否かを判定する(ステップS32)。ARシナリオが実行可能ではないと判定されると(ステップS32:NO)、CPU140aは、ARシナリオ実行処理を終了する。ARシナリオが実行可能であると判定されると(ステップS32:YES)、CPU140aは、画像表示部20aに画像を表示させるための表示関連実行処理を行なう(ステップS50)。
図12は、表示関連実行処理の流れを示すフローチャートである。表示関連実行処理では、初めに、機器設定部168は、実行されるARシナリオが画像表示部20aに表示させるAR画像などの表示画像を含んでいるか否かを判定する(ステップS51)。実行されるARシナリオに表示画像データが含まれていないと判定された場合には(ステップS51:NO)、CPU140aは、画像表示部20aに画像を表示させずに、表示関連実行処理を終了する。
ステップS51の処理において、機器設定部168は、実行されるARシナリオが表示画像を含んでいると判定した場合には(ステップS51:YES)、当該表示画像のシナリオデータ管理テーブルTB2のオブジェクト情報(例えば、図4)を取得する(ステップS53)。機器設定部168は、取得したオブジェクト情報の内から表示画像の種別を特定する(ステップS55)。次に、機器設定部168は、作成された実行装置情報テーブルTB3において画像を表示するための機器の動作環境と、実行されるARシナリオを作成した情報処理装置の機器情報テーブルTB1において画像を表示するための機器の動作環境と、を読み込む(ステップS57)。その後、機器設定部168は、読み込んだ動作環境を比較することで、オブジェクト情報のデータとして記憶されている画像を表示可能な表示可能領域や画像の解像度と、作成した実行装置情報テーブルTB3に記憶された画像表示部20aが画像を表示可能な表示可能領域や解像度と、が同じであるか否かを判定する。換言すると、機器設定部168は、シナリオデータ管理テーブルTB2の制御情報に記憶されたディスプレイの大きさや解像度と、画像表示部20aのディスプレイの大きさや解像度と、が同じであるか否かを判定する。
機器設定部168は、表示可能領域と解像度との少なくとも一方が同じでないと判定した場合には(ステップS59:NO)、表示画像を画像表示部20aに表示する際の表示領域や解像度を変更する(ステップS61)。画像の表示領域や解像度の変更として、例えば、ARシナリオを実行する画像表示部20aの表示可能領域が小さく、かつ、解像度が低い場合には、機器設定部168は、表示画像に基づく画像の表示領域を小さくし、表示画像の画素を間引いて解像度を落としたりする。
機器設定部168は、ステップS61の処理を行なった後、ARシナリオを実行するHMD100aの画像を表示するための処理性能が、機器情報テーブルTB1に記憶された処理性能以上であるか否かを判定する(ステップS63)。また、ステップS59の処理において、機器設定部168は、機器情報テーブルTB1における表示可能領域および解像度と、実行装置情報テーブルTB3における表示可能領域および解像度と、が同じであると判定した場合には、ステップS61の処理を行なわずに、ステップS63の処理を行なう。
機器設定部168は、HMD100aの画像を表示するための処理性能が機器情報テーブルTB1に記憶された処理性能以上ではないと判定した場合には(ステップS63:NO)、画像表示部20aに表示画像を表示させる際の表示形式を変更する(ステップS65)。ステップS63およびステップS65でいう画像を表示させるための処理性能とは、メモリの容量やコンピューターの処理速度を表すMIPS(million instructions per second)などが一例として挙げられる。表示形式を変更する方法の一例として、機器設定部168は、表示画像のデータの一部を間引いたり、表示画像が動画である場合にフレームレートを大きくしたり、表示画像の外枠の部分のみを表示したりする方法が挙げられる。
ステップS65の処理が行なわれると、画像設定部165は、機器設定部168によって変更された表示画像データに基づく画像を画像表示部20aに表示させ(ステップS67)、CPU140aは、表示関連実行処理を終了する。また、ステップS63の処理において、HMD100aの画像を表示するための処理性能が機器情報テーブルTB1に記憶された処理性能以上であると判定した場合には(ステップS63:YES)、機器設定部168は、表示画像の表示形式を変更せずに、表示画像を画像表示部20aに表示させる。
図10のステップS50の表示関連実行処理が終了すると、機器設定部168は、ARシナリオを実行しているHMD100aが撮像している撮像範囲からARシナリオに関連する被写体を検出する物体認識処理を実行する(ステップS70)。
図13および図14は、物体認識処理の流れを示すフローチャートである。物体認識処理では、初めに、機器設定部168は、実行されるARシナリオに、ARシナリオを実行するHMD100aのカメラ61aの撮像画像に含まれる特定の対象として検出する物体認識データがあるか否かを判定する(ステップS71)。実行されるARシナリオに物体認識データがないと判定された場合には(ステップS71:NO)、CPU140aは、物体認識処理を終了する。
ステップS71の処理において、機器設定部168は、実行するARシナリオに物体認識データが1つ以上あると判定した場合には(ステップS71:YES)、当該物体認識のシナリオデータ管理テーブルTB2のオブジェクト情報(例えば、図4)を取得する(ステップS73)。機器設定部168は、取得したオブジェクト情報の内から物体認識の種類を特定する(ステップS75)。物体認識の種類としては、例えば、撮像画像から検出される画像としての対象や、撮像画像の中から検出された対象を追跡するトラッキングの対象が挙げられる。次に、機器設定部168は、作成された実行装置情報テーブルTB3において物体認識を行なうための機器の動作環境と、実行されるARシナリオを作成した情報処理装置の機器情報テーブルTB1において物体認識を行なうための機器の動作環境と、を読み込む(ステップS77)。
機器設定部168は、ステップS77の処理を行なうと、ARシナリオを実行するHMD100aが撮像画像から検出された対象までの距離を測定する距離センサーを有しているか否かを判定する(ステップS79)。機器設定部168は、実行装置情報テーブルTB3を参照して、HMD100aが距離センサーを有していないと判定した場合には(ステップS79:NO)、カメラ61aだけで物体認識処理を行なうか否かを判定する(ステップS80)。機器設定部168は、操作部135が受け付けた所定の操作に基づいて、ステップS80の処理を決定する。カメラ61aだけで物体認識処理を行わないと判定された場合には(ステップS80:NO)、CPU140aは、物体認識処理を終了する。ステップS80の処理において、機器設定部168は、カメラ61aだけで物体認識処理を行なうと判定した場合には(ステップS80:YES)、後述する図14のステップS89の処理を実行する。
図13のステップS79の処理において、機器設定部168は、HMD100aが距離センサーを有していると判定した場合には(ステップS79:YES)、距離センサーの内で最も撮像画像に含まれる対象までの測定距離の精度が高い距離センサーを、物体認識処理で使用する距離センサーとして決定する(ステップS81)。なお、ステップS81の処理において、HMD100aが1つの距離センサーしか有していない場合には、当該センサーが物体認識処理において使用されるセンサーとして決定される。
次に、機器設定部168は、物体認識処理に使用すると決定した距離センサーの精度が機器情報テーブルTB1にARシナリオを作成した情報処理装置の距離センサーの精度以上であるか否かを判定する(ステップS83)。機器設定部168は、使用する距離センサーの精度が機器情報テーブルTB1に記憶された距離センサーの精度以上でないと判定した場合には(ステップS83:NO)、当該距離センサーを使用して物体認識処理を行なった場合に認識する物体に誤差が発生する可能性があることを示す画像を画像表示部20aに表示させる(ステップS85)。次に、機器設定部168は、操作部135が所定の操作を受け付けることにより、物体認識に誤差がある可能性を含んだ状態で物体認識処理を続行するか否かを決定する(ステップS87)。物体認識処理を続行しない操作を受け付けた場合には(ステップS87:NO)、CPU140aは、物体認識処理を終了する。
ステップS87の処理において、物体認識処理を続行する操作を受け付けた場合(ステップS87:YES)、撮像画像の中から物体を認識する検出対象の外観情報を、オブジェクト情報(例えば、図4)のデータから取得する(図14のステップS89)。なお、同じように、図13のステップS83の処理において、機器設定部168は、物体認識処理に使用する距離センサーの精度が機器情報テーブルTB1に記憶された距離センサーの精度以上であると判定した場合には(ステップS83:YES)、検出対象の外観情報をオブジェクト情報のデータから取得する(ステップS89)。オブジェクト情報のデータから取得される検出対象としては、例えば、3Dモデルであったり、2次元の平面的な画像が挙げられる。
ステップS89の処理が行なわれると、カメラ61aは、外景を撮像する(ステップS91)。次に、機器設定部168は、撮像された撮像画像に対してパターンマッチングや統計的識別法を行なうことで、撮像画像の中から検出対象の候補を検出する。機器設定部168は、撮像画像の中から検出対象の外観情報と同じ対象を、精度を落として処理速度を高めることで、検出対象の候補として検出する。次に、機器設定部168は、検出した検出対象の候補と検出対象の外観情報とを比較することで、検出した検出対象の候補の類似度を算出し、算出した類似度に基づいて、検出対象の候補を検出対象として扱うか否かを判定する(ステップS97)。類似度は、オブジェクト情報の制御情報に含まれる1つの情報として記憶されている。また、機器設定部168は、機器情報テーブルTB1と実行装置情報テーブルTB3とにおける撮像部の解像度等の性能に応じて、類似度を判定するための閾値を変更してもよい。
ステップS97の処理において、機器設定部168は、検出対象の候補と検出対象との類似度が閾値以上ではなく、検出対象の候補を検出対象として扱わないと判定した場合には(ステップS97:NO)、後述するステップS113の処理を行なう。ステップS97の処理において、機器設定部168は、検出対象の候補と検出対象との類似度が閾値以上の場合には(ステップS97:YES)、検出対象の候補を検出対象として検出する(ステップS99)。その後、機器設定部168は、撮像画像の中から検出した検出対象を追跡するトラッキングを実行するか否かを、オブジェクト情報の制御情報に基づいて判定する(ステップS103)。検出対象のトラッキングを実行しないと判定された場合には(ステップS103:NO)、CPU140aは、検出された検出対象を物体認識して、物体認識処理を終了する。
ステップS103の処理において、機器設定部168は、検出対象のトラッキングを実行すると判定した場合には(ステップS103:YES)、撮像画像から検出される検出対象の動きを検出する(ステップS105)。その後、方向特定部166は、10軸センサー66から検出される画像表示部20aの加速度等に基づいて、画像表示部20aを装着している使用者の頭部の動きを検出する(ステップS107)。機器設定部168は、検出した検出対象の動きと検出された使用者の頭部の動きとに基づいて、画像表示部20aと検出対象との相対位置の関係を算出する(ステップS109)。なお、第2実施形態では、HMD100aのカメラ61aの画角と、画像表示部20aを装着した使用者の視野と、が同じになるように予め設定されている。機器設定部168は、ステップS109の処理を行なうと、算出した相対位置の関係に基づいて、画像表示部20aに対する検出対象の位置のトラッキングを実行する(ステップS111)。
その後、機器設定部168は、実行されるARシナリオに含まれる全ての物体認識データに対しての処理を行なったか否かを判定する(ステップS113)。機器設定部168は、全ての物体認識データに対しての処理を行なっていないと判定した場合には(ステップS113:NO)、処理を行なっていない物体認識データについてステップS89以降の処理を行なう。ステップS113の処理において、全ての物体認識データについての処理が行なわれたと判定された場合(ステップS113:YES)、CPU140aは、物体認識処理を終了する。
図10のステップS70の物体認識処理が終了すると、機器設定部168は、ARシナリオを実行しているHMD100aに対応しているUIを用いてデータを出力するUIデータ出力処理を実行する(ステップS120)。
図15は、UIデータ出力処理の流れを示すフローチャートである。UIデータ出力処理では、初めに、機器設定部168は、実行されるARシナリオに、ARシナリオを実行するHMD100aに対応しているUIを用いて出力する出力データがあるか否かを判定する(ステップS121)。実行されるARシナリオにUIの出力データがないと判定された場合には(ステップS121:NO)、CPU140aは、UIデータ出力処理を終了する。
ステップS121の処理において、機器設定部168は、実行するARシナリオにUIの出力データがあると判定した場合には(ステップS121:YES)、UIの出力データのオブジェクト情報の制御情報(例えば、図4)を取得する(ステップS123)。次に、機器設定部168は、出力データを出力するUIを特定する(ステップS125)。特定されるUIとしては、例えば、音声を出力するイヤホン32,34などが挙げられる。次に、機器設定部168は、実行装置情報テーブルTB3における出力データを出力するためのUIの動作環境と、実行されるARシナリオを作成した情報処理装置の機器情報テーブルTB1におけるUIの動作環境と、を読み込む(ステップS127)。機器設定部168は、出力データを出力するための機器情報テーブルTB1のUIと対応するUI(以下、単に「対応UI」とも呼ぶ)が実行装置情報テーブルTB3に存在するか否かを判定する(ステップS129)。機器設定部168は、対応UIがないと判定した場合には(ステップS129:NO)、出力データを出力可能なUIである代替UIがあるか否かを判定する(ステップS131)。機器設定部168は、代替UIがあるか否かの判定として、出力される出力データのオブジェクト情報に、代替UIに関連する制御情報(例えば、図4の「代替テキストへのリンク」や「入力受付へのリンク」)が含まれているか否かを確認する。
ステップS131の処理において、機器設定部168は、代替UIがあると判定した場合には(ステップS131:YES)、代替UIを用いて出力データを出力し(ステップS135)、CPU140aは、UIデータ出力処理を終了する。ステップS131の処理において、機器設定部168は、代替UIがないと判定した場合には(ステップS131:NO)、出力データを出力するための代替UIがない旨を使用者に報知して(ステップS137)、CPU140aは、UIデータ出力処理を終了する。報知の方法としては、画像表示部20aに出力データを出力できない文字画像を表示させる方法や、イヤホン32,34を介して出力データを出力できない音声を出力させたりする方法がある。
ステップS129の処理において、機器設定部168は、対応UIがあると判定した場合には(ステップS129:YES)、対応UIを用いて出力データを出力し(ステップS133)、CPU140aは、UIデータ出力処理を終了する。
CPU140aは、図10のステップS120の処理を行なうと、ARシナリオに含まれる表関連実行処理、物体認識処理、UIデータ出力処理、以外のその他の処理を実行する(ステップS34)。その他の処理とは、実行されるARシナリオの機器情報テーブルTB1やシナリオデータ管理テーブルTB2と関係のない処理である。その他の処理としては、例えば、外部環境に合わせた画像表示部20aの輝度の設定や出力する音声の音量の設定などが挙げられる。
ステップS36の処理において、CPU140aは、実行するARシナリオを実行するための条件の内の終了条件を満たしたか否かを判定する(ステップS36)。ここで、終了条件とは、例えば、後述する「はい」の音声の取得や、第3実施形態において説明する図23の第5条件などである。CPU140aは、終了条件を満たすと判定した場合には(ステップS36:YES)、ARシナリオ実行処理を終了する。
ステップS36の処理において、CPU140aは、終了条件を満たしていないと判定した場合には(ステップS36:NO)、実行するARシナリオの順序に沿ってステップS50以降の処理を繰り返す。処理が繰り返される例として、物体認識処理が行なわれた後に、撮像画像の中における認識された物体に関連付けてAR画像が画像表示部20aに表示される場合などが挙げられる。
以降では、ARシナリオの一例であるキャップ装着シナリオが実行された場合を例に挙げて、ARシナリオ実行処理について説明する。図16は、キャップ装着シナリオの流れを示すフローチャートである。キャップ装着シナリオは、キャップCPが装着されていないペットボトルPTの開口部PTaへとキャップCPを移動させて装着させることを、使用者に促す作業支援動画である。図16には、図10に示すARシナリオ実行処理において、ステップS50以降の処理が示されている。図16に示すように、ARシナリオの順序に沿った処理は、必ずしも、表示関連実行処理、物体認識処理、UIデータ出力処理、その他の処理の順に実行されるように設定されていない。そのため、ARシナリオの順序に沿って次に実行されるように設定された処理がない場合には、ARシナリオに設定された処理があるまでは、設定されていない処理は飛ばされる。
HMD100aがキャップ装着シナリオを実行すると、初めに、機器設定部168は、実行装置情報テーブルTB3を確認し(図10のステップS40)、HMD100aがキャップ装着シナリオを実行可能か否か判定する(ステップS32)。HMD100aがキャップ装着シナリオを実行可能であると判定された場合に(ステップS32:YES)、CPU140aは、撮像画像の中からペットボトルPTとキャップCPとを検出する物体認識処理を行なう(図16のステップS141)。
図17は、撮像画像の中からペットボトルPTとキャップCPとが検出された場合に使用者が視認する視野VRを示す説明図である。図17には、ペットボトルPTとペットボトルPTに装着されていないキャップCPとを使用者が視認している視野VRが示されている。CPU140aは、図17に示すように、ペットボトルPTとキャップCPとの物体認識処理を行なうと、次に、使用者にキャップCPを移動させるための画像を画像表示部20aに表示させる表示関連実行処理を行なう(図16のステップS143)。
図18は、検出されたペットボトルPTやキャップCPに対応付けられている画像が画像表示部20aに表示された場合に使用者が視認する視野VRを示す説明図である。図18には、表示関連実行処理によって画像表示部20aの画像表示最大領域PN内に文字画像TX1と、カーソル画像CS1と、キャップ画像IM1と、が表示された場合に使用者が視認する視野VRが示されている。なお、図18および以降の図において破線で示される画像表示最大領域PNは、画像表示部20aが画像を表示できる最大領域の外枠が便宜上示された破線であり、使用者には視認されない。
文字画像TX1は、キャップCPをペットボトルPTの開口部PTaへの移動を促す画像である。文字画像TX1が画像表示最大領域PNにおいて表示される位置は、画像表示最大領域PNの右上と予め定められている。また、文字画像TX1に含まれる文字のフォントの大きさは、画像表示最大領域PNの画素数との関係で予め定められている。カーソル画像CS1は、物体認識されたキャップCPからペットボトルPTの開口部PTaまでを矢印で指す画像である。機器設定部168は、キャップCPの特徴点と、ペットボトルPTにおける開口部PTaの特徴点とを特定することで、画像表示最大領域PNにカーソル画像CS1を表示できる。キャップ画像IM1は、物体認識された実物のキャップCPの移動後を表すAR画像である。第2実施形態では、キャップ画像IM1は、キャップCPの外観形状のみが表された画像であり、輝度が調整されて半手透明の画像として画像表示最大領域PNに表示されている。そのため、使用者は、キャップ画像IM1と重畳している物体認識されたペットボトルPTの開口部PTaを視認できる。キャップ画像IM1は、物体認識されたペットボトルPTにおける開口部PTaの特徴点に対応付けて画像表示最大領域PNに表示される。
CPU140aは、表示関連実行処理を行なうと(図16のステップS143)、キャップCPを移動させるための音声を出力するUIデータ出力処理を行なう(ステップS145)。CPU140aは、UIデータ出力処理として、物体認識されたキャップCPをペットボトルPTにおける開口部PTaへの移動を促す「キャップをキャップ画像の位置まで移動させて」の音声を、イヤホン32,34を介して出力させる。
次に、CPU140aは、キャップCPがペットボトルPTの開口部PTaへと移動された後のキャップCPの位置の物体認識処理を行なう(ステップS149)。言い換えると、CPU140aは、撮像画像において、実物のキャップCPがペットボトルPTの開口部PTaに移動したことの検出を待機する。CPU140aは、キャップCPがペットボトルPTの開口部PTaに移動した物体認識を行なった後に、キャップCPをペットボトルPTに対して回転させるための画像を画像表示部20aに表示させる表示関連実行処理を行なう(ステップS149)。
図19は、キャップCPを回転させるための画像が画像表示部20aに表示された場合に使用者が視認する視野VRを示す説明図である。図19に示すように、キャップCPの移動が認識された後に、画像表示部20aにカーソル画像CS2が表示される。カーソル画像CS2は、ペットボトルPTにおける開口部PTaに移動されたキャップCPを時計回りに回転させることを使用者に促す矢印の画像である。CPU140aは、カーソル画像CS2を画像表示最大領域PNに表示させる表示関連実行処理を行なった後(図16のステップS149)、キャップCPをペットボトルPTに対して回転させるための音声を出力するUIデータ出力処理を行なう(ステップS153)。CPU140aは、UIデータ出力処理として、キャップCPをカーソル画像CS2に沿って時計回りに回転させることを使用者に促す「キャップを矢印の方向に回してね」の音声を、イヤホン32,34を介して出力させる。
CPU140aは、UIデータ出力処理を行なった後(ステップS153)、ARシナリオとしてのキャップ装着シナリオの終了を使用者に問う画像を画像表示部20aに表示させる表示関連実行処理を行なう(ステップS153)。CPU140aは、UIデータ出力処理としての「キャップを矢印の方向に回してね」の音声が出力された後、表示関連実行処理として、所定の時間(例えば、3秒)が経過してから、キャップ装着シナリオの終了を使用者に問う文字画像TX2を画像表示最大領域PNに表示させる。
図20は、文字画像TX2が画像表示部20aに表示される表示関連実行処理が行なわれた場合に使用者が視認する視野VRを示す説明図である。CPU140aは、表示関連実行処理として、文字画像TX2を、予め定められている画像表示最大領域PNにおける右上の位置に表示させる。文字画像TX2は、キャップ装着シナリオの終了を、外部音声としてマイク69が受け付けるUIの処理を表す画像である。
その後、CPU140aは、ARシナリオとしてのキャップ装着シナリオの終了の音声の入力を受け付けるUIデータ出力処理を行なう(図16のステップS155)。UIデータ出力処理として、マイク69が「はい」の音声を取得すると、UIデータ出力処理を終了し、CPU140aは、全ての処理を実行したか否かを判定する(図10のステップS36)。キャップ装着ARシナリオでは、「はい」の音声が取得されると、全ての設定された処理が実行されたため(ステップS36:YES)、CPU140aは、ARシナリオとしてのキャップ装着シナリオ実行処理を終了する。なお、キャップ装着シナリオでは、UIデータ出力処理において、マイク69が「はい」の音声を取得しない場合には、CPU140aは、引き続き、音声の取得を待機する。
以上説明したように、第2実施形態のHMD100aでは、機器設定部168は、ARシナリオを実行するHMD100aが有する各種機器の性能を表す実行装置情報テーブルTB3を作成し、データ記憶部120に記憶された機器情報テーブルTB1とシナリオデータ管理テーブルTB2とを含むARシナリオを取得する。機器設定部168は、実行装置情報テーブルTB3と機器情報テーブルTB1とを比較する。その比較の結果、機器設定部168は、機器情報テーブルTB1に含まれる機器の性能と異なる機器をHMD100aが有している場合には、機器情報テーブルTB1に関連付けられているシナリオデータ管理テーブルTB2に含まれるオブジェクト情報の制御情報を変更する。そのため、第2実施形態のHMD100aでは、他の情報処理装置によって作成されたARシナリオを実行する場合に、ARシナリオを作成した情報処理装置が有する機器をHMD100aが有していなくても、HMD100aが有する機器に対応させてARシナリオを実行する。これにより、ARシナリオを実行する画像表示装置であるHMD100aのそれぞれに対応させてARシナリオが作成される必要がなく、ARシナリオを作成する情報処理装置が限定されないため、ARシナリオの作成や提供を行なう者の使い勝手が向上する。また、ARシナリオを実行する画像表示装置であるHMD100aの機器に応じてARシナリオが実行されるため、ARシナリオを実行する使用者の利便性を向上させることができる。
また、第2実施形態のHMD100aでは、画像設定部165は、カメラ61aによって撮像された撮像画像の中から検出された現実のペットボトルPTやキャップCPの位置に合わせてAR画像を表示させる。そのため、第2実施形態のHMD100aでは、現実の対象物と表示画像とをより対応付けて使用者に視認させることができ、使用者の使い勝手が向上する。
C.第3実施形態:
図21は、第3実施形態におけるARシナリオ実行処理の流れを示すフローチャートである。第3実施形態のARシナリオ実行処理では、第2実施形態のARシナリオ実行処理のステップS50,S70,S120,S34,S36の処理に代わりに、オブジェクト実行処理S160を備える点が異なる。そのため、第3実施形態では、第2実施形態のARシナリオ実行処理と同じ処理については、説明を省略する。オブジェクト実行処理では、予め設定された設定条件が検出されると、検出された設定条件に対応付けられたオブジェクト情報に含まれるデータの処理が行なわれる。オブジェクト実行処理では、表示関連や物体認識といったオブジェクト情報の種類に関わらず、検出された物体認識をトリガーとする設定条件に応じて、ARシナリオの順序に沿った表示関連とUIとのデータ処理が実行される。
図22は、オブジェクト実行処理の流れを示すフローチャートである。図23は、第3実施形態のオブジェクト実行処理における各処理の内容を示す一覧表である。図23には、ARシナリオの順序を定める条件の内容(検出内容/判定内容)が示されている。第3実施形態では、シナリオデータ管理テーブルTB2は、シナリオ制御情報として、図23に示すデータ、および、後述する図24,26,28,30に示すデータを含んでいる。第3実施形態では、物体認識される複数の特定の対象として、2つの特定の対象を認識し、2つの特定の対象の内、1つの第1物体としてのキャップCPと、もう一方の第2物体としてのペットボトルPTとの少なくとも一方、が物体認識された場合を例に挙げて説明する。なお、他の実施形態では、設定条件を含むARシナリオの順序を定める条件の数については、限りはなく、また、検出される特定の対象の数は、1つであってもよいし、3つ以上であってもよい。
オブジェクト実行処理では、初めに、HMD100aの機器設定部168が、第1物体としてのキャップCPと第2物体としてのペットボトルPTとを撮像範囲から検出する物体認識の処理を開始する(ステップS161)。次に、機器設定部168は、図23に示す第1条件として、第2物体のペットボトルPTのみを検出したか否かを判定する(図22のステップS163)。機器設定部168は、第1条件を検出していないと判定した場合には(ステップS163:NO)、後述するステップS167の処理を行なう。ステップS163の処理において、機器設定部168は、第1条件を検出したと判定した場合には(ステップS163:YES)、第1条件に対応した表示関連およびUIのデータ処理を行なう(ステップS165)。
図24は、第1条件に対応付けられて実行される表示関連およびUIの処理内容を示す一覧表である。図25は、第1条件が検出された場合に使用者が視認する視野VRを示す説明図である。機器設定部168は、第1条件を検出すると、図24に示すように、表示関連の処理として、検出された実物のペットボトルPTの開口部PTaに、図25に示すキャップ画像IM1を画像表示最大領域PNに表示させる。さらに、機器設定部168は、キャップ画像IM1が表示されたペットボトルPTの開口部PTaを指す矢印のカーソル画像CS3も画像表示最大領域PNに表示させる。また、機器設定部168は、図24に示すように、UIの処理として、「キャップを矢印の方向に移動させてください」の音声を、イヤホン32,34を介して出力させる。さらに、機器設定部168は、図25に示すように、出力した音声と同じ「キャップを矢印の方向に移動させてください」の文字画像TX3を画像表示最大領域PNに表示させる。なお、機器設定部168は、第1条件を検出しても、マイク69が何らかの音声を検出する音声受付の処理を行なわない。
機器設定部168は、検出した第1条件に対応した処理を行なうと(図22のステップS165)、図23に示す第2条件として、第1物体のキャップCPのみを検出したか否かを判定する(図22のステップS167)。機器設定部168は、第2条件を検出していないと判定した場合には(ステップS167:NO)、後述するステップS171の処理を行なう。ステップS167の処理において、機器設定部168は、第2条件を検出したと判定した場合には(ステップS167:YES)、第2条件に対応した表示関連およびUIのデータ処理を行なう(ステップS169)。
図26は、第2条件に対応付けられて実行される表示関連およびUIの処理内容を示す一覧表である。図27は、第2条件が検出された場合に使用者が視認する視野VRを示す説明図である。機器設定部168は、第2条件を検出すると、図26および図27に示すように、表示関連の処理として、検出された実物のキャップCPとは異なる位置に、第2物体のペットボトルPTのボトル画像IM2を画像表示最大領域PNに表示させる。さらに、機器設定部168は、図27に示すように、ペットボトルPTのボトル画像IM2の開口部PTaに重畳された第1物体のキャップCPのキャップ画像IM1を画像表示最大領域PNに表示させる。換言すると、機器設定部168は、ARシナリオが手順に沿って最後まで実行された場合のキャップCPとペットボトルPTとの最終状態での位置関係を表すキャップ画像IM1とボトル画像IM2とを画像表示最大領域PNに表示させる。さらに、機器設定部168は、キャップ画像IM1が表示されたペットボトルPTの開口部PTaを指す矢印のカーソル画像CS3も画像表示最大領域PNに表示させる。また、機器設定部168は、UIの処理として、第1条件を検出したときと同じ「キャップを矢印の方向に移動させてください」の音声としてイヤホン32,34を介して出力させる。さらに、機器設定部168は、図27に示すように、文字画像TX3を画像表示最大領域PNに表示させる。
機器設定部168は、検出した第2条件に対応した処理を行なうと(図22のステップS169)、図23に示す第3条件として、互いに離れた第1物体としてのキャップCPと第2物体としてのペットボトルPTとを検出しているか否かを判定する(図22のステップS171)。機器設定部168は、第3条件を検出していないと判定した場合には(ステップS171:NO)、後述するステップS175の処理を行なう。ステップS171の処理において、機器設定部168は、第3条件を検出したと判定した場合には(ステップS171:YES)、第3条件に対応した表示関連およびUIのデータ処理を行なう(ステップS173)。
図28は、第3条件に対応付けられて実行される表示関連およびUIの処理内容を示す一覧表である。図29は、第3条件が検出された場合に使用者が視認する視野VRを示す説明図である。機器設定部168は、第3条件を検出すると、図28および図29に示すように、表示関連の処理として、検出された実物の第2物体のペットボトルPTの開口部PTaに第1物体のキャップCPのキャップ画像IM1を重畳するように画像表示最大領域PNに表示させる。さらに、機器設定部168は、検出された実物のキャップCPからペットボトルPTの開口部PTaまでを指し示すカーソル画像CS1を画像表示最大領域PNに表示させる。また、機器設定部168は、UIの処理として、第1条件を検出したときと同じ「キャップを矢印の方向に移動させてください」の音声としてイヤホン32,34を介して出力させる。さらに、機器設定部168は、図29に示すように、文字画像TX3を画像表示最大領域PNに表示させる。
機器設定部168は、検出した第3条件に対応した処理を行なうと(図22のステップS173)、図23に示す第4条件として、第2物体のペットボトルPTの開口部PTaに第1物体のキャップCPが装着された状態を検出しているか否かを判定する(ステップS175)。機器設定部168は、第4条件を検出していないと判定した場合には(ステップS175:NO)、後述するステップS179の処理を行なう。ステップS175の処理において、機器設定部168は、第4条件を検出したと判定した場合には(ステップS177:YES)、第4条件に対応した表示関連およびUIのデータ処理を行なう。
図30は、第4条件に対応付けられて実行される表示関連およびUIの処理内容を示す一覧表である。図31は、第4条件が検出された場合に使用者が視認する視野VRを示す説明図である。機器設定部168は、第4条件を検出すると、図30および図31に示すように、表示関連の処理として、検出された実物のキャップCPをペットボトルPTの上から見たときに時計回りに回転を促す矢印のカーソル画像CS2を画像表示最大領域PNに表示させる。また、機器設定部168は、UIの処理として、「キャップを矢印の方に回して閉めてください」の音声としてイヤホン32,34を介して出力させる。さらに、機器設定部168は、図31に示すように、出力した音声と同じ内容を表す文字画像TX4を画像表示最大領域PNに表示させる。その後、さらに、機器設定部168は、「閉めたら「終了」と言ってください」の音声としてイヤホン32,34を介して出力させる。さらに、機器設定部168は、出力した音声の「閉めたら「終了」と言ってください」と同じ内容を表す文字画像TX5を画像表示最大領域PNに表示させる。図32は、第4条件が検出された後に文字画像TX5が表示された場合に使用者が視認する視野VRを示す説明図である。
機器設定部168は、検出した第4条件に対応した処理を行なうと(図22のステップS177)、図23に示す第5条件として、第4条件に対応した処理が行なわれた後に、所定の音声としての「終了」(図30,32)の音声をマイク69が検出したか否かを判定する(図22のステップS179)。機器設定部168は、第5条件を検出していないと判定した場合には(ステップS179:NO)、ステップS163以降の処理を繰り返す。ステップS179の処理において、機器設定部168は、第5条件を検出したと判定した場合には(ステップS179:YES)、機器設定部168は、オブジェクト実行処理を終了する。なお、第1条件等は、請求項における所定の条件に相当する。また、キャップ画像IM1の表示や予め設定された音声の検出は、請求項における所定の情報の提示または受付に相当する。
以上説明したように、第3実施形態のHMD100aでは、データ記憶部120に記憶されたARシナリオは、第1条件などのオブジェクト処理を実行するための条件の情報を含んでいる。このように、ARシナリオ実行処理では、物体認識やトラッキングのオブジェクト情報の検出を条件として、表示関連およびUIの処理が行なわれる。なお、実行される処理と、実行される処理に対応付けられた物体認識などの設定条件と、の関係については種々変形可能である。
D.第4実施形態:
図33は、第4実施形態におけるARシナリオ作成処理の流れを示すフローチャートである。第4実施形態のARシナリオ作成処理では、図5に示す第1実施形態のARシナリオ作成処理と比較して、色情報および距離情報を含むRGBDデータと、マイク69が取得した音声データと、を区別してシナリオデータ管理テーブルTB2を作成する点が異なる。具体的には、第3実施形態のARシナリオ作成処理は、図5に示すARシナリオ作成処理におけるステップS17からステップS27までの処理の代わりに、図33に示すステップS181からステップS201までの処理を有する。そのため、第4実施形態では、第1実施形態のARシナリオ作成処理と同じ処理についての説明を省略する。
第4実施形態のARシナリオ作成処理では、撮像および録音を終了する所定の操作をHMD100の操作部135が受け付け、ARシナリオ制御部141は、撮像および録音を終了すると(ステップS15:YES)、撮像および録音によって取得したデータを記憶する。これにより、撮像および録音を行なう装置がARシナリオの作成を行なえなくても、HMD100は、撮像および録音のデータを取得することで、ARシナリオを作成できる。なお、他の実施形態では、ステップS181の処理がなくてもよい。
ARシナリオ制御部141は、撮像および録音によって取得したデータをRGBDデータと音声データとに分別する(ステップS183)。ARシナリオ制御部141は、分別したデータのそれぞれがRGBDデータまたは音声データであるかを判定する(ステップS185)。ARシナリオ制御部141は、RGDBデータと判定したデータに対して(ステップS185:RGDBデータ)、物体認識部143を用いて、撮像範囲に含まれる物体を1つ1つの物体として認識し、認識した物体に対して、パターンマッチングなどによって人体のパーツなどを抽出する(ステップS187)。
ARシナリオ制御部141は、認識した物体の1つ1つに対して、物体トラッキング部142を用いて、移動物体と静止物体とを特定し、移動物体をトラッキングするトラッキング処理を行なう(ステップS189)。ARシナリオ制御部141は、3Dモデル生成部144を用いて、特定した移動物体と静止物体とのそれぞれに対して、センサー制御部145が取得したRGBデータと距離センサー65が取得した距離データとを用いて、3Dモデルや2Dモデルを作成する(ステップS191)。
ARシナリオ制御部141は、作成したモデルのそれぞれを別々のデータとして、データ記憶部120に記憶させる(ステップS193)。この時点では、例えば、第1実施形態におけるキャップCPのモデルとペットボトルPTのモデルとは、何の関係性も有していない状態でデータ記憶部120に記憶されている。その後、ARシナリオ制御部141は、後述するステップS201の処理を行なう。
ステップS185の処理において、ARシナリオ制御部141は、音声データと判定したデータに対して(ステップS183:音声データ)、UI制御部146を用いて、音声認識を行なう(ステップS195)。ARシナリオ制御部141は、音声認識したデータに対して、ARシナリオが実行される場合に、UI制御部146を用いて出力する音声データを作成したり、テキスト変換部152を用いて画像表示最大領域PNに表示させる文字画像を作成したりする(ステップS197)。
ARシナリオ制御部141は、作成した音声データや文字画像のそれぞれを別々のデータとして、データ記憶部120に記憶させる(ステップS197)。この時点では、例えば、第1実施形態の文字画像TX1と、音声として出力される文字画像TX1の内容と、は何の関係性も有していない状態でデータ記憶部120に記憶されている。
その後、ARシナリオ制御部141は、ステップS193の処理によって作成したモデルのデータと、ステップS199の処理によって作成した音声等のデータと、を用いて、シナリオデータ管理テーブルTB2を作成する(ステップS201)。ARシナリオ制御部141は、ARシナリオが実行されるための条件と、条件が満たされるときに実行される情報の提示や受付と、を含むシナリオデータ管理テーブルTB2を作成する。当該処理によって、別々に作成されたモデルや音声データなどが関連付けられる。
ARシナリオ制御部141は、作成したシナリオデータ管理テーブルTB2と、ステップS11の処理によって作成された機器情報テーブルTB1とを対応付けたARシナリオをデータ記憶部120に記憶する(ステップS29)。このように、撮像や録音によって取得されたデータの処理によって作成されるシナリオデータ管理テーブルTB2やARシナリオの作成方法については種々変形可能である。
E.変形例:
なお、この発明は上記実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば、次のような変形も可能である。
E−1.変形例1:
上記第1実施形態では、ARシナリオを作成する情報処理装置として、HMD100を例に挙げて説明したが、情報処理装置は、種々変形可能である。例えば、ARシナリオを作成する情報処理装置は、撮像部としてのカメラを備えるPCなどであってもよい。また、情報処理装置は、撮像部として複数のカメラや複数の距離センサーを備える情報システムであってもよい。
上記第1実施形態では、情報処理装置としてのHMD100がARシナリオを作成したが、情報処理装置は、必ずしもARシナリオを作成する必要はない。例えば、情報処理装置は、機器情報テーブルTB1とシナリオデータ管理テーブルTB2とを対応付けてハードディスクなどの記憶部に記憶している機器であればよく、サーバーなどであってもよい。
上記第1実施形態では、ARシナリオ制御部141は、ARシナリオを作成した情報処理装置としてのHMD100の機器情報テーブルTB1を作成したが、作成する機器情報テーブルTB1については、種々変形可能である。また、ARシナリオ制御部141は、機器情報テーブルTB1として、ARシナリオを作成する際に使用されていない機器の性能を作成してもよい。ARシナリオを作成する際に使用されていない機器の性能が機器情報テーブルTB1として作成されることで、ARシナリオ実行処理における代替UI(図15のステップS131)の選択を迅速にできる。
機器情報テーブルTB1に含まれる情報は、必ずしもARシナリオを作成した機器の性能(「作成機器性能」とも呼ぶ)を表すものであるとは限らない。当該ARシナリオを実行するのに最適なHMDの性能、HMDに含まれる各機器(各デバイス)の種類、HMDに含まれる各機器(各デバイス)の性能(「実行機器性能」とも呼ぶ)であってもよい。作成機器性能と実行機器性能を包括して、HMD(情報処理装置の一例)がARシナリオを実行するのに求められるハードウェアの仕様と表記する。
機器情報テーブルTB1の役割の簡単な例を示すと以下(1)、(2)の通りである。
(1)機器情報テーブルTB1は、物体認識に区分けされた或るオブジェクト情報に対応付けて、「カメラおよび距離センサー」を示す情報を有している。これにより、当該シナリオ情報を実行するHMDに対して、カメラと距離センサーとを組み合わせて、当該オブジェクトについて物体認識処理を実行することが望ましいことを伝えることができる。カメラしか備えないHMDは、機器情報テーブルTB1と自己の機器情報テーブルTB3との比較により、当該シナリオ情報を実行しないようにすることもできるし、誤差が生じることをユーザーが承諾した場合にカメラだけで当該オブジェクトについて物体認識をするようにすることもできる。
(2)機器情報テーブルTB1は、物体認識に区分けされた或るオブジェクト情報に対応づけて、「カメラ」を示す情報を有している。これにより、当該シナリオ情報を実行するHMDに対して、当該オブジェクトについて物体認識処理を実行するのにカメラを用いれば足りること、またはカメラおよび距離センサーを組み合わせて用いればより好ましいこと、を伝えることができる。
上記第1実施形態の図4では、シナリオデータ管理テーブルTB2に含まれるオブジェクト情報の一例について説明したが、オブジェクト情報やシナリオデータ管理テーブルTB2については、種々変形可能である。上記実施形態では、オブジェクト情報が表示関連、物体認識、UIに区別されたが、区別される必要もなく、また、この3つの区分よりも多く区分されてもよい。例えば、ARシナリオの順序に沿って、第1の処理、第2の処理のように、表示関連や物体認識の区別がされずに、時系列に沿った処理のオブジェクト情報として扱われてもよい。また、オブジェクト情報では、図4に示すように、制御情報とデータとが分けて関連付けられていたが、オブジェクト情報のデータ構造については、種々変形可能である。例えば、オブジェクト情報のデータ構造として、制御情報とデータとが分けられていなくてもよいし、制御情報とデータとに並列な別なカテゴリーによって分けられていてもよい。
また、上記第1実施形態のオブジェクト情報では、図4に示すように、制御情報に含まれる位置情報は、特徴点の座標に基づく情報であったが、位置情報の形態については、種々変形可能である。例えば、位置情報は、データとしての3Dモデルの重心であってもよいし、物体認識によって検出される物体の内の撮像された部分によって特徴点が設定されてもよいし、操作部135が操作されることで任意に決定されてもよい。
上記第1実施形態のARシナリオ作成処理では、ARシナリオ制御部141は、ARシナリオを作成するために、外景の撮像および外部音声の取得が行なったが(図5のステップS13)、外部音声を取得する必要はない。また、ARシナリオ制御部141は、ARシナリオを作成するために、外景の撮像と外部音声の取得と異なる操作として、例えば、操作部135のキーボードに入力された文字を文字画像として取得してもよい。また、ARシナリオ制御部141は、作成された複数のARシナリオを組み合わせて1つのARシナリオとして作成してもよいし、ARシナリオが実行されているときに、検出された検出対象によってARシナリオが分岐するように設定してもよい。
上記第1実施形態では、ARシナリオ制御部141は、ARシナリオを作成した情報処理装置としてのHMD100の各種機器の性能を表す機器情報テーブルTB1を作成するが、機器情報テーブルTB1の代わりの情報を作成してもよい。例えば、ARシナリオ制御部141は、各種機器の性能に依存しない標準化された対応情報を、機器情報テーブルTB1の代わりに作成してもよいし、機器情報テーブルTB1に加えて作成してもよい。また、ARシナリオ制御部141は、標準化された対応情報に代えて、標準化された対応情報と機器情報テーブルTB1との変換係数を作成してもよい。この変形例では、例えば、実物としてのペットボトルPTが物体認識され、物体認識されたペットボトルPTに合わせてキャップCPのキャップ画像IM1が表示される場合に、ペットボトルPTまでの距離がわかれば、ペットボトルPTの大きさに合わせたキャップ画像IM1が表示される。具体的には、ペットボトルPTの大きさに対して、釣り合いの取れた大小関係を構成するキャップ画像IM1が表示される。
E−2.変形例2:
上記第2実施形態では、ARシナリオを実行する画像表示装置として、HMD100aを例に挙げて説明したが、画像表示装置は、種々変形可能である。例えば、ARシナリオを実行する画像表示装置として、画像を表示可能なスマートフォンやPCであってもよい。また、画像を表示可能な画像表示部を有する情報システムであってもよい。また、画像表示装置としてのHMD100aは、ARシナリオを記憶したデータ記憶部120を有しておらず、例えば、無線通信などによってサーバー等から取得したARシナリオを実行してもよい。
上記第2実施形態では、ARシナリオを実行するHMD100aは、画像表示部20aを装着した使用者の頭部の動きを検出する10軸センサー66を有していたが、必ずしも有していなくてもよい。HMD100aは、10軸センサー66の代わりに、角速度を検出するジャイロセンサーなどであってもよい。
上記第2実施形態の図11に示す情報テーブル確認処理では、機器設定部168は、ARシナリオを実行するHMD100aの機器とOSとの入力を操作部135によって受け付けたが(ステップS43)、ARシナリオを実行する画像表示装置の機器の性能の確認の方法については、種々変形可能である。例えば、機器設定部168は、HMD100aがARシナリオを実行すると決定した場合に、HMD100aの実行装置情報テーブルTB3を自動的に作成してもよい。
上記第2実施形態の図13に示す物体認識処理では、ARシナリオを実行するHMD100aが有する距離センサー65の精度によって処理が変わったが(ステップS83からステップS87まで)、距離センサー65の精度によって行なわれる処理については、種々変形可能である。例えば、機器設定部168は、距離センサー65の精度にかかわらず、誤差の発生を報知せずに、物体認識処理を続行してもよい。また、物体認識処理において、発生する誤差について所定の閾値が予め設定されており、誤差と閾値との関係によって、ARシナリオの実行の有無が判定されてもよい。
上記第2実施形態の図10に示すARシナリオ実行処理では、ARシナリオが実行されている途中での終了について記載しなかったが、所定の操作を受け付けることで、CPU140aは、実行しているARシナリオを途中で強制終了させてもよい。
上記実施形態では、外景を撮像するカメラ61,61aや撮像された特定対象までの距離を測定する距離センサー65の一例を挙げたが、これらのセンサーについては、種々変形可能である。例えば、撮像部としてステレオカメラが用いられた場合には、ステレオカメラによって撮像された特定対象までの距離が測定される。ステレオカメラは、安価であり、明るい場所での計測に優れている特徴を有する。また、撮像された特定対象までの距離を測定する方法として、ストラクチャードライト法(structured light method)が用いられてもよい。ストラクチャードライト法は、物体の表面に特殊な設計の光パターンを投射し、その被投射パターンの変形を分析することによって奥行き(即ち、物体の表面上の点とカメラとの距離)を推定することによって、物体の3次元形状を復元する方法である。ストラクチャードライト法は、計測精度が高く、近距離計測に優れている特徴を有する。また、撮像された特定対象までの距離を測定する方法として、TOF(Time Of Flight)が用いられてもよい。TOFは、特定対象までの距離を測定する処理の負担が少なく、移動物体をトラッキングする計測に向いている。また、TOFは、距離の大小に伴う感度の低下が少ないという特徴を有する。
E−3.変形例3:
上記実施形態では、制御部10に操作部135が形成されたが、操作部135の態様については種々変形可能である。例えば、制御部10とは別体で操作部135であるユーザーインターフェースがある態様でもよい。この場合に、操作部135は、電源130等が形成された制御部10とは別体であるため、小型化でき、使用者の操作性が向上する。また、操作部の動きを検出する10軸センサー66を操作部135に形成して、検出した動きに基づいて各種操作が行なわれることで、使用者は、感覚的にHMD100の操作ができる。
例えば、画像光生成部は、有機EL(有機エレクトロルミネッセンス、Organic Electro-Luminescence)のディスプレイと、有機EL制御部とを備える構成としてもよい。また、例えば、画像生成部は、LCDに代えて、LCOS(Liquid crystal on silicon, LCoS は登録商標)や、デジタル・マイクロミラー・デバイス等を用いることもできる。また、例えば、レーザー網膜投影型のヘッドマウントディスプレイに対して本発明を適用することも可能である。レーザー網膜投影型の場合、画像表示最大領域PNは、使用者の眼に認識される画像領域として定義できる。また、画像表示最大領域PNは、各画素に形成されたMEMSシャッターを開閉するMEMSシャッター方式のディスプレイによって構成されてもよい。
また、例えば、HMD100は、光学像表示部が使用者の眼の一部分のみを覆う態様、換言すれば、光学像表示部が使用者の眼を完全に覆わない態様のヘッドマウントディスプレイとしてもよい。また、HMD100は、いわゆる単眼タイプのヘッドマウントディスプレイであるとしてもよい。また、HMD100の代わりに、使用者の頭部に装着されるのではなく、双眼鏡のように使用者が手で位置を固定するハンドヘルドディスプレイが画像表示装置として用いられてもよい。また、HMD100は、両眼タイプの光学透過型であるとしているが、本発明は、例えば、ビデオ透過型といった他の形式の頭部装着型表示装置にも同様に適用可能である。
また、HMD100は、他の装置から受信した画像信号に基づく画像を表示するためだけの表示装置と用いられてもよい。具体的には、デスクトップ型のPCのモニターに相当する表示装置として用いられ、例えば、デスクトップ型のPCから画像信号を受信することで、画像表示部20の画像表示最大領域PNに画像が表示されてもよい。
また、HMD100は、システムの一部として機能するように用いられてもよい。例えば、航空機を含むシステムの一部の機能を実行するための装置としてHMD100が用いられてもよいし、HMD100が用いられるシステムとしては、航空機を含むシステムに限られず、自動車や自転車など含むシステムであってもよい。
図34は、変形例におけるHMDの外観構成を示す説明図である。図34(A)の例の場合、図1に示したHMD100との違いは、画像表示部20xが、右光学像表示部26に代えて右光学像表示部26xを備える点と、左光学像表示部28に代えて左光学像表示部28xを備える点である。右光学像表示部26xは、上記実施形態の光学部材よりも小さく形成され、HMD100xの装着時における使用者の右眼の斜め上に配置されている。同様に、左光学像表示部28xは、上記実施形態の光学部材よりも小さく形成され、HMD100xの装着時における使用者の左眼の斜め上に配置されている。図34(B)の例の場合、図1に示したHMD100との違いは、画像表示部20yが、右光学像表示部26に代えて右光学像表示部26yを備える点と、左光学像表示部28に代えて左光学像表示部28yを備える点である。右光学像表示部26yは、上記実施形態の光学部材よりも小さく形成され、ヘッドマウントディスプレイの装着時における使用者の右眼の斜め下に配置されている。左光学像表示部28yは、上記実施形態の光学部材よりも小さく形成され、ヘッドマウントディスプレイの装着時における使用者の左眼の斜め下に配置されている。このように、光学像表示部は使用者の眼の近傍に配置されていれば足りる。また、光学像表示部を形成する光学部材の大きさも任意であり、光学像表示部が使用者の眼の一部分のみを覆う態様、換言すれば、光学像表示部が使用者の眼を完全に覆わない態様のHMDとして実現できる。
また、イヤホンは耳掛け型やヘッドバンド型を採用してもよく、省略してもよい。また、例えば、自動車や飛行機等の車両に搭載されるヘッドマウントディスプレイとして構成されてもよい。また、例えば、ヘルメット等の身体防護具に内蔵されたヘッドマウントディスプレイとして構成されてもよい。
上記実施形態におけるHMD100の構成は、あくまで一例であり、種々変形可能である。例えば、制御部10に設けられた方向キー16やトラックパッド14の一方を省略したり、方向キー16やトラックパッド14に加えてまたは方向キー16やトラックパッド14に代えて操作用スティック等の他の操作用インターフェイスを設けたりしてもよい。また、制御部10は、キーボードやマウス等の入力デバイスを接続可能な構成であり、キーボードやマウスから入力を受け付けるものとしてもよい。
また、画像表示部として、眼鏡のように装着する画像表示部20に代えて、例えば帽子のように装着する画像表示部といった他の方式の画像表示部が採用されてもよい。また、イヤホン32,34は適宜省略可能である。
また、上記実施形態において、HMD100は、使用者の左右の眼に同じ画像を表わす画像光を導いて使用者に二次元画像を視認させるとしてもよいし、使用者の左右の眼に異なる画像を表わす画像光を導いて使用者に三次元画像を視認させるとしてもよい。
また、上記実施形態において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。例えば、上記実施形態では、画像処理部160や音声処理部170は、CPU140がコンピュータープログラムを読み出して実行することにより実現されるとしているが、これらの機能部はハードウェア回路により実現されるとしてもよい。
また、本発明の機能の一部または全部がソフトウェアで実現される場合には、そのソフトウェア(コンピュータープログラム)は、コンピューター読み取り可能な記録媒体に格納された形で提供することができる。この発明において、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスクやCD−ROMのような携帯型の記録媒体に限らず、各種のRAMやROM等のコンピューター内の内部記憶装置や、ハードディスク等のコンピューターに固定されている外部記憶装置も含んでいる。
また、上記実施形態では、図1、図3、図9に示すように、制御部10と画像表示部20とが別々の構成として形成されているが、制御部10と画像表示部20との構成については、これに限られず、種々変形可能である。例えば、画像表示部20の内部に、制御部10に形成された構成の全てが形成されてもよいし、一部が形成されてもよい。また、上記実施形態における電源130が単独で形成されて、交換可能な構成であってもよいし、制御部10に形成された構成が重複して画像表示部20に形成されていてもよい。例えば、図3および図9に示すCPU140が制御部10と画像表示部20との両方に形成されていてもよいし、制御部10に形成されたCPU140と画像表示部20に形成されたCPUとが行なう機能が別々に分けられている構成としてもよい。
また、制御部10と画像表示部20とが一体化して、使用者の衣服に取り付けられるウェアラブルコンピューターの態様であってもよい。
本発明は、上記実施形態や変形例に限られるものではなく、その趣旨を逸脱しない範囲において種々の構成で実現することができる。例えば、発明の概要の欄に記載した各形態中の技術的特徴に対応する実施形態、変形例中の技術的特徴は、上述の課題の一部または全部を解決するために、あるいは、上述の効果の一部または全部を達成するために、適宜、差し替えや、組み合わせを行なうことが可能である。また、その技術的特徴が本明細書中に必須なものとして説明されていなければ、適宜、削除することが可能である。