תמיכת פורמטים
Aspose.3D FOSS עבור Python יכול לקרוא ולכתוב שבעה פורמטים תלת‑ממדיים באמצעות ייצוג סצנה יחיד בזיכרון. הספרייה ממירה כל פורמט למבנה משותף Scene אובייקט בזמן הטעינה ומסדרת את האובייקט חזרה לפורמט היעד בזמן השמירה. משמעות הדבר היא שסצנה שנטענה מ‑OBJ יכולה להישמר ישירות ל‑glTF ללא שלבי המרה ביניים.
פורמטים נתמכים
| פורמט | הרחבה | קריאה | כתיבה | מחלקת Options | הערות |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | כן | כן | ObjLoadOptions | .mtl טעינת חומרים נתמכת |
| STL (בינארי) | .stl | כן | כן | StlSaveOptions | קריאה בבינארי וב-ASCII; שמירה בברירת מחדל לבינארי |
| STL (ASCII) | .stl | כן | כן | StlSaveOptions | אימות נסיעה הלוך-חזור |
| glTF 2.0 | .gltf | כן | כן | GltfSaveOptions | גרף סצנה מלא, חומרים והאנימציות נשמרים |
| GLB (בינארי glTF) | .glb | כן | כן | GltfSaveOptions | קונטיינר בינארי בקובץ יחיד |
| COLLADA | .dae | כן | כן | ColladaLoadOptions / ColladaSaveOptions | היררכיית סצנה וחומרים |
| 3MF | .3mf | כן | כן | ThreeMfSaveOptions | פורמט ייצור תוספתי |
| FBX | .fbx | חלקי | לא | N/A | Tokenizer פועל; full parser נמצא בתהליךלא מוכן לייצור) |
פורמט OBJ
Wavefront OBJ הוא פורמט ההחלפה הנתמך ביותר למרשתות סטטיות. Aspose.3D FOSS טוען גאומטריה (קודקודים, נורמליות, קואורדינטות UV ופאות פוליגונליות) ובאופן אופציונלי את הקובץ המלווה .mtl קובץ חומר.
ObjLoadOptions
| מאפיין | סוג | ברירת מחדל | תיאור |
|---|---|---|---|
enable_materials | bool | True | פענח את .mtl קובץ שמופנה על‑ידי כותרת ה‑OBJ |
flip_coordinate_system | bool | False | המרה מ‑Y‑up יד‑ימין ל‑Z‑up יד‑ימין |
normalize_normal | bool | True | נרמל את כל הנורמליות המיובאות של המשטחים לאורך יחידה |
scale | float | 1.0 | גורם קנה מידה אחיד המיושם על כל מיקומי הקודקודים |
טעינת קובץ OBJ
from aspose.threed import Scene
from aspose.threed.formats import ObjLoadOptions
options = ObjLoadOptions()
options.enable_materials = True
options.flip_coordinate_system = False
options.scale = 1.0
scene = Scene()
scene.open("model.obj", options)
print(f"Top-level nodes: {len(scene.root_node.child_nodes)}")שמירה ל-OBJ
scene.save("output.obj")ייצוא OBJ כותב מיקומי קודקודים ופאות פוליגון. אם הסצנה מכילה LambertMaterial או PhongMaterial אובייקטים, הספרייה כותבת קובץ נלווה .mtl באופן אוטומטי.
פורמט STL
STL (STereoLithography) מאחסן רשתות משולשים כרשימה בלתי ממוספרת של פאות. שני המגזרים, בינארי ו‑ASCII, נתמכים לקריאה; הספרייה משתמשת כברירת מחדל בבינארי בעת שמירה.
StlSaveOptions
StlSaveOptions אין לו שדות חובה. צור מופע שלו כדי להעביר ל scene.save():
from aspose.threed.formats import StlSaveOptions
opts = StlSaveOptions()
scene.save("output.stl", opts)דוגמה של תהליך סיבוב
from aspose.threed import Scene
##Load
scene = Scene.from_file("model.stl")
##Inspect
for node in scene.root_node.child_nodes:
if node.entity:
print(f"{node.name}: {len(node.entity.control_points)} vertices")
##Save
scene.save("roundtrip.stl")STL מאחסן רק גיאומטריית משולשים, ללא נורמליים מעבר לנורמל הפאה, ללא קואורדינטות UV, ללא חומרים וללא היררכיה. אם הסצנה שלך מכילה קוודרים או פוליגונים מסדר גבוה יותר, הם מתמששים אוטומטית בעת השמירה.
פורמט glTF / GLB
glTF 2.0 הוא הפורמט המומלץ להחלפת 3D מודרנית. הוא משמר את גרף הסצנה המלא (היררכיית צמתים, צמתים בשם, טרנספורמציות), חומרים (LambertMaterial, PhongMaterial → המרה ל‑PBR), וקלאפי אנימציה. GLB הוא גרסת המכולה הבינארית בקובץ יחיד.
GltfSaveOptions
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
scene.save("output.gltf", opts) # JSON + external .bin
scene.save("output.glb", opts) # Self-contained binaryתמיכה בחומרים
Aspose.3D חומרים קוד פתוח (FOSS) ממופים ל‑glTF pbrMetallicRoughness בייצוא:
from aspose.threed import Scene
from aspose.threed.shading import PhongMaterial
from aspose.threed.utilities import Vector3
scene = Scene()
node = scene.root_node.create_child_node("object")
mat = PhongMaterial()
mat.diffuse_color = Vector3(0.8, 0.2, 0.2) # red
mat.specular_color = Vector3(1.0, 1.0, 1.0)
mat.shininess = 50.0
node.material = mat
scene.save("colored.gltf")אימות פלט glTF
import json
with open("output.gltf") as f:
data = json.load(f)
print(f"Asset version : {data['asset']['version']}")
print(f"Nodes : {len(data.get('nodes', []))}")
print(f"Meshes : {len(data.get('meshes', []))}")פורמט COLLADA
COLLADA (.dae) הוא פורמט מבוסס XML שתומך בהיררכיות סצנה, חומרים, ערוצי UV מרובים, והנפשה של שלד. Aspose.3D FOSS קורא וכותב את עץ הצמתים המלא והגדרות החומר.
from aspose.threed import Scene
##Load a COLLADA file
scene = Scene.from_file("model.dae")
##Inspect top-level nodes
for node in scene.root_node.child_nodes:
print(f" {node.name}")
##Save back to COLLADA
scene.save("output.dae")COLLADA היא בחירה טובה כאשר אתה צריך לבצע round‑trip של היררכיות עם צמתים ושמות חומרים ללא אובדן נתונים.
3MF Format
3MF (3D Manufacturing Format) targets additive manufacturing (3D printing) workflows. It stores triangle geometry, colour, and print-specific metadata in a ZIP-based container.
from aspose.threed import Scene
from aspose.threed.formats import ThreeMfSaveOptions
scene = Scene.from_file("part.stl") # Load from STL
opts = ThreeMfSaveOptions()
scene.save("part.3mf", opts) # Write as 3MF3MF is the recommended export format when targeting slicer software (Cura, PrusaSlicer, Bambu Studio, etc.).
פורמט FBX
סטטוס: בתהליך (לא מוכן לייצור).
FBX (.fbx) תמיכה ב-Aspose.3D FOSS נמצאת כרגע שלב הטוקניזר. הטוקניזר הבינרי של FBX יכול לנתח את מבנה הקובץ, אך מפענח הצמתים, הרשת והחומר המלא ידוע שיש בו באגים והוא אינו שלם. תוצאות קריאת FBX יש להתייחס אליהן כניסיוניות.
אל תשתמשו ב-FBX בצינורות ייצור עם גרסה זו. אם הנתונים המקוריים שלך בפורמט FBX, המר אותם ל‑glTF או OBJ תחילה באמצעות Blender או FBX Review לפני הטעינה עם Aspose.3D FOSS.
כתיבת FBX אינה נתמכת.
זיהוי אוטומטי של פורמט
Scene.from_file() ו scene.open() מזהה את הפורמט אוטומטית באמצעות סיומת הקובץ ו‑במקרים שבהם קיימים, באמצעות בייטים קסומים בכותרת הקובץ:
from aspose.threed import Scene
##The library detects each format without being told explicitly
scene_obj = Scene.from_file("model.obj")
scene_glb = Scene.from_file("model.glb")
scene_stl = Scene.from_file("model.stl")
scene_dae = Scene.from_file("model.dae")
scene_3mf = Scene.from_file("model.3mf")אם הסיומת חסרה או דו‑משמעית, הספרייה חוזרת לבדיקת הכותרת (בייטים קסומים). קבצים שאינם נתמכים או לא מזוהים גורמים ל‑ IOError עם הודעה תיאורית.
טיפים ושיטות עבודה מומלצות
- השתמש ב‑glTF או GLB לצינורות מודרניים. glTF שומר על גרף הסצנה המלא, החומרים ונתוני האנימציה. זהו הפורמט המלא ביותר להחלפה עם מנועי משחק וצופים באינטרנט.
- השתמש ב‑OBJ לתאימות מרבית. קובץ OBJ נתמך על‑ידי כמעט כל כלי תלת‑ממד. הוא מוגבל לרשתות סטטיות אך נייד מאוד.
- השתמשו ב‑3MF להדפסה. 3MF carries colour, orientation hints, and print settings that STL cannot express.
- הימנעו מ‑FBX עד שהוא מוכן לייצור. בדקו את תיעוד השחרור עבור הגרסה שבה ניתוח מלא של FBX הושלם.
- התאימו את סיומת השמירה לפורמט. אל תעבירו a
.gltfהרחבה כאשר אתם רוצים GLB בינארי; השתמשו.glbבצורה מפורשת. ההרחבה קובעת איזה serialiser משמש. - בדוק תאימות פוליגון. STL ו‑3MF דורשים משולשים. קוודרים ו‑N‑גונים מתמשולשים אוטומטית בעת השמירה, אך מספר הקודקודים יגדל. אם אתה צריך לשלוט בתהליך המשולש, קרא
mesh.triangulate()לפני השמירה.