Χαρακτηριστικά και Λειτουργίες

Χαρακτηριστικά και Λειτουργίες

Χαρακτηριστικά και Λειτουργίες

Αυτή η σελίδα καλύπτει κάθε κύρια περιοχή λειτουργίας του 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.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);

Ενσωματωμένα primitives (Box, Sphere, Cylinder) μπορούν να μετατραπούν σε Mesh:

var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();

Στοιχεία Κορυφής

Συνδέστε κανονικές, UV και χρώματα κορυφής στη γεωμετρία:

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
  • Μετατρέψτε τα primitives σε 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);

Μπορώ να φορτώσω από ροή (stream) αντί για διαδρομή αρχείου;?

Ναι. Scene.Open() δέχεται ένα Stream:

using var stream = File.OpenRead("model.glb");
scene.Open(stream);

Ποιες μορφές υποστηρίζουν τόσο εισαγωγή όσο και εξαγωγή;?

Τα OBJ, STL, glTF/GLB, FBX, COLLADA και 3MF υποστηρίζουν και τις δύο κατευθύνσεις. Το PLY υποστηρίζει μόνο εισαγωγή (ο εξαγωγέας PLY δεν είναι συνδεδεμένος).


Περίληψη Αναφοράς API

Κλάση / ΜέθοδοςΠεριγραφή
SceneΚοντέινερ 3D σκηνής ανώτερου επιπέδου
Scene.Open()Φορτώστε ένα αρχείο 3D με διαδρομή ή ροή
Scene.Save()Εξαγωγή σκηνής σε αρχείο ή ροή
Scene.FromFile()Στατική εργοστασιακή μέθοδος για τη φόρτωση και επιστροφή ενός Scene
NodeΚόμβος ιεραρχίας σκηνής που περιέχει οντότητες και μετασχηματισμούς
Node.CreateChildNode()Δημιουργία και προσάρτηση ενός παιδικού κόμβου
MeshΠολυγωνικό πλέγμα με σημεία ελέγχου και λίστες προσώπων
Mesh.CreatePolygon()Ορισμός πολυγωνικού προσώπου με δείκτες κορυφών
Box / Sphere / CylinderΕνσωματωμένα παραμετρικά primitives
TransformΤοπική μετατόπιση, περιστροφή και κλίμακα
FileFormatΚατάλογος και ανιχνευτής για υποστηριζόμενες μορφές
LambertMaterial / PhongMaterial / PbrMaterialΤύποι υλικού για σκίαση
 Ελληνικά