Aspose.3D FOSS for .NET תומך בשבעה פורמטים תלת‑ממדיים: OBJ, STL, glTF, GLB, FBX, Collada, ו‑3MF. פוסט זה הוא מדריך מעשי, פורמט‑ב‑פורמט, המציג כיצד לטעון ולשמור כל אחד מהם, אילו אפשרויות זמינות, וכיצד להמיר ביניהם.

כל הדוגמאות משתמשות במרחב השמות Aspose.ThreeD:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

חבילת NuGet:

dotnet add package Aspose.3D --version 26.1.0

OBJ (Wavefront)

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

טעינת OBJ

var scene = new Scene();
scene.Open("model.obj");

Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);

טעינה עם אפשרויות

var opts = new ObjLoadOptions();
// Configure loading behavior as needed
var scene = new Scene();
scene.Open("model.obj", opts);

שמירה כ-OBJ

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.obj");

OBJ עם אפשרויות שמירה

var opts = new ObjSaveOptions();
scene.Save("output.obj", opts);

STL (סטריאוליתוגרפיה)

STL הוא הפורמט הסטנדרטי להדפסת תלת‑ממד. הוא מאחסן גיאומטריה משולשת גולמית ללא חומרים או היררכיה. Aspose.3D FOSS תומך גם ב‑STL בינארי וגם ב‑ASCII STL.

טעינת STL

var scene = new Scene();
scene.Open("part.stl");

Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);

שמירה כ-STL

var scene = new Scene();
var sphere = new Entities.Sphere(1);
scene.RootNode.CreateChildNode("SphereNode", sphere);

scene.Save("output.stl");

STL עם אפשרויות שמירה

var opts = new StlSaveOptions();
// Control binary mode, scale, and coordinate flipping
scene.Save("output.stl", opts);

STL מסלול חזור

// Load an STL file and re-save it -- geometry is preserved
var scene = new Scene();
scene.Open("original.stl");
scene.Save("copy.stl");

glTF 2.0 ו-GLB

glTF הוא הסטנדרט המודרני לאינטרנט ול‑3D בזמן אמת. הוא תומך בחומרי PBR, במבני סצנה מלאים ובאריזת בינארית יעילה (GLB).

טעינת glTF

var scene = new Scene();
scene.Open("model.gltf");

טעינה עם אפשרויות

var opts = new GltfLoadOptions();
var scene = new Scene();
scene.Open("model.gltf", opts);

שמירה כ‑glTF

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.gltf");

שמירה כ‑GLB (Binary glTF)

כדי ליצור קובץ בינארי .glb עצמאי, שמרו עם סיומת .glb. הספרייה מניחה את פורמט ה‑glTF הבינארי מהסיומת:

scene.Save("output.glb");

FBX (Filmbox)

FBX משמש נרחבות בפיתוח משחקים וביצירת תוכן דיגיטלי. Aspose.3D FOSS עבור .NET תומך ב- ייבוא וייצוא של FBX. הייצוא מייצר FBX בינארי; קוד ייצוא ASCII של FBX קיים במקור אך אינו נקרא על ידי נתיב הייצוא בגרסה זו. המחלקה FbxSaveOptions מספקת הגדרות ברירת מחדל.

טעינת FBX

var scene = new Scene();
scene.Open("model.fbx");

טעינה עם אפשרויות

var opts = new FbxLoadOptions();
var scene = new Scene();
scene.Open("model.fbx", opts);

שמירה כ‑FBX

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

// FBX export always produces binary FBX output
scene.Save("output.fbx");

שמירה עם אפשרויות

// Use FbxSaveOptions for format-specific defaults
var opts = new FbxSaveOptions();
scene.Save("output.fbx", opts);

3MF (פורמט ייצור תלת‑ממדי)

3MF הוא פורמט מודרני להדפסת תלת‑ממד שפותח על ידי קונסורציום 3MF. הוא תומך במטא‑נתונים עשירים, חומרים ובסצנות מרובות‑אובייקטים בחבילה יחידה מבוססת ZIP.

טעינת 3MF

var scene = new Scene();
scene.Open("model.3mf");

טעינה עם אפשרויות

var opts = new TmfLoadOptions();
var scene = new Scene();
scene.Open("model.3mf", opts);

שמירה כ‑3MF

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.3mf");

שמירה עם אפשרויות

var opts = new TmfSaveOptions();
scene.Save("output.3mf", opts);

קלט/פלט מבוסס זרם

כל הפורמטים תומכים בטעינה מזרמים ובשמירה אל זרמים, מה שמועיל לשירותי אינטרנט ועיבוד בענן:

using var stream = File.OpenRead("model.obj");
var scene = new Scene();
var opts = new ObjLoadOptions();
scene.Open(stream, opts);

// Save to a memory stream
using var output = new MemoryStream();
var saveOpts = new GltfSaveOptions();
scene.Save(output, saveOpts);

זיהוי פורמט

הספרייה יכולה לאתר אוטומטית פורמטים מהרחבות קבצים או מתוכן הזרם:

// Auto-detect from extension
var scene = new Scene();
scene.Open("model.obj");  // Detects OBJ from .obj extension

// Auto-detect from stream content
using var stream = File.OpenRead("model.obj");
scene.Open(stream);  // Inspects stream content to determine format

המרה קבוצתית

להמרת קבצים מרובים, יש לעבור על תיקייה ולהמיר כל קובץ:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

var inputDir = "assets/";
var outputDir = "converted/";

foreach (var file in Directory.GetFiles(inputDir, "*.fbx"))
{
    var scene = new Scene();
    scene.Open(file);

    var outputPath = Path.Combine(outputDir,
        Path.GetFileNameWithoutExtension(file) + ".glb");

    scene.Save(outputPath);
    Console.WriteLine("Converted: " + file);
}

השוואת פורמט

תכונהOBJSTLglTFFBX3MF
חומריםMTLלאPBRכןכן
היררכיית סצנהלאלאכןכןכן
תבניות אנימציהלאלאכןכןלא
מצב בינארילאכןGLBכןZIP
מוכן להדפסת תלת‑ממדמוגבלכןלאלאכן
הפצה באינטרנטלאלאכןלאלא

סיכום

Aspose.3D FOSS for .NET נותן לך API יחיד ועקבי לעבודה עם כל פורמטים מרכזיים של קבצי 3D. התבנית תמיד זהה: צור Scene, קרא Open() לטעינה, באופן אופציונלי הגדר אפשרויות ספציפיות לפורמט, וקרא Save() לייצוא. זיהוי פורמט, קלט/פלט מבוסס זרם, והמרה קבוצתית הופכים זאת לפשוט לשילוב בכל צינור .NET.

למידע נוסף:

  • API Reference – תיעוד מפורט של מחלקות ושיטות.
  • Knowledge Base – מאמרים מעשיים של איך לעשות.
  • GitHub – קוד מקור ומערכת מעקב תקלות.