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