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 imagem | Extensão | Leia. | Escrever . | Classe de formato | Notas |
|---|---|---|---|---|---|
| OBJ | .obj | - Sim , sim . | - Sim , sim . | ObjFormat | Objetos de observação da frente de onda; leitura: .mtl materiais; escreve .mtl lado a lado .obj |
| GTF | .gltf / .glb | - Sim , sim . | - Sim , sim . | GltfFormat | glTF 2.0 JSON e GLB binário |
| STL | .stl | - Sim , sim . | - Sim , sim . | StlFormat | Modo binário e ASCII |
| 3MF | .3mf | - Sim , sim . | - Sim , sim . | ThreeMfFormat | 3D Manufacturing Format |
| FBX | .fbx | Não* | Não* | FbxFormat | Importador/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 . | ColladaFormat | Requisitos 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ão | Efeito |
|---|---|---|---|
enableMaterials | boolean | true | Analise o .mtl Arquivo referenciado por: mtllib |
flipCoordinateSystem | boolean | false | Vire os eixos Y/Z para combinar com sistemas de mão direita |
scale | number | 1.0 | Escala uniforme aplicada a todos os vértices sob carga |
normalizeNormal | boolean | true | Normalizem 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 comoNo*Utilize o GLB ou COLLADA para importação e exportação totalmente funcionais viascene.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 é:
.mtlO ficheiro de material é escrito automaticamente ao lado do.objArquivo. - 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.
.binOs 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.peerDependenciesou tente removê-lo; o leitor COLLADA chama diretamente.
Problemas comuns
| Sintoma: | Causa provável | Correção |
|---|---|---|
| Os materiais OBJ estão vazios após a carga. | enableMaterials não definido | Passagem . ObjLoadOptions com: enableMaterials = true |
O GLB produz uma .bin Carrinho lateral | binaryMode Descontribuição para false | Set (s) opts.binaryMode = true em: GltfSaveOptions |
scene.open() lança “formato não suportado” | Extensão de arquivo não reconhecida | Passe a correspondência. *LoadOptions classe ou utilização openFromBuffer() |
| Carregamento COLLADA falha com erro XML | xmldom ausente ou não correspondente | Corra . npm install @aspose/3d novamente; xmldom é uma dependência directa. |
| Normal de STL perdida na exportação ASCII | ASCII STL diminui normais por face | Utilização: binaryMode = true para saída de conservação normal |
Ver também:
- Características e funcionalidades: gráfico de cena, malha, materiais, animação e APIs matemáticas.
- Gráfico de cena: construção e atravessamento da árvore de nós.
- Como construir uma malha 3D programaticamente
- Aspose.3D para TypeScript Documentação Empresarial