以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、運動を支援するための運動コンテンツを生成する運動コンテンツ生成システムに本発明を適用した場合の実施形態である。運動コンテンツは、運動を支援するための映像及び音声を含む。
[1.運動コンテンツ生成システム1の構成]
始めに、図1を参照して、本実施形態の運動コンテンツ生成システム1の構成について説明する。図1は、本実施形態の運動コンテンツ生成システム1の概要構成例を示す図である。図1に示すように、運動コンテンツ生成システム1は、配信サーバ2と1つ以上の出力端末5とを含んで構成されている。配信サーバ2と出力端末5とは、ネットワーク10を介して接続可能になっている。ネットワーク10は、例えば、インターネットを含む。配信サーバ2には、データベース3が接続されている。データベース3には、運動に関する情報や楽曲に関する情報が登録されている。配信サーバ2は、データベース3に登録されている情報等を、定期的に又は出力端末5からの要求に応じて出力端末5に配信する。
出力端末5は、例えば、施設4に設置される端末装置である。出力端末5は、本発明の運動支援装置の一例である。出力端末5は、施設4の利用者41により利用される。施設4は、例えば、スポーツ施設であってもよい。利用者41は、スポーツ施設において、運動レッスンを受ける。運動レッスンは、複数の運動動作から構成されるレッスンである。この場合の出力端末5は、例えばパーソナルコンピュータであってもよい。施設4は、例えば、カラオケ店舗であってもよい。カラオケ店舗において、利用者41は、カラオケの楽曲を歌唱する。この場合の出力端末5は、例えば、カラオケ装置である。以下では、施設4がスポーツ施設である場合を例にして説明する。スポーツ施設とカラオケ店舗とで異なる点については、適宜説明する。
出力端末5は、モニタ57と接続可能である。モニタ57は、複数のスピーカ64とディスプレイ67とを備える表示装置であってもよい。この場合、出力端末5は、ディスプレイ67と接続可能である。また、出力端末5は、スピーカ64と接続可能である。ディスプレイ67は、本発明の表示手段の一例である。出力端末5がモニタ57へ音声信号を出力することにより、スピーカ64により楽曲等が出力される。出力端末5がモニタ57へ映像信号を出力することにより、ディスプレイ67に運動動画等が表示される。運動動画は、運動動作を行うフィギュア83を映し出した動画である。フィギュア83は、例えば、人、動物、仮想上の生き物、ロボット等のかたちをした仮想物である。運動動画は、本発明における仮想動画の一例である。出力端末5は、スピーカ64から出力される楽曲と、ディスプレイ67に表示されるフィギュア83の動きとが同期するように、信号を出力する。楽曲と運動動画とを出力することは、運動コンテンツを出力することの一例である。利用者41は、スピーカ64により出力される楽曲を聴きながら、ディスプレイ67に表示されるフィギュア83を見て、運動を行うことができる。施設4がカラオケ店舗である場合、ディスプレイ67には、例えば、カラオケの楽曲に対応した踊りの動作を行うフィギュア83が表示される。この場合、利用者41は、スピーカ64により出力される楽曲に合わせて歌唱しながら、ディスプレイ67に表示されるフィギュア83を見て、踊りを踊ることができる。操作者42は、リモコン66等を用いて出力端末5を操作することができる。利用者41と操作者42とは同一人物であってもよい。施設4がスポーツ施設である場合、操作者42は、例えば、インストラクターであってもよい。
出力端末5は、現実カメラRC1〜RC4と接続可能である。現実カメラRC1〜RC4は、運動動作を行う利用者41を撮影するためのビデオカメラである。現実カメラは、スポーツ施設の室内に配置される。出力端末5は、運動の進行に沿って、現実カメラRC1〜RC4の中から、利用者41を撮影する現実カメラを切り替える制御を行う。利用者41の運動動作を撮影する場合、利用者41は、3軸の加速度センサSN1〜SN4を装着することができる。加速度センサSN1〜SN4は、利用者41の所定の身体部位が動く際の加速度を検出する。例えば、利用者41は、両手首と両足首にSN1〜SN4を装着する。出力端末5は、加速度センサSN1〜SN4により検出された加速度に基づいて、各身体部位の移動量を計算する。そして、出力端末5は、計算した移動量に基づいて、現実カメラRC1〜RC4の中から切り替え先の現実カメラを決定する。切り替え先の現実カメラを決定する方法については後述する。なお、利用者41が装着する加速度センサの数は4に限られない。利用者41は、少なくとも1つ以上の加速度センサを装着すればよい。また、利用者41を撮影する現実カメラの台数は4に限られない。少なくとも2台以上の現実カメラが配置されればよい。
出力端末5は、切り替え先の現実カメラから、撮影された動画を表す動画データを受信する。運動レッスンが終わると、出力端末5は、各現実カメラにより撮影された動画データを繋げて、一続きの動画データを生成する。生成される一続きの動画データを、利用者運動動画データという。利用者運動動画データは、実際に行われた運動の進行と同じ進行で利用者41が運動動作する動画を表した動画データである。施設4がカラオケ店舗である場合、出力端末5は、楽曲が再生されている間、マイク68に入力された利用者41の歌唱音声の音声データをマイク68から受信する。楽曲の再生が終了すると、出力端末5は、音声データを含む利用者運動動画データを生成する。
出力端末5は、例えば利用者41の操作に基づいて、利用者運動動画データを再生する。これにより、出力端末5は、利用者41が運動動作を行う動画をディスプレイ67に表示させる。また、出力端末5は、利用者運動動画データを配信サーバ2へアップロードし、配信サーバ2は、利用者運動動画データをデータベース3に登録してもよい。例えばパーソナルコンピュータ等の端末装置を利用者41が操作することにより、端末装置は、配信サーバ2から利用者運動動画データをダウンロードして再生することができる。
[2.運動コンテンツ]
施設4がスポーツ施設である場合、利用者41は、運動レッスンに用いる運動コンテンツを選択することができる。選択可能な運動コンテンツの種類として、運動重視コンテンツと楽曲重視コンテンツとがある。
運動重視コンテンツは、楽曲よりも運動が重視される運動コンテンツである。運動重視コンテンツは、利用者41の身体の訓練を主目的とする。運動重視コンテンツにおいては、運動が動作される運動テンポに従って楽曲が出力される。運動重視コンテンツの内容を決定する場合、例えば、楽曲よりも先に運動動作が選択される。例えば、利用者41又は操作者42が、所望する運動動作を選択する。そして、例えば、選択された運動動作又は選択された運動動作の運動テンポに応じて楽曲が選択される。運動テンポは、利用者41が運動動作を行う速度を表す。例えば、利用者41が運動動作ごとに運動テンポを設定する。運動重視コンテンツでは、運動テンポに従った再生速度でスピーカ64により楽曲が出力される。また、運動テンポに従った速度で運動動作を行うフィギュア83の運動動画がディスプレイ67に表示される。そのため、利用者41は運動テンポに従って運動を行う。利用者41の運動動作に適した運動テンポが設定されることで、利用者41は、効果的な運動を行うことができる。また、運動重視コンテンツでは、楽曲を構成する複数の演奏パートのうち、一部の演奏パートのみが所定回数繰り返し出力される。例えば、楽曲のサビ部分が繰り返し出力されたり、イントロ部分とサビ部分とが繰り返し出力されたりする。
運動重視コンテンツにおいて選択可能な運動動作は、例えば、体操の動作である。体操は、例えば、健康の増進、体力の増強、筋力の強化等のために行われる運動である。体操の種類として、例えば、有酸素運動、無酸素運動、ストレッチ等がある。有酸素運動の運動動作として、例えば、マーチ、フロントランジ等がある。無酸素運動の運動動作として、例えば、ショルダープレス、チェストプレス等がある。ストレッチの運動動作として、例えば、上腕部ストレッチ、首ストレッチ等がある。
楽曲重視コンテンツは、運動よりも楽曲が重視される運動コンテンツである。楽曲重視コンテンツにおいても、利用者41の身体を訓練することができる。しかしながら、利用者41が運動を楽しむことの方が重視される。楽曲重視コンテンツにおいては、楽曲のオリジナルのテンポに従って楽曲が出力される。楽曲重視コンテンツの内容を決定する場合、例えば、運動動作よりも先に楽曲が選択される。例えば、利用者41又は操作者42が、所望する楽曲を選択する。例えば、利用者41又は操作者42が、所望する運動動作を選択する。そして、選択された楽曲の演奏パートごとに運動動作が選択される。楽曲重視コンテンツでは、楽曲のオリジナルのテンポに従った速度で運動動作を行うフィギュア83の運動動画がディスプレイ67に表示される。また、楽曲重視コンテンツにおいては、楽曲の構成に従ったパートの順で、楽曲が出力される。例えば、イントロ、Aメロ、Bメロ、サビ、Aメロ、Bメロ、サビ、間奏、サビ、エンディング等の順で、楽曲が出力される。利用者41は、楽曲に適したテンポで楽曲の構成に従って出力される楽曲を聴きながら運動を行うことで、楽曲を楽しむことができる。
楽曲重視コンテンツにおいて選択可能な運動動作として、体操の動作と、楽曲に対応する踊りの動作とがある。踊りの動作は、楽曲に合わせて踊るために楽曲に対して振り付けられた動作である。例えば、楽曲のサビ部分では踊りの動作が選択され、サビ部分と異なる演奏パートでは、体操の動作が選択される。楽曲のサビ部分以外の演奏パートについても、踊りの動作が選択されてもよい。楽曲に応じた踊りを踊ることにより、利用者41は、運動を楽しむことができる。
施設4がカラオケ施設である場合の運動コンテンツについて説明する。この場合、利用者41は、歌唱する楽曲を選択する。そして、選択された楽曲に対応する運動コンテンツとして、楽曲重視コンテンツが出力される。カラオケの楽曲の運動コンテンツにおいては、運動動作は予め定められている。具体的に、楽曲の演奏パートごとに、演奏パートに対応した踊りの動作が対応付けられている。
[3.利用者41を撮影する現実カメラの決定]
次に、図2及び図3を参照して、現実カメラRC1〜RC4の中から利用者41を撮影する現実カメラを切り替えるときの現実カメラの決定方法について説明する。運動コンテンツ生成システム1においては、3DCG(3 Dimensional Computer Graphics)により、出力端末5が、三次元仮想空間90に配置されたフィギュア83が運動動作を行う運動動画を生成する。図2(A)は、三次元仮想空間90の様子の一例を示す図である。図2(A)に示すように、三次元仮想空間90には、フィギュア83が配置される。また、三次元仮想空間90には、仮想カメラVC1〜VC8が配置される。仮想カメラVC1〜VC8は、三次元仮想空間90内の映像を撮影する。仮想カメラVC1〜VC8は、三次元仮想空間90内の物体を投影面に写すための視点及び視線の方向を表す。投影面に映った映像が、運動動画になる。出力端末5は、三次元仮想空間90におけるフィギュア83の複数の運動動作が、仮想カメラVC1〜VC8のうち少なくとも何れかの仮想カメラで撮影される運動動画を、ディスプレイ67に表示させる。仮想カメラVC1〜VC8の位置は視点に対応する。仮想カメラVC1〜VC8は、通常、フィギュア83に向けられている。仮想カメラVC1〜VC8のうち、例えば仮想カメラVC1は、フィギュア83の正面に配置される。なお、仮想カメラの台数は8に限られない。少なくとも2台以上の仮想カメラが配置されればよい。
本実施形態においては、運動動作ごとに、仮想カメラVC1〜VC8のうちフィギュア83を撮影する仮想カメラが予め定められている。例えば、運動コンテンツ生成システム1の管理者が、三次元仮想空間90において、フィギュア83の運動動作が最も分かりやすい位置からフィギュア83を撮影可能な仮想カメラを、運動動作に対応付けてもよい。実際のスポーツ施設では、現実カメラRC1〜RC4が、運動する利用者41を撮影する。利用者41は、利用者運動動画データを再生して利用者41が運動している動画を見るとき、運動動作が分かりやすい動画を見たい場合がある。そのためには、現実カメラRC1〜RC4のうち、利用者41の運動動作が分かりやすい位置から利用者41を撮影可能な現実カメラが、利用者41を撮影することが良い。そこで、運動動作が切り替わることによって、フィギュア83を撮影する仮想カメラが切り替わったとき、出力端末5は、三次元仮想空間90において、切り替わり先の仮想カメラの位置に近い位置にある現実カメラを、利用者41を撮影する現実カメラに決定する。
具体的に、図2(A)に示すように、現実カメラRC1〜RC4が三次元仮想空間90内に配置されているものと仮定して、三次元仮想空間90内における現実カメラRC1〜RC4の位置が定義される。例えば、出力端末5及び現実カメラRC1〜RC4を設置した業者が、出力端末5に、三次元仮想空間90内における現実カメラRC1〜RC4の座標や撮影方向を入力してもよい。撮影方向は、例えば、三次元仮想空間90においてX軸と撮影方向とがなす方位角と、XY平面と撮影方向とがなす仰角とで表される。例えば、運動が行われる部屋において、利用者41が立つべき位置及び利用者41の正面が向くべき方向が決められているとする。業者は、利用者41の位置から各現実カメラまでの距離や方向等を測定する。業者は、三次元仮想空間90内に配置されたフィギュア83が立つ位置及び向きを、利用者41が立つ位置及び向きであると仮定する。そして、業者は、測定した距離や方向等に基づいて、現実カメラRC1〜RC4の座標や撮影方向を入力する。図2(A)に示すように、現実カメラRC1〜RC4の位置と、仮想カメラVC1〜VC8の位置とが異なってもよい。例えば、現実カメラRC1が利用者41の正面に配置される現実カメラである場合、三次元仮想空間90においてフィギュア83から見た仮想カメラVC1の方向と、現実カメラRC1の方向とが一致するように、業者は座標を入力する。
出力端末5は、三次元仮想空間90における現実カメラRC1〜RC4の位置及び仮想カメラVC1〜VC8の位置に基づいて、現実カメラRC1〜RC4のそれぞれについて、現実カメラから仮想カメラVC1〜VC8までの距離を計算する。出力端末5は、現実カメラRC1〜RC4のそれぞれについて、距離が近い順に仮想カメラVC1〜VC8に順位を付ける。この順位を近さ順位という。そして、出力端末5は、順位付けの結果を、近さ順位表として記憶する。図2(B)は、近さ順位表の構成例を示す図である。図2(B)に示すように、近さ順位表には、現実カメラRC1〜RC4のそれぞれごとに、仮想カメラの仮想カメラIDが、距離の近い順に並べて設定されている。仮想カメラIDは、仮想カメラの識別情報である。例えば、現実カメラRC1から1番目に近い仮想カメラは仮想カメラVC1であり、2番目に近い仮想カメラは仮想カメラVC5である。また例えば、現実カメラRC2から1番目に近い仮想カメラは仮想カメラVC2であり、2番目に近い仮想カメラは仮想カメラVC6である。
ディスプレイ67による表示に用いられる運動動画を撮影する仮想カメラが、フィギュア83による運動の進行に沿って切り替わったとする。このとき、出力端末5は、近さ順位表に基づいて、現実カメラRC1〜RC4のうち、切り替え先の仮想カメラの位置に対応する現実カメラを、切り替え先の候補として特定する。切り替え先の候補の現実カメラの台数は、例えば、運動コンテンツ生成システム1の管理者により予め設定されている。出力端末5は、近さ順位表において、切り替わり先の仮想カメラの近さ順位が高い順に、所定数の現実カメラを特定する。図3(A)は、近さ順位表において、切り替わり先の仮想カメラから近い現実カメラが特定される様子の一例を示す図である。図2(B)の例において、切り替え先の仮想カメラが仮想カメラVC7であるとする。この場合、図3(A)に示すように、出力端末5は、現実カメラRC1〜RC4のそれぞれごとに、仮想カメラVC7の順位を特定する。現実カメラRC1〜RC4のそれぞれにおいて、仮想カメラVC7の順位は、8位、6位、2位、4位である。切り替え先の候補の台数が、例えば2台である場合、出力端末5は、現実カメラRC3及びRC4を、切り替え先の候補として特定する。なお、切り替え先の候補の台数は2台に限られない。出力端末5は、現実カメラRC1〜RC4のうち一部の現実カメラを特定すればよい。出力端末5が1台の現実カメラのみを切り替え先の候補として特定した場合、出力端末5は、特定した現実カメラを、切り替え先の現実カメラとして決定する。また、切り替え先の候補の特定方法は、上述の方法に限られない。例えば、出力端末5は、三次元仮想空間90において、切り替え先の仮想カメラからの距離が所定距離以下である現実カメラを切り替え先の候補としてもよい。
出力端末5が切り替え先の候補として複数の現実カメラを特定したとする。この場合、出力端末5は、特定した複数の現実カメラのうち、利用者41の運動動作が最も分かりやすい動画を撮影することができると考えられる位置に配置されている現実カメラを、切り替え先の現実カメラとして決定する。運動動作する利用者41に対する現実カメラの位置によって、撮影された動画において利用者41の運動動作の見え方が変わる。利用者41の身体部位が激しく動いている動画であるほど、利用者41の運動動作が分かりやすい動画である蓋然性が高い。そこで、出力端末5は、利用者41の身体部位の移動量が最も大きい現実カメラを、切り替え先の現実カメラとして決定する。これにより、より利用者41の運動動作が分かりやすい方向から撮影された利用者運動動画データを生成することができる。
利用者41の身体部位の移動量を取得するため、出力端末5は、利用者41が装着した加速度センサSN1〜SN4により検出される加速度を用いる。出力端末5は、三次元仮想空間90内に利用者41が立っていると仮定した場合に、三次元仮想空間90における加速度センサSN1〜SN4の位置を特定する。例えば、利用者41は、予め利用者41の性別、身長等の情報を出力端末5に入力する。運動レッスンを開始する前、出力端末5は、例えば、現実カメラRC1の正面に利用者41が立つようにする指示を、ディスプレイ67に表示させる。利用者41が現実カメラRC1の正面に立った場合、三次元仮想空間90内で、利用者41が仮想カメラVC1の正面に立ったと仮定される。この仮定に基づいて、出力端末5は、入力された性別や身長等の情報に基づいて、三次元仮想空間90における利用者41両手首及び両足首の位置を決定する。例えば、性別と身長との組み合わせごとに、両手首及び両足首の位置が予め設定されていてもよい。両手首及び両足首の位置が、加速度センサSN1〜SN4の位置である。また、出力端末5は、三次元仮想空間90における加速度センサSN1〜SN4の向きを決定する。加速度センサの向きは、例えば、加速度センサが加速度を検出する方向として、加速度センサに対するX軸方向、Y軸方向、Z軸方向のうち何れかの方向であってもよい。
運動レッスンが開始されると、利用者41は、運動の進行に従って運動動作を行う。加速度センサSN1〜SN4のそれぞれは、加速度センサに対するX軸方向、Y軸方向及びZ軸方向の加速度を検出する。加速度センサSN1〜SN4は、検出した加速度を加速度センサ情報として、無線により所定時間間隔ごとに出力端末5へ送信する。この時間間隔を、送信間隔という。出力端末5は、加速度センサ情報に基づいて、三次元仮想空間90における加速度センサSN1〜SN4の位置を、送信間隔ごとに計算する。図3(B)は、三次元仮想空間90内で利用者41が運動していると仮定した場合に、加速度センサSN1〜SN4の位置の例を示す図である。一方、出力端末5は、切り替え先の候補の現実カメラごとに、三次元仮想空間90における投影面91を定義する。例えば、出力端末5は、投影面91の中心を、三次元仮想空間90における現実カメラの位置と一致させ、投影面の法線の方向を、三次元仮想空間90における現実カメラの撮影方向と一致させる。図3(B)に示す投影面91は、現実カメラRC3に対応する投影面である。出力端末5は、加速度センサSN1〜SN4の三次元仮想空間90における位置を、投影面91に垂直投影させる。つまり、出力端末5は、加速度センサの三次元仮想空間90における位置を通る投影線が投影面91と垂直に交わるように投影する。垂直投影によって投影面91上に変換される加速度センサSN1〜SN4の位置を、位置L1〜L4とする。出力端末5は、投影面91上における位置L1〜L4のそれぞれのX座標及びY座標を計算する。出力端末5は、切り替え先の候補の現実カメラごとに、送信間隔ごとの位置L1〜L4の座標を、投影面91における位置情報として記録する。図3(C)は、送信間隔が60ミリ秒である場合の位置情報の構成例を示す図である。
出力端末5は、仮想カメラが切り替わった後、一定時間、切り替え先の候補の現実カメラごとに、投影面91における位置情報を記録する。例えば、出力端末5は、2000ミリ秒の間記録してもよい。そして、出力端末5は、記録した位置情報に基づいて、切り替え先の候補の現実カメラごとに、一定時間の間の投影面91上における位置L1〜L4の移動量を計算する。出力端末5は、位置L1〜L4の移動量の合計値を計算し、切り替え先の候補の現実カメラのうち、移動量の合計値が最も大きい現実カメラを、切り替え先の現実カメラとして決定する。
[4.各装置の構成]
次に、図1及び図4を参照して、運動コンテンツ生成システムに含まれる各装置の構成について説明する。
[4−1.配信サーバ2の構成]
図1に示すように、配信サーバ2は、CPU21、ROM22、RAM23、バス24、I/Oインタフェイス25、表示制御部26、ディスクドライブ28、ネットワーク通信部30及びHDD(ハードディスクドライブ)37を備える。CPU21は、バス24を介して、ROM22、RAM23、バス24及びI/Oインタフェイス25に接続されている。CPU21は、ROM22やHDD37に記憶されプログラムを実行することにより、配信サーバ2の各部を制御する。I/Oインタフェイス25には、データベース3、表示制御部26、ディスクドライブ28、ネットワーク通信部30、キーボード31、マウス32及びHDD37が接続されている。CPU21は、I/Oインタフェイス25を介してデータベース3にアクセスする。表示制御部26は、CPU21の制御に基づいて映像信号をモニタ57に出力する。ディスクドライブ28は、記録媒体29に対するデータの書き込み及び読み出しを行う。ネットワーク通信部30は、配信サーバ2がネットワーク10に接続するための制御を行う。HDD37には、OSや各種制御プログラム等が記憶されている。
データベース3には、モーションデータ、楽曲データ、仮想カメラ位置情報、モーション−仮想カメラ対応情報等のデータが登録されている。モーションデータは、三次元仮想空間90におけるフィギュア83の運動動作を定義するデータである。モーションデータは、ディスプレイ67にフィギュア83の運動動作を表示させるためのデータである。モーションデータは、運動動作の進行に応じたフィギュア83の身体の各部の座標を含む。モーションデータは、モーション情報と対応付けて登録される。モーション情報は、運動動作を示す識別情報である。体操の動作を示すモーション情報として、例えば、「ハーフ・スクワット」、「マーチ」等がある。踊りの動作を示すモーション情報として、例えば、「楽曲XのAメロ」、「楽曲XのBメロ」、「楽曲Xのサビ」、「楽曲YのAメロ」等がある。
楽曲データは、スピーカ64により楽曲を出力するための演奏データである。楽曲データは、例えば、MIDI(Musical Instrument Digital Interface)形式のデータであってもよい。楽曲データは、楽曲ID、楽曲名、アーティスト名、オリジナルのテンポ、楽曲の演奏パートの構成、歌詞等の情報を含む。楽曲IDは、楽曲の識別情報である。また、楽曲データは、演奏パートの切り替わりのタイミング、歌詞テロップの表示タイミング、歌詞テロップの色を変化させるタイミング等を規定する。例えば、楽曲データがMIDI形式のデータである場合、楽曲データには、実際の演奏データとしてのMIDIメッセージに加えて、メタメッセージを含めることができる。メタメッセージとしては、例えば、演奏パートを示すマーカーメッセージ、歌詞メッセージ等がある。そのため、演奏パートを識別するパートIDや歌詞をメッセージとして楽曲データに記述することが可能である。例えば、出力端末5には、後述のミュージックシーケンサがインストールされている。出力端末5は、ミュージックシーケンサを実行することにより、楽曲データを再生するとともに、楽曲データからメタメッセージ等を読み出すと、読み出したメッセージを出力する。例えば、マーカーメッセージが出力されるタイミングが、そのマーカーメッセージが示す演奏パートが開始されるタイミングとなる。本実施形態においては、マーカーメッセージを、演奏パート開始メッセージという。演奏パート開始メッセージは、演奏パートの演奏開始を通知するメッセージである。
仮想カメラ位置情報は、仮想カメラVC1〜VC8の三次元仮想空間90における位置及び撮影方向を示す情報である。例えば、仮想カメラ位置情報には、仮想カメラVC1〜VC8のそれぞれの仮想カメラID、座標、方位角、仰角等が設定される。
モーション−仮想カメラ対応情報は、仮想カメラVC1〜VC8の中からフィギュア83を撮影する仮想カメラを、運動動作ごとに定義する情報である。図4(A)は、モーション−仮想カメラ対応情報の構成例を示す図である。図4(A)に示すように、モーション−仮想カメラ対応情報には、運動動作ごとに、モーション情報と仮想カメラIDとが対応付けて設定される。例えば、フィギュア83がマーチの動作を行うとき、仮想カメラVC1が撮影を行う。また例えば、フィギュア83が楽曲XのAメロの踊りの動作を行うとき、仮想カメラVC2が撮影を行う。
[4−2.出力端末5の構成]
図1に示すように、出力端末5は、CPU51、ROM52、RAM53、バス54、I/Oインタフェイス55、表示制御部56、ディスクドライブ58、ネットワーク通信部60、音声出力部63、信号受信部65、センサ情報受信部69及びHDD7を備える。CPU51は、バス54を介して、ROM52、RAM53、バス54及びI/Oインタフェイス55に接続されている。CPU51は、ROM52やHDD7に記憶されプログラムを実行することにより、出力端末5の各部を制御する。I/Oインタフェイス55には、HDD7、表示制御部56、音声出力部63、ディスクドライブ58、ネットワーク通信部60、キーボード61、マウス62、マイク68、信号受信部65、センサ情報受信部69及び現実カメラRC1〜RC4が接続されている。表示制御部56は、CPU51の制御に基づいて映像信号をモニタ57に出力する。音声出力部63は、CPU51の制御に基づいて音声信号をモニタ57に出力する。ディスクドライブ58は、記録媒体59に対するデータの書き込み及び読み出しを行う。信号受信部65は、リモコン66から出力される信号を受信する。リモコン66は、操作者42が出力端末5を操作するためのものである。センサ情報受信部69は、加速度センサSN1〜SN4から送信される加速度センサ情報を受信する。
HDD7には、配信サーバ2から配信されたモーションデータ、楽曲データ、仮想カメラ位置情報、モーション−仮想カメラ対応情報等が記憶される。また、HDD7には、生成された利用者運動動画データが記憶される。また、HDD7には、近さ順位表、運動リスト情報が記憶される。運動リスト情報は、運動レッスンの構成を定めた情報である。出力端末5が運動リスト情報を生成する。
図4(B)は、運動重視コンテンツの運動リスト情報の構成例を示す図である。運動重視コンテンツの運動リスト情報は、複数のモーション情報を含む。モーション情報は、運動動作が行われる順に並べられている。運動重視コンテンツの運動リスト情報は、同一のモーション情報を複数含んでいてもよい。また、運動リスト情報においては、モーション情報と、運動テンポ及び楽曲IDとが、運動動作ごとに対応付けられている。楽曲IDは、楽曲を示す識別情報である。モーション情報に対応付けられる楽曲IDは、モーション情報が示す運動動作を行うときに出力される楽曲を示す。複数の運動動作に対して同一の楽曲が対応付けられてもよい。
運動重視レッスンが開始すると、CPU51は、運動リスト情報から、運動レッスンを構成する複数の運動動作のうち、1番目に行われる運動動作のモーション情報、運動テンポ及び楽曲IDを取得する。CPU51は、運動リスト情報から取得した楽曲IDに対応する楽曲データを取得する。そして、CPU51は、運動リスト情報から取得した運動テンポに従って、楽曲データの一部の演奏パートを繰り返し再生する。また、CPU51は、運動リスト情報から取得したモーション情報に対応する仮想カメラIDを、モーション−仮想カメラ対応情報から取得する。CPU51は、仮想カメラIDに対応する仮想カメラ位置情報を取得する。また、CPU51は、モーション情報に対応するモーションデータを取得する。CPU51は、モーションデータ及び仮想カメラIDに基づいて、モーション情報が示す運動動作を行うフィギュア83を、仮想カメラIDが示す仮想カメラが撮影する運動動画を生成する。そして、CPU51は、生成した運動動画をディスプレイ67に表示させる。CPU51は、一部の演奏パートの繰り返し再生が完了すると、運動リスト情報から、次に行われる運動動作のモーション情報、運動テンポ及び楽曲IDを取得する。そして、CPU51は、取得した情報に基づいて、楽曲データの再生及び運動動画の生成を行う。
図4(C)は、楽曲重視コンテンツの運動リスト情報の構成例を示す図である。楽曲重視コンテンツの運動リスト情報は、1つの楽曲IDを含む。この楽曲IDは、楽曲重視レッスンが行われている間に出力される楽曲を示す。また、楽曲重視コンテンツの運動リスト情報は、複数のパートIDを含む。複数のパートIDは、楽曲IDが示す楽曲の演奏パートの構成を示す。複数のパートIDは、演奏パートの演奏順に並べられている。また、楽曲重視コンテンツの運動リスト情報においては、パートIDとモーション情報とが、演奏パートごとに対応付けられている。パートIDに対応付けられるモーション情報は、パートIDが示す演奏パートが出力されるときに行われる運動動作を示す。基本的に、サビ部分に対しては、サビ部分の踊りの動作が対応付けられる。また、サビ部分と異なる演奏パートに対しては、体操の動作又は踊りの動作が対応付けられる。同一の演奏パートが2回以上演奏される場合があってもよい。この場合、同一の演奏パートのパートIDに対しては、同一のモーション情報が対応付けられる。従って、同一の演奏パートでは同一の運動動作が行われる。なお、同一の演奏パートであっても、演奏回数に応じて運動動作が異なってもよい。
楽曲重視レッスンが開始すると、CPU51は、運動リスト情報から楽曲IDを取得する。CPU51は、運動リスト情報から取得した楽曲IDに対応する楽曲データを取得する。そして、CPU51は、楽曲データ内に設定されているオリジナルのテンポに従って、楽曲データを再生する。CPU51は、ミュージックシーケンサから演奏パート開始メッセージを受信すると、運動リスト情報から、演奏パート開始メッセージに含まれるパートIDに対応するモーション情報を取得する。CPU51は、モーション情報に対応する仮想カメラIDを、モーション−仮想カメラ対応情報から取得する。CPU51は、仮想カメラIDに対応する仮想カメラ位置情報を取得する。また、CPU51は、モーション情報に対応するモーションデータを取得する。CPU51は、モーションデータ及び仮想カメラIDに基づいて、モーション情報が示す運動動作を行うフィギュア83を、仮想カメラIDが示す仮想カメラが撮影する運動動画を生成する。そして、CPU51は、生成した運動動画をディスプレイ67に表示させる。
運動重視コンテンツ及び楽曲重視コンテンツに共通して、運動リスト情報は、コンテンツID、コンテンツ名、コンテンツ種別等を含む。コンテンツIDは、運動コンテンツの識別情報である。コンテンツ種別は、運動コンテンツが運動重視コンテンツ及び楽曲重視コンテンツの何れであるかを示す情報である。
出力端末5がカラオケ装置である場合、運動リスト情報の構成は、楽曲重視コンテンツの運動リスト情報の構成と基本的に同じである。ただし、全ての演奏パートにおいて、パートIDに対応付けられるモーション情報は、楽曲IDが示す楽曲の演奏パートに対応する踊りの動作のモーション情報である。
HDD7には、更に、OS、運動支援プログラム、3Dエンジン、ミュージックシーケンサ等の各種プログラム等が記憶されている。運動支援プログラムは、利用者41の運動を支援するためのプログラムである。運動支援プログラムは、コンピュータとしてのCPU51に、制御ステップ、特定ステップ及び生成ステップを少なくとも実行させる。3Dエンジンは、モーションデータに基づいて、三次元仮想空間で運動動作するフィギュア83を二次元平面に投影した画像を生成するためのプログラムである。画像を生成する処理は、射影変換、クリッピング、隠面消去、シェーディング、テクスチャマッピング等を含む。CPU51は、3Dエンジンを実行して、静止画像を順次生成する。生成された静止画像をCPU51が表示制御部56へ順次出力することで、ディスプレイ67には、運動動画が表示される。
ミュージックシーケンサは、楽曲データを再生するためのプログラムである。CPU51は、ミュージックシーケンサを実行することにより、楽曲データに対応する音声信号を生成する。また、CPU51は、ミュージックシーケンサを実行することにより、各種のメッセージ(イベント)を発生させる。メッセージとして、例えば、テンポに応じて所定時間間隔で発生するメッセージがある。このメッセージは、MIDIクロックや同期メッセージと呼ばれる。また、メッセージとして、例えば、演奏パート開始メッセージや歌詞メッセージがある。また、メッセージとして、演奏終了メッセージがある。演奏終了メッセージは、楽曲全体の演奏の終了を示すメッセージである。
各種プログラムは、例えば、配信サーバ2等のサーバからネットワーク10を介してダウンロードされるようにしてもよい。また、各種プログラムは、記録媒体59に記録されてディスクドライブ58を介して読み込まれるようにしてもよい。なお、3Dエンジンやミュージックシーケンサは、プログラムではなく、専用のハードウェアであってもよい。そして、出力端末5は、ハードウェアとしての3Dエンジンやミュージックシーケンサを備えてもよい。
CPU51は、設定されたテンポに従って、楽曲データに対応する音声信号を音声出力部63へ出力させるとともに、生成した画像に対応する映像信号を表示制御部56から出力させる。CPU51は、同期メッセージに基づいて、楽曲の音声信号の出力タイミングと運動動画の映像信号の出力タイミングとを同期させる。これにより、スピーカ64から出力される楽曲に同期して運動動作を行うフィギュア83がディスプレイ67に表示される。また、CPU51は、演奏パート開始メッセージに基づいて、楽曲の演奏パートの切り替わり及び演奏が開始される演奏パートを検出する。CPU51は、楽曲の演奏パートの切り替わりを検出することにより、運動動作の切り替わりをも検出することができる。
[5.運動コンテンツ生成システム1の動作]
次に、図5及び図6を参照して、運動コンテンツ生成システム1の動作を説明する。図5は、運動コンテンツ生成システム1の処理例を示すシーケンス図である。施設4がスポーツ施設である場合、操作者42は、キーボード61、マウス62、リモコン66の何れかを操作して、運動レッスンの実行を選択する。すると、出力端末5のCPU51は、HDD7に記憶された運動リスト情報に基づいて、運動コンテンツの一覧をディスプレイ67に表示させる。操作者42は、一覧の中から所望の運動コンテンツを選択する。CPU51は、操作者42により選択された運動コンテンツの運動リスト情報をHDD7から取得する。施設4がカラオケ店舗である場合、操作者42は、例えばリモコン66を操作して、歌唱する楽曲を選択する。リモコン66は、選択された楽曲の楽曲IDを出力端末5へ送信する。CPU51は、受信した楽曲IDに対応する運動リスト情報をHDD7から取得する(ステップS1)。
CPU51は、操作者42からの開始操作に応じて、利用者41に対する指示を、ディスプレイ67に表示させる(ステップS2)。ディスプレイ67には、例えば、「センサを装着して、カメラRC1の正面に立ってください。」といった指示が表示される。表示された指示を見た利用者41は、加速度センサSN1〜SN4を装着して、現実カメラRC1の正面に立つ(ステップS3)。CPU51は、例えば、利用者41に対する指示の表示から所定時間が経過したタイミングで、三次元仮想空間90における加速度センサSN1〜SN4の位置及び向きを初期化する(ステップS4)。具体的に、CPU51は、
予め入力されている利用者41の性別、身長に対応する加速度センサSN1〜SN4の座標をHDD7から読み出し、RAM53に記憶させる。
次いで、CPU51は、HDD7から取得した運動リスト情報に基づいて、ミュージックシーケンサによる楽曲の出力を開始する。また、CPU51は、運動リスト情報に基づいて、3Dエンジンによる運動動画の生成及びディスプレイ67への表示を開始する(ステップS5)。CPU51は、取得した運動リスト情報に設定されたコンテンツ種別に基づいて、運動コンテンツが運度重視コンテンツ及び楽曲重視コンテンツの何れであるかを判定する。CPU51は、4−2項で説明した方法により、楽曲の出力及び運動動画の生成を行う。スピーカ64から楽曲が出力され、ディスプレイ67に運動動画が表示されるので、利用者41は運動を開始する(ステップS6)。
4−2項で説明したように、CPU51は、運動リスト情報から取得したモーション情報に対応する仮想カメラIDを、モーション−仮想カメラ対応情報から取得する。CPU51は、HDD7に記憶されている近さ順位表に基づいて、現実カメラRC1〜RC4の中から、仮想カメラIDが示す仮想カメラの近さ順位が最も高い現実カメラを特定する。そして、CPU51は、現実カメラRC1〜RC4に、特定した現実カメラのカメラIDを含む撮影開始命令を送信する(ステップS7)。カメラIDは、現実カメラの識別情報である。撮影開始命令を受信した現実カメラRC1〜RC4のうち、撮影開始命令に設定されたカメラIDが示す現実カメラは、利用者41の撮影を開始する(ステップS8)。そして、撮影を開始した現実カメラは、撮影した動画を表す動画データを出力端末5へ送信する(ステップS9)。CPU51は、受信した動画データをHDD7に記憶させる。例えば、CPU51は、動画データを、動画データの受信時刻と対応付けて記憶させる。
加速度センサSN1〜SN4は、送信間隔ごとに加速度を計測し、加速度センサ情報を出力端末5へ送信する(ステップS10)。CPU51は、加速度センサ情報を受信するごとに、加速度センサ情報に基づいて、三次元仮想空間90における加速度センサSN1〜SN4のそれぞれの座標を計算する。CPU51は、計算した座標をRAM53に記憶させる(ステップS11)。
次いで、CPU51は、フィギュア83を撮影する仮想カメラが切り替わったか否かを判定する(ステップS12)。操作者42に選択された運動コンテンツが運動重視コンテンツである場合、CPU51は、以下の方法で判定を行う。現在の運動動作に対応する楽曲の一部の演奏パートの繰り返し再生が終わると、CPU51は、運動リスト情報から、次に行われる運動動作のモーション情報、運動テンポ及び楽曲IDを取得する。このときに、CPU51は、仮想カメラが切り替わったと判定する。操作者42に選択された運動コンテンツが楽曲重視コンテンツである場合、CPU51は、以下の方法で判定を行う。ミュージックシーケンサから演奏パート開始メッセージを受信したときに、仮想カメラが切り替わったと判定する。CPU51は、仮想カメラが切り替わったと判定した場合には(ステップS12:YES)、ステップS13に進む。一方、CPU51は、仮想カメラが切り替わっていないと判定した場合には(ステップS12:NO)、ステップS17に進む。
ステップS13において、CPU51は、カメラ選択処理を実行する。図6は、出力端末5のCPU51のカメラ選択処理の処理例を示すフローチャートである。図6に示すように、CPU51は、HDD7に記憶されている近さ順位表に基づいて、現実カメラRC1〜RC4の中から、切り替わり先の仮想カメラの近さ順位が高い順に、N個の現実カメラを切り換え先の候補として特定する(ステップS31)。次いで、CPU51は、ステップS32に進む。Nの値は、HDD7に記憶されている。なお、Nの値が1である場合、CPU51は、特定した現実カメラを、切り換え先の現実カメラとして選択する。そして、CPU51は、カメラ選択処理を終了させる。
ステップS32において、CPU51は、仮想カメラが切り替わってから一定時間、加速度センサSN1〜SN4の投影面91における座標を記録する。送信間隔ごとに加速度センサSN1〜SN4のそれぞれから加速度センサ情報が送信されてくる。そのため、CPU51は、図5のステップS11と同様に、加速度センサ情報が受信されるごとに、三次元仮想空間90における加速度センサの座標を計算する。CPU51は、加速度センサの三次元空間91における位置の座標を、切り換え先の候補の現実カメラに対応する投影面91における座標に変換する。そして、CPU51は、投影面91における加速度センサの座標をRAM53に記憶させる。
次いで、CPU51は、一定時間の間の加速度センサSN1〜SN4のそれぞれの投影面91における移動距離を、切り換え先の候補の現実カメラごとに計算する。そして、CPU51は、切り換え先の候補の現実カメラごとに、加速度センサSN1〜SN4の移動距離の合計値を、移動量として計算する。(ステップS33)次いで、CPU51は、切り換え先の候補の現実カメラのうち、移動量の合計値が最も大きい現実カメラを、切り換え先の現実カメラとして選択する(ステップS34)。そして、CPU51は、カメラ選択処理を終了させる。
カメラ選択処理が終了すると、図5に示すように、CPU51は、選択した切り換え先の現実カメラのカメラIDを含むカメラ切替命令を、現実カメラRC1〜RC4に送信する(ステップS14)。現実カメラRC1〜RC4のうち、カメラ切替命令に設定されたカメラIDが示す現実カメラは、利用者41の撮影を開始する(ステップS15)。そして、撮影を開始した現実カメラは、撮影した動画を表す動画データを出力端末5へ送信する(ステップS16)。CPU51は、受信した動画データをHDD7に記憶させる。例えば、CPU51は、動画データを、動画データの受信時刻と対応付けて記憶させる。カメラ切替命令に設定されたカメラIDが示す現実カメラと異なる現実カメラのうち、今まで撮影を行っていた現実カメラは、撮影を停止する。
次いで、CPU51は、運動レッスンが終了したか否かを判定する(ステップS17)。操作者42に選択された運動コンテンツが運動重視コンテンツである場合、CPU51は、以下の方法で判定を行う。CPU51は、運動リスト情報に設定されている全ての楽曲IDに対応する楽曲の再生処理が終了した場合に、運動レッスンが終了したと判定する。操作者42に選択された運動コンテンツが楽曲重視コンテンツである場合、CPU51は、以下の方法で判定を行う。CPU51は、ミュージックシーケンサから演奏終了メッセージを受信したときに、運動レッスンが終了したと判定する。CPU51は、運動レッスンが終了していないと判定した場合には(ステップS17:NO)、ステップS9に進む。そして、CPU51は、切り換え先の現実カメラからの動画データの受信、及び、加速度センサSN1〜SN4からの加速度センサ情報の受信を継続する。一方、CPU51は、運動レッスンが終了したと判定した場合には(ステップS17:YES)、ステップS19に進む。施設4がカラオケ店舗である場合、CPU51は、ステップS17において、楽曲の再生が終了したか否かを判定する。この場合、CPU51は、ミュージックシーケンサから演奏終了メッセージを受信したときに、楽曲の再生が終了したと判定する。
運動レッスンが終了すると、利用者41は、運動を終了させる(ステップS18)。ステップS19において、CPU51は、仮想カメラの切り換えごとに特定された現実カメラから受信した動画データに基づいて、利用者運動動画データを生成する。例えば、CPU51は、HDD7に記憶された各動画データを、動画データに対応付けられた受信時間の古い順に接続する。これにより、CPU51は、一続きの利用者運動動画データを生成する。そして、CPU51は、生成した利用者運動動画データをHDD7に記憶させる。
以上説明したように、本実施形態によれば、表示に用いられる運動動画を撮影する仮想カメラがフィギュア83による運動の進行に沿って切り替わったとき、CPU51が、現実カメラRC1〜RC4のうち、切り替え先の仮想カメラの位置に対応する現実カメラを特定する。そして、CPU51が、仮想カメラの切り替えごとに特定した現実カメラにより撮影された動画データを繋げて、一続きの利用者運動動画データを生成する。そのため、利用者41の運動動作が分かりやすい方向から撮影された動画を生成することができる。
なお、上記実施形態においては、運動動作の切り替わりに応じて、又は、演奏パートの切り替わりに応じて、仮想カメラが切り替わっていた。しかしながら、別の方法で仮想カメラが切り替わってもよい。例えば、運動コンテンツ生成システム1の管理者は、所望のタイミングでキューポイントイベントが出力されるように、楽曲データにキューポイントイベントを設定してもよい。キューポイントイベントには、仮想カメラの仮想カメラIDが含まれる。CPU51は、図5のステップS12において、ミュージックシーケンサからキューポイントイベントを受信したときに、仮想カメラが切り替わったと判定する。そして、CPU51は、キューポイントイベントに含まれる仮想カメラIDが示す仮想カメラを、切り換え先の仮想カメラとして特定する。
また、上記実施形態においては、運動レッスンが行われている間、フィギュア83による運動の進行に沿って仮想カメラが切り替わったときに、CPU51が、利用者41を撮影する現実カメラを切り替えていた。しかしながら、CPU51は、現実カメラの切り替えを行わなくてもよい。利用者運動動画データが再生される際に、利用者41の運動の進行に沿って動画が切り替わればよい。動画が切り替わるとは、或る現実カメラで撮影された動画から、別の現実カメラで撮影された動画に、動画の表示が切り替わることである。例えば、CPU51は、運動レッスンが行われている間を通して、全ての現実カメラR1〜R4に撮影を実行させてもよい。CPU51は、現実カメラR1〜R4のそれぞれから送信されてくる動画データをそれぞれHDD7に記憶させてもよい。そして、CPU51は、HDD7に記憶された各動画データから必要な部分を抽出し、抽出した部分を繋げて一続きの利用者運動動画データを生成してもよい。CPU51は、例えば、以下の方法で必要な部分を特定してもよい。CPU51は、図5のステップS13において切り換え先の現実カメラとを選択すると、運動レッスンが開始されてから、切り替え先の現実カメラを選択したときまでの経過時間を取得する。例えば、CPU51は、運動レッスンが開始された以降にミュージックシーケンサから同期メッセージを受信した回数をカウントすることにより、経過時間を取得する。CPU51は、切り換え先の現実カメラのカメラIDと経過時間とを対応付けて、RAM53に記憶させる。運動レッスンが終了すると、CPU51は、切り換え先の現実カメラのカメラIDに対応付けられた経過時間を、動画データにおいて動画が切り替わる再生位置とする。再生位置は、動画データの再生開始からの時間的な位置である。CPU51は、切り換え先の現実カメラのカメラIDと、動画が切り替わる再生位置とに基づいて、各動画データにおいて必要な部分を特定する。
また、上記実施形態においては、CPU51は、加速度センサSN1〜SN4からの加速度センサ情報を用いて、利用者41の身体部位の移動量を計算していた。しかしながら、CPU51は、例えば、現実カメラRC1〜RC4により撮影される動画に基づいて、移動量を計算してもよい。CPU51は、仮想カメラが切り替わったとき、切り換え先の仮想カメラの位置に対応する複数の現実カメラのそれぞれにより、一定時間撮影を実行させる。そして、CPU51は、各現実カメラから動画データを受信する。CPU51は、動画データを構成する静止画のフレームごとに、フレームから利用者41の映像を認識する。CPU51は、公知の画像認識技術を用いることで、利用者41の映像を認識することができる。CPU51は、例えば、フレーム内における利用者41の手首の位置及び足首の位置を特定する。CPU51は、連続するフレーム間で、フレーム内における利用者41の手首の位置及び足首の位置の移動量を計算する。そして、CPU51は、一定時間における移動量の合計を計算する。