(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-08
(45)【発行日】2024-07-17
(54)【発明の名称】情報処理装置、表示システム、情報処理方法およびプログラム
(51)【国際特許分類】
G06F 3/01 20060101AFI20240709BHJP
G09G 5/00 20060101ALI20240709BHJP
G09G 5/377 20060101ALI20240709BHJP
G09G 5/37 20060101ALI20240709BHJP
G09G 5/373 20060101ALI20240709BHJP
G02B 27/02 20060101ALI20240709BHJP
【FI】
G06F3/01 510
G09G5/00 550C
G09G5/377 100
G09G5/37 310
G09G5/373 300
G02B27/02 Z
(21)【出願番号】P 2020189700
(22)【出願日】2020-11-13
【審査請求日】2023-09-13
(73)【特許権者】
【識別番号】000006747
【氏名又は名称】株式会社リコー
(74)【代理人】
【識別番号】110000420
【氏名又は名称】弁理士法人MIP
(74)【代理人】
【識別番号】100110607
【氏名又は名称】間山 進也
(72)【発明者】
【氏名】前鼻 毅
(72)【発明者】
【氏名】堀田 波星夫
(72)【発明者】
【氏名】千壽 朋子
(72)【発明者】
【氏名】高原 渉
【審査官】木内 康裕
(56)【参考文献】
【文献】特開2006-127158(JP,A)
【文献】国際公開第2020/110659(WO,A1)
【文献】特開2019-021122(JP,A)
【文献】特開2009-145883(JP,A)
【文献】特開2017-083995(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/01
G06F 3/048 - 3/04895
G09G 5/00 ー 5/42
G02B 27/02
(57)【特許請求の範囲】
【請求項1】
三次元仮想空間を示す仮想空間データに基づいて画像を生成する情報処理装置であって、
ユーザに装着される表示手段の位置と、基準方向に対する前記表示手段の傾きと、前記ユーザが操作する操作手段もしくは該ユーザの手の位置を検出する検出手段から、前記表示手段の位置情報および傾き情報と前記操作手段もしくは前記手の位置情報を取得する取得手段と、
取得された前記表示手段の位置情報と前記操作手段もしくは前記手の位置情報に基づき、前記三次元仮想空間上にユーザオブジェクトを生成する第1の生成手段と、
取得された前記表示手段の傾き情報と前記仮想空間データに基づき、前記三次元仮想空間における前記表示手段の傾き方向の画像を生成する第2の生成手段と
を含
み、
前記第1の生成手段は、前記表示手段の位置情報と、前記操作手段もしくは前記手の位置情報に基づき、前記表示手段と前記操作手段もしくは前記手の間に存在する前記ユーザの部位の位置を推定し、推定した前記部位の位置情報に基づき、前記ユーザオブジェクトを生成する、情報処理装置。
【請求項2】
前記部位は、肩である、請求項
1に記載の情報処理装置。
【請求項3】
前記ユーザオブジェクトに対する操作に応答して、前記三次元仮想空間上にユーザ入力を実現するための入力用オブジェクトを生成する第3の生成手段を含む、請求項1
または2に記載の情報処理装置。
【請求項4】
前記部位の位置情報と、前記操作手段もしくは前記手の位置情報に基づき、前記三次元仮想空間上に配置されたオブジェクトを前記ユーザオブジェクトにより選択する処理を実行する選択処理手段を含む、請求項
1または
2に記載の情報処理装置。
【請求項5】
前記部位の位置と前記操作手段もしくは前記手の位置の距離を計算する演算手段を含み、
前記選択処理手段は、前記演算手段により計算された前記距離に応じて、前記ユーザオブジェクトの長さを変化させ、前記三次元仮想空間上に配置された前記オブジェクトを選択する、請求項
4に記載の情報処理装置。
【請求項6】
前記選択処理手段は、前記距離が長くなるほど、前記ユーザオブジェクトの長さが変化する割合が大きくなるように、該ユーザオブジェクトの長さを変化させる、請求項
5に記載の情報処理装置。
【請求項7】
前記部位の位置情報と、前記操作手段もしくは前記手の位置情報に基づき、選択された前記オブジェクトを、前記ユーザオブジェクトにより指定された位置に移動させる処理を実行する移動処理手段を含む、請求項
4~
6のいずれか1項に記載の情報処理装置。
【請求項8】
前記表示手段の位置情報と、前記操作手段もしくは前記手の位置情報と、前記移動処理手段による移動処理後の、選択された前記オブジェクトの前記三次元仮想空間上の位置情報に基づき、ユーザ入力を受け付ける入力受付手段を含む、請求項
7に記載の情報処理装置。
【請求項9】
請求項1~
8のいずれか1項に記載の情報処理装置を含む表示システムであって、前記情報処理装置内または該情報処理装置とは別に、ユーザに装着され、該情報処理装置により生成されたユーザオブジェクトおよび三次元仮想空間における表示手段の傾き方向の画像を表示する該表示手段を備える、表示システム。
【請求項10】
前記情報処理装置内または該情報処理装置とは別に、前記表示手段の位置および基準方向に対する該表示手段の傾きと前記ユーザが操作する操作手段もしくは該ユーザの手の位置を検出する検出手段を備える、請求項
9に記載の表示システム。
【請求項11】
三次元仮想空間を示す仮想空間データに基づいて画像を生成する情報処理装置により実行される方法であって、
ユーザに装着される表示手段の位置と、基準方向に対する前記表示手段の傾きと、前記ユーザが操作する操作手段もしくはユーザの手の位置を検出する検出手段から、前記表示手段の位置情報および傾き情報と前記操作手段もしくは前記手の位置情報を取得するステップと、
取得された前記表示手段の位置情報と前記操作手段もしくは前記手の位置情報に基づき、前記三次元仮想空間上にユーザオブジェクトを生成するステップと、
取得された前記表示手段の傾き情報と前記仮想空間データに基づき、前記三次元仮想空間における前記表示手段の傾き方向の画像を生成するステップと
を含
み、
前記ユーザオブジェクトを生成するステップでは、前記表示手段の位置情報と、前記操作手段もしくは前記手の位置情報に基づき、前記表示手段と前記操作手段もしくは前記手の間に存在する前記ユーザの部位の位置を推定し、推定した前記部位の位置情報に基づき、前記ユーザオブジェクトを生成する、方法。
【請求項12】
請求項
11に記載の方法に含まれる各ステップをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像を生成する情報処理装置、表示システム、方法および画像を生成する処理をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【0002】
ユーザが三次元仮想空間で表現されるコンテンツを体験できるVR(Virtual Reality)技術には、三次元仮想空間の画像を表示する表示装置として、人の頭部に装着するヘッドマウントディスプレイ(HMD)が用いられる。
【0003】
三次元仮想空間においても、ホワイトボードに文字を書くなどのユーザ入力が必要な場合がある。しかしながら、三次元仮想空間におけるユーザ入力には、PC(Personal Computer)のようなマウスやキーボードを用いる標準的な入力方式がまだ存在していない。
【0004】
三次元仮想空間においてユーザ入力を行う方法としては、ユーザの視座に該ユーザに対応するアバターオブジェクトを配置し、アバターオブジェクトに該ユーザからの操作を受け付けるためのユーザインタフェースを表示する方法が知られている(例えば、特許文献1参照)。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記従来の方法では、ユーザインタフェースがアバターオブジェクトの一方の腕に表示されるため、頭部を傾けて当該一方の腕を視認し、他方の手で操作する必要があり、操作が容易ではなく、ユーザビリティが高いとは言えない。
【0006】
本発明は、上記の問題に鑑みてなされたものであり、三次元仮想空間におけるユーザビリティを向上させることができる情報処理装置、表示システム、情報処理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上述した課題を解決するために、発明の一実施形態では、三次元仮想空間を示す仮想空間データに基づいて画像を生成する情報処理装置であって、
ユーザに装着される表示手段の位置と、基準方向に対する表示手段の傾きと、ユーザが操作する操作手段もしくは該ユーザの手の位置を検出する検出手段から、表示手段の位置情報および傾き情報と操作手段もしくは手の位置情報を取得する取得手段と、
取得された表示手段の位置情報と操作手段もしくは手の位置情報に基づき、三次元仮想空間上にユーザオブジェクトを生成する第1の生成手段と、
取得された表示手段の傾き情報と仮想空間データに基づき、三次元仮想空間における表示手段の傾き方向の画像を生成する第2の生成手段と
を含む、情報処理装置を提供する。
【発明の効果】
【0008】
本発明によれば、三次元仮想空間におけるユーザビリティを向上させることができる。
【図面の簡単な説明】
【0009】
【
図2】HMDとコントローラとPCの第1のハードウェア構成を示した図。
【
図4】
図1に示す表示システムにより実行される処理の流れを示したシーケンス図。
【
図5】ユーザの肩の位置を推定する第1の方法について説明する図。
【
図6】
図5に示す第1の方法によりユーザの肩の位置を推定する処理の流れを示したフローチャート。
【
図7】ユーザの肩の位置を推定する第2の方法について説明する図。
【
図8】
図7に示す第2の方法によりユーザの肩の位置を推定する処理の流れを示したフローチャート。
【
図9】三次元仮想空間にユーザ入力を支援するためのユーザオブジェクトの第1の例として、アシスタントオブジェクトを生成し、画像を表示させる処理の流れを示したフローチャート。
【
図10】三次元仮想空間にアシスタントオブジェクトを生成し、画像を表示させた場合の表示例を示した図。
【
図11】アシスタントオブジェクトに触れ、機能を呼び出したところを示した図。
【
図12】三次元仮想空間にユーザ入力を支援するためのユーザオブジェクトの第2の例として、レーザオブジェクトを生成し、画像を表示させる処理の流れを示したフローチャート。
【
図13】レーザオブジェクトによりオブジェクトを選択する例を示した図。
【
図14】レーザオブジェクトの長さと、ユーザの肩の位置とコントローラの位置との距離との関係を示す図。
【
図15】レーザオブジェクトにより選択したオブジェクトを移動させる様子を例示した図。
【
図16】レーザオブジェクトにより選択したオブジェクトを移動させる処理の流れを示したフローチャート。
【
図17】ユーザ入力の一例として、音声入力の流れを示したフローチャート。
【
図18】音声入力を行っている場合の表示例を示した図。
【
図20】HMDとコントローラの第2のハードウェア構成を示した図。
【発明を実施するための形態】
【0010】
図1は、表示システムの第1の構成例を示した図である。表示システムは、ユーザの頭部に装着される表示手段として機能するHMD10と、ユーザが手で持って、もしくは手に装着して操作する操作手段として機能するコントローラ11と、情報処理装置として機能するPC12とを備える。また、表示システムは、HMD10の位置と基準方向に対するHMD10の傾き、コントローラ11の位置と基準方向に対するコントローラ11の傾きを検出する検出手段として機能する位置検知センサ13を備える。
図1に示す例では、表示システムが、複数のユーザの位置情報や操作情報等を管理するサーバ14を備えている。
【0011】
PC12とサーバ14は、ネットワーク15により通信可能に接続されている。HMD10と位置検知センサ13は、ケーブル等によりPC12と接続されている。コントローラ11は、Bluetooth(登録商標)やWiFi(登録商標)等によりPC12と無線接続される。なお、HMD10と位置検知センサ13も、WiFi(登録商標)等により無線接続されてもよい。
【0012】
HMD10は、ユーザに対して画像を表示するためのディスプレイを有し、HMD10の位置や基準方向に対する傾きに対応した画像をディスプレイ上に表示させる。画像は、ユーザの左右の目の視差を用いて画像を立体的に見せるため、左右の目のそれぞれに対応した2つの画像とされる。このため、HMD10は、左右の目のそれぞれに対応した画像を表示する2つのディスプレイを備えている。基準方向は、例えば床に平行な任意の方向である。HMD10は、赤外線LED(Light Emitting Diode)等の光源を有し、赤外線を放射する。
【0013】
コントローラ11は、ユーザが手で握る、もしくは手の位置に装着する操作手段で、ボタン、ホイール、タッチセンサ等を有し、ユーザからの入力を受け付け、受け付けた情報をPC12へ送信する。コントローラ11も、赤外線LED等の光源を有し、赤外線を放射する。
【0014】
位置検知センサ13は、ユーザが向いた前方の任意の位置に配置され、HMD10およびコントローラ11から放射される赤外線から、HMD10およびコントローラ11の位置や傾きを検出し、それらの位置情報および傾き情報を出力する。位置検知センサ13は、例えば赤外線カメラ等とされ、撮像された画像に基づき、HMD10およびコントローラ11の位置や傾きを検出することができる。なお、HMD10およびコントローラ11が備える光源は、HMD10やコントローラ11の位置や傾きを高い精度で検出するため、複数設けられる。位置検知センサ13は、1以上のセンサから構成され、複数のセンサを用いる場合は、側方や後方等にも設けることができる。
【0015】
PC12は、位置検知センサ13から出力されたHMD10の位置情報および傾き情報、コントローラ11の位置情報、必要に応じてコントローラ11の傾き情報に基づき、HMD10のディスプレイに表示される三次元仮想空間にユーザ入力を支援するためのユーザオブジェクトを生成する。そして、PC12は、HMD10の位置情報および傾き情報、三次元仮想空間データに基づき、三次元仮想空間におけるユーザの視野方向(正確にはHMD10の傾き方向)の画像であって、左右の目に対応した画像を生成し、HMD10のディスプレイに表示させる処理を実行する。
【0016】
PC12は、ネットワーク15を介してサーバ14と通信し、同じ三次元仮想空間にいる他のユーザの位置情報等を取得し、他のユーザの分身を表すアバターオブジェクトをHMD10のディスプレイに表示させる処理を実行することができる。
【0017】
表示システムは、例えば、各ユーザのアバターオブジェクトを三次元仮想空間としての仮想会議室に集め、ホワイトボード等を使用して会議を行うことに利用することができる。表示システムは、ホワイトボード等を使用して会議の参加者が主体的に会議に参加することができるため、インタラクティブな会議を行う場合に利用することができる。
【0018】
表示システムを利用した会議では、ユーザは、コントローラ11を操作し、表示された画像内のユーザオブジェクトに触れる等してペン入力の機能を呼び出し、表示されたペンを手に取り、ペンを移動させ、ホワイトボードに文字を入力することができる。なお、これは1つの利用形態であるため、この利用形態に限定されるものではない。
【0019】
図1に示した例では、HMD10およびコントローラ11が光源を有し、位置検知センサ13を任意の位置に配置することを説明したが、HMD10およびコントローラ11が位置検知センサ13を備え、任意の位置に光源や赤外線を反射するマーカーを配置する構成であってもよい。マーカーを使用する場合、HMD10およびコントローラ11が光源および位置検知センサ13を備え、光源から出射した赤外線がマーカーに反射し、反射した赤外線を位置検知センサ13により検出することにより、HMD10およびコントローラ11の位置や傾きを検出することができる。
【0020】
位置検知センサ13とHMD10およびコントローラ11との間に何らかの物体が存在する場合、赤外線が遮られ、正確に位置や傾きを検出することができなくなる。このため、HMD10およびコントローラ11を使用して、操作や表示を行う場合、開けた空間で実行することが望ましい。
【0021】
図1に示す例では、ユーザがHMD10を装着し、コントローラ11を手に握り、腕を伸ばしたり、広げたりすることができる空間が設けられ、その空間の外側にPC12、位置検知センサ13が配置されている。
【0022】
図2は、HMD10とコントローラ11とPC12のハードウェア構成の一例を示した図である。HMD10は、外部I/F20と、CPU21と、ディスプレイ22と、メモリ23と、HDD24と、光源25と、マイク26とを備える。CPU21は、HMD10全体を制御し、光源25の発光、外部との通信、ディスプレイ22への表示等の処理を実行する。外部I/F20は、PC12との通信を行うインタフェースである。ディスプレイ22は、液晶ディスプレイであってもよいし、有機EL(Electro Luminescence)ディスプレイであってもよい。
【0023】
メモリ23は、CPU21に対して作業領域を提供する。HDD24は、三次元仮想空間に表示する画像データ等を記憶する。光源25は、赤外線LED等で、赤外線を放射する。赤外線は、所定のパターンで点滅するように放射することができる。マイク26は、音声によりユーザ入力を行う音声入力装置である。
【0024】
コントローラ11は、操作I/F30と、外部I/F31と、光源32を備える。操作I/F30は、ボタン、ホイール、タッチセンサ等であり、コントローラ11の外面に配置され、ユーザによる操作を可能とし、操作情報の入力を受け付ける。外部I/F31は、PC12と無線接続し、操作I/F30が受け付けた操作情報をPC12へ送信する。光源32は、所定のパターンで点滅するように赤外線を放射する。光源32は、HMD10の光源とは異なるパターンで点滅することで、HMD10と区別することが可能となる。
【0025】
PC12は、CPU40と、ROM41と、RAM42と、HDD43と、外部I/F44と、入出力I/F45と、入力装置46と、表示装置47とを備える。
【0026】
CPU40は、PC12全体を制御し、上記のユーザオブジェクトを生成し、三次元仮想空間におけるユーザの視野方向の画像を生成してHMD10のディスプレイに表示させる処理を実行する。ROM41は、PC12を起動させるためのブートプログラムや、HDD43や外部I/F44等を制御するためのファームウェア等を格納する。RAM42は、CPU40に対して作業領域を提供する。
【0027】
HDD43は、OS(Operating System)、上記の処理を実行するためのプログラム、画像データ等を格納する。外部I/F44は、
図1に示すネットワーク15と接続し、ネットワーク15を介してサーバ14と通信を行う。また、外部I/F44は、HMD10および位置検知センサ13とケーブル等により接続し、コントローラ11と無線接続し、HMD10、コントローラ11および位置検知センサ13と通信を行う。
【0028】
入力装置46は、マウスやキーボード等であり、ユーザにより使用され、情報の入力や操作を受け付ける。表示装置47は、ユーザに対して表示画面を提供し、入力された情報や処理結果等を表示する。入出力I/F45は、入力装置46からの情報の入力、表示装置47への情報の出力を制御するインタフェースである。
【0029】
図3は、PC12の機能構成の一例を示したブロック図である。ここでは、PC12が情報処理装置として機能するため、PC12の機能構成として説明する。PC12は、CPU40がHDD43に格納されたプログラムを実行することにより各機能を実現するための各機能部を生成し、それらの機能部を備えることができる。なお、各機能部は、プログラムにより実現されるものに限らず、各機能を実行するよう設計されたASIC(Application Specific Integrated Circuit)、DSP(digital signal processor)、FPGA(field programmable gate array)や従来の回路モジュール等のデバイスにより実現されてもよい。
【0030】
PC12は、少なくとも取得部50と、第1の生成部51と、第2の生成部52とを含む。PC12は、その他の機能部を備えていてもよい。取得部50は、位置検知センサ13が検出したHMD10およびコントローラ11の位置情報および傾き情報を取得する。また、取得部50は、コントローラ11からユーザにより入力された情報(操作情報)を取得する。取得部50は、HDD43やサーバ14から三次元仮想空間データも取得する。
【0031】
三次元仮想空間データは、x軸、y軸、z軸で表される仮想的な三次元空間のデータであり、その空間に配置される1以上のオブジェクトのオブジェクトデータや画像データを含む。画像データは、上記の仮想会議室を例に挙げると、ホワイトボード、床、壁、天井、出入口等を含む画像のデータである。オブジェクトは、三次元仮想空間に配置される物体であり、ペン等のユーザ入力を実現するための入力用オブジェクト、文字入力される付箋等のオブジェクト、ユーザ入力を支援するためのユーザオブジェクトを含む。
【0032】
第1の生成部51は、取得部50により取得されたHMD10およびコントローラ11の位置情報および傾き情報に基づき、三次元仮想空間上にユーザオブジェクトを生成する。ユーザオブジェクトは、アプリケーション内の機能を呼び出すことができるアシスタントオブジェクトや、オブジェクトを選択することができるレーザオブジェクト等である。アプリケーションは、表示システムを会議に使用する場合、会議アプリケーションであり、アプリケーション内の機能としては、ペン入力等が挙げられる。
【0033】
第2の生成部52は、取得部50が取得した位置情報、傾き情報、三次元仮想空間データ、操作情報に基づき、HMD10のディスプレイに表示させる画像データを生成し、HMD10へ送信する。第2の生成部52は、三次元仮想空間におけるHMDの位置情報および傾き情報に基づき、三次元仮想空間データを用いて、三次元仮想空間におけるHMDの位置を起点とした傾きを適用した視野方向の画像の画像データを生成する。
【0034】
図4は、表示システムにより実行される全体の処理の流れを示したシーケンス図である。HMD10、コントローラ11、PC12、位置検知センサ13に電源を投入すると、PC12が、三次元仮想空間データを、自身のHDD43もしくはサーバ14から取得する(S1)。HMD10、コントローラ11は、それぞれの光源から赤外線を放射し、位置検知センサ13が、赤外線を発する光源を基に、HMD10およびコントローラ11の位置および傾きを検出する(S2)。位置検知センサ13は、検出したそれぞれの位置および傾きを、それぞれの位置情報および傾き情報としてPC12へ送信する(S3)。
【0035】
コントローラ11は、ユーザからの操作を受け付け、受け付けた操作の操作情報をPC12へ送信する(S4)。PC12は、取得した三次元仮想空間データ、位置検知センサ13から受信したHMD10およびコントローラ11の位置情報および傾き情報、コントローラ11から受信した操作情報に基づき、画像データを生成する(S5)。そして、PC12は、生成した画像データをHMD10へ送信する(S6)。HMD10は、受信した画像データをディスプレイに表示する(S7)。これ以降、HMD10等の電源が切断されるまで、S2の位置および傾きの検出からS5の画像データの送信が繰り返され、HMD10のディスプレイに表示される画像データが更新される。
【0036】
表示システムにおける全体の処理の流れは、以上の通りであるが、以下、三次元仮想空間上に画像データとともに表示されるユーザオブジェクトを生成する方法について詳細に説明する。
【0037】
ユーザオブジェクトは、アプリケーション内の機能を呼び出すため、ユーザが触れやすく、あるいはオブジェクトを選択するため、選択しやすいものでなければならない。
【0038】
画像データは、HMD10の位置を起点とし、傾きを適用して生成されるため、ユーザオブジェクトも、HMD10の位置および傾きに基づき、三次元仮想空間上に配置することができる。
【0039】
しかしながら、ユーザの頭が動くと、ユーザオブジェクトが追従して動くため、頭のみが動くと、頭の位置や向きによっては、ユーザオブジェクトに触れることが難しい場合がある。例えば、利き手とは反対側にユーザオブジェクトが移動した場合である。これは、ユーザオブジェクトを使用し、オブジェクトを選択する場合も同様である。これでは、ユーザビリティが高いとは言えない。
【0040】
人は、腕を動かす場合、肩を支点として上下左右に腕を動かす。肩は、頭部とコントローラ11が操着される手との間に存在する身体上の部位の1つである。ユーザが、ユーザオブジェクトに触れる場合、腕を動かしてコントローラ11の位置を変更する。このため、肩の位置を基にユーザオブジェクトを配置すれば、頭のみが動いても、ユーザオブジェクトが追従して動くことはなく、肩が動いたとしても、利き手が簡単に届く範囲にユーザオブジェクトを配置することができる。
【0041】
肩の位置を基にユーザオブジェクトを配置する場合、位置検知センサ13から取得するHMD10およびコントローラ11の位置情報および傾き情報に基づき、肩の位置を推定する必要がある。肩の位置を推定するには、HMD10と肩の位置との相対的な位置関係が分からなければならない。相対的な位置関係は、HMD10から見た肩の位置もしくは肩の位置から見たHMD10の位置である。
【0042】
図5を参照して、ユーザの肩の位置とHMD10との相対的な位置関係を求める第1の方法について説明する。
図5は、ユーザを上部から見た図である。ユーザは、手にコントローラ11を握り、もしくは装着し、床に対して水平方向に肘を伸ばし、肘を伸ばした状態で、左右の手を近づけて腕を閉じ、左右の手を離して腕を開く動作を繰り返す。
【0043】
このような動作では、左右の手は、左右の肩をそれぞれの支点として円弧を描くように移動する。このときのコントローラ11の位置情報を位置検知センサ13により取得する。位置検知センサ13により取得した位置情報は、円弧上の点の位置情報である。肩の位置は、円弧上の各点から等距離にある点である。このことから、位置検知センサ13により取得した位置情報から肩の位置情報を算出することができる。
【0044】
HMD10の位置情報は、腕を開いたり、閉じたりする動作を開始する前に位置検知センサ13により取得している。このため、HMD10の位置を基準とした肩の位置を、HMD10と肩の位置との相対的な位置関係として算出することができる。
【0045】
図6は、
図5に示す第1の方法によりユーザの肩の位置とHMD10との相対的な位置関係を求める処理の流れを示したフローチャートである。HMD10およびコントローラ11の使用を開始したタイミングで、あるいは位置検知センサ13により検出される位置のずれが大きくなったと感じたタイミングで、ステップ100からこの処理を開始する。
【0046】
ステップ101では、肘を伸ばした状態で、腕を水平に構える。ステップ102で、肘を伸ばした状態で、腕を開いたり、閉じたりする。ステップ103で、コントローラ11の位置情報を連続的に取得する。ここで、位置情報は、閉じた状態から開いた状態まで1回の動作における位置情報であってもよいが、位置情報の精度を高めるためには、数回繰り返すほうが望ましい。
【0047】
ステップ104で、取得した位置情報を加算平均する。腕を閉じたり、開いたりする動作を数回繰り返すため、閉じたときの位置情報や開いたときの位置情報等が複数得られる。このため、同じ閉じたときの位置情報同士や同じ開いたときの位置情報同士等を加算平均する。この加算平均により、高い精度で肩の位置を推定することが可能となる。ステップ105では、加算平均した位置情報から、HMD10と肩の位置の相対的な位置関係を求め、ステップ106で、この処理を終了する。
【0048】
肩の位置は、HMD10の位置を基準とした肩の位置として算出される。算出された肩の位置のデータは、HMD10との相対的な位置関係を示す肩位置データであり、例えばx軸、y軸、z軸で表される座標データとされる。肩位置データは、左右の肩のそれぞれにつき算出される。
【0049】
図7を参照して、ユーザの肩の位置とHMD10との相対的な位置関係を求める第2の方法について説明する。
図7は、ユーザを正面から見た図である。第2の方法では、肩の位置を直接求めるため、左右の手に装着したコントローラ11を左右の肩のそれぞれに配置し、コントローラ11の位置情報を位置検知センサ13により検出する。
【0050】
いずれの手に装着したコントローラ11をいずれの肩の位置に配置してもよく、
図7(a)、(b)に示すいずれのポーズでコントローラ11を肩の位置に配置してもよい。
【0051】
コントローラ11がHMD10の位置と向きに対して左側にある場合、コントローラ11の位置情報を左肩の位置情報と推定し、右側にある場合、コントローラ11の位置情報を右肩の位置情報と推定し、それぞれの位置情報を肩位置データとする。
【0052】
図8は、
図7に示す第2の方法によりユーザの肩の位置とHMD10との相対的な位置関係を求める処理の流れを示したフローチャートである。HMD10およびコントローラ11の使用を開始したタイミングで、あるいは位置検知センサ13により検出される位置のずれが大きくなったと感じたタイミングで、ステップ200からこの処理を開始することができる。
【0053】
ステップ201では、位置検知センサ13により左右の各コントローラ11の位置情報を取得する。ステップ202で、位置検知センサ13によりHMD10の位置情報および傾き情報を取得する。ステップ203では、HMD10の位置情報および傾き情報から、各コントローラ11が左右のどちらの肩と対応しているかを推定する。ステップ204で、HMD10と各肩の位置の相対的な位置関係を求め、ステップ205で、この処理を終了する。
【0054】
HMD10との相対的な位置データである肩位置データを作成したところで、PC12は、肩の位置に基づき、ユーザオブジェクトを生成する処理を実行する。ユーザオブジェクトは、ユーザ入力を支援するためのオブジェクトで、例えばアプリケーション内の機能を呼び出すアシスタントオブジェクトや三次元仮想空間に配置されるオブジェクトの1つを選択する選択用オブジェクトとしてのレーザオブジェクト等がある。これら肩の位置を推定する処理も、第1の生成部51により実行される。
【0055】
図9を参照して、三次元仮想空間上にアシスタントオブジェクトを生成し、HMD10に表示する画像を生成する処理について説明する。この処理は、ユーザの肩の位置とHMD10との相対的な位置関係を求めた後に実行される。ステップ300からこの処理を開始し、ステップ301で、HMD10の位置情報と傾き情報、コントローラ11の位置情報と傾き情報を、位置検知センサ13から取得する。コントローラ11の位置情報と傾き情報は、左右両方の手に装着される2つのコントローラ11の位置情報と傾き情報である。以下、説明を容易にするため、単にコントローラ11として説明するが、実際には両手の2つのコントローラ11を意味する。
【0056】
ステップ302では、HMD10の位置情報(x軸、y軸、z軸で表される座標)に対し、HMD10との相対的な位置データである肩位置データを適用して、肩の位置を推定する。肩位置データは、HMD10を基準とした肩の位置を座標で示したデータである。ステップ303では、推定した肩の位置を基準とし、三次元仮想空間におけるアシスタントオブジェクトの位置情報(座標)を算出する。アシスタントオブジェクトは、いかなる形状の物体であってもよく、予め形状や大きさ等が設定される。
【0057】
PC12は、肩の位置とアシスタントオブジェクトの相対的な位置関係を示すアシスタントオブジェクト位置算出用データを保持し、アシスタントオブジェクト位置算出用データ(HMD10の基準方向を基に、xyz座標系にHMD10の傾きを適用したuvw座標系のデータ)を肩の位置に適用して、三次元仮想空間におけるアシスタントオブジェクトの座標を算出する。アシスタントオブジェクト位置算出用データは、ユーザにとって最適となる位置を事前に調整して記憶しているデータである。
【0058】
ステップ304では、コントローラ11の位置情報と、算出したアシスタントオブジェクトの位置情報とから、コントローラ11とアシスタントオブジェクトとの間の距離を距離情報として作成する。PC12は、この距離情報を作成するため、距離を計算する演算部を備えることができる。演算部は、上記の加算平均等のその他の演算処理も実行する。ステップ305では、作成された距離情報が所定の距離より長いか否かを判断する。所定の距離以下の場合、ステップ306へ進み、肩の位置にアシスタントオブジェクト位置算出用データを適用するのを中止し、アシスタントオブジェクト位置算出用データの適用を中止した時点での三次元仮想空間上のアシスタントオブジェクトの座標(xyz座標系で表される座標)で固定する。PC12は、距離情報が所定の距離より長いか否かを判断し、所定の距離以下の場合、座標を固定する判断部を備えることができる。判断部は、その他の判断処理も実行する。
【0059】
肩の位置を基準とした固定するアシスタントオブジェクトの座標は、HMD10およびコントローラ11に電源を投入し、起動させる毎に変わるものではない。このため、固定するアシスタントオブジェクトの座標は、前の画像を表示させる処理において決定したアシスタントオブジェクトの座標を使用することができる。
【0060】
アシスタントオブジェクトの座標を固定しない場合、アシスタントオブジェクトに触れて機能を呼び出そうとした際に肩が動いてしまうと、アシスタントオブジェクトが移動し、触れにくくなる。これは、肩の動きに伴って、アシスタントオブジェクトが動くからである。そこで、アシスタントオブジェクトに触れようとした場合、肩の動きに伴ってアシスタントオブジェクトが動かないように、アシスタントオブジェクトの座標を固定する。
【0061】
ステップ305で所定の距離より長いと判断した場合、ステップ307へ直接進む。ステップ307では、アシスタントオブジェクトの座標を基に、三次元仮想空間にアシスタントオブジェクトを配置する。ステップ308では、HMD10の位置情報および傾き情報に基づき、HMD10の位置を中心とし、HMD10の傾きを適用した視野方向における画像の画像データを生成する。HMD10のディスプレイに生成した画像データを表示させ、ステップ309で、アシスタントオブジェクトを生成し、HMD10に表示する画像を生成する処理を終了する。
【0062】
図10は、生成されたアシスタントオブジェクトの表示例を示した図である。三次元仮想空間を表示する画像には、ホワイトボード60が含まれ、ホワイトボード60の手前に仮想のユーザの手61が示されている。アシスタントオブジェクト62は、手61の指で触れることができる面を有する多面体とされている。肩の位置を基準にアシスタントオブジェクト62が生成され、配置されるため、アシスタントオブジェクト62を指で触れやすく、機能を呼び出しやすくなっている。多面体の表面には、機能を表す文字等の情報が示されるが、肩の位置を基準にアシスタントオブジェクト62が配置されるため、その情報が見やすくなっている。
【0063】
図10では、ユーザがコントローラ11を操作し、三次元仮想空間上の手61の指でアシスタントオブジェクト62に触れている。アシスタントオブジェクト62が多面体により構成される場合、各面には、異なる機能を表す文字等の情報が示され、所定の面に触れることで、所定の機能を呼び出すことができるようになっていてもよい。ユーザは、三次元仮想空間上において手61の指がアシスタントオブジェクト62に触れ、コントローラ11の所定のボタンを押下することにより、機能を呼び出す指示をPC12へ送ることができる。
【0064】
図11は、手61の指でアシスタントオブジェクト62を触れ、アプリケーション内の機能を呼び出したときの表示例を示した図である。機能は、PC12が、HMD10に対し、例えば機能を表すオブジェクトを生成し、オブジェクトに触れる等して機能を呼び出すことにより、ポップアップ(前面に飛び出すように現れる画面)表示される。このため、PC12は、機能を表すオブジェクトを生成するための第3の生成部を備えることができる。
図11では、ホワイトボード60に書くマーカー63や黒板消し64等が生成され、画像内に表示されている。そのほか、機能としては、ホワイトボード60を移動させる機能や、ホワイトボード60に記載した内容をコピーする機能等を備えていてもよい。
【0065】
ユーザは、コントローラ11を操作して、三次元仮想空間においてマーカー63を手61に取り、ホワイトボード60へ移動し、手61を動かすことで、ホワイトボード60上に文字を書くことができる。また、ユーザは、コントローラ11を操作して、三次元仮想空間において黒板消し64を手61に取り、手61を動かすことで、ホワイトボード60上に書いた文字を消すことができる。
【0066】
図12を参照して、三次元仮想空間上にレーザオブジェクトを生成し、HMD10に表示する画像を生成する処理について説明する。この処理も、ユーザの肩の位置とHMD10との相対的な位置関係を求めた後に実行される。ステップ400からこの処理を開始し、ステップ401で、HMD10の位置情報と傾き情報、コントローラ11の位置情報と傾き情報を、位置検知センサ13から取得する。
【0067】
ステップ402では、HMD10の位置情報(x軸、y軸、z軸で表される座標)に対し、肩位置データを適用して、肩の位置を推定する。ステップ403では、推定した肩の位置と、コントローラ11の位置情報とに基づき、肩の位置とコントローラ11との間の距離を示す距離情報を作成する。ステップ404で、作成した距離情報に基づき、レーザオブジェクトの長さ(画素数)を決定する。レーザオブジェクトは、棒状のオブジェクトであり、肩とコントローラ11との間の距離が長いほど、レーザオブジェクトの長さが長くなる。
【0068】
ここで、
図13に、レーザオブジェクトの長さと、肩とコントローラ11との間の距離との関係を示す。
図13(a)は、距離の長さに応じて二次関数的にレーザオブジェクトの長さが長くなる関係を示したグラフである。
図13(b)は、一定の距離までは一定の割合で長さが増加し、一定の距離を超えると、二次関数的にレーザオブジェクトの長さが長くなる関係を示したグラフである。
【0069】
図13(c)に示すように、肩とコントローラ11との間の距離の長さに応じて一次関数的にレーザオブジェクトの長さが長くなる場合、
図13(b)に示す一定の距離までのグラフの傾きより、グラフの傾きが大きくなる。これでは、目的のオブジェクトが近くにある場合、腕を少し伸ばしただけで、レーザオブジェクトが長くなりすぎてしまい、目的のオブジェクトが遠くにある場合、腕を大きく伸ばしても、目的のオブジェクトに届かないことがある。
【0070】
しかしながら、
図13(a)、(b)に示すように、距離が長くなるほど、レーザオブジェクトの長さが変化する割合が大きくなるように、レーザオブジェクトの長さを変化させることで、目的のオブジェクトが近くにあっても、遠くにあっても、適切に目的のオブジェクトを選択することが可能となる。なお、レーザオブジェクトの長さは、距離が長くなるほど、レーザオブジェクトの長さが変化する割合が大きくなるように長さを変化させることができれば、
図13(a)、(b)に示す例に限定されるものではない。
【0071】
再び
図12を参照して、作成した距離情報からレーザオブジェクトの長さを決定したところで、コントローラ11の位置を起点とし、特定方向にレーザオブジェクトを三次元仮想空間に配置する。特定方向は、例えばコントローラ11の所定の傾き方向やコントローラ11と肩の位置とを結んだ方向である。コントローラ11が手で握るグリップ部を有する場合、グリップ部は、一定方向に延びた形状となる。所定の傾き方向は、グリップ部が延びる方向(長手方向)である。
【0072】
ステップ405では、三次元仮想空間に配置されたレーザオブジェクトが三次元仮想空間上の特定のオブジェクトを通過しているか否かを判断する。特定のオブジェクトは、選択した上で、特定の入力(例えば、ボタン入力による移動指示等)があったときに、移動等の動作が可能となるオブジェクトである。レーザオブジェクトが特定のオブジェクトを通過していると判断した場合、ステップ406へ進み、通過した特定のオブジェクトに対する選択処理を実行する。具体的には、通過した特定のオブジェクトに対し、選択フラグを付与し、特定のオブジェクトを通過している分のレーザオブジェクトを削除し、ステップ407へ進む。PC12は、この選択処理を実行する選択処理部を備えることができる。一方、ステップ405でレーザオブジェクトが特定のオブジェクトを通過していないと判断した場合は、ステップ408へ進む。
【0073】
ステップ407では、ユーザによる操作を受け付ける。ユーザによる操作は、例えばオブジェクトの移動であり、オブジェクトの移動にはオブジェクトの移動指示の入力が含まれる。オブジェクトの移動については、後述する。ステップ408では、三次元仮想空間において、レーザオブジェクトの位置情報(座標)、HMD10の位置情報および傾き情報に基づき、HMD10の位置を中心とし、HMD10の傾きを適用した視野方向における画像データを生成し、それをディスプレイに表示させる。そして、ステップ409で、レーザオブジェクトを生成し、HMD10に表示する画像を生成する処理を終了する。
【0074】
図14は、レーザオブジェクトによりオブジェクトを選択する例を示した図である。レーザオブジェクト65は、
図12のステップ404において、三次元仮想空間上の仮想のユーザの手61が伸びる方向へ棒状に延びるオブジェクトとして生成され、三次元仮想空間に配置される。
図14(a)では、三次元仮想空間上にレーザオブジェクト65が手61から伸びるように配置される。
図14(b)では、
図12のステップ406において、三次元仮想空間上のオブジェクト66が選択され、通過した分のレーザオブジェクト65が削除されている。
【0075】
図15は、
図12のステップ407の選択されたオブジェクト66に対するユーザの操作の一例として、オブジェクト66を移動させる様子を示した図である。ユーザがコントローラ11の位置や傾きを変えることで、
図15(a)に示すように、オブジェクト66が配置される方向を変えることができる。また、ユーザがコントローラ11を手に装着した状態で、腕を引くことで、
図15(b)に示すように、オブジェクト66をユーザの側へ引き寄せることができる。
【0076】
図16は、
図12のステップ407における具体的な処理の一例として、レーザオブジェクト65により選択したオブジェクト66を移動させる処理の流れを示したフローチャートである。ここでは、移動させる処理について説明するが、レーザオブジェクト65により選択したオブジェクト66に対する操作は、オブジェクト66を移動させることに限定されるものではない。
【0077】
図16に示す処理は、レーザオブジェクト65を三次元仮想空間上に配置し、特定のオブジェクトの選択が完了した後に実施される。ステップ500からこの処理を開始し、ステップ501で、特定のオブジェクト66に選択フラグが付与されているか否かを確認する。付与されている場合、ステップ502へ進み、コントローラ11による移動指示があったか否かを判断する。コントローラ11は、ボタン等の操作I/F30を備えており、ボタンの押下等の有無により移動指示があったか否かを判断する。
【0078】
移動指示があった場合、ステップ503へ進み、ユーザのコントローラ11の操作に基づき、選択フラグが付与されているオブジェクト66の移動処理を実行する。PC12は、オブジェクト66の移動処理を実行する移動処理部を備えることができる。移動処理が、引き寄せる処理である場合、選択フラグが付与されているオブジェクト66がユーザの手元に瞬時に座標が移動した状態となる。また、移動処理が、引き寄せる処理以外である場合、選択フラグが付与されているオブジェクト66が三次元仮想空間上を上下左右、前後に移動する。引き寄せる処理を実行するか、それ以外の移動処理を実行するかは、コントローラ11に設けられる複数のボタンにおいて、押下するボタンを変えることにより選択することができる。なお、ボタンを変えるほか、手を引き寄せるジェスチャー(コントローラ11の位置や傾き)によって選択してもよい。
【0079】
ステップ501で選択フラグが付与されていない場合、ステップ502で移動指示がない場合、ステップ503で移動処理の実行が終了した場合、ステップ504へ進み、ユーザによる入力指示があるか否かを判断する。ユーザによる入力指示は、例えばユーザによる音声入力や三次元仮想空間における文字入力等である。入力指示の有無も、移動指示の有無と同様、コントローラ11のボタンの押下等の有無により判断することができる。また、入力指示の有無は、オブジェクト66をユーザの口に近づけるジェスチャーによる操作の有無により判断することもできる。
【0080】
ステップ504でユーザによる入力指示があった場合、ステップ505へ進み、選択フラグが付与されているオブジェクト66に対して入力処理を実行する。入力処理の具体的な説明は後述する。ステップ504で入力指示がない場合や、ステップ506で入力処理が終了した場合、オブジェクト66の移動処理を終了する。さらにオブジェクト66を移動させる場合は、ステップ500から処理を開始することができる。
【0081】
図17は、ユーザ入力の一例として、音声入力の流れを示したフローチャートである。ステップ600から処理を開始し、ステップ601で、HMD10の位置情報、コントローラ11の位置情報、レーザオブジェクト65の位置情報を取得する。レーザオブジェクト65の位置情報は、レーザオブジェクト65の先端の位置、すなわちレーザオブジェクト65が選択しているオブジェクト66である。
【0082】
ステップ602では、HMD10の位置情報と、三次元仮想空間上のレーザオブジェクト65の位置情報とから、HMD10とレーザオブジェクト65との間の距離を示す距離情報を作成する。距離情報は、移動処理を実行した以降、常時作成されている。
【0083】
ステップ603では、HMD10の位置を基準としてユーザの口の位置を推定し、ユーザの口と、三次元仮想空間上のレーザオブジェクト65との間の距離が、所定の距離より短いか否かを判断する。ユーザがオブジェクト66を引き寄せ、所定の距離より短くなった場合、ステップ604へ進み、音声入力を実行する。HMD10は、入力受付部として機能するマイク26により音声入力を受け付け、入力された音声データをPC12へ送る。PC12は、HMD10から取得した音声データに対して音声認識処理を実行する。音声認識処理では、ユーザが話した内容を音声認識により文字を含む画像データに変換し、変換した画像データを、移動処理を実行したオブジェクト66上に貼り付ける処理を実行する。PC12は、入力されたデータに対し、音声認識処理等の所定の処理を実行するデータ処理部を備えることができる。なお、音声入力を受け付けるマイクは、HMD10のマイク26に限られるものではなく、PC12に別途接続されるマイクであってもよい。
【0084】
ステップ603で所定の距離より長い場合、音声入力を実行することなく、ステップ605で、音声入力の処理を終了する。
【0085】
図18は、音声入力を行っている場合の表示例を示した図である。HMD10を頭部に装着したユーザ67の口元に、オブジェクト66を移動させ、オブジェクト66に対し、音声入力を行っている様子を示している。
【0086】
これまで、表示システムを、
図1に示したHMD10、コントローラ11、PC12、位置検知センサ13を含むものとして説明してきたが、表示システムの構成は、この構成に限定されるものではない。
図19に示すように、PC12や位置検知センサ13の機能を、HMD10に搭載し、HMD10、コントローラ11のみから構成されるものであってもよい。
【0087】
HMD10やコントローラ11の位置を検出する場合、HMD10は、HMD10やコントローラ11の位置を検出するために、撮像装置(カメラ)を搭載することができる。HMD10およびコントローラ11は、HMD10およびコントローラ11の傾きを検出するためのセンサを備えることができる。
【0088】
HMD10の位置や傾きは、カメラにより基準位置に配置されるマーカー等を撮像することにより、マーカー等の画像の大きさ、方向、傾き等から算出することができる。コントローラ11の位置や傾きも、カメラにより撮像された画像から算出することができる。なお、HMD10がカメラを備える場合、コントローラ11を使用しなくてもよく、手にマーカーを設け、HMD10のカメラを用いて、マーカーを含む画像を撮像し、撮像した画像から手の位置や傾きを算出することができる。
【0089】
図20は、
図19に示した構成を採用する場合のHMD10とコントローラ11のハードウェア構成を示した図である。HMD10は、
図2に示した構成と同様、外部I/F20と、CPU21と、ディスプレイ22と、メモリ23と、HDD24と、マイク26とを備える。HMD10は、さらに、センサ27と、カメラ28とを備える。
【0090】
センサ27は、角速度を検出するジャイロセンサや加速度を検出する加速度センサ等であり、HMD10の傾きや向きを検出する。カメラ28は、三次元仮想空間上やコントローラ11に付与されたマーカーを認識し、HMD10やコントローラ11の位置や傾きを検出する。
【0091】
コントローラ11も、
図2に示した構成と同様、操作I/F30と、外部I/F31とを備える。コントローラ11は、光源32に代えて、センサ33を備える。センサ33は、HMD10のセンサ27と同様、ジャイロセンサや加速度センサ等であり、コントローラ11の傾きや向きを検出する。
【0092】
HMD10およびコントローラ11の傾き情報は、センサ27およびセンサ33からの情報を使用してもよいし、HMD10のカメラ28により検出された情報を使用してもよい。HMD10およびコントローラ11の位置および傾きは、HMD10のカメラ28により撮像された画像から検出してもよい。また、HMD10のセンサ27およびカメラ28により検出された情報、コントローラ11により検出された情報を、HMD10において取り纏め、得られた情報を基に、HMD10およびコントローラ11の位置および傾きを検出してもよい。
【0093】
コントローラ11を用いず、カメラ28により手の形状や位置を検出し、手の形状から傾きを検出してもよい。
【0094】
図20に示すように、HMD10がセンサ27、カメラ28を備え、コントローラ11がセンサ33を備え、さらに、外部センサとして、
図1に示した位置検知センサ13をさらに備えていてもよい。この場合、HMD10およびコントローラ11のセンサやカメラを使用するか、外部の位置検知センサ13を使用するかを選択し、切り替えてもよい。例えば、位置情報や傾き情報において高い精度の情報を使用したい場合、位置検知センサ13を使用し、反応性を要求する場合は、センサ27、33やカメラ28を使用することができる。
【0095】
本発明の装置、システム、方法およびプログラムを提供することにより、ユーザオブジェクトの配置に際して、手元を確認する必要がなく、両手を使用して配置する必要もないので、三次元仮想空間におけるユーザビリティを向上させることができる。また、肩の位置を腕の起点とし、ユーザオブジェクトの配置位置を決定するため、配置位置の精度が向上させることができる。さらに、肩の位置を基準に配置位置を決定することで、人の直感に近い感覚でユーザオブジェクトを扱うことが可能となる。
【0096】
これまで本発明を、情報処理装置、表示システム、情報処理方法およびプログラムとして上述した実施の形態をもって説明してきた。しかしながら、本発明は上述した実施の形態に限定されるものではなく、他の実施の形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができるものである。また、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【0097】
10…HMD、11…コントローラ、12…PC、13…位置検知センサ、14…サーバ、15…ネットワーク、20…外部I/F、21…CPU、22…ディスプレイ、23…メモリ、24…HDD、25…光源、26…マイク、30…操作I/F、31…外部I/F、32…光源、40…CPU、41…ROM、42…RAM、43…HDD、44…外部I/F、45…入出力I/F、46…入力装置、47…表示装置、50…取得部、51…第1の生成部、52…第2の生成部、60…ホワイトボード、61…手、62…アシスタントオブジェクト、63…マーカー、64…黒板消し、65…レーザオブジェクト、66…オブジェクト、67…ユーザ
【先行技術文献】
【特許文献】
【0098】