Introduction
Aspose.3D FOSS pour TypeScript (@aspose/3d) est une bibliothèque de formats de fichiers 3D open source, sous licence MIT, principalement conçue pour Node.js. 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 commande (voir le Guide d’installation) et commencer immédiatement à charger, construire et exporter du contenu 3D. La bibliothèque utilise require('fs') et Buffer de Node.js; l’utilisation dans le navigateur nécessite des shim appropriés pour ces API et n’est pas officiellement prise en charge.
La bibliothèque prend en charge les principaux formats d’échange — OBJ, glTF 2.0 / GLB, STL, 3MF et COLLADA, tant pour l’importation que pour l’exportation. Des classes d’import/export FBX existent mais ne sont pas encore intégrées à la détection automatique des formats. Le 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 porter des nœuds enfants et des objets d’entité (Mesh, Camera, Light), et la hiérarchie de transformation est entièrement accessible en lecture et en écriture.
Fonctionnalités principales
- Entrée/sortie multi-format: Importer et exporter OBJ (avec
.mtlmatériaux), glTF 2.0 / GLB, STL (binaire et ASCII), 3MF, et COLLADA depuis les chemins de fichiers et en mémoireBufferobjets. La prise en charge de FBX n’est pas encore intégrée à la détection automatique. - Graphique de scène API:
Scene,Node,Mesh,Camera,Lighthiérarchie avec une gestion complète parent/enfant ; parcourir les nœuds récursivement vianode.childNodes - système de matériaux PBR: matériaux Lambert, Phong et PBR (metallic/roughness) accessibles via
node.material - Opérations de maillage: 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 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, Bezier, 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
Construisez le paquet à partir du code source. Node.js 18 ou supérieur est requis; TypeScript 5.0+ est recommandé.
git clone https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-TypeScript.git
cd Aspose.3D-FOSS-for-TypeScript
npm install
npm run buildCharger un fichier OBJ et inspecter 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`);
}
}
Graphe de scène API
Chaque scène est un arbre d’objets Node enraciné à scene.rootNode. Construisez la hiérarchie avec addChildNode(), attachez des entités telles que Camera ou Light à un nœud via sa propriété entity, et lisez la transformation locale ou globale de chaque nœud via transform et globalTransform.
import { Scene, Node, Camera, Light } from '@aspose/3d';
const scene = new Scene();
const cameraNode = new Node('MainCamera');
cameraNode.entity = new Camera('MainCamera');
scene.rootNode.addChildNode(cameraNode);
const lightNode = new Node('KeyLight');
lightNode.entity = new Light('KeyLight');
scene.rootNode.addChildNode(lightNode);
for (const child of scene.rootNode.childNodes) {
console.log(`${child.name}: ${child.entity?.constructor.name}`);
}
Utilitaires mathématiques
Vector3, Vector4, Matrix4 et Quaternion soutiennent chaque opération géométrique de la bibliothèque. Vector3 et Vector4 exposent les composants x/y/z(/w) ainsi que length, dot() et cross(); Matrix4 est une grille 4×4 accessible via m00–m33 avec transpose() et concatenate(); Quaternion fournit normalize(), conjugate(), inverse() et dot() pour les mathématiques de rotation.
import { Vector3, Quaternion, Matrix4 } from '@aspose/3d/utilities';
const position = new Vector3(1.0, 2.0, 3.0);
const rotation = new Quaternion(1.0, 0.0, 0.0, 0.0);
const transform = new Matrix4();
console.log(`length=${position.length} determinant=${transform.determinant}`);
console.log(`rotation w=${rotation.w} x=${rotation.x} y=${rotation.y} z=${rotation.z}`);
Voir aussi
- Comment charger des modèles 3D dans TypeScript
- Comment exporter glTF dans TypeScript
- Prise en charge des formats
- API Reference