מבוא

Aspose.3D FOSS עבור TypeScript (@aspose/3d) היא ספריית פורמט קבצים תלת-ממדית בקוד פתוח, ברישיון MIT, המתוכננת במידה רבה ל-Node.js. מפתחים הבונים מציגי מודלים תלת-ממדיים, ממירי פורמטים, כלים לעיבוד גיאומטריה, או קווי עבודה תלת-ממדיים בצד השרת, יכולים להתקין אותה באמצעות פקודה אחת (ראו את מדריך ההתקנה) ולהתחיל מיד בטעינה, בנייה וייצוא של תוכן תלת-ממדי. הספרייה משתמשת ב-require('fs') וב-Buffer מ-Node.js; שימוש בדפדפן דורש שימות מתאימים ל-APIs אלו ואינו נתמך רשמית.

הספרייה תומכת בפורמטים המרכזיים להחלפת נתונים — OBJ, glTF 2.0 / GLB, STL, 3MF, ו-COLLADA הן לייבוא והן ליצוא. קיימות מחלקות ייבוא/ייצוא ל-FBX אך עדיין לא משולבות בזיהוי אוטומטי של פורמט. API של גרף הסצנה משקף את המודל המוכר מכלי עריכת תלת-ממד: 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.material
  • פעולות רשת: גישה לנתוני קודקוד גולמיים דרך mesh.controlPoints (מערך של Vector4), אינדקסים של מצולעים דרך mesh.polygonCount, וערוצי רכיבי קודקוד דרך mesh.getElement()
  • כלי מתמטיקה: Vector2, Vector3, Vector4, Matrix4, Quaternion, וסוגי תיבות גבול לחישובים מרחביים
  • מערכת אנימציה: הנפשה של פריימים מרכזיים עם AnimationClip, AnimationChannel, ועקומות אינטרפולציה (linear, Bezier, TCB spline)
  • אפשרויות ספציפיות לפורמט: לכל פורמט LoadOptions / SaveOptions מחלקות שולטות על היפוך קואורדינטות, קנה מידה, טעינת חומרים, ועוד

התחלה

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

git clone https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-TypeScript.git
cd Aspose.3D-FOSS-for-TypeScript
npm install
npm run build

טען קובץ 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`);
    }
}

גרף סצנה API

כל סצנה היא עץ של Node שמושרש ב-scene.rootNode. בנה את ההיררכיה עם addChildNode(), חבר ישויות כגון Camera או Light לצומת דרך המאפיין entity, וקרא את הטרנספורם המקומי או במרחב העולם של כל צומת באמצעות transform ו-globalTransform.

import { Scene, Node, Camera, Light } from '@aspose/3d';

const scene = new Scene();

const cameraNode = new Node('MainCamera');
cameraNode.entity = new Camera('MainCamera');
scene.rootNode.addChildNode(cameraNode);

const lightNode = new Node('KeyLight');
lightNode.entity = new Light('KeyLight');
scene.rootNode.addChildNode(lightNode);

for (const child of scene.rootNode.childNodes) {
    console.log(`${child.name}: ${child.entity?.constructor.name}`);
}

כלי מתמטיקה

Vector3, Vector4, Matrix4 ו-Quaternion תומכים בכל פעולה גיאומטרית בספרייה. Vector3 ו-Vector4 חושפים רכיבי x/y/z(/w) בנוסף ל-length, dot(), ו-cross(); Matrix4 היא רשת 4×4 נגישה דרך m00–m33 עם transpose() ו-concatenate(); Quaternion מספקת normalize(), conjugate(), inverse() ו-dot() למתמטיקת סיבוב.

import { Vector3, Quaternion, Matrix4 } from '@aspose/3d/utilities';

const position = new Vector3(1.0, 2.0, 3.0);
const rotation = new Quaternion(1.0, 0.0, 0.0, 0.0);
const transform = new Matrix4();

console.log(`length=${position.length} determinant=${transform.determinant}`);
console.log(`rotation w=${rotation.w} x=${rotation.x} y=${rotation.y} z=${rotation.z}`);

ראה גם

משאבים קשורים