フォーマット仕様解説

このエントリーをはてなブックマークに追加
はてなブックマーク - フォーマット仕様解説
Share on Facebook
Post to Google Buzz
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
フォーマット仕様解説Project [ EF-12 ]

EF-12で使われるモーションのデータフォーマットについて解説します。基本的な仕様は以下の通り

・拡張子は[.fmot]。[.fmota]は同じファイルのアスキー版で中身を確認することができる
・IKをグラフィックライブラリがネイティブに再現(焼付けではない)
・Softimage上でつけてあるキーがそのままfmotの中身と考えてよい
・データとして取得される範囲は『0フレーム以降の最初のキーから最後のキーまでの時間範囲』
・オブジェクトそのものにつけてあるキーのみを取得
 ・ベースレイヤー以外のレイヤーデータは無視 
 ・アクションクリップは無視
 ・コンストレインしただけのアニメーションは原則無視(プロットする必要がある)
・SRTのみを取得し特殊パラメータは取得しない
・SI3Dスロープとして取得(つまり傾き値のみ)。XSIスロープでも出力されるが結果は同一でない
・任意のオブジェクトにおけるキーの最大値は-3000から+3000(移動、回転、スケールすべて)
 ・これ以上の大きさを与えたい場合は階層を分けて加算させる


 
テキストだけで書かれてもなかなか理解しにくいところであると思いますので、以下「こういうデータの作り方だとエラーになる」サンプルを例示していきます。

■正しいモーション。まずこれを頭に入れて以下を見ていってください。
YouTube Preview Image
以下★の数が多いほどよく起こる不具合です。

★★★★ 想定しているフレームの先に不要なキーが入ってしまったデータ
YouTube Preview Image

本来60フレームで終了するはずのモーションなのに、120フレームにキーがついてしまっています。コンバータはこれを取得し、このモーションが120フレームだと判断するために問題が発生します。

★★★ 異常に大きいファイルサイズ
YouTube Preview Image

一応モーションとしては正しいですが、ファイルサイズが5倍になってしまっています。これは全てのオブジェクトにプロットで全フレームキーを打つようなオペレーションによって発生します。何かにコンストレインしてモーションを作成し、最後にプロットする手順を踏む場合はプロット後のキーをきれいに打ち直すことを推奨します。

★ 大きすぎるキーフレームの値
YouTube Preview Image

動画と画像で最終フレームの位置を見比べてください。Softimagでは50メートル移動しているモーションですがプレビューすると30メートル付近で止まってしまいます。
 これはfmotの仕様上の数値上限が±3000であるためです。50メートルはSoftimage上で5000になるため正しく再生されません。
 格闘ゲームで30メートル移動して9回転するようなモーションは作らないと思いますが、仕様として頭にいれておくほうがよいでしょう。

★★ 最初の30フレームが空白
YouTube Preview Image

fmotファイルはキーフレームの時間をそのままデータとして保持します。最初のフレームを自動的に0にアジャストすることはしません。したがって30フレームから開始するモーションはゲーム中でも同じように再生されます。
 特にコンビネーション技を作る時にこういうエラーを出しやすいので注意しましょう。

★★ 最初の30フレームが省かれる
YouTube Preview Image

こちらは逆に、モーションをマイナスフレームから作ってしまったためにおきたエラーです。マイナス時間はゲーム内で存在しないため、コンバータはマイナスのキーフレームを取得しません。

★ カーブ1本についているキーが255以上
YouTube Preview Image

fmotフォーマットで一つのアニメーション要素において保持できるキーの上限数は255です。このサンプルでは300フレームのモーションにすべてキーが打たれているため再生に問題が起きています。256フレーム以上の長さのモーションを作るときに発生する可能性が高いエラーです。

なお、255という制限は「1要素」です。X/Y/Zそれぞれ別カウントになるのでXに200個、Yに100個のキーが打たれているようなケースでは問題ありません。

★ スケール設定書類のミス 1/2
YouTube Preview Image
YouTube Preview Image
上記の症状はモーション自体ではなく、コンバータの設定ファイルの記述ミスによって起こります。

製作者の環境の都合によってはオリジナルサイズを10倍にしたいという事があり、モーションデータはその差を設定ファイルで吸収します。画像は\EF12_FoolTools\Bin\Setting以下にあるConvMotion.csvの設定です。公式で提供しているモーションは0.1でコンバートします。もし10倍サイズのモーションをそのままコンバートするとムービーのような現象が発生します。

これは混在環境で作業しているクリエイター以外では滅多に発生しないでしょう。

★★まったく再生されない
YouTube Preview Image

このエラーは割と高い頻度で起こります。投げを作ろうとしたり、サンプルモーションを参照しようとした時など、二体のモーションモデルを同じシーンに出した時、Softimageが名前の重複を回避しようとして自動で名前の付け替えを行うことが主な理由です。
 この場合は名前を元に戻せばコンバートできるようになりますが、すべてのオブジェクト名が変わってしまった時はリネームがとても面倒です。スクリプトを組むスキルがない場合は作り直したほうが早いかもしれません。

★★★★★ 腹の向きがおかしい
YouTube Preview Image

ゲームにおいて「キャラが現在どっちを向いているか」はとても重要です。EF-12ではその判定をCoreオブジェクトの角度で行っています。図のようにはすに構えるポーズを作るとついCoreを回転させてしまいがちですが、ゲーム中ではそれを前と判定して補正をかけてしまうためにムービーのような不具合が起こります。
 正面を向いて行う動作のときは必ずCoreを0にし、斜めに向けるアニメーションはその下の階層(胸と下半身)に分けて入れるようにしてください。
 逆に振り向き動作の場合はCoreに180度いれておかないと振り向きを行ったと判定されません。「構え」「振り向き」「ダウン」の3つの場合には気をつけるようにしましょう。


 

比較的よく起こるモーションの問題は以上です。これらを頭に入れて作業を進めると不具合がおきにくいし、起きた時にどう対処すればいいかすぐわかるので作業の効率もアップするでしょう。

本章でご覧いただいた間違い例のデータはこちらから「BadMotionSample」をダウンロードできます。