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 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ừ .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_BINARY và FileFormat.GLTF là None 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 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à None 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.