# FBX Export Options

## FBX 옵션 활용 패턴

### Pattern 1 — Named preset (v2, recommended)
Apply a saved preset by name. The simplest approach.
```python
from os_fast_ref.api import FastRefAPI

api = FastRefAPI()
api.export_fbx(slot=0, output_path=r"J:\output\char.fbx", preset="Unreal_Ani")
api.export_fbx_all(output_folder=r"J:\output", preset="Unreal")
```
존재하지 않는 프리셋 이름은 `ValueError`를 즉시 발생시킵니다.

### Pattern 2 — Override specific keys only
Keep the default preset and change only some options.
```python
from os_fast_ref.api import FastRefAPI

api = FastRefAPI()
api.export_fbx(slot=0, output_path=r"J:\output\char.fbx",
               fbx_options={"Animation": False})
```

### Pattern 3 — Copy defaults then modify
Fetch all defaults and change only what you need.
```python
from os_fast_ref.api import FastRefAPI

api = FastRefAPI()
defaults = api.get_fbx_default_options()
opts = defaults['options'].copy()
opts['UpAxis'] = 'Y'
opts['ConvertUnit'] = 'm'
api.export_fbx_all(output_folder=r"J:\output", fbx_options=opts)
```

### Pattern 4 — preset + partial override (v2)
Load a preset then override only specific options.
```python
from os_fast_ref.api import FastRefAPI

api = FastRefAPI()
api.export_fbx(
    slot=0,
    output_path=r"J:\output\char.fbx",
    preset="Unreal_Ani",
    fbx_options={"BakeAnimation": False}
)
```

### Pattern 5 — Reset Root to 0,0,0
Reset the Root node's transform to the origin before exporting.
```python
from os_fast_ref.api import FastRefAPI

api = FastRefAPI()
api.export_fbx(
    slot=0,
    output_path=r"J:\output\char.fbx",
    fbx_options={
        "ResetRoot": True,
        "ResetRootMode": "manual",
        "ResetRootName": "Root",
        "ResetAxisX": 0.0,
        "ResetAxisY": 0.0,
        "ResetAxisZ": 0.0,
    }
)
```
> **참고:** `ResetRootMode`
- `"auto"` — Skin된 본 계층을 타고 올라가 루트를 자동 추정
- `"manual"` — `ResetRootName`으로 지정한 이름의 노드를 명시적으로 사용

---

## 주요 FBX 옵션 목록
| 키 | 타입 | 설명 |
| --- | --- | --- |
| `Animation` | `bool` | 애니메이션 포함 여부 |
| `Skin` | `bool` | 메시 포함 여부 (False면 Bone만 내보냄) |
| `Shape` | `bool` | Morph Target(Shape) 포함 여부 |
| `BakeAnimation` | `bool` | 키프레임 베이크 여부 |
| `SmoothingGroups` | `bool` | Smoothing Group 포함 여부 |
| `EmbedTextures` | `bool` | 텍스처 파일 임베드 여부 |
| `ASCII` | `bool` | FBX ASCII 형식 여부 (False = Binary) |
| `UpAxis` | `str` | Up 축 설정 (`"Y"` 또는 `"Z"`) |
| `ConvertUnit` | `str` | 단위 변환 (`"cm"`, `"m"` 등) |
| `RemoveNameSpace` | `bool` | 내보내기 전 네임스페이스 제거 여부 |
| `ResetRoot` | `bool` | Root Transform 리셋 여부 |
| `ResetRootMode` | `str` | Root 탐색 방식 (`"auto"` 또는 `"manual"`) |
| `ResetRootName` | `str` | manual 모드에서 찾을 노드 이름 |
| `ResetAxisX/Y/Z` | `float` | Root 리셋 후 적용할 회전값 (도 단위) |