التَقنيات الرُسوميّة (جُزء 2) : المُضلّعات Polygons
(جُزء 2) : المُضلّعات Polygons: في هذه السلسلة سوف نتناول كل التقنيات الرسومية التي تستخدمها الألعاب ، سوف نشرح طريقة عملها والهدف من استخدامها ، بالاضافة الي تأثير تفعيلها علي أداء اللعبة ، الحلقات السابقة :التَقنيات الرُسومية (جزء 1): دقّة العرض Resolution ،ثانياً: المضلّعات Polygons ناقشنا في الحلقة الماضية مسألة دقة العرض والألوان، وعرفنا أن فائدة بطاقة الرسوميات هي حساب ألوان الصورة وعرضها علي الشاشة في شكل نقاط Pixels K،اليوم نتحدث عن وظيفة أخري لبطاقة الرسوميات ، وهي وظيفة تحريك الألوان علي الشاشة ، أو بمعني أدق نقلها من مكانها الي مكان جديد ، لتعطينا الايحاء بأن الصور تتحرك علي الشاشة .
يجب علي البطاقة نقل هذا المستطيل الي أسفل قليلا ،المستطيل في الصورة أعلاه يتكون من 2000 نقطة Pixel خضراء ، اذن يجب علي البطاقة نقل 2000 نقطة الي أسفل .
يجب علي البطاقة الرسومية أداء 2000 عملية حسابية لنقل المستطيل الأخضر الذي يتكون من 2000 نقطة الي أسفل ،من الواضح جدا أن هذا عدد كبير للغاية من العمليات الحسابية لنقل مستطيل تافه ، فما بالك بمئات المستطيلات ؟وبالوضع في عين الاعتبار حالة البطاقات الرسومية في بداية نشأتها ، حيث كانت ضعيفة للغاية مقارنة بالوقت الحالي ، نجد أننا في مشكلة عويصة حقا .
لكن لكل مشكلة حل بالطبع ، والحل الذي فكر فيه المطورون هو الاكتفاء بأداء الحسابات علي النقاط المكوّنة لاطار المستطيل (حوافه) ، ثم ملأ ما بين الحواف باللون الأخضر.
ستتعامل البطاقة الرسومية فقط مع حواف المستطيل .. والحواف فقط هنا تكوّن 600 نقطة ، وهو عدد اقل بثلاثة اضعاف من السابق !
بعد التحريك الي أسفل ، تبدأ عملية الملأ ،و ستقوم فيها البطاقة بملأ المساحة ما بين حواف المستطيل باللون الأخضر ،وفّرت البطاقة الرسومية هنا 1400 عملية حسابية، فهي تتعامل الآن مع 600 نقطة بدلا من 2000 ،لكن 600 نقطة لا يزال عدد كبير ، وطالما توصّلنا الي تطبيق مبدأ الملأ ، فانه يمكننا الآن التمادي في اختصار النقاط أكثر ، فبدلا من التعامل مع كل نقاط حواف المستطيل ، سنتعامل فقط مع النقاط الأساسية فيه ، وهي أركانه الأربعة .
ستتعامل البطاقة الآن مع أربعة نقاط فقط ، وهي النقاط المكونة لأركان المستطيل ، ثم تملأ ما بينها بالنقاط الخضراء.
عملية الملأ بين أركان المستطيل ،هنا تم توفير 1996 عملية حسابية ، والاكتفاء بأربع عمليات فقط علي أربعة نقاط ، ثم ملأ ما بين النقاط الأربع ،وقد يسأل سائل .. ألا تعتبر عملية الملأ جهدا حسابيا أيضا ؟
هذا صحيح .. لكنها جهد أقل بكثير من جهد النقل والتحريك .. فلو اعتبرنا مثلا أن جهد تحريك 2000 نقطة يساوي 2000 كجم حسابي، فان جهد تحريك 4 نقاط ، ثم ملأ ما بينهم يساوي 1000 كجم حسابي فقط ! ، وهو تخفيض للحمل الحسابي الي النصف ،اذن ما فعلناه هنا هو تقليل كمية الحسابات الي تقوم بها البطاقة الرسومية ، وبذلك نحصل علي أداء أعلي ، وكل هذا عن طريق تعديلات بسيطة في اسلوب المعالجة ، فبدلا من أن تتحكم البطاقة في كل نقاط الشكل ، ستتحكم فقط في النقاط المحوريّة فيه ،يطلق علي النقاط التي تتعامل معها البطاقة اسم نقاط التحكّم أو رؤوس التحكّم Vertices ، وذلك لأن البطاقة تستطيع التحكم في المستطيل من خلالها ، بنقله من مكانه الي مكان جديد ، أو حتي بتغيير شكله .
يمكن للبطاقة تغيير شكل المستطيل ، بحذف احدي نقاط التحكم تماما ، ليتحوّل الي مثلث !
فيما بعد احتاج المطورون الي المزيد من التحكم في الأشكال الرسومية ، وفرض هذا عليهم اضافة المزيد من نقاط التحكّم ، وذلك علي الرغم من محاولتهم تقليل عددها ، لكن العائد يستحقّ .
بدلا من أربعة ، ستتحكم البطاقة في تسعة نقاط (رؤوس) تحكم .
عملية الملأ ما بين الرؤوس لتكوين الحواف أولا.
عملية الملأ ما بين الحواف.
زيادة نقاط التحكم أعطت قدرة أكبر علي التحكم في الشكل ، فبحذف نقطة واحدة من التسعة ، يتحول المستطيل الي شكل أكثر تعقيدا !
حذف نقطتين يغيّر من شكل المستطيل أكثر و أكثر.
حذف ثلاثة نقاط يضيّع نصف المستطيل ، ويفيد هذا في المواقف التي يكون فيها نصف المستطيل محجوبا خلف شئ آخر.
زيادة عدد نقاط التحكم الي 14 نقطة ، يزيد من احتمالات التحكم في المستطيل ، وتغيير شكله الي أشكال جديدة ،وهنا يجد المطورون أنفسهم في حيرة ، فزيادة عدد نقاط التحكم ، يزيد من العمليات الحسابية التي يتوجّب علي البطاقة عملها وبالتالي يحتاج الي بطاقة أقوي ، لكنه في نفس الوقت يعطي مرونة أكبر في التحكم في الأشكال الرسومية ، وهذا مهم للغاية في الألعاب ،بغض النظر عن ذلك ، فان نظام نقاط(رؤوس) التحكم اصبح نظاما قياسيا شاملا ، فكل الرسوميات المولّدة عن طريق الحاسوب تستعمل هذا النظام ، سواء كانت ألعابا ، أو عروض احترافية سينمائية ،فحتّي عندما يرغب المطورون في رسم الأشكال ثلاثية الأبعاد فانهم يبدأون برسم نقاط التحكم أولا ، وعلي برامج التصميم ثلاثي الأبعاد التوصيل بين نقاط التحكم هذه .
منظر يدّ ثلاثية الأبعاد تحت التصميم (لونها رمادي) ، ويظهر في الخلفية صورتين ليد حقيقية من زاويتين مختلفتين ، يسترشد بهما المُصمّم أثناء رسم اليد بنقاط التحكم .
أصبحت كل رسوميات الحاسوب مكونة من نقاط تحكم أو مضلعات Polygons ، والمضلّع هو عبارة عن مجموعة من رؤوس التحكّم متّصلين ببعض ، وفي الصورة أعلاه ، فان كل مضلع هو عبارة عن أربعة رؤوس تحكم،أثناء عملية الرسم ، فان عدد نقاط التحكم يؤثر علي جودة الشكل النهائية ، وخصوصا في الأشكال ذات الخطوط المنُحنية .
شكل قوس دائري من خمسة نقاط تحكم ، وبالطبع يقوم الحاسوب بالتوصيل ما بين النقاط.
نفس القوس ، لكنه مصنوع من سبعة نقاط(رؤوس) تحكم هذه المرّة ، لاحظ كيف أنه أكثر استدارة من سلفه ذو الخمسة رؤوس ،اذن كلما زاد عدد رؤوس التحكم في الشكل المنحني كلما أصبح أكثر استدارة وتفصيلا ، لكن بالطبع فان زيادة عدد النقاط يؤدي الي زيادة كمية الحسابات التي يجب أن تحسبها البطاقة الرسومية ،تتيح الألعاب استخدام عدد متفاوت من نقاط(رؤوس) التحكم ، بحيث تُلائم أكبر عدد من البطاقات الرسومية ، الضعيف منها والقوي ،عادة ما تحوي الألعاب خيارات مثل Model Details ، أو Model Quality ، أو Object Quality ..الخ ، وكلّها خيارات لضبط عدد رؤوس التحكم للأشكال ثلاثية الأبعاد .. امّا بأقل عدد ممكن Low ، أو بعدد وسطيّ Medium ، أو بأقصي عدد متوافر High .
صورة لعجلة طائرة ، الي اليمين العجلة بأكبر عدد ممكن للرؤوس ، لذا تظهر كاملة الاستدارة ، والي اليسار العجلة بأقل عدد ممكن من الرؤوس ، لذا تظهر مدببة الزوايا
صورة لوجه بشري ، القسم الأعلي يوضّح الوجه بعدد مضلّعات/رؤوس كبير ويظهر الوجه مستديرا ومتناسقا، والقسم الأسفل يوضح الوجه بعدد رؤوس قليل ، ويظهر الوجه مدببا وأقل تناسقا .
صورة لشخصية من لعبة Team Fortress 2 ، الي اليمين الشخصية بعدد رؤوس كبير ، والي اليسار الشخصية بعدد رؤوس أقل، لاحظ الفارق،لن نحتاج لتكرار أنه بزيادة عدد الرؤوس فان العبأ الحسابي يكون أكبر علي البطاقة الرسومية ، وبالذات علي المعالج الرسومي GPU ، وكذلك الذاكرة الرسومية ، ذلك لأن كل رؤوس(نقاط) التحكم تخزّن في الذاكرة أولا .
اذا كانت بطاقتك الرسومية ضعيفة ، أو ذات ذاكرة بسعة تبادل بيانات متواضعة ، فانه من المفضّل أن تقوم بضبط اعدادت تفاصيل الرؤوس الي Low ، أو Medium ،في النهاية ،رأينا كيف تطوّر مفهوم الرؤوس من محاولة لتقليل العبا الحسابي أثناء تحريك الألوان ، الي اختصار في عدد النقاط التي تتعامل معها البطاقة الرسومية في كل شكل ، ثم الي وسيلة للتحكم في الشكل ثلاثي الأبعاد وتعديل شكله ، وفي النهاية الي طريقة رسم وبناء الأشكال ثلاثية الأبعاد من الصفر ..
الترصيع Tessellation :الترصيع هو أحد الخصائص الجديدة في DirectX11 ، وهو يؤدي وظيفة زيادة عدد رؤوس (نقاط) التحكم لأي شكل ثلاثي الأبعاد بطريقة تلقائية ، بحيث يحصل الشكل علي تفاصيل اكثر.
صورة لوجه بسيط.
بعد تطبيق الترصيع ازداد عدد مضلعات الوجه (رؤوس التحكم) ، وحصل الوجه علي تفاصيل أكثر ،بالطبع يضغط الترصيع بشكل أكبر علي البطاقة الرسومية ، بسبب عدد الرؤوس الكبير ، لكنه يوفّر في استهلاك الذاكرة ، لأن عملية زيادة عدد الروؤس تتم بعد قراءة الشكل الأصلي من الذاكرة .
بقلم:Hameedo