תכונות ופונקציונליות
תכונות ופונקציונליות
דף זה מכסה כל תחום תכונה מרכזי של Aspose.3D 26.1.0 עם דוגמאות C# עובדות.
טעינה ושמירת סצנות
Scene.Open() טוען קובץ; Scene.Save() מייצא אותו. הפורמט מזוהה מהרחבת הקובץ:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");השתמש במפעל הסטטי Scene.FromFile() כחלופה:
var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");אפשרויות ספציפיות לפורמט
העבר LoadOptions או SaveOptions מחלקות משנה לשליטה מדויקת:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");מחלקות אפשרויות זמינות:
| מחלקה | כיוון | מאפיינים מרכזיים |
|---|---|---|
ObjLoadOptions | ייבוא | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | ייצוא | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | ייבוא | (הגדרות ברירת מחדל) |
GltfLoadOptions | ייבוא | (הגדרות ברירת מחדל) |
GltfSaveOptions | ייצוא | (הגדרות ברירת מחדל) |
StlLoadOptions | ייבוא | (הגדרות ברירת מחדל) |
StlSaveOptions | ייצוא | (הגדרות ברירת מחדל) |
ColladaLoadOptions | ייבוא | FlipCoordinateSystem |
ColladaSaveOptions | ייצוא | Indented, TransformStyle |
PlyLoadOptions | ייבוא | (הגדרות ברירת מחדל) |
בניית גרף סצנה
צור צמתים והצמד ישויות כדי לבנות היררכיה:
var scene = new Scene();
var root = scene.RootNode;
var boxNode = root.CreateChildNode("box", new Box(5, 5, 5));
var sphereNode = root.CreateChildNode("sphere", new Sphere(3));גישה לילדים דרך node.ChildNodes והישות המצורפת דרך node.Entity.
Mesh ופרימיטיבים
צור Mesh תכנותית עם נקודות שליטה ופוליגונים:
// Mesh.ControlPoints uses Aspose.ThreeD.Utilities.Vector4
// (double-precision, lowercase fields: x, y, z, w)
using Aspose.ThreeD.Utilities;
var mesh = new Mesh("custom");
mesh.ControlPoints.Add(new Vector4(0.0, 0.0, 0.0)); // w defaults to 1.0
mesh.ControlPoints.Add(new Vector4(10.0, 0.0, 0.0));
mesh.ControlPoints.Add(new Vector4(10.0, 10.0, 0.0));
mesh.ControlPoints.Add(new Vector4(0.0, 10.0, 0.0));
mesh.CreatePolygon(0, 1, 2, 3);פרימיטיבים מובנים (Box, Sphere, Cylinder) ניתן להמיר ל Mesh:
var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();אלמנטים של קודקוד
הצמד נורמליים, UVs וצבעי קודקוד לגאומטריה:
var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);סוגי רכיבי קודקוד זמינים: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.
טרנספורמים
כל Node נושא Transform עם Translation, Rotation, ו Scale:
var node = scene.RootNode.CreateChildNode("moved", new Box());
node.Transform.Translation = new FVector3(10, 0, 5);
node.Transform.Scale = new FVector3(2, 2, 2);קרא מיקום במרחב‑עולם באמצעות node.GlobalTransform.Matrix או node.EvaluateGlobalTransform().
חומרים
הקצה חומרים לצמתים עבור נתוני הצללה:
var mat = new PhongMaterial("shiny");
mat.Diffuse = new Vector4(0.8, 0.2, 0.2, 1.0);
mat.Specular = new Vector4(1, 1, 1, 1);
mat.Shininess = 32;
scene.RootNode.CreateChildNode("red_box", new Box(), mat);סוגי חומר: LambertMaterial, PhongMaterial, PbrMaterial.
טיפים ושיטות עבודה מומלצות
- השתמש
Scene.FromFile()לטעינה בשורה אחת כאשר אינך זקוק למותאם אישיתLoadOptions - המר פרימיטיבים ל
MeshעםToMesh()לפני הוספת רכיבי קודקוד - השתמש
GltfSaveOptionsעם.glbהרחבה לפלט בינארי קומפקטי - בדוק
node.Entityלnullלפני המרה — לא כל צומת נושא גאומטריה - השתמש
PolygonModifier.Triangulate()להמרת רשתות קווד לפני יצוא לפורמטים של משולשים בלבד כמו STL
בעיות נפוצות
| בעיה | סיבה | תיקון |
|---|---|---|
ImportException בטעינה | קובץ לא נתמך או פגום | ודא שהקובץ נפתח בתצוגת 3D; בדוק שהפורמט נמצא ברשימת הנתמכים |
| חומרים חסרים לאחר טעינת OBJ | .mtl קובץ לא נמצא | מקם את .mtl קובץ ליד ה .obj או הגדר ObjLoadOptions.EnableMaterials = true |
| חוסר התאמה בקנה המידה לאחר ייבוא FBX | מערכות יחידות שונות | השתמש ObjLoadOptions.Scale או החל Transform לאחר הטעינה |
FAQ
איך אני מזהה את הפורמט של קובץ לא ידוע?
השתמש FileFormat.Detect():
var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);האם אפשר לטעון מזרם במקום נתיב קובץ?
כן. Scene.Open() מקבל Stream:
using var stream = File.OpenRead("model.glb");
scene.Open(stream);אילו פורמטים תומכים גם בייבוא וגם ביצוא?
OBJ, STL, glTF/GLB, FBX, COLLADA, ו‑3MF תומכים בשני הכיוונים. PLY תומך רק בייבוא (מייצא ה‑PLY אינו מחובר).
סיכום תיעוד API
| מחלקה / שיטה | תיאור |
|---|---|
Scene | מכולת סצנה תלת‑ממדית ברמה העליונה |
Scene.Open() | טען קובץ 3D לפי נתיב או זרם |
Scene.Save() | ייצא סצנה לקובץ או לזרם |
Scene.FromFile() | מפעל סטטי לטעון ולהחזיר a Scene |
Node | צומת של היררכיית Scene המחזיק ישויות והמרות |
Node.CreateChildNode() | צור והצמד צומת בן |
Mesh | Polygon mesh עם נקודות בקרה ורשימות פנים |
Mesh.CreatePolygon() | הגדר משטח פוליגון לפי אינדקסי קודקודים |
Box / Sphere / Cylinder | פרימיטיבים פרמטריים מובנים |
Transform | הזזה, סיבוב וקנה מידה מקומיים |
FileFormat | רישום וגלאי של פורמטים נתמכים |
LambertMaterial / PhongMaterial / PbrMaterial | סוגי חומרים להצללה |