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/3dTrin 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
| Filendelse | Format | Bemærkninger |
|---|---|---|
.glb | glTF 2.0 Binary | Anbefalet til glTF; alle assets indlejret i en enkelt fil |
.gltf | glTF 2.0 JSON | Separat .bin og tekstur‑filer ved siden af JSON |
.obj | Wavefront OBJ | Skriver .mtl materialfil 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 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.