Python에서 FBX를 glTF로 변환하는 방법

Python에서 FBX를 glTF로 변환하는 방법

문제

개발자는 웹 뷰어, 게임 엔진 및 최신 렌더링 파이프라인에서 사용하기 위해 FBX 3D 모델 파일을 glTF 또는 GLB 형식으로 변환해야 합니다. Aspose.3D는 FBX 파일을 로드하기 위해 Scene.from_file()을 사용하고 glTF 출력을 쓰기 위해 scene.save()을 사용하여 이를 처리합니다.

FBX 지원에 대한 참고: Aspose.3D FOSS는 실험적 FBX 지원을 제공합니다. FBX 토크나이저는 구현되어 있지만 파서는 알려진 구조적 버그가 있습니다: 잘못된 CLOSE_BRACKET 처리 및 복잡한 중첩 FBX 범위에서 무한 재귀. 복잡하거나 큰 FBX 파일은 RecursionError을 발생시킬 수 있습니다. 단순한 평면 기하학 FBX는 작동할 수 있습니다. 프로덕션에서는 FBX보다 COLLADA, OBJ 또는 glTF를 사용하는 것이 좋습니다. 자세한 내용은 FAQ를 참조하십시오.

전제 조건

  • Python 3.7 이상
  • pip를 통해 설치: pip install aspose-3d-foss
from aspose.threed import Scene

변환 단계

1단계: FBX 파일 로드

Scene.from_file()을(를) 사용하여 FBX 파일을 로드합니다. 형식은 .fbx 확장자를 통해 자동으로 감지됩니다.

from aspose.threed import Scene

scene = Scene.from_file("input.fbx")

2단계: glTF 바이너리(GLB)로 저장

scene.save().glb 확장자를 사용하여 호출하면 출력이 압축된 바이너리 glTF 파일로 작성됩니다. 형식은 확장자에서 자동으로 추론됩니다. 이는 권장되는 접근 방식이며, 단일 파일, 압축 및 광범위하게 호환됩니다.

# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")

Note: FileFormat.GLTF2_BINARYFileFormat.GLTF는 현재 라이브러리 버전의 None 스텁 상수이며 scene.save()에 전달해서는 안 됩니다. 파일 확장자 자동 감지 또는 FileFormat.GLTF2() 팩토리 메서드를 대신 사용하십시오.

대신 JSON glTF로 저장하려면:

scene.save("output.gltf")

3단계: (선택 사항) GltfSaveOptions 사용

glTF 출력에 대한 더 많은 제어를 위해, GltfSaveOptions 객체를 전달하십시오:

from aspose.threed.formats import GltfSaveOptions

opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)

코드 예제

세 줄만으로 FBX를 GLB로 완전 변환:

from aspose.threed import Scene

scene = Scene.from_file("input.fbx")
scene.save("output.glb")  # .glb extension triggers binary GLB output automatically

print("Conversion complete: input.fbx -> output.glb")

지원되는 출력 형식

FBX에서 변환할 때, 다음 출력 형식이 안정적으로 작동합니다:

출력 형식확장자지정 방법
glTF 2.0 binary.glb확장자 자동 감지 (or FileFormat.GLTF2())
glTF 2.0 JSON.gltf확장자 자동 감지 (or FileFormat.GLTF2())
Wavefront OBJ.obj확장자 자동 감지
STL.stl확장자 자동 감지
Microsoft 3MF.3mf확장자 자동 감지 (or FileFormat.MICROSOFT_3MF_FORMAT())

참고: FileFormat.GLTF2_BINARY, FileFormat.GLTFFileFormat.MICROSOFT_3MFNone 스텁 상수이며 scene.save()에 전달해서는 안 됩니다. 파일 확장자 자동 감지 또는 위에 표시된 팩터리 메서드를 사용하십시오.

참고

 한국어