Είμαστε ενθουσιασμένοι να ανακοινώσουμε τη διαθεσιμότητα του Aspose.3D FOSS for .NET – μια δωρεάν, ανοιχτού κώδικα βιβλιοθήκη για εργασία με μορφές αρχείων 3D σε εφαρμογές .NET. Κατασκευασμένη ως καθαρή λύση C# χωρίς εγγενείς εξαρτήσεις, η βιβλιοθήκη στοχεύει στο .NET 10.0 και μεταγενέστερες εκδόσεις, καθιστώντας την προσβάσιμη σε ένα ευρύ φάσμα έργων και περιβαλλόντων.
Αυτή η ανάρτηση εξηγεί τι προσφέρει η βιβλιοθήκη, πώς να ξεκινήσετε και πού να πάτε από εδώ.
Τι είναι το Aspose.3D FOSS για .NET;?
Aspose.3D FOSS for .NET είναι μια ελαφριά βιβλιοθήκη επεξεργασίας αρχείων 3D που δημοσιεύεται υπό την MIT license. Παρέχει ένα API σκηνικού-γράφηματος που σας επιτρέπει να φορτώνετε, να επιθεωρείτε, να μετασχηματίζετε και να αποθηκεύετε 3D μοντέλα σε διάφορες ευρέως χρησιμοποιούμενες μορφές. Η βιβλιοθήκη είναι εξ ολοκλήρου γραμμένη σε C# και δεν απαιτεί εξωτερικά εγγενή δυαδικά αρχεία ή ρυθμίσεις ειδικές για πλατφόρμα.
Ο κώδικας πηγής είναι διαθέσιμος στο GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Κύρια Σημεία
- Καθαρό 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
Η Πρώτη Σας Μετατροπή
Η πιο απλή περίπτωση χρήσης είναι η φόρτωση ενός 3D αρχείου σε μια μορφή και η αποθήκευσή του σε άλλη. Ακολουθεί μια μετατροπή δύο γραμμών από 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");
Αυτό δημιουργεί μια νέα σκηνή, προσθέτει ένα primitive τύπου κουτί ως παιδικό κόμβο κάτω από τη ρίζα, το τοποθετεί στις συντεταγμένες (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");
Οι μετασχηματισμοί ακολουθούν το τυπικό μοντέλο κληρονομικότητας γονέα-παιδιού: η θέση του παιδιού σε παγκόσμιο χώρο είναι ο συνδυασμός του τοπικού του μετασχηματισμού και όλων των μετασχηματισμών των προγόνων μέχρι τη ρίζα.
Τι περιλαμβάνεται
Η βιβλιοθήκη διανέμεται με ένα εστιασμένο σύνολο δυνατοτήτων σχεδιασμένο γύρω από το μοντέλο γραφήματος 3D σκηνής.
Γράφημα σκηνής
Το γράφημα σκηνής είναι η ραχοκοκαλιά του API. Κάθε αρχείο 3D αναπαρίσταται ως δομή δέντρου:
| Κλάση | Ρόλος |
|---|---|
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 – επεκτείνει το Lambert με ειδικές αντανακλάσεις και γυαλάδα.
- PbrMaterial – υλικό απόδοσης βασισμένο στη φυσική με βασικό χρώμα, μεταλλικότητα, τραχύτητα, απόκρυψη και θέσεις υφής.
Βοηθητικά Μαθηματικά
Το Aspose.ThreeD το namespace περιλαμβάνει βασικές μαθηματικές πρωτογενείς:
- 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 | Ναι | Ναι | μορφή 3D κατασκευής βασισμένη σε ZIP |
Οδηγός Επιλογής Μορφής
Η επιλογή της κατάλληλης μορφής εξαρτάται από την περίπτωση χρήσης σας:
- OBJ είναι ιδανικό όταν χρειάζεστε μέγιστη συμβατότητα μεταξύ των 3D εργαλείων. Σχεδόν κάθε εφαρμογή μοντελοποίησης μπορεί να διαβάσει και να γράψει OBJ. Λειτουργεί καλά για ανταλλαγή δεδομένων πλέγματος, αλλά μεταφέρει μόνο βασικές πληροφορίες υλικού μέσω των συνοδευτικών αρχείων MTL.
- STL είναι η προτιμώμενη μορφή για ροές εργασίας 3D εκτύπωσης. Αποθηκεύει ακατέργαστη τριγωνοποιημένη γεωμετρία χωρίς υλικά ή ιεραρχία σκηνής, κάτι που ακριβώς περιμένει το λογισμικό slicing.
- glTF είναι το σύγχρονο πρότυπο για web και πραγματικό‑χρόνο 3D. Υποστηρίζει υλικά PBR, πλήρεις ιεραρχίες σκηνής και έχει σχεδιαστεί για αποδοτική μετάδοση. Χρησιμοποιήστε το glTF όταν δημιουργείτε προβολείς βασισμένους στο web ή στοχεύετε σε οποιοδήποτε pipeline απόδοσης σε πραγματικό χρόνο.
- FBX είναι βαθιά ενσωματωμένο στις ροές εργασίας ανάπτυξης παιχνιδιών και δημιουργίας ψηφιακού περιεχομένου. Υποστηρίζει πλούσια δεδομένα σκηνής, συμπεριλαμβανομένων ιεραρχιών και υλικών. Aspose.3D FOSS για .NET υποστηρίζει FBX εισαγωγή και εξαγωγή και σε λειτουργίες ASCII και δυαδικές.
- 3MF είναι μια σύγχρονη μορφή 3D εκτύπωσης που υποστηρίζει πλούσια μεταδεδομένα, υλικά και σκηνές πολλαπλών αντικειμένων σε ένα ενιαίο πακέτο βασισμένο σε ZIP.
Γνωστά Περιορισμοί
Scene.Render() είναι δεν υποστηρίζεται στην έκδοση FOSS. Η κλήση αυτής της μεθόδου θα προκαλέσει ένα NotImplementedException. Η βιβλιοθήκη έχει σχεδιαστεί για επεξεργασία 3D βασισμένη σε αρχεία – φόρτωση, επεξεργασία, μετασχηματισμό και αποθήκευση μοντέλων – αντί για απόδοση σε πραγματικό χρόνο σε οθόνη.
Ανοιχτός Κώδικας και Άδεια
Aspose.3D FOSS για .NET κυκλοφορεί υπό την Άδεια MIT. Αυτό σημαίνει ότι είστε ελεύθεροι να:
- Χρησιμοποιήσετε τη βιβλιοθήκη σε εμπορικές και ιδιόκτητες εφαρμογές.
- Τροποποιήστε τον πηγαίο κώδικα ώστε να ταιριάζει στις ανάγκες σας.
- Διανείμετε τη βιβλιοθήκη ως μέρος του δικού σας λογισμικού.
Δεν υπάρχουν τέλη royalty, περιορισμοί χρήσης, ούτε απαιτήσεις αποτίμησης πέραν αυτών που ορίζει η άδεια MIT.
Ο πλήρης κώδικας πηγής φιλοξενείται στο GitHub και οι συνεισφορές είναι ευπρόσδεκτες: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Απαιτήσεις Συστήματος
| Απαίτηση | Λεπτομέρεια |
|---|---|
| .Έκδοση .NET | 10.0 or later |
| Εξαρτήσεις | Καμία (καθαρό C#) |
| Πλατφόρμες | Οποιαδήποτε πλατφόρμα που εκτελεί .NET |
| Διαχειριστής πακέτων | NuGet |
Ξεκινώντας
Ακολουθούν οι πόροι που θα σας βοηθήσουν να ξεκινήσετε:
- Τεκμηρίωση – εκτενείς οδηγίες και περιηγήσεις API διατίθενται στο Ιστότοπος τεκμηρίωσης Aspose.3D.
- Βάση Γνώσεων – πρακτικά άρθρα how‑to και συμβουλές αντιμετώπισης προβλημάτων στο 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");
Τι Ακολουθεί
Στις επερχόμενες δημοσιεύσεις, θα καλύψουμε:
- Μια εις βάθος ανάλυση των βασικών χαρακτηριστικών του API γραφήματος σκηνής, των υλικών και των μαθηματικών βοηθητικών εργαλείων.
- Ένας πρακτικός οδηγός για τη δουλειά με κάθε υποστηριζόμενο 3D format — OBJ, STL, glTF, FBX και 3MF — που περιλαμβάνει επιλογές φόρτωσης/αποθήκευσης και πρότυπα μαζικής μετατροπής.
Μείνετε συντονισμένοι και μη διστάσετε να εξερευνήσετε τη βιβλιοθήκη και να μοιραστείτε τα σχόλιά σας στο GitHub.