Einleitung

Aspose.3D FOSS für TypeScript (@aspose/3d) ist eine Open-Source‑Bibliothek unter MIT‑Lizenz für 3D‑Dateiformate für Node.js und moderne Browserumgebungen. Entwickler, die 3D‑Modell‑Viewer, Formatkonverter, Geometrieverarbeitungs‑Tools oder serverseitige 3D‑Pipelines erstellen, können sie mit einem einzigen npm install @aspose/3d Befehl installieren und sofort beginnen, 3D‑Inhalte zu laden, zu konstruieren und zu exportieren.

Die Bibliothek unterstützt die wichtigsten Austauschformate — OBJ, glTF 2.0 / GLB, STL, 3MF und COLLADA sowohl für den Import als auch für den Export. FBX‑Importer/Exporter‑Klassen existieren, sind aber noch nicht in die automatische Format­erkennung eingebunden. Die Scene‑Graph‑API spiegelt das aus 3D‑Authoring‑Tools bekannte Modell wider: ein Scene enthält ein rootNode, jedes Node kann Kindknoten und Entity‑Objekte tragen (Mesh, Camera, Light), und die Transformationshierarchie ist vollständig les‑ und schreibbar.

Hauptfunktionen

  • Mehrformat‑I/O: Import und Export von OBJ (mit .mtl Materialien), glTF 2.0 / GLB, STL (binär und ASCII), 3MF und COLLADA sowohl von Dateipfaden als auch aus dem Speicher. Buffer Objekte. Die FBX-Unterstützung ist noch nicht in die automatische Erkennung integriert.
  • Scene-Graph-API: Scene, Node, Mesh, Camera, Light Hierarchie mit vollständiger Eltern/Kind-Verwaltung; Knoten rekursiv traversieren über node.childNodes
  • PBR-Materialsystem: Lambert-, Phong- und PBR-Materialien (metallisch/rau) zugänglich über node.entity.material
  • Mesh-Operationen: Roh-Vertex-Daten über mesh.controlPoints (Array von Vector4), Polygonindizes über mesh.polygonCount, und Vertex-Element-Kanäle über mesh.getElement()
  • Mathe-Utilities: Vector2, Vector3, Vector4, Matrix4, Quaternion, und Bounding-Box-Typen für räumliche Berechnungen
  • Animationssystem: Keyframe-Animation mit AnimationClip, AnimationChannel, und Interpolationskurven (linear, Bezier, TCB-Spline)
  • Formatbezogene Optionen: Pro-Format LoadOptions / SaveOptions Klassen steuern das Umkehren von Koordinaten, Skalierung, Materialladen und mehr

Erste Schritte

Installation über npm. Node.js 18 oder höher ist erforderlich; TypeScript 5.0+ wird empfohlen.

npm install @aspose/3d

Lade eine OBJ‑Datei und inspiziere die Szene:

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 nach glTF

Speichern Sie jede geladene oder erstellte Szene im glTF 2.0 Binärformat (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');

Die Bibliothek erkennt das Ausgabeformat automatisch anhand der Dateierweiterung. Übergeben Sie ein GltfSaveOptions Instanz, um die Einbettung von PBR-Materialien, Texturen und die binäre vs. JSON-Kodierung zu steuern.

Szenenaufbau

Erstellen Sie eine Szene programmgesteuert und exportieren Sie sie:

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

Siehe auch