Hoe 3D-modellen op te slaan in TypeScript

Hoe 3D-modellen op te slaan in TypeScript

Aspose.3D FOSS voor TypeScript slaat scènes op in alle ondersteunde formaten met één scene.save() aanroep. Het uitvoerformaat wordt automatisch gedetecteerd aan de hand van de bestandsextensie. Deze gids behandelt het opslaan naar elk formaat en het gebruik van formaat‑specifieke opties.

Stapsgewijze gids

Stap 1: Installeer @aspose/3d

npm install @aspose/3d

Stap 2: Laad of bouw een scène

Laad een bestaand bestand of bouw een scène programmatisch voordat je opslaat.

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

Stap 3: Opslaan met automatisch gedetecteerd formaat

scene.save(path) detecteert het uitvoerformaat aan de hand van de bestandsextensie:

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

Stap 4: Gebruik formaat‑specifieke SaveOptions

Voor fijnmazige controle, geef een formaat‑specifiek opties‑object door:

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

Stap 5: Opslaan naar een buffer (in‑memory)

Gebruik scene.saveToBuffer() om de uitvoer te krijgen als een Buffer zonder naar schijf te schrijven:

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.

Stap 6: Verifieer de uitvoer

Controleer na het opslaan of het bestand bestaat en een grootte groter dan nul heeft:

import * as fs from 'fs';

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

Matrix van ondersteunde formaten

ExtensieFormaatOpmerkingen
.glbglTF 2.0 BinaryAanbevolen voor glTF; alle assets ingebed in één enkel bestand
.gltfglTF 2.0 JSONGescheiden .bin en textuurbestanden naast JSON
.objWavefront OBJSchrijft .mtl materiaalbestand naast .obj wanneer materialen aanwezig zijn
.stlSTLStandaard: binaire STL; gebruik StlSaveOptions.ascii = true voor tekst
.fbxAutodesk FBXBinair FBX-formaat
.3mf3D ManufacturingGeschikt voor 3D-printworkflows
.daeCOLLADAXML-gebaseerd uitwisselingsformaat

Veelvoorkomende problemen en oplossingen

Error: Unsupported format bij het opslaan

Controleer of de bestandsextensie overeenkomt met een ondersteund formaat. De bibliotheek gebruikt de extensie om het formaat te detecteren; een bestand met de naam output.xyz zal mislukken.

.obj bestand wordt opgeslagen maar materialen ontbreken

Bij het opslaan van OBJ wordt de materiaallibrary (.mtl) wordt automatisch naast de .obj. Beide bestanden moeten zich in dezelfde map bevinden bij het opnieuw openen. Als je alleen geometrie nodig hebt, stel ObjSaveOptions.enableMaterials = false.

Groot .gltf met afzonderlijke texturen

Gebruik .glb in plaats van .gltf; het bundelt binaire data in één zelfstandig bestand. Stel GltfSaveOptions.binaryMode = true bij het doorgeven van een GltfSaveOptions instantie.


Veelgestelde vragen

Kan ik in één uitvoering naar meerdere formaten opslaan?

Ja; roep scene.save() meerdere keren met verschillende paden:

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

Wijzigt opslaan de scène?

Nee. scene.save() is een alleen-lezen bewerking op de scene graph. Je kunt dezelfde scene opslaan in meerdere formaten zonder enige neveneffecten.

Kan ik het bronbestand overschrijven?

Ja. Geef hetzelfde pad door aan scene.save() dat je gebruikte in scene.open(). De bibliotheek schrijft naar een buffer en schrijft vervolgens naar de schijf.


Zie ook

 Nederlands