(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-08
(45)【発行日】2022-12-16
(54)【発明の名称】情報処理装置、情報処理方法、及びプログラム
(51)【国際特許分類】
G06T 19/00 20110101AFI20221209BHJP
A63F 13/525 20140101ALI20221209BHJP
A63F 13/65 20140101ALI20221209BHJP
【FI】
G06T19/00 300B
A63F13/525
A63F13/65
(21)【出願番号】P 2021501435
(86)(22)【出願日】2019-02-26
(86)【国際出願番号】 JP2019007329
(87)【国際公開番号】W WO2020174586
(87)【国際公開日】2020-09-03
【審査請求日】2021-04-16
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100122275
【氏名又は名称】竹居 信利
(72)【発明者】
【氏名】大橋 良徳
【審査官】岡本 俊威
(56)【参考文献】
【文献】特許第6470859(JP,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 19/00
A63F 13/00-13/98
(57)【特許請求の範囲】
【請求項1】
ユーザに対して提示する、仮想空間の画像を生成する情報処理装置であって、
実空間中の対象物の位置の情報を検出する手段と、
検出した前記対象物の実空間中での位置の情報に基づいて求められる、前記仮想空間内の位置に、前記対象物に対応する仮想物体を配置する手段と、
前記ユーザの実空間内での身体のサイズを表す、ユーザ身体サイズデータを取得する手段と、
前記仮想空間内での前記仮想物体を配置する位置を、前記検出した対象物の実空間中での位置の情報と、前記実空間内でのユーザのユーザ身体サイズデータと、を用いて決定する手段と、
複数のノードを含むボーンモデルで表される仮想キャラクタの、身体サイズを表すキャラクタ身体サイズデータを取得する手段と、
前記ユーザ身体サイズデータと、キャラクタ身体サイズデータとの比に基づいてスケーリング係数を演算するスケール演算手段と、
を含み、
前記仮想空間内での前記仮想物体を配置する位置を決定する手段は、前記仮想空間内での前記仮想物体を配置する位置を、前記検出した対象物の実空間中での位置の情報と、前記スケーリング係数と、前記実空間内でのユーザ身体サイズデータと、を用いて決定し、
当該仮想キャラクタ上の所定部位に配した仮想的なカメラからの画像を生成して、前記ユーザに仮想キャラクタの視点からの仮想空間の画像データを提供する情報処理装置。
【請求項2】
請求項
1に記載の情報処理装置であって、
この情報処理装置は、ユーザの頭部に装着されて、当該ユーザに対して仮想空間内の画像を提示する表示装置に接続され、
前記ユーザ身体サイズデータを取得する手段は、前記ユーザの身体上の複数の部位であって、前記仮想キャラクタのノードに対応する部位の実空間中の位置を推定し、当該推定されたユーザの身体上の複数の部位の実空間中の位置の情報に基づいて、ユーザ身体サイズデータを取得し、
前記仮想キャラクタのボーンモデルに含まれるノードの少なくとも一部のノードについて、当該ノードの仮想空間内での位置を、前記推定されたユーザの身体部位の実空間中の位置、及び、前記スケーリング係数を用いて決定するキャラクタ姿勢推定手段と、
を含み、
当該仮想キャラクタ上の所定部位に配した仮想的なカメラからの画像を生成して前記ユーザの頭部に装着された表示装置に、当該生成した、仮想キャラクタの視点からの仮想空間の画像データを提示させる情報処理装置。
【請求項3】
請求項
2に記載の情報処理装置であって、
前記キャラクタ姿勢推定手段は、前記仮想キャラクタのボーンモデルに含まれるノードのうち、予め選択された選択ノードの仮想空間内での位置を、前記推定されたユーザの身体部位の実空間中の位置、及び、前記スケーリング係数を用いて決定し、当該決定された選択ノードの仮想空間内での位置に基づいて当該選択ノード以外の、前記仮想キャラクタのボーンモデルに含まれる各ノードの位置を決定する情報処理装置。
【請求項4】
請求項
2または
3に記載の情報処理装置であって、
前記仮想キャラクタ上の所定部位に配した仮想的なカメラからの画像を生成する際に、当該カメラの画角を、前記仮想キャラクタのボーンモデルの腕の長さの情報を用いて決定する情報処理装置。
【請求項5】
請求項1から
4のいずれか一項に記載の情報処理装置であって、
前記ユーザ身体サイズデータを取得する手段は、ユーザの頭部の位置と、ユーザの足の位置との実空間中の位置を推定し、当該ユーザの頭部の位置及びユーザの足の位置により、ユーザの身長方向のサイズを求め、当該身長方向のサイズに基づいてユーザ身体サイズデータを取得する情報処理装置。
【請求項6】
請求項
5に記載の情報処理装置であって、
前記ユーザの足の位置を推定する際には、床面の位置を推定し、当該推定した床面の位置の情報を用いて、ユーザの足の位置を推定する情報処理装置。
【請求項7】
請求項1から
4のいずれか一項に記載の情報処理装置であって、
前記ユーザ身体サイズデータを取得する手段は、ユーザの左右の手の位置の実空間中の位置を推定し、当該ユーザの左右の手の位置により、ユーザ身体サイズデータを取得する情報処理装置。
【請求項8】
ユーザに対して提示する、仮想空間の画像を生成する情報処理装置を用い、
検出手段が、実空間中の対象物の位置の情報を検出する工程と、
配置手段が、検出した前記対象物の実空間中での位置の情報に基づいて求められる、前記仮想空間内の位置に、前記対象物に対応する仮想物体を配置する工程と、
取得手段が、前記ユーザの実空間内での身体のサイズを表すユーザ身体サイズデータを取得する工程と、
キャラクタ身体サイズデータ取得手段が、複数のノードを含むボーンモデルで表される仮想キャラクタの、身体サイズを表すキャラクタ身体サイズデータを取得する工程と、
スケール演算手段が、前記ユーザ身体サイズデータと、キャラクタ身体サイズデータとの比に基づいてスケーリング係数を演算する工程と、
決定手段が、前記仮想空間内での前記仮想物体を配置する位置を、前記検出した対象物の実空間中での位置の情報と、
前記スケーリング係数と、前記実空間内でのユーザ身体サイズデータと、を用いて決定する工程と、
を含み、
当該仮想キャラクタ上の所定部位に配した仮想的なカメラからの画像を生成して、前記ユーザに仮想キャラクタの視点からの仮想空間の画像データを提供する情報処理方法。
【請求項9】
ユーザに対して提示する、仮想空間の画像を生成する情報処理装置を、
実空間中の対象物の位置の情報を検出する手段と、
検出した前記対象物の実空間中での位置の情報に基づいて求められる、前記仮想空間内の位置に、前記対象物に対応する仮想物体を配置する手段と、
前記ユーザの実空間内での身体のサイズを表すユーザ身体サイズデータを取得する手段と、
複数のノードを含むボーンモデルで表される仮想キャラクタの、身体サイズを表すキャラクタ身体サイズデータを取得する手段と、
前記ユーザ身体サイズデータと、キャラクタ身体サイズデータとの比に基づいてスケーリング係数を演算するスケール演算手段と、
前記仮想空間内での前記仮想物体を配置する位置を、前記検出した対象物の実空間中での位置の情報と、
前記スケーリング係数と、前記実空間内でのユーザ身体サイズデータと、を用いて決定する手段と、
として機能させ、
当該仮想キャラクタ上の所定部位に配した仮想的なカメラからの画像を生成させて、前記ユーザに仮想キャラクタの視点からの仮想空間の画像データを提供させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、及びプログラムに関する。
【背景技術】
【0002】
ユーザの身体の各部の予め定めた位置に、トラッカーと呼ばれるマーカーを取り付けて、これを外部から撮像し、マーカーの位置を推定するボディトラッキングの技術は広く知られている。
【0003】
また、このボディトラッキングにより推定されたユーザの実際の身体の各部の位置に基づいて、ゲーム空間や、VR空間等の仮想的な空間内でのキャラクタの姿勢を決定し、その仮想的な頭部の位置や、手の位置などの情報を得て、さらにこれらの情報に基づき、仮想空間内でのキャラクタの身体の画像を生成する技術が知られている。またさらに、キャラクタの仮想空間内の視点の位置からの画像を生成してユーザに提示する(いわゆる第一者(First Person)視点)ことにより、仮想空間にユーザが入り込んだかのような、没入感のある画像を提示する技術が知られている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
このような従来の仮想空間の画像を表示する技術では、実空間でのユーザの移動や姿勢の変化に対応するため、仮想空間内におけるキャラクタの視点は、ユーザの実際の身長に対応するものとして設定される。しかしながら、キャラクタの身長等のサイズは、ユーザの実際の身長に関わりなく設定されているため、当該ゲームのキャラクタの身長が、ユーザの身長と大きく異なる場合にも、その視点はユーザの身長に対応する位置となってしまう。
【0005】
さらに従来の技術では、第一者視点でありながら、キャラクタの手足と頭の位置との相対的位置関係がユーザ自身の手足と頭の位置との相対的位置関係とは異なるため、ユーザは、キャラクタの身体の動きが、自身の身体の動きと異なるという違和感を感じることとなっていた。
【0006】
従来の仮想空間の画像を表示する技術では、このような要因等により、キャラクタへの没入感が低くなってしまうという問題があった。
【0007】
本発明は上記実情に鑑みて為されたもので、キャラクタへの没入感を向上できる情報処理装置、情報処理方法、及びプログラムを提供することを、その目的の一つとする。
【課題を解決するための手段】
【0008】
上記従来例の問題点を解決する本発明の一態様は、ユーザに対して提示する、仮想空間の画像を生成する情報処理装置であって、実空間中の対象物の位置の情報を検出する手段と、検出した前記対象物の実空間中での位置の情報に基づいて求められる、前記仮想空間内の位置に、前記対象物に対応する仮想物体を配置する手段と、前記ユーザの実空間内での身体のサイズを表すユーザ身体サイズデータを取得する手段と、前記仮想空間内での前記仮想物体を配置する位置を、前記検出した対象物の実空間中での位置の情報と、前記実空間内でのユーザのユーザ身体サイズデータと、を用いて決定する手段と、を含むこととしたものである。
【発明の効果】
【0009】
本発明によると、キャラクタへの没入感を向上できる。
【図面の簡単な説明】
【0010】
【
図1】本発明の実施の形態に係る情報処理装置の構成例を表すブロック図である。
【
図2】本発明の実施の形態に係る情報処理装置に接続される表示装置の例を表す構成ブロック図である。
【
図3】本発明の実施の形態に係る情報処理装置の例を表す機能ブロック図である。
【
図4】本発明の実施の形態に係る情報処理装置が用いるボーンモデルの例を表す説明図である。
【
図5】本発明の実施の形態に係る情報処理装置の動作例を表すフローチャート図である。
【
図6】本発明の実施の形態に係る情報処理装置が設定する画角の例を表す説明図である。
【発明を実施するための形態】
【0011】
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係る情報処理装置1は、例えば家庭用ゲーム機であり、
図1に例示するように、制御部11と、記憶部12と、操作受入部13と、表示制御部14と、通信部15と、撮像部16とを含んで構成される。またこの情報処理装置1は、ユーザが頭部に装着するヘッドマウントディスプレイ(HMD)などの表示装置2との間で通信可能に接続されている。
【0012】
本実施の形態においてユーザが頭部に装着する表示装置2の一例は、ユーザが頭部に装着して使用する表示デバイスであって、
図2に例示するように、制御部21と、通信部22と、表示部23とを含む。ここでの例では表示装置2の制御部21は、マイクロコンピュータ等のプログラム制御デバイスであって、内蔵する記憶部等の図示しないメモリ等に格納されたプログラムに従って動作し、情報処理装置1から通信部22を介して入力される情報に応じた映像を表示部23に表示させて、ユーザに閲覧させる。通信部22は、有線または無線にて情報処理装置1との間で通信可能に接続される。通信部22は、情報処理装置1から表示装置2宛に送信された情報を、制御部21に出力する。表示部23は、ユーザの右目と左目とのそれぞれの目の前に、それぞれの目に対応した映像を表示するものとする。この表示部23は、有機EL表示パネルや液晶表示パネルなどの表示素子を含む。この表示素子が制御部21から入力される指示に従って映像を表示する。この表示素子は、左目用の映像と右目用の映像とを一列に並べて表示する1つの表示素子であってもよいし、左目用の映像と右目用の映像とをそれぞれ独立に表示する一対の表示素子であってもよい。なお、本実施形態においてこの表示装置2は、ユーザが外界の様子を視認することができない非透過型の表示装置である。
【0013】
また情報処理装置1の制御部11は、CPU等のプログラム制御デバイスであり、記憶部12に格納されているプログラムを実行する。本実施の形態では、この制御部11は、複数のノードを含むボーンモデルで表される仮想キャラクタの、身体サイズを表すキャラクタ身体サイズデータを取得し、さらに、ユーザの身体上の複数の部位であって、この仮想キャラクタのノードに対応する部位の実空間中の位置を推定する。また制御部11は、ユーザの身体サイズを表すユーザ身体サイズデータを取得して、このユーザ身体サイズデータと、キャラクタ身体サイズデータとの比に基づいてスケーリング係数を演算する。
【0014】
制御部11は、そして、仮想キャラクタのボーンモデルに含まれるノードの少なくとも一部のノードについて、当該ノードの仮想空間内での位置を、推定されたユーザの身体部位の実空間中の位置、及び、スケーリング係数を用いて決定し、当該仮想キャラクタ上の所定部位に配した仮想的なカメラからの画像を生成してユーザの頭部に装着された表示装置に当該生成した画像を提示させる。この制御部11の動作については後に詳しく述べる。
【0015】
記憶部12は、RAM等のメモリデバイスやディスクデバイス等であり、制御部11が実行するプログラムを格納する。また、この記憶部12は制御部11のワークメモリとしても動作し、制御部11がプログラム実行の過程で使用するデータを格納する。このプログラムは、コンピュータ可読かつ非一時的な記録媒体に格納されて提供され、この記憶部12に格納されたものであってもよい。
【0016】
操作受入部13は、操作デバイスCからユーザの指示操作を有線または無線にて受け入れる。ここで操作デバイスCは例えば、家庭用ゲーム機のコントローラ等である。操作受入部13はユーザが操作デバイスCに対して行った指示操作の内容を表す情報を、制御部11に出力する。
【0017】
表示制御部14は、制御部11から、入力された画像データを、通信部15を介して表示装置2宛に送出する。またこの表示制御部14は、ディスプレイ等に接続されてもよく、この場合は、表示装置2宛に送出するとともに、ディスプレイには、表示装置2を装着したユーザの視点の画像を表示させる。
【0018】
通信部15は、有線または無線にてユーザの表示装置2との間で通信可能に接続される。この通信部15は、表示制御部14から表示装置2宛に送信する画像データを含む情報を受け入れて、当該情報を、表示装置2に出力する。
【0019】
撮像部16は、例えばステレオカメラ等であり、互いに離れた場所に配された複数のカメラがいずれもユーザを撮像するよう、その画角と撮像の方向とが定められたものである。この撮像部16は、実空間でのユーザの画像を繰り返し撮像し、撮像して得た画像データを制御部11に送出する。
【0020】
ここで情報処理装置1の制御部11の動作について説明する。本実施の形態の制御部11は、一例として
図3に例示するように、キャラクタデータ取得部31と、実空間位置取得部32と、ユーザデータ取得部33と、スケール演算部34と、キャラクタ姿勢設定部35と、仮想オブジェクト配置処理部36と、レンダリング処理部37と、出力部38とを機能的に含んで構成される。
【0021】
キャラクタデータ取得部31は、キャラクタ身体サイズデータを取得する手段として、複数のノードを含むボーンモデルで表される仮想キャラクタの選択を、ユーザから受けて、当該選択された仮想キャラクタの身体サイズを表すキャラクタ身体サイズデータを取得する。ここでボーンモデルは、例えば
図4に例示するように、複数のノードと、一対のノード間を接続するボーンとを含むものであり、ノードは、仮想キャラクタの胸部CH、頚部NK、頭部HE、肩部SH、腕関節部EL、手関節部(腕先端)HD、腰部WT、股関節部HJ、膝部NE、足部FT…などの各部に対応する位置に配されるものとする。なお、
図4のボーンモデルは一例であり、本実施の形態では、広く知られた種々のボーンモデルを採用し得る。
【0022】
本実施の形態のキャラクタデータ取得部31は、予め定められた仮想キャラクタのボーンモデルや、外観を規定する情報(ポリゴンモデルやテクスチャなど)並びに、その身体サイズを表すキャラクタ身体サイズデータHcを取得する。ここでキャラクタ身体サイズデータHcは、ボーンモデルにおける仮想キャラクタの床面に最も近いノード、例えば足部FTのノードの高さFThと、床面から最も遠いノード、例えば頭部HEのノードの高さHEhの差HEh-FThで表される(Hc=HEh-FTh)。
【0023】
ここで高さは次のように表される。すなわち、仮想キャラクタの立つ仮想空間内の床面に垂直な方向(キャラクタが床面に直立したときの冠状面と矢状面とが交差する線分の方向)をZ軸とし、床面から上方をその正の向きとする。また、この仮想空間内の床面がZ=0の平面であるとして、床面に平行な軸であって、キャラクタが初期状態(体を動かしていない状態)にあるときの、当該仮想キャラクタの前後方向に向かう軸(横断面と矢状面との交差する線分の方向)をY軸、当該初期状態での仮想キャラクタの左右方向に向かう軸(横断面と冠状面との交差する線分の方向)をX軸とする。また、初期状態での仮想キャラクタの前方をY軸正の方向、初期状態でのキャラクタから見た右手側をX軸正の方向とする。このXYZ座標系(仮想空間のワールド座標系)の各軸の方向は、この後、キャラクタが移動しても変化しないものとする。
【0024】
そしてこの場合、仮想キャラクタの各部位の高さの値は、このXYZ座標系でノードの位置を表したとき、ノードの座標のZ軸の値を意味する。
【0025】
なお、ここではキャラクタデータ取得部31は、予め定められた仮想キャラクタに関するボーンモデル等の情報を取得することとしたが、本実施の形態の一例では、情報処理装置1の記憶部12には複数の仮想キャラクタに関するボーンモデルや外観を規定する情報、並びにキャラクタ身体サイズデータHcが格納されていてもよい。この場合、ユーザがそのうち一つを選択すると、キャラクタデータ取得部31は、当該選択された仮想キャラクタに関するボーンモデルや、外観を規定する情報、並びに、そのキャラクタ身体サイズデータHcを取得する。また、これらの仮想キャラクタに関するデータは、ネットワークを介して取得されてもよい。
【0026】
実空間位置取得部32は、ユーザ身体サイズデータを取得する手段の一例を実現するものであり、ユーザの身体上の複数の部位であって、キャラクタデータ取得部31が取得した仮想キャラクタのボーンモデルの少なくとも一部のノードに対応する部位の、実空間中の位置を推定する。
【0027】
本実施の形態の一例では、ユーザの頭部(頭部を取り囲む外接直方体の中心、以下同じ)、胸部、左右の腕の先端(左右の手)、腰部、及び左右の足(脚の先端)の各部位の実空間中の位置を検出することとする。また本実施の形態の例では、この実空間位置取得部32は、ユーザ身体サイズデータを取得する手段の一例を実現するものであり、ステレオカメラである撮像部16が撮像して得た、実空間でのユーザの画像から、上記ユーザの各部位の位置を表す情報を取得する。ここで、実空間でのユーザの各部位の位置を表す情報は、実空間内の所定の基準点を原点とした実空間でのワールド座標系(ξηζの直交座標系とする)での座標の値として定めることができる。
【0028】
ここでワールド座標系の基準点は、ユーザが立つ床面の所定の位置に設定すればよく、またこのようなワールド座標系の値として、ユーザの各部位の位置座標を、ユーザをステレオカメラで撮像した画像に基づいて推定して取得する方法は、広く知られているので、ここでの詳しい説明は省略する。
【0029】
なお、ここではステレオカメラにて撮像した画像に基づいてユーザの身体の部位部位の位置を検出する例としているが、本実施の形態はこれに限られず、トラッカーデバイス等からレーザーなどを照射してユーザの身体の各部位の位置を推定するトラッカーや、SLAM(Simultaneous Localization and Mapping)技術を応用してトラッカーデバイスが自立的に位置を推定する方法、さらには磁気やIMU(慣性計測装置)、GPS(Global Positioning System)やRFタグを利用する方法等、実空間でのユーザの各部位の位置座標が取得できれば、どのような方法を採用しても構わない。従って、採用する方法によっては、撮像部16は、必ずしも必要なものではない。
【0030】
ユーザデータ取得部33は、ユーザ身体サイズデータを取得する手段として、ユーザの身体サイズを表すユーザ身体サイズデータHuを取得する。具体的に、このユーザ身体サイズデータHuは、ユーザが床面に直立した状態にあるときの、ユーザの頭部の高さと、ユーザの足の高さとの差とする。ここで各部位の高さは、ユーザの身長方向の値であり、具体的には各部位のワールド座標系における座標値のζ軸成分の値によって表される。
【0031】
また本実施の形態では、情報処理装置1は、ユーザに対して直立したポーズで一時的に静止することを求め、その状態でのユーザの頭部の位置とユーザの足の位置とを取得し、これらの位置の情報から、ユーザ身体サイズデータHuを得てもよい。また、このユーザデータ取得部33は、ユーザ身体サイズデータHuに相当する値(上記高さの差)を所定の時間に亘って繰り返し取得し、取得した値のうち最大の値をユーザ身体サイズデータHuとしてもよい。これによれば、必ずしもユーザにポーズを求める必要がなくなる。
【0032】
なお、ここでユーザの足の位置は、ユーザの実際の足の位置を、撮像部16が得た画像に基づいて推定してもよいし、実際の足の位置の代わりに、床面の位置を足の位置としてもよい。
【0033】
さらに、ここではユーザの頭部の位置と足の位置とを取得する例としたが、ユーザ身体サイズデータHuは、必ずしも身長に相当する長さでなくてもよい。例えば統計的に、人間では身長に概ね等しくなることが知られている、両手間の最大距離(両手を広げた状態での両手間の距離)であってもよい。この場合、情報処理装置1は、ユーザに両手を広げたポーズを取るよう指示し、当該ポーズとなったときのユーザの左右の手の位置の実空間中の位置を推定し、その各手の位置間の距離を演算することにより、ユーザ身体サイズHuを得る。また、ユーザデータ取得部33はユーザ身体サイズデータHuに相当する値(上記両手間の距離)を所定の時間に亘って繰り返し取得し、取得した値のうち最大の値をユーザ身体サイズデータHuとしてもよい。
【0034】
なお、ユーザ身体サイズデータHuを、ユーザの両手間の最大距離とする場合は、キャラクタ身体サイズデータHcもキャラクタの両手間の最大距離(キャラクタが両手を広げた状態での両手間の距離)としておくこととしてもよい。
【0035】
さらにここではユーザデータ取得部33は、実空間位置取得部32が取得したユーザの実際の画像に基づいてユーザ身体サイズデータHuを取得することとしたが、本実施の形態はこれに限られず、ユーザデータ取得部33は、ユーザの操作により、当該ユーザの身長の入力を数値情報として受け入れて、ユーザ身体サイズデータHuとしてもよい。
【0036】
スケール演算部34は、スケール演算手段として、ユーザ身体サイズデータHuに対するキャラクタ身体サイズデータHcの比、Hc/Huに基づいてスケーリング係数Srを演算する。ここではスケール演算部34は、この比そのものをスケーリング係数Srとする。すなわち、Sr=Hc/Huであるものとする。
【0037】
キャラクタ姿勢設定部35は、キャラクタ姿勢推定手段として、仮想キャラクタのボーンモデルに含まれるノードの仮想空間内での位置を、推定されたユーザの身体部位の実空間中の位置と、スケーリング係数を用いて決定する。本実施の形態の一例では、このキャラクタ姿勢設定部35がユーザの身体部位の実空間中の位置と、スケーリング係数を用いて、仮想キャラクタの上記ノードの全ての仮想空間内での位置座標を決定する必要は必ずしもなく、仮想キャラクタのボーンモデルに含まれるノードのうち、予め選択された選択ノードの仮想空間内での位置を、上記推定されたユーザの身体部位の実空間中の位置、及び、スケーリング係数を用いて決定し、次に、当該決定された選択ノードの仮想空間内での位置に基づいて当該選択ノード以外の、仮想キャラクタのボーンモデルに含まれる各ノードの位置を決定することとしてもよい。
【0038】
本実施の形態のここでの例では、実空間位置取得部32が取得するユーザの体の部位に対応する仮想キャラクタの部位のノードを選択ノードとする。一例として、実空間位置取得部32がユーザの頭部、胸部、左右の腕の先端(左右の手)、腰部、及び左右の足(脚の先端)の各部位の実空間中の位置を取得する場合、キャラクタ姿勢設定部35は、仮想キャラクタにおける、対応するノード(頭部、胸部、左右の腕の先端(左右の手)、腰部、及び左右の足に対応するノード)を選択ノードとして、これら選択ノードの位置を、ユーザの身体部位の実空間中の位置と、スケーリング係数を用いて決定する。この決定方法については後に説明する。
【0039】
そしてキャラクタ姿勢設定部35は、当該選択ノード以外の、仮想キャラクタのボーンモデルに含まれる各ノードの位置を、上記決定された選択ノードの位置に基づいて決定する。この選択ノード以外のノードの位置の決定は、FABRIK(Forwards and Backwards Reaching Inverse Kinematics)などの、広く知られた逆運動学的方法により行うことができるので、ここでの説明は省略する。
【0040】
ここで選択ノードの位置の決定方法について説明する。本実施の形態では、キャラクタ姿勢設定部35は、選択ノードの位置を、次のようにして定める。すなわち、本実施の形態では、実空間のワールド座標系と仮想空間のワールド座標系とは原点とスケールとを一致させたものとして、キャラクタ姿勢設定部35が、ユーザ及び仮想キャラクタの頭部(仮想キャラクタについては頭部ノード)の位置からそれぞれ実空間と仮想空間の床面に下ろした垂線が、それぞれ対応する床面と交差する実空間及び、仮想空間の点の座標(ξ0,η0,ζ0),(x0,y0,z0)を基準点として、それぞれ実空間でのユーザの頭部の座標(ξHE,ηHE,ζHE)を用いて、(ξ0,η0,ζ0)=(ξHE,ηHE,0)、(x0,y0,z0)=(xHE,yHE,0)と設定する(既に述べたように、ここでの例では床面上に原点を設定しているため、ζ0=0、z0=0となる)。
【0041】
キャラクタ姿勢設定部35は、実空間位置取得部32が得た、ユーザの各部位の座標値を、ここで求めた基準点(実空間内の基準点)からの相対的位置に変換する。例えばキャラクタ姿勢設定部35は、ユーザの右手の相対的位置(ξrRH,ηrRH,ζrRH)を、実空間位置取得部32が得たユーザの右手の位置(ξRH,ηRH,ζRH)を用いて、(ξrRH,ηrRH,ζrRH)=(ξRH-ξ0,ηRH-η0,ζRH-ζ0)と求める。キャラクタ姿勢設定部35は、このようにして、ユーザの頭部、胸部、左右の腕の先端(左右の手)、腰部、及び左右の足(脚の先端)の各部位の、上記基準点からの相対的位置を求める。
【0042】
キャラクタ姿勢設定部35は、仮想空間内の仮想キャラクタのボーンモデルの、上記ユーザの各部位に対応するノードの相対的位置Nrを、対応する実空間でのユーザの部位の相対的位置の情報Prとスケーリング係数Srとを用いて、Nr=Sr×Prとして求める。例えば仮想空間内の仮想キャラクタの右手に対応するボーンモデルのノードの相対的位置の座標(xrRH,yrRH,zrRH)を、(xrRH,yrRH,zrRH)=(ξrRH×Sr,ηrRH×Sr,ζrRH×Sr)とする。
【0043】
キャラクタ姿勢設定部35は、仮想空間内の仮想キャラクタのボーンモデルの、上記ユーザの各部位に対応するノードの相対的位置Nrを、仮想空間内に設定した原点からの座標に変換して、選択ノードの座標値(x,y,z)を決定する。すなわち、上記の例であれば、仮想空間内の仮想キャラクタの右手に対応するボーンモデルのノードの座標値(xRH,yRH,zRH)を、(xRH,yRH,zRH)=(xrRH+x0,yrRH+y0,zrRH+z0)とする。
【0044】
キャラクタ姿勢設定部35は、他の選択ノードについても同様に、対応するユーザの部位の基準点からの相対的位置を求め、当該相対的位置にスケーリング係数を乗じて、仮想空間内における仮想キャラクタの選択ノードの相対的位置とする。そして当該選択ノードの座標を、相対的位置と仮想空間内の基準点の座標とから求める。
【0045】
仮想オブジェクト配置処理部36は、仮想物体を配置する手段として、仮想的に設定されたオブジェクトを仮想空間内に配置する。ここで仮想空間内に配置されるオブジェクトは、実空間内に配された実オブジェクトに対応するものであってもよいし、対応する実オブジェクトは存在しなくてもよい。
【0046】
例えば、この仮想オブジェクト配置処理部36は、実空間内にある壁の位置を取得し、仮想空間内の対応する位置に、仮想的なオブジェクトである壁を配置する。また仮想オブジェクト配置処理部36は、制御部11が実行するゲームプログラム等の処理により、実空間内には対応する実オブジェクトが存在しない、仮想的なオブジェクトである敵キャラクタ等を、仮想空間内に配置する。
【0047】
またこの仮想オブジェクト配置処理部36は、キャラクタデータ取得部31が取得した仮想キャラクタのポリゴンモデルを、キャラクタ姿勢設定部35が各ノードの位置を決定したボーンモデルに基づいて変形して表示する。このようにボーンモデルにより仮想空間内での仮想キャラクタの姿勢を制御する処理の方法は広く知られているので、ここでの説明は省略する。
【0048】
レンダリング処理部37は、仮想オブジェクト配置処理部36が設定した仮想空間内の画像をレンダリングして生成する。本実施の形態の一例では、このレンダリング処理部37は、仮想キャラクタの所定の部位(例えば頭部の位置)にレンダリング用のカメラがあるものとし、このカメラは仮想キャラクタの前方(頭部を横断する冠状面の法線方向であって、顔のある側)を向いているものとする。またその画角は、予め定められているものとする。
【0049】
レンダリング処理部37は、仮想空間内の各オブジェクト(仮想キャラクタ自身の各部を含む)を、上記のように設定されたカメラから見たときの画像データをレンダリングして生成する。このようなレンダリングの方法についても広く知られた方法を採用できる。
【0050】
出力部38は、レンダリング処理部37が生成した画像データを、ユーザが装着する表示装置2に対して送出する。
【0051】
[動作]
本実施の形態は、以上の構成を備えており、次のように動作する。以下の説明では、ゲーム中で利用する、仮想空間内の仮想キャラクタをユーザが選択して用いるものとする。また以下の説明で、実空間及び仮想空間のワールド座標系は、既に説明した例と同様に設定されるものとする。
【0052】
ユーザが情報処理装置1を操作して仮想キャラクタを選択すると、情報処理装置1は、
図5に例示する処理を開始し、当該仮想キャラクタのボーンモデルや、外観を規定する情報(ポリゴンモデルやテクスチャなど)並びに、その身体サイズを表すキャラクタ身体サイズデータHcを取得する(S1)。
【0053】
なおキャラクタ身体サイズデータHcは、仮想キャラクタのボーンモデルのうち、足部FTのノードの高さFThと、頭部HEのノードの高さHEhの差として、つまり、Hc=HEh-FThとして演算されてもよい。
【0054】
また情報処理装置1は、撮像部16にて撮像した、実空間でのユーザの画像から、ユーザの頭部、胸部、左右の腕の先端(左右の手)、腰部、及び左右の足(脚の先端)の各部位の実空間のワールド座標系(ξηζの直交座標系とする)での座標の値を所定のタイミングごとに複数回繰り返し求める(S2)。
【0055】
また情報処理装置1は、ユーザの身体サイズを表すユーザ身体サイズデータHuを取得する(S3)。具体的に、このユーザ身体サイズデータHuは、ユーザが床面に直立した状態にあるときの、ユーザの頭部の高さと、ユーザの足の高さとの差により求めてもよい。既に述べたように、例えば情報処理装置1は、ユーザ身体サイズデータHuに相当する値(上記高さの差)を所定の時間に亘って繰り返し取得し、取得した値のうち最大の値をユーザ身体サイズデータHuとすればよい。
【0056】
情報処理装置1は、ユーザ身体サイズデータHuに対するキャラクタ身体サイズデータHcの比、Hc/Huをスケーリング係数Sr(Sr=Hc/Hu)として求める(S4)。
【0057】
以下、情報処理装置1は、繰り返しの処理を開始し(ループ始)、撮像部16にて撮像した、実空間でのユーザの画像から、ユーザの頭部、胸部、左右の腕の先端(左右の手)、腰部、及び左右の足(脚の先端)の各部位の実空間のワールド座標系(ξηζの直交座標系とする)での座標の値を求める(S5)。
【0058】
そして情報処理装置1は、仮想キャラクタのボーンモデルに含まれるノードの仮想空間内での位置を、処理S5で推定されたユーザの身体部位の実空間中の位置と、処理S4で求めたスケーリング係数Srを用いて決定する(S6)。
【0059】
具体的に情報処理装置1は、処理S5で実空間中の位置を取得した、ユーザの各部位に対応する、仮想キャラクタのボーンモデルのノードを選択ノードとする。そして情報処理装置1は、処理S5で得たユーザの頭部の位置から床面に下ろした垂線が、床面と交差する実空間の座標(ξ0,η0,ζ0)=(ξHE,ηHE,0)と、仮想キャラクタの頭部のノードから床面に下ろした垂線が、床面と交差する仮想空間の点の座標(x0,y0,z0)=(xHE,yHE,0)とを求め、それぞれ実空間と仮想空間とにおける基準点とする。
【0060】
情報処理装置1は、処理S5で得たユーザの各部位の座標値を、ここで求めた基準点(実空間内の基準点)からの相対的位置に変換する。また、情報処理装置1は、仮想空間内の仮想キャラクタのボーンモデルの、上記ユーザの各部位に対応するノードの相対的位置Nrを、対応する実空間でのユーザの部位の相対的位置の情報Prとスケーリング係数Srとを用いて、Nr=Sr×Prとして求める。そして情報処理装置1は、仮想空間内の仮想キャラクタのボーンモデルの、上記ユーザの各部位に対応するノードの相対的位置Nr(基準点を原点とした座標系での値)を、仮想空間内に設定した原点からの座標値に変換して、各選択ノードの座標値(x,y,z)を決定する。
【0061】
また情報処理装置1は、選択ノード以外の、仮想キャラクタのボーンモデルに含まれる各ノードの位置を、上記決定された選択ノードの位置に基づいて決定する。この選択ノード以外のノードの位置の決定は、FABRIK(Forwards and Backwards Reaching Inverse Kinematics)などの、広く知られた逆運動学的方法により行うこととする。
【0062】
情報処理装置1は、さらに実空間内にある壁の位置を取得し、仮想空間内の対応する位置に、仮想的なオブジェクトである壁を配置する。また情報処理装置1は、実行しているゲームプログラム等の処理により、仮想的なオブジェクトである敵キャラクタ等を、仮想空間内のゲームプログラムにより指示された位置に配置する(S7:オブジェクト配置)。
【0063】
そして情報処理装置1は、仮想キャラクタのポリゴンモデルを、処理S5,S6で各ノードの位置を決定したボーンモデルに基づいて変形して表示する(S8:仮想キャラクタ配置)。
【0064】
情報処理装置1は、処理S7,S8で設定した仮想空間内の画像を、仮想キャラクタの所定の部位(例えば頭部の位置)に配した仮想的なカメラから見た画像データとしてレンダリングする(S9)。なお、このカメラの方向・画角は、仮想キャラクタの前方の予め定められた範囲とする。情報処理装置1は、ここでレンダリングした画像データをユーザの頭部に装着された表示装置2に送信して、ユーザに提示させる(S10)。
【0065】
情報処理装置1は、ゲームプログラムの実行中は、ここでの処理S5からS10を繰り返して実行する。これにより仮想キャラクタの視点からの仮想空間の画像データがユーザに提供され、また、ユーザがポーズを変化させれば、当該ポーズの変化に応じて仮想キャラクタのポーズも設定される。
【0066】
このとき、仮想キャラクタがユーザの身長よりも低い身長であれば、ユーザは当該低い身長からの視点で、仮想空間内の画像を見ることができる。また、本実施の形態では、仮想キャラクタのボーンモデルに含まれるノードの仮想空間内での位置を、ユーザの身体部位の実空間中の位置の推定結果と、身長や腕の長さなどの身体のサイズの比に関わるスケーリング係数Srとを用いて決定しているため、キャラクタの頭部から見た、キャラクタの手足の表示位置が、実空間中でユーザが自分の手足を見たときの位置(視点からの角度)に一致する。また、さらに本実施の形態では、このように決定したキャラクタの一部のノードの位置に基づく逆運動学的方法による演算を用いて、キャラクタの各部のノードの位置が決定されるため、キャラクタの頭部から見た、手足以外の関節等の位置も、実空間中でユーザが対応する関節等を見たときの位置(角度)に概ね一致することとなる。このような本実施の形態の情報処理装置1によると、ユーザの実際の身体のサイズと、キャラクタの身体のサイズとの比がどのようなスケールであっても、違和感のない表示が可能となり、キャラクタへの没入感を向上できる。
【0067】
[ユーザの移動]
また、ユーザが表示装置2を装着したまま移動することを許容する場合、ユーザが仮想空間内で認識している身長に対して、ユーザの現実空間の移動量に応じた仮想空間内での移動量をそのまま用いると(スケーリング係数を考慮しないと)、身長に対する移動量が大きすぎるように感じられてしまう。また、本実施の形態の上記の例では、移動後の足の位置の検出結果も、実空間の移動量と異なってしまうこととなる。
【0068】
そこで本実施の形態では、実空間中の壁等の対象物を、その実空間中での位置の情報に基づいて、仮想空間内の対応する位置に仮想的なオブジェクトとして表示する場合、当該オブジェクトの表示位置を次のように決定してもよい。
【0069】
このようにユーザが移動する場合も、情報処理装置1は、
図5に例示した処理を実行するが、処理S7において実空間内の基準点と、仮想空間内の基準点とを定める際に、処理の時点での(移動した後の)ユーザの頭部から床面に下ろした垂線の足を実空間内の基準点とし、仮想空間における仮想キャラクタのボーンモデルの頭部のノードから床面に下ろした垂線の足を仮想空間内の基準点とする。
【0070】
そして、情報処理装置1は、さらに実空間内にある壁等の対象物の位置を取得する。例えば情報処理装置1は、実空間内の対象物に外接する直方体の少なくとも3つの頂点の座標を取得する。そして情報処理装置1は、これらの頂点の座標を、実空間内の基準点からの相対座標に変換し、この相対座標の値を、スケーリング係数倍して、仮想空間内の基準点からの相対座標を求める。情報処理装置1は求められた各頂点の相対座標を、仮想空間内の原点からの座標に変換して、当該変換後の仮想空間内の座標に対応する頂点があるものとして、実空間内の対象物に対応する、仮想的なオブジェクトを配置する(仮想的なオブジェクトのポリゴンの形状やその位置等を設定する)。
【0071】
このように本実施の形態の一例では、実空間中での対象物の位置の情報に基づいて求められる、仮想空間内の位置に、対象物に対応する仮想的なオブジェクトを配置するにあたり、当該仮想空間内での仮想的なオブジェクトを配置する位置を、対象物の実空間中での位置の情報と、スケーリング係数とを用いて決定する。
【0072】
この例によると、仮想キャラクタの身長が、実際のユーザの身長より低い(スケーリング係数が「1」より小さい)とき、例えば仮想キャラクタと壁との距離は、実際のユーザと壁との距離に対して当該スケーリング係数の割合だけ短縮され、仮想キャラクタの歩幅(身長に比例すると仮定される)に合わせて近接することとなる。これにより、ユーザが壁に触れる位置まで移動したとき、仮想キャラクタから見た画像データにおいても、仮想キャラクタが壁に触れる位置まで移動した状態となって違和感が軽減される。
【0073】
なお、実際にはユーザの腕の長さは変化しないので、仮想空間における仮想オブジェクトの相対座標を演算する際に、実空間の相対座標値のξ,η軸成分の値からそれぞれユーザの腕の長さに相当する値を差引きした後、スケーリング係数倍し、さらに上記腕の長さに相当する値を加算して、仮想空間内の基準点からの相対座標を求めてもよい。
【0074】
この例では、例えばユーザと壁までの実空間での距離をdwとし、腕の長さをlaとしたとき、仮想空間での壁と仮想キャラクタとの距離dw′が、
dw′=Sr×(dw-Sr×la)+Sr×la
として演算されることとなる。
【0075】
ここでユーザの腕の長さは、ユーザから指定されてもよいし、ユーザの身体上の複数の部位の実空間中の位置の情報に基づいて、当該ユーザの実空間内での腕の長さを推定することとしてもよい。この推定は、例えば推定された身長に対する一般的な人間の腕の長さとしてもよいし、身長の推定と同様、
図5の処理S2において繰り返し検出された、胸部から腕の先端までの長さの最大値を用いてもよい。
【0076】
[視野角]
さらに、本実施の形態の制御部11は、仮想キャラクタ上の所定部位に配した仮想的なカメラからの画像データをレンダリングする際に、当該カメラの画角を、仮想キャラクタのボーンモデルの腕の長さWcの情報を用いて決定してもよい。
【0077】
ここで、ボーンモデルの腕の長さWcは、ボーンモデルを床面に直立した状態に設定し、腕を一杯に広げた状態(いわゆるTポーズの状態)としたとき、頭部HEのノードから床面に対して下ろした垂線Lと、腕部の先端のノードとの最短距離(腕部の先端のノードから垂線Lに下ろした垂線の足までの距離)として規定する。
【0078】
制御部11は、ユーザ身体サイズデータを取得する手段の一例に係る機能を実現するものであり、ユーザの腕の長さWu(実空間での腕の長さ)の情報を取得しておく。このユーザの腕の長さWuも、ユーザから指定されてもよいし、ユーザの身体上の複数の部位の実空間中の位置の情報に基づいて、当該ユーザの実空間内での腕の長さを推定することとしてもよい。つまり、上述と同様、推定された身長に対する一般的な人間の腕の長さとしてもよいし、身長の推定と同様、
図5の処理S2において繰り返し検出された、胸部から腕の先端までの長さの最大値を用いてもよい。
【0079】
そして制御部11は、仮想空間内の画像をレンダリングする際に、その仮想的なレンダリング用のカメラの画角を次のように定める。ここで予め定められた画角をθとする。この画角は、
図6に例示するように、カメラが撮像する範囲(いわゆる視錐台(viewing frustum)VFの頂角を意味し、鉛直方向の画角θVと、水平方向の画角θHとがあり、予めデフォルトの画角(鉛直方向,水平方向のデフォルトの画角をそれぞれθV0、θH0とする))が定められているものである。
【0080】
制御部11は、仮想キャラクタの視点(頭部)からの仮想空間の画像データをレンダリングする際の画角θH,θVを、
【数1】
または、
【数2】
と定める。
【0081】
これらの例では、画角が仮想キャラクタの腕の長さに基づいて、より詳細には、仮想キャラクタの身長に対する、仮想キャラクタの腕の長さの比、あるいは、当該比に、ユーザの腕の長さに対するユーザの身長の比を乗じた値に応じて、制御される。
【0082】
なお、仮想キャラクタの腕の長さが左右で異なる場合は、いずれか長いほうの長さ、あるいはいずれか短いほうの長さをその仮想キャラクタの腕の長さWcとすればよい。
【0083】
また仮想キャラクタが人型のキャラクタである場合など、腕の長さと身長との比が人物と異ならない場合は、画角をデフォルトのまま(θV=θV0,θH=θH0)としてもよい。
【0084】
一方で、腕の長さが身長に応じて比例的に変化すると仮定できない場合(極端に腕の短いロボットのキャラクタや、極端に腕の長いドラゴン等のキャラクタとなる場合)は、腕の長さにより画角を設定することで、その仮想キャラクタに特有の視野(極端に狭い視野や極端に広い視野)として仮想空間の画像データをレンダリングする。これにより違和感のない表示が可能となり、キャラクタへの没入感を向上できる。
【0085】
[ボーンモデルの調整]
本実施の形態の情報処理装置1は、さらに、利用する仮想キャラクタのボーンモデルの身長に対する腕の長さを変更することで、キャラクタの頭部から見た、キャラクタの手足の表示位置を、実空間中でユーザが自分の手足を見たときの位置(視点からの角度)に一致させるように制御してもよい。
【0086】
具体的にボーンモデルがTポーズの状態における各ノードの座標値で規定されている場合、情報処理装置1は、利用しようとするボーンモデルを複写し、さらに当該ボーンモデルのノードの座標値を次のように補正して、補正ボーンモデルを生成する。
【0087】
すなわち、初期のTポーズの状態の各ノードの座標値が、ボディ(胴体)の中心軸がZ軸に一致する(当該中心軸がX=Y=0の直線上にある)ときの値として規定され、Tポーズでの腕の方向がX軸に平行である場合、腕に属する各ノード(肘や手首、手指等に相当するノード)の座標(x,y)のX座標値xを、所定の補正係数倍する。
【0088】
ここで補正係数は、仮想キャラクタの身長Hcと、仮想キャラクタの両腕の長さ(両腕を左右にいっぱいに伸ばしてTポーズをとったときの両腕先端間の距離)Wcとの比Hc/Wc(ユーザの身長と両腕の長さとが等しいと仮定したときの値)、あるいはこれに、ユーザの両腕の長さWuと身長Hu(それぞれをユーザ身体サイズデータとして取得する)との比を乗じた値(Hc/Wc)×(Wu/Hu)とすればよい。
【0089】
以下情報処理装置1は、この補正された補正ボーンモデルを用いてキャラクタの描画を行う。この場合、キャラクタの身長に対する両腕の長さが、ユーザの身長と両腕の長さとの比などを考慮した値で補正されているので、ユーザの実際の身体のサイズと、キャラクタの身体のサイズとの比がどのようなスケールであっても、違和感のない表示が可能となり、キャラクタへの没入感を向上できる。
【0090】
[表示の別の例]
なお、本実施の形態のここまでの説明では、情報処理装置1は、ユーザの頭部に装着されるHMD等のデバイスが表示する画像を生成することとしていたが、本実施の形態はこれに限られず、第一者視点から表示される画像を、家庭用テレビなどの一般的なディスプレイデバイスに表示する場合であっても適用できる。この場合、表示装置2、及びそれに対する出力の処理は必ずしも必要ではない。
【符号の説明】
【0091】
1 情報処理装置、2 表示装置、11 制御部、12 記憶部、13 操作受入部、14 表示制御部、15 通信部、16 撮像部、21 制御部、22 通信部、23 表示部、31 キャラクタデータ取得部、32 実空間位置取得部、33 ユーザデータ取得部、34 スケール演算部、35 キャラクタ姿勢設定部、36 仮想オブジェクト配置処理部、37 レンダリング処理部、38 出力部。