IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ソニー株式会社の特許一覧

特開2024-103522情報処理装置、情報処理方法、及びコンピュータが読み取り可能な記録媒体
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024103522
(43)【公開日】2024-08-01
(54)【発明の名称】情報処理装置、情報処理方法、及びコンピュータが読み取り可能な記録媒体
(51)【国際特許分類】
   G06F 3/0346 20130101AFI20240725BHJP
   G06F 3/01 20060101ALI20240725BHJP
   G06F 3/04842 20220101ALI20240725BHJP
【FI】
G06F3/0346 423
G06F3/01 570
G06F3/04842
【審査請求】有
【請求項の数】25
【出願形態】OL
(21)【出願番号】P 2024079864
(22)【出願日】2024-05-16
(62)【分割の表示】P 2021507159の分割
【原出願日】2020-03-03
(31)【優先権主張番号】P 2019048684
(32)【優先日】2019-03-15
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】000002185
【氏名又は名称】ソニーグループ株式会社
(74)【代理人】
【識別番号】110003339
【氏名又は名称】弁理士法人南青山国際特許事務所
(72)【発明者】
【氏名】安田 亮平
(72)【発明者】
【氏名】野田 卓郎
(57)【要約】
【課題】視線を用いた選択操作の操作性を向上すること。
【解決手段】情報処理装置は、眼球情報取得部と、視線推定部と、表示制御部と、ジェスチャー情報取得部と、モード切替部とを具備する。眼球情報取得部は、第1のセンサからユーザの眼球の位置姿勢情報を取得する。視線推定部は、眼球の位置姿勢情報に基づいて視線ベクトルを推定する。表示制御部は、視線ベクトルに基づいた注視状態を示すガイド画像を表示するよう表示装置を制御する。ジェスチャー情報取得部は、第2のセンサから眼球の位置姿勢情報とは異なるジェスチャー情報を取得する。モード切替部は、ガイド画像に関するユーザのモード切替入力に応じて、眼球の位置姿勢情報をガイド画像に反映する第1のモードと、ジェスチャー情報に基づいて注視状態を補正する第2のモードとを切り替える。
【選択図】図6
【特許請求の範囲】
【請求項1】
第1のセンサからユーザの眼球の位置姿勢情報を取得する眼球情報取得部と、
前記眼球の位置姿勢情報に基づいて前記ユーザの視線ベクトルを推定する視線推定部と、
前記推定された視線ベクトルに基づいた注視状態を示すガイド画像を表示するよう表示装置を制御する表示制御部と、
第2のセンサから前記眼球の位置姿勢情報とは異なる前記ユーザのジェスチャー情報を取得するジェスチャー情報取得部と、
前記ガイド画像に関する前記ユーザのモード切替入力に応じて、前記眼球の位置姿勢情報を前記ガイド画像に反映する第1のモードと、前記ジェスチャー情報に基づいて前記注視状態を補正する第2のモードとを切り替えるモード切替部と
を具備する情報処理装置。
【請求項2】
請求項1に記載の情報処理装置であって、
前記ガイド画像は、前記注視状態として、前記視線ベクトルに基づく注視位置または前記注視位置を含む注視オブジェクトの少なくとも一方を示す画像であり、
前記表示制御部は、前記第2のモードが実行された場合に、前記ジェスチャー情報に基づいて前記注視位置を補正する
情報処理装置。
【請求項3】
請求項2に記載の情報処理装置であって、
前記表示制御部は、前記第2のモードが実行された場合に、前記注視位置が補正された前記ガイド画像を表示するよう前記表示装置を制御する
情報処理装置。
【請求項4】
請求項2に記載の情報処理装置であって、
前記表示制御部は、前記ジェスチャー情報に基づいて前記視線ベクトルを補正することで前記注視位置を補正する
情報処理装置。
【請求項5】
請求項2に記載の情報処理装置であって、
前記ジェスチャー情報は、前記ユーザが頭部を回転させるヘッドジェスチャーに関する情報を含み、
前記表示制御部は、前記第2のモードが実行された場合に、前記ユーザの頭部の回転に応じて前記注視位置が補正された前記ガイド画像を表示するよう前記表示装置を制御する
情報処理装置。
【請求項6】
請求項5に記載の情報処理装置であって、
前記表示制御部は、前記ユーザの頭部の回転方向に前記視線ベクトルを回転させる
情報処理装置。
【請求項7】
請求項5に記載の情報処理装置であって、
前記表示制御部は、前記ユーザの頭部の回転角度に応じて、第1の範囲に収まるように前記視線ベクトルの回転角度を設定する
情報処理装置。
【請求項8】
請求項7に記載の情報処理装置であって、
前記表示制御部は、前記ユーザの頭部の回転角度が第2の範囲を超えた場合に、前記視線ベクトルの回転角度を前記第1の範囲の最大角度に設定する
情報処理装置。
【請求項9】
請求項8に記載の情報処理装置であって、
前記第2の範囲は、前記視線ベクトルの推定精度、前記視線ベクトルの較正データ、前記注視オブジェクトの候補となる候補オブジェクトの密集度、及び前記第2のモードが実行されたタイミングでの前記ユーザの頭部の姿勢の少なくとも1つに基づいて設定される
情報処理装置。
【請求項10】
請求項7に記載の情報処理装置であって、
前記ユーザの頭部の回転角度は、前記第2のモードが実行されたタイミングでの前記ユーザの頭部の回転位置を基準として算出される
情報処理装置。
【請求項11】
請求項5に記載の情報処理装置であって、
前記表示制御部は、前記ユーザの頭部の回転角度に係らず、前記ユーザの頭部の回転方向に前記視線ベクトルを連続的に回転させることで前記注視位置を連続的に移動する
情報処理装置。
【請求項12】
請求項11に記載の情報処理装置であって、
前記表示制御部は、連続的に移動する前記注視位置に応じて前記注視オブジェクトが切り替わるように前記ガイド画像を表示するよう前記表示装置を制御する
情報処理装置。
【請求項13】
請求項5に記載の情報処理装置であって、
前記表示制御部は、前記注視オブジェクトの候補となる候補オブジェクトの移動に連動する前記ユーザの頭部の回転速度に基づいて、前記移動する候補オブジェクトに対する前記ユーザの頭部の相対的な回転角度を算出する
情報処理装置。
【請求項14】
請求項2に記載の情報処理装置であって、
前記モード切替部は、前記第2のモードの開始条件及び終了条件に基づいて前記モード切替入力を判定する
情報処理装置。
【請求項15】
請求項14に記載の情報処理装置であって、
前記開始条件は、前記注視オブジェクトが注視されている期間に関する条件、前記ユーザによる操作入力の有無に関する条件、前記視線ベクトルの変化量に関する条件のうち少なくとも1つの条件を含む
情報処理装置。
【請求項16】
請求項14に記載の情報処理装置であって、
前記終了条件は、前記ユーザの眼動作に関する条件、前記ユーザの頭部の回転速度に関する条件、前記ユーザによる操作入力の有無に関する条件、前記視線ベクトルの変化量に関する条件のうち少なくとも1つの条件を含む
情報処理装置。
【請求項17】
請求項1に記載の情報処理装置であって、
前記ジェスチャー情報は、前記ユーザが上半身を傾けるボディジェスチャー、または前記ユーザが手を動かすハンドジェスチャーの少なくとも一方に関する情報を含む
情報処理装置。
【請求項18】
請求項1に記載の情報処理装置であって、
前記表示制御部は、前記第2のモードにおいて前記注視状態を補正する補正量を算出し、前記補正量に基づいて前記第1のモードでの前記ガイド画像の表示を実行する
情報処理装置。
【請求項19】
請求項1に記載の情報処理装置であって、
前記表示制御部は、前記ユーザの注視対象となる1以上のオブジェクトのうち、前記視線ベクトルに対する離間度が最も小さい前記オブジェクトを、前記注視対象として選択する
情報処理装置。
【請求項20】
請求項19に記載の情報処理装置であって、
前記視線ベクトルに対する離間度は、前記視線ベクトルと前記オブジェクトの位置ベクトルとの角度間隔である
情報処理装置。
【請求項21】
請求項1に記載の情報処理装置であって、
前記ガイド画像は、前記ユーザの注視対象となる1以上のオブジェクトを含み、
前記表示制御部は、前記1以上のオブジェクトの前記視線ベクトルに対する離間度に応じて、各オブジェクトの表示が変化するように前記ガイド画像を表示するよう前記表示装置を制御する
情報処理装置。
【請求項22】
請求項21に記載の情報処理装置であって、
前記視線ベクトルに対する離間度は、前記視線ベクトルと前記オブジェクトの位置ベクトルとの角度間隔であり、
前記表示制御部は、前記角度間隔に応じて、前記1以上のオブジェクトの色、サイズ、形状、動作の少なくとも1つを変化させる
情報処理装置。
【請求項23】
請求項21に記載の情報処理装置であって、
前記表示制御部は、前記1以上のオブジェクトのうち、前記視線ベクトルを基準とする所定の角度範囲に含まれない前記オブジェクトに対して、ぼかし処理又は非表示処理の一方を実行する
情報処理装置。
【請求項24】
第1のセンサからユーザの眼球の位置姿勢情報を取得し、
前記眼球の位置姿勢情報に基づいて前記ユーザの視線ベクトルを推定し、
前記推定された視線ベクトルに基づいた注視状態を示すガイド画像を表示するよう表示装置を制御し、
第2のセンサから前記眼球の位置姿勢情報とは異なる前記ユーザのジェスチャー情報を取得し、
前記ガイド画像に関する前記ユーザのモード切替入力に応じて、前記眼球の位置姿勢情報を前記ガイド画像に反映する第1のモードと、前記ジェスチャー情報に基づいて前記注視状態を補正する第2のモードとを切り替える
ことをコンピュータシステムが実行する情報処理方法。
【請求項25】
第1のセンサからユーザの眼球の位置姿勢情報を取得するステップと、
前記眼球の位置姿勢情報に基づいて前記ユーザの視線ベクトルを推定するステップと、
前記推定された視線ベクトルに基づいた注視状態を示すガイド画像を表示するよう表示装置を制御するステップと、
第2のセンサから前記眼球の位置姿勢情報とは異なる前記ユーザのジェスチャー情報を取得するステップと、
前記ガイド画像に関する前記ユーザのモード切替入力に応じて、前記眼球の位置姿勢情報を前記ガイド画像に反映する第1のモードと、前記ジェスチャー情報に基づいて前記注視状態を補正する第2のモードとを切り替えるステップと
を実行させるプログラムが記録されているコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、ユーザの視線を用いた操作等を行う情報処理装置、情報処理方法、及びコンピュータが読み取り可能な記録媒体に関する。
【背景技術】
【0002】
従来、ユーザの視線を検出する技術が開発されている。例えば、ユーザの視線の検出結果を用いることで、ユーザが見ている対象等を選択するといった、視線による選択操作等が可能となる。
【0003】
特許文献1には、ユーザの視線を用いてアイコンを選択することが可能な頭部装着型端末について記載されている。この頭部装着型端末には、ユーザの首の動きを検出するジャイロセンサが搭載される。例えばジャイロセンサにより検出されたユーザの首の動きに応じて、表示領域に表示されているアイコンの表示位置や間隔等が、視線で選択し易くなるように変更される。これにより、視線入力によるアイコンの選択等が容易になる(特許文献1の明細書段落[0021][0029][0024][0036]図2等)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】国際公開第2015/170520号
【発明の概要】
【発明が解決しようとする課題】
【0005】
視線を用いて対象を選択する技術は、アミューズメント、教育、ショッピングといった様々な分野での応用が期待されており、視線を用いた選択操作の操作性を向上する技術が求められている。
【0006】
以上のような事情に鑑み、本技術の目的は、視線を用いた選択操作の操作性を向上することが可能な情報処理装置、情報処理方法、及びコンピュータが読み取り可能な記録媒体を提供することにある。
【課題を解決するための手段】
【0007】
上記目的を達成するため、本技術の一形態に係る情報処理装置は、眼球情報取得部と、視線推定部と、表示制御部と、ジェスチャー情報取得部と、モード切替部とを具備する。
前記眼球情報取得部は、第1のセンサからユーザの眼球の位置姿勢情報を取得する。
前記視線推定部は、前記眼球の位置姿勢情報に基づいて前記ユーザの視線ベクトルを推定する。
前記表示制御部は、前記推定された視線ベクトルに基づいた注視状態を示すガイド画像を表示するよう表示装置を制御する。
前記ジェスチャー情報取得部は、第2のセンサから前記眼球の位置姿勢情報とは異なる前記ユーザのジェスチャー情報を取得する。
前記モード切替部は、前記ガイド画像に関する前記ユーザのモード切替入力に応じて、前記眼球の位置姿勢情報を前記ガイド画像に反映する第1のモードと、前記ジェスチャー情報に基づいて前記注視状態を補正する第2のモードとを切り替える。
【0008】
この情報処理装置では、ユーザの眼球の位置姿勢情報が取得され、眼球の位置姿勢情報に基づいて視線ベクトルが推定される。この視線ベクトルに基づいた注視状態を示すガイド画像が表示装置に表示される。またガイド画像に関するモードを切り替えるモード切替入力に応じて、眼球の位置姿勢情報をガイド画像に反映する第1のモードと、眼球の位置姿勢情報とは異なるジェスチャー情報に基づいて注視状態を補正する第2のモードとが切り替えられる。これにより、視線を用いた選択操作の操作性を向上することが可能となる。
【0009】
本技術の一形態に係る情報処理方法は、コンピュータシステムにより実行される情報処理方法であって、第1のセンサからユーザの眼球の位置姿勢情報を取得することを含む。
前記眼球の位置姿勢情報に基づいて前記ユーザの視線ベクトルが推定される。
前記推定された視線ベクトルに基づいた注視状態を示すガイド画像を表示するよう表示装置が制御される。
第2のセンサから前記眼球の位置姿勢情報とは異なる前記ユーザのジェスチャー情報が取得される。
前記ガイド画像に関する前記ユーザのモード切替入力に応じて、前記眼球の位置姿勢情報を前記ガイド画像に反映する第1のモードと、前記ジェスチャー情報に基づいて前記注視状態を補正する第2のモードとが切り替えられる。
【0010】
本技術の一形態に係るコンピュータが読み取り可能な記録媒体は、コンピュータシステムに以下のステップを実行させるプログラムを記録する。
第1のセンサからユーザの眼球の位置姿勢情報を取得するステップ。
前記眼球の位置姿勢情報に基づいて前記ユーザの視線ベクトルを推定するステップ。
前記推定された視線ベクトルに基づいた注視状態を示すガイド画像を表示するよう表示装置を制御するステップ。
第2のセンサから前記眼球の位置姿勢情報とは異なる前記ユーザのジェスチャー情報を取得するステップと、
前記ガイド画像に関する前記ユーザのモード切替入力に応じて、前記眼球の位置姿勢情報を前記ガイド画像に反映する第1のモードと、前記ジェスチャー情報に基づいて前記注視状態を補正する第2のモードとを切り替えるステップと
を実行させるプログラムが記録されているコンピュータが読み取り可能な記録媒体。
【図面の簡単な説明】
【0011】
図1】本技術の一実施形態に係るヘッドマウントディスプレイの外観を示す斜視図である。
図2】HMDの機能的な構成例を示すブロック図である。
図3】ガイド画像の一例を示す模式図である。
図4】HMDの基本的な動作を説明するための模式図である。
図5】ユーザの頭部の回転について説明するための模式図である。
図6】視線ベクトルの補正処理の一例を示すフローチャートである。
図7】視線ベクトルの補正処理の一例を示す模式図である。
図8】視線ベクトルの補正に用いられる頭部の回転方向を示す模式図である。
図9】視線ベクトルの最大回転範囲の一例を示す模式図である。
図10】視線ベクトルを補正する処理の他の一例を示す模式図である。
図11】視線ベクトルの補正処理の他の一例を示す模式図である。
図12】視線による選択操作が適用される画面の一例を示す模式図である。
図13】視線による選択操作が適用される画面の一例を示す模式図である。
図14】視線による選択操作が適用される画面の一例を示す模式図である。
図15】第2のモードにおける画面の表示例を示す模式図である。
図16】ユーザのボディジェスチャーの一例を示す模式図である。
図17】ユーザのハンドジェスチャーの一例を示す模式図である。
図18】比較例として挙げる視線を用いた選択操作を説明するための模式図である。
図19】他の実施形態に係る注視位置の補正処理の一例を示す模式図である。
図20】注視対象の選択処理の一例を示す模式図である。
図21】注視対象の選択処理の一例を示す模式図である。
図22】注視対象となる仮想オブジェクトの表示例を示す模式図である。
図23】角度間隔に応じた表示処理について説明するための模式図である。
図24】他の実施形態に係るHMDの機能的な構成例を示すブロック図である。
図25】他の実施形態に係るHMDの基本的な動作例を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、本技術に係る実施形態を、図面を参照しながら説明する。
【0013】
[HMDの構成]
図1は、本技術の一実施形態に係るヘッドマウントディスプレイ(HMD)の外観を示す斜視図である。図2は、HMD100の機能的な構成例を示すブロック図である。HMD100は、ユーザの頭部に装着して使用され、ユーザの視界に画像表示を行う表示装置として機能する。HMD100を装着したユーザは、例えば仮想現実(VR:Virtual Reality)や拡張現実(Augmented Reality)等を体験することが可能である。
【0014】
図1に示すようにHMD100は、基体部10と、装着バンド11とを有する。基体部10は、ユーザの左右の眼の前方に配置される部材である。基体部10は、ユーザの視界を覆うように構成され、画像表示を行うためのディスプレイ15等を収納する筐体として機能する。
【0015】
装着バンド11は、ユーザの頭部に装着される。図1に示すように、装着バンド11は、側頭バンド11aと、頭頂バンド11bとを有する。側頭バンド11aは、基体部10に接続され、側頭部から後頭部にかけてユーザの頭部を囲むように装着される。頭頂バンド11bは、側頭バンド11aに接続され、側頭部から頭頂部にかけてユーザの頭部を囲むように装着される。これにより、ユーザの眼前に基体部10を保持することが可能となる。
【0016】
図2に示すようにHMD100は、さらに、内向きカメラ12と、動作センサ13と、外部センサ14と、ディスプレイ15と、通信部16と、記憶部17と、コントローラ20とを有する。
【0017】
内向きカメラ12は、ユーザの眼球を撮影する。ユーザの眼球が撮影された眼球画像は、後述するユーザの視線ベクトルを検出する処理に用いられる。内向きカメラ12は、例えばユーザの左眼及び右眼が撮影可能となるように基体部10の内部に配置された左眼用及び右眼用カメラを用いて構成される。本実施形態では、内向きカメラ12は、第1のセンサに相当する。
【0018】
内向きカメラ12(左眼用及び右眼用カメラ)としては、例えばCMOS(Complementary Metal-Oxide Semiconductor)センサやCCD(Charge Coupled Device)センサ等のイメージセンサを備えるデジタルカメラが用いられる。また、例えば赤外線LED等の赤外線光源を搭載した赤外線カメラが用いられてもよい。これにより、眼球の赤外線画像を撮影することが可能となり、例えばユーザの視線ベクトルを精度よく検出することが可能となる。内向きカメラ12の具体的な構成は限定されない。
【0019】
動作センサ13は、HMD100の動きに関する情報を検出するセンサである。動作センサ13は、例えば基体部10の所定の位置に固定して配置され、HMD100の傾斜や回転等を検出する。従って、動作センサ13は、HMD100を装着したユーザの頭部の動きに関する情報を検出するセンサであるとも言える。本実施形態では、動作センサ13は、第2のセンサに相当する。
【0020】
動作センサ13としては、例えば慣性計測装置(IMU:Inertial Measurement Unit)等が用いられる。慣性計測装置は、例えば3軸のジャイロ及び加速度計によって、3次元の角速度及び加速度を検出するセンサである。また例えば、3軸のジャイロや加速度に加え3軸の速度計を備えた9軸センサ等が動作センサ13として用いられてもよい。この他、動作センサ13の種類は限定されず、HMD100の動作を検出可能な任意のセンサが用いられてよい。
【0021】
外部センサ14は、HMD100の外側の情報を検出するセンサである。外部センサ14としては、HMD100の正面(ユーザの正面)を撮影するデジタルカメラ(外向きカメラ)等が用いられる。また例えば、実空間の奥行情報等を検出可能なステレオカメラやTOF(Time of Flight)センサ等を備えたカメラ等が外部センサ14として用いられてもよい。例えば外部センサ14により検出された画像をディスプレイ15に表示することで、AR体験等を提供することが可能である。この他、レーダセンサやLiDARセンサ等が外部センサ14として搭載されてもよい。
【0022】
ディスプレイ15は、ユーザの視界の少なくとも一部を覆うように基体部10に設けられる。例えば左眼用及び右眼用の画像を表示するように2つのディスプレイ15が、ユーザの視界に配置される。あるいは、単一のディスプレイ15を用いて左眼用及び右眼用の画像が表示される構成が採用されてもよい。またディスプレイ15とユーザの左眼及び右眼との間には、例えばフォーカスを調整するためのレンズ等が設けられてもよい。
【0023】
ディスプレイ15としては、例えば有機ELディスプレイやLCD(Liquid Crystal Display、液晶表示素子)ディスプレイ等が用いられる。この他、ディスプレイ15の具体的な構成は限定されない。本実施形態では、ディスプレイ15は、表示装置に相当する。
【0024】
通信部16は、他のデバイスとの間で、ネットワーク通信や近距離無線通信等を実行するためのモジュールである。通信部16としては、例えばWiFi等の無線LANモジュールや、Bluetooth(登録商標)等の通信モジュールが設けられる。
【0025】
また通信部16は、例えばユーザが手を使った操作入力等を行うための入力装置(図示省略)との通信を実行する。入力装置としては、例えば、選択ボタン、アナログスティック、及びスイッチ等を備えた装置(ゲームコントローラ等)が用いられる。入力装置の種類等は限定されず、例えばキーボード等が用いられてもよい。
【0026】
記憶部17は、不揮発性の記憶デバイスである。記憶部17としては、例えばSSD(Solid State Drive)等の固体素子を用いた記録媒体や、HDD(Hard Disk Drive)等の磁気記録媒体が用いられる。この他、記憶部17として用いられる記録媒体の種類等は限定されず、例えば非一時的にデータを記録する任意の記録媒体が用いられてよい。
【0027】
記憶部17には、HMD100の全体の動作を制御するための制御プログラム18が記憶される。制御プログラム18は、本実施形態に係るプログラムであり、記憶部17は、プログラムが記録されているコンピュータが読み取り可能な記録媒体に相当する。
【0028】
コントローラ20は、HMD100が有する各ブロックの動作を制御する。コントローラ20は、例えばCPUやメモリ(RAM、ROM)等のコンピュータに必要なハードウェア構成を有する。CPUが記憶部17に記憶されている制御プログラム18をRAMにロードして実行することにより、種々の処理が実行される。本実施形態では、コントローラ20は、情報処理装置に相当する。
【0029】
コントローラ20として、例えばFPGA(Field Programmable Gate Array)等のPLD(Programmable Logic Device)、その他ASIC(Application Specific Integrated Circuit)等のデバイスが用いられてもよい。また例えばGPU(Graphics Processing Unit)等のプロセッサがコントローラ20として用いられてもよい。
【0030】
なおコントローラ20や記憶部17は、HMD100本体とは別に設けられてもよい。例えば、図示しない通信部等を介して、HMD100本体と、コントローラ20等が通信することにより、HMD100の制御が実現されてもよい。これにより、HMD100本体の消費電力が抑制され、HMD100の稼働時間を向上することが可能である。
【0031】
本実施形態では、コントローラ20のCPUが本実施形態に係るプログラムを実行することで、機能ブロックとして、視線検出部21、頭部位置姿勢検出部22、表示制御部23、及びモード切替部24が実現される。そしてこれらの機能ブロックにより、本実施形態に係る情報処理方法が実行される。なお各機能ブロックを実現するために、IC(集積回路)等の専用のハードウェアが適宜用いられてもよい。
【0032】
視線検出部21は、ユーザの眼球の位置姿勢情報に基づいてユーザの視線を検出する。ここでユーザの眼球の位置姿勢情報とは、ユーザの眼球の位置及び姿勢を検出することが可能な情報である。例えばユーザの左右の眼球の間隔や各眼球の前後の位置等、あるいは各眼球の向き(姿勢)等を検出するための情報が、眼球の位置姿勢情報となる。
【0033】
本実施形態では、視線検出部21は、内向きカメラ12からユーザの眼球の位置姿勢情報を取得する。具体的には、ユーザの眼球の位置姿勢情報として、内向きカメラ12により撮影された眼球画像が適宜読み込まれる。従って本実施形態では、眼球画像が、ユーザの眼球の位置姿勢情報となる。
【0034】
また、視線検出部21は、眼球の位置姿勢情報に基づいてユーザの視線ベクトルを推定する。すなわち内向きカメラ12により撮影された眼球画像に基づいて、ユーザの視線ベクトルが推定される。視線ベクトルは、ユーザの視線方向の推定結果を表すベクトルであり、例えばHMD100(コントローラ20)で用いられる所定の座標系でのベクトルとして検出される。本実施形態では、視線検出部21は、眼球情報取得部及び視線推定部として機能する。
【0035】
視線ベクトルは、例えば角膜反射法等を用いて推定される。角膜反射法では、例えば赤外線カメラ(内向きカメラ12)及び赤外光源を用いて眼球が撮影される。この場合、眼球画像には、赤外線が角膜等で反射されることで生じる輝点(プルキニエ像)が映り込むことになる。この赤外線の輝点と瞳孔位置とに基づいて視線ベクトルが推定される。角膜反射法を用いることで、視線ベクトルを精度よく検出することが可能である。
【0036】
また例えば、眼球画像に基づいて、目じり等の特徴点を基準に視線ベクトルを推定する方法等が用いられてもよい。この方法では、例えば赤外線光源等を設ける必要がないため、部品点数を抑えることが可能である。この他、眼球画像に基づいて視線ベクトルを推定する方法は限定されず、機械学習等を用いて視線ベクトルを推定する方法等が用いられてもよい。
【0037】
本実施形態では、例えば左右の眼球ごとに視線ベクトルが推定され、これらを適宜合成することで、単一の視線ベクトルが推定される。これに限定されず、例えば左右の眼球ごとに推定された視線ベクトルが用いられる場合にも本技術は適用可能である。なお、視線ベクトルの推定処理には、推定誤差が含まれる。従って、視線ベクトルは、実際にユーザが見ている方向と必ずしも一致するとは限らない。この点については後述する。
【0038】
頭部位置姿勢検出部22は、動作センサ13の検出結果を読み込み、ユーザの頭部の位置及び姿勢を検出する。また頭部位置姿勢検出部22は、ユーザが頭部を回転させるヘッドジェスチャーに伴う、ユーザの頭部の回転方向及び回転角度を検出する。
【0039】
上記したように、動作センサ13は、HMD100の動きに関する情報、すなわちユーザの頭部の動きに関する情報を検出する。従って、動作センサ13の検出結果(頭部の速度・加速度・角速度等)は、ユーザが頭部を回転させるヘッドジェスチャーに関する情報(以下、ヘッドジェスチャー情報と記載する)となる。
【0040】
このように、頭部位置姿勢検出部22は、動作センサ13からヘッドジェスチャー情報を取得する。本実施形態では、ヘッドジェスチャー情報は、眼球の位置姿勢情報とは異なるユーザのジェスチャー情報の一例である。また本実施形態では、頭部位置姿勢検出部22は、ジェスチャー情報取得部に相当する。
【0041】
頭部位置姿勢検出部22は、動作センサ13の検出結果に基づいて、ユーザの頭部の位置及び姿勢を検出する。例えば頭部の移動方向を推定することで、頭部の位置が検出される。頭部の位置は、例えばユーザの視線方向の基点(視点)となる。また例えば、頭部の傾き等に基づいて、頭部の姿勢が検出される。
【0042】
また頭部位置姿勢検出部22は、ユーザの頭部の回転方向及び回転角度を検出する。例えばあるタイミングでの頭部の姿勢を基準として頭部の姿勢の変化量が算出される。この変化量に基づいて頭部の回転方向や回転角度等が検出される。頭部の位置、姿勢、回転方向、及び回転角度等を検出する方法は限定されない。
【0043】
表示制御部23は、HMD100のディスプレイ15における画像表示を制御する。すなわち、表示制御部23は、状況に応じて適正な画像が表示されるように、ディスプレイ15を制御するとも言える。本実施形態では、表示制御部23は、視線方向調整部25と、画像処理部26とを有する。
【0044】
視線方向調整部25は、ユーザのヘッドジェスチャーに応じて、視線検出部21により検出された視線ベクトルを補正(調整)する。例えば、頭部位置姿勢検出部22により検出されたユーザの頭部の回転方向及び回転角度等に基づいて、視線ベクトルを回転することで、視線ベクトルが補正される。視線ベクトルを補正する方法については、後に詳しく説明する。
【0045】
なお視線ベクトルの補正は、後述するモード切替部24により指定されるモードに応じて実行される。例えば視線方向調整部25は、指定されたモードに応じて、視線ベクトルを補正しないモード(第1のモード)と、視線ベクトルを補正するモード(第2のモード)とを実行する。例えば第1のモードでは、視線検出部21により検出された視線ベクトルの情報が、補正されることなく、画像処理部26に出力される。また第2のモードでは、補正された視線ベクトルの情報が、画像処理部26に出力される。
【0046】
画像処理部26は、ディスプレイ15に表示される画像を生成する。画像処理部26は、例えばHMD100で実行されるコンテンツ情報を取得し、コンテンツの進行状況や、ユーザの頭部(HMD100)の位置・姿勢等に応じて、コンテンツ画像を生成する。
【0047】
また画像処理部26は、視線ベクトルに基づいた注視状態を示すガイド画像を生成する。ここで注視状態とは、例えばユーザの視覚動作の状態である。例えばユーザが注視している位置やオブジェクト等を可視化することで、注視状態を示すことが可能である。従って、視線ベクトルに基づいた注視状態には、例えば視線ベクトルを用いて算出される注視位置Pや注視オブジェクト等が含まれる。
【0048】
画像処理部26では、視線方向調整部25から出力された視線ベクトルに基づいて注視位置Pが算出される。従って第1のモードでは、補正されていない視線ベクトルでの注視位置Pが算出され、第2のモードでは、補正された視線ベクトルでの注視位置Pが算出される。
【0049】
また注視位置Pの算出には、例えばコンテンツの情報等が用いられる。例えば仮想空間に表示される仮想オブジェクトと、視線ベクトルとが交差する位置が、注視位置Pとして算出される。また注視位置Pを含む仮想オブジェクト、すなわち視線ベクトルと交差する仮想オブジェクトが、注視オブジェクトとして検出される。注視位置Pを算出する方法や注視オブジェクトを検出する方法等は限定されない。
【0050】
図3は、ガイド画像の一例を示す模式図である。図3A図3Cには、互いに種類の異なるガイド画像30が模式的に図示されている。なお図3A図3Cに示す各ガイド画像30は、共通の視線ベクトルを用いて算出された画像である。
【0051】
図3Aに示すガイド画像30は、ポインタ画像31(ポインタオブジェクト)である。ポインタ画像31は、視線ベクトルに基づいて算出された注視位置Pを示す画像である。ポインタ画像31は、視線ベクトルに応じて、ディスプレイ15上の任意の位置に表示されるガイド画像30である。図3Aに示す例では、互いに直交する2本のラインと各ラインの交差位置を中心とする円により、ポインタ画像31が構成される。ポインタ画像31では、各ラインの交差位置(円の中心)により、注視位置Pが表される。
【0052】
図3Aには、横方向に1列に配置された5つの仮想オブジェクト40(立方体)を含むコンテンツ画像27が図示されている。このうちポインタ画像31は、左端の仮想オブジェクト40に重なるように表示される。これにより、HMD100(コントローラ20)側で算出された注視位置P(視線ベクトル)を可視化して表示することが可能となる。
【0053】
このように、図3Aに示すガイド画像30(ポインタ画像31)は、注視状態として、視線ベクトルに基づく注視位置Pを示す画像である。なお、上記したように、視線ベクトルには推定誤差が含まれるため、注視位置Pはユーザが実際にみている位置とは限らない。
【0054】
図3Bに示すガイド画像30は、仮想オブジェクト40が強調して表示されたハイライト画像32である。ハイライト画像32では、視線ベクトルと交差する、すなわち注視位置Pを含む仮想オブジェクト40が強調される。以下では、注視位置Pを含む仮想オブジェクト40を注視オブジェクト41と記載する。なおディスプレイ15に表示された5つの仮想オブジェクト40は、注視オブジェクト41の候補となる候補オブジェクト42である。
【0055】
ハイライト画像32は、例えばコンテンツ画像27に含まれる注視オブジェクト41が強調表示された画像である。すなわち、コンテンツ画像27の一部が、注視状態を示すように強調された画像もガイド画像30に含まれる。このように、図3Bに示すガイド画像30(ハイライト画像32)は、注視状態として、注視位置Pを含む注視オブジェクト41を示す画像である。なお注視位置Pと同様に、注視オブジェクト41は、ユーザが実際に注視しているオブジェクトであるとは限らない。
【0056】
図3Cに示すガイド画像30は、ディスプレイ15内の所定の位置に表示されるスコープ画像33である。スコープ画像33は、注視状態として、視線ベクトルに基づく注視位置Pを示す画像であり、図3Aに示すポインタ画像31とは異なり、ディスプレイ15上の定まった位置に表示される画像である。
【0057】
スコープ画像33は、例えばディスプレイ15の中央位置に定位するように表示される。この場合、スコープ画像33の中心(ディスプレイ15の中央位置)が、注視位置Pとなるように、コンテンツ画像27の表示範囲等が適宜調整される。従って、図3Cに示す例では、ユーザの視線に連動して、表示内容(コンテンツ画像27)が移動することになる。
【0058】
なお、図3A図3Cに示すガイド画像30は、単独で用いられてもよいし、適宜組み合わせて用いられてもよい。例えば、ポインタ画像31が重畳された仮想オブジェクト40をハイライト画像32として強調するといった処理が可能である。また例えば、スコープ画像33とハイライト画像32とが組み合わせて用いられてもよい。
【0059】
このように、表示制御部23(視線方向調整部25及び画像処理部26)は、推定された視線ベクトルに基づいた注視状態を示すガイド画像30を表示するようディスプレイ15を制御する。例えば、注視位置や注視オブジェクトを表示することで、ユーザは視線を用いた選択操作等を実行することが可能となる。
【0060】
モード切替部24は、モード切替入力に応じて、第1のモードと第2のモードとを切り替える。モード切替入力は、例えば視線ベクトルを補正する第2モードの開始や終了を指定する入力情報である。またモード切替部は、第2のモードの開始条件及び終了条件に基づいてモード切替入力を判定する。この判定結果に応じて、第1及び第2のモードが切り替えて実行される。モード切替入力の種類や、その判定条件等については、後に詳しく説明する。
【0061】
第1のモードでは、視線検出部21により検出された視線ベクトルを補正することなくそのままガイド画像30が生成される。すなわち第1のモードは、ユーザの眼球の位置姿勢情報をガイド画像30に反映させるモードであると言える。
【0062】
第2のモードは、視線検出部21により検出された視線ベクトルをヘッドジェスチャー情報に基づいて補正するモードである。従って第2のモードでは、補正された視線ベクトルを用いてガイド画像が生成される。すなわち第2のモードは、ヘッドジェスチャー情報に基づいて、注視状態(注視位置Pや注視オブジェクト)が補正されるモードであると言える。
【0063】
このように、モード切替部24は、ガイド画像30に関するユーザのモード切替入力に応じて、眼球の位置姿勢情報をガイド画像30に反映する第1のモードと、ヘッドジェスチャー情報に基づいて注視状態を補正する第2のモードとを切り替える。すなわちHMD100では、視線ベクトルを補正せずにそのまま用いるモードと、視線ベクトルを補正して注視位置P等を補正するモードとが切り替えられて実行されることになる。
【0064】
図4は、HMDの基本的な動作を説明するための模式図である。図4A及び図4Bには、第1のモード及び第2のモードにおけるユーザ1と3つの仮想オブジェクト40a~40cとの配置関係が模式的に図示されている。また図4では、ガイド画像30として、ポインタ画像31及びハイライト画像32が用いられる。
【0065】
図4Aに示すように、第1のモードが実行されている状態で、ユーザが左端の仮想オブジェクト40aを注視したとする。図4Aには、ユーザ1が実際に注視している方向を示す実視線ベクトル50が点線の矢印を用いて模式的に図示されている。この実視線ベクトル50と仮想オブジェクト40aとの交点(図中の十字マーク)が、ユーザ1が実際に注視している実注視位置Rとなる。この場合、仮想オブジェクト40aが、ユーザ1が本来選択したいオブジェクトとなる。
【0066】
また図4Aには、HMD100(視線検出部21)により検出された視線ベクトル51が、実線の矢印を用いて模式的に図示されている。視線ベクトル51は、推定誤差(視線検出誤差)を含むため、実視線ベクトル50とは異なるベクトルとなっている。図4Aに示す例では、視線ベクトル51は、ユーザ1が実際に見ている仮想オブジェクト40aの右前に配置された仮想オブジェクト40bと交差する。この結果、視線ベクトル51に基づく注視位置Pは、仮想オブジェクト40b上に検出され、仮想オブジェクト40bが注視オブジェクト41となる。
【0067】
HMD100では、例えば図4Aに示すような、誤った仮想オブジェクト40bが注視オブジェクト41として選択された状態が所定時間経過した場合、第1のモードが第2のモードへと切り替えられる。この場合、ユーザ1の注視時間が、モード切替入力となる。また例えば、ユーザ1がゲームコントローラ等のボタンを操作することで、第2のモードへの切り替えが実行されてもよい。この場合、ボタンを用いた操作入力の有無がモード切替入力となる。
【0068】
本実施形態では、表示制御部23により、第2のモードが実行された場合に、ヘッドジェスチャー情報に基づいて注視位置Pが補正される。すなわち、第2のモードでは、ユーザ1は頭を回転させることで、注視位置Pを補正することが可能である。図4Bには、注視位置Pを補正する際のユーザ1のヘッドジェスチャーが、頭部2の回転方向を示す矢印を用いて模式的に図示されている。
【0069】
例えばユーザ1が実際に見ている実注視位置Rの右側に注視位置P(ポインタ画像31)が表示されている状況では、図4Bに示すように、ユーザ1は、注視位置Pが左側に動くように、頭部2を左側に向けて回転させることが考えられる。本実施形態では、このようなヘッドジェスチャーに基づいて、注視位置Pが補正される。
【0070】
図5は、ユーザ1の頭部の回転について説明するための模式図である。図5の左側及び右側には、図4Bに示すユーザ1を頭上から見下ろした場合のユーザ1の頭部2が模式的に図示されている。図5では、例えばユーザ1の左右方向をX軸方向とし、X軸方向と直交する垂直面内の方向をY軸方向とし、X軸方向と直交する水平面内の方向をZ軸方向とする。なお、ユーザ1の鼻3が向いている方向を頭部2の正面方向とする。
【0071】
例えば図5の左側に示すように、ユーザ1が左前方を向いている状態で、第2のモードが実行されたとする。HMD100では、この状態でのユーザ1の頭部2の回転位置が検出され、基準位置として記憶される。回転位置としては、例えば頭部2の正面方向を表すベクトル量(姿勢)等が適宜検出される。
【0072】
第2のモードの実行中に、ユーザ1が頭部2を回転させるヘッドジェスチャーを行った場合、その時の回転方向及び回転角度が検出される。例えば、図5の右側に示すように、ユーザ1が基準位置からさらに左方向を向くように頭部2を回転させたとする。この場合、鼻3が向いている正面方向が回転した方向(図中の反時計方向)がヘッドジェスチャーの回転方向として検出される。また回転された正面方向と、基準位置での正面方向との間の角度の差分(頭部差分回転量)が、ヘッドジェスチャーの回転角度として検出される。
【0073】
このように、ユーザ1の頭部2の回転角度は、第2のモードが実行されたタイミングでのユーザ1の頭部2の回転位置を基準として算出される。これにより、ユーザ1が注視位置P(視線ベクトル51)を補正するために行う動作の動作量(ヘッドジェスチャーにおける回転角度)を精度よく検出することが可能となる。この結果、視線ベクトル51及び注視位置Pを精度よく補正することが可能となる。
【0074】
なお、一般に人間は、同じ位置を見ながら頭部2を回転させることが可能である。従って、ユーザ1は関心を持っている対象(仮想オブジェクト40a)を見ながら、注視位置Pを補正するためのヘッドジェスチャーを実行することが可能である。
【0075】
図4Bに示すように、表示制御部23は、検出されたヘッドジェスチャーの回転方向と同様の方向に、視線ベクトル51を偏向させる。すなわち、表示制御部23は、ユーザ1の頭部の回転方向に視線ベクトル51を回転させる。これにより、図4Bに示すように、注視位置Pは左方向に移動することになる。このように、視線ベクトル51を回転させることで、ユーザ1が注視位置P(視線ベクトル51)を補正する方向を直感的に指定することが可能となり、視線ベクトル51及び注視位置Pを容易に補正することが可能となる。
【0076】
また視線ベクトル51を偏向する量、すなわち視線ベクトル51の回転角度は、ヘッドジェスチャーの回転角度に応じて、一定の範囲に収まるように適宜調整される。この点については、後に詳しく説明する。このように、表示制御部23は、ヘッドジェスチャー情報に基づいて視線ベクトル51を補正することで注視位置Pを補正する。
【0077】
また補正後の注視位置Pを表すガイド画像30(ポインタ画像31及びハイライト画像32)が生成され、ディスプレイ15に表示される。この結果、図4Bに示すように、ポインタ画像31は、左側の仮想オブジェクト40a上に移動される。また注視オブジェクト41として、仮想オブジェクト40aが強調されたハイライト画像32が表示される。このように、表示制御部23は、第2のモードが実行された場合に、注視位置Pが補正されたガイド画像30を表示するようディスプレイ15を制御する。
【0078】
このように、第2のモードでは、HMD100側で検出された視線ベクトル51が、ユーザ1の頭部2の回転で調整される。すなわち、第2のモードは、視線ベクトル51を頭部2で調整する頭部調整モードであると言える。これにより、ユーザ1が所望とするオブジェクトが選択し易くなり、例えば図4A及び図4Bに示すように、互いに近接した仮想オブジェクト40等から、所望の対象を容易に選択することが可能となる。これにより、視線を用いた選択操作の操作性を向上することが可能である。
【0079】
図6は、視線ベクトル51の補正処理の一例を示すフローチャートである。図7は、視線ベクトル51の補正処理の一例を示す模式図である。以下では、図6及び図7を参照して、視線ベクトル51の補正処理(注視位置Pの補正処理)について具体的に説明する。
【0080】
図7には、アイテム選択を行うコンテンツ画像27の一例が模式的に図示されている。図7に示す例では、棚に配置された複数のアイテム(仮想オブジェクト40)から、所望のアイテムを選択する選択操作が行われる。このコンテンツ画像27は、視線を用いた選択操作が適用される画面の一例である。なお、図7には、ユーザ1が注視しているアイテム43aとは異なるアイテム43bが選択された状態が示されている。
【0081】
図6に示す処理は、例えばコンテンツの開始とともに実行されるループ処理である。まず視線ベクトル51と、頭部2の位置及び姿勢(回転位置)とが検出される(ステップ101)。例えば、視線検出部21により、内向きカメラ12から眼球の位置姿勢情報(ユーザ1の眼球画像)が読み込まれ、視線ベクトル51が検出される。また頭部位置姿勢検出部22により、動作センサ13の検出結果(ヘッドジェスチャー情報)が読み込まれ、頭部2の位置及び姿勢が検出される。
【0082】
第2のモードが実行中(ON)であるか否かが判定される(ステップ102)。例えば第2のモードがOFFである場合(ステップ102のNo)、モード切替部24により、第2のモードの開始条件を判定する処理が実行される。
【0083】
図6に示す例では、ユーザ1が同一方向を100msec以上注視しているか否かが判定される(ステップ103)。ここでユーザ1が同一方向を注視している状態とは、例えば視線ベクトル51が所定の角度以下に収まっている状態である。例えば100msec前の視線ベクトル51と、現在の視線ベクトル51との間の角度が所定の角度(例えば5度等)以下である場合に、ユーザ1が同一方向を100msec以上注視していると判定される。
【0084】
例えば、図7に示すように、ユーザ1が意図したアイテム43aを選択したい場合には、そのアイテム43aを継続して注視するため、視線ベクトル51がほとんど動かないといった状態が起きると考えられる。この場合、ユーザ1が同一方向を注視することが、ユーザ1のモード切替入力となる。これにより、ユーザ1は自然にモード切替を行うことが可能である。
【0085】
これら視線ベクトル51を判定するための期間や角度は、第2のモードの開始条件となる。このように、第2のモードの開始条件は、視線ベクトル51の変化量に関する条件を含む。なお、視線ベクトル51を判定するための期間や角度等の開始条件は限定されない。例えば視線ベクトル51の推定誤差や、コントローラ20の処理速度等に応じて、適宜設定されてよい。
【0086】
また例えば、ステップ103として、同一のオブジェクトが注視されている期間が判定されてもよい。例えば図7では、ユーザ1がアイテム43aを見ている間、ユーザ1の意図しないアイテム43bが注視オブジェクト41となっている。この場合、例えばアイテム43bが注視オブジェクト41として選択されている期間が所定の期間(例えば100msec等)である場合に、開始条件が満たされたと判定される。このように、第2のモードの開始条件は、注視オブジェクト41が注視されている期間に関する条件を含む。
【0087】
また例えば、ステップ103として、ユーザ1によるボタン等を用いた操作入力の有無が判定されてもよい。すなわち、ユーザ1が第2のモードを開始するための入力を実行したか否かが判定されてもよい。これにより、確実に第2のモードを開始することが可能となる。このように、第2のモードの開始条件は、ユーザによる操作入力の有無に関する条件を含む。この他、第2のモードの開始条件は限定されず、適宜設定されてよい。
【0088】
図6に戻り、ユーザ1が同一方向を100msec以上注視していないと判定された場合、すなわち、第2のモードの開始条件が満たされていないと判定された場合(ステップ103のNo)、ステップ101以降の処理が再度実行される。
【0089】
ユーザ1が同一方向を100msec以上注視していると判定された場合、すなわち、第2のモードの開始条件が満たされていると判定された場合(ステップ103のYes)、視線ベクトル51が記憶される(ステップ104)。また視線ベクトル51が記憶されると、頭部の基準回転位置が記憶される(ステップ105)。そして、モード切替部24により、第2のモードがONに切り替えられる(ステップ106)。
【0090】
第2のモードがONに切り替えられると、再度ステップ101が実行され、視線ベクトル51と、ユーザ1の頭部の位置及び姿勢とが検出される。またステップ102が実行され、第2のモードがONであるか否かが判定される。第2のモードがONであると判定された場合(ステップ102のYes)、モード切替部24により、第2のモードの終了条件を判定する処理が実行される。
【0091】
図6に示す例では、視線ベクトル51がステップ104で記憶された視線ベクトル51と比べて、5度以上変化したか否かが判定される(ステップ107)。すなわち、第2のモードを開始する際の視線ベクトル51と現在の視線ベクトル51との間の角度が5度以上であるか否かが判定される。
【0092】
例えば、図7において、ユーザ1が注視していたアイテム43aから、他のアイテム43に関心が移った場合には、ユーザ1は、他のアイテム43を注視するように視線を移動すると考えられる。このため、視線ベクトル51の変化量が一定の角度(図6では5度)以上変化した場合には、第2のモードを終了する処理が実行される。
【0093】
この場合、ユーザ1が他の方向(アイテム)を注視することが、ユーザ1のモード切替入力となる。また、視線ベクトル51の変化量を判定するための角度が、第2のモードの終了条件となる。このように、第2のモードの終了条件は、視線ベクトル51の変化量に関する条件を含む。なお、視線ベクトル51の変化量を判定するための角度等の終了条件は限定されない。
【0094】
また例えば、ステップ107として、ユーザ1の頭部の回転速度(角速度等)が判定されてもよい。例えばユーザ1の頭部回転角速度が一定の速度よりも大きい場合には、第2のモードを終了する処理が実行されてもよい。これにより、例えばユーザ1が注視していたアイテム43aに興味を失った場合等には、すぐに第2のモードを解除することが可能となる。また例えばユーザ1が頭部2を左右に大きく振った場合に第2のモードが終了されてもよい。この場合、ユーザ1の頭部の回転速度がモード切替入力となり、回転速度を判定するための角速度等が第2のモードの終了条件となる。このように、第2のモードの終了条件は、ユーザ1の頭部2の回転速度に関する条件を含む。
【0095】
また例えば、ステップ107として、ユーザ1の眼の動作(眼動作)が判定されてもよい。例えばユーザ1が一定の期間以上眼を閉じている場合等には、第2のモードを終了する処理が実行されてもよい。これにより、容易に第2のモードを解除することが可能となる。この場合、ユーザ1が眼を閉じる動作がモード切替入力となり、眼を閉じる動作を判定するための期間が第2のモードの終了条件となる。このように、第2のモードの終了条件は、ユーザ1の眼動作に関する条件を含む。
【0096】
また例えば、ステップ107として、ユーザ1によるボタン等を用いた操作入力の有無が判定されてもよい。すなわち、ユーザ1が第2のモードを終了するための入力を実行したか否かが判定されてもよい。これにより、確実に第2のモードを終了することが可能となる。このように、第2のモードの終了条件は、ユーザによる操作入力の有無に関する条件を含む。この他、第2のモードの終了条件は限定されず、適宜設定されてよい。
【0097】
図6に戻り、視線ベクトル51が第2のモードの開始時から5度以上変化していないと判定された場合、すなわち、第2のモードの終了条件が満たされていないと判定された場合(ステップ107のNo)、視線ベクトル51を補正する処理が実行される(ステップ108)。
【0098】
図6に示す例では、視線ベクトル51を補正する処理として、ステップ105で記憶された基準回転位置と、現在の回転位置との差分に応じて、視線ベクトル51を偏向する処理が実行される。すなわち、第2のモードが開始されたタイミングからのユーザ1の頭部2の回転角度に応じて、視線ベクトル51の回転角度が設定される。
【0099】
また視線ベクトル51を補正する処理は、例えば現在の視線ベクトル51を補正する処理である。すなわち、ステップ108では、直前に実行されたステップ101で検出された視線ベクトル51を補正する処理が実行される。以下では、視線ベクトル51を補正する処理について具体的に説明する。
【0100】
図8は、視線ベクトル51の補正に用いられる頭部2の回転方向を示す模式図である。図8には、ユーザ1が正面方向を向いている場合を基準として、水平方向(左右方向)及び垂直方向(上下方向)の頭部2の回転方向55a及び55bが模式的に図示されている。本実施形態では、視線ベクトル51の補正に用いられる頭部2の回転角度についての最大調整範囲が設けられる。最大調整範囲は、例えば基準回転位置からの角度範囲として設定される。本実施形態では、最大調整範囲は、第2の範囲に相当する。
【0101】
一般に、人間があるポイントを見ながら頭部2を回転させることが可能な範囲は、上下方向の回転に比べ左右方向の回転の方が広い。例えばこのような特性に応じて、最大調整範囲が設定される。例えば水平方向の回転方向55aの最大調整範囲は、基準回転位置を中心に±7度に設定される。また例えば垂直方向の回転方向55bの最大調整範囲は、基準回転位置を中心に±3度に設定される。
【0102】
図9は、視線ベクトル51の最大回転範囲の一例を示す模式図である。図9Aは、視線ベクトル51の水平方向における最大回転範囲56aを示す模式図であり、図9Bは、視線ベクトル51の垂直方向における最大回転範囲56bを示す模式図である。また実線の矢印は、現在の視線ベクトル51である。
【0103】
視線ベクトル51の最大回転範囲とは、視線ベクトル51が補正される最大の回転範囲である。図9A及び図9Bに示す例では、水平方向及び垂直方向における最大回転範囲56a及び56bがともに±2度に設定される。
【0104】
表示制御部23(視線方向調整部25)は、この最大回転範囲56内で、頭部2の回転角度に応じて視線ベクトル51の回転角度が設定される。このように、表示制御部23は、ユーザ1の頭部2の回転角度に応じて、最大回転範囲56に収まるように視線ベクトル51の回転角度を設定する。本実施形態では、最大回転範囲56は、第1の範囲に相当する。
【0105】
例えば視線ベクトル51の回転角度は、頭部2の回転角度に比例するように設定される。例えば、図9Aにおいて、頭部2の回転に関する水平方向における最大調整範囲57a(図中の点線)が±7度であるとする。この場合、例えば頭部2の回転角度が水平方向に0度から7度に回転する時、視線ベクトル51の回転角度(調整量)は、0度から2度に比例変化する。
【0106】
また図9Bにおいて、頭部2の回転に関する垂直方向における最大調整範囲57b(図中の点線)が±3度であるとする。この場合、例えば頭部2の回転角度が水平方向に0度から3度に回転する時、視線ベクトル51の回転角度(調整量)は、0度から2度に比例変化する。このように、視線ベクトル51及び頭部2の各回転角度の比例係数は、回転方向に応じて異なるように設定される。
【0107】
なお頭部2の最大調整範囲57に対して、不感領域が設定されてもよい。例えば頭部2の回転角度が十分に小さい場合には、視線ベクトル51の補正を実行しない等の処理が実行される。例えばこのような設定が可能である。
【0108】
また、ユーザ1の頭部2の水平方向の回転角度が±7度の範囲を超えたとする。この場合、視線ベクトル51の回転角度は、視線ベクトル51の最大回転範囲56aの最大値±2度で制限される。すなわち、水平方向に±7度の範囲を超えた分の回転角度は、視線ベクトル51の補正に反映されない。垂直方向についても同様に、±3度の範囲を超えた場合には、最大回転範囲56bの最大値±2度で視線ベクトル51の回転角度が制限される。
【0109】
このように、表示制御部23は、ユーザ1の頭部2の回転角度が最大調整範囲57を超えた場合に、視線ベクトル51の回転角度を最大回転範囲56の最大角度に設定する。これにより、例えば、ユーザ1が無理な姿勢で視線ベクトル51の補正を行うといったことを防止することが可能である。
【0110】
ユーザ1の頭部2の最大調整範囲57を設定する方法は限定されない。例えば、頭部2の最大調整範囲57は、コンテンツの進行状況やユーザ1の姿勢等に応じて動的に設定されてもよい。
【0111】
例えば頭部2の最大調整範囲57は、第2のモードが実行されたタイミングでのユーザ1の頭部2の姿勢に基づいて設定されてもよい。例えばユーザ1が図7に示すような棚等のコンテンツ画像27に対して頭部2を左右のどちらかに回転させて斜めに注視しているといった状況が考えられる。この場合、頭部2が水平方向に回転しているため、体の正面を向くように頭部2を回転させることは、その反対に回転させるよりも容易である。
【0112】
第2のモードにおいて、このような頭部2の姿勢(基準回転位置)が検出された場合、正面を向くように回転させる方向の最大回転範囲56を大きく設定し、その反対方向の最大回転範囲56を小さく設定するといった処理が実行されてもよい。すなわち、最大回転範囲56は、基準回転位置に対して非対称に設定される。これにより、頭部2を容易に回転させることが可能な方向に対して、視線ベクトル51を細かく調整するといったことが可能となる。
【0113】
また例えば、頭部2の最大調整範囲57は、注視オブジェクト41の候補となる候補オブジェクト42の密集度に基づいて設定されてもよい。例えば図7に示すように、候補オブジェクト42(アイテム43)が多数存在するような画面では、視線ベクトル51の詳細な調整が可能となるように、最大調整範囲57が大きく設定される。これにより、細かい選択操作を容易に実行することが可能となる。
【0114】
また例えば、頭部2の最大調整範囲57は、視線ベクトル51の推定精度に基づいて設定されてもよい。例えば推定精度が低い場合には、最大調整範囲57を大きく設定し、推定精度が高い場合には、最大調整範囲を小さく設定する。これにより、推定精度に応じた適正な感度で選択操作を行うことが可能である。例えばこのような設定が可能である。
【0115】
また例えば、頭部2の最大調整範囲57は、視線ベクトル51の較正データに基づいて設定されてもよい。視線ベクトル51の較正データとは、例えば、HMD100を装着したユーザ1の視線ベクトル51のキャリブレーションを行った際のデータである。較正データには、例えばキャリブレーション時の眼球の姿勢等が記録される。
【0116】
例えば、較正データに記録された眼球の姿勢の範囲をこえた状態で推定される視線ベクトル51は、推定精度が低くなる場合がある。例えば頭部2の最大調整範囲57は、あるポイントを見ながら頭部2を回転させた場合の眼球の姿勢が、較正データにおける眼球の姿勢の範囲を超えないように、適宜設定される。これにより、推定精度を維持したまま、視線ベクトル51を調整することが可能となる。
【0117】
また、視線ベクトル51の最大回転範囲56を設定する方法は限定されない。例えば、頭部2の最大調整範囲57と同様に、最大回転範囲56が、コンテンツの進行状況やユーザ1の姿勢等に応じて動的に設定されてもよい。
【0118】
例えば、視線ベクトル51の最大回転範囲56が、候補オブジェクト42の密集度に基づいて設定されてもよい。例えば候補オブジェクト42が密集している場合には、詳細な調整が可能となるように、最大回転範囲56が小さく設定される。また候補オブジェクト42がまばらである場合には、最大回転範囲56が大きく設定される。
【0119】
また例えば、視線ベクトル51の最大回転範囲56は、視線ベクトル51の推定精度に基づいて設定されてもよい。最大回転範囲56は、例えば推定精度が低い場合には、最大調整範囲57が大きく設定され、推定精度が高い場合には、最大調整範囲57が小さく設定される。これにより、推定精度に応じた適正な感度で選択操作を行うことが可能である。例えばこのような設定が可能である。
【0120】
図6に戻り、ステップ108で視線ベクトル51が補正されると、表示制御部23(画像処理部26)では、補正された視線ベクトル51に基づいて注視位置Pが補正される。そして補正された注視位置Pに応じたポインタ画像31やハイライト画像32が生成され、ディスプレイ15に表示される。このように、表示制御部23は、第2のモードが実行された場合に、ユーザ1の頭部2の回転に応じて注視位置Pが補正されたガイド画像30を表示するようディスプレイ15を制御する。例えばハイライト画像32が表示されることで、ユーザ1は、所望のアイテム43が選択されたことを視覚することが可能である。
【0121】
なお、ステップ107において、視線ベクトル51が第2のモードの開始時から5度以上変化していると判定された場合、すなわち、第2のモードの終了条件が満たされていると判定された場合(ステップ107のYes)、モード切替部24により、第2のモードがOFFに切り替えられ、第1のモードが開始される。第2のモードがOFFに切り替えられると、ステップ101以降の処理が再度実行される。
【0122】
図10は、視線ベクトル51を補正する処理の他の一例を示す模式図である。図10に示す例では、視線ベクトル51がユーザ1の頭部2の回転方向に連続的に回転するように、視線ベクトル51が補正される。
【0123】
図10A図10Bには、5×5に配列された25個の仮想オブジェクト40(立方体)が図示されている。これらの仮想オブジェクト40の内、中央の仮想オブジェクト40dの左隣りの仮想オブジェクト40eが、ユーザ1が実際に注視している仮想オブジェクト40である。すなわち、ユーザ1の実際の視線方向を表す実視線ベクトル50(図中の点線の矢印)は、仮想オブジェクト40eに向けられている。
【0124】
図10Aには、第1のモードにおいて、仮想オブジェクト40eを見ているユーザ1が模式的に図示されている。なおHMD100により推定された視線ベクトル51(図中の実線の矢印)は、中央の仮想オブジェクト40dに向けられている。このため注視位置Pは中央の仮想オブジェクト40d上で検出され、仮想オブジェクト40dが注視オブジェクト41として選択されている。
【0125】
このように、隣接する仮想オブジェクト40が配置された状態では、ユーザ1が実際に注視している仮想オブジェクト40を絞り込むことが可能である。すなわち、視線ベクトル51の補正によりユーザ1が選択する可能性のある選択対象の候補を予め予測することが可能である。第1のモードでは、例えば画像処理部26により、現在の視線ベクトル51を所定の角度範囲で変化させた時に含まれる候補領域(図中の円)が算出される。所定の角度範囲は、例えば視線ベクトル51の推定精度等に応じて適宜設定される。
【0126】
図10Bに示すように、第2のモードが実行されたタイミングで、選択対象の候補が絞り込まれる。例えば表示制御部23(画像処理部26)により、図10Aで算出された候補領域に含まれる仮想オブジェクト40が、選択対象の候補となるオブジェクト群として検出される。図10Bに示す例では、中央の仮想オブジェクト40dを囲む9つの仮想オブジェクト40が選択対象の候補となる。
【0127】
また第2のモードが実行されると、ユーザが頭部2を回転するヘッドジェスチャーの回転方向が検出される。そして、頭部2の回転方向に向けて視線ベクトル51が連続的に回転するように、すなわち視線ベクトル51が慣性的に移動するように、視線ベクトル51が補正される。図10Bに示す例では、例えばユーザ1の頭部2が図中の左方向に回転される。この場合、表示制御部23は、左方向にずれるように視線ベクトル51を角度変化させ続ける。なお、この処理では、視線ベクトル51の回転角度は、設定されていない。
【0128】
また視線ベクトル51の移動に伴い、注視位置Pも左方向に連続的に移動することになる。つまり、ユーザ1のヘッドジェスチャーは、注視位置Pの移動方向を指定するジェスチャーであると言える。このように、表示制御部23は、ユーザ1の頭部2の回転角度に係らず、ユーザ1の頭部2の回転方向に視線ベクトル51を連続的に回転させることで注視位置を連続的に移動する。
【0129】
連続的に移動する注視位置Pは、選択対象となるオブジェクト群に向けて進行する。例えば、図10Cでは、注視位置Pは、仮想オブジェクト40dの左隣りの仮想オブジェクト40eに到達する。この結果、ユーザ1が実際に見ている仮想オブジェクト40eが、注視オブジェクト41として選択される。すなわち、視線ベクトル51を角度変化させて最初にヒットした仮想オブジェクト40に、選択が切り替えられる。
【0130】
なお選択が切り替わった時点で、視線ベクトル51の回転(注視位置Pの移動)は停止される。このように、図10では、頭部2の回転方向と同じ方向に注視位置Pを動かして、選択対象の候補に対して注視位置Pを吸着させる吸着動作が実行されるとも言える。
【0131】
例えば注視オブジェクト41に切り替わった仮想オブジェクト40eはハイライト画像32(ガイド画像30)として表示される。すなわち、表示制御部23は、連続的に移動する注視位置Pに応じて注視オブジェクト41が切り替わるようにガイド画像30を表示するようディスプレイ15を制御する。
【0132】
このように、注視位置Pを連続的に移動することで、注視位置Pの移動量等を指示することなく、注視位置Pを補正することが可能である。これにより、例えば仮想オブジェクト40等が密集して表示されている場合等に、移動距離の指定等を行わなくても、所望の仮想オブジェクト40を容易に選択することが可能である。また仮想オブジェクト40等が互いに離れて表示されている場合でも、頭部2を回転させて注視位置Pの移動方向を指定するだけで、所望の位置に注視位置Pを誘導することが可能である。
【0133】
図11は、視線ベクトルの補正処理の他の一例を示す模式図である。図11に示す例では、移動する複数の仮想オブジェクト40に対するユーザ1の視線ベクトル51が補正される。
【0134】
図11A図11Bには、図中の右方向に移動する3つの仮想オブジェクト40(飛行機)が模式的に図示されている。これらの仮想オブジェクト40の内、移動方向の先頭(右側)に位置する仮想オブジェクト40fがユーザ1が実際に注視している仮想オブジェクト40である。すなわち、ユーザ1の実際の視線方向を表す実視線ベクトル50(図中の点線の矢印)は、先頭の仮想オブジェクト40fに向けられている。
【0135】
図11Aには、第1のモードにおいて、仮想オブジェクト40fを見ているユーザ1が模式的に図示されている。なおHMD100により推定された視線ベクトル51(図中の実線の矢印)は、先頭の仮想オブジェクト40fの後方の仮想オブジェクト40gに向けられている。このため注視位置Pは、仮想オブジェクト40g上で検出され、仮想オブジェクト40gが注視オブジェクト41として選択されている。
【0136】
例えば、図11Aに示す状態で、第2のモードが開始される。なお第2のモードの実行中も仮想オブジェクト40は移動しているものとする。仮想オブジェクト40fを見ているユーザ1は、仮想オブジェクト40fの移動に連動するように頭部2を右方向に回転させる。この結果、図11Bに示すように、実視線ベクトル50及び視線ベクトル51は、仮想オブジェクト40fの移動に連動して回転する。
【0137】
表示制御部23(画像処理部26)では、各仮想オブジェクト40の移動に連動するユーザ1の頭部2の回転速度が算出される。例えば、ユーザ1の視点位置Oと、注視オブジェクト41(仮想オブジェクト40f)の位置とを結ぶベクトルの回転角速度ω1が算出される。なお、視点位置O及び注視オブジェクト41を結ぶベクトルとしては、例えばコンテンツ情報等に基づいて算出されたベクトルが用いられてもよいし、視線ベクトル51が用いられてもよい。
【0138】
また表示制御部23は、ユーザ1の頭部2の回転角速度ω2を読み込む。例えば、ユーザ1が仮想オブジェクト40fを注視しながら、注視位置Pを補正する方向(図中の右方向)に頭部2を回転させたとする。この場合、頭部2の回転角速度ω2は、仮想オブジェクト40の移動に連動する回転角速度ω1よりも大きくなることが考えられる。
【0139】
例えばω1及びω2に基づいて、仮想オブジェクト40の動きに連動した頭部2の動きをキャンセルした回転角速度(補正角速度R)が算出される。例えば、図11Bに示すように、ω2≧ω1となっている場合、補正角速度Rは以下の式を用いて算出される。
R=ω1-ω2
【0140】
また表示制御部23は、上記式によって算出された補正角速度Rに、サンプリング周期ΔT(sec)等を乗算して、頭部2の角度変位量(R・ΔT)を算出する。この角度変位量は、仮想オブジェクト40の移動に連動した頭部2の回転がキャンセルされた変位量であり、移動する仮想オブジェクト40に対するユーザ1の頭部2の相対的な回転角度であると言える。
【0141】
このように、表示制御部23は、注視オブジェクト41の候補となる仮想オブジェクト40の移動に連動するユーザ1の頭部の回転速度に基づいて、移動する仮想オブジェクト40に対するユーザの頭部の相対的な回転角度を算出する。この相対的な回転角度(角度変位量)により、例えばユーザ1が注視位置P(視線ベクトル51)を補正するために行ったヘッドジェスチャーの回転角度を表すことが可能である。
【0142】
図11Cに示すように、角度変位量R・ΔTを回転角度として、視線ベクトル51が補正される。例えば仮想オブジェクト40gに向けられていた視線ベクトル51が、先頭の仮想オブジェクト40fに向けられるように補正される。この結果、注視位置Pは、仮想オブジェクト40fに移動し、仮想オブジェクト40fが注視オブジェクト41として選択される。このように、選択対象が移動している場合であっても、選択対象の移動に伴うユーザ1の頭部2の回転の影響を取り除くことで、所望の対象を選択することが可能である。
【0143】
図12図14は、視線による選択操作が適用される画面の一例を示す模式図である。図12には、1人称視点のシューティングゲーム(FPS:First Person Shooter)のコンテンツ画像27が模式的に図示されている。図12に示す例では、注視位置Pを示すガイド画像30として、図3Bを参照して説明したスコープ画像33が用いられる。
【0144】
図12に示すスコープ画像33は、照準器34を備える銃型の仮想オブジェクト40である。スコープ画像33は、例えば照準器34の中心が画面(ディスプレイ15)の中心となるように表示される。また、画面の中心が注視位置Pとなるように、コンテンツ画像27の表示が制御される。なおコンテンツ画像27には射撃対象35が図示されている。
【0145】
図12に示す例では、照準器34の中心が、射撃対象35のからずれている。このような状態で、射撃対象35が存在する方向(図中の左上方向)に、ユーザ1が頭部2を回転させるとする。この場合、注視位置Pは射撃対象35に向けて移動するように補正される。この結果、射撃対象35が画面の中心(注視位置P)に移動するようにコンテンツ画像27全体が補正される。このように、射撃対象35に照準器34を向けるエイミング動作を、頭部2の向きで微調整することが可能である。これにより、ゲームコンテンツの操作性を十分に向上することが可能となる。
【0146】
図13には、俯瞰状態での地図コンテンツを示すコンテンツ画像27が図示されている。図13に示すように、地図コンテンツには、例えば多数のランドマーク36を示す仮想オブジェクト40が含まれる。ランドマーク36は、例えばショッピング、レストラン、学校、パーキングといったランドマーク36となる位置・建物の特徴を表すアイコンで表される。これらのランドマーク36の中から、ユーザ1が意図するランドマーク36を選択される。
【0147】
例えば、注視位置Pを示すポインタ画像31が表示される。ポインタ画像31が意図するランドマーク36に重なっていない場合には、ユーザ1は頭部2を回転させることで、注視位置P(ポインタ画像31)を容易に補正することが可能である。これにより、多数のランドマーク36が密集しているような場合であっても、所望のランドマーク36を簡単に選択することが可能である。
【0148】
また例えば、交差点等を路上のポイントを選択したい場合に、隣接するビルやランドマーク36等の他のオブジェクトが選択されてしまうといったことが考えられる。このような場合でも、ユーザ1は地図コンテンツを見ながら、頭部2を適宜回転させることで、注視位置P(ポインタ画像31)を補正することが可能であり、所望のポイントを容易に選択することが可能である。
【0149】
図14には、3Dモデリングを示すコンテンツ画像27が図示されている。図14には、複数の原子37(仮想オブジェクト40)で構成された化学式の3次元モデルが模式的に図示されている。3Dモデリングでは、例えば奥行方向に重なった仮想オブジェクト40が表示される。例えばユーザ1が奥側に表示されている仮想オブジェクト40(原子37)を選択しようとした場合に、注視位置Pが手前の仮想オブジェクト40を選択してしまうといった可能性がある。
【0150】
このような場合、ユーザ1は、例えば奥側の仮想オブジェクト40が見えている方向に頭部2を回転させることで、奥側の仮想オブジェクト40に向けて注視位置P(ポインタ画像31)を調整することが可能である。このように、選択対象が立体的に表示されている場合であっても、所望の対象を容易に選択することが可能である。
【0151】
図15は、第2のモードにおける画面の表示例を示す模式図である。図15の左側の図は、第1のモードが実行されている場合にディスプレイ15に表示される画面の一例であり、注視位置Pを補正しないモードでの表示例である。なお図15の左側の図には、図12を参照して説明したゲームのコンテンツ画像27の一部が示されている。
【0152】
図15の中央の図は、第2のモードが実行されている場合にディスプレイ15に表示される画面の一例である。中央の図に示すように、例えば第2のモードが実行され、注視位置Pを補正する操作が開始された場合には、画面全体が拡大(ズームイン)される。このように、ズームインした視点を表示することで、例えば、注視位置Pとユーザ1が実際に注視している仮想オブジェクト40(射撃対象35)との位置関係を詳細に観察することが可能となる。これにより、例えば、頭部2の回転を用いた注視位置Pの補正処理を精度よく実行することが可能となる。
【0153】
図15の右側の図は、第2のモードが実行されている場合にディスプレイ15に表示される画面の他の一例である。右側の図に示す例では、第2のモードが実行されて場合に、照準器34の内側の色が、第1のモードとは異なる色に切り替えられる。これにより、第2のモードが開始されたことを明示的に示すことが可能となる。この結果、例えば第2のモードが開始されていない状態で、注視位置Pを移動するためのジェスチャーが実行されるといった事態を十分に回避することが可能である。
【0154】
なお、図15に示す例に限定されず、第2のモードが実行されていることを表す表示の切り替え等が適宜実行されてよい。例えば、第2のモードが開始された場合に、ポインタ画像31の色、サイズ、デザイン等が変更されてもよい。また例えば、第2のモードが開始された場合に、ハイライト画像32の色を切り替える、あるいはハイライト画像32を点滅させる等の処理が実行されてもよい。
【0155】
上記では、注視位置P(視線ベクトル51)を補正するためのジェスチャーとして、ヘッドジェスチャーを例に説明した。これに限定されず、例えばHMD100を装着したユーザ1が行うことが可能な任意のジェスチャーが検出され、そのジェスチャーに関するジェスチャー情報に基づいて、注視位置P等を補正する処理が実行されてもよい。
【0156】
図16は、ユーザ1のボディジェスチャーの一例を示す模式図である。例えばジェスチャー情報として、ユーザ1が上半身4を傾けるボディジェスチャーに関する情報が用いられてもよい。図16には、ユーザ1が上半身4を傾けるボディジェスチャーが模式的に図示されている。
【0157】
図16の左側の図は、ユーザ1が上半身4を左右に傾けるボディジェスチャーの一例である。例えば上半身4が左に傾けられると、視線ベクトル51(注視位置P)が左側に調整される。また例えば、上半身4が右に傾けられると、視線ベクトル51(注視位置P)が右側に調整される。図16の右側の図は、ユーザ1が上半身4を前後に傾けるボディジェスチャーの一例である。例えば上半身4が後ろに傾けられると、視線ベクトル51(注視位置P)が上側に調整される。また例えば、上半身4が前に傾けられると、視線ベクトル51(注視位置P)が下側に調整される。
【0158】
このように、上半身4の前後左右の傾きに応じて、視線ベクトル51を上下左右に補正することが可能である。なお、視線ベクトル51の回転角度等の調整量は、上半身4の傾きの大きさ等に応じて適宜設定されてよい。
【0159】
このようなボディジェスチャーは、例えばHMD100に搭載された動作センサ13により検出される。あるいは、HMD100を装着したユーザ1を外側から撮影するカメラ等を用いて、ボディジェスチャーが検出されてもよい。この場合、外側に設けられたカメラは、第2のセンサとして機能する。
【0160】
図17は、ユーザ1のハンドジェスチャーの一例を示す模式図である。例えばジェスチャー情報として、ユーザ1が手5を動かすハンドジェスチャーに関する情報が用いられてもよい。図17には、ユーザ1が手5を左右及び上下に振るハンドジェスチャーが模式的に図示されている。
【0161】
図17の左側の図は、ユーザ1が手5を左右に振るハンドジェスチャーの一例である。ユーザ1は例えば手のひらを垂直に構えた状態で、肘または手首等を左右に振るジェスチャーを行う。例えばユーザ1の手5が右に振られた場合、視線ベクトル51(注視位置P)が右側に調整され、左に振られた場合、視線ベクトル51(注視位置P)が左側に調整される。
【0162】
図17の右側の図は、ユーザ1が手5を上下に振るハンドジェスチャーの一例である。ユーザ1は例えば手のひらを水平に構えた状態で、肘または手首等を上下に振るジェスチャーを行う。例えばユーザ1の手5が上に振られた場合、視線ベクトル51(注視位置P)が上側に調整され、下に振られた場合、視線ベクトル51(注視位置P)が下側に調整される。
【0163】
このように、ユーザ1の手5の上下左右の動きに応じて、視線ベクトル51を上下左右に補正することが可能である。なお、視線ベクトル51の回転角度等の調整量は、手5のふり幅等に応じて適宜設定されてよい。このようなボディジェスチャーは、例えばHMD100を装着したユーザ1を外側から撮影するカメラ等を用いて検出される。あるいは、ユーザ1が手5にするゲームコントローラ等の動きに基づいて、ユーザ1が手5を動かすハンドジェスチャーが検出されてもよい。
【0164】
以上、本実施形態に係るコントローラ20では、ユーザ1の眼球の位置姿勢情報が取得され、眼球の位置姿勢情報に基づいて視線ベクトル51が推定される。この視線ベクトル51に基づいた注視状態を示すガイド画像30がディスプレイ15に表示される。またガイド画像30に関するモードを切り替えるモード切替入力に応じて、眼球の位置姿勢情報をガイド画像30に反映する第1のモードと、眼球の位置姿勢情報とは異なるジェスチャー情報に基づいて注視状態を補正する第2のモードとが切り替えられる。これにより、視線を用いた選択操作の操作性を向上することが可能となる。
【0165】
図18は、比較例として挙げる視線を用いた選択操作を説明するための模式図である。図18の左側に示すように、ユーザ1が奥側の仮想オブジェクト40を見ている状態で、システムにより検出された注視点60が手前側の仮想オブジェクト40を選択してしまうといったことがあり得る。この場合、ユーザ1が本来選択しようとしている奥側の仮想オブジェクト40が選択されなくなる。
【0166】
例えばユーザ1は、奥側の仮想オブジェクト40を注視したまま、注視点60を移動しようとして頭部を左右に振る等の動作を行うことが考えられる。この場合、頭部を左右に動かしても、ユーザ1の本来の注視点はほとんど移動せず、また誤差傾向もほとんど変化しない。このため、頭部を左右に振る動作を行っても、システムにより検出された注視点60は、ほとんど移動せず、また仮想オブジェクト40の選択状態も変化しない。
【0167】
また例えば、図18の右側に示すように、ユーザ1が実際に見ている注視点を意図的にずらすことで、システム側の注視点60を移動させるといった方法が考えられる。この場合、選択したい仮想オブジェクト40から離れた場所を意図的に注視しながら、選択操作を行う必要がある。一方で、注視点60を調整する調整量を確認することも必要であり、選択操作そのものが困難になる可能性がある。このように、視線方向や注視点等が補正できない場合には、選択操作が難しくなるシーン等が存在する。
【0168】
また注視方向や注視点等を補正する代わりに、仮想オブジェクト40自身を移動させて、ユーザに視覚しやすくするといった方法も考えられる。この場合、例えばユーザ1の注視点に応じて仮想オブジェクト40が移動するため、選択操作は容易となる。一方で、オブジェクトの配置を変更することが不自然となるコンテンツ等では、仮想オブジェクト40を動かすことで、コンテンツ自身の品質を劣化させてしまう可能性がある。
【0169】
本実施形態では、推定された視線ベクトル51に基づいた注視位置Pや注視オブジェクト41等の注視状態を示すガイド画像30が生成される。またユーザのジェスチャー情報に基づいて、ガイド画像30によって示される注視状態を補正する第2のモードが実行される。これにより、ユーザ1は、選択操作の途中で、所望の対象が選択されるように、注視位置P等を容易に調整することが可能である。
【0170】
このため、例えば誤った仮想オブジェクト40が選択されている場合には、本来選択したい仮想オブジェクト40が存在する方向に頭部2を回転させるといった動作を行うことで、容易に選択を切り替えることが可能である。また注視位置Pをジェスチャーにより調整することが可能であるため、注視位置Pが移動するように視線方向を別の方向に向けるといった操作は不要となる。また選択対象を移動させるといった処理が無くても、所望の対象を容易に選択することが可能である。
【0171】
本実施形態では、視線による選択操作の付加操作として、頭部2のジェスチャーを利用している。これにより、注視位置Pを補正する処理を選択操作の一部として自然に実行することが可能となり、視線を用いた選択操作の操作性を大幅に向上することが可能となる。また本実施形態では、視線を用いて素早く移動できる選択操作と頭部2による高分解能な選択操作とが両立した構成となっている。
【0172】
このように、高分解能な選択操作が可能であることから、例えば狭い場所にオブジェクトが集まっている状態や、オブジェクトそのものが小さい状態、あるいはオブジェクトが遠くに配置されている状態においても、視線を用いた選択操作を適用することが可能となる。これにより、視線による選択操作の応用範囲が広がり、新規なユーザインタフェース等を提供することが可能となる。
【0173】
また、視線検出精度が高くない場合であっても、本技術を用いることで、所望のオブジェクトを容易に選択可能なシステム等を構築することが可能である。これにより、例えば、視線検出用カメラに要するコストを抑制することや、キャリブレーションを省略して誰でもすぐに利用できるシステム等を実現することが可能となる。
【0174】
<その他の実施形態>
本技術は、以上説明した実施形態に限定されず、他の種々の実施形態を実現することができる。
【0175】
図19は、他の実施形態に係る注視位置Pの補正処理の一例を示す模式図である。図19に示す例では、注視位置Pの奥行方向(前後方向)の位置が補正される。図19では、透過性のある仮想オブジェクト40hの後方に、他の仮想オブジェクト40が配置される。またユーザ1は透過性のある仮想オブジェクト40hの後方に配置された仮想オブジェクト40iを選択しようとしているものとする。
【0176】
注視位置Pの奥行方向の位置は、例えば左右の眼球の視線ベクトル51が交差する位置(輻輳)を検出することで検出可能である。なお、注視対象の位置がユーザ1から離れるほど、左右の視線ベクトル51は平行な状態に近づき、各視線ベクトル51が交差する位置の推定精度が低下する場合がある。また左右の視線ベクトル51を合成して単一の視線ベクトル51を算出する方法では、手前の仮想オブジェクト40を選択しているのか、奥側の仮想オブジェクト40を選択しているのかを判定することが難しい場合がある。
【0177】
例えば図19では、透過性のある手前の仮想オブジェクト40hが選択される。この場合、ユーザ1の所定のジェスチャーに応じて、注視位置Pを補正する処理(第2のモード)が実行される。所定のジェスチャーは、例えば上半身を前後に動かすボディジャスチャー(図16の右側の図参照)である。この場合、例えばユーザ1が前に上半身を傾けると、注視位置Pが奥側に補正され、後ろに上半身を傾けると、注視位置Pが手前側に補正される。
【0178】
またユーザ1のハンドジェスチャーに応じて、注視位置Pの奥行方向が調整されてもよい。例えばユーザ1が手5を前方に移動させる動作に応じて、注視位置Pが奥側に補正され、手5を手前に移動させる動作に応じて、注視位置Pが手前側に補正される。あるいは、ユーザ1がゲームコントローラ等を用いている場合には、ゲームコントローラの移動に基づいて、ユーザ1の手5の動作が検出されてもよい。
【0179】
このように、ユーザ1のジェスチャーに応じて、注視位置Pの奥行方向を補正することで、仮想オブジェクト40hの後方の仮想オブジェクト40iを選択することが可能となる。例えばこのような処理が実行されてもよい。
【0180】
図6のステップ108を参照して説明したように、上記では、視線ベクトル51を補正するための回転角度(補正量)が、ループ処理の度に算出された。例えばこの補正量が第1のモードにおける視線ベクトル51の算出等に用いられてもよい。
【0181】
例えば第2のモードでは、表示制御部により、視線ベクトル51に基づいた注視位置P等を補正するための補正量が算出される。例えば、視線ベクトル51を補正する際の回転角度が、補正量に相当する。この補正量は、HMD100で推定される視線ベクトル51と、ユーザ1の実際の視線方向とのずれ量であるとも言える。この補正量が、視線ベクトル51のキャリブレーション用のデータとして用いられる。
【0182】
表示制御部23は、この補正量に基づいて、第1のモードでの視線ベクトル51を算出する。例えば第1のモードの実行中に推定された視線ベクトル51が、補正量(回転角度)に応じて適宜回転される。これにより、第1のモードにおける視線ベクトル51の推定精度が向上し、高精度な注視位置Pを示すガイド画像30等を表示することが可能となる。すなわち、表示制御部23は、第2のモードにおいて注視状態を補正する補正量を算出し、補正量に基づいて第1のモードでのガイド画像30の表示を実行する
【0183】
このように、第2のモードで算出された補正量、すなわち視線ベクトル51の調整量を、視線キャリブレーション用のデータとして利用することで、装置を使用している最中に、視線検出精度を向上していくことが可能である。これにより、例えば視線を用いた選択操作の精度を大幅に向上することが可能となる。
【0184】
図20及び図21は、注視対象の選択処理の一例を示す模式図である。以下では、ディスプレイに表示される1以上の仮想オブジェクト40から、ユーザ1が注視していると推定される仮想オブジェクト40(注視対象)を選択する処理について説明する。なお、注視対象は、実際にユーザ1が注視しているオブジェクトであるとは限らない。以下では、注視対象として選択された仮想オブジェクト40を、選択オブジェクト45と記載する。
【0185】
図20に示す選択処理では、視線ベクトル51と仮想オブジェクト40とが重なるように視線ベクトル51を操作することで注視対象が選択される。この場合、ユーザ1は、視線ベクトル51の注視位置Pを示すポインタ画像31を、自身が見ている場所(注視対象)に合わせる操作を最後まで行うことで、注視対象を選択することが可能である。この選択処理は、例えば、図4等を参照して説明した第2のモードにおける視線ベクトル51の補正処理に基づいて実行される。
【0186】
図20の上側の図では、ユーザ1の視線ベクトル51が仮想オブジェクト40jの近傍に向けられている。この視線ベクトル51に基づく注視位置Pは、ポインタ画像31として表示される。ここで、ユーザ1が実際に見ているオブジェクトが、注視位置Pの右側にある仮想オブジェクト40kであったとする。この場合、図20の下側の図に示すように、ユーザ1はヘッドジェスチャーを行うことでポインタ画像31(視線ベクトル51)を補正することが可能である。
【0187】
例えば、ユーザ1が頭部を右側に回転させると、ポインタ画像31が右側に移動し、仮想オブジェクト40kに接近する。そしてポインタ画像31が仮想オブジェクト40kと重なるタイミングで、仮想オブジェクト40kが注視対象として選択される。このとき、仮想オブジェクト40kは、注視位置Pを含む注視オブジェクトであるとともに、注視対象として選択された選択オブジェクト45となる。
【0188】
このように図20に示す例では、ポインタ画像31が示す位置は、視線ベクトル51の注視位置Pと一致している。従って、ユーザ1は、ポインタ画像31を見ながらその位置を適宜補正することで、実際に注視している仮想オブジェクト40を注視対象として選択することが可能となる。
【0189】
図21に示す選択処理では、視線ベクトル51の近傍に存在する仮想オブジェクト40が自動的に注視対象として選択される。これは、複数の仮想オブジェクト40の中から、視線ベクトル51を利用して近いものを自動選択するオブジェクトスナップを実行する処理である。具体的には、表示制御部23により、ユーザ1の注視対象となる1以上の仮想オブジェクト40のうち、視線ベクトル51に対する離間度が最も小さい仮想オブジェクト40が、注視対象として選択される。
【0190】
視線ベクトル51に対する離間度とは、仮想オブジェクト40が視線ベクトル51から離れている度合を表すことが可能なパラメータである。例えばユーザ1が中心視野でとらえることが可能な仮想オブジェクト40は、周辺視野に含まれる仮想オブジェクト40と比べて離間度が小さいと言える。
【0191】
典型的には、視線ベクトル51に対する離間度として、視線ベクトル51と仮想オブジェクト40の位置ベクトル52との角度間隔θが用いられる。ここで、仮想オブジェクト40の位置ベクトル52とは、例えば視線ベクトル51の原点Oと仮想オブジェクト40の中心点とを結ぶベクトルである。すなわち、視線ベクトル51及び位置ベクトル52は、共通の原点Oを有する3次元ベクトルであるといえる。角度間隔θは、例えば視線ベクトル51と位置ベクトル52とを含む平面において各ベクトルのなす角度である。角度間隔θを用いることで、視線ベクトル51からのずれ具合を適正に表すことが可能である。
【0192】
なお、離間度として角度間隔以外のパラメータが用いられてもよい。例えば仮想オブジェクト40の中心点と視線ベクトル51との距離が離間度として用いられてもよい。また例えば、各仮想オブジェクト40が平面上に表示される場合等には、当該平面における注視位置Pと各仮想オブジェクト40との距離が離間度として用いられてもよい。
【0193】
図21に示す選択処理では、表示制御部23により、角度間隔θが最も小さい仮想オブジェクト40が、注視対象として選択される。すなわち、視線ベクトル51に最も近い仮想オブジェクト40(角度間隔θが最小となる仮想オブジェクト40)を自動的に選択するオブジェクトスナップが実行される。
【0194】
例えば視線ベクトル51との角度間隔θが所定の閾値以下となる仮想オブジェクト40が存在するか否かが判定される。このような仮想オブジェクト40が存在した場合、その中で最も角度間隔θが小さい仮想オブジェクト40が注視対象(選択オブジェクト45)として選択される。この時、視線ベクトル51の注視位置Pを表していたポインタ画像31等が、選択オブジェクト45に重畳して表示される。また、角度間隔θが所定の閾値以下となる仮想オブジェクト40が存在しない場合、注視対象の選択処理は実行されず、ポインタ画像31は注視位置Pに表示される。角度間隔θを判定する閾値は、例えば視線ベクトル51の検出精度や、仮想オブジェクト40の密集度等に応じて適宜設定される。
【0195】
図21の上側の図では、視線ベクトル51と仮想オブジェクト40jの位置ベクトル52との角度間隔θjが、他の仮想オブジェクト40との角度間隔と比べて最も小さい状態であるとする。なお、視線ベクトル51は、仮想オブジェクト40jと交差していないものとする。例えば、角度間隔θjが、所定の閾値以下となったタイミングで、仮想オブジェクト40jは、選択オブジェクト45として選択され、ポインタ画像31は、注視位置Pから仮想オブジェクト40jに重畳して表示される。これにより、ユーザ1に仮想オブジェクト40jが選択されたことを知らせることが可能である。なお、仮想オブジェクト40jが選択されたからといって、視線ベクトル51が補正されるわけではなない。
【0196】
ここで、ユーザ1が実際に見ているオブジェクトが、注視位置Pの右側にある仮想オブジェクト40kであったとする。この場合、図21の下側の図に示すように、ユーザ1はヘッドジェスチャーを行うことで視線ベクトル51を補正し、仮想オブジェクト40kを選択することが可能である。この選択処理は、例えば、図4等を参照して説明した第2のモードにおける視線ベクトル51の補正処理に基づいて実行される。
【0197】
例えば、ユーザ1が頭部を右側に回転させると、視線ベクトル51(注視位置P)が右側に移動して仮想オブジェクト40kに接近する。この過程で、例えば視線ベクトル51と仮想オブジェクト40jとの角度間隔θjが閾値よりも大きくなると、ポインタ画像31は、注視位置Pに表示される。さらに注視位置Pが仮想オブジェクト40kに接近し、仮想オブジェクト40kとの角度間隔θkが閾値よりも小さくなると、仮想オブジェクト40kが、選択オブジェクト45として選択される。この時、ポインタ画像31は、注視位置Pから移動して仮想オブジェクト40kに重畳して表示される。なお、仮想オブジェクト40j及び40kの間隔が狭い場合等には、仮想オブジェクト40jの選択が仮想オブジェクト40kの選択に直接切り替えられる場合もある。これにより、ユーザ1は実際に見ている仮想オブジェクト40kを注視対象として選択することが可能となる。
【0198】
このように図21では、複数の仮想オブジェクト40(オブジェクト群)において、視線ベクトル51に最近傍のオブジェクトを選択状態にする処理が実行される。これにより、短い時間で対象を容易に選択することが可能となる。またユーザ1の注視状態を判別し、頭部の回転分が視線ベクトルの調整に反映される。従って、ヘッドジェスチャーを利用して選択オブジェクト45を変更することが可能である。これにより、視線ベクトル51の補正を利用した適正な選択操作が可能となり、所望とするオブジェクトを高速に選択するといったことが可能となる。また、後述するように、仮想オブジェクト40の自動選択で算出される補正量(角度間隔等)を、キャリブレーションデータとして利用することも可能である。
【0199】
なお、図21を参照して説明した仮想オブジェクト40を自動的に選択する処理は、視線ベクトル51の補正処理(第2のモード)を行わない場合にも適用可能である。すなわち、視線ベクトル51の補正をしないHMD等に、上記したオブジェクトスナップの機能が実装されてもよい。
【0200】
上記では、装置が推定した視線ベクトル51の注視位置Pを、ポインタ画像31等のガイド画像30を用いて明示的に表示する場合について説明した。例えばポインタ画像31が表示されない場合や、ポインタ画像31が示す位置が注視位置Pと一致しない場合(例えば仮想オブジェクト40の自動選択が実行される場合等)には、視線ベクトル51の向きや注視位置Pが不明になることが考えられる。この場合、ヘッドジェスチャー等を行う際の手がかりが得られなくなり、視線ベクトル51の調整が難しくなる恐れがある。
【0201】
このように、注視位置Pが明示的に表示されない状況であっても、例えば仮想オブジェクト40を利用して、視線ベクトル51の調整を補助する表示を行うことが可能である。以下では、仮想オブジェクト40の表示方法について具体的に説明する。
【0202】
図22は、注視対象となる仮想オブジェクト40の表示例を示す模式図である。図22A図22Cには、互いに異なる表示処理によって表示された仮想オブジェクト40が模式的に図示されている。これらユーザ1の注視対象となる1以上の仮想オブジェクト40が含まれる画像は、視線ベクトル51に基づいた注視状態を示すガイド画像30として機能する。なお図22に示す各表示処理は、例えば視線ベクトル51を補正する第2のモード(注視状態)で実行され、第2のモードがOFFになると終了する処理である。
【0203】
図22では、表示制御部23により、1以上の仮想オブジェクト40の視線ベクトル51に対する離間度に応じて、各オブジェクトの表示が変化するようにガイド画像30を表示するようディスプレイ15が制御される。すなわち、離間度に応じて表示パラメータ等がそれぞれ変更された仮想オブジェクト40を含む画像(ガイド画像30)が生成され、ディスプレイ15に表示される。ここでは、視線ベクトル51に対する離間度として、図21を参照して説明した角度間隔θが用いられる。なお、角度間隔θ以外の離間度を用いた処理が実行されてもよい。
【0204】
このように、視線ベクトル51から離れている度合(角度間隔θ等)を指標とすることで、ユーザ1の視線の変化に合わせて各仮想オブジェクト40の表示を変化させることが可能となる。これにより、視線ベクトル51や注視位置Pを明示しない場合であっても、視線ベクトル51がどこに向いているのか、あるいは注視位置Pがどこにあるのかといった情報をユーザ1に知らせることが可能となる。
【0205】
図22Aに示す表示処理では、角度間隔θに応じて各仮想オブジェクト40の色が設定される。例えば、視線ベクトル51から離れており角度間隔θが大きい仮想オブジェクト40を薄く表示し、視線ベクトル51に近く角度間隔θが小さい仮想オブジェクト40は濃く表示するといった処理が実行される。従って、この場合、視線ベクトル51の変化に応じて、各仮想オブジェクト40の濃淡が変化する。これは、視線ベクトル51に近いほど、オブジェクトを強調表示する処理であるといえる。
【0206】
図22Aでは、視線ベクトル51を基準とする所定の角度範囲70に含まれる仮想オブジェクト40を対象として実行される。角度範囲70は、典型的には、視線ベクトル51を中心軸とする円錐型の範囲として設定される。円錐型の角度範囲70は、例えば視線ベクトル51の原点Oを通り視線ベクトル51と角度φで交差する直線を、視線ベクトル51を軸に回転して得られる範囲である。図22Aでは、視線ベクトル51の注視位置Pを中心とする円形の範囲により、角度範囲70が模式的に図示されている。
【0207】
なお、図22Aに示す例では、注視対象として選択された仮想オブジェクト40jが識別可能となるように、点線で囲まれて表示されている。この時、視線ベクトル51や注視位置Pを示す画像は表示されていない。例えばユーザ1が仮想オブジェクト40j以外のオブジェクトを選択するようにヘッドジェスチャー等を行う場合には、角度範囲70における各仮想オブジェクト40の濃淡の変化が手がかりとなる。
【0208】
図23は、角度間隔θに応じた表示処理について説明するための模式図である。図23には、図22Aに示す角度範囲70に含まれる仮想オブジェクト40j、40k、40lと、各仮想オブジェクト40の視線ベクトル51に対する角度間隔θj、θk、θlが図示されている。ここでは、仮想オブジェクト40j、40k、40lの表示を変化させる処理について説明する。
【0209】
まず、視線ベクトル51の原点Oから、処理対象となる仮想オブジェクト40j、40k、40lの中心を結ぶベクトル(位置ベクトル52)がそれぞれ算出される。そして、これらの位置ベクトル52と視線ベクトル51とのなす角度間隔(θj、θk、θl)が算出される。オブジェクト毎の表現をこれらの角度間隔に比例変化させることで、強調表現が実現される。
【0210】
例えば、各仮想オブジェクト40の色を8bit階調のRGBで指定するとする。この時、仮想オブジェクト40の色を以下のように設定する。
RGB=(255,Xg,255)
ここでXgは、緑色(G)の階調値を表すパラメータである。この場合、赤色(R)と青色(B)は、固定値(255)であり、緑色(G)のみが変数となる。
【0211】
変数Xgは、上記した角度間隔θj、θk、θlのいずれかが代入されるθと、変化の傾きCを用いて、以下のように設定される。
Xg=θ・C
変化の傾きCは、例えば仮想オブジェクト40の密集度等に応じて適宜設定される。またXgが、階調の最大値(255)でクランプするように調整される。
【0212】
この方法を用いた場合、仮想オブジェクト40の色は視線ベクトル51からの角度が小さいほどマゼンタ色が濃くなり、遠いものほど白色になる。なお図23では、マゼンタ色の濃淡がグレースケールの濃淡として模式的に図示されている。例えば、仮想オブジェクト40jは、角度間隔θjが最小であり、視線ベクトル51に最も近いため、濃いマゼンタ色で表示される。一方で、仮想オブジェクト40lは、角度間隔θlが最大であり、視線ベクトル51から最も離れているため、白色に近い色で表示される。
【0213】
このように、視線ベクトル51の近傍のオブジェクトの表現を視線ベクトル51からの距離(角度間隔θ)に比例して変化させることで、例えば視線ベクトル51を補正する際に、どの方向に調整しているのかといった情報を、ユーザ1にフィードバックすることが可能となる。この結果、ユーザ1は、周辺視野でとらえた各オブジェクトの色等を参考に、頭部を動かす方向等を決定することが可能となる。
【0214】
仮想オブジェクト40の色に変えて、仮想オブジェクト40のサイズ、形状、動作等が変化するような表示処理が実行されてもよい。例えば角度間隔θが小さいほど、仮想オブジェクト40が目立つように、サイズを大きくする、形状を複雑にするといった処理が実行される。また仮想オブジェクト40が所定の動作(回転動作、振動動作、キャラクター動作等)を行う場合には、角度間隔θが小さいほど動作量を増加させることも可能である。このように、角度間隔θに応じて、1以上の仮想オブジェクト40の色、サイズ、形状、動作の少なくとも1つを変化させる処理が実行されてよい。この他、仮想オブジェクト40を強調して表示する方法等は限定されない。
【0215】
図22Bに示す表示処理では、1以上の仮想オブジェクト40のうち、視線ベクトル51を基準とする所定の角度範囲70に含まれない仮想オブジェクト40に対して、ぼかし処理が実行される。この表示処理は、視線ベクトル51に近いオブジェクトを鮮明に表示し、視線ベクトル51から遠いオブジェクトをぼかして表示する処理であるといえる。
【0216】
例えば、角度範囲70に含まれる仮想オブジェクト40j、40k、40lは、そのままの状態で表示される。一方で、角度範囲70に含まれない他の仮想オブジェクト40には、例えばぼかしフィルター等を用いたぼかし処理が実行される。なお、図22Bに示す例では、注視対象として選択された仮想オブジェクト40jにポインタ画像31が重畳して表示され、注視対象が識別可能となっている。例えばユーザ1が視線を動かすと、角度範囲70が移動してぼかし処理が実行される範囲が変化する。この角度範囲70の移動が、視線ベクトル51を補正する際の手がかりとなる。
【0217】
例えば図22Aに示すように、仮想オブジェクト40ごとに表示を変化させる方法では。視線ベクトル51の近傍に存在するオブジェクトが少ないと、手がかりになりにくい場合がある。これに対し、角度範囲70に含まれない仮想オブジェクト40の表示をぼかすことで、視線ベクトル51の向き等を容易に把握することが可能となる。なお、ぼかし処理に変えて、角度範囲70に含まれない仮想オブジェクト40を非表示にする非表示処理が実行されてもよい。この場合、角度範囲70に含まれる仮想オブジェクト40だけが表示される。これにより、視線ベクトル51の調整を補助することが可能である。
【0218】
図22Cに示す表示処理では、図22A及び図22Bに示す表示処理を組み合わせた処理が実行される。すなわち、角度範囲70に含まれる仮想オブジェクト40は、それぞれの角度間隔θに応じた色やサイズで表示され、角度範囲70に含まれない仮想オブジェクト40には、ぼかし処理等が実行される。これにより、視線ベクトル51を補正するために頭部を動かす方向等を容易に決定することが可能となる。
【0219】
なお、図22及び図23を参照して説明した仮想オブジェクト40の表示処理は、視線ベクトル51の補正処理(第2のモード)を行わない場合にも適用可能である。すなわち、視線ベクトル51の補正をしないHMD等において、視線ベクトル51との離間度に応じて仮想オブジェクト40を表示する処理等が実行されてもよい。
【0220】
図24は、他の実施形態に係るHMDの機能的な構成例を示すブロック図である。HMD200は、例えば図2を参照して説明したHMD100のコントローラ20(制御部)に較正処理部28を加えた構成となっている。また、HMD200には、通信部16を介して操作部29が接続される。以下では、HMD100と同様の構成については、その説明を省略する。
【0221】
較正処理部28は、視線検出部21によって推定された視線ベクトル51を較正するキャリブレーション処理を実行する。また較正処理部28は、キャリブレーション用のデータ(以下では、較正データと記載する)を生成する。後述するように、HMD200では、コンテンツの動作中に較正データが生成される。この較正データを用いて、キャリブレーション処理が実行され、視線ベクトル51が逐次較正される。従ってHMD200(較正処理部28)では、コンテンツを実行している間にキャリブレーション処理を行うランニングキャリブレーションが可能である。
【0222】
キャリブレーション処理は、装置によって検出された視線方向(視線ベクトル51)を、実際の視線方向(実視線ベクトル50)に合わせるように較正する処理である。一般に、視線を用いた入力操作を行う装置では、装置の使用開始時に、キャリブレーションを行うための専用のUI画面を表示してキャリブレーションが行われる。この場合、例えばUI画面に表示された複数の点を見たときの視線方向がそれぞれ検出される。そして、検出された視線方向に対する補正角度が、各点ごとに算出される。
【0223】
補正角度は、装置によって検出された視線方向と、各点を見たときに検出されるべき視線方向(理想的な視線方向等)との角度の差分である。例えば、検出された視線方向を理想的な視線方向に一致させるために必要な回転量が、補正角度として用いられる。補正角度は、典型的には、3次元空間における回転をあらわすクォータニオンとして表される。あるいは、3次元空間の直交軸周りの回転量(ロール、ピッチ、ヨー)等を用いて補正角度を表すことも可能である。
【0224】
較正データには、各点を見たときに検出された視線方向(視線ベクトル51)と、その視線方向に対する補正角度が関連付けられて記録される。これらのデータが、視線方向を較正する際に参照される。例えば、現在の視線方向を較正する場合、較正データから現在の視線方向に近い方向に関連付けられた補正角度が1つ以上選択される。選択された補正角度を、現在の視線方向との近さに応じて加重平均することで、現在の視線方向に対する補正角度が算出される。このように加重平均によって算出された補正角度を用いて、現在の視線方向が較正される。
【0225】
HMD200では、較正処理部28により、上記した較正データがコンテンツの実行中にも生成される。この結果、例えば視線ベクトル51を較正するためのデータ点が増加し、視線ベクトル51の較正制度を大幅に向上することが可能となる。なお視線ベクトル51を較正する方法は限定されず、他の方法が用いられてもよい。
【0226】
操作部29は、ユーザ1の各種の操作を受け付けるコントローラである。操作部29は、例えばユーザ1がコンテンツの実行中に行う決定操作や選択操作等を受け付ける。操作部29としては、例えばボタンやスイッチ等を含む有線方式又は無線方式のリモートコントローラが用いられる。この他、マウスやキーボート等のデバイスが操作部29として用いられてもよい。
【0227】
図25は、他の実施形態に係るHMD200の基本的な動作例を示すフローチャートである。図25に示す処理は、HMD200においてコンテンツの処理と並列に繰り返し実行される処理である。以下では、HMD200で実行される視線ベクトルの補正処理、及び較正データの生成処理について説明する。
【0228】
まず、視線検出部21により視線ベクトル51が検出され、頭部位置姿勢検出部22によりユーザの頭部の位置及び姿勢(回転位置)が検出される(ステップ201)。次に、視線ベクトル51の速度が所定の閾値以下であるか否かが判定される(ステップ202)。例えば、視線ベクトル51の回転速度が算出され、回転速度についての閾値判定が実行される。これにより、例えばユーザ1が視線の静状態(視線がゆっくり移動している、あるいはほとんど静止している状態)と動状態(視線が素早く移動している状態)とが判別される。視線ベクトル51の速度に関する閾値は、例えば人間の特性やコンテンツの種類等に応じて適宜設定されてよい。
【0229】
視線ベクトル51の速度が閾値以下であると判定された場合(ステップ203のYes)、第2のモードがONであるか否かが判定される(ステップ203)。第2のモードがOFFである場合、すなわち第1のモードがONである場合(ステップ203のNo)、タイマーによってカウントされた時間が所定の時間を超えたか否かが判定される(ステップ204)。タイマーは、例えばユーザ1の視線が静状態である時間をカウントする。具体的には、第2のモードがOFFに切り替えられたタイミング(後述するステップ209)から静状態が継続する期間がカウントされる。タイマーに関する閾値(所定の時間)は、例えば人間の特性やコンテンツの種類等に応じて適宜設定されてよい。
【0230】
タイマーの時間が所定の時間を経過した場合(ステップ204のYes)、頭部の基準回転位置が記憶される(ステップ205)。この時、ステップ201で算出された最新の視線ベクトル51も記憶される。基準回転位置及び視線ベクトルが記憶されると、第2のモードがONに設定される(ステップ206)。このように、HMD200では、ユーザ1の視線が静状態である期間が閾値を超えると、第2のモードが開始される。
【0231】
上記したように、第2のモードでは、ヘッドジェスチャーによる視線ベクトル51の補正が可能となる。またHMD200では、第2のモードがONに設定されたタイミングで、仮想オブジェクト40の表示方法が、図22A図22C等を参照して説明した表示方法に切り替えられる。第2のモードが開始されると、ステップ210以降の処理が実行される。なお、タイマーの時間が所定の時間を経過していない場合(ステップ204のNo)、第1のモードのままでステップ210以降の処理が実行される。
【0232】
ステップ203に戻り、第2のモードがONである場合(ステップ203のYes)、視線ベクトル51を補正する処理が実行される(ステップ207)。ここでは、視線ベクトル51を補正する処理として、ステップ205で記憶された基準回転位置と、現在の回転位置との差分に応じて、視線ベクトル51を偏向(回転)する処理が実行される。ステップ207の処理は、例えば図6に示すステップ108で説明した処理と同様の処理である。これにより、ユーザ1のヘッドジェスチャーを用いた視線ベクトル51の補正が可能となる。視線ベクトル51が補正されると、ステップ210以降の処理が実行される。
【0233】
ステップ202に戻り、視線ベクトル51の速度が閾値以上であると判定された場合(ステップ202のNo)、ユーザ1の視線は動状態であるとして、第2のモードをOFFに設定され、第1のモードがONに設定される(ステップ208)。なお、ステップ202が実行された時点ですでに第2のモードがOFFであった場合(第1のモードがONであった場合)は、その状態が維持される。また、ステップ208が実行されるとタイマーがリセットされる(ステップ209)。
【0234】
このように、ユーザ1の視線が動状態である場合には、第2のモードが終了し、静状態の期間をカウントしていたタイマーがリセットされる。なお、タイマーはリセット後、再度カウントを開始する。従って視線ベクトル51の速度が閾値よりも早い間は、タイマーはループが実行されるたびにリセットされることになる。タイマーがリセットされると、ステップ210以降の処理が実行される。
【0235】
ステップ210では、視線ベクトル51に最も近い仮想オブジェクト40が選択される。ここでは、図21を参照して説明した仮想オブジェクト40を自動的に選択する処理(オブジェクトスナップ)が実行される。例えば、ステップ210が実行されたタイミングでの視線ベクトル51が記録される。この視線ベクトル51との角度間隔θが所定の閾値以下となる仮想オブジェクト40が検出され、そのうち角度間隔θが最小となる仮想オブジェクト40が注視対象(選択オブジェクト45)として選択される。なお、選択オブジェクト45には、そのオブジェクトが選択されたことをユーザ1に知らせるために、ポインタ画像31等が重畳して表示される。
【0236】
選択オブジェクト45が選択されると、較正処理部28により較正データを生成する処理(ステップ211~ステップ210)が開始される。まず、選択オブジェクト45に対する決定操作が検出されたか否かが判定される(ステップ211)。ここで、決定操作とは、例えばユーザ1が操作部29を介して入力する操作であり、ユーザ1が選択を決定する際に行う操作である。以下、図21を参照して、決定操作について説明する。
【0237】
例えば、図21の上側の図に示すように、視線ベクトル51の近傍にある仮想オブジェクト40jが、自動的に選択されたとする。この時、仮想オブジェクト40jは、ユーザ1が実際に選択したいオブジェクトではなかったとすると、ユーザ1は、操作部29を介した決定操作を行わないものと考えられる。この場合、仮想オブジェクト40jは、自動選択により選択オブジェクト45として選択されているが、その選択を決定する決定操作は行われないことになる。
【0238】
また例えば、図21の下側の図に示すように、ユーザ1が視線ベクトル51を補正して、実際に選択したい(実際に見ている)仮想オブジェクト40kが選択されたとする。この時、ユーザ1は、所望のオブジェクトが選択されたとして決定操作を行うものと考えられる。この場合、仮想オブジェクト40kは、自動選択により選択オブジェクト45として選択されており、ユーザ1によりその選択を決定する決定操作が行われることになる。
【0239】
このように、決定操作は、ユーザ1が実際に注視している仮想オブジェクト40と、選択処理により選択された選択オブジェクト45とが一致した場合に、その選択を決定する操作であるといえる。決定操作の有無を参照することで、例えばユーザ1の視線が実際に向けられている仮想オブジェクト40を判別するとともに、ユーザ1の実注視位置を適正に検出することが可能となる。
【0240】
選択オブジェクト45に対する決定操作が検出されなかった場合(ステップ211のNo)、ステップ201以降の処理が再度実行される。なお、ステップ210でいずれのオブジェクトも選択されなかった場合にも、ステップ201に戻り次のループが開始される。一方で、選択オブジェクト45に対する決定操作が検出された場合(ステップ211のNo)、選択オブジェクト45の位置ベクトル52が算出される(ステップ212)。例えば、視線ベクトル51の原点Oから、選択オブジェクト45の中心点までのベクトルが、選択オブジェクト45の位置ベクトル52として算出される。
【0241】
位置ベクトル52が算出されると、元の視線ベクトル51と位置ベクトル52との角度の差分が算出され、較正データとして登録される(ステップ213)。ここで、元の視線ベクトル51とは、ヘッドジェスチャー等を用いた補正を受けていない視線ベクトル51である。例えば元の視線ベクトル51と位置ベクトル52との間の回転量(クォータニオン等)が角度の差分として算出される。そして、元の視線ベクトル51と、それに対応する角度の差分とが関連付けられて較正データに登録される。これにより、較正データのデータ点を逐次追加することが可能となる。
【0242】
例えば、ステップ207が実行され視線ベクトル51が補正された場合は、補正前の視線ベクトル51(ステップ205で記憶された視線ベクトル51)が元の視線ベクトル51となる。この場合、補正によってずれた視線ベクトル51ではなく、補正が開始されたタイミングでの視線ベクトル51と、選択オブジェクト45の位置ベクトル52と角度の差分が算出される。これにより、装置が実際に検出した視線ベクトル51を補正することが可能となる。
【0243】
また、ステップ207が実行されず視線ベクトル51が補正されていない場合は、ステップ210が実行されたタイミングでの視線ベクトル51が元の視線ベクトル51となる。すなわち、ヘッドジェスチャー等による視線ベクトル51の補正がない場合には、自動選択に用いられた視線ベクトル51と、選択オブジェクト45の位置ベクトル52との角度の差分が算出される。このように選択オブジェクト45の自動選択が実行される場合には、ユーザ1による決定操作をトリガーとして、較正データを新たに追加することが可能である。
【0244】
また、ステップ207で実行された視線ベクトル51の補正処理に用いた補正量(例えば頭部回転に応じて調整された角度等)が、較正データに追加されてもよい。これにより、ユーザ1が実際に補正した角度を、較正データとして用いることが可能となり、較正精度を向上することが可能である。なお、仮想オブジェクト40の自動選択等が実行されない場合であっても、視線ベクトル51の補正量を較正データとして用いること可能である。
【0245】
較正データが登録されると、ステップ201に戻り、次のループ処理が実行される。またステップ201では、視線ベクトル51を検出する際に、新たに追加された較正データを利用することが可能となる。このように、HMD200では、コンテンツの実行中も較正データが順次蓄積されるため、視線ベクトル51の推定精度を十分に高めることが可能となる。
【0246】
一般に、視線を利用したコンテンツでは、視線の検出結果と、実際にユーザが見ている方向とのズレを補正する必要が生じる場合がある。このような場合、コンテンツの操作中に較正を行うことが理想的である。一方で、キャリブレーション専用のUI画面とは異なり、コンテンツの実行中に表示される画面には、注視対象となるオブジェクトが複数存在するため、ユーザが実際にどこを見ているかを検出することが困難である事が多い。このため、較正が必要となった場合には、例えばキャリブレーション専用のUI画面に一時的に切り替えて、再度キャリブレーションを行うといった方法が考えられる。しかしながら、この方法では、コンテンツの操作を中断することになり、利便性を損なう可能性がある。
【0247】
また、注視対象となるオブジェクトが複数存在している場合、ユーザが実際にどれを見ているか検出するには、オブジェクト同士が視線検出のバラつき範囲よりも離れて位置している必要がある。しかしながら、視線精度のバラつき範囲は個人によって異なり、限定された空間内においては、オブジェクト同士の距離を十分離す事が困難な状況がある。また、コンテンツの画面で、オブジェクトの間隔を広げようとすると、予めキャリブレーション等を意図したレイアウトを用意する必要や、動的にオブジェクトを引き離す仕組みを導入する必要があり、適用可能なシーンが限定されていた。
【0248】
HMD200では、仮想オブジェクト40に対する自動選択が実行される。また自動選択による選択結果は、ユーザ1がヘッドジェスチャー等により視線ベクトル51を補正することで適宜変更することが可能である(図21等参照)。これにより、例えば仮想オブジェクト40が密集していた場合であっても、ユーザ1は所望の仮想オブジェクト40を容易に選択することが可能である。
【0249】
さらに、視線ベクトル51を補正する際には、仮想オブジェクト40は視線ベクトル51から離れている度合に応じて表示される(図22参照)。これによりユーザ1に対して視線ベクトル51を補正するべき方向を知らせることが可能となり、自動選択の変更操作等を容易に行うことが可能となる。
【0250】
またHMD200では、ユーザ1による決定操作を検出して、仮想オブジェクト40(選択オブジェクト45)の選択が決定される。この決定操作により、ユーザ1が実際にどの仮想オブジェクト40を見ているかが判別される。これにより、較正データとして利用可能なデータ(ユーザ1の実視線ベクトル50と視線ベクトル51との角度の差分等)を新たに生成することが可能となる。
【0251】
このように、HMD200では、選択対象のオブジェクト群の位置を意図的に変更する事なく、ユーザ1は必要な時に視線ベクトル51の補正を行って所望の仮想オブジェクト40を容易に選択することが可能である。また視線を利用するコンテンツの実行中であっても、仮想オブジェクト40を選択した時の角度の差分等を較正データとして蓄積していくことで、視線ベクトル51の検出精度を段階的に向上させていく事が可能である。
【0252】
上記では、内向きカメラを用いてユーザの眼球の位置姿勢情報(眼球画像)が検出された。これに限定されず、例えば眼電位に基づいて、ユーザの注視点Pが検出されてもよい。一般に人間の眼球は、角膜(瞳孔)側は正に帯電し、その反対の網膜側は負に帯電している。例えばHMDに所定の電位センサ(図示省略)を設けることで、眼球の動きに伴う電位の変化を検出することが可能である。この電位の変化に関する情報(眼球の位置姿勢情報)に基づいて、ユーザの視線ベクトル51及び注視位置Pが検出されてもよい。
【0253】
上記の実施形態では、表示装置を搭載した没入型のHMDについて説明した。本技術に係る視線を用いた選択操作は、没入型のHMDのみならず、任意の表示装置に対して適用可能である。
【0254】
例えば、光学透過型のHMDが用いられてもよい。本開示における光学透過型のHMDは、実世界の三次元空間を測定する外部カメラ等のセンサと視線検出のための内向きカメラとを有し、実オブジェクトの情報を用いて注視位置P等が適宜検出し得る。光学透過型のHMDは、実空間の三次元座標、すなわちグローバル座標系を基準として、あたかも仮想オブジェクトが実空間に存在するかのように重畳し得る。光学透過型のHMDを用いることで、ユーザ1は、例えばAR空間を体験することが可能であり、ユーザ1の注視対象となるオブジェクトは、実空間の実オブジェクトとなる場合がある。このような場合であっても、ユーザ1の視線ベクトル51及びヘッドジェスチャー等を適宜検出することで、注視位置P等を補正することが可能である。
【0255】
また例えば、PC(Personal Computer)のディスプレイやTV等の表示装置を用いて、視線を用いた選択操作が実行されてもよい。この場合、ユーザ1の顔(眼球)を撮影するカメラ等を用いて、PCのディスプレイ等を視聴するユーザ1の視線ベクトル51が推定される。また例えば、同様のカメラ等を用いてユーザ1が頭部を回転させるヘッドジェスチャー等が検出される。これにより、注視位置P等補正することが可能となる。
【0256】
上記ではユーザ1により操作されるHMD100等のコンピュータにより、本技術に係る情報処理方法が実行される場合を説明した。しかしながらユーザ1が操作するコンピュータとネットワーク等を介して通信可能な他のコンピュータとにより、本技術に係る情報処理方法、及びプログラムが実行されてもよい。またユーザ1が操作するコンピュータと、他のコンピュータとが連動して、本技術に係るコンテンツ提供システムが構築されてもよい。
【0257】
すなわち本技術に係る情報処理方法、及びプログラムは、単体のコンピュータにより構成されたコンピュータシステムのみならず、複数のコンピュータが連動して動作するコンピュータシステムにおいても実行可能である。なお本開示において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、すべての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、及び、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれもシステムである。
【0258】
コンピュータシステムによる本技術に係る情報処理方法、及びプログラムの実行は、例えばユーザの眼球の位置姿勢情報の取得、ユーザの視線ベクトルの推定、視線ベクトルに基づいた注視状態を示すガイド画像を表示する表示装置の制御、ユーザのジェスチャー情報の取得、及び第1のモードと第2のモードとの切替等が、単体のコンピュータにより実行される場合、及び各処理が異なるコンピュータにより実行される場合の両方を含む。また所定のコンピュータによる各処理の実行は、当該処理の一部または全部を他のコンピュー
タに実行させその結果を取得することを含む。
【0259】
すなわち本技術に係る情報処理方法及びプログラムは、1つの機能をネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成にも適用することが可能である。
【0260】
以上説明した本技術に係る特徴部分のうち、少なくとも2つの特徴部分を組み合わせることも可能である。すなわち各実施形態で説明した種々の特徴部分は、各実施形態の区別なく、任意に組み合わされてもよい。また上記で記載した種々の効果は、あくまで例示であって限定されるものではなく、また他の効果が発揮されてもよい。
【0261】
本開示において、「同じ」「等しい」「直交」等は、「実質的に同じ」「実質的に等しい」「実質的に直交」等を含む概念とする。例えば「完全に同じ」「完全に等しい」「完全に直交」等を基準とした所定の範囲(例えば±10%の範囲)に含まれる状態も含まれる。
【0262】
なお、本技術は以下のような構成も採ることができる。
(1)第1のセンサからユーザの眼球の位置姿勢情報を取得する眼球情報取得部と、
前記眼球の位置姿勢情報に基づいて前記ユーザの視線ベクトルを推定する視線推定部と、
前記推定された視線ベクトルに基づいた注視状態を示すガイド画像を表示するよう表示装置を制御する表示制御部と、
第2のセンサから前記眼球の位置姿勢情報とは異なる前記ユーザのジェスチャー情報を取得するジェスチャー情報取得部と、
前記ガイド画像に関する前記ユーザのモード切替入力に応じて、前記眼球の位置姿勢情報を前記ガイド画像に反映する第1のモードと、前記ジェスチャー情報に基づいて前記注視状態を補正する第2のモードとを切り替えるモード切替部と
を具備する情報処理装置。
(2)(1)に記載の情報処理装置であって、
前記ガイド画像は、前記注視状態として、前記視線ベクトルに基づく注視位置または前記注視位置を含む注視オブジェクトの少なくとも一方を示す画像であり、
前記表示制御部は、前記第2のモードが実行された場合に、前記ジェスチャー情報に基づいて前記注視位置を補正する
情報処理装置。
(3)(2)に記載の情報処理装置であって、
前記表示制御部は、前記第2のモードが実行された場合に、前記注視位置が補正された前記ガイド画像を表示するよう前記表示装置を制御する
情報処理装置。
(4)(2)又は(3)に記載の情報処理装置であって、
前記表示制御部は、前記ジェスチャー情報に基づいて前記視線ベクトルを補正することで前記注視位置を補正する
情報処理装置。
(5)(2)から(4)のうちいずれか1つに記載の情報処理装置であって、
前記ジェスチャー情報は、前記ユーザが頭部を回転させるヘッドジェスチャーに関する情報を含み、
前記表示制御部は、前記第2のモードが実行された場合に、前記ユーザの頭部の回転に応じて前記注視位置が補正された前記ガイド画像を表示するよう前記表示装置を制御する
情報処理装置。
(6)(5)に記載の情報処理装置であって、
前記表示制御部は、前記ユーザの頭部の回転方向に前記視線ベクトルを回転させる
情報処理装置。
(7)(5)又は(6)に記載の情報処理装置であって、
前記表示制御部は、前記ユーザの頭部の回転角度に応じて、第1の範囲に収まるように前記視線ベクトルの回転角度を設定する
情報処理装置。
(8)(7)に記載の情報処理装置であって、
前記表示制御部は、前記ユーザの頭部の回転角度が第2の範囲を超えた場合に、前記視線ベクトルの回転角度を前記第1の範囲の最大角度に設定する
情報処理装置。
(9)(8)に記載の情報処理装置であって、
前記第2の範囲は、前記視線ベクトルの推定精度、前記視線ベクトルの較正データ、前記注視オブジェクトの候補となる候補オブジェクトの密集度、及び前記第2のモードが実行されたタイミングでの前記ユーザの頭部の姿勢の少なくとも1つに基づいて設定される
情報処理装置。
(10)(7)から(9)のうちいずれか1つに記載の情報処理装置であって、
前記ユーザの頭部の回転角度は、前記第2のモードが実行されたタイミングでの前記ユーザの頭部の回転位置を基準として算出される
情報処理装置。
(11)(5)に記載の情報処理装置であって、
前記表示制御部は、前記ユーザの頭部の回転角度に係らず、前記ユーザの頭部の回転方向に前記視線ベクトルを連続的に回転させることで前記注視位置を連続的に移動する
情報処理装置。
(12)(11)に記載の情報処理装置であって、
前記表示制御部は、連続的に移動する前記注視位置に応じて前記注視オブジェクトが切り替わるように前記ガイド画像を表示するよう前記表示装置を制御する
情報処理装置。
(13)(5)から(12)のうちいずれか1つに記載の情報処理装置であって、
前記表示制御部は、前記注視オブジェクトの候補となる候補オブジェクトの移動に連動する前記ユーザの頭部の回転速度に基づいて、前記移動する候補オブジェクトに対する前記ユーザの頭部の相対的な回転角度を算出する
情報処理装置。
(14)(2)から(13)のうちいずれか1つに記載の情報処理装置であって、
前記モード切替部は、前記第2のモードの開始条件及び終了条件に基づいて前記モード切替入力を判定する
情報処理装置。
(15)(14)に記載の情報処理装置であって、
前記開始条件は、前記注視オブジェクトが注視されている期間に関する条件、前記ユーザによる操作入力の有無に関する条件、前記視線ベクトルの変化量に関する条件のうち少なくとも1つの条件を含む
情報処理装置。
(16)(14)又は(15)に記載の情報処理装置であって、
前記終了条件は、前記ユーザの眼動作に関する条件、前記ユーザの頭部の回転速度に関する条件、前記ユーザによる操作入力の有無に関する条件、前記視線ベクトルの変化量に関する条件のうち少なくとも1つの条件を含む
情報処理装置。
(17)(1)から(16)のうちいずれか1つに記載の情報処理装置であって、
前記ジェスチャー情報は、前記ユーザが上半身を傾けるボディジェスチャー、または前記ユーザが手を動かすハンドジェスチャーの少なくとも一方に関する情報を含む
情報処理装置。
(18)(1)から(17)のうちいずれか1つに記載の情報処理装置であって、
前記表示制御部は、前記第2のモードにおいて前記注視状態を補正する補正量を算出し、前記補正量に基づいて前記第1のモードでの前記ガイド画像の表示を実行する
情報処理装置。
(19)(1)から(18)のうちいずれか1つに記載の情報処理装置であって、
前記表示制御部は、前記ユーザの注視対象となる1以上のオブジェクトのうち、前記視線ベクトルに対する離間度が最も小さい前記オブジェクトを、前記注視対象として選択する
情報処理装置。
(20)(19)に記載の情報処理装置であって、
前記視線ベクトルに対する離間度は、前記視線ベクトルと前記オブジェクトの位置ベクトルとの角度間隔である
情報処理装置。
(21)(1)から(20)のうちいずれか1つに記載の情報処理装置であって、
前記ガイド画像は、前記ユーザの注視対象となる1以上のオブジェクトを含み、
前記表示制御部は、前記1以上のオブジェクトの前記視線ベクトルに対する離間度に応じて、各オブジェクトの表示が変化するように前記ガイド画像を表示するよう前記表示装置を制御する
情報処理装置。
(22)(21)に記載の情報処理装置であって、
前記視線ベクトルに対する離間度は、前記視線ベクトルと前記オブジェクトの位置ベクトルとの角度間隔であり、
前記表示制御部は、前記角度間隔に応じて、前記1以上のオブジェクトの色、サイズ、形状、動作の少なくとも1つを変化させる
情報処理装置。
(23)(21)又は(22)のうちいずれか1つに記載の情報処理装置であって、
前記表示制御部は、前記1以上のオブジェクトのうち、前記視線ベクトルを基準とする所定の角度範囲に含まれない前記オブジェクトに対して、ぼかし処理又は非表示処理の一方を実行する
情報処理装置。
(24)第1のセンサからユーザの眼球の位置姿勢情報を取得し、
前記眼球の位置姿勢情報に基づいて前記ユーザの視線ベクトルを推定し、
前記推定された視線ベクトルに基づいた注視状態を示すガイド画像を表示するよう表示装置を制御し、
第2のセンサから前記眼球の位置姿勢情報とは異なる前記ユーザのジェスチャー情報を取得し、
前記ガイド画像に関する前記ユーザのモード切替入力に応じて、前記眼球の位置姿勢情報を前記ガイド画像に反映する第1のモードと、前記ジェスチャー情報に基づいて前記注視状態を補正する第2のモードとを切り替える
ことをコンピュータシステムが実行する情報処理方法。
(25)第1のセンサからユーザの眼球の位置姿勢情報を取得するステップと、
前記眼球の位置姿勢情報に基づいて前記ユーザの視線ベクトルを推定するステップと、
前記推定された視線ベクトルに基づいた注視状態を示すガイド画像を表示するよう表示装置を制御するステップと、
第2のセンサから前記眼球の位置姿勢情報とは異なる前記ユーザのジェスチャー情報を取得するステップと、
前記ガイド画像に関する前記ユーザのモード切替入力に応じて、前記眼球の位置姿勢情報を前記ガイド画像に反映する第1のモードと、前記ジェスチャー情報に基づいて前記注視状態を補正する第2のモードとを切り替えるステップと
を実行させるプログラムが記録されているコンピュータが読み取り可能な記録媒体。
(26)第1のセンサからユーザの眼球の位置姿勢情報を取得する眼球情報取得部と、
前記眼球の位置姿勢情報に基づいて前記ユーザの視線ベクトルを推定する視線推定部と、
前記推定された視線ベクトルに基づいた注視状態を示すガイド画像を表示するよう表示装置を制御する表示制御部とを具備し、
前記ガイド画像は、前記ユーザの注視対象となる1以上のオブジェクトを含み、
前記表示制御部は、前記1以上のオブジェクトの前記視線ベクトルに対する離間度に応じて、各オブジェクトの表示が変化するように前記ガイド画像を表示するよう前記表示装置を制御する
情報処理装置。
(27)第1のセンサからユーザの眼球の位置姿勢情報を取得する眼球情報取得部と、
前記眼球の位置姿勢情報に基づいて前記ユーザの視線ベクトルを推定する視線推定部と、
前記推定された視線ベクトルに基づいた注視状態を示すガイド画像を表示するよう表示装置を制御する表示制御部とを具備し、
前記表示制御部は、前記ユーザの注視対象となる1以上のオブジェクトのうち、前記視線ベクトルに対する離間度が最も小さい前記オブジェクトを、前記注視対象として選択する
情報処理装置。
【符号の説明】
【0263】
θ…角度間隔
1…ユーザ
2…頭部
15…ディスプレイ
17…記憶部
18…制御プログラム
20…コントローラ
21…視線検出部
22…頭部位置姿勢検出部
23…表示制御部
24…モード切替部
25…視線方向調整部
26…画像処理部
30…ガイド画像
40、40a~40i…仮想オブジェクト
41…注視オブジェクト
42…候補オブジェクト
45…選択オブジェクト
50…実視線ベクトル
51…視線ベクトル
52…位置ベクトル
70…角度範囲
100…HMD
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25