วิธีแปลง FBX เป็น glTF ด้วย Python
ปัญหา
นักพัฒนาต้องแปลงไฟล์โมเดล 3D FBX ไปเป็นรูปแบบ glTF หรือ GLB เพื่อใช้ในเว็บวิวเวอร์, เอนจิ้นเกม, และไพป์ไลน์การเรนเดอร์สมัยใหม่ Aspose.3D จัดการเรื่องนี้ด้วย Scene.from_file() เพื่อโหลดไฟล์ FBX และ scene.save() เพื่อเขียนผลลัพธ์เป็น glTF.
หมายเหตุเกี่ยวกับการสนับสนุน FBX: Aspose.3D FOSS มีการสนับสนุน FBX แบบทดลอง. ตัว tokenizer ของ FBX ได้รับการดำเนินการแล้วแต่ตัว parser มีบั๊กเชิงโครงสร้างที่ทราบ: การจัดการ CLOSE_BRACKET ที่ไม่ถูกต้องและการเรียกซ้ำโดยไม่มีขอบเขตบนสโคป FBX ที่ซ้อนกันซับซ้อน. ไฟล์ FBX ที่ซับซ้อนหรือขนาดใหญ่อาจทำให้เกิด RecursionError. FBX แบบเรขาคณิตแบนง่ายอาจทำงานได้. สำหรับการใช้งานในผลิตภัณฑ์ ควรเลือกใช้ COLLADA, OBJ หรือ glTF แทน FBX. ดูที่ FAQ สำหรับรายละเอียดเพิ่มเติม.
ข้อกำหนดเบื้องต้น
- Python 3.7 หรือใหม่กว่า
- ติดตั้งผ่าน pip:
pip install aspose-3d-foss
from aspose.threed import Sceneขั้นตอนการแปลง
ขั้นตอนที่ 1: โหลดไฟล์ FBX
ใช้ Scene.from_file() เพื่อโหลดไฟล์ FBX. รูปแบบจะถูกตรวจจับโดยอัตโนมัติจากส่วนขยาย .fbx.
from aspose.threed import Scene
scene = Scene.from_file("input.fbx")ขั้นตอนที่ 2: บันทึกเป็น glTF Binary (GLB)
เรียกใช้ scene.save() ด้วยส่วนขยาย .glb เพื่อเขียนผลลัพธ์เป็นไฟล์ glTF แบบไบนารีแบบกะทัดรัด รูปแบบจะถูกสรุปโดยอัตโนมัติจากส่วนขยาย นี่เป็นวิธีที่แนะนำ: ไฟล์เดียว, กะทัดรัด, และเข้ากันได้อย่างกว้างขวาง.
# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")หมายเหตุ: FileFormat.GLTF2_BINARY และ FileFormat.GLTF เป็น None stub constants ในเวอร์ชันไลบรารีปัจจุบันและไม่ควรส่งไปยัง scene.save(). ใช้การตรวจจับนามสกุลไฟล์อัตโนมัติหรือ FileFormat.GLTF2() factory method แทน.
เพื่อบันทึกเป็น JSON glTF แทน:
scene.save("output.gltf")ขั้นตอนที่ 3: (ไม่บังคับ) ใช้ GltfSaveOptions
หากต้องการควบคุมการส่งออก glTF มากขึ้น ให้ส่งอ็อบเจ็กต์ GltfSaveOptions:
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)ตัวอย่างโค้ด
การแปลง FBX เป็น GLB อย่างสมบูรณ์ในสามบรรทัด:
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")รูปแบบผลลัพธ์ที่รองรับ
เมื่อแปลงจาก FBX รูปแบบผลลัพธ์ต่อไปนี้ทำงานได้อย่างเชื่อถือได้:
| รูปแบบผลลัพธ์ | ส่วนขยาย | วิธีระบุ |
|---|---|---|
| glTF 2.0 binary | .glb | ตรวจจับส่วนขยายอัตโนมัติ (หรือ FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | ตรวจจับส่วนขยายอัตโนมัติ (หรือ FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | ตรวจจับส่วนขยายอัตโนมัติ |
| STL | .stl | ตรวจจับส่วนขยายอัตโนมัติ |
| Microsoft 3MF | .3mf | ตรวจจับส่วนขยายอัตโนมัติ (หรือ FileFormat.MICROSOFT_3MF_FORMAT()) |
หมายเหตุ: FileFormat.GLTF2_BINARY, FileFormat.GLTF, และ FileFormat.MICROSOFT_3MF เป็นค่าคงที่ stub None และต้องไม่ส่งไปยัง scene.save(). ใช้การตรวจจับนามสกุลไฟล์อัตโนมัติหรือวิธีการ factory ที่แสดงด้านบน.