Fast Ref API / Getting Started

v1 → v2 마이그레이션 가이드

마크다운 다운로드

v1에서 v2로 전환하는 방법을 설명합니다. 기존 코드 대부분은 그대로 동작합니다. 변경이 필요한 부분은 아래와 같습니다: (1) Import 방식, (2) slot 타입 규칙, (3) 삭제된 select_*get_*(select=1) 치환.


1. Import 방식 변경 (필수)

v1 (5줄)

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

v2 (1줄)

from os_fast_ref.api import FastRefAPI

v2 .mzp 설치 시 startup 스크립트(fast_ref_register_path.ms)가 자동으로 등록되어 Max 실행 직후부터 경로 설정 없이 import됩니다.

주의: v2 .mzp로 재설치하지 않으면 한 줄 import가 동작하지 않습니다. 반드시 최신 MZP로 재설치하세요.


2. slot 타입 규칙 강화 (확인 필요)

v2에서는 slot 인자에 int만 허용합니다. bool, str, float 등은 TypeError를 즉시 발생시킵니다.

영향받는 메서드

remove_reference, replace_reference, reload_reference, merge_reference, set_space_activate, set_unpack, export_fbx

확인 사항

# This v1 pattern raises TypeError in v2
slot = "0"   # string slot
api.remove_reference(slot=slot)  # TypeError!

# Correct approach
slot = int(slot)
api.remove_reference(slot=slot)  # OK

3. 신규 메서드 (선택적 활용)

메서드 설명
get_outdated_references() OUTDATED 레퍼런스 목록만 반환
reload_outdated_references() OUTDATED 레퍼런스만 리로드
refresh() InfoNode 강제 재스캔
get_all_objects / get_skin_meshes / get_skin_bones / get_all_skin_objects / get_duplicate_nodes / get_biped_com / get_biped_nodes Get Nodes 조회 API (select=0|1)

기존 코드에서 사용하지 않아도 무관합니다. 단, 옛 select_*를 쓰던 코드는 섹션 6을 필수로 확인하세요.


4. FBX preset 키워드 (선택적 활용)

export_fbx / export_fbx_allpreset= 키워드가 추가되었습니다. 기존 fbx_options=dict 방식은 그대로 동작합니다.

# v1 style (still works in v2)
api.export_fbx(slot=0, output_path=r"J:\output\char.fbx",
               fbx_options={"Animation": False})

# v2 new — specify by preset name
api.export_fbx(slot=0, output_path=r"J:\output\char.fbx", preset="Unreal_Ani")

5. 쓰기 작업의 silent 보장

v1에서는 Space OFF 레퍼런스가 있는 씬에서 add/remove/replace 등을 호출하면 Smart Switch 확인창이 표시될 수 있었습니다.

v2 공개 API는 항상 silent 모드로 동작합니다. 확인창이 표시되지 않습니다.


빠른 변환 예시

Before (v1)

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()
api.reload_all_references()
api.export_fbx_all(output_folder=r"J:\output")
api.update_ui()

After (v2)

from os_fast_ref.api import FastRefAPI

api = FastRefAPI()
api.reload_outdated_references()          # reload only OUTDATED
api.export_fbx_all(
    output_folder=r"J:\output",
    preset="Unreal_Ani"                   # specify preset by name
)
api.update_ui()

6. 삭제된 select_ → get_(select=1) (필수, 해당 시)

select_reference_nodes / select_duplicate_nodes / select_skin_mesh / select_skin_bones완전 삭제되었습니다 (shim 없음). 호출 시 AttributeError가 납니다.

삭제됨 대체
select_reference_nodes(...) get_all_objects(slot=..., select=1)
select_duplicate_nodes(...) get_duplicate_nodes(slot=..., select=1)
select_skin_mesh(...) get_skin_meshes(slot=..., select=1)
select_skin_bones(...) get_skin_bones(slot=..., select=1)

조회만 필요하면 select=0(기본값)을 사용하세요. 공통 계약·예외는 Get Nodes 개요 페이지를 참고하세요.

# Before (removed — AttributeError)
# api.select_skin_mesh(slot=0)

# After
api.get_skin_meshes(slot=0, select=1)
💬

Need help with the API?

Open a support ticket or join the community discussion.

문의하기