以下、本発明の実施形態について、図面を参照して説明する。図面の記載において同一部分には同一符号を付して説明を省略する。
仮想オブジェクト出力装置1は、現実空間におけるユーザ110の手、指などの動きを検出し、手、指などの動きの情報を、表示デバイス106の画面に構築された仮想空間におけるオブジェクト(第1仮想オブジェクト220)の動きに反映させる。仮想オブジェクト出力装置1は、第1仮想オブジェクト220の動きを、仮想空間における他のオブジェクト(第2仮想オブジェクト210)に対する「押す」又は「触れる」などの基本的な物理操作として認識する。
仮想空間の一例として、本実施形態では、図2に示す車両310の車室内を用いる。仮想オブジェクト出力装置1は、車両310の車室内に設置されたカメラ308からカメラ映像(動画及び静止画を含む)を受信し、受信したカメラ映像を表示デバイス106に表示する。仮想オブジェクト出力装置1は、ユーザ110のアバタを示す第1仮想オブジェクト220と、車両310の車室内に設置された各種のスイッチ、ナビゲーション画面を仮想的に示す第2仮想オブジェクト210とを生成する。そして、仮想オブジェクト出力装置1は、生成した第1仮想オブジェクト220と、第2仮想オブジェクト210とをカメラ映像に重畳する。また、仮想オブジェクト出力装置1は、ユーザ110の動作の検出結果に基づき、仮想空間における第2仮想オブジェクト210に対して操作が行われたことを検出した場合に、第2仮想オブジェクト210に関連付けられた処理(例えば、車両310の窓を開ける)を行うための信号を車両310に送信する。
(仮想オブジェクト出力装置の構成例)
図1を参照して、本実施形態に係る仮想オブジェクト出力装置1の構成例について説明する。
図1に示すように、仮想オブジェクト出力装置1は、通信装置101と、ベース102と、センサ103と、第1コントローラ104と、動作検出デバイス105と、表示デバイス106と、を備える。これらは、ユーザ110が居るユーザ実空間100に設置される。
通信装置101は、インターネットなどのネットワークに接続して車両310との間でデータを送受信するインターフェースである。
ベース102は、ユーザ110の動作範囲109を決定するために用いられる。ベース102は対象物の位置情報を検出するセンサを備えており、ベース102によって検出されたユーザ110の位置情報は、第1コントローラ104に送信される。
センサ103は、ユーザ実空間100に居るユーザ110の身体の姿勢を検出するためのセンサであり、例えばCCD(Charge Coupled Device)、CMOS(Complementary Metal Oxide Semiconductor)等の撮像素子を有するカメラである。ユーザ110の姿勢検出方法の一例として、センサ103によって取得されたカラー画像とデプス情報(奥行き情報)に基づいて、ユーザ110のスケルトンの形状を推定して、ユーザ110の姿勢情報を検出する方法が挙げられる。センサ103は、検出したユーザ110の姿勢情報を第1コントローラ104に送信する。なお、センサ103は、表示デバイス106に組み込まれていてもよい。
動作検出デバイス105は、表示デバイス106の画面の仮想空間に配置された仮想物体であるオブジェクトに対して、例えば「押す」、「触れる」などの操作を目的としたユーザ110の手、指などの動きを検出し、検出情報を第1コントローラ104に送信する。
動作検出デバイス105は、筐体がユーザ110の手により把持されることで、ユーザ110に保持される。また、動作検出デバイス105は、加速度センサ、ジャイロセンサ(角速度センサ)等のような筐体の位置や向きの変化を検出するためのセンサを備えている。このような構成により、動作検出デバイス105は、筐体の位置や向きの変化の検出結果を、筐体を把持する手の位置や向きの変化を示す情報(すなわち、手の動きを認識するための情報)として取得することが可能となる。
動作検出デバイス105は、ユーザ110の手、指などの動きを検出することのできるものであればよく、例えば、モーションセンサを搭載したステッィク型のデバイスや、ユーザの手の甲、各指の関節の位置などを検出することのできるグローブ型のデバイスなどが挙げられる。あるいは、1以上のカメラでユーザ110の手、指などを撮像して画像認識によってユーザ110の手、指などの動きを検出してもよい。
表示デバイス106は、いわゆる頭部装着型のヘッドマウントディスプレイ(HMD)である。表示デバイス106は、ユーザ110の頭部に装着されることで、ユーザ110の眼前に、画像を表示するためのディスプレイを保持するように構成される。また、表示デバイス106には、ユーザ110の視線の動きを検出するためのセンサも含まれる。なお、表示デバイス106は、ウェアラブル型ディスプレイであればよく、眼鏡型デバイスでもよく、ブレスレット型ディスプレイでもよい。
表示デバイス106として適用可能な頭部装着型のヘッドマウントディスプレイには、没入型HMD、及びシースルー型HMDが含まれる。
没入型HMDは、ユーザ110の頭部または顔部に装着された場合に、ユーザ110の眼を覆うように装着され、ユーザ110の眼前にディスプレイが保持される。そのため、没入型HMDを装着したユーザ110は、外部の風景(現実世界の風景)を直接視野に入れることが困難であり、ディスプレイに表示された映像のみが視界に入ることとなる。このような構成により、没入型HMDは、画像を視聴しているユーザ110に対して没入感を与えることが可能となる。
シースルー型HMDは、例えば、ハーフミラーや透明な導光板を用いて、透明な導光部等からなる虚像光学系をユーザ110の眼前に保持し、虚像光学系の内側に画像を表示させる。そのため、シースルー型HMDを装着したユーザ110は、虚像光学系の内側に表示された画像を視聴している間も、外部の風景を視野に入れることが可能となる。なお、シースルー型HMDの具体的な一例として、眼鏡のレンズに相当する部分を虚像光学系として構成した、眼鏡型デバイスが挙げられる。
また、表示デバイス106がウェアラブル型である場合、例えば、加速度センサ、ジャイロセンサが設けられ、表示デバイス106を装着したユーザ110の頭部の動き(頭部の姿勢)を検出可能に構成されていてもよい。一例として、表示デバイス106は、ユーザ110の頭部の動きとして、ヨー方向、ピッチ方向、及びロール方向それぞれの成分を検出する。そして、表示デバイス106は、検出したユーザ110の頭部の動きに基づき、ユーザ110の視線が示す方向の変化を認識し、認識した視線方向の変化に応じた画像をユーザ110に提示してもよい。このような構成に基づき、例えば、ユーザ110の視線方向の変化に応じて仮想空間内の映像をユーザ110に提示することで、ユーザ110に対して、あたかも仮想空間内にいるような没入感を与えることが可能となる。
また、表示デバイス106に設けられた加速度センサ、ジャイロセンサは、ユーザ110の姿勢を検出することも可能である。ジャイロセンサは、各軸回り(ヨー方向、ピッチ方向、及びロール方向)の角度(傾き)を検出し、加速度センサは、表示デバイス106の動きを検知し、検出された角度及び検知された動きを用いて、ユーザ110の姿勢を特定することができる。このようにユーザ110の姿勢を検出する手段は、センサ103に限定されない。
また、表示デバイス106は、光学センサ(カメラ)を含んでもよい。表示デバイス106は、光学センサを用いてユーザ110の視線をトラッキングすることができる。なお、表示デバイス106は、近接センサを含んでもよい。近接センサは、ゴーグル部分に設置され、ユーザ110の顔部との接触有無を判定するために用いられる。
第1コントローラ104は、通信装置101、ベース102、センサ103、動作検出デバイス105、及び表示デバイス106と無線あるいは有線により通信することが可能である。第1コントローラ104は、CPU(Central Processing Unit)と、RAM(Random Access Memory)などにより構成されるメインメモリとを含む。第1コントローラ104はメインメモリを作業領域として用いてプログラムを実行し、VRなどの仮想空間の表示に関する情報処理を行う。第1コントローラ104は、プログラムを実行して演算処理を行うことが可能なものであればよく、PC(Personal Computer)、ゲーム機、サーバ装置、スマートフォンなどでもよい。なお、第1コントローラ104は、表示デバイス106に組み込まれていてもよい。
第1コントローラ104は、ベース102から受信したユーザ110の位置情報に基づいて、ユーザ110の動作範囲109を決定する。動作範囲109とは、仮想空間に反映可能な動作範囲をいう。つまり、動作範囲109内において、動作検出デバイス105によって検出されたユーザ110の動作が仮想空間に反映される。また、第1コントローラ104は、動作検出デバイス105により検出された情報に基づき、第1コントローラ104はユーザ110の動きを認識することが可能となるため、ユーザ110の動きの認識結果を各種制御に利用することが可能となる。
次に、図2を参照して、車両310について説明する。図2に示すように、車両310は、通信装置306と、第2コントローラ305と、運転者、他の乗員が座るシート307と、車室内を撮像するカメラ308と、エアコン301と、窓302と、ナビゲーション装置303と、ルームランプ304とを備える。車両310は、ユーザ実空間100とは異なる車両実空間300に存在する。
通信装置306は、インターネットなどのネットワークに接続して通信装置101との間でデータを送受信するインターフェースである。具体的には、通信装置306は、通信装置101にカメラ308によって撮像されたカメラ映像を送信する。また、通信装置306は、通信装置101からエアコン301のオンオフを切り替えたり、窓302を開閉したりするための信号を受信する。
第2コントローラ305は、第1コントローラ104と同様に、CPU及びメモリを備え、プログラムを実行して演算処理を行う。第2コントローラ305は通信装置101からエアコン301のオンオフを切り替える信号を受信すると、エアコン301のオンオフを切り替える。
次に、図3を参照して、仮想空間200について説明する。図3に示す仮想空間200は、車両310の車室内を仮想的に示す空間であり、カメラ308によって撮像されたカメラ映像に第1仮想オブジェクト220及び第2仮想オブジェクト210が重畳される。第1仮想オブジェクト220とは、図3に示すように、ユーザ110の動作を反映させた、いわゆるユーザ110のアバタであり、仮想空間200における仮想的なオブジェクトである。第2仮想オブジェクト210とは、図3に示す仮想エアコンスイッチ201、仮想窓スイッチ202、仮想ナビゲーション画面203、仮想ルームランプスイッチ204である。これらは車両310の車室内に設置されたエアコン301と、窓302と、ナビゲーション装置303と、ルームランプ304を仮想的に示すオブジェクトである。
(仮想オブジェクト出力装置の動作例)
次に、仮想オブジェクト出力装置1による、仮想空間の処理方法の一例について説明する。
第1コントローラ104は、車両310の車室内に設置されたカメラ308から、カメラ映像を受信する。第1コントローラ104は、受信したカメラ映像を表示デバイス106に表示する。仮想オブジェクト出力装置1は、ユーザ110のアバタを示す第1仮想オブジェクト220と、第2仮想オブジェクト210とを生成する。そして、仮想オブジェクト出力装置1は、生成した第1仮想オブジェクト220と、第2仮想オブジェクト210とをカメラ映像に重畳する。第1仮想オブジェクト220は、センサ103によって検出されたユーザ110の姿勢及び動作検出デバイス105によって検出されたユーザ110の動作に基づいて生成される仮想的なオブジェクトであり、ユーザ110の身体の少なくとも一部を示す。
第1コントローラ104は、ユーザ110の動作を検出すると、検出した動きを第1仮想オブジェクト220に反映させる。例えば、ユーザ110が手を伸ばすと、第1仮想オブジェクト220の手に相当する部分も伸びる。ユーザ110は、動作検出デバイス105を用いた自身の手の入力により、仮想空間200における仮想的な手を操作することができ、仮想的な手を介して仮想空間200内の第2仮想オブジェクト210に対して操作を行うことが可能となる。なお、図3に示す例では、第1仮想オブジェクト220は、ユーザ110の全身が反映されているが、これに限定されない。第1仮想オブジェクト220には、ユーザ110の身体の一部、例えば手(腕)のみが反映されてもよい。
図3に示す仮想エアコンスイッチ201、仮想窓スイッチ202、仮想ナビゲーション画面203、仮想ルームランプスイッチ204は、カメラ308から受信したカメラ映像に対して、車両310に配置された位置と同じ位置になるように重畳される。
第1コントローラ104は、ユーザ110の動作の検出結果に基づき、仮想空間200内において第1仮想オブジェクト220により第2仮想オブジェクト210に対して操作が行われたことを認識した場合に、第2仮想オブジェクト210に関連付けられた処理を開始する。具体的には、ユーザ110の動作が反映された第1仮想オブジェクト220が仮想エアコンスイッチ201を選択すれば、仮想エアコンスイッチ201が選択されたことを示す信号が通信装置306を介して第2コントローラ305に送信される。この信号を受信した第2コントローラ305は、エアコン301のオンオフを切り替えたり、空調の温度の上げ下げを制御したりする。同様に、第1仮想オブジェクト220が仮想窓スイッチ202を選択すれば、仮想窓スイッチ202が選択されたことを示す信号が通信装置306を介して第2コントローラ305に送信される。この信号を受信した第2コントローラ305は窓302を開けたり閉めたりする。同様に、第1仮想オブジェクト220が仮想ナビゲーション画面203を選択すれば、仮想ナビゲーション画面203が選択されたことを示す信号が通信装置306を介して第2コントローラ305に送信される。この信号を受信した第2コントローラ305は、ナビゲーション装置303の選択部分に関連付けられた処理を実行する。同様に、第1仮想オブジェクト220が仮想ルームランプスイッチ204を選択すれば、仮想ルームランプスイッチ204が選択されたことを示す信号が通信装置306を介して第2コントローラ305に送信される。この信号を受信した第2コントローラ305は、ルームランプ304のオンオフを切り替える。このように本実施形態によれば、ユーザ110が車室内に居なくても、ユーザ110はエアコン301のオンオフを切り替えたり、窓302を開けたり閉めたりすることができる。運転者が運転に集中しているときは、ユーザ110が代わりにエアコン301などを操作することにより、運転者の負荷は軽減する。なお、第2コントローラ305が、通信装置306を介して受信した信号に基づいて窓302を開けた場合、窓302の開放は仮想空間200にも反映され、仮想空間200の窓が開く。仮想空間200の窓が開いたことを見たユーザ110は、自身の操作が実際の車両310に反映されたことを知ることができる。
ここで、第1仮想オブジェクト220による第2仮想オブジェクト210の選択とは、第1仮想オブジェクト220と第2仮想オブジェクト210とが接触したことを指す。第1仮想オブジェクト220の手(腕)に相当する部分が伸びて、第1仮想オブジェクト220の手に相当する部分と、第2仮想オブジェクト210とが接触することにより、選択されたと認識され、選択されたことを示す信号が通信装置306を介して第2コントローラ305に送信される。なお、第1仮想オブジェクト220と第2仮想オブジェクト210とは、仮想空間上のオブジェクトであるため、第1仮想オブジェクト220と第2仮想オブジェクト210との接触は、必ずしも直接的な接触のみを意味しない。例えば、第1仮想オブジェクト220と第2仮想オブジェクト210とが近接する場合、あるいは、第1仮想オブジェクト220と第2仮想オブジェクト210との距離が所定距離以下になった場合に、第1仮想オブジェクト220と第2仮想オブジェクト210と接触したと判定されてもよい。
ユーザ実空間100に居るユーザ110の姿勢が、車室内の環境に適切でない場合がある。例えば、図1に示すユーザ110の姿勢は、仰向けで寝ている姿勢であるのに対し、図2に示す車室内のシート307の背もたれは起き上がっている。したがって、図1に示すユーザ実空間100に居るユーザ110の姿勢をそのまま図3に示す仮想空間に反映させた場合、ユーザ110の姿勢は、図2に示す車両実空間300における車室内のシート307を図3に示す仮想空間に反映されたシート207に適合しない。ユーザ110の上半身は、背もたれからはみ出ることになる。このように、ユーザ実空間100におけるユーザ110の姿勢を、仮想空間200に反映した場合において、仮想空間200で適した姿勢ではない場合に、第1コントローラ104は姿勢が適切ではないと判断する。姿勢が適切でない場合、第1コントローラ104は適切となるように姿勢のキャリブレーションを行う。具体的には第1コントローラ104はカメラ映像から背もたれの角度を取得し、取得した角度に基づいて、第1コントローラ104は第1仮想オブジェクト220が仮想空間200上のシート207に座っている姿勢となるように、姿勢のキャリブレーションを行う。なお、ユーザ実空間100に居るユーザ110の姿勢が、車室内の環境に適切である場合、第1コントローラ104は姿勢のキャリブレーションを行わない。ユーザ実空間100に居るユーザ110の姿勢が、車室内の環境に適切である場合とは、例えば、ユーザ110の姿勢がシート207に座っているような姿勢である場合をいう。シート307の背もたれの角度は、カメラ308により取得されたカメラ映像を取得することにより検知することとしたが、第1コントローラ104は、シート307に備えられた背もたれの角度を検知するセンサ(図示しない)により計測されたデータを、通信装置306及び通信装置101を経由して取得することにより、背もたれの角度を検知する構成とすることも可能である。
ここで、第1仮想オブジェクト220のユーザ110の手(腕)に相当する部分が伸びて仮想窓スイッチ202を選択したと仮定する。この場合、上述したように仮想窓スイッチ202が選択されたことを示す信号が通信装置306を介して第2コントローラ305に送信される。ただし、ユーザ110の動作範囲109が狭い場合、ユーザ110が手を伸ばせる範囲は限定され、仮想窓スイッチ202を選択しようとして手を伸ばしても、仮想窓スイッチ202に第1仮想オブジェクト220のユーザ110の手(腕)に相当する部分が届かないことが想定される。また、ユーザ110の身体上の問題(例えば麻痺)により、ユーザ110が手を少ししか伸ばせない場合、仮想窓スイッチ202を選択しようとして手を伸ばしても、仮想窓スイッチ202に第1仮想オブジェクト220のユーザ110の手(腕)に相当する部分が届かないことが想定される。
このような場合、第1コントローラ104は、第1仮想オブジェクト220のユーザ110の手(腕)に相当する部分を伸ばすことにより、課題を解決することが可能である。これは、現実では手がこれ以上伸びない場合であっても、第1仮想オブジェクト220は仮想的なオブジェクトであり、現実と同様な制限を受けないため、可能な処理である。この処理について以下詳細に説明する。まず、第1コントローラ104は、ユーザ110の動作に応じて、ユーザ110が操作したい仮想スイッチがどのスイッチなのか推定する。
推定手法として、ユーザ110の視線を用いる方法が挙げられる。表示デバイス106に設けられた光学センサ(カメラ)を用いてユーザ110の視線をトラッキングする。このような技術は、アイトラッキングと呼ばれる。アイトラッキングにおいて、視点の場所(どこを見ているのか)、頭部に対する眼の動きを計測・追跡する。光学センサによって検知された視線の動きが所定範囲に収まる場合、第1コントローラ104は所定範囲に位置する第2仮想オブジェクト210を、ユーザ110が操作したい第2仮想オブジェクト210として推定する。ユーザ110は操作したい第2仮想オブジェクト210を注視する傾向があるからである。ここでは、ユーザ110が操作したい第2仮想オブジェクト210を、仮想窓スイッチ202として説明する。
なお、推定方法は、アイトラッキングに限定されない。例えば、第1コントローラ104は第1仮想オブジェクト220の指先の方向を検出し、検出した指先の方向に位置する第2仮想オブジェクト210を、ユーザ110が操作したい第2仮想オブジェクト210として推定してもよい。また、第1コントローラ104は第1仮想オブジェクト220から、第2仮想オブジェクト(201~204)までの距離を測定し、測定した距離がもっとも短い第2仮想オブジェクトを、ユーザ110が操作したい第2仮想オブジェクトとして推定してもよい。
ユーザ110が操作したい第2仮想オブジェクトを、仮想窓スイッチ202と推定した後、第1コントローラ104は、仮想窓スイッチ202に向かってユーザ110が手を伸ばしている状態が所定時間継続しているか検出する。その理由は、仮想窓スイッチ202に向かってユーザ110が所定時間手を伸ばしているということは、ユーザ110が仮想窓スイッチ202を選択したい意思を表していると想定されるからである。
仮想窓スイッチ202に向かってユーザ110が所定時間手を伸ばしている場合、第1コントローラ104は、仮想窓スイッチ202を加工して、仮想窓スイッチ202を点滅させる。点滅させる理由は、ユーザ110が選択したいオブジェクトを再度確認するためである。第1コントローラ104は、仮想窓スイッチ202の点滅を見たユーザ110に対して、音声で「選択したいスイッチは、点滅しているスイッチですか?」と聞く。なお、ユーザ110への確認方法は、仮想空間200上で、文字で「選択したいスイッチは、点滅しているスイッチですか?」と表示してもよい。
第1コントローラ104からの確認に対し、ユーザ110は首を縦に振ることにより、肯定を示すことができる。ユーザ110が首を縦に振った動きは、表示デバイス106によって検知され、第1コントローラ104に情報が送信される。第1コントローラ104は、ユーザ110が首を縦に振った動きが検知されたため、点滅させた仮想窓スイッチ202がユーザ110が選択したいスイッチである、と判定する。
なお、肯定方法は、首の動きに限定されない。例えば第1コントローラ104は、ユーザ110の音声データを解析することにより、肯定か否かを判定してもよい。例えば、ユーザ110の「はい」という音声が入力された場合、第1コントローラ104は点滅させた仮想窓スイッチ202がユーザ110が選択したいスイッチである、と判定してもよい。
ユーザ110の肯定を判定した後、第1コントローラ104は、第1仮想オブジェクト220を加工して、第1仮想オブジェクト220の手に相当する部分を伸ばす。これにより、第1仮想オブジェクト220の手に相当する部分は、今まで届かなかった仮想窓スイッチ202に接触し、仮想窓スイッチ202が選択される。
次に、図4のフローチャートを参照して、仮想オブジェクト出力装置1の一動作例を説明する。
ステップS101において、センサ103は、ユーザ実空間100に居るユーザ110の身体の姿勢を検出する。処理はステップS103に進み、第1コントローラ104は車両310の車室内に設置されたカメラ308からカメラ映像を受信する。第1コントローラ104は、受信したカメラ映像を表示デバイス106に表示する。仮想オブジェクト出力装置1は、ユーザ110のアバタを示す第1仮想オブジェクト220と、第2仮想オブジェクト210とを生成する。そして、仮想オブジェクト出力装置1は、生成した第1仮想オブジェクト220と、第2仮想オブジェクト210とをカメラ映像に重畳する。
処理はステップS105に進み、第1コントローラ104はユーザ110の姿勢が適切か否かを判定する。ユーザ実空間100におけるユーザ110の姿勢を、仮想空間200に反映した場合において、仮想空間200で適した姿勢ではない場合に、第1コントローラ104は姿勢が適切ではないと判断する。姿勢が適切でない場合(ステップS105でNo)、第1コントローラ104は適切となるように姿勢のキャリブレーションを行う(ステップS107)。姿勢が適切である場合(ステップS105でYes)、処理はステップS109に進む。
ステップS109において、第1コントローラ104は表示デバイス106に設けられた光学センサを用いてユーザ110の視線をトラッキングする。光学センサによって検知された視線の動きが所定範囲に収まる場合(ステップS111でYes)、第1コントローラ104は所定範囲に位置する第2仮想オブジェクトを、ユーザ110が操作したい第2仮想オブジェクトとして推定する(ステップS113)。なお、光学センサによって検知された視線の動きが所定範囲に収まらない場合(ステップS111でNo)、一連の処理は終了する。このフローチャートにおいて、ユーザ110が操作したい第2仮想オブジェクトを、仮想窓スイッチ202として説明する。
処理はステップS115に進み、第1コントローラ104は仮想窓スイッチ202に向かってユーザ110が手を伸ばしているかを、動作検出デバイス105から受信した情報に基づいて判定する。仮想窓スイッチ202に向かってユーザ110が手を伸ばしている場合(ステップS115でYes)、第1コントローラ104は仮想窓スイッチ202に向かってユーザ110が手を伸ばしている状態が所定時間継続しているか検出する。仮想窓スイッチ202に向かってユーザ110が所定時間手を伸ばしている場合(ステップS117でYes)、第1コントローラ104は、ステップS113で推定された仮想窓スイッチ202を加工して、仮想窓スイッチ202を点滅させる(ステップS119)。そして、第1コントローラ104は仮想窓スイッチ202の点滅を見たユーザ110に対して、音声で「選択したいスイッチは、点滅しているスイッチですか?」と聞く。
処理はステップS121に進み、表示デバイス106によってユーザ110が首を縦に振ったことが検知された場合(ステップS121でYes)、第1コントローラ104は点滅させた仮想窓スイッチ202がユーザ110が選択したいスイッチである、と判定する。
その後処理はステップS123に進み、第1コントローラ104は、第1仮想オブジェクト220を加工して、第1仮想オブジェクト220の手に相当する部分を伸ばす。これにより、第1仮想オブジェクト220の手に相当する部分は、今まで届かなかった仮想窓スイッチ202に接触し、仮想窓スイッチ202が選択される(ステップS125でYes)。そして仮想窓スイッチ202が選択されたことを示す信号が通信装置306を介して第2コントローラ305に送信される。この信号を受信した第2コントローラ305は、窓302を開けたり閉めたりする。第2コントローラ305が、通信装置306を介して受信した信号に基づいて窓302を開けた場合、窓302の開放は仮想空間200にも反映され、仮想空間200の窓が開く。仮想空間200の窓が開いたことを見たユーザ110は、自身の操作が実際の車両310に反映されたことを知ることができる。
(作用効果)
以上説明したように、本実施形態に係る仮想オブジェクト出力装置1によれば、以下の作用効果が得られる。
仮想オブジェクト出力装置1は、ユーザ110の身体の動作を検知するセンサ103と、ユーザ110の身体の少なくとも一部を示す第1仮想オブジェクト220と、第1仮想オブジェクト220によって選択される複数の第2仮想オブジェクト210(仮想エアコンスイッチ201、仮想窓スイッチ202、仮想ナビゲーション画面203、仮想ルームランプスイッチ204)と、を仮想空間200上に生成する第1コントローラ104と、を備える。第2仮想オブジェクト210は、第1仮想オブジェクト220との接触により選択される。なお、上述したように第1仮想オブジェクト220と第2仮想オブジェクト210との接触は、必ずしも直接的な接触のみを意味しない。例えば、第1仮想オブジェクト220と第2仮想オブジェクト210とが近接する場合、あるいは、第1仮想オブジェクト220と第2仮想オブジェクト210との距離が所定距離以下になった場合に、第1仮想オブジェクト220と第2仮想オブジェクト210と接触したと判定されてもよい。第1コントローラ104は、ユーザ110の動作に応じて、複数の第2仮想オブジェクト210から第1仮想オブジェクト220によって選択される一つの第2仮想オブジェクト210を推定する。そして、第1コントローラ104は、所定時間、第1仮想オブジェクト220が、推定された一つの第2仮想オブジェクト210に接触しない場合、第1仮想オブジェクト220が一つの第2仮想オブジェクト210に接触するように第1仮想オブジェクト220の手に相当する部分を伸ばす。これにより、ユーザ110の姿勢などに制約があったとしても仮想空間200上の所望の操作が実現しうる。例えば、ユーザ110の身体上の問題(例えば麻痺)により、ユーザ110が手を少ししか伸ばせないなどユーザ110の姿勢、動作に制約があったしても、ユーザ110は姿勢、動作を変更することなく、仮想空間200上の所望の操作が実現しうる。また、ユーザ110の動作範囲109が狭く、ユーザ110が手を伸ばせる範囲が限定される場合でも、ユーザ110は姿勢、動作を変更することなく、仮想空間200上の所望の操作が実現しうる。
表示デバイス106は、ユーザ110の視線を検知する光学センサを含む。第1コントローラ104は、光学センサによって検知された視線の動きが所定範囲に収まる場合、所定範囲に位置する第2仮想オブジェクト210を、一つの第2仮想オブジェクト210として推定する。ユーザ110は、操作したい第2仮想オブジェクト210を注視する傾向があるため、第1コントローラ104はユーザ110の視線情報を用いることにより、精度よくユーザ110が操作したい第2仮想オブジェクト210を推定することができる。
また、第1コントローラ104は、第1実空間上の物体の配置を取得し、取得した第1実空間上の物体の配置が反映された仮想空間を生成し、第1実空間とは異なる第2実空間において検知されたユーザ110の姿勢が、第1実空間上の配置に適するように第1仮想オブジェクト220の姿勢を変換する。第1実空間上の物体の配置とは、例えば、図2に示すように、車両310のシート307の配置である。第1コントローラ104は、図3に示すように取得したシート307の配置が反映された仮想空間200を生成する。第2実空間とは、例えば図1に示すユーザ実空間100である。ユーザ実空間100に居るユーザ110の姿勢が、車室内の環境に適切でない場合がある。例えば、図1に示すユーザ110の姿勢は、仰向けで寝ている姿勢であるのに対し、図2に示す車室内のシート307の背もたれは起き上がっている。したがって、ユーザ実空間100に居るユーザ110の姿勢をそのまま車室内に適応すると、背もたれからはみ出ることになる。このように、ユーザ実空間100におけるユーザ110の姿勢を、仮想空間200に反映した場合において、仮想空間200で適した姿勢ではない場合に、第1コントローラ104は姿勢が適切ではないと判断する。姿勢が適切でない場合、第1コントローラ104は適切となるように第1仮想オブジェクト220の姿勢を変換する。これにより、ユーザ110は姿勢、動作を変更することなく、つまり仰向けの姿勢で仮想空間200上の第2仮想オブジェクト210を操作することができる。
また、第1コントローラ104は、複数の第2仮想オブジェクト(201~204)から第1仮想オブジェクト220までの距離がもっとも短い第2仮想オブジェクトを、一つの第2仮想オブジェクトとして推定してもよい。これにより、第1コントローラ104は精度よくユーザ110が操作したい第2仮想オブジェクトを推定することができる。
また、第1コントローラ104は、第1仮想オブジェクト220の指先の方向を検出し、検出した指先の方向に位置する第2仮想オブジェクトを、一つの第2仮想オブジェクトとして推定してもよい。これにより、第1コントローラ104は精度よくユーザ110が操作したい第2仮想オブジェクトを推定することができる。
また、表示デバイス106は、ヘッドマウントディスプレイ、眼鏡型デバイスを含むウェアラブルデバイスである。表示デバイス106はユーザ110の頭部または顔部に装着された場合に、ユーザ110の眼を覆うように装着されるため、ユーザ110に対して没入感を与えることが可能となる。
上述の実施形態に記載される各機能は、1または複数の処理回路により実装され得る。処理回路は、電気回路を含む処理装置等のプログラムされた処理装置を含む。処理回路は、また、記載された機能を実行するようにアレンジされた特定用途向け集積回路(ASIC)や回路部品等の装置を含む。
上記のように、本発明の実施形態を記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。
例えば、本発明は、VRに分野に限らず、AR(Augmented Reality)の分野においても有効である。
また、ユーザ110の姿勢が適切か否かについては、車室内に対してユーザ110が取りうる姿勢を、予めデータベースとして記憶装置などに記憶しておき、検出したユーザ110の姿勢がデータベースに含まれているか否かで判定してもよい。
ユーザ110の姿勢が適切か否かについては、第1コントローラ104は車室内範囲205に対する第1仮想オブジェクト220の干渉に基づいて判定してもよい。具体的には車室内範囲205に対して第1仮想オブジェクト220が干渉する場合、第1コントローラ104はユーザ110の姿勢は適切でない、と判定してもよい。車室内範囲205に対して第1仮想オブジェクト220が干渉する場合とは、例えば天井に頭をぶつけてしまうような、立っている状態である。
本実施形態では、仮想空間の一例として車両310の車室内を挙げたが、これに限定されない。例えば、電車、飛行機、コンサートホール、映画館、劇場などでも適用可能である。このようなケースでは、座席などでユーザの割り当てられている空間が限定され、許容される姿勢が限定される。したがってそのままの姿勢では操作できないような対象物が存在する場合があるが、本発明を適用することにより、ユーザは姿勢、動作を変更することなく、仮想空間上のオブジェクトを操作することができる。