Como salvar modelos 3D em TypeScript.

Como salvar modelos 3D em TypeScript.

Aspose.3D FOSS para TypeScript salva cenas em todos os formatos suportados com uma única scene.save() chamada. O formato de saída é detectado automaticamente a partir da extensão do arquivo. Este guia cobre como salvar em cada formato e usar opções específicas de formato.

Guia passo a passo

Etapa 1: Instale @aspose/3d

npm install @aspose/3d

Etapa 2: Carregar ou Construir uma Cena

Carregue um arquivo existente ou construa uma cena programaticamente 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();

Etapa 3: Salvar com Formato Detectado Automaticamente

scene.save(path) detecta o formato de saída a partir da extensão do arquivo:

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

Etapa 4: Usar SaveOptions Específicos de Formato

Para controle detalhado, passe um objeto de opções específico do 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);

Etapa 5: Salvar em um Buffer (Na Memória)

Use scene.saveToBuffer() para obter a saída como um Buffer sem gravar no 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.

Etapa 6: Verificar a Saída

Após salvar, verifique se o arquivo existe e tem tamanho diferente de zero:

import * as fs from 'fs';

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

Matriz de Suporte a Formatos

ExtensãoFormatoObservações
.glbglTF 2.0 BinárioRecomendado para glTF; todos os ativos incorporados em um único arquivo
.gltfJSON do glTF 2.0Separado .bin e arquivos de textura ao lado do JSON
.objWavefront OBJEscreve .mtl arquivo de material ao lado .obj quando há materiais
.stlSTLPadrão: STL binário; use StlSaveOptions.ascii = true para texto
.fbxAutodesk FBXFormato FBX binário
.3mf3D ManufacturingAdequado para fluxos de trabalho de impressão 3D
.daeCOLLADAFormato de intercâmbio baseado em XML

Problemas comuns e correções

Error: Unsupported format ao salvar

Verifique se a extensão do arquivo corresponde a um formato suportado. A biblioteca usa a extensão para detectar o formato; um arquivo chamado output.xyz falhará.

.obj arquivo salva mas os materiais estão ausentes

Ao salvar OBJ, a biblioteca de materiais (.mtl) é escrita automaticamente ao lado do .obj. Ambos os arquivos devem estar no mesmo diretório ao reabrir. Se você precisar apenas da geometria, defina ObjSaveOptions.enableMaterials = false.

Grande .gltf com texturas separadas

Use .glb em vez de .gltf; ele agrupa dados binários em um único arquivo autônomo. Defina GltfSaveOptions.binaryMode = true ao passar um GltfSaveOptions instância.


Perguntas Frequentes

Posso salvar em vários formatos em uma única execução?

Sim; chame scene.save() várias vezes com caminhos diferentes:

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

Salvar modifica a cena?

Não. scene.save() é uma operação somente leitura no grafo de cena. Você pode salvar a mesma cena em vários formatos sem quaisquer efeitos colaterais.

Posso sobrescrever o arquivo de origem?

Sim. Passe o mesmo caminho para scene.save() que você usou em scene.open(). A biblioteca grava em um buffer e depois grava no disco.


Veja também

 Português