(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024083363
(43)【公開日】2024-06-21
(54)【発明の名称】画像表示システム、画像表示プログラム、表示制御装置、および画像表示方法
(51)【国際特許分類】
G06T 19/00 20110101AFI20240614BHJP
G06F 3/01 20060101ALI20240614BHJP
G06F 3/04815 20220101ALI20240614BHJP
G02B 27/02 20060101ALI20240614BHJP
G09G 5/00 20060101ALI20240614BHJP
G09G 5/38 20060101ALI20240614BHJP
【FI】
G06T19/00 300B
G06F3/01 510
G06F3/04815
G02B27/02 Z
G09G5/00 510A
G09G5/00 550C
G09G5/38 100
【審査請求】有
【請求項の数】19
【出願形態】OL
(21)【出願番号】P 2024043430
(22)【出願日】2024-03-19
(62)【分割の表示】P 2023027105の分割
【原出願日】2019-03-20
(71)【出願人】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】100158780
【弁理士】
【氏名又は名称】寺本 亮
(74)【代理人】
【識別番号】100121359
【弁理士】
【氏名又は名称】小沢 昌弘
(74)【代理人】
【識別番号】100130269
【弁理士】
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】小野沢 祐貴
(72)【発明者】
【氏名】清水 大悟
(72)【発明者】
【氏名】河合 健太朗
(57)【要約】
【課題】仮想空間に配置されたオブジェクトの操作性を向上させることが可能な画像表示システムを提供する。
【解決手段】画像表示システムの一例は、表示部を有するゴーグル装置を含む。仮想空間に、仮想カメラとユーザインターフェイスが配置される。ゴーグル装置の姿勢に応じて仮想空間内の仮想カメラの姿勢が制御される。ゴーグル装置がピッチ方向に所定の角度以上回転した場合、ユーザインターフェイスをヨー方向における仮想カメラの正面に移動させる。
【選択図】
図12
【特許請求の範囲】
【請求項1】
ゴーグル装置と、
仮想空間にオブジェクトを配置するオブジェクト配置手段と、
前記仮想空間の仮想カメラによって撮像される画像を前記ゴーグル装置の表示部に表示させる表示制御手段と、
少なくとも前記ゴーグル装置のヨー方向の回転角およびピッチ方向の回転角を取得する取得手段と、
前記ゴーグル装置のヨー方向の回転角に応じて前記仮想カメラを前記仮想空間のヨー方向に回転させ、前記ゴーグル装置のピッチ方向の回転角に応じて前記仮想カメラを前記仮想空間のピッチ方向に回転させるカメラ回転手段と、
前記ゴーグル装置のピッチ方向の回転角が所定の範囲か否かを判定する判定手段と、
前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外となった場合、ヨー方向における前記仮想カメラの正面に前記オブジェクトが位置するように、前記仮想空間において前記オブジェクトの移動及び前記仮想カメラの制御の少なくとも何れか一方を行う制御手段と、を備える、画像表示システム。
【請求項2】
前記制御手段は、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外である間、ヨー方向における前記仮想カメラの正面に前記オブジェクトが位置し続けるように、前記ゴーグル装置のヨー方向への回転に応じて、前記オブジェクトの移動及び前記仮想カメラの制御の少なくとも何れか一方を行う、請求項1に記載の画像表示システム。
【請求項3】
前記制御手段は、
前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲である場合、ヨー方向における前記仮想カメラの正面に前記オブジェクトを位置させるための、前記オブジェクトの移動及び前記仮想カメラの制御を行わない、請求項1又は2に記載の画像表示システム。
【請求項4】
前記所定の範囲は、前記ゴーグル装置が水平状態となる角度を含む範囲である、請求項3に記載の画像表示システム。
【請求項5】
少なくとも前記ゴーグル装置のピッチ方向の回転角に基づいて前記オブジェクトを選択する選択手段をさらに備え、
前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外である場合は、前記選択手段による前記オブジェクトの選択が不可である、請求項1から4の何れかに記載の画像表示システム。
【請求項6】
前記ゴーグル装置のヨー方向の回転角が所定条件を満たしたか否かを判定する第2判定手段と、
前記第2判定手段によって前記ゴーグル装置のヨー方向の回転角が前記所定条件を満たしたと判定された場合、ヨー方向における前記仮想カメラの正面に前記オブジェクトが位置するように、前記仮想空間において前記オブジェクトの移動及び前記仮想カメラの制御の少なくとも何れか一方を行う第2制御手段と、をさらに備える、請求項1から5の何れかに記載の画像表示システム。
【請求項7】
前記判定手段は、前記ゴーグル装置の俯角が所定の閾値以上である場合、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外であると判定する、請求項1から6の何れかに記載の画像表示システム。
【請求項8】
前記判定手段は、前記ゴーグル装置の仰角が所定の閾値以上である場合、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外であると判定する、請求項1から7の何れかに記載の画像表示システム。
【請求項9】
前記判定手段は、前記ゴーグル装置の俯角が閾値以上である場合、又は、仰角が閾値以上である場合、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外であると判定する、請求項1から6の何れかに記載の画像表示システム。
【請求項10】
前記制御手段は、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外となった場合、前記オブジェクトの前記仮想空間における高さ方向の位置を維持したまま、前記オブジェクトをヨー方向における前記仮想カメラの正面に移動させる、請求項1から9の何れかに記載の画像表示システム。
【請求項11】
前記オブジェクトは、ユーザが操作可能なユーザインターフェイスである、請求項1から10の何れかに記載の画像表示システム。
【請求項12】
前記制御手段は、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外となった後に前記所定の範囲内となった場合に、ヨー方向における前記仮想カメラの正面に前記オブジェクトが位置するように、前記オブジェクトの移動及び前記仮想カメラの制御の少なくとも何れか一方を行う、請求項1に記載の画像表示システム。
【請求項13】
ゴーグル装置を含む画像表示システムであって、
仮想空間にオブジェクトを配置するオブジェクト配置手段と、
前記仮想空間の仮想カメラによって撮像される画像を前記ゴーグル装置の表示部に表示させる表示制御手段と、
少なくとも前記ゴーグル装置のヨー方向の回転角およびピッチ方向の回転角を取得する取得手段と、
前記ゴーグル装置のヨー方向の回転角に応じて前記仮想カメラを前記仮想空間のヨー方向に回転させ、前記ゴーグル装置のピッチ方向の回転角に応じて前記仮想カメラを前記仮想空間のピッチ方向に回転させるカメラ回転手段と、
前記ゴーグル装置のピッチ方向の回転角が所定の範囲か否かを判定する判定手段と、
前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外となった後に前記所定の範囲内となった場合に、ヨー方向における前記仮想カメラの正面に前記オブジェクトが位置するように、前記仮想空間において前記オブジェクトの移動及び前記仮想カメラの制御の少なくとも何れか一方を行う制御手段と、を備える、画像表示システム。
【請求項14】
ゴーグル装置の表示部に画像を表示させる装置のプロセッサにおいて実行される画像表示プログラムであって、前記プロセッサを、
仮想空間にオブジェクトを配置するオブジェクト配置手段、
前記仮想空間の仮想カメラによって撮像される画像を前記表示部に表示させる表示制御手段、
少なくとも前記ゴーグル装置のヨー方向の回転角およびピッチ方向の回転角を取得する取得手段、
前記ゴーグル装置のヨー方向の回転角に応じて前記仮想カメラを前記仮想空間のヨー方向に回転させ、前記ゴーグル装置のピッチ方向の回転角に応じて前記仮想カメラを前記仮想空間のピッチ方向に回転させるカメラ回転手段、
前記ゴーグル装置のピッチ方向の回転角が所定の範囲か否かを判定する判定手段、および、
前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外となった場合、ヨー方向における前記仮想カメラの正面に前記オブジェクトが位置するように、前記仮想空間において前記オブジェクトの移動及び前記仮想カメラの制御の少なくとも何れか一方を行う制御手段、として機能させる、画像表示プログラム。
【請求項15】
ゴーグル装置の表示部に画像を表示させる表示制御装置であって、
仮想空間にオブジェクトを配置するオブジェクト配置手段と、
前記仮想空間の仮想カメラによって撮像される画像を前記表示部に表示させる表示制御手段と、
少なくとも前記ゴーグル装置のヨー方向の回転角およびピッチ方向の回転角を取得する取得手段と、
前記ゴーグル装置のヨー方向の回転角に応じて前記仮想カメラを前記仮想空間のヨー方向に回転させ、前記ゴーグル装置のピッチ方向の回転角に応じて前記仮想カメラを前記仮想空間のピッチ方向に回転させるカメラ回転手段と、
前記ゴーグル装置のピッチ方向の回転角が所定の範囲か否かを判定する判定手段と、
前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外となった場合、ヨー方向における前記仮想カメラの正面に前記オブジェクトが位置するように、前記仮想空間において前記オブジェクトの移動及び前記仮想カメラの制御の少なくとも何れか一方を行う制御手段と、を備える、表示制御装置。
【請求項16】
ゴーグル装置を含む画像表示システムにおいて行われる画像表示方法であって、前記画像表示システムに、
仮想空間にオブジェクトを配置するオブジェクト配置ステップと、
前記仮想空間の仮想カメラによって撮像される画像を前記ゴーグル装置の表示部に表示させる表示制御ステップと、
少なくとも前記ゴーグル装置のヨー方向の回転角およびピッチ方向の回転角を取得する取得ステップと、
前記ゴーグル装置のヨー方向の回転角に応じて前記仮想カメラを前記仮想空間のヨー方向に回転させ、前記ゴーグル装置のピッチ方向の回転角に応じて前記仮想カメラを前記仮想空間のピッチ方向に回転させるカメラ回転ステップと、
前記ゴーグル装置のピッチ方向の回転角が所定の範囲か否かを判定する判定手段と、
前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外となった場合、ヨー方向における前記仮想カメラの正面に前記オブジェクトが位置するように、前記仮想空間において前記オブジェクトの移動及び前記仮想カメラの制御の少なくとも何れか一方を行う制御ステップと、を実行させる、画像表示方法。
【請求項17】
ゴーグル装置の表示部に画像を表示させる装置のプロセッサにおいて実行される画像表示プログラムであって、前記プロセッサを、
仮想空間にオブジェクトを配置するオブジェクト配置手段、
前記仮想空間の仮想カメラによって撮像される画像を前記表示部に表示させる表示制御手段、
少なくとも前記ゴーグル装置のヨー方向の回転角およびピッチ方向の回転角を取得する取得手段、
前記ゴーグル装置のヨー方向の回転角に応じて前記仮想カメラを前記仮想空間のヨー方向に回転させ、前記ゴーグル装置のピッチ方向の回転角に応じて前記仮想カメラを前記仮想空間のピッチ方向に回転させるカメラ回転手段、
前記ゴーグル装置のピッチ方向の回転角が所定の範囲か否かを判定する判定手段、および、
前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外となった後に前記所定の範囲内となった場合に、ヨー方向における前記仮想カメラの正面に前記オブジェクトが位置するように、前記仮想空間において前記オブジェクトの移動及び前記仮想カメラの制御の少なくとも何れか一方を行う制御手段、として機能させる、画像表示プログラム。
【請求項18】
ゴーグル装置の表示部に画像を表示させる表示制御装置であって、
仮想空間にオブジェクトを配置するオブジェクト配置手段と、
前記仮想空間の仮想カメラによって撮像される画像を前記表示部に表示させる表示制御手段と、
少なくとも前記ゴーグル装置のヨー方向の回転角およびピッチ方向の回転角を取得する取得手段と、
前記ゴーグル装置のヨー方向の回転角に応じて前記仮想カメラを前記仮想空間のヨー方向に回転させ、前記ゴーグル装置のピッチ方向の回転角に応じて前記仮想カメラを前記仮想空間のピッチ方向に回転させるカメラ回転手段と、
前記ゴーグル装置のピッチ方向の回転角が所定の範囲か否かを判定する判定手段と、
前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外となった後に前記所定の範囲内となった場合に、ヨー方向における前記仮想カメラの正面に前記オブジェクトが位置するように、前記仮想空間において前記オブジェクトの移動及び前記仮想カメラの制御の少なくとも何れか一方を行う制御手段と、を備える、表示制御装置。
【請求項19】
ゴーグル装置を含む画像表示システムにおいて行われる画像表示方法であって、前記画像表示システムに、
仮想空間にオブジェクトを配置するオブジェクト配置ステップと、
前記仮想空間の仮想カメラによって撮像される画像を前記ゴーグル装置の表示部に表示させる表示制御ステップと、
少なくとも前記ゴーグル装置のヨー方向の回転角およびピッチ方向の回転角を取得する取得ステップと、
前記ゴーグル装置のヨー方向の回転角に応じて前記仮想カメラを前記仮想空間のヨー方向に回転させ、前記ゴーグル装置のピッチ方向の回転角に応じて前記仮想カメラを前記仮想空間のピッチ方向に回転させるカメラ回転ステップと、
前記ゴーグル装置のピッチ方向の回転角が所定の範囲か否かを判定する判定手段と、
前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外となった後に前記所定の範囲内となった場合に、ヨー方向における前記仮想カメラの正面に前記オブジェクトが位置するように、前記仮想空間において前記オブジェクトの移動及び前記仮想カメラの制御の少なくとも何れか一方を行う制御ステップと、を実行させる、画像表示方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像を表示することが可能な画像表示システム、画像表示プログラム、表示制御装置、および画像表示方法に関する。
【背景技術】
【0002】
先行技術として、仮想空間にオブジェクトを配置し、仮想空間内を移動しつつ、仮想カメラの視線をオブジェクトに向けることでオブジェクトを表示させる画像表示システムがある(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記先行技術ではオブジェクトを表示させるために、例えばユーザが仮想カメラの視線をオブジェクトに向ける操作を行う必要があり、オブジェクトの操作性を向上させるという観点では改善の余地があった。
【0005】
それ故、本発明の目的は、仮想空間に配置されたオブジェクトの操作性を向上させることが可能な画像表示システム、画像表示プログラム、表示制御装置、および画像表示方法を提供することである。
【課題を解決するための手段】
【0006】
上記の課題を解決すべく、本発明は、以下の構成を採用した。
【0007】
本発明の画像表示システムは、ゴーグル装置を含む画像表示システムであって、オブジェクト配置手段と、表示制御手段と、取得手段と、カメラ回転手段と、判定手段と、制御手段と、を備える。オブジェクト配置手段は、仮想空間にオブジェクトを配置する。表示制御手段は、前記仮想空間の仮想カメラによって撮像される画像を前記ゴーグル装置の表示部に表示させる。取得手段は、少なくとも前記ゴーグル装置のヨー方向の回転角およびピッチ方向の回転角を取得する。カメラ回転手段は、前記ゴーグル装置のヨー方向の回転角に応じて前記仮想カメラを前記仮想空間のヨー方向に回転させ、前記ゴーグル装置のピッチ方向の回転角に応じて前記仮想カメラを前記仮想空間のピッチ方向に回転させる。判定手段は、前記ゴーグル装置のピッチ方向の回転角が所定の範囲か否かを判定する。制御手段は、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外となった場合、ヨー方向における前記仮想カメラの正面に前記オブジェクトが位置するように、前記仮想空間において前記オブジェクトの移動及び前記仮想カメラの制御の少なくとも何れか一方を行う。
【0008】
上記によれば、ゴーグル装置のピッチ方向の回転角が所定の範囲外になった場合、例えば、オブジェクトがヨー方向における仮想カメラの正面に位置するように、オブジェクトを移動させたり、仮想カメラの制御を行ったりすることができる。これにより、ユーザは、例えば、ゴーグル装置をピッチ方向に所定の角度以上回転させた場合に、より容易にオブジェクトを正面から見ることができる。したがって、オブジェクトの操作性を向上させることができる。
【0009】
また、他の構成では、前記制御手段は、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外である間、ヨー方向における前記仮想カメラの正面に前記オブジェクトが位置し続けるように、前記ゴーグル装置のヨー方向への回転に応じて、前記オブジェクトの移動及び前記仮想カメラの制御の少なくとも何れか一方を行ってもよい。
【0010】
上記によれば、ゴーグル装置のピッチ方向の回転角が所定の範囲外である間、例えば、ゴーグル装置をヨー方向に回転させた場合でも、ヨー方向における正面にオブジェクトを位置させることができる。
【0011】
また、他の構成では、前記制御手段は、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲である場合、ヨー方向における前記仮想カメラの正面に前記オブジェクトを位置させるための、前記オブジェクトの移動及び前記仮想カメラの制御を行わなくてもよい。
【0012】
上記によれば、ゴーグル装置のピッチ方向の回転角が前記所定の範囲では、例えばオブジェクトの位置を維持し続けることができる。
【0013】
また、他の構成では、前記所定の範囲は、前記ゴーグル装置が水平状態となる角度を含む範囲であってもよい。
【0014】
上記によれば、例えばゴーグル装置が水平状態であるときには、例えばオブジェクトの位置を維持し続けることができる。
【0015】
また、他の構成では、前記画像表示システムは、前記ゴーグル装置の回転角に応じて前記オブジェクトを選択する選択手段をさらに備えてもよい。前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外である場合は、前記選択手段による前記オブジェクトの選択が不可であってもよい。
【0016】
上記によれば、ゴーグル装置の回転角に応じてオブジェクトを選択することができ、オブジェクトの選択可能な状態でないときに、オブジェクトの移動及び仮想カメラの制御の少なくとも何れか一方を行うことができる。
【0017】
また、他の構成では、前記画像表示システムは、前記ゴーグル装置のヨー方向の回転角が所定条件を満たしたか否かを判定する第2判定手段をさらに備えてもよい。また、前記画像表示システムは、前記第2判定手段によって前記ゴーグル装置のヨー方向の回転角が前記所定条件を満たしたと判定された場合、ヨー方向における前記仮想カメラの正面に前記オブジェクトが位置するように、前記仮想空間において前記オブジェクトの移動及び前記仮想カメラの制御の少なくとも何れか一方を行う第2制御手段をさらに備えてもよい。
【0018】
上記によれば、さらにゴーグル装置のヨー方向の回転角に基づいて、オブジェクトの移動又は仮想カメラの制御を行うことができる。
【0019】
また、他の構成では、前記判定手段は、前記ゴーグル装置の俯角が所定の閾値以上である場合、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外であると判定してもよい。
【0020】
上記によれば、ゴーグル装置が下を向いている場合に、オブジェクトの移動又は仮想カメラの制御を行うことができる。なお、前記判定手段は、前記ゴーグル装置の俯角が所定の閾値である場合に、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外であると判定してもよいし、前記所定の範囲内であると判定してもよい。
【0021】
また、他の構成では、前記判定手段は、前記ゴーグル装置の仰角が所定の閾値以上である場合、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外であると判定してもよい。
【0022】
上記によれば、ゴーグル装置が上を向いている場合に、オブジェクトの移動又は仮想カメラの制御を行うことができる。なお、前記判定手段は、前記ゴーグル装置の仰角が所定の閾値である場合に、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外であると判定してもよいし、前記所定の範囲内であると判定してもよい。
【0023】
また、他の構成では、前記判定手段は、前記ゴーグル装置の俯角が閾値以上である場合、又は、仰角が閾値以上である場合、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外であると判定してもよい。
【0024】
上記によれば、ゴーグル装置が上又は下を向いている場合に、オブジェクトの移動又は仮想カメラの制御を行うことができる。なお、前記判定手段は、前記ゴーグル装置の俯角が閾値である場合、又は仰角が閾値である場合、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外であると判定してもよいし、前記所定の範囲内であると判定してもよい。
【0025】
また、他の構成では、前記制御手段は、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外となった場合、前記オブジェクトの前記仮想空間における高さ方向の位置を維持したまま、前記オブジェクトをヨー方向における前記仮想カメラの正面に移動させてもよい。
【0026】
上記によれば、オブジェクトの高さ方向の位置を維持したまま、オブジェクトをヨー方向における仮想カメラの正面に移動させることができる。これにより、ユーザが真っすぐ前を向いた場合にオブジェクトを正面から見ることができ、オブジェクトの操作性を向上させることができる。
【0027】
また、他の構成では、前記オブジェクトは、ユーザが操作可能なユーザインターフェイスであってもよい。
【0028】
上記によれば、ユーザインターフェイスの操作性を向上させることができる。
【0029】
また、他の構成では、前記制御手段は、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外となった後に前記所定の範囲内となった場合に、ヨー方向における前記仮想カメラの正面に前記オブジェクトが位置するように、前記オブジェクトの移動及び前記仮想カメラの制御の少なくとも何れか一方を行ってもよい。
【0030】
上記によれば、ゴーグル装置のピッチ方向の回転角が所定の範囲外になった後、所定の範囲内になった場合、オブジェクトをヨー方向における仮想カメラの正面に位置させることができる。これにより、ユーザは、例えば、ゴーグル装置をピッチ方向に所定の角度以上回転させてから、ゴーグル装置のピッチ方向の回転を戻してゴーグル装置を見たときに、オブジェクトを正面から見ることができる。
【0031】
他の実施形態に係る画像表示システムは、ゴーグル装置を含む画像表示システムであって、オブジェクト配置手段と、表示制御手段と、取得手段と、カメラ回転手段と、判定手段と、制御手段と、を備える。オブジェクト配置手段は、仮想空間にオブジェクトを配置する。表示制御手段は、前記仮想空間の仮想カメラによって撮像される画像を前記ゴーグル装置の表示部に表示させる。取得手段は、少なくとも前記ゴーグル装置のヨー方向の回転角およびピッチ方向の回転角を取得する。カメラ回転手段は、前記ゴーグル装置のヨー方向の回転角に応じて前記仮想カメラを前記仮想空間のヨー方向に回転させ、前記ゴーグル装置のピッチ方向の回転角に応じて前記仮想カメラを前記仮想空間のピッチ方向に回転させる。判定手段は、前記ゴーグル装置のピッチ方向の回転角が所定の範囲か否かを判定する。制御手段は、前記ゴーグル装置のピッチ方向の回転角が前記所定の範囲外となった後に前記所定の範囲内となった場合に、ヨー方向における前記仮想カメラの正面に前記オブジェクトが位置するように、前記仮想空間において前記オブジェクトの移動及び前記仮想カメラの制御の少なくとも何れか一方を行う。
【0032】
上記によれば、ゴーグル装置のピッチ方向の回転角が所定の範囲外になった後、所定の範囲内になった場合、オブジェクトをヨー方向における仮想カメラの正面に位置させることができる。これにより、ユーザは、例えば、ゴーグル装置をピッチ方向に所定の角度以上回転させてから、ゴーグル装置のピッチ方向の回転を戻してゴーグル装置を見たときに、オブジェクトを正面から見ることができる。したがって、オブジェクトの操作性を向上させることができる。
【0033】
また、他の発明は、ゴーグル装置の表示部に画像を表示させる装置のプロセッサを、上記各手段として機能させる画像表示プログラムであってもよい。また、他の発明は、ゴーグル装置の表示部に画像を表示させる表示制御装置であって、上記各手段を備える装置であってもよい。また、他の発明は、ゴーグル装置を含む上記画像表示システムにおいて行われる画像表示方法であってもよい。
【発明の効果】
【0034】
本発明によれば、例えば、ゴーグル装置をピッチ方向に回転させることで、オブジェクトをヨー方向における仮想カメラの正面に移動させることができ、オブジェクトの操作性を向上させることができる。
【図面の簡単な説明】
【0035】
【
図1】本実施形態における画像表示システム1の一例を示す図
【
図2】画像表示システム1に含まれる、表示部21を有する情報処理装置2の外観の一例を示す図
【
図4】ユーザがゴーグル装置10を使用するときの様子を示す図
【
図6A】ゴーグル装置10が基準姿勢に維持されているときの仮想空間を上方から見た図
【
図6B】ゴーグル装置10が基準姿勢からヨー方向(左方向)に回転されたときの仮想空間を上方から見た図
【
図6C】ゴーグル装置10が
図6Bの状態からさらにヨー方向(左方向)に回転されたときの仮想空間を上方から見た図
【
図7A】ユーザに視認される画像の一例であって、
図6Aに示す姿勢の仮想カメラVC(VCL又はVCR)から仮想空間を見た画像の一例を示す図
【
図7B】ユーザに視認される画像の一例であって、
図6Bに示す姿勢の仮想カメラVCから仮想空間を見た画像の一例を示す図
【
図7C】ユーザに視認される画像の一例であって、
図6Cに示す姿勢の仮想カメラVCから仮想空間を見た画像の一例を示す図
【
図8】
図6Cに示される姿勢においてゴーグル装置10を右方向に所定の角度だけ反転させた場合にUIオブジェクト30が仮想カメラVCの正面に移動する様子を示した図
【
図9】UIオブジェクト30が移動される領域の一例を示す図
【
図10】仮想カメラVCを仮想空間の上方から見た図であって、仮想カメラVCを左方向に回転させた後、右方向に回転させたときの一例を示す図
【
図11】仮想カメラVCを仮想空間の横方向から見た図であって、仮想カメラVCを下方向に回転させた後、上方向に回転させたときの一例を示す図
【
図12】仮想カメラVCの視線がA領域にある場合においてUIオブジェクト30が移動する様子を示した図
【
図13A】仮想カメラVCの視線が下方向に回転しA領域に入った場合において表示部21に表示される画像の一例を示す図
【
図13B】
図13Aの状態から仮想カメラVCが左方向に回転したときに表示部21に表示される画像の一例を示す図
【
図14】情報処理装置2(のDRAM23)に記憶されるデータの一例を示す図
【
図15】情報処理装置2のプロセッサ20において行われるメイン処理の一例を示すフローチャート
【
図16】ステップS106のB領域における移動処理の一例を示すフローチャート
【発明を実施するための形態】
【0036】
(画像表示システムの構成)
以下、図面を参照して、本実施形態の画像表示システム1について説明する。本実施形態の画像表示システム1は、ユーザにバーチャルリアリティ(VR)を体験させるシステムである。
図1は、本実施形態における画像表示システム1の一例を示す図である。
図2は、画像表示システム1に含まれる、表示部21を有する情報処理装置2の外観の一例を示す図である。
【0037】
図1に示すように、画像表示システム1は、ゴーグル装置10を含む。ゴーグル装置10は、ユーザの両手又は片手で把持され、ユーザの左右の目を覆うようにしてユーザの顔に当てられる。
【0038】
ゴーグル装置10は、上面11と、右側面12と、下面13と、左側面14と、底面15とを含む。これらの面11~15によって、ゴーグル本体が形成される。また、ゴーグル装置10の底面15には、ユーザの左目に対応する位置に略円形の左開口16Lが設けられ、ユーザの右目に対応する位置に略円形の右開口16Rが設けられる。左開口16Lおよび右開口16Rには、それぞれレンズが嵌合されている。また、ゴーグル装置10の面11~15によって囲まれる内側の空間には、ゴーグル装置10の内側の空間を左右に区切る仕切り面17が設けられる。
【0039】
また、ゴーグル装置10は、表示部21を備える。具体的には、ゴーグル本体の底面15の裏側には、表示部21を備える情報処理装置2が設けられる。底面15の裏側に設けられた情報処理装置2の表示部21の一部が、レンズを介して左開口16Lおよび右開口16Rからユーザに視認される。
図2に示されるように、表示部21は、横長の略長方形の表示画面である。
図2の左側の破線で囲まれた左領域21Lが、左開口16Lに設けられたレンズを介してユーザの左目に視認され、右側の破線で囲まれた右領域21Rが、右開口16Rに設けられたレンズを介してユーザの右目に視認される。ユーザがゴーグル装置10を把持して顔に当てた場合、ユーザの左目は上面11、下面13、左側面14、及び仕切り面17によってほぼ囲まれ、ユーザの右目は上面11、下面13、右側面12、及び仕切り面17によってほぼ囲まれる。このため、ユーザの左目には、表示部21の左領域21Lに表示された左目画像が視認される一方、周囲の環境や右領域21Rに表示された右目画像は、左目に視認され難い。また、ユーザの右目には、表示部21の右領域21Rに表示された右目画像が視認される一方、周囲の環境や左領域21Lに表示された左目画像は、右目に視認され難い。
【0040】
ゴーグル本体と表示部21とによって、ゴーグル装置10が構成される。表示部21を有する情報処理装置2は、ゴーグル本体に着脱可能に装着される。ゴーグル本体に着脱可能な情報処理装置2として、タブレット端末、スマートフォン、携帯型のゲーム装置等が用いられてもよい。
【0041】
詳細は後述するが、情報処理装置2は、仮想空間を左仮想カメラから見た左目画像と、仮想空間を右仮想カメラから見た右目画像とを生成する。情報処理装置2は、生成した左目画像および右目画像を、表示部21の左領域21Lおよび右領域21Rにそれぞれ表示させる。これにより、ユーザは、立体視画像を視認することができ、自身が仮想空間に存在するかのようなバーチャルリアリティ(VR)を体験することができる。
【0042】
図3は、情報処理装置2の機能構成の一例を示す図である。
図3に示されるように、情報処理装置2は、表示部21に加えて、プロセッサ20と、慣性センサ22と、DRAM23と、不揮発性メモリ24とを備える。プロセッサ20はCPUとGPUとを含む。CPUは、DRAM23と協働して後述する処理を行い、GPUは、CPUからの命令に応じた画像(左目画像および右目画像)を生成する。生成された左目画像および右目画像は、表示部21の左領域21Lおよび右領域21Rにそれぞれ表示される。なお、CPUとGPUとは、それぞれ別々のチップ上に実装されてもよいし、これらはSoC(System-on-a-chip)として1つのチップ上に実装されてもよい。
【0043】
また、慣性センサ22は、情報処理装置2の姿勢を検出するためのセンサである。具体的には、慣性センサ22は、角速度センサと加速度センサとを含む。角速度センサは、所定の3軸(例えば、
図2に示すXYZ軸)回りの角速度を検出する。また、加速度センサは、所定の3軸(例えば、
図2に示すXYZ軸)回りの加速度を検出する。
【0044】
また、不揮発性メモリ24は、後述する処理を行うためのプログラムを記憶する記憶装置であり、例えば、フラッシュメモリであってもよい。なお、不揮発性メモリ24は、磁気ディスク、光ディスク等、任意の記憶装置であってもよい。
【0045】
図4は、ユーザがゴーグル装置10を使用するときの様子を示す図である。
図4に示されるように、ユーザは、情報処理装置2が装着されたゴーグル装置10を把持して表示部21を覗き込む。ユーザが、この状態で顔や体全体を左右方向(水平方向。あるいは「ヨー方向」ともいう)に向けたり、上下方向(鉛直方向。あるいは「ピッチ方向」ともいう)に向けたりすると、ゴーグル装置10(情報処理装置2)の姿勢が基準姿勢から変化する。基準姿勢は、例えば、ユーザが正面を向いたときのゴーグル装置10の姿勢である。例えば、基準姿勢は、ゴーグル装置10の表示部21(底面15)に沿った下方向(
図2のY軸負方向)が重力方向と並行になる姿勢であってもよい。
【0046】
情報処理装置2は、慣性センサ22が検出する角速度値及び/又は加速度値に基づいて、情報処理装置2(ゴーグル装置10)の姿勢を算出する。実空間における情報処理装置2(ゴーグル装置10)の姿勢に応じて、仮想空間の左仮想カメラおよび右仮想カメラの姿勢が制御される。
【0047】
仮想空間には、仮想オブジェクトが配置されており、ユーザは当該仮想オブジェクトを含む仮想空間の立体視画像を視認することができる。本実施形態では、仮想空間には、仮想オブジェクトの一例として、ユーザインターフェイス(UI)オブジェクトが配置される。
【0048】
図5は、仮想空間VSの一例を示す図である。
図5に示すように、仮想空間VSには、xyz直交座標系が設定される。x軸は仮想空間VSの横方向の軸である。y軸は、仮想空間VSの高さ方向の軸である。z軸は、x軸およびy軸に垂直な軸であり、仮想空間の奥行き方向の軸である。
【0049】
仮想空間VSには、左仮想カメラVCLと、右仮想カメラVCRとが配置される。左仮想カメラVCLおよび右仮想カメラVCRは、平均的なユーザの左右の目の間隔と同様の間隔で仮想空間に配置される。左仮想カメラVCLおよび右仮想カメラVCRから仮想空間を見た左目画像および右目画像が、ユーザの左目及び右目にそれぞれ視認されることで、ユーザは、仮想空間の立体視画像を視認する。なお、以下では、左仮想カメラVCLおよび右仮想カメラVCRを総称して「仮想カメラVC」と表記することがある。
【0050】
また、仮想空間VSには、UIオブジェクト30が配置される。UIオブジェクト30は、ユーザが操作したり、ユーザに提示される情報を表示したりするための仮想オブジェクトである。例えば、UIオブジェクト30は、ユーザにメニュー機能を提供する。例えば、所定のゲームアプリケーションの実行中にUIオブジェクト30が表示され、ユーザは、当該UIオブジェクト30を用いて、ゲームにおける所定の操作を行うことができる。UIオブジェクト30は、例えば板状のオブジェクトであり、仮想空間における所定の高さの位置に、xz平面に垂直となる姿勢で配置される。
【0051】
UIオブジェクト30は、ユーザが選択可能なアイコン31~34を含む。例えば、ユーザが選択しているアイコン34は、他のアイコンと異なる態様で表示されてもよい。ユーザがアイコン31~34の何れかを選択する方法は任意である。例えば、表示部21に表示される立体視画像の所定位置(例えば画像の中心)にポインタ37(
図7A参照)が表示され、当該ポインタがアイコンの表示領域内にある場合、当該アイコンがユーザによって選択されたものとして処理されてもよい。この場合、ユーザは、所望のアイコンを選択する場合、当該所望のアイコンの表示領域内にポインタが入るように、ゴーグル装置10の姿勢を変化させる。また、例えば、ユーザは、情報処理装置2に無線又は有線で接続される手持ち型の操作装置を用いて、立体視画像に表示されるポインタの位置を制御してもよい。例えば、操作装置は、方向を指示することが可能な方向指示部(例えば、アナログスティック、十字キー、ボタン等)を備え、方向指示部に対する操作に基づいて、ポインタの位置が制御されてもよい。
【0052】
各アイコンは、例えば、ゲームにおける操作を決定するためのアイコンであってもよいし、所定のアイテムを用いるためのアイコンであってもよい。また、各アイコンは、UIオブジェクト30によって提供されるメニュー画面に対する操作(例えば前の画面に戻る操作、決定するための操作)を行うためのアイコンであってもよい。また、各アイコンは、所定のアプリケーションを選択・起動するためのアイコンであってもよい。
【0053】
また、UIオブジェクト30は、情報表示オブジェクト35を含む。情報表示オブジェクト35は、ユーザに文字や画像等を用いて情報を提供するためのオブジェクトである。
【0054】
なお、仮想空間では、ゲームに限らず他の任意の活動が行われてもよい。例えば、特定の作業(例えば、飛行機や車を運転する作業)のシミュレーションが行われてもよい。仮想空間において行われる活動によって、UIオブジェクト30に含まれる各アイコンの機能(UIオブジェクト30を用いて行われる操作)が異なる。
【0055】
(UIオブジェクト30の移動制御)
次に、ユーザがゴーグル装置10の表示部21を見ながらゴーグル装置10の底面15を左右方向(ヨー方向)に向けたり、上下方向(ピッチ方向)に向けたりしたときのUIオブジェクト30の制御について説明する。
【0056】
図6Aは、ゴーグル装置10が基準姿勢に維持されているときの仮想空間を上方から見た図である。
図6Bは、ゴーグル装置10が基準姿勢からヨー方向(左方向)に回転されたときの仮想空間を上方から見た図である。
図6Cは、ゴーグル装置10が
図6Bの状態からさらにヨー方向(左方向)に回転されたときの仮想空間を上方から見た図である。
【0057】
図7Aは、ユーザに視認される画像の一例であって、
図6Aに示す姿勢の仮想カメラVC(VCL又はVCR)から仮想空間を見た画像の一例を示す図である。
図7Bは、ユーザに視認される画像の一例であって、
図6Bに示す姿勢の仮想カメラVCから仮想空間を見た画像の一例を示す図である。
図7Cは、ユーザに視認される画像の一例であって、
図6Cに示す姿勢の仮想カメラVCから仮想空間を見た画像の一例を示す図である。なお、
図7A~
図7Cでは、平面的な矩形の画像が示されているが、実際には
図7A~
図7Cに示す画像は、立体視画像であり、左領域21L及び右表示領域21Rと同様に略円形状である。
【0058】
仮想カメラVCには、仮想カメラVCに固定のカメラ座標系(XYZ座標系)が設定される。X軸は仮想カメラVCの右方向の軸であり、Y軸は仮想カメラVCの上方向の軸であり、Z軸は仮想カメラVCの視線方向の軸である。
図6Aに示されるように、ゴーグル装置10(情報処理装置2)が基準姿勢に維持されている場合は、仮想カメラVCは、UIオブジェクト30を向いている。
【0059】
図6Aに示すような状態では、
図7Aに示すような画像が表示部21に表示される。ユーザは、表示部21に表示される左目画像及び右目画像を視認することで、
図7Aに示されるような立体視画像を視認する。
図7Aに示されるように、正面にはUIオブジェクト30が表示され、UIオブジェクト30の背後には、仮想空間の背景が表示される。また、例えば、立体視画像の中心となる位置にポインタ37が設定され、表示される。ユーザは、UIオブジェクト30の表示領域にポインタ37が位置するようにゴーグル装置10の姿勢を制御し、ポインタ37を用いて、UIオブジェクト30内の選択可能なアイコン31~34を選択する。なお、ポインタ37は画面に表示されず、情報処理装置2の内部的に設定されてもよい。
【0060】
実空間においてゴーグル装置10をヨー方向(例えば左方向)に回転させると、
図6Bに示されるように、仮想カメラVCも仮想空間におけるヨー方向(例えば左方向)に回転する。このとき、
図7Bに示すような画像が表示される。具体的には、ゴーグル装置10を左方向に回転させた場合、UIオブジェクト30は、正面よりも右側に位置するように表示され、UIオブジェクト30の一部が表示されなくなる。
【0061】
図6Bに示される状態からさらにゴーグル装置10を左方向に回転させると、
図6Cに示されるように、仮想カメラVCはさらに左方向に回転する。このとき、
図7Cに示すような画像が表示部21に表示される。具体的には、ゴーグル装置10を右方向に反転させることなく、
図6Bに示される状態からさらに左方向に回転させた場合、UIオブジェクト30は、仮想カメラVCの撮像範囲から出て、表示されなくなる。この場合、UIオブジェクト30以外の仮想空間の背景が表示される。
【0062】
ユーザは、
図6Cに示される状態からさらにゴーグル装置10を左方向に回転させると、さらに左方向の仮想空間を視認することができる。
【0063】
ここで、例えば
図6Cに示される姿勢において、ユーザがゴーグル装置10を右方向に所定の角度だけ反転させた場合、UIオブジェクト30は、仮想カメラVCの正面に位置するように移動する。
【0064】
図8は、
図6Cに示される姿勢においてゴーグル装置10を右方向に所定の角度だけ反転させた場合にUIオブジェクト30が仮想カメラVCの正面に移動する様子を示した図である。
図8において、破線の30‘は、移動する前のUIオブジェクトを示し、実線の30は、移動した後のUIオブジェクトを示す。
【0065】
図8に示されるように、ゴーグル装置10が例えば左方向に回転している状態から、右方向に所定の角度だけ反転した場合、UIオブジェクト30は、仮想カメラVCの正面(左右方向における正面)に移動する。例えば、UIオブジェクト30は、その向きを変えながら左仮想カメラVCLと右仮想カメラVCRとの中間位置を中心とした円に沿って左方向に移動する。すなわち、UIオブジェクト30は、仮想カメラVCとの距離を維持したまま、xz平面に並行な面上を左方向に移動する。UIオブジェクト30は、仮想カメラVCを向くように、その向きを変えながら移動する。このため、仮想カメラVCが仮想空間におけるピッチ方向に回転していない場合は、仮想カメラVCの視線は、移動後のUIオブジェクト30に対して垂直になる。UIオブジェクト30が仮想カメラVCの正面に移動すると、表示部21には、
図7Aに示すような立体視画像が表示される。
【0066】
UIオブジェクト30は、1フレーム時間(例えば、1/60秒)あたり所定の距離だけ移動する。このため、ゴーグル装置10が例えば左方向に回転している状態から、右方向に所定の角度だけ反転した場合、UIオブジェクト30は、瞬間的に仮想カメラVCの正面に移動するのではなく、ある程度の時間(例えば、数~数十フレーム時間)をかけて移動する。なお、UIオブジェクト30を、瞬間的に(1フレーム時間で)仮想カメラVCの正面に移動させてもよい。
【0067】
なお、
図7Bに示すようにUIオブジェクト30の一部が表示され他の部分が表示されていないときでも、ゴーグル装置10が右方向に所定の角度だけ反転した場合、UIオブジェクト30を仮想カメラVCの正面に移動させてもよい。また、UIオブジェクト30が画面の端に表示され、かつ、UIオブジェクト30の全部が表示されているときでも、ゴーグル装置10が右方向に所定の角度だけ反転した場合、UIオブジェクト30を仮想カメラVCの正面に移動させてもよい。
【0068】
また、UIオブジェクト30の表示領域にポインタ37が位置する場合は、UIオブジェクト30を移動させず、UIオブジェクト30の表示領域にポインタ37が位置しない場合において、ゴーグル装置10が所定の角度だけ反転したときには、UIオブジェクト30を移動させてもよい。
【0069】
このように、本実施形態では、仮想カメラVCが単にヨー方向における一方向(例えば左方向)に回転し、例えばUIオブジェクト30が仮想カメラVCの撮像範囲外に出ただけでは、UIオブジェクト30を仮想カメラVCの正面に移動させない。仮想カメラVCがヨー方向における一方向(例えば左方向)に回転した後、仮想カメラVCがヨー方向における他方向(例えば右方向)に所定の角度だけ回転(反転)した場合に、UIオブジェクト30を仮想カメラVCの正面に移動させる。以下、UIオブジェクト30の移動について詳細に説明する。
【0070】
(UIオブジェクト30の移動の詳細)
図9は、UIオブジェクト30が移動される領域の一例を示す図である。
図9では、UIオブジェクト30が仮想カメラVCの正面に位置している場合、仮想カメラVCを基準として仮想空間を概念的に複数の領域に分けた図が示されている。
【0071】
本実施形態では、仮想カメラVCの視線が
図9に示される「UI領域」、「B領域」、「A領域」の何れにあるかに応じて、UIオブジェクト30の移動に関する処理が異なる。
【0072】
仮想カメラVCの視線が
図9に示される「UI領域」にある場合、UIオブジェクト30は表示部21に表示され、UIオブジェクト30はゴーグル装置10の姿勢変化に応じて仮想空間内で移動しない。「UI領域」は、UIオブジェクト30を基準とした領域であり、UIオブジェクト30に対応する領域である。具体的には、UIオブジェクト30が仮想カメラVCの正面(左右方向および上下方向における正面)に位置するときの仮想カメラVCの視線の角度を0度として、仮想カメラVCの視線の仮想空間におけるヨー方向およびピッチ方向の角度が所定の閾値以内の場合には、仮想カメラVCの視線が
図9に示される「UI領域」にあると判断される。より具体的には、仮想カメラVCの視線のヨー方向の回転角の絶対値が、第1の閾値(Ty)未満であり、かつ、仮想カメラVCの視線のピッチ方向の回転角の絶対値が、第2の閾値(Tx)未満である場合、仮想カメラVCの視線が
図9に示される「UI領域」にあると判断される。
【0073】
ここで、第1の閾値および第2の閾値によってUI領域が定められる。例えば、UI領域は、UIオブジェクト30の表示領域と一致してもよい。この場合、例えば仮想カメラVCの視線のヨー方向の回転角が第1の閾値(Ty)になったときに、
図7Cに示されるようにUIオブジェクト30の全体が表示されなくなる。また、UI領域は、UIオブジェクト30の表示領域よりも小さくてもよい。この場合、仮想カメラVCの視線のヨー方向の回転角が第1の閾値(Ty)のときに、例えば
図7Bに示されるようにUIオブジェクト30の一部が表示される。なお、仮想カメラVCの視線のヨー方向の回転角が第1の閾値(Ty)のときでも、UIオブジェクト30の全部が表示されてもよい。また、第1の閾値および第2の閾値によって定められるUI領域は、UIオブジェクト30の表示領域よりも大きくてもよい。
【0074】
また、UI領域は、立体視画像中のポインタ37がUIオブジェクト30の表示領域内に位置するような領域であってもよい。すなわち、UI領域は、ポインタ37がUIオブジェクト30の表示領域の外周に沿って移動する場合、その軌跡によって形成されるような領域であってもよい。
【0075】
仮想カメラVCの視線が
図9に示されるB領域にある場合、「B領域における移動処理」が行われる。すなわち、仮想カメラVCの視線のヨー方向の回転角の絶対値が第1の閾値(Ty)以上であり、かつ、仮想カメラVCの視線のピッチ方向の回転角の絶対値が第2の閾値(Tx)未満である場合には、「B領域における移動処理」が行われる。「B領域における移動処理」では、「UIオブジェクト30を移動させるか否かの判定」が行われる。以下、この判定について
図10および
図11を参照して具体的に説明する。
【0076】
図10は、仮想カメラVCを仮想空間の上方から見た図であって、仮想カメラVCを左方向に回転させた後、右方向に回転させたときの一例を示す図である。
図11は、仮想カメラVCを仮想空間の横方向から見た図であって、仮想カメラVCを下方向に回転させた後、上方向に回転させたときの一例を示す図である。
【0077】
図10に示されるように、仮想カメラVCの視線が、例えば、ヨー方向における左方向(正方向)に第1の閾値「Ty」を越えて回転した場合、仮想カメラVCの視線はB領域に入る。仮想カメラVCの視線がB領域に入った後、左方向の変化量「y1」および右方向の変化量「y2」が算出される。この左方向の変化量「y1」および右方向の変化量「y2」は、仮想カメラVCの視線がB領域に入った後の相対的な回転量である。仮想カメラの視線が左右方向に往復している場合には、左方向の変化量「y1」および右方向の変化量「y2」は、それぞれ累積される。例えば、仮想カメラVCの視線がB領域に入った後、仮想カメラVCの視線が、左方向に「10」度、右方向に「2」度、左方向に「5」度、右方向に「3」度の順で回転した場合、左方向の変化量「y1」の累積値は「10+5=15」度となり、右方向の変化量「y2」の累積値は「2+3=5」度となる。この左方向への変化量「y1」の累積値と右方向への変化量「y2」の累積値とのうち、小さい方の値(右方向の変化量y2の累積値)が、左右方向の変化量Ryとして記憶される。この場合は、右方向への変化量「y2」の累積値「5」度が、左右方向の変化量Ryとして記憶される。
【0078】
ピッチ方向の回転についても同様である。
図11に示されるように、仮想カメラVCの視線がB領域に入った後(つまり、仮想カメラVCの視線がヨー方向に第1の閾値以上回転した後)、ピッチ方向における下方向(負方向)に「x1」度だけ回転し、その後、上方向に「x2(<x1)」度回転したとする。
【0079】
なお、
図11では、仮想カメラVCの視線がB領域に入ったときの仮想空間におけるピッチ方向の回転角が「0」度である場合が示されている。仮想カメラVCの視線がB領域に入った時点で、仮想カメラVCの視線が、仮想空間におけるピッチ方向に所定の角度回転している場合もある。この場合は、仮想カメラVCの視線がB領域に入った時点からの下方向の変化量が「x1」となる。
【0080】
下方向への変化量「x1」の累積値と上方向への変化量「x2」の累積値とのうち、小さい方の値(上方向への変化量x2の累積値)が、上下方向の変化量Rxとして記憶される。例えば、仮想カメラVCの視線がB領域に入った後、仮想カメラVCの視線が、下方向に「10」度、上方向に「2」度、下方向に「3」度、上方向に「1」度の順で回転した場合、下方向の変化量「x1」の累積値は「10+3=13」度となり、上方向の変化量「x2」の累積値は「2+1=3」度となる。この下方向への変化量「x1」の累積値と上方向への変化量「x2」の累積値とのうち、小さい方の値(上方向の変化量x2の累積値)が、上下方向の変化量Rxとして記憶される。この場合は、上方向への変化量「x2」の累積値「3」度が、上下方向の変化量Rxとして記憶される。
【0081】
ここで、ヨー方向又はピッチ方向に関して、仮想カメラVCの視線が一方向(例えばヨー方向における左方向)に回転し続けている場合、他方向への変化量(例えばヨー方向における右方向)は「0」となる。したがって、一方向への回転量および他方向への回転量の累積値のうち、小さい方の値が「0」度を超えている場合は、仮想カメラVCの視線の回転が一方向から他方向に変化したことになる。これに対して、一方向への回転量および他方向への回転量の累積値のうち、小さい方の値が「0」度の場合は、仮想カメラの視線が一方向に回転し続けていること、又は、仮想カメラの視線が回転していないことを意味する。
【0082】
したがって、本実施形態では、上記小さい方の値RxおよびRyに基づいて、仮想カメラVCの視線の回転が一方向から他方向に変化したか(すなわち、反転したか)否かを検知し、一方向から他方向への変化を検知した場合に、UIオブジェクト30を仮想カメラVCの正面に移動させる。
【0083】
具体的には、左右方向の変化量Ryと上下方向の変化量Rxとの和が、所定値(例えば、「6」度)以上となった場合、UIオブジェクト30を仮想カメラVCの正面に移動させる。一方、この和が所定値未満の場合は、UIオブジェクト30を移動させない。例えば、仮想カメラVCの視線がB領域にある場合において、仮想カメラVCの視線が、「左方向に10度」→「右方向に3度」→「左方向に20度」の順に回転した場合、左右方向の変化量Ryは「3」度であり、上下方向の変化量Rxは「0」度となる。この場合、「Rx+Ry」は所定値未満であるため、UIオブジェクト30を仮想カメラVCの正面に移動させない。
【0084】
一方、仮想カメラVCの視線がB領域にある場合において、仮想カメラVCの視線が、「左方向に10度」→「右方向に3度」→「左方向に20度」→「右方向に3度」の順に回転した場合、左右方向の変化量Ryは「6」度である。この場合、「Rx+Ry」は所定値以上であるため、UIオブジェクト30を仮想カメラVCの正面に移動させる。また、仮想カメラVCの視線が、斜め方向に回転した場合、回転方向は左右方向(ヨー方向)および上下方向(ピッチ方向)の成分に分けられて、上記Rx、Ryがそれぞれ算出される。例えば、仮想カメラVCの視線が、「左上方向(左方向の成分に10度、上方向の成分に10度)」に回転し、次に、「右下方向(右方向の成分に3度、下方向の成分に3度)」に回転した場合、Rxは「3」度となり、Ryは「3」度となる。この場合、「Rx+Ry」は所定値以上であるため、UIオブジェクト30を仮想カメラVCの正面に移動させる。
【0085】
このように、「B領域における移動処理」では、仮想カメラVCがヨー方向又はピッチ方向における一方向に回転した後、反対方向に回転したことが検知される。仮想カメラVCが反対方向に回転した場合において、その反対方向の回転角を累積した値が所定値以上となった場合、UIオブジェクト30は仮想カメラVCの正面に移動する。すなわち、仮想カメラVCの視線が、所定の回転方向(ヨー方向又はピッチ方向)における一方向から他方向に変化した場合において、さらに他方向への回転角が所定値以上となった場合、UIオブジェクト30を移動させる。
【0086】
なお、仮想カメラVCの視線がB領域にある場合、「Rx+Ry」が所定値未満であっても、ユーザによって所定の操作が行われた場合は、UIオブジェクト30を仮想カメラVCの正面に移動させてもよい。例えば、ゴーグル装置10における所定のボタンや場所が押されたり、タップされたり、叩かれたりした場合、UIオブジェクト30を仮想カメラVCの正面に移動させてもよい。また、例えば、ゴーグル装置10の慣性センサ22における加速度センサが所定値以上の加速度値を検知した場合、UIオブジェクト30を仮想カメラVCの正面に移動させてもよい。
【0087】
図9に戻り、仮想カメラVCの視線がA領域にある場合、すなわち、仮想カメラVCの視線のピッチ方向における回転角の絶対値が第2の閾値(Tx)を越えている場合には、「A領域における移動処理」が行われる。「A領域における移動処理」では、上述したB領域における判定は行われず、UIオブジェクト30が常に左右方向に関して仮想カメラVCの正面に位置するように、UIオブジェクト30を移動させる。なお、ここでは、仮想カメラVC(ゴーグル装置10)の俯角又は仰角が第2の閾値を超えている場合に、「A領域における移動処理」が行われるものとするが、俯角に関する閾値と仰角に関する閾値とは同じ値である必要はなく、これらは異なってもよい。
【0088】
図12は、仮想カメラVCの視線がA領域にある場合においてUIオブジェクト30が移動する様子を示した図である。
【0089】
図12において、破線で示される30‘は、移動前のUIオブジェクトであり、実線で示される30は、移動後のUIオブジェクトである。
図12に示されるように、例えば、仮想カメラVCの視線がUIオブジェクト30の上方のA領域にある場合、UIオブジェクト30は、左右方向に関して仮想カメラVCの正面に位置するように移動する。移動後のUIオブジェクト30を基準とした仮想カメラVCのヨー方向(左右方向)の回転角は「0」度である。すなわち、仮想カメラVCの視線方向を基準として、移動後のUIオブジェクト30は、左右方向にずれていない。このため、仮想カメラVCの視線を下方向に回転させた場合(仮想カメラVCのピッチ方向の回転角が「0」度になるように仮想カメラVCを回転させた場合)、仮想カメラVCの正面にUIオブジェクト30が位置するようになる。
【0090】
ここで、仮想カメラVCの視線がB領域に入った後、「B領域における移動処理」でUIオブジェクト30が移動することなく、仮想カメラVCの視線がA領域に入った場合を想定する。この場合、仮想カメラVCの視線がA領域に入ったときに、「A領域における移動処理」によって、UIオブジェクト30が移動を開始する。この場合、UIオブジェクト30は、左右方向に関して仮想カメラVCの正面に、ある程度の時間(例えば、数~数十フレーム時間)をかけて移動してもよいし、瞬間的に(1フレーム時間で)移動してもよい。
【0091】
また、仮想カメラVCの視線が「UI領域」にある状態からA領域に入った場合、「A領域における移動処理」によって、UIオブジェクト30が移動する。仮想カメラVCの視線がA領域にあるときに仮想カメラVCが左右方向に回転すると、UIオブジェクト30は、仮想カメラVCの左右方向の回転に応じて移動する。すなわち、UIオブジェクト30は、仮想カメラが左右方向の回転をしている間、仮想カメラの左右方向の回転に追従するように常に移動する。
【0092】
図13Aは、仮想カメラVCの視線が下方向に回転しA領域に入った場合において表示部21に表示される画像の一例を示す図である。
図13Bは、
図13Aの状態から仮想カメラVCが左方向に回転したときに表示部21に表示される画像の一例を示す図である。
【0093】
図13Aに示されるように、仮想カメラVCの視線が下方向に回転した場合(すなわち、ゴーグル装置10が下方向に回転した場合)、UIオブジェクト30の下側の一部が画面の上部領域に表示される。UIオブジェクト30は、左右方向に関して画面の中央に表示される。また、仮想空間の背景には、例えば、仮想オブジェクト40があり、仮想オブジェクト40は、画面の左端に表示されている。
【0094】
この状態で仮想カメラVCの視線が左方向に回転した場合(すなわち、ゴーグル装置10が左方向に回転した場合)、
図13Bに示されるように、UIオブジェクト30の左右方向における位置は変化しない。これは、上記A領域における移動処理によって、仮想カメラVCのヨー方向の回転に応じて、UIオブジェクト30が仮想空間内で移動するからである。一方、仮想空間の背景に存在する仮想オブジェクト40については、
図13Aの位置よりも右側に表示される。ユーザがゴーグル装置10を左方向に回転させ続けている間、UIオブジェクト30の画面上の位置は変化せず、仮想空間の背景は右方向に移動する。
【0095】
なお、
図9に示す「UI領域」、「A領域」、「B領域」の大きさや形状は、表示されるUIオブジェクト30の大きさや形状に応じて異なってもよい。また、UIオブジェクト30には、複数の種類があり、UIオブジェクト30の種類に応じて各領域の大きさや形状が行ってもよい。また、仮想空間のシーン(背景のシーン)に応じて、各領域の大きさや形状が異なってもよい。この場合、上述した第1の閾値(Ty)、第2の閾値(Tx)は、各領域の大きさや形状に応じて異なることになる。また、「UI領域」は、UIオブジェクト30の大きさと必ずしも一致しなくてもよい。例えば、UIオブジェクト30の周りにマージンがあり、UIオブジェクト30が表示される領域と周囲のマージンとを含む領域が「UI領域」として設定されてもよい。逆に、「UI領域」は、UIオブジェクト30が表示される領域よりも小さくてもよい。
【0096】
以上のように、本実施形態では、仮想空間における仮想カメラVCのヨー方向およびピッチ方向の回転角(ゴーグル装置10のヨー方向およびピッチ方向の回転角)が所定の閾値を超えている場合、UIオブジェクト30の移動処理が行われる。
【0097】
具体的には、仮想カメラVCの仮想空間におけるヨー方向の回転角の絶対値が第1の閾値(Ty)より大きく、かつ、ピッチ方向の回転角の絶対値が第2の閾値(Tx)より小さい場合(仮想カメラVCの視線がB領域にある場合)、「B領域における移動処理」が行われる。「B領域における移動処理」では、仮想カメラVCのヨー方向およびピッチ方向の回転角に基づいて、UIオブジェクト30を移動させるか否かの判定が行われる。具体的には、仮想カメラVCのヨー方向の回転が一方向から他方向に変化した場合、当該他方向の回転角を累積した値Ryが算出される。また、仮想カメラVCのピッチ方向の回転が一方向から他方向に変化した場合、当該他方向の回転角を累積した値Rxが算出される。そして、RxとRyの合計が所定値以上の場合、UIオブジェクト30を移動させると判定され、UIオブジェクト30が仮想カメラVCの正面に移動される。
【0098】
ユーザは、仮想空間においてUIオブジェクト30を視認したいと思うときもあれば、UIオブジェクト30とは異なる仮想空間のオブジェクト(背景や仮想空間内の他のオブジェクト)を視認したいと思うときもある。仮想カメラVCの視線(ゴーグル装置10の姿勢)が一方向に回転し続けている場合には、ユーザは、UIオブジェクト30とは異なる仮想空間を視認したがっていると考えられる。このため、本実施形態では、仮想カメラVCの視線が一方向(例えば、ヨー方向に関して言えば左方向。ピッチ方向に関して言えば上方向)に回転し続けている場合や、静止している場合には、UIオブジェクト30を仮想カメラVCの正面に移動させない。したがって、ユーザは、例えば左方向にゴーグル装置10を回転させ続けることで、UIオブジェクト30以外の仮想空間を見渡すことができる。
【0099】
一方、仮想カメラVCの視線が、UIオブジェクト30から離れる方向から、UIオブジェクト30に近づく方向に反転した場合には、ユーザは、仮想空間内の他のオブジェクトよりもUIオブジェクト30を視認したいと思っている可能性がある。したがって、本実施形態では、仮想カメラVCの視線が一方向(UIオブジェクト30から離れる方向)から他方向に反転した場合において、さらに、他方向への回転量が所定値以上になった場合、UIオブジェクト30を仮想カメラVCの正面に移動させる。
【0100】
このような制御を行うことにより、本実施形態では、ユーザにUIオブジェクト30とは異なる仮想空間を視認させることができるとともに、仮想空間内に存在するUIオブジェクト30を正面に移動させてUIオブジェクト30を操作(視認)し易くすることができる。
【0101】
例えば、仮想カメラVCがUIオブジェクト30とは異なる方向を向き、仮想カメラVCの撮像範囲からUIオブジェクト30が外れた時点で、UIオブジェクト30を仮想カメラVCの正面に移動させることも考えられる。しかしながら、この場合、仮想カメラVCの撮像範囲からUIオブジェクト30が外れた時点でユーザの正面にUIオブジェクト30が移動するため、ユーザはUIオブジェクト30以外の仮想空間を見ることができなくなる。
【0102】
これに対して、本実施形態では、ゴーグル装置10をヨー方向における一方向(UIオブジェクト30から離れる方向)に回転させ続けたり、静止している場合には、UIオブジェクト30が仮想カメラVCの正面に移動しないため、ユーザは、UIオブジェクト30以外の仮想空間を見ることができる。ユーザが仮想空間を見渡しているときに、UIオブジェクト30を見たり操作したくなった場合には、ユーザは、例えば、ゴーグル装置10をヨー方向における他方向に反転させたり、ゴーグル装置10を上下に揺らしたりすることで、ユーザの正面にUIオブジェクト30を移動させることができる。これにより、例えば、容易にポインタを用いてUIオブジェクト30内のアイコンを選択することができ、VR空間において、UIオブジェクト30の操作性を向上させることができる。UIオブジェクト30の少なくとも一部が表示されている場合において、UIオブジェクト30が画面の端に表示されている場合であっても、ゴーグル装置10を所定の角度だけ反転させるだけで、UIオブジェクト30を正面に移動させることができ、操作性を向上させることができる。
【0103】
また、本実施形態では、UIオブジェクト30を仮想空間内で移動させるため、VR酔いを軽減することができる場合がある。
【0104】
また、本実施形態では、仮想空間における仮想カメラVCのピッチ方向の回転角が第2の閾値(Tx)より大きい場合(仮想カメラVCの視線がA領域にある場合)、「A領域における移動処理」が行われる。「A領域における移動処理」では、仮想カメラVCのヨー方向の回転に応じてUIオブジェクト30が仮想カメラVCの正面(左右方向に関する正面)に常に移動する。このため、仮想カメラVCの視線がA領域に入った後、ゴーグル装置10が基準姿勢となるようにして表示部21を見た場合、UIオブジェクト30は、常にユーザの正面に位置するようになる。例えば、ユーザが、ゴーグル装置10の底面15が下側又は上側になるように実空間の面(地面に平行な面。例えばテーブル)にゴーグル装置10を置いた後、再びゴーグル装置10を把持して表示部21を見たときには、UIオブジェクト30は、常にユーザの正面に位置するように見える。
【0105】
また、例えば、2人のユーザが1つのゴーグル装置10を用いてVRを体験することを想定する。一方のユーザがゴーグル装置10を用いてVRを体験した後、他方のユーザにゴーグル装置10を渡す。このとき、ゴーグル装置10の姿勢が、例えば、底面15が下向きになるように変化する。この場合において、UIオブジェクト30が上記A領域における移動処理によって移動しない場合には、他方のユーザがゴーグル装置10を把持して表示部21を見たときに、当該他方のユーザの正面にUIオブジェクト30があるとは限らない。UIオブジェクト30がA領域における移動処理によって移動しない場合には、UIオブジェクト30はゴーグル装置10を他方のユーザに渡したときの位置を維持する。このため、他方のユーザがゴーグル装置10の表示部21を見たときには、UIオブジェクト30は、他方のユーザの背後に位置している場合もあれば、右方向に位置している場合もある。しかしながら、本実施形態では、UIオブジェクト30がA領域における移動処理によって移動するため、他方のユーザがゴーグル装置10の表示部21を見たときには、当該他方のユーザの正面にUIオブジェクト30が位置するようになる。したがって、他方のユーザにとって操作性が向上する。
【0106】
(処理の詳細)
次に、情報処理装置2において行われる処理の一例について具体的に説明する。まず、情報処理装置2に記憶されるデータについて説明する。
【0107】
図14は、情報処理装置2(のDRAM23)に記憶されるデータの一例を示す図である。
図14に示すように、情報処理装置2には、所定のプログラムと、角速度データと、仮想カメラデータと、UIデータと、累積値X1、X2と、累積値Y1、Y2と、変化量Rxと、変化量Ryとが記憶される。これらの他にも、仮想空間に配置されるオブジェクトに関するデータ、ユーザの操作に応じた操作データ等、様々なデータが記憶される。
【0108】
プログラムは、後述する処理を実行するためのプログラムである。プログラムは、例えば不揮発性メモリ24や外部の記憶媒体に記憶されており、当該不揮発性メモリ24や外部の記憶媒体からDRAM23に読み込まれる。なお、プログラムは、他の装置からネットワーク(例えば、LAN、WAN、インターネット等)を介して取得されてもよい。
【0109】
角速度データは、慣性センサ22が出力した角速度に関するデータである。
【0110】
仮想カメラデータは、左仮想カメラVCLおよび右仮想カメラVCRの位置および姿勢に関するデータである。
【0111】
UIデータは、UIオブジェクト30の位置、種類、UIオブジェクト30に含まれるアイコン31~34、情報表示オブジェクト35等に関するデータである。
【0112】
累積値X1は、B領域における移動処理で用いられる値であり、下方向の変化量x1(
図11参照)を累積した値である。また、累積値X2は、B領域における移動処理で用いられる値であり、上方向の変化量x2(
図11参照)を累積した値である。
【0113】
累積値Y1は、B領域における移動処理で用いられる値であり、左方向の変化量y1(
図10参照)を累積した値である。また、累積値Y2は、B領域における移動処理で用いられる値であり、右方向の変化量y2(
図10参照)を累積した値である。
【0114】
変化量Rxは、B領域における移動処理で用いられる値であり、仮想カメラVCの視線の上下方向(ピッチ方向)の変化量の累積値X1、X2のうち、小さい方の値である。また、変化量Ryは、B領域における移動処理で用いられる値であり、仮想カメラVCの視線の左右方向(ヨー方向)の変化量の累積値Y1,Y2のうち、小さい方の値である。RxおよびRyは初期的には「0」に設定される。
【0115】
(メインフローの説明)
次に、情報処理装置2において行われるメイン処理の詳細について説明する。
図15は、情報処理装置2のプロセッサ20において行われるメイン処理の一例を示すフローチャートである。
図15に示す処理は、情報処理装置2のCPU又はGPUが所定のプログラムを実行することによって行われる。なお、
図15では、上述したUIオブジェクト30の移動に関する処理のみが示されており、他の処理(例えば、仮想空間において行われるユーザの動作(操作)に応じた処理)は省略されている。
【0116】
図15に示すように、プロセッサ20は、まず、初期処理を行う(ステップS100)。初期処理では、まず、ゴーグル装置10(情報処理装置2)の姿勢に関する初期化が行われる。例えば、ユーザに情報処理装置2を含むゴーグル装置10をテーブル等に置くように指示が行われ、ゴーグル装置10の姿勢が初期化される。また、初期処理では、仮想空間にxyz座標系が設定され、仮想空間内にUIオブジェクト30、左仮想カメラVCL、右仮想カメラVCR、背景、及び、その他のオブジェクト等が配置される。ステップS100の処理の後、プロセッサ20は、ステップS101~ステップS109の処理を所定のフレーム時間(例えば、1/60秒)毎に繰り返し実行する。
【0117】
ステップS100の処理の後、プロセッサ20は、慣性センサ22からのデータ(例えば角速度値)を取得する(ステップS101)。
【0118】
次に、プロセッサ20は、ステップS101で取得した慣性センサ22からのデータに基づいて、姿勢算出処理を行う(ステップS102)。具体的には、プロセッサ20は、慣性センサ22からの角速度値に基づいて、ゴーグル装置10(情報処理装置2)の姿勢を算出する。プロセッサ20は、慣性センサ22からの角速度値を積分することでステップS100における初期化時からの姿勢の変化を算出し、ゴーグル装置10の姿勢を取得する。また、プロセッサ20は、算出したゴーグル装置10の姿勢に応じて、仮想空間内の仮想カメラVC(左仮想カメラCVL及び右仮想カメラVCR)の姿勢を設定する。例えば、プロセッサ20は、仮想空間における左仮想カメラVCL及び右仮想カメラVCRの姿勢が、実空間におけるゴーグル装置10の姿勢と一致するように各仮想カメラVCの姿勢を設定する。これにより、例えば、ゴーグル装置10が左方向に5度回転した場合には、左仮想カメラVCL及び右仮想カメラVCRも左方向に5度回転する。
【0119】
続いて、プロセッサ20は、ステップS102で算出した姿勢に基づいて、仮想カメラVCの視線のピッチ方向の回転角が第2の閾値(Tx)以上か否かを判定する(ステップS103)。仮想カメラVCの視線のピッチ方向の回転角が第2の閾値(Tx)以上と判定した場合(ステップS103:YES)、プロセッサ20は、A領域における移動処理を行う(ステップS104)。ステップS104の処理を実行した場合、プロセッサ20は、次にステップS108の処理を実行する。
【0120】
具体的には、ステップS104において、プロセッサ20は、UIオブジェクト30を仮想カメラVCの左右方向に関して正面になるように移動させる。プロセッサ20は、UIオブジェクト30の仮想空間における高さを維持したまま、仮想空間のxz平面に平行な面上でUIオブジェクト30を移動させる。例えば、プロセッサ20は、UIオブジェクト30が仮想カメラVCの左右方向に関して正面に位置するように、UIオブジェクト30を仮想カメラVCの位置(例えば、左仮想カメラVCL及び右仮想カメラVCRの中間)を中心とした円に沿って移動させる。これにより、UIオブジェクト30は、
図12で示したように移動する。なお、プロセッサ20は、1フレーム時間で所定距離だけUIオブジェクト30を移動させてもよい。この場合、ステップS104の処理がフレーム時間毎に繰り返し実行され、UIオブジェクト30が仮想カメラVCの左右方向に関して正面に移動する様子が表示部21において表示される。
【0121】
一方、仮想カメラVCの視線のピッチ方向の回転角が第2の閾値(Tx)未満と判定した場合(ステップS103:NO)、プロセッサ20は、仮想カメラVCの視線のヨー方向の回転角が第1の閾値(Ty)以上か否かを判定する(ステップS105)。
【0122】
仮想カメラVCの視線のヨー方向の回転角が第1の閾値(Ty)以上と判定した場合(ステップS105:YES)、プロセッサ20は、B領域における移動処理を行う(ステップS106)。このB領域における移動処理の詳細については後述する。ステップS106の処理を実行した場合、プロセッサ20は、次にステップS108の処理を実行する。
【0123】
仮想カメラVCの視線のヨー方向の回転角が第1の閾値(Ty)未満と判定した場合(ステップS105:NO)、プロセッサ20は、UI処理を行う(ステップS107)。このUI処理では、UIオブジェクト30における各アイコンの選択処理、選択した後の処理が行われる。例えば、立体視画像の所定位置(例えば中心)に位置するポインタ37がUIオブジェクト30におけるアイコン31の表示領域内にある場合、当該アイコン31が選択される。各アイコンにはそれぞれ選択された場合の処理(例えば、画面の切り替え、ゲームにおける操作、その他アプリケーションの起動等)が割り当てられている。プロセッサ20は、選択されたアイコンに応じた処理を行う。なお、プロセッサ20は、ステップS107において、後述するステップS106で算出された変化量Rx、Ry、累積値X1、X2、Y1、Y2をそれぞれ「0」にリセットする。ステップS107の処理を実行した場合、プロセッサ20は、次にステップS108の処理を実行する。
【0124】
ステップS108において、プロセッサ20は、画像生成処理を行う。具体的には、プロセッサ20は、左仮想カメラVCLを用いて仮想空間を撮像することにより左目画像を生成するとともに、右仮想カメラVCRを用いて仮想空間を撮像することにより右目画像を生成する。
【0125】
そして、プロセッサ20は、ステップS108で生成した左目画像および右目画像を表示部21に表示させる(ステップS109)。具体的には、プロセッサ20は、左目画像を左領域21Lに表示させ、右目画像を右領域21Rに表示させる。ステップS109の処理を実行した場合、プロセッサ20は、ステップS101の処理を再び実行する。
【0126】
(B領域における移動処理)
次に、上記ステップS106のB領域における移動処理について説明する。
図16は、ステップS106のB領域における移動処理の一例を示すフローチャートである。
【0127】
図16に示されるように、プロセッサ20は、まず、仮想カメラVCの視線の仮想空間におけるピッチ方向の回転角に関して、上方向の変化量x1および下方向の変化量x2を算出する(ステップS130)。例えば、プロセッサ20は、前回の処理ループにおける仮想カメラVCの姿勢と、今回の処理ループにおける仮想カメラVCの姿勢とに基づいて、上方向又は下方向に視線が変化したか否かを判定し、その変化量x1又はx2を算出する。そして、算出した変化量x1又はx2を、累積値X1又はX2に加算する。例えば、仮想カメラVCの視線が上方向に変化し続けている場合には、累積値X1は増加する一方、下方向の変化量x2は「0」度となり、その累積値X2も「0」度となる。また、例えば、
図11の例のように、仮想カメラVCは下方向にx1度回転した後、上方向にx2度回転した場合、累積値X1には「x1」、累積値X2には「x2」がそれぞれ設定される。
【0128】
次に、プロセッサ20は、ステップS130で更新した累積値X1およびX2のうち、小さい方の値を、上下方向の変化量Rxに設定する(ステップS131)。
【0129】
続いて、プロセッサ20は、仮想カメラVCの視線の仮想空間におけるヨー方向の回転角に関して、左方向の変化量y1および右方向の変化量y2を算出する(ステップS132)。例えば、プロセッサ20は、前回の処理ループにおける仮想カメラVCの姿勢と、今回の処理ループにおける仮想カメラVCの姿勢とに基づいて、左方向又は右方向に視線が変化したか否かを判定し、その変化量y1又はy2を算出する。そして、算出した変化量y1又はy2を、累積値Y1又はY2に加算する。例えば、仮想カメラVCの視線が左方向に変化し続けている場合には、累積値Y1は増加する一方、右方向の変化量y2は「0」度となり、その累積値Y2も「0」度となる。また、例えば、
図10の例のように、仮想カメラVCが左方向にy1度回転した後、右方向にy2度回転した場合、累積値Y1には「y1」、累積値Y2には「y2」がそれぞれ設定される。
【0130】
次に、プロセッサ20は、ステップS132で更新した累積値Y1およびY2のうち、小さい方の値を、左右方向の変化量Ryに設定する(ステップS133)。
【0131】
続いて、プロセッサ20は、ステップS131で設定したRxとステップS133で設定したRyとの和が所定値以上か否かを判定する(ステップS134)。
【0132】
「Rx+Ry」が所定値以上と判定した場合(ステップS134:YES)、プロセッサ20は、UIオブジェクト30を仮想カメラVCの正面になるように移動させる(ステップS135)。具体的には、プロセッサ20は、UIオブジェクト30の仮想空間における高さを維持したまま、仮想空間のxz平面に平行な面上でUIオブジェクト30を移動させる。例えば、プロセッサ20は、UIオブジェクト30が仮想カメラVCの左右方向における正面に位置するように、UIオブジェクト30を仮想カメラVCの位置(例えば、左仮想カメラVCL及び右仮想カメラVCRの中間)を中心とした円に沿って移動させる。これにより、UIオブジェクト30は、
図8に示すように移動する。
【0133】
ステップS135の処理を実行した場合、又は、ステップS134でNOと判定した場合、プロセッサ20は、所定の操作が行われたか否かを判定する(ステップS136)。ここで、「所定の操作」は、例えば、ゴーグル装置10における所定のボタンや場所が押されたり、タップされたり、叩かれたりする操作であってもよい。
【0134】
所定の操作が行われたと判定した場合(ステップS136:YES)、プロセッサ20は、ステップS137の処理を実行する。ステップS137の処理は、ステップS135と同様の処理である。
【0135】
ステップS137の処理を実行した場合、又は、ステップS136でNOと判定した場合、プロセッサ20は、
図16に示す処理を終了し、
図15に処理を戻す。
【0136】
なお、上記フローチャートで示した処理は単なる例示に過ぎず、処理の順番や内容、判定に用いられる閾値は適宜変更されてもよい。また、判定において閾値が含まれてもよいし含まれなくてもよい。例えば、「ある値が閾値以上か否かの判定」は、「ある値が閾値より大きいか否かの判定」に置き換えられてもよい。
【0137】
以上のように、仮想カメラVCの視線がB領域にある場合、B領域における移動処理において、ヨー方向又はピッチ方向に関して、仮想カメラVCの視線が一方向から他方向に変化したことが検出される。具体的には、ステップS131又はステップS133で設定されたRx又はRyの値が「0」度を超える場合、一方向から他方向に変化したことになる。仮想カメラVCの視線が、一方向から他方向に変化した場合において、その他方向への回転角を累積した値(Rx及び/又はRy)が所定値以上となった場合、UIオブジェクト30を仮想カメラVCの正面に移動させる。これにより、ユーザは、UIオブジェクト30以外の仮想空間を見渡すことができるとともに、UIオブジェクト30を見たい場合には、UIオブジェクト30を正面に移動させることができる。
【0138】
また、仮想カメラVCの視線がA領域にある場合、A領域における移動処理において、UIオブジェクト30が常に仮想カメラVCの左右方向に関して正面になるように移動される。これにより、例えば、ゴーグル装置10を上方向に向けたり、下方向に向けたりすることで、UIオブジェクト30を正面に移動させることができる。
【0139】
(変形例)
以上、本実施形態の画像処理ついて説明したが、上記実施形態は単なる一例であり、例えば以下のような変形が加えられてもよい。
【0140】
例えば、上記実施形態では、A領域における移動処理およびB領域における移動処理において、仮想カメラVCの正面にUIオブジェクト30が位置するように、UIオブジェクト30を移動させた。他の実施形態では、仮想カメラVCの正面にUIオブジェクト30が位置するように、仮想カメラVCの制御(姿勢の変化、及び/又は、移動)を行ってもよい。例えば、仮想カメラVCの正面にUIオブジェクト30が位置するように、UIオブジェクト30を固定して、仮想カメラVCの姿勢を変化させてもよいし、仮想カメラVCを移動させてもよい。また、他の実施形態では、仮想カメラVCの正面にUIオブジェクト30が位置するように、UIオブジェクト30の移動及び仮想カメラVCの制御の両方を行ってもよい。すなわち、仮想カメラVCの正面にUIオブジェクト30が位置するように、UIオブジェクト30の移動、及び、仮想カメラVCの制御(姿勢の変化、及び/又は、移動)のうちの少なくとも何れか一方を行ってもよい。UIオブジェクト30の移動が行われる場合は、上記実施形態で示したように、UIオブジェクト30を移動させるとともに、UIオブジェクト30を回転させて、UIオブジェクト30が仮想カメラVCを向くようにしてもよい。
【0141】
また、上記実施形態では、条件が満たされた場合にUIオブジェクト30を仮想カメラVCの正面に移動させた。他の実施形態では、条件が満たされた場合にUIオブジェクト30の少なくとも一部が仮想カメラVCの撮像範囲に位置するように、UIオブジェクト30を移動させてもよいし、仮想カメラVCを制御(例えば、仮想カメラの移動及び/又は回転)してもよいし、UIオブジェクト30の移動及び仮想カメラVCの制御の両方を行ってもよい。
【0142】
また、上記実施形態では、B領域における移動処理において、仮想カメラVCのヨー方向又はピッチ方向の回転が一方向から他方向に変化した場合において、他方向の回転角を累積した値及び一方向の回転角を累積した値のうちの小さい方の値が所定以上であるか否かを判定した。具体的には、上記変化量Ry及びRxの和が所定値以上であるか否かを判定した。UIオブジェクト30を移動させるか否かの判定は、他の方法により行われてもよい。例えば、他の実施形態では、上記変化量Ry及びRxのうち何れか一方が所定値以上であるか否かが判定されてもよい。また、仮想カメラVCのヨー方向又はピッチ方向の回転が一方向から他方向に変化した場合において、他方向の回転角を累積した値、及び/又は、一方向の回転角を累積した値が所定以上である場合に、UIオブジェクト30を移動させてもよい。
【0143】
また、他の実施形態では、他方向の回転角および一方向の回転角を累積せず、他方向の回転角及び/又は一方向の回転角が所定値以上となった場合に、UIオブジェクト30を移動させてもよい。この場合、仮想カメラVCの一方向への回転と他方向への回転とが複数回繰り返されている場合において、各回の他方向への回転角又は一方向への回転角が所定値未満である場合はUIオブジェクト30は移動されない。一方、仮想カメラVCの一方向への回転と他方向への回転とが複数回繰り返されている場合において、1回の他方向への回転角又は一方向への回転角が所定値以上となった場合には、UIオブジェクト30は移動される。
【0144】
また、ヨー方向に関する変化量Ryが所定値以上か否かの判定と、ピッチ方向に関する変化量Rxが所定値以上か否かの判定とは、別々で行われてもよい。この場合、RxおよびRyの何れか一方が所定値以上となった場合には、UIオブジェクト30を移動させる。
【0145】
また、ヨー方向に関する変化量Ryとピッチ方向に関する変化量Rxとで閾値を異ならせてもよい。例えば、ヨー方向についてはRyが第1の所定値(例えば4~8度)以上であれば、UIオブジェクト30を移動させ、ピッチ方向についてはRxが第1の所定値より大きな第2の所定値(例えば10~20度)以上であれば、UIオブジェクト30を移動させてもよい。また、これらの閾値を、表示されるUIオブジェクト30の種類、仮想空間のシーン(背景のシーン)に応じて異ならせてもよい。
【0146】
また、上記実施形態では、ヨー方向およびピッチ方向に関して、仮想カメラVCの視線が一方向から他方向に反転したことを第1の条件として、当該第1の条件が満たされている場合において、さらに第2の条件が満たされた場合(具体的には、他方向への回転角の累積値が所定値以上になった場合)、UIオブジェクト30を仮想カメラVCの正面に移動させた。他の実施形態では、上記第1の条件が満たされた場合に、すなわち、仮想カメラVCの視線が一方向から他方向に反転した場合に、UIオブジェクト30を仮想カメラVCの正面に移動させてもよい。この場合、累積値に関係なく、仮想カメラVCの視線が反転した瞬間にUIオブジェクト30が仮想カメラVCの正面に移動する。
【0147】
また、他の実施形態では、仮想カメラVCの視線の反転回数が所定回数以上となった場合に、UIオブジェクト30を仮想カメラVCの正面に移動させてもよい。例えば、仮想カメラVCが左方向に回転してB領域に入った後、右方向への回転と左方向の回転とを繰り返す場合、反転した回数(右方向への反転、及び、左方向への反転)が所定回数以上となった場合にUIオブジェクト30を移動させてもよい。
【0148】
また、他の実施形態では、仮想カメラVCの視線が一方向(例えば左方向)から他方向(例えば右方向)に反転した場合に、反転した後の他方向(右方向)および一方向(左方向)の角度に基づいて、UIオブジェクト30を移動させてもよい。
【0149】
すなわち、B領域における移動処理において、仮想カメラVCの視線が一方向から他方向に反転したことに基づいて、UIオブジェクト30を仮想カメラVCの正面に移動させてもよい。ここで、「仮想カメラVCの視線が一方向から他方向に反転したことに基づいて」とは、例えば、以下の事項を含む。
・仮想カメラVCの視線が所定の回転方向における一方向から他方向に反転した場合において、さらに、他方向への回転角又はその累積値(上記Rx又はRy)が所定値以上となること。
・所定の回転方向における仮想カメラVCの視線の反転回数が所定値となること。
・仮想カメラVCの視線が所定の回転方向における一方向から他方向に変化すること。
【0150】
また、上記実施形態では、仮想カメラVCの視線が
図9に示す「A領域」および「B領域」の何れにあるかについて、仮想カメラVCの視線の角度に基づいて判定し、各領域に応じてUIオブジェクト30を移動させた。他の実施形態では、仮想カメラVCの視線の角度に限らず、例えば、ポインタの位置が「A領域」および「B領域」の何れの領域にあるかに応じて、UIオブジェクト30を移動させてもよい。例えば、立体視画像の所定位置(例えば中心)にポインタが表示され、当該ポインタがA領域にある場合には上記「A領域における移動処理」を行い、当該ポインタがB領域にある場合には上記「B領域における移動処理」を行ってもよい。
【0151】
また、上記実施形態では、条件が満たされた場合にUIオブジェクト30を移動させることとした。移動させるオブジェクトは、UIオブジェクト30に限らず、任意のオブジェクトであってもよい。例えば、条件が満たされた場合に、ユーザに所定の情報を伝えるキャラクタオブジェクトを仮想カメラVCの正面に移動させてもよい。
【0152】
また、上記実施形態では、ゴーグル装置10(情報処理装置2)の姿勢を、情報処理装置2に内蔵された慣性センサ22からのデータに基づいて検出した。他の実施形態では、他の方法によりゴーグル装置10の姿勢を検出してもよい。例えば、画像表示システム1は、ゴーグル装置10を外部から撮像するカメラを備え、カメラでゴーグル装置10又はゴーグル装置10に取り付けられたマーカを撮像し、撮像した画像に基づいてゴーグル装置10の姿勢を取得してもよい。また、ゴーグル装置10がカメラを備え、当該カメラが撮像した画像の変化からゴーグル装置10の姿勢が取得されてもよい。
【0153】
また、上記実施形態では、仮想カメラVCの視線の回転方向を仮想空間における左右方向(ヨー方向)の成分と、上下方向(ピッチ方向)の成分とに分け、仮想カメラVCの視線が、左右方向又は上下方向の成分に関して、一方向から他方向に変化したことに基づいて、UIオブジェクト30を移動させた。例えば、仮想カメラVCの視線が、左右方向の成分における一方向(例えば左方向)から他方向(例えば右方向)に変化した場合に、左右方向の成分における他方向及び/又は一方向の回転量を算出し、算出した回転量が所定値以上である場合(所定値を含んでも含まなくてもよい)、UIオブジェクト30を移動させた。他の実施形態では、仮想カメラVCの視線が、斜め方向における一方向(例えば、左下から右上への方向)から他方向(例えば、右上から左下への方向)に変化したことに基づいて、UIオブジェクト30を移動させてもよい。
【0154】
すなわち、仮想カメラVCの視線の回転方向の所定成分(例えば、左右方向成分、上下方向成分、斜め方向成分)が、一方向から他方向に変化したことに基づいて、UIオブジェクト30を移動させてもよい。
【0155】
また、上記実施形態では、仮想カメラVCの視線がA領域にあるときには、仮想カメラVCの左右方向の回転に追従してUIオブジェクト30を移動させた。他の実施形態では、仮想カメラVCの視線がUI領域から出てA領域に入った後、仮想カメラVCの視線がUI領域に戻ったタイミングで、UIオブジェクト30を左右方向(ヨー方向)における仮想カメラVCの正面に移動させてもよい(又は仮想カメラVCを制御してもよい)。すなわち、ユーザが、ゴーグル装置10を外した後(例えばゴーグル装置10の底面15を上又は下方向に向けた後)、ゴーグル装置10を顔に当てて表示部を見たときに、UIオブジェクト30が正面に見えるように制御されるのであれば、UIオブジェクト30を移動させるタイミングはいつでもよい。例えば、仮想カメラVCの視線がA領域に入った時点で、UIオブジェクト30を仮想カメラVCの左右方向の回転に追従するように移動させてもよいし、仮想カメラVCの視線がA領域に入ってからUI領域に戻った時点で、UIオブジェクト30を左右方向における仮想カメラVCの正面に移動させてもよい。
【0156】
また、上記実施形態では、仮想カメラVCの視線がA領域内にある場合に、ヨー方向における仮想カメラVCの正面にUIオブジェクト30が位置するように制御した。また、仮想カメラVCの視線がB領域内にある場合において、仮想カメラVCの視線が反転したことを条件に、仮想カメラVCの正面にUIオブジェクト30が位置するように制御した。ここでいう「正面」とは、厳密な正面だけではなく、実質的な正面を含む。厳密な正面とは、仮想カメラVCの視線を伸ばした直線が、UIオブジェクト30の左右方向の中心を通るy軸に平行な直線と交わることである。言い換えると、厳密な正面とは、仮想カメラVCの視線が、UIオブジェクト30の左右方向にずれていないことである。実質的な正面は、仮想カメラVCの視線が、UIオブジェクト30の左右方向にずれている場合も含む。例えば、「仮想カメラVCの実質的な正面にUIオブジェクト30が位置する」とは、仮想カメラVCの視線を通るxz平面に垂直な面が、UIオブジェクト30と交わることであってもよい。この場合、UIオブジェクト30に対する仮想カメラVCのピッチ方向の回転角を「0」度にしたときには、仮想カメラVCの視線を伸ばした直線は、UIオブジェクト30に当たることになる。また、「仮想カメラVCの実質的な正面にUIオブジェクト30が位置するようにUIオブジェクトを移動させる」とは、UIオブジェクト30に対する仮想カメラVCのピッチ方向の回転角を「0」度にした場合に、UIオブジェクト30の少なくとも一部が仮想カメラVCの視野内に入り、かつ、UIオブジェクトの移動前よりもUIオブジェクト30に対する仮想カメラVCのヨー方向の回転角が小さくなるように、UIオブジェクトを移動させることであってもよい。すなわち、本明細書における「正面」とは、UIオブジェクト(所定のオブジェクト)に対する仮想カメラのヨー方向の回転角が所定の角度であることを意味する。「所定の角度」は、所定のオブジェクトに対する仮想カメラのピッチ方向の回転角を「0」度にしたときに、仮想カメラの視野内に所定のオブジェクトの少なくとも一部が含まれる角度であってもよい。
【0157】
また、上記実施形態では、仮想カメラVCの視線がUI領域の上側のA領域又は下側のA領域にある場合に、上記A領域における移動処理を行った。他の実施形態では、仮想カメラVCの視線がUI領域の上側のA領域にある場合にのみ、上記A領域における移動処理を行ってもよい。逆に、仮想カメラVCの視線がUI領域の下側のA領域にある場合にのみ、上記A領域における移動処理を行ってもよい。
【0158】
また、
図9に示す各領域の大きさ、形状は単なる一例であり、各領域は他の任意の大きさ、形状であってもよい。また、仮想カメラVCの視線が各領域の境界にある場合には、仮想カメラVCの視線がUI領域にあると判定されてもよいし、UI領域とは異なる領域(すなわち、A領域又はB領域)にあると判定されてもよい。
【0159】
また、上記実施形態では、2つの左仮想カメラVCLおよび右仮想カメラVCRに基づいて、互いに視差を有する左目画像および右目画像を生成することとした。他の実施形態では、1つの仮想カメラに基づいて画像を生成し、生成した画像に変形を加えて互いに視差を有する左目画像および右目画像を生成してもよい。すなわち、本明細書において、「仮想カメラに基づいて左目画像および右目画像を生成する」ことは、一対の左仮想カメラVCLおよび右仮想カメラVCRに基づいて(すなわち、複数の仮想カメラに基づいて)左目画像および右目画像を生成することと、1つの仮想カメラに基づいて左目画像および右目画像を生成することとの両方を含むものとする。
【0160】
また、上記実施形態では、ゴーグル装置10の表示部21は、ゴーグル本体に着脱可能であるとした。他の実施形態では、ゴーグル装置10の表示部21は、ゴーグル本体に固定されてもよい。すなわち、ゴーグル装置10は、左目用画像および右目用画像を表示するための表示部と、左目用画像および右目用画像を生成する情報処理装置とが一体として構成されたものであってもよい。また、ゴーグル装置10の表示部は、上述のような表示部21に限られない。例えば、ゴーグル装置10の表示部は、2つの表示部(ユーザの左目で視認される左目表示部、および、ユーザの右目で視認される右目表示部)を有してもよい。また、ゴーグル装置10の表示部は、任意の形状であってもよい。例えば、ゴーグル装置10の表示部自体が、左開口16Lおよび右開口16Rのように略円形(円形又は楕円)に形成されてもよい。また、正方形や長方形に形成された2つの左右の表示部が、ゴーグル装置10の表示部として用いられてもよい。また、ゴーグル装置10の表示部は、液晶表示装置や有機EL表示装置等の表示装置であってもよいし、投影面に映像を投影する投影方式の表示装置であってもよい。
【0161】
また、上記実施形態の画像表示システム1の構成は単なる一例であり、上記に限られない。例えば、上記実施形態では、ゴーグル装置10は、画像を表示する表示部21および画像を生成するための処理を行うプロセッサ20を有する情報処理装置2と、ゴーグル本体とにより構成されるものとした。すなわち、ゴーグル本体と情報処理装置2とを含むゴーグル装置10により、画像表示システム1が構成されるものとした。他の実施形態では、表示部を備えるゴーグル装置(表示部と一体となったゴーグル装置)と、画像を生成するための処理等を行う情報処理装置とが別々の装置として構成され、これら複数の装置により、画像表示システム1が構成されてもよい。この場合、ゴーグル装置と情報処理装置とは、有線または無線で接続され、情報処理装置において生成された左目画像および右目画像がゴーグル装置に送信され、ユーザに視認されてもよい。また、情報処理装置が上述したUIオブジェクト30の移動に関する処理を行い、その処理の結果をゴーグル装置に送信し、ゴーグル装置が左目画像および右目画像を生成してユーザに視認させてもよい。また、ゴーグル装置と情報処理装置とは、ネットワーク(LANやWAN、インターネット等)で接続されてもよい。
【0162】
また、本実施形態では、ユーザが手で把持したまま表示部を覗き込むゴーグル装置が用いられるものとしたが、他の実施形態では、ゴーグル装置は、ユーザが手で把持することを必要とせず、ユーザの頭部に固定的に装着するヘッドマウントディスプレイであってもよい。
【0163】
以上、本発明について説明したが、上記説明は本発明の例示に過ぎず、種々の改良や変形が加えられてもよい。
【符号の説明】
【0164】
1 画像表示システム
2 情報処理装置
10 ゴーグル装置
11 上面
12 右側面
13 下面
14 左側面
15 底面
16L 左開口
16R 右開口
17 仕切り面
20 プロセッサ
21 表示部
22 慣性センサ
30 UIオブジェクト
31~34 アイコン
35 情報表示オブジェクト
37 ポインタ
VC 仮想カメラ
VCL 左仮想カメラ
VCR 右仮想カメラ