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.FOSSOBJ (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 – קוד מקור ומערכת מעקב תקלות.