Πώς να μετατρέψετε 3D μοντέλα σε TypeScript
Το Aspose.3D FOSS για το TypeScript μετατρέπει μεταξύ 3D μορφών με φόρτιση σε ουδέτερη Scene εκπροσώπηση και αποθήκευση στο στόχο μορφή.Αυτός ο οδηγός δείχνει τις πιο κοινές μετατροπές.
Βήμα προς βήμα οδηγός
Βήμα 1: Εγκατάσταση @aspose/3d
asposefoss/3d is not yet published — build from source until it ships. See the project README for build instructions.
Βήμα 2: Κατεβάστε το αρχείο πηγής
Δημιουργία A Scene και καλεί scene.open().Χρησιμοποιήστε το συγκεκριμένο format *LoadOptions Η τάξη για τα καλύτερα αποτελέσματα.
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
const opts = new ObjLoadOptions();
opts.enableMaterials = true;
scene.open('model.obj', opts);Βήμα 3: Αποθηκεύστε στο Στόχος Τάξη
Κλήση scene.save() Με το μονοπάτι εξόδου.Η μορφή εξαγωγής ανιχνεύεται από την επέκταση αρχείου.
// OBJ → glTF binary (GLB)
scene.save('output.glb');
// OBJ → STL
scene.save('output.stl');
// OBJ → COLLADA
scene.save('output.dae');Σημείωση : Το FBX είναι Δεν υποστηρίζεται Με
scene.save()Αυτοαποκαλύψεις - Το.fbxΗ επέκταση δεν συνδέεται με οποιονδήποτε εξαγωγέα - εξοικονόμηση για την.fbxΧρησιμοποιήστε OBJ, glTF, STL, 3MF ή COLLADA για αξιόπιστη παραγωγή.
Βήμα 4: Κοινά παραδείγματα μετατροπής
ΟΜΒΕ προς GLTF / GLB
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
scene.save('model.glb');
console.log('Converted OBJ → GLB');FBX - Δεν υποστηρίζεται
Το FBX Auto-Detection δεν είναι διαθέσιμο σε
scene.open(). ΑΜ.fbxΤα αρχεία που μεταφέρονται σεscene.open()δεν αναγνωρίζεται από οποιοδήποτε ανιχνευτή μορφής και πέφτει μέσα στο STL διακόπτη, το οποίο θα αποτύχει ή να παράγει σκουλήκια. FBX εισαγωγείς / εξαγωγές τάξεις υπάρχουν στη βιβλιοθήκη αλλά απαιτούν άμεση επίδοση αντί για υψηλό επίπεδοopen()/save()Χρησιμοποιήστε το COLLADA, OBJ ή GLTF ως εναλλακτική λύση στο FBX.
ΓΚΤΦ ΣΤΟ STL
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('model.glb');
scene.save('model.stl');
console.log('Converted GLB → STL');Σύνδεση 3MF
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('model.dae');
scene.save('model.3mf');
console.log('Converted COLLADA → 3MF');Βήμα 5: Μετατρέψτε το Batch σε Multiple Files
import * as fs from 'fs';
import * as path from 'path';
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const inputDir = './input';
const outputDir = './output';
fs.mkdirSync(outputDir, { recursive: true });
const objFiles = fs.readdirSync(inputDir).filter(f => f.endsWith('.obj'));
for (const file of objFiles) {
const inputPath = path.join(inputDir, file);
const outputFile = file.replace('.obj', '.glb');
const outputPath = path.join(outputDir, outputFile);
const scene = new Scene();
scene.open(inputPath, new ObjLoadOptions());
scene.save(outputPath);
console.log(`Converted ${file} → ${outputFile}`);
}Υποστηρίζεται μετατροπή Matrix
| Από το | ΓΚΤ / GLB | OBJ | STL | FBX | 3MF | COLLADA |
|---|---|---|---|---|---|---|
| OBJ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| ΓΚΤ / GLB | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| FBX | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| STL | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| 3MF | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| COLLADA | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
FBX Δεν υποστηρίζεται από το υψηλό επίπεδο. open()/save() API - η μορφή δεν είναι συνδεδεμένη στην αυτο-αποκάλυψη. όλα τα κύτταρα FBX παραπάνω είναι .
Κοινά προβλήματα και τακτοποιήσεις
Τα υλικά χάνονται μετά την μετατροπή
Η ΕΣΔΑ (usemtl, .mtl Τα αρχεία είναι φορτωμένα όταν ObjLoadOptions.enableMaterials = true.Όταν αποθηκεύετε στο glTF, οι ιδιότητες υλικού PBR χαρτογραφούνται αυτόματα. σύνθετα υλικά (διαδικαστικά, πολυεπίπεδα) μπορούν να μετατραπούν με μειωμένη πιστότητα.
Η Μασάλη φαίνεται να κλιμακώνεται εσφαλμένα
Διαφορετικές μορφές χρησιμοποιούν διαφορετικές προεπιλεγμένες μονάδες (μιλιομέτρων για STL, μετρητές για glTF). ObjLoadOptions.scale Όταν φορτώνουμε ή StlSaveOptions.scale Εξόρυξη για την ομαλοποίηση των μονάδων.
Συντονισμένο σύστημα αδιαφορία (σχετικό μοντέλο κλιπ ή περιστροφής)
Ορισμένες μορφές χρησιμοποιούν δεξιά Y-up, άλλες Z-Up. ObjLoadOptions.flipCoordinateSystem = true ή εφαρμόστε μια περιστροφή στο ρίζον κώνημα μετά την φόρτιση.
Συχνές ερωτήσεις
Η μετατροπή διατηρεί τις κινούμενες εικόνες;?
Τα δεδομένα κινουμένων σχεδίων διατηρούνται όταν μετατρέπονται μεταξύ μορφών που το υποστηρίζουν (π.χ., COLLADA → glTF). STL και OBJ δεν φέρουν δεδομένες κινυμένων σχέσεων. scene.open()/scene.save(), έτσι FBX animation round-trips δεν είναι διαθέσιμα μέσω του API υψηλού επιπέδου.
Διατηρούνται τα δεδομένα κειμένου;?
Οι υφιστάμενες με το υλικό OBJ ή ενσωματωμένες στο glTF μεταφέρονται μέσα στο γραφείο σκηνής.binaryMode = true), το δυαδικό buffer ενσωματώνεται σε ένα μόνο αρχείο. για την έκδοση OBJ, οι υφιστάμενες κείμενα αποθηκεύονται ως ξεχωριστά αρχεία δίπλα στο .obj.
Μπορώ να μετατρέψω πολλά αρχεία παράλληλα;?
scene.open() και scene.save() Χρησιμοποιήστε το Node.js worker_threads Παράλληλη επεξεργασία.