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

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

Το Aspose.3D FOSS for 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('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`);

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

ExtensionFormatNotes
.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(). Η βιβλιοθήκη γράφει σε μια ενδιάμεση μνήμη και στη συνέχεια γράφει στο δίσκο.


Δείτε επίσης

 Ελληνικά