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 .mtl materiais, 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ória Buffer objetos. 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, Light hierarquia com gerenciamento completo de pai/filho; percorra nós recursivamente via node.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 de Vector4), índices de polígonos via mesh.polygonCount, e canais de elementos de vértice via mesh.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 / SaveOptions as 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');

Veja Também