Hvordan lagre 3D-modeller i TypeScript
Aspose.3D FOSS for TypeScript lagrer scener til alle støttede formater med en enkelt scene.save() kall. Utdataformatet oppdages automatisk fra filendelsen. Denne guiden dekker lagring til hvert format og bruk av formatspesifikke alternativer.
Steg-for-steg guide
Trinn 1: Installer @aspose/3d
npm install @aspose/3dSteg 2: Last inn eller bygg en scene
Enten last inn en eksisterende fil eller bygg en scene programmatisk før lagring.
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();Steg 3: Lagre med automatisk oppdaget format
scene.save(path) oppdager utdataformatet fra filendelsen:
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');Steg 4: Bruk formatspesifikke SaveOptions
For finjustert kontroll, send inn et formatspesifikt alternativobjekt:
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);Steg 5: Lagre til en buffer (i minnet)
Bruk scene.saveToBuffer() for å få utdata som en Buffer uten å skrive til disk:
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.
Steg 6: Verifiser utdataene
Etter lagring, verifiser at filen finnes og har en størrelse større enn null:
import * as fs from 'fs';
const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);Formatstøttematrise
| Filendelse | Format | Merknader |
|---|---|---|
.glb | glTF 2.0 Binary | Anbefalt for glTF; alle ressurser er innebygd i en enkelt fil |
.gltf | glTF 2.0 JSON | Separat .bin og teksturfiler ved siden av JSON |
.obj | Wavefront OBJ | Skriver .mtl materialfil ved siden av .obj når materialer er til stede |
.stl | STL | Standard: binær STL; bruk StlSaveOptions.ascii = true for tekst |
.fbx | Autodesk FBX | Binært FBX-format |
.3mf | 3D Manufacturing | Egnet for 3D‑utskriftsarbeidsflyter |
.dae | COLLADA | XML-basert utvekslingsformat |
Vanlige problemer og løsninger
Error: Unsupported format ved lagring
Kontroller at filendelsen samsvarer med et støttet format. Biblioteket bruker endelsen for å oppdage formatet; en fil som heter output.xyz vil mislykkes.
.obj filen lagres, men materialer mangler
Når du lagrer OBJ, skrives materialbiblioteket (.mtl) skrives automatisk ved siden av .obj. Begge filene må være i samme katalog ved åpning på nytt. Hvis du bare trenger geometri, sett ObjSaveOptions.enableMaterials = false.
Large .gltf med separate teksturer
Bruk .glb i stedet for .gltf; den pakker binære data i en enkelt selvstendig fil. Sett GltfSaveOptions.binaryMode = true når du sender en GltfSaveOptions instans.
Ofte stilte spørsmål
Kan jeg lagre til flere formater i én kjøring?
Ja; kall scene.save() flere ganger med forskjellige stier:
scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');Endrer lagring scenen?
Nei. scene.save() er en skrivebeskyttet operasjon på scene‑grafen. Du kan lagre den samme scenen i flere formater uten noen bivirkninger.
Kan jeg overskrive kildefilen?
Ja. Send den samme banen til scene.save() som du brukte i scene.open(). Biblioteket skriver til en buffer og deretter til disken.