Introdução
Aspose.3D FOSS para TypeScript (@aspose/3d) é uma biblioteca de formatos de arquivo 3D de código aberto, licenciada sob MIT, para Node.js e ambientes de navegadores modernos. Desenvolvedores que criam visualizadores de modelos 3D, conversores de formatos, ferramentas de processamento geométrico ou pipelines 3D server‑side podem instalá‑la com um único npm install @aspose/3d comando e começar imediatamente a carregar, construir e exportar conteúdo 3D.
A biblioteca suporta os principais formatos de intercâmbio — glTF 2.0 / GLB, STL, 3MF e COLLADA tanto para importação quanto para exportação, e OBJ apenas para importação. Classes de importador/exportador FBX existem, mas ainda não estão integradas à detecção automática de formatos. A API de grafo de cena reflete o modelo familiar das ferramentas de autoria 3D: um Scene contém um rootNode, cada Node pode conter nós filhos e objetos de entidade (Mesh, Camera, Light), e a hierarquia de transformações está totalmente acessível para leitura e escrita.
Recursos Principais
- E/S multi‑formato: Importação de OBJ (com
.mtlmateriais, somente importação), glTF 2.0 / GLB, STL (binário e ASCII), 3MF e COLLADA tanto a partir de caminhos de arquivo quanto em memóriaBufferobjetos. glTF, STL, 3MF e COLLADA também suportam exportação. O suporte a FBX ainda não está integrado à detecção automática. - API de grafo de cena:
Scene,Node,Mesh,Camera,Lighthierarquia com gerenciamento completo de pai/filho; percorra nós recursivamente vianode.childNodes - sistema de material PBR: materiais Lambert, Phong e PBR (metallic/roughness) acessíveis via
node.entity.material - Operações de malha: Acesse dados brutos de vértices via
mesh.controlPoints(array deVector4), índices de polígonos viamesh.polygonCount, e canais de elementos de vértice viamesh.getElement() - Utilitários matemáticos:
Vector2,Vector3,Vector4,Matrix4,Quaternion, e tipos de caixa delimitadora para cálculos espaciais - Sistema de animação: Animação por quadros-chave com
AnimationClip,AnimationChannel, e curvas de interpolação (linear, Bezier, spline TCB) - Opções específicas de formato: Por formato
LoadOptions/SaveOptionsas classes controlam inversão de coordenadas, escala, carregamento de material e mais
Começando
Instale via npm. Node.js 18 ou superior é necessário; TypeScript 5.0+ é recomendado.
npm install @aspose/3d
Carregue um arquivo OBJ e inspecione a cena:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
const options = new ObjLoadOptions();
options.enableMaterials = true;
scene.open('model.obj', options);
for (const node of scene.rootNode.childNodes) {
if (node.entity && 'controlPoints' in node.entity) {
const mesh = node.entity as any;
console.log(`Mesh "${node.name}": ${mesh.controlPoints.length} vertices`);
}
}
Exportar para glTF
Salve qualquer cena carregada ou construída para glTF 2.0 binário (GLB):
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());
scene.save('output.glb');
console.log('Exported to output.glb');
A biblioteca detecta automaticamente o formato de saída a partir da extensão do arquivo. Passe um GltfSaveOptions instância para controle da incorporação de material PBR, texturas e codificação binária vs. JSON.
Construção de Cena
Construa uma cena programaticamente e exporte-a:
import { Scene, Node } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';
const scene = new Scene();
const mesh = new Mesh();
// ... populate mesh.controlPoints and polygons ...
const node = new Node('myMesh');
node.entity = mesh;
scene.rootNode.addChildNode(node);
scene.save('programmatic.glb');