FBX
公式のフォーマット仕様書が存在しない
SDK
AutodeskはFBXファイルの読み書きおよび相互変換のためのプロプライエタリなC++専用ソフトウェア開発キットとして「FBX SDK」を提供している。2022年12月現在の最新版は2020.3.2である。プラットフォームとしてMicrosoft Windows、macOS、iOS、Linuxがサポートされている。
FBXファイル形式はプロプライエタリであるものの、フォーマットの説明は、FBXリーダー/ライター用のヘッダーファイルを提供するFBX拡張SDKにて公開されている。
その他、FBX SDKのPython用バインディングがAutodeskにより公式提供されている。Blenderは、FBX SDKを使わずに書かれた、FBX用のインポート/エクスポートスクリプトを含んでいるほか、The OpenEnded Group(英語版)のFieldは、FBXファイルを読み込み展開するためのJavaベースのライブラリを含んでいる。
ファイル形式
FBXは、バイナリまたはASCIIデータのどちらでも表現でき、FBX SDKを利用して読み書きが可能である。
どちらの形式も仕様はドキュメント化されていないものの、Autodesk FBX SDKのヘルプに参考資料が存在している。
FBXのバイナリ形式に関しては、Blender Foundationが独自解析した結果として不完全な非公式仕様を公開しており、FBX (ASCIIまたはバイナリ形式に依存しない) に実際のデータをどうレイアウトするかを示すための高水準非公式仕様も公開している。
FBX SDKは内部文字列表現にUTF-8を使用する。Windows環境向けに変換APIが用意されている。
ネット上にあるFBXの仕様書はBlenderによるもののみ
Blenderは、FBX SDKを使わずに書かれた、FBX用のインポート/エクスポートスクリプトを含んでいるなぜこれをしないといけないかと言うとBlenderはGPLライセンスだからだと思いますyozba.icon
というか実装する側のライセンス関係なく、AutodeskやUnity以外のものにこのSDK使って良いんですかね
BlenderじゃなくてGodotだけどちゃんと記事として理由も書いてくれてる
Why did you decide not to use the FBX SDK?
In short, we wanted to add official support directly in the engine, and Godot being open source, it can not (and should not!) depend on any proprietary component. Integrating the proprietary FBX SDK could have been done as a thirdparty plugin, but it would not be officially maintained by the Godot team. It’s not just licensing though, here’s what motivated the decision not use the Autodesk FBX SDK:
It’s not open source, which is a deal-breaker as mentioned above.
オープンソースじゃない
It’s much larger than our importer, we only net 12,000 lines of code (the FBX SDK is over 50 MB - that’s bigger than Godot!).
FBX SDKは容量がでかすぎる
We can’t modify the behaviour to improve performance or increase flexibility.
Godotに合わせて調整するなどをすることができない
Our importer is faster than the official SDK.
Godotが作ったimporterのほうが早い
It requires a lot of work. Much like the work we have done with FBX we’d just be repeating work for example with mesh conversion.
どちらにしろどれをどうインポートするかの設定をめっちゃしないといけない
It’s a bad move to support it if we don’t know what the code is doing, especially when we care about importing things optimally, especially for creating a reliable 3D workflow.
Godotが理解できてないのにサポート!とするのは良くない
We have already added proper support for complex features like Segment Scale Compensation, which e.g. Unity currently does not support directly into the engine.
UnityもサポートしてないFBXの機能をGodotはサポートすることができた
Blender
2.8以降ASCII形式のFBXをサポートしていない
現在2025.04.11はuFBXを実装しようとしている Godot
The Godot game engine can import FBX files without using the FBX SDK. In Godot 3.2 this was handled by the Assimp library. This was rewritten in Godot 3.3, and replaced by a fork of Facebook's FBX2glTF utility in Godot 4.0. Support for the open-source ufbx importer was added for the Godot 4.3 release. Three.js
code:javascript
* FBX format references:
*
* Binary format specification:
んー参考にしつつ独自に実装してるっぽい?
最初のコミットでも別にどう実装したかは書かれてないな