تقسيم شبكة دمج

يمكنك تقسيم كل شبكات مشهد ثلاثي الأبعاد إلى عدة شبكات فرعية. وبالمثل ، يمكنك دمج شبكات متعددة في شبكة واحدة برمجيًا باستخدام C#. تتناول هذه المقالة تقسيم ودمج الشبكات ثلاثية الأبعاد في سيناريوهات مختلفة:

3D Scene Meshes Splitter or Merger - تثبيت C# API

Aspose.3D for .NET يمكن استخدام API لتقسيم أو دمج شبكات ثلاثية الأبعاد برمجيًا باستخدام C#. يمكنك تكوين API بتثبيته من قسم التنزيلات ، أو باستخدام أمر التثبيت NuGet أدناه:

PM> Install-Package Aspose.3D

انقسام شبكات مشهد لكل مادة برمجيًا باستخدام C#

يمكن أن يحتوي ملف ثلاثي الأبعاد مثل تنسيق FBX على عدة شبكات للمشهد. يمكنك تقسيم كل الشبكات إلى عدة شبكات فرعية لكل مادة إذا لم يتم تخصيص مادة واحدة للشبكة. يرجى اتباع الخطوات أدناه لتقسيم شبكات مشهد لكل مادة:

  1. تحميل ملف إدخال ثلاثي الأبعاد.
  2. قسّم جميع الشبكات باستخدام طريقة SplitMesh.
  3. حفظ ملف الإخراج مع الشبكات المقسمة.

يوضح الكود التالي كيفية تقسيم شبكات مشهد لكل مادة برمجيًا باستخدام C#:

// تحميل ملف الإدخال FBX 3D
Scene scene = new Scene("test.fbx");

// تقسيم جميع الشبكات
PolygonModifier.SplitMesh(scene, SplitMeshPolicy.CloneData);

// حفظ ملف الإخراج مع شبكات مقسمة
scene.Save("test-splitted.fbx", FileFormat.FBX7500ASCII);

تقسيم شبكة من مادة معينة برمجيًا باستخدام C#

يمكنك فصل شبكة عن طريق تحديد المادة يدويًا. بهذه الطريقة ، يمكنك إنشاء عدة كائنات تحتوي على مادة واحدة فقط. لأغراض العرض التوضيحي ، يُنشئ الكود أدناه شبكة من صندوق به 6 مستويات. ثم ستقوم بفصل شبكة بدائية عن طريق تحديد المادة يدويًا باستخدام الخطوات التالية:

  1. قم بإنشاء شبكة من الصندوق بست مستويات.
  2. ثانيًا ، قم بإنشاء عنصر مادي وحدد الفهارس لكل مستوى.
  3. قم بتقسيم الشبكة باستخدام تعداد SplitMeshPolicy.

يشرح الكود أدناه كيفية تقسيم شبكة بواسطة مادة معينة برمجيًا باستخدام C#:

// قم بإنشاء شبكة من الصندوق (يتكون الصندوق من 6 مستويات)
Mesh box = (new Box()).ToMesh();

// قم بإنشاء عنصر مادي على هذه الشبكة
VertexElementMaterial mat = (VertexElementMaterial)box.CreateElement(VertexElementType.Material, MappingMode.Polygon, ReferenceMode.Index);

// وتحديد فهرس مادة مختلف لكل طائرة
mat.Indices.AddRange(new int[] { 0, 1, 2, 3, 4, 5 });

// الآن قسمناها إلى 6 شبكات فرعية ، وحددنا 6 مواد مختلفة على كل مستوى ، وستصبح كل طائرة شبكة فرعية.
// استخدمنا سياسة CloneData ، سيكون لكل مستوى نفس معلومات نقطة التحكم أو معلومات عنصر الرأس المستندة إلى نقطة التحكم.
Mesh[] planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CloneData);

mat.Indices.Clear();
mat.Indices.AddRange(new int[] { 0, 0, 0, 1, 1, 1 });

// الآن قم بتقسيمها إلى شبكتين فرعيتين ، ستحتوي الشبكة الأولى على 0/1/2 مستويات ، وستحتوي الشبكة الثانية على المستويات 3/4 / 5th.
// استخدمنا سياسة CompactData ، سيكون لكل مستوى معلومات نقطة التحكم الخاصة به أو معلومات عنصر الرأس المستندة إلى نقطة التحكم.
planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CompactData);

دمج الشبكات في ملف ثلاثي الأبعاد في شبكة واحدة برمجيًا في C#

يمكنك دمج شبكات مختلفة في شبكة واحدة صالحة باتباع الخطوات التالية:

  1. قم بتحميل ملف مشهد ثلاثي الأبعاد.
  2. دمج جميع الشبكات.
  3. أخيرًا ، قم بترميز الشبكة المدمجة.

يوضح الكود التالي كيفية دمج الشبكات في شبكة واحدة برمجيًا باستخدام C#:

// قم بتحميل مشهد الإدخال ثلاثي الأبعاد
Scene scene = new Scene("LAD-TOP.rvm");

// دمج جميع الشبكات
Mesh mesh = PolygonModifier.MergeMesh(scene);

// قم بتشفير هذه الشبكة في تنسيق PLY
FileFormat.PLY.Encode(mesh, "LAD-TOP.ply");

احصل على رخصة مؤقتة مجانية

يمكنك الحصول على رخصة تقييم مجانية لاختبار API دون أي قيود.

استنتاج

في الختام ، لقد تعلمت كيفية دمج أو تقسيم شبكة من مشهد ثلاثي الأبعاد. تعرض واجهة برمجة التطبيقات طرقًا مختلفة لتقسيم أو دمج شبكة واحدة أو عدة شبكات ، والتي يمكنك استخدامها وفقًا لمتطلباتك. علاوة على ذلك ، لا تتردد في زيارة الوثائق حيث يتم أيضًا شرح العديد من الميزات الأخرى. يرجى الاتصال بنا على منتدى الدعم المجاني في حالة وجود أي استفسارات.

أنظر أيضا