Cómo guardar modelos 3D en TypeScript
Aspose.3D FOSS para TypeScript salva escenas a todos los formatos apoyados con un solo formato. scene.save() La exhibición de la salida se detecta automáticamente desde la extensión del archivo.Este guía cubre el ahorro a cada formato y utilizando opciones específicas para el formato.
Guía paso a paso
Paso 1: Instalar @aspose/3d
asposefoss/3d is not yet published — build from source until it ships. See the project README for build instructions.
Paso 2: Cargar o construir una escena
O cargue un archivo existente o construya una escena programticamente antes de salvar.
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: Salva con el formato Auto-detectado
scene.save(path) Detecta el formato de salida desde 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 3MF
scene.save('output.3mf');
// Save as COLLADA
scene.save('output.dae');Paso 4: Use Opciones de salvamento específicas para el formato
Para el control de grano fino, pasa un objeto de opciones específicas de 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: Salva a un buffer (en memoria)
Uso scene.saveToBuffer() Para obtener la producción como una 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('glb');
console.log(`Buffer size: ${buffer.length} bytes`);
// Send via HTTP, upload to S3, etc.
Paso 6: Verifique la salida
Después de salvar, verifique el archivo existe y tiene un tamaño no cero:
import * as fs from 'fs';
const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);Formato de soporte Matrix
| Extensiones | Formato | Notas |
|---|---|---|
.glb | GTTF 2.0 Binario | Recomendado para glTF; todos los activos incorporados en un solo archivo |
.gltf | El GST 2.0 JSON | Separado .bin y archivos de textura junto con JSON |
.obj | El Wavefront OBJ | Escritos .mtl El archivo junto a .obj Cuando los materiales presentan |
.stl | STL | Default: STL binario; uso StlSaveOptions.binaryMode = false Para el texto ASCII |
.fbx | Autodesk Fbx | No se entra en scene.save() Autodetección; uso StlExporter El camino de Fallback |
.3mf | 3D Manufacturing | Adecuado para flujos de trabajo de impresión 3D |
.dae | COLLADA | Formato de intercambio basado en XML |
Problemas y soluciones comunes
Error: Unsupported format Cuando ahorrar
Verifique si la extensión de archivo se ajusta a un formato apoyado.La biblioteca utiliza la extension para detectar el formato; un archivos llamado output.xyz que fallará.
.obj Los archivos se salvan pero los materiales están faltando.
En el caso de la biblioteca, los materiales (.mtlSe escribe automáticamente junto a la .obj.Los dos archivos deben estar en el mismo directorio cuando se reabre. si solo necesita geometría, fija ObjSaveOptions.enableMaterials = false.
Gran .gltf Con texturas separadas
Uso .glb En lugar de .gltf;• Se unen datos binarios en un solo archivo de contenido. GltfSaveOptions.binaryMode = true Cuando pasa a GltfSaveOptions de instancia.
Preguntas frecuentes
¿Puedo guardar en varios formatos en un solo rango?
Sí; llamado scene.save() múltiples veces con diferentes caminos:
scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');¿El ahorro cambia la escena?
No no. scene.save() Es una operación de lectura en el gráfico de escena.Puede salvar la misma escena a varios formatos sin ningún efecto secundario.
¿Puedo escribir el archivo de fuente?
Pasar el mismo camino a scene.save() que usaste en scene.open().La biblioteca escribe a un buffer y luego escriba al disco.