מבוא

Aspose.3D FOSS עבור TypeScript (@aspose/3d) היא ספרייה בקוד פתוח, ברישיון MIT, לפורמט קבצים תלת‑ממדי עבור Node.js וסביבות דפדפן מודרניות. מפתחים הבונים מציגי מודלים תלת‑ממדיים, ממירי פורמטים, כלי עיבוד גאומטריה, או צינורות תלת‑ממד בצד השרת יכולים להתקין אותה עם פקודה אחת npm install @aspose/3d והם יכולים מיד להתחיל לטעון, לבנות ולייצא תוכן תלת‑ממדי.

הספרייה תומכת בפורמטים המרכזיים להחלפה — OBJ, glTF 2.0 / GLB, STL, 3MF, ו‑COLLADA הן לייבוא והן לייצוא. קיימות מחלקות ייבוא/ייצוא של FBX אך הן עדיין לא משולבות בזיהוי אוטומטי של פורמט. ממשק ה‑API של גרף הסצנה משקף את המודל המוכר מכלי עריכת תלת‑ממד: a Scene מחזיק ב‑ rootNode, כל אחד Node יכול לשאת צמתים ילדים ואובייקטי ישות (Mesh, Camera, Light), והיררכיית הטרנספורם נגישה במלואה לקריאה וכתיבה.

תכונות מרכזיות

  • קלט/פלט מרובה פורמטים: ייבוא וייצוא OBJ (עם .mtl חומרים), glTF 2.0 / GLB, STL (בינארי ו-ASCII), 3MF, ו‑COLLADA משני נתיבי קבצים ובזיכרון Buffer אובייקטים. תמיכת FBX עדיין לא מחוברת לזיהוי אוטומטי.
  • API של גרף סצנה: Scene, Node, Mesh, Camera, Light היררכיה עם ניהול מלא של הורה/ילד; מעבר על צמתים רקורסיבית דרך node.childNodes
  • מערכת חומרים PBR: חומרים Lambert, Phong, ו‑PBR (מתכת/חספוס) נגישים דרך node.entity.material
  • פעולות רשת: גישה לנתוני קודקוד גולמיים דרך mesh.controlPoints (מערך של Vector4), אינדקסי פוליגון דרך mesh.polygonCount, וערוצי רכיבי קודקוד דרך mesh.getElement()
  • כלי מתמטיקה: Vector2, Vector3, Vector4, Matrix4, Quaternion, וסוגי תיבות גבול לחישובים מרחביים
  • מערכת אנימציה: אנימציית keyframe עם AnimationClip, AnimationChannel, וקווי אינטרפולציה (linear, Bezier, TCB spline)
  • אפשרויות ספציפיות לפורמט: לכל פורמט LoadOptions / SaveOptions מחלקות שולטות בהפיכת קואורדינטות, קנה מידה, טעינת חומרים, ועוד

התחלה

התקנה מ‑npm. נדרש Node.js 18 או גרסה מאוחרת יותר; מומלץ TypeScript 5.0+.

npm install @aspose/3d

טען קובץ OBJ ובדוק את הסצנה:

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

ייצא ל‑glTF

שמור כל סצנה טעונה או שנבנתה ל‑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');

הספרייה מזהה אוטומטית את פורמט הפלט מהרחבת הקובץ. העבר GltfSaveOptions מופע לשליטה בהטמעת חומרים PBR, מרקמים, וקידוד בינארי מול JSON.

בניית סצנה

בנה סצנה באופן תכנותי וייצא אותה:

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

ראה גם