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 Formaterkennung 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
.mtlMaterialien), glTF 2.0 / GLB, STL (binär und ASCII), 3MF und COLLADA sowohl von Dateipfaden als auch aus dem Speicher.BufferObjekte. Die FBX-Unterstützung ist noch nicht in die automatische Erkennung integriert. - Scene-Graph-API:
Scene,Node,Mesh,Camera,LightHierarchie mit vollständiger Eltern/Kind-Verwaltung; Knoten rekursiv traversieren übernode.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 vonVector4), Polygonindizes übermesh.polygonCount, und Vertex-Element-Kanäle übermesh.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/SaveOptionsKlassen 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');