TVMLチュートリアル May, 2016 1.

Slides:



Advertisements
Similar presentations
シミュレーション演習 G. 総合演習 ( Mathematica 演 習) システム創成情報工学科 テキスト作成: 藤尾 光彦 講義担当: 尾下 真樹.
Advertisements

特別支援教育で使える PowerPoint の活用法 研修 最低限必要なスキルはこれでバッチリ!! ICT 活用支援員 高松 崇.
プレゼンテーションからホームページ作成まで 情報システム入門 A 総合情報センター 非常勤講師 :中山 進.
数学のかたち 数学解析の様々なツール GRAPSE編 Masashi Sanae.
専門ゼミⅠ 南ゼミ 特別授業 2002年5月24日 金曜日 4限目 今泉 裕隆.
画像ファイルの形式とデータサイズ.
ペルソナウェア2002 キャラクターメーカーで キャラクターを作ろう
プレゼンテーションからホームページ作成まで
PowerPoint活用マニュアル スライドショーにせず、そのまま見てね。.
第11回JavaScriptゼミ セクション8-2 発表者 直江 宗紀.
TV会議 セットと使用法 神奈川技術士会
Microsoft PowerPoint98 Netscape Communicator 4.06[ja]
Flashプレイヤーを使った動画配信 情報工学科 宮本 崇也.
東京工科大学 コンピュータサイエンス学部 亀田弘之
TVML SDK on UNITY チュートリアル
3DCGコンテンツの基礎 第5回授業:最終課題制作
デスクトップを画像として保存する(1) ① デスクトップの画像をクリップボードへコピーする。
プレゼンテーション用ソフトウェア Impress
情報処理 教材 プレゼンテーションソフト PowerPoint 高知大学 共通教育 理学部 対象 塩田
PowerPoint の基本操作 情報機器の操作(e) 2016.
Applet 岡部 祐典 鈴木 敬幸.
第6回 Flashによるゲームの作成 04A2029           古賀慎也.
情報処理 第13回の教材 プレゼンテーションソフト PowerPoint 高知大学 共通教育 理学部 対象 担当:塩田 ここはメモを書く欄。
数値計算及び実習 第3回 プログラミングの基礎(1).
AkaminePlayerについて 04a2049 中村まりえ.
TV program Making Language
プレゼンテーション用ソフトウェア Impress
心理学情報処理法Ⅰ コンピュータにおけるデータ表現 マルチメディアとコンピュータ.
画像ファイルの形式とデータサイズ.
専門ゼミⅠ 南ゼミ 特別授業③ 2002年6月7日 金曜日 4限目 今泉 裕隆.
Java言語による 「DTM アプリケーション」の開発 ~Java Sound API の利用~
プロジェクト演習Ⅱ インタラクティブゲーム制作
クラシック音楽普及プロジェクト KG:mao B3 wakutin.
~ 合成音声を活用したスライド動画ソフト~ リアルナレーターズ2 のご紹介 主な機能
プロセッシング入門1 初歩のプログラミング.
第11回 オブジェクト(ベクトル,頂点,面)のクラス化とフラットシェーディング
情報学部 プログラミング体験教室 (初級編)
スクリプト言語を用いたPHITSの連続実行
TVML SDK on UNITY チュートリアル
Microsoft PowerPoint Netscape Communicator
Unity, C# シーン移動と1人称視点.
背景に画像を設定する 画像の準備 2000/2003などの場合 2007の場合
9.1 DOMの概要 9.2 DOMプログラミングの基礎 9.3 DOMのプログラミング例
Windows PowerShell Cmdlet
独習XML 第2章 XML文書の構成要素 2.1 XMLの文字と文字列 2.2 コメント
OpenGLライブラリを用いた3次元フラクタルの描画
PowerPoint の基本操作 情報機器の操作(e).
画像ファイルの形式とデータサイズ.
タグを使ったウェブページ作成 兵庫県立伊丹北高等学校 佐藤 勝彦.
デジタル画像とC言語.
アニメーション 年 組 番 氏名 スクラッチ テキスト1 座標と初期値 スクラッチはだれでも簡単に使えるプログラミング言語です。
・タイプ別のフレームワーク ・デジタルTips(小技テクニック情報)
プロジェクト演習Ⅱ インタラクティブゲーム制作
フォトムービーを作ろう 【初めの準備】 ■ 写真を10枚くらい用意をして、マイドキュメントの 中にファイルを作り保存をしておこう
情報処理 第13回の教材 プレゼンテーションソフト PowerPoint 高知大学 共通教育 理学部 対象 担当教員 : 塩田
C言語 はじめに 2016年 吉田研究室.
統計ソフトウエアRの基礎.
第2回 開発環境とゲーム 05A1030 佐々木 和也.
図や表の作成 ここでの目標.
情報処理 II 第12回の教材 プレゼンテーションソフト PowerPoint 高知大学理学部 数理情報科学科1回生い組対象 担当:塩田教官
標準入出力、変数、演算子、エスケープシーケンス
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
Molecular Devices Japan
C言語を用いたゲームの作成 種田研究室 05A2055 松井和幸.
X Window System 牧之内研 博士3年 木村健一郎.
「TVML技術と自動番組制作」 メディアサイエンス専攻大学院特別講義 林正樹 (Masaki Hayashi)
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります.
第0.5回: ~Unity Editorの操作方法~
Microsoft PowerPoint Netscape Communicator
Presentation transcript:

TVMLチュートリアル May, 2016 1

チュートリアル これ以降は、実際にTVMLを入力して、再生して試す、チュートリアルです。 これは、http://tvmllab.comのダウンロードページからTVML Player Ver1.2.2をダウンロードして、それを使ってください。

TVMLの概要

TVMLとは? TV program Making Language の略 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プレイヤー TVMLの台本を読み込み、リアルタイムで番組を作り出すソフト

台本(スクリプト)の読み込みと実行 実行 ファイル選択 台本はどこに置いてもよい

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言語仕様 TVML言語仕様Version 3.1 http://wjis76df.sakura.ne.jp/t2vlab/spec/tvmlspec31/ 9

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

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

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

キャラクターの表示と動作

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

キャラクタの表示 スライドでは見やすさのために改行しているが、文の途中に改行コードを入れてはいけない character: openmodel( model=maiko , filename="Characters\maiko\maiko") character: casting( name=A, model=maiko ) character: setvoice(name=A , voicetype=VoiceSommelier:voice07) character: position(name=A, x=0.0, y=0.0, z=0.0) character: visible( name=A, switch=on )

照明の配置 light:ambient(name=LA, r=1.0, g=1.0, b=1.0) light:point(name=LP, x=0, y=1, z=1) light:point(name=LP, x=0, y=1, z=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/RankingSet_cyber/cyberspace") set:position(name=Set, x=0, y=0, z=0)

キャラクターを喋らせる character: talk( name=A, text=“ひろめです” , caption=“ヒロメです")

キャラクターを動かす - 1 ・おじぎ character: action(name=A, action=bow) ・手を振らせる character: action(name=A, action=handwave) ・目を輝かせる character: action(name=A, action=brilliant) Character:action( )でどういうアクションが定義されているかはキャラクタごとに異なる (UnityのAssetsでキャラクタにあらかじめアタッチされているアニメーションが使える)

キャラクターを動かす - 2 ・右手で示す character: action(name=A, action=indicate_r) ・ジャンプ character:jump( name=A, x=0, y=0, z=0, mode=relative) Character:action( )でどういうアクションが定義されているかはキャラクタごとに異なる (UnityのAssetsでキャラクタにあらかじめアタッチされているアニメーションが使える)

課題1 カメラをキャラクターの胸から上を近くから 映すように、配置しよう キャラクターに 「こんにちは、私の名前はヒロメです。」 と喋らせましょう キャラクターに手を振らせよう

課題1(追加) カメラを動かしてみよう 複数カメラを設置して切り替えよう 複数キャラクターを用意しよう

答え - 1 camera:position(name=CamA, x=0.0, y=0.7, z=0.6, ry=180)

答え - 2 character: talk( name=A, text=“私の名前はヒロメです。" )

答え - 3 character: action(name=A, action="handwave", wrapmode=once, layer=1)

画像の表示や移動・音楽の再生

プロップ(小道具) 画像や3Dモデルなどを表示するためのイベント 大きさや位置を変更可能 prop: openmodel(name=block_cyber1, filename=Setprops/RankingSet_cyber/block_cyber) prop: position( name=block_cyber1 , x=1.3, y=1.0, z=0.0, scale=1.0)

プロップ(イメージプレート) prop: openimageplate(name=Pic  , filename=“./datafiles/hadakadenkyu.jpg", hsize=1.0, vsize=1.0) prop: position( name=Pic, x=-1.3, y=1.0, z=-3.0, scale=1.0)

プロップの非表示 wait(time=2s) prop: visible( name=Pic, switch=off )

プロップの移動 prop: move(name=block_cyber1, x=1.2, y=0.7, z=-1.0, tspeed=1)

BGMの再生 sound:open( name=bgm, filename=“./datafiles/news.wav") sound:play( name=bgm) wait(time=5s) sound:stop( name=bgm )

動画の再生 movie:open(name=MOVIEDATA_0 , filename=“./datafiles/Salvador-Dali-Gala-Born-From-An-Egg.ogv ") prop:openmovieplate(name=MOVIEPLATE_0 , moviename=MOVIEDATA_0, hsize=2.0, vsize=1.5 ) prop:position(name=MOVIEPLATE_0, x=0, y=1.0, z=-3.0, scale=2.7 ) movie:play(name=MOVIEDATA_0, wait=no) prop:visible(name=MOVIEPLATE_0, switch=on) wait(time=60s) prop:visible( name= MOVIEPLATE_0, switch=off ) ムービー再生はprop:openmovieplate()でしか使えない

描画(ドローイング) 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="./datafiles/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 )

課題2 3Dモデルをキャラクターの足元に表示させよう 左端に表示させた画像(dogs.png)を右端に 移動させよう(画像の高さは自由です)

答え - 1 prop:openmodel(name=block_cyber1, filename=Setprops/RankingSet_cyber/block_cyber) prop: position( name=block_cyber1, x=0, y=-0.01, z=0)

答え - 2 prop:openimageplate( name=pic1, filename="./datafiles/dogs.png", hsize=1.55, vsize=1.1) prop:position( name=pic1, x=1, y=1.3, z=-1,scale=1.5 ) prop: move(name=pic1, x=-1, y=1.3, z=-1, tspeed=1,wait=no)

答え - 3 prop:visible( name=pic1, switch=off ) prop:visible( name=block_cyber_stand, switch=off )

課題2 3Dオブジェクトを表示して移動させよう 3D画像を表示して移動させよう Drawingでテキストを表示して移動させよう 表示したテキストの色を変えよう

待機コマンドやコマンドの応用

コマンドの同時実行 character: talk( name=A, text=“バイバイ" , wait=no) character: action(name=A, action=handwave, wrapmode=once, layer=1, wait=yes)

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

セットの変更 set:change( name=NULL ) prop:openimageplate(name=set, filename="./datafiles/set2.png", hsize=3, vsize=2, aspect=free) prop:position( name=set, x=0, y=1, z=-0.9, scale=1.5)

画像のattach prop:openimageplate( name=t1, filename="./datafiles/cat.png", hsize=0.4, vsize=0.6) prop: attach(name=t1, target=A, joint=Head, y=0.15 ,z=0.158,switch=on,scale=1)

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

ファイルフォーマット ■サウンドファイル 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の中では効かない(バグ) ■直接ファイル指定できないデータ(後述) キャラクタ、セット、プロップ、モーションキャプチャーデータ (character:mocap)

キャラクタ、セット、プロップデータ これらCGデータは外部ファイルとして参照できない。TVML Playerにあらかじめリソースとして含まれているものが利用できるだけである。以下にVer1.2.2にバンドルされているものをあげる。 キャラクタ: 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 キャラクタリストはパワポの最後の付録を参照のこと。

モーションキャプチャーデータ 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

キャラクターを動かす (補足) アテレコ 歩く character: walk( name=A, x=1.0, z=0.0) 歩数指定 character: talkfile( name=A, filename=“./datafiles/konafuni.wav”, caption="こんな風に録音した音声でもしゃべれます" ) 歩く character: walk( name=A, x=1.0, z=0.0) 歩数指定 character: walk( name=A, step=3)

キャラクターを動かす (補足) 立つ・座る character: sit( name=A) wait(time=1.0) character: stand( name=A) ターン character:turn( name=A, d=-90)

キャラクターを動かす (補足) 見る character: look(name=A, target=camera ) 対象物 camera:move(name=CamA, x=1.0, y=1.0, z=2, ry=180) camera:move(name=CamA, x=0.0, y=3.0, z=2, ry=180, rx=40) camera:move(name=CamA, x=0.0, y=1.0, z=2, ry=180, rx=0) character: gaze( name=A, rx=-30, ry=70) 指定方向

キャラクターを動かす (補足) 震える character: shake( name=A, switch=on) wait(time=3.0) character: shake( name=A, switch=off) 口を開ける character:openmouth( name=A, switch=on) wait(time=1.0) character:openmouth( name=A, switch=off)

キャラクターを動かす (補足) 表情変化 character: expression( name=A, type=sad) wait(time=1.0) character: expression( name=A, type=happy) character: expression( name=A, type=neutral)

キャラクタを動かす: アクションを再生する キャラクタを動かす: アクションを再生する character: action(name=A, action=hop) character: action(name=A, action=shock) character: action(name=A, action=bye) Character:action( )で動かすときは、 UnityのAssetsでキャラクタにあらかじめアタッチされているアニメーションが使えるのみである。したがって、どういうアクションが定義されているかはキャラクタごとに異なる。 上述は、maikoとstewardで定義されているアニメーションの例である。

キャラクタを動かす: ポーズ 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)

音声ミキサー(レベル変え) sound: open( name=bgm , filename="./datafiles/Internationale-ru.ogg") sound: level( name=bgm, level=0.1) sound: play( name=bgm) wait(time=5.0) sound: level( name=bgm, level=0.5) sound: level( name=bgm, level=1.0)

音声ミキサー(フェード) sound: open( name=bgm , filename ="./datafiles/Internationale-ru.ogg") sound: play( name=bgm) wait(time=8.0) sound: fade( name=bgm, level=0.5 ) sound: fade( name=bgm, level=0.0 )

課題3 キャラクターの動作コマンド「brilliant」(目を輝 かせる)と「素晴らしい」というセリフを同時に実 行させた1秒後に、動作コマンド「ジャンプ」を実 行させよう 表示されているセットを消して、dogset.pngの 画像をキャラクターの後ろに大きく表示させよう キャラクターに犬のお面 dog.png をつけてみ よう

答え1 character: talk( name=A, text=“素晴らしい", wait=no) character: action(name=A, action=brilliant, wrapmode=once, layer=1, wait=yes) wait(time=1s) character:jump( name=A, x=0, y=0, z=0, mode=relative, wait=yes)

答え2 set:change( name=NULL ) prop:openimageplate(name=set, filename="./datafiles/dogset.png", hsize=3, vsize=2, aspect=free) prop:position( name=set, x=0, y=1, z=-0.9, scale=1.5)

答え3 prop:openimageplate( name=t1, filename= "./datafiles/dog.png", hsize=0.4, vsize=0.6) prop: attach(name=t1, target=A, joint=Head, y=0.15 ,z=0.158,switch=on,scale=1)

課題3 キャラクターをカメラ目線のまま歩かせる ジャンプに効果音をつけよう

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

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

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