キャラクターを動かそう

セットや小物を配置し動かすといったことはできるようになりましたが、やはりキャラクタが動いてしゃべって初めてアニメーションというものでしょう。
本章ではキャラクタを動かす方法を解説します。

キャラクターをしゃべらせる

以下のコマンドでセリフを与えるとキャラクタが自動的にリップシンクしてしゃべります。字幕も自動的につきます。

character: talk( name=A, text=”マイコです” )

字幕の文字だけ変えたいときは次のようにcaptionパラメータを使います。

character: talk( name=A, text=”マイコです”, caption=”maikoです”)

音声合成が漢字を読み間違えるときなどにも使います。その場合、textの方をひらがなに、captionの方を漢字文にします。

アテレコ機能

アテレコ機能とは、あらかじめ用意した音声ファイルを再生する機能です。
キャラクタは自動的にリップシンクして音声が再生されるので、ちょうど声優のように、あらかじめセリフを録音しておいて、その音声ファイルでキャラクタにしゃべらせることができます。
アテレコ機能に使える音声フォーマットはogg, wavです。
以下のコマンドで動作を確認できます。

character: talkfile( name=A, filename=./demo/Fall.wav, caption=”ひゅーーーー” )

キャラクターを歩かせよう

目的地のx, z座標を指定して、そこへ向かって歩かせることができます。
以下のコマンドで動作を確認できます。

character: walk( name=A, x=1.0, z=0.0)

また、目的地の代わりにstepパラメータで歩数を指定して、今現在向いている方向に指定歩数だけ歩かせることもできます。

character: walk( name=A, step=3)

step=-3とマイナスにすると、3歩後ずさりします。

Tips:
単純にキャラの位置を移動させるだけならcharacter: moveを使います。

立つ、座る

キャラクターを立たせたり、座らせたりすることができます。

character: sit( name=A)
wait(time=1.0)
character: stand( name=A)

ターンさせる

キャラクタをターンさせることができます。dに絶対角を”度”で指定します。

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)

このtarget=cameraの”camera”は予約語です。
targetには、カメラ名を直接指定したり、キャラクタ名やプロップ名を指定することができます。

指定した方向を見る

先ほどのlookコマンドは特定の対象物を見るコマンドでしたが、gazeコマンドは指定角度の方向を見るコマンドです。

character: gaze( name=A, rx=-30, ry=70)

ジャンプさせる

キャラクタをジャンプさせることができます。
目的地の座標と向きを指定して 、そこに向かってジャンプします。

character: jump( name=A, x=0.0, z=0.0, d=0.0)

*mode=relativeを指定すると、相対座標になります。デフォルトはmode=absoluteで絶対座標です。

震える

キャラクターをふるえさせることができます。

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)

*次バージョンではUnityのBelndShapeを使った形状モーフィングで、様々な表情に対応できるようになります。

アクションを再生する

各キャラクタにはあらかじめ設定されたアニメーションがついています。アニメーション名を指定して再生することができます。

character: action(name=A, action=hop)
character: action(name=A, action=shock)
character: action(name=A, action=bye)

以上はキャラクタmaikoについているアニメーションです。maikoにはこのほか、brilliant, shake, jump, next, bow, handwave, swingなどが設定されています。

モーションキャプチャーデータの実行

TVMLにはモーションキャプチャーデータ(BVHフォーマット)を実行させる機能があります。
ただし、これは簡易的なもので、BVH仕様を完全サポートはしておらず限られた形式のもののみ再生できます。
T2V BuilderにはBVHデータをバンドルしていないので、試すときは別途問い合わせてください。

ポーズをとる

TVMLはキャラクタの関節の角度を数値で指定してポーズを取らせるコマンドがあります。
ただ、数値で指定なのでポーズを作成するには根気と時間がかかります。

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)

pose=default(予約語)で元のデフォルトポーズに戻しています。

キャラクターを移動させる

キャラクタを移動させることができます。
歩くといった動作はせずに単純な座標移動と方向変更のみです。

character: move(name=A, x=1.0, y=1.0, z=0.0, ry=45)

現在の位置から指定した位置と角度に等速で移動します。