[第1の実施形態]
以下、図面を参照して本発明の実施形態について説明する。
図1は、本発明を適用した第1の実施形態に係るHMD100の外観構成を示す説明図である。HMD100は、頭部に装着する表示装置であり、ヘッドマウントディスプレイ(Head Mounted Display:頭部装着型表示装置)とも呼ばれる。本実施形態のHMD100は、使用者が、虚像を視認すると同時に外景も直接視認可能な光学透過型の表示装置である。なお、本明細書では、HMD100によって使用者が視認する虚像を便宜的に「表示画像」とも呼ぶ。また、画像データに基づいて生成された画像光を射出することを「画像を表示する」ともいう。
HMD100は、使用者の頭部に装着された状態において使用者に虚像を視認させる画像表示部20(表示部)と、画像表示部20を制御する制御装置10と、を備えている。制御装置10は、使用者がHMD100を操作するためのコントローラーとしても機能する。また、制御装置10は、操作デバイスとして機能する。
画像表示部20は、使用者の頭部に装着される装着体であり、本実施形態では眼鏡形状を有している。画像表示部20は、右保持部21と、右表示駆動部22と、左保持部23と、左表示駆動部24と、右光学像表示部26と、左光学像表示部28と、カメラ61と、マイク63とを備える。右光学像表示部26及び左光学像表示部28は、それぞれ、使用者が画像表示部20を装着した際に使用者の右及び左の眼前に位置するように配置されている。右光学像表示部26の一端と左光学像表示部28の一端とは、使用者が画像表示部20を装着した際の使用者の眉間に対応する位置で、互いに接続される。
右保持部21は、右光学像表示部26の他端である端部ERから、使用者が画像表示部20を装着した際の使用者の側頭部に対応する位置にかけて、延伸して設けられた部材である。同様に、左保持部23は、左光学像表示部28の他端である端部ELから、使用者が画像表示部20を装着した際の使用者の側頭部に対応する位置にかけて、延伸して設けられた部材である。右保持部21及び左保持部23は、眼鏡のテンプル(つる)のようにして、使用者の頭部に画像表示部20を保持する。
右表示駆動部22と左表示駆動部24とは、使用者が画像表示部20を装着した際の使用者の頭部に対向する側に配置されている。なお、右表示駆動部22及び左表示駆動部24を総称して単に「表示駆動部」とも呼び、右光学像表示部26及び左光学像表示部28を総称して単に「光学像表示部」とも呼ぶ。
表示駆動部22,24は、液晶ディスプレイ241,242(Liquid Crystal Display、以下「LCD241,242」とも呼ぶ)や投写光学系251,252等を含む(図2参照)。表示駆動部22,24の構成の詳細は後述する。光学部材としての光学像表示部26,28は、導光板261,262(図2参照)を備える。導光板261,262は、光透過性の樹脂等によって形成され、表示駆動部22,24から出力された画像光を使用者の眼に導く。本実施形態では、少なくとも、HMD100を装着した使用者が外の景色を視認できる程度の光透過性を有する右光学像表示部26及び左光学像表示部28を用いる場合について説明する。
カメラ61は、右光学像表示部26の他端である端部ERに配置される。カメラ61は、使用者の眼の側とは反対側方向の外部の景色である外景を撮像し、外景画像を取得する。図1に示す本実施形態のカメラ61は、単眼カメラであるが、ステレオカメラであってもよい。
カメラ61の撮影方向すなわち画角は、HMD100の表側方向、換言すれば、HMD100を装着した状態における使用者の視界方向の少なくとも一部の外景を撮影する方向である。また、カメラ61の画角の広さは適宜設定可能であるが、カメラ61の撮像範囲が、使用者が右光学像表示部26、左光学像表示部28を通して視認する外界を含む範囲であることが好ましい。さらに、右光学像表示部26及び左光学像表示部28を通した使用者の視界の全体を撮影できるようにカメラ61の撮像範囲が設定されているとより好ましい。
画像表示部20は、さらに、画像表示部20を制御装置10に接続するための接続部40を有している。接続部40は、制御装置10に接続される本体コード48と、右コード42と、左コード44と、連結部材46とを備える。右コード42と左コード44とは、本体コード48が2本に分岐したコードである。右コード42は、右保持部21の延伸方向の先端部APから右保持部21の筐体内に挿入され、右表示駆動部22に接続されている。同様に、左コード44は、左保持部23の延伸方向の先端部APから左保持部23の筐体内に挿入され、左表示駆動部24に接続される。
連結部材46は、本体コード48と、右コード42及び左コード44との分岐点に設けられ、イヤホンプラグ30を接続するためのジャックを有している。イヤホンプラグ30からは、右イヤホン32及び左イヤホン34が延伸している。イヤホンプラグ30の近傍にはマイク63が設けられている。イヤホンプラグ30からマイク63までは一本のコードにまとめられ、マイク63からコードが分岐して、右イヤホン32と左イヤホン34のそれぞれに繋がっている。
マイク63は、例えば図1に示すように、マイク63の集音部が使用者の視線方向を向くように配置され、音声を集音して、音声信号を音声処理部190に出力する。マイク63は、例えばモノラルマイクであってもステレオマイクであってもよく、指向性を有するマイクであってもよいし、無指向性のマイクであってもよい。
また、右コード42と左コード44とを一本のコードにまとめることも可能である。具体的には、右コード42の内部の導線を、画像表示部20の本体内部を通して左保持部23側に引き込み、左コード44内部の導線とともに樹脂で被覆して、一本のコードにまとめてもよい。
画像表示部20と制御装置10とは、接続部40を介して各種信号の伝送を行なう。本体コード48における連結部材46とは反対側の端部と、制御装置10とのそれぞれには、互いに嵌合するコネクター(図示略)が設けられている。本体コード48のコネクターと制御装置10のコネクターとの嵌合/嵌合解除により、制御装置10と画像表示部20とが接続されたり切り離されたりする。右コード42と、左コード44と、本体コード48とには、例えば、金属ケーブルや光ファイバーを採用できる。
制御装置10は、HMD100を制御するための装置である。制御装置10は、決定キー11、点灯部12、表示切替キー13、輝度切替キー15、方向キー16、メニューキー17、及び電源スイッチ18を含むスイッチ類を備える。また、制御装置10は、使用者が指等の操作体によりタッチ操作するトラックパッド14(操作面)を備える。
決定キー11は、押下操作を検出して、制御装置10で操作された内容を決定する信号を出力する。点灯部12は、HMD100の動作状態を、その発光状態によって通知する。HMD100の動作状態としては、例えば、電源のON/OFF等がある。点灯部12としては、例えば、LED(Light Emitting Diode)が用いられる。表示切替キー13は、押下操作を検出して、例えば、コンテンツ動画の表示モードを3Dと2Dとに切り替える信号を出力する。
トラックパッド14は、トラックパッド14の操作面上での使用者の指の操作を検出して、検出内容に応じた信号を出力する。トラックパッド14としては、静電容量検出式や圧力検出式、光学式といった種々のトラックパッドを採用できる。トラックパッド14が圧力検出式や光学式の場合、トラックパッド14を操作する操作体は、使用者の指、ペン、ペン型の専用の指示器など多種のものを使用できる。トラックパッド14が静電容量検出式の場合、操作体としては、指等の人体の一部、及び、静電容量式スタイラスペン等を使用できる。また、操作体として、使用者が、手以外の身体により操作するものを用いることも可能である。例えば、トラックパッド14が、使用者が足、肘、肩、腰などを接触させる操作が可能なものとしてもよい。この場合、使用者の足、肘、肩、腰などがトラックパッド14に接触した位置が操作位置として検出され、接触位置が移動すれば、操作位置の移動が検出される。この構成は、トラックパッド14を、使用者が足、肘、肩、腰などを接触させやすい位置に配置することで実現することができる。また、トラックパッド14のサイズを、使用者が足、肘、肩、腰などを接触させるのに適したサイズとしてもよい。また、トラックパッド14を有するシート状または板状のデバイスを、制御装置10とは別に設けて、このデバイスと制御装置10とが接続される構成としてもよい。
輝度切替キー15は、押下操作を検出して、画像表示部20の輝度を増減する信号を出力する。方向キー16は、上下左右方向に対応するキーへの押下操作を検出して、検出内容に応じた信号を出力する。電源スイッチ18は、HMD100の電源投入状態を切り替えるスイッチであり、例えばスライド操作が可能な構成となっている。
図2は、HMD100を構成する各部の機能ブロック図である。
図2に示すように、HMD100は、インターフェイス125を介して外部機器OAに接続される。インターフェイス125は、制御装置10に対して、コンテンツの供給元となる種々の外部機器OAを接続するためのインターフェイスである。インターフェイス125としては、例えば、USBインターフェイス、マイクロUSBインターフェイス、メモリーカード用インターフェイス等の有線接続に対応したインターフェイスを用いることができる。
外部機器OAは、HMD100に画像を供給する画像供給装置として用いられ、例えば、パーソナルコンピューター(PC)や携帯電話端末、ゲーム端末等が用いられる。
HMD100の制御装置10は、制御部140と、操作部111と、入力情報取得部110(操作検出部)と、記憶部120と、送信部(Tx)51及び送信部(Tx)52とを有している。
操作部111は、使用者による操作を検出する。操作部111は、図1に示した決定キー11、表示切替キー13、トラックパッド14、輝度切替キー15、方向キー16、メニューキー17及び電源スイッチ18の各操作子を含む。
入力情報取得部110は、操作部111の各操作子の操作を検出し、操作内容を示す操作データを制御部140に出力する。この操作データは、具体的には、操作された操作子を特定するデータと、操作子の操作の種別を示すデータとを含む。例えば、決定キー11、表示切替キー13、輝度切替キー15、メニューキー17、または電源スイッチ18が操作された場合を想定する。この場合、入力情報取得部110は、操作されたキーやスイッチを示すデータと操作「有」を示すデータとを含む操作データを制御部140に出力する。また、例えば方向キー16は4方向に操作可能であるため、入力情報取得部110は、方向キー16の操作を検出すると、方向キー16を示すデータと操作方向を示すデータとを制御部140に出力する。
トラックパッド14に対する操作を検出した場合、入力情報取得部110は、トラックパッド14において接触操作された位置(操作位置)を検出する。入力情報取得部110は、操作位置を示すデータと、操作された操作子がトラックパッド14であることを示すデータとを含む操作データを制御部140に出力する。この操作データは、例えば、操作位置を、トラックパッド14の操作エリアにおける相対位置として示すデータを含む。操作データの具体的態様は任意である。
記憶部120は、不揮発性の記憶装置であって、種々のコンピュータープログラムを格納している。また、記憶部120には、HMD100の画像表示部20に表示する画像データが格納されていても良い。例えば、記憶部120は、HMD100の動作に係る設定値等を含む設定データ121、及び、制御部140が画像表示部20に表示させる文字や画像のデータを含むコンテンツデータ123を記憶する。
また、制御部140には、3軸センサー113、GPS115、通信部117及び音声認識部114が接続される。3軸センサー113(姿勢検出部)は3軸の加速度センサーであり、3軸センサー113の検出値を制御部140が取得可能である。GPS115は、アンテナ(図示略)を備え、GPS(Global Positioning System)信号を受信し、制御装置10の現在位置を求める。GPS115は、GPS信号に基づいて求めた現在位置や現在時刻を制御部140に出力する。また、GPS115はGPS信号に含まれる情報に基づいて現在時刻を取得し、制御装置10の制御部140が計時する時刻を修正させる機能を備えていてもよい。
通信部117は、無線LAN(WiFi(登録商標))や、Miracast(登録商標)等の無線通信の規格に準じた無線データ通信を実行する。また、通信部117は、Bluetooth(登録商標)や、Bluetooth Low Energy、RFID、Felica(登録商標)等の近距離無線通信の規格に準じた無線データ通信を実行することも可能である。
外部機器OAが、通信部117に無線接続された場合には、制御部140は、コンテンツデータを通信部117より取得して、画像表示部20に画像を表示するための制御を行う。一方、外部機器OAが、インターフェイス125に有線接続された場合には、制御部140は、コンテンツデータをインターフェイス125より取得して、画像表示部20に画像を表示するための制御を行う。よって、通信部117及びインターフェイス125を、以下総称してデータ取得部DAと呼ぶ。
データ取得部DAは、外部機器OAからコンテンツデータを取得する。データ取得部DAは、HMD100が表示する画像のデータを、外部機器OAから取得する。
音声認識部114は、マイク63により集音され、後述する音声処理部190によりディジタルデータに変換されたディジタル音声データから特徴を抽出してモデル化する。音声認識部114は、音声の特徴を抽出してモデル化することで、複数の人の声を別々に認識して、声ごとに話している人を特定する話者認識や、音声をテキストに変換するテキスト変換を行う。また、音声認識部114は、音声認識の処理において、音声データの言語の種類を識別できる構成であってもよい。
制御部140は、ハードウェアとして、CPU、ROM、RAM(図示略)等を備える。制御部140は、記憶部120に格納されているコンピュータープログラムを読み出して実行することにより、オペレーティングシステム(OS)150を含む各部の機能を実行する。具体的には、制御部140は、画像処理部160、表示制御部170、操作検出部183、GUI制御部185、及び音声処理部190として機能する。
画像処理部160は、コンテンツを表示するための垂直同期信号VSync、水平同期信号HSync、クロック信号PCLK等、表示する画像の画像データ(図中、Data)を出力する。
画像処理部160の処理によって表示されるコンテンツの画像データは、インターフェイス125や通信部117を介して受信する他、制御部140の処理によって生成される画像データであってもよい。例えば、ゲームのアプリケーションプログラムの実行中に、操作部111の操作に対応して画像データを生成して表示することができる。
なお、画像処理部160は、必要に応じて、画像データに対して、解像度変換処理や、輝度、彩度の調整といった種々の色調補正処理、キーストーン補正処理等の画像処理を実行してもよい。
画像処理部160は、生成されたクロック信号PCLK、垂直同期信号VSync、水平同期信号HSync、記憶部120内のDRAMに格納された画像データDataのそれぞれを、送信部51、52を介して送信する。なお、送信部51を介して送信される画像データDataを「右眼用画像データ」とも呼び、送信部52を介して送信される画像データDataを「左眼用画像データ」とも呼ぶ。送信部51、52は、制御装置10と画像表示部20との間におけるシリアル伝送のためのトランシーバーとして機能する。
表示制御部170は、右表示駆動部22及び左表示駆動部24を制御する制御信号を生成する。具体的には、表示制御部170は、制御信号により、右LCD制御部211による右LCD241の駆動ON/OFF、右バックライト制御部201による右バックライト221の駆動ON/OFFを個別に制御する。また、表示制御部170は、左LCD制御部212による左LCD242の駆動ON/OFF、左バックライト制御部202による左バックライト222の駆動ON/OFFを個別に制御する。
これにより、表示制御部170は、右表示駆動部22及び左表示駆動部24のそれぞれによる画像光の生成および射出を制御する。例えば、表示制御部170は、右表示駆動部22及び左表示駆動部24の両方に画像光を生成させたり、一方のみに画像光を生成させたりする。また、表示制御部170は、右表示駆動部22及び左表示駆動部24の両方共に画像光を生成させないようにすることもできる。
また、表示制御部170は、右LCD制御部211に対する制御信号と、左LCD制御部212に対する制御信号とのそれぞれを、送信部51と送信部52とを介して送信する。また、表示制御部170は、右バックライト制御部201に対する制御信号を右バックライト制御部201に送信し、左バックライト制御部202に対する制御信号を左バックライト制御部202により送信する。
表示制御部170は、画像表示部20によりARコンテンツを表示する。ARコンテンツは、使用者が画像表示部20越しに対象物を見ている状態で、対象物が視認される位置に対応して表示される文字や画像を含む。例えば、画像表示部20を透過して見える外景中の対象物、すなわち実空間に存在する対象物に重なって、或いは対象物を避けるように、ARコンテンツが表示される。表示制御部170は、対象物に対応する位置に画像や文字等を表示するAR表示を行うことで、対象物に関する情報を提供し、或いは、画像表示部20越しに見える対象物の姿の見え方を変える。
ARコンテンツの表示位置は対象物に重なる位置であっても対象物の周囲であってもよい。対象物は物体であればよく、建物の壁面など移動不可能なものであってもよいし、自然物であってもよい。
ARコンテンツは、記憶部120に記憶されるコンテンツデータ123、または、制御部140の処理により生成されるデータに基づき表示される。これらのデータは画像データやテキストデータを含むことができる。
表示制御部170は、使用者が対象物を視認する位置を検出し、検出した位置に対応するようにARコンテンツの表示位置を決定する。使用者が対象物を視認する位置を検出する方法は任意であるが、本実施形態では、表示制御部170がカメラ61の撮像画像データから、使用者の視界に位置する対象物を検出する。撮像画像データを解析して対象物の画像を抽出あるいは検出する処理では、対象物の画像の形状、色、大きさ等に関する特徴量のデータが使用される。これらのデータは、コンテンツデータ123に含めることができる。表示制御部170は、カメラ61の撮像画像データから対象物の画像を検出し、検出した対象物の画像と撮像画像全体との位置関係に基づき、カメラ61の撮像範囲における対象物の位置を特定する。そして、表示制御部170は、カメラ61の撮像範囲と、画像表示部20の表示領域との位置関係に基づき、対象物の位置に対応するARコンテンツの表示位置を決定する。
音声処理部190は、コンテンツに含まれる音声信号を取得し、取得した音声信号を増幅して、連結部材46に接続された右イヤホン32内のスピーカー(図示略)及び左イヤホン34内のスピーカー(図示略)に対して供給する。なお、例えば、Dolby(登録商標)システムを採用した場合、音声信号に対する処理がなされ、右イヤホン32及び左イヤホン34のそれぞれから、例えば周波数等が変えられた異なる音が出力される。
画像表示部20は、インターフェイス25と、右表示駆動部22と、左表示駆動部24と、右光学像表示部26としての右導光板261と、左光学像表示部28としての左導光板262と、カメラ61と、振動センサー65と、9軸センサー66とを備えている。
振動センサー65は、加速度センサーを利用して構成され、画像表示部20の内部に配置される。振動センサー65は、例えば、右保持部21において右光学像表示部26の端部ERの近傍に内蔵される。振動センサー65は、使用者が端部ERを叩く操作(ノック操作)を行った場合に、この操作による振動を検出して、検出結果を制御部140に出力する。この振動センサー65の検出結果により、制御部140は、使用者によるノック操作を検出する。
9軸センサー66は、加速度(3軸)、角速度(3軸)、地磁気(3軸)を検出するモーションセンサーである。9軸センサー66は、画像表示部20に設けられているため、画像表示部20が使用者の頭部に装着されているとき、制御部140は、9軸センサー66の検出値に基づいて使用者の頭部の動きを検出できる。検出された使用者の頭部の動きから画像表示部20の向きがわかるため、制御部140は、使用者の視線方向を推定できる。
インターフェイス25は、右コード42と左コード44とが接続されるコネクターを備える。インターフェイス25は、送信部51から送信されるクロック信号PCLK、垂直同期信号VSync、水平同期信号HSync、画像データDataを、対応する受信部(Rx)53、54に出力する。また、インターフェイス25は、表示制御部170から送信される制御信号を、対応する受信部53、54、右バックライト制御部201又は左バックライト制御部202に出力する。
また、インターフェイス25は、カメラ61、振動センサー65及び9軸センサー66のインターフェイスである。振動センサー65による振動の検出結果や、9軸センサー66による加速度(3軸)、角速度(3軸)、地磁気(3軸)の検出結果は、インターフェイス25を介して制御装置10の制御部140に送られる。
右表示駆動部22は、受信部53と、光源として機能する右バックライト(BL)制御部201及び右バックライト(BL)221と、表示素子として機能する右LCD制御部211及び右LCD241と、右投写光学系251とを備える。右バックライト制御部201と右バックライト221とは、光源として機能する。右LCD制御部211と右LCD241とは、表示素子として機能する。なお、右バックライト制御部201と、右LCD制御部211と、右バックライト221と、右LCD241とを総称して「画像光生成部」とも呼ぶ。
受信部53は、制御装置10と画像表示部20との間におけるシリアル伝送のためのレシーバーとして機能する。右バックライト制御部201は、入力された制御信号に基づいて、右バックライト221を駆動する。右バックライト221は、例えば、LEDやエレクトロルミネセンス(EL)等の発光体である。右LCD制御部211は、受信部53を介して入力されたクロック信号PCLKと、垂直同期信号VSyncと、水平同期信号HSyncと、右眼用画像データDataとに基づいて、右LCD241を駆動する。右LCD241は、複数の画素をマトリクス状に配置した透過型液晶パネルである。
右投写光学系251は、右LCD241から射出された画像光を並行状態の光束にするコリメートレンズによって構成される。右光学像表示部26としての右導光板261は、右投写光学系251から出力された画像光を、所定の光路に沿って反射させつつ使用者の右眼REに導く。
左表示駆動部24は、右表示駆動部22と同様の構成を有している。左表示駆動部24は、受信部54と、光源として機能する左バックライト(BL)制御部202及び左バックライト(BL)222と、表示素子として機能する左LCD制御部212及び左LCD242と、左投写光学系252と、を備える。左バックライト制御部202と左バックライト222とは、光源として機能する。左LCD制御部212と左LCD242とは、表示素子として機能する。また、左投写光学系252は、左LCD242から射出された画像光を並行状態の光束にするコリメートレンズによって構成される。左光学像表示部28としての左導光板262は、左投写光学系252から出力された画像光を、所定の光路に沿って反射させつつ使用者の左眼LEに導く。
制御部140は、画像表示部20により、ARコンテンツの他、GUI(Graphical User Interface)を表示できる。GUI制御部185は、画像表示部20によるGUIの表示を制御し、GUI操作用の指標(GUI操作の操作位置の指標)であるマーカー、ポインター(いわゆるマウスポインターを含む)、アイコン等の画像や文字を含むGUIオブジェクトを表示する。GUIオブジェクトは本発明の表示オブジェクトに相当する。
GUI制御部185は、操作部111の操作に対応して、GUIオブジェクトの表示状態を更新する。本実施形態において、GUI制御部185は、トラックパッド14で操作された操作位置に対応してポインターを表示する。画像表示部20の表示領域におけるポインターの表示位置と、トラックパッド14における操作位置とは、予め対応付けられている。GUI制御部185は、操作検出部183からトラックパッド14の操作位置の座標が入力されると、入力された操作位置に対応する表示位置に、ポインターを表示し、或いは、表示中のポインターの表示位置を変更する。
操作検出部183は、入力情報取得部110から入力される操作データに基づいて、操作部111の各操作子に対して行われる操作を検出し、操作に対応して制御部140が実行する処理を決定する。
操作検出部183は、操作データを解析して、操作された操作子が決定キー11、表示切替キー13、輝度切替キー15、メニューキー17、または電源スイッチ18である場合、これらの操作に対応する処理を選択する。決定キー11の操作に対しては、GUI制御部185の制御により表示されるメニュー画面等に対する決定処理が選択される。表示切替キー13が操作された場合には、表示する画面を切り替える処理が選択される。例えば、操作検出部183は、GUI制御部185の制御により画面を表示する状態と、コンテンツデータ123を表示する状態とを含む複数の表示状態を順次切り替える処理を選択する。輝度切替キー15が操作された場合には、画像表示部20における表示輝度を調整する処理が選択される。具体的には、表示制御部170が画像処理部160を制御して、右表示駆動部22及び左表示駆動部24に出力される画像データの輝度を変化させる処理が選択される。或いは、表示制御部170が右バックライト制御部201、左バックライト制御部202の輝度を変更する処理が選択される。
方向キー16が操作された場合、操作検出部183は、方向キー16の操作方向に対応して、GUI制御部185の制御により表示されるメニュー画面等に対する処理等を選択する。電源スイッチ18が操作された場合、操作検出部183は、HMD100の電源をオフにするシャットダウン処理、或いは、HMD100の電源をオンにする起動シーケンスを選択する。
トラックパッド14が操作された場合、操作検出部183は、トラックパッド14の操作位置の座標に対応して、GUI制御部185が表示処理を行う座標を求める。
本実施形態では、GUI制御部185が、トラックパッド14の操作位置に対応して表示オブジェクトを表示する。また、GUI制御部185は、トラックパッド14の操作に対応して、表示オブジェクトの表示位置を変更する。従って、制御装置10を操作する使用者(ユーザー、操作者)が、トラックパッド14に接触する操作(タッチ操作)を行うと、画像表示部20に表示される表示オブジェクトの表示位置が移動する。
図3は、トラックパッド14の操作に対応するHMD100の動作を示す説明図であり、トラックパッド14の操作例を示す。
トラックパッド14に対する操作には、例えば図3に示すように、トラックパッド14に指等を接触させたまま移動させる操作がある。図3に例示する操作は、使用者の手Hが操作位置A1でトラックパッド14に接触し、接触状態を維持したまま、手Hが操作位置A1から操作位置A2に移動する操作である。この例では手Hが操作体として使用される。図3に符号X、Yで示すように、本実施形態では、トラックパッド14の左上隅を基準位置(例えば、原点)とするX−Y直交座標が設定される。入力情報取得部110は、トラックパッド14に対する手Hの接触を検出すると、手Hが接触した位置である操作位置を示す操作データを生成して出力する。操作検出部183は、操作部111から入力される操作データに基づき、操作位置のX座標、Y座標を取得、或いは特定する。
ここで、入力情報取得部110が生成して出力する操作データが、操作位置のX座標、Y座標を含んでもよい。また、入力情報取得部110が、トラックパッド14における操作位置を特定するためのアナログ検出値、或いはディジタルデータを生成して出力する構成であってもよい。この場合、操作検出部183は、入力情報取得部110が出力するアナログ検出値、或いはディジタルデータに基づき、操作位置のX座標及びY座標を求める処理を行う。
操作検出部183は、操作位置の座標に基づいて、入力データを生成する。入力データは、トラックパッド14の操作で入力された位置を、オペレーティングシステム150が有する入力平面における位置に変換したデータである。
本実施形態において、オペレーティングシステム150は、二次元の位置入力操作を受け付けるため、仮想の入力平面を設定する。操作検出部183は、入力情報取得部110が出力する操作データに基づき、オペレーティングシステム150の入力平面における位置(以下、入力位置という)を示す入力データを生成する。この仮想の入力平面を、以下の説明では仮想入力平面IPとする。操作検出部183は、仮想入力平面IPにおける入力位置を示す入力データをGUI制御部185に出力する。なお、仮想入力平面IPは、オペレーティングシステム150に規定されるものに限定されない。例えば、オペレーティングシステム150上で動作するアプリケーションプログラムに対し、或いは、アプリケーションプログラムを記述するプログラミング言語に対応して、座標系が定義される構成が考えられる。この場合、定義される座標系に対応する仮想入力平面IPを設定でき、これらに対応する入力データを、制御部140が生成して出力する構成に、本発明を適用することもできる。
また、仮想入力平面IPは、二次元の位置入力を受け付ける場合に限らず使用できる。例えば、オペレーティングシステム150を含む制御装置10が、三次元の位置入力を受け付ける構成が考えられる。この構成において、制御装置10は、仮想入力平面IP内における二次元の位置入力、及び、仮想入力平面IPを基準として、例えば仮想入力平面IPに垂直な方向を座標軸とする位置入力を検出可能な構成であってもよい。この場合、制御装置10は、仮想入力平面IPを基準として、三次元の位置入力を受け付けて処理を実行できる。
トラックパッド14を操作する場合の操作体(例えば、手H)の動きを、ジェスチャーと呼ぶ。ジェスチャーには、トラックパッド14に接触する動き、図3のように操作体が接触したまま移動する動き、トラックパッド14を叩く(タップする)動き等がある。本実施形態では、操作体が図3のようにトラックパッド14に接触したまま移動する動きを、スライドジェスチャーと呼ぶ。
トラックパッド14が、複数の位置に対する同時操作を検出可能な、マルチタッチ対応型の場合、複数の操作体がトラックパッド14に接触し、これら複数の操作体の接触位置が移動するジェスチャーを行うことができる。
図4は、トラックパッド14の操作に対応するポインターPの移動の例を示す説明図である。また、図5は、トラックパッド14の操作に対応するポインターPの移動の例を示す説明図である。
GUI制御部185は、操作検出部183が生成する入力データで特定される位置に対応して、図4に示すようにポインターPを表示する。図4には、画像表示部20を装着する使用者の視野VRを示し、右表示駆動部22、左表示駆動部24が画像を表示可能な表示可能領域を符号Dで示す。なお、本実施形態では画像表示部20の右表示駆動部22、及び左表示駆動部24のいずれにも同じ表示を行うため、図4では右表示駆動部22と左表示駆動部24とを区別しない。図5、図6、及び図8も同様である。
GUI制御部185が表示制御部170及び画像処理部160を制御することにより、表示可能領域Dに、ポインターPが表示される。ポインターPは、GUIの操作用に表示され、表示領域における操作対象位置を示す指標である。ポインターPは、表示オブジェクトの一例である。ポインターPの形状は円形でなくてもよく、四角形や三角形等の幾何学図形、記号、矢印等、ポインターPの形状とサイズは制限されない。
図3の例では、手Hの位置が操作位置A1から操作位置A2に移動する間に、入力情報取得部110が、予め設定されたサンプリング周期でトラックパッド14における操作位置を検出する。従って、入力情報取得部110は、サンプリング周期に従って、トラックパッド14における操作位置を示す操作データを出力する。操作検出部183は、例えば、入力情報取得部110が操作データを出力する毎に、操作データに対応する入力データを生成し、GUI制御部185に出力する。GUI制御部185は、入力データが示す入力位置に対応するポインターPの表示位置を求め、求めた表示位置にポインターPを表示させる。この結果、図3の操作位置A1から操作位置A2まで手Hが移動する操作に対応して、GUI制御部185は、図4に示すように、操作位置A1に対応する表示位置B1から、操作位置A2に対応する表示位置B2にまでポインターPを移動させる。図4の例では、GUI制御部185は表示位置B1と表示位置B2との間の複数の位置にポインターPを表示する処理を、繰り返し実行する。
入力操作に対する通常処理において、トラックパッド14における操作位置の座標と、仮想入力平面IPにおける入力位置の座標と、表示可能領域Dにおける表示位置の座標とは予め対応付けられる。GUI制御部185は、表示可能領域D上の座標に対応する右LCD241及び左LCD242における表示位置を求め、この表示位置にポインターPの画像を表示させる。これにより、操作に対応してポインターPの表示位置が移動する。
図1を参照して説明したように、制御装置10は使用者が携帯する装置であり、トラックパッド14を大型化することは容易でないため、使用者が視野VRにおいて視認する表示可能領域Dの大きさに比べ、トラックパッド14は小さい。
そこで、本実施形態では、操作検出部183の処理により、トラックパッド14における操作位置と、表示可能領域Dの表示位置との対応を変化させる。
入力操作に対する通常処理において、操作検出部183は、トラックパッド14において実際に検出された操作位置に対応する入力位置を示す入力データを生成し、GUI制御部185に渡す。このため、図3に示す操作位置A1から操作位置A2までの操作に対応して、GUI制御部185は、図4の表示位置B1から表示位置B2までポインターPを表示する。
操作検出部183は、スライドジェスチャーに対応して、通常処理とは異なる入力処理を行うことができる。この入力処理で、操作検出部183は、操作データに含まれる座標に対応する入力位置を示す入力データを生成するほか、操作データに含まれる座標に対応しない入力位置を示す入力データを生成する。具体的には、操作検出部183は、トラックパッド14における操作位置が移動しない状態で、仮想入力平面IP上で入力位置が移動するように入力データを生成し、GUI制御部185に出力する。この場合、操作検出部183は、入力データを連続して複数回生成し、それぞれの入力データにおける入力位置を異なる位置にする。この場合、GUI制御部185がポインターPを表示する位置は、仮想入力平面IPにおける入力位置に合わせて移動する。GUI制御部185の動作は、通常処理であっても、通常処理とは異なる入力処理であっても同様である。
この場合、図3に示す操作位置A1から操作位置A2まで手Hが移動する操作に対応して、GUI制御部185が、図5に示すように、ポインターPの表示位置を、表示位置B1から表示位置B3に移動させる。表示位置B1〜B3間の距離は、図4に示す表示位置B1〜B2間の距離よりも長い。つまり、通常処理では、ポインターPの表示位置の移動量は、トラックパッド14で手Hが動いた量に対応するが、HMD100は、トラックパッド14で手Hが動いた量に比べて大きくポインターPを移動させることができる。
図6は、トラックパッド14、仮想入力平面IP及び表示可能領域Dの対応を示す模式図である。
本実施形態では、オペレーティングシステム150が仮想的に設定する仮想入力平面IPは、トラックパッド14に並行な面として定義される。このため、トラックパッド14におけるX軸及びY軸で構成される直交座標と、仮想入力平面IPにおけるX軸及びY軸で構成される直交座標系とは、重ね合わせることができる。また、表示可能領域Dは、仮想入力平面IPに並行な面として定義される。このため、仮想入力平面IPにおけるX軸及びY軸で構成される直交座標系と、表示可能領域DにおけるX軸及びY軸で構成される直交座標とは、重ね合わせることができる。
トラックパッド14、仮想入力平面IP及び表示可能領域Dのサイズは異なっていてもよい。また、トラックパッド14における操作位置Aの座標の解像度と、仮想入力平面IPにおける入力座標IAの座標の解像度と、表示可能領域Dにおける表示位置Bの解像度とは異なっていてもよい。
この構成では、操作検出部183は、演算式、関数、行列等によって、トラックパッド14における操作位置の座標を、仮想入力平面IPにおける入力位置の座標に変換できる。同様に、GUI制御部185は、仮想入力平面IPにおける入力位置の座標を表示可能領域Dにおける表示位置の座標に変換することができる。この変換に要する演算式、関数、行列、パラメーター等は、例えば、設定データ121に含む形式で予め記憶部120に記憶される。
上述のように、手Hがトラックパッド14の操作位置A1から操作位置A2まで移動する場合、操作検出部183は、操作位置A1に対応する入力位置IA1から、操作位置A2に対応する入力位置IA2まで、入力位置が移動する入力データを生成する。この場合、GUI制御部185は、入力位置IA1に対応する表示位置B1にポインターPを表示し、ポインターPの表示位置を、入力位置IA2に対応する表示位置B2まで移動させる。ここで、操作検出部183は、手Hが操作位置A2に止まる間に、入力位置IA2から入力位置IA3に移動する入力データを生成できる。実際には、操作検出部183は、操作位置A1に対応する入力位置IA1を初期位置とし、この初期位置からの入力位置の移動方向と移動量とを決定し、決定した移動方向と移動量とに対応するように、入力データを連続して生成する。ここで、操作検出部183は、入力位置の移動方向と移動量とを決定した後で、入力位置の移動の終了位置である入力位置IA3の座標を先に算出してもよい。この場合、GUI制御部185は、表示位置B1から、入力位置IA3に対応する表示位置B3まで、ポインターPの表示位置を移動させる。
操作検出部183は、入力情報取得部110から入力される操作データを解析して、トラックパッド14の操作位置の移動方向に基づき、入力位置の移動方向を決定する。また、操作検出部183は、トラックパッド14の操作位置の移動量、移動速度、及びトラックパッド14の操作時間の少なくともいずれかに基づき、入力位置の移動量を決定する。
例えば、操作検出部183は、トラックパッド14における操作位置が停止することにより、操作位置の移動量が確定してから、入力位置の移動量を求めてもよい。この場合、操作検出部183は、トラックパッド14における操作位置が停止するまでの間、入力位置を初期位置に維持して入力データを生成してもよい。或いは、入力情報取得部110のサンプリング周期に従って、トラックパッド14の操作位置に対応する入力位置を求めて入力データを生成してもよい。
また、例えば、操作検出部183は、手Hがトラックパッド14に対する接触したことを検出してから、接触が解除されたことを検出するまでの時間に基づき、入力位置の移動量を求めてもよい。この場合、操作検出部183は、トラックパッド14の接触が解除されるまでの間、入力位置を初期位置に維持して入力データを生成してもよい。或いは、入力情報取得部110のサンプリング周期に従って、トラックパッド14の操作位置に対応する入力位置を求めて入力データを生成してもよい。
また、例えば、操作検出部183は、入力情報取得部110がトラックパッド14の操作を検出してから、所定時間以内における操作位置の移動速度を求め、求めた移動速度に対応する入力位置の移動量を求めてもよい。この所定時間は予め設定され、例えば設定データ121に含めて記憶部120に記憶される。この場合、操作検出部183は、上記所定時間内に、トラックパッド14の操作位置の初期位置に対応する入力位置を維持して入力データを生成してもよい。或いは、入力情報取得部110のサンプリング周期に従って、トラックパッド14の操作位置に対応する入力位置を求めて入力データを生成してもよい。
また、例えば、操作検出部183は、入力情報取得部110がトラックパッド14の操作を検出してから、所定時間以内における操作位置の移動方向を求め、求めた移動方向に対応する入力位置の移動方向を設定してもよい。この所定時間は予め設定され、例えば設定データ121に含めて記憶部120に記憶される。
この場合、操作検出部183は、入力位置の移動量を制限せず、予め設定された移動速度、或いは、操作位置の移動速度に対応する入力位置の移動速度で、入力位置を移動させるように入力データを生成してもよい。この場合、操作検出部183は、トラックパッド14における接触が解除されるまでの間、設定した移動方向および移動速度で、入力位置が移動する入力データの生成及び出力を継続する。入力データを生成し、出力する周期は、予め設定された周期であってもよいし、入力情報取得部110のサンプリング周期に従ってあってもよい。そして、操作検出部183は、入力情報取得部110がトラックパッド14における接触の解除を検出したタイミングで、入力データの生成及び出力を停止する。
これらのいずれの場合も、操作検出部183は、操作体である手Hがトラックパッド14から離れるまでの間、入力データを生成する処理を継続して行うので、GUI制御部185は、表示可能領域Dにおいて、ポインターPの表示位置を移動し続ける。
使用者が、スライドジェスチャーを意図して行うことにより、実際の操作体の移動量よりも大きくポインターPを移動させることができる。また、操作体をトラックパッド14から離すことでポインターPを停止させることができ、ポインターPの停止位置を高精度で制御できる。
図7はHMD100の動作を示すフローチャートであり、トラックパッド14の操作に対しポインターPの表示位置を制御する動作を示す。
制御部140は、入力情報取得部110から入力される操作データに基づいてトラックパッド14へのタッチ操作を検出すると(ステップS11)、操作位置の座標を取得する(ステップS12)。制御部140は、操作位置が移動しているか否か、すなわち、スライドジェスチャーに該当するか否かの判定を行う(ステップS13)。例えば、予め設定された時間内に操作位置の座標が閾値以上の変化をした場合に、スライドジェスチャーと判定することができ、スライドジェスチャーの判定の条件は設定データ121に含めて記憶することができる。
スライドジェスチャーでないと判定した場合(ステップS13;No)、制御部140は、トラックパッド14上の操作位置に対応してポインターPを表示させる(ステップS14)。ステップS14で、制御部140は、操作位置に対応する入力データを生成し、この入力データが示す位置にポインターPを表示させ、或いはポインターPの表示位置を移動させる。ステップS14の処理後、制御部140は本処理を終了する。処理の終了後、制御部140はトラックパッド14への接触操作を待機する。
トラックパッド14への操作がスライドジェスチャーであると判定した場合(ステップS13;Yes)、制御部140は、操作位置が停止するまで待機する(ステップS15)。この待機中、制御部140は、入力情報取得部110から入力される操作データに基づき操作位置の検出を継続して行う。
操作位置が停止した場合(ステップS15;Yes)、制御部140は、スライドジェスチャーに対応する入力データを生成するため、入力データの移動パラメーターを算出する(ステップS16)。入力データの移動パラメーターは、例えば、入力位置の移動の開始位置、入力位置の移動方向、及び、入力位置の移動速度を示すデータを含む。
ステップS15の「操作位置が停止した場合」とは、トラックパッド14における操作位置が静止する場合に限らず、操作位置が予め設定された閾値の範囲内で移動する場合を含む。制御部140は、入力情報取得部110がサンプリング周期で検出するトラックパッド14の操作位置の座標が変化しない場合、及び、座標の変化量が予め設定された閾値の範囲内である場合のいずれも、停止したと判定する。 また、入力情報取得部110は、サンプリング周期でトラックパッド14の操作位置の座標を検出するので、連続する所定回数の検出動作で検出された操作位置の座標が、閾値の範囲内である場合に、操作位置が停止したと判定してもよい。
例えば、制御部140は、入力位置の移動方向を、ステップS11〜S15で検出したスライドジェスチャーの移動方向と同じ方向に設定する。トラックパッド14に対するスライドジェスチャーの方向は、図3に示すX方向に限定されず、Y方向や斜め方向であってもよく、トラックパッド14の面内の移動であれば制限されない。入力位置の移動方向は、スライドジェスチャーの方向に対応していればよく、仮想入力平面IP内における方向であればよい。従って、操作検出部183が、トラックパッド14の操作位置の移動方向に対応して決定する入力位置の移動方向は、操作位置の移動方向と一致しない方向であってもよい。
また、例えば、制御部140は、入力位置の移動速度を、ステップS11〜S15で検出したスライドジェスチャーの移動量(操作量)に対応する速度に設定する。例えば、制御部140は、スライドジェスチャーの移動量が大きいほど、入力位置の移動速度が高速になるよう移動速度を設定する。また、入力位置の移動速度を一定としてもよい。この場合、制御部140は、予め設定されたデフォルトの移動速度を、入力位置の移動速度に設定する。デフォルトの移動速度は、予め設定され、例えば設定データ121に含まれる。
制御部140は、ステップS16で設定した移動パラメーターに従って入力データの生成を開始し、生成する入力データに基づき右表示駆動部22及び左表示駆動部24にポインターPを表示させる処理を開始する(ステップS17)。ステップS17の後、制御部140が生成する入力データでは入力位置が移動し、画像表示部20が表示するポインターPの表示位置が移動する。この後、制御部140は、入力データを所定周期(例えば、入力情報取得部110のサンプリング周期)で生成する処理を継続する。また、制御部140は、生成した入力データに基づきポインターPの表示位置を移動する処理を継続する。
ポインターPの表示位置が移動する間、制御部140は、トラックパッド14への接触の解除を監視する(ステップS18)。トラックパッド14への接触が解除されていないと判定した場合(ステップS18;No)、入力データの生成とポインターPの表示位置の移動を継続する。
制御部140は、トラックパッド14への接触が解除されたことを検出すると(ステップS18;Yes)、入力データの生成を停止し、これによりポインターPの移動を停止させて(ステップS19)、本処理を終了する。
この図7に示した動作は、ポインターPの移動だけでなく、例えば、リング状のUIに適用できる。
図8は、トラックパッド14の操作に対しリング型UI(User Interface)の表示を遷移させる例を示す説明図である。
リング型のUIは、複数の画面、或いは画像や文字等の表示オブジェクトを、リング状に配置し、リングの特定位置にある画面または表示オブジェクトが、大きく表示されるインターフェイスである。表示可能領域Dには、リング状に配置された複数の表示オブジェクト全体を俯瞰する状態を模した画像が表示される。この表示により、使用者は、表示可能領域Dにより、リング型UIを構成するそれぞれの表示オブジェクトの配置と、特定位置にある表示オブジェクトの内容とを見ることができる。
図8の例では、画面M1〜M6の6つの画面が表示用の画面として用意され、左右方向への操作に対応して、画面M1〜M6が順に、画像表示部20により拡大表示される。また、画面M1〜M6は、図中右方向にも、左方向にも、順に切り替えて表示できる。
GUI制御部185は、トラックパッド14のスライドジェスチャーに対応して、画面M1〜M6を順に切り替えて表示できる。すなわち、GUI制御部185は、操作検出部183が生成する入力データを取得し、入力データに含まれる入力位置の変化に対応する方向に、リング型のUIを回転させて、画面M1〜M6を順に表示する。操作検出部183が生成する入力データは、図6に例示したように、入力位置をX−Y座標系の座標で示す二次元のデータである。この場合、GUI制御部185は、入力位置のX座標の変化とY座標の変化の両方を演算して、リング型UIにおいて移動する画面の数や移動方向を求めてもよい。また、GUI制御部185は、入力位置のX座標とY座標のいずれか一方に基づき、リング型UIにおいて移動する画面の数や移動方向を求めてもよい。
図8のリング型のUIでは、画面M1〜M6のそれぞれは本発明の表示オブジェクトに相当し、GUI制御部185は、トラックパッド14の操作に対応して、それぞれの画面M1〜M6の表示位置を移動させる。また、図7の動作を適用すれば、トラックパッド14のスライドジェスチャーが検出された場合に、画面M1、M2、M3…が順次切り替えられ、トラックパッド14の接触が解除されるまで画面の切り替えが継続する。そして、使用者が操作体をトラックパッド14から離すと、画面の切り替えが停止する。このように、ポインターPの表示位置の移動に限らず、本発明を適用してトラックパッド14の操作性の向上を図ることができる。また、図8のリング型のUIを採用する場合、GUI制御部185は、画面M1〜M6のうち、特定の位置に表示される画面を操作対象としてもよい。特定の位置とは、例えば表示画面の中央であり、他の画面より大きく、使用者の正面に表示される画面が操作対象となる。この場合、トラックパッド14に対する操作の方向に対応して、操作対象の画面の表示位置が移動し、他の画面の表示位置は操作対象の画面の表示位置の変化に応じて適宜移動される。
本実施形態の制御部140は、トラックパッド14に対する操作がスライドジェスチャーでないと判定した場合(ステップS13;No)、トラックパッド14上の操作位置に対応する入力位置を示す入力データを生成する。これにより、トラックパッド14上の操作位置に対応する表示可能領域Dの表示位置に、ポインターPが表示される(ステップS14)。このように、本実施形態では一例として、入力情報取得部110が検出するトラックパッド14における操作位置の座標が、仮想入力平面IPにおける入力位置に変換される。つまり、トラックパッド14は、絶対座標を入力するデバイスとして機能する。HMD100の構成はこれに限定されない。例えば、入力情報取得部110が、トラックパッド14における操作位置の変化を検出値として制御部140に出力してもよい。この場合、制御部140は、トラックパッド14のが操作位置の変化量に対応する入力位置の変化を示す入力データを生成してもよい。つまり、トラックパッド14が、マウス等と同様に、相対位置を入力する入力デバイスとして機能する構成であってもよい。
以上説明したように、本発明を適用した第1の実施形態のHMD100は、使用者に画像を視認させるとともに外景を透過する画像表示部20を備える。HMD100は、トラックパッド14に対する操作を検出する入力情報取得部110と、画像表示部20にポインターP等の操作対象の表示オブジェクトを表示する制御部140と、を備える。制御部140は、入力情報取得部110が検出するトラックパッド14に対する操作位置の変化に対応して、ポインターPの表示位置を移動させる。制御部140は、入力情報取得部110が予め設定された終了条件に該当する操作を検出した場合に、ポインターPの表示位置の移動を停止させる。別の表現をすれば、制御部140は、操作面であるトラックパッド14に対する操作が終了するまで、表示オブジェクトであるポインターPが慣性を保つように、ポインターPの表示位置を移動させる。このため、ポインターPを、トラックパッド14における操作位置の移動量よりも大きく移動させることができ、トラックパッド14の大きさに起因する操作性の制約を緩和できる。さらに、ポインターPの移動を停止する位置を容易に制御でき、操作性の向上を図ることができる。
本実施形態で、制御部140は、入力情報取得部110がトラックパッド14に対する接触を検出した場合に操作位置を検出する。そして、制御部140は、入力情報取得部110が、トラックパッド14から操作体が離れて接触が解除されたことを検出した場合に、終了条件に該当すると判定し、入力データの生成を停止する。これにより、使用者は、ポインターPの表示位置の移動を開始および停止させるタイミングを容易に指示できるので、より一層の操作性の向上を図ることができる。
また、制御部140は、ポインターPの表示位置の移動方向を、トラックパッド14における操作位置の移動方向に対応する方向に設定する。このため、使用者が、ポインターPを意図する方向に移動させることができ、操作性の向上を図ることができる。
また、制御部140は、トラックパッド14に対するスライドジェスチャーの操作を検出した後、ポインターPの移動方向を求める処理を行ってから、ポインターPを移動させるので、ポインターPを適切な方向に移動させることができる。
本実施形態で、制御部140は、入力情報取得部110がステップS11でトラックパッド14に対する操作を検出した後、ステップS16でポインターPの表示位置の移動方向を求める処理を行う間、ポインターPを移動させてもよい。ここで、制御部140は、トラックパッド14の操作位置に対応する表示位置にポインターPを移動させる。この場合、ポインターPの移動方向を求める処理を行う間においてもポインターPを適切に移動させることで、使用者が違和感なく操作を行える。また、短時間または操作位置の移動量が小さい操作に対応してポインターPを移動させることができる。この場合のポインターPの移動は、トラックパッド14の操作位置に対応する表示可能領域Dの表示位置にポインターPを移動させる制御により実現すればよい。また、制御部140は、入力情報取得部110がトラックパッド14に対する操作を検出した後、ポインターPの表示位置の移動方向を求める処理を行い、その後にポインターPの表示位置を移動させてもよい。この場合、ポインターPを適切な方向に移動させることができる。
また、制御部140は、トラックパッド14における操作に応じてポインターPの移動速度を求め、求めた移動速度で移動方向にポインターPを移動させてもよい。例えば、制御部140は、ポインターPの表示位置の移動速度を、トラックパッド14における操作位置の移動量または移動速度に対応する速度に設定してもよい。この場合、使用者がポインターPの移動速度を制御できるので、より一層の操作性の向上を図ることができる。
また、制御部140は、トラックパッド14における操作位置の移動を検出した後、操作が終了するまでポインターPを移動させるので、トラックパッド14は、例えば画像表示部20が画像を表示する領域に比べて小さくてもよい。トラックパッド14は、制御部140が操作位置の移動の方向を検出可能なサイズがあればよく、言い換えれば、トラックパッド14のサイズよりも大きくポインターPを移動させることができる。従って、HMD100の構成においてトラックパッド14が小さくても、ポインターPを任意に移動させることができ、操作性の向上を図ることができる。また、HMD100の構成の自由度が高まるという利点がある。
HMD100において、制御部140は、入力情報取得部110により検出される操作に応じて、仮想入力平面IPに対する入力データを生成する。制御部140は、入力情報取得部110がトラックパッド14において操作位置が移動する操作を検出した場合に、操作に対応して仮想入力平面IPにおける入力データの生成を開始する。制御部140は、入力情報取得部110が予め設定された終了条件に該当する操作を検出した場合に、入力データの生成を停止する。これにより、オペレーティングシステム150の仮想入力平面IPに対する入力データを、トラックパッド14の大きさの制約を超えて生成させることができる。本実施形態では、入力データに基づきポインターPの表示位置を移動させるので、ポインターPの表示位置の移動量を高い自由度で制御できる。従って、トラックパッド14の大きさに起因する操作性の制約を緩和できる。
制御部140が生成する入力データは、仮想入力平面IPにおける入力位置、仮想入力平面IP内における入力位置の移動方向、及び、仮想入力平面IP内における入力位置の移動速度の少なくともいずれかを含む構成とすることができる。これにより、トラックパッド14に対する操作によって、仮想入力平面IPにおける入力位置、入力位置の移動方向、或いは入力位置の移動速度を入力できる。
また、制御部140は、入力データに含まれる入力位置の移動方向、及び、入力位置の移動速度の少なくともいずれかを、入力情報取得部110が検出する操作位置の移動量または移動速度に応じて設定してもよい。この場合、入力位置、入力位置の移動方向、或いは入力位置の移動速度を、トラックパッド14に対する操作により制御できる。
また、制御部140は、入力情報取得部110が、トラックパッド14に対する接触が解除されたことを検出した場合に、終了条件に該当すると判定して入力データの生成を停止してもよい。この構成によれば、使用者は、入力データの生成を開始および停止させるタイミングを容易に指示できるので、より一層の操作性の向上を図ることができる。
また、図6に示したように、HMD100では、仮想入力平面IPと表示部20における表示可能領域D(表示領域)とが対応付けられる。制御部140は、画像表示部20に表示する操作対象の表示オブジェクトであるポインターPの表示位置を、入力データに対応して制御することができる。これにより、トラックパッド14に対する操作に応じてポインターPの表示位置を移動させることができ、表示位置の移動量を高い自由度で制御できる。
[第2の実施形態]
図9は、本発明を適用した第2の実施形態に係るHMD100の動作を示すフローチャートである。
本第2の実施形態において、HMD100の構成は第1の実施形態と同様である。このため、HMD100の構成に関して図示及び説明を省略する。
図9に示す動作のステップS11〜S19は、上記第1の実施形態と同様である。
第2の実施形態において、制御部140は、ステップS17で入力データの生成及びポインターPの表示位置の移動を開始した後に、トラックパッド14における操作位置が変化した場合、ポインターPの表示位置の移動パラメーターを変更する。
第1の実施形態と同様に、制御部140は、入力データの生成を開始した後にトラックパッド14への接触の解除を監視する(ステップS18)。ここで、トラックパッド14への接触が解除されない間(ステップS18;No)、制御部140は入力データの生成を継続し、これによりポインターPの表示位置が移動し続ける。この間、トラックパッド14における操作位置は、ステップS15で停止したと判定されてから、停止とみなすことができる状態である。
トラックパッド14への接触が解除されない場合(ステップS18;No)、制御部140は、トラックパッド14の操作位置が、逆方向に移動したか否かを判定する(ステップS21)。「逆方向」とは、ステップS13で検出したトラックパッド14の操作位置の移動方向、或いは、ステップS16で設定した入力位置の移動パラメーターに対して逆の方向を指す。また、「逆方向」とは、X軸方向及びY軸方向の成分が完全に逆の方向である場合に限定されない。例えば、X軸方向及びY軸方向の成分が、完全に逆の方向に対して所定範囲内にある方向を、「逆方向」に含めることができる。つまり、ステップS21では、トラックパッド14における操作位置が、逆方向と見なすことができる範囲で移動した場合に、逆方向に移動したと判定してもよい。また、ステップS13で検出したトラックパッド14の操作位置の移動方向、或いは、ステップS16で設定した入力位置の移動パラメーターが示す移動方向に対し、所定角度以上の方向の違いを有する操作を、逆方向の移動と判定してもよい。また、ステップS21では、トラックパッド14の操作位置の移動量に基づく判定を行ってもよい。例えば、操作位置の移動量が予め設定された閾値より小さい場合に、逆方向の移動と判定しない構成としてもよい。
制御部140は、トラックパッド14の操作位置が逆方向に移動したと判定した場合(ステップS21;Yes)、入力位置の移動速度に関する移動パラメーターを更新(変更)する(ステップS22)。このステップS22の後、制御部140は、更新後の移動パラメーターに基づき入力データの生成を実行し、ポインターPの表示位置が移動する。ステップS22の後、制御部140はステップS18に戻る。また、トラックパッド14の操作位置が逆方向に移動していない場合(ステップS21;No)、制御部140はステップS18に戻る。
ステップS22では、例えば、入力位置の移動速度を段階的に変更可能であり、移動速度を1段階低下させることができる。この場合、操作位置を逆方向に移動させる操作を、制御部140が1回検出する毎に、入力位置の移動速度が1段階低下する。入力データにおける入力位置の移動速度の変化に対応して、ポインターPの移動速度が段階的に変化する。これにより、ポインターPの移動速度を使用者が容易に制御できる。
このように、制御部140が、ポインターPの移動中におけるトラックパッド14の操作位置の変化に応じて、ポインターPの移動速度を変化させることで、使用者は、ポインターPの移動速度を、より細かく制御できる。
第2の実施形態では、制御部140が、操作体による操作位置が逆方向に移動したと判定した場合に、入力データにおける入力位置の移動速度を低速にして、表示オブジェクトであるポインターPの移動速度を低速に変化させる例を説明した。この場合、入力位置の移動速度を変化させた後で、トラックパッド14の操作位置が正方向に移動した場合に、入力位置の移動速度を復帰させてもよい。また、回数の限定なく、操作位置の正方向の移動を検出する毎に入力位置の移動速度を増速し、操作位置の逆方向の移動を検出する毎に入力位置に移動速度を減速してもよい。また、トラックパッド14において操作体が接触する領域の面積を、入力情報取得部110及び制御部140が検出可能な構成において、接触する面積の変化により入力位置の移動速度を変化させてもよい。例えば、接触面積が小さく変化した場合は入力位置の移動速度を減速させてもよい。また、接触面積が大きくなった場合は入力位置の移動速度を増速させてもよい。これらの場合において、入力位置の移動速度を変更するように移動パラメーターが更新されると、ポインターPの移動速度が変化するので、使用者の操作によって容易にポインターPの移動速度を制御できる。このほか、入力位置を移動させる速度を、トラックパッド14に対する操作態様に応じて変化させる具体的な態様は任意に変更可能である。
さらに、本第2の実施形態の変形例として、入力データにおける入力位置の移動速度を、制御装置10を動かす操作に対応して変化させてもよい。
図2に示したように、制御装置10は3軸の加速度センサーである3軸センサー113を備える。
操作検出部183は、ステップS16で入力データの生成を開始した後、3軸センサー113の検出値を、例えば予め設定されたサンプリング周期で取得して、制御装置10の姿勢の変化を検出する。HMD100では、制御装置10を第1の方向に動かした場合に、ポインターPの移動速度を増大させ、第2の方向に動かした場合に、ポインターPの移動速度を低下させるよう設定される。詳細には、第1の方向の動きに対応する3軸センサー113の検出値または検出値の範囲が、予め設定される。第2の方向についても同様である。第1の方向、及び第2の方向は、操作検出部183が3軸センサー113の検出値に基づき区別可能な2つの方向であればよく、逆方向であってもよい。また、第1及び第2の方向は、制御装置10を直線的に移動させる方向であってもよいし、制御装置10を回転させる方向であってもよい。制御装置10の回転方向は任意に設定可能であり、3軸センサー113の検出軸を中心とする回転であってもよいし、検出軸と平行でない軸を中心とする回転であってもよい。
ここで、操作検出部183が、3軸センサー113の検出値に応じて移動パラメーターを更新する処理を、操作位置が停止している間に限って実行可能としてもよい。つまり、操作検出部183は、上記処理を、操作位置が停止したと判定してから(ステップS15;Yes)、トラックパッド14の接触が解除されたと判定する(ステップS18;Yes)までの間に限って実行してもよい。また、操作検出部183は、入力データを生成する間に、上記処理を実行する構成であってもよい。
操作検出部183は、3軸センサー113の検出値に基づき第1の方向の操作あるいは第2の方向の操作が行われたと判定した場合、ステップS22と同様の処理を行い、入力位置の移動速度に関する移動パラメーターを更新する。
この構成では、使用者がトラックパッド14に操作体を接触させる操作を行い、ポインターPを移動させる間に、制御装置10を動かすことによって、ポインターPの移動速度を加速あるいは減速できる。
第2の実施形態のさらに別の変形例として、入力データにおける入力位置の移動速度を、トラックパッド14における接触面積に対応して変化させてもよい。入力情報取得部110は、トラックパッド14に操作体が接触した場合に、接触位置を検出可能であり、接触面積を検出することもできる。
この場合、入力情報取得部110は、トラックパッド14における接触位置を複数検出可能な構成とすることができる。操作検出部183は、入力情報取得部110が検出した複数の接触位置に1つの操作体が接触したと仮定して、操作体が接触した面積を算出する。つまり、操作検出部183は、入力情報取得部110が出力する操作データに基づいて接触面積を算出する。また、入力情報取得部110が、トラックパッド14における接触面積を検出可能な構成であってもよい。この場合、入力情報取得部110は、トラックパッド14における接触面積を示すデータを操作データに含めて出力する。
操作検出部183は、ステップS16で入力データの生成を開始した後、入力情報取得部110が出力する操作データに基づき、トラックパッド14における接触面積を取得する。ここで、操作検出部183は、取得した接触面積に基づいて、入力データにおける入力位置の移動速度を変更する。例えば、操作検出部183が取得する接触面積の大きさに対応づけて、入力位置の移動速度が設定されていてもよい。この場合、操作検出部183は、入力位置の移動速度に関する入力データの移動パラメーターを、取得した接触面積に対応する値に更新する。また、例えば、操作検出部183は、取得した接触面積の変化に対応して移動パラメーターを更新してもよい。具体的には、操作検出部183は、トラックパッド14における接触面積の変化を算出し、接触面積が予め設定された閾値を超えて増大した場合に、予め設定された速度だけ入力位置の移動速度を増すように、移動パラメーターを更新する。また、操作検出部183は、トラックパッド14における接触面積が予め設定された閾値を超えて縮小した場合に、予め設定された速度だけ入力位置の移動速度を低下させるように、移動パラメーターを更新する。
ここで、操作検出部183が、トラックパッド14における接触面積に応じて移動パラメーターを更新する処理を、操作位置が停止している間に限って実行可能としてもよい。つまり、操作検出部183は、上記処理を、操作位置が停止したと判定してから(ステップS15;Yes)、トラックパッド14の接触が解除されたと判定する(ステップS18;Yes)までの間に限って実行してもよい。また、操作検出部183は、入力データを生成する間に、上記処理を実行する構成であってもよい。
この構成では、使用者がトラックパッド14に操作体を接触させる操作を行い、ポインターPを移動させる間に、操作体がトラックパッド14に接触する面積を調整することによって、ポインターPの移動速度を加速あるいは減速できる。例えば、使用者の指や手など、弾性を有する操作体を使用する場合、操作検出部183は、操作体をトラックパッド14に押しつける力を加減して接触面積を調整することにより、ポインターPの移動速度を加速あるいは減速できる。
[第3の実施形態]
図10は、第3の実施形態に係るHMD100の操作の例を示す説明図である。図11は、本発明を適用した第3の実施形態に係るHMD100の動作を示すフローチャートである。第3の実施形態において、HMD100の構成は第1の実施形態と同様である。このため、HMD100の構成に関して図示及び説明を省略する。
第3の実施形態では、ポインターPの移動を開始した後にトラックパッド14の操作位置が移動した場合に、制御部140が、ポインターPの移動速度及び移動方向を変更する例を説明する。第2の実施形態では、トラックパッド14の操作位置が逆方向に操作された場合の動作を説明したが、第3の実施形態では、逆方向に限らず、他の方向へ操作位置が移動した場合に対応できる。
図10はトラックパッド14における操作位置の移動の様子を示す。符号A11〜A15は、使用者の手H(図3)等の操作体がトラックパッド14に接触する接触位置、すなわち操作位置を示す。符号AT1〜AT4は、操作位置の移動の軌跡、すなわち移動操作を示す。以下、図10、及び、図11のフローチャートを参照してHMD100の動作を説明する。
ステップS11〜S16の動作は、第1及び第2の実施形態と同じ動作である。例えば、制御部140は、図10の操作位置A11から操作位置A12に至る操作AT1を入力情報取得部110が検出した場合に、ステップS16で、操作AT1に対応する移動パラメーターを算出する。制御部140は、ステップS16で設定した移動パラメーターに従って入力データの生成を開始し、生成する入力データに基づき右表示駆動部22及び左表示駆動部24にポインターPを表示させる処理を開始する(ステップS31)。
ステップS31の後、制御部140が生成する入力データでは入力位置が移動し、画像表示部20が表示するポインターPの表示位置が移動する。ポインターPの表示位置が移動する間、制御部140は、トラックパッド14への接触の解除を監視する(ステップS32)。制御部140は、トラックパッド14への接触が解除されたことを検出すると(ステップS32;Yes)、入力データの生成を停止し、これによりポインターPの移動を停止させて(ステップS19)、本処理を終了する。
一方、ポインターPの移動中、トラックパッド14への接触が解除されていないと判定した場合(ステップS32;No)、制御部140は、トラックパッド14における操作位置が移動したか否かを判定する(ステップS33)。ステップS33では、入力情報取得部110が検出する操作位置が、ステップS15で停止判定した位置から所定距離以上、動いたか否かを判定する。操作位置が移動していないと判定した場合(ステップS33;No)、制御部140はステップS32に戻る。
操作位置が移動したと判定した場合(ステップS33;Yes)、制御部140は、制御部140は、操作位置が停止するまで待機する(ステップS34)。この待機中、制御部140は、入力情報取得部110から入力される操作データに基づき操作位置の検出を継続して行う。操作位置が停止した場合(ステップS34;Yes)、制御部140は、ステップS33で検出した操作位置の移動に対応する入力データの移動パラメーターを算出して、移動パラメーターを更新する(ステップS35)。
制御部140は、ステップS31に戻り、更新した移動パラメーターを用いて入力データの生成を開始する。
例えば、図10に示す操作AT1が行われ、操作体が操作位置A12で停止した後に、操作体が操作位置A13に移動する操作AT2が行われた場合、制御部140は、ステップS35で、操作AT2に対応する移動パラメーターを生成する。この場合、制御部140は、操作位置A12から操作位置A13への移動方向、移動速度、移動量の少なくともいずれかに基づいて、入力位置の移動方向及び/または移動速度を設定する。入力位置の移動量は、操作AT2が停止するまでの時間により決まる。ここで、制御部140は、入力位置の移動量を、操作AT2の移動速度或いは移動量に基づき算出してもよい。
このように、操作検出部183は、操作位置が第1の停止位置で停止し、その後に第2の停止位置に移動して停止した場合、第1の停止位置から第2の停止位置までの移動方向、移動速度、及び移動量の少なくともいずれかに基づき入力データを生成できる。第1の停止位置は、例えば、操作位置A11に相当し、第2の停止位置は操作位置A12、A13或いはA14に相当する。また、操作位置A12、A13、A14で停止した後に、操作位置がさらに別の位置に移動した場合、操作位置A12、A13、A14を第1の停止位置として動作してもよい。
第3の実施形態によれば、操作体が操作位置A12で停止した後に、操作位置A14に移動する操作AT3、或いは操作位置A15に移動する操作AT4等が行われた場合に、操作AT3、AT4に対応するように入力位置が移動する入力データが生成される。この入力データに基づきポインターPなどの表示オブジェクトを表示することにより、HMD100は、操作AT2、AT3、AT4を反映した方向、速度で、ポインターPの表示位置を移動できる。
さらには、ステップS33〜S35の処理を繰り返し実行することが可能であるため、例えば、操作AT2の後に、操作体が操作位置A13から他の位置に移動した場合に、この移動を反映してポインターPの表示位置を変化させることができる。この場合、操作位置が停止し、その後に移動する動作の回数を制限しない構成とすることも可能である。
このように、HMD100は、使用者がトラックパッド14から操作体を接触させたままで、操作体が移動する方向を変化させる操作を行った場合に、操作体の移動の方向の変化に追従するように、ポインターPを移動させることができる。
また、ステップS15、S34において、入力情報取得部110が検出する操作位置が停止したと判定するための時間を短く設定すれば、使用者が意図的に操作体を静止させる時間が短くてもよい。ステップS15、S34で判定する時間は、少なくとも入力情報取得部110が操作位置の検出を複数回行えばよく、例えば、サンプリング周期の2回分に相当する時間まで短くしてもよい。
[第4の実施形態]
図12は、本発明を適用した第4の実施形態に係るHMD100の動作を示すフローチャートである。第4の実施形態において、HMD100の構成は第1の実施形態と同様である。このため、HMD100の構成に関して図示及び説明を省略する。
第4実施形態で、HMD100は、トラックパッド14に対する接触操作が短時間で解除された場合に、ポインターPの表示位置の移動量を規定量に設定し、これにより短時間の操作でポインターPの表示位置を移動できるようにする。
図12においてステップS12〜S14の動作は、上述した第1〜第3実施形態と同様である。
制御部140は、トラックパッド14への操作がスライドジェスチャーであると判定した場合(ステップS13;Yes)、タイマーのカウントを開始する(ステップS41)。タイマーは、プログラムにより実現される制御部140の1つの機能として実現できる。制御部140は、操作位置が停止するまで待機する(ステップS15)。制御部140は、この待機中、制御部140は、入力情報取得部110から入力される操作データに基づき操作位置の検出を継続して行う。
操作位置が停止しない状態、すなわちスライドジェスチャーが継続する間(ステップS15;No)、制御部140は、トラックパッド14への接触の解除を監視する(ステップS42)。トラックパッド14への接触が解除されていないと判定した場合(ステップS42;No)、制御部140はステップS15に戻り操作位置の監視を行う。
ここで、制御部140は、トラックパッド14の接触操作が解除されたことを検出すると(ステップS42;Yes)、ステップS41で開始したカウントのカウント値が、予め設定された設定値以上であるか否かを判定する(ステップS43)。つまり、スライドジェスチャーが開始されてからトラックパッド14の接触が解除されるまでの時間のカウント値が、設定値以上であるか、設定値より小さいかを判定する。設定値は、例えば設定データ121に含めて記憶部120に記憶される。
カウント値(タイマーカウンターの値)が設定値以上である場合(ステップS43;Yes)、制御部140は、スライドジェスチャーに対応する入力データの移動パラメーターを算出する(ステップS44)。ステップS44で算出される移動パラメーターは、例えば、後述するステップS16で算出される移動パラメーターと同様に、入力位置の移動の開始位置、入力位置の移動方向、及び、入力位置の移動速度を示すデータ等を含んでもよい。ステップS44で算出し生成される移動パラメーターは、移動量を示すデータを含むことが望ましい。移動量を示すデータは、予め設定された移動量のデフォルト値であってもよいし、ステップS43で判定したカウント値に基づき算出される値であってもよいし、スライドジェスチャーの操作位置の移動量や移動速度に対応する移動量であってもよい。移動パラメーターを算出した後、制御部140は後述するステップS48に移行する。制御部140は、ステップS44の処理の前または後に、ステップS41で開始したカウントを停止してカウント値をリセットする処理を行ってもよい。
また、カウント値が設定値より小さい場合(ステップS43;No)、制御部140は、予め記憶部120に記憶する基準値(図示略)に基づき、入力データの移動パラメーターを算出する(ステップS45)。ステップS45で生成される移動パラメーターは、例えば、入力位置の移動の開始位置、入力位置の移動方向、及び、入力位置の移動速度を示すデータ等を含んでもよく、移動量を示すデータを含む。入力位置の移動の開始位置及び入力位置の移動方向の少なくともいずれかは、入力情報取得部110が検出したスライドジェスチャーの操作位置や操作位置の移動方向に基づき算出してもよい。入力位置の移動速度や移動量は、予め記憶部120に記憶される基準値に基づき設定すればよい。移動パラメーターを設定した後、制御部140は後述するステップS48に移行する。制御部140は、ステップS45の処理の前または後に、ステップS41で開始したカウントを停止してカウント値をリセットする処理を行ってもよい。
また、操作位置が停止した場合(ステップS15;Yes)、制御部140は、スライドジェスチャーに対応する入力データを生成するため、入力データの移動パラメーターを算出する(ステップS16)。ステップS16で生成する入力データの移動パラメーターは、上述のように、例えば、入力位置の移動の開始位置、入力位置の移動方向、及び、入力位置の移動速度を示すデータ等を含む。入力位置の移動方向は、例えば、ステップS11〜S15で検出したスライドジェスチャーの移動方向と同じ方向に設定される。入力位置の移動速度は、例えば、スライドジェスチャーの移動量(操作量)に対応する速度、或いは、デフォルト値に設定される。
制御部140は、ステップS16で設定した移動パラメーターに従って入力データの生成を開始し、生成する入力データに基づき右表示駆動部22及び左表示駆動部24にポインターPを表示させる処理を開始する(ステップS17)。ステップS17の後、制御部140が生成する入力データでは入力位置が移動し、画像表示部20が表示するポインターPの表示位置が移動する。この後、制御部140は、入力データを所定周期(例えば、入力情報取得部110のサンプリング周期)で生成する処理を継続する。また、制御部140は、生成した入力データに基づきポインターPの表示位置を移動する処理を継続する。
ポインターPの表示位置が移動する間、制御部140は、トラックパッド14への接触の解除を監視する(ステップS18)。トラックパッド14への接触が解除されていないと判定した場合(ステップS18;No)、入力データの生成とポインターPの表示位置の移動を継続する。
制御部140は、トラックパッド14への接触が解除されたことを検出すると(ステップS18;Yes)、ステップS41で開始したカウントのカウント値が、予め設定された設定値以上であるか否かを判定する(ステップS46)。この設定値は、例えば、設定データ121に含めて記憶部120に記憶すればよく、ステップS43の設定値と共通の値であってもよい。
カウント値(タイマーカウンターの値)が設定値以上である場合(ステップS46;Yes)、制御部140は、入力データの生成を停止し、これによりポインターPの移動を停止させて(ステップS19)、本処理を終了する。制御部140は、ステップS19の処理の前または後に、ステップS41で開始したカウントを停止してカウント値をリセットする処理を行ってもよい。
また、カウント値が設定値より小さい場合(ステップS46;No)、制御部140は、予め記憶部120に記憶する基準値(図示略)に基づき、入力データの移動パラメーターを算出する(ステップS47)。ステップS47で、制御部140は、ステップS45と同様に、予め記憶部120に記憶される基準値に基づき移動パラメーターを設定し、ステップS16で算出した移動パラメーターを更新する。制御部140は、ステップS47の処理の前または後に、ステップS41で開始したカウントを停止してカウント値をリセットする処理を行ってもよい。
制御部140は、移動パラメーターに従って入力データを生成する処理を実行し、これによりポインターPの表示位置が移動する(ステップS48)。制御部140は、入力データを生成する処理を、移動パラメーターに含まれる移動量に相当する分だけ実行してから、入力データの生成を停止して本処理を終了する。
第4の実施形態によれば、操作体がトラックパッド14に接触する時間が短い場合に、予め設定された移動量でポインターPを移動させることが可能となる。このため、使用者が、トラックパッド14に対して操作体を短時間、接触させる操作を行うことで、ポインターPを移動させることができる。従って、トラックパッド14に操作体を接触させる状態を維持する操作に加え、トラックパッド14に短時間接触する操作により、画像表示部20の表示を制御でき、操作性の向上を図ることができる。
[第5の実施形態]
図13は、本発明を適用した第5の実施形態に係るHMD100の動作を示すフローチャートである。図14は、本発明を適用した第5の実施形態に係るHMD100の動作を示すフローチャートである。第5の実施形態において、HMD100の構成は第1の実施形態と同様である。このため、HMD100の構成に関して図示及び説明を省略する。
第5の実施形態で、HMD100は、トラックパッド14に対する接触操作に応じてポインターPの表示位置を移動させる処理において、接触操作が解除された後、所定時間内に再び接触操作がされた場合に、これらの接触操作を連続する操作として処理する。
図13に示すステップS11〜S18の動作は、上述した第1〜第3実施形態と同様である。第5の実施形態において、制御部140は、トラックパッド14の操作位置が停止しない状態、すなわちスライドジェスチャーが継続する間(ステップS15;No)、トラックパッド14への接触の解除を監視する(ステップS61)。トラックパッド14への接触が解除されていないと判定した場合(ステップS61;No)、制御部140はステップS15に戻り、操作位置の監視を行う。
制御部140は、トラックパッド14の接触操作が解除されたことを検出すると(ステップS61;Yes)、スライドジェスチャーに対応する入力データの移動パラメーターを算出する(ステップS62)。ステップS62で算出される移動パラメーターは、例えば、後述するステップS16で算出される移動パラメーターと同様に、入力位置の移動の開始位置、入力位置の移動方向、及び、入力位置の移動速度を示すデータ等を含んでもよい。ステップS62で算出し生成される移動パラメーターは、移動量を示すデータを含むことが望ましい。移動量を示すデータは、予め設定された移動量のデフォルト値であってもよいし、スライドジェスチャーの操作位置の移動量や移動速度に対応する移動量であってもよい。
移動パラメーターを算出した後、制御部140は、移動パラメーターに従って入力データを生成する処理を実行し、これによりポインターPの表示位置が移動する(ステップS63)。制御部140は、入力データを生成する処理を、移動パラメーターに含まれる移動量に相当する分だけ実行する。
入力データの生成を開始した後、制御部140は、タイマーのカウントを開始する(ステップS64)。タイマーは、プログラムにより実現される制御部140の1つの機能として実現できる。制御部140は、トラックパッド14に対する新たな接触を監視し(ステップS65)、トラックパッド14の接触が検出されない間(ステップS65;No)、タイマーのカウント値が設定値以上であるか否かを判定する(ステップS66)。ここで、カウント値が、予め設定された設定値以上である場合(ステップS66;Yes)、制御部140は、移動パラメーターの移動量に対応する分の入力データの生成を行った後、本処理を終了する。
タイマーのカウント値が設定値に達しない場合(ステップS66;No)、制御部140はステップS65に戻ってトラックパッド14への接触を監視する。
トラックパッド14に対する接触が検出された場合(ステップS65;Yes)、制御部140は、後述するステップS71(図13)に移行する。
また、制御部140は、ステップS18においてトラックパッド14への接触が解除されたことを検出すると(ステップS18;Yes)、タイマーのカウントを開始する(ステップS51)。制御部140は、トラックパッド14に対する新たな接触を監視し(ステップS52)、トラックパッド14の接触が検出されない間(ステップS52;No)、タイマーのカウント値が設定値以上であるか否かを判定する(ステップS53)。ここで、カウント値が、予め設定された設定値以上である場合(ステップS53;Yes)、制御部140は、移動パラメーターの生成を停止し、これによりポインターPの移動を停止させて(ステップS19)、本処理を終了する。
また、タイマーのカウント値が設定値に達しない場合(ステップS53;No)、制御部140はステップS52に戻ってトラックパッド14への接触を監視する。トラックパッド14に対する接触が検出された場合(ステップS52;Yes)、制御部140は、ステップS71(図13)に移行する。
ステップS71以後は、使用者がトラックパッド14に操作体を接触させる操作を行い、接触を解除した後の所定時間内に、再び操作体をトラックパッド14に接触させた場合に対応する動作である。
制御部140は、ステップS52またはS65で検出したトラックパッド14の接触位置すなわち操作位置が停止したか否かを監視する(ステップS71)。操作位置が停止しない間(ステップS71;No)、制御部140は、トラックパッド14への接触の解除を監視する(ステップS72)。トラックパッド14への接触が解除されていないと判定した場合(ステップS72;No)、制御部140はステップS71に戻り操作位置の監視を行う。
操作位置が停止したことを検出した場合(ステップS71;Yes)、制御部140は、操作に対応する入力データの移動パラメーターを算出し、移動パラメーターを更新する(ステップS72)。ステップS72で算出される移動パラメーターは、例えば、入力位置の移動の開始位置、入力位置の移動方向、及び、入力位置の移動速度を示すデータ等を含んでもよい。ステップS72で移動パラメーターを更新した後、制御部140は、更新後の移動パラメーターに基づき入力データを生成する処理を開始する。
制御部140は、入力データを生成する処理の実行中、トラックパッド14への接触の解除を監視する(ステップS75)。トラックパッド14への接触が解除されていないと判定した場合(ステップS75;No)、入力データの生成を継続し、ステップS75の監視を継続する。制御部140は、トラックパッド14への接触が解除されたことを検出すると(ステップS75;Yes)、タイマーのカウントを開始する(ステップS74)。
制御部140は、トラックパッド14に対する新たな接触を監視し(ステップS75)、トラックパッド14の接触が検出されない間(ステップS75;No)、タイマーのカウント値が設定値以上であるか否かを判定する(ステップS76)。ここで、カウント値が、予め設定された設定値以上である場合(ステップS76;Yes)、制御部140は、ステップS54に移行して移動パラメーターの生成を停止し、これによりポインターPの移動を停止させて(ステップS54)、本処理を終了する。制御部140は、ステップS76の処理の後に、ステップS74で開始したカウントを停止してカウント値をリセットする処理を行ってもよい。
タイマーのカウント値が設定値に達しない場合(ステップS76;No)、制御部140はステップS75に戻ってトラックパッド14への接触を監視する。
また、ステップS71において、操作位置が停止していない場合、すなわち操作位置が移動を続けている間(ステップS71;No)、制御部140は、トラックパッド14への接触の解除を監視する(ステップS77)。トラックパッド14への接触が解除されていないと判定した場合(ステップS77;No)、入力データの生成を継続し、ステップS77の監視を継続する。
制御部140は、トラックパッド14への接触が解除されたことを検出すると(ステップS77;Yes)、制御部140は、スライドジェスチャーに対応する入力データの移動パラメーターを算出する(ステップS78)。ステップS78で算出される移動パラメーターは、例えば、ステップS62で算出される移動パラメーターと同様である。すなわち、入力位置の移動の開始位置、入力位置の移動方向、及び、入力位置の移動速度を示すデータ等を含んでもよく、移動量を示すデータを含むことが望ましい。移動量を示すデータは、予め設定された移動量のデフォルト値であってもよいし、スライドジェスチャーの操作位置の移動量や移動速度に対応する移動量であってもよい。制御部140は、ステップS78で、算出した移動パラメーターにより、移動パラメーターを更新する。
制御部140は、更新後の移動パラメーターに基づき入力データを生成する処理を開始し、これによりポインターPの表示位置が移動する(ステップS79)。制御部140は、入力データの生成を開始した後、タイマーのカウントを開始する(ステップS80)。ステップS80で、制御部140は、ステップS77で接触の解除を検出してからの経過時間をカウントする。従って、ステップS80の処理は、ステップS78またはS79の前に実行してもよい。
制御部140は、トラックパッド14に対する新たな接触を監視し(ステップS81)、トラックパッド14の接触が検出されない間(ステップS81;No)、タイマーのカウント値が設定値以上であるか否かを判定する(ステップS82)。ここで、カウント値が、予め設定された設定値以上である場合(ステップS82;Yes)、制御部140は、移動パラメーターの移動量に対応する分の入力データの生成を行った後、本処理を終了する。タイマーのカウント値が設定値に達しない場合(ステップS82;No)、制御部140はステップS81に戻ってトラックパッド14への接触を監視する。
トラックパッド14に対する接触が検出された場合(ステップS81;Yes)、制御部140は、ステップS71(図13)に戻る。トラックパッド14に対する接触が検出された場合(ステップS81;Yes)、制御部140は、ステップS80で開始したカウントを停止してカウント値をリセットする処理を行ってもよい。
第5の実施形態では、制御部140は、トラックパッド14から操作体が離れて接触が解除されたことを検出してから所定時間が経過した場合に、操作が終了したとみなす終了条件に該当すると判定して、操作が解除された場合の動作を実行する。例えば、制御部140は、入力データの生成を停止する。
従って、トラックパッド14から操作体が離れた後であってもポインターPの表示位置の移動を継続できる。このため、トラックパッド14において操作位置が移動する量よりも大きく、ポインターPの表示位置を移動させることができ、トラックパッド14の大きさの制約を回避できる。
また、制御部140は、操作検出部がトラックパッド14から操作体が離れて接触が解除されたことを検出してから所定時間以内に、トラックパッド14に対する接触を検出した場合に、新たな接触の操作位置に対応して、移動パラメーターを更新する。この移動パラメーターの更新により、ポインターPの表示位置の移動方向及び移動速度の少なくともいずれかが変化する。従って、トラックパッド14から操作体が離れた後であっても、使用者は、再び操作体をトラックパッド14に接触させる操作を行えば、ポインターPの表示位置の移動を制御できる。このため、ポインターPの表示位置の移動の態様を、高い自由度で制御できる。例えば、制御部140は、所定時間内に再び操作体がトラックパッド14に接触する操作が行われた場合に、操作体がトラックパッド14から離れる状態を挟んで行われる複数の操作を、一連の操作として検出できる。
さらには、制御部140が、トラックパッド14への接触が解除された後、タイマーのカウント値が設定値に達するまでの間に接触を監視する動作は、繰り返し実行することが可能である。
図15は、第5の実施形態におけるトラックパッド14に対する操作の例を示す説明図である。図15の例は、トラックパッド14において2回の操作AT11、AT12が行われた例を示す。詳細には、操作体を操作位置A21から操作位置A22に動かす操作AT11が実行された後、操作体がトラックパッド14から離れ、その後、操作体が操作位置A23でトラックパッド14に接触して、操作位置A24まで移動された例である。
ここで、操作体が操作位置A22でトラックパッド14から離れ、その後に操作位置A23でトラックパッド14に接触するまでの時間が、所定時間より短いと仮定する。所定時間は、制御部140がカウントするタイマーのカウント値について設定される設定値(ステップS53、S66、S76、S88)に相当する。
この場合、制御部140は、操作AT11に基づく移動パラメーターを生成して、入力データを生成する処理を実行する。このため、ポインターPの表示位置は、図示はしないが、操作AT11を反映した移動方向、或いは移動速度で移動する。
制御部140は、操作AT12を検出した場合、操作AT12に対応して移動パラメーターを生成し、更新する。ここで、制御部140は、操作AT12の開始位置である操作位置A22の位置、終了位置である操作位置A23の位置、操作AT12の操作位置の移動方向、操作位置の移動速度、接触時間等に対応して移動パラメーターを更新できる。
また、制御部140は、操作AT11と操作AT12を合成した結果に基づき、移動パラメーターを生成して更新してもよい。具体的には、制御部140は、操作AT11について、操作位置の移動方向と移動量とを示すベクトルを生成する。制御部140は、操作AT12を検出した場合に、操作AT12について操作位置の移動方向と移動量とを示すベクトルを生成する。制御部140は、操作AT11のベクトルと、操作AT12のベクトルとを合成して合成ベクトルを生成する。制御部140は、合成ベクトルに対応する移動パラメーターを生成してもよい。この場合、操作AT11と操作AT12とを、1つの操作として、この操作に対応して入力データを生成できる。この場合、入力データに基づきポインターPの表示位置を移動させる処理で、使用者の操作に応じて、ポインターPの移動方向、移動速度等を、ゆるやかに変化させることができる。
さらにまた、制御部140は、操作AT11に対応して入力データを生成した後で、操作AT12に対応して入力データを生成してもよい。すなわち、操作AT11に対応する移動パラメーターを生成し、この移動パラメーターに従って入力データを生成する処理を行い、その後に、操作AT12に対応して移動パラメーターを更新してもよい。つまり、制御部140は、複数の操作が、所定時間内の非操作期間を挟んで行われた場合に、これら複数の操作を累積して反映するように、入力データを生成できる。この場合、操作AT11、AT12を順に反映して、ポインターPの表示位置を移動させることができる。
また、操作位置A22で操作体がトラックパッド14から離れた後も、制御部140は入力データの生成を継続するので、ポインターPの表示位置は移動を続ける。このため、使用者が操作体をトラックパッド14から離してしまった後もポインターPを移動させることができる。さらに、所定時間内にトラックパッド14に接触する操作を行えば、ポインターPを停止させずに表示位置を移動させることができる。
また、上記の各種動作を実行する場合において、トラックパッド14に操作体が接触していない状態であって入力データが生成されている状態で、操作により入力データの生成を停止させてもよい。制御部140が、トラックパッド14の接触が解除されたことを検出してから所定時間内は、入力データが生成されポインターPが移動する。このポインターPの移動中に、例えばトラックパッド14をタップする(叩く)操作が行われた場合に、制御部140は、経過時間にかかわらず入力データの生成を停止あるいは中断してもよい。また、例えば、制御部140は、ポインターPの移動中に、制御装置10を動かす操作を3軸センサー113により検出した場合に、経過時間にかかわらず入力データの生成を停止あるいは中断してもよい。また、例えば、制御部140は、9軸センサー66によって、画像表示部20を叩く操作や画像表示部20を所定方向に動かす動作を検出した場合に、経過時間にかかわらず入力データの生成を停止あるいは中断してもよい。
第5の実施形態において、操作体がトラックパッド14から離れた後、所定時間内に検出された操作が、それ以前の操作に対し所定の条件を満たす場合に、制御部140は、予め設定された処理を実行する構成としてもよい。所定の条件とは、例えば、操作体がトラックパッド14から離れてから所定時間内に検出された操作における操作位置の移動方向が、それ以前の操作に対し逆方向である場合である。制御部140が実行する処理は、例えば、移動パラメーターにおいて入力位置の移動速度を減速する処理である。また、所定の条件は、3軸センサー113により制御装置10を動かす操作を検出することであってもよい。また、この場合に検出する制御装置10の動きについて特定の方向を設定してもよい。この場合、制御部140は、制御装置10の動き、或いは動きの方向に応じて、例えば、移動パラメーターにおいて入力位置の移動速度を加速、或いは減速する処理を実行してもよい。また、例えば、移動パラメーターにおいて入力位置の移動方向を、制御装置10の動きの方向に対応して変更する処理を実行してもよい。
[第6の実施形態]
図16は、本発明を適用した第6の実施形態におけるトラックパッド14における操作領域の設定状態を示す図であり、図17は、HMD100の動作を示すフローチャートである。本第6の実施形態において、HMD100の構成は第1の実施形態と同様である。このため、HMD100の構成に関して図示及び説明を省略する。
図16に示すように、第6の実施形態では、トラックパッド14に複数の操作領域Cが設定される。操作領域Cは、トラックパッド14における座標により指定され、それぞれの操作領域Cと他の領域との境界の座標が、例えば設定データ121に設置される。
操作領域C1は、第1及び第2実施形態で説明したように、トラックパッド14の操作位置が移動しない間もポインターPを移動させる制御の対象となる領域である。これに対し、操作領域C1以外の領域、すなわち操作領域C2は、表示可能領域DにおけるポインターPの表示位置が、トラックパッド14の操作位置に対応するように制御する領域である。
制御部140は、操作領域C1においてスライドジェスチャーが行われた場合に、第1の実施形態で説明した処理を実行する。また、操作領域C2では、スライドジェスチャーが行われても、トラックパッド14の操作位置に対応する位置にポインターPを移動させる、通常処理を実行する。この動作を図17に示す。
図17に示す動作のステップS11〜S19は、上記第1の実施形態と同様である。
本第6の実施形態において、HMD100の制御部140は、トラックパッド14への操作がスライドジェスチャーであると判定した場合(ステップS13;Yes)、操作位置の座標を判定する(ステップS91)。ステップS31では、例えば、トラックパッド14の操作位置の座標と設定データ121に設定された座標とを比較して、操作位置が操作領域C1に含まれるか否かを判定する。
制御部140は、ステップS31の判定結果に基づき、通常処理を行うか否かを判定する(ステップS32)。通常処理を行う場合(ステップS92;No)、ステップS14に移行して、トラックパッド14上の操作位置に対応する表示可能領域Dの表示位置に、ポインターPを移動させ(ステップS14)、本処理を終了する。
また、通常処理を行わない場合(ステップS92;No)、制御部140はステップS15に移行する。
第6の実施形態の動作によれば、トラックパッド14の実際の操作位置の移動量より大きくポインターPを移動させる処理を、トラックパッド14における特定の領域に限定して行うことができる。トラックパッド14において、上記処理の対象とする領域は、図16に例示した操作領域C1のような形状、サイズに限定されない。例えば、トラックパッド14を上下または左右に複数に分割して、いずれかの領域を、操作領域C1と同様の領域としてもよい。トラックパッド14の形状が、X方向やY方向に長い形状である場合や、比較的広い面積のトラックパッド14を実装可能な場合に、ポインターPの不要な移動を回避できる点で有用である。
[第7の実施形態]
図18は、本発明を適用した第7の実施形態におけるHMD100の動作を示すフローチャートである。本第7の実施形態において、HMD100の構成は第1の実施形態と同様である。このため、HMD100の構成に関して図示及び説明を省略する。
図18に示す動作のステップS11〜S19は、上記第1の実施形態と同様である。
本第7の実施形態において、HMD100の制御部140は、トラックパッド14におけるスライドジェスチャーのうち、特定の方向に操作位置が移動する操作に対して、第1の実施形態で説明した処理を実行する。また、スライドジェスチャーが行われても、操作位置の移動方向が、設定された方向でない場合は、トラックパッド14の操作位置に対応する位置にポインターPを移動させる、通常処理を実行する。
すなわち、HMD100の制御部140は、トラックパッド14への操作がスライドジェスチャーであると判定した場合(ステップS13;Yes)、操作位置の移動方向を判定する(ステップS101)。
制御部140は、ステップS101で判定した移動方向に基づき、通常処理を行うか否かを判定する(ステップS102)。通常処理を行う場合(ステップS102;No)、ステップS14に移行して、トラックパッド14上の操作位置に対応する表示可能領域Dの表示位置に、ポインターPを移動させ(ステップS14)、本処理を終了する。
また、通常処理を行わない場合(ステップS102;No)、制御部140はステップS15に移行する。
第7の実施形態の動作によれば、トラックパッド14の実際の操作位置の移動量より大きくポインターPを移動させる処理を、トラックパッド14における特定の方向に対する操作に限定して行うことができる。例えば、Y方向のスライドジェスチャーを上記処理の対象としてもよく、X方向のスライドジェスチャーに対しては通常処理を行ってもよい。この場合、トラックパッド14がX方向に長い、横長の形状である場合に有用である。つまり、トラックパッド14の形状が、X方向やY方向に長い形状である場合等、操作位置の移動量の確保が難しい方向についてのみ、上記処理を行う構成とすることができる。
ステップS42では、ステップS41で判定した方向が、設定された方向に該当するか否かを判定するが、この判定において、正確に特定の方向に移動した場合に限らず、特定の方向と見なすことができる範囲を設定してもよい。すなわち、上記処理を行う方向の範囲が予め設定され、操作位置の移動方向が、上記範囲に含まれる場合に、ステップS42で否定判定する構成であってもよい。
[第8の実施形態]
図19は、第8の実施形態におけるHMD100の動作を示すフローチャートである。図20は、第8の実施形態におけるトラックパッド14及び仮想入力平面IPの対応を示す模式図である。第8の実施形態において、HMD100の構成は第1の実施形態と同様である。このため、HMD100の構成に関して図示及び説明を省略する。
第8の実施形態で、HMD100は、トラックパッド14に対して複数の位置で接触する操作が行われた場合、これら複数の位置における接触操作に応じた処理を実行する。
図19に示すステップS11〜S19の動作は、上述した第1〜第3実施形態と同様である。
第8の実施形態において、制御部140は、入力情報取得部110により検出されたトラックパッド14の操作位置を取得し(ステップS12)、取得した操作位置が複数であるか否かを判定する(ステップS111)。操作位置が1箇所である場合(ステップS111;No)、制御部140はステップS13に移行する。
操作位置が複数である場合(ステップS111;Yes)、制御部140は、操作位置が移動しているか否かの判定を行う(ステップS112)。制御部140は、操作位置が移動しない間は(ステップS112;No)、移動するまで待機する。この待機中、制御部140は、入力情報取得部110から入力される操作データに基づき操作位置の検出を継続して行う。また、ステップS112で、制御部140は、複数の操作位置のうち少なくともいずれかが移動した場合に、操作位置が移動したと判定する。
操作位置が移動したと判定した場合(ステップS112;Yes)、制御部140は、操作位置が停止したか否かを判定する(ステップS113)。操作位置が停止しない間(ステップS113;No)、停止するまで待機する。この待機中、制御部140は、入力情報取得部110から入力される操作データに基づき操作位置の検出を継続して行う。
操作位置が停止した場合(ステップS113;Yes)、制御部140は、操作位置の数、及び、操作位置の移動に応じて、入力データの移動パラメーターを算出する(ステップS114)。入力データの移動パラメーターは、例えば、入力位置の移動の開始位置、入力位置の移動方向、及び、入力位置の移動速度を示すデータを含む。
制御部140は、ステップS16で設定した移動パラメーターに従って入力データの生成を開始し、生成する入力データに基づき右表示駆動部22及び左表示駆動部24にポインターPを表示させる処理を開始する(ステップS115)。制御部140が生成する入力データの入力位置が移動することにより、画像表示部20が表示するポインターPの表示位置が移動する。この後、制御部140は、入力データを所定周期(例えば、入力情報取得部110のサンプリング周期)で生成する処理を継続する。また、制御部140は、生成した入力データに基づきポインターPの表示位置を移動する処理を継続する。
ポインターPの表示位置が移動する間、制御部140は、トラックパッド14への接触の解除を監視する(ステップS116)。ステップS116で、制御部140は、トラックパッド14に対する全ての接触が解除されたか否かを判定する。トラックパッド14への接触が解除されていないと判定した場合(ステップS116;No)、制御部140は、ステップS116で接触位置の監視を継続し、入力データの生成とポインターPの表示位置の移動を継続する。
制御部140は、トラックパッド14への全ての接触が解除されたことを検出すると(ステップS116;Yes)、入力データの生成を停止し、これによりポインターPの移動を停止させて(ステップS19)、本処理を終了する。
ステップS114で、制御部140は、複数の操作位置のそれぞれが移動した方向、速度、移動量に基づき移動パラメーターを生成してもよい。また、制御部140は、複数の操作位置の相互の相対位置の変化を求め、相対位置の変化の方向、変化の速度、変化量に基づき移動パラメーターを生成してもよい。
ステップS114における制御部140の具体的な動作例を以下に挙げる。
(1)制御部140は、複数の操作位置のうち一部の操作位置が移動した場合に、移動していない側を検出対象として設定する。この場合、制御部140は、検出対象として設定した操作位置が移動した場合に、検出対象の操作位置の移動方向、移動速度、移動量等に対応する移動パラメーターを、例えば、ステップS16の処理と同様に生成する。(1)の動作を実行する場合、制御部140は、1つの操作位置を検出対象の操作位置として設定する。従って、3以上の操作位置を入力情報取得部110が検出した場合には、ステップS112で、いずれか1つの操作位置を除く他の操作位置が移動するまで待機する。さらに、制御部140は、検出対象の操作位置を設定した後、この検出対象の操作位置が移動するまで、ステップS112で待機する。
なお、これとは逆に、制御部140は、複数の操作位置のうち一部の操作位置が移動した場合に、移動した側を検出対象として設定してもよい。この例では、制御部140は、3以上の操作位置を入力情報取得部110が検出した場合に、ステップS112で、いずれか1つの操作位置が移動するまで待機する。さらに、制御部140は、検出対象の操作位置を設定した後、この検出対象の操作位置が移動するまで、ステップS112で待機する。
(2)制御部140は、複数の操作位置が移動した場合であって、複数の操作位置の移動方向が互いに平行である場合に、画像表示部20により表示する画像を拡大/縮小する入力データを生成するように、移動パラメーターを生成する。例えば、使用者が、複数の指を揃えてトラックパッド14上で移動させた場合に相当する。この場合、制御部140は、移動パラメーターの属性として、表示画像を拡大、或いは縮小を指示する入力データであることを示すデータを付加してもよい。また、制御部140が生成する入力データは、表示画像の拡大、縮小を指示するデータであってもよいし、表示倍率を指定し、或いは、表示倍率の増大/低下を指示するデータであってもよい。表示制御部170は、生成される入力データに従って、右表示駆動部22及び左表示駆動部24により表示する表示画像(例えば、ポインターP)の表示倍率を更新する。
(3)制御部140は、複数の操作位置が移動した場合であって、複数の操作位置の移動方向が平行でない場合に、X−Y座標が設定された仮想入力平面IPのZ軸方向(仮想入力平面IPに垂直な方向)に対する入力データを生成する処理を行ってもよい。
この場合、オペレーティングシステム150を含む制御装置10が、三次元の位置入力を受け付ける構成である。制御装置10は、仮想入力平面IP内における二次元の位置入力、及び、仮想入力平面IPを基準として、例えば仮想入力平面IPに垂直な方向を座標軸とする位置入力を検出可能である。すなわち、仮想入力平面IPの面内のX−Y座標と、仮想入力平面IPに垂直なZ軸方向の位置入力とを受け付けて処理を実行できる。つまり、制御装置10は、仮想入力平面IPを含む仮想入力空間を有し、この仮想入力空間における位置や方向を定める入力データを、仮想入力平面IPを基準として処理できる。
図20には、トラックパッド14において操作位置A31と操作位置A33に操作体が接触し、操作位置A31から操作位置A32に移動する操作AT31と、操作位置A33から操作位置A34に移動する操作AT32とが実行される例を示す。操作AT31、AT32により、トラックパッド14における2つの操作位置は互いに接近するように移動する。
制御部140は、操作AT31、AT32により2つの操作位置が近づくことに対応して、仮想入力平面IPにおいてZ軸方向に入力位置が移動する入力データを生成するための移動パラメーターを生成する。図20の例では、仮想入力平面IPに対して入力位置がZ軸の正方向に移動する入力データが生成される。また、制御部140は、トラックパッド14において2つの操作位置の間の距離が拡大する操作を検出した場合、仮想入力平面IPに対して入力位置がZ軸の負方向に移動する入力データを生成してもよい。この場合、Z軸方向に移動する入力位置の基点を、複数の操作位置の中心、或いは重心に相当する入力位置IA11としてもよい。
(3)の例は、(2)で説明したように複数の操作位置が移動する場合と組み合わせることができる。この場合、操作位置が平行移動した場合は表示画像を拡大/縮小する入力データを生成し、複数の操作位置の距離が変化する場合は仮想入力平面IPにおいてZ軸方向に入力位置が移動する入力データを生成するよう、移動パラメーターを設定してもよい。また、複数の操作位置が平行に移動する場合に、複数の操作位置の移動方向及び移動量に対応して、仮想入力平面IPにおいてZ軸方向に入力位置が移動する入力データを生成、移動パラメーターを設定してもよい。また、複数の操作位置が水平に移動する場合は表示画像を拡大/縮小する入力データを生成し、複数の操作位置が水平でない移動、すなわち相互の距離が変化するように移動する場合はZ軸方向に入力位置が移動する入力データを生成するよう、移動パラメーターを設定してもよい。
(4)制御部140は、3以上の操作位置が同時に移動した場合に、これら3以上の操作位置の移動に対応して、X−Y座標が設定された仮想入力平面IPのZ軸方向(仮想入力平面IPに垂直な方向)に対する入力データを生成する処理を行ってもよい。この場合、制御部140は、複数の操作位置の移動方向、移動速度、及び移動量の少なくともいずれかについて、平均を求める等の演算処理を実行し、操作位置の移動方向、移動速度あるいは移動量の代表値を求める。制御部140は、代表値に基づいて、移動パラメーターを生成してもよい。この場合、制御部140は、仮想入力平面IPに対して入力位置がZ軸の正方向あるいは負方向に移動する入力データを生成できる。
制御部140は、上述した(1)、(2)、(3)、(4)の少なくともいずれかの動作、或いは2以上を組み合わせた動作を、ステップS114で実行することができる。これにより、トラックパッド14に対する多彩な操作に対応して、トラックパッド14に対する接触操作により、複雑な入力操作を行うことができる。
[第9の実施形態]
図21は、第9の実施形態におけるHMD100の動作を示すフローチャートである。第9の実施形態において、HMD100の構成は第1の実施形態と同様である。このため、HMD100の構成に関して図示及び説明を省略する。
第9の実施形態で、HMD100は、トラックパッド14に対する接触操作と、制御装置10を動かす、或いは制御装置10の姿勢を変化させる操作に応じて、入力データを生成する。
図21に示すステップS11〜S19の動作は、上述した第1〜第3実施形態と同様である。
制御部140は、操作位置が停止したことを検出した場合(ステップS15)、3軸センサー113の検出値に基づいて、制御装置10の傾き、及び/または、制御装置10の動きを検出する(ステップS121)。制御部140は、ステップS11で入力情報取得部110がタッチ操作を検出した後、3軸センサー113の検出値を、例えば設定されたサンプリング周期で取得し、その累積値に基づいて、制御装置10の姿勢を特定してもよい。また、制御部140は、ステップS13で操作位置が移動したことを検出した後に、3軸センサー113の検出値を、例えば設定されたサンプリング周期で取得し、その累積値に基づいて、制御装置10の姿勢を特定してもよい。また、制御装置10が地磁気センサー(図示略)を有する場合において、地磁気センサーの検出値に基づいて制御装置10の姿勢を検出してもよい。また、制御部140は、3軸センサー113の検出値をステップS121で取得して、取得した検出値に基づき制御装置10の姿勢を検出してもよい。
制御部140は、ステップS121で検出した制御装置10の傾き、及び/または、制御装置10の動きと、ステップS12〜S15で検出した操作位置に対応して、移動パラメーターを算出する(ステップS122)。ステップS122で、制御部140は、入力位置の移動の開始位置、入力位置の移動方向、及び、入力位置の移動速度を示すデータ等を含んでもよい。また、移動パラメーターは、移動量を示すデータを含んでもよい。また、移動パラメーターは、仮想入力平面IPに対して垂直な方向の入力位置の移動を含む入力データを生成するデータであってもよい。
ステップS122で、制御部140は、例えば、トラックパッド14における操作位置の軌跡、移動速度、移動方向、移動量等に基づいて移動パラメーターを生成してもよい。さらに、制御部140は、生成した移動パラメーターを、ステップS121で検出した制御装置10の傾き(姿勢)及び/または制御装置10の動きに基づいて、補正あるいは修正してもよい。具体的な例を挙げると、制御装置10が予め設定された方向に傾いたことをステップS121で検出した場合、制御部140は、移動パラメーターのうち入力位置の移動速度を示すデータを更新してもよい。この場合、制御部140は、制御装置10が所定方向に傾いた場合に、入力位置の移動速度を増加させるように移動パラメーターを更新してもよい。また、上記所定方向とは逆の方向に制御装置10が傾いた場合に、入力位置の移動速度を低下させるように移動パラメーターを更新してもよい。或いは、制御部140は、制御装置10が所定方向に動いた場合に、入力位置の移動速度を増加させるように移動パラメーターを更新してもよい。また、上記所定方向とは逆の方向に制御装置10が動いた場合に、入力位置の移動速度を低下させるように移動パラメーターを更新してもよい。
また、制御部140は、制御装置10の傾きに対応して、トラックパッド14と仮想入力平面IPとの相対位置を変化させてもよい。例えば、初期状態において、図6に示したようにトラックパッド14と仮想入力平面IPとが平行であり、トラックパッド14におけるX−Y軸と仮想入力平面IPのX−Y軸とが平行な状態として設定される。制御部140は、ステップS121で検出した制御装置10の傾きに応じて、トラックパッド14に対する仮想入力平面IPの傾きを変化させてもよい。
このように、HMD100は、トラックパッド14を有する制御装置10の姿勢または姿勢の変化を検出する3軸センサー113を備える。制御部140は、ポインターPの表示位置が移動する間に、3軸センサー113が検出する制御装置10の姿勢または姿勢の変化に対応して、入力データを生成する。これにより、制御部140は、ポインターPの表示位置の移動方向及び移動速度の少なくともいずれかを変化させる。このため、簡単な操作によって、表示オブジェクトであるポインターPの表示位置の移動の態様を、高い自由度で制御できる。
[その他の変形例]
以下、図22〜図25を参照して、上記各実施形態の変形例を説明する。
図22はトラックパッド14の変形例として、円形のトラックパッド14aを示す図である。トラックパッド14aは、トラックパッド14と同様に、接触操作を検出する操作面として機能する。HMD100がトラックパッド14aを備える場合、入力情報取得部110は、トラックパッド14aにおける操作を、例えば図22に符号X、Yで示す直交座標系における座標として検出する。トラックパッド14aは、X軸方向、及びY軸方向において、操作位置を大きく移動させることができないが、上記第1〜第9実施形態を適用することで、トラックパッド14における操作位置の移動量よりも大きく、ポインターPを動かすことができる。トラックパッド14aは、トラックパッド14と同様に、制御部140が操作位置の移動の方向を検出可能なサイズがあればよいので、図22に示すように、画像表示部20の表示領域とは異なる形状であってもよい。
従って、図22に示す円形のトラックパッド14aや、細長い形状など、様々な形状のトラックパッドを用いて、ポインターPを大きく動かすことができ、高い操作性を実現できる。
図23は、制御装置10の本体に設けたトラックパッド14(図1)に代えて、画像表示部20の側面にトラックパッド14bを配置する変形例を示す。トラックパッド14bは、トラックパッド14と同様に、接触操作を検出する操作面として機能する。
図23の例では、画像表示部20の側面を、使用者が指で擦るような動作で、スライドジェスチャーを実行できる。この場合も、トラックパッド14bの面積を大きくすることは容易でないが、上記第1〜第9実施形態を適用することで、高い操作性を実現できる。
図24は、指輪型のデバイス71の表面に、トラックパッド14と同様に接触操作を検出可能なトラックパッド14cを配置する例を示す。トラックパッド14cは、トラックパッド14と同様に、接触操作を検出する操作面として機能する。
トラックパッド14cはデバイス71の表面の一部または全部に形成され、トラックパッド14cの外観がデバイス71の表面と一体化した構成とすることができる。トラックパッド14cは、デバイス71の表面に対する接触を検出できればよく、接触を検出するための回路等がデバイス71の内部に埋設または収容された構成であってもよい。つまり、デバイス71の表面が、操作を検出するための回路等と一体に構成されていなくてもよく、当該回路の一部を構成していなくてもよい。
デバイス71は、例えば制御装置10の通信部117との間で無線通信を実行し、制御部140が、トラックパッド14cにおける操作位置を検出可能な構成とすることができる。
この場合、上記第1〜第9実施形態を適用することで、小さな指輪型のデバイス71に対する接触操作により、ポインターPを自在に動かすことができる。
図25は、ペン型のデバイス72の側面に、トラックパッド14と同様に接触操作を検出可能なトラックパッド14dを配置する例を示す。トラックパッド14dは、トラックパッド14と同様に、接触操作を検出する操作面として機能する。トラックパッド14dはデバイス72の表面の一部または全部に形成され、トラックパッド14cの外観がデバイス72の表面と一体化した構成とすることができる。トラックパッド14dは、デバイス72の表面に対する接触を検出できればよく、接触を検出するための回路等がデバイス72の内部に埋設または収容された構成であってもよい。つまり、デバイス72の表面が、操作を検出するための回路等と一体に構成されていなくてもよく、当該回路の一部を構成していなくてもよい。
デバイス72は、例えば制御装置10の通信部117との間で無線通信を実行し、制御部140が、トラックパッド14dにおける操作位置を検出可能な構成とすることができる。また、デバイス72は実際に筆記具として使用可能な構成を具備してもよい。このデバイス72を用いた構成に、上記第1〜第9実施形態を適用することで、小さなペン型のデバイス71に対する接触操作により、ポインターPを自在に動かすことができる。
トラックパッド14c、14dに対する操作は、手指等によるタッチ(接触)操作、及び、接触した手指の接触を維持したまま動かす操作等である。制御部140は、トラックパッド14c、14dに対する接触を検出した場合、この接触が維持される間、すなわち接触が解除されるまで、操作が終了していないと判定する。言い換えれば、トラックパッド14c、14dに対する手指の接触が解除されると、操作が終了したと判定する。従って、使用者がトラックパッド14c、14dに手指を接触させて動かす操作を行った場合、この手指を使用者がトラックパッド14c、14dから離すまでの間、表示オブジェクトであるポインターPや画面M1〜M6の表示位置が移動する。
立体物の表面を操作面とする構成の別の例として、例えば、自動車のハンドルの表面を操作面とし、ハンドルの表面に対する接触操作を検出する構成とすることができる。
また、上記各実施形態で説明したトラックパッド14、14a、14b、14c、14d等の操作面を複数の領域に分割し、それぞれの領域を操作面として使用する構成とすることもできる。この場合、制御部140は、それぞれの領域における1または複数の操作位置の移動に対応して、移動パラメーターを設定し、入力データを生成してもよい。また、制御部140は、複数の操作面において検出された操作位置の移動に対応して、移動パラメーターを設定し、入力データを生成してもよい。
なお、この発明は上記各実施形態及び変形例の構成に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能である。
例えば、上記実施形態において、画像表示部20に代えて、例えば帽子のように装着する画像表示部等の他の方式の画像表示部を採用してもよい。使用者の左眼に対応して画像を表示する表示部と、使用者の右眼に対応して画像を表示する表示部とを備えていればよい。また、本発明の表示装置は、例えば、自動車や飛行機等の車両に搭載されるヘッドマウントディスプレイとして構成されてもよい。また、例えば、ヘルメット等の身体防護具に内蔵されたヘッドマウントディスプレイとして構成されてもよいし、自動車のフロントガラスに用いられるヘッドアップディスプレイ(Head-up Display;HUD)であってもよい。
上記各実施形態及び変形例では、表示オブジェクトとして、ポインターP、或いは、図8に示したリング型のUIにおける画面M1〜M6を例示した。本発明はこれに限定されず、操作面に対する操作に応じて表示位置を移動できるものであれば、表示オブジェクトとして本発明を適用できる。例えば、制御装置10が実行するアプリケーションプログラムやゲーム等のコンテンツ内に表示される表示物を、表示オブジェクトとして、本発明を適用してもよい。
さらに、上記実施形態では、画像表示部20と制御装置10とが分離され、接続部40を介して接続された構成を例に挙げて説明したが、制御装置10と画像表示部20とが一体に構成され、使用者の頭部に装着される構成とすることも可能である。
また、例えば、画像表示部20において画像光を生成する構成として、有機EL(有機エレクトロルミネッセンス、Organic Electro-Luminescence)のディスプレイと、有機EL制御部とを備える構成としてもよい。また、画像光を生成する構成として、LCOS(Liquid crystal on silicon, LCoSは登録商標)や、デジタル・マイクロミラー・デバイス等を用いることもできる。また、例えば、レーザー網膜投影型のヘッドマウントディスプレイに対して本発明を適用することも可能である。すなわち、画像生成部が、レーザー光源と、レーザー光源を使用者の眼に導く光学系とを備え、レーザー光を使用者の眼に入射させて網膜上を走査し、網膜に結像させることにより、使用者に画像を視認させる構成を採用してもよい。レーザー網膜投影型のヘッドマウントディスプレイを採用する場合、「画像光生成部における画像光の射出可能領域」とは、使用者の眼に認識される画像領域として定義することができる。
画像光を使用者の眼に導く光学系としては、外部から装置に向けて入射する外光を透過する光学部材を備え、画像光とともに使用者の眼に入射させる構成を採用できる。また、使用者の眼の前方に位置して使用者の視界の一部または全部に重なる光学部材を用いてもよい。さらに、レーザー光等を走査させて画像光とする走査方式の光学系を採用してもよい。また、光学部材の内部で画像光を導光させるものに限らず、使用者の眼に向けて画像光を屈折及び/または反射させて導く機能のみを有するものであってもよい。
また、本発明を、MEMSミラーを用いた走査光学系を採用し、MEMSディスプレイ技術を利用した表示装置に適用することも可能である。すなわち、画像表示素子として、信号光形成部と、信号光形成部が射出する光を走査するMEMSミラーを有する走査光学系と、走査光学系により走査される光によって虚像が形成される光学部材とを備えてもよい。この構成では、信号光形成部が射出した光がMEMSミラーにより反射され、光学部材に入射し、光学部材の中を導かれて、虚像形成面に達する。MEMSミラーが光を走査することにより、虚像形成面に虚像が形成され、この虚像を使用者が眼で捉えることで、画像が認識される。この場合の光学部品は、例えば上記実施形態の右導光板261及び左導光板262のように、複数回の反射を経て光を導くものであってもよく、ハーフミラー面を利用してもよい。
また、本発明の表示装置は頭部装着型の表示装置に限定されず、フラットパネルディスプレイやプロジェクター等の各種の表示装置に適用できる。本発明の表示装置は、外光とともに画像光により画像を視認させるものであればよく、例えば、外光を透過させる光学部材により画像光による画像を視認させる構成が挙げられる。具体的には、上記のヘッドマウントディスプレイにおいて外光を透過する光学部材を備えた構成の他、使用者から離れた位置に固定的に、又は可動に設置された透光性の平面や曲面(ガラスや透明なプラスチック等)に画像光を投射する表示装置にも適用可能である。一例としては、車両の窓ガラスに画像光を投射し、乗車している使用者や車両の外にいる使用者に、画像光による画像とともに、車両内外の景色を視認させる表示装置の構成が挙げられる。また、例えば、建物の窓ガラスなど固定的に設置された透明また半透明、或いは有色透明な表示面に画像光を投射し、表示面の周囲にいる使用者に、画像光による画像とともに、表示面を透かして景色を視認させる表示装置の構成が挙げられる。
また、本発明は、外光とともに画像を視認させる表示装置に限らず、各種の表示装置に適用可能であり、例えば外景を視認できない状態で画像を表示する表示装置にも適用可能である。具体的には、カメラ61の撮像画像、この撮像画像に基づき生成される画像やCG、予め記憶された映像データや外部から入力される映像データに基づく映像等を表示する表示装置に、本発明を適用できる。この種の表示装置としては、外景を視認できない、いわゆるクローズ型の表示装置を含むことができる。また、AR表示、MR表示、或いはVR表示といった処理を行わず、外部から入力される映像データまたはアナログ映像信号を表示する表示装置も、本発明の適用対象として勿論含まれる。
また、図2に示した各機能ブロックのうち少なくとも一部は、ハードウェアで実現してもよいし、ハードウェアとソフトウェアの協働により実現される構成としてもよく、図2に示した通りに独立したハードウェア資源を配置する構成に限定されない。また、制御部140が実行するプログラムは、記憶部120又は制御装置10内の記憶装置に記憶されてもよいし、外部の装置に記憶されたプログラムを通信部117又はインターフェイス125を介して取得して実行する構成としてもよい。
また、本発明は、制御装置10が実行するプログラムを記憶した記憶媒体、プログラムを配信するサーバー装置、上記プログラムを伝送する伝送媒体、上記プログラムを搬送波内に具現化したデータ信号等の形態で実現することもできる。記憶媒体としての記憶部120は、磁気的、光学的記憶媒体あるいは半導体メモリーデバイスを用いるもののいずれであってもよく、その他の種類の記憶媒体を使用してもよい。この記憶媒体は、メモリーカード等の可搬型記憶媒体であってもよく、その他の具体的な実装形態も任意である。
上記プログラムは、制御装置10のオペレーティングシステム150上で動作する単体のアプリケーションプログラムとして実装することができる。また、上記プログラムは、オペレーティングシステム150、オペレーティングシステム150の一部として、あるいはオペレーティングシステム150と協働して動作するデバイスドライバーの機能として実装してもよい。或いは、これらとともに実行されるアプリケーションプログラムの機能として実装されてもよい。例えば、トラックパッド14、14a、14b、14c、14dを制御するデバイスドライバープログラムの機能として実装してもよい。また、オペレーティングシステム150においてトラックパッド14、14a、14b、14c、14dの操作を受け付けるプログラムモジュールの機能として実装してもよい。また、複数のアプリケーションプログラムにより、上記プログラムを実現する構成であってもよく、具体的なプログラムの形態は任意である。
また、制御部140が実行するプログラムの機能、すなわち制御部140が備える各処理部(例えば、画像処理部160、表示制御部170、操作検出部183、GUI制御部185、音声処理部190、或いはその他の生成部、判定部、特定部等)を、当該機能を実現するために設計されたASIC(Application Specific Integrated Circuit:特定用途向け集積回路)やSoC(System on a Chip)を用いて構成してもよい。また、FPGA(Field-Programmable Gate Array))等のプログラマブルデバイスにより実現してもよい。
また、制御装置10に形成された構成のうち、操作部111のみが単独の使用者インターフェイス(UI)として形成されてもよい。また、制御装置10に形成された構成が重複して画像表示部20に形成されていてもよい。例えば、図2に示す制御部140が制御装置10と画像表示部20との両方に形成されていてもよいし、制御装置10に形成された制御部140と画像表示部20に形成されたCPUとが行う機能が別々に分けられている構成としてもよい。