في معظم أنظمة التصميم (CAD) ، يكون التمثيل الرئيسي للكائن المحاكاة هو تمثيل الحدود للهندسة أو B-rep (تمثيل الحدود). لكن على نحو متزايد ، يتعين على مستخدمي CAD التعامل مع نماذج المضلعات ، على سبيل المثال ، التي تم الحصول عليها نتيجة المسح ثلاثي الأبعاد أو المقترضة من الفهارس عبر الإنترنت.
لجعلها مناسبة لمزيد من العمل ، تحتاج إلى تحويل شبكة المضلع إلى طراز B-rep. وهذا ليس بالأمر السهل على الإطلاق.
قمنا بتطوير مكون البرنامج C3D B-Shaper ، والذي تم دمجه في نظام التصميم ويحول النماذج المضلعة إلى تمثيل حدود. في هذا المنشور سوف نعرض خوارزمية التحويل وأمثلة التنفيذ في C ++.

ما هي المشكلة الرئيسية لنماذج المضلعات من حيث CAD؟ لا يمكن تطبيق الأدوات التقليدية عليها - لأداء عمليات منطقية ، لإنشاء غرف وشرائح ، للحصول على إسقاطات وأقسام. إذا كان استخدام نموذج B-rep لبناء تمثيل مضلع له أمر سهل للغاية (يتم ذلك باستخدام التثليث) ، فإن التحول العكسي يكون أكثر صعوبة. ينشأ عدد من المشكلات - التعرف على الأسطح بأنواعها المختلفة (بما في ذلك الأسطح ذات الشكل الحر) ، وجود الضوضاء ، والتي تتميز ، على سبيل المثال ، بنتائج المسح ثلاثي الأبعاد.
في SDK الجديد ، قمنا بتطبيق آلية من ثلاث مراحل لتحويل النموذج المضلع إلى B-rep: تجزئة ، إعادة بناء السطح ، بناء نموذج B-rep. بشكل عام ، يُفترض أن تكون العملية تكرارية: إذا كان المستخدم غير راض عن النتيجة لسبب ما ، فيمكنه إجراء التغييرات التصحيحية اللازمة في مراحل تجزئة وإعادة بناء الأسطح.
مخطط تحويل تمثيل مضلع إلى حدقبل الشروع في عملية التحويل إلى B-rep ، من الضروري ، في بعض الحالات ، تحسين جودة الشبكة المضلعة الأصلية: تنسيق اتجاهات القواعد الطبيعية في المضلعات المجاورة ، والقضاء على "الثقوب" ، وتطبيق خوارزميات التجانس في وجود ضوضاء في الشبكة الأصلية.
تجزئة المضلع
في المرحلة الأولى ، يتم تصنيف المجموعة الأولية من المضلعات الشبكية إلى مجموعات فرعية (شرائح). تتيح معلومات حول الأوضاع الطبيعية في رؤوس الشبكة تجزئة من الدرجة الأولى ، وبالتالي تضمن التقسيم الأولي للشبكة ، وكذلك تصنيف المناطق المسطحة أو المنحنية بقوة.
ويستند الربط الأولي إلى تعريف ما يسمى الحواف "الحادة" - مثل هذه الحواف بين مضلعين مثلثيين تتجاوز زاويتهما بين القيم الطبيعية المتوسطة قيمة محددة مسبقًا.
يحلل تجزئة الدرجة الثانية الشبكة وفقًا لانحناءاتها الرئيسية ، والتي توفر أساسًا كافيًا لتصنيف الأسطح الأولية. عند حساب الانحناءات في رؤوس الشبكة ، استخدمنا نتائج ماير (مارك ماير ، ماثيو ديسبرون ، بيتر شرودر ، وألان إتش. بار ، مشغلي الهندسة التفاضلية المنفصلة للثلاثي المنوعين ، التصور والرياضيات III ، 2003) عامل التشغيل للمناطق المثلثة: لكل قمة من الشبكة الأصلية ، نعتبر مجموعة من القمم المجاورة المرتبطة برأس معطى من خلال حافة. بعد ذلك ،
يتم حساب المشغل المنفصل
K لرأس معطى ، بناءً على تحديد متوسط انحناء المتوسط العادي
K H و Gaussian
K G في رأس الشبكة.
على تعريف المشغل التفاضلي المنفصل للمجالات المثلثةوبالتالي ، يتم احتساب موتر الانحناء لكل قمة من الشبكة ، وتكون قيمها الذاتية هي الانحناء الرئيسي المرغوب فيه
K 1 و
K 2 ، وتكون الموجهات الذاتية هي الاتجاهات الرئيسية لتغيير الانحناء.
بعد ذلك ، يتم تصنيف رؤوس الشبكة وفقًا لقيم الانحناءات الرئيسية
K 1 و
K 2 المحسوبة فيها. تعتمد خوارزمية تصنيف قمة الرأس على طريقة k- ، أي على تقليل الانحراف التربيعي الكلي لنقاط الكتلة من مراكز هذه المجموعات. نتيجة لذلك ، عند إخراج الخوارزمية ، يرتبط كل رأس من الشبكة بمجموعة معينة
وزوج من الانحناءات (مركز الكتلة) (L. Guillaume ، "انحناء شبكة المثلث القائم على التنسور مع تصحيح الحدود" ، Proceedings Computer Graphics International (CGI) ، 2004).
تصنيف القمم لشبكة متعددة الأضلاع في فضاء الانحناءاتبعد تصنيف رؤوس الشبكة المضلعة ، من الضروري تصنيف المضلعات. في بداية هذا الإجراء ، يتم اختيار مضلع مثلثي يمكن اعتبار الانحناء محددًا بالكامل (تنتمي كل الرؤوس الثلاثة إلى مجموعة واحدة أو رأسان يقعان على حافة حادة). تم إعلان هذا المضلع قطعة جديدة ، والإجراء العودية لتوسيع الجزء يبدأ منه: لكل مضلع مثلثي ، تعتبر المضلعات المجاورة لها ، شريطة ألا تكون الحافة بينهما "حادة".
إذا كان رأس مضلع مجاور ، مقابل الحافة المشتركة ، يقع على حافة حادة أو ينتمي إلى نفس الكتلة ، فسيتم إضافة هذا المضلع إلى القطعة. تتكرر العملية حتى يتم عرض جميع المضلعات في هذه الشبكة. إليك ما تبدو عليه آلية تجزئة الشبكات المنفذة.
آلية تجزئة شبكة المضلعفي نهاية إجراء تشكيل المقاطع ، يتم تنفيذ خوارزمية خاصة لخياطة الأجزاء المجاورة للقضاء على الانقسام المفرط للشبكة المعنية.
التعرف على السطح
في المرحلة الثانية ، يجب أن يرتبط كل جزء بسطح معين يقارب شكله بدقة معينة. أولاً وقبل كل شيء ، تحدد قيم الانحناءات الرئيسية لشريحة معينة إمكانية وصف شكل قطعة بسطح أولي:
- المستوى: ك 1 = ك 2 = 0
- كرة: k 1 = k 2 = K > 0
- أسطوانة: ك 1 = ك > 0 ، ك 2 = 0
- مخروط: ك 1 ∈ [ أ ، ب ] ، ك 2 = 0
- torus: k 1 = K ، k 2 ∈ [ a ، b ]
إذا لم يكن أي من الأسطح الأولية مناسبًا لوصف قطعة ، ستحاول الخوارزمية التعرف على سطح البثق أو الدوران. في النهاية ، إذا لم يكن من الممكن تحديد سطح تحليلي لوصف شكل القطعة ، فسيتم بناء سطح NURBS له.
يتم بناء الأسطح الأولية باستخدام طرق لتركيب كائنات هندسية بسيطة في مجموعة من النقاط. لذلك ، لتناسب الدائرة والكرة ، يتم استخدام طريقة المربعات الصغرى ، لتناسب المستوى - طريقة المكون الرئيسي. يتم فحص كل سطح أعيد بناؤه للتأكد من توافقه مع قطعة للتأكد من دقة معينة.
من أجل الوضوح ، قمنا برسم الأسطح المعترف بها بألوان مختلفة: الطائرات - الأزرق ، الأسطوانات - الأحمر ، المجالات - الأخضر ، المخاريط - الأصفر ، توري - الأرجواني.
شبكة المضلع الأصلية (يسار) والشبكة المقسمة (يمين) مع الأسطح المعترف بها على المقاطعبناء نموذج B- مندوب
المرحلة الأخيرة من التحول هي بناء نموذج B-rep على أساس تجزئة الأسطح المعترف بها. في هذا النهج ، يتم إنشاء رسم بياني للمناطق المجاورة على أساس المناطق المجزأة ، مما يعكس طوبولوجيا النموذج ويعمل كأساس لبناء نموذج B-rep النهائي.
بخلاف المراحل السابقة للتحويل ، يتم تنفيذ مجموعة B-rep في وضع تلقائي تمامًا: تم العثور على خطوط التقاطع للأسطح المجاورة التي أعيد بناؤها ، وحواف الوجوه مبنية عليها ، والوجوه نفسها ، وأخيراً ، يتم تجميع غلاف B-rep.

شبكة المضلع الأصلية (يسار) ونموذج B-rep (يمين)ومع ذلك ، ليس من الممكن دائمًا إنشاء قشرة طوبولوجية صحيحة. وكمثال على مثل هذا الموقف ، افترض أنه أثناء إعادة بناء الأسطح لدينا سطحان - أسطوانة وطائرة ، وموقعهما في الفضاء قريب من الظل. نظرًا لوجود أخطاء في إعادة بناء أسطح تقاطعها ، فقد لا يكون هناك أي شيء على الإطلاق. في مثل هذه الحالات ، قد يتم إنشاء القشرة ببعض العيوب التي يمكن للمستخدم إصلاحها عن طريق ضبط معلمات السطح بشكل صحيح.
أنواع نماذج المضلعات واختيار طريقة التحويل
اليوم ، هناك عدة مصادر رئيسية للنماذج في التمثيل المضلّع:
- كتالوجات عبر الإنترنت ، وقواعد بيانات النماذج ثلاثية الأبعاد بتنسيق المضلع (STL ، VRML ، OBJ) ، على سبيل المثال معرض النماذج ثلاثية الأبعاد ، Cults 3D ، إلخ.
- نتائج المسح 3D
- نتائج تحسين النموذج الطوبولوجي بواسطة خوارزميات CAE.
يمكن تقسيم النماذج متعددة الأضلاع من هذه المصادر إلى مجموعتين: الأولى تتضمن نماذج مثلثات كائنات B-rep ، والثانية - كل الأنواع الأخرى. الاختلافات المميزة للمجموعة الأولى هي عدم وجود ضوضاء في الشبكة المضلعة وهيمنة الأسطح المعرفة تحليليا. وبالتالي ، سيتم التحويل إلى نماذج B-rep من المجموعة الأولى إما في الوضع التلقائي الكامل أو مع تدخل المستخدم الحد الأدنى.
الشبكات المضلعة لنماذج المجموعة الثانية تنطوي على تفاعل تفاعلي كثيف مع المستخدم. لذلك ، في البداية وضعنا وضعين للتشغيل في C3D B-Shaper - تلقائية وتفاعلية بالكامل.
يعتمد اختيار وضع معين أيضًا على الغرض من هذا التحول: في بعض الحالات ، يمكن إهمال الاتصال الطوبولوجي لعناصر الغلاف الناتج ، وكذلك صحته. هذا النهج مقبول ، على سبيل المثال ، لتحسين العرض في تطبيق BIM ، عندما يمكن للمستخدم إضافة عناصر داخلية تعسفية إلى النموذج الحالي للغرفة. من ناحية أخرى ، بالنسبة للمهام الهندسية العكسية ، من الضروري الحصول على نسخة أدق من النموذج الأصلي ، على سبيل المثال ، للحفاظ على محاذاة الأسطوانات بدقة معينة ، لضمان الموقع المماثل لزوج من الأسطح ، ونتيجة لذلك ، لا يمكنك الاستغناء عن الطوبولوجيا الصحيحة للنموذج - في هذه الحالة ، لا يمكنك الاستغناء عن طوبولوجيا المستخدم في عملية التحويل.
يتم تمثيل واجهة التحويل التلقائي C3D B-Shaper بالوظائف التالية ، والتي تقبل شبكة الإدخال وإعدادات التحويل كمدخلات:
MbResultType ConvertMeshToShell( MbMesh & mesh, MbFaceShell *& shell, const MbMeshProcessorValues & params ); MbResultType ConvertCollectionToShell( MbCollection & collection, MbFaceShell *& shell, const MbMeshProcessorValues & params );
تتضمن إعدادات التحويل قيمة دقة التعرف ، أي الحد الأقصى للمسافة المسموح بها لرؤوس الشبكة المضلعة داخل حدود هذا الجزء إلى السطح المعترف به. يمكن أن تكون هذه الدقة مطلقة أو نسبية: عند استخدام الدقة النسبية ، يتم التحقق من انحراف وجوه الجسم عن الشبكة مقارنة بحجم النموذج.
أيضًا ، لدى المستخدم خيار تبديل أوضاع التعرف ، والذي يتيح لك التحكم في أنواع الأسطح أثناء إعادة الإعمار.
يتم توفير إمكانات متقدمة لإدارة عمليات التجزئة والتعرف على السطح من خلال واجهة الفئة MbMeshProcessor:
class MbMeshProcessor { .. public:
على سبيل المثال ، لتصحيح نتائج التقسيم التلقائي ، يتم توفير أدوات للجمع بين القطاعات ، وفصلها ، إلخ. يمكن للمستخدم إدخال سطح من نوع معين في مقطع ما ، وكذلك تغيير المعلمات لسطح معترف به بالفعل.
ما يحدث الآن
في شهر يوليو ، أصدرنا الإصدار الأول من المكون ونواصل تطويره الآن في عدة مجالات: خوارزميات تجزئة تلقائية ، وأدوات تحرير تجزئة ، وبناء أسطح خالية من الأشكال (NURBS) استنادًا إلى مقطع ما ، وتحسين جودة تصميم أصداء B-rep.
يمكن للمطورين المهتمين اختبار C3D B-Shaper. يتم توفير المكون مجانًا لمدة ثلاثة أشهر عند
الطلب على موقعنا.

المؤلف - أندريه تومانين ، دكتوراه ، عالم رياضيات - مبرمج في مختبرات C3D