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.fbxextensão não é reconhecido pelo remetente de salvar e a chamada vai cair para trás na saída OBJ. Use oFbxExporterclasse diretamente se você precisar de FBX I/O. A tabela de suporte ao formato marca o FBx comoNo*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 imagem | Extensão | Materiais | Animação | Arquivo único | Melhor para |
|---|---|---|---|---|---|
| GTF | .glb / .gltf | PBR (glTF 2.0) | - Sim , sim . | GLB: sim; glTF: não | Web, jogos, distribuição geral |
| STL | .stl | Não, não. | Não, não. | - Sim , sim . | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | Nã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 | .3mf | Cor/material | Nã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 morte | Correção |
|---|---|---|
| A saída GLB abre como JSON no visualizador | binaryMode esquerda como: false | Set (s) opts.binaryMode = true |
| Texto não incluído na saída GLB | binaryMode não definido | Set (s) opts.binaryMode = true para o GLB autónomo |
| O ficheiro STL não tem cor no slicer . | O formato STL não suporta cores | Use 3MF para dados de cores |
saveToBuffer Retorna buffer vazio | Falta ou é errado o argumento da cadeia de formato | Passe a cadeia de formatos, por exemplo:. 'glb', 'stl', ou 'obj' |
| FBX abre sem animação no Blender | Arquivo de origem (OBJ/STL) não tem animação | Animaçã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:
- Carregamento do modelo: carregamento de ficheiros 3D a partir do disco e dos buffers
- Gráfico de cena: construção e modificação do cenário antes da exportação.
- Suporte de formato: matriz completa de leitura/escrita
- Análise da API: todas as classes e enumerações
- Aspose.3D para TypeScript Documentação Empresarial