図1は、ヘッドマウントディスプレイ100の外観図である。ヘッドマウントディスプレイ100は、ユーザの頭部に装着してディスプレイに表示される静止画や動画などを鑑賞し、ヘッドホンから出力される音声や音楽などを聴くための表示装置である。
ヘッドマウントディスプレイ100に内蔵または外付けされたジャイロセンサや加速度センサなどによりヘッドマウントディスプレイ100を装着したユーザの頭部の位置情報と頭部の回転角や傾きなどの姿勢(orientation)情報を計測することができる。
ヘッドマウントディスプレイ100にはカメラユニットが搭載されており、ユーザがヘッドマウントディスプレイ100を装着している間、外界を撮影することができる。
ヘッドマウントディスプレイ100は、「ウェアラブルディスプレイ」の一例である。ここでは、ヘッドマウントディスプレイ100に表示される画像の生成方法を説明するが、本実施の形態の画像生成方法は、狭義のヘッドマウントディスプレイ100に限らず、めがね、めがね型ディスプレイ、めがね型カメラ、ヘッドフォン、ヘッドセット(マイクつきヘッドフォン)、イヤホン、イヤリング、耳かけカメラ、帽子、カメラつき帽子、ヘアバンドなどを装着した場合にも適用することができる。
図2は、本実施の形態に係る画像生成システムの構成図である。ヘッドマウントディスプレイ100は、一例として、映像・音声をデジタル信号で伝送する通信インタフェースの標準規格であるHDMI(登録商標)(High-Definition Multimedia Interface)などのインタフェース300で画像生成装置200に接続される。
画像生成装置200は、ヘッドマウントディスプレイ100の現在の位置・姿勢情報から、映像の生成から表示までの遅延を考慮してヘッドマウントディスプレイ100の位置・姿勢情報を予測し、ヘッドマウントディスプレイ100の予測位置・姿勢情報を前提としてヘッドマウントディスプレイ100に表示されるべき画像を描画し、ヘッドマウントディスプレイ100に伝送する。
画像生成装置200の一例はゲーム機である。画像生成装置200は、さらにネットワークを介してサーバに接続されてもよい。その場合、サーバは、複数のユーザがネットワークを介して参加できるゲームなどのオンラインアプリケーションを画像生成装置200に提供してもよい。ヘッドマウントディスプレイ100は、画像生成装置200の代わりに、コンピュータや携帯端末に接続されてもよい。
ユーザの身体部位が現実世界の物体と接触した箇所を少なくとも含む部分空間をユーザの視点から見た場合の領域に拡張現実領域が生成されて表示される。この拡張現実画像が表示される領域を「AR領域」と呼ぶ。たとえばユーザの手が現実世界のテーブルの上面の一部に接触した場合、テーブルの表面全体を部分空間とし、テーブルの表面をユーザの視点から見た場合の領域をAR領域とする。AR領域には、カメラによる撮影画像に所定のエフェクトや仮想オブジェクトの画像を重畳することで拡張現実画像を生成して表示してもよく、あるいは、カメラによる撮影画像の代わりにそれとは別のCG画像を生成して表示してもよい。
ある実施例では、ユーザの身体部位にはトラッカ500が付けられる。トラッカ500は、慣性センサ、地磁気センサ、加速度センサ、モーションセンサなどのセンサを備え、ユーザの身体部位の位置や姿勢を検出することができる。ここでは、ユーザの手にトラッカ500を装着した例を説明するが、胴体や足など他の身体部位にトラッカ500を装着してもよい。ユーザの身体部位の位置および姿勢にもとづいて、ユーザの身体部位と現実世界の物体の接触の有無と、身体部位が接触した物体の箇所が決定される。トラッカ500は、ユーザの身体部位の位置および姿勢を画像生成装置200に送信する。
別の実施例では、画像生成装置200は、カメラ画像においてユーザの身体部位を画像認識することによってユーザの身体部位の位置や姿勢を検出し、ユーザの身体部位と現実世界の物体の接触の有無と、身体部位が接触した物体の箇所を決定する。
図3は、ヘッドマウントディスプレイ100の機能構成図である。
制御部10は、画像信号、センサ信号などの信号や、命令やデータを処理して出力するメインプロセッサである。入力インタフェース20は、ユーザからの操作信号や設定信号を受け付け、制御部10に供給する。出力インタフェース30は、制御部10から画像信号を受け取り、ディスプレイパネル32に表示する。
通信制御部40は、ネットワークアダプタ42またはアンテナ44を介して、有線または無線通信により、制御部10から入力されるデータを外部に送信する。通信制御部40は、また、ネットワークアダプタ42またはアンテナ44を介して、有線または無線通信により、外部からデータを受信し、制御部10に出力する。
記憶部50は、制御部10が処理するデータやパラメータ、操作信号などを一時的に記憶する。
姿勢センサ64は、ヘッドマウントディスプレイ100の位置情報と、ヘッドマウントディスプレイ100の回転角や傾きなどの姿勢情報を検出する。姿勢センサ64は、ジャイロセンサ、加速度センサ、角加速度センサなどを適宜組み合わせて実現される。3軸地磁気センサ、3軸加速度センサおよび3軸ジャイロ(角速度)センサの少なくとも1つ以上を組み合わせたモーションセンサを用いて、ユーザの頭部の前後、左右、上下の動きを検出してもよい。
外部入出力端子インタフェース70は、USB(Universal Serial Bus)コントローラなどの周辺機器を接続するためのインタフェースである。外部メモリ72は、フラッシュメモリなどの外部メモリである。
カメラユニット80は、レンズ、イメージセンサ、測距センサなど撮影に必要な構成を含み、撮影された外界の映像と奥行き情報を制御部10に供給する。制御部10は、カメラユニット80のフォーカスやズームなどを制御する。
HDMI送受信部90は、HDMIにしたがって映像・音声のデジタル信号を画像生成装置200との間で送受信する。HDMI送受信部90は、カメラユニット80により撮影された外界の映像と奥行き情報を制御部10から受け取り、HDMI伝送路で画像生成装置200に送信する。HDMI送受信部90は、画像生成装置200により生成された画像をHDMI伝送路で画像生成装置200から受信し、制御部10に供給する。
制御部10は、画像やテキストデータを出力インタフェース30に供給してディスプレイパネル32に表示させたり、通信制御部40に供給して外部に送信させることができる。
姿勢センサ64が検出したヘッドマウントディスプレイ100の現在の位置・姿勢情報は、通信制御部40または外部入出力端子インタフェース70を介して画像生成装置200に通知される。あるいは、HDMI送受信部90がヘッドマウントディスプレイ100の現在の位置・姿勢情報を画像生成装置200に送信してもよい。
図4は、本実施の形態に係る画像生成装置200の機能構成図である。同図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。
画像生成装置200の少なくとも一部の機能をヘッドマウントディスプレイ100に実装してもよい。あるいは、画像生成装置200の少なくとも一部の機能を、ネットワークを介して画像生成装置200に接続されたサーバに実装してもよい。
HMD位置・姿勢取得部210は、ヘッドマウントディスプレイ100の現在の位置・姿勢情報をヘッドマウントディスプレイ100から取得する。HMD位置・姿勢取得部210は、ヘッドマウントディスプレイ100の姿勢センサ64などの慣性計測ユニット(IMU(Inertial Measurement Unit))から、ヘッドマウントディスプレイ100の現在の姿勢情報を示すIMUデータを取得し、カメラ画像およびIMUデータを用いて、自己位置推定と環境地図作成を同時に行うSLAM(Simultaneous Localization and Mapping)処理を実行し、ヘッドマウントディスプレイ100を装着したユーザの姿勢を推定してもよい。
視点・視線設定部220は、HMD位置・姿勢取得部210により取得されたヘッドマウントディスプレイ100の位置・姿勢情報を用いて、ユーザの視点位置および視線方向を設定する。
身体位置・姿勢取得部244は、ユーザの身体部位の位置・姿勢を取得し、タイムワープ部246と接触判定部247に供給する。ある実施例では、身体位置・姿勢取得部244は、トラッカ500が検出する身体部位の位置・姿勢を取得する。別の実施例では、身体位置・姿勢取得部244は、撮影画像において身体部位を画像認識することによって、身体部位の位置・姿勢を取得する。
タイムワープ部246は、トラッカ500の位置・姿勢取得時点のタイムスタンプと、ヘッドマウントディスプレイ100の位置・姿勢推定時点のタイムスタンプの差分にもとづいて、身体部位の位置・姿勢を、ヘッドマウントディスプレイ100の位置・姿勢推定時点のタイムスタンプに合うように変換する。
HDMI送受信部280は、ヘッドマウントディスプレイ100からカメラユニット80により撮影された現実空間の映像を受信し、画像信号処理部250に供給する。
画像信号処理部250は、ヘッドマウントディスプレイ100のカメラユニット80により撮影されたRaw画像に対してRGB変換(デモザイク処理)、ホワイトバランス、色補正、ノイズリダクションなどの画像信号処理(ISP(Image Signal Processing))を施し、さらにカメラユニット80の光学系による歪みなどを取り除く歪み補正処理を施す。画像信号処理部250は画像信号処理および歪み補正処理が施されたRGB画像を画像生成部230に供給する。
画像生成部230は、画像記憶部260からコンピュータグラフィックスの生成に必要なデータを読み出し、仮想空間のオブジェクトをレンダリングしてCG画像を生成し、画像信号処理部250から提供される現実空間のカメラ画像に重畳するまたはカメラ画像に代えて描画することで拡張現実画像を生成し、画像記憶部260に出力する。
画像生成部230は、接触判定部247と、AR領域判定部248と、レンダリング部232と、AR生成部234と、ポストプロセス部236と、タイムワープ部238と、リプロジェクション部240と、歪み処理部242とを含む。
接触判定部247は、ユーザの身体部位と現実世界の物体の接触の有無を判定する。身体部位の位置・姿勢と現実世界の物体の形状情報・奥行き情報を比較することにより、接触判定を行うことができる。接触条件を満たした場合、接触判定部247は、身体部位が接触した現実世界の物体の箇所をAR領域判定部248に通知する。
現実世界の物体の形状情報や奥行き情報は、現実世界の空間を3Dスキャンすることで得られる。たとえば、赤外線パターン、Structured Light、TOF(Time Of Flight)などの方式のデプスセンサを用いて現実空間の奥行き情報を取得したり、ステレオカメラの視差情報から現実空間の奥行き情報を取得することができる。
AR領域判定部248は、視点・視線設定部220からユーザの視点位置および視線方向を取得し、接触判定部247から身体部位が接触した現実世界の物体の箇所を示す情報を取得する。AR領域判定部248は、身体部位が接触した現実世界の物体の箇所を少なくとも含む部分空間をユーザの視点位置および視線方向から見た場合の領域をAR領域として判定し、AR領域を示す情報をAR生成部234とポストプロセス部236に供給する。
AR領域判定部248は、身体部位が接触した現実世界の物体の箇所を含む一定の部分空間をユーザの視点位置および視線方向から見た場合の領域をAR領域として判定する。接触箇所を含む部分空間として、接触箇所から所定の距離範囲の部分空間を選択してもよく、接触した物体の面全体を部分空間としてもよい。この部分空間に対するユーザの視点位置および視線方向によって、AR領域の位置や大きさが変化する。
レンダリング部232は、視点・視線設定部220によって設定されたユーザの視点位置および視線方向にしたがって、ヘッドマウントディスプレイ100を装着したユーザの視点位置から視線方向に見える仮想空間のオブジェクトをレンダリングし、AR生成部234に与える。
また、レンダリング部232は、カメラ映像に写り込んだユーザの手などの身体部位にエフェクトを施したり、当該身体部位を仮想モデルに置き換えてもよい。
AR生成部234は、画像信号処理部250から供給されるカメラ画像の内、AR領域判定部248によって指定されたAR領域にレンダリング部232により生成されたCG画像をカメラ画像に重畳するまたはカメラ画像に代えて描画することで拡張現実画像を生成し、ポストプロセス部236に与える。
ポストプロセス部236は、拡張現実画像に対して、被写界深度調整、トーンマッピング、アンチエイリアシングなどのポストプロセスを施し、現実空間の画像に仮想オブジェクトが重畳された拡張現実画像が自然で滑らかに見えるように後処理する。また、ポストプロセス部236は、AR領域判定部248によって指定されたAR領域に各種のエフェクトを施してもよい。AR生成部234がAR領域内にCG画像を重畳または置き換え描画することなく、ポストプロセス部236がAR領域内のカメラ画像に単にエフェクトを施すだけでもよい。
リプロジェクション部240は、HMD位置・姿勢取得部210からヘッドマウントディスプレイ100の最新の位置・姿勢情報を受け取り、ポストプロセスが施された拡張現実画像に対してリプロジェクション処理を施し、ヘッドマウントディスプレイ100の最新の視点位置・視線方向から見える画像に変換する。
ここで、リプロジェクションについて説明する。ヘッドマウントディスプレイ100にヘッドトラッキング機能をもたせて、ユーザの頭部の動きと連動して視点や視線方向を変えて仮想現実の映像を生成した場合、仮想現実の映像の生成から表示までに遅延があるため、映像生成時に前提としたユーザの頭部の向きと、映像をヘッドマウントディスプレイ100に表示した時点でのユーザの頭部の向きとの間でずれが発生し、ユーザは酔ったような感覚(「VR酔い(Virtual Reality Sickness)」などと呼ばれる)に陥ることがある。
このように、ヘッドマウントディスプレイ100の動きを検知し、CPUが描画コマンドを発行し、GPU(Graphics Processing Unit)がレンダリングを実行し、描画された画像がヘッドマウントディスプレイ100に出力されるまでには時間がかかる。描画がたとえば60fps(フレーム/秒)のフレームレートで行われており、ヘッドマウントディスプレイ100の動きを検知してから画像を出力するまでに1フレーム分の遅れが生じるとする。これはフレームレート60fpsのもとでは、16.67ミリ秒ほどであり、人間がずれを感知するには十分な時間である。
そこで、「タイムワープ」または「リプロジェクション」と呼ばれる処理を行い、レンダリングした画像をヘッドマウントディスプレイ100の最新の位置と姿勢に合わせて補正することで人間がずれを感知しにくいようにする。
歪み処理部242は、リプロジェクション処理が施された拡張現実画像に対してヘッドマウントディスプレイ100の光学系で生じる歪みに合わせて画像を変形(distortion)させて歪ませる処理を施し、画像記憶部260に記憶する。
HDMI送受信部280は、画像記憶部260から画像生成部230により生成された拡張現実画像のフレームデータを読み出し、HDMIにしたがってヘッドマウントディスプレイ100に伝送する。
タイムワープ部238は、カメラの撮影時点のタイムスタンプと、ヘッドマウントディスプレイ100の位置・姿勢取得時点のタイムスタンプの差分にもとづいて、画像信号処理部250から供給されるカメラ画像をヘッドマウントディスプレイ100の位置・姿勢取得時点のタイムスタンプに合うように変換し、AR生成部234に与える。このタイムワープ処理は画像認識によって身体部位の位置および姿勢を検出する場合に特に有効である。AR生成部234は、タイムワープ処理されたカメラ画像にレンダリング部232により生成されたCG画像を重畳または置き換え描画することで拡張現実画像を生成し、ポストプロセス部236に与える。
図5Aおよび図5Bは、本実施の形態の画像生成装置200による拡張現実画像生成の例を説明する図である。
図5Aは、ヘッドマウントディスプレイ100のディスプレイパネル32に表示される画面を説明する図である。ここでヘッドマウントディスプレイ100はビデオ透過型であり、ヘッドマウントディスプレイ100に搭載されたカメラにより撮影された外界の映像が表示されている。
外界の映像からわかるように、ユーザは部屋の中におり、自分の前にテーブル530と椅子があり、テーブル530の上にはコーヒーカップ510が置かれている。壁際には洋服スタンドがある。また正面の壁にポスター520が貼られている。
図5Bは、ユーザの手が図5Aのテーブル530に触れたときにディスプレイパネル32に表示される画面である。ユーザの手が図5Aのテーブル530の上面に接触すると、その接触箇所を含むテーブル530の表面全体が部分空間として指定され、その部分空間をユーザの視点から見た領域がAR領域となる。ここではAR領域であるテーブル530の表面にCGのテクスチャが貼り付けられ、画面では図5Bに示すようなARテーブル532に変化する。画面のそれ以外の領域はカメラ画像のままである。
このように、ユーザの身体部位が接触した現実空間の箇所を含む部分空間だけが画面上で拡張現実画像となることから、カメラ画像から拡張現実画像へ移行する際の非連続感や違和感が軽減され、また、ユーザは身体的臨場感をもつことができる。
現実空間の物体と接触するのはユーザの身体部位そのものには限定されない。ゲームで利用する銃、剣、杖、盾などの仮想オブジェクトをユーザが手にして、仮想オブジェクトが接触する現実空間の物体の箇所を含む部分空間を視点から見た場合のAR領域を決定してもよい。
図6A~図6Cは、本実施の形態の画像生成装置200による拡張現実画像生成の別の例を説明する図である。
図6Aは、テーブル530上のコーヒーカップ510にユーザが手を伸ばしてコーヒーカップ510を取ろうとしている様子を示す。ユーザの手はまだコーヒーカップ510には触れていないため、画面には現実世界のコーヒーカップ510がそのまま見えている。
図6Bは、ユーザの手が図6Aのコーヒーカップ510に触れたときの画面例を示す。ユーザの手がコーヒーカップ510に接触したことにより、コーヒーカップ510全体が部分空間として指定され、コーヒーカップ510をユーザの視点から見た領域がAR領域となる。AR生成部234は、コーヒーカップ510を仮想オブジェクト512に置き換えて描画する。
図6Cは、ユーザが仮想オブジェクト512を持ち上げたときの画面例を示す。ユーザは現実にはコーヒーカップ510を持ち上げているが、画面上では仮想オブジェクト512を持ち上げているように見える。また、仮想オブジェクト512にはエフェクトが加わり、この例では仮想オブジェクト512から炎514が飛び出している。
上記の例では、AR領域をCG画像にすることでAR効果を与えたが、AR領域内は、視覚エフェクトのフィルタを適用したビデオシースルー画像を表示してもよい。あるいは、AR領域内は、完全なVR画像または実世界の構造を活かしたVR画像を表示してもよい。
エフェクトについてもいろいろなバリエーションが考えられる。パーティクルの生成、視覚効果フィルタの適用、輝度や色の変更、レンズ効果、拡大・縮小表示、効果音の生成、バックグラウンドミュージックや効果音の音量の変化などがある。
また、ボディトラッキングの技術を用いてユーザの身体の位置・姿勢を推定し、カメラ画像に写り込んだユーザの身体を別の仮想モデルに置き換えたり、カメラ画像に写り込んだユーザの身体からたとえば光が出ているようなエフェクトを加えてもよい。
図7A~図7Cは、本実施の形態の画像生成装置200による拡張現実画像生成のさらに別の例を説明する図である。
ユーザは図5Aで説明した部屋の中にいるが、部屋の外には図7Aに示すような仮想空間が存在する。ここでは仮想空間において一匹の恐竜が二本の木に側に立っている。
図7Bに示すように、ユーザの手が部屋の正面の壁に触れると、手が触れた壁の箇所540がAR領域となり、手が触れた箇所540に穴が空いたように見え、部屋の外の仮想空間が描画される。ここでは、壁の穴に図7Aの仮想空間の恐竜の姿が見えている。
図7Cに示すように、ユーザの手が壁の別の箇所542を触れると、手が触れた壁の別の箇所542がAR領域となり、穴が空き、そこから仮想空間を覗き見ることができる。ここでは、壁の穴に図7Aの仮想空間の木の一部が見えている。
このように、ユーザの身体部位が接触した箇所以外では現実空間のシースルー映像が見えているが、身体部位が接触した箇所では現実世界の向こう側にある外部の仮想世界が見える。
ユーザが手で触れた箇所を鏡面にしてユーザの現実の姿やユーザの身体を仮想的に表すキャラクタを鏡面に描画してもよい。これにより、ユーザが手で触れた箇所だけを仮想的な鏡にすることができる。
図8Aおよび図8Bは、本実施の形態の画像生成装置200による拡張現実画像生成のさらに別の例を説明する図である。
図8Aは、ユーザが両手を叩いたときの画面例を示す。ユーザは両手にトラッカ500を装着しており、右手のトラッカ500が検出する右手の位置と左手のトラッカ500が検出する左手の位置が所定の距離以下まで近づいたときに、接触判定部247は、両手が接触したと判定し、両手が接触した位置にエフェクト550が加わり、両手が接触した位置から仮想オブジェクト552が飛び出す。このようにAR領域判定部248は、ユーザの身体部位同士が接触した領域をAR領域に決定し、AR生成部234がAR領域に仮想現実画像を生成してもよい。
図8Bは、ユーザが足で床を叩いたときの画面例を示す。ユーザは足首にトラッカ500を装着しており、接触判定部247は、トラッカ500が検出する足の位置と床の位置の間の距離によって足が床に接触しているかどうかを判定し、足が床を叩いたことを検出する。足が床を叩いたとき、足が叩いた床の箇所がAR領域となり、エフェクト554が加わる。
図8Aおよび図8Bにおいて、映像によるエフェクトと同時に、あるいは映像によるエフェクトに代えて、サウンドによるエフェクトを加えてもよい。
図9は、本実施の形態の画像生成装置200による拡張現実画像生成のさらに別の例を説明する図である。
図9は、ユーザが手にした仮想オブジェクトである剣560が図5Aのコーヒーカップ510に接触したときの画面例を示す。ユーザの手に装着されたトラッカ500が検出するユーザの手の位置情報をオフセットすることでユーザが手にした仮想的な剣560の位置を計算することできる。接触判定部247は、剣560の位置とコーヒーカップ510の位置が所定の距離以内まで近づいたとき、剣560がコーヒーカップ510に接触したと判定し、AR領域判定部248は、剣が接触したコーヒーカップ510をAR領域と判定する。AR生成部234は、コーヒーカップ510の領域に二つに割れた仮想的なコーヒーカップ514の画像を重畳する。
図10Aおよび図10Bは、本実施の形態の画像生成装置200による拡張現実画像生成のさらに別の例を説明する図である。
図10Aに示すように、ユーザが手で部屋の壁を叩くと、壁全体がAR領域となり、現実世界の壁の形状に合わせて生成された仮想的なブロック塀がCGで部屋の壁全体に描画される。また、ユーザの手が触れた壁の箇所にはブロック塀が壊れて穴が空いたような画像が描画される。
ユーザが壁をさらに押したり叩いたりすると、図10Bに示すように、仮想的なブロック塀が部屋の壁の向こう側に倒れて、壁の向こう側にある仮想世界が表示されるような仮想的な演出を加えることもできる。
以上述べたように、本実施の形態の画像生成装置200によれば、ユーザの身体部位が接触した現実空間の箇所を拡張現実画像が生成されるAR領域として指定することができる。ユーザは身体部位を自由に動かして現実空間に触れることにより、AR領域を自由に指定することができる。これにより、カメラ画像に突如としてAR効果が加わるのではなく、ユーザの身体部位が接触した領域にAR効果が加わるので、現実映像から拡張現実映像へ移行する際の違和感が軽減するとともに、身体的な臨場感をもつことができる。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。