Introduction
Aspose.3D FOSS pour TypeScript (@aspose/3d) est une bibliothèque de formats de fichiers 3D open-source, sous licence MIT, pour Node.js et les environnements de navigateurs modernes. Les développeurs créant des visionneuses de modèles 3D, des convertisseurs de formats, des outils de traitement géométrique ou des pipelines 3D côté serveur peuvent l’installer avec une seule npm install @aspose/3d commande et commencer immédiatement à charger, construire et exporter du contenu 3D.
La bibliothèque prend en charge les principaux formats d’échange — glTF 2.0 / GLB, STL, 3MF et COLLADA pour l’importation et l’exportation, et OBJ uniquement pour l’importation. Des classes d’importateur/exportateur FBX existent mais ne sont pas encore intégrées à la détection automatique des formats. L’API du graphe de scène reflète le modèle familier des outils d’authoring 3D : un Scene contient un rootNode, chaque Node peut contenir des nœuds enfants et des objets entité (Mesh, Camera, Light).
Fonctionnalités clés
- I/O multi-format: Import OBJ (avec
.mtlmatériaux, import uniquement), glTF 2.0 / GLB, STL (binaire et ASCII), 3MF et COLLADA à partir de chemins de fichiers et en mémoireBufferobjets. glTF, STL, 3MF et COLLADA prennent également en charge l’exportation. La prise en charge de FBX n’est pas encore intégrée à la détection automatique. - API du graphe de scène:
Scene,Node,Mesh,Camera,Lighthiérarchie avec gestion complète parent/enfant ; parcourir les nœuds de façon récursive vianode.childNodes - système de matériaux PBR: matériaux Lambert, Phong et PBR (métallique/rugosité) accessibles via
node.entity.material - Opérations sur les maillages: Accéder aux données brutes des sommets via
mesh.controlPoints(tableau deVector4), indices de polygones viamesh.polygonCount, et canaux d’éléments de sommet viamesh.getElement() - Utilitaires mathématiques:
Vector2,Vector3,Vector4,Matrix4,Quaternion, et les types de boîtes englobantes pour les calculs spatiaux - Système d’animation: Animation par images clés avec
AnimationClip,AnimationChannel, et courbes d’interpolation (linéaire, Bézier, spline TCB) - Options spécifiques au format: Par format
LoadOptions/SaveOptionsles classes contrôlent le retournement des coordonnées, l’échelle, le chargement des matériaux, et plus encore
Premiers pas
Installez depuis npm. Node.js 18 ou supérieur est requis ; TypeScript 5.0+ est recommandé.
npm install @aspose/3d
Chargez un fichier OBJ et inspectez la scène :
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`);
}
}
Exporter vers glTF
Enregistrez toute scène chargée ou construite au format glTF 2.0 binaire (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 bibliothèque détecte automatiquement le format de sortie à partir de l’extension du fichier. Passez un GltfSaveOptions instance pour contrôler l’intégration des matériaux PBR, les textures, et le codage binaire vs. JSON.
Construction de la scène
Construisez une scène par programmation et exportez‑la :
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');