مقدمة
Aspose.3D FOSS لـ TypeScript (@aspose/3d) هو مكتبة تنسيق ملفات 3D مفتوحة المصدر، مرخصة MIT، لـ Node.js وبيئات المتصفح الحديثة. يمكن للمطورين الذين يبنون عارضات نماذج 3D، محولات الصيغ، أدوات معالجة الهندسة، أو خطوط أنابيب 3D من جانب الخادم تثبيتها باستخدام واحدة npm install @aspose/3d الأمر وتبدأ فورًا في تحميل، بناء، وتصدير المحتوى ثلاثي الأبعاد.
تدعم المكتبة صيغ التبادل الرئيسية — glTF 2.0 / GLB، STL، 3MF، وCOLLADA لكل من الاستيراد والتصدير، وOBJ للاستيراد فقط. توجد فئات مستورد/مُصدّر FBX لكنها لم تُربط بعد بآلية الكشف التلقائي عن الصيغ. واجهة برمجة تطبيقات رسم المشهد (scene graph) تعكس النموذج المألوف من أدوات التأليف ثلاثية الأبعاد: a Scene يحتوي على rootNode, كل Node يمكنه حمل عقد فرعية وكائنات كيان (Mesh, Camera, Light)، وتكون هرمية التحويل متاحة بالكامل للقراءة والكتابة.
الميزات الرئيسية
- إدخال/إخراج متعدد الصيغ: استيراد OBJ (مع
.mtlالمواد، استيراد فقط)، glTF 2.0 / GLB، STL (ثنائي وASCII)، 3MF، وCOLLADA من مسارات الملفات وكذلك من الذاكرةBufferالكائنات. يدعم glTF وSTL و3MF وCOLLADA أيضًا التصدير. دعم FBX لم يتم ربطه بعد مع الكشف التلقائي. - واجهة برمجة تطبيقات رسم المشهد:
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, وأنواع صندوق الحدود للحسابات المكانية - نظام الرسوم المتحركة: رسوم متحركة بإطارات رئيسية مع
AnimationClip,AnimationChannel, ومنحنيات الاستيفاء (خطية، بيزيه، 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');
المكتبة تكتشف تلقائيًا تنسيق الإخراج من امتداد الملف. مرّر a 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');