基本型の値の表現
エンディアン
FBX バイナリ形式では、多バイトデータの表現として基本的にリトルエンディアンが用いられる。
たとえば、u32
型の値 7400
(0x00001ce8
) は、バイナリデータ中では [e8 1c 00 00]
のようなバイト列で表現される。
真偽値
bool
は true
か false
の値を持つ型だが、これは FBX バイナリ形式中では (驚くべきことに) それぞれ文字 Y
(数値 0x59
) と文字 T
(数値 0x54
) で表現される。
論理的な値 | バイナリ表現 | ASCII 対応する文字 |
---|---|---|
false | 0x54 | T |
true | 0x59 | Y |
T
と Y
の由来が何なのかは不明。
留意すべきなのが、これらは Autodesk 公式の FBX SDK が読み書きする値であって、必ずしもすべてのソフトウェアがこれに準拠しているわけではないことだ。
たとえば Blender 2.72b における FBX プラグインは、真偽値として 0x54
と 0x59
ではなく 0x00
と 0x01
を出力する。
このようなデータは FBX SDK にとって不正であり無視されてしまうため、情報が欠落することになる。
FBX 処理系はこのような壊れた真偽値表現に遭遇した場合、 0x54
と 0x59
のみを受け入れて FBX SDK と同様にデータを読み取るのか、偶数と奇数で判別して出力プログラムが意図した (であろう) データを読み取るのか、選択する必要がある。