Come salvare modelli 3D in TypeScript
Aspose.3D FOSS per TypeScript salva le scene in tutti i formati supportati con una singola scene.save() chiamata. Il formato di output viene rilevato automaticamente dall’estensione del file. Questa guida copre il salvataggio in ciascun formato e l’uso delle opzioni specifiche del formato.
Guida passo-passo
Passo 1: Installa @aspose/3d
npm install @aspose/3dPasso 2: Carica o Costruisci una Scena
Carica un file esistente oppure costruisci una scena programmaticamente prima di salvare.
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();Passo 3: Salva con Formato Rilevato Automaticamente
scene.save(path) rileva il formato di output dall’estensione del file:
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');Passo 4: Usa le SaveOptions Specifiche del Formato
Per un controllo più dettagliato, passa un oggetto di opzioni specifiche del formato:
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);Passo 5: Salva in un Buffer (In-Memoria)
Usa scene.saveToBuffer() per ottenere l’output come un Buffer senza scrivere su disco:
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.
Passo 6: Verifica l’Output
Dopo il salvataggio, verifica che il file esista e abbia una dimensione diversa da zero:
import * as fs from 'fs';
const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);Matrice di Supporto dei Formati
| Estensione | Formato | Note |
|---|---|---|
.glb | glTF 2.0 Binary | Consigliato per glTF; tutti gli asset incorporati in un unico file |
.gltf | glTF 2.0 JSON | Separato .bin e file di texture accanto al JSON |
.obj | Wavefront OBJ | Scrive .mtl file di materiale accanto .obj quando i materiali sono presenti |
.stl | STL | Predefinito: STL binario; usa StlSaveOptions.ascii = true per testo |
.fbx | Autodesk FBX | Formato FBX binario |
.3mf | 3D Manufacturing | Adatto ai flussi di lavoro per la stampa 3D |
.dae | COLLADA | Formato di interscambio basato su XML |
Problemi comuni e soluzioni
Error: Unsupported format durante il salvataggio
Verifica che l’estensione del file corrisponda a un formato supportato. La libreria utilizza l’estensione per rilevare il formato; un file chiamato output.xyz fallirà.
.obj il file viene salvato ma i materiali mancano
Durante il salvataggio di OBJ, la libreria dei materiali (.mtl) viene scritta automaticamente accanto al .obj. Entrambi i file devono trovarsi nella stessa directory al riapertura. Se ti serve solo la geometria, imposta ObjSaveOptions.enableMaterials = false.
Grande .gltf con texture separate
Usa .glb invece di .gltf; raggruppa i dati binari in un unico file autonomo. Imposta GltfSaveOptions.binaryMode = true quando si passa un GltfSaveOptions istanza.
Domande frequenti
Posso salvare in più formati in un’unica esecuzione?
Sì; chiama scene.save() più volte con percorsi diversi:
scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');Il salvataggio modifica la scena?
No. scene.save() è un’operazione in sola lettura sul grafo della scena. Puoi salvare la stessa scena in più formati senza alcun effetto collaterale.
Posso sovrascrivere il file di origine?
Sì. Passa lo stesso percorso a scene.save() che hai usato in scene.open(). La libreria scrive in un buffer e poi scrive su disco.