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/3dTrin 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
| Udvidelse | Format | Bemærkninger |
|---|---|---|
.glb | glTF 2.0 Binary | Anbefalet til glTF; alle aktiver indlejret i en enkelt fil |
.gltf | glTF 2.0 JSON | Separate .bin og teksturfiler ved siden af JSON |
.obj | Wavefront OBJ | Skriver .mtl materialefil ved siden af .obj når materialer er til stede |
.stl | STL | Standard: binær STL; brug StlSaveOptions.ascii = true til tekst |
.fbx | Autodesk FBX | Binært FBX-format |
.3mf | 3D Manufacturing | Velegnet til 3D-printarbejdsprocesser |
.dae | COLLADA | XML-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.