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 .mtl materialen), glTF 2.0 / GLB, STL (binair en ASCII), 3MF en COLLADA vanaf zowel bestandspaden als in-geheugen Buffer objecten. FBX-ondersteuning is nog niet gekoppeld aan automatische detectie.
  • Scène-grafiek API: Scene, Node, Mesh, Camera, Light hiërarchie met volledige ouder/kind-beheer; doorloop knooppunten recursief via node.childNodes
  • PBR-materiaalensysteem: Lambert, Phong en PBR (metallic/roughness) materialen toegankelijk via node.material
  • Meshoperaties: Toegang tot ruwe vertexgegevens via mesh.controlPoints (array van Vector4), polygonindices via mesh.polygonCount, en vertex-elementkanalen via mesh.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 / SaveOptions klassen 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 build

Laad 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

Gerelateerde bronnen