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ão | Formato | Notas |
|---|---|---|
.glb | GST 2.0 Binário | Recomendado para o GST; todos os ativos incorporados em um único arquivo |
.gltf | Fim da GlTF 2.0 JSON | Separado .bin e arquivos de textura junto com JSON |
.obj | Avaliação OBJ | Escritos .mtl arquivos ao lado .obj Quando os materiais estão presentes |
.stl | STL | Default: STL binário; uso StlSaveOptions.binaryMode = false Para o texto ASCII |
.fbx | Autodesk Fbx | Não entra em scene.save() Auto-detecção; uso de StlExporter Caminho de Fallback |
.3mf | 3D Manufacturing | Adequado para fluxos de trabalho 3D |
.dae | COLLADA | Formato 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.