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 các trình xem web, engine trò chơi và các pipeline render hiện đại. Aspose.3D xử lý việc 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ợ thử nghiệm FBX. Trình tokenizer 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ể gây ra RecursionError. FBX đơn giản dạng hình học phẳng có thể hoạt động. Đối với sử dụng trong sản xuất, nên ưu tiên COLLADA, OBJ hoặc glTF hơn FBX. Xem FAQ để biết thêm chi tiết.

Yêu cầu trước

  • 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ừ .fbx phần mở rộng.

from aspose.threed import Scene

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

Bước 2: Lưu dưới dạng glTF nhị phân (GLB)

Gọi scene.save() với .glb phần mở rộng để ghi đầu ra dưới dạng tệp glTF nhị phân gọn. Đị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ị: tệp đơn, 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 các hằng số stub 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 tự động phát hiện phần mở rộng tệp hoặc FileFormat.GLTF2() phương thức factory thay thế.

Để lưu dưới dạng JSON glTF thay thế:

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, truyền một GltfSaveOptions đối tượng:

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 sang 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_3MFNone các hằng số mẫu và không được truyền vào 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 trình bày ở trên.

Xem thêm

 Tiếng Việt