Bevezetés

Aspose.3D FOSS a TypeScript számára (@aspose/3d) egy nyílt forráskódú, MIT-licencelt 3D fájlformátum könyvtár, amely elsősorban a Node.js-hez készült. A 3D modellnézők, formátumkonvertálók, geometriai feldolgozó eszközök vagy szerveroldali 3D folyamatok fejlesztői egyetlen parancs segítségével telepíthetik (lásd a Telepítési útmutatót), és azonnal elkezdhetik a 3D tartalom betöltését, létrehozását és exportálását. A könyvtár a Node.js require('fs') és Buffer elemeit használja; böngészőben való használathoz megfelelő shim-ek szükségesek ezekhez az API-khoz, és hivatalosan nem támogatott.

A könyvtár támogatja a főbb csereformátumokat — OBJ, glTF 2.0 / GLB, STL, 3MF és COLLADA, mind import, mind export esetén. FBX importáló/exportáló osztályok léteznek, de még nincsenek bekötve a formátum automatikus felismerésébe. A jelenetgrafikon API tükrözi a 3D szerkesztőeszközökben ismerős modellt: egy Scene tartalmaz egy rootNode, minden Node hordozhat gyermekcsomópontokat és entitásobjektumokat (Mesh, Camera, Light), és a transzformációs hierarchia teljesen elérhető olvasásra és írásra.

Fő jellemzők

  • Többformátumú I/O: OBJ importálása és exportálása (anyagokkal .mtl anyagok), glTF 2.0 / GLB, STL (bináris és ASCII), 3MF, és COLLADA mindkét fájlútvonalról és memóriáról Buffer objektumok. Az FBX támogatás még nincs bekötve az automatikus felismerésbe.
  • Jelenet gráf API: Scene, Node, Mesh, Camera, Light hierarchia teljes szülő/gyermek kezelésével; csomópontok rekurzív bejárása a node.childNodes
  • PBR anyagrendszer: Lambert, Phong, és PBR (fémes/érdes) anyagok elérhetők keresztül node.material
  • Háló műveletek: Hozzáférés a nyers vertex adatokhoz keresztül mesh.controlPoints (tömbje Vector4), poligon indexek keresztül mesh.polygonCount, és vertex elem csatornák keresztül mesh.getElement()
  • Matematikai segédfüggvények: Vector2, Vector3, Vector4, Matrix4, Quaternion, és határoló doboz típusok térbeli számításokhoz
  • Animációs rendszer: Kulcskocka animációval AnimationClip, AnimationChannel, és interpolációs görbék (lineáris, Bézier, TCB spline)
  • Formátum-specifikus beállítások: Formátumonként LoadOptions / SaveOptions osztályok vezérlik a koordináta tükrözést, méretezést, anyagbetöltést és egyebeket

Első lépések

Építse a csomagot forrásból. Node.js 18 vagy újabb szükséges; a TypeScript 5.0+ ajánlott.

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

Tölts be egy OBJ fájlt, és vizsgáld meg a jelenetet:

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

Jelenet gráf API

Minden jelenet egy Node objektumokból álló fa, amelynek gyökere scene.rootNode. Építsd fel a hierarchiát a addChildNode() segítségével, csatolj entitásokat, például Camera vagy Light egy csomóponthoz a entity tulajdonsága révén, és olvasd ki minden csomópont helyi vagy világkoordináta transzformációját a transform és globalTransform segítségével.

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

Matematikai segédeszközök

Vector3, Vector4, Matrix4, és Quaternion támogatják a könyvtár minden geometriai műveletét. Vector3 és Vector4 biztosítják a x/y/z(/w) komponenseket plusz length, dot(), és cross(); Matrix4 egy 4×4-es rács, amelyhez a m00–m33 segítségével férhetünk hozzá transpose() és concatenate() használatával; Quaternion biztosít normalize(), conjugate(), inverse(), és dot() a forgatás matematikához.

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

Lásd még:

Kapcsolódó források