مقدمة

Aspose.3D FOSS لـ TypeScript (@aspose/3d) هو مكتبة تنسيق ملفات 3D مفتوح المصدر، مرخص برخصة MIT، لـ Node.js وبيئات المتصفحات الحديثة. يمكن للمطورين الذين يبنون عارضات نماذج 3D، محولات الصيغ، أدوات معالجة الهندسة، أو خطوط أنابيب 3D من جانب الخادم تثبيتها باستخدام واحدة npm install @aspose/3d الأمر ويبدأ فورًا في تحميل، بناء، وتصدير المحتوى ثلاثي الأبعاد.

تدعم المكتبة صيغ التبادل الرئيسية — OBJ، glTF 2.0 / GLB، STL، 3MF، وCOLLADA لكل من الاستيراد والتصدير. توجد فئات مستورد/مُصدّر FBX لكنها لم تُربط بعد بآلية الكشف التلقائي عن الصيغ. API scene graph يعكس النموذج المألوف من أدوات التأليف ثلاثية الأبعاد: 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: الوصول إلى بيانات الرؤوس الخام عبر 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');

انظر أيضًا