Wie man 3D‑Modelle in TypeScript speichert
Aspose.3D FOSS für TypeScript speichert Szenen in alle unterstützten Formate mit einem einzigen scene.save() Aufruf. Das Ausgabeformat wird automatisch anhand der Dateierweiterung erkannt. Dieser Leitfaden 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 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: Mit automatisch erkanntem Format speichern
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: Format‑spezifische SaveOptions verwenden
Für feinkörnige Steuerung ü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 speichern (im Speicher)
Verwenden Sie scene.saveToBuffer(), um die Ausgabe als Buffer zu erhalten, ohne sie 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('glb');
console.log(`Buffer size: ${buffer.length} bytes`);
// Send via HTTP, upload to S3, etc.
Schritt 6: Ausgabe überprüfen
Nach dem Speichern überprü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`);Formatunterstützungsmatrix
| Erweiterung | Format | Hinweise |
|---|---|---|
.glb | glTF 2.0 Binary | Empfohlen für glTF; alle Assets in einer einzigen Datei eingebettet |
.gltf | glTF 2.0 JSON | Separate .bin- und Texturdateien neben dem JSON |
.obj | Wavefront OBJ | Schreibt .mtl-Materialdatei neben .obj, wenn Materialien vorhanden sind |
.stl | STL | Standard: binäres STL; verwenden Sie 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 mit dem Namen output.xyz schlägt fehl.
.obj Datei wird gespeichert, aber Materialien fehlen
Beim Speichern von OBJ wird die Materialbibliothek (.mtl) automatisch zusammen mit dem .obj geschrieben. 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 anstelle von .gltf; es bündelt Binärdaten in einer einzigen eigenständigen Datei. Setzen Sie GltfSaveOptions.binaryMode = true, wenn Sie eine GltfSaveOptions‑Instanz übergeben.
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');Ä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() verwendet haben. Die Bibliothek schreibt in einen Puffer und dann auf die Festplatte.