אנו נרגשים להודיע על זמינותה של Aspose.3D FOSS for .NET – ספרייה חופשית וקוד פתוח לעבודה עם פורמטים של קבצים תלת‑ממדיים ביישומי .NET. נבנתה כפתרון C# טהור ללא תלותיות מקומיות, הספרייה תומכת ב-.NET 10.0 ומעלה, מה שהופך אותה לנגישה למגוון רחב של פרויקטים וסביבות.
פוסט זה מסביר מה הספרייה מציעה, איך להתחיל, ולאן להמשיך משם.
מהו Aspose.3D FOSS עבור .NET?
Aspose.3D FOSS for .NET היא ספריית עיבוד קבצים תלת‑ממדיים קלה משקל שפורסמה תחת ה MIT license. היא מספקת API של גרף‑סצנה המאפשר לטעון, לבדוק, לשנות ולשמור מודלים תלת‑ממדיים במגוון פורמטים נפוצים. הספרייה נכתבה במלואה ב‑C# ואינה דורשת קבצים בינריים מקומיים חיצוניים או הגדרות ספציפיות לפלטפורמה.
קוד המקור זמין ב‑GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
הדגשים מרכזיים
- Pure C# – ללא P/Invoke, ללא ספריות מקומיות, ללא מגבלות פלטפורמה.
- .NET 10.0+ תואם.
- ברישיון MIT – השתמשו בו בפרויקטים אישיים, מסחריים או קנייניים ללא מגבלות.
- ארכיטקטורת גרף‑סצנה – עץ מוכר של צמתים, רשתות, מצלמות וחומרים.
- תמיכה בריבוי פורמטים – קריאה וכתיבה של קבצי OBJ, STL, glTF 2.0, GLB, FBX, Collada ו‑3MF.
התחלה מהירה
התקנת NuGet
הוסף את חבילת NuGet לפרויקט שלך:
dotnet add package Aspose.3D --version 26.1.0
ההמרה הראשונה שלך
המקרה הפשוט ביותר הוא לטעון קובץ תלת‑ממד בפורמט אחד ולשמור אותו בפורמט אחר. הנה המרה של שתי שורות מ‑OBJ ל‑STL:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");
ה Scene class היא נקודת הכניסה המרכזית. קרא scene.Open() עם נתיב קובץ לטעינת מודל, ואז קרא Save() עם נתיב היעד. הספרייה מזהה את הפורמט מהרחבת הקובץ.
בניית סצנה מאפס
ניתן גם לבנות סצנות תכנותית:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var box = new Box(2, 2, 2);
var node = scene.RootNode.CreateChildNode("Box", box);
node.Transform.Translation = new FVector3(1, 2, 3);
scene.Save("scene.gltf");
זה יוצר סצנה חדשה, מוסיף פרימיטיב של קופסה כצומת בן תחת השורש, ממקם אותו בקואורדינטות (1, 2, 3), ומייצא את התוצאה כקובץ glTF.
טעינה עם אפשרויות ספציפיות לפורמט
כאשר אתם זקוקים לבקרה מדויקת יותר על תהליך הטעינה, כל פורמט מספק מחלקת אפשרויות ייעודית. לדוגמה, טעינת קובץ STL עם אפשרויות מפורשות:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
var opts = new StlLoadOptions();
scene.Open("part.stl", opts);
// Inspect the loaded scene
Console.WriteLine("Root children: " + scene.RootNode.ChildNodes.Count);
// Re-export as OBJ
scene.Save("part.obj");
ה scene.Open() המתודה מקבלת כל אחד מסוגי אפשרויות הטעינה: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, או TmfLoadOptions.
מעבר על גרף הסצנה
לאחר שהסצנה נטענה, ניתן לעבור על עץ הצמתים כדי לבדוק או לשנות את תוכנו:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
scene.Open("model.gltf");
foreach (var child in scene.RootNode.ChildNodes)
{
Console.WriteLine("Node: " + child.Name);
Console.WriteLine(" Translation: " + child.Transform.Translation);
if (child.Entity is Mesh mesh)
{
Console.WriteLine(" Vertices: " + mesh.ControlPoints.Count);
}
}
תבנית זו שימושית לאיתור באגים, יצירת דוחות על תוכן המודל, או שינוי חלקי של סצנה באופן סלקטיבי לפני ייצוא מחדש.
החלת טרנספורמציות
מיקום צמתים במרחב תלת‑ממדי נעשה דרך ה‑ Transform מאפיין על כל Node:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var parent = scene.RootNode.CreateChildNode("Parent");
parent.Transform.Translation = new FVector3(10, 0, 0);
var child = parent.CreateChildNode("Child");
child.Transform.Translation = new FVector3(5, 0, 0);
child.Transform.Scale = new FVector3(2, 2, 2);
// Child's world position is (15, 0, 0) due to
// parent-child transform inheritance
scene.Save("transformed.gltf");
הטרנספורמציות פועלות לפי מודל הירושה הסטנדרטי של הורה‑בן: המיקום במרחב העולמי של צומת בן הוא השילוב של הטרנספורמציה המקומית שלו וכל הטרנספורמציות של האבות עד לשורש.
מה נכלל
הספרייה מגיעה עם סט ממוקד של יכולות המתוכנן סביב מודל גרף הסצנה בתלת‑ממד.
גרף סצנה
גרף הסצנה הוא עמוד השדרה של ה-API. כל קובץ תלת‑ממדי מיוצג כמבנה עץ:
| מחלקה | תפקיד |
|---|---|
Scene | מכולה ברמת העליון; השורש של גרף הסצנה |
Node | מיקום בעל שם בעץ; מחזיק טרנספורמציות וצמתים ילדים |
Entity | בסיס מופשט לאובייקטים חזותיים המחוברים לצמתים |
Mesh | גאומטריה פוליגונלית – קודקודים, משטחים, נורמליות |
Camera | הגדרת מצלמה וירטואלית |
Transform | תרגום מקומי, סיבוב וקנה מידה לצומת |
GlobalTransform | טרנספורמציית מרחב‑עולם מחושבת |
פרימיטיבים מובנים
הגרסה .NET כוללת מחלקות צורות פרמטריות שניתן לצרף לצמתים ישירות או להמיר ל Mesh:
- קופסה – קופסה מיושרת לציר עם רוחב, גובה ועומק שניתן להתאמה.
- כדור – כדור פרמטרי עם רדיוס שניתן להתאמה.
- צילינדר – צילינדר פרמטרי עם רדיוסים וגובה ניתנים להגדרה.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);
חומרים
הספרייה מספקת מספר סוגי חומרים:
- LambertMaterial – חומר קלאסי רק פיזור עם רכיבי צבע אמביינט, פיזור, פולט ומשקף.
- PhongMaterial – מרחיב את למברט עם הדגשות ספציפיות וברק.
- PbrMaterial – חומר רינדור מבוסס פיזיקה עם צבע בסיס, מתכתיות, חספוס, הסתרה, ומשבצות מרקם.
כלי מתמטיקה
ה Aspose.ThreeD מרחב השמות כולל פרימיטיבים מתמטיים חיוניים:
- FVector3 – וקטור חד-דיוק של 3 רכיבים למיקומים, כיוונים וקנה מידה. משמש ב-
Transform.TranslationוTransform.Scale. - Vector4 – וקטור חד-דיוק של 4 רכיבים לנקודות בקרה ונורמליות.
- Matrix4 – מטריצה של 4x4 לשינויי מרחב.
- Quaternion – ייצוג סיבוב. משמש ב-
Transform.Rotation. - BoundingBox – תיבת גבול מיושרת לציר לשאילתות מרחביות.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations
אפשרויות טעינה ושמירה
לכל פורמט יש מחלקות אפשרויות ייעודיות שמאפשרות לך לשלוט בהתנהגות הייבוא והייצוא:
| פורמט | אפשרויות טעינה | אפשרויות שמירה |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
לדוגמה, לטעון קובץ OBJ עם הפיכת קואורדינטות ונרמול נורמליים:
var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;
scene.Open("model.obj", opts);
פורמטים נתמכים
הטבלה שלהלן מסכמת את הפורמטים ש-Aspose.3D FOSS עבור .NET יכול לקרוא ולכתוב.
| פורמט | הרחבה | ייבוא | ייצוא | הערות |
|---|---|---|---|---|
| OBJ | .obj | כן | כן | עם חומרים MTL |
| STL | .stl | כן | כן | בינארי + ASCII |
| glTF 2.0 | .gltf | כן | כן | פורמט JSON |
| GLB | .glb | כן | כן | Binary glTF |
| FBX | .fbx | כן | כן | מצבי ASCII ובינארי |
| Collada | .dae | כן | כן | |
| 3MF | .3mf | כן | כן | פורמט ייצור תלת‑ממדי מבוסס ZIP |
מדריך לבחירת פורמט
בחירת הפורמט הנכון תלויה במקרה השימוש שלך:
- OBJ הוא אידיאלי כאשר אתה צריך תאימות מרבית בין כלי תלת‑ממד. כמעט כל יישום מודלינג יכול לקרוא ולכתוב OBJ. הוא עובד היטב להחלפת נתוני רשת אך מעביר רק מידע חומרי בסיסי דרך קבצי MTL נלווים.
- STL הוא הפורמט המועדף על זרימות עבודה של הדפסת תלת‑ממד. הוא מאחסן גאומטריה משולשת גולמית ללא חומרים או היררכיית סצנה, בדיוק מה שתוכנת החיתוך מצפה לו.
- glTF הוא הסטנדרט המודרני עבור רשת ותלת‑ממד בזמן אמת. הוא תומך בחומרי PBR, בהיררכיות סצנה מלאות, ועוצב להעברה יעילה. השתמש ב‑glTF בעת בניית מציגים מבוססי רשת או כאשר אתה מכוון לכל צינור רינדור בזמן אמת.
- FBX הוא משולב באופן עמוק בתהליכי פיתוח משחקים ויצירת תוכן דיגיטלי. הוא תומך בנתוני סצנה עשירים כולל היררכיות וחומרים. Aspose.3D FOSS עבור .NET תומך ב‑FBX ייבוא וייצוא במצבי ASCII ובינארי כאחד.
- 3MF הוא פורמט הדפסת תלת‑ממד מודרני שתומך במטא‑נתונים עשירים, בחומרים ובסצנות מרובות‑אובייקטים בחבילה יחידה מבוססת ZIP.
מגבלות ידועות
Scene.Render() הוא לא נתמך בגרסת ה‑FOSS. קריאה לשיטה זו תזרוק NotImplementedException. הספרייה נועדה לעיבוד תלת‑ממדי מבוסס קבצים – טעינה, מניפולציה, שינוי, ושמירת מודלים – במקום רינדור בזמן אמת לתצוגה.
קוד פתוח ורישוי
Aspose.3D FOSS עבור .NET משוחרר תחת ה רישיון MIT. משמעות הדבר שאתה חופשי ל:
- להשתמש בספרייה ביישומים מסחריים וקנייניים.
- שנה את קוד המקור כך שיתאים לצרכיך.
- הפץ את הספרייה כחלק מהתוכנה שלך.
אין דמי רויאל, אין מגבלות שימוש, ואין דרישות ייחוס מעבר למה שמפרט רישיון MIT.
קוד המקור המלא מתארח ב‑GitHub, ותרומות מוזמנות: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
דרישות מערכת
| דרישה | פרט |
|---|---|
| .גרסת .NET | 10.0 or later |
| תלויות | אין (C# טהור) |
| פלטפורמות | כל פלטפורמה שמריצה את .NET |
| מנהל חבילות | NuGet |
התחלה
הנה המשאבים שיעזרו לך להתחיל ולהתפעל:
- תיעוד – מדריכים מקיפים והסברים על ה‑API זמינים ב‑ אתר התיעוד של Aspose.3D.
- מאגר ידע – מאמרים מעשיים של איך לעשות וטיפים לפתרון תקלות ב- Aspose.3D KB.
- תיעוד API – הפנייה המפורטת למחלקות ולשיטות ב Aspose.3D תיעוד API.
- קוד מקור – עיין ותרום ב GitHub.
- NuGet – החבילה מתפרסמת כ
Aspose.3Dב NuGet.
מקרים נפוצים של שימוש
הנה כמה תרחישים מעשיים שבהם Aspose.3D FOSS עבור .NET מתאים היטב:
צינורות המרת פורמטים
צוותים רבים מקבלים נכסי 3D בפורמט אחד אך צריכים אותם בפורמט אחר. צוות עיצוב עשוי לעבוד ב‑FBX בעוד צוות האינטרנט צריך glTF. הספרייה מאפשרת לך לבנות צינורות המרה אוטומטיים:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
// Convert all incoming FBX assets to GLB for the web team
var scene = new Scene();
scene.Open("asset.fbx");
scene.Save("asset.glb");
3D Model Inspection and Validation
לפני שילוב נכס 3D באפליקציה שלך, ייתכן שתרצה לאמת את תוכנו — לבדוק ספירות צמתים, לאמת גאומטריה, או לאשר שהאלמנטים הצפויים קיימים:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
scene.Open("model.obj");
int nodeCount = scene.RootNode.ChildNodes.Count;
Console.WriteLine("Top-level nodes: " + nodeCount);
foreach (var child in scene.RootNode.ChildNodes)
{
if (child.Entity is Mesh mesh)
{
Console.WriteLine(child.Name + ": "
+ mesh.ControlPoints.Count + " vertices");
}
}
הרכבת סצנה
אתה יכול לטעון מודלים מרובים ולשלב אותם בסצנה אחת:
using Aspose.ThreeD;
var scene = new Scene();
var part1 = new Scene();
part1.Open("chassis.obj");
var part2 = new Scene();
part2.Open("wheels.obj");
// Add nodes from each part into the combined scene
foreach (var child in part1.RootNode.ChildNodes)
{
scene.RootNode.ChildNodes.Add(child);
}
foreach (var child in part2.RootNode.ChildNodes)
{
scene.RootNode.ChildNodes.Add(child);
}
scene.Save("assembled.gltf");
What’s Next מה הלאה
בפוסטים הקרובים, נסקור:
- העמקה בתכונות המרכזיות של API גרף‑הסצנה, חומרים, וכלי מתמטיים.
- מדריך מעשי לעבודה עם כל פורמט 3D נתמך — OBJ, STL, glTF, FBX, ו‑3MF — כולל אפשרויות טעינה/שמירה ותבניות המרה במצב אצווה.
הישארו מעודכנים, ואל תהססו לחקור את הספרייה ולשתף את המשוב שלכם ב‑GitHub.