Renderização de Cena e Exportação

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

FormatoExtensãoMateriaisAnimaçãoArquivo ÚnicoMelhor para
GLB.glbPBR (glTF 2.0)SimSimWeb, jogos, entrega geral
glTF.gltfPBR (glTF 2.0)SimNão (+ .bin)Desenvolvimento, inspeção
STL.stlNãoNãoSim3D printing, geometry-only
FBX.fbxPhong/PBRNão*Não*Importador/exportador existe, mas não está conectado à detecção automática
COLLADA.daeSimSimSimTroca Cross-DCC
3MF.3mfCor/materialNãoSimImpressão 3D moderna

Problemas Comuns de Exportação

SintomaCausaCorreção
Saída GLB abre como JSON no visualizadorbinaryMode deixado como falseDefinir opts.binaryMode = true
Texturas ausentes na saída GLBbinaryMode não definidoDefinir opts.binaryMode = true para GLB autônomo
Arquivo STL não tem cor no slicerFormato STL não suporta corUse 3MF para dados de cor
saveToBuffer retorna buffer vazioArgumento de string de formato ausente ou incorretoPasse a string de formato, por exemplo. 'glb', 'stl', ou 'obj'
FBX abre sem animação no BlenderO arquivo de origem (OBJ/STL) não tem animaçãoA animação só é mantida se estiver presente na origem
O arquivo de saída é muito grandeO OBJ de origem tem muitos vértices duplicadosA saída binária GLB já remove duplicatas; verifique a qualidade do ativo de origem

Veja Também

 Português