Hur man sparar 3D-modeller i TypeScript

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

UtvidgningenFormateraNoter
.glbGTTF 2.0 binärRekommenderas för glTF; alla tillgångar som är inbäddade i en enda fil
.gltfGTTF 2.0 JSONSeparerat .bin och textfil tillsammans med JSON
.objVäderfront OBJSkrevare .mtl Materialfiler bredvid .obj När materialet finns
.stlSTLStandard: binär STL; användning StlSaveOptions.binaryMode = false för ASCII text
.fbxAutodesk FBXinte in i scene.save() Auto-detektion; användning av StlExporter Fallback Vägen
.3mf3D ManufacturingLämplig för 3D-skrivning arbetsflöden
.daeCOLLADAXML-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.


Se även

 Svenska