Bevezetés

Aspose.3D FOSS TypeScript-hez (@aspose/3d) egy nyílt forráskódú, MIT licencű 3D fájlformátum könyvtár a Node.js-hez és a modern böngészői környezetekhez. A 3D modellnézőket, formátumkonvertereket, geometriai feldolgozó eszközöket vagy szerveroldali 3D csővezetékeket építő fejlesztők egyetlen npm install @aspose/3d parancs segítségével azonnal elkezdhetik betölteni, felépíteni és exportálni a 3D tartalmakat.

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 összekapcsolva a formátum automatikus felismerésével. A jelenetgrafikon API tükrözi a 3D szerkesztőeszközökben ismert modellt: egy Scene tartalmaz egy rootNode, minden Node tartalmazhat gyermekcsomópontokat és entitásobjektumokat (Mesh, Camera, Light), és a transzformációs hierarchia teljesen elérhető olvasásra és írásra.

Főbb jellemzők

  • Többformátumú I/O: OBJ importálása és exportálása (ezzel .mtl anyagok), glTF 2.0 / GLB, STL (bináris és ASCII), 3MF, és COLLADA fájlútvonalakról és memóriában Buffer objektumok. Az FBX támogatás még nincs bekötve az automatikus felismerésbe.
  • Jelenetgrafikon API: Scene, Node, Mesh, Camera, Light hierarchia teljes szülő/gyermek kezelésével; csomópontok rekurzívan bejárása a következőn keresztül node.childNodes
  • PBR anyagrendszer: Lambert, Phong és PBR (fémes/érdes) anyagok elérhetők a következőn keresztül node.entity.material
  • Háló műveletek: Nyers csúcspont adat elérése a következőn keresztül mesh.controlPoints (tömbje a Vector4), sokszög indexek a mesh.polygonCount, és csúcs elem csatornákon keresztül mesh.getElement()
  • Matematikai segédprogramok: Vector2, Vector3, Vector4, Matrix4, Quaternion, és határolódoboz típusok térbeli számításokhoz
  • Animációs rendszer: Kulcskocka animáció ezzel AnimationClip, AnimationChannel, és interpolációs görbék (lineáris, Bezier, TCB spline)
  • Formátum-specifikus beállítások: Formátumonként LoadOptions / SaveOptions osztályok vezérlik a koordináta fordítást, méretezést, anyag betöltést és egyebeket

Első lépések

Telepítés npm-ből. Node.js 18 vagy újabb szükséges; TypeScript 5.0+ ajánlott.

npm install @aspose/3d

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

Exportálás glTF-be

Ments bármely betöltött vagy felépített jelenetet glTF 2.0 bináris (GLB) formátumba:

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

A könyvtár automatikusan felismeri a kimeneti formátumot a fájlkiterjesztés alapján. Adjon át egy GltfSaveOptions példányt a PBR anyag beágyazás, textúrák és bináris vs. JSON kódolás felügyeletéhez.

Jelenet felépítése

Építs fel egy jelenetet programozottan, és exportáld:

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

Lásd még