Cómo guardar modelos 3D en TypeScript

Cómo guardar modelos 3D en TypeScript

Aspose.3D FOSS para TypeScript guarda escenas en todos los formatos compatibles con una sola scene.save() llamada. El formato de salida se detecta automáticamente a partir de la extensión del archivo. Esta guía cubre cómo guardar en cada formato y usar opciones específicas de cada formato.

Guía paso a paso

Paso 1: Instalar @aspose/3d

npm install @aspose/3d

Paso 2: Cargar o Construir una Escena

Cargue un archivo existente o construya una escena programáticamente antes de guardarla.

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();

Paso 3: Guardar con Formato Detectado Automáticamente

scene.save(path) detecta el formato de salida a partir de la extensión del archivo:

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');

Paso 4: Usar SaveOptions Específicos del Formato

Para un control más detallado, pase un objeto de opciones específico 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);

Paso 5: Guardar en un Buffer (En Memoria)

Usar scene.saveToBuffer() para obtener la salida como un Buffer sin escribir en 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.

Paso 6: Verificar la Salida

Después de guardar, verifique que el archivo exista y tenga un tamaño distinto de cero:

import * as fs from 'fs';

const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);

Matriz de Compatibilidad de Formatos

ExtensiónFormatoNotas
.glbglTF 2.0 BinaryRecomendado para glTF; todos los recursos incrustados en un solo archivo
.gltfglTF 2.0 JSONSeparado .bin y archivos de textura junto al JSON
.objWavefront OBJEscribe .mtl archivo de material junto a .obj cuando hay materiales
.stlSTLPredeterminado: STL binario; usar StlSaveOptions.ascii = true para texto
.fbxAutodesk FBXFormato FBX binario
.3mf3D ManufacturingAdecuado para flujos de trabajo de impresión 3D
.daeCOLLADAFormato de intercambio basado en XML

Problemas comunes y soluciones

Error: Unsupported format al guardar

Verifique que la extensión del archivo coincida con un formato compatible. La biblioteca usa la extensión para detectar el formato; un archivo llamado output.xyz fallará.

.obj el archivo se guarda pero faltan los materiales

Al guardar OBJ, la biblioteca de materiales (.mtl) se escribe automáticamente junto al .obj. Ambos archivos deben estar en el mismo directorio al volver a abrir. Si solo necesita geometría, establezca ObjSaveOptions.enableMaterials = false.

Grande .gltf con texturas separadas

Usa .glb en lugar de .gltf; agrupa datos binarios en un único archivo autónomo. Establece GltfSaveOptions.binaryMode = true al pasar un GltfSaveOptions instancia.


Preguntas frecuentes

¿Puedo guardar en varios formatos en una sola ejecución?

Sí; llama scene.save() varias veces con rutas diferentes:

scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');

¿Guardar modifica la escena?

No. scene.save() es una operación de solo lectura en el grafo de escena. Puedes guardar la misma escena en varios formatos sin efectos secundarios.

¿Puedo sobrescribir el archivo fuente?

Sí. Pasa la misma ruta a scene.save() que usaste en scene.open(). La biblioteca escribe en un búfer y luego escribe en el disco.


Ver también

 Español