以下、図面を参照しながら本発明の実施形態について詳しく説明する。なお、各図において同一部分には同一符号を付している。
[第1の実施形態]
まず、本発明の第1の実施形態について説明する。
本実施形態では、3次元の仮想空間(以下、単に仮想空間という)の画像を表示するHMD(Head Mounted Display)を装着したユーザが、コントローラを操作することにより、仮想空間内を移動可能な表示システムについて説明する。
図1は、第1の実施形態に係る表示システム1の一例を示す図である。図示する表示システム1は、HMD10と、コントローラ20と、表示制御装置30と、を備えている。図示する例では、HMD10及びコントローラ20と、表示制御装置30とは、画像や制御に必要な信号等を通信するために有線で接続されているが、有線接続に限らず、無線接続であってもよい。表示制御装置30は、例えば、ゲーム機、パーソナルコンピュータ等といった電子機器である。なお、表示制御装置30は、HMD10と一体に構成されていてもよい。例えば、HMD10は、表示制御装置30としての機能を有する携帯端末装置(例えば、スマートフォン)をユーザの頭部に装着可能なアタッチメントに装着して利用する構成であってもよい。
HMD10は、表示部の他にジャイロ等のセンサを搭載しており、装着されているユーザの頭部の動きの変化などを検知する。表示制御装置30は、検知結果に基づいて、そのユーザの頭部の動きの変化に応じて仮想空間の視界を変化させた画像をHMD10に表示させる。図1に示すように、ユーザの左右方向の軸をX軸、上下方向の軸をY軸、視線方向の軸をZ軸とすると、X軸を中心とした回転方向の動きがユーザの頭部の上下方向(ピッチ方向)の動きに相当し、Y軸を中心とした回転方向の動きがユーザの頭部の左右方向(ヨー方向)の動きに相当する。また、Z軸を中心とした回転方向の動きがユーザの頭部の傾き(ロール方向)の動きに相当する。
例えば、HMD10に表示される画像は、ユーザの頭部が右方向(または、左方向)を向けば仮想空間内の右方向(または、左方向)に見える画像に変化し、上方向(または、下方向)を向けば仮想空間内の上方向(または、下方向)に見える画像に変化する。また、表示制御装置30は、ユーザがコントローラ20を操作することにより仮想空間内を移動させ、当該移動に応じた画像をHMD10に表示させることができる。そのため、表示システム1は、VR(Virtual Reality)コンテンツをHMD10に表示させることで、あたかも当該コンテンツによる仮想空間内を実際に移動しているような没入感をユーザに与えることができる。
図2は、第1の実施形態に係るコントローラ20の一例を示す外観図である。図示するコントローラ20は、各種の操作ボタンや操作レバーなどの操作子を備えている。操作レバー21は、レバーを上下左右のいずれかの方向へ傾けることにより、仮想空間内におけるユーザの位置(すなわち、視点位置)を移動させるための移動操作の指示が可能な操作子である。以下では、仮想空間内におけるユーザの位置のことを、単に「ユーザの位置」或いは「視点位置」とも記載する。例えば、操作レバー21を上方向へ1回傾けるたびに、予め設定された距離の分、ユーザの位置(すなわち、視点位置)を前進させる指示を受け付ける。また、操作レバー21を下方向へ1回傾けるたびに、予め設定された距離の分、ユーザの位置(すなわち、視点位置)を後退させる指示を受け付ける。また、操作レバー21を左方向へ1回傾けるたびに、予め設定された距離の分、ユーザの位置(すなわち、視点位置)を左へ移動させる(向きは変更せずに)指示を受け付ける。また、操作レバー21を右方向へ1回傾けるたびに、予め設定された距離の分、ユーザの位置(すなわち、視点位置)を右へ移動させる(向きは変更せずに)指示を受け付ける。なお、操作レバー21を継続的に傾けた場合には、傾けている時間に応じた複数回分の指示を受け付けてもよい。
一方、操作レバー22は、仮想空間内におけるユーザの向き(すなわち、視点位置からの視線方向)を変位(回転変位)させるための回転操作の指示が可能な操作子である。以下では、仮想空間内におけるユーザの向きのことを、単に「ユーザの向き」とも記載する。例えば、操作レバー22を右方向へ1回傾けるたびに、予め設定された回転角変位量(回転角度)の分、右方向へ回転変位させる指示を受け付ける。また、操作レバー22を左方向へ1回傾けるたびに、予め設定された回転角変位量の分、左方向へ回転変位させる指示を受け付ける。なお、操作レバー22を継続的に傾けた場合には、傾けている時間に応じた複数回分の指示を受け付けてもよい。また、操作レバー22は、レバーを傾けながら右回転または左回転させることにより、回転方向へ回転変位させる指示を受け付けてもよい。例えば、操作レバー22を所定の角度以上回転させるたびに、予め設定された回転角変位量(回転角度)の分、回転方向へ回転変位させる指示を受け付けてもよい。
なお、コントローラ20は、図示するようなコントローラ面上に操作ボタンや操作レバーが配置されたものに限られるものではなく、操作レバーが中心となって構成されたジョイスティック型のコントローラであってもよいし、キーボード、モーションセンサを利用したコントローラ等であってもよい。また、操作レバーに限られるものではなく、例えば上下左右それぞれのボタンを有する十字ボタンなどが、前進及び後退の移動操作の指示または回転操作の指示を受け付ける操作子として機能してもよい。
例えば、コントローラ20を操作して、VRコンテンツの仮想空間内を移動していると、行き止まり等で、その場所から前進することも後退することも困難な特定の状態に陥ることがある。特定の状態とは、その場所から抜け出せない状態または抜け出しにくい状態である。具体的には、特定の状態とは、移動操作を行っても移動操作に応じた移動ができない移動不可の状態または移動しにくい状態であったり、回転操作を行っても回転操作に応じた回転変位ができない回転不可の状態または回転しにくい状態である。以下では、この特定の状態のことを、その場所から前進することも後退することも困難であることから「進退不可状態」とも記載する。進退不可状態に陥る例としては、仮想空間内において、移動可能な領域のうち隅の方の周囲が壁などで囲まれた狭い凹形状の場所に入ってしまった場合や、長く曲がり角の多い狭い道の奥まで移動してしまった場合等がある。このような場合、ユーザは、脱出するための正確な操作手順をふめば脱出が可能であったとしても、その状況を俯瞰して見ているわけではなく、その仮想空間内での視点で見ているため、正確な操作手順を行うことは非常に困難である。そのため、ユーザは、コントローラ20を操作して移動の指示をしても、周囲の壁等によって移動可能な距離が制限されて進退不可状態に陥る場合がある。
本実施形態では、表示システム1において、進退不可状態に陥った場合にその状態を検知して、その場所から脱出可能なようにする。具体的には、表示システム1は、進退不可状態の判定を、ユーザが移動させる操作をした割に仮想空間上で移動しないことを利用して行い、進退不可状態と判定した場合には、進退不可状態に陥った場所より少し前の時刻にいた位置等にユーザの位置を移動させる。これにより、仮想空間内で進退不可状態になったことを適切に判定できるとともに、進退不可状態になった場合でも、進退不可状態に陥った場所より少し前の時刻にいた位置等にユーザの位置を移動させることにより進退不可状態から脱出させるため、フラストレーションを軽減することができる。以下、詳細に説明する。
(進退不可状態の判定方法)
図3は、第1の実施形態に係るユーザが進退不可状態になっている例を示す図である。図示する例は、周囲が境界または障害物など(例えば、壁など)で囲まれた狭い凹形状の場所に入ってしまい進退不可状態になっている例を示している。符号RYが示す領域は、仮想空間内の境界または障害物などで囲まれた領域を示している。ユーザは、この領域内では移動できるが、領域外へは、移動できないように制限されている。符号U1は、時刻t1のユーザの位置を示している。符号U2は、時刻t1から所定時間経過後の時刻t2のユーザの位置を示している。ユーザは、コントローラ20を操作して移動の指示を行うものの、実際は矢印に示す移動(符号U1の示すユーザの位置から符号U2の示すユーザの位置までの移動)しかできず、この凹形状の場所から脱出できていない。
図4は、時刻t1から時刻t2までにユーザが行った移動操作の操作量を示す図である。図示する例は、時刻t1から時刻t2までにユーザが行った移動操作に対して、境界や障害物などがなければ(移動が制限されない状態であれば)移動できた軌跡を示している。この境界や障害物などがなければ移動できた軌跡の長さが、時刻t1から時刻t2までの「操作した分の移動距離」(すなわち、操作量)に相当する。例えば、移動距離の値は、1回の移動操作で移動する距離と時刻t1から時刻t2までの操作回数との乗算によって求めることができる。
また、図5は、図4に示す軌跡のうち実際にユーザが移動できた部分を示す図である。図示する例では、図4に示す軌跡のうち実際にユーザが移動できた部分を矢印Y1、Y2、Y3で示している。図6は、実際にユーザが移動できた軌跡(矢印Y1+矢印Y2+矢印Y3)を示す図である。実際にユーザが移動できた軌跡(矢印Y1+矢印Y2+矢印Y3)の長さが時刻t1から時刻t2までの「実際の移動距離」に相当する。例えば、「実際の移動距離」は、表示制御装置30が時刻t1から時刻t2までに受け付けた移動操作ごとに、仮想空間内で実際に移動させた距離(境界や障害物など制限を考慮して、移動させることが可能であった距離)を積算することによって求めることができる。
例えば、表示制御装置30は、「実際の移動距離」が閾値A以下であり(図6参照)、且つ「操作した分の移動距離」が閾値B以上であり(図4参照)、且つ「操作した分の移動距離」に対する「実際の移動距離」が閾値C以下である場合(図5参照)、進退不可状態であると判定する。閾値Aは、ほとんど移動できていないと判定する際の移動距離の上限値として予め設定された値である。閾値Bは、進退不可状態を判定する基準となる最低操作回数に相当する操作した分の移動距離として予め設定された値である。閾値Cは、操作した割には移動できていないと判定する基準として予め設定された値である。つまり、表示制御装置30は、ある程度以上操作したのに、その割に移動できていないと判定した場合に、進退不可状態であると判定する。なお、上記の閾値は、仮想空間内の状況や1回の移動操作で移動する距離などに基づいて任意に定めることができる。また、上記の閾値は、後から変更可能であってもよく、ユーザが任意に設定できるようにしてもよい。
(表示システムの構成)
次に、図7及び図8を参照して、表示システム1の構成について説明する。図7は、第1の実施形態に係る表示システム1が備える各装置のハードウェア構成の一例を示すブロック図である。また、図8は、第1の実施形態に係る表示制御装置30の構成の一例を示すブロック図である。図7に示すHMD10は、センサ11と、表示部12とを備えている。センサ11は、HMD10が装着されているユーザの頭部の動きを検知するセンサである。例えば、センサ11は、物体の角度、角速度、角加速度等を検知するジャイロセンサである。なお、センサ11は、ジャイロセンサに限られるものではなく、加速度センサ、傾斜センサ、地磁気センサ等であってもよいし、それらの組み合わせであってもよい。
表示部12は、表示制御装置30から出力される画像を表示するディスプレイであり、例えば、液晶ディスプレイパネル、有機EL(ElectroLuminescence)ディスプレイパネルなどを含んで構成される。例えば、表示部12は、VRコンテンツによる仮想空間におけるユーザの位置(すなわち、視点位置)から見える視界画像を表示する。なお、表示部12は、両眼視差を利用した立体視画像(右目用画像及び左目用画像)を表示可能なディスプレイであってもよい。
表示制御装置30は、入出力IF(Interface)31と、記憶部32と、CPU33とを備えている。入出力IF31は、HMD10とコントローラ20とのそれぞれと接続可能な接続端子を含んで構成される。例えば図8に示すように、入出力IF31は、機能構成として、HMD入出力部311と、コントローラ入力部312と、音出力部313とを備えている。HMD入出力部311は、HMD10への画像出力と、HMD10が有するセンサ11のセンサ出力の入力とを行う。コントローラ入力部312は、コントローラ20に対する移動操作や回転操作などの操作入力を示す操作入力信号を受け付ける。また、音出力部313は、音声出力端子を含んで構成されてもよく、外部に有線または無線で接続されるスピーカに音声信号を出力してもよい。なお、外部装置としてのスピーカは、HMD10に内蔵されてもよい。また、音出力部313にスピーカが含まれてもよい。
記憶部32は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、ROM(Read-Only Memory)、RAM(Random Access Memory)などを含み、VRコンテンツによる仮想空間データなどを記憶する。仮想空間データには、仮想空間内の境界や障害物のデータ、各種オブジェクトのデータ、画像データなどが含まれる。これらのデータは、仮想空間に定義されている座標値と関連付けられており、仮想空間内を移動するユーザの位置との位置関係がわかるようになっている。
なお、記憶部32は、少なくとも一部が表示制御装置30とは別の記憶装置として構成されてもよい。例えば、記憶部32に記憶されるデータの少なくとも一部は、有線または無線通信で接続される外部の記憶装置、またはインターネットを介して接続されるサーバ装置に記憶されてもよい。
CPU33は、表示制御装置30が備える各部を制御する制御中枢として機能する。例えば、CPU33は、記憶部32に記憶されたVRコンテンツによる仮想空間データ内を移動するための制御プログラムを実行することで、図8に示す制御部330が備える各部の機能を実行する。例えば、制御部330は、操作検出部331と、動き検出部332と、変位指示部333と、変位制御部334と、画像生成部335と、状態判定部336と、特定状態制御部337とを備えている。
操作検出部331は、コントローラ入力部312に入力された操作入力信号を取得し、取得した操作入力信号に基づいてコントローラ20に対する操作入力を検出する。例えば、操作検出部331は、仮想空間内のユーザの位置(すなわち、視点位置)を変位させるための移動操作や回転操作などの操作入力を検出する。
動き検出部332は、HMD入出力部311に入力されたHMD10のセンサ出力に基づいて、HMD10が装着されたユーザの頭部の動きを検出する。具体的には、動き検出部332は、ユーザの頭部(視線位置からの視線方向)の動きとして、上下左右方向への動き(ピッチ方向またはヨー方向への動き)や、傾ける動き(ロール方向への動き)などを検出する。
変位指示部333は、操作検出部331が検出したコントローラ20に対する操作入力に基づいて、仮想空間内のユーザの位置(すなわち、視点位置)を変位させる変位指示を生成する。例えば、変位指示部333は、1回の移動操作の操作入力に対しては、1回分の移動指示(前進または後退の指示)を生成し、変位制御部334へ受け渡す。また、変位指示部333は、1回の回転操作の操作入力に対しては、1回分の回転変位指示(左回転または右回転の指示)を生成し、変位制御部334へ受け渡す。
変位制御部334は、変位指示部333が生成した変位指示に基づいて、仮想空間内のユーザの位置(すなわち、視点位置)を変位させる。例えば、変位制御部334は、変位指示部333から移動指示を受け取った場合、1回分の前進の移動指示であれば、1回分の移動距離を算出し、算出した移動距離の分、現在のユーザの位置から前進させる。また、変位制御部334は、変位指示部333から移動指示を受け取った場合、1回分の後退の移動指示であれば、1回分の移動距離を算出し、算出した移動距離の分、現在のユーザの位置から後退させる。このとき、変位制御部334は、1回分の移動距離を算出する場合、境界や障害物などとの接触判定を行った上で決定する。例えば、変位制御部334は、まず現在位置から予め設定された1回分の移動距離を変位させた場合に、変位を妨げる境界や障害物などがあるか否か(すなわち、境界や障害物などと接触するか否か)を判定する。変位を妨げる境界や障害物などがない(接触しない)と判定された場合には、変位制御部334は、現在位置から1回分の移動指示(前進または後退の指示)に基づいて、当該移動指示に対応する移動距離(予め設定された1回分の移動距離)を変位(前進または後退)させる。一方、変位を妨げる境界や障害物などがある(接触する)と判定された場合には、変位制御部334は、境界や障害物などとの接触を考慮して、1回分の移動指示(前進または後退の指示)に対応する移動距離(予め設定された1回分の距離)よりも接触するまでの距離に短縮した移動距離(移動させない場合もある)に決定する。
また、変位制御部334は、変位指示部333から回転変位指示を受け取った場合も同様に、境界や障害物などがあるか否かによって回転角変位量を決定する。変位制御部334は、まず現在位置から予め設定された1回分の回転角変位量を変位させた場合に、変位を妨げる境界や障害物などがあるか否か(すなわち、境界や障害物などと接触するか否か)を判定する。変位を妨げる境界や障害物などがない(接触しない)と判定された場合には、変位制御部334は、現在位置から1回分の回転変位指示(左回転または右回転の指示)に基づいて、当該回転変位指示に対応する回転角変位量(予め設定された1回分の回転角変位量)を変位(左回転または右回転)させる。一方、変位を妨げる境界や障害物などがある(接触する)と判定された場合には、変位制御部334は、境界や障害物などとの接触を考慮して、1回分の回転変位指示(左回転または右回転の指示)に対応する回転角変位量(予め設定された1回分の回転角変位量)よりも接触するまでの回転角変位量に短縮した回転角変位量(回転させない場合もある)に決定する。
画像生成部335は、記憶部32に記憶されている仮想空間データに基づいて、ユーザの位置(すなわち、視点位置)から見える視界に対応する画像(視界画像)を生成する。例えば、画像生成部335は、変位制御部334の制御に応じて、ユーザの位置が移動や回転変位した場合、当該移動や回転変位に応じて視界を変更した画像(視界画像)を生成する。そして、画像生成部335は、生成した画像(視界画像)を、入出力IF31(HMD入出力部311)を介してHMD10へ出力する。
状態判定部336は、操作検出部331が検出した操作入力に基づく操作量と、変位指示部333による指示に基づいて変位させた変位量とに基づいて、仮想空間内で進退不可状態にあることを判定する。例えば、状態判定部336は、操作検出部331が検出した操作入力に基づく移動距離と、変位指示部333による指示に基づいて移動させた実際の移動距離とに基づいて、仮想空間内で進退不可状態にあることを判定する。
具体的には、図3〜図6を参照して説明したように、状態判定部336は、時刻t1から時刻t2までの「操作した分の移動距離」と「実際の移動距離」とに基づいて、進退不可状態にあるか否かを判定する。例えば、状態判定部336は、「実際の移動距離」が閾値A以下であり(図6参照)、且つ「操作した分の移動距離」が閾値B以上であり(図4参照)、且つ「操作した分の移動距離」に対する「実際の移動距離」の割合が閾値C以下である場合(図5参照)、進退不可状態であると判定する。
例えば、状態判定部336は、変位指示部333による指示に基づく操作した分の移動距離(或いは、移動操作の回数)の履歴と、変位制御部334が移動させた実際の移動距離の履歴とを、少なくとも所定の期間(判定に必要な期間)記憶部32に記憶させておく。そして、状態判定部336は、これらの履歴情報に基づいて進退不可状態の判定処理を所定のタイミングで繰り返し実行する。所定のタイミングとは、一定時間毎(予め設定された時間間隔)でのタイミングでもよいし、操作入力が行われる毎のタイミングでもよい。
特定状態制御部337は、状態判定部336により仮想空間内で進退不可状態にあると判定された場合、変位指示部333による指示によらず(すなわち、ユーザの操作入力がなくとも)、ユーザの位置(すなわち、視点位置)を現在の位置とは異なる所定の位置へ移動(ジャンプ)させる。例えば、特定状態制御部337は、状態判定部336により仮想空間内で進退不可状態にあると判定された場合、進退不可状態から脱出するか否か(所定の位置への移動を行うか否か)をユーザが選択可能な選択メニューをHMD10の表示部12に表示させるように画像生成部335に指示する。これにより、画像生成部335は、上記選択メニューの画像を生成し、入出力IF31を介してHMD10の表示部12に表示させる。ユーザの操作(例えば、コントローラ20による操作)により、進退不可状態から脱出すること(所定の位置への移動を行うこと)が選択された場合、ユーザの位置(すなわち、視点位置)を所定の位置へ移動させる。
ここで、上記所定の位置とは、例えば、現在より少し前の時刻にいた位置であって、進退不可状態に陥る前の位置である。例えば、特定状態制御部337は、進退不可状態と判定した場合、判定に用いた判定時間(例えば、図3〜6に示す時刻t1から時刻t2の時間)より予め設定された時間分遡った時刻の位置へユーザの位置を移動させてもよい。なお、所定の位置とは、進退不可状態と判定された判定期間の最初の位置から予め設定された操作回数分戻した位置であってもよいし、当該最初の位置から予め設定された方向及び距離へ離れた位置であってもよい。また、所定の位置とは、仮想空間内のユーザが移動可能な領域のいずれであってもよく、例えば、スタート地点、ホーム地点、セーブ地点(ユーザの活動状況を保存可能な地点)などであってもよい。
なお、特定状態制御部337は、状態判定部336により仮想空間内で進退不可状態にあると判定された場合、ユーザが選択可能な選択メニューを表示させることなく(すなわち、ユーザの確認をとらずに)、ユーザの位置(すなわち、視点位置)を所定の位置へ移動させてもよい。
(表示制御装置30の処理例)
次に、図9を参照して、表示制御装置30が仮想空間内でユーザの位置(すなわち、視点位置)を変位させる変位処理の動作について説明する。図9は、第1の実施形態に係る変位処理の一例を示すフローチャートである。
(ステップS101)操作検出部331は、コントローラ入力部312に入力された操作入力信号に基づいてコントローラ20に対するユーザの操作入力を検出すると、ステップS103の処理に進む。
(ステップS103)変位指示部333は、操作検出部331が検出したコントローラ20に対する操作入力に基づいて、仮想空間内のユーザの位置(すなわち、視点位置)を変位させる変位指示を生成する。例えば、変位指示部333は、1回の移動操作の操作入力に対しては、1回分の移動指示(前進または後退の指示)を生成し、変位制御部334へ受け渡す。また、変位指示部333は、1回の回転操作の操作入力に対しては、1回分の回転変位指示(左回転または右回転の指示)を生成し、変位制御部334へ受け渡す。そして、ステップS105の処理に進む。
(ステップS105)変位制御部334は、まず現在位置から予め設定された1回分の変位指示に対応する変位量(1回分の移動距離または1回分の回転角変位量)を変位させた場合に、変位を妨げる境界や障害物などがあるか否か(すなわち、境界や障害物などと接触するか否か)を判定する。変位を妨げる境界や障害物などがないと判定された場合(NO)、ステップS107の処理に進む。一方、変位を妨げる境界や障害物などがあると判定された場合(NO)、ステップS109の処理に進む。
(ステップS107)変位制御部334は、変位を妨げる境界や障害物などが無いため、変位指示に対応する変位量(移動距離または回転角変位量)を算出する。例えば、変位制御部334は、1回分の変位指示に対応する1回分の変位量(予め設定された1回分の移動距離または回転角変位量)を算出する。そして、ステップS111の処理に進む。
(ステップS109)変位制御部334は、変位を妨げる境界や障害物などがあるため、変位指示に対して障害物を考慮した変位量(移動距離または回転角変位量)を算出する。例えば、変位制御部334は、1回分の変位指示に対応する1回分の変位量(予め設定された1回分の移動距離または回転角変位量)よりも境界や障害物などに接触するまでの短縮した変位量(移動距離または回転角変位量)を算出する。そして、ステップS111の処理に進む。
(ステップS111)変位制御部334は、ステップS107またはステップS109において算出した変位量に基づいて、仮想空間内のユーザの位置(すなわち、視点位置)を操作内容に応じた方向(前進方向または後退方向、左回転または右回転など)へ変位(移動または回転変位)させる。つまり、変位を妨げる境界や障害物などが無い場合には、変位制御部334は、現在位置から1回分の変位量(移動距離または回転角変位量)を変位させる。一方、変位を妨げる境界や障害物などがある場合には、変位制御部334は境界や障害物などに接触するまでの短縮した変位量(移動距離または回転角変位量)を変位させる。
(第1の実施形態の状態判定処理)
次に、図10を参照して、表示制御装置30が仮想空間内でユーザが進退不可状態にあるか否かを判定する状態判定処理の動作について説明する。図10は、第1の実施形態に係る状態判定処理の一例を示すフローチャートである。例えば、この状態判定処理は、一定時間毎(予め設定された時間間隔)に実行される。
(ステップS201)状態判定部336は、図6に示す時刻t1から時刻t2までの「実際の移動距離」を算出する。例えば、時刻t2は、状態判定処理を開始する時刻である。時刻t1は、時刻t2より予め設定された時間遡った時刻である。例えば、この時刻t1と時刻t2との間隔は、この状態判定処理を実行する時間間隔に対応する。なお、時刻t1と時刻t2との間隔は、当該時間間隔より短い時間間隔であってもよいし、長い時間間隔であってもよい。そして、ステップS203の処理に進む。
(ステップS203)状態判定部336は、ステップS201で算出した「実際の移動距離」が閾値A以下であるか否かを判定する。状態判定部336は、「実際の移動距離」が閾値A以下ではないと判定した場合(NO)、進退不可状態と判定しないため処理を終了する。一方、状態判定部336は、「実際の移動距離」が閾値A以下であると判定した場合(YES)、ステップS205の処理に進む。
(ステップS205)状態判定部336は、図4に示す時刻t1から時刻t2までの「操作した分の移動距離」を算出する。そして、ステップS207の処理に進む。
(ステップS207)状態判定部336は、ステップS205で算出した「操作した分の移動距離」が閾値B以上であるか否かを判定する。状態判定部336は、「操作した分の移動距離」が閾値B以上ではないと判定した場合(NO)、進退不可状態と判定しないため処理を終了する。一方、状態判定部336は、「操作した分の移動距離」が閾値B以上であると判定した場合(YES)、ステップS209の処理に進む。
(ステップS209)状態判定部336は、ステップS205で算出した「操作した分の移動距離」とステップS201で算出した「実際の移動距離」とに基づいて、「操作した分の移動距離」に対する「実際の移動距離」の割合を算出する。そして、ステップS211の処理に進む。
(ステップS211)状態判定部336は、ステップS209で算出した「操作した分の移動距離」に対する「実際の移動距離」の割合が閾値C以下であるか否かを判定する。状態判定部336は、「操作した分の移動距離」に対する「実際の移動距離」の割合が閾値C以下ではないと判定した場合(NO)、進退不可状態と判定しないため処理を終了する。一方、状態判定部336は、「操作した分の移動距離」に対する「実際の移動距離」の割合が閾値C以下であると判定した場合(YES)、ステップS213の処理に進む。
(ステップS213)状態判定部336は、「実際の移動距離」が閾値A以下であり、且つ「操作した分の移動距離」が閾値B以上であり、且つ「操作した分の移動距離」に対する「実際の移動距離」の割合が閾値C以下であるため、進退不可状態にあると判定し、処理を終了する。
(脱出処理)
次に、図11を参照して、表示制御装置30が進退不可状態にあると判定した場合に実行する脱出処理の動作について説明する。図11は、第1の実施形態に係る脱出処理の一例を示すフローチャートである。
(ステップS251)特定状態制御部337は、状態判定部336により進退不可状態にあると判定されたか否かを判定する。進退不可状態にあると判定されていない場合には(NO)、特定状態制御部337は、脱出処理の必要がないため処理を終了する。一方、進退不可状態にあると判定された場合(YES)、特定状態制御部337は、ステップS253の処理に進む。
(ステップS253)特定状態制御部337は、進退不可状態から脱出するか否か(所定の位置への移動を行うか否か)の選択メニューを、HMD10の表示部12に表示させる。具体的には、特定状態制御部337は、上記選択メニューをHMD10の表示部12に表示させるように画像生成部335に指示する。これにより、画像生成部335は、上記選択メニューの画像を生成し、入出力IF31を介してHMD10の表示部12に表示させる。図12は、選択メニューの表示例を示す図である。ユーザは、コントローラ20で操作することにより、脱出するか(はい)、或いは脱出が不要であるか(いいえ)を選択することができる。そして、ステップS255の処理に進む。
(ステップS255)特定状態制御部337は、操作検出部331が検出した操作入力に基づいて、ユーザにより進退不可状態から脱出することが選択されたか否かを判定する。特定状態制御部337は、進退不可状態から脱出しないことが選択されたと判定した場合(NO)、脱出処理の必要がないため処理を終了する。一方、特定状態制御部337は、進退不可状態から脱出することが選択されたと判定した場合(YES)、ステップS257の処理に進む。
(ステップS257)特定状態制御部337は、進退不可状態から脱出することが選択されたため、ユーザの位置(すなわち、視点位置)を所定の位置(進退不可状態に陥った場所より少し前の時刻にいた位置)へ移動(ジャンプ)させる。
なお、図11に示す脱出処理において、ステップS253及びステップS255の処理を省略してもよい。つまり、特定状態制御部337は、状態判定部336により進退不可状態にあると判定された場合、ユーザの意思を確認することなく、ユーザの位置(すなわち、視点位置)を所定の位置へ移動させて、進退不可状態から脱出させてもよい。
以上説明してきたように、第1の実施形態によれば、表示制御装置30は、ユーザの位置(すなわち、視点位置)を仮想空間内で変位させるための操作入力を検出する操作検出部331と、操作検出部331が検出した操作入力に基づいてユーザの位置(すなわち、視点位置)を変位させる指示をする変位指示部333と、操作検出部331が検出した操作入力に基づく操作量と、変位指示部333による指示に基づいて変位させたユーザの位置(すなわち、視点位置)の変位量とに基づいて、仮想空間内で進退不可状態(特定の状態の一例)にあることを判定する状態判定部336と、を備えている。
これにより、表示制御装置30は、ユーザの位置(すなわち、視点位置)を変位させるための操作量と実際に変位した変位量との差に基づいて、仮想空間内でユーザが前進することも後退することも困難な進退不可状態になった場合にその状態であることを適切に判定できる。
例えば、操作検出部331は、仮想空間内でユーザの位置(すなわち、視点位置)を移動させるための移動操作の操作入力を検出する。そして、状態判定部336は、操作検出部331が検出した操作入力に基づく移動操作量(操作した分の移動距離)と、変位指示部333による指示に基づいて移動させたユーザの位置(すなわち、視点位置)の移動量(実際の移動距離)とに基づいて、仮想空間内で進退不可状態にあることを判定する。
これにより、表示制御装置30は、ユーザの位置(すなわち、視点位置)を移動させるための移動操作量(操作した分の移動距離)と実際に移動した移動量(実際の移動距離)との差に基づいて、仮想空間内でユーザが前進することも後退することも困難な進退不可状態になった場合にその状態であることを適切に判定できる。
また、表示制御装置30は、状態判定部336により仮想空間内で進退不可状態にあると判定された場合、ユーザの位置(すなわち、視点位置)を変位させるユーザの操作入力がなくとも(つまり、変位指示部333による指示によらず)、ユーザの位置(すなわち、視点位置)を現在の位置とは異なる所定の位置(例えば、進退不可状態に陥った場所より少し前の時刻にいた位置)へ移動させる特定状態制御部337を備えている。
これにより、表示制御装置30は、仮想空間内でユーザが前進することも後退することも困難な進退不可状態になった場合に、ユーザの位置(すなわち、視点位置)を変位させる操作なしに、進退不可状態から脱出させることができる。よって、表示制御装置30は、ユーザが進退不可状態になった場合のフラストレーションを軽減することができる。
例えば、特定状態制御部337は、状態判定部336により仮想空間内で進退不可状態にあると判定された場合、現在の位置とは異なる所定の位置への移動を行うか否かをユーザが選択可能な選択メニューをHMD10の表示部12に表示させる。そして、特定状態制御部337は、上記所定の位置への移動を行うことがユーザの操作によって選択された場合、ユーザの位置(すなわち、視点位置)を上記所定の位置へ移動させる。
これにより、表示制御装置30は、仮想空間内でユーザが前進することも後退することも困難な進退不可状態になった場合に、選択メニューから選択するだけの簡単な操作のみで、進退不可状態から脱出させることができる。また、この場合、表示制御装置30は、ユーザの意思を確認したうえで、進退不可状態から脱出させることができる。よって、表示制御装置30は、ユーザが進退不可状態になった場合のフラストレーションを軽減することができる。
なお、表示制御装置30は、選択メニューの表示に代えて、音声ガイダンスによって脱出する方法を案内してもよい。例えば、表示制御装置30は、「ここでは、身動きが取れません。少し前にいた場所に戻りますか?」という音声ガイダンスを出力した後、ユーザが許諾を示す音声コマンド(例えば、「はい」、「OK」など)を発話した場合、ユーザの位置(すなわち、視点位置)を上記所定の位置へ移動させてもよい。例えば、発話の検出は、表示制御装置30が、ユーザの発話を検出する発話検出部と、発話検出部から検出する発話の中から予め設定された語句を検出する語句検出部とを備えることにより行うことができる。
例えば、特定状態制御部337は、状態判定部336により仮想空間内で進退不可状態にあると判定された場合、上記所定の位置への移動を行うか否かをユーザに問い合わせる音声ガイダンス(音声案内)を音出力部313から出力させてもよい。そして、特定状態制御部337は、上記語句検出部が音声ガイダンスに対応する発話の中から検出された語句が、上記所定の位置への移動を行うことの許諾を示す語句(例えば、「はい」、「OK」など)であると判定した場合、ユーザの位置(すなわち、視点位置)を上記所定の位置へ移動させてもよい。一方、特定状態制御部337は、上記語句検出部が音声ガイダンスに対応する発話の中から検出された語句が、上記所定の位置への移動を行うことの許諾しないことを示す語句(例えば、「いいえ」など)であると判定した場合、ユーザの位置(すなわち、視点位置)を上記所定の位置へは移動させず、そのままの位置とする。なお、ユーザの発話を検出する発話検出部と発話の中から予め設定された語句を検出する語句検出部の構成については、後述する第4の実施形態(図20参照)で説明する。
これにより、表示制御装置30は、仮想空間内でユーザが前進することも後退することも困難な進退不可状態になった場合に、音声ガイダンスに対して予め設定された音声コマンドを応答するだけで、進退不可状態から脱出させることができる。また、この場合も、表示制御装置30は、ユーザの意思を確認したうえで、進退不可状態から脱出させることができる。よって、表示制御装置30は、ユーザが進退不可状態になった場合のフラストレーションを軽減することができる。
[第2の実施形態]
次に、本発明の第2の実施形態について説明する。
第2の実施形態に係る表示システム1の基本的な構成は、図7及び図8に示す第1の実施形態で説明した構成と同様であるため、その説明を省略する。第2の実施形態は、第1の実施形態に対して進退不可状態の判定方法が異なる。具体的には、第1の実施形態では、移動操作において「操作した分の移動距離」と「実際の移動距離」とに基づいて進退不可状態を判定したが、第2の実施形態では、回転操作において「操作した分の回転角変位量」と「実際の回転角変位量」とに基づいて進退不可状態を判定する。
図13〜図16を参照して、第2の実施形態に係る進退不可状態の判定処理について説明する。図13は、第2の実施形態に係るユーザが進退不可状態になっている例を示す図である。図示する例は、図3の例と同様に、周囲が境界または障害物など(例えば、壁など)で囲まれた狭い凹形状の場所に入ってしまい進退不可状態になっている例を示している。符号RYが示す領域は、仮想空間内の境界または障害物などで囲まれた領域を示している。ユーザは、この領域内では移動できるが、領域外へは、移動できないように制限されている。符号U1は、時刻t1のユーザの位置を示している。符号U2は、時刻t1から所定時間経過後の時刻t2のユーザの位置を示している。ユーザは、コントローラ20を操作して左右方向への回転の指示を行うものの、実際は矢印に示す回転角変位(符号U1の示すユーザの位置から符号U2の示すユーザの位置までの移動)しかできず、この凹形状の場所から脱出できていない(より具体的には、脱出できる方向を向くことができていない)。
図14は、時刻t1から時刻t2までにユーザが行った回転操作の操作量を示す図である。図示する例は、時刻t1から時刻t2までにユーザが行った回転操作に対して、境界や障害物などがなければ(回転が制限されない状態であれば)回転できた軌跡を示している。例えば、1回の回転操作での回転角変位量(設定角速度)を10°(10度)とした場合、時刻t1から時刻t2まで順に、左回転操作を6回(左60°)、右回転操作を2回(右20°)、左回転操作を9回(左90°)、右回転操作を2回(右20°)、左回転操作を18回(左180°)、右回転操作を9回(右90°)行ったことを示している。この場合、境界や障害物などがなければ回転できた回転角変位量を回転方向に関係なく積算したものが時刻t1から時刻t2までの「操作した分の回転角変位量」(すなわち、操作量)に相当する。ここでは、「操作した分の回転角変位量」は、上記それぞれの回転操作の回転角変位量を積算した460°となる。
また、図15は、図14に示すそれぞれの回転操作の回転角変位量のうち実際にユーザが回転できた部分を示す図である。図示する例では、図14に示す回転操作の回転角変位量のうち実際にユーザが回転できた部分を太字の矢印Y21、Y22、Y23、Y24、Y25で示している。図16は、実際にユーザが回転できた回転角変位量(矢印Y21、Y22、Y23、Y24、Y25)を示す図である。図示する例では、各回転操作において実際に回転できた部分の回転角変位量は、矢印Y21、Y22、Y23、Y24、Y25の順に、0°、右20°、左20°、右20°、左20°、右60°であったことを示している。実際にユーザが回転できた回転角変位量のそれぞれを回転方向に関係なく積算したものが時刻t1から時刻t2までの「実際の回転角変位量」に相当する。ここでは、「実際の回転角変位量」は、140°となる。
例えば、表示制御装置30は、「実際の回転角変位量」が閾値D以下であり(図16参照)、且つ「操作した分の回転角変位量」が閾値E以上であり(図14参照)、且つ「操作した分の回転角変位量」に対する「実際の回転角変位量」が閾値F以下である場合(図15参照)、進退不可状態であると判定する。閾値Dは、ほとんど回転できていないと判定する際の回転角変位量の上限値として予め設定された値である。閾値Eは、進退不可状態を判定する基準となる最低操作回数に相当する操作した分の回転角変位量として予め設定された値である。閾値Fは、操作した割には回転できていないと判定する基準として予め設定された値である。つまり、表示制御装置30は、ある程度以上操作したのに、その割には回転できていないと判定した場合に、進退不可状態であると判定する。なお、上記の閾値は、仮想空間内の状況や1回の回転操作で回転する回転角変位量(設定角速度)などに基づいて任意に定めることができる。また、上記の閾値は、後から変更可能であってもよく、ユーザが任意に設定できるようにしてもよい。
例えば、状態判定部336は、操作検出部331が検出した操作入力に基づく回転角変位量と、変位指示部333による指示に基づいて回転させた実際の回転角変位量とに基づいて、仮想空間内で進退不可状態にあることを判定する。
具体的には、図13〜図16を参照して説明したように、状態判定部336は、時刻t1から時刻t2までの「操作した分の回転角変位量」と「実際の回転角変位量」とに基づいて、進退不可状態にあるか否かを判定する。例えば、状態判定部336は、「実際の回転角変位量」が閾値D以下であり(図16参照)、且つ「操作した分の回転角変位量」が閾値E以上であり(図14参照)、且つ「操作した分の回転角変位量」に対する「実際の回転角変位量」の割合が閾値F以下である場合(図15参照)、進退不可状態であると判定する。
例えば、状態判定部336は、変位指示部333による指示に基づく操作した分の回転角変位量(或いは、回転操作の回数)の履歴と、変位制御部334が移動させた実際の回転角変位量の履歴とを、少なくとも所定の期間(判定に必要な期間)記憶部32に記憶させておく。そして、状態判定部336は、これらの履歴情報に基づいて進退不可状態の判定処理を所定のタイミングで繰り返し実行する。第1の実施形態と同様に、所定のタイミングとは、一定時間毎(予め設定された時間間隔)でのタイミングでもよいし、操作入力が行われる毎のタイミングでもよい。
(第2の実施形態の状態判定処理)
次に、図17を参照して、表示制御装置30が仮想空間内でユーザが進退不可状態にあるか否かを判定する状態判定処理の動作について説明する。図17は、第2の実施形態に係る状態判定処理の一例を示すフローチャートである。例えば、この状態判定処理は、一定時間毎(予め設定された時間間隔)に実行される。
(ステップS301)状態判定部336は、図16に示す時刻t1から時刻t2までの「実際の回転角変位量」を算出する。例えば、時刻t2は、状態判定処理を開始する時刻である。時刻t1は、時刻t2より予め設定された時間遡った時刻である。例えば、この時刻t1と時刻t2との間隔は、この状態判定処理を実行する時間間隔に対応する。なお、時刻t1と時刻t2との間隔は、当該時間間隔より短い時間間隔であってもよいし、長い時間間隔であってもよい。そして、ステップS303の処理に進む。
(ステップS303)状態判定部336は、ステップS201で算出した「実際の回転角変位量」が閾値D以下であるか否かを判定する。状態判定部336は、「実際の回転角変位量」が閾値D以下ではないと判定した場合(NO)、進退不可状態と判定しないため処理を終了する。一方、状態判定部336は、「実際の回転角変位量」が閾値D以下であると判定した場合(YES)、ステップS305の処理に進む。
(ステップS305)状態判定部336は、図14に示す時刻t1から時刻t2までの「操作した分の回転角変位量」を算出する。そして、ステップS307の処理に進む。
(ステップS307)状態判定部336は、ステップS305で算出した「操作した分の回転角変位量」が閾値E以上であるか否かを判定する。状態判定部336は、「操作した分の回転角変位量」が閾値E以上ではないと判定した場合(NO)、進退不可状態と判定しないため処理を終了する。一方、状態判定部336は、「操作した分の回転角変位量」が閾値E以上であると判定した場合(YES)、ステップS309の処理に進む。
(ステップS309)状態判定部336は、ステップS305で算出した「操作した分の回転角変位量」とステップS301で算出した「実際の回転角変位量」とに基づいて、「操作した分の回転角変位量」に対する「実際の回転角変位量」の割合を算出する。そして、ステップS311の処理に進む。
(ステップS311)状態判定部336は、ステップS309で算出した「操作した分の回転角変位量」に対する「実際の回転角変位量」の割合が閾値F以下であるか否かを判定する。状態判定部336は、「操作した分の回転角変位量」に対する「実際の回転角変位量」の割合が閾値F以下ではないと判定した場合(NO)、進退不可状態と判定しないため処理を終了する。一方、状態判定部336は、「操作した分の回転角変位量」に対する「実際の回転角変位量」の割合が閾値F以下であると判定した場合(YES)、ステップS313の処理に進む。
(ステップS313)状態判定部336は、「実際の回転角変位量」が閾値D以下であり、且つ「操作した分の回転角変位量」が閾値E以上であり、且つ「操作した分の移動距離」に対する「実際の回転角変位量」の割合が閾値F以下であるため、進退不可状態にあると判定し、処理を終了する。
以上説明してきたように、第2の実施形態によれば、表示制御装置30の状態判定部336は、操作検出部331が検出した回転操作の操作入力に基づく回転操作量(操作した分の回転角変位量)と、変位指示部333による指示に基づいて回転させたユーザの位置(すなわち、視点位置)の回転量(実際の回転角変位量)とに基づいて、仮想空間内で進退不可状態にあることを判定する。
これにより、表示制御装置30は、ユーザの位置(すなわち、視点位置)を移動させるための回転操作量(操作した分の回転角変位量)と実際に回転した回転量(実際の回転角変位量)との差に基づいて、仮想空間内でユーザが前進することも後退することも困難な進退不可状態になった場合にその状態であることを適切に判定できる。
なお、第1及び第2の実施形態を組み合わせることで、表示制御装置30は、移動操作及び回転操作の両方に基づいて進退不可状態にあることを判定してもよい。例えば、表示制御装置30は、操作検出部331が検出した操作入力に基づく移動操作量(操作した分の移動距離)及び回転操作量(操作した分の回転角変位量)と、変位指示部333による指示に基づいて変位させたユーザの位置(すなわち、視点位置)の移動量(実際の移動距離)及び回転量(実際の回転角変位量)とに基づいて、仮想空間内で進退不可状態にあることを判定してもよい。
[第3の実施形態]
次に、本発明の第3の実施形態について説明する。
第1及び第2の実施形態では、「操作した分の変位量(移動距離または回転角変位量)」と「実際の変位量(移動距離または回転角変位量)」とに基づいて進退不可状態であることを判定したが、第3の実施形態では、さらにユーザの頭部の動きを考慮して判定する例を説明する。
ユーザが必要以上にきょろきょろしているようであれば、進退不可状態に陥っている可能性がより高くなる。そこで、状態判定部336は、動き検出部332が検出した頭部の動き(HMD10が装着されたユーザの頭部の動き)の動き量に基づいて、一定時間あたりに頭部が動いた回数を検出する。例えば、頭部が動いたと判定する判定基準は、図1に示すX軸、Y軸、Z軸それぞれについて回転角変位量(回転角度)の閾値(動き判定閾値)として設定されている。そして、状態判定部336は、検出された頭部の動きの動きベクトルのX、Y、Z軸成分のいずれかの値が閾値(動き判定閾値)を超えるごとに、頭部が1回動いたと判定する。
例えば、VRコンテンツの内容ごとに区切られたステージについて、各ステージで期待されるユーザアクションから、一定時間あたりの頭部を動かす回数の閾値(動き回数閾値)が設定されている。例えば敵と戦うアクションゲームであれば動き回数閾値が大きく設定され、外国の風景を見ながら進むような観光コンテンツであれば動き回数閾値が小さく設定される。状態判定部336は、一定時間あたりに頭部の動き回数(頭部が上下左右(斜めも含む)に動いた回数)を計測し、計測値がそのステージの動き回数閾値を超えているか否かを判定する。そして、状態判定部336は、上記計測値が動き回数閾値を超えていると判定した場合には、頭部の動きが頻繁である(必要以上にきょろきょろしている)と判定する。一方、状態判定部336は、上記計測値が動き回数閾値を超えていないと判定した場合には、頭部の動きが通常の動きである(必要以上にきょろきょろしていない)と判定する。なお、動き回数閾値は、後から変更可能であってもよく、ユーザが任意に設定できるようにしてもよい。
この頭部の動き量の判定結果を第1の実施形態に適用すると、状態判定部336は、移動操作をしている割に移動できておらず、且つユーザが必要以上にきょろきょろしている場合に、進退不可状態にあると判定することができる。また、頭部の動き量の判定結果を第2の実施形態に適用すると、状態判定部336は、回転操作をしている割に回転できておらず、且つユーザが必要以上にきょろきょろしている場合に、進退不可状態にあると判定することができる。
(第3の実施形態の状態判定処理)
ここでは、頭部の動き量の判定結果を第1の実施形態に適用したときの状態判定処理の動作について図18を参照して説明する。図18は、第3の実施形態に係る状態判定処理の一例を示すフローチャートである。この図に示すステップS401〜S411、S415の各処理は、図10に示すステップS201〜S211、S213の処理と同様であり、その説明を省略する。
(ステップS413)状態判定部336は、「実際の移動距離」が閾値A以下であり、且つ「操作した分の移動距離」が閾値B以上であり、且つ「操作した分の移動距離」に対する「実際の移動距離」の割合が閾値C以下であった場合、一定時間あたりに頭部の動き回数の計測値を取得し、ステップS415の処理に進む。
(ステップS415)状態判定部336は、ステップS413で取得した頭部の動き回数が動き回数閾値(閾値H)以上であるか否かを判定する。状態判定部336は、頭部の動き回数が動き回数閾値(閾値H)以上ではないと判定した場合(NO)、進退不可状態と判定しないため処理を終了する。一方、状態判定部336は、頭部の動き回数が動き回数閾値(閾値H)以上であると判定した場合(YES)、ステップS417の処理に進み、進退不可状態にあると判定し、処理を終了する。
なお、頭部の動き量の判定結果を第2の実施形態に適用したときの状態判定処理は、図18のステップS401〜S411の各処理を、図17のステップS301〜S311の各処理とすればよい。さらには、第1、第2及び第3の実施形態を組み合わせることで、移動操作及び回転操作をしている割に移動及び回転できておらず、且つユーザが必要以上にきょろきょろしている場合に、進退不可状態にあると判定することもできる。
以上説明してきたように、第3の実施形態によれば、表示制御装置30の状態判定部336は、操作検出部331が検出した操作入力に基づく操作量(操作した分の変位量(移動距離または回転角変位量))と、変位指示部333による指示に基づいて変位させたユーザの位置(すなわち、視点位置)の変位量(実際の変位量(移動距離または回転角変位量))と、動き検出部332が検出したユーザの頭部の動き量(例えば、頭部を動かす回数)とに基づいて、仮想空間内で進退不可状態にあることを判定する。
これにより、表示制御装置30は、操作量(操作した分の変位量(移動距離または回転角変位量))と、ユーザの位置(すなわち、視点位置)の変位量(実際の変位量(移動距離または回転角変位量))とに加えて、ユーザが必要以上にきょろきょろしているか否かを考慮して進退不可状態か否かを判定するため、仮想空間内でユーザが前進することも後退することも困難な進退不可状態になった場合にその状態であることを適切に判定できる。
[第4の実施形態]
次に、本発明の第4の実施形態について説明する。
第4の実施形態では、ユーザの発話の内容に基づいて進退不可状態を判定する例を説明する。図19及び図20を参照して、第4の実施形態に係る表示システム1Aの構成について説明する。図19は、第4の実施形態に係る表示システム1Aのハードウェア構成の一例を示すブロック図である。また、図20は、第4の実施形態に係る表示制御装置30Aの構成の一例を示すブロック図である。
図19に示す表示システム1Aでは、HMD10Aが音声を収音するマイク13をさらに備えている点が、図7に示すHMD10と異なる。また、表示制御装置30Aの入出力IF31Aは、HMD入出力部311及びコントローラ入力部312に加えてマイク入力部314を備えている。マイク入力部314には、マイク13で収音された音声の音声入力信号(マイク13の出力信号)が入力される。また、表示制御装置30Aの制御部33Aは、発話検出部338と、語句検出部339とをさらに備えている点が、図7に示す制御部33と異なる。
発話検出部338は、マイク入力部314に入力された音声入力信号に基づいて、ユーザの発話を検出する。例えば、発話検出部338は、音声信号のうち人間の発話に相当する周波数成分の音声信号の区間を検出する。
語句検出部339は、発話検出部338が検出する発話の中から予め設定された語句(キーワード)を検出する。例えば、語句検出部339は、発話検出部338が検出する発話に相当する周波数成分の音声信号の区間において、さらに周波数成分を解析することにより予め設定された語句を抽出する。予め設定された語句とは、進退不可に関する語句であり、進退不可状態にあるユーザが発話しそうな語句(例えば、「進まない」、「動かない」、「おかしい」など)である。この予め設定された語句は、表示制御装置30Aの記憶部32Aに語句データ322として記憶されている。
状態判定部336は、語句検出部339の検出結果に基づいて、仮想空間内で進退不可状態にあることを判定する。例えば、状態判定部336は、語句検出部339の検出結果に基づいて、一定時間毎に、進退不可に関する語句(進退不可状態にあるユーザが発話しそうな語句)が音声入力された回数の和を算出する。そして、状態判定部336は、一定時間あたりの進退不可に関する音声入力の回数の和が閾値J以上と判定した場合、進退不可状態にあると判定する。
図21は、第4の実施形態に係る判定処理のイメージを示す図である。図示する例では、時刻t1から時刻t2までの間の音声入力のうち、「動かない」、「進まないよ」、「おかしいな」の3語が進退不可に関する語句として予め設定されている(その他の語句は、進退不可に関する語句の対象外)。状態判定部336は、時刻t1から時刻t2までの間の音声入力の中から進退不可に関する音声入力の回数の和を検出し(ここでは、3回)、進退不可に関する音声入力の回数の和が閾値J以上であるか否かにより、進退不可状態であるか否かを判定する。なお、閾値Jは、進退不可状態を判定する基準となる進退不可に関する音声入力の最低回数として予め設定された値である。この閾値Jは、判定時間(時刻t1から時刻t2まで)の長さなどによって任意に定めることができる。また、閾値Jは、後から変更可能であってもよく、ユーザが任意に設定できるようにしてもよい。
また、状態判定部336は、このユーザの発話の内容(語句)に基づいて進退不可状態を判定する処理を第1、第2、及び第3の実施形態に適用してもよい。すなわち、状態判定部336は、第1、第2、及び第3の実施形態において、さらにユーザの発話の内容(語句)に基づいて進退不可状態を判定してもよい。例えば、状態判定部336は、第1の実施形態に適用して、移動操作をしている割に移動できておらず、且つ進退不可に関する音声入力の回数(ユーザの特定の発話の回数)が多い場合に、進退不可状態にあると判定することができる。
(第4の実施形態の状態判定処理)
図22は、第4の実施形態に係る状態判定処理の一例を示すフローチャートである。この図に示すステップS501〜S511、S515の各処理は、図10に示すステップS201〜S211、S213の処理と同様であり、その説明を省略する。
(ステップS513)状態判定部336は、「実際の移動距離」が閾値A以下であり、且つ「操作した分の移動距離」が閾値B以上であり、且つ「操作した分の移動距離」に対する「実際の移動距離」の割合が閾値C以下であった場合、一定時間あたりの進退不可に関する音声入力の回数の和を算出し、ステップS515の処理に進む。
(ステップS515)状態判定部336は、ステップS513で算出した進退不可に関する音声入力の回数の和が閾値J以上であるか否かを判定する。状態判定部336は、進退不可に関する音声入力の回数の和が閾値J以上ではないと判定した場合(NO)、進退不可状態と判定しないため処理を終了する。一方、状態判定部336は、進退不可に関する音声入力の回数の和が閾値J以上であると判定した場合(YES)、ステップS517の処理に進み、進退不可状態にあると判定し、処理を終了する。
なお、頭部の動き量の判定結果を第2の実施形態に適用したときの状態判定処理は、図22のステップS501〜S511の各処理を、図17のステップS301〜S311の各処理とすればよい。この場合、状態判定部336は、回転操作をしている割に回転できておらず、且つ進退不可に関する音声入力の回数(ユーザの特定の発話の回数)が多い場合に、進退不可状態にあると判定することができる。さらには、第1、第2及び第3の実施形態を組み合わせることで、移動操作及び回転操作をしている割に移動及び回転できておらず、且つ、ユーザが必要以上にきょろきょろしており、且つ、進退不可に関する音声入力の回数(ユーザの特定の発話の回数)が多い場合に、進退不可状態にあると判定することもできる。
また、状態判定部336は、一定時間あたりの実際の変位量(移動距離または回転変位量)と進退不可に関する音声入力の回数の和とに基づいて、進退不可状態にあることを判定してもよい。例えば、状態判定部336は、一定時間において(時刻t1から時刻t2まで)、実際の移動距離が閾値A以下であり(図6参照)、且つ、実際の回転角変位量が閾値D以下であり(図6参照)、且つ進退不可に関する音声入力の回数の和が閾値J以上である(図21参照)と判定した場合、進退不可状態にあると判定してもよい。この状態判定処理の動作について、図23を参照して説明する。
図23は、第4の実施形態に係る状態判定処理の別の例を示すフローチャートである。この図23に示すステップS601〜S603の処理は、図10に示すステップS201〜S203の処理と同様である。また、図23に示すステップS605〜S607の処理は、図17に示すステップS301〜S303の処理と同様である。また、図23に示すステップS613〜S617の処理は、図22に示すステップS513〜S517の処理と同様である。
(ステップS601)状態判定部336は、図6に示す時刻t1から時刻t2までの「実際の移動距離」を算出する。そして、ステップS603の処理に進む。
(ステップS603)状態判定部336は、ステップS601で算出した「実際の移動距離」が閾値A以下であるか否かを判定する。状態判定部336は、「実際の移動距離」が閾値A以下ではないと判定した場合(NO)、進退不可状態と判定しないため処理を終了する。一方、状態判定部336は、「実際の移動距離」が閾値A以下であると判定した場合(YES)、ステップS605の処理に進む。
(ステップS605)状態判定部336は、図16に示す時刻t1から時刻t2までの「実際の回転角変位量」を算出する。そして、ステップS607の処理に進む。
(ステップS607)状態判定部336は、ステップS605で算出した「実際の回転角変位量」が閾値D以下であるか否かを判定する。状態判定部336は、「実際の回転角変位量」が閾値D以下ではないと判定した場合(NO)、進退不可状態と判定しないため処理を終了する。一方、状態判定部336は、「実際の回転角変位量」が閾値D以下であると判定した場合(YES)、ステップS613の処理に進む。
(ステップS613)状態判定部336は、「実際の移動距離」が閾値A以下であり、且つ「実際の回転角変位量」が閾値D以下であった場合、一定時間あたりの進退不可に関する音声入力の回数の和を算出し、ステップS615の処理に進む。
(ステップS615)状態判定部336は、ステップS613で算出した進退不可に関する音声入力の回数の和が閾値J以上であるか否かを判定する。状態判定部336は、進退不可に関する音声入力の回数の和が閾値J以上ではないと判定した場合(NO)、進退不可状態と判定しないため処理を終了する。一方、状態判定部336は、進退不可に関する音声入力の回数の和が閾値J以上であると判定した場合(YES)、ステップS617の処理に進み、進退不可状態にあると判定し、処理を終了する。
以上説明してきたように、第4の実施形態によれば、表示制御装置30Aは、ユーザの発話を検出する発話検出部338と、発話検出部338が検出する発話の中から予め設定された語句(例えば、進退不可に関する語句)を検出する語句検出部339とを備えている。そして、状態判定部336は、さらに、語句検出部339の検出結果に基づいて、仮想空間内で進退不可状態にあることを判定する。
これにより、表示制御装置30Aは、操作量(操作した分の変位量(移動距離または回転角変位量))と、ユーザの位置(すなわち、視点位置)の変位量(実際の変位量(移動距離または回転角変位量))とに加えて、ユーザが予め設定された語句(例えば、進退不可に関する語句)を発話しているか否かを考慮して進退不可状態か否かを判定するため、仮想空間内でユーザが前進することも後退することも困難な進退不可状態になった場合にその状態であることを適切に判定できる。
なお、表示制御装置30Aは、ユーザが予め設定された語句(例えば、進退不可に関する語句)を発話しているか否かのみに基づいて、進退不可状態か否かを判定してもよい。
[第5の実施形態]
次に、本発明の第5の実施形態について説明する。
第5の実施形態では、ユーザの頭部の動きと特定のアクションがなされることに基づいて進退不可状態を判定する例を説明する。具体的には、状態判定部336は、ユーザが上(例えば、天井)を見上げた状態で特定のアクションを行ったことに基づいて進退不可状態であることを判定する。
ユーザが上(例えば、天井)を見上げた状態の判定は、ユーザの頭部の動きに基づいて判定される。図24は、第5の実施形態に係るユーザの頭部の動きの判定の説明図である。ユーザが上(例えば、天井)を見上げたか否かは、水平方向に対する視線方向の回転角変位量が閾値K以上であるか否かにより判定される。このときの回転角変位量は、X軸を中心とした上下方向(ピッチ方向)への回転の回転角変位量である。閾値Kは、ユーザが上(例えば、天井)を見上げたと判定する最小の回転角変位量として予め設定されている。状態判定部336は、動き検出部332が検出した頭部の動き(HMD10が装着されたユーザの頭部の動き)の動き方向と動き量に基づいて、上下方向(ピッチ方向)への回転角変位量を算出し、算出した回転角変位量が閾値K以上である場合、ユーザが上(例えば、天井)を見上げた状態にあると判定する。
また、特定のアクションとは、コントローラ20に対する特定の操作である。この特定の操作は、例えば一つの操作ボタンに対して一回操作するような基本的な操作よりは複雑な操作であり、予め設定された操作である。例えば、特定の操作は、コントローラ20の任意のボタンを所定回数以上連打することであってもよいし、或いは、コントローラ20の十字ボタン21の左ボタンと右ボタンとを同時に押下する等であってもよく、任意に定めることができる。
また、特定のアクションとは、ユーザが特定の発話を行うことであってもよい。特定の発話とは、ユーザが進退不可状態にある場合に発話する可能性が高い発話内容であり、予め設定された発話内容である。具体的には、特定の発話とは、例えば「助けて」、「出られない」、「出たい」等であってもよい。
特定のアクションが特定の操作である場合は、図7及び図8に示す表示システム1の構成と、図19及び図20に示す表示システム1Aの構成とのいずれも適用できる。また、特定のアクションがユーザの特定の発話である場合は、図19及び図20に示す表示システム1Aの構成を適用できる。
(第5の実施形態の状態判定処理)
図25は、第5の実施形態に係る状態判定処理の一例を示すフローチャートである。
(ステップS701)状態判定部336は、動き検出部332が検出した頭部の動き(HMD10が装着されたユーザの頭部の動き)の動き方向と動き量に基づいて、上下方向(ピッチ方向)への回転角変位量を算出する。そして、ステップS703の処理に進む。
(ステップS703)状態判定部336は、ステップS701で算出した上下方向(ピッチ方向)への回転角変位量が閾値K以上であるか否かを判定する。状態判定部336は、閾値K以上ではないと判定した場合(NO)、進退不可状態と判定しないため処理を終了する。一方、状態判定部336は、閾値K以上であると判定した場合(YES)、ステップS705の処理に進む。
(ステップS705)状態判定部336は、特定のアクションがなされたか否かを判定する。特定のアクションが特定の操作である場合、状態判定部336は、操作検出部331が検出した操作入力に基づいて、特定のアクション(特定の操作)がなされたか否かを判定する。また、特定のアクションがユーザの特定の発話である場合、状態判定部336は、語句検出部339の検出結果に基づいて、特定のアクション(ユーザの特定の発話)がなされたか否かを判定する。状態判定部336は、特定のアクションがなされていないと判定した場合(NO)、進退不可状態と判定しないため処理を終了する。一方、状態判定部336は、特定のアクションがなされたと判定した場合(YES)、ステップS707の処理に進む。
(ステップS707)状態判定部336は、ユーザが上(例えば、天井)を見上げた状態(上下方向(ピッチ方向)への回転角変位量が閾値K以上)であり、且つ特定のアクションがなされたと判定したため、ユーザが移動操作及び回転操作をあきらめていると判断し、進退不可状態にあると判定する。
以上説明してきたように、第5の実施形態によれば、表示制御装置30(または、表示制御装置30A)の状態判定部336は、動き検出部332がユーザの頭部が上を見上げる動きを検出し、且つユーザが特定のアクションを行ったことに基づいて、仮想空間内で進退不可状態にあることを判定する。例えば、状態判定部336は、操作検出部331がユーザによる特定の操作入力を検出した場合、前記特定のアクションを行ったと判定する。
これにより、表示制御装置30(または、表示制御装置30A)は、ユーザが上(例えば、天井)を見上げた状態で特定の操作をした場合、ユーザが通常の操作を行えない状態にあることの意思表示の一つと判断して進退不可状態にあると判定するため、仮想空間内でユーザが前進することも後退することも困難な進退不可状態にあることを適切に判定できる。
また、表示制御装置30Aは、ユーザの発話を検出する発話検出部338と、発話検出部338から検出する発話の中から語句を検出する語句検出部339と、を備えている。この場合、表示制御装置30Aの状態判定部336が、語句検出部339が特定の語句を検出した場合、特定のアクションを行ったと判定してもよい。
これにより、表示制御装置30Aは、ユーザが上(例えば、天井)を見上げた状態で特定の発話(例えば、「助けて」)をした場合、ユーザが通常の操作を行えない状態にあることの意思表示の一つと判断して進退不可状態にあることを判定するため、仮想空間内でユーザが前進することも後退することも困難な進退不可状態にあることを適切に判定できる。
[第6の実施形態]
次に、本発明の第6の実施形態について説明する。
第6の実施形態では、ユーザが頻繁にコントローラ20を見ながら操作している場合に進退不可状態にあると判定する例を説明する。この第6の実施形態では、図7及び図8に示す表示システム1の構成と、図19及び図20に示す表示システム1Aの構成とのいずれも適用できる。ただし、コントローラ20が自身の動きを検知可能なセンサを備え、動き検出部332がコントローラ入力部312を介してコントローラ20の動きの検知結果を取得してコントローラ20の動きを検出する構成が付加される。
図26は、第6の実施形態に係るユーザがコントローラ20に視線を向けている状態の一例を示す図である。図示する例では、ユーザが頭部を下方へ向けてコントローラ20を持つ手元の方を見ている状態を表している。なお、ユーザがコントローラ20に視線を向けている状態としては、ユーザが頭部を下方へ向ける場合だけではなく、コントローラ20を持つ手を眼前の方へ上げる場合もある。いずれの場合であっても、仮想空間におけるユーザの視界に対応する実空間の範囲にコントローラ20が存在する状態となる。
上述したように、コントローラ20は、コントローラ20の動きを検知可能なセンサを備えている。そして、表示制御装置30(30A)は、コントローラ20の動きに基づいて、実空間におけるコントローラ20の位置に対応する仮想空間内の位置にコントローラ画像を加えた画像(仮想空間の視界画像にコントローラ画像を重畳した画像)をHMD10に表示させる。コントローラ画像は、コントローラ20に相当するものとして予め用意されている画像であって、実際のコントローラ20の外観を模した画像である。なお、コントローラ画像は、実際のコントローラ20の外観を簡略化した画像でもよい。
例えば、画像生成部335は、変位制御部334の制御に応じて仮想空間におけるユーザの視線方向の視界画像を生成するとともに、動き検出部332により検出されたコントローラ20の動きに基づいて、仮想空間におけるユーザの視界に対応する実空間の範囲にコントローラ20が存在する場合、実空間のコントローラ20の位置に対応する仮想空間の位置にコントローラ画像を表示させる。
図27は、ユーザがコントローラ20に視線を向けている状態のときにHND10に表示される視界画像の一例を示す図である。図示する例では、視界画像GRには、コントローラ画像CGが表示されている。なお、破線で囲まれた領域HRは、ユーザがコントローラ20に視線を向けている状態であると判定するための予め設定された領域である。例えば、視界画像GRにおいて領域HR内にコントローラ画像CGが入っている場合に、ユーザがコントローラ20に視線を向けている状態であると判定される。なお、判定方法としては、領域HR内にコントローラ画像CGのすべてが入っているか否かとしてもよいし、或いは、領域HR内にコントローラ画像CGの一部が入っているか否かとしてもよい。また、判定方法としては、コントローラ画像CG内の特定の位置(例えは、中央の位置)が領域HR内に入っているか否かとしてもよい。領域HRの大きさは、各判定方法によって、任意に設定することができる。
領域HR内にコントローラ画像CGが入っている場合、仮想空間においてユーザの手元にあるコントローラ20に視線を向けて操作していることになるため、操作がわからない状態か、或いは思った通りの操作ができていない状態であると考えられる。そこで、状態判定部336は、一定時間内に領域HR内にコントローラ画像CGが入っている時間(すなわち、コントローラ20に視線を向けている時間)が閾値L以上である場合に、進退不可状態にあると判定する。閾値Lは、進退不可状態にあると判定する際の、一定時間内にコントローラ20に視線を向けている時間の割合の閾値として予め設定された値である。
(第6の実施形態の状態判定処理)
図28は、第6の実施形態に係る状態判定処理の一例を示すフローチャートである。
(ステップS801)状態判定部336は、一定時間内に領域HR内にコントローラ画像CGが入っている時間を検出する。そして、ステップS803の処理に進む。
(ステップS803)状態判定部336は、一定時間内に領域HR内にコントローラ画像CGが入っている時間が閾値L以上であるか否かを判定する。状態判定部336は、閾値L未満であると判定した場合(NO)、進退不可状態と判定しないため処理を終了する。一方、状態判定部336は、閾値L以上であると判定した場合(YES)、ステップS805の処理に進む。
(ステップS805)状態判定部336は、一定時間内に領域HR内にコントローラ画像CGが入っている時間(すなわち、コントローラ20に視線を向けている時間)が閾値L以上であるため、進退不可招待にあることを判定する。
以上説明してきたように、第6の実施形態によれば、表示制御装置30(30A)の画像生成部335(表示制御部の一例)は、動き検出部332の検出結果に基づいて、HMD10(表示部12)に表示させるユーザの位置(すなわち、視点位置)からの画像を当該ユーザの頭部の向きに応じた画像に変更するとともに、当該ユーザの操作入力が行われるコントローラ20(操作部の一例)に対応するコントローラ画像(操作部画像の一例)を、現実空間における当該ユーザの視点位置とコントローラ20との位置関係に応じてHMD10(表示部12)に表示させる。そして、状態判定部336は、HMD10(表示部12)に表示された画像内の所定の範囲にコントローラ画像が一定時間以上表示されたことに基づいて、仮想空間内で進退不可状態にあることを判定する。
これにより、表示制御装置30(または、表示制御装置30A)は、コントローラ20に視線を向けている時間が長い場合には、思った通りの操作ができていない状態であるものと判断して進退不可状態にあると判定するため、仮想空間内でユーザが前進することも後退することも困難な進退不可状態にあることを適切に判定できる。
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。例えば、上述の第1〜6の実施形態において説明した各構成は、任意に組み合わせてもよい。
なお、上記実施形態ではHMD10の表示部12に仮想空間の表示(例えば、VRコンテンツの表示)を行う例を説明したが、第1〜第4の実施形態については、HMD10に限られるものではなく、その他の表示装置の表示部に仮想空間の表示(例えば、VRコンテンツの表示)を行ってもよい。そのほかの表示装置とは、例えば、テレビジョン装置、パーソナルコンピュータ用のモニター装置、表示部を備えたゲーム機、スマートフォン、タブレット端末などである。
なお、上述した実施形態における表示制御装置30(30A)の一部、例えば、制御部330(330A)をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、表示制御装置30(30A)に内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
また、上述した実施形態における表示制御装置30(30A)の一部、例えば、制御部330(330A)を、LSI(Large Scale Integration)等の集積回路として実現してもよい。また、例えば、制御部330(330A)のそれぞれを集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。