Inleiding
Aspose.3D FOSS for TypeScript (@aspose/3d) is een open-source, onder de MIT-licentie vallende 3D-bestandsformaatbibliotheek die primair is ontworpen voor Node.js. Ontwikkelaars die 3D-modelviewers, formaatconversies, geometrieverwerkingstools of server-side 3D-pijplijnen bouwen, kunnen deze installeren met één enkele opdracht (zie de Installatiehandleiding) en onmiddellijk beginnen met het laden, construeren en exporteren van 3D-inhoud. De bibliotheek maakt gebruik van require('fs') en Buffer uit Node.js; gebruik in de browser vereist geschikte shims voor die API’s en wordt niet officieel ondersteund.
De bibliotheek ondersteunt de belangrijkste uitwisselformaten — OBJ, glTF 2.0 / GLB, STL, 3MF en COLLADA voor zowel import als export. FBX-importeur/exporteur-klassen bestaan, maar zijn nog niet gekoppeld aan automatische formaatdetectie. De scene graph API weerspiegelt het model dat bekend is van 3D-authoring-tools: een Scene bevat een rootNode, elk Node kan onderliggende knooppunten en entiteitsobjecten (Mesh, Camera, Light) dragen, en de transformatie-hiërarchie is volledig toegankelijk voor lezen en schrijven.
Belangrijkste kenmerken
- Multi-formaat I/O: Importeren en exporteren van OBJ (met
.mtlmaterialen), glTF 2.0 / GLB, STL (binair en ASCII), 3MF en COLLADA vanaf zowel bestandspaden als in-geheugenBufferobjecten. FBX-ondersteuning is nog niet gekoppeld aan automatische detectie. - Scène-grafiek API:
Scene,Node,Mesh,Camera,Lighthiërarchie met volledige ouder/kind-beheer; doorloop knooppunten recursief vianode.childNodes - PBR-materiaalensysteem: Lambert, Phong en PBR (metallic/roughness) materialen toegankelijk via
node.material - Meshoperaties: Toegang tot ruwe vertexgegevens via
mesh.controlPoints(array vanVector4), polygonindices viamesh.polygonCount, en vertex-elementkanalen viamesh.getElement() - Wiskundige hulpprogramma’s:
Vector2,Vector3,Vector4,Matrix4,Quaternion, en boundingbox-types voor ruimtelijke berekeningen - Animatiesysteem: Keyframe-animatie met
AnimationClip,AnimationChannel, en interpolatiecurves (lineair, Bezier, TCB-spline) - Formaat-specifieke opties: Per-formaat
LoadOptions/SaveOptionsklassen regelen coördinaat-omkering, schaal, materiaal laden en meer
Aan de slag
Bouw het pakket vanuit de broncode. Node.js 18 of hoger is vereist; TypeScript 5.0+ wordt aanbevolen.
git clone https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-TypeScript.git
cd Aspose.3D-FOSS-for-TypeScript
npm install
npm run buildLaad een OBJ-bestand en inspecteer de 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`);
}
}
Scène-grafiek API
Elke scène is een boom van Node objecten met scene.rootNode als wortel. Bouw de hiërarchie op met addChildNode(), koppel entiteiten zoals Camera of Light aan een knoop via zijn entity eigenschap, en lees de lokale of wereld-ruimte transformatie van elke knoop via transform en 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}`);
}
Wiskunde-hulpmiddelen
Vector3, Vector4, Matrix4, en Quaternion ondersteunen elke geometrische bewerking in de bibliotheek. Vector3 en Vector4 exposeren x/y/z(/w) componenten plus length, dot(), en cross(); Matrix4 is een 4×4 raster toegankelijk via m00–m33 met transpose() en concatenate(); Quaternion biedt normalize(), conjugate(), inverse(), en dot() voor rotatiemath.
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}`);
Zie ook
- Hoe 3D-modellen te laden in TypeScript
- Hoe glTF te exporteren in TypeScript
- Formaatondersteuning
- API Reference