Πώς να αποθηκεύσετε 3D μοντέλα σε TypeScript

Πώς να αποθηκεύσετε 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`);

Πίνακας Υποστήριξης Μορφών

ΕπέκτασηΜορφήΣημειώσεις
.glbglTF 2.0 BinaryΣυνιστάται για glTF· όλα τα περιουσιακά στοιχεία ενσωματωμένα σε ένα μόνο αρχείο
.gltfglTF 2.0 JSONΞεχωριστό .bin και αρχεία υφής δίπλα στο JSON
.objWavefront OBJΓράφει .mtl αρχείο υλικού δίπλα .obj όταν υπάρχουν υλικά
.stlSTLΠροεπιλογή: δυαδικό STL· χρησιμοποιήστε StlSaveOptions.ascii = true για κείμενο
.fbxAutodesk FBXΔυαδική μορφή FBX
.3mf3D ManufacturingΚατάλληλο για ροές εργασίας 3D εκτύπωσης
.daeCOLLADAΜορφή ανταλλαγής βασισμένη σε 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 και στη συνέχεια γράφει στο δίσκο.


Δείτε Επίσης

 Ελληνικά