Renderização de Cena e Exportação
@aspose/3d é uma biblioteca de processamento e conversão, e não realiza renderização por GPU nem produz arquivos de imagem. “Renderização” no contexto desta biblioteca significa exportar uma cena para um formato que um renderizador downstream, motor de jogo ou visualizador possa consumir.
Esta página cobre todos os caminhos de exportação: salvamento baseado em arquivo, saída para buffer em memória, opções específicas de formato e como preparar cenas para destinos downstream comuns (Three.js, Babylon.js, visualizadores de modelos e motores de jogo).
Exportação Básica
Chame scene.save() com um caminho de arquivo. A biblioteca infere o formato de saída a partir da extensão do arquivo:
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('input.obj'); // use a supported format (OBJ, glTF, GLB, STL, 3MF, COLLADA)
scene.save('output.glb'); // GLB (binary glTF)
scene.save('output.stl'); // STL
scene.save('output.dae'); // COLLADA
scene.save('output.3mf'); // 3MF
Exportando para GLB (Recomendado para Web e Jogos)
GLB (binary glTF 2.0) é um único arquivo autônomo que incorpora todos os dados de malha, materiais e texturas. É o formato de saída recomendado para visualizadores web (Three.js, Babylon.js, model-viewer) e motores de jogo (Godot, Unity via importador):
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('source.obj');
const opts = new GltfSaveOptions();
opts.binaryMode = true; // produce .glb instead of .gltf + .bin
scene.save('output.glb', opts);
console.log('GLB export complete');Defina binaryMode = true para produzir um arquivo GLB autocontido. Quando false, a saída é um .gltf arquivo JSON com um .bin arquivo auxiliar de buffer.
Exportando para glTF (Formato JSON para Inspeção)
A variante JSON (.gltf + .bin) é útil durante o desenvolvimento porque o JSON é legível por humanos:
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('input.dae'); // COLLADA is fully supported; FBX is not wired into scene.open()
const opts = new GltfSaveOptions();
opts.binaryMode = false; // JSON + .bin sidecar
scene.save('output.gltf', opts);Exportando para STL (Fluxos de Trabalho de Impressão 3D)
STL contém apenas geometria (sem materiais, sem animação). É o formato de troca padrão para fatiadores de impressão 3D:
import { Scene } from '@aspose/3d';
import { StlSaveOptions } from '@aspose/3d/formats/stl';
const scene = new Scene();
scene.open('model.obj');
const opts = new StlSaveOptions();
opts.binaryMode = true; // binary STL is more compact than ASCII
scene.save('output.stl', opts);Definir binaryMode = false para produzir ASCII STL, que é legível como texto, mas maior.
Exportando para FBX (Fluxos de Trabalho de Ferramentas DCC)
Nota: Classes de importação e exportação FBX existem na biblioteca, mas a detecção automática do formato FBX não está integrada scene.open() ou scene.save(). Chamando scene.save('output.fbx', opts) não invocará o exportador FBX — o .fbx a extensão não é reconhecida pelo despachante de salvamento e a chamada retornará à saída OBJ. Use o FbxExporter classe diretamente se você precisar de I/O FBX. A tabela de suporte de formatos marca FBX como No* por esse motivo.
Se precisar exportar para um formato aceito pelo Blender, Maya ou Unreal Engine, use GLB ou COLLADA em vez disso — ambos estão totalmente integrados ao scene.save():
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('input.dae');
// GLB is fully supported and widely accepted by DCC tools
const opts = new GltfSaveOptions();
opts.binaryMode = true;
scene.save('output.glb', opts);Exportação em Memória com saveToBuffer()
Para funções serverless, respostas HTTP e pipelines de streaming, exporte diretamente para um Buffer sem gravar no disco:
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
function convertToGlbBuffer(inputPath: string): Buffer {
const scene = new Scene();
scene.open(inputPath);
const opts = new GltfSaveOptions();
opts.binaryMode = true;
return scene.saveToBuffer('glb', opts);
}
// Express.js / HTTP response example
// const glbBuffer = convertToGlbBuffer('model.obj');
// res.setHeader('Content-Type', 'model/gltf-binary');
// res.send(glbBuffer);
saveToBuffer() recebe uma string de formato como primeiro argumento (por exemplo. 'glb', 'stl', 'obj') e os mesmos objetos de opções que save().
Combinando openFromBuffer() e saveToBuffer()
Um pipeline de conversão totalmente em memória, sem I/O de disco em nenhuma etapa:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
function objBufferToGlbBuffer(objData: Buffer): Buffer {
const scene = new Scene();
const loadOpts = new ObjLoadOptions();
loadOpts.enableMaterials = true;
scene.openFromBuffer(objData, loadOpts);
const saveOpts = new GltfSaveOptions();
saveOpts.binaryMode = true;
return scene.saveToBuffer('glb', saveOpts);
}Preparando cenas para renderizadores específicos
Three.js / Babylon.js (Web)
Esses renderizadores carregam arquivos GLB nativamente. Exporte com binaryMode = true. Se texturas são referenciadas a partir do OBJ de origem, certifique‑se de que o .mtl e os arquivos de imagem estejam co‑localizados ao carregar.
model-viewer (Web Component)
Aceita .glb diretamente. Mesmas configurações de exportação que o Three.js.
Godot Engine
Importe GLB via o importador do Godot (Projeto → Importar). Use binaryMode = true. O Godot suporta materiais PBR do glTF 2.0 nativamente.
Blender
Para a melhor fidelidade de importação, use glTF (output.gltf + output.bin) ou GLB (output.glb). O importador glTF 2.0 do Blender lida com materiais PBR e animação. Nota: a saída FBX via scene.save() não é suportada — a detecção automática do formato FBX não está conectada ao despachante de salvamento.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
Exporte para STL ou 3MF. Use 3MF quando precisar preservar cor ou metadados de material. Use STL para máxima compatibilidade.
Comparação de formatos de exportação
| Formato | Extensão | Materiais | Animação | Arquivo Único | Melhor para |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | Sim | Sim | Web, jogos, entrega geral |
| glTF | .gltf | PBR (glTF 2.0) | Sim | Não (+ .bin) | Desenvolvimento, inspeção |
| STL | .stl | Não | Não | Sim | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | Não* | Não* | Importador/exportador existe, mas não está conectado à detecção automática |
| COLLADA | .dae | Sim | Sim | Sim | Troca Cross-DCC |
| 3MF | .3mf | Cor/material | Não | Sim | Impressão 3D moderna |
Problemas Comuns de Exportação
| Sintoma | Causa | Correção |
|---|---|---|
| Saída GLB abre como JSON no visualizador | binaryMode deixado como false | Definir opts.binaryMode = true |
| Texturas ausentes na saída GLB | binaryMode não definido | Definir opts.binaryMode = true para GLB autônomo |
| Arquivo STL não tem cor no slicer | Formato STL não suporta cor | Use 3MF para dados de cor |
saveToBuffer retorna buffer vazio | Argumento de string de formato ausente ou incorreto | Passe a string de formato, por exemplo. 'glb', 'stl', ou 'obj' |
| FBX abre sem animação no Blender | O arquivo de origem (OBJ/STL) não tem animação | A animação só é mantida se estiver presente na origem |
| O arquivo de saída é muito grande | O OBJ de origem tem muitos vértices duplicados | A saída binária GLB já remove duplicatas; verifique a qualidade do ativo de origem |
Veja Também
- Carregamento de Modelo: carregando arquivos 3D do disco e de buffers
- Grafo de Cena: construindo e modificando a cena antes da exportação
- Suporte a Formatos: matriz completa de leitura/gravação
- Visão geral da API: todas as classes e enumerações