תמיכת פורמטים

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/ATokenizer פועל; full parser נמצא בתהליךלא מוכן לייצור)

פורמט OBJ

Wavefront OBJ הוא פורמט ההחלפה הנתמך ביותר למרשתות סטטיות. Aspose.3D FOSS טוען גאומטריה (קודקודים, נורמליות, קואורדינטות UV ופאות פוליגונליות) ובאופן אופציונלי את הקובץ המלווה .mtl קובץ חומר.

ObjLoadOptions

מאפייןסוגברירת מחדלתיאור
enable_materialsboolTrueפענח את .mtl קובץ שמופנה על‑ידי כותרת ה‑OBJ
flip_coordinate_systemboolFalseהמרה מ‑Y‑up יד‑ימין ל‑Z‑up יד‑ימין
normalize_normalboolTrueנרמל את כל הנורמליות המיובאות של המשטחים לאורך יחידה
scalefloat1.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 3MF

3MF 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() לפני השמירה.
 עברית