مثال لميزات الشبكة glTF
Contents
[
Hide
]
إنشاء ملفات 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 لتمثيل متقدم للبيانات ثلاثية الأبعاد.