【文献】
松田晃一,外2名,「3Dユーザインタフェース」,丸善株式会社,2005年,初版,p.171-175,216,231-232
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0017】
以下では、本発明の実施形態について図面に基づいて説明する。出現する構成要素のうち同一機能を有するものには同じ符号を付し、その説明を省略する。
【0018】
図1は、本発明の実施形態にかかる画像処理装置1のハードウェア構成の一例を示す図である。画像処理装置1は、パーソナルコンピュータや家庭用ゲーム機、または携帯情報端末である。画像処理装置1は、プロセッサ11、記憶部12、通信部13、操作入力部14、表示制御部15を含む。
【0019】
プロセッサ11は、記憶部12に格納されているプログラムに従って動作し、通信部13や操作入力部14、表示制御部15等を制御する。なお、上記プログラムは、フラッシュメモリ等のコンピュータで読み取り可能な記憶媒体に格納されて提供されるものであってもよいし、インターネット等のネットワークを介して提供されるものであってもよい。
【0020】
記憶部12は、DRAMやフラッシュメモリ等のメモリ素子によって構成されている。記憶部12は、上記プログラムを格納する。また、記憶部12は、プロセッサ11や通信部13等から入力される情報や演算結果を格納する。
【0021】
通信部13は有線LANや無線LANを構成する集積回路やコネクタ、アンテナなどにより構成されている。通信部13は、ネットワークを介して他の装置と通信する機能を有する。通信部13は、プロセッサ11の制御に基づいて、他の装置から受信した情報をプロセッサ11や記憶部12に入力し、他の装置に情報を送信する。
【0022】
操作入力部14は、ユーザの操作を検出するハードウェアからの入力を取得する回路である。操作入力部14は、例えばユーザが位置を入力する位置入力デバイスやキーボード等の入力デバイスから入力を取得し、検出された情報をプロセッサ11や記憶部12に入力する。
【0023】
表示制御部15はディスプレイ等の表示出力デバイスを制御する回路を含んでいる。表示制御部15は、プロセッサ11の制御に基づいて、表示出力デバイスに画像を表示させる。
【0024】
図2は、ユーザ61が画像処理装置1を使用する際の入力デバイス等の使用方法の一例を説明する図である。
図2の例は、ユーザ61を上からみた図である。本実施形態の例では、入力デバイスとしてモーションコントローラ62,63、カメラ64を用い、表示出力デバイスとしてヘッドマウントディスプレイ65を用いる。
【0025】
モーションコントローラ62,63のそれぞれは、カメラに位置を認識させるためのボール部と、ユーザ61に握らせるための把持部とを有する。把持部には、ボタンが設けられており、ユーザ61がボタンを操作すると、モーションコントローラ62,63は無線を介して操作入力部14へそのボタンの操作の情報を送信し、操作入力部14はその情報を取得する。カメラ64は、モーションコントローラ62,63のボール部を含む画像を撮影し、その撮影された画像内でのボール部の位置および大きさに基づいて、モーションコントローラ62,63が実空間において指示する実指示位置を検出する。操作入力部14は、その検出されたモーションコントローラ62,63の実指示位置を取得する。
【0026】
ヘッドマウントディスプレイ65は、ユーザ61の頭部に装着するディスプレイであり、ユーザ61の目前に画像を表示する。その表示された画像が視差を考慮したものである場合は、ユーザ61は画像に含まれる物体を立体的に認識することができる。ヘッドマウントディスプレイ65は、ユーザ61にとって臨場感が高い画像を表示することができる。
【0027】
図3は、表示される画像の一例を示す図である。本実施形態で表示される画像は、仮想空間内のユーザ61の位置(以下では「仮想代表位置」と記載する)における視点の向きに対する3次元画像である、この画像において、モーションコントローラ62,63が指示する実指示位置に相当する仮想空間内の位置(以下では「仮想指示位置」とも呼ぶ)に指示オブジェクト72,73が表示されている。また、モーションコントローラ62,63の操作により仮想代表位置が移動したり、仮想空間におけるユーザ61の視点の向き(以下では「仮想視点方向」と記載する)が変化したり、仮想空間内で画像が描画される範囲内にあるオブジェクトの位置や向きが変化すると、画像処理装置1はそれらの変化が反映された画像を描画し、その画像をヘッドマウントディスプレイ65に表示させる。
【0028】
本実施形態にかかる画像処理装置1は、所定の操作をしている間(例えばユーザ61がボタンを押してから離すまでの間)の、モーションコントローラ62,63のうちいずれかの動きの水平成分に基づいて、仮想代表位置を移動させている。
図4は、実指示位置が手前に動く場合の仮想代表位置の動きを模式的に示す図であり、
図5は、実指示位置が遠方へ動く場合の仮想代表位置の動きを模式的に示す図である。例えば、ユーザ61が、モーションコントローラ62,63を手前に動かすと仮想代表位置が前進し(
図4の破線で描かれた矢印参照)、モーションコントローラ62,63を前方へ動かすと仮想代表位置が後退する(
図5の破線で描かれた矢印参照)。また、
図6は実指示位置が右へ動く場合の仮想代表位置の動きを模式的に示す図である。例えば、ユーザ61がモーションコントローラ62,63を右方向に動かすと、仮想代表方向はその動いた向きと反対の方向(左方向)へ向けて回転する(
図6の破線で描かれた矢印参照)。
【0029】
別の言い方をすると、ユーザがボタンを押し続けている間のモーションコントローラ62または63の仮想指示位置の移動を制限し、その後のモーションコントローラ62または63の移動では、モーションコントローラ62または63とユーザ61との水平的な位置関係が維持されるように仮想代表位置や仮想視点方向を決定している。このような動作は壁の手すり等の物体を掴んで移動する動作にも似ており、直観的に理解しやすい動作である。
【0030】
なお、ユーザ61がボタンを押下してから離すまでのモーションコントローラ62,63のうちいずれかの動きの代わりに、ユーザ61がボタンを押下してから次に押下するまでの動きに基づいて画像処理装置1が仮想代表位置を移動させてもよい。
【0031】
以下では実指示位置の動きから仮想代表位置の動きを決定し画像を描画する処理について説明する。
図7は、本発明の実施形態にかかる画像処理装置1が実現する機能を示すブロック図である。画像処理装置1は機能的に、実位置取得部51、モード決定部52、基準位置設定部53、仮想位置決定部54、オブジェクト位置決定部55、画像描画部56を含む。
【0032】
実位置取得部51は、主に、プロセッサ11が記憶部12に記憶されるプログラムを実行し、モーションコントローラ62または63やカメラ64からの情報を取得する操作入力部14からの情報を処理し、処理結果を記憶部12に格納することにより実現される。モード決定部52、基準位置設定部53、仮想位置決定部54、オブジェクト位置決定部55は、主に、プロセッサ11が記憶部12に記憶されるプログラムを実行し、記憶部12等に格納された情報を処理し、処理結果を記憶部12に格納することにより実現される。画像描画部56は、主に、プロセッサ11が記憶部12に記憶されるプログラムを実行し、記憶部12等に格納された情報を処理し、表示出力デバイスが画像を表示するよう表示制御部15を制御することにより実現される。
【0033】
実位置取得部51は、実空間においてユーザ61により指示された実指示位置を取得する。また、実位置取得部51は、実空間におけるユーザ61の位置(「実代表位置」と呼ぶ)を取得する。実位置取得部51が取得する実指示位置および実代表位置は、3次元空間における位置である。実指示位置はモーションコントローラ62,63が指示する位置であり、実代表位置は例えばヘッドマウントディスプレイ65の位置である。
【0034】
モード決定部52は、ユーザ61の操作に基づいて、現在のモードが、ナビゲーションモードであるか否かを決定する。ナビゲーションモードは、仮想代表位置を移動させるモードであり、ナビゲーションモードが設定されている期間は、ユーザ61がボタンの押下などの所定の操作をしている期間である。また、モード決定部52は、ユーザ61の操作がされた実位置が第1の領域または第2の領域に含まれるか否かに基づいて、ナビゲーションモードにおいて、仮想代表位置を変更可能とするか否かのフラグ(移動フラグ)と、仮想視点方向を変更可能とするか否かのフラグ(回転フラグ)とを設定する。
【0035】
基準位置設定部53は、ユーザ61の操作に基づいて、仮想代表位置や仮想視点方向を決定する際に基準となる、ボタン押下時の実指示位置(基準位置)と、ボタン押下時の実代表位置(基準実代表位置)、仮想代表位置(基準仮想代表位置)および仮想視点方向(基準視点方向)とを記憶部12に記憶させる。なお、本実施形態では、仮想視点方向は高さ方向を軸とした角度で表され、上下方向の成分は含まない。
【0036】
仮想位置決定部54は、所定の入力をしている間におけるた実指示位置の動きに基づいて、仮想代表位置や仮想空間におけるユーザ61の仮想代表方向を決定する。別の見方では、仮想位置決定部54は実指示位置の移動量に応じて仮想代表位置の移動量が定まるように仮想代表位置を移動させる。より具体的には、仮想位置決定部54は、取得された実指示位置と、基準位置とに基づいて仮想代表位置や仮想視点方向を決定する。実指示位置が実代表位置に近づいた場合には、仮想位置決定部54は仮想代表位置が仮想指示位置に近づくように仮想代表位置を決定する。一方、実指示位置が実代表位置から遠ざかる場合には、仮想位置決定部54は仮想代表位置が仮想指示位置から遠ざかるように仮想代表位置を決定する。また、仮想位置決定部54は、現在の実指示位置が基準位置より実代表位置に近い場合に、現在の仮想代表位置が、基準仮想代表位置より実指示位置に対応する仮想指示位置に近づくように、仮想代表位置を決定する。仮想位置決定部54は、実指示位置の移動量が大きいほど、仮想代表位置の移動量も大きくなるように仮想代表位置を決定する。
【0037】
オブジェクト位置決定部55は、オブジェクトの動作を定義するデータや他のオブジェクトとの衝突の有無に基づいて、現時点における仮想空間内のオブジェクトの位置や向きを決定する。
【0038】
画像描画部56は、決定された仮想代表位置や仮想視点方向と、決定されたオブジェクトの位置や向きとに基づいて、仮想空間におけるオブジェクトの3次元画像を描画する。
【0039】
図8は、画像処理装置1の処理フローの一例を示す図である。はじめに、実位置取得部51は、実指示位置やボタン操作を取得する(ステップS101)。実位置取得部51は、そのボタン操作として、例えば、現時点でボタンが押されているか、ボタンが新たに押下されたか、ボタンが離されたか、のそれぞれを検出する。また、実位置取得部51は現在の実指示位置および実代表位置も取得する。
【0040】
次に、モード決定部52は、ユーザ61のボタン操作や実指示位置に基づいて、現在の動作モードを決定する(ステップS102)。具体的には、モード決定部52は、現在の動作モードがナビゲーションモードであるか否かを決定するとともに、ナビゲーションモードの場合にはモーションコントローラ62,63のうち仮想代表位置や仮想視点方向の変更に用いられるもの(「対象コントローラ」と記載する)を示す対象コントローラ情報、移動フラグおよび回転フラグを設定する。なお、現在のモードが新たに、ナビゲーションモードに決定されると、基準位置設定部53は、その時点における、実指示位置(基準位置)、実代表位置(基準実代表位置)、仮想代表位置(基準仮想代表位置)、仮想視点方向(基準視点方向)を記憶部12に記憶させる。
【0041】
以下では、ステップS102およびこれに関連する処理について説明する。
図9は、モード決定部52および基準位置設定部53の処理フローの一例を示す図である。モード決定部52は、はじめに、モーションコントローラ62,63からの入力に基づいて、ユーザ61がモーションコントローラ62,63のいずれかに含まれるボタンを新たに押下したか否かを検出する(ステップS201)。ここで、ボタンが新たに押下された場合には(ステップS201のY)、モード決定部52はボタンが押下されたモーションコントローラを対象コントローラとして決定し、さらに対象コントローラの実指示位置がどの領域にあるかを判定する。より具体的には、モード決定部52は、その実指示位置が移動判定領域81にある場合(ステップS202のY)には、動作モードにナビゲーションモードを設定するとともに移動フラグをONに設定し(ステップS203)さらに対象コントローラを示す対象コントローラ情報を記憶部12に記憶させる。またその実指示位置が回転判定領域82にある場合には(ステップS204のY)、モード決定部52は動作モードにナビゲーションモードを設定するとともに回転フラグをONに設定し(ステップS205)、さらに対象コントローラを示す対象コントローラ情報を記憶部12に記憶させる。
【0042】
図10は、実空間における移動判定領域81と回転判定領域82とを説明する図である。
図10の例では、移動判定領域81はユーザ61の実代表位置dの前方にありかつ実代表位置dからの距離が所定の範囲にある領域である。また、回転判定領域82は、移動判定領域81の側方にありかつ実代表位置dからの距離が所定の範囲にある領域である。より具体的には、移動判定領域81は、実代表位置dからユーザ61の前方に延びる直線とのなす角が第1の閾値以下であり、かつ実代表位置dからの距離が所定の範囲にある領域である。回転判定領域82は、その角が第1の閾値より大きく第2の閾値以下でありかつ実代表位置dからの距離が所定の範囲にある領域である。なお、移動判定領域81と回転判定領域82とが重なっていてもよい。重なっている領域に実指示位置があった場合、仮想位置決定部54は仮想代表位置と仮想視点方向との両方の変更を行ってよい。
【0043】
ステップS204で実指示位置が回転判定領域82にない場合、またはステップS205の処理がなされた後に、基準位置設定部53は、新たにボタンが押下された時点の実指示位置を基準位置として記憶部12に記憶させ、また新たにボタンが押下された時点の実代表位置、仮想代表位置、仮想視点方向をそれぞれ基準実代表位置、基準仮想代表位置、基準視点方向として記憶部12に記憶させる(ステップS206)。記憶部12に記憶された基準位置、基準実代表位置、基準仮想代表位置は仮想位置決定部54にて仮想代表位置や仮想視点方向を決定する際に用いられる。ステップS206の処理は、ナビゲーションモードに設定された場合のみ行われてもよい。
【0044】
ここで、ステップS201においてユーザ61がボタンを新たに押下しておらず(ステップS201のN)、かつ、ユーザ61が対象コントローラ情報が示す対象コントローラのボタンを離した場合には(ステップS207のY)、モード決定部52は動作モードをナビゲーションモードと異なるモードに設定し、ナビゲーションモードを解除する(ステップS208)。ユーザ61がそのボタンを離していない場合には(ステップS207のN)、モード決定部52は動作モードを変更しない。
【0045】
ステップS102のモード決定部52の処理等が行われると、仮想位置決定部54は、現在の動作モードがナビゲーションモードか否かを判定する(ステップS103)。動作モードがナビゲーションモードである場合には(ステップS103のY)、仮想位置決定部54は仮想代表位置の移動または仮想視点方向を算出する(ステップS104)。動作モードがナビゲーションモードでない場合には(ステップS103のN)、ステップS104の処理をスキップする。その後、仮想位置決定部54はモーションコントローラ62,63の実指示位置に基づいて仮想指示位置を決定する(ステップS105)。
【0046】
図11は、仮想代表位置および仮想視点方向の決定についての処理フローの一例を示す図である。
図11は、ステップS104の処理の詳細を示す。
図11に示す処理において、はじめに、仮想位置決定部54は、実位置取得部51により取得された対象コントローラの現在の実指示位置cと、基準位置設定部53により記憶部12に格納された基準位置b、基準実代表位置p、基準視点方向とを取得する(ステップS301)。以下の処理では水平成分のみを利用するため、仮想位置決定部54は、例えば実指示位置c、基準位置b、基準実代表位置pが3次元の直交座標系の3つの値で表される場合は、仮想位置決定部54は実指示位置c、基準位置b、基準実代表位置pの高さ方向を除く座標の2つの値のみを取得してよい。
【0047】
次に、仮想位置決定部54は、基準位置bから実指示位置cへの移動ベクトルVの水平成分の距離方向成分Rと回転角θとを算出する(ステップS302)。
【0048】
図12は、実空間における基準位置bと実指示位置cと基準実代表位置pとの関係を示す図である。
図12は上から見た図であり、水平成分のみを示している。基準位置bから実指示位置cへ向かうベクトルの水平成分が、移動ベクトルVである。仮想位置決定部54は、基準実代表位置pから基準位置bへ向かう直線の水平成分へ、この移動ベクトルVの水平成分を射影したベクトルを、移動ベクトルVの距離方向成分Rとして取得する。また、仮想位置決定部54は、基準実代表位置pから基準位置bへ向かうベクトルと、基準実代表位置pから実指示位置cへ向かうベクトルとのなす角を、移動ベクトルVに関する回転角θとして取得する。ここで、回転角θは、移動ベクトルVの距離方向成分Rと異なる方向の成分(例えば距離方向に直交する方向の成分)に応じて定まる。なお、基準実代表位置pとして、新たにボタンが押下された時点の実代表位置の代わりに現在の実代表位置を用いてもよい。
【0049】
そして、仮想位置決定部54は、移動フラグが設定されている場合には(ステップS303のY)、記憶部12に記憶された仮想代表位置と移動ベクトルVの距離方向成分Rとから、現在の新たな仮想代表位置を算出する(ステップS304)。より具体的には、例えば、ステップS304において、仮想位置決定部54は、記憶部12に記憶された基準実代表位置pから、移動ベクトルVの距離方向成分Rの反対ベクトルの分だけ移動された実空間上の仮の位置を求め、その仮の位置を座標変換する。これにより、仮想位置決定部54はその仮の位置に相当する仮想空間内の位置を、新たな仮想代表位置(厳密には仮想代表位置のうち水平成分)として取得する。また、仮想位置決定部54は移動ベクトルVの距離方向成分Rの反対ベクトルに対して座標変換を行って仮想空間内の距離方向成分Rの反対ベクトルを取得し、基準時の仮想代表位置を取得された反対ベクトルだけ動かした位置を求めることで新たな仮想代表位置(仮想代表位置の水平成分)を取得してもよい。
【0050】
また、仮想位置決定部54は仮想代表位置の高さ成分を、取得された新たな仮想代表位置の水平位置における地面74の高さに基づいて取得する。
図13は、仮想空間におけるユーザ61を示すプロキシ71の一例を説明する図である。また、
図14は、仮想空間におけるプロキシ71と地面74との関係の一例を示す図である。プロキシ71の中心は、仮想代表位置に存在する。プロキシ71は、地面74からわずかに浮いており、高さ方向の軸に沿った回転であって水平面上で認識される回転のみが可能である。またプロキシ71の中心は、その水平位置における地面から一定の距離だけ離れている。仮想位置決定部54は、例えば、求められた新たな仮想代表位置の水平位置における地面74の高さに一定の値を加算することで、新たな仮想代表位置の高さを取得する。なお、仮想位置決定部54は、水平移動に伴う姿勢の変化等も考慮して仮想代表位置の高さを取得してもよい。
【0051】
新たな仮想代表位置が算出されると、仮想位置決定部54は、新たな仮想代表位置に基づいて、仮想代表位置の移動速度を算出する(ステップS304)。仮想位置決定部54は、単に新たな仮想代表位置と1つ前のフレームにおける仮想代表位置との差を移動速度として算出してもよいし、さらに姿勢変化等の他の要因にも基づいて移動速度を算出してもよい。
【0052】
なお、ステップS303において移動フラグが設定されていない場合(ステップS303のN)には、ステップS304とステップS305の処理はスキップされる。そして、仮想位置決定部54は、回転フラグが設定されているか否かを判定する(ステップS306)。回転フラグが設定されていない場合には(ステップS306のN)、ステップS307をスキップする。回転フラグが設定されている場合には(ステップS306のY)、仮想位置決定部54は、基準視点方向と回転角θとから、新たな仮想視点方向を算出する(ステップS307)。より具体的には、仮想位置決定部54は、基準視点方向を回転角(−θ)だけ回転させる(逆方向に回転させる)ことで、新たな仮想視点方向を算出する。なお、仮想位置決定部54は、実空間における、基準代表位置が記憶された時点の視点の向きと、現在における視点の向きとの差をさらに用いて仮想視点方向を算出してもよい。つまり、仮想位置決定部54は、基準視点方向を回転角(−θ)だけ回転させ、さらに実空間の回転方向に前述の差だけ回転させることにより、仮想視点方向を算出してよい。
【0053】
ステップS301からステップS307の処理等では、基準位置b、基準実代表位置p、基準仮想代表位置、基準視点方向として、1つ前のフレームにおける実指示位置、実代表位置、仮想代表位置、仮想視点方向を用いてもよい。
【0054】
これまでは、動作モードがナビゲーションモードの場合について説明した。一方、ステップS103において、動作モードがナビゲーションモードでない場合には(ステップS103のN)、この処理をスキップする。そして、仮想位置決定部54は決定された仮想代表位置や仮想視点方向に基づいて、モーションコントローラ62,63の実指示位置に対応する仮想指示位置を決定する(ステップS105)。そして、オブジェクト位置決定部55は現時点における仮想空間内のオブジェクトの位置や向きを決定し(ステップS106)、画像描画部56は、移動された仮想代表位置や仮想視点方向に基づいて、オブジェクトの三次元画像を描画する(ステップS107)。
【0055】
本実施形態では、基準位置から実指示位置までの移動のうち、ある方向の成分を仮想代表位置が移動する先の仮想代表位置の決定のために用い、その方向と異なる方向の成分に基づいて仮想視点方向の回転角を求めることで、実指示位置の移動だけで仮想代表位置の移動だけでなく視点の向きの変更も行うことが可能になる。また、基準位置bが移動判定領域81にある場合に仮想代表位置を求め、基準位置bが回転判定領域82にある場合に仮想視点方向を求めるようにすることで、回転を意図していない操作で回転してしまう現象や、移動を意図していない操作で移動してしまう現象の発生を抑え、ユーザ61が仮想代表位置や仮想視点方向を容易に調整することが可能になる。
【0056】
また、この画像処理装置1において、ユーザ61が左右のモーションコントローラ62,63を交互に仮想代表位置および仮想視点方向の変更に用いることで、ユーザ61が連続的かつ容易に仮想空間内を移動または回転することが可能になる。
図15は、両手を交互に動かすことによる仮想代表位置の移動を模式的に示す図である。例えば、右手で掴んでいるモーションコントローラ62を前に出した上でナビゲーションモードにてそのモーションコントローラ62を手前に動かすことで仮想空間内のユーザ61の位置を前方に動かす間に、左手で掴んでいるモーションコントローラ63を前に出し、モーションコントローラ62による移動が終わりナビゲーションモードを解除したらすぐに、ナビゲーションモードにてモーションコントローラ63を手前に動かす。本実施形態にかかる画像処理装置1がこういった動作を可能にすることで、仮想空間におけるユーザ61の位置が止まっている時間を最小化し、ユーザ61が直観的かつスムーズに仮想空間内を移動することが可能になる。
【0057】
ここで、動作モードがナビゲーションモードの場合に、画像描画部56がオブジェクトの三次元画像に加えて、ユーザ61の操作の目安となる操作ガイドの画像を描画してもよい。
図16は仮想空間に表示される操作ガイドの一例を示す図である。また、
図17は、仮想空間に表示される操作ガイドを用いた操作を説明する図である。
図16および
図17の例では、仮想空間において操作ガイドとして、ユーザ61の位置を中心とする環状の回転ガイド83と、ユーザ61の前方に向かう矢印の形を有する移動ガイド84とが表示されている。ユーザ61は、例えば
図17に示されるようにモーションコントローラ62,63が示す実指示位置が移動ガイド84をたぐり寄せるような動きをした場合に、仮想位置決定部54が仮想代表位置を移動させてもよい。この際、仮想代表位置の決定の手法は、これまでに説明したものと同じであってもよい。また、ナビゲーションモードにおいて仮想位置決定部54は、ユーザ61による回転ガイド83に沿った実指示位置の移動に応じて仮想視点方向を回転させてよい。
【0058】
ユーザ61が、モーションコントローラ62,63の実指示位置を操作ガイドに沿って動かすことをより、回転や移動のための操作をより直感的に行うことができる。
【0059】
また、移動ガイド84は必ずしも水平方向でなくてもよい。
図18は、仮想空間に表示される操作ガイドの他の一例を示す図である。
図18の例では、画像描画部56により表示される回転ガイド83は
図16の例と同様であるが、移動ガイド84は上下方向を向いている。例えば、仮想空間内で上下移動が可能な領域に仮想代表位置が存在しかつナビゲーションモードである場合に、画像描画部56が上下方向に延びる移動ガイド84を描画し、仮想位置決定部54はモーションコントローラ62,63のうち少なくとも一方の実指示位置が移動ガイド84に相当する仮想線に沿って移動した場合に、仮想位置決定部54は仮想代表位置をその移動ガイド84の方向(実指示位置の移動方向の逆方向)に移動させてよい。また、仮想位置決定部54は、実指示位置の移動ガイド84の方向に沿った移動量が大きくなるほどその仮想代表位置の移動量が大きくなるように仮想代表位置を決定する。
【0060】
また、仮想位置決定部54がナビゲーションモードにおけるユーザ61による実指示位置の移動のパターンに応じて仮想代表位置を決定してもよい。
図19は実指示位置の動きと仮想代表位置との関係の他の一例を示す図である。
図20は
図19の例における実指示位置の動きを側方から見た図である。
図19や20は、例えば仮想代表位置が水中にあるような場合の例である。
図19,20の実線は実指示位置の動きを示し、破線は仮想代表位置の動きを示す。実指示位置が水をかくような動きをした場合、仮想位置決定部54はその動きの移動量や向きに応じて仮想代表位置を移動させてよい。
図19,20の例においても、仮想位置決定部54は実指示位置の移動量が大きいほど、仮想代表位置の移動量が大きくなるように仮想代表位置を決定する。
【0061】
実指示位置の移動のパターンとして
図19と異なるものが用いられてもよい。
図21,22は、仮想ホイール85,86を用いた実指示位置の動きと仮想代表位置との関係を説明する図である。
図21,22の例では、仮想位置決定部54は、ナビゲーションモードにおける、ユーザ61の左右かつ腰から下の位置にある仮想ホイール85,86を回す実指示位置の動き(
図21の実線参照)に応じて仮想代表位置を決定する。その際、仮想位置決定部54は、実指示位置の移動量に応じた量だけ仮想代表位置が移動するように仮想代表位置を決定する。仮想ホイール85,86は、車いすの車輪のようなものである。ユーザ61がナビゲーションモードにおいて仮想ホイール85,86を回すように実指示位置を動かすと、仮想位置決定部54は、その動きによる仮想ホイール85,86の仮想的な回転に応じて仮想代表位置を移動させる。例えば、
図21のように、仮想ホイール85,86の両方について左右のモーションコントローラ62,63の実指示位置が同じ方向に回転する動きをした場合に、仮想位置決定部54は前方または後方に仮想代表位置を移動させる。この場合、仮想位置決定部54は実指示位置の移動量が大きいほど、仮想代表位置の移動量が大きくなるように仮想代表位置を決定する。また、
図22のように実指示位置の移動が示す仮想ホイール85,86の回転の向きが反対である場合には、仮想位置決定部54は仮想視点方向を回転させる。