Kako sačuvati 3D modele u TypeScript-u

Kako sačuvati 3D modele u TypeScript-u

Aspose.3D FOSS za TypeScript čuva scene u svim podržanim formatima jednim scene.save() pozivom. Izlazni format se automatski otkriva na osnovu ekstenzije fajla. Ovaj vodič pokriva čuvanje u svaki format i korišćenje opcija specifičnih za format.

Vodič korak po korak

Korak 1: Instalirajte @aspose/3d

npm install @aspose/3d

Korak 2: Učitajte ili konstrušite scenu

Učitajte postojeći fajl ili programatski izgradite scenu pre čuvanja.

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();

Korak 3: Sačuvajte sa automatski otkrivenim formatom

scene.save(path) otkriva izlazni format na osnovu ekstenzije fajla:

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');

Korak 4: Koristite opcije za čuvanje specifične za format

Za finu kontrolu, prosledite objekat opcija specifičan za format:

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);

Korak 5: Sačuvajte u bafer (u memoriji)

Koristite scene.saveToBuffer() da dobijete izlaz kao Buffer bez upisivanja na 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.

Korak 6: Verifikujte izlaz

Nakon čuvanja, proverite da li fajl postoji i da li ima nenultu veličinu:

import * as fs from 'fs';

const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);

Matrica podrške formata

EkstenzijaFormatNapomene
.glbglTF 2.0 binarniPreporučeno za glTF; svi resursi su ugrađeni u jednoj datoteci
.gltfglTF 2.0 JSONOdvojeno .bin i datoteke tekstura uz JSON
.objWavefront OBJZapisuje .mtl datoteka materijala pored .obj kada su materijali prisutni
.stlSTLPodrazumevano: binarni STL; koristi StlSaveOptions.ascii = true za tekst
.fbxAutodesk FBXBinarni FBX format
.3mf3D ManufacturingPogodno za radne tokove 3D štampe
.daeCOLLADAXML‑bazirani format za razmenu

Uobičajeni problemi i rešenja

Error: Unsupported format prilikom čuvanja

Proverite da ekstenzija fajla odgovara podržanom formatu. Biblioteka koristi ekstenziju za otkrivanje formata; fajl pod nazivom output.xyz će propasti.

.obj fajl se sačuva, ali materijali nedostaju

Pri čuvanju OBJ, biblioteka materijala (.mtl) se automatski zapisuje pored .obj. Obe datoteke moraju biti u istom direktorijumu prilikom ponovnog otvaranja. Ako vam je potrebna samo geometrija, postavite ObjSaveOptions.enableMaterials = false.

Veliko .gltf sa odvojenim teksturama

Koristite .glb umesto .gltf; on spaja binarne podatke u jedan samostalni fajl. Postavite GltfSaveOptions.binaryMode = true prilikom prosleđivanja GltfSaveOptions instance.


Često postavljana pitanja

Mogu li da sačuvam u više formata u jednom pokretanju?

Da; pozovite scene.save() više puta sa različitim putanjama:

scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');

Da li čuvanje menja scenu?

Ne. scene.save() je operacija samo za čitanje na grafu scene. Možete sačuvati istu scenu u više formata bez ikakvih neželjenih efekata.

Mogu li da prepišem izvorni fajl?

Da. Prosledite istu putanju u scene.save() koju ste koristili u scene.open(). Biblioteka piše u bafer, a zatim zapisuje na disk.


Vidi takođe

 Српски