以下に、上述したような特徴を有する本発明におけるコンテンツ生成装置及びコンテンツ生成プログラムを好適に実施した形態について、図面を用いて詳細に説明する。なお、以下の説明では、コンテンツの一例として放送番組を用いるが、コンテンツの一例としては、これに限定されるものではなく、例えば映画やテレビCM等の各種映像コンテンツに適用できる。また、本実施形態におけるコンテンツの生成においては、例えばTVML(TV program Making Language)等を用いることができるが、これに限定されるものではない。
TVMLとは、言語体系にカメラや照明等のテレビ番組制作の概念やノウハウを含んだスクリプト言語であり、映像や音声等を素材データと台本(演出内容等)とに分けて記述することができる。制作側で台本を記述することで、PC(Personal Computer)等で動作するソフトウェア等がこれをスクリプト(TVMLスクリプト)として読み取り、台本に記述された素材データを取得して、例えばCGキャラクタにセリフや身体動作、表情等を与えることができる。
<コンテンツ生成装置の機能構成例>
図1は、本実施形態におけるコンテンツ生成装置の機能構成の一例を示す図である。図1に示すコンテンツ生成装置10は、入力手段11と、出力手段12と、記憶手段13と、スクリプト担当割り当て手段14と、スクリプト生成手段15と、遅延調整手段16と、コンテンツ生成手段17と、通信手段18と、制御手段19とを有するよう構成されている。また、コンテンツ生成手段17は、1又は複数の映像生成エンジン20−1〜20−n(以下、必要に応じて「映像生成エンジン20」という)を有する。
コンテンツ生成装置10は、PCやサーバ等であるが、これに限定されるものではなく、例えばスマートフォンやタブレット端末、映像生成機能・通信機能を有するテレビ装置、ゲーム機器、カメラ、携帯電話等でもよい。
入力手段11は、コンテンツ生成装置10を使用するユーザ等からの指示等の入力を受け付ける。入力手段11は、例えば本実施形態におけるコンテンツ生成を行うためのスクリプト担当割り当て指示、スクリプト生成指示、遅延調整指示、コンテンツ生成指示、送受信指示等の各入力を受け付ける。なお、入力手段11は、例えばキーボードや、マウス等のポインティングデバイス、マイク等の音声入力デバイス等である。
出力手段12は、入力手段11から入力された指示内容や設定内容等を画面等に表示したり、指示内容や設定内容等に基づいて実行された実行結果等を出力する。出力手段12は、例えばディスプレイ等による画面表示デバイスやスピーカ等による音声出力デバイス等である。なお、上述した入力手段11や出力手段12は、例えばタッチパネル等のように入出力が一体型の構成であってもよい。
記憶手段13は、本実施形態におけるコンテンツ生成に必要な各種情報を記憶する。例えば、記憶手段13は、生成する放送番組(コンテンツ)に関する情報(例えば、番組台本、スタジオセット、番組に登場するCGオブジェクトの種類(例えば、CGオブジェクトの複雑さ)や数、遅延(ディレイ)情報、スクリプト、コンテンツ、素材データ、番組制作エンジン、CGオブジェクト毎の基本動作データ等を記憶する。
なお、本実施形態におけるCGオブジェクトとは、例えばCGキャラクタ(人や動物)や建物(例えばビルや家)、木、花、椅子、机、家具、PC、家電、車両、船、海、太陽、飛行機等の各種物体であるが、これらに限定されるものではない。また、CGオブジェクトの複雑さとは、例えばオブジェクト全体のポリゴン数等により設定され、ポリゴン数が多いほど複雑である。なお、複雑さの基準は、これに限定されるものではなく、例えばCGオブジェクトの表情や動作内容等を基準に設定されてもよい。
また、記憶手段13は、例えば通信手段18を介して、上述した各種データをインターネットやLAN(Local Area Network)等の通信ネットワーク等に接続された外部装置等から取得することもできる。記憶手段13に記憶された各種データは、必要に応じて読み出しや書き込みが行われる。
スクリプト担当割り当て手段14は、コンテンツ生成手段17における1又は複数の映像生成エンジン20−1〜20−nへのスクリプトの担当を割り当てる。例えば、スクリプト担当割り当て手段14は、コンテンツ生成手段17における映像生成エンジン20の性能測定を行う。性能測定とは、番組生成時に使用する映像生成エンジン20において、例えば番組に登場させるCGキャラクタの複雑さ(例えば、ポリゴン数)やリアルタイムに表示できるキャラクタ数の関係を測定することをいうが、これに限定されるものではない。
また、スクリプト担当割り当て手段14は、上述した性能測定結果と、台本等から得られる番組の意図や効果等とに基づいて、番組生成時のCGオブジェクトの種類及びCGオブジェクト数を決定し、その内容に応じて映像生成エンジン20の数を割り当てる。例えば、CGオブジェクト数等により、映像生成エンジン20が2個必要と判断した場合には、コンテンツ生成手段17として映像生成エンジン20−1と、映像生成エンジン20−2とを割り当て、各エンジンにどのような映像を生成させ(スクリプトの割り当て)、どのように合成させるか(合成順序)等の設定を行う。スクリプト担当割り当て手段14は、映像生成エンジン20−1の映像出力を映像生成エンジン20−2の入力映像として使用するように設定する。なお、設定された情報は、パラメータ情報として管理される。
スクリプト生成手段15は、スクリプト担当割り当て手段14で割り当てられた各映像生成エンジン20でコンテンツを生成させるため、それぞれに対応したスクリプトを生成する。例えば、スクリプト生成手段15は、予め設定されたスタジオセットやCGキャラクタを用いた初期シーン用のスクリプトを生成してもよく、またCGキャラクタに基本的なセリフや動作内容等のパラメータ情報が含まれている場合には、そのパラメータ情報に基づいて対応する番組進行用(後続シーン用)のスクリプトを生成してもよい。
遅延調整手段16は、各映像生成エンジン20で生成されたコンテンツが同期して映像信号として出力されるように、各映像生成エンジン間での映像生成における遅延(ディレイ)時間を調整する。例えば、遅延調整手段16は、スクリプト生成手段15で生成された番組の初期シーンのスクリプト又は予め設定されたスクリプトを用いて、各映像生成エンジン20で映像の仮生成を行った結果から、それぞれの映像の誤差を取得し、各映像生成エンジン20の遅延時間を取得する。
遅延調整手段16は、取得した遅延時間に基づいて、各映像生成エンジン20から生成されたコンテンツが同期して出力されるように、どのタイミングでどの映像生成エンジン20にスクリプトを送信するかの調整時間を取得する。
遅延調整手段16により得られた遅延調整情報は、スクリプト生成手段15に出力される。これにより、スクリプト生成手段15は、遅延調整手段16により得られる遅延調整情報に基づいて、各映像生成エンジン20へ送るスクリプトの送信タイミングを調整することができ、映像合成時にそれぞれの映像を同期させることができる。
コンテンツ生成手段17は、スクリプトやパラメータ情報、素材データ(例えば画像や映像)等に基づいて映像コンテンツを生成する。また、コンテンツ生成手段17は、他の映像生成エンジンから取得した映像や通信手段18等を介して外部から取得した映像と、エンジン内部で生成される映像とを合成する。例えば、コンテンツ生成手段17は、複数の映像生成エンジン20−1〜20−nを有し、スクリプト担当割り当て手段14で割り当てられた順序に応じて、前段の映像生成エンジンで生成された映像と、自ら生成した映像とを合成し、合成した映像を次段の映像生成エンジンに送る処理を行うことができる。複数の映像生成エンジン20で生成された映像を段階的に合成することで、1つの画面に同時に多くのCGオブジェクトを表示させることができる。
各映像生成エンジン20−1〜20−nは、スクリプトによりCGオブジェクトを含む映像をリアルタイムに生成し、かつ、他の映像生成エンジンから入力される映像と、内部で生成した映像とをリアルタイムに合成する。例えば、各映像生成エンジン20−1〜20−nは、それぞれが入力したスクリプトファイルから、スクリプト担当割り当て手段14により割り当てられた自分が担当するスクリプトを抽出し、抽出したスクリプトに対してコンテンツを生成する。
各映像生成エンジン20−1〜20−nは、それぞれがGPU(Graphics Processing Unit)等で構成されているが、これに限定されるものではなく、例えばVPU(Visual Processing Unit)やCPU等でもよい。つまり、コンテンツ生成手段17は、マルチプロセッサ等を用いて映像生成処理を分散して番組生成を行う。
また、各映像生成エンジン20−1〜20−nは、それぞれが入力したスクリプトを解釈し、映像生成を担当するスクリプトである場合に、そのスクリプトに対応する映像生成を行う。また、各映像生成エンジン20−1〜20−nは、入力したスクリプトが、担当するスクリプトでない場合には、そのスクリプトに対する映像生成は行わない。
なお、コンテンツ生成手段17は、スクリプト担当割り当て手段14により割り当てられた映像生成エンジン20毎の処理対象のスクリプトや、どのような順序で映像を合成するか等の情報に基づいてコンテンツを生成する。
また、コンテンツ生成手段17は、例えばTVMLスクリプトや素材データ等を読み込み、順次スクリプトを解釈しながらアニメーション映像をリアルタイムに生成するTVMLプレーヤーとしての機能を有していてもよい。
通信手段18は、通信ネットワーク等を介して外部装置とデータの送受信を行うための通信インタフェースである。通信手段18による通信は、有線でも無線でもよく、これらの組み合わせでもよい。
制御手段19は、本実施形態におけるコンテンツ生成装置10の各機能構成全体の制御を行う。具体的には、制御手段19は、例えばスクリプト担当割り当て手段14によるスクリプトの担当の割り当て、スクリプト生成手段15によるスクリプトの生成、遅延調整手段16における各映像生成エンジン20での遅延(ディレイ)調整、コンテンツ生成手段17におけるコンテンツ生成、通信手段18におけるデータの送受信等の各種制御を行う。
なお、制御手段19が行う制御は、これに限定されるものではなく、例えばコンテンツ生成処理の開始や終了を制御したり、エラー制御(例えば、エラー発生時のメッセージ出力)等を行うことができる。
本実施形態では、上述したコンテンツ生成装置10により、1又は複数の映像生成エンジン等を用いて多くのCGオブジェクトが登場する映像コンテンツを簡便かつリアルタイムに生成することができる。
<コンテンツ生成装置10における処理(コンテンツ生成処理)の一例>
次に、上述したコンテンツ生成装置10における処理の一例について、フローチャートを用いて説明する。図2は、コンテンツ生成装置における処理の一例を示すフローチャートである。なお、以下の説明では、生成する番組(コンテンツ)に登場させるCGオブジェクトの一例としてCGキャラクタを用いて説明するが、これに限定されるものではない
図2の例に示すコンテンツ生成処理において、スクリプト担当割り当て手段14は、コンテンツ生成手段17における映像生成の性能を測定する(S01)。S01の処理では、例えば映像生成エンジン20に対して、予め記憶手段13等に記憶されたCGキャラクタの種類毎に、リアルタイムに表示できるキャラクタ数の関係を測定する。
次に、スクリプト担当割り当て手段14は、S01の処理で得られた性能測定結果や予め設定された番組台本等に基づいて、生成する番組(コンテンツ)に登場させるキャラクタとキャラクタ数を決定する(S02)。
次に、スクリプト担当割り当て手段14は、キャラクタとキャラクタ数に対応する映像生成エンジン20の数を決定し、各映像生成エンジンが担当するスクリプトを割り当てる(S03)。例えば、生成する番組で赤い服の女性のCGキャラクタ40体を表示させる場合に、性能測定結果から1つの映像生成エンジンで20体までリアルタイム表示できると判断されたとする。この場合、スクリプト担当割り当て手段14は、2つの映像生成エンジンを割り当てる。
なお、各映像生成エンジン20は、予め設定されたIDやネットワークアドレス、ホスト名、ポート番号、MAC(Media Access Control)アドレス等の各種アドレス情報により識別されるが、各映像生成エンジン20の識別情報についてはこれに限定されるものではない。更に、スクリプト担当割り当て手段14は、例えば映像生成エンジン20−1で生成した映像を映像生成エンジン20−2の入力として取得し、映像生成エンジン20−2で生成された映像と合成させる等といった合成順序等を設定することもできる。
次に、スクリプト生成手段15は、例えば各映像生成エンジンに対応する初期シーンのスクリプトを生成する(S04)。S04の処理において、スクリプト生成手段15は、例えば2つの映像生成エンジン20−1,20−2を用いて映像を生成する場合に、映像生成エンジン20−1用のスクリプトファイル(例えば、「Char40test_h1.tvml」)と、映像生成エンジン20−2用のスクリプトファイル(例えば、「Char40test_h2.tvml」)とを生成する。
次に、遅延調整手段16は、各映像生成エンジン20において生成された映像を合成する際に、2つの映像で遅延(誤差)が生じないように、各映像生成エンジン20における遅延時間を調整する(S05)。S05の処理において、例えば映像生成エンジン20−1の出力映像と、映像生成エンジン20−2でスクリプトから生成された映像とを、映像生成エンジン20−2で合成する場合、遅延調整手段16は、上述した2つの映像生成エンジン20−1,20−2に対して同一のスクリプトを出力して映像を仮生成させ、更に映像生成エンジン20−2で合成された2つの映像のずれ量から遅延時間(ディレイ量)を取得する。なお、同一のスクリプトとは、例えば、S04の処理で得られた初期シーンのスクリプトでもよく、予め設定された処理(例えば、カメラワーク)を行うスクリプトでもよいが、これに限定されるものではない。
また、遅延調整手段16は、映像のずれが生じている場合に、そのずれ量に基づいて、映像生成エンジン20−1及び映像生成エンジン20−2にそれぞれ出力するスクリプトのタイミングをずらしながら、再度同一のスクリプトを出力し、各映像生成エンジンで仮生成された映像を取得する。この作業を映像のずれがなくなるまで行うことで、最終的に合成時の映像のずれがなくなる遅延時間(ディレイ量)を取得する。
なお、遅延時間を取得するためのスクリプトの一例としては、例えばカメラワークとしてカメラAを横に振る(pan)スクリプト「camera:movement(name=CameraA,y=1.96,z=6,pan=−21.00,tilt=8.00,vangle=46.00,speed=0.2)」、「camera:movement(name=CameraA,y=1.96,z=6,pan=21.00,tilt=8.00,vangle=46.00,speed=0.2)」を用いることができるが、これに限定されるものではない。
次に、スクリプト生成手段15は、S05の処理により調整された遅延時間に基づくタイミングで、各映像生成エンジン20にスクリプトを出力する(S06)。次に、コンテンツ生成手段17は、スクリプトを入力した各映像生成エンジン20で、コンテンツを生成する(S07)。S07の処理において、コンテンツ生成手段17は、入力したスクリプトに自己が担当しているスクリプトが含まれている場合に、そのスクリプトに対応するコンテンツを生成する。また、コンテンツ生成手段17は、入力したスクリプトに自己が担当しているスクリプトが含まれていない場合には、コンテンツの生成を行わない。
次に、コンテンツ生成手段17は、複数の映像生成エンジン20で生成されたコンテンツを合成して、最終的な番組を生成する(S08)。S08の処理において、コンテンツ生成手段17は、例えば映像生成エンジン20−1で生成した映像コンテンツの出力が、映像生成エンジン20−2で生成した映像コンテンツの背景として入力される場合に、映像生成エンジン20−1で生成した映像コンテンツ(背景)の上に、映像生成エンジン20−2で生成した映像コンテンツを合成する。なお、本実施形態では、遅延調整手段16により各映像生成エンジン20の生成時間を考慮して生成時間が遅延されているため、S08の処理では、同期した映像の合成を実現することができる。また、本実施形態では、3つ以上の映像生成エンジン20を用いてコンテンツの合成を行ってもよい。次に、出力手段12は、コンテンツ生成手段17により生成された合成した番組を出力手段12等により出力する(S09)。
ここで、コンテンツ生成装置10の制御手段19は、例えば後続シーンのスクリプト(番組進行用のスクリプト)を生成するか否かを判断する(S10)。S10の処理において、制御手段19は、例えば制作中の番組に対応する台本等に基づいて判断することができるが、これに限定されるものではない。
後続シーンのスクリプトを生成する必要がある場合(S10において、YES)、スクリプト生成手段15は、各映像生成エンジン20に対応する後続シーンのスクリプトを生成し(S11)、S06の処理に戻り、所定のタイミングでスクリプトの出力を行う。例えば、上述したS11の処理において、スクリプト生成手段15は、番組の進行に沿って、同じスクリプト(Char40test_h3.tvml)を生成し、S05の処理において取得した遅延時間に基づいて、映像生成エンジン20−1,20−2のそれぞれに対して調整したタイミングで送信する。
また、S10の処理において、後続シーンのスクリプトを生成しない場合(S10において、NO)、制御手段19は、コンテンツ生成処理を終了する。
<スクリプト担当割り当て手段14における映像生成エンジン数の決定例>
次に、上述したスクリプト担当割り当て手段14における映像生成エンジン数の決定例について説明する。図3は、映像生成エンジン数の決定例を説明するための図である。なお、以下の説明では、CGオブジェクトの一例としてCGキャラクタを用いて説明する。
一般に、体の動きに従って滑らかに変形する皮膚を持ったCGキャラクタの表示は、多くの計算処理が必要となる。したがって、本実施形態において、スクリプト担当割り当て手段14は、コンテンツ生成手段17における映像生成エンジン20の性能測定を行い、CGオブジェクトの種類毎に、リアルタイムに表示できるCGオブジェクト数を測定する。
例えば、スクリプト担当割り当て手段14は、予めCGキャラクタ毎に設定されているポリゴン数(複雑さ)等のパラメータに応じて、映像生成エンジン20が処理の負荷等による動作の遅延等が生じることなくリアルタイムに生成できるキャラクタ数を決定する。
図3に示す例では、番組に登場させることが可能なCGキャラクタ30−1〜30−3が予め設定されており、更に各CGキャラクタ毎にポリゴン数が設定されている。なお、CGキャラクタ30−1〜30−3の種類やポリゴン数については、これに限定されるものではない。
スクリプト担当割り当て手段14は、各CGキャラクタ30−1〜30−3が使用するポリゴンの数に応じて1つの映像生成エンジンで生成可能なキャラクタ数を設定する。なお、コンテンツに登場させるキャラクタやキャラクタ数は、例えば生成する番組の台本等により設定することもできる。
例えば、CGキャラクタ30−2(赤い服の女性)を、40体リアルタイムで表示しようとすると、図3に示す性能測定結果から1つの映像生成エンジンで20体をリアルタイム表示できることがわかる。したがって、スクリプト担当割り当て手段14は、40体のCGキャラクタ30−2を表示させるために2台の映像生成エンジンを割り当て、スクリプト生成手段15に割り当てた各映像生成エンジンに対応するスクリプトを生成させる。
<コンテンツ生成の具体例>
次に、上述した本実施形態におけるコンテンツ生成の具体例について説明する。図4は、コンテンツ生成の具体例を説明するための図である。また、図5〜図7は、映像生成エンジンに出力するスクリプトの一例を示す図(その1〜その3)である。なお、図5〜図7の例では、説明の便宜上、TVMLスクリプトの左側に行番号を示している。
図4の例では、コンテンツ生成手段17における2つの映像生成エンジン20−1,20−2を用いて番組を生成する例が示されている。映像生成エンジン20−1,20−2は、スクリプト生成手段15が生成したスクリプトファイルを読み込んで、自己が担当するスクリプトを順番に再生して映像を出力する。また、映像生成エンジン20−1,20−2は、リアルタイムかつ高速に変化するカメラワークデータ等をパラメータとして入力することも可能である。
また、映像生成エンジン20−1,20−2は、映像を段階的に合成することができるため、1つの画面に同時に多くのCGキャラクタを容易に登場させることができる。
図4の例において、映像生成エンジン20−1は、例えば図5に示すようなTVMLスクリプト(例えば、Char40test_h1.tvml」)を用いて背景セットと画面(カメラ位置)後方のキャラクタ群の生成を担当している。本実施形態におけるスクリプトは、例えばテレビ番組のような映像コンテンツ制作全般に使用することができ、例えばCGキャラクタのしゃべりや動作の他、照明、カメラ、セット、小道具、スーパーインポーズ、動画、BGM等、テレビ番組のスタジオ制作に必要な機能を全て記述することができる。
図5の例に示すTVMLスクリプトでは、スタジオセットや照明、キャラクタ、カメラ等の設定の他に、(54)〜(62)行目に各CGキャラクタ(20体)の画面上の表示位置座標(一部記載省略)が設定されている。また、(66)〜(74)行目に各CGキャラクタ(20体)に対する動作内容(一部記載省略)が設定される。図5の例では、Character1_1A〜10_1A、Character1_2A〜10_2Aが、映像生成エンジン20−1が担当するCGオブジェクトとなる。
また、映像生成エンジン20−2は、例えば図6に示すようなスクリプト(例えば、Char40test_h2.tvml」)を用いて画面(カメラ位置)手前のキャラクタ群の生成を担当している。
図6の例では、背景映像として、映像生成エンジン20−1の出力映像40−1を入力とするスクリプトが存在する((13)〜(15)行目)。また、図6の例では、照明、キャラクタ、カメラ等の設定の他に、(54)〜(62)行目に各CGキャラクタ(20体)の画面上の表示位置座標(一部記載省略)が設定されている。また、(68)〜(76)行目に各CGキャラクタ(20体)に対する動作内容(一部記載省略)が設定される。図6の例では、Character1_3A〜10_3A、Character1_4A〜10_4Aが、映像生成エンジン20−2が担当するCGオブジェクトとなる。
図4の例に示す映像生成エンジン20−1及び20−2では、例えば図5及び図6に示す初期シーンのスクリプトに対して、照明やカメラ等に関するスクリプトを処理し、同じ照明、同じカメラワークの映像を生成する。また、映像生成エンジン20−2は、図4に示すように前段の映像生成エンジン20−1からの出力映像を背景映像として入力し、映像生成エンジン20−2で生成された映像40−2と合成(キャラクタ領域だけ上書き)して、最終的な映像コンテンツ41を出力する。
なお、図5,図6に示すスクリプトは、例えば「skipscript」の「switch」パラメータにより表示(off:スキップしない)又は非表示(on:スキップする)を制御することができる。また、本実施形態では、映像生成エンジン20−1に背景セットと後方のキャラクタ群を担当させているが、これに限定されるものではなく、背景セットとキャラクタ群とを別々の映像生成エンジンに分けてもよく、またキャラクタ群に限らず他のCGオブジェクトの表示を担当させてもよい。
また、本実施形態において、スクリプト生成手段15は、番組進行に対応させて、例えば図7に示すような後続シーンのスクリプトファイル(例えば、Char40test_h3.tvml」)を映像生成エンジン20−1及び20−2に出力する。映像生成エンジン20−1及び20−2は、そのスクリプトファイルを受け取り、それぞれが担当するスクリプト(例えば、CGキャラクタ等)に対しての動作制御等を実行する。
図7の例では、(01)〜(04)行目に、Character(キャラクタ)1_1A、2_2A、3_3A、4_4Aが「バイバイ」と手を振るジェスチャ(動作)を行うスクリプトが記述されている。したがって、映像生成エンジン20−1は、自分が担当する図7の(01)、(02)行目のスクリプト(Character1_1A、2_2A)に対応した映像生成を行い、(03)、(04)行目のスクリプトには対応しない。一方、映像生成エンジン20−2は、図7の(01)、(02)行目にスクリプトには対応せず、(03)、(04)行目のスクリプト(Character3_3A、4_4A)に対応した映像生成を行う。
なお、図7に示すスクリプトは、遅延調整手段16から得られる遅延時間にしたがってタイミングをずらして各映像生成エンジン20−1,20−2に出力される。このように、本実施形態では、各映像生成エンジン20に対して同一のスクリプトを出力した場合でも、それぞれの映像生成エンジン20に割り当てられている担当スクリプトのみを抽出して処理することができる。したがって、スクリプト生成手段15は、映像生成エンジン20毎に個別のスクリプトを生成したり、送信する必要がなくなる。したがって、簡便かつリアルタイムにコンテンツを生成することができる。
<遅延調整の具体例>
次に、本実施形態における遅延調整の具体例について説明する。本実施形態では、各映像生成エンジン20からの映像を合成する際の映像間の遅延をなくすための調整を行う。例えば、図4に示すようにカメラの位置や向き、画角等を変更させるスクリプト(カメラワークスクリプト)を映像生成エンジン20−1,20−2に出力する。カメラワークスクリプトとしては、例えば図4に示すカメラワークスクリプトA、B等を出力することができるが、これに限定されるものではない。また、カメラワークスクリプトではなく、例えばCGキャラクタを移動させるスクリプト等の予め設定されたスクリプトであってもよく、上述した初期シーンスクリプトであってもよい。
映像生成エンジン20−1,20−2は、それぞれで担当する映像を仮生成し、映像生成エンジン20−2で2つの映像が合成されて出力される。
ここで、例えば映像生成エンジン20−1,20−2に対して同じタイミングでカメラワークスクリプトを出力すると、映像生成エンジン20−1と映像生成エンジン20−2で、ほぼ同時に映像生成が行われる。しかしながら、映像生成エンジン毎の性能の違いや、映像生成エンジン20−1からの映像を映像生成エンジン20−2に出力し、映像生成エンジン20−2が入力するまでの通信時間等により、合成時の2つの映像が同期せずに遅延が生じ、全体の動作がずれてしまう。これは、例えばCGキャラクタが動作する場合であっても同様である。
図8は、合成映像のずれを説明するための図である。図8(A)は、映像のずれがある場合を示し、図8(B)は、映像のずれがない場合を示している。上述したように、各映像生成エンジン20での処理時間のずれを考慮しない場合には、図8(A)に示すように、カメラワークの変更等によりCGキャラクタの位置がずれる等の現象が生じる。
そこで、本実施形態では、そのような時間的ずれをなくすため、スクリプト生成手段15は、遅延調整手段16からの指示により、映像生成エンジン20−1,20−2に対する出力タイミングを所定時間ずらしてカメラワークスクリプトを出力する。遅延調整手段16は、例えば映像生成エンジン20−2から最終的に合成された映像を取得し、図8(A)、(B)に示すような映像の変化からずれ(位置ずれ、動作ずれ等)が生じていないか(同期しているか)を判断する。また、ずれが生じている場合には、ずらす時間を変更しながら、ずれが生じなくなるまで繰り返し処理を行う。
これにより、遅延調整手段16は、各映像生成エンジンで仮生成された映像から遅延時間を取得することができ、取得した遅延時間を用いて、ずれが生じないように出力タイミングの調整を行い各映像生成エンジン20にスクリプトを出力する。例えば、スクリプト生成手段15は、映像生成エンジン20−2にスクリプトを出力するタイミングを映像生成エンジン20−1へスクリプトを出力するタイミングより遅いタイミングにすることで、例えば図8(B)に示すように、2つの映像が同期した合成映像を生成することができる。
なお、本実施形態において、スクリプト生成手段15は、予め設定されたスクリプト送信用設定ファイルに基づいてスクリプトの送信を行う。上述した遅延時間も、スクリプト送信用設定ファイルに記憶される。
図9は、スクリプト送信用設定ファイルの一例を示す図である。図9の例に示すスクリプト送信用設定ファイルは、例えば「セットワークモード設定セクション」、「ローカルモード設定セクション」、「リアルタイムパラメータ入力設定セクション」、「repeat構文設定セクション」、「送信先設定セクション」等があるが、これに限定されるものではない。
例えば、遅延時間に基づくスクリプト送信間隔は、図9に示すように、映像生成エンジン20毎に、送信先のホスト名(HOST)及びポート番号(PORT)と共に、ディレイ量(DELAY)パラメータとして、「送信先設定セクション」に記憶される。
また、本実施形態では、遅延時間の最大値「SEND_DELAY_MAX」を予め設定してもよい。この設定情報は、例えば、図9に示すように「ネットワークモード設定セクション」として設定される。このように遅延時間の最大値を設定することで、合成映像そのものの遅延を防止し、リアルタイム映像出力を維持することができる。
なお、上述した実施形態では、2つの映像生成エンジン20−1,20−2を用いて説明したが、これに限定されるものではなく、映像に登場させるCGオブジェクトの複雑さや数、装置性能等に応じて3以上の映像生成エンジンを使用することができる。例えば、上述した実施形態において映像生成エンジン20−3を追加する場合には、映像生成エンジン20−2の後に配置し、各映像生成エンジン20−1〜20−3が担当する素材やスクリプト等の割り当てを再度行う。
<他の実施形態>
上述したコンテンツ生成装置10は、例えば上述したコンテンツ生成手段17(映像生成エンジン20)を他の装置(例えば、PC等)で実現したコンテンツ生成システムとして構成されていてもよい。
ここで、図10は、コンテンツ生成システムの構成例を示す図である。なお、以下の構成において、上述したコンテンツ生成装置10と同様の処理を行う構成については、上述した構成と同様の名称及び符号を付するものとし、ここでの具体的な説明は省略する。
図10の例において、コンテンツ生成システム50は、コンテンツ生成装置51と、1又は複数のPC52(図10の例では、PC52−1,52−2)とを有するよう構成されている。コンテンツ生成装置51とPC52とは、例えばインターネットやLAN等の通信ネットワーク53によりデータの送受信が可能な状態で接続されている。
コンテンツ生成装置51は、入力手段11と、出力手段12と、記憶手段13と、スクリプト担当割り当て手段14と、スクリプト生成手段15と、遅延調整手段16と、通信手段18と、制御手段19とを有するよう構成されている。また、PC52は、映像生成エンジン61と、通信手段62とを有している。なお、PC52は、例えばサーバや映像生成機能・通信機能を有するテレビ装置等でもよく、またスマートフォンやタブレット端末、ゲーム機器、カメラ、携帯電話等のモバイル端末等でもよい。
図10のコンテンツ生成装置51は、予め映像コンテンツを生成させる情報処理装置として1又は複数のPC52を管理している。各PC52は、例えばIPアドレス等のネットワークアドレスで識別することができる。各PC52は、例えばマルチプロセッサではなく、1つのプロセッサを用いてコンテンツを生成する映像生成エンジン61を有しているが、これに限定されるものではなく、例えば各PC52がマルチプロセッサ(複数の映像生成エンジン)を有していてもよい。映像生成エンジン61は、上述したコンテンツ生成手段17の機能を有してもよく、TVMLプレーヤーとしての機能を有していてもよい。
コンテンツ生成装置51は、上述したコンテンツ生成装置10と同様に、スクリプト担当割り当て手段14により、使用するPC52の数と、どのPC52に対してどのスクリプトを担当させ、どの順序で合成するか等の情報を割り当てる。スクリプト生成手段15は、スクリプト担当割り当て手段14により割り当てられた内容に基づいてスクリプトを生成し、遅延調整手段16により調整された遅延時間(ディレイ量)に基づいて時間をずらして、通信手段18から同一のスクリプトを使用するPC52に送信する。このとき、通信手段18は、各PC52が担当する映像コンテンツを生成させると共に、他のPCで生成された生成された映像コンテンツを入力映像とし、その入力映像と、スクリプトから生成した映像コンテンツとを所定の順序で合成させる旨の指示も送信する。上述の指示は、送信するスクリプトに含まれていてもよく、また予め各PC52に送信されていてもよい。
PC52−1、PC52−2は、コンテンツ生成装置51から送信されたスクリプトファイルを通信手段62で受信し、受信したスクリプトファイルから自分が担当するスクリプトを抽出して、映像生成エンジン61により映像生成を行う。
例えば、PC52−1により得られる出力映像40−1は、通信手段62により通信ネットワーク53を介してアドレス2のPC52−2に背景映像として入力される。なお、この場合には、例えば映像のエンコードやデコード処理等を含んでいてもよく、また通信ネットワーク53ではなく映像信号を送信する専用の回線(映像ライン)で送信してもよい。PC52−2は、入力した背景映像と、スクリプトから自ら生成した映像40−2とを合成して、最終的な映像コンテンツ41を出力する。
<コンテンツ生成システムの応用例>
図11は、コンテンツ生成システムの応用例を示す図である。図11に示すコンテンツ生成システム70は、上述したコンテンツ生成装置51と、テレビ装置71と、モバイル端末72とを有している。コンテンツ生成装置51と、テレビ装置71と、モバイル端末72とは、例えばインターネットやLAN等の通信ネットワーク53によりデータの送受信が可能な状態で接続されている。
テレビ装置71には、上述した映像生成エンジン61と、通信手段62とを有し、更に映像生成エンジン61により生成された映像コンテンツを画面に表示する表示手段81を有している。
また、モバイル端末72は、上述した映像生成エンジン61と、通信手段62と、表示手段81とを有し、更にテレビ装置71の表示手段81の画面に表示されているコンテンツを撮影するカメラ(撮像手段)82を有している。
図11に示すコンテンツ生成システムでは、例えばテレビ装置71の表示画面をモバイル端末72に内蔵されたカメラ82を通して撮影し、撮影した映像コンテンツを含む撮影画像全体をメインコンテンツとして取得する。更に、モバイル端末72は、そのメインコンテンツを背景映像として、通信ネットワーク53によりコンテンツ生成装置51から受信したスクリプトから自ら生成した映像(サブコンテンツ)83とを同期させて合成することができる。これにより、例えばモバイル端末72の表示手段81において、例えばキャラクタが撮影したテレビ装置71の表示画面から飛び出すような娯楽性のある映像を提供することができる。
この場合、図11に示すコンテンツ生成装置51は、カメラワークやCGの生成空間の指定(クリッピングプレーン)等を行うことが好ましい。また、コンテンツ生成装置51は、同一のCGキャラクタについての制御スクリプトをテレビ装置71及びモバイル端末72に送信する。
本実施形態により、簡単な構成で多くのキャラクタを表示可能となる。また、CGキャラクタが画面から飛び出すといった娯楽性のある映像コンテンツを提供することができる。なお、上述した実施形態は、各実施形態の一部又は全部を組み合わせて実施することができる。また、スクリプトは、TVMLスクリプト以外のスクリプトを用いてもよい。
<実行プログラム(コンテンツ生成プログラム)>
ここで、上述したコンテンツ生成装置10,51は、例えばCPU、RAM(Random Access Memory)等の揮発性の記憶媒体、ROM(Read Only Memory)等の不揮発性の記憶媒体、マウスやキーボード、ポインティングデバイス等の入力装置、画像やデータを表示する表示部、並びに外部と通信するためのインタフェースを備えたコンピュータによって構成することができる。
したがって、コンテンツ生成装置10,51が有する各機能は、これらの機能を記述したプログラム(コンテンツ生成プログラム)をCPUに実行させることによりそれぞれ実現可能となる。また、このプログラムは、磁気ディスク(フロッピィーディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリ等の記録媒体に格納して頒布することもできる。
つまり、本実施形態では、上述した各構成における処理をコンピュータ(ハードウェア)に実行させるための実行プログラム(コンテンツ生成プログラム)を生成し、例えば汎用のPCやサーバ等にそのプログラムをインストールすることにより、上述したハードウェアと、プログラム等からなるソフトウェアとを協働させて上述したコンテンツ生成処理を実現することができる。
上述したように本発明によれば、CGオブジェクトの複雑さや数に対応させて簡便かつリアルタイムにコンテンツを生成することができる。具体的には、本実施形態では、簡単な構成で1つの画面に多くのキャラクタ等のCGオブジェクトを登場させることができる。また、映像生成エンジンの数が増減しても柔軟に対応することができる。CGキャラクタの複雑さや表示するキャラクタの数により必要な映像生成部の数も変わってくるが、映像生成部の機能は同じでよく、追加や削除が容易である。また、本実施形態では、それぞれの映像生成部が担当する素材は、意味のあるまとまりとなっており、精緻な表示タイミングを必要としない。
以上本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。