FBXファイルの中に入れれるデータ一覧


# FBXファイル内に保持できる要素

初心者がFBXの構造を学習するにあたり、FBXのシーンに設定できる要素を調べましたので、メモとして残します。

初心者でも理解しやいような表現を心がけているため、用語の説明が正確でないかもしれません。間違いに気づいたらご指摘をお願いします。



引用：[Autodesk FBX 2017](https://help.autodesk.com/view/FBX/2017/ENU/)
![](https://help.autodesk.com/view/FBX/2017/ENU/images/heroBanner.png)



## 本記事の対象者

プログラミングはできるけど、CGの用語は疎いみたいな人が対象です。



## FBX

FBXは、CG界隈で広く普及しているファイルフォーマットです。

3D空間内での物体の形状、模様、動き等を定義できます。



## FBX SDK

プログラミング言語でFBXを読み込んだり書き込んだりできるツールです。

C++版とPython版の2種類があります。



## シーン

FBXファイルの中身はHTMLのように階層構造になっています。

最上位層が **シーン** です。HTMLでいう `<html>` タグに相当する部分です。

この配下に **エレメント** がぶら下がります。



引用：[Autodesk FBX 2017 / FBX Scenes](https://help.autodesk.com/view/FBX/2017/ENU/?guid=__files_GUID_4F644045_380D_4B75_A2A3_D39DDE53BEDD_htm)
![](https://help.autodesk.com/cloudhelp/2017/ENU/FBX-Developer-Help/images/GUID-5FB404CF-20C8-4B44-B418-27234506276C-low.png)

エレメントには以下の種類があります。

| エレメント                                    | FBX SDKでのクラス名  |
| --------------------------------------------- | -------------------- |
| [メッシュ](#メッシュ)                         | `FbxMesh`            |
| [LODグループ](#LODグループ)                   | `FbxLodGroup`        |
| [カメラ](#カメラ)                             | `FbxCamera`          |
| [ライト](#ライト)                             | `FbxLight`           |
| [ゴボ](#ゴボ)                                 | `FbxGobo`            |
| [ナーブス](#ナーブス)                         | `FbxNurbs`           |
| [テクスチャ](#テクスチャ)                     | `FbxTexture`         |
| [マテリアル](#マテリアル)                     | `FbxSurfaceMaterial` |
| [コンストレイント](#コンストレイント)         | `FbxConstraint`      |
| [デフォーマー](#デフォーマー)                 | `FbxDeformer`        |
| [グローバル設定](#グローバル設定)             | `FbxGlobalSettings`  |
| [アクシスシステム](#アクシスシステム)         | `FbxAxisSystem`      |
| [ノード](#ノード)                             | `FbxNode`            |
| [マーカー](#マーカー)                         | `FbxMarker`          |
| [ライン](#ライン)                             | `FbxLine`            |
| [スケルトン](#スケルトン)                     | `FbxSkeleton`        |
| [アニメーションカーブ](#アニメーションカーブ) | `FbxAnimCurve`       |
| [ポーズ](#ポーズ)                             | `FbxPose`            |



## メッシュ

メッシュとはポリゴン（多角形）が集まったものです。物体の形状を、曲面ではなく多角形（≒平らな面）の集合体で表現します。



引用：[Wikipedia / ポリゴンメッシュ](https://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%AA%E3%82%B4%E3%83%B3%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5)
![](https://upload.wikimedia.org/wikipedia/commons/f/fb/Dolphin_triangle_mesh.png)



## LODグループ

LODは `Level of Detail` の略で、日本語では `詳細レベル` と言ったりします。

**カメラから遠い物体は荒いメッシュにして、カメラに近い物体は細かなメッシュで表示したい！**

という時にLODを設定します。

Unityの記事ですが、LODの概念はこちらの記事がわかりやすかったです！



引用： [【Unity】LODで負荷を軽減させて60FPSを死守する](http://nn-hokuson.hatenablog.com/entry/2017/03/21/200013)
[![【Unity】LODで負荷を軽減させて60FPSを死守する](https://cdn-ak.f.st-hatena.com/images/fotolife/n/nn_hokuson/20170321/20170321193923.png)](http://nn-hokuson.hatenablog.com/entry/2017/03/21/200013)




## カメラ

我々が暮らす現実の物理世界ではカメラを使って動画を撮影し、その動画をスマホ等の長方形ディスプレイで視聴します。

それと同じ様に、3DCG空間内を撮影するためのカメラという要素がFBXにはあります。

Unityでゲームを作ったりするときは、Unity側のMain Cameraを使うので、FBX内のカメラは使わないかもしれません。ただ、BlenderやMaya等で3Dアニメーションを作る際には、カメラの動きをFBX内に保存したりします。



引用：[Unity Documentatin / 物理カメラ](https://docs.unity3d.com/ja/2019.4/Manual/PhysicalCameras.html)
![](https://docs.unity3d.com/ja/2019.4/uploads/Main/GateFitUI.png)



## ライト

ライトとは照明のことです。これがないと空間が真っ暗になってしまいます。

太陽光やスポットライト等、いくつか種類があります。



引用：[Unity / FBX Exporter / Working with Prefabs](https://docs.unity3d.com/Packages/com.unity.formats.fbx@3.0/manual/prefabs.html)
![](https://docs.unity3d.com/Packages/com.unity.formats.fbx@3.0/manual/images/FBXExporter_ModelPrefab.png)



## ゴボ

ゴボとは、スポットライトに取り付ける画像のことです。影絵のようなことができます。



引用： [MOTIONBUILDER / ゴボをスポット ライトにアタッチする](https://knowledge.autodesk.com/ja/support/motionbuilder/learn-explore/caas/CloudHelp/cloudhelp/2017/JPN/MotionBuilder/files/GUID-F8ACB58F-2E74-4761-958E-A7E64758DDEE-htm.html)
[![MOTIONBUILDER / ゴボをスポット ライトにアタッチする](https://help.autodesk.com/cloudhelp/2017/JPN/MotionBuilder/images/GUID-D4600251-880D-4352-A018-139F385A6380.png)](https://knowledge.autodesk.com/ja/support/motionbuilder/learn-explore/caas/CloudHelp/cloudhelp/2017/JPN/MotionBuilder/files/GUID-F8ACB58F-2E74-4761-958E-A7E64758DDEE-htm.html)



## ナーブス

ナーブス（NURBS）は曲面の一種です。物体の形状を曲面で表現します。



引用： [Wikipedia / NURBS](https://ja.wikipedia.org/wiki/NURBS)
[![Wikipedia / NURBS](https://upload.wikimedia.org/wikipedia/commons/e/ea/NURBS_3-D_surface.gif)](https://ja.wikipedia.org/wiki/NURBS)


曲面なので、メッシュ（ポリゴン）よりも滑らかな形状を表現できますが、計算量が多いので、ゲーム等のリアルタイム描画に使うのは難しいです。

また、ポリゴンは三角形・四角形等を組み合わせて、自由な形状を表現できますが、NURBSは制御点が格子状（碁盤の目のように）に整列している必要があるため、表現できる形状に大きな制約があります。

そのため、人間・動物・植物のような生物をNURBSで表現することは難しく、映像作品で使われることもあまりないです。

ただ、NURBSは曲率（曲面の曲がり具合）を正確にコントロールしやすいという特徴があるので、自動車や船の形状を厳密に定義したいとき等によく使われます。



## テクスチャ

テクスチャはメッシュに貼り付ける画像です。物体の模様を表現します。

地球儀で例えるなら、球体がメッシュで、世界地図がテクスチャです。

テクスチャをメッシュへどのように貼り付けるのか？というデータもあり、 **UVマップ** と呼びます。



引用：[SECOND LIFE MARKETPLACE / Maruti Textures # Texture - Full Perm](https://marketplace.secondlife.com/ja-JP/p/Maruti-Textures-Earth-with-Grid-Sphere-Texture-Full-Perm/1615227?lang=ja-JP)
![](https://slm-assets.secondlife.com/assets/2487257/lightbox/earth%20grid%20sphere_003.jpg?1289517712)



## マテリアル

マテリアルは物体の質感のことです。物体に色や、光の反射具合、透明度等を設定できます。



引用：[MAYA arnoldで金属やプラスチックのマテリアル調整する時の方法](https://modelinghappy.com/archives/16175)
![](https://modelinghappy.com/wp-content/uploads/2019/01/190125_material_03_01.gif)



## コンストレイント

コンストレイントとは、物体を拘束して、動きを制限することです。

たとえば、ボールを手に拘束すれば、手の動きに合わせてボールも動きます。
拘束（コンストレイント）を解除すれば、ボールは手から落ちます。



引用：[Maya / エイム コンストレイントの例](https://knowledge.autodesk.com/ja/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2018/JPN/Maya-CharacterAnimation/files/GUID-DF8B831A-3C3F-422D-94DB-1E5A70CF3CA5-htm.html)
![](https://help.autodesk.com/cloudhelp/2018/JPN/Maya-CharacterAnimation/images/GUID-737A6F9C-E303-4976-9563-490DCC5C9365.gif)



## デフォーマー

デフォーマーとは制御点を利用して頂点群（メッシュ）を動かすことです。（Photoshopのワープとかのイメージに近いです。）

骨の動きに合わせてメッシュが変形するスケルトンアニメーション（スキニング）もデフォーマーの一種みたいです。



引用：[Maya / ラティス デフォーマを作成する](https://knowledge.autodesk.com/ja/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2018/JPN/Maya-CharacterAnimation/files/GUID-8F27AC88-6892-4EAE-A1CB-C43FADF95A64-htm.html)
![](https://help.autodesk.com/cloudhelp/2018/JPN/Maya-CharacterAnimation/images/GUID-E6E34AFC-BD23-4723-92C5-D948CDD3A117.gif)



## グローバル設定

グローバル設定とは、シーン全体に関わる設定のことです。メタデータとかヘッダー等と呼ぶ人もいます。



## アクシスシステム

アクシスシステムとは、座標軸の方向の決め方のことです。 **右手系** と **左手系** の2種類あります。

- 右手系：x軸が東方向、z軸が北方向、y軸が天空方向
- 左手系：x軸が東方向、z軸が南方向、y軸が天空方向

右手とか左手というのは、x軸を親指、y軸を人差し指、z軸を中指で表す時に、どちらの手を使うか？ということです。



引用：[stack overflow / OpenCV triangulatePoints handedness](https://stackoverflow.com/questions/32889584/opencv-triangulatepoints-handedness)
![](https://i.stack.imgur.com/oraRN.jpg)



## ノード

FBXにおけるノードとは、物体の位置・回転・大きさをひとまとめにしたものです。Unityでいう `Transform` に相当します。

すべてのノードは親子関係を持ちます。たとえば、右肩→右肘→右手首という感じです。

ノードの位置・回転・大きさは親の影響をうけます。たとえば、右肩が1m前に進めば、右手首も1m前に進みます。



引用：[Autodesk FBX 2017 / FBX Nodes](https://help.autodesk.com/view/FBX/2017/ENU/?guid=__files_GUID_02CF7021_71FF_4F31_A072_291EF86CCA5A_htm)
![](https://help.autodesk.com/cloudhelp/2017/ENU/FBX-Developer-Help/images/GUID-11D715D7-470E-4A19-B7CC-77B8A6B5A6B6-low.png)



## マーカー

マーカーとは、モーションキャプチャーの目印のことで、皮膚の上に貼ったりします。

マーカーの位置を元に、関節の位置を計算したりします。



引用：[Recommended marker set for full body capture](https://www.utdallas.edu/atec/midori/Handouts/marker_set.html)
![](https://www.utdallas.edu/atec/midori/Handouts/marker_set_files/markers_back.jpg)



## ライン

ラインは直線のことです。直線に沿って、物体を動かすときとかに使います。



## スケルトン

スケルトンは人間の骨格のことです。ボーン（骨）とジョイント（関節）の集合体です。

骨格とはいっても、生物的な意味よりは、機械的な意味合いが強いです。たとえば、前髪を揺らしたければ、前髪ボーンを設定します。

人間の動きのことを **スケルトンアニメーション** と呼んだりします。



引用：[STYLY MAGAZINE / Autodesk Maya〜スケルトン編〜](https://styly.cc/ja/tips/maya-skelton-setup/)
![](https://styly.cc/wp-content/uploads/2018/04/10-e1523944625365.png)



## アニメーションカーブ

アニメーションカーブとは、物体の動きを定義したデータです。

スケルトンアニメーションの場合は、ジョイントの回転方向の時間変化（タイムライン）を設定します。



引用：[Unity Documentation / アニメーションカーブの使用](https://docs.unity3d.com/ja/2018.4/Manual/animeditor-AnimationCurves.html)
![](https://docs.unity3d.com/ja/2018.4/uploads/Main/AnimationEditorBouncingCube.gif)



## ポーズ

ポーズとは姿勢のことです。時間変化しないアニメーションととらえることもできるかもしれません。



引用：[DIGITAL FRONTIER / MotionBuilderの為のキャラクターセットアップ](https://dftalk.jp/?p=15030)
![](https://dftalk.jp/cp-bin/wordpress/wp-content/uploads/2015/01/SU_001_001_t.gif)




# さいごに

以下を参考にさせていただきました。

- [Welcome to the FBX SDK / Supported scene elements](https://help.autodesk.com/view/FBX/2019/ENU/?guid=FBX_Developer_Help_welcome_to_the_fbx_sdk_supported_scene_elements_html)
- [Autodesk FBX 2017](https://help.autodesk.com/view/FBX/2017/ENU/)