Introducere

Aspose.3D FOSS pentru TypeScript (@aspose/3d) este o bibliotecă open-source, cu licență MIT, pentru formate de fișiere 3D, destinată Node.js și mediilor moderne de browser. Dezvoltatorii care construiesc vizualizatoare de modele 3D, convertoare de formate, instrumente de procesare a geometriei sau conducte 3D pe server pot să o instaleze cu un singur npm install @aspose/3d comandă și să înceapă imediat să încarce, să construiască și să exporte conținut 3D.

Biblioteca suportă principalele formate de schimb — OBJ, glTF 2.0 / GLB, STL, 3MF și COLLADA atât pentru import, cât și pentru export. Clasele de import/export FBX există, dar nu sunt încă integrate în detectarea automată a formatului. API‑ul de graf de scenă reflectă modelul familiar din instrumentele de authoring 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ă.
  • API pentru graficul scenei: 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.entity.material
  • Operații pe mesh: Accesează date brute de vârf prin mesh.controlPoints (array de Vector4), indici de poligon prin mesh.polygonCount, și canale de elemente de vârf prin mesh.getElement()
  • Utilitare 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 (liniare, Bezier, spline TCB)
  • Opțiuni specifice formatului: Pe format LoadOptions / SaveOptions clasele controlează inversarea coordonatelor, scalarea, încărcarea materialelor și altele

Începerea utilizării

Instalați din npm. Este necesar Node.js 18 sau o versiune ulterioară; se recomandă TypeScript 5.0+.

npm install @aspose/3d

Încărcați un fișier OBJ și inspectați 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`);
    }
}

Exportă în glTF

Salvați orice scenă încărcată sau construită în format binar glTF 2.0 (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');

Biblioteca detectează automat formatul de ieșire din extensia fișierului. Transmite un GltfSaveOptions instanță pentru controlul încorporării materialelor PBR, texturilor și codificării binare vs. JSON.

Construcția scenei

Construiește o scenă programatic și exportă‑o:

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

Vezi și