TVML
チュートリアル
October, 2015
林正樹
TVMLの例
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/
TVMLの諸規則
camera: ( name = CamA, x=5.0, vangle=60.0 )
・パラメータは順不同
・パラメータを省略するとデフォルト値が採用される
・必須パラメータは必ず指定する
・コメントアウトは、// または /* */ が使える
TVML on Unityの座標系
左手系です
y
y
z
x
x
同じ
z
こう考えた方が分かりやすい
zが手前向き、xが左
y
y
z
z
x
x
TVML on Unityの回転系
左回り(反時計回り)です
y
正の方向
x
z
チュートリアル
• これ以降は、実際にTVMLを入力して、再生して試す、チ
ュートリアルです。
• これは、TvmlSDK1.1に付属するTVML Playerで行ってく
ださい。
• T2V Builderではところどころ動きません。
カメラ
以下を入力してください
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: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)
注: 下記のambientは現在ききません。
light:ambient(name=LA, r=1.0, g=1.0, b=1.0)
セット
以下を入力してください
set:openmodel( name=Set
, filename="Setprops/RankingSet_cyber/cyberspace")
set:position(name=Set, x=0, y=0, z=0)
課題1
カメラを動かしてみよう
複数カメラを設置して切り替えよう
複数キャラクターを用意しよう
プロップ
以下を入力してください
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="Images/hadakadenkyu", hsize=1.0, vsize=1.0)
prop: position( name=Pic, x=-1.3, y=1.0, z=-3.0, scale=1.0)
ムービー
以下を入力してください
movie:open(name=MOVIEDATA_0, filename="Movies/SalvadorDali")
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 )
ドローイング
以下を入力してください
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 )
課題2
3Dオブジェクトを表示して移動させよう
3D画像を表示して移動させよう
Drawingでテキストを表示して移動させよう
表示したテキストの色を変えよう
キャラクタを動かす: しゃべり
以下を入力してください
character: talk( name=A, text="マイコです" )
字幕指定
character: talk( name=A, text="マイコです"
, caption="maikoです")
キャラクタを動かす: アテレコ
以下を入力してください
character: talkfile( name=A, filename=Sounds/konafuni
, 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:bow( name=A)
キャラクタを動かす: 対象物を見る
以下を入力してください
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: jump( name=A, x=0.0, z=0.0, d=0.0)
キャラクタを動かす: 震える
以下を入力してください
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)
wait(time=1.0)
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:definepose( name=A, pose=banzai
, joint=RightUpperArm, rx=-130, ry=20)
character:definepose( name=A, pose=banzai
, joint=LeftUpperArm, rx=-130, ry=-20)
character:definepose( name=A, pose=banzai
, 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)
音を鳴らす
以下を入力してください
sound:open( name=bgm, filename="Sounds/news")
sound:play( name=bgm)
音声ミキサー(レベル変え)
以下を入力してください
sound: open( name=bgm
, filename="Sounds/Internationale-ru")
sound: level( name=bgm, level=0.1)
sound: play( name=bgm)
wait(time=5.0)
sound: level( name=bgm, level=0.5)
wait(time=5.0)
sound: level( name=bgm, level=1.0)
音声ミキサー(フェード)
以下を入力してください
sound: open( name=bgm
, filename="Sounds/Internationale-ru")
sound: play( name=bgm)
wait(time=8.0)
sound: fade( name=bgm, level=0.5 )
wait(time=8.0)
sound: fade( name=bgm, level=0.0 )
コマンド同時実行
以下を入力してください
charactet: bow(name=A, wait=no)
charactet: bow(name=B)
その二
character:bow( name=A, wait=no)
character:talk( name=A, text="こんにちは" )
課題3
キャラクターをカメラ目線のまま歩かせる
ジャンプに効果音をつけよう
ダウンロード

camera