JP2019000174A - 情報処理方法、プログラム及びコンピュータ - Google Patents

情報処理方法、プログラム及びコンピュータ Download PDF

Info

Publication number
JP2019000174A
JP2019000174A JP2017115464A JP2017115464A JP2019000174A JP 2019000174 A JP2019000174 A JP 2019000174A JP 2017115464 A JP2017115464 A JP 2017115464A JP 2017115464 A JP2017115464 A JP 2017115464A JP 2019000174 A JP2019000174 A JP 2019000174A
Authority
JP
Japan
Prior art keywords
collision
player character
head
target object
user
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.)
Granted
Application number
JP2017115464A
Other languages
English (en)
Other versions
JP6470796B2 (ja
Inventor
久志 池北
Hisashi Ikekita
久志 池北
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 JP2017115464A priority Critical patent/JP6470796B2/ja
Priority to US16/005,116 priority patent/US20180357817A1/en
Publication of JP2019000174A publication Critical patent/JP2019000174A/ja
Application granted granted Critical
Publication of JP6470796B2 publication Critical patent/JP6470796B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/211Input arrangements for video game devices characterised by their sensors, purposes or types using inertial sensors, e.g. accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/213Input arrangements for video game devices characterised by their sensors, purposes or types comprising photodetecting means, e.g. cameras, photodiodes or infrared cells
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • A63F13/525Changing parameters of virtual cameras
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/57Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
    • A63F13/577Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using determination of contact between game characters or objects, e.g. to avoid collision between virtual racing cars
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0338Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of limited linear or angular displacement of an operating part of the device from a neutral position, e.g. isotonic or isometric joysticks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2215/00Indexing scheme for image rendering
    • G06T2215/16Using real world measurements to influence rendering

Abstract

【課題】ユーザの仮想体験を改善する。【解決手段】プレイヤキャラクタの頭部に関連付けられる仮想カメラと、対象オブジェクトと、が含まれる仮想空間を規定する仮想空間データを特定するステップと、HMDの動きに基づいて、仮想カメラを動かすステップと、HMDの速さに関する情報に基づいて、プレイヤキャラクタと対象オブジェクトとの衝突判定に影響を与える要素を付与するステップと、付与された要素、及びプレイヤキャラクタの頭部又は仮想カメラに関連付けられたコリジョンエリアと対象オブジェクトとの位置関係に基づいて、プレイヤキャラクタと対象オブジェクトとの衝突を判定するステップと、仮想カメラの動きに基づいて仮想カメラの視界を定義し、視界と、仮想空間データと、衝突判定結果と、に基づいて、視界画像データを生成するステップと、視界画像データに基づいて、HMDに視界画像を表示させるステップと、を含む。【選択図】図13

Description

本開示は、情報処理方法、プログラム及びコンピュータに関する。
特許文献1には、現実空間におけるユーザの頭部に装着されたヘッドマウントディスプレイ(HMD:Head Mounted Display)の速度に応じて、仮想現実(VR:Virtual Reality)空間における手オブジェクトのコリジョンエリアの大きさを変動させ、コリジョンエリアと対象オブジェクトとが衝突した場合に、コリジョン効果を発生させることが開示されている。
特許第6118444号公報
しかしながら、特許文献1に開示された技術では、仮想現実空間における手オブジェクトの動作は、現実空間におけるユーザの手の動きを検知するためのコントローラによって制御される。このように、特許文献1に開示された技術では、ヘッドマウントディスプレイの動きと動作が連動しない手オブジェクトのコリジョンエリアの大きさを、ヘッドマウントディスプレイの速度によって変動させ、コリジョンエリアと対象オブジェクトとが衝突した場合に、コリジョン効果を発生させるため、ユーザが仮想的に体験する仮想体験を改善する余地がある。
本開示は、ユーザの仮想体験を改善することが可能な情報処理方法、プログラム及びコンピュータを提供することを目的とする。
本開示が示す一態様によれば、ヘッドマウントディスプレイと、前記ヘッドマウントディスプレイの動きを検出するセンサと、を備えるシステムにおける情報処理方法であって、プレイヤキャラクタの頭部に関連付けられる仮想カメラと、対象オブジェクトと、が含まれる仮想空間を規定する仮想空間データを特定するステップと、前記ヘッドマウントディスプレイの動きに基づいて、前記仮想カメラを動かすステップと、前記ヘッドマウントディスプレイの速さに関する情報に基づいて、前記プレイヤキャラクタと前記対象オブジェクトとの衝突判定に影響を与える要素を付与するステップと、前記付与された要素、及び前記プレイヤキャラクタの頭部又は前記仮想カメラに関連付けられたコリジョンエリアと前記対象オブジェクトとの位置関係に基づいて、前記プレイヤキャラクタと前記対象オブジェクトとの衝突を判定するステップと、前記仮想カメラの動きに基づいて定義される前記仮想カメラの視界と、前記仮想空間データと、衝突判定結果と、に基づいて、視界画像データを生成するステップと、前記界画像データに基づいて、前記ヘッドマウントディスプレイに視界画像を表示させるステップと、を含む情報処理方法が提供される。
本開示によれば、ユーザの仮想体験を改善し得る情報処理方法、プログラム及びコンピュータを提供することができる。
図1は、ある実施の形態に従うHMDシステムの構成の概略を表す図である。 図2は、一局面に従うコンピュータのハードウェア構成の一例を表すブロック図である。 図3は、ある実施の形態に従うHMD装置に設定されるuvw視野座標系を概念的に表す図である。 図4は、ある実施の形態に従う仮想空間を表現する一態様を概念的に表す図である。 図5は、ある実施の形態に従うHMD装置を装着するユーザの頭部を上から表した図である。 図6は、仮想空間において視界領域をX方向から見たYZ断面を表す図である。 図7は、仮想空間において視界領域をY方向から見たXZ断面を表す図である。 図8は、ある実施の形態に従うコントローラの概略構成を表す図である。 図9は、ある実施の形態に従うコンピュータをモジュール構成として表すブロック図である。 図10は、ユーザによって使用されるHMDシステムがユーザに仮想空間を提供するために実行する処理を表すフローチャートである。 図11(A)は、HMD装置、及びコントローラを装着したユーザの一例を示す図である。図11(B)は、仮想空間内に配置された仮想カメラ、プレイヤキャラクタの頭部オブジェクト、プレイヤキャラクタの左手オブジェクト、プレイヤキャラクタの右手オブジェクト、及び敵キャラクタ一例を示す図である。 図12は、図11(B)に示す仮想空間内を仮想カメラの視界領域で撮影した視界画像の一例を示す図である。 図13は、本実施形態のコリジョン判定処理の一例を示すフローチャートである。 図14(A)は、本実施形態のユーザが頭部を後方へ移動させた状態の一例を示す図である。図14(B)は、図14(A)が示す状態におけるプレイヤキャラクタの頭部オブジェクトのコリジョンエリアの大きさの制御例を示す図である。 図15(A)は、変形例のユーザが頭部を下方へ移動させた状態(ユーザがしゃがんだ状態)の一例を示す図である。図15(B)は、図15(A)が示す状態におけるプレイヤキャラクタの頭部オブジェクトのコリジョンエリアの大きさの制御例を示す図である。 図16は、第2実施形態のコリジョン判定処理の一例を示すフローチャートである。 図17(A)は、第2実施形態のユーザが頭部を前方へ移動させた状態の一例を示す図である。図17(B)は、図17(A)が示す状態におけるプレイヤキャラクタの頭部オブジェクトのコリジョンエリアの大きさの制御例を示す図である。 図18は、第3実施形態のコリジョン判定処理の一例を示すフローチャートである。
<本開示が示す実施形態の詳細>
以下、本開示が示す実施形態の詳細について図面を参照しながら説明する。以下の説明では、基本的に、同一の構成要素には同一の符号を付している。このため、説明済みの構成要素(説明済みの参照番号が付された構成要素)については、必要がある場合を除き、原則、その説明を繰り返さない。
(第1実施形態)
[HMDシステムの構成]
図1を参照して、HMD(Head Mount Device)システム100の構成について説明する。図1は、ある実施の形態に従うHMDシステム100の構成の概略を表す図である。ある局面において、HMDシステム100は、家庭用のシステムとしてあるいは業務用のシステムとして提供される。
HMDシステム100は、HMD装置110と、HMDセンサ120と、コントローラ160と、コンピュータ200と、を備える。HMD装置110は、ディスプレイ112と、カメラ116と、マイク118と、注視センサ140と、を含む。コントローラ160は、モーションセンサ130を含み得る。
ある局面において、コンピュータ200は、インターネットその他のネットワーク19に接続可能であり、ネットワーク19に接続されているサーバ150その他のコンピュータと通信可能である。別の局面において、HMD装置110は、HMDセンサ120の代わりに、センサ114を含み得る。
HMD装置110は、ユーザの頭部に装着され、動作中に仮想空間をユーザに提供し得る。より具体的には、HMD装置110は、右目用の画像および左目用の画像をディスプレイ112にそれぞれ表示する。ユーザの各目がそれぞれの画像を視認すると、ユーザは、両目の視差に基づき当該画像を3次元の画像として認識し得る。ディスプレイ112はHMD装置110と一体に構成されていてもよいし、別体であってもよい。
ディスプレイ112は、例えば、非透過型の表示装置として実現される。ある局面において、ディスプレイ112は、ユーザの両目の前方に位置するようにHMD装置110の本体に配置されている。従って、ユーザは、ディスプレイ112に表示される3次元画像を視認すると、仮想空間に没入することができる。ある実施の形態において、仮想空間は、例えば、背景、オブジェクト、およびユーザが選択可能なメニューの画像等を含む。ある実施の形態において、ディスプレイ112は、所謂スマートフォンその他の情報表示端末が備える液晶ディスプレイまたは有機EL(Electro Luminescence)ディスプレイとして実現され得る。
ある局面において、ディスプレイ112は、右目用の画像を表示するためのサブディスプレイと、左目用の画像を表示するためのサブディスプレイとを含み得る。別の局面において、ディスプレイ112は、右目用の画像と左目用の画像とを一体として表示する構成であってもよい。この場合、ディスプレイ112は、高速シャッタを含む。高速シャッタは、画像がいずれか一方の目にのみ認識されるように、右目用の画像と左目用の画像とを交互に表示可能に作動する。
カメラ116は、HMD装置110を装着するユーザの顔画像を取得する。カメラ116によって取得された顔画像は、画像解析処理によってユーザの表情を検知するために使用され得る。カメラ116は、例えば、瞳の動き、まぶたの開閉、および眉毛の動き等を検知するために、HMD装置110本体に内蔵された赤外線カメラであってもよい。あるいは、カメラ116は、ユーザの口、頬、および顎等の動きを検知するために、図1に示されるようにHMD装置110の外側に配置された外付けカメラであってもよい。また、カメラ116は、上述した赤外線カメラおよび外付けカメラの両方によって構成されてもよい。
マイク118は、ユーザが発した音声を取得する。マイク118によって取得された音声は、音声解析処理によってユーザの感情を検知するために使用され得る。当該音声は、仮想空間に対して、音声による指示を与えるためにも使用され得る。また、当該音声は、ネットワーク19およびサーバ150等を介して、他のユーザが使用するHMDシステムに送られ、当該HMDシステムに接続されたスピーカ等から出力されてもよい。これにより、仮想空間を共有するユーザ間での会話(チャット)が実現される。
HMDセンサ120は、複数の光源(図示しない)を含む。各光源は例えば、赤外線を発するLED(Light Emitting Diode)により実現される。HMDセンサ120は、HMD装置110の動きを検出するためのポジショントラッキング機能を有する。HMDセンサ120は、この機能を用いて、現実空間内におけるHMD装置110の位置および傾きを検出する。
なお、別の局面において、HMDセンサ120は、カメラにより実現されてもよい。この場合、HMDセンサ120は、カメラから出力されるHMD装置110の画像情報を用いて、画像解析処理を実行することにより、HMD装置110の位置および傾きを検出することができる。
別の局面において、HMD装置110は、位置検出器として、HMDセンサ120の代わりに、センサ114を備えてもよい。HMD装置110は、センサ114を用いて、HMD装置110自身の位置および傾きを検出し得る。例えば、センサ114が角速度センサ、地磁気センサ、加速度センサ、あるいはジャイロセンサ等である場合、HMD装置110は、HMDセンサ120の代わりに、これらの各センサのいずれかを用いて、自身の位置および傾きを検出し得る。一例として、センサ114が角速度センサである場合、角速度センサは、現実空間におけるHMD装置110の3軸周りの角速度を経時的に検出する。HMD装置110は、各角速度に基づいて、HMD装置110の3軸周りの角度の時間的変化を算出し、さらに、角度の時間的変化に基づいて、HMD装置110の傾きを算出する。また、HMD装置110は、透過型表示装置を備えていてもよい。この場合、該透過型表示装置は、その透過率を調整することにより、一時的に非透過型の表示装置として構成可能であってもよい。また、ディスプレイ112に表示された視界画像上に、現実空間を提示する要素を含ませるようにしてもよい。例えば、HMD装置110に搭載されたカメラで撮影した画像を視界画像の一部に重畳して表示させてもよいし、当該透過型表示装置の一部の透過率を高く設定することにより、視界画像の一部から現実空間を視認可能にしてもよい。
注視センサ140は、ユーザ190の右目および左目の視線が向けられる方向(視線方向)を検出する。当該方向の検出は、例えば、公知のアイトラッキング機能によって実現される。注視センサ140は、当該アイトラッキング機能を有するセンサにより実現される。ある局面において、注視センサ140は、右目用のセンサおよび左目用のセンサを含むことが好ましい。注視センサ140は、例えば、ユーザ190の右目および左目に赤外光を照射するとともに、照射光に対する角膜および虹彩からの反射光を受けることにより各眼球の回転角を検出するセンサであってもよい。注視センサ140は、検出した各回転角に基づいて、ユーザ190の視線方向を検知することができる。
サーバ150は、コンピュータ200にプログラムを送信して、ユーザに仮想空間を提供し得る。
また、別の局面において、サーバ150は、他のユーザによって使用されるHMD装置に仮想現実を提供するための他のコンピュータ200と通信し得る。例えば、アミューズメント施設において、複数のユーザが参加型のゲームを行う場合、各コンピュータ200は、各ユーザの動作に基づく信号を他のコンピュータ200と通信して、同じ仮想空間において複数のユーザが共通のゲームを楽しむことを可能にする。
コントローラ160は、ユーザ190からコンピュータ200への命令の入力を受け付ける。ある局面において、コントローラ160は、ユーザ190によって把持可能に構成される。別の局面において、コントローラ160は、ユーザ190の身体あるいは衣類の一部に装着可能に構成される。別の局面において、コントローラ160は、コンピュータ200から送られる信号に基づいて、振動、音、光のうちの少なくともいずれかを出力するように構成されてもよい。別の局面において、コントローラ160は、仮想現実を提供する空間に配置されるオブジェクトの位置および動き等を制御するためにユーザ190によって与えられる操作を受け付ける。
モーションセンサ130は、ある局面において、ユーザの手に取り付けられて、ユーザの手の動きを検出する。例えば、モーションセンサ130は、手の回転速度、回転数等を検出する。検出された信号は、コンピュータ200に送られる。モーションセンサ130は、例えば、手袋型のコントローラ160に設けられている。ある実施の形態において、現実空間における安全のため、コントローラ160は、手袋型のようにユーザ190の手に装着されることにより容易に飛んで行かないものに装着されるのが望ましい。別の局面において、ユーザ190に装着されないセンサがユーザ190の手の動きを検出してもよい。例えば、ユーザ190を撮影するカメラの信号が、ユーザ190の動作を表す信号として、コンピュータ200に入力されてもよい。モーションセンサ130とコンピュータ200とは、有線により、または無線により互いに接続される。無線の場合、通信形態は特に限られず、例えば、Bluetooth(登録商標)その他の公知の通信手法が用いられる。
[ハードウェア構成]
図2を参照して、本実施の形態に係るコンピュータ200について説明する。図2は、一局面に従うコンピュータ200のハードウェア構成の一例を表すブロック図である。コンピュータ200は、主たる構成要素として、プロセッサ10と、メモリ11と、ストレージ12と、入出力インターフェース13と、通信インターフェース14とを備える。各構成要素は、それぞれ、バス15に接続されている。
プロセッサ10は、コンピュータ200に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ11またはストレージ12に格納されているプログラムに含まれる一連の命令を実行する。ある局面において、プロセッサ10は、CPU(Central Processing Unit)、MPU(Micro Processor Unit)、FPGA(Field-Programmable Gate Array)その他のデバイスとして実現される。
メモリ11は、プログラムおよびデータを一時的に保存する。プログラムおよびデータの少なくともいずれかは、例えば、ストレージ12からロードされる。メモリ11に保存されるデータは、コンピュータ200に入力されたデータと、プロセッサ10によって生成されたデータとを含む。ある局面において、メモリ11は、RAM(Random Access Memory)その他の揮発性メモリとして実現される。
ストレージ12は、プログラムおよびデータを永続的に保持する。ストレージ12は、例えば、ROM(Read-Only Memory)、ハードディスク装置、フラッシュメモリ、その他の不揮発性記憶装置として実現される。ストレージ12に格納されるプログラムは、HMDシステム100において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、および他のコンピュータ200との通信を実現するためのプログラム等を含む。ストレージ12に格納されるデータは、仮想空間を規定するためのデータおよびオブジェクト等を含む。
なお、別の局面において、ストレージ12は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに別の局面において、コンピュータ200に内蔵されたストレージ12の代わりに、外部の記憶装置に保存されているプログラムおよびデータを使用する構成が使用されてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のHMDシステム100が使用される場面において、プログラムおよびデータ等の更新を一括して行うことが可能になる。
ある実施の形態において、入出力インターフェース13は、HMD装置110、HMDセンサ120またはモーションセンサ130との間で信号を通信する。ある局面において、入出力インターフェース13は、USB(Universal Serial Bus)インターフェース、DVI(Digital Visual Interface)、HDMI(登録商標)(High-Definition Multimedia Interface)その他の端子を用いて実現される。なお、入出力インターフェース13は上述のものに限られない。
ある実施の形態において、入出力インターフェース13は、さらに、コントローラ160と通信し得る。例えば、入出力インターフェース13は、モーションセンサ130から出力された信号の入力を受ける。別の局面において、入出力インターフェース13は、プロセッサ10から出力された命令を、コントローラ160に送る。当該命令は、振動、音声出力、発光等をコントローラ160に指示する。コントローラ160は、当該命令を受信すると、その命令に応じて、振動、音声出力または発光のいずれかを実行する。
通信インターフェース14は、ネットワーク19に接続されて、ネットワーク19に接続されている他のコンピュータ(例えば、サーバ150)と通信する。ある局面において、通信インターフェース14は、例えば、LAN(Local Area Network)その他の有線通信インターフェース、あるいは、WiFi(Wireless Fidelity)、Bluetooth(登録商標)、NFC(Near Field Communication)その他の無線通信インターフェースとして実現される。なお、通信インターフェース14は上述のものに限られない。
ある局面において、プロセッサ10は、ストレージ12にアクセスし、ストレージ12に格納されている1つ以上のプログラムをメモリ11にロードし、当該プログラムに含まれる一連の命令を実行する。当該1つ以上のプログラムは、コンピュータ200のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、コントローラ160を用いて仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ10は、入出力インターフェース13を介して、仮想空間を提供するための信号をHMD装置110に送る。HMD装置110は、その信号に基づいてディスプレイ112に映像を表示する。
サーバ150は、ネットワーク19を介して複数のHMDシステム100の各々の制御装置と接続される。
なお、図2に示される例では、コンピュータ200がHMD装置110の外部に設けられる構成が示されているが、別の局面において、コンピュータ200は、HMD装置110に内蔵されてもよい。一例として、ディスプレイ112を含む携帯型の情報通信端末(例えば、スマートフォン)がコンピュータ200として機能してもよい。
また、コンピュータ200は、複数のHMD装置110に共通して用いられる構成であってもよい。このような構成によれば、例えば、複数のユーザに同一の仮想空間を提供することもできるので、各ユーザは同一の仮想空間で他のユーザと同一のアプリケーションを楽しむことができる。なお、このような場合、本実施形態における複数のHMDシステム100は、入出力インターフェース13により、コンピュータ200に直接接続されてもよい。また、本実施形態におけるサーバ150の各機能は、コンピュータ200に実装されてもよい。
ある実施の形態において、HMDシステム100では、グローバル座標系が予め設定されている。グローバル座標系は、現実空間における鉛直方向、鉛直方向に直交する水平方向、ならびに、鉛直方向および水平方向の双方に直交する前後方向にそれぞれ平行な、3つの基準方向(軸)を有する。本実施の形態では、グローバル座標系は視点座標系の一つである。そこで、グローバル座標系における水平方向、鉛直方向(上下方向)、および前後方向は、それぞれ、x軸、y軸、z軸と規定される。より具体的には、グローバル座標系において、x軸は現実空間の水平方向に平行である。y軸は、現実空間の鉛直方向に平行である。z軸は現実空間の前後方向に平行である。
ある局面において、HMDセンサ120は、赤外線センサを含む。赤外線センサが、HMD装置110の各光源から発せられた赤外線をそれぞれ検出すると、HMD装置110の存在を検出する。HMDセンサ120は、さらに、各点の値(グローバル座標系における各座標値)に基づいて、HMD装置110を装着したユーザ190の動きに応じた、現実空間内におけるHMD装置110の位置および傾きを検出する。より詳しくは、HMDセンサ120は、経時的に検出された各値を用いて、HMD装置110の位置および傾きの時間的変化を検出できる。
グローバル座標系は現実空間の座標系と平行である。したがって、HMDセンサ120によって検出されたHMD装置110の各傾きは、グローバル座標系におけるHMD装置110の3軸周りの各傾きに相当する。HMDセンサ120は、グローバル座標系におけるHMD装置110の傾きに基づき、uvw視野座標系をHMD装置110に設定する。HMD装置110に設定されるuvw視野座標系は、HMD装置110を装着したユーザ190が仮想空間において物体を見る際の視点座標系に対応する。
[uvw視野座標系]
図3を参照して、uvw視野座標系について説明する。図3は、ある実施の形態に従うHMD装置110に設定されるuvw視野座標系を概念的に表す図である。HMDセンサ120は、HMD装置110の起動時に、グローバル座標系におけるHMD装置110の位置および傾きを検出する。プロセッサ10は、検出された値に基づいて、uvw視野座標系をHMD装置110に設定する。
図3に示されるように、HMD装置110は、HMD装置110を装着したユーザの頭部を中心(原点)とした3次元のuvw視野座標系を設定する。より具体的には、HMD装置110は、グローバル座標系を規定する水平方向、鉛直方向、および前後方向(x軸、y軸、z軸)を、グローバル座標系内においてHMD装置110の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって新たに得られる3つの方向を、HMD装置110におけるuvw視野座標系のピッチ方向(u軸)、ヨー方向(v軸)、およびロール方向(w軸)として設定する。
ある局面において、HMD装置110を装着したユーザ190が直立し、かつ、正面を視認している場合、プロセッサ10は、グローバル座標系に平行なuvw視野座標系をHMD装置110に設定する。この場合、グローバル座標系における水平方向(x軸)、鉛直方向(y軸)、および前後方向(z軸)は、HMD装置110におけるuvw視野座標系のピッチ方向(u軸)、ヨー方向(v軸)、およびロール方向(w軸)に一致する。
uvw視野座標系がHMD装置110に設定された後、HMDセンサ120は、HMD装置110の動きに基づいて、設定されたuvw視野座標系におけるHMD装置110の傾き(傾きの変化量)を検出できる。この場合、HMDセンサ120は、HMD装置110の傾きとして、uvw視野座標系におけるHMD装置110のピッチ角(θu)、ヨー角(θv)、およびロール角(θw)をそれぞれ検出する。ピッチ角(θu)は、uvw視野座標系におけるピッチ方向周りのHMD装置110の傾き角度を表す。ヨー角(θv)は、uvw視野座標系におけるヨー方向周りのHMD装置110の傾き角度を表す。ロール角(θw)は、uvw視野座標系におけるロール方向周りのHMD装置110の傾き角度を表す。
HMDセンサ120は、検出されたHMD装置110の傾き角度に基づいて、HMD装置110が動いた後のHMD装置110におけるuvw視野座標系を、HMD装置110に設定する。HMD装置110と、HMD装置110のuvw視野座標系との関係は、HMD装置110の位置および傾きに関わらず、常に一定である。HMD装置110の位置および傾きが変わると、当該位置および傾きの変化に連動して、グローバル座標系におけるHMD装置110のuvw視野座標系の位置および傾きが変化する。
ある局面において、HMDセンサ120は、赤外線センサからの出力に基づいて取得される赤外線の光強度および複数の点間の相対的な位置関係(例えば、各点間の距離など)に基づいて、HMD装置110の現実空間内における位置を、HMDセンサ120に対する相対位置として特定してもよい。また、プロセッサ10は、特定された相対位置に基づいて、現実空間内(グローバル座標系)におけるHMD装置110のuvw視野座標系の原点を決定してもよい。
[仮想空間]
図4を参照して、仮想空間についてさらに説明する。図4は、ある実施の形態に従う仮想空間2を表現する一態様を概念的に表す図である。仮想空間2は、中心21の360度方向の全体を覆う全天球状の構造を有する。図4では、説明を複雑にしないために、仮想空間2のうちの上半分の天球が例示されている。仮想空間2では各メッシュが規定される。各メッシュの位置は、仮想空間2に規定されるXYZ座標系における座標値として予め規定されている。コンピュータ200は、仮想空間2に展開(配置)可能な各要素(例えば、オブジェクト、静止画、動画等)を、仮想空間2上の展開位置(配置位置)に対応するメッシュに対応付けることで、ユーザによって視認可能な仮想空間要素が展開される仮想空間2をユーザに提供する。仮想空間要素とは、仮想空間2内に展開される要素であり、例えば、各種オブジェクト(例えば、ユーザが操作可能なオブジェクト、所定のアルゴリズムに基づいて動作するオブジェクト、および動作しないオブジェクトなど)や、各種画像(背景画像、ユーザが選択画像なメニュー画像、写真、動画像など)を含む。
ある局面において、仮想空間2では、中心21を原点とするXYZ座標系が規定される。XYZ座標系は、例えば、グローバル座標系に平行である。XYZ座標系は視点座標系の一種であるため、XYZ座標系における水平方向、鉛直方向(上下方向)、および前後方向は、それぞれX軸、Y軸、Z軸として規定される。したがって、XYZ座標系のX軸(水平方向)がグローバル座標系のx軸と平行であり、XYZ座標系のY軸(鉛直方向)がグローバル座標系のy軸と平行であり、XYZ座標系のZ軸(前後方向)がグローバル座標系のz軸と平行である。
HMD装置110の起動時、すなわちHMD装置110の初期状態において、仮想カメラ1が、仮想空間2の中心21に配置される。仮想カメラ1は、現実空間におけるHMD装置110の動きに連動して、仮想空間2を同様に移動する。これにより、現実空間におけるHMD装置110の位置および向きの変化が、仮想空間2において同様に再現される。
仮想カメラ1には、HMD装置110の場合と同様に、uvw視野座標系が規定される。仮想空間2における仮想カメラ1のuvw視野座標系は、現実空間(グローバル座標系)におけるHMD装置110のuvw視野座標系に連動するように規定されている。したがって、HMD装置110の傾きが変化すると、それに応じて、仮想カメラ1の傾きも変化する。また、仮想カメラ1が、HMD装置110を装着したユーザの現実空間における移動に連動して、仮想空間2において移動するようにしてもよいし、コントローラ160により受け付けられたユーザ190による操作に応じて、移動するようにしてもよい。
仮想カメラ1の向きは、仮想カメラ1の位置および傾きに応じて決まるので、ユーザが仮想空間要素を視認する際に基準となる視線(基準視線5)は、仮想カメラ1の向きに応じて決まる。但し、仮想カメラ1の向きを注視センサ140により検出されたユーザ190の視線方向に応じて決めるようにしてもよい。コンピュータ200のプロセッサ10は、基準視線5に基づいて、仮想空間2における視界領域23を規定する。視界領域23は、仮想空間2のうち、HMD装置110を装着したユーザの視界に対応する。
注視センサ140によって検出されるユーザ190の視線方向は、ユーザ190が物体を視認する際の視点座標系における方向である。HMD装置110のuvw視野座標系は、ユーザ190がディスプレイ112を視認する際の視点座標系に等しい。また、仮想カメラ1のuvw視野座標系は、HMD装置110のuvw視野座標系に連動している。したがって、ある局面に従うHMDシステム100は、注視センサ140によって検出されたユーザ190の視線方向を、仮想カメラ1のuvw視野座標系におけるユーザの視線方向とみなすことができる。
[ユーザの視線]
図5を参照して、ユーザの視線方向の決定について説明する。図5は、ある実施の形態に従うHMD装置110を装着するユーザ190の頭部を上から表した図である。
ある局面において、注視センサ140は、ユーザ190の右目および左目の各視線を検出する。ある局面において、ユーザ190が近くを見ている場合、注視センサ140は、視線R1およびL1を検出する。別の局面において、ユーザ190が遠くを見ている場合、注視センサ140は、視線R2およびL2を検出する。この場合、ロール方向wに対して視線R2およびL2がなす角度は、ロール方向wに対して視線R1およびL1がなす角度よりも小さい。注視センサ140は、検出結果をコンピュータ200に送信する。
コンピュータ200が、視線の検出結果として、視線R1およびL1の検出値を注視センサ140から受信した場合には、その検出値に基づいて、視線R1およびL1の交点である注視点N1を特定する。一方、コンピュータ200は、視線R2およびL2の検出値を注視センサ140から受信した場合には、視線R2およびL2の交点を注視点として特定する。コンピュータ200は、特定した注視点N1の位置に基づき、ユーザ190の視線方向N0を特定する。コンピュータ200は、例えば、ユーザ190の右目Rと左目Lとを結ぶ直線の中点と、注視点N1とを通る直線の延びる方向を、視線方向N0として検出する。視線方向N0は、ユーザ190が両目により実際に視線を向けている方向である。また、視線方向N0は、視界領域23に対してユーザ190が実際に視線を向けている方向に相当する。
また、別の局面において、HMDシステム100は、テレビジョン放送受信チューナを備えてもよい。このような構成によれば、HMDシステム100は、仮想空間2においてテレビ番組を表示することができる。
さらに別の局面において、HMDシステム100は、インターネットに接続するための通信回路、あるいは、電話回線に接続するための通話機能を備えていてもよい。
[視界領域]
図6および図7を参照して、視界領域23について説明する。図6は、仮想空間2において視界領域23をX方向から見たYZ断面を表す図である。図7は、仮想空間2において視界領域23をY方向から見たXZ断面を表す図である。
図6に示されるように、YZ断面における視界領域23は、領域24を含む。領域24は、仮想カメラ1の基準視線5と仮想空間2のYZ断面とによって定義される。プロセッサ10は、仮想空間2における基準視線5を中心として極角αを含む範囲を、領域24として規定する。
図7に示されるように、XZ断面における視界領域23は、領域25を含む。領域25は、基準視線5と仮想空間2のXZ断面とによって定義される。プロセッサ10は、仮想空間2における基準視線5を中心とした方位角βを含む範囲を、領域25として規定する。
ある局面において、HMDシステム100は、コンピュータ200からの信号に基づいて、視界画像をディスプレイ112に表示させることにより、ユーザ190に仮想空間を提供する。視界画像は、仮想空間2に展開された仮想空間要素のうち視界領域23に相当する空間内の仮想空間要素を表す画像である。ユーザ190が、頭に装着したHMD装置110を動かすと、その動きに連動して仮想カメラ1も動く。その結果、仮想空間2における視界領域23の位置が変化する。これにより、ディスプレイ112に表示される視界画像は、ユーザ190がHMD装置110を動かす前の視界領域23に相当する空間内の仮想空間要素を表す画像から、ユーザ190がHMD装置110を動かした後の視界領域23に相当する空間内の仮想空間要素を表す画像に更新される。ユーザは、仮想空間2における所望の方向を視認することができる。
ユーザ190は、HMD装置110を装着している間、現実世界を視認することなく、仮想空間2に展開される仮想空間要素を視認できる。そのため、HMDシステム100は、仮想空間2への高い没入感覚をユーザに与えることができる。
ある局面において、プロセッサ10は、HMD装置110を装着したユーザ190の実空間における移動に連動して、仮想空間2において仮想カメラ1を移動し得る。この場合、プロセッサ10は、仮想空間2における仮想カメラ1の位置および向きに基づいて、HMD装置110のディスプレイ112に投影される画像領域(すなわち、仮想空間2における視界領域23)を特定する。すなわち、仮想カメラ1によって、仮想空間2におけるユーザ190の視野が定義される。
ある実施の形態に従うと、仮想カメラ1は、二つの仮想カメラ、すなわち、右目用の画像を提供するための仮想カメラと、左目用の画像を提供するための仮想カメラとを含むことが望ましい。また、ユーザ190が3次元の仮想空間2を認識できるように、適切な視差が、二つの仮想カメラに設定されていることが好ましい。本実施の形態においては、仮想カメラ1が二つの仮想カメラを含み、二つの仮想カメラのロール方向が合成されることによって生成されるロール方向(w)がHMD装置110のロール方向(w)に適合されるように構成されているものとして、本開示に係る技術思想を例示する。
[コントローラ]
図8を参照して、コントローラ160の一例について説明する。図8は、ある実施の形態に従うコントローラ160の概略構成を表す図である。
図8の状態(A)に示されるように、ある局面において、コントローラ160は、右コントローラ160Rと左コントローラとを含み得る。右コントローラ160Rは、ユーザ190の右手で操作される。左コントローラは、ユーザ190の左手で操作される。ある局面において、右コントローラ160Rと左コントローラとは、別個の装置として対称に構成される。したがって、ユーザ190は、右コントローラ160Rを把持した右手と、左コントローラを把持した左手とをそれぞれ自由に動かすことができる。別の局面において、コントローラ160は両手の操作を受け付ける一体型のコントローラであってもよい。以下、右コントローラ160Rについて説明する。
右コントローラ160Rは、グリップ30と、フレーム31と、天面32とを備える。グリップ30は、ユーザ190の右手によって把持されるように構成されている。例えば、グリップ30は、ユーザ190の右手の掌と3本の指(中指、薬指、小指)とによって保持され得る。
グリップ30は、ボタン33,34と、モーションセンサ130とを含む。ボタン33は、グリップ30の側面に配置され、右手の中指による操作を受け付ける。ボタン34は、グリップ30の前面に配置され、右手の人差し指による操作を受け付ける。ある局面において、ボタン33,34は、トリガー式のボタンとして構成される。モーションセンサ130は、グリップ30の筐体に内蔵されている。なお、ユーザ190の動作がカメラその他の装置によってユーザ190の周りから検出可能である場合には、グリップ30は、モーションセンサ130を備えなくてもよい。
フレーム31は、その円周方向に沿って配置された複数の赤外線LED35を含む。赤外線LED35は、コントローラ160を使用するプログラムの実行中に、当該プログラムの進行に合わせて赤外線を発光する。赤外線LED35から発せられた赤外線は、右コントローラ160Rと左コントローラとの各位置および姿勢(傾き、向き)等を検出するために使用され得る。図8に示される例では、二列に配置された赤外線LED35が示されているが、配列の数は図8に示されるものに限られない。一列あるいは3列以上の配列が使用されてもよい。図8に示す例では、コントローラ160は、ユーザが手で把持するコントローラであるため、コントローラ160の位置および姿勢(傾き、向き)を検出することで、ユーザの手の動きを検知できる。なお、コントローラ160が、ユーザ190の身体あるいは衣類の一部に装着可能である場合、コントローラ160の位置および姿勢(傾き、向き)を検出することで、ユーザ190の身体あるいは衣類の一部の動きを検知できる。
天面32は、ボタン36,37と、アナログスティック38とを備える。ボタン36,37は、プッシュ式ボタンとして構成される。ボタン36,37は、ユーザ190の右手の親指による操作を受け付ける。アナログスティック38は、ある局面において、初期位置(ニュートラルの位置)から360度任意の方向への操作を受け付ける。当該操作は、例えば、仮想空間2に配置されるオブジェクトを移動させるための操作を含む。
ある局面において、右コントローラ160Rおよび左コントローラは、赤外線LED35その他の部材を駆動するための電池を含む。電池は、充電式、ボタン型、乾電池型等を含むが、これらに限定されない。別の局面において、右コントローラ160Rおよび左コントローラは、例えば、コンピュータ200のUSBインターフェースに接続され得る。この場合、右コントローラ160Rおよび左コントローラは、電池を必要としない。
図8の状態(A)および状態(B)に示されるように、例えば、ユーザ190の右手810に対して、ヨー、ロール、ピッチの各方向が規定される。ユーザ190が親指と人差し指とを伸ばした場合に、親指の伸びる方向がヨー方向、人差し指の伸びる方向がロール方向、ヨー方向の軸およびロール方向の軸によって規定される平面に垂直な方向がピッチ方向として規定される。
[HMD装置の制御装置]
図9を参照して、HMD装置110の制御装置について説明する。ある実施の形態において、制御装置は周知の構成を有するコンピュータ200によって実現される。図9は、ある実施の形態に従うコンピュータ200をモジュール構成として表すブロック図である。
図9に示されるように、コンピュータ200は、主制御モジュール220と、メモリモジュール240と、通信制御モジュール250とを備える。主制御モジュール220は、サブモジュールとして、仮想空間制御モジュール221と、仮想カメラ制御モジュール222と、プレイヤキャラクタ制御モジュール223と、オブジェクト制御モジュール224と、コリジョン制御モジュール225と、コリジョン判定モジュール226と、視界画像生成モジュール227と、表示制御モジュール228と、を含む。
ある実施の形態において、主制御モジュール220は、プロセッサ10によって実現される。別の実施の形態において、複数のプロセッサ10が主制御モジュール220として作動してもよい。メモリモジュール240は、メモリ11またはストレージ12によって実現される。通信制御モジュール250は、通信インターフェース14によって実現される。
仮想空間制御モジュール221は、ユーザ190に提供される仮想空間2を制御する。本実施形態では、仮想空間制御モジュール221は、仮想空間2を表す仮想空間データを特定することにより、HMDシステム100における仮想空間2を規定する。なお本実施形態では、仮想空間2内への、仮想カメラ1、各種オブジェクト、及び背景画像などの仮想空間要素の配置を仮想空間制御モジュール221以外のモジュールが行う場合を例にとり説明するが、これに限定されず、仮想空間制御モジュール221が行うようにしてもよい。また、仮想空間2内への仮想空間要素の配置は、仮想空間2全体に対して行われてもよいし、後述の仮想カメラ制御モジュール222により決定された視界領域23に限定して行われてもよい。
仮想カメラ制御モジュール222は、仮想空間2へ仮想カメラ1を配置し、仮想空間2における仮想カメラ1の動作を制御する。本実施形態では、仮想カメラ制御モジュール222は、HMD装置110を装着したユーザの頭の向き(HMD装置110の動き)や、当該ユーザによるコントローラ160のキー操作(ボタン36,37やアナログスティック38の操作)に基づいて、仮想空間2における仮想カメラ1の挙動、向き等を制御する。つまり、仮想カメラ1の視界領域23は、HMD装置110を装着したユーザの頭の向きや、ユーザによるコントローラ160のキー操作(ボタン36,37やアナログスティック38の操作)に基づいて規定される。但し、仮想カメラ1の動作制御は、これに限定されるものではない。
プレイヤキャラクタ制御モジュール223は、仮想空間2へ仮想カメラ1を配置し、仮想空間2におけるプレイヤキャラクタの動作(移動および状態変化等)を制御する。プレイヤキャラクタは、HMD装置110を装着したユーザに関連付けられたキャラクタオブジェクトであり、プレイヤキャラクタそのものであってもよいし、プレイヤキャラクタの一部を構成するオブジェクトであってもよい。なお、プレイヤキャラクタは、アバターと称する場合もありうる。プレイヤキャラクタの一部を構成するオブジェクトとしては、頭オブジェクト、手オブジェクト(仮想手)、及び指オブジェクト(仮想指)などが挙げられるがこれらに限定されるものではない。
本実施形態では、プレイヤキャラクタが、プレイヤキャラクタの頭部オブジェクト、及びプレイヤキャラクタの手オブジェクトで構成されている場合を例にとり説明するが、これに限定されるものではない。なお本実施形態では、プレイヤキャラクタの頭部オブジェクトは、HMD装置110を装着したユーザの頭部に対応し、仮想カメラ1に関連付けられている。従ってプレイヤキャラクタ制御モジュール223は、仮想カメラ制御モジュール222による仮想カメラ1の動作制御に連動して、プレイヤキャラクタの頭部オブジェクトを動作させる。例えば、プレイヤキャラクタが一人称視点の場合、プレイヤキャラクタ制御モジュール223は、仮想カメラ1と同一位置において、プレイヤキャラクタの頭部オブジェクトの動作を仮想カメラ1の動作に連動させる。
また本実施形態では、プレイヤキャラクタの手オブジェクトは、HMD装置110を装着したユーザの手に相当する。このためプレイヤキャラクタ制御モジュール223は、当該ユーザが手に保持するコントローラ160の動きや当該ユーザによるコントローラ160のキー操作(ボタン36,37やアナログスティック38の操作)に基づいて、プレイヤキャラクタの手オブジェクトを動作させる。なお、手オブジェクトは、仮想空間2に配置されるオブジェクトを操作するための操作オブジェクトとなりうる。また、手オブジェクトではなく、指オブジェクトやユーザが使用するスティックに相当するスティックオブジェクト等を操作オブジェクトとしてもよい。操作オブジェクトが指オブジェクトの場合、特に、操作オブジェクトは、当該指が指し示す方向(軸方向)の軸の部分に対応している。
オブジェクト制御モジュール224は、仮想空間2へプレイヤキャラクタ以外のオブジェクトを配置し、仮想空間2におけるプレイヤキャラクタ以外のオブジェクトの動作(移動および状態変化等)を制御する。プレイヤキャラクタ以外のオブジェクトとしては、例えば、対象オブジェクトや背景オブジェクトなどが挙げられるが、これらに限定されるものではない。対象オブジェクトは、例えば、プレイヤキャラクタに影響を与える、及びプレイヤキャラクタからの影響を受けるの少なくともいずれかを行うオブジェクト(例えば、敵キャラクタや壁オブジェクトなど)などが挙げられるが、これに限定されるものではない。背景オブジェクトは、例えば、ゲームのストーリーの進行に従って配置される森、山その他を含む風景、動物等を含み得る。なお、オブジェクト制御モジュール224は、動作しないオブジェクトについては、固定位置に配置したままに制御しておけばよい。
コリジョン制御モジュール225は、HMD装置110の速さに関する情報に基づいて、プレイヤキャラクタと対象オブジェクトとの衝突判定に影響を与える要素を付与する制御を行う。HMD装置110の速さに関する情報は、HMD装置110の速さ、速度、及び加速度などHMD装置110の動きから特定可能な情報が挙げられるが、これらに限定されるものではない。本実施形態では、コリジョン制御モジュール225は、衝突判定に影響を与える要素を付与する制御として、仮想空間2に配置されるプレイヤキャラクタの頭部又は仮想カメラ1に関連付けられたコリジョンエリアの大きさを特定(決定)する制御を行う。具体的には、コリジョン制御モジュール225は、HMD装置110の速さに関する情報が所定の速さ以上であることを示す場合におけるコリジョンエリアの大きさを、HMD装置110の速さに関する情報が所定の速さ未満であることを示す場合におけるコリジョンエリアの大きさと異なる大きさに特定するが、これに限定されるものではない。
コリジョン判定モジュール226は、オブジェクト間のコリジョンエリアの衝突(接触)を判定することで、オブジェクト間の衝突を判定する。コリジョン判定モジュール226は、例えば、あるオブジェクトと、別のオブジェクトとが触れたタイミングを検出することができ、当該検出がされたときに、予め定められた処理を行う。コリジョン判定モジュール226は、オブジェクトとオブジェクトとが触れている状態から離れたタイミングを検出することができ、当該検出がされたときに、予め定められた処理を行うこともできる。本実施形態では、コリジョン判定モジュール226は、コリジョン制御モジュール225により付与された要素、及びプレイヤキャラクタの頭部又は仮想カメラ1に関連付けられたコリジョンエリアと対象オブジェクトとの位置関係に基づいて、プレイヤキャラクタと対象オブジェクトとの衝突を判定する。具体的には、コリジョン判定モジュール226は、コリジョン制御モジュール225により大きさが特定されたコリジョンエリアと対象オブジェクトとの位置関係に基づいて、プレイヤキャラクタと対象オブジェクトとの衝突を判定するが、これに限定されるものではない。
視界画像生成モジュール227は、仮想カメラ制御モジュール222により決定された視界領域23に基づいて、ディスプレイ112に表示される視界画像データを生成する。具体的には、視界画像生成モジュール227は、仮想カメラ1の動きに基づいて定義される仮想カメラの視界と、仮想空間制御モジュール221により特定された仮想空間データと、コリジョン判定モジュール226の衝突判定結果と、に基づいて、視界画像データを生成する。
表示制御モジュール228は、視界画像生成モジュール227により生成された視界画像データに基づいて、HMD装置110のディスプレイ112に視界画像を表示させる。例えば、表示制御モジュール228は、視界画像生成モジュール227により生成された視界画像データをHMD装置110に出力することで、視界画像をディスプレイ112に表示させる。
メモリモジュール240は、コンピュータ200が仮想空間2をユーザ190に提供するために使用されるデータを保持している。ある局面において、メモリモジュール240は、空間情報241と、オブジェクト情報242と、ユーザ情報243とを保持している。空間情報241には、例えば、仮想空間2を提供するために規定された1つ以上のテンプレートが含まれている。オブジェクト情報242には、例えば、仮想空間2において再生されるコンテンツ、当該コンテンツで使用されるオブジェクトを配置するための情報、そのほかプレイヤキャラクタの描画データやそのサイズ情報などの属性情報等が含まれている。当該コンテンツは、例えば、ゲーム、現実社会と同様の風景を表したコンテンツ等を含み得る。ユーザ情報243には、例えば、HMDシステム100の制御装置としてコンピュータ200を機能させるためのプログラム、オブジェクト情報242に保持される各コンテンツを使用するアプリケーションプログラム等が含まれている。
メモリモジュール240に格納されているデータおよびプログラムは、HMD装置110のユーザによって入力される。あるいは、プロセッサ10が、当該コンテンツを提供する事業者が運営するコンピュータ(例えば、サーバ150)からプログラムあるいはデータをダウンロードして、ダウンロードされたプログラムあるいはデータをメモリモジュール240に格納する。
通信制御モジュール250は、ネットワーク19を介して、サーバ150その他の情報通信装置と通信し得る。
ある局面において、主制御モジュール220は、例えば、ユニティテクノロジーズ社によって提供されるUnity(登録商標)を用いて実現され得る。別の局面において、主制御モジュール220は、各処理を実現する回路素子の組み合わせとしても実現され得る。
コンピュータ200における処理は、ハードウェアと、プロセッサ10により実行されるソフトウェアとによって実現される。このようなソフトウェアは、ハードディスクその他のメモリモジュール240に予め格納されている場合がある。また、ソフトウェアは、CD−ROMその他のコンピュータ読み取り可能な不揮発性のデータ記録媒体に格納されて、プログラム製品として流通している場合もある。あるいは、当該ソフトウェアは、インターネットその他のネットワークに接続されている情報提供事業者によってダウンロード可能なプログラム製品として提供される場合もある。このようなソフトウェアは、光ディスク駆動装置その他のデータ読取装置によってデータ記録媒体から読み取られて、あるいは、通信制御モジュール250を介してサーバ150その他のコンピュータからダウンロードされた後、メモリモジュール240に一旦格納される。そのソフトウェアは、プロセッサ10によってメモリモジュール240から読み出され、実行可能なプログラムの形式でRAMに格納される。プロセッサ10は、そのプログラムを実行する。
図9に示されるコンピュータ200を構成するハードウェアは、一般的なものである。コンピュータ200のハードウェアの動作は周知であるので、詳細な説明は繰り返さない。
なお、データ記録媒体としては、CD−ROM、FD(Flexible Disk)、ハードディスクに限られず、磁気テープ、カセットテープ、光ディスク(MO(Magnetic Optical Disc)/MD(Mini Disc)/DVD(Digital Versatile Disc))、IC(Integrated Circuit)カード(メモリカードを含む)、光カード、マスクROM、EPROM(Erasable Programmable Read-Only Memory)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、フラッシュROMなどの半導体メモリ等の固定的にプログラムを担持する不揮発性のデータ記録媒体でもよい。
ここでいうプログラムとは、プロセッサ10により直接実行可能なプログラムだけでなく、ソースプログラム形式のプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含み得る。
[制御構造]
図10を参照して、本実施の形態に係るコンピュータ200の制御構造について説明する。図10は、ユーザ190によって使用されるHMDシステム100がユーザ190に仮想空間2を提供するために実行する処理を表すフローチャートである。
ステップS1において、コンピュータ200のプロセッサ10は、仮想空間制御モジュール221として、仮想空間データを特定し、仮想空間2を定義する。また、プロセッサ10は、プレイヤキャラクタ制御モジュール223及びオブジェクト制御モジュール224として、この仮想空間2にプレイヤキャラクタやプレイヤキャラクタ以外のオブジェクトを配置する。仮想空間制御モジュール221は、その動作を仮想空間2内に制御可能に定義する。
ステップS2において、プロセッサ10は、仮想カメラ制御モジュール222として、仮想カメラ1を初期化する。例えば、プロセッサ10は、メモリのワーク領域において、仮想カメラ1を仮想空間2において予め規定された中心点に配置し、仮想カメラ1の視線をユーザ190が向いている方向に向ける。
ステップS3において、プロセッサ10は、視界画像生成モジュール227として、初期の視界画像を表示するための視界画像データを生成する。表示制御モジュール228は、生成した視界画像データを、通信制御モジュール250を介してHMD装置110に送信(出力)する。
ステップS4において、HMD装置110のディスプレイ112は、コンピュータ200から受信した視界画像データに基づいて、視界画像を表示する。HMD装置110を装着したユーザ190は、視界画像を視認すると仮想空間2を認識し得る。
ステップS5において、HMDセンサ120は、HMD装置110から発信される複数の赤外線光に基づいて、HMD装置110の位置と傾きを検知する。検知結果は、動き検知データとして、コンピュータ200に送られる。
ステップS6において、プロセッサ10は、仮想カメラ制御モジュール222として、HMD装置110の位置と傾きとに基づいて、HMD装置110を装着したユーザ190の視界方向を特定する。
ステップS7において、コントローラ160は、現実空間におけるユーザ190の操作を検出する。例えば、ある局面において、コントローラ160は、ユーザ190によってボタンが押下されたことを検出する。別の局面において、コントローラ160は、ユーザ190の手の動作(例えば、一方の手を前方に突き出す等)を検出する。検出内容を示す信号は、コンピュータ200に送られる。
ステップS8において、プロセッサ10は、プレイヤキャラクタ制御モジュール223、オブジェクト制御モジュール224、コリジョン制御モジュール225、及びコリジョン判定モジュール226として、HMDセンサ120から送られた動き検知データ、コントローラ160から送られた検出内容および各種オブジェクトの制御内容を仮想空間2に反映する。
例えば、プロセッサ10は、プレイヤキャラクタ制御モジュール223として、HMD装置110の動き検知データやコントローラ160の検出内容に基づいて、仮想空間2におけるプレイヤキャラクタ(頭部オブジェクトや手オブジェクト)を動かす。また例えば、プロセッサ10は、オブジェクト制御モジュール224として、対象オブジェクトなどのプレイヤキャラクタ以外のオブジェクトの動作を制御する。また例えば、プロセッサ10は、コリジョン制御モジュール225として、HMD装置110の速さに基づいて、プレイヤキャラクタ(詳細には、頭部オブジェクト)のコリジョンエリアの大きさを制御する。また例えば、プロセッサ10は、コリジョン判定モジュール226として、プレイヤキャラクタ(詳細には、頭部オブジェクト)のコリジョンエリアと対象オブジェクトのコリジョンエリアとの衝突(コリジョン)判定を行う。
ステップS9において、プロセッサ10は、視界画像生成モジュール227として、ステップS8における処理の結果に基づく視界画像を表示するための視界画像データを生成する。表示制御モジュール228は、生成した視界画像データをHMD装置110に出力する。
ステップS10において、HMD装置110のディスプレイ112は、受信した視界画像データに基づいて視界画像を更新し、更新後の視界画像を表示する。
次に、図11および図12を参照しながら、ユーザ190の動作と、仮想空間2内に配置された仮想カメラ1及び各種オブジェクトとの関係を説明する。図11(A)は、HMD装置110、及びコントローラ160L、160Rを装着したユーザ190の一例を示す図であり、図11(B)は、仮想空間2内に配置された仮想カメラ1、プレイヤキャラクタの頭部オブジェクト450、プレイヤキャラクタの左手オブジェクト400L、プレイヤキャラクタの右手オブジェクト400R、及び敵キャラクタ500の一例を示す図である。図12は、図11(B)に示す仮想空間2内を仮想カメラ1の視界領域23で撮影した視界画像Mの一例を示す図である。
本実施形態では、仮想カメラ1は、ユーザ190が装着しているHMD110の動きに連動する。つまり、仮想カメラ1の視野は、HMD110の動きに応じて更新される。なお本実施形態では、仮想カメラ1の位置とプレイヤキャラクタの位置とを一致させるとともに、仮想カメラ1の基準視線5がプレイヤキャラクタの視線と一致するように、仮想カメラ1とプレイヤキャラクタ(詳細には、プレイヤキャラクタの頭部オブジェクト450)とが関連付けられている。また本実施形態では、左手オブジェクト400Lは、ユーザ190の左手に装着されるコントローラ160Lの動きに応じて移動する操作オブジェクトであり、右手オブジェクト400Rは、ユーザ190の右手に装着されるコントローラ160Rの動きに応じて移動する操作オブジェクトである。以下では、左手オブジェクト400Lと右手オブジェクト400Rとを単に「手オブジェクト400」と総称する場合がある。
また本実施形態では、各オブジェクトには、オブジェクト間のコリジョン(衝突)を判定するためのコリジョンエリアが設定されている。図11に示す例では、左手オブジェクト400L、右手オブジェクト400Rには、それぞれ、コリジョンエリアCAが設定され、敵キャラクタ500にはコリジョンエリアCBが設定され、頭部オブジェクト450にはコリジョンエリアCCが設定されている。本実施形態では、図11に示すように、コリジョンエリアは、オブジェクトの中心位置を中心とした直径Rの球状に設定されている場合を例にとり説明するが、これに限定されるものではない。例えば、コリジョンエリアは、オブジェクトの中心位置以外の位置を中心としてもよいし、楕円や棒状など球状以外の形状であってもよいし、オブジェクト毎に大きさが異なっていてもよい。
本実施形態では、コリジョンエリアは、プレイヤキャラクタや敵キャラクタ500に所定の影響を与えるための、プレイヤキャラクタと敵キャラクタ500とのコリジョン判定(当たり判定)に供される。具体的には、ユーザ190の操作や動き(HMD110の動き、コントローラ160R、コントローラ160Lの操作や動き)により、プレイヤキャラクタを移動させたり、所定のアルゴリズムに基づく敵キャラクタ500の移動により、コリジョンエリア同士が衝突(接触)することで、プレイヤキャラクタや敵キャラクタ500に所定の影響が与えられる。
例えば、敵キャラクタ500の移動を制御する所定のアルゴリズムは、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと、敵キャラクタ500のコリジョンエリアCBと、を衝突させるように敵キャラクタ500を移動させる。本実施形態では、プロセッサ10(コリジョン判定モジュール226)は、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとが衝突したと判定した場合、プレイヤキャラクタに関連付けられた第1パラメータを変動させる。本実施形態では、この場合、プロセッサ10(コリジョン判定モジュール226)は、第1パラメータを低下させるが、これに限定されず、第1パラメータを上昇させるようにしてもよい。
本実施形態では、ユーザ190は、プレイヤキャラクタに関連付けられた第1パラメータの低下を回避するよう、即ち、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとの衝突を回避させるよう、HMD110を動かしたり、コントローラ160Rやコントローラ160Lを動かしたりする。
また例えば、ユーザ190は、手オブジェクト400を敵キャラクタ500にぶつけるように、コントローラ160Rやコントローラ160Lを動かすことで、プレイヤキャラクタの手オブジェクト400のコリジョンエリアCAと、敵キャラクタ500のコリジョンエリアCBと、を衝突させる。本実施形態では、プロセッサ10(コリジョン判定モジュール226)は、プレイヤキャラクタの手オブジェクト400のコリジョンエリアCAと敵キャラクタ500のコリジョンエリアCBとが衝突したと判定した場合、敵キャラクタ500に関連付けられた第2パラメータを変動させる。本実施形態では、この場合、プロセッサ10(コリジョン判定モジュール226)は、第2パラメータを低下させるが、これに限定されず、第2パラメータを上昇させるようにしてもよい。
本実施形態では、ユーザ190は、敵キャラクタ500に関連付けられた第2パラメータを低下させるよう、即ち、プレイヤキャラクタの手オブジェクト400のコリジョンエリアCAと敵キャラクタ500のコリジョンエリアCBとを衝突させるよう、HMD110を動かしたり、コントローラ160Rやコントローラ160Lを動かしたりする。
次に、図13及び図14を参照しながら、本実施形態に係る情報処理方法、具体的には、コリジョンエリアの大きさの制御手法について説明する。図13は、本実施形態のコリジョン判定処理の一例を示すフローチャートである。なお、図13に示すコリジョン判定処理は、図10に示すフローチャートのステップS8〜S10の詳細処理の一例に該当する。図14(A)は、本実施形態のユーザ190が頭部を後方へ移動させた状態の一例を示す図であり、図14(B)は、図14(A)が示す状態におけるプレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCの大きさの制御例を示す図である。
本実施形態では、前述したように、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとの衝突を回避させるよう、ユーザ190は、HMD110を動かしたり、コントローラ160Rやコントローラ160Lを動かしたりする。
ここで、ユーザ190は、HMD110を装着して表示部112に表示された視界画像を見ており、ユーザ190自身があたかも仮想空間内にいるような体験をしている(仮想空間に没入している)。このため、ユーザ190は、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとの衝突を回避させる場合、自身の頭を移動させることで、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとの衝突を回避させると考えられる。この場合、ユーザ190の仮想空間への没入感を向上させる上では、ユーザ190自身の感覚では、敵キャラクタ500による衝突(攻撃)を避けたにも関わらず、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとの衝突が回避できていないという状況をできるだけ回避することが好ましい。
このため、本実施形態では、プロセッサ10(コリジョン制御モジュール225)は、HMD110が所定の速さ以上で動いている場合、コリジョンエリアCCの大きさを小さくする。
図13に示すように、まず、ステップS11において、プロセッサ10は、HMD110の絶対速度vを特定する。HMD110の絶対速度vは、現実空間内における固定位置から観測したHMD110の速度を示す。本実施形態では、HMD110の絶対速度vは、現実空間内の所定の場所に設置された位置センサ130に対するHMD110の速度である場合を例にとり説明するが、これに限定されるものではない。なお本実施形態では、ユーザ190がHMD110を頭部に装着しているため、ユーザ190の頭部の絶対速度がHMD110の絶対速度に相当する。
具体的には、プロセッサ10は、位置センサ130により検出された情報を取得する毎に、当該情報に基づいてHMD110の位置を特定し、特定した位置情報と、前回に特定した位置情報とに基づいて、HMD110の移動方向における絶対速度vを特定する。例えば、n番目(nは1以上の整数)のフレームにおけるHMD110の位置がPn、(n+1)番目のフレームにおけるHMD110の位置がPn+1であり、フレーム間の時間間隔がΔTである場合、n番目のフレームにおけるHMD110の絶対速度vnは、vn=(位置(Pn+1)−位置Pn)/ΔTとなる。なお、ΔTは、1/フレームレートであり、例えば、フレームレートが90fps(frames per second)であれば、ΔT=1/90である。
なお、HMD110の絶対速度vを特定するモジュールは、例えば、プレイヤキャラクタ制御モジュール223であってもよいし、仮想カメラ制御モジュール222であってもよいし、コリジョン制御モジュール225であってもよい。
図13に戻り、続いて、ステップS12において、プロセッサ10(コリジョン制御モジュール225)は、HMD110の絶対速度vが閾値となる所定速度vth以上かどうかを判定する。なお、所定速度vthは、ゲーム内容に応じて適宜されていてもよいし、ユーザ190の頭部を動かす速度を予め計測して設定してもよい。
プロセッサ10(コリジョン制御モジュール225)は、ステップS12において、HMD110の絶対速度vが所定速度vth以上(v≧vth)と判定した場合(ステップS12でYes)、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCの大きさの直径をR1(R1<R)に特定(決定)する(ステップS13)。例えば、図14(A)に示すように、プレイヤキャラクタ(頭部オブジェクト450)と敵キャラクタ500との接触をさけるため、ユーザ190が頭部を後方へ動かした場合のHMD110の絶対速度v1が所定速度vth以上の場合、図14(B)に示すように、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCの大きさは、直径Rよりも小さい直径R1で設定される。
一方、プロセッサ10(コリジョン制御モジュール225)は、HMD110の絶対速度vが所定速度vth未満(v<vth)と判定した場合(ステップS12でNo)、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCの大きさの直径をRに特定(Rのままと)する(ステップS14)。
なお本実施形態では、コリジョンエリアCCの直径を変更することでコリジョンエリアCCの大きさを変更する場合を例にとり説明したが、コリジョンエリアCCの大きさを変更するために用いるコリジョンエリアCCの要素(パラメータ)は、これに限定されず、半径などどのような値を用いてもよい。
図13に戻り、続いて、ステップS15において、プロセッサ10(コリジョン判定モジュール226)は、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとが衝突(接触)しているか否かを判定する。プロセッサ10(コリジョン判定モジュール226)は、コリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとが衝突していると判定した場合(ステップS15でYES)、プレイヤキャラクタに所定の影響を与える(ステップS16)。例えば、プロセッサ10(コリジョン判定モジュール226)は、プレイヤキャラクタに関連づけられた第1パラメータを低下させる。この場合、第1パラメータは、プレイヤキャラクタの体力やライフなどゲームを継続するために必要な要素を想定しているが、これに限定されるものではない。
一方、プロセッサ10(コリジョン判定モジュール226)は、コリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとが衝突していないと判定した場合(ステップS15でNo)、ステップS16の処理は行わない。
続いて、ステップS17において、プロセッサ10(視界画像生成モジュール227)は、仮想空間200における仮想カメラ1や各オブジェクトの最新の位置及び姿勢や、プレイヤキャラクタに与えられた所定の影響を考慮して、次のフレームの視界画像データを生成し、プロセッサ10(表示制御モジュール228)は、HMD110に表示出力することで、視界画像を更新する。
このように本実施形態では、HMD110の絶対速度が所定速度以上の場合、ユーザ190は、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとの衝突を回避させるために自身の頭を急いで移動させていると想定して、コリジョンエリアCCの大きさを小さくする。このため本実施形態によれば、ユーザ190自身の感覚では、敵キャラクタ500による衝突(攻撃)を避けたにも関わらず、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとの衝突が回避できていないという状況を回避しやすくなり、ユーザ190の仮想空間への没入感を向上させることができる。
なお本実施形態では、プレイヤキャラクタの第1パラメータを低下させる要因として、プレイヤキャラクタの頭部オブジェクト450と敵キャラクタ500との衝突を例にとり説明したが、これに限定されるものではない。例えば、敵キャラクタ500そのものではなく、敵キャラクタ500がプレイヤキャラクタを攻撃するために、敵キャラクタ500に起因して発せられるオブジェクト(例えば、敵キャラクタ500が投げる球オブジェクトや敵キャラクタがピストルで撃った弾丸オブジェクトなど)とプレイヤキャラクタの頭部オブジェクト450との衝突を、第1パラメータを低下させる要因としてもよい。
(変形例1)
なお第1実施形態で説明したコリジョンエリアCCの大きさの制御を、敵キャラクタ500が、プレイヤキャラクタ(頭部オブジェクト450)又は仮想カメラ1の方向に向かって動いている場合に限定して行うようにしてもよい。敵キャラクタ500が、プレイヤキャラクタ(頭部オブジェクト450)又は仮想カメラ1の方向に向かって動いているか否かは、敵キャラクタ500の移動方向から判定すればよい。敵キャラクタ500の移動方向は、現在のフレームにおける敵キャラクタ500の位置と過去のフレームにおける敵キャラクタ500の位置との位置関係から特定できる(例えば、過去のフレームの位置から現在のフレームの位置へ向かう方向を敵キャラクタ500の移動方向に特定できる)。なお、過去のフレームは、前回以前のフレームであればよい。
敵キャラクタ500が、プレイヤキャラクタ(頭部オブジェクト450)又は仮想カメラ1の方向に向かって動いているか否かは、例えば、敵キャラクタ500の移動方向を中心とした所定の極角を含む範囲内に、プレイヤキャラクタ(頭部オブジェクト450)又は仮想カメラ1が位置するか否かにより判定すればよい。この場合、プロセッサ10(コリジョン制御モジュール225)は、敵キャラクタ500の移動方向を中心とした所定の極角を含む範囲内に、プレイヤキャラクタ(頭部オブジェクト450)又は仮想カメラ1が位置すれば、敵キャラクタ500が、プレイヤキャラクタ(頭部オブジェクト450)又は仮想カメラ1の方向に向かって動いていると判定し、上述したコリジョンエリアCCの大きさ制御を行えばよい。一方、プロセッサ10(コリジョン制御モジュール225)は、敵キャラクタ500の移動方向を中心とした所定の極角を含む範囲内に、プレイヤキャラクタ(頭部オブジェクト450)又は仮想カメラ1が位置しなければ、敵キャラクタ500が、プレイヤキャラクタ(頭部オブジェクト450)又は仮想カメラ1の方向に向かって動いていないと判定し、上述したコリジョンエリアCCの大きさ制御を行わなければよい。
このようにすれば、コリジョンエリアCCの大きさを小さくする制御が実行されるタイミングを、ユーザ190が、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとの衝突を回避させるために自身の頭を急いで移動させていると想定されるシーンに限定させやすくすることができる。このため変形例1によれば、ユーザ190が敵キャラクタ500による衝突(攻撃)を避けるために自身の頭を急いで移動させていない場合に、コリジョンエリアCCの大きさが小さくなってしまうことを回避しやすくなるので、ユーザ190自身の感覚とは異なる挙動がプレイヤキャラクタに生じてしまう事態を回避でき、ユーザ190の仮想空間への没入感を向上させることができる。
(変形例2)
また第1実施形態では、単純に、HMD110の絶対速度に基づいて、コリジョンエリアCCの大きさを制御する例について説明したが、コリジョンエリアCCの大きさの制御手法は、これに限定されるものではない。例えば、HMD110の絶対速度だけでなくHMD110の移動方向に基づいて、コリジョンエリアCCの大きさを制御するようにしてもよい。この場合、プロセッサ10(コリジョン制御モジュール225)は、HMD110の移動方向が所定方向であり、かつ、HMD110の絶対速度が所定速度以上の場合に、上述したコリジョンエリアCCの大きさ制御を行えばよい。HMD110の移動方向は、現在のフレームにおけるHMD110の位置と過去のフレームにおけるHMD110の位置との位置関係から特定できる(例えば、過去のフレームの位置から現在のフレームの位置へ向かう方向をHMD110の移動方向に特定できる)。なお、過去のフレームは、前回以前のフレームであればよい。
図15(A)は、変形例のユーザ190が頭部を下方へ移動させた状態(ユーザ190がしゃがんだ状態)の一例を示す図であり、図15(B)は、図15(A)が示す状態におけるプレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCの大きさの制御例を示す図である。図15に示す例では、ユーザ190は、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとの衝突を回避させるために、しゃがむという行動をとる(自身の頭を下方に移動させる)ことを想定している。従って、図15(A)に示すように、HMD110の移動方向が下方向(例えば、グローバル座標系における−y方向やuvw視野座標系における−v方向)となり、かつHMD110の絶対速度v2が所定速度vth以上である場合、図15(B)に示すように、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCの大きさは、直径Rよりも小さい直径R2で設定される。なお、図15に示す例では、HMD110の移動方向が下方向に完全に一致する必要はなく、少なくとも下方向への動きが含まれていればよい。例えば、HMD110の移動方向をグローバル座標系におけるx軸、y軸、z軸方向に分解した場合に、少なくとも−y方向が含まれていたり、HMD110の移動方向をuvw視野座標系におけるu軸、v軸、w軸方向に分解した場合に、少なくとも−v方向が含まれていたりすればよい。図15に示す例では、所定方向が下方向である場合を例にとり説明したが、所定方向はこれに限定されるものではなく、任意の方向や任意の方向の組み合わせ(例えば、後方に移動した後に、左右のいずれかの方向に移動するなど)を適用できる。
このようにすれば、コリジョンエリアCCの大きさを小さくする制御が実行されるタイミングを、ユーザ190が、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとの衝突を回避させるために自身の頭を急いで移動させていると想定されるシーンに限定させやすくすることができる。このため変形例2によれば、ユーザ190が敵キャラクタ500による衝突(攻撃)を避けるために自身の頭を急いで移動させていない場合に、コリジョンエリアCCの大きさが小さくなってしまうことを回避しやすくなるので、ユーザ190自身の感覚とは異なる挙動がプレイヤキャラクタに生じてしまう事態を回避でき、ユーザ190の仮想空間への没入感を向上させることができる。
(第2実施形態)
上記第1実施形態では、プロセッサ10(コリジョン判定モジュール226)が、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとが衝突したと判定した場合、プレイヤキャラクタに関連付けられた第1パラメータを低下させる場合を例にとり説明したが、第2実施形態では、プロセッサ10(コリジョン判定モジュール226)が、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとが衝突したと判定した場合、敵キャラクタ500に関連付けられた第2パラメータを変動させる場合を例にとり説明する。具体的には、第2実施形態では、ユーザ190は、敵キャラクタ500に関連付けられた第2パラメータを低下させるよう、即ち、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとを衝突させるよう、HMD110を動かす。
図16及び図17を参照しながら、第2実施形態に係る情報処理方法、具体的には、コリジョンエリアの大きさの制御手法について説明する。図16は、第2実施形態のコリジョン判定処理の一例を示すフローチャートである。なお、図16に示すコリジョン判定処理は、図10に示すフローチャートのステップS8〜S10の詳細処理の一例に該当する。図17(A)は、第2実施形態のユーザ190が頭部を前方へ移動させた状態の一例を示す図であり、図17(B)は、図17(A)が示す状態におけるプレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCの大きさの制御例を示す図である。
第2実施形態では、前述したように、ユーザ190は、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとを衝突させるよう、HMD110を動かす。
ここで、ユーザ190は、HMD110を装着して表示部112に表示された視界画像を見ており、ユーザ190自身があたかも仮想空間内にいるような体験をしている(仮想空間に没入している)。このため、ユーザ190は、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとを衝突させる場合(プレイヤキャラクタの頭部オブジェクト450で敵キャラクタ500を頭突きする場合)、自身の頭を移動させることで、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとを衝突させると考えられる。この場合、ユーザ190の仮想空間への没入感を向上させる上では、ユーザ190自身の感覚では、敵キャラクタ500に衝突した(頭突きした)にも関わらず、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとが衝突していないという状況をできるだけ回避することが好ましい。
このため、第2実施形態では、プロセッサ10(コリジョン制御モジュール225)は、HMD110が所定の速さ以上で動いている場合、コリジョンエリアCCの大きさを大きくする。
図16に示すように、まず、ステップS21において、プロセッサ10は、HMD110の絶対速度vを特定する。なお、ステップS21の処理内容については、第1実施形態と同様であるため、詳細な説明を省略する。
続いて、ステップS22において、プロセッサ10(コリジョン制御モジュール225)は、HMD110の絶対速度vが閾値となる所定速度vth以上かどうかを判定する。なお、ステップS22の処理内容については、第1実施形態と同様であるため、詳細な説明を省略する。
続いて、プロセッサ10(コリジョン制御モジュール225)は、ステップS22において、HMD110の絶対速度vが所定速度vth以上(v≧vth)と判定した場合(ステップS22でYes)、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCの大きさの直径をR3(R3>R)に特定(設定)する(ステップS23)。例えば、図17(A)に示すように、プレイヤキャラクタ(頭部オブジェクト450)を敵キャラクタ500に頭突きさせるため、ユーザ190が頭部を前方へ動かした場合のHMD110の絶対速度v3が所定速度vth以上の場合、図17(B)に示すように、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCの大きさは、直径Rよりも大きい直径R3で設定される。
一方、プロセッサ10(コリジョン制御モジュール225)は、HMD110の絶対速度vが所定速度vth未満(v<vth)と判定した場合(ステップS22でNo)、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCの大きさの直径をRに特定(Rのままと)する(ステップS24)。なお、ステップS24の処理内容については、第1実施形態と同様であるため、詳細な説明を省略する。
続いて、ステップS25において、プロセッサ10(コリジョン判定モジュール226)は、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとが衝突しているか否かを判定する。プロセッサ10(コリジョン判定モジュール226)は、コリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとが衝突していると判定した場合(ステップS25でYES)、敵キャラクタ500に所定の影響を与える(ステップS26)。例えば、プロセッサ10(コリジョン判定モジュール226)は、敵キャラクタ500に関連づけられた第2パラメータを低下させる。この場合、第2パラメータは、敵キャラクタ500の体力やライフなどゲームやステージをクリアするために必要な要素を想定しているが、これに限定されるものではない。
一方、プロセッサ10(コリジョン判定モジュール226)は、コリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとが衝突していないと判定した場合(ステップS25でNo)、ステップS26の処理は行わない。
続いて、ステップS27において、プロセッサ10(視界画像生成モジュール227)は、仮想空間200における仮想カメラ1や各オブジェクトの最新の位置及び姿勢や、敵キャラクタ500に与えられた所定の影響を考慮して、次のフレームの視界画像を生成し、プロセッサ10(表示制御モジュール228)は、HMD110に表示出力することで、視界画像を更新する。
このように第2実施形態では、HMD110の絶対速度が所定速度以上の場合、ユーザ190は、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとを衝突させるために自身の頭を急いで移動させていると想定して、コリジョンエリアCCの大きさを大きくする。このため第2実施形態によれば、ユーザ190自身の感覚では、敵キャラクタ500に頭突き(攻撃)したにも関わらず、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとが衝突していないという状況を回避しやすくなり、ユーザ190の仮想空間への没入感を向上させることができる。
(変形例3)
なお第2実施形態で説明したコリジョンエリアCCの大きさの制御を、プレイヤキャラクタ(頭部オブジェクト450)又は仮想カメラ1が、敵キャラクタ500の方向に向かって動いている場合に限定して行うようにしてもよい。プレイヤキャラクタ(頭部オブジェクト450)又は仮想カメラ1が、敵キャラクタ500の方向に向かって動いているか否かは、変形例1で説明した敵キャラクタ500が、プレイヤキャラクタ(頭部オブジェクト450)又は仮想カメラ1の方向に向かって動いているか否かを判定する手法と同様の手法で判定すればよい。
そして、プロセッサ10(コリジョン制御モジュール225)は、プレイヤキャラクタ(頭部オブジェクト450)又は仮想カメラ1の移動方向を中心とした所定の極角を含む範囲内に、敵キャラクタ500が位置すれば、プレイヤキャラクタ(頭部オブジェクト450)又は仮想カメラ1が、敵キャラクタ500の方向に向かって動いていると判定し、上述したコリジョンエリアCCの大きさ制御を行えばよい。一方、プロセッサ10(コリジョン制御モジュール225)は、プレイヤキャラクタ(頭部オブジェクト450)又は仮想カメラ1の移動方向を中心とした所定の極角を含む範囲内に、敵キャラクタ500が位置しなければ、プレイヤキャラクタ(頭部オブジェクト450)又は仮想カメラ1が、敵キャラクタ500の方向に向かって動いていないと判定し、上述したコリジョンエリアCCの大きさ制御を行わなければよい。
このようにすれば、コリジョンエリアCCの大きさを大きくする制御が実行されるタイミングを、ユーザ190が、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとを衝突させるために自身の頭を急いで移動させていると想定されるシーンに限定させやすくすることができる。このため変形例3によれば、ユーザ190が敵キャラクタ500に攻撃(頭突き)するために自身の頭を急いで移動させていない場合に、コリジョンエリアCCの大きさが大きくなってしまうことを回避しやすくなるので、ユーザ190自身の感覚とは異なる挙動がプレイヤキャラクタに生じてしまう事態を回避でき、ユーザ190の仮想空間への没入感を向上させることができる。
(変形例4)
また第2実施形態では、単純に、HMD110の絶対速度に基づいて、コリジョンエリアCCの大きさを制御する例について説明したが、コリジョンエリアCCの大きさの制御手法は、これに限定されるものではない。例えば、変形例2同様、HMD110の絶対速度だけでなくHMD110の移動方向に基づいて、コリジョンエリアCCの大きさを制御するようにしてもよい。この場合、プロセッサ10(コリジョン制御モジュール225)は、HMD110の移動方向が所定方向であり、かつ、HMD110の絶対速度が所定速度以上の場合に、上述したコリジョンエリアCCの大きさ制御を行えばよい。この場合、HMD110の移動方向は、変形例2と同様の手法で特定すればよい。
例えば、前述した図17に示す例では、ユーザ190は、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとを衝突させるために、頭突きするという行動をとる(頭を前方に移動させる)ことを想定している。従って、図17(A)において、HMD110の移動方向が前方向(uvw視野座標系におけるにおける+w方向)となり、かつHMD110の絶対速度v3が所定速度vth以上である場合に、図17(B)に示すように、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCの大きさを、直径Rよりも大きい直径R3で設定するようにしてもよい。
このようにすれば、コリジョンエリアCCの大きさを大きくする制御が実行されるタイミングを、ユーザ190が、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとを衝突させるために自身の頭を急いで移動させていると想定されるシーンに限定させやすくすることができる。このため変形例4によれば、ユーザ190が敵キャラクタ500に攻撃(頭突き)するために自身の頭を急いで移動させていない場合に、コリジョンエリアCCの大きさが大きくなってしまうことを回避しやすくなるので、ユーザ190自身の感覚とは異なる挙動がプレイヤキャラクタに生じてしまう事態を回避でき、ユーザ190の仮想空間への没入感を向上させることができる。
(第3実施形態)
上記第1実施形態では、HMD110の絶対速度に応じて、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCの大きさを制御する例について説明したが、HMD110の絶対速度に応じて、プレイヤキャラクタと敵キャラクタ500との衝突を無効化するようにしてもよい。
図18は、第3実施形態のコリジョン判定処理の一例を示すフローチャートである。なお、図18に示すコリジョン判定処理は、図10に示すフローチャートのステップS8〜S10の詳細処理の一例に該当する。
図18に示すように、まず、ステップS31において、プロセッサ10は、HMD110の絶対速度vを特定する。なお、ステップS31の処理内容については、第1実施形態と同様であるため、詳細な説明を省略する。
続いて、ステップS32において、プロセッサ10(コリジョン制御モジュール225)は、HMD110の絶対速度vが閾値となる所定速度vth以上かどうかを判定する。なお、ステップS32の処理内容については、第1実施形態と同様であるため、詳細な説明を省略する。
続いて、プロセッサ10(コリジョン判定モジュール226)は、ステップS32において、HMD110の絶対速度vが所定速度vth以上(v≧vth)でないと判定した場合(ステップS32でNo)、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとが衝突しているか否かを判定する(ステップS33)。プロセッサ10(コリジョン判定モジュール226)は、コリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとが衝突していると判定した場合(ステップS33でYES)、プレイヤキャラクタに所定の影響を与える(ステップS34)。
一方、プロセッサ10(コリジョン判定モジュール226)は、HMD110の絶対速度vが所定速度vth以上(v≧vth)であると判定した場合や(ステップS32でYes)、コリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとが衝突していないと判定した場合(ステップS33でNo)、ステップS34の処理は行わない。
続いて、ステップS35において、プロセッサ10(視界画像生成モジュール227)は、仮想空間200における仮想カメラ1や各オブジェクトの最新の位置及び姿勢や、プレイヤキャラクタ500に与えられた所定の影響を考慮して、次のフレームの視界画像を生成し、プロセッサ10(表示制御モジュール228)は、HMD110に表示出力することで、視界画像を更新する。
第3実施形態によれば、HMD110の絶対速度が所定速度以上の場合、プレイヤキャラクタと敵キャラクタ500との衝突が無効化されるので、ユーザ190自身の感覚では、敵キャラクタ500による衝突(攻撃)を避けたにも関わらず、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとの衝突が回避できていないという状況を回避しやすくなり、ユーザ190の仮想空間への没入感を向上させることができる。
なお、図18に示すフォローチャートのステップS31〜S33の順序は、これに限定されるものではない。例えば、プレイヤキャラクタの頭部オブジェクト450のコリジョンエリアCCと敵キャラクタ500のコリジョンエリアCBとが衝突している場合に、HMD110の絶対速度が所定速度以上か否かを判定し、HMD110の絶対速度が所定速度以上の場合に、プレイヤキャラクタと敵キャラクタ500との衝突を無効化するようにしてもよい。
また、上述の各実施形態の説明においては、プレイヤキャラクタからの一人称視点で説明したが、これに限るものではない。例えば、プレイヤキャラクタPCの背後からプレイヤキャラクタと敵キャラクタとを撮影するよう仮想カメラを配置し、この仮想カメラから撮影された画像を視界画像としてもよい。この場合、仮想カメラは、プレイヤキャラクタの移動に追尾して、その背後を撮影する。また、上述の各実施形態の説明においては、主として、プレイヤキャラクタの頭部オブジェクトにコリジョンエリアが設定される場合を例にとり説明したが、これに限定されず、プレイヤキャラクタそのものにコリジョンエリアが設定されるようにしてもよい。また、上述の各実施形態の説明においては、HMD110の絶対速度や移動方向を例にとり説明したが、これに限定されず、例えば、仮想カメラ1の絶対速度や移動方向を用いるようにしてもよい。
また、上述の各実施形態の説明においては、HMD装置110によってユーザ190が没入する仮想空間(VR空間)を例示して説明したが、HMD装置110として、透過型のHMD装置を採用してもよい。この場合、透過型のHMD装置を介してユーザ190が視認する現実空間に仮想空間を構成する画像の一部が視界画像として重畳されるように視界画像を出力することにより、拡張現実(AR:Augmented Reality)空間または複合現実(MR:Mixed Reality)空間における仮想体験をユーザ190に提供してもよい。この場合、プレイヤキャラクタの頭部オブジェクトに代えて、HMD装置110の動きに基づいて、仮想空間2内における対象オブジェクトへの作用を生じさせてもよい。具体的には、プロセッサ10は、現実空間におけるHMD装置110の位置の座標情報を特定するとともに、仮想空間2内における対象オブジェクトの位置を現実空間における座標情報との関係で定義してもよい。これにより、プロセッサ10は、現実空間におけるHMD装置110と仮想空間2における対象オブジェクトとの位置関係を把握し、HMD装置110と対象オブジェクトとの間で上述したコリジョン制御等に対応する処理を実行可能となる。その結果、HMD装置110の動きに基づいて対象オブジェクトに作用を与えることが可能となる。
以上、本開示の実施形態について説明をしたが、本発明の技術的範囲が本実施形態の説明によって限定的に解釈されるべきではない。本実施形態は一例であって、特許請求の範囲に記載された発明の範囲内において、様々な実施形態の変更が可能であることが当業者によって理解されるところである。本発明の技術的範囲は特許請求の範囲に記載された発明の範囲及びその均等の範囲に基づいて定められるべきである。
本明細書に開示された主題は、例えば以下のような項目として示される。
(項目1)
ヘッドマウントディスプレイ(例えば、HMD110)と、前記ヘッドマウントディスプレイの動きを検出するセンサ(例えば、HMDセンサ120)と、を備えるシステム(例えば、HMDシステム100)における情報処理方法であって、
プレイヤキャラクタの頭部(例えば、頭部オブジェクト450)に関連付けられる仮想カメラ(例えば、仮想カメラ1)と、対象オブジェクト(例えば、敵キャラクタ500)と、が含まれる仮想空間(例えば、仮想空間2)を規定する仮想空間データを特定するステップ(例えば、図10のステップS1)と、
前記ヘッドマウントディスプレイの動きに基づいて、前記仮想カメラを動かすステップ(例えば、図10のステップS6)と、
前記ヘッドマウントディスプレイの速さに関する情報に基づいて、前記プレイヤキャラクタと前記対象オブジェクトとの衝突判定に影響を与える要素を付与するステップ(例えば、図13のステップS13、S14、図16のステップS23、S24、図18のステップS32)と、
前記付与された要素、及び前記プレイヤキャラクタの頭部又は前記仮想カメラに関連付けられたコリジョンエリア(例えば、コリジョンエリアCC)と前記対象オブジェクトとの位置関係に基づいて、前記プレイヤキャラクタと前記対象オブジェクトとの衝突を判定するステップ(例えば、図13のステップS15、図16のステップS25、図18のステップS32、S33)と、
前記仮想カメラの動きに基づいて定義される仮想カメラの視界と、前記仮想空間データと、衝突判定結果と、に基づいて、視界画像データを生成するステップ(例えば、図13のステップS17、図16のステップS27、図18のステップS35)と、
前記界画像データに基づいて、前記ヘッドマウントディスプレイに視界画像を表示させるステップ(例えば、図13のステップS17、図16のステップS27、図18のステップS35)と、を含む情報処理方法。
本項目の情報処理方法では、プレイヤキャラクタと対象オブジェクトとの衝突判定に影響を与える要素、及びプレイヤキャラクタの頭部又は仮想カメラに関連付けられたコリジョンエリアと対象オブジェクトとの位置関係に基づいて、プレイヤキャラクタと対象オブジェクトとの衝突を判定するので、プレイヤキャラクタと対象オブジェクトとのコリジョン(衝突)判定に多様性を与えることができ、ユーザの仮想体験を改善し得る。
(項目2)
前記要素を付与するステップでは、前記ヘッドマウントディスプレイの速さに関する情報が所定の速さ以上であることを示す場合における前記コリジョンエリアの大きさを、前記ヘッドマウントディスプレイの速さに関する情報が前記所定の速さ未満であることを示す場合における前記コリジョンエリアの大きさと異なる大きさに特定し(例えば、図13のステップS12〜S14、図16のステップS22〜S24)、
前記衝突を判定するステップでは、前記大きさが特定されたコリジョンエリアと前記対象オブジェクトとの位置関係に基づいて、前記プレイヤキャラクタと前記対象オブジェクトとの衝突を判定する(例えば、図13のステップS15、図16のステップS25)項目1に記載の情報処理方法。
本項目の情報処理方法では、ヘッドマウントディスプレイの速さに関する情報が所定の速さ以上であることを示す場合におけるコリジョンエリアの大きさを、ヘッドマウントディスプレイの速さに関する情報が所定の速さ未満であることを示す場合におけるコリジョンエリアの大きさよりも小さくする。このため本項目の情報処理方法によれば、ヘッドマウントディスプレイを装着したユーザが所定の速さ以上で頭(ヘッドマウントディスプレイ)を動かすことで、通常とは異なるコリジョン(衝突)判定結果が得られるので、ユーザの仮想体験を改善し得る。
(項目3)
前記要素を付与するステップでは、前記対象オブジェクトが前記プレイヤキャラクタ又は前記仮想カメラの方向へ動いており、かつ前記ヘッドマウントディスプレイの速さに関する情報が前記所定の速さ以上であることを示す場合における前記コリジョンエリアの大きさを、前記ヘッドマウントディスプレイの速さに関する情報が前記所定の速さ未満であることを示す場合における前記コリジョンエリアの大きさよりも小さい大きさに特定する(例えば、変形例1)項目2に記載の情報処理方法。
本項目の情報処理方法では、対象オブジェクトがプレイヤキャラクタ又は仮想カメラの方向へ動いており、かつヘッドマウントディスプレイの速さに関する情報が所定の速さ以上であることを示す場合におけるコリジョンエリアの大きさを、ヘッドマウントディスプレイの速さに関する情報が所定の速さ未満であることを示す場合におけるコリジョンエリアの大きさよりも小さくする。このため本項目の情報処理方法によれば、コリジョンエリアの大きさを小さくする制御が実行されるタイミングを、ユーザが、プレイヤキャラクタの頭部と対象オブジェクトとの衝突を回避させるために自身の頭を急いで移動させていると想定されるシーンに限定させやすくすることができる。この結果、ユーザが対象オブジェクトによる衝突を避けるために自身の頭を急いで移動させていない場合に、コリジョンエリアの大きさが小さくなってしまうことを回避しやすくなるので、ユーザ自身の感覚とは異なる挙動がプレイヤキャラクタに生じてしまう事態を回避でき、ユーザの仮想空間への没入感を向上させることができる。
(項目4)
前記要素を付与するステップでは、前記プレイヤキャラクタ又は前記仮想カメラが前記対象オブジェクトの方向へ動いており、かつ前記ヘッドマウントディスプレイの速さに関する情報が前記所定の速さ以上であることを示す場合における前記コリジョンエリアの大きさを、前記ヘッドマウントディスプレイの速さに関する情報が前記所定の速さ未満であることを示す場合における前記コリジョンエリアの大きさよりも大きい大きさに特定する(例えば、変形例3)項目2に記載の情報処理方法。
本項目の情報処理方法では、プレイヤキャラクタ又は仮想カメラが対象オブジェクトの方向へ動いており、かつヘッドマウントディスプレイの速さに関する情報が所定の速さ以上であることを示す場合におけるコリジョンエリアの大きさを、ヘッドマウントディスプレイの速さに関する情報が所定の速さ未満であることを示す場合におけるコリジョンエリアの大きさよりも大きくする。このため本項目の情報処理方法によれば、コリジョンエリアの大きさを大きくする制御が実行されるタイミングを、ユーザが、プレイヤキャラクタの頭部と対象オブジェクトとを衝突させるために自身の頭を急いで移動させていると想定されるシーンに限定させやすくすることができる。この結果、ユーザが対象オブジェクトに衝突させるために自身の頭を急いで移動させていない場合に、コリジョンエリアの大きさが大きくなってしまうことを回避しやすくなるので、ユーザ自身の感覚とは異なる挙動がプレイヤキャラクタに生じてしまう事態を回避でき、ユーザの仮想空間への没入感を向上させることができる。
(項目5)
前記要素を付与するステップでは、更に、前記ヘッドマウントディスプレイの移動方向に基づいて、前記コリジョンエリアの大きさを特定する(例えば、変形例2、4)項目2〜4のいずれか1項に記載の情報処理方法。
このようにすれば、コリジョンエリアの大きさ制御が実行されるタイミングを、ユーザが、プレイヤキャラクタの頭部オブジェクトと対象オブジェクトとの衝突を回避させるために自身の頭を急いで移動させていると想定される場合や、プレイヤキャラクタの頭部オブジェクトと対象オブジェクトとを衝突させるために自身の頭を急いで移動させていると想定される場合に限定させやすくすることができる。このため、ユーザ自身の感覚とは異なる挙動がプレイヤキャラクタに生じてしまう事態を回避でき、ユーザの仮想空間への没入感を向上させることができる。
(項目6)
前記要素を付与するステップでは、前記ヘッドマウントディスプレイの速さに関する情報を付与し(例えば、図18のステップS32)、
前記衝突を判定するステップでは、前記ヘッドマウントディスプレイの速さに関する情報が所定の速さ以上であることを示す場合、前記コリジョンエリアと前記対象オブジェクトとの位置関係に関わらず、前記プレイヤキャラクタと前記対象オブジェクトとが衝突していないと判定する(例えば、図18のステップS32でYes)項目1に記載の情報処理方法。
このようによれば、ヘッドマウントディスプレイの絶対速度が所定速度以上の場合、プレイヤキャラクタと対象オブジェクトとの衝突が無効化されるので、ユーザ自身の感覚では、対象オブジェクトによる衝突を避けたにも関わらず、プレイヤキャラクタの頭部のコリジョンエリアCCと対象オブジェクトとの衝突が回避できていないという状況を回避しやすくなり、ユーザの仮想空間への没入感を向上させることができる。
(項目7)
前記衝突を判定するステップでは、前記プレイヤキャラクタと前記対象オブジェクトとが衝突したと判定した場合、前記プレイヤキャラクタに関連付けられた第1パラメータを変動させる項目1〜6のいずれか1項に記載の情報処理方法。
(項目8)
前記衝突を判定するステップでは、前記プレイヤキャラクタと前記対象オブジェクトとが衝突したと判定した場合、前記対象オブジェクトに関連付けられた第2パラメータを変動させる項目1〜6のいずれか1項に記載の情報処理方法。
(項目9)
項目1〜8のいずれか1項に記載の方法をコンピュータに実行させるためのプログラム。
(項目10)
ヘッドマウントディスプレイと、前記ヘッドマウントディスプレイの動きを検出するセンサと、を備えるシステムを制御するためのコンピュータであって、
前記コンピュータが備えるプロセッサの制御により、
プレイヤキャラクタの頭部に関連付けられる仮想カメラと、対象オブジェクトと、が含まれる仮想空間を規定する仮想空間データを特定するステップと、
前記ヘッドマウントディスプレイの動きに基づいて、前記仮想カメラを動かすステップと、
前記ヘッドマウントディスプレイの速さに関する情報に基づいて、前記プレイヤキャラクタと前記対象オブジェクトとの衝突判定に影響を与える要素を付与するステップと、
前記付与された要素、及び前記プレイヤキャラクタの頭部又は前記仮想カメラに関連付けられたコリジョンエリアと前記対象オブジェクトとの位置関係に基づいて、前記プレイヤキャラクタと前記対象オブジェクトとの衝突を判定するステップと、
前記仮想カメラの動きに基づいて定義される前記仮想カメラの視界と、前記仮想空間データと、衝突判定結果と、に基づいて、視界画像データを生成するステップと、
前記界画像データに基づいて、前記ヘッドマウントディスプレイに視界画像を表示させるステップと、が実行されるコンピュータ。
1…仮想カメラ、2…仮想空間、5…基準視線、10…プロセッサ、11…メモリ、1
2…ストレージ、13…入出力インターフェース、14…通信インターフェース、15…
バス、19…ネットワーク、21…中心、23…視界領域、24,25…領域、31…フ
レーム、32…天面、33,34,36,37…ボタン、35…赤外線LED、38…ア
ナログスティック、100…HMDシステム、110…HMD装置、112…ディスプレ
イ、114…センサ、116…カメラ、118…マイク、120…HMDセンサ、130
…モーションセンサ、140…注視センサ、150…サーバ、160…コントローラ、1
60R…右コントローラ、190…ユーザ、200…コンピュータ、220…主制御モジ
ュール、221…仮想空間制御モジュール、222…仮想カメラ制御モジュール、223
…プレイヤキャラクタ制御モジュール、224…オブジェクト制御モジュール、225…
コリジョン制御モジュール、226…コリジョン判定モジュール、227…視界画像生成
モジュール、228…表示制御モジュール、240…メモリモジュール、241…空間情
報、242…オブジェクト情報、243…ユーザ情報、250…通信制御モジュール、M
…視界画像

Claims (10)

  1. ヘッドマウントディスプレイと、前記ヘッドマウントディスプレイの動きを検出するセンサと、を備えるシステムにおける情報処理方法であって、
    プレイヤキャラクタの頭部に関連付けられる仮想カメラと、対象オブジェクトと、が含まれる仮想空間を規定する仮想空間データを特定するステップと、
    前記ヘッドマウントディスプレイの動きに基づいて、前記仮想カメラを動かすステップと、
    前記ヘッドマウントディスプレイの速さに関する情報に基づいて、前記プレイヤキャラクタと前記対象オブジェクトとの衝突判定に影響を与える要素を付与するステップと、
    前記付与された要素、及び前記プレイヤキャラクタの頭部又は前記仮想カメラに関連付けられたコリジョンエリアと前記対象オブジェクトとの位置関係に基づいて、前記プレイヤキャラクタと前記対象オブジェクトとの衝突を判定するステップと、
    前記仮想カメラの動きに基づいて定義される仮想カメラの視界と、前記仮想空間データと、衝突判定結果と、に基づいて、視界画像データを生成するステップと、
    前記界画像データに基づいて、前記ヘッドマウントディスプレイに視界画像を表示させるステップと、を含む情報処理方法。
  2. 前記要素を付与するステップでは、前記ヘッドマウントディスプレイの速さに関する情報が所定の速さ以上であることを示す場合における前記コリジョンエリアの大きさを、前記ヘッドマウントディスプレイの速さに関する情報が前記所定の速さ未満であることを示す場合における前記コリジョンエリアの大きさと異なる大きさに特定し、
    前記衝突を判定するステップでは、前記大きさが特定されたコリジョンエリアと前記対象オブジェクトとの位置関係に基づいて、前記プレイヤキャラクタと前記対象オブジェクトとの衝突を判定する請求項1に記載の情報処理方法。
  3. 前記要素を付与するステップでは、前記対象オブジェクトが前記プレイヤキャラクタ又は前記仮想カメラの方向へ動いており、かつ前記ヘッドマウントディスプレイの速さに関する情報が前記所定の速さ以上であることを示す場合における前記コリジョンエリアの大きさを、前記ヘッドマウントディスプレイの速さに関する情報が前記所定の速さ未満であることを示す場合における前記コリジョンエリアの大きさよりも小さい大きさに特定する請求項2に記載の情報処理方法。
  4. 前記要素を付与するステップでは、前記プレイヤキャラクタ又は前記仮想カメラが前記対象オブジェクトの方向へ動いており、かつ前記ヘッドマウントディスプレイの速さに関する情報が前記所定の速さ以上であることを示す場合における前記コリジョンエリアの大きさを、前記ヘッドマウントディスプレイの速さに関する情報が前記所定の速さ未満であることを示す場合における前記コリジョンエリアの大きさよりも大きい大きさに特定する請求項2に記載の情報処理方法。
  5. 前記要素を付与するステップでは、更に、前記ヘッドマウントディスプレイの移動方向に基づいて、前記コリジョンエリアの大きさを特定する請求項2〜4のいずれか1項に記載の情報処理方法。
  6. 前記要素を付与するステップでは、前記ヘッドマウントディスプレイの速さに関する情報を付与し、
    前記衝突を判定するステップでは、前記ヘッドマウントディスプレイの速さに関する情報が所定の速さ以上であることを示す場合、前記コリジョンエリアと前記対象オブジェクトとの位置関係に関わらず、前記プレイヤキャラクタと前記対象オブジェクトとが衝突していないと判定する請求項1に記載の情報処理方法。
  7. 前記衝突を判定するステップでは、前記プレイヤキャラクタと前記対象オブジェクトとが衝突したと判定した場合、前記プレイヤキャラクタに関連付けられた第1パラメータを変動させる請求項1〜6のいずれか1項に記載の情報処理方法。
  8. 前記衝突を判定するステップでは、前記プレイヤキャラクタと前記対象オブジェクトとが衝突したと判定した場合、前記対象オブジェクトに関連付けられた第2パラメータを変動させる請求項1〜6のいずれか1項に記載の情報処理方法。
  9. 請求項1〜8のいずれか1項に記載の方法をコンピュータに実行させるためのプログラム。
  10. ヘッドマウントディスプレイと、前記ヘッドマウントディスプレイの動きを検出するセンサと、を備えるシステムを制御するためのコンピュータであって、
    前記コンピュータが備えるプロセッサの制御により、
    プレイヤキャラクタの頭部に関連付けられる仮想カメラと、対象オブジェクトと、が含まれる仮想空間を規定する仮想空間データを特定するステップと、
    前記ヘッドマウントディスプレイの動きに基づいて、前記仮想カメラを動かすステップと、
    前記ヘッドマウントディスプレイの速さに関する情報に基づいて、前記プレイヤキャラクタと前記対象オブジェクトとの衝突判定に影響を与える要素を付与するステップと、
    前記付与された要素、及び前記プレイヤキャラクタの頭部又は前記仮想カメラに関連付けられたコリジョンエリアと前記対象オブジェクトとの位置関係に基づいて、前記プレイヤキャラクタと前記対象オブジェクトとの衝突を判定するステップと、
    前記仮想カメラの動きに基づいて定義される前記仮想カメラの視界と、前記仮想空間データと、衝突判定結果と、に基づいて、視界画像データを生成するステップと、
    前記界画像データに基づいて、前記ヘッドマウントディスプレイに視界画像を表示させるステップと、が実行されるコンピュータ。
JP2017115464A 2017-06-12 2017-06-12 情報処理方法、プログラム及びコンピュータ Active JP6470796B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017115464A JP6470796B2 (ja) 2017-06-12 2017-06-12 情報処理方法、プログラム及びコンピュータ
US16/005,116 US20180357817A1 (en) 2017-06-12 2018-06-11 Information processing method, program, and computer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017115464A JP6470796B2 (ja) 2017-06-12 2017-06-12 情報処理方法、プログラム及びコンピュータ

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2019005962A Division JP2019093163A (ja) 2019-01-17 2019-01-17 情報処理方法、プログラム及びコンピュータ

Publications (2)

Publication Number Publication Date
JP2019000174A true JP2019000174A (ja) 2019-01-10
JP6470796B2 JP6470796B2 (ja) 2019-02-13

Family

ID=64563618

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017115464A Active JP6470796B2 (ja) 2017-06-12 2017-06-12 情報処理方法、プログラム及びコンピュータ

Country Status (2)

Country Link
US (1) US20180357817A1 (ja)
JP (1) JP6470796B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021108106A (ja) * 2019-12-27 2021-07-29 グリー株式会社 情報処理システム、情報処理方法およびコンピュータプログラム
CN113457150A (zh) * 2021-07-16 2021-10-01 腾讯科技(深圳)有限公司 信息提示方法和装置、存储介质及电子设备
WO2023185393A1 (zh) * 2022-03-29 2023-10-05 北京字跳网络技术有限公司 图像处理方法、装置、设备及存储介质
WO2024069831A1 (ja) * 2022-09-29 2024-04-04 マクセル株式会社 情報表示装置

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7385238B2 (ja) * 2019-01-07 2023-11-22 株式会社mediVR リハビリテーション支援装置、リハビリテーション支援方法及びリハビリテーション支援プログラム
CN111784844B (zh) * 2020-06-09 2024-01-05 北京五一视界数字孪生科技股份有限公司 观察虚拟对象的方法、装置、存储介质及电子设备
CN111773723A (zh) * 2020-07-29 2020-10-16 网易(杭州)网络有限公司 碰撞检测方法和装置
WO2022056683A1 (zh) * 2020-09-15 2022-03-24 深圳市大疆创新科技有限公司 视场确定方法、视场确定装置、视场确定系统和介质
CN112774204B (zh) * 2021-01-22 2023-10-20 北京字跳网络技术有限公司 一种角色碰撞规避方法、装置、设备以及存储介质
CN116999824A (zh) * 2022-08-19 2023-11-07 腾讯科技(深圳)有限公司 虚拟场景中的引导方法、装置、设备、介质及程序产品
CN116310241B (zh) * 2023-03-31 2023-10-13 北京易智时代数字科技有限公司 虚拟角色的位置控制方法、装置、电子设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011056140A (ja) * 2009-09-11 2011-03-24 Namco Bandai Games Inc プログラム、情報記憶媒体及びゲーム装置
JP2012239778A (ja) * 2011-05-24 2012-12-10 Nintendo Co Ltd ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法
JP6117414B1 (ja) * 2016-07-28 2017-04-19 株式会社コロプラ 情報処理方法及び当該情報処理方法をコンピュータに実行させるためのプログラム
JP6118444B1 (ja) * 2016-07-28 2017-04-19 株式会社コロプラ 情報処理方法及び当該情報処理方法をコンピュータに実行させるためのプログラム
JP6140871B1 (ja) * 2016-08-09 2017-05-31 株式会社コロプラ 情報処理方法及び当該情報処理方法をコンピュータに実行させるためのプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5289031B2 (ja) * 2008-12-22 2013-09-11 任天堂株式会社 ゲーム装置およびゲームプログラム
US9355548B2 (en) * 2009-12-03 2016-05-31 Bi Incorporated Systems and methods for contact avoidance
US8909506B2 (en) * 2011-05-31 2014-12-09 Sony Corporation Program, information storage medium, information processing system, and information processing method for controlling a movement of an object placed in a virtual space
US9898864B2 (en) * 2015-05-28 2018-02-20 Microsoft Technology Licensing, Llc Shared tactile interaction and user safety in shared space multi-person immersive virtual reality
JP6649742B2 (ja) * 2015-10-27 2020-02-19 株式会社コーエーテクモゲームス 情報処理装置、動作制御方法及び動作制御プログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011056140A (ja) * 2009-09-11 2011-03-24 Namco Bandai Games Inc プログラム、情報記憶媒体及びゲーム装置
JP2012239778A (ja) * 2011-05-24 2012-12-10 Nintendo Co Ltd ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法
JP6117414B1 (ja) * 2016-07-28 2017-04-19 株式会社コロプラ 情報処理方法及び当該情報処理方法をコンピュータに実行させるためのプログラム
JP6118444B1 (ja) * 2016-07-28 2017-04-19 株式会社コロプラ 情報処理方法及び当該情報処理方法をコンピュータに実行させるためのプログラム
JP6140871B1 (ja) * 2016-08-09 2017-05-31 株式会社コロプラ 情報処理方法及び当該情報処理方法をコンピュータに実行させるためのプログラム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021108106A (ja) * 2019-12-27 2021-07-29 グリー株式会社 情報処理システム、情報処理方法およびコンピュータプログラム
JP7244474B2 (ja) 2019-12-27 2023-03-22 グリー株式会社 情報処理システム、情報処理方法およびコンピュータプログラム
CN113457150A (zh) * 2021-07-16 2021-10-01 腾讯科技(深圳)有限公司 信息提示方法和装置、存储介质及电子设备
CN113457150B (zh) * 2021-07-16 2023-10-24 腾讯科技(深圳)有限公司 信息提示方法和装置、存储介质及电子设备
WO2023185393A1 (zh) * 2022-03-29 2023-10-05 北京字跳网络技术有限公司 图像处理方法、装置、设备及存储介质
WO2024069831A1 (ja) * 2022-09-29 2024-04-04 マクセル株式会社 情報表示装置

Also Published As

Publication number Publication date
JP6470796B2 (ja) 2019-02-13
US20180357817A1 (en) 2018-12-13

Similar Documents

Publication Publication Date Title
JP6470796B2 (ja) 情報処理方法、プログラム及びコンピュータ
JP6244593B1 (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP6263252B1 (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP6368411B1 (ja) 仮想体験を提供するためにコンピュータで実行される方法、プログラム及びコンピュータ
JP6290467B1 (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるプログラム
JP6201028B1 (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP2019008751A (ja) 情報処理方法、プログラム及び情報処理装置
JP6479933B1 (ja) プログラム、情報処理装置、および方法
JP2018125003A (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるプログラム
JP2019179433A (ja) プログラム、情報処理装置、及び情報処理方法
JP2019133309A (ja) プログラム、情報処理装置、及び情報処理方法
JP2018124981A (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP6368404B1 (ja) 情報処理方法、プログラム及びコンピュータ
JP2018097517A (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP6278546B1 (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP6263292B1 (ja) 情報処理方法、コンピュータ、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP2019168962A (ja) プログラム、情報処理装置、及び情報処理方法
JP2018092592A (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP2018067297A (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP6330072B1 (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP2019016358A (ja) 情報処理方法、プログラム及びコンピュータ
JP2019155115A (ja) プログラム、情報処理装置、及び情報処理方法
JP2018206353A (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP2018092635A (ja) 情報処理方法、装置、および当該情報処理方法をコンピュータに実行させるためのプログラム
JP2019036122A (ja) 情報処理方法、プログラム、およびコンピュータ

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181009

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181116

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: 20181225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190118

R150 Certificate of patent or registration of utility model

Ref document number: 6470796

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250