Cum să salvezi modele 3D în TypeScript

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/3d

Pasul 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

ExtensieFormatObservații
.glbglTF 2.0 BinaryRecomandat pentru glTF; toate activele sunt încorporate într-un singur fișier
.gltfglTF 2.0 JSONSeparat .bin și fișiere de textură alături de JSON
.objWavefront OBJScrie .mtl fișier de material alături .obj când există materiale
.stlSTLImplicit: STL binar; folosește StlSaveOptions.ascii = true pentru text
.fbxAutodesk FBXFormat FBX binar
.3mf3D ManufacturingPotrivit pentru fluxuri de lucru de imprimare 3D
.daeCOLLADAFormat 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.


Vezi și

 Română