Introduktion

Aspose.3D FOSS för TypeScript (@aspose/3d) är ett öppen källkod, MIT-licensierat 3D-filformatbibliotek som främst är designat för Node.js. Utvecklare som bygger 3D-modellvisare, formatkonverterare, geometri-bearbetningsverktyg eller server-sidiga 3D-pipelines kan installera det med ett enda kommando (se Installationsguide) och omedelbart börja ladda, konstruera och exportera 3D-innehåll. Biblioteket använder require('fs') och Buffer från Node.js; användning i webbläsare kräver lämpliga shim-bibliotek för dessa API:er och stöds inte officiellt.

Biblioteket stödjer de viktigaste utbytesformaten — OBJ, glTF 2.0 / GLB, STL, 3MF och COLLADA för både import och export. FBX-importör/exportör-klasser finns men är ännu inte kopplade till automatisk formatdetektering. Scengrafen API speglar modellen som är bekant från 3D-authoringsverktyg: en Scene innehåller en rootNode, varje Node kan ha underordnade noder och entitetsobjekt (Mesh, Camera, Light), och transform-hierarkin är fullt åtkomlig för läsning och skrivning.

Nyckelfunktioner

  • Multiformat I/O: Importera och exportera OBJ (med .mtl material), glTF 2.0 / GLB, STL (binär och ASCII), 3MF, och COLLADA från både filsökvägar och i minnet Buffer objekt. FBX-stöd är ännu inte kopplat till automatisk upptäckt.
  • Scengraf API: Scene, Node, Mesh, Camera, Light hierarki med full föräldra-/barnhantering; traversera noder rekursivt via node.childNodes
  • PBR-materialsystem: Lambert-, Phong- och PBR-material (metallisk/ytstruktur) tillgängliga via node.material
  • Mesh-operationer: Åtkomst till rå vertexdata via mesh.controlPoints (array av Vector4), polygonindex via mesh.polygonCount, och vertex-elementkanaler via mesh.getElement()
  • Matematikverktyg: Vector2, Vector3, Vector4, Matrix4, Quaternion, och typer för bounding-box för rumsliga beräkningar
  • Animationssystem: Keyframe-animation med AnimationClip, AnimationChannel, och interpolationskurvor (linjär, Bezier, TCB-spline)
  • Format-specifika alternativ: Per-format LoadOptions / SaveOptions klasser styr koordinatvändning, skala, materialinläsning och mer

Komma igång

Bygg paketet från källkod. Node.js 18 eller senare krävs; TypeScript 5.0+ rekommenderas.

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

Läs in en OBJ-fil och inspektera scenen:

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

Scengraf API

Varje scen är ett träd av Node-objekt med rot i scene.rootNode. Bygg hierarkin med addChildNode(), fäst enheter såsom Camera eller Light till en nod via dess entity-egenskap, och läs varje nods lokala eller världsrumstransform genom transform och 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}`);
}

Matematikverktyg

Vector3, Vector4, Matrix4 och Quaternion stödjer varje geometrisk operation i biblioteket. Vector3 och Vector4 exponerar x/y/z(/w)-komponenter plus length, dot() och cross(); Matrix4 är ett 4×4-rutnät som nås via m00–m33 med transpose() och concatenate(); Quaternion tillhandahåller normalize(), conjugate(), inverse() och dot() för rotationsmatematik.

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

Se även

Relaterade resurser