كيفية تحويل 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 الثنائي (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 ثابتات تجريبية في نسخة المكتبة الحالية ولا ينبغي تمريرهما إلى scene.save(). استخدم الكشف التلقائي عن امتداد الملف أو طريقة المصنع FileFormat.GLTF2() بدلاً من ذلك.

لحفظ كـ 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 ثنائي.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 هي ثوابت None تجريبية ولا يجب تمريرها إلى scene.save(). استخدم الكشف التلقائي عن امتداد الملف أو طرق المصنع الموضحة أعلاه.

انظر أيضًا

 العربية