Sådan gemmes 3D-modeller i TypeScript

Sådan gemmes 3D-modeller i TypeScript

Aspose.3D FOSS for TypeScript gemmer scener til alle understøttede formater med et enkelt scene.save() kald. Outputformatet opdages automatisk ud fra filendelsen. Denne vejledning dækker gemning til hvert format og brug af format‑specifikke indstillinger.

Trin-for-trin guide

Trin 1: Installer @aspose/3d

npm install @aspose/3d

Trin 2: Indlæs eller opret en scene

Indlæs enten en eksisterende fil eller opbyg en scene programmatisk før du gemmer.

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();

Trin 3: Gem med automatisk detekteret format

scene.save(path) detekterer outputformatet ud 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');

Trin 4: Brug format‑specifikke SaveOptions

For finjusteret kontrol, send et format‑specifikt options‑objekt:

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);

Trin 5: Gem til en buffer (i hukommelsen)

Brug scene.saveToBuffer() for at få output som en Buffer uden at 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.

Trin 6: Verificer outputtet

Efter gemning, verificer at filen findes og har en størrelse større end nul:

import * as fs from 'fs';

const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);

Format‑understøttelsesmatrix

FilendelseFormatBemærkninger
.glbglTF 2.0 BinaryAnbefalet til glTF; alle assets indlejret i en enkelt fil
.gltfglTF 2.0 JSONSeparat .bin og tekstur‑filer ved siden af JSON
.objWavefront OBJSkriver .mtl materialfil ved siden af .obj når materialer er til stede
.stlSTLStandard: binær STL; brug StlSaveOptions.ascii = true til tekst
.fbxAutodesk FBXBinært FBX-format
.3mf3D ManufacturingVelegnet til 3D-printarbejdsprocesser
.daeCOLLADAXML-baseret udvekslingsformat

Almindelige problemer og løsninger

Error: Unsupported format ved lagring

Kontroller, at filendelsen svarer til et understøttet format. Biblioteket bruger endelsen til at opdage formatet; en fil navngivet output.xyz vil fejle.

.obj filen gemmes, men materialerne mangler

Når du gemmer OBJ, skrives materialebiblioteket (.mtl) skrives automatisk ved siden af .obj. Begge filer skal være i samme mappe ved genåbning. Hvis du kun har brug for geometri, indstil ObjSaveOptions.enableMaterials = false.

Stor .gltf med separate teksturer

Brug .glb i stedet for .gltf; den pakker binære data i en enkelt selvstændig fil. Indstil GltfSaveOptions.binaryMode = true når du videregiver en GltfSaveOptions instans.


Ofte stillede spørgsmål

Kan jeg gemme til flere formater i én kørsel?

Ja; kald scene.save() flere gange med forskellige stier:

scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');

Ændrer gemning scenen?

Nej. scene.save() er en skrivebeskyttet operation på scene‑grafen. Du kan gemme den samme scene i flere formater uden nogen bivirkninger.

Kan jeg overskrive kildefilen?

Ja. Videregiv den samme sti til scene.save() som du brugte i scene.open(). Biblioteket skriver til en buffer og derefter til disken.


Se også

 Dansk