以下に、本発明の実施の形態について図面を参照して説明する。
(第1の実施形態)
図1は、本発明の表示システムの第1の実施形態の構成を示す図である。
本実施形態の表示システムは図1に示すように、表示装置である携帯端末10−1〜10−4を備えている。なお、図1においては携帯端末の数を4つとしているが、携帯端末の数は4つに限定されない。
まず、本実施形態の概要について説明する。
本実施形態では、現実の環境に設置されたマーカー50−1〜50−4にて拡張現実を実現する所定の範囲を定義している。なお、マーカーの数は4つに限定されない。また、図1に示す第1の物体像である仮想キャラクター51,52と、第2の物体像である仮想背景53,54とは、現実の環境に設置されたものではなく、携帯端末10−1〜10−4にて描画される仮想的な物体像である。
また、本実施形態では、携帯端末10−1〜10−4のいずれか2つを操作することで仮想キャラクター51,52を動作させるゲームを行うことを想定している。
そのゲームにおいて携帯端末10−1〜10−4のユーザーのそれぞれは、複数の種類の処理のそれぞれに対応付けられた複数の役割のいずれかを担うことになる。具体的には、携帯端末10−1〜10−4のユーザーのそれぞれは、仮想キャラクター51,52を動作させる第1の役割であるゲームの参加者か、拡張現実の合成画像を外部へ送信することでゲームの様子を中継する第2の役割である中継者か、ゲームの様子を観戦する第3の役割である観客かのいずれかの役割を担う。なお、上述した役割の種類および数は一例である。
以降、携帯端末10−1〜10−4のうち、ゲームの参加者が仮想キャラクター51,52を動作させるために操作する携帯端末のことを参加者用携帯端末という。なお、参加者用携帯端末では、仮想キャラクターを描画するための処理が実行される。また、携帯端末10−1〜10−4のうち、中継者が操作する携帯端末のことを中継者用携帯端末という。また、携帯端末10−1〜10−4のうち、観客が操作する携帯端末のことを観客用携帯端末という。
次に、図1に示したマーカー50−1〜50−4について説明する。上述した特許文献1、2および非特許文献に開示されている技術では、拡張現実を実現する範囲を定義するために、平面状のマーカーを用いていたが、本実施形態では、所定の形状を有する複数のマーカーを用いている。
図2は、図1に示したマーカー50−1を説明するための図であり、(a)はマーカー50−1の外観図、(b)は(a)に示したマーカー50−1の一構成例を示す図である。なお、マーカー50−2〜50−4のそれぞれも同様の構成である。
図1に示したマーカー50−1は図2(a)に示すように、球状のボール部50aと、支柱部50bと、第1円盤部50cと、第2円盤部50dと、土台部50eとを備えている。
なお、土台部50eの色は変えられるようになっている。本実施形態においては、マーカー50−1〜50−3の土台部50eの色が同じであり、マーカー50−4の土台部50eの色がマーカー50−1〜50−3の土台部50eの色と異なっているものとする。
また、図2(b)に示すようにボール部50aと第1円盤部50cと第2円盤部50dとの半径をRとし、第1円盤部50cと第2円盤部50dとの間隔をHとする。
図3は、図1に示したマーカー50−1〜50−4にて定義される所定の範囲を説明するための図であり、(a)はマーカー50−1〜50−4にて定義される所定の範囲を撮影した画像の一例を示す図、(b)はマーカー50−1〜50−4にて定義される所定の範囲を座標で表した座標系を示す図である。
図3では、マーカー50−1〜50−4にて定義される所定の範囲を太線で囲まれた範囲としている。
図3(b)では、マーカー50−1〜50−4にて定義される所定の範囲を座標として表した座標系において原点を図3(b)に示した座標とした場合のマーカー50−1の座標(座標A)とマーカー50−4の座標(座標B)を一例として示している。
次に、図1に示した携帯端末10−1〜10−4の構成について説明する。
図4は、図1に示した携帯端末10−1の一構成例を示すブロック図である。なお、携帯端末10−2〜10−4も同様の構成である。また、図5は、図1に示した携帯端末10−1の外観の一例を示す図である。
携帯端末10−1は図4に示すように、撮影部11と、画像処理部12と、制御部13と、通信部14と、操作部15と、表示画面16bを有する表示部16と、演算部17とを備えている。
以下に、図4を参照しながら携帯端末10−1の構成について説明するが、携帯端末10−1〜10−4の各部の動作は、参加者用携帯端末、中継者用携帯端末および観客用携帯端末のそれぞれに応じて異なる。そのため、各部の動作の詳細については、後述する動作フローで説明する。
撮影部11は、画像メモリ11aを備えている。撮影部11は、被写体を撮影することで画像を取得する。撮影部11は、取得した画像を示す撮影画像データを画像メモリ11aに記憶させる。そして、撮影部11は、画像メモリ11aに記憶させた撮影画像データを画像処理部12と表示部16とへ出力する。なお、撮影部11は図5に示すように、表示画面16bの反対側に存在する被写体を撮影できるように設置されている。従って、携帯端末10−1のユーザーは、携帯端末10−1を自分の体の前で保持することで、さらに前方にあるマーカー50−1〜50−4にて定義された所定の範囲を撮影することができる。
画像処理部12は、撮影部11から出力された撮影画像データを受け付け、受け付けた撮影画像データが示す画像を解析する。
ここで、画像処理部12における画像の解析について説明する。
図6は、図4に示した画像処理部12が画像を解析する動作を説明するための図であり、(a)は画像中のマーカーを示す図、(b)は画像中のマーカーの位置を特定する方法を説明するための図、(c)は(b)において破線で囲まれた部分の拡大図である。なお、撮影部11の画角は既知であるものとする。
まず、ボール部50aを構成する半径Rの球の画像中の半径が図6(a)に示すようにrであるとする。この場合、携帯端末10−1からボール部50aまでの現実の環境における距離Lはrを用いて算出することができる。
また、マーカーから距離Lだけ離れた位置からそのマーカーを撮影した場合に、第1円盤部50cと第2円盤部50dとの間の画像中の本来の間隔が図6(c)に示すようにhであるとする。しかし、実際には携帯端末は、マーカーを真横から撮影しているのではなく斜めから撮影している。そのため、第1円盤部50cと第2円盤部50dとの間の一部は、画像中では第1円盤部50cに遮られて見えないことになる。
この場合、第1円盤部50cと第2円盤部50dとの間の画像中の実際の間隔を図6(b)、(c)に示すようにd1であるとすると、d1を用いて図6(c)に示す角度θ1はd1を用いて算出することができる。同様に、d2を用いて角度θ2を算出することができる。
実際には角度θ1と角度θ2とは、ほぼ同じになる。従って、角度θ1と角度θ2とのどちらか一方、または、角度θ1と角度θ2との平均値を、図6(b)に示す角度θと見なすことができる。画像処理部12は、マーカー50−1〜50−4にて定義される所定の範囲に対する撮影部11の垂直方向の位置を角度θを用いて特定する。
ここで、マーカー50−1〜50−4にて定義される所定の範囲に対する撮影部11の水平方向の位置は、マーカー50−1〜50−4のそれぞれの画像中の位置を用いて特定することになる。そのためには、マーカー50−1〜50−4にて定義された所定の範囲を撮影している方向を考慮しなくてはならない。そのため、本実施形態では図1および図3に示したように、マーカー50−1〜マーカー50−4のうちマーカー50−4だけ土台部50eの色が異なる。従って、画像処理部12は、マーカー50−1〜50−4にて定義される所定の範囲に対する撮影部11の水平方向の位置を特定することができる。
このように、画像処理部12は、受け付けた画像中のマーカー50−1〜50−4のそれぞれの画像中の形状および形状に応じ、マーカー50−1〜50−4にて定義される所定の範囲に対する撮影部11の位置を特定する。これは、すなわち、マーカー50−1〜50−4にて定義される所定の範囲に対する携帯端末の位置を特定していることになる。そして、画像処理部12は、特定した位置を示す位置情報を制御部13へ出力する。
ここで、上述したようにマーカー50−1〜50−4のそれぞれのボール部50aは球状である。そのため、画像処理部12は、撮影された画像におけるボール部50aの影のつき方、すなわちボール部50aの色合いを解析することで光源の方向を特定することができる。
図7は、図4に示した画像処理部12が画像を解析する動作を説明するための図であり、(a)はボール部50aの影の付き方の一例を示す図、(b)は携帯端末とマーカーとの位置関係の一例を示す図である。
画像中のボール部50aの影の付き方は図7(a)に示すように、光源の方向に応じて異なる。具体的には、ボール部50aのうち、光源から近い部分の色合いは明るくなり、光源から遠い部分の色合いは暗くなる。そのため、画像処理部12は、画像中のボール部50aの色合いを解析することでマーカー50−1〜50−4にて定義された範囲における光源の方向を特定する。
また、本実施形態では、マーカー50−1〜50−4にて定義された所定の範囲を少なくとも2つの携帯端末で撮影することを想定している。そのため、図7(b)に示すように、例えば携帯端末10−1は、携帯端末10−1にて撮影された画像からは判別できない携帯端末10−2側におけるボール部50aの色合いを、携帯端末10−2から取得する。同様に、携帯端末10−2は、携帯端末10−2にて撮影された画像からは判別できない携帯端末10−1側におけるボール部50aの色合いを、携帯端末10−1から取得する。
具体的には画像処理部12は、特定した光源の方向を通知するための通知用光源情報を他の携帯端末へ送信する。また、画像処理部12は、他の携帯端末から送信された通知用光源情報を受信する。なお、通知用光源情報は、後述する通信部14を介して送受信される。そして、画像処理部12は、受信した通知用光源情報が示す光源の方向と、特定した光源の方向とから、マーカー50−1〜50−4にて定義された所定の範囲における全ての光源の方向と環境光(方向性の無い光)とを特定する。そして、画像処理部12は、特定した光源の方向と環境光とを示す光源情報を制御部13へ出力する。なお、画像処理部12から出力された位置情報と光源情報とは、後述する演算部17にて記憶される。
再度、図4を参照すると、操作部15は、キーパッド15aを備えている。操作部15は、ユーザーからのキーパッド15aの操作を受け付ける。そして、操作部15は、受け付けた操作に対応する情報を示す操作情報を制御部13へ出力する。なお、参加者用携帯端末のユーザーは、キーパッド15aを操作することで仮想キャラクター51,52を動作させる。
表示部16は、表示画像メモリ16aと、表示画面16bとを備えている。
表示画像メモリ16aは、撮影部11から出力された撮影画像データを受け付けて記憶する。また、表示画像メモリ16aは、後述する演算部17から出力され、仮想的な物体像を示す仮想物体画像データを記憶する。
表示画面16bは、表示画像メモリ16aに記憶された撮影画像データが示す画像と仮想物体画像データが示す画像と合成した画像を拡張現実の合成画像として表示する。
通信部14は、近距離通信部14aと、遠距離通信部14bとを備えている。
近距離通信部14aは、後述する演算部17に記憶された情報を取得し、取得した情報を近距離通信が可能な他の携帯端末へ送信する。また、近距離通信部14aは、近距離通信が可能な他の携帯端末等から送信された情報を受信し、受信した情報を演算部17等へ出力する。なお、近距離通信とは、例えば赤外線やBluetooth(登録商標)を用いた通信のことである。
遠距離通信部14bは、表示画像メモリ16aに記憶された撮影画像データと仮想物体画像データとを取得する。そして、遠距離通信部14bは、中継サーバー(不図示)からの要求に応じ、取得した撮影画像データと仮想物体画像データとをインターネット等を介してその中継サーバーへ送信する。これにより、表示画面16bに表示されている合成画像を外部に公開することができる。
制御部13は、携帯端末10−1の動作を制御するためのプログラムや各種のデータ等を予め記憶している。具体的には制御部13は、携帯端末10−1を識別する端末識別情報を記憶している。また、制御部13は、図1に示した仮想キャラクター51,52のような仮想キャラクターの形状を示す形状データを記憶している。形状データは、仮想キャラクターが例えば図1に示した仮想キャラクター51,52のように人型の物体である場合、頭や首、背骨、肩、腰、腕、脚等の人の体の複数の構成部位のそれぞれの形状を示している。なお、制御部13は、複数の仮想キャラクターのそれぞれに対応する複数の形状データを記憶している。また、形状データには、複数の構成部位のそれぞれの接続状態を示すデータも含まれる。さらに、制御部13は、仮想キャラクターの姿勢を決定するための姿勢データを記憶している。姿勢データは、例えば仮想キャラクターの背骨と腰との接続位置を図3(b)に示したような座標系における所定の座標とした場合に、その座標を基準とした頭の位置や、肩の位置の相対座標を示すデータである。つまり、マーカー50−1〜50−4にて定義される所定の範囲上の仮想キャラクターの位置や形状(姿勢)が、姿勢データに応じて決定されることになる。なお、制御部13は、複数の仮想キャラクターのそれぞれに対応する複数の姿勢データを記憶している。また、制御部13が予め記憶している姿勢データは初期値である。そして、制御部13は、操作部15から出力された操作情報に基づき、記憶している姿勢データを更新する。また、制御部13は、図1に示した仮想背景53,54のような仮想背景の形状を示す背景形状データを記憶している。背景形状データは、仮想背景が例えば図1に示した仮想背景53,54のような樹木である場合、樹木の幹や葉のそれぞれの形状を示している。また、背景形状データには、樹木の幹や葉の接続状態を示すデータも含まれる。さらに、制御部13は、仮想背景の配置を決定するための配置データを記憶している。配置データは例えば、仮想背景の幹の先端を図3(b)に示したような座標系における所定の座標とした場合に、その座標を基準した葉の相対座標を示すデータである。
演算部17は、仮想キャラクター演算部17aと、表示画像演算部17bと、仮想背景演算部17cとを備えている。
仮想キャラクター演算部17aは、形状記憶部17a−1と、姿勢定義部17a−2と、姿勢演算部17a−3とを備えている。
形状記憶部17a−1は、制御部13に記憶されている複数の形状データのうちのいずれかを記憶する。
姿勢定義部17a−2は、制御部13に記憶されている複数の姿勢データのうちのいずれかを記憶する。また、姿勢定義部17a−2は、制御部13にて更新された姿勢データを取得し、記憶している姿勢データに代えて、取得した姿勢データを記憶する。
姿勢演算部17a−3は、仮想キャラクター51,52を描画するための処理を実行する。具体的には姿勢演算部17a−3は、形状記憶部17a−1に記憶された形状データが示す形状を、姿勢定義部17a−2に記憶された姿勢データに基づいて変化させた多角形を生成する。そして、姿勢演算部17a−3は、生成した多角形の頂点座標を算出する。そして、姿勢演算部17a−3は、算出した頂点座標を示す頂点座標情報を表示画像演算部17bへ出力する。なお、この頂点座標情報が、仮想キャラクターを描画するための処理の処理結果となる。
仮想背景演算部17cは、形状記憶部17c−1と、配置定義部17c−2と、配置演算部17c−3とを備えている。
形状記憶部17c−1は、制御部13から出力された背景形状データを記憶する。
配置定義部17c−2は、制御部13から出力された配置データを記憶する。
配置演算部17c−3は、仮想背景53,54を描画するための処理を実行する。具体的には配置演算部17c−3は、配置定義部17c−2に記憶された配置データを例えば時間の経過をパラメータとして更新する。そして、配置演算部17c−3は、形状記憶部17c−1に記憶された背景形状データが示す形状を、配置定義部17c−2に記憶された配置データに基づいて変化させた多角形を生成する。そして、配置演算部17c−3は、生成した多角形の頂点座標を示す頂点座標情報を表示画像演算部17bへ出力する。なお、この頂点座標情報が、仮想背景を描画するための処理の処理結果となる。
表示画像演算部17bは、第1の記憶部17b−1と、第2の記憶部17b−2と、第3の記憶部17b−3と、表示画像演算部17b−4と、視点・光源定義部17b−5とを備えている。
第1の記憶部17b−1は、姿勢演算部17a−3から出力された頂点座標情報を受け付けて記憶する。なお、第1の記憶部17b−1は、携帯端末10−1のユーザーの役割によっては、近距離通信部14aから出力された頂点座標情報を受け付けて記憶する。
第2の記憶部17b−2は、近距離通信部14aから出力された頂点座標情報を受け付けて記憶する。
第3の記憶部17b−3は、配置演算部17c−3から出力された頂点座標情報を受け付けて記憶する。なお、第3の記憶部17b−3は、携帯端末10−1のユーザーの役割によっては、近距離通信部14aから出力された頂点座標情報を受け付けて記憶する。
視点・光源定義部17b−5は、画像処理部12から出力された位置情報と光源情報とを記憶する。
表示画像演算部17b−4は、第1の記憶部17b−1に記憶された頂点座標情報と、第2の記憶部17b−2に記憶された頂点座標情報と、第3の記憶部17b−3に記憶された頂点座標情報と、視点・光源定義部17b−5に記憶された位置情報および光源情報とを取得する。そして、表示画像演算部17b−4は、取得した位置情報に基づき、取得した頂点座標情報が示す頂点座標を、図3(b)に示したような座標系における座標に変換する。これにより、マーカー50−1〜50−4にて定義される所定の範囲における仮想キャラクター51,52と仮想背景53,54との配置位置および形状(姿勢)とが決定し、決定した配置位置と形状とを示す画像データが生成されたことになる。さらに、表示画像演算部17b−4は、生成された画像データに、取得した光源情報を反映させることで仮想物体画像データを生成する。そして、表示画像演算部17b−4は、生成した仮想物体画像データを表示部16へ出力する。
以下に、上記のように構成された表示システムの動作について説明する。
まず、図1〜図7に示した表示システムにおいてゲームの機能を起動したときの携帯端末の動作について説明する。
図8は、図1〜図7に示した表示システムにおいてゲームの機能を起動したときの携帯端末の動作を説明するためのフローチャートである。
ゲームの機能が起動されると、制御部13はまず、ゲームの参加者と、ゲームの中継者と、ゲームの観客とのうちのいずれかの役割を選択させるための画面を表示画面16bに表示させる(ステップS1)。
操作部15は、ユーザーから役割の選択を受け付ける(ステップS2)。そして、操作部15は、選択された役割を示す操作情報を制御部13へ出力する。
操作部15から出力された操作情報を受け付けた制御部13は、受け付けた操作情報がゲームの参加者を示しているかどうかを判定する。つまり、選択された役割がゲームの参加者であるかどうかを判定する(ステップS3)。
ステップS3における判定の結果、受け付けた操作情報がゲームの参加者を示している場合、参加者用携帯端末を初期化する動作が実行される(ステップS4)。なお、この動作の詳細については後述する。
次に、参加者用携帯端末と中継者用携帯端末とに共通する初期化をする動作が実行される(ステップS5)。なお、この動作の詳細についても後述する。
一方、ステップS3における判定の結果、受け付けた操作情報がゲームの参加者を示していない場合、受け付けた操作情報がゲームの中継者を示しているかどうかを判定する。つまり、選択された役割がゲームの中継者であるかどうかを判定する(ステップS6)。
ステップS6における判定の結果、受け付けた操作情報がゲームの中継者を示している場合、中継者用携帯端末を初期化する動作が実行される(ステップS7)。なお、この動作の詳細についても後述する。そして、ステップS5の動作へ移行する。
一方、ステップS6における判定の結果、受け付けた操作情報がゲームの中継者を示していない場合には、観客用携帯端末を初期化するための動作が実行される(ステップS8)。なお、この動作の詳細についても後述する。
図9は、図1〜図7に示した表示システムにおいて携帯端末を初期化する動作を説明するためのフローチャートであり、(a)は参加者用携帯端末を初期化する動作を説明するためのフローチャート、(b)は中継者用携帯端末を初期化する動作を説明するためのフローチャートである。
まず、図9(a)を参照しながら、参加者用携帯端末を初期化する動作について説明する。
制御部13は、仮想キャラクター演算部17aを起動させる(ステップS21)。
次に、制御部13は、複数の仮想キャラクターのいずれかを選択させるための画面を表示画面16bに表示させる(ステップS22)。
操作部15は、複数の仮想キャラクターのいずれかの選択をユーザーから受け付ける(ステップS23)。そして、操作部15は、選択された仮想キャラクターを示す操作情報を制御部13へ出力する。
操作部15から出力された操作情報を受け付けた制御部13は、複数の形状データのうち、受け付けた操作情報が示す仮想キャラクターに対応する形状データを仮想キャラクター演算部17aへ出力する。また、制御部13は、複数の姿勢データのうち、受け付けた操作情報が示す仮想キャラクターに対応する姿勢データを仮想キャラクター演算部17aへ出力する。
制御部13から出力された形状データを受け付けた仮想キャラクター演算部17aの形状記憶部17a−1は、受け付けた形状データを記憶する(ステップS24)。
また、制御部13から出力された姿勢データを受け付けた仮想キャラクター演算部17aの姿勢定義部17a−2は、受け付けた姿勢データを記憶する(ステップS25)。
次に、制御部13は、第1の記憶部17b−1への頂点座標情報の出力元を姿勢演算部17a−3に設定する(ステップS26)。
そして、制御部13は、第1の記憶部17b−1と近距離通信部14aとの間のデータ通信経路を活性化する(ステップS27)。
次に、図9(b)を参照しながら、中継者用携帯端末を初期化する動作について説明する。
制御部13は、中継サーバーのURL(Uniform Resouce Locator)の入力を受け付けるための画面を表示画面16bに表示させる(ステップS41)。
操作部15は、ユーザーからURLの入力を受け付ける(ステップS42)。
次に、制御部13は、遠距離通信部14bを起動させる(ステップS43)。
次に、制御部13は、遠距離通信部14bと表示画像メモリ16aとの間のデータ通信経路を活性化する(ステップS44)。
次に、制御部13は、第1の記憶部17b−1への頂点座標情報の出力元を近距離通信部14aに設定する(ステップS45)。これにより、中継者用携帯端末は、他の携帯端末から送信された頂点座標情報を取得することが可能となる。
図10は、図1〜図7に示した表示システムにおいて参加者用携帯端末と中継者用携帯端末に共通する初期化の動作を説明するためのフローチャートである。
制御部13は、近距離通信部14aを起動させる(ステップS61)。
次に、制御部13は、ユーザーからグループID(Identification)の入力を受け付けるための画面を表示画面16bに表示させる(ステップS62)。なお、グループIDとは、図1に示したようなマーカー50−1〜50−4にて定義される所定の範囲を共有する複数の携帯端末から構成されるグループを識別するものである。
操作部15は、ユーザーからグループIDの入力を受け付ける(ステップS63)。そして、操作部15は、受け付けたグループIDを示す操作情報を制御部13へ出力する。
操作部15から出力された操作情報を受け付けた制御部13は、受け付けた操作情報が示すグループIDを記憶する(ステップS64)。
そして、制御部13は、記憶したグループIDと、予め記憶している端末識別情報とを含む検索用情報を近距離通信部14aを介して送信する(ステップS65)。なお、検索用情報は、同一グループに属する携帯端末を検索するために用いられる情報である。
ここで、ステップS65にて送信された検索用情報の受信側の動作について説明する。
図11は、図1〜図7に示した表示システムにおいて携帯端末が検索用情報を受信したときの動作の一例を説明するためのフローチャートである。
近距離通信部14aは、検索用情報を受信する(ステップS65−1)。そして、近距離通信部14aは、受信した検索用情報を制御部13へ出力する。
近距離通信部14aから出力された検索用情報を受け付けた制御部13は、受け付けた検索用情報に含まれるグループIDと、記憶しているグループIDとが一致するかどうかを確認する(ステップS65−2)。
ステップS65−1における確認の結果、受け付けた検索用情報に含まれるグループIDと、記憶しているグループIDとが一致する場合、制御部13は、受け付けた検索用情報に含まれる端末識別情報を記憶する(ステップS65−3)。
そして、制御部13は、記憶している端末識別情報を含むグループ一致情報を近距離通信部14aを介して送信する(ステップS65−4)。
一方、ステップS65−1における確認の結果、受け付けた検索用情報に含まれるグループIDと、記憶しているグループIDとが一致しない場合、グループ不一致情報を近距離通信部14aを介して送信する(ステップS65−5)。
再度、図10を参照すると、近距離通信部14aは、グループ一致情報、グループ不一致情報を受信する(ステップS66)。そして、近距離通信部14aは、受信したグループ一致情報を制御部13へ出力する。
近距離通信部14aから出力されたグループ一致情報を受け付けた制御部13は、受け付けたグループ一致情報に含まれる端末識別情報を、同一のグループに属する携帯端末を識別するための同一グループ端末識別情報として記憶する(ステップS67)。
次に、制御部13は、図8に示したステップS2において選択された役割に対応する処理を実行する際の負荷量を算出する(ステップS68)。
そして、制御部13は、同一グループ端末識別情報にて識別される携帯端末へ算出した負荷量を示す負荷量情報を近距離通信部14aを介して送信する(ステップS69)。
また、制御部13は、同一グループの他の携帯端末から送信された負荷量情報を近距離通信部14aを介して受信する(ステップS70)。
そして、制御部13は、受信した負荷量情報が示す負荷量に、算出した負荷量よりも小さなものがあるかどうかを判定する(ステップS71)。
ステップS71における判定の結果、受信した負荷量情報が示す負荷量に、算出した負荷量よりも小さなものがない場合、制御部13は、仮想背景演算部17cを起動させる(ステップS72)。
次に、制御部13は、記憶している背景形状データと配置データとを仮想背景演算部17cへ出力する。
制御部13から出力された背景形状データを受け付けた仮想背景演算部17cの形状記憶部17c−1は、受け付けた背景形状データを記憶する(ステップS73)
また、制御部13から出力された配置データを受け付けた仮想背景演算部17cの配置定義部17c−2は、受け付けた配置データを記憶する(ステップS74)。
そして、制御部13は、撮影部11および画像処理部12を起動させる(ステップS75)。
一方、ステップS71における判定の結果、受信した負荷量情報が示す負荷量に、算出した負荷量よりも小さなものがある場合には、ステップS75の動作へ遷移する。
次に、図1〜図7に示した表示システムにおいて観客用携帯端末を初期化する動作について説明する。
図12は、図1〜図7に示した表示システムにおいて観客用携帯端末を初期化する動作の一例を説明するためのフローチャートである。
まず、制御部13は、仮想キャラクター演算部17aを停止させる(ステップS81)。
次に、制御部13は、第1の記憶部17b−1への頂点座標情報の出力元を近距離通信部14aに設定し(ステップS82)、近距離通信部14aを起動させる(ステップS83)。
そして、制御部13は、グループIDの入力を受け付けるための画面を表示画面16bに表示させる(ステップS84)。
操作部15は、ユーザーからグループIDの入力を受け付ける(ステップS85)。そして、操作部15は受け付けたグループIDを示す操作情報を制御部13へ出力する。
操作部15から出力された操作情報を受け付けた制御部13はまず、受け付けた操作情報が示すグループIDを記憶する(ステップS86)。
そして、制御部13は、記憶したグループIDと、予め記憶している端末識別情報とを含む検索用情報を生成し、生成した検索用情報を近距離通信部14aを介して送信する(ステップS87)。なお、検索用情報を受信した携帯端末の動作は、図11を参照しながら説明したのと同じである。
次に、近距離通信部14aは、上述したグループ一致情報、グループ不一致情報を受信する(ステップS88)。そして、近距離通信部14aは、受信したグループ一致情報を制御部13へ出力する。
近距離通信部14aから出力されたグループ一致情報を受け付けた制御部13は、受け付けたグループ一致情報に含まれる端末識別情報を同一グループ端末識別情報として記憶する(ステップS89)。
そして、制御部13は、撮影部11および画像処理部12を起動させる(ステップS90)。
なお、図12を参照しながら説明した観客用携帯端末の初期化は、他の携帯端末がゲームを開始した後にも実行することができる。すなわち、観客用携帯端末のユーザーは任意のタイミングでゲームの観客になることができる。
ここまで、図1〜図7に示した表示システムにおいて携帯端末を初期化する動作について説明した。
図13は、図1〜図7に示した表示システムにおいて携帯端末10−1〜10−4のそれぞれの状態の一例を示す図である。
図13は、携帯端末10−1が仮想キャラクター51を描画するための処理を実行する参加者用携帯端末であり、携帯端末10−2が仮想キャラクター52を描画するための処理を実行する参加者用携帯端末であり、携帯端末10−3が中継者用携帯端末であり、携帯端末10−4が観客用携帯端末である場合を示している。
また、図13は、携帯端末10−1,10−2の負荷量と、携帯端末10−3の負荷量とのうち、携帯端末10−3の負荷量が最も大きく、携帯端末10−2の負荷量が最も小さな場合を示している。この場合、携帯端末10−2が仮想背景53,54を描画するための処理を実行することになる。
次に、図1〜図7に示した表示システムにおいてゲームを開始した後の携帯端末の動作について説明する。
まず、仮想キャラクターを描画するための処理と、仮想背景を描画するための処理について説明する。
図14は、図1〜図7に示した表示システムにおいて仮想キャラクターを描画するための処理と、仮想背景を描画するための処理とにおける動作を説明するためのフローチャートであり、(a)は仮想キャラクターを描画するための処理における動作を説明するためのフローチャート、(b)は仮想背景を描画するための処理における動作を説明するためのフローチャートである。
まず、図14(a)を参照しながら仮想キャラクターを描画するための処理における動作について説明する。
操作部15は、ユーザーのキーパッド15aの操作を受け付ける(ステップS101)。そして、操作部15は、受け付けた操作内容を示す操作情報を制御部13へ出力する。
操作部15から出力された操作情報を受け付けた制御部13は、受け付けた操作情報に基づき、上述した図9(a)のステップS23にて選択された仮想キャラクターに対応する姿勢データを更新する(ステップS102)。
姿勢定義部17a−2は、制御部13に記憶された姿勢データを所定の間隔で取得する。
姿勢定義部17a−2は、記憶している姿勢データに代えて、取得した姿勢データを記憶する。これにより、姿勢定義部17a−2に記憶されている姿勢データが更新される(ステップS103)。
姿勢演算部17a−3は、形状記憶部17a−1に記憶された形状データが示す形状を、姿勢定義部17a−2に記憶された姿勢データに基づいて変化させた多角形を生成する(ステップS104)。
そして、姿勢演算部17a−3は、生成した多角形の頂点座標を算出する(ステップS105)。
次に、姿勢演算部17a−3は、算出した頂点座標を示す頂点座標情報を第1の記憶部17b−1に記憶させる(ステップS106)。
次に、近距離通信部14aは、第1の記憶部17b−1に記憶された頂点座標情報を取得する。
そして、近距離通信部14aは、取得した頂点座標情報を、制御部13に記憶された同一グループ端末識別情報にて識別される携帯端末へ送信する(ステップS107)。なお、この動作の詳細については後述する。また、頂点座標情報の受信側の携帯端末の動作についても後述する。
次に、図14(b)を参照しながら仮想背景を描画するための処理における動作について説明する。
配置演算部17c−3は、配置定義部17c−2に記憶されている配置データを例えば時間の経過をパラメータとして更新する(ステップS121)。
次に、配置演算部17c−3は、形状記憶部17c−1に記憶された背景形状データが示す形状を、配置定義部17c−2に記憶された配置データに基づいて変化させた多角形を生成する(ステップS122)。
次に、配置演算部17c−3は、生成した多角形の頂点座標を算出する(ステップS123)。
そして、配置演算部17c−3は、算出した頂点座標を示す頂点座標情報を第3の記憶部17b−3に記憶させる(ステップS124)。
次に、近距離通信部14aは、第3の記憶部17b−3に記憶された頂点座標情報を取得する。
そして、近距離通信部14aは、取得した頂点座標情報を、制御部13に記憶された同一グループ端末識別情報にて識別される携帯端末へ送信する(ステップS125)。
図15は、図1〜図7に示した表示システムにおいて頂点座標情報の送信側の動作と受信側の動作とを説明するためのフローチャートであり、(a)は頂点座標情報の送信側の動作を説明するためのフローチャート、(b)は頂点座標情報の受信側の動作を説明するためのフローチャートである。
まず、図15(a)を参照しながら、頂点座標情報の送信側の動作について説明する。
制御部13は、近距離通信部14aにて頂点座標情報が取得されると、取得された頂点座標情報が、仮想キャラクターの頂点座標情報であるか、仮想背景の頂点座標情報であるかを示す種別情報を生成する(ステップS141)。
次に、制御部13は、記憶している同一グループ端末識別情報にて識別される携帯端末のうちのいずれかを選択する(ステップS142)。
次に、制御部13は、近距離通信部14aを介し、生成した種別情報を、選択した携帯端末へ送信する(ステップS143)。
次に、近距離通信部14aは、種別情報を送信した送信先の携帯端末との間に通信経路を確立する(ステップS144)。
そして、近距離通信部14aは、確立した通信経路を介し、取得した頂点座標情報を送信する(ステップS145)。
次に、制御部13は、記憶している同一グループ端末識別情報にて識別される携帯端末のうち、未選択の携帯端末があるかどうかを確認する(ステップS146)。
ステップS146における確認の結果、同一グループ端末識別情報にて識別される携帯端末のうち、未選択の携帯端末がある場合、制御部13は、未選択の携帯端末のうちのいずれかを選択する(ステップS147)。そして、ステップS143の動作へ遷移する。
一方、ステップS146における確認の結果、同一グループ端末識別情報にて識別される携帯端末のうち、未選択の携帯端末がない場合には、処理を終了する。
なお、図15(a)に示したフローでは、同一グループ端末識別情報にて識別される携帯端末のそれぞれに順次、頂点座標情報を送信していた。このような方法ではなく、同一グループ端末識別情報にて識別されるすべての携帯端末に一斉に頂点座標情報を送信するようにしてもよい。但し、この場合、通信中にエラー等が発生したときには、エラー等が発生したフレームを破棄する必要がある。
次に、図15(b)を参照しながら、頂点座標情報の受信側の動作について説明する。
近距離通信部14aは、同一グループの他の携帯端末から送信された種別情報を受信する(ステップS161)。
次に、近距離通信部14aは、種別情報の送信元の携帯端末との間に通信経路を確立する(ステップS162)。
次に、近距離通信部14aは、確立した通信経路を介して頂点座標情報を受信する(ステップS163)。
そして、制御部13は、受信した種別情報が示す内容に応じ、表示画像演算部17bの第1〜第3の記憶部17b−1〜17b−3のいずれかに、近距離通信部14aにて受信された頂点座標情報を記憶させる(ステップS164)。
次に、受信した頂点座標情報を記憶するときの動作の詳細について説明する。
図16は、図1〜図7に示した表示システムにおいて携帯端末が、受信した頂点座標情報を記憶するときの動作を説明するためのフローチャートである。
制御部13は、近距離通信部14aにて受信された種別情報が仮想背景の頂点座標情報であることを示しているかどうかを確認する(ステップS181)。
ステップS181における確認の結果、近距離通信部14aにて受信された種別情報が仮想背景の頂点座標情報であることを示している場合、制御部13は、近距離通信部14aにて受信された頂点座標情報を第3の記憶部17b−3に記憶させる(ステップS182)。そして、処理を終了する。
一方、ステップS181における確認の結果、近距離通信部14aにて受信された種別情報が仮想背景の頂点座標情報でないことを示している場合、すなわち、仮想キャラクターの頂点座標情報であることを示している場合、制御部13は、近距離通信部14aにて受信された頂点座標情報の送信元の携帯端末以外から、仮想キャラクターの頂点座標情報を受信しているかどうかを確認する(ステップS183)。
ステップS183における確認の結果、近距離通信部14aにて受信された頂点座標情報の送信元の携帯端末以外から、仮想キャラクターの頂点座標情報を受信している場合、制御部13は、近距離通信部14aにて受信した頂点座標情報を第1の記憶部17b−1に記憶させる(ステップS184)。そして、処理を終了する。
一方、ステップS183における確認の結果、近距離通信部14aにて受信された頂点座標情報の送信元の携帯端末以外から、仮想キャラクターの頂点座標情報を受信していない場合、制御部13は、受信した頂点座標情報を第2の記憶部17b−2に記憶させる(ステップS185)。
次に、制御部13は、近距離通信部14aにて受信された頂点座標情報の送信元の携帯端末の端末識別情報を記憶する(ステップS186)。そして、処理を終了する。
この後、表示画像演算部17b−4は、第1の記憶部17b−1、第2の記憶部17b−2および第3の記憶部17b−3に記憶された頂点座標情報を取得し、取得した頂点座標情報から仮想物体画像データを生成する。このとき、表示画像演算部17b−4は上述したように、視点・光源定義部17b−5に記憶された解析結果に基づいて仮想物体画像データを生成する。
ここで、視点・光源定義部17b−5に画像処理部12における解析結果を記憶させるときの動作について説明する。
図17は、図1〜図7に示した表示システムにおいて視点・光源定義部17b−5に画像処理部12における解析結果を記憶させるときの動作を説明するためのフローチャートである。
まず、画像処理部12は、撮影部11から出力された撮影画像データを受け付ける。
撮影部11から出力された撮影画像データを受け付けた画像処理部12は、受け付けた撮影画像データが示す画像中のマーカー50−1〜50−4のそれぞれの位置と形状を認識する(ステップS201)。
次に、画像処理部12は、マーカー50−1〜50−4にて定義される所定の範囲を
座標で表した座標系を定義する(ステップS202)。
次に、画像処理部12は、ステップS201にて認識したマーカー50−1〜50−4のそれぞれの位置および形状から、マーカー50−1〜50−4にて定義される所定の範囲に対する撮影部11の水平位置と垂直位置とを特定する(ステップS203)。
また、画像処理部12は、受け付けた撮影画像データが示す画像中のボール部50aの色合いから光源の方向を特定する。
次に、画像処理部12は、近距離通信部14aから出力された通知用光源情報を受け付ける。
次に、画像処理部12は、受け付けた通知用光源情報が示す光源の方向と、特定した光源の方向とから、マーカー50−1〜50−4にて定義された所定の範囲のおける全ての光源の方向と環境光とを特定する(ステップS204)。
そして、画像処理部12は、光源の方向と環境光とを示す光源情報と、ステップS203にて特定された位置を示す位置情報とを制御部13へ出力する。
画像処理部12から出力された光源情報と位置情報とを受け付けた制御部13は、受け付けた位置情報と光源情報とを表示画像演算部17bの視点・光源定義部17b−5に記憶させる(ステップS205)。
この後、上述したように、表示画像演算部17b−4にて仮想物体画像データが生成される。なお、表示画像演算部17b−4における仮想物体画像データの生成は、予め決められた所定の間隔で実行してもよいし、上述したステップS205の動作が終了する度に実行してもよい。
そして、表示画像演算部17b−4にて生成された仮想物体画像データと、撮影部11から出力された撮影画像データとが表示画像メモリ16aに記憶される。表示画面16bは、表示画像メモリ16aに記憶された仮想物体画像データが示す画像と撮影画像データが示す画像とを重畳して拡張現実の合成画像として表示する。
このように本実施形態において携帯端末10−1〜10−4のそれぞれは、表示部16と、現実の環境の所定の範囲を撮影する撮影部11と、複数の種類の処理のそれぞれに対応付けられた複数の役割のいずれかの選択を受け付ける操作部15とを有する。
また、携帯端末10−1〜10−4のそれぞれは、複数の役割のうち第1の役割が選択された場合、操作部15に対する操作に応じて形状が変化する仮想キャラクターを描画するための処理を実行する演算部17を有する。
また、携帯端末10−1〜10−4のそれぞれは、選択された役割に対応する処理を実行する際の負荷量を示す負荷量情報を、携帯端末10−1〜10−4のうち当該携帯端末以外の他の携帯端末へ送信し、当該他の携帯端末から送信された負荷量情報を受信する通信部14を有する。
そして、演算部17は、通信部14にて受信された負荷量情報が示す負荷量に、選択された役割に対応する処理を実行する際の負荷量よりも小さなものがない場合、仮想背景を描画するための処理をさらに実行する。
また、通信部14は、演算部17における処理結果を他の携帯端末へ送信するとともに、当該他の携帯端末から送信された処理結果を受信する。
そして、表示部16は、撮影部11にて撮影された画像と、演算部17における処理結果に基づく物体像と、通信部14にて受信された処理結果に基づく物体像とを重畳させることで仮想キャラクターおよび仮想背景が所定の範囲上に配置された合成画像を表示する。
これにより、複数の携帯端末のそれぞれの負荷量が分散されることになる。
従って、仮想的な物体像の描画にかかる負荷量が大きな場合でも、拡張現実の合成画像を実用的な速度で表示することができる。
また、複数の携帯端末において拡張現実感を共有できるのはもちろんのこと、複数の携帯端末のうちのいずれかの携帯端末を操作することで変化する仮想的な物体像の形状や位置を、その複数の携帯端末で共有することができる。
また、本実施形態において撮影部11は、拡張現実を実現する所定の範囲を定義するマーカーとして、所定の形状を有する複数のマーカーを撮影している。
これにより、拡張現実を実現する所定の範囲を様々な大きさに変化させた合成画像を得ることができる。
また、マーカーを設置する場所の起伏等の影響をマーカーが受けることがないため、撮影された画像と、仮想的な物体像とを重畳する際の精度を一定に保つことができる。
(第2の実施形態)
図18は、本発明の表示システムの第2の実施形態の構成を示す図である。なお、本実施形態において携帯端末10−1〜10−4の構成は、図4に示したのと同様である。
図18を参照すると、本実施形態においては、仮想背景53,54以外にも多くの仮想背景が存在している。この場合、仮想背景を描画するための処理を実行する携帯端末の負荷量が非常に大きくなる。
本実施形態では、ゲームを開始したときには、携帯端末10−1が仮想キャラクター51を動作させるための参加者用携帯端末であり、携帯端末10−2が仮想キャラクター52を動作させるための参加者用携帯端末であり、携帯端末10−3が中継用携帯端末である場合を想定している。つまり、ゲームを開始したときには、観客用携帯端末が存在していない。また、仮想背景の描画は携帯端末10−1〜10−3のいずれかにおいて実行されているものとする。
このような状況において、ゲームを開始した後に携帯端末10−4を観客用携帯端末として追加する場合を考えてみる。この場合、観客用携帯端末を初期化する必要があるが、この初期化の動作は、上述した図12を参照しながら説明した動作とは異なる動作となる。
図19は、図1〜図7に示した表示システムにおいて観客用携帯端末を初期化する動作の他の例を説明するためのフローチャートである。
図19におけるステップS221〜S227までの動作は、図12におけるステップS81〜87までの動作と同じであるため、説明を省略する。
ここで、ステップS227において送信された検索用情報の受信側の動作について説明する。
図20は、図1〜図7に示した表示システムにおいて携帯端末が検索用情報を受信したときの動作の他の例を説明するためのフローチャートである。なお、本実施形態において検索用情報は、同一グループに属する携帯端末を検索するためだけではなく、携帯端末10−1〜10−4のうち仮想背景を描画するための処理を実行している携帯端末を検索するためにも用いられる情報である。
近距離通信部14aは、検索用情報を受信する(ステップS227−1)。そして、近距離通信部14aは、受信した検索用情報を制御部13へ出力する。
近距離通信部14aから出力された検索用情報を受け付けた制御部13は、受け付けた検索用情報に含まれるグループIDと、記憶しているグループIDとが一致するかどうかを確認する(ステップS227−2)。
ステップS227−1における確認の結果、受け付けた検索用情報に含まれるグループIDと、記憶しているグループIDとが一致する場合、制御部13は、受け付けた検索用情報に含まれる端末識別情報を記憶する(ステップS227−3)。
次に、制御部13は、第1の記憶部17b−1への頂点座標情報の出力元が姿勢演算部17a−3であるかどうかを確認する(ステップS227−4)。
ステップS227−4における確認の結果、第1の記憶部17b−1への頂点座標情報の出力元が姿勢演算部17a−3である場合、制御部13は、仮想背景演算部17cが起動しているかどうかを確認する(ステップS227−5)。
ステップS227−5における確認の結果、仮想背景演算部17cが起動している場合、制御部13は、その旨を示す実行情報をグループ一致情報に付加して近距離通信部14aを介して送信する(ステップS227−6)。
そして、制御部13は、仮想背景演算部17cを停止させ(ステップS227−7)、処理を終了する。
ここで、ステップS227−4における確認の結果、第1の記憶部17b−1への頂点座標情報の出力元が姿勢演算部17a−3でない場合、制御部13は、遠距離通信部14bが起動しているかどうかを確認する(ステップS227−8)。
ステップS227−8における確認の結果、遠距離通信部14bが起動している場合、ステップS227−5の動作へ遷移する。
一方、ステップS227−8における確認の結果、遠距離通信部14bが起動していない場合、制御部13は、実行情報を付加せずにグループ一致情報を近距離通信部14aを介して送信し(ステップS227−9)、処理を終了する。
なお、ステップS227−5における確認の結果、仮想背景演算部17cが起動していない場合にはステップS227−9の動作へ遷移する。
また、ステップS227−2における確認の結果、受け付けた検索用情報に含まれるグループIDと、記憶しているグループIDとが一致しない場合、制御部13は、不一致情報を近距離通信部14aを介して送信し(ステップS227−10)、処理を終了する。
再度、図19を参照すると、制御部13は、実行情報が付加されたグループ一致情報が近距離通信部14aにて受信されたかどうかを確認する(ステップS228)。
ステップS228における確認の結果、実行情報が付加されたグループ一致情報が受信されていない場合、制御部13は、実行情報が付加されていないグループ一致情報を受信したかどうかを確認する(ステップS229)。
ステップS229における確認の結果、実行情報が付加されていないグループ一致情報を受信した場合、制御部13は、グループ一致情報に含まれる端末識別情報を、同一グループ端末識別情報として記憶する(ステップS230)。
そして、制御部13は、撮影部11および画像処理部12を起動させる(ステップS231)。
ここで、ステップS228における確認の結果、実行情報が付加されたグループ一致情報が受信されている場合、制御部13は、仮想背景演算部17cを起動させる(ステップS232)。
次に、制御部13は、記憶している背景形状データと配置データとを仮想背景演算部17cへ出力する。
制御部13から出力された背景形状データを受け付けた仮想背景演算部17cの形状記憶部17c−1は、受け付けた背景形状データを記憶する(ステップS233)。
また、制御部13から出力された配置データを受け付けた仮想背景演算部17cの配置定義部17c−2は、受け付けた配置データを記憶する(ステップS234)。そして、ステップS230の動作へ遷移する。
なお、ステップS229における確認の結果、実行情報が付加されていないグループ一致情報を受信していない場合には、処理を終了する。
図19を参照しながら説明した動作が完了すると、携帯端末10−4が観客用携帯端末として動作することになる。このときの携帯端末10−1〜10−4のそれぞれの動作状態を以下の図21に示す。
図21は、図1〜図7に示した表示システムにおいて携帯端末10−1〜10−4のそれぞれの状態の他の例を示す図である。
図21と図13とを比較すると、図21に示した例では、観客用携帯端末(携帯端末10−4)の仮想背景演算部17cが起動していることがわかる。
なお、本実施形態では、ゲームの開始後に、観客用携帯端末が追加される場合について説明したが、ゲームの開始後に、例えば観客用携帯端末のユーザーがゲームの観戦を止めるというようなことも考えられる。
この場合、その観客用携帯端末が仮想背景を描画するための処理を実行しているとすると、その観客用携帯端末から、その観客用携帯端末と同一のグループに属する携帯端末に対してグループを外れることを示す情報を送信する。そして、その情報を受信した複数の携帯端末間で負荷量の比較を行い、負荷量が最も小さな携帯端末が、仮想背景を描画するための処理を実行するようにすればよい。
このように本実施形態において通信部14は、複数の役割のうち第3の役割が選択された場合、携帯端末10−1〜10−4のうち仮想背景を描画するための処理を実行している携帯端末を検索するための検索用情報を送信する。また、通信部14は、第3の役割が選択されていない場合、他の携帯端末から送信された検索用情報を受信する。
制御部13は、通信部14にて検索用情報が受信されると、演算部17にて仮想背景を描画するための処理を実行している場合、その旨を示す実行情報を当該受信された検索情報の送信元の携帯端末へ通信部14を介して送信する。それとともに制御部13は、仮想背景を描画するための処理の実行を停止させる。
演算部17は、他の携帯端末から送信された実行情報が通信部14にて受信されると、仮想背景を描画するための処理の実行を開始する。
これにより、複数の携帯端末のそれぞれの負荷量がさらに分散されることになり、仮想的な物体像の描画にかかる負荷量が大きな場合でも、拡張現実の合成画像を実用的な速度で表示することができるという効果をさらに確実に得ることができる。