Hur man sparar 3D-modeller i TypeScript
Aspose.3D FOSS för TypeScript sparar scener till alla stödda format med en enda scene.save() Call. Utgångsformat upptäcks automatiskt från filändelsen. Denna guide täcker spara för varje format och använder formatspecifika alternativ.
Steg för steg guide
Steg 1: Installera @aspose/3d
asposefoss/3d is not yet published — build from source until it ships. See the project README for build instructions.
Steg 2: Ladda upp eller bygga en scen
Antingen ladda upp en befintlig fil eller bygga en scen programmatiskt innan du sparar.
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();Steg 3: Spara med Auto-detekterad format
scene.save(path) Detekterar utgångsformat från filändelsen:
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 3MF
scene.save('output.3mf');
// Save as COLLADA
scene.save('output.dae');Steg 4: Använd Format-specifika SaveOptions
För fingrined kontroll, passera en format-specifik alternativ 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);Steg 5: Spara till en buffer (i minnet)
Användning scene.saveToBuffer() för att få utgången som en Buffer utan att skriva på 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.
Steg 6: Kontrollera utgången
Efter spara, verifiera filen finns och har en icke-zero storlek:
import * as fs from 'fs';
const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);Format stöd Matrix
| Utvidgningen | Formatera | Noter |
|---|---|---|
.glb | GTTF 2.0 binär | Rekommenderas för glTF; alla tillgångar som är inbäddade i en enda fil |
.gltf | GTTF 2.0 JSON | Separerat .bin och textfil tillsammans med JSON |
.obj | Väderfront OBJ | Skrevare .mtl Materialfiler bredvid .obj När materialet finns |
.stl | STL | Standard: binär STL; användning StlSaveOptions.binaryMode = false för ASCII text |
.fbx | Autodesk FBX | inte in i scene.save() Auto-detektion; användning av StlExporter Fallback Vägen |
.3mf | 3D Manufacturing | Lämplig för 3D-skrivning arbetsflöden |
.dae | COLLADA | XML-baserad utbyte format |
Vanliga problem och fixar
Error: Unsupported format När spara
Kontrollera att filändelsen matchar ett stöddatum. biblioteket använder utvidgningen för att upptäcka formatet; en fil som heter output.xyz kommer att misslyckas.
.obj filer sparas men material saknas
När du sparar OBJ, materialbiblioteket (.mtl1) automatiskt skrivs tillsammans med .obj.Båda filerna måste vara i samma katalog när du öppnar om. Om du bara behöver geometri, ställa in ObjSaveOptions.enableMaterials = false.
Stora .gltf med separata texturer
Användning .glb I stället för .gltf;• Det buntar binära data i en enda självinnehållad fil. GltfSaveOptions.binaryMode = true När man passerar A GltfSaveOptions och instans.
Ofta ställda frågor
Kan jag spara till flera format i en runda?
Ja, ringa till scene.save() Flera gånger med olika vägar:
scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');Kan spara förändra scenen?
Nej inte. scene.save() Det är en läs-enbart operation på scenen graf. Du kan spara samma scen i flera format utan några biverkningar.
Kan jag överskrida källfilen?
Ja, gå samma väg till scene.save() som du använde i scene.open().Biblioteket skriver till en buffer och sedan skriver på disk.