Cum să salvezi modele 3D în TypeScript
Aspose.3D FOSS pentru TypeScript salvează scenele în toate formatele suportate cu un singur scene.save() apel. Formatul de ieșire este detectat automat din extensia fișierului. Acest ghid acoperă salvarea în fiecare format și utilizarea opțiunilor specifice formatului.
Ghid pas cu pas
Pasul 1: Instalați @aspose/3d
npm install @aspose/3dPasul 2: Încarcă sau construiește o scenă
Încarcă un fișier existent sau construiește o scenă programatic înainte de a salva.
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();Pasul 3: Salvează cu format detectat automat
scene.save(path) detectează formatul de ieșire din extensia fișierului:
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');Pasul 4: Folosește SaveOptions specifice formatului
Pentru un control detaliat, transmite un obiect de opțiuni specific formatului:
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);Pasul 5: Salvează într-un Buffer (în memorie)
Utilizați scene.saveToBuffer() pentru a obține ieșirea ca un Buffer fără a scrie pe disc:
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.
Pasul 6: Verifică ieșirea
După salvare, verifică că fișierul există și are o dimensiune diferită de zero:
import * as fs from 'fs';
const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);Matricea de suport pentru formate
| Extensie | Format | Observații |
|---|---|---|
.glb | glTF 2.0 Binary | Recomandat pentru glTF; toate activele sunt încorporate într-un singur fișier |
.gltf | glTF 2.0 JSON | Separat .bin și fișiere de textură alături de JSON |
.obj | Wavefront OBJ | Scrie .mtl fișier de material alături .obj când există materiale |
.stl | STL | Implicit: STL binar; folosește StlSaveOptions.ascii = true pentru text |
.fbx | Autodesk FBX | Format FBX binar |
.3mf | 3D Manufacturing | Potrivit pentru fluxuri de lucru de imprimare 3D |
.dae | COLLADA | Format de interschimb bazat pe XML |
Probleme comune și soluții
Error: Unsupported format la salvare
Verificați că extensia fișierului corespunde unui format acceptat. Biblioteca folosește extensia pentru a detecta formatul; un fișier numit output.xyz va eșua.
.obj fișierul se salvează, dar materialele lipsesc
Când salvați OBJ, biblioteca de materiale (.mtl) este scrisă automat alături de .obj. Ambele fișiere trebuie să fie în același director la redeschidere. Dacă aveți nevoie doar de geometrie, setați ObjSaveOptions.enableMaterials = false.
Mare .gltf cu texturi separate
Utilizați .glb în loc de .gltf; înglobează date binare într-un singur fișier autonom. Set GltfSaveOptions.binaryMode = true când transmiteți un GltfSaveOptions instanță.
Întrebări frecvente
Pot salva în mai multe formate într-o singură execuție?
Da; apelați scene.save() de mai multe ori cu căi diferite:
scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');Salvarea modifică scena?
Nu. scene.save() este o operație doar pentru citire pe graficul scenei. Puteți salva aceeași scenă în mai multe formate fără niciun efect secundar.
Pot suprascrie fișierul sursă?
Da. Transmiteți aceeași cale către scene.save() pe care ați folosit-o în scene.open(). Biblioteca scrie într-un buffer și apoi scrie pe disc.