כיצד להמיר FBX ל‑glTF בפייתון
בעיה
מפתחים צריכים להמיר קבצי מודלים תלת‑ממדיים בפורמט FBX ל‑glTF או GLB לשימוש במציגי אינטרנט, במנועי משחק ובצינורות רינדור מודרניים. Aspose.3D מטפל בזה עם Scene.from_file() לטעינת קובץ ה‑FBX ו‑scene.save() לכתיבת פלט ה‑glTF.
הערה על תמיכת FBX: Aspose.3D FOSS כוללת תמיכת FBX נסיונית. ממיר ה‑FBX מיושם אך למפרש יש באגים מבניים ידועים: טיפול שגוי ב‑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(). השתמש בזיהוי אוטומטי של סיומת קובץ או בשיטות המפעל המוצגות למעלה.