CommandReference

hkrn edited this page Aug 4, 2011 · 4 revisions
Clone this wiki locally

これは MMDAI 及び MMDAgent で使われる状態遷移を記述するスクリプト (*.fst) の説明書です。出来るだけ内部的な説明も含めて解説をします。

注意: MMDAI と MMDAgent のコマンドは基本的に互換性がありますが必ずしも同じの結果になるとは限りません。

用語説明

  • モデル: MikuMikuDance のモデルファイル (*.pmd) のこと
  • アクセサリ: 親を持つモデルのこと
  • モーション: モデルを動かすモーションファイル (*.vmd) のこと

基本文法

区切りとして空白を用いること。イベント名及びコマンド名に空白を用いると区切りとしてみなされ、スクリプトの異常動作を起こす原因になるので使用してはならない。また、イベント名およびコマンド名において"|"が区切り文字に使用されるため、含めてはならない。

[state_before] [state_after] [event] [command]
  • state_before: 遷移条件番号
    • 数値で記述。最初の遷移は必ず 0 を指定する
  • state_after: 遷移先番号
    • 数値で記述。次の遷移条件番号を指定する
    • 存在しない遷移先番号を指定するとスクリプトが機能しなくなります
  • event: 条件イベント
    • 遷移先番号と同じく正確に記述すること
    • <eps> にすると条件イベントをスキップすることが可能。よく多用される
  • command: コマンド
    • 条件イベントと同じく <eps> を入れるとコマンドをスキップすることが可能

コマンド

コマンドは fst に記述する命令です。主にこれらを用いて MikuMikuDance のモデルと会話するために必要なシナリオを書いていく必要があります。コマンド実行中に他のコマンドを実行すると思わぬ動作を引き起こす問題があるため、イベントを用いてコマンド完了を制御する必要があります。

MODEL_ADD

MODEL_ADD|[model_alias]|[model_filename]|[position]|[rotation]|[parent_alias]|[parent_bone]

モデルを追加します。

  • model_alias: モデルの別名。モデルの識別子として他のコマンドで多用される。
  • model_filename: モデルのファイルパス。アプリケーションからの相対パスまたは絶対パスを指定
    • 絶対パスにすると他のマシンで動かなくなることが考えられるため、相対パスの方が望ましい
  • positon: モデルの位置。"x,y,z" のようにカンマ区切りにすること
  • rotation: モデルの回転率。"x,y,z" のようにカンマ区切りにすること
    • 内部的にはオイラー角で計算される
  • parent_alias: アクセサリとして親モデルを指定
    • 主な用途はアクセサリとしてモデルを指定する場合に使う
  • parent_bone: 親モデルのボーンを指定
    • 特定のボーンに対してアクセサリを追加したい場合に指定
    • 特に指定しなければ「センター」ボーンが使われる

MODEL_CHANGE

MODEL_CHANGE|[alias]|[filename]

モデルを変更します。モーションはそのまま引き継がれますが、モデルを変更する際モデルに付属するアクセサリは全て削除されます。基本的にモデル間のモーション互換率は低いため、あまり用いられないコマンドかもしれません。

  • alias: 変更するモデル名。
  • filename: モデルのファイルパス。アプリケーションからの相対パスまたは絶対パスを指定

MODEL_DELETE

MODEL_DELETE|[alias]

モデルを削除します。モデルを削除するとモデルに従属するモーション及びアクセサリが全て削除されます。また、いきなり削除ではなく、徐々にフェードアウトしてから削除することに注意してください。

  • alias: 削除するモデル名

MOTION_ADD

MOTION_ADD|[model_alias]|[motion_alias]|[motion_filename]|[full]|[loop]|[smooth]|[reposition]

指定されたモデルに対してモーションを追加します。

  • model_alias: モーションを追加する対象のモデル名
  • motion_alias: モーションの別名
    • 扱いはモデル名と同じ
  • motion_filename: モーションのファイルパス。アプリケーションからの相対パスまたは絶対パスを指定
  • full:
    • FULLPART を指定。大文字英数字で記述する
  • once: モーションのループ指定
    • ONCELOOP を指定。大文字英数字で記述する
      • ONCE にするとモーションは一回のみ再生される
      • LOOP にするとモーションは繰り返し再生される
  • smooth: 円滑補正指定
    • ON か OFF を指定。大文字英数字で記述する
  • reposition: 位置再補正指定
    • ON か OFF を指定。大文字英数字で記述する

MOTION_CHANGE

MOTION_ADD|[model_alias]|[motion_alias]|[motion_filename]

指定されたモデルに従属するモーションを変更します。

  • model_alias: モーションを追加する対象のモデル名
  • motion_alias: モーションの別名
  • motion_filename: モーションのファイルパス。アプリケーションからの相対パスまたは絶対パスを指定

MOTION_DELETE

MOTION_ADD|[model_alias]|[motion_alias]

指定されたモデルに従属するモーションを削除します。

  • model_alias: モーションを追加する対象のモデル名
  • motion_alias: モーションの別名

STAGE

STAGE|[stage_filename]
STAGE|[floor_filename]|[background_filename]

ステージか、背景及びフロアの画像の追加及び変更を行います。このコマンドは特殊で引数の数によって動作が変わります。

  • stage_filename: ステージのモデル (*.pmd) を指定。アプリケーションからの相対パスまたは絶対パスを指定
    • 内部的に OpenGL のリストが用いられるため、基本的に描画は通常のモデル描画より高速になる
    • 通常のモデルも指定することもできるが、全く動かないモデルになるので注意
  • floor_filename: フロアの画像を指定。アプリケーションからの相対パスまたは絶対パスを指定
    • 対応する画像形式はテクスチャと同じく jpg/png/tga
  • background_filename: 背景の画像を指定。アプリケーションからの相対パスまたは絶対パスを指定
    • 対応する画像形式は floor_filename と同じなので省略

LIGHTCOLOR

LIGHTCOLOR|[red],[blue],[green]

光源の色を変更します。

  • red: 赤色の強さを指定
  • blue: 青色の強さを指定
  • green: 緑色の強さを指定

デフォルトは白 (1.0,1.0,1.0) で範囲は 0.0-1.0 の間を指定すること

LIGHTDIRECTION

LIGHTDIRECTION|[position]
  • positon: 光源の方向を指定。"x,y,z" のようにカンマ区切りにすること

CAMERA

CAMERA|[motion_filename]
CAMERA|[position]|[rotation]|[fovy]|[time]

カメラのモーションまたはカメラ位置の変更を行います。このコマンドは特殊で引数の数によって動作が変わります。

  • motion_filename: モーションのファイルパス。アプリケーションからの相対パスまたは絶対パスを指定
  • position: カメラの位置を指定。"x,y,z" のようにカンマ区切りにすること
    • MikuMikuDance の仕様上デフォルトは “0,10,0” になる
  • rotation: カメラのアングルを指定。モデルの rotation と異なり、角度で指定する
  • fovy: 視野の垂直方向核を指定
    • デフォルト値は 16度
  • time: TODO

SYNTH_START

SYNTH_START|[model_alias]|[voice_alias]|[text]

OpenJTalk を用いた発声を行います。MMDAgent のコアとなるコマンドのひとつです。

  • model_alias: 発声元のモデル名を指定
  • voice_alias: 発声名を指定
    • 設定は MMDAgent 独自の OpenJTalk の設定ファイルである ojt ファイルにて指定
  • text: 発声内容

LIPSYNC_START

LIPSYNC_START|[model_alias]|[sequence_text]

モデルに対してリップシンクのモーションを作成し、追加します。MMDAgent のコアとなるコマンドのひとつですが、OpenJTalk プラグインから内部的に呼ばれるため、直接利用する機会はまずないでしょう。SYNTH_START コマンドと連動します。

  • model_alias: リップシンクを行うモデル名を指定
  • sequence_text: リップシンクのモーション作成に必要な文字列を指定
    • OpenJTalk が自動的に生成するテキストを指定

EXECUTE

EXECUTE|[executable_filename]

実行ファイルを実行します。実行ファイル構成が OS によって異なるため、移植性はありません。

  • executable_filename: 実行する実行ファイル名。アプリケーションからの相対パスまたは絶対パスを指定する
    • fst スクリプトの仕様上空白を利用することができないため、引数を渡すことが出来ない

KEY_POST

KEY_POST|[window_class_name]|[key_name]|[enable_shift]|[enable_ctrl]|[enable_alt]

仮想キーボードとして他のアプリケーションに対してキー入力を実行します。このコマンドは Windows の機能に依存しているため、他の OS で実行することは出来ません。

  • window_class_name: アプリケーション名
  • key_name: キー名(数値ではない)
  • enable_shift: シフトキー(SHIFT)を有効にするか
    • ON か OFF を指定。大文字英数字で記述する
  • enable_ctrl: コントロールキー(CTRL)を有効にするか
    • ON か OFF を指定。大文字英数字で記述する
  • enable_alt: オルトキー(ALT)を有効にするか
    • ON か OFF を指定。大文字英数字で記述する

スクリプトを作成するためのリンク集