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_BINARY 및 FileFormat.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.GLTF 및 FileFormat.MICROSOFT_3MF는 None 스텁 상수이며 scene.save()에 전달해서는 안 됩니다. 파일 확장자 자동 감지 또는 위에 표시된 팩터리 메서드를 사용하십시오.