Suporte ao formato 3D

Aspose.3D FOSS para TypeScript lê e escreve sete formatos de arquivo 3D principais. A detecção de formato é automática ao carregar: a biblioteca inspeciona números mágicos binários, então você não precisa especificar o formato de origem. Classes de opção específicas do formato são importadas dos sub-caminhos da plataforma de configuração. @aspose/3d - O pacote.

Formatos suportados

Formatos de imagemExtensãoLeia.Escrever .Classe de formatoNotas
OBJ.obj- Sim , sim .- Sim , sim .ObjFormatObjetos de observação da frente de onda; leitura: .mtl materiais; escreve .mtl lado a lado .obj
GTF.gltf / .glb- Sim , sim .- Sim , sim .GltfFormatglTF 2.0 JSON e GLB binário
STL.stl- Sim , sim .- Sim , sim .StlFormatModo binário e ASCII
3MF.3mf- Sim , sim .- Sim , sim .ThreeMfFormat3D Manufacturing Format
FBX.fbxNão*Não*FbxFormatImportador/exportador existe, mas o formato de detecção automática não está conectado; não é utilizável via scene.open()
COLLADA.dae- Sim , sim .- Sim , sim .ColladaFormatRequisitos xmldom (instalação automática)

OBJ (Fronte de onda)

O OBJ apoia tanto a importação como as exportações em Portugal. @aspose/3d.• Quando se salva como OBJ, a biblioteca de materiais (.mtl) é escrito automaticamente junto com o número de referência (n.o 1 do artigo 82.°). .obj Arquivo. ObjLoadOptions para controlar a carga de materiais e coordenar o comportamento do sistema.

Opções fundamentais para a ObjLoadOptions:

Opção:Tipo de veículo:PadrãoEfeito
enableMaterialsbooleantrueAnalise o .mtl Arquivo referenciado por: mtllib
flipCoordinateSystembooleanfalseVire os eixos Y/Z para combinar com sistemas de mão direita
scalenumber1.0Escala uniforme aplicada a todos os vértices sob carga
normalizeNormalbooleantrueNormalizem os vértices normais para unidade de comprimento
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
const opts = new ObjLoadOptions();
opts.enableMaterials = true;
opts.normalizeNormal = true;

scene.open('model.obj', opts);
console.log(`Loaded ${scene.rootNode.childNodes.length} top-level node(s)`);

Para converter um OBJ para qualquer formato de escrita, carregue-o e chame scene.save() com a classe de formato alvo.

GTF e GLB

glTF 2.0 é o formato de intercâmbio recomendado para uso na web e no motor de jogos. A biblioteca usa a mesma GltfFormat classe para ambos os tipos de pessoas. .gltf (JSON + sidecar) e .glb (binário, autocontido) saída. GltfSaveOptions.binaryMode.

Carga glTF ou GLB:

import { Scene } from '@aspose/3d';
import { GltfLoadOptions } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('model.gltf', new GltfLoadOptions());
// or
scene.open('model.glb');  // format detected from magic bytes

Exportação como JSON glTF (.gltf + .bin):

import { Scene } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('input.fbx');

const opts = new GltfSaveOptions();
opts.binaryMode = false;  // produces output.gltf + output.bin
scene.save('output.gltf', GltfFormat.getInstance(), opts);

Exportação como BLB binário (.glb):

import { Scene } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('input.obj');

const opts = new GltfSaveOptions();
opts.binaryMode = true;  // single self-contained file
scene.save('output.glb', GltfFormat.getInstance(), opts);

Utilização: binaryMode = true A Comissão Europeia tem em conta o facto de a Comunidade não ter sido capaz de fazer face à situação. .glb carrega mais rápido em navegadores e motores do que o texto dividido + binário.

STL

STL é um formato de malha triangular usado em impressão CAD e 3D. Tanto o binário quanto o ASCII ST L são suportados para entrada e saída. StlSaveOptions.binaryMode Controla se a saída é binária (compacta) ou ASCII (legível para o homem).

import { Scene } from '@aspose/3d';
import { StlLoadOptions, StlSaveOptions } from '@aspose/3d/formats/stl';

const scene = new Scene();
scene.open('model.stl', new StlLoadOptions());

// Export as binary STL (default, compact)
const binaryOpts = new StlSaveOptions();
binaryOpts.binaryMode = true;
scene.save('output_binary.stl', binaryOpts);

// Export as ASCII STL (human-readable)
const asciiOpts = new StlSaveOptions();
asciiOpts.binaryMode = false;
scene.save('output_ascii.stl', asciiOpts);

O STL armazena apenas geometria triangular e normais de vértices. Os dados sobre materiais e UV não são preservados no ST L.

3MF (3D Manufacturing Format)

3MF is an XML-based format designed for additive manufacturing. It supports color and material metadata alongside geometry. Use it when exchanging files with 3D printing slicers or manufacturing workflows.

import { Scene } from '@aspose/3d';
import { ThreeMfSaveOptions } from '@aspose/3d/formats/3mf';

const scene = new Scene();
scene.open('model.3mf');

// Re-export as 3MF
scene.save('output.3mf', new ThreeMfSaveOptions());

3MF files are ZIP archives internally. The library handles archive creation and extraction automatically.

FBX

Advertência: FBX classes de importadores e exportadores (FbxImporter, FbxExporter) existem na biblioteca, mas o formato FBX auto-detecção é sem fios em: scene.open() ou a) scene.save().- A chamar-te . scene.open('file.fbx') não invocará o importador do FBX o arquivo passará para a STL de reserva. scene.save('output.fbx', opts) Não invocará o exportador FBX. A tabela de suporte ao formato acima marca FBx como No* Utilize o GLB ou COLLADA para importação e exportação totalmente funcionais via scene.open() / scene.save().

COLLADA (DAE)

COLLADA é um formato de intercâmbio baseado em XML suportado por uma ampla gama de ferramentas DCC (Blender, Maya, Cinema 4D). A biblioteca usa o xmldom dependência para análise XML; é instalado automaticamente com o npm install @aspose/3d.

import { Scene } from '@aspose/3d';
import { ColladaSaveOptions } from '@aspose/3d/formats/collada';

const scene = new Scene();
scene.open('model.dae');

// Re-export as COLLADA
const saveOpts = new ColladaSaveOptions();
scene.save('output.dae', saveOpts);

Os ficheiros COLLADA podem conter metadados de escala unitária (<unit> A biblioteca aplica a conversão de unidades automaticamente ao carregar.

Detecção automática de formato

Ao carregar a partir de um caminho de arquivo, a biblioteca tenta detecção do formato dos números mágicos binários antes de voltar à extensão de ficheiro. Isto significa que você pode carrelar um ficheiros GLB chamado .bin ou um ficheiro STL denominado: .model sem especificar explicitamente o formato.

Quando o carregamento é feito a partir de um Buffer com: scene.openFromBuffer(), a detecção de números mágicos é o principal mecanismo:

import { Scene } from '@aspose/3d';
import * as fs from 'fs';

const buffer = fs.readFileSync('model.glb');
const scene = new Scene();
scene.openFromBuffer(buffer);  // format detected from magic bytes: 'glTF'

console.log(`Root has ${scene.rootNode.childNodes.length} child node(s)`);

Formatos com números mágicos fiáveis: GLB (glTF), STL binário (cabeçalho de 80 bytes + triângulo contagem), 3MF (ZIP mágico) PK) OBJ e COLLADA são baseados em texto e detectados a partir da extensão de arquivo ou pela classe de opções que você passa.

Dicas de trabalho

  • O OBJ apoia tanto a importação como as exportações.: quando se salva como OBJ, o código de identificação é: .mtl O ficheiro de material é escrito automaticamente ao lado do .obj Arquivo.
  • Utilize o GLB para a entrega na web:O formato binário autocontido evita problemas de CORS com o sistema de correcção do tempo. .bin Os veículos laterais e cargas mais rápido em renderização WebGL.
  • Opções específicas de formato: genéricos scene.open(path) funciona para a maioria dos formatos, mas passar na classe de opções do carregador permite um comportamento específico do formato como o carrega-material OBJ ou normalização das coordenadas STL.
  • xmldom é necessário para COLLADA.: é instalado automaticamente. Não o adicione à sua caixa de dados, mas coloque-o no seu dispositivo de entrada e saída. peerDependencies ou tente removê-lo; o leitor COLLADA chama diretamente.

Problemas comuns

Sintoma:Causa provávelCorreção
Os materiais OBJ estão vazios após a carga.enableMaterials não definidoPassagem . ObjLoadOptions com: enableMaterials = true
O GLB produz uma .bin Carrinho lateralbinaryMode Descontribuição para falseSet (s) opts.binaryMode = true em: GltfSaveOptions
scene.open() lança “formato não suportado”Extensão de arquivo não reconhecidaPasse a correspondência. *LoadOptions classe ou utilização openFromBuffer()
Carregamento COLLADA falha com erro XMLxmldom ausente ou não correspondenteCorra . npm install @aspose/3d novamente; xmldom é uma dependência directa.
Normal de STL perdida na exportação ASCIIASCII STL diminui normais por faceUtilização: binaryMode = true para saída de conservação normal

Ver também:

 Português