Rendering e exportação de cenas

Rendering e exportação de cenas

@aspose/3d é uma biblioteca de processamento e conversão, não executando renderização GPU ou produzindo arquivos de imagem. “Renderizado” no contexto desta biblioteca significa: exportar uma cena para um formato que possa ser consumido por um renderizador, motor de jogo ou espectador a jusante;.

Esta página abrange todos os caminhos de exportação: armazenamento baseado em arquivo, saída do buffer na memória, opções específicas para formato e como preparar cenas para alvos comuns a jusante (Three.js, Babylon. js, visualizadores de modelos e motores de jogo).

Exportação básica

Chama-me . scene.save() A biblioteca deduz o formato de saída 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

Exportação para o GLB (recomendado para web e jogos)

GLB (binário glTF 2.0) é um único arquivo autocontido que inclui todos os dados, materiais e texturas de malha. É o formato de saída recomendado para visualizações da web (Three.js, Babylon. js, modelo-visualizador) 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');

Set (s) binaryMode = true A Comissão Europeia tem de apresentar um relatório sobre o projecto. false, a saída é de um .gltf Arquivo JSON com um arquiva separado .bin - Carro lateral tampão.

Exportação para glTF (Formato JSON para Inspecção)

A variante JSON (.gltf + .bin) é útil durante o desenvolvimento porque o JSON é legível para 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);

Exportação para STL (3D Printing Workflows)

O STL é apenas geometria (sem materiais, sem animação). É o formato padrão de troca para cortadoras 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);

Set (s) binaryMode = false para produzir ASCII STL, que é legível por texto mas maior.

Exportação para FBX (DCC Tool Workflows)

Nota:: Existem classes de importador e exportador FBX na biblioteca, mas a detecção automática do formato FBx não está conectada ao sistema. scene.open() ou a) scene.save().- A chamar-te . scene.save('output.fbx', opts) não invocará o exportador FBX a .fbx extensão não é reconhecido pelo remetente de salvar e a chamada vai cair para trás na saída OBJ. Use o FbxExporter classe diretamente se você precisar de FBX I/O. A tabela de suporte ao formato marca o FBx como No* Por esta razão.

Se você precisa exportar para um formato aceito pelo Blender, Maya ou Unreal Engine, use GLB ou COLLADA em vez disso ambos estão totalmente conectados ao sistema. 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 sem servidor, respostas HTTP e pipelines de streaming, exportação direta para um Buffer sem escrever 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() toma uma cadeia de formato como primeiro argumento (por exemplo,. 'glb', 'stl', 'obj') e os mesmos objetos de opções que save().

Combinação de: openFromBuffer() e a) saveToBuffer()

Um pipeline de conversão totalmente em memória sem E/S no disco, em qualquer fase:

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

Preparar cenas para retratadores específicos

Three.js / Babylon.js (Web)

Estes renders carregam nativamente arquivos GLB. Exportação com binaryMode = true.Se as texturas forem referenciadas a partir da fonte OBJ, certifique-se de que o texto é correto. .mtl e os ficheiros de imagem são co-localizados ao carregar.

Modelo-visualizar (Componente Web)

Aceitação .glb As mesmas configurações de exportação do Three.js.

Motor Godot

Importação de GLB através do importador Godot (Projeto → Importe). Utilização. binaryMode = true.Godot suporta materiais PBR de glTF 2.0 nativamente.

Máquinas de mistura

Para obter a melhor fidelidade de importação, utilizar o método glTF (output.gltf + output.bin) ou GLB (output.glbNota: saída FBX via scene.save() Não é suportado O formato FBX não permite a detecção automática no dispositivo de salvamento.

3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)

Exportar para STL ou 3MF. Use 3 MF quando você precisa de cor ou material metadados preservados. Utilize ST L para máxima compatibilidade.

Comparação do formato de exportação

Formatos de imagemExtensãoMateriaisAnimaçãoArquivo únicoMelhor para
GTF.glb / .gltfPBR (glTF 2.0)- Sim , sim .GLB: sim; glTF: nãoWeb, jogos, distribuição geral
STL.stlNão, não.Não, não.- Sim , sim .3D printing, geometry-only
FBX.fbxPhong/PBRNão*Não*Existem importadores/exportadores, mas não estão ligados à detecção automática.
COLLADA.dae- Sim , sim .- Sim , sim .- Sim , sim .Intercâmbio entre DCCs
3MF.3mfCor/materialNão, não.- Sim , sim .Impressão 3D moderna

Escolha glTF (GLB) para entrega na web, 3MF para fluxos de trabalho de impressão que exigem metadados de cores e STL para máxima compatibilidade com ferramentas antigas.

Questões comuns em matéria de exportação

Sintoma:Causa da morteCorreção
A saída GLB abre como JSON no visualizadorbinaryMode esquerda como: falseSet (s) opts.binaryMode = true
Texto não incluído na saída GLBbinaryMode não definidoSet (s) opts.binaryMode = true para o GLB autónomo
O ficheiro STL não tem cor no slicer .O formato STL não suporta coresUse 3MF para dados de cores
saveToBuffer Retorna buffer vazioFalta ou é errado o argumento da cadeia de formatoPasse a cadeia de formatos, por exemplo:. 'glb', 'stl', ou 'obj'
FBX abre sem animação no BlenderArquivo de origem (OBJ/STL) não tem animaçãoAnimação só se aplica quando presente na fonte.
Arquivo de saída é muito grande .O OBJ da fonte tem muitos vértices duplicados.A produção binária do GLB já se duplica; verifique a qualidade dos activos de origem

Ver também:

 Português