# Ep.23 — [FAQ] 사내 자체 Export 툴을 사용하려면 어떻게 해야 하나요?

**fast-ref**는 기본적으로 자체 기능을 통한 게임 엔진용 FBX Export 최적화를 지향하고 있습니다. 하지만 각 스튜디오마다 고유한 파이프라인과 커스터마이징 니즈가 있다는 점을 충분히 이해하고 있습니다.

fast-ref 내의 모든 구성 요소는 **3ds Max 표준 노드**를 기반으로 설계되었습니다. 따라서 **Export 후 씬 파일을 저장하지만 않으신다면**, 데이터 구조를 자유롭게 편집하여 사내 툴과 연동하셔도 무방합니다.

> **⚠️ 가장 중요한 원칙: Export 작업 후에는 절대로 씬을 저장하지 마세요.**
fast-ref의 레퍼런스 시스템 데이터가 손실되어 정상적인 관리가 불가능해집니다.
> 

---

### 1. Reset All References 기능 (v1.0.4~)

**v1.0.4**부터 제공되는 **Reset All References** 기능을 사용하면, 모든 레퍼런스가 일반 씬 오브젝트로 변환되어 **fast-ref 링크와 무관한 상태**에서 자유롭게 작업할 수 있습니다.

**경로:** `Tools → Edit → Reset All References (Merge All)`

이 기능은 다음 작업을 자동으로 수행합니다:

- 모든 네임스페이스 및 접미사 정리
- 계층 구조(Hierarchy) 해제
- 레이어 구조 평탄화
- fast-ref 시스템 데이터 제거

사내 Export 툴과의 일시적인 연동이 필요할 때, 이 기능을 실행한 뒤 Export를 진행하시면 됩니다.

> **⚠️ 다시 한번 강조:** Reset 이후 씬을 **저장하지 마세요.** 저장 없이 Export만 진행하시면 됩니다.
>

![image.png](image.png)

![image.png](image_1.png)

![image.png](image_2.png)

### Merge All Options (General Options에서 설정 가능)

Reset All References 실행 시 적용되는 suffix 정리 옵션은 **General Options** 다이얼로그에서 변경할 수 있습니다.

**경로:** `Tools → General Options → Merge All Options`

| 옵션 | 기본값 | 설명 | 기본값 의도 |
| --- | --- | --- | --- |
| **Force Remove Node Suffix (.r\*)** | ✅ ON | 노드 이름에서 `.r1`, `.r2` 접미사 제거 | 게임 엔진이 노드 이름 기반으로 본/메시를 매핑하므로, 접미사가 남으면 리타겟·스크립트 참조가 깨질 수 있음 |
| **Force Remove Layer Suffix (.r\*)** | ⬜ OFF | 레이어 이름에서 접미사 제거 (동일 이름 존재 시 자동 통합) | 동일 리소스를 복수 배치한 경우 의도치 않은 레이어 병합이 발생할 수 있어, 안전을 위해 기본 OFF |
| **Force Remove SelectionSet Suffix (.r\*)** | ✅ ON | SelectionSet 이름에서 접미사 제거 (동일 이름 존재 시 자동 통합) | Export 스크립트가 SelectionSet 이름으로 그룹을 지정하는 경우가 많아, 접미사가 남으면 호환성 문제 발생 가능 |

---

### 2. Script API 지원

보다 고도화된 자동화가 필요한 경우를 위해, **Fast-Ref Script API**를 함께 제공할 예정입니다. 사내 TA분들께서 Python 스크립트를 통해 레퍼런스 조회, 추가, 제거, Merge 등의 작업을 자동화하실 수 있습니다.

```python
import sys, os, pymxs
_p = os.path.join(pymxs.runtime.getDir(pymxs.runtime.Name("userScripts")), "os_fast_ref_package")
if _p not in sys.path: sys.path.append(_p)

from os_fast_ref.api import FastRefAPI

api = FastRefAPI()
result = api.merge_all_references(
    remove_node_suffix=True,
    remove_layer_suffix=True,
    remove_selectionset_suffix=True,
)
print(result['message'])
# → "Merge 완료: 3개 성공, 0개 실패"
```

API_Guide_Link : https://docs.otakusolutions.com/api/fast-ref/merge-all-references?lang=en

---

### 3. 수동 편집 시 참고 사항

API나 Reset 기능을 사용하지 않고 직접 스크립트를 작성하여 편집하실 경우, 아래 규칙을 참고해 주세요.

- **네임스페이스 제거:** `:` 기호 앞의 문자열을 제거합니다. (예: `Mable:Root.r1` → `Root.r1`)
- **접미사 제거:** `.r*` 형태의 접미사를 제거합니다. (예: `Root.r1` → `Root`)
- **계층 해제:** `[REF]`로 시작하는 노드의 자식들을 Unparent 처리합니다.
- **레이어 정리:** `[REF]`로 시작하는 레이어 하위의 자식 레이어들을 최상위로 이동 후, `[REF]` 레이어를 삭제합니다.

---

### 💡 가장 권장드리는 방법

가장 효율적인 연동 방법은 **현재 스튜디오의 내부 Export 환경과 요구사항을 저희 측에 공유**해 주시는 것입니다. 저희가 직접 가이드라인을 제공해 드리는 과정에서 의외로 더 간단한 해결책을 찾을 수 있는 경우가 많습니다.

구조 파악이나 연동 과정에서 기술적인 지원이 필요하시다면 언제든지 아래 연락처로 문의해 주시기 바랍니다.

**오타쿠 솔루션즈는 여러분의 유연한 파이프라인 구축을 적극 지원합니다.**