Wie man 3D‑Modelle in TypeScript speichert
Aspose.3D FOSS für TypeScript speichert Szenen in allen unterstützten Formaten mit einem einzigen scene.save() Aufruf. Das Ausgabeformat wird automatisch anhand der Dateierweiterung erkannt. Dieses Handbuch behandelt das Speichern in jedes Format und die Verwendung format‑spezifischer Optionen.
Schritt-für-Schritt-Anleitung
Schritt 1: Installieren Sie @aspose/3d
npm install @aspose/3dSchritt 2: Laden oder Erstellen einer Szene
Laden Sie entweder eine vorhandene Datei oder erstellen Sie eine Szene programmgesteuert, bevor Sie sie speichern.
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();Schritt 3: Speichern mit automatisch erkanntem Format
scene.save(path) erkennt das Ausgabeformat anhand der Dateierweiterung:
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');Schritt 4: Verwenden von format-spezifischen SaveOptions
Für feinkörnige Kontrolle übergeben Sie ein format-spezifisches Optionsobjekt:
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);Schritt 5: In einen Puffer (im Speicher) speichern
Verwenden Sie scene.saveToBuffer() um die Ausgabe als ein Buffer ohne auf die Festplatte zu schreiben:
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.
Schritt 6: Ausgabe überprüfen
Nach dem Speichern prüfen Sie, ob die Datei existiert und eine Größe ungleich Null hat:
import * as fs from 'fs';
const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);Matrix der Formatunterstützung
| Erweiterung | Format | Hinweise |
|---|---|---|
.glb | glTF 2.0 Binär | Empfohlen für glTF; alle Assets in einer einzigen Datei eingebettet |
.gltf | glTF 2.0 JSON | Separat .bin und Texturdateien neben der JSON |
.obj | Wavefront OBJ | Schreibt .mtl Materialdatei neben .obj wenn Materialien vorhanden sind |
.stl | STL | Standard: binäres STL; verwenden StlSaveOptions.ascii = true für Text |
.fbx | Autodesk FBX | Binäres FBX-Format |
.3mf | 3D Manufacturing | Geeignet für 3D-Druck-Workflows |
.dae | COLLADA | XML-basiertes Austauschformat |
Häufige Probleme und Lösungen
Error: Unsupported format beim Speichern
Stellen Sie sicher, dass die Dateierweiterung einem unterstützten Format entspricht. Die Bibliothek verwendet die Erweiterung, um das Format zu erkennen; eine Datei namens output.xyz wird fehlschlagen.
.obj Datei wird gespeichert, aber Materialien fehlen
Beim Speichern von OBJ wird die Materialbibliothek (.mtl) wird automatisch zusammen mit dem .obj. Beide Dateien müssen beim erneuten Öffnen im selben Verzeichnis liegen. Wenn Sie nur Geometrie benötigen, setzen Sie ObjSaveOptions.enableMaterials = false.
Groß .gltf mit separaten Texturen
Verwenden Sie .glb statt .gltf; es bündelt Binärdaten in einer einzigen eigenständigen Datei. Set GltfSaveOptions.binaryMode = true wenn Sie ein GltfSaveOptions Instanz.
Häufig gestellte Fragen
Kann ich in einem Durchlauf in mehrere Formate speichern?
Ja; rufen Sie scene.save() mehrfach mit unterschiedlichen Pfaden auf:
scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');Verändert das Speichern die Szene?
Nein. scene.save() ist ein schreibgeschützter Vorgang im Szenengraphen. Sie können dieselbe Szene in mehrere Formate speichern, ohne dass Nebenwirkungen auftreten.
Kann ich die Quelldatei überschreiben?
Ja. Übergeben Sie denselben Pfad an scene.save() den Sie in scene.open(). Die Bibliothek schreibt in einen Puffer und schreibt dann auf die Festplatte.