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 um único formato. scene.save() O formato de saída é detectado automaticamente da extensão do arquivo. Este guia cobre a poupança para cada formato e usando opções específicas de formato.

Guia passo a passo

Passo 1: Instalar @aspose/3d

asposefoss/3d is not yet published — build from source until it ships. See the project README for build instructions.


Passo 2: Carregar ou construir uma cena

Ou carregar um arquivo existente ou criar uma cena programadamente 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();

Passo 3: Salve com o formato Auto-detectado

scene.save(path) Detecta o formato de saída 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 3MF
scene.save('output.3mf');

// Save as COLLADA
scene.save('output.dae');

Passo 4: Use opções de Save-Specific

Para o controle finamente grilhado, entre um objeto de opções específicas para 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: Salve para um buffer (em memória)

Usando scene.saveToBuffer() Para obter a produção como um Buffer Sem escrever para o 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.

Passo 6: Verifique a saída

Depois de salvar, verificar o arquivo existe e tem um tamanho não zero:

import * as fs from 'fs';

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

Formato de suporte Matrix

ExtensãoFormatoNotas
.glbGST 2.0 BinárioRecomendado para o GST; todos os ativos incorporados em um único arquivo
.gltfFim da GlTF 2.0 JSONSeparado .bin e arquivos de textura junto com JSON
.objAvaliação OBJEscritos .mtl arquivos ao lado .obj Quando os materiais estão presentes
.stlSTLDefault: STL binário; uso StlSaveOptions.binaryMode = false Para o texto ASCII
.fbxAutodesk FbxNão entra em scene.save() Auto-detecção; uso de StlExporter Caminho de Fallback
.3mf3D ManufacturingAdequado para fluxos de trabalho 3D
.daeCOLLADAFormato de intercâmbio baseado em XML

Problemas comuns e fixos

Error: Unsupported format Quando a poupança

Verifique se a extensão de arquivo corresponde a um formato suportado.A biblioteca usa a extenção para detectar o formato; um arquivos chamado output.xyz vai falhar.

.obj arquivos salvos, mas materiais estão faltando

Quando a biblioteca de materiais (.mtl( ) é escrito automaticamente ao lado do .obj.Os dois arquivos devem estar no mesmo directorio quando reabastecidos. se você precisar apenas de geometria, configure ObjSaveOptions.enableMaterials = false.

Grande .gltf com texturas separadas

Usando .glb Em vez de .gltf;• Eles combinam dados binários em um único arquivo de conteúdo. GltfSaveOptions.binaryMode = true Quando passamos a GltfSaveOptions A instância.


Perguntas frequentes

Posso salvar para vários formatos em um único rato?

Sim e chamando scene.save() Vários caminhos com diferentes passos:

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

A economia muda a cena?

Não . scene.save() É uma operação apenas lida no gráfico de cena. você pode salvar a mesma cena em vários formatos sem quaisquer efeitos colaterais.

Posso escrever o arquivo de origem?

Sim, passe o mesmo caminho para scene.save() O que você usou em scene.open().A biblioteca escreve para um buffer e depois escreva para o disco.


Veja também

 Português