Εισαγωγή

Aspose.3D FOSS για TypeScript (@aspose/3d) είναι μια ανοιχτού κώδικα, αδειοδοτημένη με MIT βιβλιοθήκη μορφής αρχείων 3D, σχεδιασμένη κυρίως για Node.js. Οι προγραμματιστές που δημιουργούν προβολείς μοντέλων 3D, μετατροπείς μορφών, εργαλεία επεξεργασίας γεωμετρίας ή διακομιστικές 3D αλυσίδες μπορούν να το εγκαταστήσουν με μια εντολή (δείτε τον Οδηγό εγκατάστασης) και άμεσα να αρχίσουν να φορτώνουν, να δημιουργούν και να εξάγουν περιεχόμενο 3D. Η βιβλιοθήκη χρησιμοποιεί require('fs') και Buffer από το Node.js· η χρήση σε πρόγραμμα περιήγησης απαιτεί κατάλληλα shim για αυτά τα API και δεν υποστηρίζεται επίσημα.

Η βιβλιοθήκη υποστηρίζει τις κύριες μορφές ανταλλαγής — OBJ, glTF 2.0 / GLB, STL, 3MF και COLLADA τόσο για εισαγωγή όσο και για εξαγωγή. Υπάρχουν κλάσεις εισαγωγέα/εξαγωγέα FBX, αλλά δεν έχουν ακόμη ενσωματωθεί στην αυτόματη ανίχνευση μορφής. Το API του γραφήματος σκηνής αντικατοπτρίζει το μοντέλο που είναι γνωστό από τα εργαλεία δημιουργίας 3D: ένα Scene περιέχει ένα rootNode, κάθε Node μπορεί να μεταφέρει κόμβους-παιδιά και αντικείμενα οντοτήτων (Mesh, Camera, Light), και η ιεραρχία μετασχηματισμών είναι πλήρως προσβάσιμη για ανάγνωση και εγγραφή.

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

  • Πολυμορφική Ε/Ε: Εισαγωγή και εξαγωγή OBJ (με .mtl υλικά), glTF 2.0 / GLB, STL (δυαδικό και ASCII), 3MF, και COLLADA από διαδρομές αρχείων και από τη μνήμη Buffer αντικείμενα. Η υποστήριξη FBX δεν είναι ακόμη ενσωματωμένη στην αυτόματη ανίχνευση.
  • Γράφημα σκηνής API: Scene, Node, Mesh, Camera, Light ιεραρχία με πλήρη διαχείριση γονέα/παιδιού· περιήγηση στους κόμβους αναδρομικά μέσω node.childNodes
  • σύστημα υλικών PBR: Υλικά Lambert, Phong και PBR (μεταλλικό/τραχύτητα) προσβάσιμα μέσω node.material
  • Λειτουργίες πλέγματος: Πρόσβαση σε ακατέργαστα δεδομένα κορυφών μέσω mesh.controlPoints (πίνακας του Vector4), δείκτες πολυγώνων μέσω mesh.polygonCount, και κανάλια στοιχείων κορυφών μέσω mesh.getElement()
  • Μαθηματικά βοηθητικά εργαλεία: Vector2, Vector3, Vector4, Matrix4, Quaternion, και τύποι περιοριστικού πλαισίου για χωρικούς υπολογισμούς
  • Σύστημα animation: Animation με keyframe AnimationClip, AnimationChannel, και καμπύλες παρεμβολής (γραμμική, Bezier, TCB spline)
  • Επιλογές ειδικές για μορφότυπο: Κατά μορφότυπο LoadOptions / SaveOptions classes ελέγχουν την αντιστροφή συντεταγμένων, την κλίμακα, τη φόρτωση υλικού και άλλα

Ξεκινώντας

Κατασκευάστε το πακέτο από τον πηγαίο κώδικα. Απαιτείται Node.js 18 ή νεότερο· συνιστάται TypeScript 5.0+.

git clone https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-TypeScript.git
cd Aspose.3D-FOSS-for-TypeScript
npm install
npm run build

Φορτώστε ένα αρχείο OBJ και επιθεωρήστε τη σκηνή:

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

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

for (const node of scene.rootNode.childNodes) {
    if (node.entity && 'controlPoints' in node.entity) {
        const mesh = node.entity as any;
        console.log(`Mesh "${node.name}": ${mesh.controlPoints.length} vertices`);
    }
}

Γράφημα Σκηνής API

Κάθε σκηνή είναι ένα δέντρο από αντικείμενα Node με ρίζα στο scene.rootNode. Δημιουργήστε την ιεραρχία με addChildNode(), συνδέστε οντότητες όπως Camera ή Light σε έναν κόμβο μέσω της ιδιότητας entity, και διαβάστε τον τοπικό ή παγκόσμιο μετασχηματισμό κάθε κόμβου μέσω transform και globalTransform.

import { Scene, Node, Camera, Light } from '@aspose/3d';

const scene = new Scene();

const cameraNode = new Node('MainCamera');
cameraNode.entity = new Camera('MainCamera');
scene.rootNode.addChildNode(cameraNode);

const lightNode = new Node('KeyLight');
lightNode.entity = new Light('KeyLight');
scene.rootNode.addChildNode(lightNode);

for (const child of scene.rootNode.childNodes) {
    console.log(`${child.name}: ${child.entity?.constructor.name}`);
}

Βοηθήματα Μαθηματικών

Vector3, Vector4, Matrix4 και Quaternion υποστηρίζουν κάθε γεωμετρική λειτουργία στη βιβλιοθήκη. Vector3 και Vector4 εκθέτουν τα στοιχεία x/y/z(/w) συν length, dot(), και cross(); Matrix4 είναι ένα πλέγμα 4×4 προσβάσιμο μέσω m00–m33 με transpose() και concatenate(); Quaternion παρέχει normalize(), conjugate(), inverse(), και dot() για μαθηματικά περιστροφής.

import { Vector3, Quaternion, Matrix4 } from '@aspose/3d/utilities';

const position = new Vector3(1.0, 2.0, 3.0);
const rotation = new Quaternion(1.0, 0.0, 0.0, 0.0);
const transform = new Matrix4();

console.log(`length=${position.length} determinant=${transform.determinant}`);
console.log(`rotation w=${rotation.w} x=${rotation.x} y=${rotation.y} z=${rotation.z}`);

Δείτε επίσης

Σχετικοί Πόροι