Sådan gemmer du 3D-modeller i TypeScript

Sådan gemmer du 3D-modeller i TypeScript

Aspose.3D FOSS for TypeScript gemmer scener i alle understøttede formater med et enkelt scene.save()‑kald. Outputformatet opdages automatisk ud fra filendelsen. Denne guide 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 opret 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 genkendt format

scene.save(path) registrerer 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å outputtet 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('glb');
console.log(`Buffer size: ${buffer.length} bytes`);

// Send via HTTP, upload to S3, etc.

Trin 6: Bekræft output

Efter at have gemt, skal du kontrollere, at filen findes, og at den har en størrelse, der er større end nul:

import * as fs from 'fs';

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

Formatunderstøttelsesmatrix

UdvidelseFormatBemærkninger
.glbglTF 2.0 BinaryAnbefalet til glTF; alle aktiver indlejret i en enkelt fil
.gltfglTF 2.0 JSONSeparate .bin og teksturfiler ved siden af JSON
.objWavefront OBJSkriver .mtl materialefil 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 ved navn output.xyz vil fejle.

.obj filen gemmes, men materialerne mangler

Når du gemmer OBJ, skrives materialebiblioteket (.mtl) automatisk ved siden af .obj. Begge filer skal være i samme mappe, når du åbner igen. Hvis du kun har brug for geometri, skal du indstille 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. Angiv GltfSaveOptions.binaryMode = true, når du videregiver en GltfSaveOptions-instans.


Ofte stillede spørgsmål

Kan jeg gemme i 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 kun‑læse‑operation på scenegrafen. 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