見出し画像

🛠️FBXファイル仕様

FBX(Filmbox)は、3Dモデリングとアニメーションのソフトウェア間でデータを共有するために使用される、広く使われているプロプライエタリ(独自の)ファイル形式です。元々はKaydaraによって開発されましたが、現在ではオートデスクが所有し、開発を行っています。

FBXの仕様は非公開

FBXはディスク上でバイナリデータまたはASCIIデータとして表現され、そのSDKは両方の読み込みと書き込みをサポートしています。
どちらの形式も文書化されていませんが、ASCII形式は明確に命名された識別子を持つツリー構造の文書です。FBX バイナリファイル形式については、Blender Foundation が非公式な仕様と、実際のデータが FBX でどのようにレイアウトされるか(ASCII やバイナリ形式とは無関係)についてのより高度な非公式仕様(作業中)を発表しています。

https://en.wikipedia.org/wiki/FBX

FBXは、2006年にAutodesk社が買収したKaydara社がMotionBuilder用に開発した一般的な3Dファイルフォーマットである。現在では、多くの3Dツールで使用され、主要な3D交換フォーマットの1つとなっています。AutodeskはFBX用の「無料」SDKを公開していますが、そのライセンスとソフトウェア自体は完全にクローズドなままです。

https://code.blender.org/2013/08/fbx-binary-file-format-specification/

SDKの識別子から、対応する要素をみてみる、以下は2020の対応要素、接頭辞にFbxといれて検索すればよいようだ。私がみたいのはスケルトン(リグ)

メッシュ - FbxMesh
詳細レベル(LOD)グループ - FbxLodGroup
カメラ (3D用ステレオカメラも含む) - FbxCamera
ライトとゴボ - FbxLight, FbxGobo
NURBS - FbxNurbs、FbxNurbsCurve、FbxNurbsSurface、FbxTrimNurbsSurface。
ジオメトリのテクスチャマッピング - FbxTexture
ジオメトリのマテリアル・マッピング - FbxSurfaceMaterial
制約 - FbxConstraint
ジオメトリの制御点での頂点キャッシュアニメーション - FbxDeformer
Up-Axis (X/Y/Z) とシーンのスケーリング(単位)を提供するシーン設定 - FbxGlobalSettings, FbxAxisSystem
位置、回転、スケール、親を含むトランスフォームデータ - FbxNode
マーカ - FbxMarker
ライン(Line) - FbxLine
スケルトン・セグメント(ルート、リム、リム・ノード) - FbxSkeleton
アニメーション・カーブ - FbxAnimCurve
ノード(ボーンやジオメトリ)のリストに対するレストポーズやバインドポーズ - FbxPose

このクラスのFbxSkeletonという名前は、人体の骨格構造との類似性に由来しています。実際、このタイプのオブジェクトは、グラフィック表示やIK/FK、皮膚変形計算の際に便利な特別なプロパティを持つトランスフォームノードに過ぎません。通常、シーンには FbxSkeleton ノードのアトリビュートのチェーンが含まれ、それらが一緒になってスケルトン セグメントを形成しています。たとえば、キャラクタの脚は、eRoot 属性を持つ 1 つの親ノードと、eLimb タイプの 1 つの子(femur)、この子には同じタイプの子(tibia) を使用できます。最後に、タイプ eEffector(足首)の最後のノード属性で終了します。

https://help.autodesk.com/view/FBX/2016/ENU/?guid=__cpp_ref_class_fbx_skeleton_html

ポーズもきになるかな

このクラスは、ポーズの説明を含み、1つのFBXシーンでポーズ情報にアクセスするためのいくつかのメソッドを提供します。
FbxPose オブジェクトは、"Bind Pose" データまたは "Rest Pose" データを保持するように設定することができます。

http://docs.autodesk.com/FBX/2014/ENU/FBX-SDK-Documentation/index.html?url=cpp_ref/class_fbx_pose.html,topicNumber=cpp_ref_class_fbx_pose_html3b4fd8fc-688e-43ec-b1df-56acb1cce550
https://amzn.to/3pxtbN1

FBX SDKを使用すると、任意の2Dファイル形式のテクスチャファイルをFBXファイルに埋め込むことができます。つまり、シーンを1つのファイルとして配信できます。
また、テクスチャファイルへの相対参照を埋め込んで、FBXファイルと一緒にテクスチャファイルを配信することもできます。

https://download.autodesk.com/us/fbx/20112/FBX_SDK_HELP/index.html?url=WS1a9193826455f5ff7b1de9f8127315f1b54-5a50.htm,topicNumber=d0e1054

お願い致します