Είμαστε ενθουσιασμένοι να ανακοινώσουμε τη διαθεσιμότητα του 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

Επιλογές Φόρτωσης και Αποθήκευσης

Κάθε μορφή διαθέτει ειδικές κλάσεις επιλογών που σας επιτρέπουν να ελέγχετε τη συμπεριφορά εισαγωγής και εξαγωγής:

ΜορφήΕπιλογές ΦόρτωσηςΕπιλογές Αποθήκευσης
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
glTF / GLBGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptionsFbxSaveOptions
3MFTmfLoadOptionsTmfSaveOptions

Για παράδειγμα, για να φορτώσετε ένα αρχείο 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

Απαιτήσεις Συστήματος

ΑπαίτησηΛεπτομέρεια
.Έκδοση .NET10.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.