Cara Menukar FBX ke glTF dalam Python
Masalah
Pemaju perlu menukar fail model 3D FBX kepada format glTF atau GLB untuk digunakan dalam penonton web, enjin permainan, dan saluran rendering moden. Aspose.3D mengendalikan ini dengan Scene.from_file() untuk memuatkan fail FBX dan scene.save() untuk menulis output glTF.
Nota mengenai sokongan FBX: Aspose.3D FOSS mempunyai eksperimental sokongan FBX. Tokenizer FBX telah dilaksanakan tetapi penghurai mempunyai pepijat struktur yang diketahui: pengendalian CLOSE_BRACKET yang tidak betul dan rekursi tanpa batas pada skop FBX bersarang yang kompleks. Fail FBX yang kompleks atau besar mungkin mencetuskan RecursionError. FBX geometri rata yang mudah mungkin berfungsi. Untuk penggunaan produksi, lebih baik pilih COLLADA, OBJ, atau glTF berbanding FBX. Lihat FAQ untuk maklumat lanjut.
Prasyarat
- Python 3.7 atau versi lebih baru
- Pasang melalui pip:
pip install aspose-3d-foss
from aspose.threed import SceneLangkah Penukaran
Langkah 1: Muatkan Fail FBX
Gunakan Scene.from_file() untuk memuatkan fail FBX. Format dikesan secara automatik daripada sambungan .fbx.
from aspose.threed import Scene
scene = Scene.from_file("input.fbx")Langkah 2: Simpan ke glTF Binary (GLB)
Panggil scene.save() dengan sambungan .glb untuk menulis output sebagai fail glTF binari yang padat. Format ditentukan secara automatik daripada sambungan tersebut. Ini adalah pendekatan yang disyorkan: satu fail, padat, dan serasi secara meluas.
# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")Nota: FileFormat.GLTF2_BINARY dan FileFormat.GLTF ialah None stub constants dalam versi perpustakaan semasa dan tidak sepatutnya dihantar kepada scene.save(). Gunakan pengesanan auto-ekstensi fail atau kaedah kilang FileFormat.GLTF2() sebagai gantinya.
Untuk menyimpan sebagai JSON glTF sebaliknya:
scene.save("output.gltf")Langkah 3: (Opsional) Gunakan GltfSaveOptions
Untuk kawalan yang lebih ke atas output glTF, hantarkan objek GltfSaveOptions:
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)Contoh Kod
Selesaikan penukaran FBX-ke-GLB 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 Disokong
Apabila menukar dari FBX, format output berikut berfungsi dengan boleh dipercayai:
| Format Output | Sambungan | Cara menentukan |
|---|---|---|
| glTF 2.0 binary | .glb | sambungan auto-kesan (atau FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | sambungan auto-kesan (atau FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | sambungan auto-kesan |
| STL | .stl | sambungan auto-kesan |
| Microsoft 3MF | .3mf | sambungan auto-kesan (atau FileFormat.MICROSOFT_3MF_FORMAT()) |
Nota: FileFormat.GLTF2_BINARY, FileFormat.GLTF, dan FileFormat.MICROSOFT_3MF ialah konstanta stub None dan tidak boleh dihantar kepada scene.save(). Gunakan pengesanan auto-eksensi fail atau kaedah kilang yang ditunjukkan di atas.