วิธีแปลง FBX เป็น glTF ด้วย Python

วิธีแปลง 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 ที่แสดงด้านบน.

ดูเพิ่มเติม

 ภาษาไทย