以下、添付図面を参照して本発明の実施形態について説明する。
図1は、本実施形態による端末装置10の概略的な構成図である。端末装置10は、例えば、スマートフォンといった携帯型の通信装置である。スピーカ101は、制御部100から出力する音声信号を音声に変換する。マイク102は、音声を音声信号に変換して制御部100に出力する。撮像部103は、レンズ及びCCDセンサを有し、画像情報を取得して制御部100に出力する。GPS処理部104は、GPS衛星からの信号を受信し、該受信した信号に基づき、緯度、経度、高度を含む位置情報を制御部100に出力する。なお、GPS衛星ではなく、準天頂衛星の様な、他の測位システムの衛星からの信号に基づき位置情報を出力する構成であっても良い。ディスプレイ105は、本実施形態では、タッチセンシティブディスプレイであり、ユーザへの情報の提示に加え、ユーザ操作の入力部としても機能する。なお、ディスプレイがタッチセンシティブディスプレイではない場合、別に、入力部を設ける。深さセンサ106は、オブジェクトまでの距離(深さ)を測定して測定結果を深さ情報として制御部100に出力する。通信部107は、移動通信網や無線LAN等を介した通信処理を行う。地磁気センサ108は、地磁気を検出して端末装置10の基準方向の現在の方位を示す方位情報を制御部100に出力する。加速度センサ109は、加速度を検出して加速度情報を制御部100に出力する。ジャイロセンサ110は、角速度情報を検出して角速度情報を制御部100に出力する。
制御部100は、端末装置10全体の制御部であり、1つ以上のプロセッサと、メモリ部と、を備えている。なお、メモリ部は、プロセッサが一時的なデータの保存用として使用するRAMや、プロセッサが実行するオペレーティングシステム及びアプリケーションと電源断となっても保持すべきデータとが格納されるフラッシュメモリを有する。
制御部100は、例えば、非特許文献1に記載された技術に基づき場所記述情報を生成する。場所記述情報とは、撮像部103が撮像している画像から端末装置10の3次元空間位置と撮像部103の撮像方向を判定するための情報である。まず、非特許文献1に記載された場所記述情報の生成について説明する。端末装置10のユーザは、場所記述情報の取得を開始すると、撮像部103により画像を撮像しながら、その位置や、撮像方向を変化させる。制御部100は、場所記述情報の取得の間、その開始時の位置を原点とし、加速度情報及び角速度情報に基づき端末装置10の位置や撮像方向の向きを判定し続ける。また、制御部100は、撮像部103が撮像している画像内の特徴点を求める。このとき、制御部100は、3次元空間における端末装置10の位置や撮像方向と、画像内の同じ特徴点の位置、つまり、スクリーン座標を判定する。これにより、制御部100は、3次元空間内の各位置及び各撮像方向において、撮像部103が撮像している画像内のどの位置に各特徴点が見えるかを示す場所記述情報を生成する。よって、端末装置10は、既に生成した場所記述情報と、撮像部103が撮像している画像の特徴点と、を比較することで、そのときの端末装置10の3次元空間位置と撮像部103の撮像方向とを判定することができる。なお、3次元空間位置の原点は、場所記述情報を開始したときの位置であるものとする。また、制御部100は、既に保存している場所記述情報と、撮像部103が撮像している画像の特徴点と、の比較により端末装置10の3次元空間位置と撮像部103の撮像方向を判定すると同時に、撮像部103が撮像している画像の特徴点に基づき、当該既に保存している場所記述情報の更新も行う。
上述した様に、場所記述情報は、端末装置10の位置及び撮像方向と、撮像部103が撮像した画像内にある各オブジェクトの各特徴点のスクリーン座標における位置との関係を示す情報であるため、場所記述情報に基づき、各特徴点の3次元空間位置の座標を示す3次元空間情報を生成することができる。即ち、場所記述情報のうちの異なる位置及び撮像方向の組み合わせに対応する情報につき、同一の特徴点のスクリーン座標での移動を考慮することで奥行き方向の情報を得、該特徴点の3次元空間位置を導出することができる。
このような場所記述情報は、制御部100のメモリ部に格納される。また、制御部100のメモリ部には、キャラクタのモデルデータ(キャラクタの3次元幾何形状を規定するデータ、テクスチャデータ、複数種類のモーションデータなど)、テキストデータ、音声データが格納されている。
次に、端末装置10のディスプレイ105に、撮像部103による現実空間の撮像画像と、端末装置10が描画したキャラクタの2次元画像と、を合成した合成画像を表示させるための処理について、図3のフローチャートを用いて説明する。なお、図3のフローチャートに従った処理は、1フレーム分の合成画像を表示するための処理である。然るに、図3のフローチャートに従った処理を繰り返して行うことで、複数フレームの合成画像をディスプレイ105に表示させることができる。また、図3のフローチャートに従った処理を制御部100に実行させるためのコンピュータプログラムやデータは、上記のアプリケーションに含まれているものとする。
ステップS301では、制御部100は、撮像部103により撮像された撮像画像を、メモリ部に格納する。
ステップS302では、制御部100は、現実空間に対応する仮想空間内におけるキャラクタの現在位置が、「現実空間中の規定の位置に対応する仮想空間内の位置から規定距離D以内の領域R」内であるか否かを判断する。
制御部100は、仮想空間内におけるキャラクタの位置を定期的若しくは不定期的に更新することで、該キャラクタを仮想空間内で移動させている。キャラクタを移動させる際には、対応するモーションデータに従って、キャラクタに歩く/走るモーションを行わせる。なお、仮想空間内には、図2(a)に示す如く、キャラクタ200が移動可能な範囲210や、図2(b)に示す如く、キャラクタ200が移動可能な経路220が予め指定されているものとする。範囲210の座標位置(例えば範囲210の四隅の座標位置)や経路220の座標位置(例えば経路220上に等間隔に存在する点の座標位置)は、上記の場所記述情報を用いて求める「端末装置10の3次元空間位置と撮像部103の撮像方向」が属する座標系におけるものである。
移動可能な範囲の生成方法については様々な方法が考えられる。例えば、仮想空間内における移動可能な範囲(経路)の座標位置は、ユーザがマニュアルで指定しても良いし、2次元地図情報において移動可能な範囲に対応する座標位置を上記の座標系に変換して求めても良い。また、上記の3次元空間情報を生成すると共に深さセンサ106で床や壁を計測して現実空間の3次元幾何構造を表す3次元構造モデルを生成し、3次元構造モデルにおいて床の領域で壁の手前の部分を移動可能な範囲としても良い。
また、現実空間中の規定の位置に対応する仮想空間内の位置とは、例えば、ユーザがディスプレイ105上をタップすることで位置を指定した場合は、該指定した位置に対応する現実空間中の位置に対応する仮想空間内の位置となる。ディスプレイ105上のタップ位置に対応する現実空間中の位置に対応する仮想空間内の位置は、例えば、タップ位置を「キャラクタの2次元画像を描画するために該キャラクタを投影面に投影する投影変換」の逆変換で変換した床面上の3次元位置である。また、タップ位置に対応する深さ情報を深さセンサ106を用いて取得し、タップ位置から該深さ情報が示す距離だけ奥側(撮像部103の撮像方向側)の位置を、現実空間中の規定の位置に対応する仮想空間内の位置としても良い。また、上記の距離Dは、「現実空間中の規定の位置に対応する仮想空間内の位置」ごとに異なる値であっても良いし、「現実空間中の規定の位置に対応する仮想空間内の位置」に関係なく固定値であっても良い。前者の場合、距離Dは、「現実空間中の規定の位置に対応する仮想空間内の位置」と関連づけてメモリ部に格納されている。なお、「現実空間中の規定の位置に対応する仮想空間内の位置」は、予めメモリ部に登録されていても良いし、サーバなどの外部装置からダウンロードするようにしても良い。
現実空間に対応する仮想空間内におけるキャラクタの現在位置が領域R内であれば、処理はステップS303に進み、現実空間に対応する仮想空間内におけるキャラクタの現在位置が領域R外であれば、処理はステップS304に進む。
ステップS303では、制御部100は、キャラクタに規定の動作を行わせる。例えば、「現実空間中の規定の位置に対応する仮想空間内の位置」と関連づけられているモーションデータに基づいてキャラクタのモーション(手や足などの部位を動かして行うモーション)を制御しても良いし、「現実空間中の規定の位置に対応する仮想空間内の位置」と関連づけられている動作則に従ってジャンプしたり走り回ったり寝転がったりするなど、キャラクタの位置や姿勢を変更しても良い。
例えば、規定の動作は、端末装置10のユーザの属性情報毎に切り替えても良い。例えば、ユーザの属性情報が「男性」を示す場合、女性のキャラクタを(女性のモーションで)表示したり、キャラクタの発声内容を女性の音声でスピーカ101から出力したり、女性の口調のテキストを吹き出しで表示したりしても良い。また、SNSでやり取りされる他のユーザからのコメントを吹き出しで表示しても良いし、該コメントを音声でキャラクタの発声内容としてスピーカ101から出力しても良い。
また更に、時間帯、キャラクタの表示回数、季節や時期のうち少なくとも1つによってキャラクタやテキストの表示内容や音声の内容を変化させても良い。例えば、制御部100が計時している(若しくは外部から受信した)現在時刻が朝の時間帯(例えば6時から12時)であれば、朝に関連する処理(例えば、「おはよう」と発言するモーションを再生すると共に、スピーカ101から「おはよう」という音声を出力させる)を行うようにしても良い。また例えば、はじめてキャラクタの画像を表示する場合には、例えば、「初めまして」と発言するモーションを再生すると共に、スピーカ101から「初めまして」という音声を出力させるようにしても良い。また例えば、現在日時がクリスマスの日であれば、サンタの服を着たキャラクタを表示しても良い。また、ユーザが端末装置10に入力したメッセージを認識し、該認識したメッセージからキーワードを抽出し、該抽出したキーワードと関連づけられているモーションを再生したり、テキストを表示したり、音声を出力したりしても良い。ユーザがマイク102に向かって音声を発した場合には、音声認識技術により該音声をメッセージとして認識することができる。また、ユーザがディスプレイ105上でテキストを入力した場合には、文字認識技術により該テキストをメッセージとして認識することができる。
また、マナーモードのように音声出力を停止している場合は、音声出力は行わずにテキストの表示を許可し、音声出力モードのように音声出力を許可している場合には、テキストの表示は禁止し、音声出力を許可するようにしても良い。
このように、様々な条件に応じたキャラクタの動作則やテキスト、音声の出力条件はデータベースファイルとしてサーバなどの外部装置において管理しても良く、その場合、このデータベースファイルは外部装置から定期的若しくは不定期的にダウンロードすることで、端末装置10が保持するデータベースファイルを一部更新したり追加したり他のデータベースファイルに置換したりすることができる。また、端末装置10から外部装置にアクセスしてデータベースファイル(キャラクタのモーション、テキスト内容、音声内容、モーションの再生条件、テキストや音声の出力条件など)を編集することもできる。また、「現実空間中の規定の位置に対応する仮想空間内の位置」と関連づけられているキャラクタの音声データに基づく音声をスピーカ101から出力するようにしても良い。
ステップS304では、上記の非特許文献1に記載の技術を用い、上記の場所記述情報と、ステップS301でメモリ部に格納した撮像画像上の特徴点と、を比較することで、そのときの端末装置10の3次元空間位置と撮像部103の撮像方向(つまり、端末装置10の位置及び姿勢)を認識する。そして制御部100は、該認識した3次元位置及び撮像方向のそれぞれを仮想視点の位置、姿勢として設定する。そして制御部100は、モデルデータに基づくキャラクタを仮想空間中の移動可能な領域内若しくは移動可能な経路上に配置し、該配置したキャラクタを仮想視点から見た2次元画像を描画する。
ステップS305では、制御部100は、ステップS301でメモリ部に格納した撮像画像上に、ステップS304で描画したキャラクタの2次元画像を合成した合成画像をディスプレイ105に表示する。
なお、美術館や博物館等の施設について予め作成した場所記述情報をサーバなどの外部装置に予めアップロードしておいても良い。この場合、端末装置10はGPS処理部104による位置情報を外部装置に送信することで、外部装置から、該位置情報に対応する場所記述情報をダウンロードすることができる。ダウンロードは、例えば、端末装置10のディスプレイ105に表示されているダウンロードアイコンをユーザがタッチすることで開始することができる。また、該位置情報に対応する場所記述情報が複数存在する場合には、端末装置10は、複数の場所記述情報を候補としてダウンロードしてディスプレイ105に表示し、ユーザから1つを選択する指示を受け付けても良い。
また、端末装置10は撮像画像又は該撮像画像中の特徴点をサーバなどの外部装置に定期的にアップロードし、外部装置は、端末装置10からアップロードされた撮像画像又は特徴点に基づいて、端末装置10の位置が含まれる場所記述情報を端末装置10に送信する、としても良い。
また、端末装置10は、GPS処理部104による位置情報が場所記述情報のエリアから離れた場合、場所記述情報の利用時間が規定時間以上となった場合、キャラクタの画像表示を規定時間以上行わなかった場合等の条件が満たされた場合には、メモリ部に保持している場所記述情報を消去しても良い。
なお、場所記述情報以外のデータ(上記のモデルデータなど)もまた、外部の機器から通信部107を介して取得しても良い。また、キャラクタの2次元画像は、仮想視点の位置及び姿勢の両方に基づいて描画しても良いし、位置又は姿勢に基づいて描画しても良い。
また、本実施形態では、端末装置10は、撮像画像に含まれる特徴点に基づき場所記述情報を使用して、3次元空間における端末装置10の位置及び方向を判定していた。しかしながら、例えば、所定エリア内の複数の位置に、それぞれの位置を示す信号を送信する送信機を設置する構成とすることができる。送信機は、例えば、人の可聴範囲外の音を出力するスピーカとすることができる。この場合、端末装置10のマイク102は、スピーカの音を音声信号に変換し、端末装置10は、この音声信号により、3次元空間におけるどの付近にいるかを判定する。これにより、端末装置10が撮像画像の特徴点に基づき端末装置10の位置及び方向を判定する際に、参酌すべき場所記述情報の範囲を絞り込むことができ、端末装置10の位置及び方向の判定に要する時間を短縮することができる。また、端末装置10は、一旦、端末装置10の位置及び方向を判定すると、加速度情報及び角速度情報により端末装置10の位置及び方向が変化しても、変化後の端末装置10の位置及び方向を判定し続けることができる。これにより、例えば、端末装置10の位置及び方向を判定した後、ユーザが端末装置10をポケットやカバン等に入れたりして撮像画像が得られない状態が続いても、ユーザが撮像部103による撮像画像の取得を開始し場所記述情報に基づき端末装置10の位置及び方向を判定する際に、加速度情報及び角速度情報により判定していた端末装置10の位置及び方向に基づき、参酌すべき場所記述情報の範囲を絞り込むことができる。また、場所記述情報は、該場所記述情報に対応するエリアの経度緯度などの位置情報を含んでも良い。その場合、GPS処理部104による位置情報等により、端末装置10が、場所記述情報に対応するエリア内、またはそのエリアの近くにいると判定した場合には、端末装置10がそのエリア内、あるいは近傍にいることを、ユーザに通知(画面上に通知・振動)するようにしてもよい。
また、上記の説明では、キャラクタの2次元画像は端末装置10が描画していたが、サーバなどの外部装置がキャラクタの2次元画像を描画する処理を行って、端末装置10に該描画した2次元画像を送信するようにしても構わない。その場合、端末装置10は、キャラクタの2次元画像を描画するために必要な情報(仮想視点の位置や姿勢、キャラクタの位置やモーション情報等)を外部装置に対して送信する。
また、上記の距離Dは複数の距離値(D1,D2,…:D1>D2>…)をとるようにしても良い。そして、仮想空間内におけるキャラクタの現在位置が、現実空間中の規定の位置に対応する仮想空間内の位置から規定距離Di(i=1,2,…)以内となった時点で、距離Diと関連づけられている動作をキャラクタに行わせるようにしても良い。例えば、キャラクタの現在位置が現実空間中の規定の位置に対応する仮想空間内の位置から規定距離D1以内となった時点で、距離D1と関連づけられているキャラクタの音声をスピーカ101から出力すると共にキャラクタの発声モーションを再生し、現実空間中の規定の位置に対応する仮想空間内の位置から規定距離D2以内となった時点で、距離D2と関連づけられているテキストをディスプレイ105に表示すると共にキャラクタの発声モーションを再生するようにしても良い。このように、距離Dの距離値毎に、キャラクタのモーションやテキスト、音声のデータをメモリ部や外部装置に格納するようにしても良い。
また、仮想空間におけるキャラクタの現在位置が、複数の領域Rに属しているような場合、それぞれの領域Rに対して予め設定された優先度のうち最も高い優先度の領域Rと関連づけられている処理(キャラクタのモーションの制御、テキストの表示、音声の出力)を行うようにしても良い。また、仮想空間におけるキャラクタの現在位置が、複数の領域Rに属しているような場合、仮想空間におけるキャラクタの現在位置に最も近い領域Rと関連づけられている処理(キャラクタのモーションの制御、テキストの表示、音声の出力)を行うようにしても良い。
また、上記の距離Dは、時間、日、曜日、月、季節のうち少なくとも1つに応じて変化させても良い。
また、「キャラクタの現在位置」は「キャラクタの周囲領域の位置」としても良い。その場合、キャラクタの周囲領域の一部若しくは全部が領域Rと重複する場合には、処理はステップS303に進み、キャラクタの周囲領域が領域Rと重複しない場合には、処理はステップS304に進む。