Cách Chuyển Đổi FBX sang glTF trong Python

Cách Chuyển Đổi FBX sang glTF trong Python

Vấn đề

Các nhà phát triển cần chuyển đổi các tệp mô hình 3D FBX sang định dạng glTF hoặc GLB để sử dụng trong trình xem web, các engine trò chơi và các pipeline render hiện đại. Aspose.3D thực hiện điều này bằng Scene.from_file() để tải tệp FBX và scene.save() để ghi đầu ra glTF.

Lưu ý về hỗ trợ FBX: Aspose.3D FOSS có hỗ trợ FBX thử nghiệm. Bộ phân tích FBX đã được triển khai nhưng trình phân tích có các lỗi cấu trúc đã biết: xử lý CLOSE_BRACKET không đúng và đệ quy không giới hạn trên các phạm vi FBX lồng nhau phức tạp. Các tệp FBX phức tạp hoặc lớn có thể kích hoạt RecursionError. FBX đơn giản dạng hình học phẳng có thể hoạt động. Đối với môi trường sản xuất, nên ưu tiên COLLADA, OBJ hoặc glTF thay vì FBX. Xem FAQ để biết thêm chi tiết.

Điều kiện tiên quyết

  • Python 3.7 trở lên
  • Cài đặt qua pip: pip install aspose-3d-foss
from aspose.threed import Scene

Các bước chuyển đổi

Bước 1: Tải tệp FBX

Sử dụng Scene.from_file() để tải tệp FBX. Định dạng được phát hiện tự động từ phần mở rộng .fbx.

from aspose.threed import Scene

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

Bước 2: Lưu dưới dạng glTF Binary (GLB)

Gọi scene.save() với phần mở rộng .glb để ghi đầu ra dưới dạng tệp binary glTF gọn nhẹ. Định dạng được suy ra tự động từ phần mở rộng. Đây là cách tiếp cận được khuyến nghị: một tệp duy nhất, gọn nhẹ và tương thích rộng rãi.

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

Lưu ý: FileFormat.GLTF2_BINARYFileFormat.GLTFNone stub constants trong phiên bản thư viện hiện tại và không nên được truyền vào scene.save(). Sử dụng phát hiện tự động phần mở rộng tệp hoặc phương thức nhà máy FileFormat.GLTF2() thay thế.

Để lưu dưới dạng JSON glTF thay vì:

scene.save("output.gltf")

Bước 3: (Tùy chọn) Sử dụng GltfSaveOptions

Để kiểm soát tốt hơn đầu ra glTF, hãy truyền một đối tượng GltfSaveOptions:

from aspose.threed.formats import GltfSaveOptions

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

Ví dụ mã

Hoàn thành chuyển đổi FBX‑to‑GLB trong ba dòng:

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")

Các định dạng đầu ra được hỗ trợ

Khi chuyển đổi từ FBX, các định dạng đầu ra sau hoạt động một cách đáng tin cậy:

Định dạng đầu raPhần mở rộngCách chỉ định
glTF 2.0 nhị phân.glbtự động phát hiện phần mở rộng (hoặc FileFormat.GLTF2())
glTF 2.0 JSON.gltftự động phát hiện phần mở rộng (hoặc FileFormat.GLTF2())
Wavefront OBJ.objtự động phát hiện phần mở rộng
STL.stltự động phát hiện phần mở rộng
Microsoft 3MF.3mftự động phát hiện phần mở rộng (hoặc FileFormat.MICROSOFT_3MF_FORMAT())

Lưu ý: FileFormat.GLTF2_BINARY, FileFormat.GLTF, và FileFormat.MICROSOFT_3MF là các hằng số stub None và không được truyền cho scene.save(). Sử dụng tự động phát hiện phần mở rộng tệp hoặc các phương thức factory được hiển thị ở trên.

Xem thêm

 Tiếng Việt