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/3dStap 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
| Extensie | Formaat | Opmerkingen |
|---|---|---|
.glb | glTF 2.0 Binary | Aanbevolen voor glTF; alle assets ingebed in één enkel bestand |
.gltf | glTF 2.0 JSON | Gescheiden .bin en textuurbestanden naast JSON |
.obj | Wavefront OBJ | Schrijft .mtl materiaalbestand naast .obj wanneer materialen aanwezig zijn |
.stl | STL | Standaard: binaire STL; gebruik StlSaveOptions.ascii = true voor tekst |
.fbx | Autodesk FBX | Binair FBX-formaat |
.3mf | 3D Manufacturing | Geschikt voor 3D-printworkflows |
.dae | COLLADA | XML-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.