تقديم المقال الرابع في سلسلة أعمالنا حول العمل مع النماذج ثلاثية الأبعاد في الوحدة. المقالات السابقة: "ميزات العمل مع Mesh in Unity" ، و "Unity: التحرير الإجرائي لـ Mesh" ، و "استيراد النماذج ثلاثية الأبعاد إلى Unity و pitfalls" .في المقالة السابقة ، ذكرنا فحص فحص النسيج للتأكد من كفاية المسافة البادئة للبكسل بدقة وضوح معينة. في هذا المنشور ، نصف جوهر مشكلة مراقبة المسافة البادئة للبيكسل والخوارزمية لتتبعها. لن يتم اعتبار الكود ، ولكن على وجه التحديد هو المبدأ الذي يمكن تنفيذه بأي لغة وفي أي بيئة تطوير.

مشاكل
عادةً ما يكون طلب نموذج ثلاثي الأبعاد مصحوبًا بمتطلبات دقة الملمس. نظرًا للطبيعة المنفصلة للصورة النقطية ، يجب على الفنان ثلاثي الأبعاد أن يلاحظ المسافة البادئة بالبكسل بين أجزاء من المسح الضوئي للنسيج. يؤدي عدم وجود المسافة البادئة اللازمة إلى حقيقة أن يتم عرض بكسل نفسه على النموذج في أماكن مختلفة تمامًا عندما لا تكون هناك حاجة إليها.
من المهم بشكل خاص تتبع المسافة البادئة الكافية في المراحل المبكرة من العمل. في معظم الأحيان ، يشارك بعض الأشخاص في إنشاء هندسة ، بما في ذلك مسح الملمس ، والبعض الآخر يشارك في رسم القوام. الخطأ الذي اكتشفه الفنان ثلاثي الأبعاد سوف يسبب مشكلة أقل من الخطأ الذي سيجده مصمم النسيج. في الحالة الأخيرة ، يصبح الموقف أكثر تعقيدًا إذا لم توفر الحزمة ثلاثية الأبعاد المستخدمة أدوات للرسم على الشكل الهندسي (على سبيل المثال ، فرشاة).
يجب أيضًا أن تفكر في فروقتين دقيقتين ، نظرًا لأنهما قد يتطلبان مساحة أكبر بين عناصر المسح. الأول هو انخفاض في دقة الملمس أثناء mipmapping. والثاني هو استخدام
مرشح التمدد عند تشكيل
خريطة الإضاءة . أثناء مهمة إنشاء
الأشعة فوق البنفسجية ، يحتاج الفنان ثلاثي الأبعاد إلى الاسترشاد بمتطلبات دقة الملمس ، وكذلك مراعاة الفروق الدقيقة المذكورة أعلاه. ومع ذلك ، فإن العديد من أوجه القصور ببساطة لا يمكن ملاحظتها دون التحقق الآلي.
مثال على ظهور القطع الأثرية مع انخفاض في التفاصيلبالنسبة للطرز البسيطة ، يمكن إنشاء مسح ملمس باستخدام أدوات تلقائية. ومع ذلك ، فهي تستند إلى مقاييس داخلية ولا تأخذ المسافة البادئة للبكسل في الاعتبار ، لذلك غالبًا ما توجد البيكسلات المشتركة على طول الحدود القطرية. التحقق من قوام المدقق لا يُظهر جميع الأخطاء ، بالإضافة إلى ذلك ، غالبًا ما يكون لهذه القوام دقة أعلى من تلك التي سيتم استخدامها في المشروع.
بكسل المشتركةمشكلة عدم كفاية المسافة البادئة للبكسل في
الأشعة فوق البنفسجية تشبه مشكلة التراكبات. في كلتا الحالتين ، يمكن أن يحدث ما يسمى
النزيف - في
المقال السابق وصفنا ما هي الآثار التي يولدها هذا.
ومع ذلك ، فإن مشكلة المسافة البادئة للبكسل تعتمد على الحد الأدنى لمتطلبات دقة الملمس. الاختيار الفردي يكفي لتحديد التراكبات ، بينما قد تتغير متطلبات دقة الملمس في المرحلة التالية من التطوير. الموقف معقد بسبب حقيقة أن الحزم ثلاثية الأبعاد التي نستخدمها لا تحتوي على أدوات للكشف التلقائي عن الأخطاء المتعلقة بقرب أجزاء من
الأشعة فوق البنفسجية . ولا تنسَ أنه بعد تشغيل المشكل التلقائي في
Unity ، لا تزال بحاجة إلى فحص
UV2 .
قررنا إنشاء أداة يمكنها التحقق من المسافة البادئة بالبكسل ووضع علامة على أماكن الفجوات المحتملة في النموذج. سيتم تحديد متطلبات المسافة البادئة بناءً على المعلمات التالية:
- القرار الأساسي للنسيج.
- دقة الحد الأدنى من النسيج الذي لا يسمح فيه بالتدفق.
- المسافة البادئة المطلوبة على الحد الأدنى الملمس.
نظرًا لأن أحجام القوام المستخدمة من قبلنا تساوي صلاحيات اثنين ، فإن صيغة حساب المسافة البادئة اللازمة بدقة أساسية بسيطة للغاية: (القرار الأساسي / القرار الأدنى) * المسافة البادئة على MinTexture.
من الواضح أن حل هذه المشكلة يرتبط ارتباطًا وثيقًا بالتنقيط. للحصول على بيان أوضح للمتطلبات وتطوير خوارزمية ، نقدم العديد من المفاهيم.
المفاهيم الأساسية
النظر في مساحة
للأشعة فوق البنفسجية وشبكة موحدة من البعد NxM في حدود 0.0-1.0. الخلايا 1 / N واسعة و 1 / M عالية تشكل قسم من مساحة
الأشعة فوق البنفسجية .
NxM تقسيم مساحة الأشعة فوق البنفسجيةنحن نأخذ نقطتين تعسفيتين ونشير إلى DN كعدد البكسلات التي يشغلها الإسقاط على محور U للجزء الذي يربط النقاط المحددة. وبالمثل ، Dm للمحور V. ثم نحدد
مسافة البيكسل باعتبارها الحد الأقصى بين Dn و Dm.
مسافة بكسلتجدر الإشارة إلى أنه في الفضاء الإقليدي ، فإن عمليات الحركة مثل الترجمة والتناوب المتوازيين ليست حركات للشبكة ، إذا
تم أخذ
مسافة البكسل كمتري. هذه الفوارق الدقيقة تعقد تطوير حلنا قليلاً.

نسمي مربعًا ذو جانب بالبكسل K
نواة K. ثم يمكن تغطية أي نقطتين
بمسافة بكسل أقل من K بواسطة kernel K.
أمثلة على النوى بأحجام مختلفةيشكل
حافتا المضلع
تقعرًا للكفاف إذا كانت نقطة المنتصف (مركز الكتلة عند أربعة رؤوس) تقع على يسار هذه الحواف عند الالتفاف حول المحيط في اتجاه عقارب الساعة. بالنسبة لاجتياز اتجاه عقارب الساعة ، يكون الشرط هو العثور على نقطة على يمين الحواف.
زوج من الأضلاع التي تشكل تقعر المحيطقرار
الآن دعونا نتحدث مباشرة عن التحقق من المسافة البادئة بكسل. لتنفيذه ، توصلنا إلى خوارزمية تتكون من ثلاثة أجزاء مستقلة. ترتيب التنفيذ ليس مهما. ناتج كل جزء من الأجزاء هو مصفوفة NxM ، وهو مخزن مؤقت لخلايا القسم ، حيث يتم تسمية بعض الخلايا. إضافة المخازن المؤقتة الثلاثة هي النتيجة العامة.
أولا ، النظر في أبسط مقتطف. يتعلق الأمر بإيجاد خلايا تتقاطع بالقرب من المثلثات والحواف ، التي يكون طولها أقل من جانب نواة ذات حجم معين. يتم وضع علامة على كل هذه الخلايا في المخزن المؤقت.
نتيجة فحص أحجام العناصرقبل وصف الشظايا الأخرى ، فكر في المنطق العام لعملهم. كلاهما مرتبط بمعالجة مجموعات المثلثات التي تسمى
القذائف أو الجزر. Shell for a فنان ثلاثي الأبعاد عبارة عن مجموعة متصلة من المضلعات ، أي أن كل مضلع في هذه المجموعة له جارة تشترك معها في رؤوس مشتركة. أيضا قذيفة هي أرض تدريب مستقلة. علاوة على ذلك ، بالصدفة والجزيرة والكتلة نعني نفس الشيء.

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

مع الانتهاء من الجزء المشترك. الجزء الثاني ، الذي سننظر فيه ، يحدد مواقع الأخطاء المحتملة المرتبطة بقرب أو تداخل مجموعات مختلفة.
يتم تغذية العديد من المجموعات على المدخلات في شكل مجموعات من المثلثات في مساحة
الأشعة فوق البنفسجية ، والبعد من تقسيم
الأشعة فوق البنفسجية المقابلة لقرار الملمس (NxM) ، وقيمة المسافة البادئة P كعدد البكسلات. بالنسبة لقسم معين ، من الضروري إيجاد تلك المناطق التي تكون فيها المسافة بالبكسل بين الكتل أقل من المسافة البادئة المطلوبة. يتم وضع علامة على خلية في مصفوفة النتائج إذا دخلت على الأقل
قلبًا واحدًا
من القيمة K = P + 1 ، والذي يتقاطع بين مجموعتين مختلفتين.
يتم تعيين جوهر الجزء تقريبًا في وصف النتيجة. من الضروري العثور على كل
حبيبات الحجم K التي تتقاطع مع مثلثات من أصداف مختلفة ، ثم قم بتمييز خلايا هذه النوى في المخزن المؤقت الناتج.
في تنفيذنا ، يتم النظر في جميع أزواج المجموعات. لكل زوج ، يتم تحديد منطقة التقاطع لمجموعات
حبات K ذات الحجم K التي تغطيها هذه المجموعات. اختر زوجًا وأدل على مجموعة مثل Q.

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

المخزن المؤقت مع خلايا ملحوظ لجميع أزواج من مجموعات يشكل النتيجة.
نتيجة المسافة البادئة للكتلةالآن سنتعامل مع الجزء الأخير. هنا تحتاج إلى معالجة كتلة واحدة. المدخلات عبارة عن مجموعة من المثلثات في مساحة
الأشعة فوق البنفسجية ، والبعد الخاص بقسم
الأشعة فوق البنفسجية المقابلة لقرار النسيج (NxM) ، وقيمة المسافة البادئة P كعدد البكسلات. يمكن تمييز الخلية في حالتين: إما أن الكتلة غير صالحة أو بها ثقوب ، أو تكون المسافة بالبكسل بين حواف التقعر أقل من المسافة البادئة المطلوبة.
لا يهمنا الجزء الداخلي من المجموعة - في البداية ، سنعرض كفافها من خلال قائمة متصلة من الحواف. تقوم المثلثات المجاورة بتكرار مؤشرات الرؤوس ، وبالتالي فإن الحافة تنتمي إلى المحيط إذا كان زوج من مؤشرات رؤوسها فريدًا لمجموعة حواف الكتلة. بعد معرفة الحواف التي تشكل المحيط ، من الضروري تكوينها بحيث يتم الحصول على قائمة مرتبطة.
إذا لم تدخل كل حواف الكفاف بعد هذه الخطوة في القائمة ، فإن المجموعة إما بها ثقوب ، أو يوجد خطأ في بيانات الشبكة. في هذه الحالة ، من الضروري وضع علامة مناسبة على جميع خلايا النواة التي تتقاطع مع الكتلة.
إذا تم العثور على المحيط ، فستستمر المعالجة. قمنا بصياغة متطلبات النتيجة التالية. دع زوج الحواف التي تشكل
تقعر المحيط يتقاطع مع
K = P + 1 . ثم يجب تمييز خلايا النواة إذا تجاوز كلا أجزاء الكفاف بين الحواف هذه النواة.
نتيجة اختبار ميزة الكتلةقررنا تنفيذ هذا المطلب من خلال المقارنة الزوجية لحواف المحيط. نبدأ بشرط التقعر ، ثم يتم فحص كل نواة تتقاطع مع كل حواف لكل زوج. لاختبار النواة ، يتم إجراء تقاطعات لكل جزء من الكفاف بين زوج من الحواف. إذا كان كل جزء يحتوي على نقطة واحدة على الأقل خارج حدود النواة ، فسيتم تمييز كل خلايا النواة.
الحالة التي يتم بموجبها وضع علامة على خلايا النواة المحددةالنتائج
الخوارزمية أعلاه مناسبة للغاية للتنفيذ باستخدام الحوسبة المتوازية. تتم معالجة كل زوج من المجموعات والحواف بشكل مستقل. نظرًا لأن عمليات التحقق تستند إلى التنقيط ، إذا بدأت المعالجة ليس مع أزواج من الحواف ، ولكن مع نوى ، فمن المستحسن استخدام إمكانات
وحدة معالجة الرسومات .
نقوم بتحويل نتيجة الخوارزمية إلى نسيج. للحصول على دقة معينة ، يتيح لك ذلك عرض أماكن العيوب المحتملة في فحص
الأشعة فوق البنفسجية . أيضا ، يمكن تطبيق الملمس الناتج على النموذج لرؤية علامات مباشرة على الهندسة.
في الأمثلة أدناه ، قمنا بشكل خاص بقص الأرنب وسوزان باستخدام أداة
Blender التلقائية حتى نحصل على المزيد من الأعمال الفنية. دقة الملمس المحددة هي 256 × 256 ، المسافة البادئة المطلوبة هي 1.
الخلايا التي تم وضع علامة عليها في مجموعات غطاء زرقاء مع ثقوب ، وكذلك مثلثات وحواف صغيرة جدًا. الأخضر يشير إلى نواة الخلية مع خصائص كل كتلة على حدة. يتم وضع علامة باللون الأحمر على النواة التي لا يتم فيها ملاحظة المسافة البادئة بين المجموعات.
في المقالة التالية ، سننظر في خوارزمية لتحسين النماذج ثلاثية الأبعاد في مشهد ما عن طريق إزالة الهندسة غير المرئية. ابق معنا