(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-05
(45)【発行日】2024-12-13
(54)【発明の名称】画像生成装置、画像生成方法および画像表示プログラム
(51)【国際特許分類】
G09G 5/00 20060101AFI20241206BHJP
【FI】
G09G5/00 550C
G09G5/00 510A
G09G5/00 550B
G09G5/00 550X
(21)【出願番号】P 2021063122
(22)【出願日】2021-04-01
【審査請求日】2024-01-29
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100105924
【氏名又は名称】森下 賢樹
(74)【代理人】
【識別番号】100109047
【氏名又は名称】村田 雄祐
(74)【代理人】
【識別番号】100109081
【氏名又は名称】三木 友由
(74)【代理人】
【識別番号】100134256
【氏名又は名称】青木 武司
(72)【発明者】
【氏名】池田 貴一
【審査官】薄井 義明
(56)【参考文献】
【文献】国際公開第2018/225187(WO,A1)
【文献】国際公開第2015/098292(WO,A1)
【文献】米国特許出願公開第2019/0243472(US,A1)
【文献】中国特許出願公開第111652962(CN,A)
【文献】特開2020-042592(JP,A)
【文献】特開2020-071718(JP,A)
【文献】特開2017-215875(JP,A)
【文献】特開2020-064520(JP,A)
【文献】特開2020-048185(JP,A)
【文献】特開2019-106628(JP,A)
【文献】特開2021-035810(JP,A)
【文献】特開2020-071394(JP,A)
【文献】特表2018-500616(JP,A)
【文献】米国特許出願公開第2021/0044792(US,A1)
【文献】国際公開第2018/158896(WO,A1)
【文献】国際公開第2016/002318(WO,A1)
【文献】国際公開第2019/229816(WO,A1)
【文献】国際公開第2020/080177(WO,A1)
【文献】国際公開第2019/116994(WO,A1)
【文献】山口 勝也, 木島 竜吾,VRシステムのためのUSB通信を用いた統合時間軸の構成とPC-デバイス同期精度の評価,第21回日本バーチャルリアリティ学会大会論文集,日本,2016年09月16日,P.33D-01
(58)【調査した分野】(Int.Cl.,DB名)
G09G 5/00
(57)【特許請求の範囲】
【請求項1】
画像生成に関する処理の開始からHMD画像がヘッドマウントディスプレイに表示されるまでの遅延時間を予測する時間予測部と、
現在の前記ヘッドマウントディスプレイの姿勢を示す姿勢情報を取得する姿勢情報取得部と、
前記姿勢情報に基づいて画像をレンダリングするレンダリング部と、
前記予測した遅延時間に基づいて、
レンダリングされた前記画像に対してリプロジェクション処理を実行することにより、前記HMD画像を生成する画像処理部と、
前記画像生成に関する処理の開始から、前記画像処理部によって前記レンダリングされた画像に対する画像処理が開始されるまでの描画時間をデータ記憶部に蓄積する時間蓄積部と、
を備え
、
前記データ記憶部は、前記HMD画像が生成されてから前記ヘッドマウントディスプレイに表示されるまでの表示処理時間を予め記憶しており、
前記時間予測部は、前記蓄積された描画時間及び前記表示処理時間に基づいて前記遅延時間を予測し、
前記時間蓄積部は、前記ヘッドマウントディスプレイの垂直同期タイミング毎にカウント値を増分するカウンタを備え、
前記時間蓄積部は、前記画像生成に関する処理の開始から前記レンダリングされた画像に対する画像処理の開始までの前記カウント値に基づいて算出された前記描画時間を前記データ記憶部に蓄積することを特徴とする画像生成装置。
【請求項2】
HMD画像の生成を開始させるための描画コマンドのフレームデータにフレームIDを紐づけてレンダリング部に供給する描画コマンド供給部と、
画像生成に関する処理の開始から前記HMD画像がヘッドマウントディスプレイに表示されるまでの遅延時間を予測する時間予測部と、
現在の前記ヘッドマウントディスプレイの姿勢を示す姿勢情報を取得する姿勢情報取得部と、
前記姿勢情報に基づいて画像をレンダリン
グする
前記レンダリング部と、
前記予測した遅延時間に基づいて、レンダリングされた前記画像に対してリプロジェクション処理を実行することにより、前記HMD画像を生成する画像処理部と、
前記画像生成に関する処理の開始から、前記画像処理部によって前記レンダリングされた画像に対する画像処理が開始されるまでの描画時間をデータ記憶部に蓄積する時間蓄積部と、
を備え、
前記データ記憶部は、前記HMD画像が生成されてから前記ヘッドマウントディスプレイに表示されるまでの表示処理時間を予め記憶しており、
前記時間予測部は、前記蓄積された描画時間及び前記表示処理時間に基づいて前記遅延時間を予測
し、
を備え、
前記レンダリング部は、前記描画コマンドに応答してレンダリング処理を開始し、前記レンダリングされた画像のフレームデータに前記フレームIDを紐づけて前記画像処理部に供給し、
前記画像処理部は、前記HMD画像のフレームデータに前記フレームIDを紐づけ、
前記時間蓄積部は、前記フレームIDにそれぞれ紐づけられた、前記描画コマンドのフレームデータにおける前記描画コマンドの生成開始時のタイムスタンプと、前記画像処理部による前記画像処理の開始時のタイムスタンプとに基づいて算出された前記描画時間を前記データ記憶部に蓄積する、画像生成装置。
【請求項3】
前記姿勢情報及び前記予測した遅延時間に基づいて、前記現在から前記予測した遅延時間の経過後の前記ヘッドマウントディスプレイの姿勢の予測結果を示す予測姿勢情報を生成する姿勢予測部をさらに備え、
前記画像処理部は、前記予測姿勢情報に基づいて、前記レンダリングされた画像にリプロジェクション処理を施すことにより、前記HMD画像を生成する、請求項
1又は2に記載の画像生成装置。
【請求項4】
前記描画コマンド供給部は、前記画像に関する処理とは別の後続の画像に関する処理において、前記画像に関する処理が実行されている前記フレームデータに紐づけられたフレームIDとは異なるフレームIDを前記描画コマンドに紐づける、請求項
2に記載の画像生成装置。
【請求項5】
画像生成に関する処理の開始からHMD画像がヘッドマウントディスプレイに表示されるまでの遅延時間を予測するステップと、
現在の前記ヘッドマウントディスプレイの姿勢を示す姿勢情報を取得するステップと、
前記姿勢情報に基づいて画像をレンダリングするステップと、
前記予測した遅延時間に基づいて、
レンダリングされた前記画像に対してリプロジェクション処理を実行することにより、前記HMD画像を生成するステップと、
前記画像生成に関する処理の開始から、前記生成するステップにおいて前記レンダリングされた画像に対する画像処理が開始されるまでの描画時間をデータ記憶部に蓄積するステップと、
を含
み、
前記データ記憶部は、前記HMD画像が生成されてから前記ヘッドマウントディスプレイに表示されるまでの表示処理時間を予め記憶しており、
前記予測するステップは、前記蓄積された描画時間及び前記表示処理時間に基づいて前記遅延時間を予測し、
前記蓄積するステップは、前記ヘッドマウントディスプレイの垂直同期タイミング毎にカウント値を増分するカウンタによる、前記画像生成に関する処理の開始から前記レンダリングされた画像に対する画像処理の開始までの前記カウント値に基づいて前記描画時間を算出するステップと、算出された前記描画時間を前記データ記憶部に蓄積するステップとを含むことを特徴とする画像生成方法。
【請求項6】
HMD画像の生成を開始させるための描画コマンドのフレームデータにフレームIDを紐づけるステップと、
画像生成に関する処理の開始から前記HMD画像がヘッドマウントディスプレイに表示されるまでの遅延時間を予測するステップと、
現在の前記ヘッドマウントディスプレイの姿勢を示す姿勢情報を取得するステップと、
前記姿勢情報に基づいて画像をレンダリングするステップと、
前記予測した遅延時間に基づいて、レンダリングされた前記画像に対してリプロジェクション処理を実行することにより、前記HMD画像を生成するステップと、
前記画像生成に関する処理の開始から、前記生成するステップにおいて前記レンダリングされた画像に対する画像処理が開始されるまでの描画時間をデータ記憶部に蓄積するステップと、
を含み、
前記データ記憶部は、前記HMD画像が生成されてから前記ヘッドマウントディスプレイに表示されるまでの表示処理時間を予め記憶しており、
前記予測するステップは、前記蓄積された描画時間及び前記表示処理時間に基づいて前記遅延時間を予測し、
前記レンダリングするステップは、前記フレームIDが紐付けられた前記描画コマンドに応答してレンダリング処理を開始し、前記レンダリングされた画像のフレームデータに前記フレームIDを紐づけ、
前記生成するステップは、前記レンダリングされた画像のフレームデータに紐付けられた前記フレームIDに基づいて、前記HMD画像のフレームデータに前記フレームIDを紐づけ、
前記蓄積するステップは、前記フレームIDにそれぞれ紐づけられた、前記描画コマンドのフレームデータにおける前記描画コマンドの生成開始時のタイムスタンプと、前記画像処理の開始時のタイムスタンプとに基づいて算出された前記描画時間を前記データ記憶部に蓄積することを特徴とする画像生成方法。
【請求項7】
プロセッサを、
画像生成に関する処理の開始からHMD画像がヘッドマウントディスプレイに表示されるまでの遅延時間を予測する時間予測部と、
現在の前記ヘッドマウントディスプレイの姿勢を示す姿勢情報を取得する姿勢情報取得部と、
前記姿勢情報に基づいて画像をレンダリングするレンダリング部と、
前記予測した遅延時間に基づいて、
レンダリングされた前記画像に対してリプロジェクション処理を実行することにより、前記HMD画像を生成する画像処理部と、
前記画像生成に関する処理の開始から、前記画像処理部によって前記レンダリングされた画像に対する画像処理が開始されるまでの描画時間をデータ記憶部に蓄積する時間蓄積部と、
として機能させ
、
前記データ記憶部は、前記HMD画像が生成されてから前記ヘッドマウントディスプレイに表示されるまでの表示処理時間を予め記憶しており、
前記時間予測部は、前記蓄積された描画時間及び前記表示処理時間に基づいて前記遅延時間を予測し、
前記時間蓄積部は、前記ヘッドマウントディスプレイの垂直同期タイミング毎にカウント値を増分するカウンタを備え、
前記時間蓄積部は、前記画像生成に関する処理の開始から前記レンダリングされた画像に対する画像処理の開始までの前記カウント値に基づいて算出された前記描画時間を前記データ記憶部に蓄積する、画像生成プログラム。
【請求項8】
プロセッサを、
HMD画像の生成を開始させるための描画コマンドのフレームデータにフレームIDを紐づけてレンダリング部に供給する描画コマンド供給部と、
画像生成に関する処理の開始から前記HMD画像がヘッドマウントディスプレイに表示されるまでの遅延時間を予測する時間予測部と、
現在の前記ヘッドマウントディスプレイの姿勢を示す姿勢情報を取得する姿勢情報取得部と、
前記姿勢情報に基づいて画像をレンダリングする前記レンダリング部と、
前記予測した遅延時間に基づいて、レンダリングされた前記画像に対してリプロジェクション処理を実行することにより、前記HMD画像を生成する画像処理部と、
前記画像生成に関する処理の開始から、前記画像処理部によって前記レンダリングされた画像に対する画像処理が開始されるまでの描画時間をデータ記憶部に蓄積する時間蓄積部と、
として機能させ、
前記データ記憶部は、前記HMD画像が生成されてから前記ヘッドマウントディスプレイに表示されるまでの表示処理時間を予め記憶しており、
前記時間予測部は、前記蓄積された描画時間及び前記表示処理時間に基づいて前記遅延時間を予測し、
前記レンダリング部は、前記描画コマンドに応答してレンダリング処理を開始し、前記レンダリングされた画像のフレームデータに前記フレームIDを紐づけて前記画像処理部に供給し、
前記画像処理部は、前記HMD画像のフレームデータに前記フレームIDを紐づけ、
前記時間蓄積部は、前記フレームIDにそれぞれ紐づけられた、前記描画コマンドのフレームデータにおける前記描画コマンドの生成開始時のタイムスタンプと、前記画像処理部による前記画像処理の開始時のタイムスタンプとに基づいて算出された前記描画時間を前記データ記憶部に蓄積する、画像生成プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像生成技術に関する。
【背景技術】
【0002】
ゲーム機に接続されたヘッドマウントディスプレイを頭部に装着して、ヘッドマウントディスプレイに表示された画面を見ながら、コントローラなどを操作してゲームプレイすることが行われている。ヘッドマウントディスプレイを装着すると、ヘッドマウントディスプレイに表示される映像以外はユーザは見ないため、映像世界への没入感が高まり、ゲームのエンタテインメント性を一層高める効果がある。また、ヘッドマウントディスプレイに仮想現実(VR:Virtual Reality)映像を表示させ、ヘッドマウントディスプレイを装着したユーザが頭部を回転させると、360度見渡せる全周囲の仮想空間が表示される。これにより、さらに映像への没入感が高まり、ゲームなどのアプリケーションの操作性も向上する。
【0003】
このようにヘッドマウントディスプレイにヘッドトラッキング機能をもたせて、ユーザの頭部の動き(姿勢)と連動して視点や視線方向を変えてVR映像を生成した場合、VR映像の生成から表示までに遅延がある。そのため、映像生成時に前提としたユーザの姿勢と、VR映像をヘッドマウントディスプレイに表示した時点でのユーザの姿勢との間でずれが発生する場合がある。その結果、ユーザは酔ったような感覚(「VR酔い(Virtual Reality Sickness)」などと呼ばれる)に陥ることがある。そこで、描画画像を映像表示時の姿勢に合ったものに補正するリプロジェクション処理が一般的に用いられている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
ヘッドマウントディスプレイを用いて画像を提供するために、性能の異なる様々な画像生成システムが開発されている。それに伴い、利用する画像生成システムに応じて画像の生成から表示までの遅延時間をより適切に設定して、リプロジェクション処理に適用する技術が求められている。
【0005】
上記を鑑み、本発明の目的は、利用する画像生成システムに応じて画像の生成から表示までの遅延時間をより適切に設定して、リプロジェクション処理に適用する技術を提供することにある。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明のある態様の画像生成装置は、画像生成に関する処理の開始からHMD画像がヘッドマウントディスプレイに表示されるまでの遅延時間を予測する時間予測部と、前記予測した遅延時間に基づいて、リプロジェクション処理を実行することにより、前記HMD画像を生成する画像処理部と、を備えることを特徴とする。
【0007】
なお、以上の任意の組み合わせや、本発明の構成要素や表現を方法、装置、プログラム、プログラムを記録した一時的なまたは一時的でない記憶媒体、システムなどの間で相互に置換したものもまた、本発明の態様として有効である。
【発明の効果】
【0008】
本発明によれば、利用する画像生成システムに応じて画像の生成から表示までの遅延時間をより適切に設定して、リプロジェクション処理に適用することが可能となる。
【図面の簡単な説明】
【0009】
【
図1】ヘッドマウントディスプレイの外観図である。
【
図4】画像生成に関する処理の開始からHMD画像がHMDに表示されるまでの流れを説明するための図である。
【
図5】画像生成装置における画像生成に関する処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0010】
(実施形態)
図1は、ヘッドマウントディスプレイ(HMD)100の外観図である。HMD100は、ユーザの頭部に装着してディスプレイに表示される静止画や動画などを鑑賞し、ヘッドフォンから出力される音声や音楽などを聴くための表示装置である。
【0011】
HMD100に内蔵または外付けされたジャイロセンサや加速度センサなどによりHMD100を装着したユーザの頭部の位置情報と頭部の回転角や傾きなどの姿勢(orientation)情報を計測することができる。
【0012】
HMD100には、さらに、ユーザの目を撮影するカメラが設けられてもよい。HMD100に搭載されたカメラにより、ユーザの凝視方向、瞳孔の動き、瞬きなどを検出することができる。
【0013】
HMD100は、「ウェアラブルディスプレイ」の一例である。ここでは、HMD100に表示される画像の生成方法を説明する。なお、本実施の形態の画像生成方法は、狭義のHMD100に限らず、めがね、めがね型ディスプレイ、めがね型カメラ、ヘッドフォン、ヘッドセット(マイクつきヘッドフォン)、イヤホン、イヤリング、耳かけカメラ、帽子、カメラつき帽子、ヘアバンドなどを装着した場合にも適用することができる。
【0014】
図2は、本実施の形態に係る画像生成システムの構成図である。画像生成システム1は、HMD100及び画像生成装置200を含む。HMD100は、一例として、映像・音声をデジタル信号で伝送する通信インタフェースの標準規格であるHDMI(登録商標)(High-Definition Multimedia Interface)や映像出力インタフェースの規格であるDisplayPortなどのインタフェースを介して画像生成装置200に接続される。
【0015】
本実施形態では、HMD100と画像生成装置200の間のデータ伝送路300はHDMI伝送路またはDisplayPort伝送路である。HDMI規格またはDisplayPort規格では、画像フレームに紐付けてセカンダリデータパケットを伝送することができ、セカンダリデータパケットにフレームに関連するメタデータを含めることができる。HDMI2.1規格には動的HDR(High Dynamic Range)と呼ばれる機能があり、映像の動的メタデータ(Dynamic Metadata)を参照してシーンに応じてフレーム毎に輝度や色の深度を最適に調整した映像を生成することができる。HDMI2.1規格では動的メタデータは、シーンの最大輝度、平均輝度、最小輝度など動的HDRに必要な情報を映像に同期させて伝送することができる。HMD100と画像生成装置200の通信インタフェースは、メタデータを映像と同期させて伝送できるものであれば、HDMIやDisplayPortに限られない。
【0016】
画像生成装置200は、HMD100の現在の位置・姿勢情報から、映像の生成から表示までの遅延を考慮してHMD100の予測位置・姿勢情報を生成する。画像生成装置200は、HMD100の予測位置・姿勢情報を前提としてHMD100用の画像(以下、HMD画像とする)を描画し、HMD100に伝送する。
【0017】
本実施形態の画像生成装置200はゲーム機である。画像生成装置200は、さらにネットワークを介してサーバに接続されてもよい。その場合、サーバは、複数のユーザがネットワークを介して参加できるゲームなどのオンラインアプリケーションを画像生成装置200に提供してもよい。
【0018】
画像生成装置200は基本的に、コンテンツのプログラムを処理し、HMD画像を生成してHMD100に送信する。コンテンツのプログラムやデータは、ゲームなどのコンテンツのアプリケーションソフトウェア、およびライセンス情報を記録したROM媒体(不図示)からメディアドライブ(不図示)によって読み出される。このROM媒体は、光ディスクや光磁気ディスク、ブルーレイディスクなどの読出専用の記録メディアである。ある態様において画像生成装置200は、HMD100を装着したユーザの頭部の位置や姿勢に基づき視点の位置や視線の方向を特定し、それに応じた視野となるようにコンテンツのHMD画像を所定のレートで生成する。
【0019】
HMD100はHMD画像のデータを受信し、コンテンツの画像として表示する。HMD100に表示される映像は、予めカメラで撮影された映像の他、ゲーム映像のようなコンピュータグラフィックスによる映像や、ネットワーク経由で配信される遠隔地のライブ映像であってもよい。また、HMD100に表示される画像は、VR画像、AR(拡張現実)画像、MR画像等であってもよい。
【0020】
図3は、
図2の画像生成装置200の機能構成図である。同図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウェアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。画像生成装置200は、位置・姿勢取得部201と、視点・視線設定部202と、描画コマンド供給部203と、時間蓄積部204と、時間予測部205と、位置・姿勢予測部206と、レンダリング部207と、画像処理部208と、HDMI送受信部209と、データ記憶部210と、を備える。
【0021】
画像生成装置200の少なくとも一部の機能をHMD100に実装してもよい。あるいは、画像生成装置200の少なくとも一部の機能を、ネットワークを介して画像生成装置200に接続されたサーバに実装してもよい。
【0022】
位置・姿勢取得部201は、HMD100の現在の位置・姿勢情報L1をHMD100から取得する。
【0023】
視点・視線設定部202は、位置・姿勢取得部201により取得されたHMD100の位置・姿勢情報L1を用いて、ユーザの視点位置および視線方向を設定する。
【0024】
描画コマンド供給部203は、HMD画像の生成を開始させるための描画コマンドを生成する。描画コマンド供給部203は、描画コマンドのフレームデータを後述のフレームIDに紐づける。
【0025】
時間蓄積部204は、同一のフレームIDに紐づけられた各フレームデータに関する後述の第1及び第2タイムスタンプを蓄積して後述の描画時間を算出し、この描画時間をデータ記憶部210に蓄積する。
【0026】
時間予測部205は、後述するように、データ記憶部210に蓄積された過去の描画時間及び表示処理時間に基づいて、画像生成に関する処理を開始してからHMD画像がHMD100に表示されるまでの遅延時間を予測する。
【0027】
位置・姿勢予測部206は、時間予測部205により予測された遅延時間の間の位置および姿勢の変化量を予測する。位置・姿勢予測部206は、HMD100を装着したユーザの頭部の並進速度や角速度に遅延時間を乗じることで位置および姿勢の変化量を求めることができる。位置・姿勢予測部206は、現在の位置・姿勢情報L1に遅延時間の間の位置および姿勢の変化量を加算することにより遅延時間の経過後の予測位置・姿勢情報L2を生成する。
【0028】
レンダリング部207は、描画コマンドに応答して、データ記憶部210から画像の生成に必要な画像データを読み出し、仮想空間のオブジェクトをレンダリングして画像を生成する。例えば、レンダリング部207は、視点・視線設定部202によって設定されたユーザの視点位置および視線方向にしたがって、HMD100を装着したユーザの視点位置から視線方向に見える仮想空間のオブジェクトをレンダリングすることにより画像を生成する。ここで、画像データは、事前に作成された動画または静止画コンテンツであってもよく、レンダリングされたコンピュータグラフィックスであってもよい。レンダリング部207は、レンダリング画像のフレームデータを後述のフレームIDに紐づける。
【0029】
画像処理部208は、レンダリング画像に必要に応じた画像処理を施すことにより、HMD画像を生成し、HDMI送受信部209に与える。画像処理部208は、ポストプロセス部208aと、リプロジェクション部208bと、歪み処理部208cとを含む。画像処理部208は、HMD画像のフレームデータを後述のフレームIDに紐づける。
【0030】
ポストプロセス部208aは、レンダリング部207から供給された画像に対して、被写界深度調整、トーンマッピング、アンチエイリアシングなどのポストプロセスを施し、CG画像が自然で滑らかに見えるように後処理を施す。
【0031】
リプロジェクション部208bは、位置・姿勢予測部206から予測位置・姿勢情報L2を受け取り、ポストプロセスが施された画像に対してリプロジェクション処理を施す。これにより、リプロジェクション部208bは、ポストプロセスが施された画像を遅延時間に応じた視点位置・視線方向から見える画像に変換する。
【0032】
歪み処理部208cは、リプロジェクション処理が施された画像に対してHMD100の光学系で生じる歪みに合わせて画像を変形(distortion)させて歪ませる処理を施すことにより、HMD画像を生成する。
【0033】
HDMI送受信部209は、画像処理部208からHMD画像を受け取る。HDMI送受信部209は、HDMIにしたがってHMD画像をHMD100に伝送する。
【0034】
データ記憶部210は、画像の生成に必要なデータや各種処理を実行するための各種プログラムを格納する。データ記憶部210は、後述する第1及び第2タイムスタンプをフレームIDに紐づけて記憶する。データ記憶部210は、後述する描画時間及び表示処理時間を記憶する。
【0035】
ここで、HMD100の姿勢を検知し、次の描画範囲を確定し、CPUが描画コマンドを発行し、GPU(Graphics Processing Unit)がレンダリングを実行し、描画された画像がHMD100に出力されるまでには時間がかかる。描画がたとえば60fps(フレーム/秒)のフレームレートで行われているとすると、CPUが十分高速であったとしても、HMD100の回転を検知してから画像を出力するまでに1フレーム分の遅れが生じる。これはフレームレート60fpsのもとでは、16.67ミリ秒ほどであり、人間がずれを感知するには十分な時間である。さらに、画像生成装置200で描画された画像をデータ伝送路300でHMD100に伝送する際にもレイテンシが生じる。
【0036】
そこで、生成された画像に対してリプロジェクション処理が行われる。リプロジェクション処理において、レンダリングした画像を遅延時間経過後に想定されるHMD100の位置と姿勢に合わせて補正することで、人間がずれを感知しにくいようにしている。
【0037】
従来、この遅延時間は、ゲームなどのコンテンツの制作者側によって、そのコンテンツに合わせて個別に設定されている。一方で、HMD100を用いて画像を提供するために、性能の異なる様々な画像生成システムが開発されている。このような異なる性能の画像生成システム間では、遅延時間はHMD100及び画像生成装置200によって異なる。例えば、画像生成に関する処理の開始から画像処理部によるレンダリング画像に対する画像処理が開始されるまでの描画時間は、HMD100及び画像生成装置200毎に異なる。また、例えば、画像生成装置200において生成されたHMD画像がHMD100に表示されるまでの表示処理時間は、HMD100及び画像生成装置200の性能に依存して異なる。そのため、設定された遅延時間が特定の画像生成システムにおいて適切ではない場合がある。その結果、画像生成時に前提としたユーザの姿勢と、HMD画像をHMD100に表示した時点でのユーザの姿勢との間でずれが発生し、ユーザはVR酔いをしてしまう場合があった。
【0038】
本実施形態では、画像生成装置200において画像生成に関する処理の開始からHMD画像がHMD100に表示されるまでの遅延時間が予測される。ここでの画像生成に関する処理とは、描画コマンドの生成処理、レンダリング画像の生成処理及びHMD画像の生成処理(レンダリング画像に対する画像処理)を含む。本実施形態では、画像生成システム毎に予測された遅延時間を用いてリプロジェクション処理が実行される。したがって、画像生成システムの性能に起因した、画像生成時に前提としたユーザの姿勢とHMD画像をHMD100に表示した時点でのユーザの姿勢との間のずれを抑制できる。以下、これについて詳細に説明する。
【0039】
図4を用いて、画像生成に関する処理の開始からHMD画像がHMD100に表示されるまでの流れを説明する。
図4中、同期タイミングVsyncはHMD100の表示パネルの垂直同期タイミングを示し、処理タイミングV’は画像生成に関する処理のスレッドが立ち上がるタイミングを示す。
【0040】
処理タイミングV’になると、タイミングt1で、CPUによってフレームID1を引数にbeginFrame()を宣言するAPIがコールされ、描画コマンド供給部203が描画コマンドの生成処理を開始する。このとき、描画コマンド供給部203は、描画コマンドのフレームデータにフレームID1を紐づける。
【0041】
その後、タイミングt2で、CPUによってフレームID1に紐づいたフレームデータのタイムスタンプを返すAPIがコールされる。このとき、時間予測部205は、データ記憶部210に蓄積された過去の描画時間及び表示処理時間と同期タイミングVsyncとに基づいて、遅延時間を予測する。例えば、時間予測部205は、過去の描画時間及び表示処理時間を足し合わせた時間を遅延時間として算出する。時間予測部205は、予測した遅延時間を位置・姿勢予測部206に供給する。
【0042】
ここでの描画時間とは、画像生成に関する処理の開始から画像処理部208によるレンダリング画像に対する画像処理が開始されるまでの時間である。ここでの過去の描画時間は、データ記憶部210に蓄積された描画時間のうちの任意のいくつかの描画時間の平均値である。このように過去の描画時間として上記平均値を採用することにより、過去の描画時間を予測時間により細かい値まで反映させることができる。なお、初回起動時のような描画時間がデータ記憶部210に蓄積されていない状態では、時間予測部205は、例えば描画時間を0として遅延時間を予測し、それ以降は蓄積された描画時間を用いて遅延時間を予測する。
【0043】
ここでの表示処理時間は、画像生成装置200において生成されたHMD画像がHMD100に表示されるまでの時間である。
図4に示すように、この表示処理時間は、HMD画像の生成処理の開始時から次の同期タイミングVsyncまでの第1処理時間と、この同期タイミングVsyncからHMD画像がHMD100に表示されるまでの第2処理時間と、を含む。
【0044】
第1処理時間は、例えばゲームなどのコンテンツの制作者側によって事前に設定された値としてデータ記憶部210に記憶される。第1処理時間は、コンテンツ毎に適した値に設定される。
【0045】
第2処理時間は、画像生成システム1に固有の値として事前にデータ記憶部210に記憶されている。第2処理時間は、画像生成システム1において事前にその評価を行うことで得られる。本実施形態では、異なる複数の画像生成システム1全体について評価することによって得られた第2処理時間の理論値が用いられる。これに限定されず、1つの画像生成システム1毎にキャリブレーションされた第2処理時間が用いられてもよい。
【0046】
タイミングt3で描画コマンドの生成処理が完了すると、描画コマンド供給部203は、フレームID1に紐づけられた描画コマンドのフレームデータをレンダリング部207に供給する。タイミングt3後の次の処理タイミングV’になると、位置・姿勢取得部201によって位置・姿勢情報L1が取得され、位置・姿勢情報L1に基づいて視点・視線設定部202によって視点位置及び視点方向が設定される。
【0047】
レンダリング部207は、設定された視点位置及び視点方向に基づいて、レンダリング処理を開始する。このとき、レンダリング部207は、レンダリング画像のフレームデータに、フレームID1を紐づける。また、位置・姿勢予測部206は、予測した遅延時間及び位置・姿勢情報L1に基づいて予測位置・姿勢情報L2を生成する。
【0048】
タイミングt4でレンダリング処理が完了すると、レンダリング部207は、フレームID1に紐づけられたレンダリング画像のフレームデータを画像処理部208に供給する。また、位置・姿勢予測部206は、予測位置・姿勢情報L2を画像処理部208に供給する。
【0049】
タイミングt4後の次の処理タイミングV’のタイミングt5になると、画像処理部208は、レンダリング画像について、ポストプロセス、リプロジェクション処理、歪み処理等を施すためのHMD画像の生成処理(レンダリング画像に対する画像処理)を開始する。特に、リプロジェクション部208bは、予測位置・姿勢情報L2に基づいて、リプロジェクション処理を施す。このとき、画像処理部208は、HMD画像のフレームデータにフレームID1を紐づける。
【0050】
タイミングt6でHMD画像の生成処理が完了すると、HDMI送受信部209は、HDMIにしたがってHMD画像をHMD100に伝送する。これにより、タイミングt7でHMD100においてHMD画像が表示されることになる。なお、タイミングt7をタイミングt5の後の同期タイミングVsyncとその次の同期タイミングVsyncとの間の中間のタイミングとしたのは、HMD100でのHMD画像の表示がある同期タイミングVsyncから部分的に完了していき、その次の同期タイミングVsyncで全て完了することを考慮したためである。
【0051】
タイミングt7でHMD画像が表示されると、時間蓄積部204は、描画コマンドのフレームデータに紐づけられたフレームID1に基づいて、描画コマンドの生成開始時の第1タイムスタンプ(beginFrame()のタイムスタンプ)をデータ記憶部210に蓄積する。時間蓄積部204は、HMD画像に紐づけられたフレームID1に基づいて、画像処理部208による画像処理の開始時の第2タイムスタンプをデータ記憶部210に蓄積する。
【0052】
時間蓄積部204は、第1及び第2タイムスタンプに基づいて、描画コマンドの生成処理の開始時からHMD画像の生成処理の完了時までの描画時間を算出する。時間蓄積部204は、算出した描画時間をデータ記憶部210に蓄積する。これらの蓄積された描画時間は、以降の画像生成に関する処理において使用される。
【0053】
タイミングt3での描画コマンドの生成処理の完了時に戻ると、t3後の次に処理タイミングV’において、描画コマンド供給部203は、フレームID2に紐づけて描画コマンドを生成する。このとき、フレームID1は、レンダリング処理においてレンダリング画像のフレームに紐づけられて使用されている。描画コマンド供給部203は、フレームIDが少なくともバッファ分だけコンフリクトしないように、描画コマンドの生成処理において、他の画像生成に関する処理におけるレンダリング処理に使用されているフレームID1とは異なるフレームID2を使用する。
【0054】
図5を用いて、本実施形態の画像生成装置における画像生成に関する処理S100を説明する。
【0055】
ステップS101で、描画コマンド供給部203は、描画コマンドの生成処理を開始する。このとき、描画コマンド供給部203は、描画コマンドのフレームデータにフレームID1を紐づけ、そのフレームID1をデータ記憶部210に記憶させる。描画コマンド供給部203は、描画コマンドの生成を開始すると、予測指示を時間予測部205に供給する。
【0056】
ステップS102で、時間予測部205は、データ記憶部210から読み出した過去の描画時間及び表示処理時間と同期タイミングVsyncとに基づいて、遅延時間を予測する。時間予測部205は、予測した遅延時間を位置・姿勢予測部206に供給する。
【0057】
描画コマンドのフレームデータの生成が完了すると、ステップS103で、描画コマンド供給部203は、フレームID1に紐づけられた描画コマンドのフレームデータをレンダリング部207に供給する。
【0058】
ステップS104で、位置・姿勢取得部201は、位置・姿勢情報L1を取得する。位置・姿勢取得部201は、取得した位置・姿勢情報L1を視点・視線設定部202及び位置・姿勢予測部206に供給する。
【0059】
ステップS105で、視点・視線設定部202は、位置・姿勢情報L1に基づいて視点位置及び視点方向を設定する。視点・視線設定部202は、設定された視点位置及び視点方向を示す視点情報をレンダリング部207に供給する。
【0060】
ステップS106で、レンダリング部207は、設定された視点位置及び視点方向に基づいて、レンダリング処理を実行する。このとき、レンダリング部207は、レンダリング画像のフレームデータにフレームID1を紐づける。レンダリング部207は、フレームID1に紐づけられたレンダリング画像のフレームデータを画像処理部208のポストプロセス部208aに供給する。また、位置・姿勢予測部206は、予測した遅延時間及び位置・姿勢情報L1に基づいて予測位置・姿勢情報L2を生成して画像処理部208のリプロジェクション部208bに供給する。
【0061】
ステップS107で、画像処理部208のポストプロセス部208aは、レンダリング画像について、ポストプロセスを実行する。画像処理部208のポストプロセス部208aは、ポストプロセスを施した画像をリプロジェクション部208bに供給する。
【0062】
ステップS108で、リプロジェクション部208bは、予測位置・姿勢情報L2に基づいて、リプロジェクション処理を実行する。予測位置・姿勢情報L2は遅延時間に基づいて生成されるため、このリプロジェクション処理が施された画像は遅延時間を反映することとなる。リプロジェクション部208bは、リプロジェクション処理を施した画像を歪み処理部208cに供給する。
【0063】
ステップS109で、歪み処理部208cは、リプロジェクション処理を施した画像に歪み処理を実行する。上記ステップS107~S109の画像処理により、HMD画像が生成される。HMD画像には、フレームID1が紐づけられる。歪み処理部208cは、フレームID1に紐づけられたHMD画像をHDMI送受信部209に供給する。
【0064】
ステップS110で、HDMI送受信部209は、HDMIにしたがってHMD画像をHMD100に伝送する。これにより、HMD100においてHMD画像が表示されることになる。
【0065】
ステップS111で、時間蓄積部204は、各フレームデータに紐づけられたフレームID1に基づいて、第1及び第2タイムスタンプをデータ記憶部210に蓄積する。また、時間蓄積部204は、第1及び第2タイムスタンプの差分に基づいて描画時間を算出する。時間蓄積部204は、算出した描画時間をデータ記憶部210に蓄積する。
【0066】
ステップS111の後、画像生成に関する処理S100は終了する。
【0067】
以下、本実施形態の作用及び効果について説明する。
【0068】
本実施形態では、画像生成システム1の性能に応じてより適切な遅延時間を用いてリプロジェクション処理が実行される。本構成によると、画像生成時と画像表示時のユーザの姿勢のずれを抑制できる。その結果、ユーザのVR酔いを抑制することが可能となる。
【0069】
本実施形態では、時間蓄積部204は描画時間をデータ記憶部210に蓄積し、時間予測部205はその蓄積された描画時間に基づいて遅延時間を予測する。ここで、上述したように、異なる性能の画像生成システム間ではそれぞれ描画時間及び表示処理時間が異なる。本実施形態によると、その画像生成システム1の描画時間を蓄積し、またその画像生成システム1についての表示処理時間をデータ記憶部210に予め記憶しておき、これらを遅延時間の予測に利用することにより、より正確に遅延時間を予測することが可能となる。
【0070】
本実施形態では、描画コマンド供給部203、レンダリング部207及び画像処理部208は各処理におけるフレームデータをフレームIDに紐づけて供給する。時間蓄積部204は、フレームIDにそれぞれ紐づけられた各フレームデータにおける第1~第3タイムスタンプをデータ記憶部210に蓄積する。ここで、例えば、
図4において、フレームID2に対応する画像生成に関する処理がフレームID1に対応する画像生成に関する処理よりも前に完了する場合がある。このとき、各処理におけるフレームデータにフレームIDが紐づけられていない場合、完了した処理がどの画像生成に関する処理に対応するのかを把握できない。したがって、画像生成に関する処理における各フレームデータに同一のフレームIDを紐づけることにより、その画像生成に関する処理が完了するタイミングを明確に把握することが可能となる。
【0071】
(変形例)
以下、実施形態の変形例について説明する。
【0072】
本実施形態では、描画時間及び表示処理時間に基づいて遅延時間が予測されたが、これに限定されず、他の手法により遅延時間が予測されてもよい。例えば、時間予測部205は、描画時間に基づいてHMD100での表示に適した同期タイミングVsyncを求め、画像生成に関する処理の開始から求めた同期タイミングVsyncまでの時間を算出する。時間予測部205は、この算出した時間と第2処理時間を足し合わせた時間を遅延時間としてもよい。
【0073】
本実施形態では、過去の描画時間はデータ記憶部210に蓄積された描画時間のうちの任意のいくつかの描画時間の平均値としたが、これに限定されない。例えば、過去の描画時間は、下記のように算出されてもよい。すなわち、時間蓄積部204は、同期タイミングVsync毎にカウント値を増分(例えばカウント値を1増分)するVsyncカウンタを備える。時間蓄積部204は、beginFrame(frameId)をコールしたタイミングで、Vsyncカウンタのカウント値をチェックする。時間蓄積部204は、beginFrame(frameId)で使用されたフレームIDと同一のフレームIDに関するHMD画像の生成処理が開始するタイミングで、再びVsyncカウンタのカウント値をチェックする。時間蓄積部204は、これらのカウント値の差分に基づいて画像生成に関する処理の開始からHMD画像の生成処理の開始までのカウント値を算出し、データ記憶部210に蓄積する。時間蓄積部204は、データ記憶部210に蓄積された過去のいくつかの描画時間において、そのカウント値の多数決を取る。時間蓄積部204は、多数決の結果として得られたカウント値に基づいて描画時間を算出し、データ記憶部210に蓄積する。具体的には、多数決の結果として得られたカウント値に同期タイミングVsyncの周期 (例えば、8.33ms(120Hz)、11.11ms(90Hz)など)を掛け合わせることにより描画時間を算出する。時間予測部205は、この描画時間を用いて遅延時間を予測する。本構成によると、不意に描画時間が延びてしまった場合に、予測時間においてその影響を受けにくくすることができる。また、過去の描画時間は、例えば、データ記憶部210に蓄積した描画時間の直近の値や中央値等であってもよい。
【0074】
本実施形態では、画像生成に関する処理における各フレームデータにフレームIDが紐づけられたが、これに限定されず、各フレームデータにフレームIDが紐づけられなくてもよい。
【0075】
本実施形態では、レンダリング画像に対して、予測位置・姿勢情報に基づいてリプロジェクション処理が実行されたが、これに限定されない。例えば、予測位置・姿勢情報に基づいて画像をレンダリングすることでリプロジェクション処理が実行されてもよい。
【0076】
本実施形態では、HDMIにしたがってHMD画像が送信されたが、これに限定されず、無線通信によってHMD画像が送信されてもよい。
【0077】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。そのような変形例を説明する。
【符号の説明】
【0078】
100 ヘッドマウントディスプレイ、200 画像生成装置、201 位置・姿勢取得部、202 視点・視線設定部、203 描画コマンド供給部、204 時間蓄積部208、205 時間予測部、206 位置・姿勢予測部、207 レンダリング部、208 画像処理部、208a ポストプロセス部、208b リプロジェクション部、208c 歪み処理部、209 HDMI送受信部、210 データ記憶部。