Introducción
Aspose.3D FOSS para TypeScript (@aspose/3d) es una biblioteca de formato de archivo 3D de código abierto, con licencia MIT, para Node.js y entornos de navegadores modernos. Los desarrolladores que construyan visores de modelos 3D, convertidores de formatos, herramientas de procesamiento geométrico o canalizaciones 3D del lado del servidor pueden instalarla con un único npm install @aspose/3d comando y comenzar de inmediato a cargar, construir y exportar contenido 3D.
La biblioteca soporta los principales formatos de intercambio — glTF 2.0 / GLB, STL, 3MF y COLLADA tanto para importación como para exportación, y OBJ solo para importación. Existen clases de importador/exportador FBX pero aún no están integradas en la detección automática de formatos. La API del grafo de escena refleja el modelo familiar de las herramientas de autoría 3D: un Scene contiene un rootNode, cada Node puede contener nodos hijos y objetos de entidad (Mesh, Camera, Light), y la jerarquía de transformaciones es totalmente accesible para lectura y escritura.
Características clave
- E/S multiformato: Importar OBJ (con
.mtlmateriales, solo importación), glTF 2.0 / GLB, STL (binario y ASCII), 3MF y COLLADA tanto desde rutas de archivo como en memoriaBufferobjetos. glTF, STL, 3MF y COLLADA también admiten exportación. El soporte de FBX aún no está integrado en la detección automática. - API de grafo de escena:
Scene,Node,Mesh,Camera,Lightjerarquía con gestión completa de padres/hijos; recorre los nodos recursivamente mediantenode.childNodes - sistema de materiales PBR: materiales Lambert, Phong y PBR (metallic/roughness) accesibles mediante
node.entity.material - Operaciones de malla: Accede a datos de vértices sin procesar mediante
mesh.controlPoints(matriz deVector4), índices de polígonos mediantemesh.polygonCount, y canales de elementos de vértice mediantemesh.getElement() - Utilidades matemáticas:
Vector2,Vector3,Vector4,Matrix4,Quaternion, y tipos de caja delimitadora para cálculos espaciales - Sistema de animación: Animación por fotogramas clave con
AnimationClip,AnimationChannel, y curvas de interpolación (lineal, Bezier, spline TCB) - Opciones específicas del formato: Por formato
LoadOptions/SaveOptionsclases controlan la inversión de coordenadas, escala, carga de materiales y más
Comenzando
Instala desde npm. Se requiere Node.js 18 o superior; se recomienda TypeScript 5.0+.
npm install @aspose/3d
Carga un archivo OBJ y examina la escena:
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 a glTF
Guarda cualquier escena cargada o construida en glTF 2.0 binario (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');
La biblioteca detecta automáticamente el formato de salida a partir de la extensión del archivo. Pase un GltfSaveOptions instancia para controlar la incrustación de materiales PBR, texturas y codificación binaria vs. JSON.
Construcción de escena
Construye una escena programáticamente y expórtala:
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');