Hur man sparar 3D-modeller i TypeScript

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/3d

Steg 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ändelseFormatAnteckningar
.glbglTF 2.0 BinärRekommenderas för glTF; alla tillgångar inbäddade i en enda fil
.gltfglTF 2.0 JSONSeparat .bin och texturfiler bredvid JSON
.objWavefront OBJSkriver .mtl materialfil bredvid .obj när material finns
.stlSTLStandard: binär STL; använd StlSaveOptions.ascii = true för text
.fbxAutodesk FBXBinärt FBX-format
.3mf3D ManufacturingLämplig för 3D-utskriftsarbetsflöden
.daeCOLLADAXML-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.


Se även

 Svenska