مقدمة
Aspose.3D FOSS لـ TypeScript (@aspose/3d) هو مكتبة تنسيق ملفات ثلاثية الأبعاد مفتوحة المصدر، مرخصة تحت MIT، صممت أساسًا لـ Node.js. يمكن للمطورين الذين يبنون عارضات نماذج ثلاثية الأبعاد، محولات الصيغ، أدوات معالجة الهندسة، أو خطوط أنابيب ثلاثية الأبعاد من جانب الخادم تثبيتها بأمر واحد فقط (انظر دليل التثبيت) والبدء فورًا في تحميل، إنشاء، وتصدير المحتوى ثلاثي الأبعاد. تستخدم المكتبة require('fs') و Buffer من Node.js؛ يتطلب الاستخدام في المتصفح شيمات مناسبة لتلك الواجهات البرمجية ولا يُدعم رسميًا.
تدعم المكتبة صيغ التبادل الرئيسية — 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, ومنحنيات الاستيفاء (خطية، 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}`);