مثال لميزات الشبكة glTF

إنشاء ملفات glTF مع EXT_mesh_features

يوضح هذا المثال كيفية إنشاء ملف glTF مع ملحق EXT_mesh_features باستخدام واجهة برمجة تطبيقات Aspose.3D.

شرح الكود

ينشئ الكود C# التالي شبكة مع نقاط تحكم ومضلعات، ثم يضيف معرفات الميزات إلى نقاط التحكم قبل حفظها في ملف glTF:

// سيقوم هذا المثال بإنشاء ملف glTF مع EXT_mesh_features
// أولاً نقوم بإنشاء شبكة
var mesh = new Mesh();

// إضافة نقاط تحكم (رؤوس) إلى الشبكة
// ينشئ المجموعة الأولى من أربع نقاط مربعًا في المستوى XY عند y=1
mesh.ControlPoints.Add(new Vector4(0, 1, 0));  // النقطة 0
mesh.ControlPoints.Add(new Vector4(2, 1, 0));  // النقطة 1
mesh.ControlPoints.Add(new Vector4(2, 2, 0));  // النقطة 2
mesh.ControlPoints.Add(new Vector4(1, 2, 0));  // النقطة 3

// تنشئ المجموعة الثانية من أربع نقاط مربعًا آخر في المستوى XY عند y=0
mesh.ControlPoints.Add(new Vector4(3, 0, 0));  // النقطة 4
mesh.ControlPoints.Add(new Vector4(4, 0, 0));  // النقطة 5
mesh.ControlPoints.Add(new Vector4(4, 1, 0));  // النقطة 6
mesh.ControlPoints.Add(new Vector4(3, 1, 0));  // النقطة 7

// إنشاء أوجه مثلثية (مضلعات) من نقاط التحكم
// يتم تقسيم المربع الأول (النقاط 0-3) إلى مثلثين
mesh.CreatePolygon(0, 1, 2);  // المثلث 0-1-2
mesh.CreatePolygon(0, 2, 3);  // المثلث 0-2-3

// يتم تقسيم المربع الثاني (النقاط 4-7) أيضًا إلى مثلثين
mesh.CreatePolygon(4, 5, 6);  // المثلث 4-5-6
mesh.CreatePolygon(4, 6, 7);  // المثلث 4-6-7

// ثم نقوم بإنشاء عنصر بيانات مستخدم لتخزين معرفات الميزات
// سيقوم هذا بربط معرفات الميزات بنقاط التحكم
var featureId = (VertexElementUserData)mesh.CreateElement(
    VertexElementType.UserData,  // نوع العنصر
    MappingMode.ControlPoint,   // تطبيق على نقاط التحكم
    ReferenceMode.Direct        // تعيين مباشر (غير مفهرس)
);

// تعيين معرفات الميزات لكل نقطة تحكم
// تحصل النقاط الأربع الأولى على المعرف 0، وتحصل النقاط الأربع التالية على المعرف 1
featureId.Data = new float[] { 0, 0, 0, 0, 1, 1, 1, 1 };

// تعيين الاسم الخاص الذي يتوافق مع مواصفات EXT_mesh_features
// يتم التعرف على التنسيق _FEATURE_ID_<n> بواسطة مصدر glTF
featureId.Name = "_FEATURE_ID_0";

// حفظ الشبكة في ملف glTF ثنائي (GLB)
// سيتولى المصدر إنشاء بيانات ملحق EXT_mesh_features تلقائيًا
// باستخدام مسار نسبي لملف الإخراج
(new Scene(mesh)).Save("mesh_feature.glb");

المفاهيم الرئيسية

إنشاء شبكة

  • يمثل Mesh فئة هندسة شبكة مضلعية
  • تحدد نقاط التحكم رؤوس الشبكة
  • تنشئ طريقة CreatePolygon أوجهًا مثلثية بين نقاط التحكم

معرفات الميزات

  • تسمح معرفات الميزات بتجميع الهندسة داخل شبكة
  • يتم تنفيذها من خلال VertexElementUserData باتفاقية تسمية خاصة
  • يشير _FEATURE_ID_0 إلى أنه تيار لمعرفات الميزات
  • يمكن إنشاء عدة تيارات لمعرفات الميزات بفهارس متزايدة

تعيين البيانات

  • يتم تخزين معرفات الميزات كقيم عائمة
  • تحصل كل نقطة تحكم على قيمة معرف ميزة مقابلة
  • في هذا المثال، نستخدم معرفي ميزة متميزين: 0 و 1

تصدير الملف

  • يؤدي الحفظ بتنسيق GLB إلى الحفاظ على جميع الميزات بما في ذلك EXT_mesh_features
  • تتعامل Aspose.3D تلقائيًا مع إنشاء الملحق
  • يحتوي الملف الناتج على بيانات وصفية حول ميزات الشبكة
  • يجعل استخدام المسارات النسبية الكود أكثر قابلية للنقل وأسهل في التشغيل في بيئات مختلفة

يوضح هذا المثال كيفية استخدام Aspose.3D لإنشاء ملفات glTF التي تستخدم ملحق EXT_mesh_features لتمثيل متقدم للبيانات ثلاثية الأبعاد.