تكلّمنا في المرّة السابقة عن مفهوم الاكساء ، وكيف أنه مجرّد تلوين للأجسام ثلاثية الأبعاد ، ثم التلاعب بتلك الألوان للايحاء وجود تفاصيل زائدة Kعرفنا أيضا أن البطاقة الرسومية تقوم بتصغير وتكبير صورة الاكساء بحسب بٌعد الجسم ثلاثي الأبعاد ، فاذا كان الجسم بعيدا ، فانه يظهر بحجم صغير ، لهذا يتم تصغير اكساؤه ، أمّا اذا كان قريبا جدا ، فانه يظهر بحجم كبير.
لذا يتم تكبير اكساؤه Kاليوم نتعرف علي وجه جديد من وجوه وظيفة بطاقة الرسوميات ، وهو وجه الغباء الفطري Native Stupidity ، وتحديدا الغباء الفطري في عملية تصغير الكساءات.
تعالوا معا ننظر الي هذه الصورة :
صورة اكساء بدقة 10X10 ، ويظهر فيها ثلاثة حروف افرنجية : L و F و N .
سنحتاج الي تصغير هذه الصورة ، الي دقة 10x5 ، وسنعتبر أنها اكساء يحتاج الي التصغير،بداية ستقوم البطاقة الرسومية بحذف نقاط من الصورة ، وهي النقاط الملونة باللون الأبيض .
تم حذف النقاط و تجميع عناصر الصورة معا ،ما الذي حدث ؟ تشوّهت الصورة تماما ، ولم يعد ظاهرا فيها سوي حرف L ، واختفت ملامح الحروف الأخري الي حد أنها لم تعد قابلة للتمييز بعد الآن،سبب ذلك هو عدم قدرة البطاقة الرسومية علي تمييز الأجزاء المهمة من الصورة ، فهي تحذف بآلية كاملة ، دون أن تضع في اعتبارها هل عملية الحذف هذه ستؤثر علي تفاصيل الصورة أم لا ، فهي لا تفهم أصلا محتوي الصورة ، وكل ما تراه البطاقة الغبية هو بعض النقاط اللونية جميلة الشكل ،بالطبع لا يجب السماح بحدوث هذه الظاهرة ، والا تشوّهت صور الكساءات كلما ابتعدنا عنها !
صورة لكساء أرضية ، انظر الي أفق الصورة البعيد ، ستلاحظ وجود ألوان مختفية و فواصل بين الألوان ، والسبب بالطبع هو غباء البطاقة الرسوميّة ،والأسوأ من كل هذا ، ما يحدث عندما يغير اللاعب من مسافته بالنسبة الي الكساء ، فبفرض لبتعاده عن الاكساء أكثر ، فان دقة الاكساء تقل أكثر ، وبالتالي تتغير تفاصيله ، وعندما يقترب منه أكثر فان دقة الاكساء تزيد ، وبالتالي تزيد تفاصيله ، وتكرار الاقتراب والابتعاد عن الاكساء بسرعة يجعل تفاصليه تظهر وتختفي بسرعة ، ويعطي شكل الاكساء طابعا من الاهتزاز والاضطراب ، وكأن تفاصيله تومض وتُظلم بسرعة Flicker .
ابتعاد اللاعب عن الاكساء ، يقلل دقته ، فيصبح في 10x4 ، وتفاصيل الاكساء تقلّ أكثر (اختفي حرف L تماما) .
اقتراب اللاعب من الاكساء يزيد دقته ، فتصبح 10x6 ، وهنا يستعيد الاكساء جزءا من تفاصيله المفقودة (ظهور حرف L وحرف F ) .
نسخ مختلفة من صورة الاكساء ، من اليمين الي اليسار 4x10 و 5x10 و 6X10 ، العرض السريع لهذه الصور مختلفة الدقة (كما في حالة ابتعاد اللاعب واقترابه بسرعة) ، يعطي تأثير الاهتزاز والاضطراب علي الاكساء .
ظاهرة الاهتزاز الكسائية .. وهي شائعة للغاية في الألعاب ،ولا يقتصر الأمر علي ذلك فقط ، فقد تتسبب ظاهرة الحذف في ظهور تعرجات في الصورة لم تكن موجودة من قبل ، وذلك بسبب تداخل عناصر الصورة بشكل غير طبيعي ،والحل ؟ لا يوجد حل تقني للأسف .. فلا يمكن تطوير طريقة لتفهم بها البطاقة الرسومية الأجزاء المهمة من الصورة لتتجنّب حذفها ، لأن الصور تختلف وتتنوع في ألوانها وتفاصيلها بشدة ، مما يضمن استحالة وجود طريقة شاملة تصلح للتطبيق علي الجميع .
الحل سيكون هنا بالطريقة التقليدية اليدوية ، وهو أن يقوم المصمم بعمل نسخ مختلفة الدقّة من الصورة الأصلية ، فاذا كانت دقة الصورة 512x512 مثلا ، يقوم المصمم بعمل نسخة من هذه الصورة بدقة 256x256 ، ونسخة أخري بدقة 128x128 ، وأخري بدقة 64x64 ، وأخري بدقة 32x32 ، وأخري بدقة 16x16 ..الخ ويستخدام هذه النسخ بدلا من عملية التصغير ، فاذا أرادت البطاقة اكساءا صغيرا ، استخدمت نسخة 16x16 ، واذا أرادت اكساءا متوسطا ، استخدمت نسخة 64x64 وهكذا .
نسخ مختلفة الدقة من نفس الاكساء .. وتُسمّي هذه النسخ المصغرة باسم MIP-Maps ،هكذا تم التغلب علي غباء البطاقة الرسومية ، فتلك النسخ المُصغّرة ستحتوي علي تفاصيل الصورة الكاملة لكن بحجم أصغر ، وعندما تستخدمها البطاقة الرسومية لا يحدث فقد في التفاصيل ولا يحدث اهتزاز واضطراب للصورة ،لكن ماذا اذا احتاجت البطاقة الي حجم معيّن ، غير موجود في هذه النسخ المصغرة ؟ ، مثلا 50x50 ؟الحل هنا يتمثّل في استخدام اقرب نسخة مصغرة (32x32)، ثم تطبيق عملية التوسيع(التكبير) Stretch عليها بحيث تصبح بدقة 50x50 .
بالطبع نعرف جميعا عيوب عملية التوسيع ، من زيادة في التعرّجات و تشوّه في الصورة بسبب استخدام الألوان الوسطيّة ، لكن تأثير هذه العيوب يكون خفيفا هنا ، لأن الدقة الجديدة (50X50) قريبة نوعا من دقّة الصورة الأصلية (32x32)،لكن حتي هذا الحل لا يصلح في جميع الحالات والظروف ، حيث يعيبه عدم قدرته علي عرض الأسطح الممتدة بشكل جيّد .
والأسطح الممتدة هي الأشكال التي تمتد في الأفق ، مثل أرضية ممر ممتد ، أو أرضية صحراء أو شارع ممتد ..الخ ،أرضية ممر ، والجزء القريب من اللاعب دقته عالية (عدد نقاطه أعلي) ، والأجزاء البعيدة دقتها قليلة ، الي درجة أن تفاصيل ألوان الأرضية تكاد تختفي تماما ،عند عرض هذه الأسطح ، يأخذ الجزء القريب من اللاعب فيها أقصي دقّة للاكساء (مثلا 512x512)، لكن الجزء البعيد يأخذ دقة أقل (مثلا 128x128) ، والجزء الأبعد يأخذ دقة أقل وأقل (مثلا 64x64) ،والجزء البعيد جدا يأخذ دقة قليلة للغاية (مثلا 16X16 ) ،المشكلة في الحاجة الي استخدام دقات وسطيّة علي طول امتداد هذه الأسطح ، (مثلا 70x70 ) ، وهذه تأخذ أقرب دقة متاحة لها وهي 64x64 ، وتتعرض لعملية توسيع ، مما يجعل من شكل هذه الاكساءات باهتا ومموها الي حد ما .
وتكون هناك دقات شاذة أيضا ، مثلا 150x70، وهذه تأخذ أيضا أقرب دقة متاحة لها ، وهي 64x64 ، لأن الـ64 أقرب الي الـ70 ، ماذا عن الـ150 اذن ؟ لا يمكن استعمال دقة 128x128 معها ، لأن الـ 128 أكبر من الـ70 ، وهذه العملية تتطلب توافقا كاملا بين قيمتي الدقة ، لذا فلا مفر من استخدام نسخة 64x64 مع الـ150 و سيحدث فيها تشوه أكبر بالطبع لأن المصدر دقته 64 فقط ، أي أقل من نصف الـ150،ومما يزيد الطين بلّة هو أن نسبة حدوث الدقات الشاذة (مثل 150X70 )أكبر بكثير من الدقات الوسطيّة (مثل 70X70) ، لأن الأسطح الممتدة تكون واسعة القاعدة ، وضيقة القمة ، أي ذات شكل هرمي تقريبا ،ومحصلة كل هذا هو زيادة تشوّه الصورة كلما ايتعدنا عن الدقة الكبيرة (ابتعدنا عن اللاعب) ،الأسوأ أن هذه الاكساءات ذات الدقات المختلفة تتراص مع بعضها تباعا في حالة الأسطح الممتدة، وهنا يظهر فارق الوضوح والدقة بينها وبين بعضها ، ولا يكون المنظر جميلا أبدا .
في الصورة أرضية ممتدة مرصوفة بالحجارة ، والأرضية مجرّد صورة اكساء ، ويظهر فيها فروق الوضوح في التفاصيل كلما ازداد البعد ، حيث تتشوه الكساءات نتيجة عملية التوسيع .
يمكنك تمييز الفارق بين كل نسخة اكساء MIP-Map ، وهو الخط الفاصل بين درجات وضوح التفاصيل ، فالجزء الأسفل من الصورة (الأقرب للاعب) يظهر واضحا ، بينما الجزء الأعلي يظهر مموّها وغير واضح المعالم .
مثال آخر علي أرضية مختلفة ويظهر بوضوح الخطوط التي تفصل بين منطقتين اكسائيتين ،يعيب تلك الخطوط أنها تزحف باستمرار أمام اللاعب ، فعندما يتحرّك اللاعب -سواء بالابتعاد أو الاقتراب- فانه يغيّر من دقة الكساءات التي أمامه باستمرار ، وهذا التغيير المستمرّ يصاحبه انتقال لهذه الخطوط ، لأنها تفصل بين كل دقة ودقة ، لذا تظهر وكأنها تزحف أو تتحرك مع حركة اللاعب ، وتلك الحركة غير طبيعية ، وتفسد علي اللاعب متعة مشاهدة الرسوميات الفائقة ،للتغلب علي هذه الخطوط الفاصلة ، يجب عمل عملية دمج للألوان علي جانبي هذه الخطوط ، والدمج هنا يكون بعملية تكوين ألوان وسطية بين المنطقتين ، بحيث يختفي الخط الفاصل هذا تماما ، وهي عملية مماثلة لعمليّة ممانعة التعرّج Anti-Aliasing ، ويطلق عليها هنا اسم Tri-linear Filtering ، أو الترشيح الثلاثي ، لأنها تتضمّن ثلاثة عمليات لتكوين الألوان الوسطيّة ، عملية علي النقطة الملاصقة للخط الفاصل في المنطقة الأولي ، وعملية ثانية علي النقطة في المنطقة الثانية ، ثم عملية ثالثة بين نتيجتي العمليتين الأولتين ، للخروج بلون النقطة علي الخط الفاصل بين المنطقتين ،فائدة الألوان الوسطيّة هنا هي اضافة تأثير التدرّج علي الألوان بين المنطقتين ، بهدف القضاء علي تلك الخطوط الفاصلة ، والتي تنشأ كما ذكرنا بسبب اختلاف الدقة بين منطقتين اكسائيتين ،حيث تمتلك احدي المنطقتين ألوانا أقوي من الأخري ، وهذا يعطي مظهر الخطوط الفاصلة الزاحفة .
الفارق بين تفعيل الترشيح الثلاثي وعدم تفعليه يظهر واضحا هنا ، الي اليمين لاتوجد فواصل واضحة بين المناطق الاكسائية مختلفة الدقة ، أما علي اليسار فما تزال الخطوط واضحة .مثال آخر ، الي اليمين لاتوجد فواصل واضحة بين المناطق الاكسائية مختلة الدقة ، أما علي اليسار فما تزال الخطوط واضحة
مثال جديد ، الي اليمين لا توجد خطوط فاصلة ، لكن علي اليسار توجد ،لكن القضاء علي مشكلة الخطوط الفاصلة هو أقل مشاكلنا ، فلا يزال أمر اختفاء وضوح التفاصيل مع بعد المسافة قائما ، وهو لعمري أدهي وأمرّ ،ولقد وضحنا سبب هذه الظاهرة بالفعل ، فكلما زادت المسافة ، استعملت البطاقة الرسومية اكساءا ذي دقة قليلة (16x16 مثلا) ،ثم قامت بتوسيعه الي دقّة شاذة مثل 50x25 باستخدام الألوان الوسطيّة (مع ما صاحب هذا من تشوهات في الصورة ) ومع تشغيل اللعبة علي دقة شاشة كبيرة ، (مثلا 1920x1080 ) ، نجد أن الاكساء يتشوّه أكثر نتيجة تطبيق عملية التوسيع للمرة الثانية عليه ، ويتغيّر منظره تماما .
اكساء أصلي بدقة 20x20 ، والي جواره نسخة مصغّرة منه بدقة 10x10 ،نريد الآن تشغيل هذا الاكساء بدقة 20x10 ، وهذه هي دقة شاذة .
تكبير الاكساء المصغّر من دقة 10x10 الي دقة 20x10 (دقة شاذة)، لاحظ الألوان الوسطية القبيحة التي نشأت .
تكبير الصورة يعني أن تضيف البطاقة الرسوميّة نقاطا زائدة عليها ، وهنا تتم اضافة نقطة واحدة بين كل نقطتين ، واذا كان لون النقطتين غير متماثلا ، فان النقطة الزائدة بينهما تأخذ لونا وسطيا بين لونيهما ، وفي هذا المثال نجد أن اللون الوسطي بين اللون الأخضر والأصفر ، هو الأخضر الباهت .. ومن هنا ينشأ التشويه (راجع الجزء الأول )،لحلّ هذه العقبة الأخيرة ، ابتكر المطورون مرشّحا جديدا ، سمّوه المُرشّح غير الاعتيادي Anisotropic Filtering ، ومُهمّة هذا المرشح غير تقليدية وشاقة بالفعل ،ففي مثالنا الأخير ، نحتاج لتكبير صورة من دقة 10x10 الي دقة 20x10 ، أي ينقصنا 10 نقاط في البعد العرضي .
في طريقة التكبير التقليدية ، تمّ تعويض هذه النقاط بألوان وسطيّة ، لكن هذا المرشّح غير تقليدي ، فهو يقوم بتحليل الكساء الصغير ذو دقة 10x10 ، وتحليل الكساء الكبير ذو دقة 20x20 ، وتحليل الألوان الوسطيّة بينهما للوصول لأفضل الحلول اللونية الممكنة لتعويض النقاط الناقصة ،بل يتمادي المرشّح في عمله الي درجة فحص 128 نقطة لونية من أجل تعويض نقطة واحدة فقط ،والنتيجة هي دقة غير عادية في تكبير الصور ، دون وجود فقد في التفاصيل ، مع تقليل التشوّهات الي الحد الأدني.
الذين يشاهدون الموضوع الآن: 1 (0 من الأعضاء و 1 زائر)
مواقع النشر (المفضلة)