FBX'i glTF'ye Python içinde 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 bunu şu şekilde ele alır Scene.from_file() FBX dosyasını yüklemek için ve scene.save() glTF çıktısını yazmak için.
FBX desteği hakkında not: Aspose.3D FOSS şunlara sahiptir deneysel FBX desteği. FBX tokenleştiricisi uygulanmış ancak ayrıştırıcıda bilinen yapısal hatalar var: 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ı şunları tetikleyebilir RecursionError. Basit düz‑geometri FBX çalışabilir. Üretim kullanımında, FBX yerine COLLADA, OBJ veya glTF tercih edin. Bkz. FAQ daha fazla ayrıntı için.
Önkoşullar
- Python 3.7 veya üzeri
- 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ükleyin
Kullan Scene.from_file() FBX dosyasını yüklemek için. Biçim, otomatik olarak .fbx uzantıdan tespit edilir.
from aspose.threed import Scene
scene = Scene.from_file("input.fbx")Adım 2: glTF İkili (GLB) Olarak Kaydedin
Çağır scene.save() ile .glb uzantısını kullanarak çı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 dır None geçerli kütüphane sürümündeki stub sabitleri ve bunlar şu şekilde geçirilmemelidir scene.save(). Dosya uzantısı otomatik algılamasını kullanın veya FileFormat.GLTF2() fabrika 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ımı
glTF çıktısı üzerinde daha fazla kontrol için, bir GltfSaveOptions nesne:
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ı Biçimleri
FBX’ten dönüştürürken, aşağıdaki çıktı biçimleri güvenilir bir şekilde çalışır:
| Çıktı Biçimi | Uzantı | Nasıl Belirtilir |
|---|---|---|
| glTF 2.0 ikili | .glb | uzantı otomatik algıla (veya FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | uzantı otomatik algıla (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 şunlardır None taslak sabitlerdir ve şunlara geçirilmemelidir scene.save(). Dosya uzantısı otomatik algılamasını kullanın veya yukarıda gösterilen fabrika yöntemlerini kullanın.