Come salvare modelli 3D in TypeScript

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

Passo 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

EstensioneFormatoNote
.glbglTF 2.0 BinaryConsigliato per glTF; tutti gli asset incorporati in un unico file
.gltfglTF 2.0 JSONSeparato .bin e file di texture accanto al JSON
.objWavefront OBJScrive .mtl file di materiale accanto .obj quando i materiali sono presenti
.stlSTLPredefinito: STL binario; usa StlSaveOptions.ascii = true per testo
.fbxAutodesk FBXFormato FBX binario
.3mf3D ManufacturingAdatto ai flussi di lavoro per la stampa 3D
.daeCOLLADAFormato 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.


Vedi anche

 Italiano