TVML - TVprogram Making Language
TVMLプレイヤーII
TVMLプレイヤーミニ
TVMLとは何か?
TVMLの言語仕様
TVMLの使用例
TVMLの外部制御モード
キャラクター作成講座
TVML番組制作の解説書
そのほかのトピックス
ダウンロード
TV4U (TV for you)
English
TVMLの言語仕様

ここでは、TVML言語仕様の概要を掲載しています。言語仕様の詳細は、TVMLプレイヤーのオンラインマニュアル、または TVML言語仕様(Version 2.0)の完全版 をご覧下さい。

注:TVML Player IIのリリースに伴い、言語仕様をVersion2.0にアップデートしました。TVML Player Ver.1.2までに使われていた言語仕様Version1.1と一部コンパチビリティがありません(文末参照)のでご注意下さい。旧仕様完全版(Version 1.1)こちらをご覧下さい。

TVML言語仕様の概略
  • リターン(LF)で区切られた一行がひとつのイベントに対応する。

  • 行を連結するには\(エンマーク)を用いる。

  • ブランク、タブは無視される。ただし文字列を表すダブルクォーテーションで囲まれたブロックは対象外。

  • 文頭の//はその行をコメントアウトする。

  • /*と*/で囲まれた部分をコメントアウトする。

  • 1行分のイベントを実行し、そのイベントが終了したら次の行に記述されたイベントを実行する。 イベント書式は以下。

イベントタイプ: コマンド名( arg1 = data1, arg2 = data2 , arg3 = data3, ...... )

  • イベントタイプは次の13種類ある
    character, camera, set, prop, light, movie,title, super, sound, narration, drawing, video, cgenv

  • コマンドの引数内のargは順不同

  • コマンド引数においてのdataを省略するとデフォルトが採用され、引数そのものを省略するとカレントの値が採用される

イベントには、以下のウェイトコマンドを持つものがある。ウェイトコマンドはコマンドの動作が終わるまで待ち、終わったらリターンする。ウェイトコマンドの書式は以下。

イベントタイプ: wait_コマンド名( arg1 = data1, arg2 = data2 , arg3 = data3, ...... )

  • コマンドの引数内のargは順不同

  • コマンド引数においてのdataを省略するとデフォルトが採用され、引数そのものを省略するとカレントの値が採用される

イベント以外の制御としてダイレクトコマンドがある。書式は以下。

コマンド名( arg1 = data1, arg2 = data2 , arg3 = data3, ...... )

  • コマンドの引数内のargは順不同

  • コマンド引数においてのdataを省略するとデフォルトが採用され、引数そのものを省略するとカレントの値が採用される

イベントには、イベントが始まってから終わるまでの動作に時間がかかる行為イベント(例:座る)と、状態を変えるだけで経過時間がゼロな状態イベント(例:スーパーオフ)の2種類ある。
ふたつの行為イベントを同時に実行させたい時は、行為イベントのコマンド引数にwait=noをつけ加えて行為イベントのイベント終了待ちをしないようにする。例えばBobとMaryを同時におじぎさせ、おじぎが終わってからスーパーしたいときは次のようになる。

character: bow( name=BOB, wait=no )
character: bow( name=MARY )
super: on( type=text, text = "MARY & BOB" )

したがって、以下のコマンド詳細において、引数中にwait=を持つものは行為イベント、wait=を持たないものは状態イベントである。

TVコマンド一覧

それぞれのコマンドの動作、パラメータなどの詳細についてはTVML言語仕様(Version 2.0)完全版をご覧下さい。

1 CGキャラクターコマンド

1.1 character: casting( name ) CGキャラクタに名前を付ける
1.2 character: openmodel( modelname, filename )  CGキャラクタモデリングデータのオープン
1.3 character: closemodel ( modelname ) CGキャラクタモデリングデータのクローズ
1.4 character: bindmodel( name, modelname ) CGキャラクタへのモデリングデータのバインド
1.5 character: setvoice( name, voicetype ) CGキャラクタのしゃべり声のセットアップ
1.6 character: visible( name, switch ) CGキャラクタの見え、隠れ
1.7 character: position( name, x, y, z, d, posture ) CGキャラクタの配置(立ち位置)
1.8 character: talk( name, text, lipsensitivity, caption, emotion, rate, pitch, intonation, volume, wait ) CGキャラクタのしゃべり
1.9 character: talkfile( name, filename, lipsensitivity, caption, emotion, wait ) あらかじめ録音したしゃべりでキャラクタをしゃべらせる
1.10 character: gesture( name, switch, type, speed, degree ) しゃべりのジェスチャーを設定する
1.11 character: walk( name, x, z, pitch, compass, step, wait ) CGキャラクタが歩く
1.12 character: step( name, x, z, speed, step, wait ) CGキャラクタが一歩で指定座標へ移動する
1.13 character: stop( name, wait ) 歩いているCGキャラクタが止まる
1.14 character: sit( name, speed, wait ) CGキャラクタが座る
1.15 character: stand( name, speed, wait ) CGキャラクタが立ち上がる
1.16 character: turn( name, speed, style, wait ) CGキャラクタが向きを変える
1.17 character: bow( name, style, speed, level, wait ) CGキャラクタがおじぎする
1.18 character: look( name, what, track, speed, style, wait ) CGキャラクタが何かを見る
1.19 character: gaze( name,pitch, yaw, roll, speed, style, wait ) CGキャラクタの首を指定方向に向ける
1.20 character: jump( name, x, y, z, d, height, speed, spin, wait ) CGキャラクタがジャンプする
1.21 character: tumble( name, rotx, rotz, speed ) CGキャラクタが倒れる
1.22 character: byebye( name, hand, speed, degree, wait ) CGキャラクタが手を振ってバイバイする
1.23 character: action( name, action, speed, degree, wait ) CGキャラクタが各種アクションをする
1.24 character: shake( name,state, level ) CGキャラクタがふるえる
1.25 character: blink( name, switch, frequency ) CGキャラクタがまばたきする
1.26 character: openmouth( name,state, level, speed, wait ) CGキャラクタが口を開ける
1.27 character: expression( name, type, degree, time, wait ) CGキャラクタが顔の表情を変える
1.28 character: swing( name, switch, speed, degree ) CGキャラクタの体の自然な揺れ
1.29 character: changemodel( name, modelname ) CGキャラクタのモデルをチェンジする
1.30 character: pose( name, pose, time, wait ) CGキャラクタのポーズの実行
1.31 character: definepose( name, pose, joint, rotx, roty, rotz, movex, movey, movez ) CGキャラクタのポーズの定義
1.32 character: deletepose( name, pose ) CGキャラクタのポーズ定義を解除する
1.33 character: sequencepose( name, sequencepose, speed, wait ) CGキャラクタの連続ポーズの実行
1.34 character: definesequencepose( name, sequencepose, pose, time, speed, style) CGキャラクタの連続ポーズの定義
1.35 character: deletesequencepose( name, sequencepose ) CGキャラクタの連続ポーズ定義を解除する
1.36 character: openkeyframe( name, keyframename, filename ) モーションキャプチャーデータファイルをオープンする
1.37 character: closekeyframe( name, keyframename ) モーションキャプチャーデータをクローズする
1.38 character: keyframe( name, keyframename, preresettime, resettime, stopmode, yscale, xzscale, speedratio, repeat, wait ) モーションキャプチャーデータの実行
1.39 character: crossingmodel( modelname, modelname, modelname2, k ) キャラクタの掛け合わせ
1.40 character: crossingparts( modelname, parts, km, kc, adjustx, adjusty, adjustz, adjustscale ) キャラクタのパーツの掛け合わせ
1.41 character: openparts( partsname, filename ) キャラクタのパーツのオープン
1.42 character: changeparts( modelname, parts, partsname ) キャラクタのパーツの入れ替え
1.43 character: resetparts( modelname ) キャラクタのパーツのリセット
1.44 character: autogesture( name, switch, type ) キャラクタの自動ジェスチャー

2 カメラコマンド

2.1 camera: assign( name ) カメラに名前を付ける
2.2 camera: switch( name ) カメラをスイッチングする
2.3 camera: movement( name, pan, tilt, roll, x, y, z, vangle, transition, style, speed, time, wait ) カメラを指定位置に移動する
2.4 camera: twoshot( name, name1, name2, transition, dolly, style, speed, time, wait ) カメラをツーショットにする
2.5 camera: closeup( name, what, transition, dolly, style, speed, time, wait ) カメラをクローズアップ
2.6 camera: catch( name, what, track, speed, adjustpan, adjusttilt, wait ) パンチルトだけでキャラクタをとらえる
2.7 camera: autoswitching ( switch=on, type=normal ) カメラの自動切換え

3 CGスタジオセットコマンド

3.1 set: assign( name ) セットに名前を付ける
3.2 set: openmodel( name, filename ) セットのモデリングデータをオープンする
3.3 set: closemodel( name ) セットのモデリングデータをクローズする
3.4 set: change( name ) セットを入れ換える

4 CG小道具コマンド

4.1 prop: assign( name ) 小道具に名前を付ける
4.2 prop: openmodel( name, filename ) 小道具のモデリングデータをオープンする
4.3 prop: closemodel( name ) 小道具のモデリングデータをクローズする
4.4 prop: position( name, x, y, z, pitch, yaw, roll, scale ) 小道具の配置
4.5 prop: visible( name, switch ) 小道具の表示、非表示
4.6 prop: openimageplate( name, filename, platesizeh, platesizev ) イメージプレート小道具の作成
4.7 prop: openmovieplate( name, moviename, platesizeh, platesizev ) ムービープレートを定義する
4.8 prop: opendrawingplate(name, drawingname, platesizeh, platesizev) ドローイングプレートを定義する
4.9 prop: attach(name, charactername, joint, switch) propをキャラクタの指定jointにくっつける
4.10 prop: transform( name, tx, ty, tz, rx, ry, rz, scale, ttime, rtime, stime, wait ) 小道具を動かす

5 CG照明コマンド

5.1 light: assign( name ) 照明に名前を付ける
5.2 light: model( name, type, arg0, arg1, arg2, .... ) 照明の作り込み
type = ambient, flat, point, spot
5.3 light: switch( name, switch ) 照明をオンオフする

6 ムービーコマンド

6.1 movie: open( name, filename ) ムービーファイルをプリオープンする
6.2 movie: close( name ) 再生中のムービーを停止し、クローズする
6.3 movie: play( name, from, to, speedratio, repeat, wait ) ムービーファイルを再生する(プリオープンの場合)
6.4 movie: playfile( filename, from, to, speedratio, repeat, wait ) ムービーファイルを再生する(ダイレクトオープンの場合)
6.5 movie: stop( name ) 再生しているムービーを停止する
6.6 movie: pause( name ) 再生しているムービーをポーズする
6.7 movie: goto( name, frame ) ムービーを指定フレームへ飛ばす

7 タイトルコマンド

7.1 title: select( type, arg0, arg1, arg2, ...., wait ) タイトルをセットする
type = imagefile, infilehtml, htmlfile, pattern
7.2 title: display( type, arg0, arg1, arg2, ...., wait ) タイトルを表示する
type = imagefile, infilehtml, htmlfile, pattern

8 スーパーインポーズコマンド

8.1 super: openimagefile( name, filename ) スーパーイメージファイルのオープン
8.2 super: closeimagefile( name ) スーパーイメージのクローズ
8.3 super: on( type, arg0, arg1, arg2, ... ) スーパーを表示する
type = text, infilehtml, htmlfile, imagefile
8.4 super: off( layer) スーパーを消去する

9 サウンドコマンド

9.1 sound: open( name, filename ) オーディオファイルをプリオープンする
9.2 sound: close( name ) オーディオファイルをクローズする
9.3 sound: play( name, from, to, repeat, wait ) サウンドを再生する(プリオープンの場合)
9.4 sound: playfile( filename, from, to, repeat, wait ) サウンドを再生する(ダイレクトオープンの場合)
9.5 sound: stop( name ) 再生中のオーディオファイルを停止する
9.6 sound: pause( name ) 再生中のオーディオファイルをポーズする
9.7 sound: goto( name, time ) 指定時刻へ飛ばす
9.8 sound: mixer( source, action, arg0, arg1, arg2, ... , wait ) ミキサーのフェーダーを制御する(ダイレクトオープンの場合ミキサーは使えない)

10 ナレーションコマンド

10.1 narration: narratorvoice( voicetype ) ナレータのしゃべり声の指定
10.2 narration: talk( who, text, caption, rate, pitch, intonation, volume, wait ) ナレーションを入れる
10.3 narration: talkfile( filename, caption, wait ) オーディオファイルによるナレーション入れ

11 2Dドローイングコマンド

11.1 drawing: assign( name ) 2Dプレーンに名前を付ける
11.2 drawing: openbase( name, r, g, b, height, width, rubber )
2Dベースプレーンを作る
11.3 drawing: openplain( name, parent, r, g, b, density, height, width)
2Dプレーンをオープンする。
11.4 drawing: closeplain( name ) 2Dプレーンをクローズする
11.5 drawing: visible( name, switch ) 2Dプレーンの見え隠れ
11.6 drawing: setimage( name, filename, aspect)
2Dプレーンにイメージをセットする
11.7 drawing: settext( name, text, font, fontsize, r, g, b, style, halign, valign, overtext) 2Dプレーンにテキストをセットする
11.8 drawing: position( name, x, y, zindex, roll)
2Dプレーン位置を指定する

12 ビデオエフェクトコマンド

12.1 video: switcher( source ) ビデオスイッチャーを制御する

13 CGエフェクトコマンド

13.1 cgenv: bgcolor( r,g,b ) CGオブジェクトの無い背景の色を指定する
13.2 cgenv: fog( switch, type, density, color )  CGにフォグをかける
13.3 cgenv: shadow( switch, lightsource, r, g, b) CGの影をつける
13.4 cgenv: reflection( switch )
CGのリフレクション(反射)をつける
13.5 cgenv: displaycoord( switch )
CG空間にグリッドを表示し、原点、軸が見られる
13.6 cgenv: displaytimecode( switch )
タイムコードを表示する

ダイレクトコマンド

  • wait( time ) 指定した待ち時間だけ待ち、リターンする
  • autoswitching( switch )
    映像の自動スイッチングのオン・オフ
  • setcaption( switch, displaytime, color, border, borderwidth, bordercolor)  クローズドキャプション(字幕)のセットアップ
  • displaycaption( state ) クローズドキャプション(字幕)の表示/非表示
  • skipscript( switch ) TVMLスクリプトをスキップする
  • playfromhere() スクリプトの途中から再生する
  • end() TVMLスクリプト再生を終了する。
  • reset() TVMLプレイヤーをリセットする
  • waitkbhit() 指定したキーボードが押されるまで待ち,リターンする
言語仕様Version2.0に関する注意点
旧言語仕様Ver.1.1と一部コンパチブルではないので注意。主な相違点は以下のとおり。
・パラメータの仕様変更
character、cameraなどで使われているパラメータの仕様が変更されている。特に、Ver1.1においてデフォルトが0.0で-10.0〜+10.0の値を取るパラメータ(例:speed)のほとんどが、デフォルトが1.0で、パラメータ実体に合わせた形に変更されている。例えばspeedについては、1.0がデフォルトで、0.5で半分の速度、4.0で4倍の速度、とになる。したがって、ここに、Ver1.1のデフォルトである0.0を指定するとspeedがゼロになり止まってしまうので要注意。その他、パラメータの実体に合わせて仕様が変更されている。
・映像スイッチング方法の変更
TVMLには、CGスタジオショット・タイトル・ムービーの3種類の映像ソースがあり、これらは該当コマンドを発行することで自動的に切り替えられていた(たとえばmovie:play()をコールするとムービーに切り替わる)。Ver2.0からは、ユーザーがスクリプト中で、明示的にvideo:switcher()コマンドで切り替えないと映像が切り替わらない。旧仕様で行う場合はautoswitcher(switch=on)をコールすることで、従来通り自動的に切り替わる。
・音声の声質指定の変更
音声合成の声質指定は、従来と異なり、音声合成ソフトの声質名をそのまま指定する形に変更されている。
・CGデータ形式の変更
これはプレイヤー側の問題であるが、キャラクタ・セット・小道具について、CGモデルデータが従来のOpeninventorからAlias/Wavefrontのobj形式に変更されている。