映像情報メディア学会ワードテンプレート (タイトル)

http://www.diva-portal.org
Postprint
This is the accepted version of a paper presented at Art & Science Forum 2014.
Citation for the original published paper:
Hayashi, M., Bachelder, S., Nakajima, M., Nigorikawa, T. (2014)
System Development Kit of T2V in the Unity: T2V Engine Capable of Converting Script to CG
Animation in the Unity Game Engine.
In:
N.B. When citing this work, cite the original published paper.
Permanent link to this version:
http://urn.kb.se/resolve?urn=urn:nbn:se:uu:diva-234405
T2V on Unity SDK の開発
~台本テキストから CG アニメーションを生成する T2V エンジンの Unity からの利用~
林 正樹†
Steven Bachelder†
中嶋 正之†
濁川 武郷‡
†ウプサラ大学ゲームデザイン学科 Cramérgatan 3, 621 67 Visby, SWEDEN
‡株式会社プログマインド 〒150-0002 東京都渋谷区渋谷 2-11-2 白石第五ビル 3F
E-mail:
†[email protected], ‡[email protected]
あらまし T2V はテキスト台本をテレビ番組的な CG アニメーションにリアルタイムで変換する技術である。
我々は、ゲームエンジン Unity に T2V の仕組みを実装し、SDK として一般ユーザーに提供する環境の開発を行った。
これにより、ゲームプラットフォームから T2V 機能を呼び出し、さまざまなインタラクティブコンテンツを開発す
ることができる。本 SDK の概要に加え、SDK によるニュース自動生成、インタラクティブクイズ番組生成などの
サンプルアプリを紹介する。
キーワード T2V、Unity、TVML、CG アニメーション、ゲーム、テレビ番組制作
System Development Kit of T2V in the Unity
-T2V Engine Capable of Converting Script to CG Animation in the Unity Game Engine-
Masaki HAYASHI†
Steven BACHELDER‡
Masayuki NAKAJIMA‡
†Uppsala University, Department of Game Design
‡ProgMind, Inc.
E-mail:
Takesato NIGORIKAWA‡
Cramérgatan 3, 621 67 Visby, SWEDEN
2-11-2 Shibuya, Shibuya-ku, Tokyo, 150-0002 Japan
†[email protected], ‡[email protected]
Abstract T2V (Text-To-Vision) is the technology which enables to generate TV-program-like CG animation by computer
from a given script. In this time, we have developed a system development kit (SDK) which makes it possible for developers
to create various interactive applications in the Unity with utilizing the T2V technology. We first explain the SDK and its usage.
Secondly, we introduce two applications made using SDK: 1) Automatic generation of talk show from a bulletin board in the
Internet, 2) Interactive quiz application with multi-story structure.
Keyword T2V, Unity, TVML, CG animation, Game, TV program production
1. は じ め に
2. T2V と 番 組 記 述 言 語 TVML
我々は、テキストでテレビ番組的なストーリー台本
T2V は 図 1 に 示 す よ う に 、ワ ー プ ロ 文 書 的 な テ レ ビ
を 書 く だ け で 、 こ れ を CG キ ャ ラ ク タ が 合 成 音 声 で し
番 組 風 台 本 を 書 く こ と で CG ア ニ メ ー シ ョ ン を 出 力 す
ゃ べ り 演 技 す る CG ア ニ メ ー シ ョ ン を 自 動 的 に 作 る 技
術 の 研 究 開 発 を 進 め て い る 。 テ キ ス ト を CG ア ニ メ ー
シ ョ ン に 変 換 す る 技 術 は T2V (Text-To-Vision) [1]と 呼
ぶ 。こ れ ま で こ の 変 換 エ ン ジ ン を ゲ ー ム エ ン ジ ン Unity
上に移植する作業を進めてきたが、今回、このエンジ
ン を Unity ア プ リ か ら 利 用 で き る SDK( 開 発 キ ッ ト )
を 開 発 し た 。 Unity の プ ロ ジ ェ ク ト に お い て T2V の
まった?
今来たところですよ
今日はいい天気だねー
絶好のフリーマーケット日和!
(B のアップショット)
そうですね。無事、晴れて良かった
ですよ
待ってる間に少し回って見たけど
(ツーショット)
(やった!)
面白いものがたくさんありましたよ
!
もう見て回っちゃったの(同時)
(ショック)
待っている間に見える範囲だけです
よ
・・・・・・
台本
SDK を 利 用 す る こ と で 、「 テ レ ビ 的 演 出 」 を 用 い た ゲ
ームなどのインタラクティブアプリケーションを容易
に 作 成 す る こ と が で き る よ う に な っ た 。本 稿 で は 、SDK
の概要と、これを用いて開発したサンプルアプリケー
ションを紹介する。
台本
character: talk(name=A, text="まった?")
character: talk(name=B, text="今来たところですよ")
character: talk(name=A, text="今日はいい天気だねー")
character: talk(name=A, text="絶好のフリーマーケット
日和!")
camera: closeup(name=Acam, target=B)
character: talk(name=B, text="そうですね。無事、晴れ
て良かったですよ")
character: talk(name=B, text="待ってる間に少し回って
見たけど")
camera: twoshot(name=Acam, target1=A, target2=B)
character: action ( name=B, action=hop, layer=1,
wrapmode=once, )
character: talk(name=B, text=“面白いものがたくさん
ありましたよ!”)
・・・・・・
TVML ス ク リ プ ト
演出
TVML
エンジン
エンジン
図 1
T2V の 仕 組 み
のように、やらせたいことを順に書き並べるだけで望
表 1
テ レ ビ 番 組 制 作 と TVML
み の ア ニ メ ー シ ョ ン を 生 成 で き る こ と が TVML の 特 徴
である。
カテゴリー
スタジオ
ショット
ビデオ挿入
テロップ
スーパー
アートワーク
音
テレビ番組制作
スタジオセット
小道具
俳優
照明
カメラ
ムービー再生
テキスト・画像
テキスト・画像
図表
オーディオ再生
ミキシング
TVML
set
prop
character
light
camera
movie
title
super
drawing
sound
sound
3. SDK 概 要
SDK は Unity の コ ン ポ ー ネ ン ト や サ ン プ ル CG デ ー
タなどがパッケージされた状態で提供される。空の
Unity プ ロ ジ ェ ク ト に SDK パ ッ ケ ー ジ を イ ン ポ ー ト す
る こ と で す ぐ に 開 発 に 入 れ る( 図 2)。SDK の 使 い 方 は
シ ン プ ル で 、TVML 台 本 を API で エ ン ジ ン に 渡 す こ と
で即そのスクリプトが再生されるというものである。
表 2 に API の 抜 粋 を 示 す 。基 本 が TVML 台 本 を 再 生 す
る。技術的には、入力の台本はいったん中間言語
る と い う も の な の で API 数 は 多 く な い 。例 と し て 、以
で あ る TVML (TV Program Making Language) [2]に 内 部
下 に Unity script で API を 利 用 す る C#の コ ー ド を 示 す 。
的 に 変 換 さ れ 、こ の TVML 台 本 が TVML エ ン ジ ン に よ
っ て ア ニ メ ー シ ョ ン に 変 換 さ れ る 。Unity 上 で は 、図 1
に お け る 「 演 出 エ ン ジ ン 」 と 「 TVML エ ン ジ ン 」 の 両
者 を 実 装 し て い る が 、SDK で は 特 に TVML エ ン ジ ン が
メ イ ン で 、 デ ベ ロ ッ パ ー は TVML 台 本 を SDK の API
でエンジンに渡すことで、テレビ番組演出的なアニメ
using UnityEngine;
using System.Collections;
public class SampleApp : MonoBehaviour {
private tvmlengine teg;
private string text;
public string filename = "TVMLScripts/ initscrpt";
ーションを簡単に利用することができるようになる。
void Start () {
teg = GetComponent<tvmlengine>(); // エ ン ジ ン 取 得
teg.initialize(); // 初 期 化
teg.setPlayerViewPortRect(0, 0, 1, 1); // 描 画 領 域
}
し た が っ て 、 こ こ で は ま ず 、 TVML に つ い て 概 要 を
説 明 す る 。 TVML は も と も と テ レ ビ 番 組 を 記 述 す る た
めに開発された言語で、特に情報系テレビ番組に必要
な要素をほぼすべて記述できる。表 1 が、テレビ番組
で 使 わ れ る 演 出 と TVML で イ ベ ン ト 名 の 対 照 で あ る 。
void OnGUI(){
if(GUI.Button(new Rect(20,20,100,30),"Init")){
TextAsset txtAsset
= Resources.Load(filename) as TextAsset;
text = txtAsset.text;
teg.playScript(text);
}
if(GUI.Button(new Rect(20, 60,100,30),"Speak!")){
text="characte:talk(name=A,text= \"な ん だ ! \")";
teg.interruptScript( text);
}
TVML は ス ク リ プ ト 言 語 で 、 台 本 を 1 行 1 行 上 か ら 順
に 実 行 し て 行 く 。If 文 や GOTO 文 な ど の 制 御 構 造 は 一
切 な い 。 た と え ば 次 に 2 行 分 の TVML を 示 す 。
camera: closeup (name=Acam, target=Bob)
character: talk (name=Bob, text="こ ん に ち は ")
こ れ を TVML エ ン ジ ン で 再 生 す る と 、ま ず Acam と
い う 名 前 の カ メ ラ が Bob と い う 名 前 の キ ャ ラ ク タ に ク
}
ロ ー ズ ア ッ プ し 、 そ の 後 、 Bob が 合 成 音 声 で 「 こ ん に
ちは」としゃべるアニメーションが生成される。以上
表 2
T2V on Unity SDK の 主 な API 抜 粋
User
API 名
initialize
setPlayerViewPortRect
playScript
interruptScript
interaction
User app
APIs
interruptScriptThenIdling
TVML on Unity
getLinenumber
(tvmlsdk.dll)
getStatusPlay
Unity プ ロ ジ ェ ク ト
図 2
SDK の 構 成
play
pause
概要
エンジンの初期化
描画領域の指定
与 え た TVML を 再 生
与 え た TVML を 割 り 込 み 再 生
割り込み再生の後アイドリ
ング
現 在 再 生 中 の TVML 行 を 取 得
再生中/停止中などのステ
ータス取得
再生
一時停止
m ain scri pt
scri pt #1
scri pt #3 .....
scri pt #2
i nt errupt
i nt errupt
i dl i ng
......
i nt errup t
i dl i ng
図 3
i dl i ng
スクリプトの多重割り込み
SDK の シ ー ン フ ァ イ ル に は "tvml"と い う GameObject が
用 意 さ れ 、 こ こ か ら "tvmlengine"コ ン ポ ー ネ ン ト を 取
得 し 、こ れ に API の メ ソ ッ ド を 投 げ る こ と で 動 作 す る 。
ま ず initialize ()メ ソ ッ ド で エ ン ジ ン を 初 期 化 し 、
setPlayerViewPortRect で 描 画 領 域 を セ ッ ト す る 。 画
図 4
面 に は Init ボ タ ン と Speak ボ タ ン が 現 わ れ 、 Init ボ
掲示板からの自動討論番組生成
タ ン を 押 す と 、 TVMLScripts/initscrpt.txt に 書 か れ
ッ パ ー が TVML ス ク リ プ ト を 介 し て 与 え た セ リ フ を キ
た TVML ス ク リ プ ト が 読 み 込 ま れ 、セ ッ ト や キ ャ ラ ク タ
ャラクタが自動的にリップシンクしてしゃべり、加え
が 表 示 さ れ る ( initscrpt.txt は あ ら か じ め 用 意 し て
て TVML の 特 徴 で あ る テ レ ビ 演 出 的 な 効 果 を 簡 単 に ス
お く )。 次 に Speak キ ー を 押 す と TVML1 行 分 の ス ク リ
クリプトにより与えることができるのが特徴である。
プトが送信され画面上のキャラクタがボタンを押すた
こ れ ら は 現 状 の Unity に は な い 機 能 で 、 こ れ に よ り
びに「なんだ!」としゃべる。ここでは、この後に説
Unity で 一 般 的 に 作 成 さ れ て い る ゲ ー ム な ど の ア プ リ
明 す る interruptScript メ ソ ッ ド を 使 っ て リ ア ル タ イ
ケーションと少し違った展開が可能である。以下にア
ム で TVML を 再 生 し て い る 。
プリケーション例を紹介する。
す で に 再 生 さ れ て い る TVML 台 本 に 途 中 で 割 り 込 ん
で 別 の TVML ス ク リ プ ト を 再 生 す る 機 能 を 割 り 込 み ス
ク リ プ ト と 呼 ぶ 。 表
2
の
interruptScript 、
(a)
掲示板からの討論番組自動生成
世 の 中 で 流 通 す る テ キ ス ト 情 報 を TVML ス ク リ プ ト
に 自 動 変 換 し 、こ れ を TVML エ ン ジ ン で 再 生 す る こ と
interruptScriptThenIdling な ど の メ ソ ッ ド が そ れ で あ る 。
で テ キ ス ト 情 報 を CG ア ニ メ ー シ ョ ン に 自 動 変 換 す る
図 3 のように、割り込みスクリプトは多重に用いるこ
こ と が で き る [3]。 図 4 は 本 SDK で 作 成 し た Web サ イ
とができる。また、割り込んだスクリプトの再生が終
トからの自動番組制作の例である。ここでは、画面左
了した後、割り込み先のスクリプトに戻る場合と、そ
上 の "ス レ ッ ド ゲ ッ ト "ボ タ ン を 押 す こ と で 、 2 ち ゃ ん
のままアイドリング状態になる場合のどちらかを選ぶ
ね る 掲 示 板 の 最 新 ス レ ッ ド の HTML を 押 す た び に 取 得
ことができる。ここでアイドリング状態は、スクリプ
し、これを文字列解析することで各発言を抜き出し、
トの最後のアニメーションがそのまま残り、キャラク
そ れ を 適 宜 TVML ス ク リ プ ト に 自 動 変 換 す る こ と で 2
タなどが出たまま待ち状態になる。この時、キャラク
ちゃんねる掲示板の内容を討論番組風に作り変えてい
タのアイドリングアニメーション(呼吸など自然な揺
る。6 体のキャラクタが発言をしゃべるが、この時の
れや瞬き)といったものはそのまま継続する。この機
カメラスイッチングやキャラクタの目線の制御は自動
能を用いて、ユーザーの入力に応じてリアルタイムで
的 に 付 与 さ れ る 。こ れ は TVML が 備 え る 自 動 カ メ ラ ス
アニメーションが反応するアプリケーションを作成す
イッチングおよび自動ジェスチャー生成機能を用いて
ることができる。
行われている。
(b)
4. SDK に よ る ア プ リ ケ ー シ ョ ン 例
インタラクティブクイズ番組
図 5 は 本 SDK に よ る イ ン タ ラ ク テ ィ ブ な ク イ ズ 番 組
のアプリケーションである。ちょうどテレビのクイズ
本 SDK は 音 声 合 成 エ ン ジ ン を 内 蔵 し て お り 、デ ベ ロ
番 組 に 相 当 す る 演 出 で TVML 台 本 を 書 き 、こ れ を 再 生
する。選択クイズの出題のあと、図 5 のようにボタン
が現われユーザーはボタンを押して回答する。押した
ボタンにより進行の異なる台本を用意し、あたかもテ
レビでパーソナリティが出演者の回答によりさまざま
に反応するかのようなコンテンツを作り出している。
ここではクイズ番組としたが、多数の枝分かれする台
本を用意してユーザーに選ばせるようにすればマルチ
ストーリーなインタラクティブアニメーションコンテ
ンツを作ることができる。
5. お わ り に
T2V 技 術 を ゲ ー ム エ ン ジ ン Unity か ら 利 用 で き る
SDK に つ い て 紹 介 し た 。 本 SDK は TVML ス ク リ プ ト
を 介 し て 動 作 す る の で 、 TVML の 基 礎 知 識 が あ る こ と
が 前 提 に な る 。 TVML は 単 純 な ス ク リ プ ト 言 語 な の で
コマンドリファレンスを見ながら作業すれば、使いこ
なすのはそれほど難しくはない。
Unity は マ ル チ プ ラ ッ ト フ ォ ー ム で あ り 、 現 在 、 本
SDK は Windows、Android で 稼 動 し て い る 。OSX や iOS
については音声合成モジュールの移植中で、音声合成
以外のグラフィックスなどはすでに稼動している。本
稿 が 発 表 に な る 時 点 で SDK の フ リ ー 配 布 が 始 ま っ て
いるか未定だが、現状でも評価版の貸し出しは行って
いるので、興味がある方はコンタクトして頂きたい。
TVML は テ レ ビ 番 組 の 演 出 を CG で 利 用 す る た め の
技 術 で あ り 、 Unity は 3DCG の ゲ ー ム を 構 築 す る た め
の技術である。両者はテレビとゲームという根本的に
異なるタイプのコンテンツから発展した技術だが、
我々はこれを融合することで今までにない新しいメデ
ィアを作り出すことを目論んでいる。現在、これに
"gamingTV"と い う 名 前 を 付 け 、さ ま ざ ま な 活 動 を 開 始
し た と こ ろ で あ る [4]。
今 後 の 予 定 だ が 、 CG に よ り 電 子 的 に テ レ ビ 番 組 を
作 り 出 す T2V 技 術 を さ ら に 普 及 さ せ 、 本 SDK を 核 に
してコミュニティを形成するよう呼びかけて行きたい。
そのために、ドキュメンテーションやサンプルプロジ
ェ ク ト な ど を 充 実 さ せ 、SDK の パ ッ ケ ー ジ の 完 成 度 を
上げ、一般配布に向けて作業して行きたい。
文
献
[1] M. Hayashi, S. Inoue, M. Douke, N. Hamaguchi, H.
Kaneko, S. Bachelder, M. Nakajima: “T2V: New
Technology of Converting Text to CG Animation” ,
ITE Transactions on Media Technology and
Applications, Vol.2, No.1, pp.74-82 (2014)
[2] M. Hayashi, "TVML (TV program Making
Language) - Automatic TV Program Generation from
Text-based Script -", Proceedings of Imagina'99,
pp.119-133, (1999)
[3] 道 家 , 林 , 牧 野 :「 TVML を 用 い た 番 組 情 報 か ら
図 5
インタラクティブクイズ番組
の ニ ュ ー ス 番 組 自 動 生 成 」映 像 情 報 メ デ ィ ア 学 会
誌 No.7, pp.1097-1103, (2000)
[4] M. Hayashi, S. Bachelder, M. Nakajima: "Text
Generated TV - A New Television System Delivering
Visual Content Created Directly by Text -",
Proceedings of IWAIT2014, (2014)