Engine

モーションファイル | ファイルフォーマット

モーションファイル　( *.mot )　のフォーマットリファレンスです。
Version 1.0.0.0

最初のフォーマット

ファイルヘッダ
情報ヘッダ
ルートトランスフォーム
ボディトランスフォーム

ファイルヘッダ

ファイルヘッダは、モーションファイルを識別するためのものになります。

ファイルヘッダ ( MOT_FILE_HEADER )

- MOT_FILE_HEADER

名前 | 型 | 説明 | 値
--- | --- | --- | ---
magic | UInt32 | マジック値 | 0x5F544F4D
version | UInt32 | バージョン | 0x01000000

情報ヘッダ

情報ヘッダはモーション全般の情報を記述します。

情報ヘッダ ( MOT_INFO_HEADER 構造体 )

- MOT_INFO_HEADER

名前 | 型 | 説明
--- | --- | ---
name | wchar_t[32] | 名前
framesPerSec | Float32 | 1秒間のフレーム数
lastFrame | Float32 | 最後のフレーム
speed | Float32 | 再生速度
blendRatio | Float32 | ブレンド率
startLoopFrame | Float32 | ループを開始するフレーム
endLoopFrame | Float32 | ループを終了するフレーム
numRTCurve | UInt32 | ルートトランスフォームのカーブの数
numBTCurve | UInt32 | ボディトランスフォームのカーブの数

ルートトランスフォーム、ボディトランスフォーム 共通の定義

- MOT_QUATERNION_KEY 構造体

名前 | 型 | 説明
--- | --- | ---
frame | Float32 | フレーム
reserve | UInt32 | 予約領域
value | Float32[4] | クォータニオン { X, Y, Z, W }

- MOT_VECTOR_KEY 構造体

名前 | 型 | 説明
--- | --- | ---
frame | Float32 | フレーム
value | Float32[3] | ベクトル { X, Y, Z }

ルートトランスフォーム

ルートトランスフォームはルートにのみ影響を与えるため、カーブは最大で一つになります。
そのため、MOT_INFO_HEADER::numRTCurve の値は、0 もしくわ 1 になります。
また、MOT_INFO_HEADER::numRTCurve の値が 0 の場合は存在しません。

ルートトランスフォーム

カーブ

カーブ

ルートトランスフォームは、ローテーション、トランスレーションのみをサポートします。

カーブの記述 | MOT_ROOT_CURVE_DESC
ローテーションキーの配列 | MOT_QUATERNION_KEY [ MOT_RT_DESC::numRotationKey ]
トランスレーションキーの配列 | MOT_VECTOR_KEY [ MOT_RT_DESC::numTranslationKey ]

- MOT_ROOT_CURVE_DESC

名前 | 型 | 説明
--- | --- | ---
numRotationKey | UInt32 | ローテーションキーの数
numTranslationKey | UInt32 | トランスレーションキーの数

ボディトランスフォーム

ボディトランスフォームは複数のノードに対して影響を与えるため、カーブは MOT_INFO_HEADER::numBTCurve の値の数だけ存在します。
また、MOT_INFO_HEADER::numBTCurve の値が 0 の場合は存在しません。

ボディトランスフォーム

カーブ
・
・
・

カーブ

ボディトランスフォームは、スケーリング、ローテーション、トランスレーションの全てをサポートします。

カーブの記述 | MOT_BODY_CURVE_DESC
スケーリングキーの配列 | MOT_VECTOR_KEY [ MOT_BT_DESC::numScalingKey ]
ローテーションキーの配列 | MOT_QUATERNION_KEY [ MOT_BT_DESC::numRotationKey ]
トランスレーションキーの配列 | MOT_VECTOR_KEY [ MOT_BT_DESC::numTranslationKey ]

- MOT_BODY_CURVE_DESC

名前 | 型 | 説明
--- | --- | ---
name | wchat_t[32] | 名前 対象となるアクターモデルのノードの名前になります。
numScalingKey | UInt32 | スケーリングキーの数
numRotationKey | UInt32 | ローテーションキーの数
numTranslationKey | UInt32 | トランスレーションキーの数
reserve | UInt32 | 予約領域