Hur man sparar 3D-modeller i TypeScript
Aspose.3D FOSS för TypeScript sparar scener till alla stödda format med ett enda scene.save() anrop. Utdataformatet upptäcks automatiskt från filändelsen. Denna guide täcker hur man sparar till varje format och använder format‑specifika alternativ.
Steg-för-steg-guide
Steg 1: Installera @aspose/3d
npm install @aspose/3dSteg 2: Ladda eller skapa en scen
Ladda antingen en befintlig fil eller bygg en scen programatiskt innan du sparar.
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: Spara med automatiskt upptäckt format
scene.save(path) upptäcker utdataformatet från filändelsen:
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: Använd format‑specifika SaveOptions
För finjusterad kontroll, skicka ett format‑specifikt 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: Spara till en buffer (i minnet)
Använd scene.saveToBuffer() för att få utdata som en Buffer utan att skriva till 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: Verifiera utdata
Efter sparandet, verifiera att filen finns och har en icke‑noll storlek:
import * as fs from 'fs';
const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);Formatstödmatrix
| Filändelse | Format | Anteckningar |
|---|---|---|
.glb | glTF 2.0 Binär | Rekommenderas för glTF; alla tillgångar inbäddade i en enda fil |
.gltf | glTF 2.0 JSON | Separat .bin och texturfiler bredvid JSON |
.obj | Wavefront OBJ | Skriver .mtl materialfil bredvid .obj när material finns |
.stl | STL | Standard: binär STL; använd StlSaveOptions.ascii = true för text |
.fbx | Autodesk FBX | Binärt FBX-format |
.3mf | 3D Manufacturing | Lämplig för 3D-utskriftsarbetsflöden |
.dae | COLLADA | XML-baserat utbytesformat |
Vanliga problem och lösningar
Error: Unsupported format vid sparande
Kontrollera att filändelsen matchar ett stödd format. Biblioteket använder ändelsen för att upptäcka format; en fil som heter output.xyz kommer att misslyckas.
.obj filen sparas men material saknas
När du sparar OBJ skrivs materialbiblioteket (.mtl) automatiskt bredvid .obj. Båda filerna måste ligga i samma katalog vid återöppning. Om du bara behöver geometri, ställ in ObjSaveOptions.enableMaterials = false.
Stor .gltf med separata texturer
Använd .glb istället för .gltf; den paketerar binär data i en enda självständig fil. Ställ in GltfSaveOptions.binaryMode = true när du passerar en GltfSaveOptions instans.
Vanliga frågor
Kan jag spara till flera format i en och samma körning?
Ja; anropa scene.save() flera gånger med olika sökvägar:
scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');Ändrar sparandet scenen?
Nej. scene.save() är en skrivskyddad operation på scengrafen. Du kan spara samma scen till flera format utan några bieffekter.
Kan jag skriva över källfilen?
Ja. Skicka samma sökväg till scene.save() som du använde i scene.open(). Biblioteket skriver till en buffer och sedan till disken.