Introdução

Aspose.3D FOSS for TypeScript (@aspose/3d) é uma biblioteca de formato de arquivo 3D de código aberto, licenciada sob MIT, para Node.js e ambientes modernos de navegadores. Desenvolvedores que criam visualizadores de modelos 3D, conversores de formatos, ferramentas de processamento de geometria ou pipelines 3D no lado do servidor 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 — OBJ, glTF 2.0 / GLB, STL, 3MF e COLLADA tanto para importação quanto para exportação. Classes de importação/exportação 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 é totalmente acessível para leitura e escrita.

Recursos Principais

  • E/S multi-formato: Importar e exportar OBJ (com .mtl materiais), glTF 2.0 / GLB, STL (binário e ASCII), 3MF e COLLADA tanto de caminhos de arquivo quanto em memória Buffer objetos. 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 a inversão de coordenadas, escala, carregamento de material e mais

Começando

Instale via npm. Node.js 18 ou superior é obrigató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 em 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 controlar a 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