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 SceneCá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_BINARY và FileFormat.GLTF là None 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 ra | Phần mở rộng | Cách chỉ định |
|---|---|---|
| glTF 2.0 nhị phân | .glb | tự động phát hiện phần mở rộng (hoặc FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | tự động phát hiện phần mở rộng (hoặc FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | tự động phát hiện phần mở rộng |
| STL | .stl | tự động phát hiện phần mở rộng |
| Microsoft 3MF | .3mf | tự độ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.