Introducere

Aspose.3D FOSS pentru TypeScript (@aspose/3d) este o bibliotecă open-source, licențiată MIT, pentru formatul de fișiere 3D, concepută în principal pentru Node.js. Dezvoltatorii care construiesc vizualizatoare de modele 3D, convertoare de formate, unelte de procesare a geometriei sau conducte 3D pe server pot să o instaleze cu o singură comandă (vezi Ghidul de instalare) și să înceapă imediat să încarce, să construiască și să exporte conținut 3D. Biblioteca folosește require('fs') și Buffer din Node.js; utilizarea în browser necesită shim-uri adecvate pentru acele API-uri și nu este suportată oficial.

Biblioteca suportă principalele formate de interschimb — OBJ, glTF 2.0 / GLB, STL, 3MF și COLLADA pentru import și export. Clasele de import/export FBX există, dar nu sunt încă integrate în detectarea automată a formatelor. API graficului de scenă reflectă modelul familiar din instrumentele de autorare 3D: un Scene conține un rootNode, fiecare Node poate transporta noduri copil și obiecte entitate (Mesh, Camera, Light), iar ierarhia de transformări este complet accesibilă pentru citire și scriere.

Caracteristici cheie

  • I/O multi-format: Importă și exportă OBJ (cu .mtl materiale), glTF 2.0 / GLB, STL (binare și ASCII), 3MF și COLLADA atât din căi de fișier, cât și din memorie Buffer obiecte. Suportul FBX nu este încă integrat în detectarea automată.
  • Graf de scenă API: Scene, Node, Mesh, Camera, Light ierarhie cu gestionare completă părinte/copil; parcurge nodurile recursiv prin node.childNodes
  • sistem de materiale PBR: Materiale Lambert, Phong și PBR (metallic/roughness) accesibile prin node.material
  • Operații de mesh: Accesați datele brute ale vârfurilor prin mesh.controlPoints (array de Vector4), indici de poligon prin mesh.polygonCount, și canalele elementelor de vârf prin mesh.getElement()
  • Utilități matematice: Vector2, Vector3, Vector4, Matrix4, Quaternion, și tipuri de cutii de delimitare pentru calcule spațiale
  • Sistem de animație: Animație pe cadre cheie cu AnimationClip, AnimationChannel, și curbe de interpolare (linear, Bezier, spline TCB)
  • Opțiuni specifice formatului: Pe format LoadOptions / SaveOptions clasele controlează inversarea coordonatelor, scalarea, încărcarea materialelor și altele

Începeți

Construiți pachetul din sursă. Node.js 18 sau o versiune ulterioară este necesar; TypeScript 5.0+ este recomandat.

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

Încarcă un fișier OBJ și inspectează scena:

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

Graf de scenă API

Fiecare scenă este un arbore de obiecte Node cu rădăcina la scene.rootNode. Construiește ierarhia cu addChildNode(), atașează entități precum Camera sau Light la un nod prin proprietatea sa entity, și citește transformarea locală sau în spațiul mondial a fiecărui nod prin transform și 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}`);
}

Utilitare Matematice

Vector3, Vector4, Matrix4 și Quaternion susțin fiecare operație geometrică din bibliotecă. Vector3 și Vector4 expun componente x/y/z(/w) plus length, dot() și cross(); Matrix4 este o grilă 4×4 accesată prin m00–m33 cu transpose() și concatenate(); Quaternion oferă normalize(), conjugate(), inverse() și dot() pentru matematică de rotație.

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

Vezi și:

Resurse conexe