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);
}
השוואת פורמט
| תכונה | OBJ | STL | glTF | FBX | 3MF |
|---|---|---|---|---|---|
| חומרים | MTL | לא | PBR | כן | כן |
| היררכיית סצנה | לא | לא | כן | כן | כן |
| תבניות אנימציה | לא | לא | כן | כן | לא |
| מצב בינארי | לא | כן | GLB | כן | ZIP |
| מוכן להדפסת תלת‑ממד | מוגבל | כן | לא | לא | כן |
| הפצה באינטרנט | לא | לא | כן | לא | לא |
סיכום
Aspose.3D FOSS for .NET נותן לך API יחיד ועקבי לעבודה עם כל פורמטים מרכזיים של קבצי 3D. התבנית תמיד זהה: צור Scene, קרא Open() לטעינה, באופן אופציונלי הגדר אפשרויות ספציפיות לפורמט, וקרא Save() לייצוא. זיהוי פורמט, קלט/פלט מבוסס זרם, והמרה קבוצתית הופכים זאת לפשוט לשילוב בכל צינור .NET.
למידע נוסף:
- API Reference – תיעוד מפורט של מחלקות ושיטות.
- Knowledge Base – מאמרים מעשיים של איך לעשות.
- GitHub – קוד מקור ומערכת מעקב תקלות.