JP6189497B1 - 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体 - Google Patents

仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体 Download PDF

Info

Publication number
JP6189497B1
JP6189497B1 JP2016142762A JP2016142762A JP6189497B1 JP 6189497 B1 JP6189497 B1 JP 6189497B1 JP 2016142762 A JP2016142762 A JP 2016142762A JP 2016142762 A JP2016142762 A JP 2016142762A JP 6189497 B1 JP6189497 B1 JP 6189497B1
Authority
JP
Japan
Prior art keywords
virtual
virtual object
hmd
user
hand
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016142762A
Other languages
English (en)
Other versions
JP2018013938A (ja
Inventor
集平 寺畑
集平 寺畑
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Colopl Inc
Original Assignee
Colopl Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Colopl Inc filed Critical Colopl Inc
Priority to JP2016142762A priority Critical patent/JP6189497B1/ja
Priority to US15/654,652 priority patent/US10198855B2/en
Priority to CN201780038446.5A priority patent/CN109313511B/zh
Priority to CN202110157743.XA priority patent/CN112783328B/zh
Priority to PCT/JP2017/026185 priority patent/WO2018016553A1/ja
Application granted granted Critical
Publication of JP6189497B1 publication Critical patent/JP6189497B1/ja
Publication of JP2018013938A publication Critical patent/JP2018013938A/ja
Priority to US16/223,012 priority patent/US10776991B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

【課題】直感的な操作で仮想オブジェクトと接触することが可能な仮想体験を提供する。【解決手段】制御回路部は、操作対象オブジェクトに付随する付随オブジェクトにおいて第1仮想オブジェクトの判定領域に含まれる部分が、第2仮想オブジェクトの判定領域に含まれる部分よりも大きい場合、操作対象オブジェクトが第1仮想オブジェクトに接触したと判定する。【選択図】図20

Description

本開示は、仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体に関する。
非特許文献1には、仮想空間に配置されたブロックを、仮想空間に配置されたユーザの仮想手で掴んだり、投げたりすることを可能にする技術が開示されている。
Toybox Demo for Oculus Touch - Inside Look[online]、平成27年10月13日、[平成28年6月13日検索]、インターネット<URL:https://www.youtube.com/watch?v=dbYP4bhKr2M>
仮想空間において、ユーザが仮想オブジェクトと接触することによって操作しようとした場合に、複数の仮想オブジェクトが存在していると、ユーザは直感的な操作によって、所望の仮想オブジェクトと接触できないことが想定される。また、仮想オブジェクトを現実空間に重畳させるようにして配置することにより、ユーザに仮想体験を提供する場合にも、同様の問題が生じ得る。本開示はこの課題を解決するためになされたものであり、その目的は、ユーザが、直感的な操作によって、所望の仮想オブジェクトと接触することを可能にすることにある。
前記の課題を解決するために、本開示に係る仮想空間を提供する方法は、頭部にヘッドマウントディスプレイを装着したユーザに仮想空間を提供する方法であって、仮想空間に配置された、第1仮想オブジェクトおよび第2仮想オブジェクトを少なくとも含む複数の仮想オブジェクトを特定するとともに、ユーザの頭部以外の身体の一部の動きに連動して動作する操作対象オブジェクトを仮想空間に配置するステップと、第1仮想オブジェクトと操作対象オブジェクトとの接触を判定するための、第1仮想オブジェクトに関連付けられる第1領域と、第2仮想オブジェクトと操作対象オブジェクトとの接触を判定するための、第2仮想オブジェクトに関連付けられる第2領域とをそれぞれ設定するステップと、操作対象オブジェクトまたは操作対象オブジェクトに付随する付随オブジェクトのうち第1領域に含まれる第1部分が、操作対象オブジェクトまたは付随オブジェクトのうち第2領域に含まれる第2部分よりも大きい場合、操作対象オブジェクトが第1仮想オブジェクトに接触したと判定するステップとを含む。
本開示によれば、ユーザが、直感的な操作によって、所望の仮想オブジェクトと接触することを可能にすることができる。
HMDシステムの構成を示す図である。 制御回路部のハード構成を示す図である。 HMDに設定される視野座標系を例示する図である。 ユーザに提供される仮想空間の概要を説明する図である。 視界領域の断面を示す図である。 ユーザの視線方向を決定する方法を例示する図である。 コントローラの構成を表す図である。 制御回路部の機能的構成を示すブロック図である。 HMDシステムが仮想空間をユーザに提供する処理の流れを示すシーケンス図である。 仮想空間におけるゲーム中の処理の流れを示すシーケンス図である。 仮想空間におけるゲームにおいて、判定領域を特定した後の処理の流れを示すシーケンス図である。 仮想カメラの位置に基づく基準ベクトルの調整方法を説明する図である。 基準視線の方向に基づく基準ベクトルの調整方法を説明する図であり、仮想空間のY軸方向から見た仮想オブジェクトおよび仮想カメラを示す図である。 基準視線の方向に基づく基準ベクトルの調整方法を説明する図であり、仮想空間のX軸方向から見た仮想オブジェクトおよび仮想カメラを示す図である。 カード型の仮想オブジェクトのそれぞれに判定領域を設定した例を示す図である。 カード型の仮想オブジェクトのそれぞれに判定領域を設定した他の例を示す図である。 仮想空間におけるゲーム中において、仮想オブジェクトを選択する際の処理の流れを示すシーケンス図である。 付随オブジェクトの一例を説明する図である。 付随オブジェクトの他の例を説明する図である。 付随オブジェクトが複数の判定領域に入った場合に、いずれの判定領域の仮想オブジェクトと接触したかを判定する処理を説明する図である。 仮想オブジェクトが掴まれたときの表示内容を説明する図である。
[本発明の実施形態の詳細]
本発明の実施形態に係る仮想空間を提供する方法、および、プログラムの具体例を、以下に図面を参照しつつ説明する。本発明はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が本発明に含まれることが意図される。以下の説明では、図面の説明において同一の要素には同一の符号を付し、重複する説明を繰り返さない。
(HMDシステム100の構成)
図1は、HMDシステム100の構成を示す図である。この図に示すように、HMDシステム100は、HMD110、HMDセンサ120、コントローラセンサ140、制御回路部200、およびコントローラ300を備えている。
HMD110は、ユーザの頭部に装着される。HMD110は、非透過型の表示装置であるディスプレイ112、センサ114、および注視センサ130を備えている。HMD110は、右目用画像および左目用画像をディスプレイ112にそれぞれ表示することにより、ユーザの両目の視差に基づきユーザに立体的に視認される3次元画像を、ユーザに視認させる。これにより仮想空間をユーザに提供する。ディスプレイ112がユーザの眼前に配置されているので、ユーザは、ディスプレイ112に表示される画像を通じて仮想空間に没入できる。これにより、ユーザは仮想現実(Virtual Reality:VR)を体験することができる。仮想空間は、背景、ならびにユーザが操作可能な各種のオブジェクトおよびメニュー画像等を含み得る。
ディスプレイ112は、右目用画像を表示する右目用サブディスプレイと、左目用画像を表示する左目用サブディスプレイとを含んでもよい。または、ディスプレイ112は、右目用画像および左目用画像を共通の画面に表示する1つの表示装置であってもよい。このような表示装置として、たとえば、表示画像が一方の目にしか認識できないようにするシャッターを高速に切り替えることにより、右目用画像および左目用画像を独立して交互に表示する表示装置が挙げられる。
また、本実施形態において、HMD110には、透過型ディスプレイが適用されてもよい。つまり、HMD110は、透過型HMDであってもよい。この場合、前記3次元画像を透過型ディスプレイに表示することによって、後述する仮想オブジェクトを現実空間に仮想的に配置することができる。これにより、ユーザは現実空間に仮想オブジェクトが配置された複合現実(Mixes Reality:MR)を体験することができる。本実施形態において、仮想現実や複合現実といった、ユーザが仮想オブジェクトと相互作用できる体験を仮想体験と称することがある。以下では、仮想現実を提供するための方法を一例として詳説する。
(制御回路部200のハード構成)
図2は、制御回路部200のハード構成を示す図である。制御回路部200は、HMD110に仮想空間を提供させるためのコンピュータである。図2に示すように、制御回路部200は、プロセッサ、メモリ、ストレージ、入出力インターフェース、および通信インターフェースを備えている。これらは、データ伝送路としてのバスを通じて、制御回路部200内において互いに接続されている。
プロセッサは、CPU(Central Processing Unit)、MPU(Micro-processing unit)、またはGPU(Graphics Processing Unit)等を含んで構成され、制御回路部200およびHMDシステム100全体の動作を制御する。
メモリは、主記憶として機能する。メモリには、プロセッサによって処理されるプログラムおよび制御用データ(演算パラメータなど)が記憶される。メモリは、ROM(Read Only Memory)またはRAM(Random Access Memory)等を含んで構成され得る。
ストレージは、補助記憶として機能する。ストレージには、HMDシステム100全体の動作を制御するためのプログラム、各種のシミュレーションプログラム、ユーザ認証プログラム、および、仮想空間を規定するための各種のデータ(画像およびオブジェクト等)が格納されている。さらには、各種のデータを管理するためのテーブルを含むデータベースがストレージに構築されていてもよい。ストレージは、フラッシュメモリまたはHDD(Hard Disc Drive)等を含んで構成され得る。
入出力インターフェースは、USB(Universal Serial Bus)端子、DVI(Digital Visual Interface)端子、HDMI(登録商標)(High-Definition Multimedia Interface)端子等の各種の有線接続端子、および、無線接続のための各種の処理回路を含んで構成されている。入出力インターフェースは、HMD110と、HMDセンサ120およびコントローラセンサ140を含む各種のセンサと、コントローラ300とを互いに接続する。
通信インターフェースは、ネットワークNWを介して外部装置と通信するための各種の有線接続端子、および、無線接続のための各種の処理回路を含んで構成される。通信インターフェースは、LAN(Local Area Network)またはインターネットを介して通信するための各種の通信規格およびプロトコルに適合するように、構成されている。
制御回路部200は、ストレージに格納された所定のアプリケーションプログラムをメモリにロードして実行することによって、ユーザに仮想空間を提供する。プログラムの実行時に、メモリおよびストレージには、仮想空間内に配置される各種の仮想オブジェクトを操作したり、各種のメニュー画像等を表示および制御したりするための各種のプログラムが格納される。
制御回路部200は、HMD110に搭載されていてもよいし、されていなくてもよい。すなわち制御回路部200は、HMD110から独立した別のハードウェア(たとえば、パーソナルコンピュータ、またはネットワークを通じてHMD110と通信可能なサーバ装置)であってもよい。制御回路部200は、複数のハードウェアの協働によって1または複数の機能が実装される形態の装置であってもよい。または、制御回路部200が有する全機能のうち一部の機能のみがHMD110に実装され、残りの機能が別のハードウェアに実装されていてもよい。
HMDシステム100を構成するHMD110等の各要素には、予め、グローバル座標系(基準座標系、xyz座標系)が設定されている。このグローバル座標系は、現実空間における、鉛直方向、鉛直方向と直交する横方向、ならびに、鉛直方向および横方向の双方と直交する前後方向にそれぞれ平行な、3つの基準方向(軸)を有する。本実施形態では、グローバル座標系は視点座標系の一種であるため、グローバル座標系における横方向、鉛直方向(上下方向)、および前後方向を、それぞれx軸、y軸、z軸とする。具体的には、グローバル座標系のx軸は現実空間の横方向に平行であり、y軸は現実空間の鉛直方向に平行であり、z軸は現実空間の前後方向に平行である。
HMDセンサ120は、HMD110の動きを検出するためのポジション・トラッキング機能を有する。HMDセンサ120は、この機能によって、現実空間内におけるHMD110の位置および傾きを検出する。この検出を実現するために、HMD110は、図示しない複数の光源を備えている。各光源は、たとえば赤外線を発するLEDである。HMDセンサ120は、たとえば赤外線センサを含んで構成される。HMDセンサ120は、HMD110の光源から照射された赤外線を、赤外線センサによって検出することによって、HMD110の検出点を検出する。さらに、HMD110の検出点の検出値に基づき、ユーザの動きに応じたHMD110の現実空間内における位置および傾きを検出する。HMDセンサ120は、検出値の経時的変化に基づき、HMD110の位置および傾きの時間変化を決定することができる。
HMDセンサ120は、光学カメラを含んで構成されてもよい。この場合、HMDセンサ120は、光学カメラによって得られたHMD110の画像情報に基づき、HMD110の位置および傾きを検出する。
HMDセンサ120の代わりに、HMD110が、センサ114を用いて自身の位置および傾きを検出してもよい。この場合、センサ114は、たとえば角速度センサ、地磁気センサ、加速度センサ、またはジャイロセンサであればよい。HMD110は、これらのうち少なくとも1つを用いる。センサ114が角速度センサである場合、センサ114は、HMD110の動きに応じて、HMD110の現実空間における3軸周りの角速度を経時的に検出する。HMD110は、角速度の検出値に基づき、HMD110の3軸周りの角度の時間的変化を決定し、さらに、角度の時間的変化に基づきHMD110の傾きを検出することができる。
HMD110がセンサ114による検出値に基づきHMD110の位置および傾きを自ら検出する場合、HMDシステム100にHMDセンサ120は不要である。逆に、HMD110から離れた位置に配置されるHMDセンサ120がHMD110の位置および傾きを検出する場合、HMD110にセンサ114は不要である。
上述したように、グローバル座標系は現実空間の座標系と平行である。そのため、HMDセンサ120によって検出されたHMD110の各傾きは、グローバル座標系におけるHMD110の3軸周りの各傾きに相当する。HMDセンサ120は、グローバル座標系におけるHMDセンサ120の傾きの検出値に基づき、uvw視野座標系をHMD110に設定する。HMD110に設定されるuvw視野座標系は、HMD110を装着したユーザが物体を見る際の視点座標系に対応する。
(uvw視野座標系)
図3は、HMD110に設定されるuvw視野座標系を例示する図である。HMDセンサ120は、HMD110の起動時に、グローバル座標系におけるHMD110の位置および傾きを検出する。そして、傾きの検出値に基づく3次元のuvw視野座標系を、HMD110に設定する。図3に示すように、HMDセンサ120は、HMD110を装着したユーザの頭部を中心(原点)とした3次元のuvw視野座標系を、HMD110に設定する。具体的には、グローバル座標系を規定する横方向、鉛直方向、および前後方向(x軸、y軸、z軸)を、グローバル座標系内においてHMD110の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって得られる新たな3つの方向を、HMD110におけるuvw視野座標系のピッチ方向(u軸)、ヨー方向(v軸)、およびロール方向(w軸)として設定する。
図3に示すように、HMDセンサ120は、HMD110を装着したユーザが直立しかつ正面を視認している場合、グローバル座標系に平行なuvw視野座標系をHMD110に設定する。この場合、グローバル座標系の横方向(x軸)、鉛直方向(y軸)、および前後方向(z軸)が、そのまま、HMD110におけるuvw視野座標系のピッチ方向(u軸)、ヨー方向(v軸)、およびロール方向(w軸)に一致する。
HMDセンサ120は、HMD110にuvw視野座標系を設定した後、HMD110の動きに応じて、現在設定中のuvw視野座標系におけるHMD110の傾き(傾きの変化量)を検出することができる。この場合、HMDセンサ120は、HMD110の傾きとして、現在設定中のuvw視野座標系におけるHMD110のピッチ角(θu)、ヨー角(θv)、およびロール角(θw)をそれぞれ検出する。ピッチ角(θu)は、uvw視野座標系におけるピッチ方向周りのHMD110の傾き角度である。ヨー角(θv)は、uvw視野座標系におけるヨー方向周りのHMD110の傾き角度である。ロール角(θw)は、uvw視野座標系におけるロール方向周りのHMD110の傾き角度である。
HMDセンサ120は、HMD110の傾きの検出値に基づき、動いた後のHMD110におけるuvw視野座標系を、新たにHMD110に設定する。HMD110と、HMD110のuvw視野座標系との関係は、HMD110の位置および傾きによらず常に一定である。HMD110の位置および傾きが変わると、それの変化に連動して、グローバル座標系におけるHMD110のuvw視野座標系の位置および傾きが同様に変化する。
HMDセンサ120は、赤外線センサによって取得される赤外線の光強度および複数の検出点間の相対位置関係(検出点間の距離等)に基づき、HMD110の現実空間内における位置を、HMDセンサ120に対する相対位置として特定してもよい。また、特定した相対位置に基づき、現実空間内(グローバル座標系)におけるHMD110のuvw視野座標系の原点を決定してもよい。また、HMDセンサ120は、複数の検出点間の相対位置関係に基づきHMD110の現実空間内における傾きを検出し、さらに、その検出値に基づき現実空間内(グローバル座標系)におけるHMD110のuvw視野座標系の向きを決定してもよい。
(仮想空間2の概要)
図4は、ユーザに提供される仮想空間2の概要を説明する図である。この図に示すように、仮想空間2は、中心21の360°方向全体を覆う全天球状の構造を有する。図4には、仮想空間2の全体のうち上半分の天球のみを例示する。仮想空間2には、略正方形または略長方形の複数のメッシュが関連付けられている。仮想空間2における各メッシュの位置は、仮想空間2に規定される空間座標系(XYZ座標系)における座標として、予め規定されている。制御回路部200は、仮想空間2に展開可能なコンテンツ(静止画、動画等)を構成する各部分画像を、仮想空間2における対応する各メッシュに対応付けることによって、ユーザによって視認可能な仮想空間画像22が展開される仮想空間2をユーザに提供する。
仮想空間2には、中心21を原点とするXYZ空間座標系が規定されている。XYZ座標系は、たとえばグローバル座標系に平行である。XYZ座標系は視点座標系の一種であるため、XYZ座標系における横方向、鉛直方向(上下方向)、および前後方向を、それぞれX軸、Y軸、Z軸とする。すなわち、XYZ座標系のX軸(横方向)がグローバル座標系のx軸と平行であり、XYZ座標系のY軸(上下方向)がグローバル座標系のy軸と平行であり、XYZ座標系のZ軸(前後方向)がグローバル座標系のz軸と平行である。
HMD110の起動時(初期状態)において、仮想空間2の中心21に仮想カメラ1が配置されている。仮想カメラ1は、現実空間内におけるHMD110の動きに連動して、仮想空間2内において同様に動く。これにより、現実空間内におけるHMD110の位置および向きの変化が、仮想空間2内において同様に再現される。
仮想カメラ1には、HMD110と同様にuvw視野座標系が規定される。仮想空間2内における仮想カメラ1のuvw視野座標系は、現実空間(グローバル座標系)内におけるHMD110のuvw視野座標系に連動するように規定されている。したがって、HMD110の傾きが変化すると、それに連動して仮想カメラ1の傾きも変化する。仮想カメラ1は、HMD110を装着したユーザの現実空間における移動に連動して、仮想空間2において移動することもできる。
仮想空間2における仮想カメラ1の位置および傾きに応じて、仮想空間2における仮想カメラ1の向きが決まる。これにより、仮想空間2に展開される仮想空間画像22をユーザが視認する際の基準となる視線(基準視線5)が決まる。制御回路部200は、基準視線5に基づき、仮想空間2における視界領域23を決定する。視界領域23は、仮想空間2のうち、HMD110を装着したユーザの視界に対応する領域である。
図5は、視界領域23の断面を示す図である。図5の(a)に、仮想空間2において視界領域23をX方向から見たYZ断面を示す。図5の(b)に、仮想空間2において視界領域23をY方向から見たXZ断面を示す。視界領域23は、基準視線5と仮想空間2のYZ断面とによって定義される範囲である第1領域24(図5の(a)参照)と、基準視線5と仮想空間2のXZ断面とによって定義される範囲である第2領域25(図5の(b)参照)とを有する。制御回路部200は、仮想空間2における基準視線5を中心として極角αを含む範囲を、第1領域24として設定する。また、仮想空間2における基準視線5を中心とした方位角βを含む範囲を、第2領域25として設定する。
HMDシステム100は、仮想空間画像22のうち視界領域23に重畳する部分である視界画像26をHMD110のディスプレイ112に表示させることによって、ユーザに仮想空間2を提供する。ユーザがHMD110を動かせば、それに連動して仮想カメラ1も動き、その結果、仮想空間2における視界領域23の位置が変化する。これによりディスプレイ112に表示される視界画像26が、仮想空間画像22のうち、仮想空間2においてユーザが向いた箇所(=視界領域23)に重畳する画像に更新される。したがってユーザは、仮想空間2における所望の箇所を視認することができる。
ユーザは、HMD110を装着している間、現実世界を目にすることなく、仮想空間2に展開される仮想空間画像22のみを視認する。そのためHMDシステム100は、仮想空間2への高い没入感をユーザに与えることができる。
制御回路部200は、HMD110を装着したユーザの現実空間における移動に連動して、仮想カメラ1を仮想空間2内において移動させてもよい。この場合、制御回路部200は、仮想カメラ1の仮想空間2内における位置および向きに基づき、仮想空間2のうちHMD110のディスプレイ112に投影されることによってユーザが視認する視界領域23を特定する。
仮想カメラ1は、右眼用画像を提供する右眼用仮想カメラと、左眼用画像を提供する左眼用仮想カメラとを含むことが好ましい。さらに、2つの仮想カメラには、ユーザが3次元の仮想空間2を認識できるように適切な視差が設定されていることが好ましい。本実施形態では、このような2つの仮想カメラのロール方向が合成されることによって生成されるロール方向(w)がHMD110のロール方向(w)に適合されるような仮想カメラ1のみを、代表して図示および説明するものとする。
(視線方向の検出)
注視センサ130は、ユーザの右目および左目の視線が向けられる方向(視線方向)を検出するアイトラッキング機能を有する。注視センサ130として、アイトラッキング機能を有する公知のセンサを採用することができる。注視センサ130は、右目用センサおよび左目用センサを備えていることが好ましい。注視センサ130は、たとえば、ユーザの右目および左目に赤外光を照射すると共に、照射光に対する角膜および虹彩からの反射光を受光することによって、各眼球の回転角を検出するセンサでもよい。注視センサ130は、検出した各回転角に基づき、ユーザの視線方向を検知することができる。
注視センサ130によって検出されるユーザの視線方向は、ユーザが物体を視認する際の視点座標系における方向である。上述したように、HMD110のuvw視野座標系は、ユーザがディスプレイ112を視認する際の視点座標系に等しい。また、仮想カメラ1のuvw視野座標系は、HMD110のuvw視野座標系に連動している。したがってHMDシステム100では、注視センサ130によって検出されたユーザの視線方向を、仮想カメラ1のuvw視野座標系におけるユーザの視線方向と見なすことができる。
図6は、ユーザの視線方向を決定する方法を例示する図である。この図に示すように、注視センサ130は、ユーザUの右目および左目の視線を検出する。ユーザUが近くを見ている場合、注視センサ130は、ユーザUの視線R1およびL1を検出する。ユーザが遠くを見ている場合、注視センサ130は、ユーザの視線R1およびL1よりも、HMD110のロール方向(w)とのなす角が小さい視線R2およびL2を特定する。注視センサ130は、検出値を制御回路部200に送信する。
制御回路部200は、視線の検出値として視線R1およびL1を受信した場合、両者の交点である注視点N1を特定する。一方、視線R2およびL2を受信した場合も、両者の交点である注視点N2(不図示)を特定する。制御回路部200は、特定した注視点N1に基づき、ユーザUの視線方向N0を検出する。制御回路部200は、たとえば、ユーザUの右目Rと左目Lとを結ぶ直線の中点と、注視点N1とを通る直線の伸びる方向を、視線方向N0として検出する。視線方向N0は、ユーザUが両目により実際に視線を向けている方向である。視線方向N0はまた、視界領域23に対してユーザUが実際に視線を向けている方向でもある。
HMDシステム100は、HMDシステム100を構成するいずれかの要素に、マイクおよびスピーカを備えていてもよい。これにより、ユーザは仮想空間2内に対して、音声による指示を与えることができる。また、仮想空間内の仮想テレビにテレビ番組の放送を受信するために、HMDシステム100はいずれかの要素にテレビジョン受像機を含んでいてもよい。また、ユーザが取得した電子メール等を表示させるための、通信機能等を含んでいてもよい。
(コントローラ300)
図7は、コントローラ300の構成を表す図である。コントローラ300は、ユーザの身体の一部の動きを検知することにより、仮想オブジェクトの動きを制御するために用いる装置の一例である。図1および図7に示すように、コントローラ300は、ユーザが右手に持って使用する右コントローラ320と、ユーザが左手に持って使用する左コントローラ330とからなる。右コントローラ320および左コントローラ330は、それぞれ別体の装置として構成される。ユーザは、右コントローラ320を持った右手と、左コントローラ330を持った左手とを、相互に自由に動かすことができる。なお、ユーザの頭部以外である身体の一部の動きを検知するための方法は、当該身体の一部に装着されるセンサを含むコントローラを用いる例に限られず、画像認識、その他任意の物理的、光学的な手法等を適用できる。例えば、外部カメラを用いてユーザの身体の一部の初期位置を特定し、継続的にユーザの身体の一部の位置を特定することにより、ユーザの頭部以外である身体の一部の動きを検知できる。以下の説明においては、コントローラ300を用いたユーザの頭部以外である身体の一部の動きの検知について詳述する。
図1および図7に示すように、右コントローラ320および左コントローラ330は、それぞれ、操作ボタン302、赤外線LED(Light Emitting Diode)304、センサ306、およびトランシーバ308を備えている。後述するように、右コントローラ320および左コントローラ330は、赤外線LED304およびセンサ306のうちいずれか一方のみを備えていてもよい。
操作ボタン302は、コントローラ300に対するユーザからの操作入力を受け取るように構成された複数のボタン群である。本実施形態では、操作ボタン302は、プッシュ式ボタン、トリガー式ボタン、およびアナログスティックを含む。
プッシュ式ボタンは、親指で下向きに押下する動作によって操作するように構成されたボタンである。右コントローラ320は、プッシュ式ボタンとして、天面322上に親指ボタン302aおよび302bを備えている。左コントローラ330は、プッシュ式ボタンとして、天面332上に2つの親指ボタン302cおよび302dを備えている。親指ボタン302aおよび302bは、いずれも右手の親指によって操作(押下)される。親指ボタン302cおよび302dは、いずれも左手の親指によって操作(押下)される。
トリガー式ボタンは、人差し指または中指で引き金を引くような動作によって操作するように構成されたボタンである。右コントローラ320は、トリガー式ボタンとして、グリップ324の前面部分に人差し指ボタン302eを備えており、さらに、グリップ324の側面部分に中指ボタン302fを備えている。左コントローラ330は、トリガー式ボタンとして、グリップ334の前面部分に人差し指ボタン302gを備えており、さらに、グリップ334の側面部分に中指ボタン302hを備えている。人差し指ボタン302e、中指ボタン302f、人差し指ボタン302g、および中指ボタン302hは、それぞれ右手の人差し指、右手の中指、左手の人差し指、および左手の中指によって操作(押下)される。
右コントローラ320は、親指ボタン302aおよび302b、人差し指ボタン302e、ならびに中指ボタン302fの押下状態をそれぞれ検出し、これらの検出値を制御回路部200に出力する。一方、左コントローラ330は、親指ボタン302cおよび302d、人差し指ボタン302g、ならびに中指ボタン302hの押下状態をそれぞれ検出し、これらの検出値を制御回路部200に出力する。
本実施形態では、右コントローラ320および左コントローラ330の各ボタンの押下状態の検出値は、0から1のいずれかの値を取り得る。たとえば、ユーザが親指ボタン302aをまったく押下していない場合、親指ボタン302aの押下状態として「0」が検出される。一方、ユーザが親指ボタン302aを完全に(最も深く)押下している場合、親指ボタン302aの押下状態として「1」が検出される。
アナログスティックは、所定のニュートラル位置から360°任意の方向へ傾けて操作することが可能なスティック型のボタンである。右コントローラ320の天面322上にアナログスティック302iが設けられ、左コントローラ330の天面332上にアナログスティック302jが設けられる。アナログスティック302iおよび302jは、それぞれ右手および左手の親指によって操作される。
右コントローラ320および左コントローラ330は、それぞれ、グリップ(324および334)の両側面から天面(322および332)とは反対側の方向へ延びて半円状のリングを形成するフレーム326および336を備えている。各フレーム326および336の外表面には、複数の赤外線LED304が埋め込まれている。複数(たとえば10個程度)の赤外線LED304が、フレーム326、336の円周方向に沿って一列に並んで設けられる。フレーム326および336の円周方向に沿って、複数列(たとえば2列)の赤外線LED304が配置されていてもよい。
ユーザがコントローラ300を握る際、ユーザの各指はグリップ(324または334)とフレーム(326または336)との間にある。したがって、各フレーム326および336の外表面に配置された赤外線LED304は、ユーザの手または指によって覆い隠されてしまうことはない。フレーム326および336の外表面に加えて、さらに、グリップ324および334の表面のうちユーザの指で隠されない部分にも、赤外線LED304が設けられていてもよい。赤外線LED304は、コンピュータゲームのプレイ中に赤外線を発光する。赤外線LED304から発せられた赤外光は、右コントローラ320および左コントローラ330のそれぞれの位置および傾きを検出するために利用される。
右コントローラ320および左コントローラ330は、赤外線LED304の代わりに、または赤外線LED304に加えて、さらにセンサ306を内蔵する。センサ306は、たとえば磁気センサ、角速度センサ、若しくは加速度センサのいずれか、またはこれらの組み合わせであってよい。センサ306によっても、右コントローラ320および左コントローラ330の位置および傾きを検出することができる。
センサ306は、ユーザが右コントローラ320および左コントローラ330をそれぞれ右手および左手で持って動かした際、右コントローラ320および左コントローラ330の向きおよび動きに応じた値(磁気、角速度、または加速度の値)を、出力する。制御回路部200は、センサ306からの出力値を適宜の方法によって加工することによって、右コントローラ320および左コントローラ330のそれぞれの位置および傾きを検出することができる。
トランシーバ308は、右コントローラ320および左コントローラ330と、制御回路部200との間でデータを送受信するように構成される。トランシーバ308は、ユーザが操作ボタン302を介して右コントローラ320または左コントローラ330に与えた操作入力に基づくデータを、制御回路部200へ送信する。また、トランシーバ308は、赤外線LED304の発光を右コントローラ320または左コントローラ330に指示する命令を、制御回路部200から受信する。さらに、トランシーバ308は、センサ306によって検出した各種の値に対応するデータを、制御回路部200へ送信する。
右コントローラ320および左コントローラ330は、ユーザの手に振動による触覚フィードバックを伝えるためのバイブレータを備えていてもよい。この構成では、トランシーバ308は、上述した各データの送受信に加えて、バイブレータに触覚フィードバックを行わせるための命令を制御回路部200から受信することができる。トランシーバ308は、無線通信によってデータを送受信するように構成されるのが好適である。この構成では、右コントローラ320および左コントローラ330に有線通信用のケーブルが接続されないので、ユーザは、右コントローラ320を持った右手および左コントローラ330を持った左手を、より自由にそれぞれ動かせる。
コントローラセンサ140は、右コントローラ320および左コントローラ330の動きを検出するためのポジション・トラッキング機能を有する。コントローラセンサ140は、この機能によって、現実空間内における右コントローラ320および左コントローラ330の位置および傾きを検出する。この検出を実現するために、コントローラセンサ140は、右コントローラ320および左コントローラ330の赤外線LED304から発せられた赤外光を、それぞれ検出する。コントローラセンサ140は、たとえば、赤外波長領域において画像を撮像する赤外カメラを備えており、この赤外カメラによって撮像した画像のデータに基づき、右コントローラ320および左コントローラ330の位置および傾きを検出する。
赤外カメラによって撮像された画像は、右コントローラ320および左コントローラ330の表面に埋め込まれている多数の赤外線LED304の配置を反映した明暗画像である。ある1つの撮像画像には、互いに左右に離れた2つの明点の集団が含まれ得る。2つの集団のうち左側の集団は、ユーザが右手で持っている右コントローラ320の赤外線LED304に対応する。右側の集団は、ユーザが左手で持っている左コントローラ330の赤外線LED304に対応する。コントローラセンサ140は、左側の集団を構成している明点の並んでいる方向から、右コントローラ320の傾きを検出する。たとえば、明点が撮像画像内で横方向(即ち水平方向)に並んでいる場合、右コントローラ320の傾きを、フレーム326が水平に保持された傾きとして検出すればよい。また、撮像画像内で明点の並んでいる方向が横方向からある角度だけ斜めになっている場合、右コントローラ320の傾きを、フレーム326が水平から当該角度だけ傾いた傾きとして検出すればよい。同様に、コントローラセンサ140は、撮像画像内における右側の集団を構成している明点の並んでいる方向から、左コントローラ330の傾きを検出する。
コントローラセンサ140は、撮像画像内の明点(赤外線LED304)を識別することによって、右コントローラ320および左コントローラ330の位置をそれぞれ検出する。たとえば、撮像画像から検出したされた2つの明点の集団のうち、左側の集団を構成している複数の明点の重心位置を、右コントローラ320の位置として検出する。さらに、右側の集団を構成している複数の明点の重心位置を、左コントローラ330の位置として検出する。
コントローラセンサ140の代わりに、右コントローラ320および左コントローラ330が、センサ306を用いて自身の位置および傾きを検出してもよい。この場合、たとえば、右コントローラ320の三軸角速度センサ(センサ306)が、右コントローラ320の3つの直交する各軸周りの回転を検出する。右コントローラ320は、各検出値に基づき、右コントローラ320がどちらの方向にどれだけ回転したかを検出し、さらに、逐次検出した回転方向と回転量とを累積することによって、右コントローラ320の傾きを算出する。同様に、左コントローラ330は、左コントローラ330の三軸角速度センサ(センサ306)からの検出値を用いて、左コントローラ330の傾きを算出すればよい。右コントローラ320および左コントローラ330は、三軸角速度センサの検出値に加えて、たとえば三軸磁気センサおよび/または三軸加速度センサからの検出値を併用してもよい。
詳細な説明は省略するが、右コントローラ320は、三軸角速度センサ(センサ306)からの検出値を用いて、右コントローラ320の位置を検出することができる。また、左コントローラ330は、三軸角速度センサ(センサ306)からの検出値を用いて、左コントローラ330の位置を検出することができる。
(制御回路部200の機能的構成)
図8は、制御回路部200の機能的構成を示すブロック図である。制御回路部200は、HMDセンサ120、コントローラセンサ140、注視センサ130、およびコントローラ300から受信した各種のデータを用いることによって、ユーザに提供される仮想空間2を制御すると共に、HMD110のディスプレイ112への画像表示を制御する。図8に示すように、制御回路部200は、検出部210、表示制御部220、仮想空間制御部230、記憶部240、および通信部250を備えている。制御回路部200は、図2に示す各ハードウェアの協働によって、検出部210、表示制御部220、仮想空間制御部230、記憶部240、および通信部250として機能する。検出部210、表示制御部220、および仮想空間制御部230は、主としてプロセッサおよびメモリの協働によってその機能が実現され得る。記憶部240は、主としてメモリおよびストレージの協働によってその機能が実現され得る。通信部250は、主としてプロセッサおよび通信インターフェースの協働によってその機能が実現され得る。
検出部210は、制御回路部200に接続される各種のセンサ(HMDセンサ120等)から検出値を受信する。また、必要に応じて、受信した検出値を用いた所定の処理を実行する。検出部210は、HMD検出部211、視線検出部212、およびコントローラ検出部213を備えている。HMD検出部211は、HMD110およびHMDセンサ120から検出値をそれぞれ受信する。視線検出部212は、注視センサ130から検出値を受信する。コントローラ検出部213は、コントローラセンサ140、右コントローラ320、および左コントローラ330から、それぞれの検出値を受信する。
表示制御部220は、HMD110のディスプレイ112への画像表示を制御する。表示制御部220は、仮想カメラ制御部221、視界領域決定部222、および視界画像生成部223を備えている。仮想カメラ制御部221は、仮想空間2内に仮想カメラ1を配置すると共に、仮想空間2内における仮想カメラ1の挙動を制御する。視界領域決定部222は、視界領域23を決定する。視界画像生成部223は、決定された視界領域23に基づき、ディスプレイ112に表示される視界画像26を生成する。
仮想空間制御部230は、ユーザに提供される仮想空間2を制御する。仮想空間制御部230は、仮想空間規定部231、仮想手制御部232、領域特定部233、および接触判定部234を備えている。
仮想空間規定部231は、ユーザに提供される仮想空間2を表す仮想空間データを生成することによって、HMDシステム100における仮想空間2を規定する。仮想手制御部232は、ユーザによる右コントローラ320および左コントローラ330の操作に応じたユーザの各仮想手(仮想右手および仮想左手)を仮想空間2内に配置すると共に、仮想空間2内における各仮想手の挙動を制御する。領域特定部233は、仮想空間26におけるオブジェクト、すなわち仮想オブジェクトに、ユーザ操作の対象となる操作対象オブジェクト(たとえば仮想手)との接触を判定するための判定領域を設定する。接触判定部234は、前記判定領域と前記操作対象オブジェクトとの位置関係に基づいて、前記判定領域が設定される前記仮想オブジェクトと前記操作対象オブジェクトとの接触を判定する。
記憶部240は、制御回路部200が仮想空間2をユーザに提供するために用いる各種のデータを格納している。記憶部240は、雛形格納部241およびコンテンツ格納部242を備えている。雛形格納部241は、仮想空間2の雛形を表す各種の雛形データを格納している。コンテンツ格納部242は、仮想空間2において再生可能な各種のコンテンツを格納している。
雛形データは、仮想空間2の空間構造を規定する空間構造データを有する。空間構造データは、たとえば、中心21を中心とする360°の全天球の空間構造を規定するデータである。雛形データは、仮想空間2のXYZ座標系を規定するデータをさらに有する。雛形データは、天球を構成する各メッシュのXYZ座標系における位置を特定する座標データをさらに有する。また、雛形データは、仮想空間2内に仮想オブジェクトを配置可能であるか否かを示すフラグをさらに有していてもよい。
コンテンツは、仮想空間2において再生可能なコンテンツである。本実施形態では、このコンテンツはゲームコンテンツである。コンテンツは、ゲームの背景画像、および、ゲームに登場する仮想オブジェクト(キャラクタ、アイテム等)を規定するデータを少なくとも有する。各コンテンツには、HMD110の初期状態(起動時)にユーザに見せる画像を向いた初期方向が、予め規定されている。
通信部250は、ネットワークNWを介して外部機器400(たとえばゲームサーバ)との間でデータを送受信する。
(仮想空間2の提供処理)
図9は、HMDシステム100が仮想空間2をユーザに提供する処理の流れを示すシーケンス図である。仮想空間2は、基本的に、HMD110および制御回路部200の協働によってユーザに提供される。図8に示す処理が開始されると、まず、ステップS1において、仮想空間規定部231が、ユーザに提供される仮想空間2を表す仮想空間データを生成することによって、仮想空間2を規定する。生成の手順は次の通りである。まず仮想空間規定部231は、仮想空間2の雛形データを雛形格納部241から取得することによって、仮想空間2の原型を定義する。仮想空間規定部231は、さらに、仮想空間2において再生されるコンテンツを、コンテンツ格納部242から取得する。本実施形態では、このコンテンツはゲームコンテンツである。
仮想空間規定部231は、取得した雛形データに、取得したコンテンツを適合することによって、仮想空間2を規定する仮想空間データを生成する。仮想空間規定部231は、仮想空間データにおいて、仮想空間2の天球を構成する各メッシュの管理データに、コンテンツに含まれる背景画像を構成する各部分画像を適宜関連付ける。仮想空間規定部231は、コンテンツに規定される初期方向を仮想空間2のXYZ座標系におけるZ方向に合致させるように、各部分画像と各メッシュとを関連付けることが好ましい。
仮想空間規定部231は、さらに、必要に応じて、コンテンツに含まれる各仮想オブジェクトの管理データを、仮想空間データに追加する。その際、各管理データに、対応する仮想オブジェクトが仮想空間2において配置される位置を表す座標を設定する。これにより各仮想オブジェクトが、仮想空間2における当該座標の位置にそれぞれ配置される。
その後、ユーザによってHMD110が起動されると、ステップS2において、HMDセンサ120が、HMD110の初期状態における位置および傾きを検出して、ステップS3において、検出値を制御回路部200に出力する。HMD検出部211は、この検出値を受信する。この後、ステップS4において、仮想カメラ制御部221は、仮想空間2において仮想カメラ1を初期化する。
初期化の手順は次の通りである。まず仮想カメラ制御部221は、仮想空間2内における初期位置(図4における中心21等)に、仮想カメラ1を配置する。次に、仮想空間2における仮想カメラ1の向きを設定する。その際、仮想カメラ制御部221は、HMDセンサ120からの検出値に基づき初期状態のHMD110のuvw視野座標系を特定すると共に、HMD110のuvw視野座標系に一致するuvw視野座標系を仮想カメラ1に設定することによって、仮想カメラ1の向きを設定すればよい。仮想カメラ制御部221は、仮想カメラ1にuvw視野座標系を設定する際、仮想カメラ1のロール方向(w軸)をXYZ座標系のZ方向(Z軸)に適合させる。具体的には、仮想カメラ制御部221は、仮想カメラ1のロール方向をXZ平面に投影して得られる方向を、XYZ座標系のZ方向に一致させると共に、XZ平面に対する仮想カメラ1のロール方向の傾きを、水平面に対するHMD110のロール方向の傾きに一致させる。このような適合処理によって、初期状態の仮想カメラ1のロール方向がコンテンツの初期方向に適合されるので、コンテンツの再生開始後におけるユーザが最初に向く水平方向の向きを、コンテンツの初期方向に一致させることができる。
仮想カメラ1の初期化処理が終わると、視界領域決定部222は、仮想カメラ1のuvw視野座標系に基づき、仮想空間2における視界領域23を決定する。具体的には、仮想カメラ1のuvw視野座標系のロール方向(w軸)をユーザの基準視線5として特定し、この基準視線5に基づき視界領域23を決定する。ステップS5において、視界画像生成部223は、仮想空間データを処理することによって、仮想空間2に展開される仮想空間画像22の全体のうち、仮想空間2における視界領域23に投影される部分に相当する視界画像26を生成(レンダリング)する。ステップS6において、視界画像生成部223は、生成した視界画像26を初期視界画像としてHMD110に出力する。ステップS7において、HMD110は、受信した初期視界画像をディスプレイ112に表示する。これによりユーザは初期視界画像を視認する。
その後、ステップS8において、HMDセンサ120が、HMD110の現在の位置および傾きを検出して、ステップS9において、これらの検出値を制御回路部200に出力する。HMD検出部211は、各検出値を受信する。仮想カメラ制御部221は、HMD110の位置および傾きの検出値に基づき、HMD110における現在のuvw視野座標系を特定する。さらに、ステップS10において、仮想カメラ制御部221は、XYZ座標系におけるuvw視野座標系のロール方向(w軸)を、HMD110の視界方向として特定する。
本実施形態では、ステップS11において、仮想カメラ制御部221が、特定したHMD110の視界方向を、仮想空間2におけるユーザの基準視線5として特定する。ステップS12において、仮想カメラ制御部221は、特定した基準視線5に基づき、仮想カメラ1を制御する。仮想カメラ制御部221は、基準視線5の位置(起点)および方向が仮想カメラ1の初期状態と同一であれば、仮想カメラ1の位置および方向をそのまま維持する。一方、基準視線5の位置(起点)および/または方向が、仮想カメラ1の初期状態から変化していれば、仮想空間2内における仮想カメラ1の位置および/または傾きを、変化後の基準視線5に応じた位置および/または傾きに変更する。また、制御後の仮想カメラ1に対してuvw視野座標系を再設定する。
ステップS13において、視界領域決定部222は、特定した基準視線5に基づき、仮想空間2における視界領域23を決定する。その後、ステップS14において、視界画像生成部223は、仮想空間データを処理することによって、仮想空間2に展開される仮想空間画像22の全体のうち、仮想空間2における視界領域23に投影(重畳)される部分である視界画像26を生成(レンダリング)する。ステップS15において、視界画像生成部223は、生成した視界画像26を更新用の視界画像としてHMD110に出力する。ステップS16において、HMD110は、受信した視界画像26をディスプレイ112に表示することによって、視界画像26を更新する。これにより、ユーザがHMD110を動かせば、それに連動して視界画像26が更新される。
(仮想空間ゲームの提供)
本実施形態では、ユーザは、右コントローラ320および左コントローラ330を操作することによって、仮想空間2内においてゲームをプレイする。このゲームでは、ユーザは、仮想空間2において、ユーザの頭部以外の身体の一部の動きに連動して動作する操作対象オブジェクトにより、他の仮想オブジェクトに触れることができる。詳細は後述するが、制御回路部200は、第1仮想オブジェクトが第2仮想オブジェクトと重畳しかつ第2仮想オブジェクトの前面に位置する重畳部分を含む場合、前記第1仮想オブジェクトと操作対象オブジェクトとの接触を判定するための判定領域を前記重畳部分と重畳するように設定し、前記第2仮想オブジェクトと操作対象オブジェクトとの接触を判定するための判定領域を前記重畳部分に重畳しないように設定する。これにより、ユーザは、直感的な操作により、第1仮想オブジェクトと第2仮想オブジェクトのうち、ユーザの所望の仮想オブジェクトに対して、操作対象オブジェクトを接触させることができる。前記ゲームは、たとえばカードゲームであってもよい。この場合、前記操作対象オブジェクトは仮想手であってもよく、前記第1仮想オブジェクトおよび前記第2仮想オブジェクトはユーザが選択できるカードの仮想オブジェクト(現実のカードを模した外観および形状の仮想オブジェクト)であってもよい。カードの仮想オブジェクトが複数重畳して配置されているような場合であっても、前記判定により、ユーザは、直感的な操作により、仮想手によって所望のカードの仮想オブジェクトに触れることができる。
図10は、仮想空間2におけるゲーム中の処理の流れを示すシーケンス図である。ステップS20において、仮想空間規定部231は、選択画面を構成する各部分画像をコンテンツ格納部242から読み出し、仮想空間データにおいて、仮想空間2の天球を構成する各メッシュの管理データに、前記各部分画像を関連付ける。また、仮想空間規定部231は、選択画面に含まれる各仮想オブジェクトの管理データを、仮想空間データに追加する。仮想オブジェクトの管理データには、仮想オブジェクトの形状、仮想空間2における位置(座標)および傾き(姿勢)を示すデータが含まれている。仮想空間規定部231は、管理データを仮想空間データに追加する際、各管理データに、対応する仮想オブジェクトが仮想空間2において配置される位置を表す座標を設定する。前記仮想オブジェクトは、ユーザが選択する対象となる仮想オブジェクトであり、たとえばカードである。ユーザは、この仮想オブジェクトに対して、操作対象オブジェクトを接触させることにより、接触させた当該仮想オブジェクトを選択することができる。以下では、操作対象オブジェクトが仮想手である例を説明する。
ステップS21において、コントローラセンサ140は、右コントローラ320の位置および傾き、ならびに、左コントローラ330の位置および傾きをそれぞれ検出する。ステップS22において、コントローラセンサ140は、各検出値を制御回路部200に送信する。コントローラ検出部213は、これらの検出値を受信する。
ステップS23において、コントローラ300は、各ボタンの押下状態を検出する。具体的には、右コントローラ320は、親指ボタン302a、人差し指ボタン302e、および中指ボタン302fの押下状態をそれぞれ検出する。一方、左コントローラ330は、親指ボタン302c、人差し指ボタン302g、および中指ボタン302hの押下状態をそれぞれ検出する。ステップS24において、右コントローラ320および左コントローラ330は、各検出値を制御回路部200に送信する。コントローラ検出部213は、これらの検出値を受信する。
ステップS25において、仮想手制御部232は、受信した各検出値を用いて、ユーザの各仮想手(仮想右手および仮想左手)を、仮想空間2に生成する。具体的には、仮想右手を規定するデータおよび仮想左手を規定するデータをそれぞれ生成し、仮想空間データに追加する。
仮想手制御部232は、右コントローラ320位置および傾きの検出値、ならびに右コントローラ320の各ボタンの押下状態の検出値を用いて、ユーザの仮想右手を規定する。その際、仮想空間2における仮想右手の位置として、グローバル座標系における右コントローラ320の位置を規定する。仮想手制御部232は、さらに、右コントローラ320の傾きの検出値に基づき、右コントローラ320に設定されたuvw視野座標系に連動するuvw視野座標系を仮想右手に設定することによって、仮想空間2内における仮想右手の傾きを規定する。
仮想手制御部232は、さらに、右コントローラ320の親指ボタン302a、人差し指ボタン302e、および中指ボタン302fの各検出値に基づき、仮想右手を構成する右親指、右人差し指、および右中指の表示状態を規定する。なお、右薬指および右小指の表示状態は、右中指に合致させるように規定する。
仮想手制御部232は、あるボタンの押下状態の検出値が「0」の場合、そのボタンに対応する仮想手の指の表示状態として、指を完全に伸ばした状態を規定する。一方、あるボタンの押下状態が「1」の場合、そのボタンに対応する仮想手の指の表示状態として、指を完全に折り曲げた状態を規定する。また、あるボタンの押下状態が「中間(0と1との間の値)」の場合、そのボタンに対応する仮想手の指の表示状態として、押下状態に応じた程度に指を折り曲げた表示状態を規定する。
同様に、仮想手制御部232は、左コントローラ330の各検出値に基づき、仮想空間2における仮想左手の位置、傾き、および各指の状態を規定する。これらの処理によって、仮想手制御部232は、仮想右手および仮想左手を、仮想空間2に配置する。
ステップS26〜ステップS34の処理は、図9のステップS8〜ステップS16と同様である。ステップS26〜ステップS34の処理により、ステップS20で仮想空間規定部231が生成した選択画面のうち、視界領域23に投影(重畳)される部分である視界画像がディスプレイ112に表示される。
ステップS35では、ステップS23と同様に、コントローラ300は、各ボタンの押下状態を検出する。ステップS36では、コントローラ300は、各検出値を制御回路部200に送信する。コントローラ検出部213は、これらの検出値を受信する。
ステップS37において、仮想空間規定部231は、前記受信した検出値に基づいて、仮想手に仮想オブジェクトをセットするための操作であるオブジェクトセット操作(第1操作)を検出したか否かを判定する。コントローラ300に対するどのような操作をオブジェクトセット操作とするかは予め決めておけばよい。たとえば、左コントローラ330の人差し指ボタン302gを押下する操作を、仮想左手に仮想オブジェクトをセットするためのオブジェクトセット操作としてもよい。
ステップS37において、仮想空間規定部231は、オブジェクトセット操作を検出したと判定した場合(ステップS37でYES)、仮想空間2における仮想手上(手のひら側が好ましい)に複数の仮想オブジェクトが重ねて配置された状態となるように、仮想空間データを更新する。たとえば、仮想オブジェクトOA〜ODを、上からOA、OB、OC、OCの順に仮想手上に配置する場合、仮想空間規定部231は、仮想オブジェクトODの位置を仮想手の直上の位置として仮想空間データを更新する。以下同様に、仮想オブジェクトOCの位置を仮想オブジェクトODの直上の位置とし、仮想オブジェクトOBの位置を仮想オブジェクトOCの直上の位置とし、仮想オブジェクトOAの位置を仮想オブジェクトOBの直上の位置として仮想空間データを更新する。
そして、視界画像生成部223は、前記更新後の仮想空間データに基づいて視界画像26を生成し(ステップS38)、生成した視界画像26を更新用の視界画像としてHMD110に出力する(ステップS39)。ステップS40において、HMD110は、受信した視界画像26をディスプレイ112に表示することによって、視界画像26を更新する。これにより、ユーザは、仮想手上に複数の仮想オブジェクトが重畳して配置された画像を視認する。
ステップS41では、ステップS35と同様に、コントローラ300は、各ボタンの押下状態を検出する。ステップS42では、コントローラ300は、各検出値を制御回路部200に送信する。コントローラ検出部213は、これらの検出値を受信する。
ステップS43において、仮想空間規定部231は、前記受信した検出値に基づいて、仮想手にセットされた仮想オブジェクトを広げる操作(第2操作)を検出したか否かを判定する。コントローラ300に対するどのような操作を、仮想オブジェクトを広げる操作とするかは予め決めておけばよい。たとえば、仮想左手上に仮想オブジェクトが配置された状態において、左コントローラ330の親指ボタン302cを完全に押下した後、アナログスティック302jを傾ける操作を、仮想オブジェクトを広げる操作としてもよい。また、たとえば、左コントローラ330の天面332をタッチパネルで構成した場合、該タッチパネルに対するスワイプ操作を、仮想オブジェクトを広げる操作としてもよい。この他にも、たとえば、仮想空間規定部231は、ユーザの親指の動きを光学的に検知した検知結果に基づき、ユーザの親指が仮想オブジェクトを広げるように動いたことを検出した場合に、仮想オブジェクトを広げる操作が行われたと判定してもよい。これにより、現実に手に持ったカードを広げるときと同じ感覚で親指を動かすという直感的な操作により、仮想空間2中のカードの仮想オブジェクトを広げることも可能になる。
ステップS43において、仮想空間規定部231は、仮想オブジェクトを広げる操作を検出したと判定した場合(ステップS43でYES)、仮想手上に重畳して配置されている複数の仮想オブジェクトが広げられた状態となるように、仮想空間データを更新する。なお、複数の仮想オブジェクトが広げられた状態とは、他の仮想オブジェクトによって仮想カメラ1の死角となっている、仮想オブジェクトの部分(他の仮想オブジェクトとの重畳部分)の面積が狭くなった状態である。たとえば、仮想手上に重畳配置された仮想オブジェクトがカードの仮想オブジェクトであれば、各仮想オブジェクトを扇状にずらした状態であってもよい。
ステップS44において、視界画像生成部223は、前記更新後の仮想空間データに基づいて視界画像26を生成し、ステップS45において、前記視界画像26を更新用の視界画像としてHMD110に出力する。ステップS46において、HMD110は、受信した視界画像26をディスプレイ112に表示することによって、視界画像26を更新する。これにより、ユーザは、仮想手上に複数の仮想オブジェクトが重なった状態で広げられた画像を視認する。
ステップS47において、領域特定部233は、仮想オブジェクトと仮想手との接触を判定する際に使用する判定領域を設定する。判定領域を設定する処理の詳細は、図12に基づいて後述する。
(表示する画像の例)
図10のステップS38において生成する視界画像26は、たとえば図11の(a)のような画像であってもよい。この例では、カードの仮想オブジェクトである仮想オブジェクトOAおよびOBが仮想左手OLに把持されている。仮想オブジェクトOAは、絵柄が正面(仮想カメラ1側)を向く配置となっているので、ユーザは仮想オブジェクトOAがどのようなカードであるかを認識することができる。一方、仮想オブジェクトOBは、仮想オブジェクトOAの背後に位置しており、その大部分が仮想オブジェクトOAによって死角となっているから、ユーザは仮想オブジェクトOBがどのようなカードであるかを認識することはできない。なお、仮想オブジェクトOBの背後にも複数の仮想オブジェクトが配置されているが、これらの仮想オブジェクトは仮想オブジェクトOAおよびOBに隠れており、表示されていない。
図10のステップS44において生成する視界画像26は、たとえば図11の(b)のような画像であってもよい。この例では、カードの仮想オブジェクトである仮想オブジェクトOA〜ODが仮想左手OLに把持されている。図11の(a)の状態と比べて、仮想手OL上における、仮想オブジェクトOA、OBの位置がそれぞれ変化しており、これにより仮想オブジェクトOA、OBの重畳部分の面積が狭くなっている。また、図11の(a)では仮想オブジェクトOA、OBの背後に隠れて視認できなかった仮想オブジェクトOC、ODについても視認できるようになっている。この結果、図11の(a)の画像では視認できなかった、仮想オブジェクトOB〜ODの左肩部分に表示されている数字を読み取ることができるようになっている。
(判定領域を設定する処理)
領域特定部233が判定領域を設定する処理(図10のステップS47)の詳細を図12に基づいて説明する。ステップS50において、領域特定部233は、各仮想オブジェクトの判定領域を設定する。前記判定領域は、仮想オブジェクトから仮想カメラ1に向かって延在する部分を少なくとも含むように、仮想オブジェクトの周囲の領域において設定する。領域特定部233は、設定した各判定領域を、対応する仮想オブジェクトと関連付けておく。なお、ステップS50で設定する判定領域については、図13に基づいて後述する。
ステップS51において、領域特定部233は、各仮想オブジェクトの重なりの状態、すなわち仮想カメラ1から見て、いずれの仮想オブジェクトがいずれの仮想オブジェクトに重なっているか、および重なっている仮想オブジェクトのいずれがより仮想カメラ1に近いかを特定する。具体的には、領域特定部233は、ステップS50で判定領域を設定した各仮想オブジェクトの仮想空間2における位置および姿勢と、仮想カメラ1のロール方向(図3のw軸方向であり、基準視線5の方向でもある)とに基づいて重なりの状態を特定する。
ステップS52において、領域特定部233は、S51において重なっていることが特定された仮想オブジェクト間の境界を特定する。なお、境界の特定については、図14および図15に基づいて後述する。そして、ステップS53において、領域特定部233は、各仮想オブジェクトについて、ステップS50で特定した判定領域のうち、ステップS52で特定した境界よりも外側の部分を排除する。なお、仮想オブジェクトの判定領域のうち、境界よりも外側の部分を排除するとは、境界よりも外側の部分は前記仮想オブジェクトの判定領域ではないとみなすことを意味する。これにより、各仮想オブジェクトの判定領域が確定し、判定領域を設定する処理は終了する。
(判定領域の設定例(重複排除前))
図12のステップS50で設定する判定領域は、たとえば、図13に示すように、仮想オブジェクトの上下左右方向にも延在していてもよい。図13には、仮想オブジェクトOAの周囲に判定領域JAを特定した例を示している。なお、図13では仮想カメラ1から見た仮想オブジェクトOAを平面的に示しているが、判定領域JAは、仮想オブジェクトOAの手前側(仮想カメラ1が位置している側)にも延在している、六面体状の領域である。また、図13では、1つの仮想オブジェクトOAとその判定領域JAのみを示しているが、選択対象となる各仮想オブジェクトについて、同様にして判定領域を設定する。なお、各仮想オブジェクトに設定する判定領域の形状や範囲は、各仮想オブジェクトに応じてそれぞれ異なるものとしてもよい。
図11の例のように一方の仮想手で仮想オブジェクトを把持した場合、ユーザは上側から仮想オブジェクトに触れようとする場合が多い。このため、判定領域JAは、図13の例のように、仮想オブジェクトOAの上側に位置する部分JA1を含むことが好ましい。ここで、上側とは、HMD100の視野座標系におけるヨー方向において、仮想オブジェクトOAよりも上側を意味する。これにより、ユーザは、上端側から仮想オブジェクトOAに容易に触れることができる。
また、判定領域JAは、図13の例のように、仮想オブジェクトOAの下端部から下側に向かって延在する部分JA2、および仮想オブジェクトOAの側端部から側方に向かって延在する部分JA3、JA4を含んでいてもよい。部分JA1〜JA4の広さは、ユーザが直感的に仮想オブジェクトOAを掴むことができるように設定することが好ましい。たとえば、図13のように、部分JA1の幅は、部分JA2の幅や、部分JA3、JA4の幅よりも長くしてもよく、部分JA3、JA4の幅は部分JA2の幅よりも長くしてもよい。これにより、仮想オブジェクトOAは上側からが最も触れやすくなり、次いで側方側からが触れやすくなる。なお、部分JA1の幅は、仮想オブジェクトOAの上辺から部分JA1の上端までの長さであり、部分JA2の幅は、仮想オブジェクトOAの下辺から部分JA2の下端までの長さであり、部分JA3の幅は、仮想オブジェクトOAの左辺から部分JA3の左端までの長さであり、部分JA4の幅は、仮想オブジェクトOAの右辺から部分JA4の右端までの長さである。また、仮想オブジェクトOAの背後に位置する他の仮想オブジェクトについても同様に、当該仮想オブジェクトの上側(HMD100のヨー方向において、当該仮想オブジェクトよりも上側)に位置する部分を含む判定領域を設定することが好ましい。
判定領域に、仮想オブジェクトの外縁から仮想オブジェクトの外側に向かって延在する部分を含める場合、いずれの方向に延在する部分を広くするかは予め決めておいてもよい。また、領域特定部233は、仮想オブジェクトの仮想空間2における姿勢を特定して、特定した姿勢に応じていずれの方向に延在する部分を広くするかを決定してもよい。この場合、領域特定部233は、仮想オブジェクトの姿勢変化に応じて、いずれの方向にどれだけ判定領域を延在させるかを変化させてもよい。
また、図11の例のように、一方の仮想手で下側が把持された仮想オブジェクトを、他方の仮想手で選ぶ場合には、領域特定部233は、仮想オブジェクトの把持されている側の端部(図11の例では下端部あるいは左下端部)と反対側の端部(上端部あるいは右上端部)から仮想オブジェクトの外側に向かって延在する部分がより広くなるように判定領域を設定してもよい。仮想オブジェクトにおいて、一方の仮想手によって把持されている側と反対側の端部には、前記一方の仮想手と干渉することなく他方の仮想手を近付けることができるから、前記の設定により、ユーザは一方の仮想手に把持された仮想オブジェクトに容易に触れることができる。
(境界の特定例)
図12のステップS52では、たとえば、図14のような境界を特定してもよい。図14の例では、仮想オブジェクトOB(第2仮想オブジェクト)の上に仮想オブジェクトOA(第1仮想オブジェクト)が重なっている。仮想オブジェクトOAにおける仮想オブジェクトOBとの重畳部分Aは、線分Aa、Ab、Ac、Ad、およびAeで規定される五角形の領域である。
この例では、領域特定部233は、仮想オブジェクトOAの外形を規定する輪郭線のうち、仮想オブジェクトOAと仮想オブジェクトOBを区切る輪郭線(仮想カメラ1から見て仮想オブジェクトOBに重畳する線分)、すなわち線分Aa、Abを特定する。そして、領域特定部233は、図14の(a)に示すように、線分Aa、Abのうち、仮想オブジェクトOBとの重なり部分が最も長い線分Aaを含む直線LAを特定する。直線LAは、仮想オブジェクトOAの外形を構成する4辺のうち、左側の長辺を含む直線であるとも言える。そして、領域特定部233は、この直線LAを通る平面を判定領域JAと判定領域JBとの境界と特定する。この平面は、仮想カメラ1のロール方向(図3のw軸方向であり、基準視線5の方向でもある)と平行であることが望ましい。これにより、仮想カメラ1から仮想オブジェクトOAが見える部分には判定領域JAを設定し、仮想カメラ1から仮想オブジェクトOBが見える部分には判定領域JBを設定することができる。
境界を特定した領域特定部233は、図14の(b)に示すように、仮想オブジェクトOAの周囲全周に特定されていた判定領域JA(図13参照)のうち、直線LAよりも左側(仮想オブジェクトOAの外側)の部分を排除する。つまり、領域特定部233には、直線LAよりも左側の部分は判定領域JAではないとみなす。これにより、判定領域JAは、直線LAよりも右側(仮想オブジェクトOA側)の部分が残る。つまり、領域特定部233は、仮想カメラ1から見て重畳部分Aに重畳する判定領域は、仮想オブジェクトOBよりも前面に位置する仮想オブジェクトOAの判定領域JA(第1領域)に設定する。このようにして設定された判定領域JAは、仮想カメラ1から見た平面内において、直線LAよりも仮想オブジェクトOB側には重畳していない。
一方、領域特定部233は、仮想オブジェクトOBの判定領域JBについては、直線LAよりも右側(重畳部分A側)の部分を排除する。つまり、領域特定部233は、直線LAよりも右側の部分は判定領域JBではないとみなす。これにより、判定領域JBには、直線LAよりも左側(仮想オブジェクトOB側)の部分が残る。つまり、領域特定部233は、仮想オブジェクトOAよりも背後に位置する仮想オブジェクトOBについては、仮想カメラ1から見て重畳部分Aに重畳しない判定領域JB(第2領域)を設定する。このようにして設定された判定領域JBは、仮想カメラ1から見た平面内において、直線LAよりも仮想オブジェクトOA側には重畳していない。
このように、領域特定部233は、複数の仮想オブジェクトが重なっている場合に、それら複数の仮想オブジェクトの判定領域が重畳しないように調整するので、ユーザは意図通りの仮想オブジェクトを直感的に選択することができる。
図14の例では、線分Abを通る境界は特定していないが、領域特定部233は、線分Abを通る境界を特定してもよい。図15の例では、図15の(a)に示すように、領域特定部233は、線分Aaを通る半直線LBと、線分Abを通る半直線LCを境界としている。この場合、図15の(b)に示すように、領域特定部233は、仮想オブジェクトOAの判定領域JAのうち、半直線LBよりも左側の部分と、半直線LCよりも下側の部分は排除し、半直線LBよりも右側かつ半直線LCよりも上側の部分を残している。一方、領域特定部233は、仮想オブジェクトOBの判定領域JBについては、半直線LBよりも右側の部分と、半直線LCよりも上側の部分は排除し、半直線LBよりも左側かつ半直線LCよりも下側の部分を残している。
図14の例は、図15の例と比べて境界の数が少ないため、判定領域の特定に要する演算処理の負荷が少なく済むという利点がある。一方、図15の例は、図14の例と比べて、仮想オブジェクトOBについて、その上方や側方から仮想手を近付けて選択することが容易になると共に、その下方から仮想手を近付けて選択することも容易になるという利点がある。なお、図11の例のように、その下側を仮想左手OLで把持した仮想オブジェクトOAおよび仮想オブジェクトOBを仮想右手で選択する場合、これらの仮想オブジェクトの下方の判定領域は、仮想左手OLの位置と重なるため重要度が低い。このため、この場合には、図14の例のように、仮想オブジェクトOAの下側の短辺に沿った境界の特定は行わないことが好ましい。
(判定領域の設定例(重複排除後))
図16には、広げた状態で仮想左手OLに把持されたカード型の仮想オブジェクトOA〜ODについて、領域特定部233が判定領域JA〜JDを設定した例を示している。仮想オブジェクトOAは、4つの仮想オブジェクトのうち、最も手前(仮想カメラ1側)に位置しており、仮想オブジェクトOB、OC、ODの順で位置が奥側(仮想カメラ1から遠い側)となる。
この例では、領域特定部233は、仮想オブジェクトOAと仮想オブジェクトOBの境界を、仮想オブジェクトOAの左側の長辺を通る平面と特定し、該平面より右側の領域を仮想オブジェクトOAの判定領域JAに設定する。また、領域特定部233は、仮想オブジェクトOBと仮想オブジェクトOCの境界を、仮想オブジェクトOBの左側の長辺を通る平面と特定し、該平面より右側であり、かつ仮想オブジェクトOAと仮想オブジェクトOBの境界である平面よりも左側の領域を仮想オブジェクトOBの判定領域JBに設定する。領域特定部233は、仮想オブジェクトOCについても同様に、仮想オブジェクトOCの左側の長辺を通る平面より右側であり、かつ仮想オブジェクトOBと仮想オブジェクトOCの境界である平面よりも左側の領域を仮想オブジェクトOCの判定領域JCに設定する。領域特定部233は、仮想オブジェクトODについては、仮想オブジェクトOCと仮想オブジェクトODの境界である平面よりも左側の領域を仮想オブジェクトODの判定領域JDに設定する。なお、判定領域間の境界となる前記平面は、前述のように、仮想カメラ1のロール方向(図3のw軸方向であり、基準視線5の方向でもある)と平行であることが望ましい。
ユーザは、右コントローラ320の現実空間における位置を移動させることにより、仮想空間2における仮想右手ORを移動させることができる。そして、ユーザは、仮想右手ORを仮想オブジェクトOA〜ODのうち所望の仮想オブジェクトに近付けて、仮想オブジェクトを掴む操作を右コントローラ320に対して行うことにより、所望の仮想オブジェクトを選択することができる。
(仮想オブジェクトを選択する際の処理)
領域特定部233が判定領域を設定した後、ユーザが仮想オブジェクトを選択する際の処理を図17に基づいて説明する。ステップS60において、接触判定部234は、仮想オブジェクトを選択するために使用する仮想手について、仮想オブジェクトとの接触を判定するための付随オブジェクトを生成する。たとえば、図16の例のように、仮想右手ORで仮想オブジェクトOA〜ODのいずれかを選択する場合には、接触判定部234は、仮想右手ORとオブジェクトOA〜ODとの接触を判定するための付随オブジェクトを生成する。付随オブジェクトは、仮想空間2において仮想手と連動して移動する仮想オブジェクトであり、その詳細は図18および図19に基づいて後述する。
ステップS61において、コントローラセンサ140は、右コントローラ320の位置および傾き、ならびに、左コントローラ330の位置および傾きをそれぞれ検出する。ステップS62において、コントローラセンサ140は、各検出値を制御回路部200に送信する。コントローラ検出部213は、これらの検出値を受信する。
ステップS63において、仮想手制御部232は、受信した各検出値を用いて、ユーザの各仮想手(仮想右手および仮想左手)の仮想空間2における位置および傾きを更新する。具体的には、仮想空間2における仮想右手の位置を、グローバル座標系における右コントローラ320の現在位置に更新する。また、仮想手制御部232は、右コントローラ320の傾きの検出値に基づき、仮想空間2内における仮想右手の傾きを更新する。同様に、仮想手制御部232は、左コントローラ330の各検出値に基づき、仮想空間2における仮想左手の位置および傾きを更新する。さらに、接触判定部234は、仮想手の位置と連動するように付随オブジェクトの位置を更新する。ステップS64において、視界画像生成部223は、仮想手の位置および傾きが更新された視界画像を生成してHMD110に出力し、ステップS65において、HMD110は、受信した視界画像をディスプレイ112に表示し、これによりユーザが視認する視界画像が更新される。
ステップS66において、接触判定部234は、付随オブジェクトが仮想オブジェクトの判定領域に入っているか否かを判定する。接触判定部234が、付随オブジェクトは判定領域に入っていないと判定した場合(ステップS66においてNO)、処理はステップS61に戻る。一方、接触判定部234が付随オブジェクトが判定領域に入っていると判定した場合(ステップS66においてYES)、コントローラ300がステップS67において検出し、ステップS68において送信した、各ボタンの押下状態を示す各検出値に基づき、掴む操作を検出したか否かを判定する(ステップS69)。どのような操作を掴む操作とするかは特に限定されないが、たとえば仮想手の親指と、人差し指および中指とが接触するまで各指に対応するボタンを押下する操作を掴む操作としてもよい。
接触判定部234が掴む操作が行われていないと判定した場合(ステップS69においてNO)、処理はステップS61に戻る。一方、接触判定部234は、掴む操作が行われたと判定した場合(ステップS69においてYES)、付随オブジェクトが複数の仮想オブジェクトの判定領域に入っているか否かを判定する(ステップS70)。また、仮想手制御部232は、仮想空間26において、仮想手に掴む動作を実行させる。なお、図示を省略しているが、仮想手による掴む動作は視界画像26に反映される。
付随オブジェクトが複数の判定領域に入っていると判定した場合(ステップS70においてYES)、接触判定部234は、当該複数の判定領域のうち、付随オブジェクトとの重なり体積がより大きい判定領域を特定する。なお、前記重なり体積は、付随オブジェクトの内部であり、かつ判定領域の内部である領域の体積である。たとえば、接触判定部234は、付随オブジェクトの一部が第1の判定領域に含まれ、他の一部が第2の判定領域に含まれている場合、第1の判定領域に含まれる前記一部と、第2の判定領域に含まれる前記他の一部のいずれの体積が大きいかを判定する。
そして、重なり体積がより大きいと特定した判定領域に対応する仮想オブジェクトが掴まれたと判定する(ステップS71)。一方、付随オブジェクトが1つの判定領域に入っていると判定した場合(ステップS70においてNO)、接触判定部234は、当該判定領域に対応する仮想オブジェクトが掴まれたと判定し(ステップS72)、当該仮想オブジェクトと、当該付随オブジェクトに対応する仮想手とを関連付ける。たとえば、掴まれた仮想オブジェクトと、掴んだ仮想手とを関連付けて、仮想手が移動したときには仮想オブジェクトも仮想手と連動して移動させてもよい。
ステップS73において、コントローラ300は、各ボタンの押下状態を示す各検出値を検出する。ステップS74において、コントローラ300は、各検出値を制御回路部200に送信する。ステップS75において、接触判定部234は、各ボタンの押下状態を示す各検出値に基づき、掴み状態が解除されたか否かを判定する。たとえば仮想オブジェクトを掴んでいる状態(たとえば仮想手の親指と、人差し指および中指とが接している状態)において、仮想手の親指と、人差し指および中指とが離れるまで各指に対応するボタンの押下状態を「0」に近付ける(曲げていた仮想手の指を伸ばす)操作を、掴み状態を解除する操作としてもよい。
接触判定部234が、掴み状態が維持されていると判定した場合(ステップS75においてNO)、処理はステップS73に戻る。一方、接触判定部234は、掴み状態が解除されたと判定した場合(ステップS75においてYES)、仮想オブジェクトが仮想手から離されたと判定し(ステップS76)、当該仮想オブジェクトと当該付随オブジェクトに対応する仮想手との関連付けを解消する。また、仮想手制御部232は、仮想空間26において、仮想手に掴んでいた仮想オブジェクトを離す動作を実行させる。なお、図示を省略しているが、仮想手による仮想オブジェクトを離す動作は視界画像26に反映される。仮想オブジェクトが離されたと判定した後の処理は、ゲーム内容に応じたものとすればよい。たとえば、視界画像生成部223は、一方の仮想手に掴まれており、当該仮想手から離された仮想オブジェクトが、再度、他方の仮想手(仮想オブジェクトがセットされた側の仮想手)上に戻る動画像を視界画像26としてHMD110に表示させてもよい。この後、処理はステップS61に戻ってもよい。
(付随オブジェクトの例)
図18には、仮想オブジェクトOA、OBとこれらの判定領域JA、JBを図示すると共に、仮想右手ORの付随オブジェクトORAを図示している。仮想オブジェクトOA、OBを把持する仮想左手OLは図示を省略している。なお、視界画像生成部223が付随オブジェクトORAを含む視界画像26を生成する必要はなく、接触判定部234が付随オブジェクトORAの位置および範囲を特定していればよい。また、図18では、仮想右手ORの付随オブジェクトORAを例示しているが、仮想左手OLによって仮想オブジェクトを選択する場合には、接触判定部234が、付随オブジェクトORAと同様にして、仮想左手OLに対応する付随オブジェクトを生成する。後述の図19および図20の例においても同様である。
付随オブジェクトORAは、球体状のオブジェクトであり、接触判定部234は、仮想右手ORと付随オブジェクトORAが所定の位置関係となるような位置に付随オブジェクトORAを生成する。なお、付随オブジェクトORAの形状は特に限定されず、たとえば多面体であってもよい。付随オブジェクトORAの初期位置は、仮想右手ORの位置に基づいて特定することができる。たとえば、接触判定部234は、仮想右手ORの腕の延在方向に沿った位置であって、手首から所定距離の位置に付随オブジェクトORAを配置してもよい。
また、接触判定部234は、仮想右手ORの位置が移動した場合には、移動後の仮想右手ORと付随オブジェクトORAの位置関係が、前記所定の位置関係となる状態を維持するように、付随オブジェクトORAの位置を更新する。これにより、図18に示すように、仮想右手ORの位置が移動した場合に、付随オブジェクトORAの位置もこれに連動して移動し、付随オブジェクトORAが仮想右手ORから一定の位置に配置された状態が維持される。
接触判定部234は、付随オブジェクトの位置を、仮想手の一部(たとえば指)を動かす動作に応じて移動させてもよいし、移動させなくてもよい。たとえば、図19に記載した、仮想右手ORと付随オブジェクトORAの例のうち、(a)の例では、仮想右手ORによって掴む動作が行われた場合に、接触判定部234は、仮想右手ORの指先の位置に連動して付随オブジェクトORAの位置を変化させている。言い換えれば、接触判定部234は、掴む動作中の仮想右手ORの動きに応じて、付随オブジェクトORAの位置を変動させている。一方、(b)の例では、接触判定部234は、仮想右手ORによる掴む動作の前後で付随オブジェクトORAの位置を維持させている。仮想右手ORで掴む動作を行うことによって仮想オブジェクトを選択する場合、掴む動作中に付随オブジェクトORAの位置を変化させないことが好ましい。掴む動作中に付随オブジェクトの位置が変わると、選択対象の仮想オブジェクトがユーザの意図に反して変わってしまう可能性があるからである。一方、仮想右手ORの指先で摘む動作を行うことによって仮想オブジェクトを選択する場合には、仮想右手ORの指先の位置に連動して付随オブジェクトORAの位置を変化させることが好ましい。また、接触判定部234は、(c)の例のように、仮想右手ORの内部に付随オブジェクトORAを配置してもよい。仮想右手ORの内部領域のうち、いずれの位置に付随オブジェクトORAを配置するかは特に限定されないが、接触判定部234は、たとえば仮想右手ORの内部領域のうち指先の位置に付随オブジェクトORAを配置してもよい。この場合、接触判定部234は、仮想右手ORの指先の微妙な動きに応じた接触判定を行うことができる。さらに、ユーザが視認できる仮想右手ORの指先部分を接触判定部234が接触判定に用いることになるから、ユーザは直感的に仮想オブジェクトを選択することが可能になる。これらの例は、仮想右手ORの一部を、仮想オブジェクトとの接触を判定するための判定領域とした例であるとも言える。また、接触判定部234は、付随オブジェクトORAの一部が仮想右手ORの内部となり、他の一部が仮想右手ORAの外部となる位置に付随オブジェクトORAを配置してもよい。
(付随オブジェクトが複数の判定領域に入った場合の判定の例)
図20には、仮想オブジェクトOA、OBとこれらの判定領域JA、JBを図示するとともに、仮想右手ORの付随オブジェクトORAを図示している。仮想オブジェクトOA、OBを把持する仮想左手OLと、付随オブジェクトORAに対応する仮想右手ORは図示を省略している。この例では、付随オブジェクトORAは、判定領域JA、JBの両方に入っているので、図17のステップS71で説明したように、接触判定部234は、判定領域JAとJBのうち、付随オブジェクトORAとの重なり体積がより大きい判定領域を特定する。
図20の例では、判定領域JAとJBの境界は、直線LAを通る平面であり、付随オブジェクトORAのうち、前記平面より左側の部分ORA1は判定領域JBに含まれており、前記平面より右側の部分ORA2は判定領域JAに含まれている。また、球体状の付随オブジェクトORAの中心をCで示している。この例では、接触判定部234は、部分ORA1と部分ORA2の体積をそれぞれ算出して、算出した体積を比較することにより、付随オブジェクトORAとの重なり体積がより大きい判定領域を特定することができる。
なお、図20の例では、直線LAを通る平面により球体状の付随オブジェクトORAが2つの部分ORA1、ORA2に切り分けられており、部分ORA1の全体が判定領域JBに含まれ、部分ORA2の全体が判定領域JAに含まれている。よって、接触判定部234は、付随オブジェクトORAの中心Cが該平面に対してどちらの判定領域側に位置しているかを判定することにより、付随オブジェクトORAとの重なり体積がより大きい判定領域を特定することができる。つまり、図示の例では、接触判定部234は、付随オブジェクトORAの中心Cが、直線LAを通る平面よりも左側(判定領域JB側)であることから、判定領域JBの方が、付随オブジェクトORAとの重なり体積がより大きいと特定することができる。このように、付随オブジェクトORAを球体状とすることにより、重なり体積のより大きい判定領域を簡易な演算で算出することができる場合がある。
なお、付随オブジェクトが3つ以上の判定領域に入っている場合には、接触判定部234は、付随オブジェクトと各判定領域との重なり体積をそれぞれ算出することにより、重なり体積が最も大きい判定領域を特定することができる。また、接触判定部234は、付随オブジェクトを用いずに仮想オブジェクトと仮想手との接触を判定してもよい。この場合、仮想手が複数の仮想オブジェクトの判定領域に入っていれば、接触判定部234は、仮想手と各仮想オブジェクトとの重なり体積をそれぞれ算出することにより、重なり体積が最も大きい判定領域を特定することができる。ただし、仮想手は形状が複雑な仮想オブジェクトであり、仮想手と判定領域の重なり体積の演算は複雑なものとなるから、演算量を少なく抑えるという観点からは、付随オブジェクトを用いた判定を採用することが好ましい。
(仮想オブジェクトが掴まれたと判定した場合の表示)
図17のステップS72において、接触判定部234が、仮想オブジェクトが掴まれたと判定した場合の表示について図21に基づいて説明する。図21の例では、仮想左手OLに4つのカードの仮想オブジェクトOA〜ODが把持されており、これら仮想オブジェクトの判定領域が、判定領域JA〜JDである。判定領域JAの左側の側面が、判定領域JAとJBの境界面であり、判定領域JBの左側の側面が、判定領域JBと判定領域JCとの境界面であり、判定領域JCの左側の側面が、判定領域JCと判定領域JDとの境界面である。また、仮想右手ORの近傍には付随オブジェクトORAが位置している。なお、判定領域JA〜JDと付随オブジェクトORAは、視界画像26として表示する必要はない。
図示しない右コントローラ320によって掴む操作が行われたことにより、仮想右手ORは、仮想オブジェクトを掴んでいる形状(親指と中指とが接するまで指が折り曲げられた形状)となっている。仮想右手ORに付随する付随オブジェクトORAは、判定領域JBとJCの両方に含まれているが、判定領域JBとの重なり体積の方がより大きいため、この例では、接触判定部234は、仮想右手ORが仮想オブジェクトOBを掴んだと判定している。
この場合、視界画像生成部223は、図示のように、掴んだと判定された仮想オブジェクトOBを、他の仮想オブジェクトOA、OC、ODよりも上方かつ、上面側に移動させた視界画像26を生成し、表示させてもよい。これにより、仮想オブジェクトOBが掴まれたことをユーザに明確に認識させることができ、また、仮想オブジェクトOBに記載された絵や文字などをユーザに確認させることができる。さらに、図示の例では、掴まれた仮想オブジェクトOBの周囲に枠線FRを表示しており、これにより、仮想オブジェクトOBが掴まれたことをユーザにより明確に認識させている。
枠線FRは、付随オブジェクトが判定領域に入ったときに表示させてもよい。この場合、図17の処理では、接触判定部234が、付随オブジェクトが判定領域に入った(ステップS66でYES)と判定した後に、付随オブジェクトが複数の判定領域に入っているか否かを判定すればよい。そして、接触判定部234が、付随オブジェクトが複数の判定領域に入っていると判定した場合に、視界画像生成部223が、重なり体積がより大きい判定領域に対応する仮想オブジェクトに対して枠線FRが付された視界画像26を生成すればよい。この場合、ユーザは、所望の仮想オブジェクト上に枠線FRが表示されていることを確認した上で、仮想オブジェクトを掴む操作を行うことができるので、所望の仮想オブジェクトをより確実に掴むことができる。
なお、仮想手により掴まれている仮想オブジェクト、あるいは掴む操作を行うことによって掴むことのできる仮想オブジェクトをユーザに識別させるための表示は、枠線FRの表示に限られない。また、図示の例では、仮想オブジェクトOBを最前面(仮想左手OLに把持された仮想オブジェクトのうち最も仮想カメラ1寄りの位置)に移動させているが、判定領域JBは移動前の状態から更新していない。これは、仮想オブジェクトOBが仮想右手ORに把持されている状態では、仮想オブジェクトとの接触判定を行う必要がないためである。判定領域の更新を必要最小限とすることにより、演算処理の負荷を低く抑えることができる。
〔変形例〕
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態も、本発明の技術的範囲に含まれる。各実施形態にそれぞれ開示された技術的手段を組み合わせることによって、新しい技術的特徴を形成することもできる。
前記実施形態では、領域特定部233が、各仮想オブジェクトに判定領域を設定した後、設定した判定領域間で重畳部分が生じないように調整する(重畳部分を排除する)例を示したが、重畳しない判定領域を設定する方法はこの例に限られない。例えば、領域特定部233は、まず仮想オブジェクト間の境界を特定し、特定した境界を超えないように(各仮想オブジェクトについて、仮想カメラ1から見える部分から判定領域を延在させ、他の仮想オブジェクト上には延在させないように)各仮想オブジェクトの判定領域を設定してもよい。
ユーザが操作する仮想オブジェクトは、ユーザの頭部以外の身体の一部の動きに連動して仮想空間2内を移動するものであればよく、仮想手に限られない。たとえば、仮想空間2内の敵キャラクタ(仮想オブジェクト)と、武器を使って戦うゲームであれば、武器がユーザの操作する仮想オブジェクトとなる。
どのような仮想オブジェクトの判定領域を特定するかも特に限定されず、仮想空間2中の全ての仮想オブジェクトの判定領域を特定してもよいし、一部の仮想オブジェクトの判定領域を特定してもよい。また、仮想オブジェクトの形状も特に限定されない。なお、仮想空間2に占める体積が大きい仮想オブジェクトは、判定領域を特定するまでもなくユーザが容易に選択できるので、体積が閾値以下の仮想オブジェクト、あるいは厚さが閾値以下の仮想オブジェクトについてのみ判定領域を特定してもよい。
また、仮想オブジェクトとの接触による操作をMR等に適用することによって仮想体験を提供する場合には、操作対象オブジェクトに換えてユーザの実際の頭部以外の身体の一部を物理的・光学的手法等によって検知し、当該身体の一部と仮想オブジェクトの位置関係に基づいて、当該身体の一部と仮想オブジェクトとの接触を判定してもよい。なお、透過型HMDを用いて仮想体験を提供する場合には、ユーザの基準視線は、非透過型HMDと同様に、HMDの動き、または、ユーザの視線を検知することによって特定してもよい。仮想オブジェクトに対する判定領域の設定方法、および設定した判定領域に基づく、ユーザの体の一部と仮想オブジェクトと接触の判定方法等は上記実施形態で説明した方法と同様である。
〔ソフトウェアによる実現例〕
制御回路部200の制御ブロック(検出部210、表示制御部220、仮想空間制御部230、記憶部240、および通信部250)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPUを用いてソフトウェアによって実現してもよい。
後者の場合、制御ブロックは、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、前記プログラムおよび各種データがコンピュータ(又はCPU)で読み取り可能に記録されたROMまたは記憶装置(これらを「記録媒体」と称する)、前記プログラムを展開するRAM等を備えている。そして、コンピュータ(又はCPU)が前記プログラムを前記記録媒体から読み取って実行することにより、本発明の目的が達成される。前記記録媒体としては、「一時的でない有形の媒体」、たとえば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路等を用いることができる。また、前記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して前記コンピュータに供給されてもよい。なお、本発明は、前記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
〔付記事項〕
本発明の一側面にかかる内容を列記すると以下の通りである。
(項目1)頭部にヘッドマウントディスプレイを装着したユーザに仮想空間を提供する方法であって、前記仮想空間に配置された、第1仮想オブジェクトおよび第2仮想オブジェクトを少なくとも含む複数の仮想オブジェクトを特定するとともに、前記ユーザの頭部以外の身体の一部の動きに連動して動作する操作対象オブジェクトを前記仮想空間に配置するステップと、前記第1仮想オブジェクトと前記操作対象オブジェクトとの接触を判定するための、前記第1仮想オブジェクトに関連付けられる第1領域と、前記第2仮想オブジェクトと前記操作対象オブジェクトとの接触を判定するための、前記第2仮想オブジェクトに関連付けられる第2領域とをそれぞれ設定するステップと、前記操作対象オブジェクトまたは前記操作対象オブジェクトに付随する付随オブジェクトのうち前記第1領域に含まれる第1部分が、前記操作対象オブジェクトまたは前記付随オブジェクトのうち前記第2領域に含まれる第2部分よりも大きい場合、前記操作対象オブジェクトが前記第1仮想オブジェクトに接触したと判定するステップとを含む、方法。操作対象オブジェクトまたは付随オブジェクトのうち、第1領域に含まれる第1部分が、第2領域に含まれる第2部分よりも大きい場合、ユーザは操作対象オブジェクトを第1仮想オブジェクトに接触させる意図があると考えられる。よって、ユーザは、直感的な操作によって、所望のオブジェクトと接触することができる。
(項目2)前記判定するステップにおいて前記操作対象オブジェクトが前記第1仮想オブジェクトに接触したと判定された後に、前記操作対象オブジェクトに第1動作を実行させることによって、前記第1仮想オブジェクトを前記操作対象オブジェクトに関連付けるステップをさらに含む、項目1に記載の方法。第1仮想オブジェクトを操作対象オブジェクトに関連付けるために、操作対象オブジェクトに第1動作を実行させるための操作をユーザが行う必要があるから、ユーザが意図しない関連付けが行われることを防ぐことができる。
(項目3)前記関連付けるステップが実行された後に前記操作対象オブジェクトに第2動作を実行させることによって、前記第1仮想オブジェクトと前記操作対象オブジェクトとの関連づけを解消するステップをさらに含む、項目2に記載の方法。前記関連付けを解消するために、操作対象オブジェクトに第2動作を実行させるための操作をユーザが行う必要があるから、ユーザが意図せず関連付けが解消されることを防ぐことができる。
(項目4)前記付随オブジェクトは、前記操作対象オブジェクトから一定の位置に配置されており、前記第1動作が実行される前後において前記付随オブジェクトの位置を維持させるステップをさらに含む、項目2または3に記載の方法。操作対象オブジェクトが当該オブジェクトに接触したと判定されている状態を維持しつつ、操作対象オブジェクトに第1動作を実行させることが容易になる。
(項目5)前記第1動作中の前記操作対象オブジェクトの動きに基づいて前記付随オブジェクトの位置を変動させるステップをさらに含む、項目2または3に記載の方法。操作対象オブジェクトの動きに応じた細やかな接触判定が可能になる。
(項目6)前記付随オブジェクトは前記操作対象オブジェクトの内部に配置されている、項目1〜3、および5の何れかに記載の方法。操作対象オブジェクトと、ユーザが触れたいオブジェクトとの距離が空いているときに、操作対象オブジェクトが当該オブジェクトに接触したと判定してしまうことを防ぐことができる。
(項目7)前記第1領域および前記第2領域は六面体状の領域であり、前記付随オブジェクトは球体状のオブジェクトである、項目1〜6の何れかに記載の方法。第1部分と第2部分のいずれが大きいかを簡易な演算で特定することができる。
(項目8)頭部にヘッドマウントディスプレイを装着したユーザに仮想体験を提供する方法であって、第1仮想オブジェクトおよび第2仮想オブジェクトを少なくとも含む複数の仮想オブジェクトを特定するステップと、前記ユーザの頭部以外の身体の一部の位置を特定するステップと、前記第1仮想オブジェクトと前記身体の一部との接触を判定するための、前記第1仮想オブジェクトに関連付けられる第1領域と、前記第2仮想オブジェクトと前記身体の一部との接触を判定するための、前記第2仮想オブジェクトに関連付けられる第2領域とをそれぞれ設定するステップと、前記身体の一部または前記身体の一部に付随する付随オブジェクトのうち前記第1領域に含まれる第1部分が、前記身体の一部または前記付随オブジェクトのうち前記第2領域に含まれる第2部分よりも大きい場合、前記身体の一部が前記第1仮想オブジェクトに接触したと判定するステップとを含む、方法。身体の一部または付随オブジェクトのうち、第1領域に含まれる第1部分が、第2領域に含まれる第2部分よりも大きい場合、ユーザは身体の一部を第1仮想オブジェクトに接触させる意図があると考えられる。よって、ユーザは、所望の仮想オブジェクトと直感的に接触することが可能になる。
(項目9)項目1〜8のいずれか1つの方法の各ステップを、コンピュータに実行させるプログラム。
(項目10)項目9のプログラムを記録したコンピュータ読み取り可能な記録媒体。
1 仮想カメラ、2 仮想空間、5 基準視線、21 中心、22 仮想空間画像、23 視界領域、24 第1領域、25 第2領域、26 視界画像、27 基準位置、100 HMDシステム、110 HMD、112 ディスプレイ、114、306 センサ、120 HMDセンサ、130 注視センサ、140 コントローラセンサ、200 制御回路部、210 検出部、211 HMD検出部、212 視線検出部、213 コントローラ検出部、220 表示制御部、221 仮想カメラ制御部、222 視界領域決定部、223 視界画像生成部、230 仮想空間制御部、231 仮想空間規定部、232 仮想手制御部、233 領域特定部、234 接触判定部、240 記憶部、241 雛形格納部、242 コンテンツ格納部、250 通信部、300 コントローラ、302 操作ボタン、302a〜302d 親指ボタン、302e、302g 人差し指ボタン、302f、302h 中指ボタン、302i、302j アナログスティック、320 右コントローラ、322、332 天面、324、334 グリップ、326 フレーム、330 左コントローラ、OR 仮想右手、OL 仮想左手

Claims (10)

  1. 頭部にヘッドマウントディスプレイを装着したユーザに仮想空間を提供する方法であって、
    前記仮想空間に配置された、第1仮想オブジェクトおよび第2仮想オブジェクトを少なくとも含む複数の仮想オブジェクトを特定するとともに、前記ユーザの頭部以外の身体の一部の動きに連動して動作する操作対象オブジェクトを前記仮想空間に配置するステップと、
    前記第1仮想オブジェクトと前記操作対象オブジェクトとの接触を判定するための、前記第1仮想オブジェクトに関連付けられる第1領域と、前記第2仮想オブジェクトと前記操作対象オブジェクトとの接触を判定するための、前記第2仮想オブジェクトに関連付けられる第2領域とをそれぞれ設定するステップと、
    前記操作対象オブジェクトまたは前記操作対象オブジェクトに付随する付随オブジェクトのうち前記第1領域に含まれる第1部分が、前記操作対象オブジェクトまたは前記付随オブジェクトのうち前記第2領域に含まれる第2部分よりも大きい場合、前記操作対象オブジェクトが前記第1仮想オブジェクトに接触したと判定するステップとを含む、方法。
  2. 前記判定するステップにおいて前記操作対象オブジェクトが前記第1仮想オブジェクトに接触したと判定された後に、前記操作対象オブジェクトに第1動作を実行させることによって、前記第1仮想オブジェクトを前記操作対象オブジェクトに関連付けるステップをさらに含む、請求項1に記載の方法。
  3. 前記関連付けるステップが実行された後に前記操作対象オブジェクトに第2動作を実行させることによって、前記第1仮想オブジェクトと前記操作対象オブジェクトとの関連づけを解消するステップをさらに含む、請求項2に記載の方法。
  4. 前記付随オブジェクトは、前記操作対象オブジェクトから一定の位置に配置されており、
    前記第1動作が実行される前後において前記付随オブジェクトの位置を維持させるステップをさらに含む、請求項2または3に記載の方法。
  5. 前記第1動作中の前記操作対象オブジェクトの動きに基づいて前記付随オブジェクトの位置を変動させるステップをさらに含む、請求項2または3に記載の方法。
  6. 前記付随オブジェクトは前記操作対象オブジェクトの内部に配置されている、請求項1〜3、および5の何れか1項に記載の方法。
  7. 前記第1領域および前記第2領域は六面体状の領域であり、
    前記付随オブジェクトは球体状のオブジェクトである、請求項1〜6の何れか1項に記載の方法。
  8. 頭部にヘッドマウントディスプレイを装着したユーザに仮想体験を提供する方法であって、
    第1仮想オブジェクトおよび第2仮想オブジェクトを少なくとも含む複数の仮想オブジェクトを特定するステップと、
    前記ユーザの頭部以外の身体の一部の位置を特定するステップと、
    前記第1仮想オブジェクトと前記身体の一部との接触を判定するための、前記第1仮想オブジェクトに関連付けられる第1領域と、前記第2仮想オブジェクトと前記身体の一部との接触を判定するための、前記第2仮想オブジェクトに関連付けられる第2領域とをそれぞれ設定するステップと、
    前記身体の一部または前記身体の一部に付随する付随オブジェクトのうち前記第1領域に含まれる第1部分が、前記身体の一部または前記付随オブジェクトのうち前記第2領域に含まれる第2部分よりも大きい場合、前記身体の一部が前記第1仮想オブジェクトに接触したと判定するステップとを含む、方法。
  9. 請求項1〜8のいずれか1項に記載の方法の各ステップを、コンピュータに実行させるプログラム。
  10. 請求項9に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2016142762A 2016-07-20 2016-07-20 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体 Active JP6189497B1 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2016142762A JP6189497B1 (ja) 2016-07-20 2016-07-20 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体
US15/654,652 US10198855B2 (en) 2016-07-20 2017-07-19 Method of providing virtual space, method of providing virtual experience, system and medium for implementing the methods
CN201780038446.5A CN109313511B (zh) 2016-07-20 2017-07-20 提供虚拟空间的方法、提供虚拟体验的方法、程序以及记录介质
CN202110157743.XA CN112783328B (zh) 2016-07-20 2017-07-20 提供虚拟空间的方法、提供虚拟体验的方法、程序以及记录介质
PCT/JP2017/026185 WO2018016553A1 (ja) 2016-07-20 2017-07-20 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体
US16/223,012 US10776991B2 (en) 2016-07-20 2018-12-17 Method of providing virtual space, method of providing virtual experience, system and medium for implementing the methods

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016142762A JP6189497B1 (ja) 2016-07-20 2016-07-20 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017148813A Division JP2018014110A (ja) 2017-08-01 2017-08-01 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体

Publications (2)

Publication Number Publication Date
JP6189497B1 true JP6189497B1 (ja) 2017-08-30
JP2018013938A JP2018013938A (ja) 2018-01-25

Family

ID=59720356

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016142762A Active JP6189497B1 (ja) 2016-07-20 2016-07-20 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体

Country Status (1)

Country Link
JP (1) JP6189497B1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3520867A1 (en) 2018-02-06 2019-08-07 Gree, Inc. Application processing system, method of processing application, and storage medium storing program for processing application
JP2019136066A (ja) * 2018-02-06 2019-08-22 グリー株式会社 アプリケーション処理システム、アプリケーション処理方法、及びアプリケーション処理プログラム
US10981067B2 (en) 2018-02-06 2021-04-20 Gree, Inc. Game processing system, method of processing game, and storage medium storing program for processing game
US10981052B2 (en) 2018-02-06 2021-04-20 Gree, Inc. Game processing system, method of processing game, and storage medium storing program for processing game
US11083959B2 (en) 2018-02-06 2021-08-10 Gree, Inc. Game processing system, method of processing game, and storage medium storing program for processing game
JP2021164649A (ja) * 2018-11-28 2021-10-14 グリー株式会社 アプリケーション処理システム、アプリケーション処理方法、及びアプリケーション処理プログラム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021192589A1 (ja) * 2020-03-24 2021-09-30 ソニーグループ株式会社 情報処理装置及び情報処理方法、コンピュータプログラム、並びに拡張現実感システム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007209483A (ja) * 2006-02-08 2007-08-23 Namco Bandai Games Inc 画像生成システム、プログラム及び情報記憶媒体
JP2011210019A (ja) * 2010-03-30 2011-10-20 Namco Bandai Games Inc プログラム、情報記憶媒体及び画像生成装置
JP2015232783A (ja) * 2014-06-09 2015-12-24 株式会社バンダイナムコエンターテインメント プログラムおよび画像生成装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007209483A (ja) * 2006-02-08 2007-08-23 Namco Bandai Games Inc 画像生成システム、プログラム及び情報記憶媒体
JP2011210019A (ja) * 2010-03-30 2011-10-20 Namco Bandai Games Inc プログラム、情報記憶媒体及び画像生成装置
JP2015232783A (ja) * 2014-06-09 2015-12-24 株式会社バンダイナムコエンターテインメント プログラムおよび画像生成装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3520867A1 (en) 2018-02-06 2019-08-07 Gree, Inc. Application processing system, method of processing application, and storage medium storing program for processing application
JP2019136066A (ja) * 2018-02-06 2019-08-22 グリー株式会社 アプリケーション処理システム、アプリケーション処理方法、及びアプリケーション処理プログラム
US10983590B2 (en) 2018-02-06 2021-04-20 Gree, Inc. Application processing system, method of processing application and storage medium storing program for processing application
US10981067B2 (en) 2018-02-06 2021-04-20 Gree, Inc. Game processing system, method of processing game, and storage medium storing program for processing game
US10981052B2 (en) 2018-02-06 2021-04-20 Gree, Inc. Game processing system, method of processing game, and storage medium storing program for processing game
US11083959B2 (en) 2018-02-06 2021-08-10 Gree, Inc. Game processing system, method of processing game, and storage medium storing program for processing game
US11110346B2 (en) 2018-02-06 2021-09-07 Gree, Inc. Game processing system, method of processing game, and storage medium storing program for processing game
US11161047B2 (en) 2018-02-06 2021-11-02 Gree, Inc. Game processing system, method of processing game, and storage medium storing program for processing game
US11467658B2 (en) 2018-02-06 2022-10-11 Gree, Inc. Application processing system, method of processing application, and storage medium storing program for processing application
JP2021164649A (ja) * 2018-11-28 2021-10-14 グリー株式会社 アプリケーション処理システム、アプリケーション処理方法、及びアプリケーション処理プログラム

Also Published As

Publication number Publication date
JP2018013938A (ja) 2018-01-25

Similar Documents

Publication Publication Date Title
WO2018016553A1 (ja) 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体
JP6189497B1 (ja) 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体
CN109690447B (zh) 信息处理方法、用于使计算机执行该信息处理方法的程序、以及计算机
JP2018072992A (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるプログラム
US20180059812A1 (en) Method for providing virtual space, method for providing virtual experience, program and recording medium therefor
JP6220937B1 (ja) 情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ
JP6113897B1 (ja) 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体
JP6203346B1 (ja) 仮想空間を提供する方法、プログラム、および記録媒体
JP6368404B1 (ja) 情報処理方法、プログラム及びコンピュータ
JP2018028920A (ja) 仮想空間を提供する方法、プログラム、および記録媒体
JP6159455B1 (ja) 仮想空間を提供する方法、プログラム、および記録媒体
JP6278546B1 (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP2018032413A (ja) 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体
JP6728111B2 (ja) 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体
JP2018014110A (ja) 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体
JP2018014084A (ja) 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体
JP2018032383A (ja) 仮想空間における入力を支援するための方法および装置ならびに当該方法をコンピュータに実行させるプログラム
JP6189496B1 (ja) 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体
JP6242452B1 (ja) 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体
JP6966336B2 (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP6275185B2 (ja) 仮想空間を提供する方法、プログラム、および記録媒体
JP6776155B2 (ja) 仮想現実を提供するための方法、および当該方法をコンピュータに実行させるためのプログラム、および当該プログラムを実行するための情報処理装置
JP6189495B1 (ja) 仮想空間を提供する方法、仮想体験を提供する方法、プログラム、および記録媒体
JP2018028900A (ja) 仮想空間を提供する方法、プログラム、および記録媒体
JP2019016358A (ja) 情報処理方法、プログラム及びコンピュータ

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170704

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170802

R150 Certificate of patent or registration of utility model

Ref document number: 6189497

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250