Kako spremiti 3D modele u TypeScriptu
Aspose.3D FOSS za TypeScript sprema scene u sve podržane formate jednim scene.save() pozivom. Izlazni format se automatski otkriva iz ekstenzije datoteke. Ovaj vodič pokriva spremanje u svaki format i korištenje opcija specifičnih za format.
Vodič korak po korak
Korak 1: Instalirajte @aspose/3d
npm install @aspose/3dKorak 2: Učitajte ili izgradite scenu
Ili učitajte postojeću datoteku ili programatski izgradite scenu prije spremanja.
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: Spremite s automatski otkrivenim formatom
scene.save(path) otkriva izlazni format iz ekstenzije datoteke:
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 spremanje specifične za format
Za finu kontrolu, proslijedite objekt 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: Spremite u međuspremnik (In-Memory)
Koristite scene.saveToBuffer() za dobivanje izlaza kao Buffer bez zapisivanja 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: Provjerite izlaz
Nakon spremanja, provjerite da datoteka postoji i da ima veličinu veću od nule:
import * as fs from 'fs';
const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);Matrica podržanih formata
| Ekstenzija | Format | Napomene |
|---|---|---|
.glb | glTF 2.0 Binary | Preporučeno za glTF; svi asseti ugrađeni u jednoj datoteci |
.gltf | glTF 2.0 JSON | Odvojeno .bin i teksturne datoteke uz JSON |
.obj | Wavefront OBJ | Piše .mtl datoteka materijala uz .obj kada su materijali prisutni |
.stl | STL | Zadano: binarni STL; upotrijebite StlSaveOptions.ascii = true za tekst |
.fbx | Autodesk FBX | Binarni FBX format |
.3mf | 3D Manufacturing | Pogodno za radne tokove 3D ispisa |
.dae | COLLADA | XML‑bazirani format za razmjenu |
Uobičajeni problemi i rješenja
Error: Unsupported format prilikom spremanja
Provjerite da ekstenzija datoteke odgovara podržanom formatu. Biblioteka koristi ekstenziju za otkrivanje formata; datoteka pod nazivom output.xyz će neuspjeti.
.obj datoteka se sprema, ali materijali nedostaju
Prilikom spremanja OBJ, biblioteka materijala (.mtl) se automatski zapisuje uz .obj. Obje datoteke moraju biti u istom direktoriju prilikom ponovnog otvaranja. Ako vam je potrebna samo geometrija, postavite ObjSaveOptions.enableMaterials = false.
Veliko .gltf s odvojenim teksturama
Koristite .glb umjesto .gltf; spaja binarne podatke u jednu samostalnu datoteku. Postavite GltfSaveOptions.binaryMode = true prilikom prosljeđivanja GltfSaveOptions instancu.
Često postavljana pitanja
Mogu li spremiti u više formata u jednom pokretanju?
Da; pozovite scene.save() više puta s različitim putanjama:
scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');Mijenja li spremanje scenu?
Ne. scene.save() je operacija samo za čitanje na grafu scene. Možete spremiti istu scenu u više formata bez ikakvih nuspojava.
Mogu li prepisati izvornu datoteku?
Da. Proslijedite istu putanju u scene.save() koju ste koristili u scene.open(). Biblioteka piše u međuspremnik, a zatim zapisuje na disk.