Inleiding

Aspose.3D FOSS voor TypeScript (@aspose/3d) is een open-source, MIT-gelicentieerde 3D-bestandsformaatbibliotheek voor Node.js en moderne browseromgevingen. Ontwikkelaars die 3D-modelviewers, formaatconverters, geometrieverwerkingstools of server-side 3D-pijplijnen bouwen, kunnen het installeren met een enkele npm install @aspose/3d commando en onmiddellijk beginnen met laden, construeren en exporteren van 3D-inhoud.

De bibliotheek ondersteunt de belangrijkste uitwisselformaten — OBJ, glTF 2.0 / GLB, STL, 3MF en COLLADA voor zowel import als export. FBX‑importer/exporter‑klassen bestaan, maar zijn nog niet gekoppeld aan automatische formaterkenning. De scene graph API weerspiegelt het model dat bekend is van 3D‑authoring‑tools: a Scene houdt een rootNode, elk Node kan kindknooppunten en entiteitsobjecten bevatten (Mesh, Camera, Light), en de transformatiehiërarchie is volledig toegankelijk voor lezen en schrijven.

Belangrijkste kenmerken

  • Multi‑formaat I/O: Import en export OBJ (met .mtl materialen), glTF 2.0 / GLB, STL (binair en ASCII), 3MF, en COLLADA van zowel bestandspaden als in‑memory Buffer objecten. FBX-ondersteuning is nog niet gekoppeld aan automatische detectie.
  • Scene graph API: Scene, Node, Mesh, Camera, Light hiërarchie met volledig ouder/kind‑beheer; doorloop knooppunten recursief via node.childNodes
  • PBR-materialsysteem: Lambert, Phong, en PBR (metallic/roughness) materialen toegankelijk via node.entity.material
  • Mesh-bewerkingen: Toegang tot ruwe vertex-gegevens via mesh.controlPoints (array van Vector4), polygoonindices via mesh.polygonCount, en vertex-elementkanalen via mesh.getElement()
  • Wiskundige hulpprogramma’s: Vector2, Vector3, Vector4, Matrix4, Quaternion, en begrenzingsvaktypen 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ördinatenomkering, schaal, materiaallading en meer

Aan de slag

Installeer via npm. Node.js 18 of hoger is vereist; TypeScript 5.0+ wordt aanbevolen.

npm install @aspose/3d

Laad een OBJ‑bestand en inspecteer de scene:

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`);
    }
}

Exporteren naar glTF

Sla elke geladen of geconstrueerde scene op als glTF 2.0 binary (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');

De bibliotheek detecteert automatisch het uitvoerformaat aan de hand van de bestandsextensie. Geef een GltfSaveOptions instantie voor controle over PBR-materiaalinsluiting, texturen en binaire versus JSON-codering.

Scèneconstructie

Bouw een scène programmatisch en exporteer deze:

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');

Zie ook