(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-27
(45)【発行日】2024-10-07
(54)【発明の名称】情報処理装置、情報処理装置のシステム、情報処理装置の制御方法、プログラム
(51)【国際特許分類】
G06F 3/0346 20130101AFI20240930BHJP
【FI】
G06F3/0346 422
(21)【出願番号】P 2023032984
(22)【出願日】2023-03-03
【審査請求日】2023-12-20
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100126240
【氏名又は名称】阿部 琢磨
(74)【代理人】
【識別番号】100223941
【氏名又は名称】高橋 佳子
(74)【代理人】
【識別番号】100159695
【氏名又は名称】中辻 七朗
(74)【代理人】
【識別番号】100172476
【氏名又は名称】冨田 一史
(74)【代理人】
【識別番号】100126974
【氏名又は名称】大朋 靖尚
(72)【発明者】
【氏名】賀集 亮太
【審査官】滝谷 亮一
(56)【参考文献】
【文献】国際公開第2009/005150(WO,A1)
【文献】特開平06-326887(JP,A)
【文献】特表2018-507493(JP,A)
【文献】特開2014-132463(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/0346
(57)【特許請求の範囲】
【請求項1】
手で支持して操作する操作手段を介してユーザの入力を受け付ける情報処理装置であって、
前記操作手段の動きに応じて、前記ユーザが指し示す指示位置を制御する制御手段と、
前記ユーザの手指の位置又は姿勢を撮像画像から取得する取得手段とを有し、
前記制御手段は、前記取得手段により取得された前記手指の位置又は姿勢に基づいて、前記操作手段が備える操作部材への操作が行われる前の前記手指の所定の変動があった場合に、前記所定の変動により前記操作手段が動いても、前記指示位置の移動を制限する、
ことを特徴とする情報処理装置。
【請求項2】
前記所定の変動は、前記手指の関節及び指先の少なくとも一方の位置を推定した点である関節点の座標位置の変動である、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記所定の変動は、前記操作手段を装着している指である装着指を含む2本以上の指の前記関節点の前記座標位置が所定の距離以内にあり、且つ前記座標位置の間の距離が小さくなる変動である、
ことを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記制御手段は、前記所定の変動があった場合に、前記所定の変動による前記操作手段の動きの変化量を差引する補正値を設定することで前記指示位置の移動を制限する、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記制御手段は、前記所定の変動が終了した場合、前記補正値を維持しながら、前記指示位置から前記操作手段の動きに応じて前記指示位置が移動するように制御する、
ことを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記制御手段は、前記所定の変動が終了した場合、前記補正値の設定を終了して、前記指示位置から前記操作手段の動きに応じて前記指示位置が移動するように制御する、
ことを特徴とする請求項4に記載の情報処理装置。
【請求項7】
前記制御手段は、表示部に表示する画像を制御する手段を有しており、前記画像から前記指示位置が表示されなくなる場合に、前記補正値の設定を終了して、前記指示位置から前記操作手段の動きに応じて前記指示位置が移動するように制御する、
ことを特徴とする請求項4に記載の情報処理装置。
【請求項8】
前記操作手段は、手、指及び腕のうち少なくともいずれかで支え上げて操作が可能な操作手段である、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項9】
前記操作手段は、ボタンを備えるコントローラであって、
前記所定の変動は前記ボタンを押下する際の手指の位置又は姿勢の変動を含む、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項10】
前記操作手段は、タッチパネルを備えるコントローラであって、
前記所定の変動は前記タッチパネルにタッチする際の手指の位置又は姿勢の変動を含む、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項11】
前記取得手段は、さらに前記操作手段の位置又は姿勢を取得し、
前記制御手段は、前記取得手段により、前記ユーザの手指の変動に因らない前記操作手段の位置又は姿勢の変動を示す変動情報が取得された場合に、前記変動情報に応じる前記指示位置の移動を制限する、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項12】
前記取得手段は、前記操作手段の位置又は姿勢の変動を示す前記変動情報を、前記操作手段からの情報に基づき取得する、
ことを特徴とする請求項11に記載の情報処理装置。
【請求項13】
前記ユーザの手指の変動に因らない前記操作手段の位置又は姿勢の変動は、前記操作手段を装着している指に沿う回転方向の変動である、
ことを特徴とする請求項11に記載の情報処理装置。
【請求項14】
前記所定の変動の大きさが所定の閾値以下である場合は前記指示位置の移動を制限する、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項15】
前記閾値は、ユーザ毎に区別される値を設定可能である、
ことを特徴とする請求項14に記載の情報処理装置。
【請求項16】
手で支持して操作する操作装置を介してユーザの入力を受け付ける情報処理装置のシステムであって、
前記操作装置の動きに応じて、前記ユーザが指し示す指示位置を制御する制御装置と、
前記ユーザの手指の位置又は姿勢を撮像画像から取得する取得装置とを有し、
前記制御装置は、前記取得装置により取得された前記手指の位置又は姿勢に基づいて、前記操作装置が備える操作部材への操作が行われる前の前記手指の所定の変動があった場合に、前記所定の変動により前記操作装置が動いても、前記指示位置の移動を制限する、
ことを特徴とする情報処理装置のシステム。
【請求項17】
コンピュータを請求項1に記載の情報処理装置の各手段として機能させるためのプログラム。
【請求項18】
手で支持して操作する操作装置を介してユーザの入力を受け付ける情報処理装置の制御方法であって、
前記操作装置の動きに応じて、前記ユーザが指し示す指示位置を制御する制御工程と、
前記ユーザの手指の位置又は姿勢を撮像画像から取得する取得工程と
を有し、
前記制御工程は、前記取得工程により取得された前記手指の位置又は姿勢に基づいて、前記操作装置が備える操作部材への操作が行われる前の前記手指の所定の変動があった場合に、前記所定の変動により前記操作装置が動いても、前記指示位置の移動を制限する、
ことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ユーザの操作を受け付ける情報処理装置に関する。
【背景技術】
【0002】
近年、HMD(Head Mounted Display)を利用して、現実空間とは異なる空間をユーザに感じさせるような、複合現実(Mixed Reality:MR)技術や仮想現実(Virtual Reality:VR)技術が知られている。このような技術において、ユーザがHMDを装着したまま、HMDに対する各種制御を行うことが検討されている。検討されている制御方法の1つとして、指や手に装着するタイプのコントローラが挙げられる。この種のコントローラは、コントローラに内蔵している加速度、角速度センサ情報の他、HMDに搭載されている撮像装置によってコントローラが認識されることなどによって、コントローラの位置や姿勢を検知して、表示ディスプレイ上の指示位置を制御している。
【0003】
上述したようなボタンを有するコントローラでのボタン操作時には、ボタンを押下する手指の所作によって指示位置がずれてしまう場合があった。このずれによって、ユーザが意図した指示が入力できないという不都合が生じてしまう。例えば、特許文献1では、3次元ポインティングデバイスによる決定操作の入力がデバイスによって認識されるまでのタイムラグの間に、操作により指示位置がずれてしまうという問題を開示している。この問題を解消するために、特許文献1では、入力操作が行われるよりも前の指示位置を、入力された時点の指示位置として採用することが開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、ボタンを押下する手指の所作のうち、指示位置がずれてしまう懸念がある所作として、指とボタンとを近づける所作や、近づけた後にボタンの押下をする所作や、タッチパネルのスライド(摺動)のような操作をする所作がある。特許文献1では、ボタンを押下する手指の所作のうち、少なくとも操作スイッチの操作が開始されてから、その操作が実際に検出されるまでの遅延期間、すなわち、ボタンの押下からその押下が実際に検出されるまでの期間だけ遡った入力を設定可能である。しかし、指示位置がずれてしまう懸念があるそれぞれの所作の所要時間が異なる場合は、それぞれの所作に合わせてずれを解消することはできない。また、ボタンを押下する所作によって、コントローラ意図せず動いてしまう場合に合わせたずれを解消することはできない。そこで本発明は、ユーザの手指のそれぞれの所作やコントローラの動きに合わせて指示位置のずれを解消可能な情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明は上述した課題に鑑みてなされたものであり、撮像装置から得られる位置情報から、指示位置のずれの起因となる手指の所作やコントローラの動きに応じてずれを解消する。
【発明の効果】
【0007】
本発明によれば、ユーザの手指のユーザの手指のそれぞれの所作やコントローラの動きやコントローラの動きに合わせて指示位置のずれを解消可能な情報処理装置を提供することができる。
【図面の簡単な説明】
【0008】
【
図1】第1の実施形態に係る情報処理システムを示す図である。
【
図2】第1の実施形態に係るHMDなどの内部構成図である。
【
図3】第1の実施形態におけるブレ動きを説明する図である。
【
図4】第1の実施形態におけるブレ動きに伴う誤操作を防止するイメージ図である。
【
図5】第1の実施形態における仮想的な光線(レイ)や指示位置を表す点の変形例を説明する図である。
【
図6】第1の実施形態におけるブレ動きに対して指示位置を維持する方法を説明する図である。
【
図7】第1の実施形態における指示位置の制御フローを示す図である。
【
図8】第1の実施形態におけるブレ動きを判定する処理フローを示した図である。
【
図9】第1の実施形態におけるブレ動き判定条件を説明する図である。
【
図10】第1の実施形態におけるブレ動きを判定する処理フローを示した図である。
【
図11】第1の実施形態におけるブレ動きを判定する処理フローを示した図である。
【
図12】第1の実施形態におけるユーザ毎に閾値を設定する際の処理フローを示した図である。
【
図13】第1の実施形態における指示位置の維持後に本来の指示位置に戻す際の制御フローを示した図である。
【発明を実施するための形態】
【0009】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0010】
(第1の実施形態)
図1を参照して、第1の実施形態に係る情報処理システム1について説明する。情報処理システム1は、HMD100、PC(パーソナルコンピュータ)110、およびコントローラ120を有する。
【0011】
HMD100は、ユーザの頭部に装着される頭部装着型の表示装置(電子機器)である。HMD100には、HMD100がユーザの正面の範囲を撮像した撮像画像と、HMD100の姿勢に応じた形態のCG(コンピュータグラフィックス)などのコンテンツとが合成された合成画像が表示される。
【0012】
PC110は、HMD100を制御する。PC110は、USBケーブルのような有線または、BluetoothやWi-Fi(Wireless Fidelity)のような無線によりHMD100と接続される。PC110は、撮像画像とCGとを合成することにより合成画像を生成して、合成画像をHMD100に送信する。なお、ここでは情報処理装置の一例としてPCについて述べるが情報処理装置はこれに限らない。例えば情報処理装置はスマートフォンやタブレット端末でもよく、PC110の各構成は、HMD100が有していてもよい。
【0013】
コントローラ120は、HMD100の各種制御を行う。PC110が特定の制御モードであれば、コントローラ120に対してユーザの操作が行われると、ユーザの操作に応じてHMD100が制御される。コントローラ120は、
図1に示すように、ユーザの指に装着して支持可能な指輪型(リング型)の形状や手で保持する手持ち型の形状が考えられる。また、コントローラ120は、ディスプレイ表示上で決定操作や選択操作を行う物理的なボタン(121,122,123)を有している。コントローラ120は、Bluetoothによる無線通信をPC110と行う。
【0014】
ユーザは、コントローラ120を動かすことにより、コントローラの動きに応じたディスプレイ上の指示位置の変更が可能である。指示位置は点で表現される場合や、指示位置の点とコントローラを直線(線分)や点線で結び仮想的な光線(レイ)で表現される場合がある。ボタン121,122,123のいずれかを押下することによって、メニューの決定操作や選択操作を行うことができる。なお、コントローラ120の形状は指輪型や手持ち型であるとしたが、指や手、又は腕で支持可能であれば、これに限定されるものではない。また、ボタンは物理的なボタンであるとしたが、トラックパッド、タッチパネル、ホイール、トラックボールのように操作可能であればよく、ボタンの押下の他、スライド操作、フリック操作、タッチオン操作でもよい。
【0015】
なお、コントローラは指、手、又は腕の少なくともいずれかに装着してもよい。
【0016】
<HMDの内部構成>
図2を参照して、HMD100の内部構成を説明する。HMD100は、HMD制御部201、撮像部202、画像表示部203、姿勢センサ部204、不揮発性メモリ205、作業用メモリ206を有する。
【0017】
HMD制御部201は、HMD100の各構成を制御するCPUである。HMD制御部201は、PC110から合成画像(撮像部202がユーザの正面の空間を撮像した撮像画像と、CGとが合成された画像)を取得すると、合成画像を画像表示部203に表示する。なお、HMD制御部201が装置全体を制御する代わりに、複数のハードウェアが処理を分担することで、装置全体を制御してもよい。
【0018】
撮像部202は、2台のカメラ(撮像装置)を含む。2台のカメラは、ユーザが通常時に見ている空間と同様の空間を映像や画像で撮影するために、HMD100の装着時のユーザの左右の眼の位置の近くに配置される。2台のカメラが撮影により被写体(ユーザの正面の範囲)を撮影した画像は、PC110と制御部201に出力される。また、撮像部202における2台のカメラは、ステレオカメラによる測距により、2台のカメラから被写体までの距離の情報を距離情報として取得できる。なお、撮像部202は、映像を撮影して、出力していてもよい。
【0019】
画像表示部203は、合成画像を表示する。画像表示部203は、液晶パネルまたは有機ELパネルなどを有する。ユーザがHMD100を装着している状態では、ユーザのそれぞれの眼の前に有機ELパネルが配される。
【0020】
姿勢センサ部204は、HMD100の姿勢(および位置)情報を取得する。そして、姿勢センサ部204は、HMD100の姿勢(および位置)に対応するような、ユーザ(HMD100を装着したユーザ)の姿勢情報を取得する。姿勢センサ部204は、加速度センサ、角加速度センサ及び地磁気センサから構成される慣性計測装置(IMU;Inertial Measurement Unit)を有する。姿勢センサ部204は、ユーザの姿勢の情報(姿勢情報)を取得する際に用いられ、HMD制御部201はユーザの姿勢の情報(姿勢情報)をPC110に出力する。
【0021】
HMD制御部201は、撮像部202で得られた2台のカメラ画像から、ユーザの手及び指の各関節点の位置又は姿勢の少なくとも一方を推定する。なお、関節点には、指の関節や指先、手の甲(手のひら)、及び腕の特徴となる点が含まれる。各々の関節点は、座標位置を示し、複数の関節点の情報から姿勢を推定できる。手及び手の各関節点の位置又は姿勢の少なくとも一方を推定する方法には、例えば畳み込みニューラルネットワークを用いた機械学習の公知の物体認識やポーズ推定の手法を用いることができる。また手の各関節点の奥行方向の位置情報は、例えば撮像部202で得られた2台のカメラ画像を用いたステレオマッチングによる三角測量により、撮像部202から各関節点までの距離を算出することによって得ることができる。推定された手の各関節点の座標情報は、制御部201からPC110に出力される。
【0022】
不揮発性メモリ205は、電気的に消去・記録可能な不揮発性のメモリであり、制御部101で実行される後述のプログラム等が格納される。
【0023】
揮発性メモリ206は、撮像部202で撮像された画像データを一時的に保持するバッファメモリや、画像表示部203の画像表示用メモリ、制御部201の作業領域等として使用される。
【0024】
<コントローラの内部構成>
図2を参照して、コントローラ120の内部構成を説明する。コントローラ120は、コントローラ制御部221、操作部222、通信部223、コントローラ姿勢センサ部224を有する。
【0025】
コントローラ制御部221は、コントローラ120の各構成を制御するCPUである。なお、コントローラ制御部221が装置全体を制御する代わりに、複数のハードウェアが処理を分担することで、装置全体を制御してもよい。
【0026】
通信部223は、PC110とBluetoothによる無線通信を行う。
【0027】
操作部222は、ボタン121,122,123を含む。操作部222はボタン121,122,123が押されたかどうかを検知して、通信部223を介してPC110に検知情報を送信する。
【0028】
コントローラ姿勢センサ部224は、加速度センサ、角加速度センサ及び地磁気センサから構成される慣性計測装置(IMU;Inertial Measurement Unit)を有する。慣性計測装置は、コントローラ120の位置又は姿勢の少なくとも一方の変化を検出する。検出された位置又は姿勢の少なくとも一方の変化情報は、コントローラ制御部221を介して通信部223からPC110に通信される。
【0029】
<PCの内部構成>
図2を参照して、PC110の内部構成を説明する。PC110は、制御部211、不揮発性メモリ212、揮発性メモリ213、通信部214,記録媒体215を有する。
【0030】
制御部211は、入力された信号や、後述のプログラムに従ってPC110の各部を制御するCPU、すなわち情報処理装置である。なお、制御部211が装置全体を制御する代わりに、複数のハードウェアが処理を分担することで、装置全体を制御してもよい。制御部211は、撮像部202が取得した画像(撮像画像)と、姿勢センサ部204が取得した姿勢情報とをHMD100から受け取る。制御部211は、撮像部202の光学系と画像表示部203の光学系における収差をキャンセルするような画像処理を撮像画像に行う。そして、制御部211は、撮像画像と任意のCGとを合成して、合成画像を生成する。制御部211は、HMD100におけるHMD制御部201に合成画像を送信する。
【0031】
なお、制御部211は、HMD100が取得した情報(距離情報および姿勢情報)に基づき、合成画像におけるCGの位置、向き、および大きさを制御する。例えば、制御部211は、合成画像が表す空間において、現実空間に存在する特定の物体の近くに、CGが示す仮想物体を配置する場合には、特定の物体と撮像部202との距離が近いほど仮想物体(CG)を大きくする。このようにCGの位置、向きおよび大きさを制御することにより、制御部211は、現実空間に配置されていないCGの物体が、あたかも現実空間に配置されているかのような合成画像を生成することができる。
【0032】
また、制御部211は、HMD100の制御部201が推定した情報を受け取る。受け取った情報は揮発性メモリ213に一時的に保存しておく。
【0033】
また制御部211では、通信部214がコントローラ120の通信部223からコントローラ120の位置又は姿勢の少なくとも一方の変化情報を受け取る。制御部211は、合成された画像に対して、コントローラ120の位置又は姿勢の少なくとも一方の変化情報に応じた指示位置を重畳表示する。
【0034】
不揮発性メモリ212は、電気的に消去・記録可能な不揮発性のメモリであり、制御部211で実行される後述のプログラムや、CGなどの情報を格納する。なお、制御部211は、不揮発性メモリ212から読み出すCG(つまり、合成画像の生成に用いるCG)を切り替えることが可能である。
【0035】
揮発性メモリ213は、撮像部202で撮像された画像データや推定された手の各関節点の座標位置の時系列情報を一時的に保持するバッファメモリや、画像表示部203の画像表示用メモリ、制御部211の作業領域等として使用される。
【0036】
また、手関節の推定は、PC110中で行ってもよい。その場合、撮像部202より撮像画像をPC110に出力した後、PC110の制御部211で手の各関節点の位置又は姿勢の少なくとも一方の推定を行い、その情報を利用して画像の加工を行い、HMD100に出力する。
【0037】
<指示位置の制御方法>
次に本実施形態のコントローラを用いた指示位置の制御方法について説明する。
【0038】
まず、本実施形態で課題としているボタン押下時のブレ動きについて説明する。
【0039】
図3(a)は、ユーザがボタンメニュー310に表示されるアイテムを選択しようとしているシーンである。ここでは、ユーザは人差し指313にコントローラ120を装着し、コントローラ120から伸びる仮想的な光線(レイ)312により指示する対象を選択しようとしている。このときユーザは、仮想的な光線(レイ)312がオブジェクトに照射された指示位置311の位置するアイテムAが選択されている状態である。また、親指314はボタンを押下しておらず、いまアイテムaの選択を決定するためのボタンを押下しようと、指を持ち上げている状態である。
【0040】
この状態から、ユーザが親指314を動かすことによってボタン121を押下した場合、
図3(b)で示す状態となる場合がある。このとき、親指314を動かした所作に伴う手振れによってコントローラ120の姿勢が変化し、仮想的な光線(レイ)316がオブジェクトに照射される位置が指示位置311ではなく、指示位置315に変化してしまう。この結果、指示位置315はアイテムAの表示位置からずれてしまい、すなわちユーザが意図していたアイテムAの選択を決定することができないという不都合が生じる。
【0041】
図3(c)はユーザがプルダウンメニュー310に表示される選択肢から1つを選択しようとしているシーンである。ここでは、ユーザは人差し指313にコントローラ120を装着し、コントローラ120から伸びる仮想的な光線(レイ)322により指示する対象を選択しようとしている。このときユーザは、仮想的な光線(レイ)312がオブジェクトに照射された指示位置321の位置するBananaの項目を選択しようとしている状態である。また、親指314はボタンを押下しておらず、いまBananaの項目の選択を決定するためのボタンを押下しようと、指を持ち上げている状態である。
【0042】
この状態から、ユーザが親指314を動かすことによってボタン121を押下した場合、
図3(d)で示す状態となる場合がある。このとき、親指314を動かした所作に伴う手振れによってコントローラ120の姿勢が変化し、仮想的な光線(レイ)324はオブジェクトに照射される位置が指示位置321ではなく、指示位置323に変化してしまう。この結果、指示位置323でボタン121を押下したことになりGrapeの項目が選択されてしまう、すなわちユーザが意図していたBananaの項目ではなく、意図していないGrapeの項目の選択を決定するという不都合が生じる。
【0043】
このような課題に対して本実施形態では、上述のボタン押下時の各指の動きを検知して、検知された場合は表示ディスプレイ上の指示位置を、コントローラの動きに応じず、指示位置の変更を行わないようにする。すなわち、指示位置を維持するように制御する。
図4を用いて指示位置の制御イメージについて説明する。
【0044】
図4は、
図3(a)の状態から
図3(b)の状態に移るときと同様に、
図3(a)の状態からユーザがアイテムAの選択を意図してコントローラ120のボタンの操作を行った場合のシーンを想定している。このとき、ボタンを押下したときにずれが生じて指示位置311と仮想的な光線(レイ)312となるところ、それぞれ指示位置401と仮想的な光線(レイ)402の位置に移動するように制御する。これにより、ブレ動きによる仮想的な光線(レイ)や指示位置のユーザの意図しない移動を防止することができる。
【0045】
なお、
図5を参照して、仮想的な光線(レイ)や指示位置を表す点の変形例を説明する。仮想的な光線(レイ)や指示位置は、
図5(a)のように仮想的な光線(レイ)がコントローラ120と指示位置511のどちらか、又は両方に接触せず、離れていてもよい。また、
図5(b)のように仮想的な光線(レイ)522が線ではなく雫型であってもよい。また、
図5(c)のように仮想的な光線(レイ)532が破線で表されていてもよい。また、
図5(d)のように仮想的な光線(レイ)542がコントローラでなくても、手の一部から出してもよい。また、
図5(e)のように仮想的な光線(レイ)が無く、指示位置551のみでもよい。また、
図5(f)のように指示位置が仮想的な光線(レイ)562のみで表されていてもよい。
【0046】
<具体的な指示位置の維持方法>
次に、本実施形態の指示位置及び仮想的な光線(レイ)の維持方法を、
図6を用いて説明する。すなわち、指示位置及び仮想的な光線(レイ)の移動を制限する方法を説明する。
【0047】
まず、コントローラの初期位置と初期姿勢について説明する。
【0048】
図6(a)は画面601をコントローラ602で、指示しており、ボタンを押下する前の場面を表す図である。コントローラ602は
図1のコントローラ120を簡易的に表したものである。ここは、コントローラ600から伸びる仮想的な光線(レイ)604により指示された位置が指示位置603である。コントローラ602とレイの接点を接続点605とする。
【0049】
また、
図6(a)では、仮想空間のワールドにおいてX,Y,Zの座標系が設定されているものとし、コントローラ602の現在の位置は重心の座標606(x、y、z)であるとする。更に、コントローラ602に姿勢についてはX,Y,Z軸を中心とした回転角度で表現し、例えば姿勢607(θx、θy、θz)とする。そして、このコントローラ602の位置と姿勢から計算される指示位置603の座標は(a、b、c)であるとする。
【0050】
続いて、
図6(a)の状態からユーザの操作によってコントローラの位置や姿勢が変化する場合に、指示位置を維持する方法について説明する。
【0051】
1つ目の維持方法では、
図6(a)の状態から、ユーザがボタンを押下することによって、
図6(b)で示す状態のようにブレを補正する。ユーザがボタンを押下するとき、コントローラ602の位置と姿勢がボタン押下時のブレにより変化する。
図6(b)の例では、説明のため、仮想的な光線(レイ)604とコントローラ602の接続点605を中心にコントローラ602の位置と姿勢が変化する場合を想定している。このとき、コントローラ602の姿勢が
図6(b)のように姿勢607(θx、θy、θz)から、(Δθx、0、0)だけ変化し、姿勢617(θx+Δθx、θy、θz)に変化している。なお、説明のため、θyとθzの変化はないものとする。このコントローラ602の姿勢の変化に伴い、通常であれば指示位置は(a、b、c)から、Y方向への移動が生じ、(a、b’、c)に変化するはずである。しかし、ボタン押下に伴うブレ動きであると判定された場合は、指示位置の座標を(a、b’、c)に変化させない。この場合、コントローラ602の姿勢617(θx+Δθx、θy、θz)に対して(-Δθx、0、0)だけ加算して得られる姿勢607(θx、θy、θz)をコントローラ602の姿勢として指示位置を描画する。なお、このときボタン押下に伴うブレ動きであると判定された場合に、姿勢の変化の前後の値の差分を取ることでΔθxを求める。
【0052】
これにより、指示位置も変化前の(a、b、c)となり、ユーザは一見して指示位置に変化が起きたことを認識しない。すなわち、ユーザの意図していない指示位置の変化を防ぐことができる。
【0053】
2つ目の維持方法では、
図6(a)の状態から、ユーザがボタンを押下することによって、
図6(c)で示す状態のようにブレを補正する。ユーザがボタンを押下するとき、コントローラ602の位置がボタン押下時のブレにより重心の座標606(x、y、z)から、(0、+Δy、0)の変位がかかり、重心の座標626(x、y+Δy、z)に変化するとする。そうすると、その変化に応じて、指示位置603は(a、b、c)から、Y方向への移動が生じ、指示位置623(a、b‘‘、c)に変化するはずである。また、ボタン押下時のブレに伴い、接続点の座標605(p、q、r)も(0、+Δy、0)の変位がかかり、接続点の座標625(p、q+Δy、r)に変化するはずである。しかし、ボタン押下に伴うブレ動きであると判定された場合は、指示位置の座標を623(a、b‘‘、c)、接続点の座標を625(p、q+Δy、r)にそれぞれ変化させない。この場合、接続点625(p、q+Δy、r)に対して、(0、-Δy、0)の変位をかけた位置から指示位置を描画し、ブレ動きが起こる前の指示位置603、仮想的な光線(レイ)604となる。
【0054】
なお、このときボタン押下に伴うブレ動きであると判定された場合に、座標の変化の前後の値の差分を取ることでΔyを求める。
【0055】
これにより、仮想的な光線(レイ)604とコントローラ602の接続点はずれることになるが、ユーザは一見して指示位置については変化が起きたことを認識しない。すなわち、ユーザの意図していない指示位置の変化を防ぐことができる。
【0056】
なお、上述の通り
図6(b)における(-Δθx、0、0)、及び
図6(c)における(0、-Δy、0)で表された補正値を用いて指示位置を維持するよう制御するが、完全に同じ位置に固定し続けることは現実的ではない。つまり、同じ位置になるように指示位置の移動を制限し続けることは現実的ではない。
【0057】
例えばボタン押下に伴うブレ動きとして判定するために必要な時間などにより指示位置がずれる可能性もありうる。そのような判定に必要な時間の内訳には、撮像部202で取得した画像を制御部211に出力するために必要な時間、制御部211でユーザの手及び手の各関節点の位置又は姿勢の少なくとも一方を推定するために必要な時間が挙げられる。さらに、ボタン押下に伴うブレ動きと判定された場合に推定した情報に基づいて指示位置にかける補正値を合成画像に表示する指示位置に対して反映させるために必要な時間が挙げられる。しかし、指示位置が動いていないとユーザが認識できる程度の微細なずれであれば、実質的に指示位置の移動を制限しているとし、以下の説明では、ユーザが同じ位置と認識する程度の微細なずれがある場合も「指示位置の移動を制限する」と表現する。
【0058】
なお、変形例として、
図4(a)ではボタンメニュー310で、Aのアイテムに指示位置311があり、ボタン押下時のブレにより、
図4(b)でAのアイテムを選択する範囲の外側に指示位置401が移動してしまう場合があるとする。この場合、指示位置403で表される同じ位置を維持するのではなく、Aのアイテムが選択される範囲の内側に指示位置が入った状態に維持しておいてもよい。Aのアイテムが選択される範囲の内側に指示位置が入った状態に維持する方法として、Aのアイテムが選択される範囲の境界までしか指示位置を移動させないとしてもよいし、Aのアイテムが選択される範囲の境界まで指示位置の移動速度を低減してもよい。すなわち、指示位置の変動が差引される。移動速度の低減については、上述のとおり、
図6(b)における(-Δθx、0、0)、及び
図6(c)における(0、-Δy、0)で表された補正値よりも小さい補正値を用いて指示位置を制御する。指示位置がある程度動いても、指示位置の移動が遅くなる場合や、指示位置の移動後に修正されるように指示位置を維持する場合も、ユーザの意図しない入力を防ぐことが可能であれば、実質的に指示位置の移動を制限しているとする。以下の説明では、ユーザが同じ入力が結果的に行われる場合も「指示位置の移動を制限する」と表現する。
【0059】
3つ目の維持方法では、
図6(a)の状態から、ユーザがボタンを押下することによって、
図6(d)で示す状態のようにブレを補正する。ユーザがボタンを押下するとき、コントローラ602がボタン押下時のブレにより変化すると、それに応じて、指示位置も変化する。しかし、ボタン押下に伴うブレ動きであると判定された場合は、ボタン押下に伴うブレ動きと判定している時間だけ、ブレ動きが起こる前の指示位置、仮想的な光線(レイ)を固定しておく。また、仮想的な光線(レイ)を通る直線上に接続点635があるように、接続点を補正する。つまり、コントローラの移動による変位を、指示位置と仮想的な光線(レイ)に反映せず、仮想的な光線(レイ)を通る直線と、コントローラ602の接続点が描画される面との交点を接続点として表示するよう制御する。これにより、仮想的な光線(レイ)604とコントローラ602の接続点はずれることになるが、ユーザは一見して指示位置については変化が起きたことを認識しない。すなわち、ユーザの意図していない指示位置の変化を防ぐことができる。
【0060】
なお、上述のとおり、
図6(d)で説明した、指示位置を固定しておくことで指示位置を同じ位置に維持するよう制御するが、ボタンの押下に伴うブレ動きの開始前と完全に同じ位置に固定し続けることは現実的ではない。
【0061】
例えば、ボタン押下に伴うブレ動きであると判定するために必要な時間などにより、ボタン押下に伴うブレ動きの開始前からずれる可能性もありうる。そのような判定に必要な時間の内訳には、撮像部202で取得した画像を制御部211に出力するために必要な時間、制御部211でユーザの手及び手の各関節点の位置又は姿勢の少なくとも一方を推定するために必要な時間が挙げられる。さらに、ボタン押下に伴うブレ動きと判定された場合に合成画像で指示位置が固定されるよう表示を制御するために必要な時間が挙げられる。このような場合でも、ユーザは一見して指示位置については変化が起きたことを認識しない、又はユーザが意図しない指示位置のずれを軽減するような誤差範囲に収まる時間で、指示位置を固定すると判定すればよい。
【0062】
なお、
図6の(b)と(c)を組み合わせて指示位置及び仮想的な光線(レイ)の維持を行ってもよい。
【0063】
以上のように指示位置及びレイを維持、すなわち指示位置の移動を制限することで、ユーザの意図しない入力を防止することができる。
【0064】
<指示位置を維持する際のフローチャート>
次に
図7を用いて、本実施形態の制御フローについて説明する。
図7で示す制御フローはカメラ画像とCGとの合成処理などを行う制御部211内で処理される。
【0065】
本フローチャートの処理は、制御部211が、所定のプログラムをメモリから読み出し、揮発性メモリに展開、実行することで実現される。
【0066】
S701において、制御部211は、通信部223から通信部213に出力されたコントローラ120の位置又は姿勢の少なくとも一方の情報を取得する。
【0067】
次に、S702にて、制御部211は、コントローラ120の位置又は姿勢の少なくとも一方に変化があったかを判定する。制御部211は、変化があったと判定した場合、S703へと進み、変化がなかったと判定した場合には本制御は終了する。
【0068】
次にS703にて、制御部211は、コントローラ120が装着されている指とボタン押下を行う指の各関節点の時系列データを揮発性メモリ213から呼び出す。揮発性メモリ213には現在から過去の一定期間における手の各関節点座標のデータが保存されている。
【0069】
次にS704にて、制御部211は、S703で取得された対象の指の関節点の動きがボタン押下時の特有のブレ動きであるかを判定する。制御部211は、ブレ動きであると判定した場合は、S705に進み、ブレ動きではないと判定した場合は、S706に進む。S706に進んだ場合は、検知されたコントローラ120の位置又は姿勢の少なくとも一方の変化はブレではないので、制御部211は、検知されたコントローラ120の位置又は姿勢の少なくとも一方の変化に基づいて指示位置の計算を行う。
【0070】
次にS705に進んだ場合には、検知されたコントローラ120の位置又は姿勢の少なくとも一方の変化はブレ動きであると判断されているので、制御部211は、指示位置をコントローラ120の動きに合わせて指示位置を動かさないように計算する。すなわち、指示位置を維持するように、又は移動を制限するように計算する。
【0071】
最後にS707にて、制御部211は、S705又はS706での決定に基づいて、表示ディスプレイ上の指示位置を更新する。
【0072】
<S704で行われる判定処理>
次に
図8を用いて、
図7で示したS704で行われる処理について説明する。
【0073】
S801において、制御部211は、ブレ動きフラグをFalseとする初期化を行う。
【0074】
次にS802の処理について、
図9(1)を用いて説明する。
図9(1)は、HMD100の撮像部202により推定される手指の関節及び指先の点を表している。なお、この図では簡易的に親指、人差し指、手首の関節及び指先の点の情報を推定している図としたが、この他の指の関節や指先の点、手の甲(手のひら)の位置又は姿勢、及び腕の位置又は姿勢のうち少なくとも1つを推定してもよい。また、ボタン押下を見るために、例えば親指と人差し指というように2本以上の指を推定してもよい。ユーザがボタンを押下する所作を行おうとしているかを判定するために、ボタン押下を行う指の指先を示す点である第一関節点911がコントローラ120の位置を中心とした近傍領域910内にあるかを判定する。
図9では、ボタン操作を行う指として親指を想定する。S802の判定で、制御部211は、ボタン押下を行う指の第一関節点911が近傍領域910内にないと判定した場合はブレ動き判定フラグをFalseに設定したままで処理を完了する。また、ボタン押下を行う指の第一関節点911が近傍領域910内にあると判定した場合はS803に進む。
【0075】
次にS803の処理について、
図9(1)、
図9(2)を用いて説明する。S803において、制御部211は、ボタン押下を行う指の関節点とコントローラが装着されている指の関節点とが、それぞれ反対方向に動いているかを判定している。この時、各指の関節点とは、例えばボタン押下を行う指の第一関節点911と、コントローラが装着されている指の第一関節点912を用いることが考えられる。ボタンを押下しようとした際に、ユーザの意図とは異なり、コントローラが装着されている指が反射的に動いてしまうと、各関節点911,912は、
図9(2)に示すような移動の軌跡を示す。ここでは例として、座標系920に則したXZ平面での移動軌跡を表している。このように関節点911,912はおおよそ反対方向に動くのでこの動きから、動作ブレを判定することができる。方向の判定には、例えば両者の位置変動の相関係数が逆相関(-1~0)を示しかつ、一定の距離以内(例えば、-0.5~-1など)に収まっているか否かで判定することができる。S803の判定で、制御部211は、関節点911,912が反対方向に動いていないと判定した場合はブレ動き判定フラグをFalseに設定したままで処理を完了し、関節点911,912が反対方向に動いていると判定した場合はS804に進む。
【0076】
S804において、制御部211は、ブレ動き判定フラグをTrueに設定し、処理を完了する。
【0077】
なお、S802とS803の順番はこれに限らず、入れ替わっていてもよい。
【0078】
以上のように、指装着型のコントローラにおけるボタン押下時のブレ動きを、ボタン押下する指の関節点とコントローラが装着された指の関節点との移動軌跡から、判定することでボタン押下時の誤操作を抑制することができる。なお、指装着型のコントローラでなくても、ユーザの意図と異なる所作が発生するという課題がある、手で保持、又は把持するコントローラであってもよい。
【0079】
なお、
図9において、XZ平面での移動軌跡を用いて説明したが、3次元座標を用いて判別してもよく、手のブレ動きに対してその都度、近似的に3次元空間を定義し、どのような面で変位があったのか推定して、その面の中で移動軌跡のプロットを行ってもよい。
【0080】
<コントローラの意図しない回転で指示位置のブレが生じる場合>
また、コントローラが意図しない回転によってブレが生じる場合について認識する要素を追加する際のフローを
図10に示す制御フローで説明する。なお前述の内容と重複する部分については説明を省略する。
【0081】
図10は、
図7で示したS704で行われる処理について示した図である。
【0082】
制御部211は、S802の判定で、ボタン押下を行う指の第一関節点911が近傍領域910内にないと判定した場合は、ブレ動き判定フラグをFalseに設定したままで処理を完了する。また、ボタン押下を行う指の第一関節点911が近傍領域910内にあると判定した場合はS1001に進む。
【0083】
S1001において、制御部211は、コントローラの位置又は姿勢の少なくとも一方の変化が、装着されている指を中心軸とした変化であるかを判定している。この判定で対象とする動きについて、
図9(1)を用いて説明する。S1001の判定では、コントローラが指の上を滑り回転する動き、つまりコントローラ装着指313を中心軸として、コントローラ120が回転するような動きが判定対象の例として挙げられる。このような意図しない回転の動きは、誤って親指314がコントローラ120に接触する場合や、ボタン操作時に親指314がコントローラ120表面で滑る場合が挙げられる。この場合、手の変動、すなわちコントローラ120の装着指の動きに対して、コントローラ120は装着指の変動に因らない変動を示すと考えられる。例えば、指を回転していないのに、指に沿って回転方向に変動する場合が挙げられる。制御部211では、コントローラ120の通信部223から出力されるコントローラ120の位置又は姿勢の少なくとも一方の変動情報と、HMD100の制御部201から出力される手指の位置又は姿勢の少なくとも一方の推定情報とを受け取る。また、制御部211では、これらの情報から手の変動と関連している動きかどうかを判定する。制御部211は、手の変動と関連している動き、つまりコントローラ装着指を中心軸とした変化ではないと判定した場合はS803に進み、手の変動と関連していない動き、つまりコントローラ装着指を中心軸とした変化であると判定した場合はS804に進む。このような回転方向のブレを検知することで、より高精に指示位置のブレを抑制することができる。なお、制御部211は、コントローラ120の位置又は姿勢情報のうち少なくとも一方を、HMD100の撮像部202から取得してもよい。この場合は、撮像部からコントローラ120と関節点911、912の変動を共に得られるため、判定にかかる時間を短縮できるという特有の効果を奏する。なお、制御部211がコントローラ120の位置又は姿勢情報のうち少なくとも一方を、コントローラ120の通信部223から取得する場合、指でコントローラ120が隠れても、制御部211が正確な情報を取得できるという特有の効果を奏する。
【0084】
次にS803の判定では、制御部211は、関節点911,912が反対方向に動いていないと判定した場合は、ブレ動き判定フラグをFalseに設定したままで処理を完了し、関節点911、912が反対方向に動いていると判定した場合はS1002に進む。
【0085】
次にS1002において、制御部211は、コントローラ装着指の関節点の位置変動量が、あらかじめ設定された閾値以下かを判定している。ここでの関節点とは、
図9(1)で示すようなコントローラ装着指313の第1関節点912が想定される。本件で対象としているブレ動きは、ユーザが意図しない無意識の動作であるので、意図的な動きよりも小さい変動である。従って、ブレ動きかどうかを位置変動量に閾値を設けて判定することによって、より高精度に指示位置のブレを抑制することができるという特有の効果を奏する。制御部211は、コントローラ装着指の関節点の位置変動量が、あらかじめ設定された閾値以下であると判定した場合はS804に進む。また、コントローラ装着指の関節点の位置変動量が、あらかじめ設定された閾値以下でないと判定した場合は、ブレ動き判定フラグをFalseに設定したままで処理を完了する。
【0086】
なお、処理の順番はこれに限らず、順番が入れ替わっていてもよい。
【0087】
さらに、
図10で示したコントローラが意図しない回転によってブレが生じる場合について、回転によるブレにも閾値を設ける場合について説明する。
【0088】
次に
図11は、
図7で示したS704で行われる処理について示した図である。
【0089】
S1001において、制御部211は、コントローラの位置又は姿勢の少なくとも一方の変化が、装着されている指を中心軸とした変化であるかつまり、手の変動と関連している動きかどうかを判定する。制御部211は、手の変動と関連している動き、つまりコントローラ装着指を中心軸とした変化ではないと判定した場合はS803に進み、手の変動と関連していない動き、つまりコントローラ装着指を中心軸とした変化であると判定した場合はS1101に進む。
【0090】
S1101において、制御部211は、コントローラの位置又は姿勢の少なくとも一方の変化がコントローラ装着指を中心軸とした変化である場合の位置変動量が、あらかじめ設定された閾値以下かを判定している。本件で対象としているブレ動きは、ユーザが意図しないコントローラのズレである。また回転ズレが大きい変動であるほど、操作者はコントローラの位置に違和感を持ち、自分で位置を修正することが考えられる。従って、ブレ動きの位置変動量に対して、閾値を設けて判定することによって、操作者の指示位置のブレが大きい場合は操作者に位置の修正を促すことが可能となる。制御部211は、コントローラの位置又は姿勢の少なくとも一方の変化がコントローラ装着指を中心軸とした変化である場合の位置変動量があらかじめ設定された閾値以下であると判定した場合はS804に進む。コントローラの位置又は姿勢の少なくとも一方の変化がコントローラ装着指を中心軸とした変化である場合の位置変動量があらかじめ設定された閾値以下でないと判定した場合は、ブレ動き判定フラグをFalseに設定したままで処理を完了する。
【0091】
なお、S1101において、制御部211は、ブレ動き判定フラグをFalseに設定したまま処理を完了するとともに、画面上にリングがずれた旨の表示をして、操作者にコントローラの修正を促すように警告表示をしてもよい。
【0092】
なお、S802、S1001、S803、S1002の処理の順番はこれに限らず、順番が入れ替わっていてもよい。
【0093】
<ユーザに促す閾値の設定方法のフローチャート>
さらに、ユーザ毎に区別された最適化したブレ動きの判定を可能にする要素を追加する際のフローを、
図3と
図12を用いて説明する。
【0094】
本実施形態では、ユーザ固有のボタン操作時のブレ動作の特性を得るために、
図3に示すような表示ディスプレイ上でのコントローラ120を用いた指示位置の変更操作やボタンメニューやプルダウンメニューの選択・決定操作を、ユーザに予め行わせる。この一連の操作で取得されるコントローラ120の位置又は姿勢の少なくとも一方の変化と各指の関節点の位置又は姿勢の少なくとも一方の変化の情報を、PC110の揮発性メモリ213に保存しておき、ブレ動きを判定する各種の判定条件に反映する。具体的には、S802で使用する近傍領域910、S803での指の各関節点の移動方向の判定条件、S1001で用いるコントローラの回転ズレ、S1002で用いる位置変動量の閾値に、それぞれ反映する。このようにユーザ固有のブレ動きを、特定のコントローラ操作を行うことで予め測定しておくことで、ユーザに最適化されたブレ動きの判定及び誤操作の防止が可能となる。また、事前にこのような操作を行ってもらい、ブレの補正があることを知ってもらうことで、このような仕様であると認識し、不具合ではないと理解してもらうことが可能となる。なお、ユーザ毎に異なる閾値を設定する場合に、コントローラ120の位置又は姿勢の少なくとも一方の変化と各指の関節点の位置又は姿勢の少なくとも一方の変化の情報を、PC110の記録媒体215に保存して、ユーザに紐づけておいてもよい。
【0095】
図12は前述の閾値の設定方法に関する制御フローである。S1201において、制御部211は、指示位置の変更操作をユーザに促してデータを取得し、一定の操作を終えた場合、S1202に進む。S1202において、制御部211は、データ量から閾値が設定できるか判定する。制御部211は、データが十分であると判定した場合は、S1203に進み、データが十分でないと判定した場合は、S1201に戻り、再度指示位置の変更操作をユーザに促す。S1203において、制御部211はボタンメニューやプルダウンメニューの選択・決定操作をユーザに促してデータを取得し、一定の操作を終えた場合、S1204に進む。S1204において、制御部211は、データ量から閾値が設定できるか判定する。制御部211は、データが十分であると判定した場合は、S1205に進み、データが十分でないと判定した場合は、S1203に戻り、再度指示位置の変更操作をユーザに促す。S1205において、制御部211は、閾値の設定を完了し、処理を完了する。
【0096】
なお、この図のうち、どちらかのフローで閾値の設定を完了しても、フローの順番を入れ替えても、他の閾値の設定フローを用意してもよく、またメニュー操作でなくても、ターゲットに合わせてボタンを押下するような方法で、閾値の設定を行ってもよい。このようにして、ユーザ毎に区別された閾値を設定可能である。
【0097】
<指示位置を本来の位置関係に戻すフローチャート>
次に、
図4(b)を参照して、仮想的な光線(レイ)の指示位置を変更した後の動作について記載する。
図4(b)には、ボタン押下後にブレ動きが発生した際に、ボタン押下前の指示位置と仮想的な光線(レイ)を維持した場合を実線で、ボタン押下後にブレ動きが発生した際の本来の指示位置と仮想的な光線(レイ)を点線で示している。また、この維持した後は、指示位置と仮想的な光線(レイ)を本来の位置に戻さず、コントローラの動きに応じて指示位置と仮想的な光線(レイ)を表示する。つまり、本来の指示位置から、補正が入ったまま動いているように見えることになる。しかし、このような補正を繰り返していくうちに、本来の指示位置とは異なる位置を指示する可能性があるため、このような補正を終了する場面をいくつか設けておくことで、ユーザになるべく違和感を与えないような指示位置の補正が可能となる。
【0098】
図13は指示位置を維持した後、本来の指示位置に戻す際の制御フローである。まず、S1301において、制御部211は、表示画面から指示位置の表示が消えたかどうかを判定する。このような表示画面から指示位置の表示が消える場面の例として、指示位置が画面の範囲外に位置する場面や、表示画面の切り替わりで指示位置を一時的に表示しなくなる場面が挙げられる。このような場面で仮想的な光線(レイ)の指示位置の補正を終了しても、指示位置が飛んで見えてしまうといった違和感が生じないと考えられる。制御部211は、S1301の判定で、表示画面から指示位置の表示が消えたと判定した場合はS1302に進み、表示画面から指示位置の表示が消えていないと判定した場合は、S1301の処理を繰り返し、表示画面から指示位置の表示が消えたかを判定する。なお、S1301の判定は、常に一定時間ごとに行ってもよく、S705の処理を実行したことに応じて、S1301の判定を開始してもよい。
【0099】
S1302において、制御部211は、指示位置の補正が行われているかを判定する。制御部211は、指示位置の補正が行われていると判定した場合はS1303に進む。また、指示位置の補正が行われていないと判定した場合はS1301に戻り、S1301、S1302の判断を繰り返し、指示位置の補正が行われていて、指示位置が表示画面から消えるまで待機する。
【0100】
S1303において、制御部211は、指示位置を本来の位置関係に修正する、すなわち指示位置を初期化して、処理を完了する。
【0101】
なお、S1301、S1302の処理の順番はこれに限らず、順番が入れ替わっていてもよい。
【0102】
なお、上述のような動作が全く見られない場合でも電源を停止する際には、指示位置に補正値を設定したままの状態から、補正を終了して指示位置を補正前の指示位置に変更しておくことで、起動時には本来の指示位置を示すことができる。
【0103】
なお、上述のように、ユーザになるべく違和感を与えないよう本来の指示位置に戻す設計をする他、ユーザに違和感を与えてしまうことを許容して、ボタン押下によるブレ動きが終了したと判断されたタイミングで、本来の指示位置に戻してもよい。この場合は、ボタンの押下が終了したタイミングで、
図6(b)~
図6(d)で説明したような指示位置の維持のための処理が実行されていた場合に、その維持のための処理を終了することにより、実現される。
【0104】
(その他の実施形態)
次に第2の実施形態について説明する。第1の実施形態では、HMDに撮像部が搭載されていたが、撮像部は壁や三脚等に固定されていてもよい。この場合、ユーザの手の変動が確認できる位置に撮像部を置くことが必要である。この場合、撮像部の情報を無線等でPCに出力し、加工することが必要である。この場合、HMDに撮像部を設けないため、HMDを軽量化するという特有の効果を奏する。
図2を参照すると、HMD100中の撮像部202の役割を他のハードウェアが担い、HMD100又はPC110と、撮像部を有するハードウェアとがそれぞれに相互に通信を行う通信部を有することとなる。そのような通信部は、USBケーブルのような有線または、BluetoothやWi-Fiのような無線を有することとなる。
【0105】
なお、このような撮像部はPCやコントローラに搭載されていてもよい。
【0106】
次に第3の実施形態について説明する。第1、第2の実施形態では、HMDを想定した。本実施形態では、HMDを用いない場合について説明する。本実施形態では、HMD100の画像表示部203はテレビやプロジェクター等の画像出力装置に置き換えられる。本実施形態においても、第2の実施形態と同様に撮像部は壁や三脚等に固定されていても良く、ユーザの手が見える位置に撮像部を置くことが必要である。この場合もこれまでのポインティングデバイスで生まれる課題を同様に解決することができ、指示位置は赤外線で表示することが可能であると考えられる。
【0107】
なお、上記実施形態は1つ以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出して実行する処理の形式でも実現可能である。また、1つ以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。