Πώς να αποθηκεύσετε 3D μοντέλα σε TypeScript
Aspose.3D FOSS για TypeScript αποθηκεύει σκηνές σε όλες τις υποστηριζόμενες μορφές με ένα μόνο scene.save() κλήση. Η μορφή εξόδου ανιχνεύεται αυτόματα από την επέκταση του αρχείου. Αυτός ο οδηγός καλύπτει την αποθήκευση σε κάθε μορφή και τη χρήση επιλογών ειδικών για τη μορφή.
Οδηγός βήμα-βήμα
Βήμα 1: Εγκατάσταση του @aspose/3d
npm install @aspose/3dΒήμα 2: Φορτώστε ή Δημιουργήστε μια Σκηνή
Είτε φορτώστε ένα υπάρχον αρχείο είτε δημιουργήστε μια σκηνή προγραμματιστικά πριν την αποθήκευση.
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
// Load from file
const scene = new Scene();
scene.open('source.obj', new ObjLoadOptions());
// Or create a new empty scene
const emptyScene = new Scene();Βήμα 3: Αποθήκευση με Αυτόματη Ανίχνευση Μορφής
scene.save(path) ανιχνεύει τη μορφή εξόδου από την επέκταση του αρχείου:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());
// Save as binary glTF
scene.save('output.glb');
// Save as JSON glTF
scene.save('output.gltf');
// Save as STL
scene.save('output.stl');
// Save as OBJ
scene.save('output.obj');
// Save as FBX
scene.save('output.fbx');
// Save as 3MF
scene.save('output.3mf');
// Save as COLLADA
scene.save('output.dae');Βήμα 4: Χρησιμοποιήστε Επιλογές Αποθήκευσης Ειδικές για τη Μορφή
Για λεπτομερή έλεγχο, περάστε ένα αντικείμενο επιλογών ειδικό για τη μορφή:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
// Export to GLB with specific options
const saveOptions = new GltfSaveOptions();
saveOptions.binaryMode = true; // produce GLB (binary glTF)
scene.save('output.glb', saveOptions);Βήμα 5: Αποθήκευση σε Buffer (Στη Μνήμη)
Χρησιμοποιήστε scene.saveToBuffer() για να λάβετε την έξοδο ως Buffer χωρίς εγγραφή στο δίσκο:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
const buffer = scene.saveToBuffer('output.glb');
console.log(`Buffer size: ${buffer.length} bytes`);
// Send via HTTP, upload to S3, etc.
Βήμα 6: Επαληθεύστε την Έξοδο
Μετά την αποθήκευση, επαληθεύστε ότι το αρχείο υπάρχει και έχει μη μηδενικό μέγεθος:
import * as fs from 'fs';
const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);Πίνακας Υποστήριξης Μορφών
| Επέκταση | Μορφή | Σημειώσεις |
|---|---|---|
.glb | glTF 2.0 Binary | Συνιστάται για glTF· όλα τα περιουσιακά στοιχεία ενσωματωμένα σε ένα μόνο αρχείο |
.gltf | glTF 2.0 JSON | Ξεχωριστό .bin και αρχεία υφής δίπλα στο JSON |
.obj | Wavefront OBJ | Γράφει .mtl αρχείο υλικού δίπλα .obj όταν υπάρχουν υλικά |
.stl | STL | Προεπιλογή: δυαδικό STL· χρησιμοποιήστε StlSaveOptions.ascii = true για κείμενο |
.fbx | Autodesk FBX | Δυαδική μορφή FBX |
.3mf | 3D Manufacturing | Κατάλληλο για ροές εργασίας 3D εκτύπωσης |
.dae | COLLADA | Μορφή ανταλλαγής βασισμένη σε XML |
Κοινά προβλήματα και διορθώσεις
Error: Unsupported format κατά την αποθήκευση
Ελέγξτε ότι η επέκταση του αρχείου ταιριάζει με μια υποστηριζόμενη μορφή. Η βιβλιοθήκη χρησιμοποιεί την επέκταση για να εντοπίσει τη μορφή· ένα αρχείο με όνομα output.xyz θα αποτύχει.
.obj το αρχείο αποθηκεύεται αλλά τα υλικά λείπουν
Κατά την αποθήκευση OBJ, η βιβλιοθήκη υλικών (.mtl) γράφεται αυτόματα μαζί με το .obj. Και τα δύο αρχεία πρέπει να βρίσκονται στον ίδιο φάκελο κατά το άνοιγμα ξανά. Εάν χρειάζεστε μόνο τη γεωμετρία, ορίστε ObjSaveOptions.enableMaterials = false.
Μεγάλο .gltf με ξεχωριστές υφές
Χρησιμοποιήστε .glb αντί για .gltf; συγκεντρώνει δυαδικά δεδομένα σε ένα ενιαίο αυτόνομο αρχείο. Ορίστε GltfSaveOptions.binaryMode = true όταν περνάτε ένα GltfSaveOptions αντίγραφο.
Συχνές Ερωτήσεις
Μπορώ να αποθηκεύσω σε πολλαπλές μορφές σε μία εκτέλεση;?
Ναι· καλέστε scene.save() πολλαπλές φορές με διαφορετικές διαδρομές:
scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');Τροποποιεί η αποθήκευση τη σκηνή;?
Όχι. scene.save() είναι μια λειτουργία μόνο για ανάγνωση στο γράφημα σκηνής. Μπορείτε να αποθηκεύσετε την ίδια σκηνή σε πολλαπλές μορφές χωρίς καμία παρενέργεια.
Μπορώ να αντικαταστήσω το αρχικό αρχείο;?
Ναι. Περνάτε την ίδια διαδρομή στο scene.save() που χρησιμοποιήσατε στο scene.open(). Η βιβλιοθήκη γράφει σε ένα buffer και στη συνέχεια γράφει στο δίσκο.