Python'da FBX'yi glTF'ye Dönüştürme
Problem
Geliştiricilerin FBX 3D model dosyalarını web görüntüleyicilerde, oyun motorlarında ve modern renderleme boru hatlarında kullanmak için glTF veya GLB formatına dönüştürmeleri gerekir. Aspose.3D, FBX dosyasını yüklemek için Scene.from_file() ve glTF çıktısını yazmak için scene.save() kullanarak bunu gerçekleştirir.
FBX desteği hakkında not: Aspose.3D FOSS, deneysel FBX desteğine sahiptir. FBX tokenleştiricisi uygulanmıştır ancak ayrıştırıcıda bilinen yapısal hatalar vardır: hatalı CLOSE_BRACKET işleme ve karmaşık iç içe FBX kapsamlarında sınırsız özyineleme. Karmaşık veya büyük FBX dosyaları RecursionError tetikleyebilir. Basit düz‑geometri FBX çalışabilir. Üretim kullanımında FBX yerine COLLADA, OBJ veya glTF tercih edin. Daha fazla ayrıntı için FAQ sayfasına bakın.
Önkoşullar
- Python 3.7 veya daha yeni
- pip ile kurun:
pip install aspose-3d-foss
from aspose.threed import SceneDönüştürme Adımları
Adım 1: FBX Dosyasını Yükle
Scene.from_file() kullanarak FBX dosyasını yükleyin. Biçim, .fbx uzantısından otomatik olarak algılanır.
from aspose.threed import Scene
scene = Scene.from_file("input.fbx")Adım 2: glTF Binary (GLB) olarak kaydet
scene.save()‘yi .glb uzantısıyla çağırarak çıktıyı sıkıştırılmış ikili glTF dosyası olarak yazın. Biçim uzantıdan otomatik olarak çıkarılır. Bu önerilen yaklaşımdır: tek dosya, sıkıştırılmış ve geniş çapta uyumlu.
# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")Not: FileFormat.GLTF2_BINARY ve FileFormat.GLTF, mevcut kütüphane sürümünde None stub sabitleridir ve scene.save()‘ye geçirilmemelidir. Dosya uzantısı otomatik algılamasını veya FileFormat.GLTF2() fabrikası yöntemini kullanın.
Bunun yerine JSON glTF olarak kaydetmek için:
scene.save("output.gltf")Adım 3: (İsteğe Bağlı) GltfSaveOptions Kullan
glTF çıktısı üzerinde daha fazla kontrol için, bir GltfSaveOptions nesnesi geçirin:
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)Kod Örneği
Üç satırda tam FBX’ten GLB’ye dönüşüm:
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")Desteklenen Çıktı Formatları
FBX’den dönüştürürken, aşağıdaki çıktı formatları güvenilir bir şekilde çalışır:
| Çıktı Formatı | Uzantı | Nasıl Belirtilir |
|---|---|---|
| glTF 2.0 ikili | .glb | uzantı otomatik algılama (veya FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | uzantı otomatik algılama (veya FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | uzantı otomatik algılama |
| STL | .stl | uzantı otomatik algılama |
| Microsoft 3MF | .3mf | uzantı otomatik algılama (veya FileFormat.MICROSOFT_3MF_FORMAT()) |
Not: FileFormat.GLTF2_BINARY, FileFormat.GLTF ve FileFormat.MICROSOFT_3MF, None stub sabitleridir ve scene.save()‘ye geçirilmemelidir. Dosya uzantısı otomatik algılamasını veya yukarıda gösterilen fabrika yöntemlerini kullanın.