Εισαγωγή

Χαιρόμαστε να ανακοινώσουμε τη διαθεσιμότητα του Aspose.3D FOSS για TypeScript ως το @aspose/3d npm πακέτο. Αυτή η βιβλιοθήκη υπό άδεια MIT προσφέρει επεξεργασία 3D σκηνών υψηλής παραγωγικής ποιότητας σε εφαρμογές TypeScript και Node.js χωρίς να απαιτούνται εγγενή δυαδικά αρχεία, εργαλεία ειδικά για πλατφόρμα ή εμπορικές άδειες.

Η βιβλιοθήκη έχει σχεδιαστεί γύρω από ένα απλό Scene API: φόρτωση ενός 3D αρχείου με scene.open(), επιθεώρηση ή μετασχηματισμό του γραφήματος σκηνής, και εγγραφή του αποτελέσματος με scene.save(). Πλήρεις ορισμοί τύπων TypeScript περιλαμβάνονται· δεν απαιτείται ξεχωριστό @types/ το πακέτο απαιτείται.

Κύρια Χαρακτηριστικά

Πολυμορφική I/O. Το πακέτο διαβάζει και γράφει έξι κύριες 3D μορφές με μια μόνο εγκατάσταση. Το OBJ υποστηρίζεται για εισαγωγή· τα glTF 2.0, GLB, STL, 3MF και COLLADA υποστηρίζουν τόσο εισαγωγή όσο και εξαγωγή. Υπάρχουν κλάσεις εισαγωγέα/εξαγωγέα FBX, αλλά η αυτόματη ανίχνευση μορφής δεν είναι ακόμη ενεργοποιημένη, έτσι τα αρχεία FBX δεν μπορούν να φορτωθούν μέσω scene.open().

Υποστήριξη TypeScript πρώτης τάξης. Όλες οι δημόσιες κλάσεις, οι απαριθμήσεις και οι τύποι επιλογών είναι πλήρως τυποποιημένοι. Τα IDE με υποστήριξη της υπηρεσίας γλώσσας TypeScript (VS Code, WebStorm κ.λπ.) παρέχουν ακριβή αυτόματη συμπλήρωση και ενσωματωμένη τεκμηρίωση για κάθε κλήση API.

Συμβατότητα με Node.js 18–22+. Το πακέτο δοκιμάζεται με τις εκδόσεις LTS του Node.js 18, 20 και 22. Δεν μεταγλωττίζονται εγγενή πρόσθετα κατά την εγκατάσταση, έτσι λειτουργεί σε όλες τις πλατφόρμες που υποστηρίζει το Node.js.

Μία εξάρτηση χρόνου εκτέλεσης. Η μόνη εξάρτηση είναι xmldom, χρησιμοποιείται αποκλειστικά για την ανάλυση COLLADA XML. Όλοι οι άλλοι αναλυτές μορφών είναι καθαρές υλοποιήσεις JavaScript.

Άδεια MIT. Χρήση @aspose/3d σε εμπορικά, ανοιχτού κώδικα ή εσωτερικά έργα χωρίς περιορισμούς.

Γρήγορη Εκκίνηση

Εγκαταστήστε το πακέτο:

npm install @aspose/3d

Φορτώστε ένα αρχείο OBJ και μετατρέψτε το σε δυαδικό GLB:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());

const saveOpts = new GltfSaveOptions();
saveOpts.binaryMode = true;   // produce a single .glb file
scene.save('output.glb', GltfFormat.getInstance(), saveOpts);

console.log('Converted to GLB successfully');

Επανάληψη πάνω στους κόμβους της σκηνής για να εξετάσετε τη γεωμετρία:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());

for (const node of scene.rootNode.childNodes) {
    console.log(`Node: ${node.name}`);
    if (node.entity) {
        console.log(`  Entity type: ${node.entity.constructor.name}`);
    }
}

Υποστηριζόμενες Μορφές

ΜορφήΕπέκτασηΕισαγωγήΕξαγωγήΣημειώσεις
Wavefront OBJ.objΝαιΌχιΜόνο εισαγωγή· διαβάζει .mtl αρχεία υλικού
glTF 2.0.gltfΝαιΝαιJSON με εξωτερικό .bin buffer
Δυαδικό GLB.glbΝαιΝαιΟρισμός binaryMode: true σε GltfSaveOptions
STL.stlΝαιΝαιASCII και δυαδικό STL
3MF.3mfΝαιΝαιΑρχείο Open Packaging Convention
FBX.fbxΌχι*Όχι*Εισαγωγέας/εξαγωγέας υπάρχουν αλλά η αυτόματη ανίχνευση μορφής δεν είναι συνδεδεμένη
COLLADA.daeΝαιΝαιΑπαιτεί ενσωματωμένο xmldom εξάρτηση

Πλεονεκτήματα του TypeScript

Δουλεύοντας με @aspose/3d στο TypeScript εντοπίζει σφάλματα κατηγορίας κατά τη φάση μεταγλώττισης αντί για τη φάση εκτέλεσης. Όταν καλείτε scene.save(), ο μεταγλωττιστής επαληθεύει ότι το αντικείμενο επιλογών ταιριάζει με το αναμενόμενο SaveOptions υποτύπο για την επιλεγμένη μορφή. Οι επιλογές φόρτωσης και αποθήκευσης ειδικές για τη μορφή εκθέτουν μόνο τις ιδιότητες που σχετίζονται με αυτή τη μορφή· δεν υπάρχει ατυποποιημένη τσάντα επιλογών για εικασία.

Για παράδειγμα, GltfSaveOptions.binaryMode είναι τυποποιημένο boolean, έτσι ο μεταγλωττιστής απορρίπτει saveOpts.binaryMode = 'yes' πριν εκτελεστεί οποιοσδήποτε κώδικας. Ιδιότητες animation στο AnimationClip, κανάλια υλικού στο PbrMaterial, και τύποι στοιχείων κορυφής στο VertexElement είναι όλα παρόμοιας τύπου και ανακαλύψιμα μέσω IntelliSense χωρίς να χρειάζεται να συμβουλευτείτε εξωτερική τεκμηρίωση.

Ανοιχτού Κώδικα και Δωρεάν

Το πακέτο δημοσιεύεται υπό την MIT License. Ο κώδικας πηγής είναι διαθέσιμος στο GitHub. Συνεισφορές, αναφορές σφαλμάτων και αιτήματα υποστήριξης μορφής είναι ευπρόσδεκτα μέσω του συστήματος παρακολούθησης θεμάτων του αποθετηρίου.

Η βιβλιοθήκη έχει μία εξάρτηση χρόνου εκτέλεσης: xmldom έκδοση 0.9+, χρησιμοποιείται μόνο κατά την ανάγνωση ή εγγραφή αρχείων COLLADA. Όλοι οι άλλοι αναλυτές και συγγραφείς είναι αυτόνομες υλοποιήσεις pure-JavaScript χωρίς δυαδικά στοιχεία.

Ξεκινώντας

Συμπέρασμα

@aspose/3d Η έκδοση 24.12.0 παρέχει μια σταθερή, τυποποιημένη, ελαφριά σε εξαρτήσεις βάση για την επεξεργασία αρχείων 3D σε TypeScript και Node.js. Είτε η περίπτωση χρήσης είναι η μετατροπή μορφών, η επιθεώρηση σκηνής, η εξαγωγή γεωμετρίας ή η ενσωμάτωση σε pipeline, η βιβλιοθήκη καλύπτει τις πιο κοινές μορφές ανταλλαγής 3D υπό μια επιτρεπτική ανοιχτού κώδικα άδεια.

Εγκαταστήστε το σήμερα και ενημερώστε μας τι δημιουργείτε.