FBX 7.x

本章では、 FBX 7.x (主に 7.4 以降) の仕様について解説する。

概要

文法とスキーマ

FBX 形式は、文法スキーマの2つの層(段階)に分けて解釈することができる。

最初に、低レベルな文法 (syntax) が存在する。 これは極めて汎用的な規則で、汎用的なデータ構造をバイナリデータで表現するための配置を決めるものである。 FBX データ中では、整数、文字列、バイナリといった、シンプルかつ多様なデータを保持する必要がある。 構文に従ってバイナリデータを読むことで、これらのデータ型を識別し、また配列や木などの構造を読み取ることができる。

スキーマ (schema) は、文法に従って解釈された汎用的なデータ構造を、3Dモデルとして意味付けする規則である。 たとえば、同じ数値の配列であってもどれが頂点座標でどれがテクスチャ座標なのか、それらはどのように対応するのか、モデルとテクスチャはどう紐付けられるのか。 汎用的なデータ構造に対して、このような解釈可能な意味や、それを表現するための更に上位の構造を与える規則がスキーマである。

文法とスキーマの関係自体は FBX 形式に特有のものではない。 たとえば汎用的でそれ自体が意味を提示しない XML 文法に加えて XHTML や SVG のようなスキーマを与えることで、 HTML 文書や SVG 画像といった解釈可能なデータを得ることができる。 他の 3D データ形式でもこのようなデータ形式定義は行われており、 COLLADA 形式は XML 文法と COLLADA スキーマによって、 glTF 形式は JSON 文法と glTF スキーマによって意味を与えられる。

FBX の文法とスキーマ

文法は汎用的なデータを記述するものであり、また解釈を与えることが少ないため、単純になりやすい。 そのため、多くのデータを観察することにより、その詳細な規則を推測することが可能であることが多い。

対照的にスキーマは表現するデータの複雑さを反映したものになるため、その定義も複雑になりやすい。 特に FBX 形式はプロプライエタリであり仕様が公式に公開されていないため、スキーマの全貌や詳細も明らかでない。 本書の情報を参考にするときはこの点に留意せよ。