「TVML技術と自動番組制作」 メディアサイエンス専攻大学院特別講義 林正樹 (Masaki Hayashi)

Slides:



Advertisements
Similar presentations
特別支援教育で使える PowerPoint の活用法 研修 最低限必要なスキルはこれでバッチリ!! ICT 活用支援員 高松 崇.
Advertisements

クリックすると、 [SourceEditor2.0] の インストール / 更新・起動 クリックすると、 [MarkReader2.0] の インストール / 更新・起動 クリックすると、 [MarkReader2.0] の インストール / 更新・起動 SQS ホームページ
目次 このドキュメントについて・・・前提条件……………………………………… 2
情報基礎演習I(プログラミング) 第9回 6月22日 水曜5限 江草由佳
BBT大学 Ruby on Rails開発環境セットアップマニュアル
画像ファイルの形式とデータサイズ.
プログラムNo.:論文タイトル(必ず書いてください)
ペルソナウェア2002 キャラクターメーカーで キャラクターを作ろう
エクセル(1)の目次 起動法、ブック、シート、セル ブックの開き方 エクセル画面 マウスポインターの種類 シート数の調節 データの入力法
TV会議 セットと使用法 神奈川技術士会
Microsoft PowerPoint98 Netscape Communicator 4.06[ja]
静岡大学大学院理工学研究科 阿部 秀尚 Weka入門(セットアップ編) 静岡大学大学院理工学研究科 阿部 秀尚
TVML SDK on UNITY チュートリアル
1 インストール・起動する 「SQS」で検索 SQSホームページ 動作環境 JavaSE 6以上 (JRE6)
メディア基礎演習 3Dコンテンツの基礎 第5回:制作作業.
3DCGコンテンツの基礎 第5回授業:最終課題制作
デスクトップを画像として保存する(1) ① デスクトップの画像をクリップボードへコピーする。
デジタルポートフォリオ作成支援ツール PictFolio 使用マニュアル
プレゼンテーション用ソフトウェア Impress
PCの情報を得る - 「システム情報」 ①「スタート」→「すべてのプログラム」→「アクセサリ」→「システム ツール」→「システム情報」とクリックする。 ②左欄の項目を選択すると、右欄に情報が表示される。
ウェブページ制作の基礎 タグの直接入力によるウェブページの制作 次のスライドへ進んだり,戻ったりしたい時は,右下のボタンをクリック。 次へ.
心理学情報処理法Ⅰ やってみよう:Wordの起動.
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
エクセル(1)の目次 起動法、ブック、シート、セル ブックの開き方 エクセル画面 マウスポインターの種類 シート数の調節 データの入力法
TV program Making Language
プレゼンテーション用ソフトウェア Impress
デスクトップを画像として保存する(1) ① デスクトップの画像をクリップボードへコピーする。
15分でわかる RefWorks 基本操作.
F5 を押すか、または [スライド ショー] > [最初から] をクリックして、コースを開始してください。
画像ファイルの形式とデータサイズ.
専門ゼミⅠ 南ゼミ 特別授業③ 2002年6月7日 金曜日 4限目 今泉 裕隆.
アプリケーション共有機能 〈参考〉 (図1) (図2)
ビューとコントローラ.
Java言語による 「DTM アプリケーション」の開発 ~Java Sound API の利用~
プロジェクト演習Ⅱ インタラクティブゲーム制作
湘南工科大学 2013年4月23日 プロジェクト実習A アドベンチャーゲームを作ろう 第3回 湘南工科大学情報工学科 准教授 小林 学.
【トップページ-TOPICSの登録・編集】
TVMLチュートリアル May,
音声処理ソフトPraatの使い方.
情報学部 プログラミング体験教室 (中級編)
情報学部 プログラミング体験教室 (初級編)
スクリプト言語を用いたPHITSの連続実行
TVML SDK on UNITY チュートリアル
Microsoft PowerPoint Netscape Communicator
Unity, C# シーン移動と1人称視点.
オープンソフトウェア利用促進事業 第3回OSSモデルカリキュラム導入実証
画像ファイルの形式とデータサイズ.
単語登録(1) ◎MS-IMEの「単語登録」に、単語、語句、記号など自分がよく使うものを登録しておくと、便利である。
デジタル画像とC言語.
Processing使用の準備.
アニメーション 年 組 番 氏名 スクラッチ テキスト1 座標と初期値 スクラッチはだれでも簡単に使えるプログラミング言語です。
情報スキル活用 第2週 基礎技術ー2 : Webページの基本形.
JXTA Shell (1) P2P特論 (ソフトウェア特論) 第4回 /
7-0.SWORD Client for WEKO インストールマニュアル Version 2.2
プロジェクト演習Ⅱ インタラクティブゲーム制作
フォトムービーを作ろう 【初めの準備】 ■ 写真を10枚くらい用意をして、マイドキュメントの 中にファイルを作り保存をしておこう
コンピュータと情報 第4回 ワードの使い方.
C言語 はじめに 2016年 吉田研究室.
高度プログラミング演習 (01).
図や表の作成 ここでの目標.
情報処理 II 第12回の教材 プレゼンテーションソフト PowerPoint 高知大学理学部 数理情報科学科1回生い組対象 担当:塩田教官
回転する歯車 プレゼンテーション プレゼンテーションのスライドショーを開始 (F5 キー) すると、アニメーションが再生されます。
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
Molecular Devices Japan
単語登録(1) ◎MS-IMEの「単語登録」に、単語、語句、記号など自分がよく使うものを登録しておくと、便利である。
例題のプログラムを通して JavaScriptの仕組みを理解することとします。
「コース課題」 メディアサイエンス専攻大学院特別講義 林正樹 (Masaki Hayashi)
7-Zipのインストール (Windows 10)
第1章 文字の表示と計算 printfと演算子をやります.
メモリアルボックス(回線不要)マニュアル
Presentation transcript:

「TVML技術と自動番組制作」 メディアサイエンス専攻大学院特別講義 林正樹 (Masaki Hayashi) Tokyo University of Technology June, July, 2019 メディアサイエンス専攻大学院特別講義 「TVML技術と自動番組制作」 林正樹 (Masaki Hayashi) Department of Game Design Uppsala University, Campus Gotland

Course Home page http://hayashimasaki.net/TUT

Masaki HAYASHI(林正樹), PhD. Self introduction Masaki HAYASHI(林正樹), PhD. Associate Professor (Docent) Department of Game Design, Faculty of Arts, Uppsala University, Campus Gotland 1986 - 2006 NHK Science and Technology Research Laboratories (20 years) 2006 - 2011 Game and IT companies 2012 - Uppsala University (100%) Astrodesign, Inc. (20%) Engineering Researcher on Content

TVML ワークショップ 4

チュートリアル TVML Playerを起動して、実際にTVMLを入力して、再生して試す、チュートリアルです コースHPのhayashimasaki.net/TUTの「TVML Player Version 1.5 for Windows Download」をクリックしてzipファイルをダウンロードし、解凍して好きなところに置きます(例:デスクトップ) TVMLPlayer1.5フォルダのTVMLPlayer.exeをダブルクリックしてTVML Playerを起動します。

TVMLの概要

TVMLとは? TVMLの台本:例 character: openmodel( model=modelA, filename=Characters/maiko/maiko) character: casting( name=A, model=modelA ) character: setvoice(name=A, voicetype=VoiceSommelier:Voice07) character: visible( name=A, switch=on ) TV program Making Language の略 テレビ番組を1本のテキストに記述できるテキストベースの言語 TVMLプレイヤーで即座に再生することが出来る ワープロなどでTVMLで台本を書くだけで、自分だけのテレビ番組を作れる TVMLプレイヤーには、番組作りに必要な要素が備わっている

TVMLプレイヤー 再生スクリーン 853 x 480 = YouTubeのサイズ 再生スクリーンサイズは固定(16:9) 全画面表示もない 再生スクリーンサイズは固定(16:9) 全画面表示もない (ただし、TVMLエンジン自体は可変サイズなのでTVML SDKを使ってコーディングすれば可能) 再生スクリーン 853 x 480 = YouTubeのサイズ 音量 再生 停止 早送り(TVML1行ごとにスキップ。巻戻しは無い) ファイル選択(TVML台本を指定する)

台本の編集と再生 TVML台本は通常のテキストエディターで編集する。 台本ファイルはUTF8なので、多言語エディターがよい(例:notepad++) TVMLScripts以下にサンプルスクリプトがある 台本を保存したら再生ボタンを押す。再選択する必要はない。

TVMLの例 camera: closeup ( target=Bob ) CGキャラクタBobにカメラをクローズアップし「こんにちは」と言わせる camera: closeup ( target=Bob ) character: talk ( name=Bob, text = ”こんにちは” ) ・TVML はイベント駆動 ・上から順に実行 ・プログラミング言語ではない

TVMLのイベント書式 character: talk ( name = Bob, text = "Hello" ) イベントタイプ コマンド パラメータ character camera set prop light movie super drawing sound cgenv コマンド実行に必要な情報を記述 ・イベントの無いコマンドのみの「ダイレクトコマンド」がいくつかある 例: wait ( time=3.0 ) setcaption ( border=on )

TVML言語仕様 http://tvmllab.com/tvmlspec TVML言語仕様Version 3.1 英語版 http://tvmllab.com/tvmlspec/eng 12

TVMLの諸規則 camera: move( name = CamA, x=5.0, vangle=60.0 ) パラメータは順不同 パラメータを省略するとデフォルト値が採用される 必須パラメータは必ず指定する コメントアウトは、// または /* */ が使える 改行で区切られた一行がひとつのイベントに対応する(途中で改行を入れてはいけない)

TVMLの座標系 左手系です y y z x x 同じ x y z y z z こう考えた方が分かりやすい zが手前向き、xが左 x

TVMLの回転系 左回り(反時計回り)です y 正の方向 x z

チュートリアル

カメラ 以下を入力してください camera:position(name=CamA, x=0.0, y=1.0, z=2.0, ry=180) camera:switch(name=CamA) x z キャラは基本z軸の方を向いている カメラを180度回転させてキャラを捉えている 上面図

キャラクタ 以下を入力してください character: openmodel( model=MAIKO , filename="Characters/maiko/maiko") character: casting( name=A, model=MAIKO ) character: setvoice(name=A , voicetype=VoiceSommelier:Voice08) character:position(name=A, x=0, y=0, z=0, scale=1)

照明 以下を入力してください light:ambient(name=LA, r=1.0, g=1.0, b=1.0) light:point(name=LP, x=0, y=1, z=1) light:flat(name=LF, vx=-1, vy=-1, vz=-1) light:spot(name=LS, x=0.2, y=1, z=0.2 ,vx=-1, vy=-1, vz=-1)

セット 以下を入力してください set:openmodel( name=Set    , filename="Setprops/spaceship/spaceship")

waitコマンド 以下を入力してください wait(time=2.0) camera:position(name=CamA, x=0.0, y=1.0, z=5.0, ry=180) camera:position(name=CamA, x=0.0, y=1.0, z=2.0, ry=180)

課題1 カメラを連続的に動かしてみよう 複数カメラを設置して切り替えよう

しゃべり 以下を入力してください character: talk( name=A, text="マイコです" ) 字幕指定 , caption="maikoです")

声を変える 以下を入力してください character: setvoice(name=A , voicetype="AquesTalk2:aq_rb2") 英語 character: setvoice(name=A, voicetype="FLite:Voice01" , pitch=0.85, volume=1.2) character: talk( name=A, text="any english text" )

課題2 長いセリフをしゃべらせてみよう 複数キャラを出して会話をさせてみよう

プロップ 以下を入力してください prop: openmodel(name=sofa , filename=Setprops/sofa/sofa) prop: position( name=sofa, x=1.3, y=1.0, z=0, scale=1)

課題3 プロップのソファーをマイコが座りそうな位 置へ移動する マイコをうまいこと座らせるには?

キャラクタを動かす: 立つ、座る 以下を入力してください character: sit( name=A) wait(time=1.0) キャラクタを動かす: 立つ、座る 以下を入力してください character: sit( name=A) wait(time=1.0) character: stand( name=A)

コマンド同時実行 以下を入力してください charactet: bow(name=A) charactet: bow(name=B) 同時におじぎ charactet: bow(name=A, wait=no)

コマンド同時実行 以下を入力してください character:bow( name=A, wait=no) character:talk( name=A, text="こんにちは" )

待機コマンド (waitアンダーバーコマンド) character: talk( name=A, text=“それじゃあまた次回ね、バイバーーーイ", wait=no) wait( time=1.6 ) character: action(name=A, action=handwave) character: wait_talk ( name=A )

キャラクタを動かす: 対象物を見る 以下を入力してください character: look(name=A, target=camera ) キャラクタを動かす: 対象物を見る 以下を入力してください character: look(name=A, target=camera ) character: look(name=B, target=camera ) character: look(name=A, target=B ) character: look(name=B, target=A )

キャラクタを動かす: 歩き 以下を入力してください character: walk( name=A, x=1.0, z=1.0) 歩数指定 キャラクタを動かす: 歩き 以下を入力してください character: walk( name=A, x=1.0, z=1.0) 歩数指定 character: walk( name=A, step=10)

キャラクタを動かす: アクションを再生する キャラクタを動かす: アクションを再生する 以下を入力してください character: action(name=A, action=brilliant) character: action(name=A, action=jump) character: action(name=A, action=next) character: action(name=A, action=swing) character: action(name=A, action=hop) character: action(name=A, action=shock) character: action(name=A, action=bye) 注: maikoとstewardのみです

TV演出に必要なその他の機能

プロップ(イメージプレート) 以下を入力してください prop: openimageplate(name=Pic , filename="./datafiles/dogset.png", hsize=1.024, vsize=0.682) prop: position( name=Pic, x=-1.0, y=1.0, z=-1.0, scale=1.5)

ムービー 以下を入力してください movie:open(name=MOVIEDATA_0, filename=./datafiles/dali.ogv) prop:openmovieplate(name=MOVIEPLATE_0 , moviename=MOVIEDATA_0, hsize=2.0, vsize=1.5 ) prop:position(name=MOVIEPLATE_0, x=0, y=1.5, z=-1.0, scale=1 ) movie:play(name=MOVIEDATA_0, wait=no) prop:visible(name=MOVIEPLATE_0, switch=on) wait(time=20) prop:visible( name= MOVIEPLATE_0, switch=off )

ドローイング 以下を入力してください drawing: openbase ( name=BASE, x=20%, y=20%, layer=99, color=000000 ) drawing: settext ( name=TEXT1, parent=BASE , text="<font r='1.0' g='1.0' b='1.0' size='30%'> <border r='1.0' g='0.0' b='0.0' width='2'>アートですね</border></font>" , x=0%, y=0%, refmode=center, height=50%, width=50% , overtext=clip, basecolor=transparent ) drawing: setimage(name=PICT1, parent=BASE, filename="./demo/book.jpg" , refmode=center, width=50%,height=50%, x=0%, y=0%, aspect=fit) drawing: display ( name=BASE, switch=on ) wait ( time=5.0) drawing: display ( name=BASE, switch=off )

音を鳴らす 以下を入力してください sound:open( name=bgm, filename=./datafiles/musicsample.wav) sound:play( name=bgm)

音声ミキサー(レベル変え) 以下を入力してください sound:open( name=bgm, filename=./datafiles/musicsample.wav) sound:level( name=bgm, level=0.02) sound: play( name=bgm) wait(time=5.0) sound: level( name=bgm, level=0.2) sound: level( name=bgm, level=1.0)

音声ミキサー(フェード) 以下を入力してください sound:open( name=bgm, filename=./datafiles/musicsample.wav) sound: play( name=bgm) wait(time=8.0) sound: fade( name=bgm, level=0.0 )

キャラクタを動かす: ターン 以下を入力してください character:turn( name=A, d=-90)

キャラクタを動かす: 指定方向を見る 以下を入力してください character: gaze( name=A, rx=-30, ry=70)

キャラクタを動かす: ジャンプ 以下を入力してください キャラクタを動かす: ジャンプ 以下を入力してください character: jump( name=A, x=0.0, z=0.0, d=0.0)

キャラクタを動かす: 震える 以下を入力してください character: shake( name=A, switch=on) キャラクタを動かす: 震える 以下を入力してください character: shake( name=A, switch=on) wait(time=3.0) character: shake( name=A, switch=off)

キャラクタを動かす: 口を開ける 以下を入力してください character:openmouth( name=A, switch=on) キャラクタを動かす: 口を開ける 以下を入力してください character:openmouth( name=A, switch=on) wait(time=1.0) character:openmouth( name=A, switch=off)

キャラクタを動かす: 表情を変える 以下を入力してください character: expression( name=A, type=sad) キャラクタを動かす: 表情を変える 以下を入力してください character: expression( name=A, type=sad) wait(time=1.0) character: expression( name=A, type=happy) character: expression( name=A, type=neutral)

キャラクタを動かす: ポーズ 以下を入力してください character:definepose( name=A, pose=banzai キャラクタを動かす: ポーズ 以下を入力してください character:definepose( name=A, pose=banzai , joint=RightUpperArm, rx=-130, ry=20) , joint=LeftUpperArm, rx=-130, ry=-20) , joint=Chest, rx=-30) character:definepose( name=A, pose=upper , joint=Jaw, rx=30) character:pose( name=A, pose=banzai) wait(time=1.0) character:pose( name=A, pose=default)

キャラクタを動かす: 移動させる 以下を入力してください キャラクタを動かす: 移動させる 以下を入力してください character: move(name=A, x=1.0, y=1.0, z=0.0, ry=45)

その他

ファイルの場所指定 画像ファイル、音声ファイル、ムービーファイルのパス指定は次の3種。 絶対バスでの指定 (例: C:\sozai\abc.jpg) TVMLスクリプトの場所からの相対パス (例: ./datafiles/news.wav) URL指定(例: http://hayashimasaki.net/XXX.jpg)

ファイルフォーマット ■サウンドファイル TVMLコマンド: sound:open() 使えるフォーマット: wav, ogg ■画像ファイル TVMLコマンド: prop:imageplate(), drawing:setimage() 使えるフォーマット: jpg, png ■ムービーファイル TVMLコマンド: movie:open() 使えるフォーマット: ogv 注意: ・https://convertio.co/ja/ogv-mp4/で変換したら音もOK ・ムービーはprop:openmovieplate()でしか使えない ・movie:play()はskipscriptの中では効かない(バグ) ■直接ファイル指定できないデータ(次ページで後述) キャラクタ、セット、プロップ、モーションキャプチャーデータ 実はキャラクタ、セット、プロップのCGモデルデータは、Unityのassetbundle形式であれば外部ファイルとして参照できる。ただし、assetbundleの作成はUnityプロジェクトのTVML SDKが必要である。assetbundle使用の例は、TVMLScripts/assetbundletest/ assetbundletest.txtを参照のこと。

キャラクタ、セット、プロップデータ これらCGデータは外部ファイルとして参照できない。TVML Playerにあらかじめリソースとして含まれているものが利用できるだけである。以下にVer1.5にバンドルされているものをあげる。 キャラクタ: character:openmodel(filename="data_path") Characters/Bob/Bob Characters/bucchu/bucchu Characters/Justin/Justin Characters/maiko/maiko Characters/mamimi/mamimi Characters/marigo/marigo Characters/Mary/Mary Characters/Mia/Mia Characters/Mia_old/Mia_old Characters/news_caster/news_caster Characters/pooni/pooni Characters/pooni1/pooni1 Characters/pooni2/pooni2 Characters/pooni3/pooni3 Characters/pooni4/pooni4 Characters/pooni5/pooni5 Characters/pris/pris Characters/steward/steward Characters/yuruneko_black/yuruneko_black Characters/yuruneko_mike/yuruneko_mike Characters/yuruneko_white/yuruneko_white セット: set:openmodel(filename="data_path") Setprops/hall/hall Setprops/newnormal/newnormal Setprops/news_set/news_set Setprops/RankingSet_cyber/cyberspace Setprops/spaceship/spaceship プロップ: prop:openmodel(filename="data_path") Setprops/sofa/sofa Setprops/table/table Setprops/table/chabudai Setprops/book/book Setprops/leaf/leaf Setprops/RankingSet_cyber/block_cyber Setprops/RankingSet_cyber/videoboard_cyber Setprops/RankingSet_cyber/videoframe_cyber Setprops/RankingSet_cyber/messageframe_cyber Setprops/rankingframe_16x9/videoboard_cyber_16x9 Setprops/rankingframe_16x9/videoboard_simple_16x9 Setprops/rankingframe_16x9/videoframe_cyber_16x9 キャラクタリストはパワポの最後の付録を参照のこと。

TUT追加キャラクタ TUTで制作した以下のキャラクタ5体が使える character: openmodel(model=A, filename="Characters/General_F/General_F") character: openmodel(model=B, filename="Characters/General_M/General_M") character: openmodel(model=C,filename="Characters/ForHighschool_F/ForHighschool_F") character: openmodel(model=D,filename="Characters/ForHighschool_M/ForHighschool_M") character: openmodel(model=E, filename="Characters/Koukaton/Koukaton")

声質 日本語: character: setvoice(name=A, voicetype="VoiceSommelier:Voice06") // 日立製"ボイスソムリエ"、落ち着いた大人の女性 character: setvoice(name=A, voicetype="VoiceSommelier:Voice07") //日立製"ボイスソムリエ"、女性、ふつう character: setvoice(name=A, voicetype="VoiceSommelier:Voice08") //日立製"ボイスソムリエ"、若い女性 character: setvoice(name=A, voicetype="VoiceSommelier:Voice09") //日立製"ボイスソムリエ"、男性、朗読調 character: setvoice(name=A, voicetype="VoiceSommelier:Voice10") //日立製"ボイスソムリエ"、若い男性 character: setvoice(name=A, voicetype="OpenJTalk:Voice01 ") // フリーソフト"Open JTalk"、男性 character: setvoice(name=A, voicetype="AquesTalk2:aq_f1c") // Aquestalk2、若い女 character: setvoice(name=A, voicetype="AquesTalk2:aq_f3a") // Aquestalk2、 女性 character: setvoice(name=A, voicetype="AquesTalk2:aq_huskey") // Aquestalk2、 ささやき女性 character: setvoice(name=A, voicetype="AquesTalk2:aq_m4b") // Aquestalk2、 男性 character: setvoice(name=A, voicetype="AquesTalk2:aq_mf1") // Aquestalk2、 若い男 character: setvoice(name=A, voicetype="AquesTalk2:aq_rb2") // Aquestalk2、 子供男 character: setvoice(name=A, voicetype="AquesTalk2:aq_rb3") // Aquestalk2、 ロボット character: setvoice(name=A, voicetype="AquesTalk2:aq_rm") // Aquestalk2、 別女性 character: setvoice(name=A, voicetype="AquesTalk2:aq_robo") // Aquestalk2、 子供ロボット character: setvoice(name=A, voicetype="AquesTalk2:aq_yukkuri") // Aquestalk2、 男の子ゆっくり character: setvoice(name=A, voicetype="AquesTalk2:ar_f4") // Aquestalk2、 女の子 character: setvoice(name=A, voicetype="AquesTalk2:ar_m5") // Aquestalk2、 若い別男 character: setvoice(name=A, voicetype="AquesTalk2:ar_mf2") // Aquestalk2、 男の子 character: setvoice(name=A, voicetype="AquesTalk2:ar_rm3") // Aquestalk2、 別女性 英語: character: setvoice(name=A, voicetype=" FLite:Voice01") //フリーソフト"Flite (festival-lite)"、女性

モーションキャプチャーデータ character:openmocap(filename="data_path")でBVHフォーマットのモーションキャプチャーデータが利用できるが、現時点で外部ファイルとして参照できず、TVML Playerにあらかじめリソースとして含まれている以下のものだけ利用できる。 BVHs/A13 BVHs/A24 BVHs/I05 BVHs/I07 BVHs/I08 BVHs/I09 BVHs/I12 BVHs/I13 BVHs/I14 BVHs/I17 BVHs/I21 BVHs/I25 BVHs/I26 BVHs/I29 BVHs/I34 BVHs/I35 BVHs/natoku_001 BVHs/ojigi_001 BVHs/Sasu_002 BVHs/Sasu_004 BVHs/sit_bow_nao BVHs/sit_byebye_nao BVHs/sit_default_nao BVHs/sit_talk00_nao BVHs/sit_talk01_nao BVHs/sit_talk02_nao BVHs/sit_talk03_cam_nao BVHs/talk_002 BVHs/talk_004

キャラクタリスト(付録)

キャラクタリスト(付録)

キャラクタリスト(付録)