מבוא
Aspose.3D FOSS עבור TypeScript (@aspose/3d) הוא ספרייה קוד פתוח, ברישיון MIT, של פורמט קבצים תלת‑ממדיים עבור Node.js וסביבות דפדפן מודרניות. מפתחים הבונים מציגי מודלים תלת‑ממדיים, ממירי פורמטים, כלי עיבוד גאומטריה, או צינורות תלת‑ממדיים בצד השרת יכולים להתקין אותה עם פקודה אחת npm install @aspose/3d והם יכולים מיד להתחיל לטעון, לבנות ולייצא תוכן תלת‑ממד.
הספרייה תומכת בפורמטים המרכזיים להחלפה — glTF 2.0 / GLB, STL, 3MF, ו‑COLLADA הן לייבוא והן לייצוא, ו‑OBJ לייבוא בלבד. קיימות מחלקות ייבוא/ייצוא של FBX אך הן עדיין לא משולבות בזיהוי אוטומטי של פורמט. ממשק ה‑API של גרף הסצנה משקף את המודל המוכר מכלי עריכת תלת‑ממד: a Scene מחזיק ב‑ rootNode, כל Node יכול לשאת צמתים ילדים ואובייקטי ישות (Mesh, Camera, Light), והיררכיית הטרנספורם נגישה במלואה לקריאה וכתיבה.
תכונות מרכזיות
- קלט/פלט מרובה פורמטים: ייבא OBJ (עם
.mtlחומרים, ייבוא בלבד), glTF 2.0 / GLB, STL (בינארי ו-ASCII), 3MF, ו‑COLLADA משני נתיבי הקבצים ובזיכרוןBufferאובייקטים. glTF, STL, 3MF, ו‑COLLADA תומכים גם ביצוא. תמיכת FBX עדיין לא מחוברת לזיהוי אוטומטי. - API של גרף סצנה:
Scene,Node,Mesh,Camera,Lightהיררכיה עם ניהול מלא של הורה/ילד; מעבר על צמתים רקורסיבית דרךnode.childNodes - מערכת חומרים PBR: חומרים Lambert, Phong, ו‑PBR (מתכת/חספוס) נגישים דרך
node.entity.material - פעולות Mesh: גישה לנתוני קודקוד גולמיים דרך
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');