# FBX地獄

## 0) まだ見ぬ地獄がそこにはある

- FBXは地獄といわれている。その地獄の案内図である。
- ****FBXはインデックス空間・座標系・参照モデルが“複数”混在****するため、素直に読むと破綻する。
- ****Importerで正規化****（頂点/ボーン/アニメ/素材の各レイヤを、自分のランタイムに合わせて再マップ）しないと地獄行き。
- FBXSDKは強力だが、****LayerElementの Mapping/Reference、Axis/Unit 変換、Transformのピボット系、Skin/BlendShapeの解釈****を間違えると沼に落ちる。

---

## 1) メッシュ／頂点地獄

### 症状

- 「****頂点インデックスが合わない****」「法線やUVが面ごとにバラバラ」「トライアングル化で壊れる」。
- スキンウェイトを頂点に当てると崩れる。

### 原因

- FBXSDKでの****頂点概念の違い****：
    - ****Control Point****（論理頂点＝位置配列）
    - ****Polygon Vertex****（フェイス頂点＝コーナー＝面内の頂点）
    - <span style="white-space: pre-wrap;">LayerElementは </span>****Mapping（**`<strong class="editor-theme-bold editor-theme-code">eByControlPoint</strong>` **/** `<strong class="editor-theme-bold editor-theme-code">eByPolygonVertex</strong>` **…）****<span style="white-space: pre-wrap;"> と </span>****Reference（**`<strong class="editor-theme-bold editor-theme-code">eDirect</strong>` **/** `<strong class="editor-theme-bold editor-theme-code">eIndexToDirect</strong>`**）****<span style="white-space: pre-wrap;"> を持つ。ここを誤ると属性（Normal/UV/Color/Material）を</span>****別インデックス空間****<span style="white-space: pre-wrap;">で読んでしまう。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_mesh.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_layer_element.html)

### 対処

- ****FbxLayerElement****<span style="white-space: pre-wrap;"> の </span>`<span class="editor-theme-code">GetMappingMode()</span>`<span style="white-space: pre-wrap;"> と </span>`<span class="editor-theme-code">GetReferenceMode()</span>`<span style="white-space: pre-wrap;"> を必ず確認し、</span>
    - `<span class="editor-theme-code">eByControlPoint</span>`<span style="white-space: pre-wrap;"> は CP インデックスで、</span>
    - `<span class="editor-theme-code">eByPolygonVertex</span>`<span style="white-space: pre-wrap;"> は </span>****面頂点（コーナー）****<span style="white-space: pre-wrap;"> で引く。</span>
    - `<span class="editor-theme-code">eIndexToDirect</span>`<span style="white-space: pre-wrap;"> の場合は </span>****IndexArray → DirectArray****<span style="white-space: pre-wrap;"> の二段引き。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_layer_element.html)
- FBXSDKのサンプル「Meshes」を見て、****Control Point とポリゴン頂点の違い****<span style="white-space: pre-wrap;">と初期化/トライアングル化の流れを把握する。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2020/ENU/FBX-Developer-Help/files/meshes_materials_and_textures/FBX_Developer_Help_meshes_materials_and_textures_meshes_html.html)

---

## 2) ボーン／スキン地獄

### 症状

- 「****ウェイトが合わない****」「ボーンの行列が違う」「BindPoseと計算結果がズレる」「DualQuaternion/Linearで結果が違う」。

### 原因

- ****Skinは Control Point 基準****で、****Cluster（ボーン）ごとにCPインデックス＋ウェイト****で定義される。
- <span style="white-space: pre-wrap;">Skinningタイプは </span>`<span class="editor-theme-code">Rigid/Linear/DualQuaternion/Blend</span>`<span style="white-space: pre-wrap;"> があり、計算方法が異なる。</span>
- ****Bind Pose（FbxPose）****<span style="white-space: pre-wrap;"> は「スキン拘束時の</span>****グローバル行列****のスナップショット」であり、使い方を誤ると****逆行列／オフセット****<span style="white-space: pre-wrap;">の計算が狂う。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/cpp_ref/class_fbx_skin.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_cluster.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_pose.html)

### 対処

- <span style="white-space: pre-wrap;">ウェイト適用は </span>****CP単位で集計****した後、****ランタイム頂点****<span style="white-space: pre-wrap;">へ再投影する（コーナー分裂を理解）。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_mesh.html)
- `<span class="editor-theme-code">FbxSkin::GetSkinningType()</span>`<span style="white-space: pre-wrap;"> を見て、</span>****自前スキニングのアルゴリズム****<span style="white-space: pre-wrap;">を分岐。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/cpp_ref/class_fbx_skin.html)
- BindPose（`<span class="editor-theme-code">FbxPose</span>`）の仕様（****グローバル行列****が基本）を確認し、****ボーンオフセット行列****の導出（Bind姿勢の逆）と、****階層評価****<span style="white-space: pre-wrap;">の順序を厳守。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_pose.html)

---

## 3) トランスフォーム（TRS＋ピボット＋プリ/ポスト回転）地獄

### 症状

- 「****ローカル/グローバルが合わない****」「回転順序で破綻」「スケール継承で単位変換が壊れる」「ジオメトリ変換が二重適用」。

### 原因

- FBXノードには****LclTranslation/Rotation/Scaling****に加え、****GeometricTranslation/Rotation/Scaling****（ジオメトリオフセット）、****PreRotation/PostRotation、Pivot/Offset****などが存在。
- 継承タイプ（`<span class="editor-theme-code">eInheritRrSs</span>`/`<span class="editor-theme-code">eInheritRSrs</span>`/`<span class="editor-theme-code">eInheritRrs</span>`）により****親のスケールの伝播****<span style="white-space: pre-wrap;">が変わり、ユニット変換で事故る。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2020/ENU/FBX-Developer-Help/files/nodes_and_scene_graph/fbx_nodes/FBX_Developer_Help_nodes_and_scene_graph_fbx_nodes_transformation_data_html.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/cpp_ref/class_fbx_transform.html)

### 対処

- ****EvaluateGlobalTransform / EvaluateLocalTransform****<span style="white-space: pre-wrap;">（または </span>`<span class="editor-theme-code">FbxAnimEvaluator</span>`）で****SDKの評価結果****を信頼して取り出す。自前合成は****検証用****<span style="white-space: pre-wrap;">に限定。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2020/ENU/FBX-Developer-Help/files/nodes_and_scene_graph/fbx_nodes/FBX_Developer_Help_nodes_and_scene_graph_fbx_nodes_transformation_data_html.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/cpp_ref/class_fbx_anim_evaluator.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2015/ENU/FBX-Developer-Help/cpp_ref/class_fbx_anim_evaluator.html)
- ピボットやプリ/ポスト回転は****ノードプロパティ****から取るより、****Evaluatorに任せる****<span style="white-space: pre-wrap;">のが安全。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2015/ENU/FBX-Developer-Help/cpp_ref/class_fbx_anim_evaluator.html)

---

## 4) 座標系／単位変換地獄

### 症状

- 「****Z-up/Y-upで向きが変****」「スケールがおかしい」「メッシュ頂点は変わってないのに配置が崩れる」。

### 原因

- FBXSDKのデフォルトは****右手系・Y-up****。Axis/Unit変換は****ノードのプリローテーション/スケール＆アニメ****に作用し、****頂点値は変えない****。
- ****Rrs継承****<span style="white-space: pre-wrap;">ノードに対する単位変換は特に危険。オプション指定が必要。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/nodes_and_scene_graph/fbx_scenes/scene_axis_and_unit_conversion.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_axis_system.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/struct_fbx_system_unit_1_1_conversion_options.html)

### 対処

- ****FbxAxisSystem::ConvertScene()****<span style="white-space: pre-wrap;"> と </span>****FbxSystemUnit::ConvertScene()****<span style="white-space: pre-wrap;"> を </span>****ロード直後に一度だけ****行い、****オプション****（`<span class="editor-theme-code">mConvertRrsNodes</span>`<span style="white-space: pre-wrap;"> など）を適切に設定。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/nodes_and_scene_graph/fbx_scenes/scene_axis_and_unit_conversion.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/struct_fbx_system_unit_1_1_conversion_options.html)
- 変換は****アニメとノード行列にのみ影響****し、メッシュ頂点値は変わらないことを前提に、****その後の全評価****<span style="white-space: pre-wrap;">を統一座標系で行う。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/nodes_and_scene_graph/fbx_scenes/scene_axis_and_unit_conversion.html)

---

## 5) アニメーション評価・リサンプリング地獄

### 症状

- 「****時間軸（fps）がズレる****」「補間が崩れる」「複数レイヤの結果が違う」「Take/Stackの切り替えで値が変」。

### 原因

- <span style="white-space: pre-wrap;">FBXSDKのアニメ構造は </span>****Stack → Layer → CurveNode → Curve****<span style="white-space: pre-wrap;"> の多段。評価は </span>`<span class="editor-theme-code">FbxAnimEvaluator</span>`<span style="white-space: pre-wrap;"> が担当。</span>
- ****FBXファイルバージョン****<span style="white-space: pre-wrap;">間で\*\*タイムベース（例：7700のミリ秒定義変更）\*\*が異なり、旧SDKだとタイミングがズレることがある。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2015/ENU/FBX-Developer-Help/files/GUID-E8A5224C-488F-4477-AFE1-FC1EDB6934CB.htm)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/cpp_ref/class_fbx_anim_evaluator.html)<span style="white-space: pre-wrap;">, </span>[\[coohom.com\]](https://www.coohom.com/article/ascii-fbx-file-limitation)<span style="white-space: pre-wrap;">, </span>[\[zenn.dev\]](https://zenn.dev/kazu0617/articles/939b3334176d73)

### 対処

- ****Evaluator****での時刻評価（`<span class="editor-theme-code">EvaluateGlobalTransform(time)</span>`<span style="white-space: pre-wrap;">）を一貫使用。レイヤ合成の仕様を理解する。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/cpp_ref/class_fbx_anim_evaluator.html)
- <span style="white-space: pre-wrap;">必要に応じて </span>****FbxAnimCurveFilterResample****<span style="white-space: pre-wrap;"> で</span>****等間隔フレームにリサンプル****<span style="white-space: pre-wrap;">し、ランタイム側の更新ステップと一致させる。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_anim_curve_filter_resample.html)
- ****SDK/FBX版数の互換性****に注意（必要なら****古いFBXエクスポート版****<span style="white-space: pre-wrap;">へダウングレード）。 </span>[\[daz3d.com\]](https://www.daz3d.com/forums/discussion/662496/which-binary-is-the-best-for-fbx-export)

---

## 6) マテリアル／テクスチャ／レイヤード地獄

### 症状

- 「****PBRが消える****」「レイヤードテクスチャが反映されない」「テクスチャパスが死ぬ」「UVセットの選択が合わない」。

### 原因

- FBXSDKの標準は****Phong/Lambert****ベース。DCCのPBRは****ベイクしてテクスチャへ落とす****必要。
- ****FbxLayeredTexture****<span style="white-space: pre-wrap;"> や複数UVセットは</span>****接続関係****（Materialのプロパティにテクスチャ接続）と****UVマッピング****<span style="white-space: pre-wrap;">の指定を正しくたどる必要がある。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2020/ENU/FBX-Developer-Help/files/meshes_materials_and_textures/FBX_Developer_Help_meshes_materials_and_textures_materials_html.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2020/ENU/FBX-Developer-Help/files/meshes_materials_and_textures/FBX_Developer_Help_meshes_materials_and_textures_textures_html.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/meshes_materials_and_textures/textures/layered_textures.html)

### 対処

- DCC側で****PBRをベイク****（Metal/Rough 等のテクスチャ） → FBXで****Embed Media****<span style="white-space: pre-wrap;">か、外部参照の相対パス統一。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2022/ENU/3DSMax-Rendering/files/GUID-ED37BBFE-1134-482A-8C37-29103C8AD830.htm)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2022/JPN/3DSMax-Rendering/files/GUID-ED37BBFE-1134-482A-8C37-29103C8AD830.htm)
- <span style="white-space: pre-wrap;">テクスチャは </span>****Materialプロパティ（Diffuse等）に Connect****、UVは****LayerElementUV****<span style="white-space: pre-wrap;">のMapping/Refを確認。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2020/ENU/FBX-Developer-Help/files/meshes_materials_and_textures/FBX_Developer_Help_meshes_materials_and_textures_textures_html.html)

---

## 7) ブレンドシェイプ（モーフ）地獄

### 症状

- 「****モーフが反映されない****」「中間ターゲット（in-between）が崩れる」「複数ターゲットの重み進行がおかしい」。

### 原因

- ****BlendShape → BlendShapeChannel → Shape****<span style="white-space: pre-wrap;"> の三層構造。</span>
- ****Channel****ごとに複数ターゲット／****FullDeformPercent****（進行率）を持つため、****単純な1ターゲット想定****<span style="white-space: pre-wrap;">だと破綻。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/cpp_ref/class_fbx_blend_shape.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_blend_shape_channel.html)

### 対処

- ****Channel単位で DeformPercent を評価****し、****ターゲット配列と進行率****<span style="white-space: pre-wrap;">を踏まえてメッシュ差分を合成。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_blend_shape_channel.html)

---

## 8) ファイルフォーマット／互換性地獄

### 症状

- 「****ASCII/Binaryどっち？****」「新しいFBXが古いツールで読めない」「埋め込みメディアが消える」。

### 原因

- ****FBXはプロプライエタリ****、かつ****バージョン差****が大きい。ASCII/Binaryで挙動違い、古いSDKやツールで****バージョン非互換****<span style="white-space: pre-wrap;">が発生。 </span>[\[en.wikipedia.org\]](https://en.wikipedia.org/wiki/FBX)

### 対処

- ****ターゲット（ゲームエンジン／ツール）のSDK版****に合わせて****FBXバージョンを選択****<span style="white-space: pre-wrap;">（必要なら2014/2016/2020系へダウングレード）。 </span>[\[daz3d.com\]](https://www.daz3d.com/forums/discussion/662496/which-binary-is-the-best-for-fbx-export)
- 開発時は****ASCIIで可視化・デバッグ****、配布は****Binary****<span style="white-space: pre-wrap;">（軽量・高速）を推奨。 </span>[\[gamedev.st...change.com\]](https://gamedev.stackexchange.com/questions/66368/what-is-the-advantage-of-binary-fbx-files-over-ascii-ones)

---

## 9) FBXSDK“運用”地獄（設計・APIの落とし穴）

### 症状

- 「****オブジェクト寿命管理****でメモリリーク」「スレッドセーフと誤解」「シーン評価と自前行列が不一致」。

### 原因＆対処

- ****FbxManager****<span style="white-space: pre-wrap;"> をアプリで</span>****唯一****作成し、破棄時に****配下オブジェクトも破棄****<span style="white-space: pre-wrap;">されることを理解（寿命管理）。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2020/ENU/FBX-Developer-Help/files/getting_started/FBX_Developer_Help_getting_started_your_first_fbx_sdk_program_html.html)
- ****Evaluator****に統一して****時刻評価****<span style="white-space: pre-wrap;">を行う（自前行列との二重系は避ける）。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2015/ENU/FBX-Developer-Help/cpp_ref/class_fbx_anim_evaluator.html)
- SDKサンプル群で「****Instances / Transformations / Layers****」など、****典型的なパターン****<span style="white-space: pre-wrap;">を一度通す。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/cpp_ref/_instances_2main_8cxx-example.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/_transformations_2main_8cxx-example.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/_layers_2main_8cxx-example.html)

---

## 10) 実務向け標準フロー（痛みを最小化するための“正規化”）

1. ****シーン読込直後に Axis/Unit を目標系へ統一****<span style="white-space: pre-wrap;">（Y/Z-up、cm/m など）。オプションで Rrs回避。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/nodes_and_scene_graph/fbx_scenes/scene_axis_and_unit_conversion.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/struct_fbx_system_unit_1_1_conversion_options.html)
2. ****メッシュ正規化****
    - <span style="white-space: pre-wrap;">ControlPoint / PolygonVertex / LayerElement の </span>****Mapping/Reference を解決****して、****ランタイム頂点****<span style="white-space: pre-wrap;">へ集約。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_layer_element.html)
3. ****スキン正規化****
    - Clusterの****CPインデックス＋ウェイト****を取り込み、****ランタイム頂点へ再投影****。SkinningTypeでアルゴリズム分岐。BindPoseは****グローバル行列****<span style="white-space: pre-wrap;">として扱う。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/cpp_ref/class_fbx_skin.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_cluster.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_pose.html)
4. ****アニメ正規化****
    - <span style="white-space: pre-wrap;">Stack/Layer/Curveを </span>`<span class="editor-theme-code">FbxAnimEvaluator</span>`<span style="white-space: pre-wrap;"> で評価。必要なら </span>****等間隔リサンプリング****<span style="white-space: pre-wrap;">。FBX版数差（タイム定義）に注意。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/cpp_ref/class_fbx_anim_evaluator.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_anim_curve_filter_resample.html)<span style="white-space: pre-wrap;">, </span>[\[zenn.dev\]](https://zenn.dev/kazu0617/articles/939b3334176d73)
5. ****マテリアル/テクスチャ正規化****
    - PBRは****DCC側でベイク****<span style="white-space: pre-wrap;">してテクスチャ接続。複数UVやレイヤードは接続を忠実に追跡。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2022/ENU/3DSMax-Rendering/files/GUID-ED37BBFE-1134-482A-8C37-29103C8AD830.htm)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2020/ENU/FBX-Developer-Help/files/meshes_materials_and_textures/FBX_Developer_Help_meshes_materials_and_textures_textures_html.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/meshes_materials_and_textures/textures/layered_textures.html)
6. ****ブレンドシェイプ正規化****
    - Channel単位で`<span class="editor-theme-code">DeformPercent</span>`<span style="white-space: pre-wrap;">評価、ターゲットと進行率を解釈して差分合成。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_blend_shape_channel.html)
7. ****出力****
    - ランタイムでは****自前の密なインデックス・配列レイアウト****<span style="white-space: pre-wrap;">に落とす。FBXは中間／オーサリング専用。 </span>[\[gamedev.st...change.com\]](https://gamedev.stackexchange.com/questions/66368/what-is-the-advantage-of-binary-fbx-files-over-ascii-ones)

---

## 11) “FBX地獄”チェックリスト（導入時に潰しておく）

- [ ] ****LayerElement****<span style="white-space: pre-wrap;"> の Mapping / Reference を網羅テスト（Normal/UV/Color/Material）。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_layer_element.html)
- [ ] ****Axis/Unit の ConvertScene****<span style="white-space: pre-wrap;"> を必ず一度だけ。Rrsノードは除外（オプション）。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/nodes_and_scene_graph/fbx_scenes/scene_axis_and_unit_conversion.html)
- [ ] ****Evaluator****<span style="white-space: pre-wrap;"> 統一使用（自前TRS合成は検証用途のみ）。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2015/ENU/FBX-Developer-Help/cpp_ref/class_fbx_anim_evaluator.html)
- [ ] ****SkinningType****<span style="white-space: pre-wrap;"> と </span>****BindPose****<span style="white-space: pre-wrap;"> の仕様確認。CP基準→ランタイム頂点へ再投影。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/cpp_ref/class_fbx_skin.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_pose.html)
- [ ] ****アニメのリサンプリング****<span style="white-space: pre-wrap;">有無（ゲーム側のフレームに合わせる）。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_anim_curve_filter_resample.html)
- [ ] ****PBRはベイク****<span style="white-space: pre-wrap;">してテクスチャに。レイヤード/UV接続の追跡。 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2022/ENU/3DSMax-Rendering/files/GUID-ED37BBFE-1134-482A-8C37-29103C8AD830.htm)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/meshes_materials_and_textures/textures/layered_textures.html)
- [ ] ****FBXバージョン選択****<span style="white-space: pre-wrap;">（ターゲットのSDK/インポータ互換性に合わせる）。 </span>[\[daz3d.com\]](https://www.daz3d.com/forums/discussion/662496/which-binary-is-the-best-for-fbx-export)

---

## 12) 参考リンク（実務で頻繁に見る“ドキュメントの核心”）

- ****LayerElement（Mapping/Reference）****<span style="white-space: pre-wrap;">：FbxLayerElement クラス仕様、実装サンプル（Normals/UV/Layered） </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_layer_element.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/_layers_2main_8cxx-example.html)
- ****メッシュのCP/ポリゴン頂点****<span style="white-space: pre-wrap;">：FbxMesh／Meshesガイド </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_mesh.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2020/ENU/FBX-Developer-Help/files/meshes_materials_and_textures/FBX_Developer_Help_meshes_materials_and_textures_meshes_html.html)
- ****Axis/Unit変換****<span style="white-space: pre-wrap;">：Scene Axis and Unit Conversion、FbxAxisSystem／FbxSystemUnit 仕様とオプション </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/nodes_and_scene_graph/fbx_scenes/scene_axis_and_unit_conversion.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_axis_system.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/struct_fbx_system_unit_1_1_conversion_options.html)
- ****Transform評価****<span style="white-space: pre-wrap;">：Transformation data、Evaluator（FbxAnimEvaluator） </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2020/ENU/FBX-Developer-Help/files/nodes_and_scene_graph/fbx_nodes/FBX_Developer_Help_nodes_and_scene_graph_fbx_nodes_transformation_data_html.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2015/ENU/FBX-Developer-Help/cpp_ref/class_fbx_anim_evaluator.html)
- ****Skin/Cluster/BindPose****<span style="white-space: pre-wrap;">：FbxSkin／FbxCluster／FbxPose 仕様 </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/cpp_ref/class_fbx_skin.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_cluster.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_pose.html)
- ****BlendShape****<span style="white-space: pre-wrap;">：FbxBlendShape／BlendShapeChannel 仕様（in-between対応） </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/cpp_ref/class_fbx_blend_shape.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_blend_shape_channel.html)
- ****PBR/テクスチャ****<span style="white-space: pre-wrap;">：Materials/Textures ガイド、LayeredTexture、PBRベイク→FBXエクスポート例（3ds Max） </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2020/ENU/FBX-Developer-Help/files/meshes_materials_and_textures/FBX_Developer_Help_meshes_materials_and_textures_materials_html.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2020/ENU/FBX-Developer-Help/files/meshes_materials_and_textures/FBX_Developer_Help_meshes_materials_and_textures_textures_html.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/meshes_materials_and_textures/textures/layered_textures.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2022/ENU/3DSMax-Rendering/files/GUID-ED37BBFE-1134-482A-8C37-29103C8AD830.htm)
- ****アニメ構造とリサンプル****<span style="white-space: pre-wrap;">：Animation data structures、Evaluator、Resample フィルタ </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2015/ENU/FBX-Developer-Help/files/GUID-E8A5224C-488F-4477-AFE1-FC1EDB6934CB.htm)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2018/ENU/FBX-Developer-Help/cpp_ref/class_fbx_anim_evaluator.html)<span style="white-space: pre-wrap;">, </span>[\[help.autodesk.com\]](https://help.autodesk.com/cloudhelp/2019/ENU/FBX-Developer-Help/cpp_ref/class_fbx_anim_curve_filter_resample.html)
- ****FBX版数・互換性****<span style="white-space: pre-wrap;">：実務上のバージョン選択の議論（フォーラム）、FBXの背景（Wikipedia） </span>[\[daz3d.com\]](https://www.daz3d.com/forums/discussion/662496/which-binary-is-the-best-for-fbx-export)<span style="white-space: pre-wrap;">, </span>[\[en.wikipedia.org\]](https://en.wikipedia.org/wiki/FBX)

---

### さいごに

****「FBXは中間形式」と割り切り、Importerで“密な配列＆自前の一貫した座標・時間・マテリアル表現”に落とすのが最も安全です。****