Cara Mengonversi FBX ke glTF di Python
Masalah
Pengembang perlu mengonversi file model 3D FBX ke format glTF atau GLB untuk digunakan dalam penampil web, mesin game, dan pipeline rendering modern. Aspose.3D menangani ini dengan Scene.from_file() untuk memuat file FBX dan scene.save() untuk menulis output glTF.
Catatan tentang dukungan FBX: Aspose.3D FOSS memiliki eksperimental dukungan FBX. Tokenizer FBX telah diimplementasikan tetapi parser memiliki bug struktural yang diketahui: penanganan CLOSE_BRACKET yang tidak tepat dan rekursi tak terbatas pada ruang lingkup FBX bersarang yang kompleks. File FBX yang kompleks atau besar dapat memicu RecursionError. FBX dengan geometri datar sederhana mungkin berfungsi. Untuk penggunaan produksi, lebih baik pilih COLLADA, OBJ, atau glTF daripada FBX. Lihat FAQ untuk detail lebih lanjut.
Prasyarat
- Python 3.7 atau lebih baru
- Instal melalui pip:
pip install aspose-3d-foss
from aspose.threed import SceneLangkah Konversi
Langkah 1: Muat File FBX
Gunakan Scene.from_file() untuk memuat file FBX. Format dideteksi secara otomatis dari .fbx ekstensi.
from aspose.threed import Scene
scene = Scene.from_file("input.fbx")Langkah 2: Simpan ke glTF Biner (GLB)
Panggil scene.save() dengan .glb ekstensi untuk menulis output sebagai file glTF biner yang kompak. Format diperkirakan secara otomatis dari ekstensi. Ini adalah pendekatan yang direkomendasikan: satu file, kompak, dan kompatibel secara luas.
# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")Catatan: FileFormat.GLTF2_BINARY dan FileFormat.GLTF adalah None konstanta stub dalam versi perpustakaan saat ini dan tidak boleh diteruskan ke scene.save(). Gunakan deteksi otomatis ekstensi file atau FileFormat.GLTF2() metode pabrik sebagai gantinya.
Untuk menyimpan sebagai glTF JSON sebagai gantinya:
scene.save("output.gltf")Langkah 3: (Opsional) Gunakan GltfSaveOptions
Untuk kontrol lebih besar atas output glTF, berikan sebuah GltfSaveOptions objek:
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)Contoh Kode
Konversi FBX-ke-GLB lengkap dalam tiga baris:
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")Format Output yang Didukung
Saat mengonversi dari FBX, format output berikut bekerja dengan andal:
| Format Output | Ekstensi | Cara menentukan |
|---|---|---|
| glTF 2.0 biner | .glb | deteksi otomatis ekstensi (atau FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | deteksi otomatis ekstensi (atau FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | deteksi otomatis ekstensi |
| STL | .stl | deteksi otomatis ekstensi |
| Microsoft 3MF | .3mf | deteksi otomatis ekstensi (atau FileFormat.MICROSOFT_3MF_FORMAT()) |
Catatan: FileFormat.GLTF2_BINARY, FileFormat.GLTF, dan FileFormat.MICROSOFT_3MF adalah None konstanta stub dan tidak boleh diteruskan ke scene.save(). Gunakan deteksi otomatis ekstensi file atau metode pabrik yang ditunjukkan di atas.