مقدمة إلى رسوم الحاسب
المعلوماتية >>>> عام
بعبارة أخرى وباختصار هي عملية اصطناع الصور (مثلما يوضح الرسم التخطيطي في الأسفل).
Image: http://www.cs.sfu.ca/~torsten/Teaching/Cmpt361/LectureNotes/PDF/01_intro.pdf
لرسوم الحاسب تطبيقات منوعة في مجالات عدة، ومن أبرزها: مجال صناعة الأفلام والمؤثرات البصرية، ألعاب الفيديو، الرسوم المتحركة، التصوير التشخيصي الطبي (Medical Imaging)، التصوير العلمي (Scientific Visualization)، عمليات المحاكاة (Simulations)، التصميم بمساعدة الكمبيوتر (Computer-Aided Design) وواجهات المستخدم الرسومية (Graphical User Interfaces)، وغيرها الكثير.
[01]
يتفق معظم المتمرسين في هذا المجال على تقسيمه إلى ثلاثة أقسام رئيسية وهي: النمذجة (modeling)، الرندرة (rendering) والتحريك (animation).
[04] دعونا نأخذ أولا فكرة مجملة عن كل منها في الفقرة التالية:
•ترتكز الرسومات الحوسبية على نماذج ضمنية للمشاهد التي نراها (models)، وهي عبارة عن تمثيلات رياضية ثلاثية الأبعاد لشكل وخصائص المشهد المطلوب والتي تخضع للمعالجة من قبل الحاسب. مثلا، يمكن نمذجة كأس قهوة بمجموعة من النقاط المتموضعة في فضاء ثلاثي الأبعاد، مع إضافة بعض قواعد الاستيفاء1 للربط بين النقاط، ونموذج انعاكسي يصف تفاعل الضوء مع الكأس.[04][02]
•ثم يتم إسقاط هذا التمثيل الثلاثي الأبعاد على فضاء ثنائي الأبعاد من منظور معين للحصول على الصورة النهائية، هذه العملية تعرف بالرندرة (rendering).
إذأً تتضمن الرندرة عمليات الإسقاط، والتعامل مع قابلية الرؤية (أي المناطق التي تكون مخفية عن النظر)، والعمليات المتعلقة بمعالجة المظهر النهائي للشكل وتفاعله مع الضوء. [02]
•وأخيرا، التحريك (animation)، وهو تقنية تقوم بخداع البصر لتصديق وجود حركة من خلال عرض سلسلة متتالية من الصور، وهنا يتم استعمال التقنيتين آنفتي الذكر (النمذجة والرندرة) مع إضافة عامل التوقيت. [04]
والآن، سنتحدث عن الوحدة الأساسية لقياس الصور وهي البيكسل:
تتألف صور الحاسوب من شبكة متمايزة من البيكسلات، ويعبر عن دقة الصورة بعدد البيكسلات الموجودة فيها، حيث تتراوح الدقة النموذجية للصور بين 320x300 إلى 2000x2500 بكسل. [02]
لمعرفة المزيد عن تمثيل الصور داخل الحاسب اقرأ مقالنا حول هذا الموضوع:
هنا
بما أن تمثيل الصورة يتم بمجموعة غير مترابطة من البكسلات، يزيد ذلك من احتمال حصول التعرجات (aliasing). فمن بين أشهر أشكال التعرجات هي الصور النقطية (raster graphics) كما هو موضح في الصورة أدناه، ولهذا تستعمل تقنيات لتحسين الحواف. مثلا في حالة الخط الأسود في الصورة، يتم إضافة درجات متوسطة من اللون الرمادي لتنعيم مظهر الخط.[02]
Image: people.csail.mit.edu/fredo/Depiction/1_Introduction/reviewGraphics.pdf
يمكن ملاحظة شكل آخر من التعرجات على شاشات التلفاز عندما يظهر شخص يرتدي ملابس مقلمة، فيظهر عليه ما يشبه الوميض الخفيف أو الذبذبة، وذلك لأن حجم نمط الخطوط والبكسلات على نفس الدرجة.[02]
تحدثنا في بداية المقال عن أن الصور تتم نمذجتها في الحاسب إلى أشكال رياضية، ويعبر عنها في ذاكرة الحاسوب بحسب درجة تعقيد المشهد، فأبسط الأشكال هي الوحدات الأولية (primitive entities)، والتي تتضمن الأشكال الهندسية التقليدية التي نعرفها، كـالمكعب، والأسطوانة، والكرة والمخروط...فمثلا للتعبير عن شكل الكرة يكفي فقط معرفة إحداثيات مركزها وقيمة نصف قطرها.
ثم تأتي المضلعات (polygons) في المرتبة الثانية، والتي تعتبر أحد أبرز الأساليب الكلاسيكية المتبعة في نمذجة الأشكال في فضاءات ثلاثية الأبعاد. يمثل الجسم تقريبياً بشبكة من المضلعات المترابطة (كما في الصورة في الأسفل، مثلت صورة الثور بشبكة من المثلثات كلّ منها معرف بإحداثيات في معلم ثلاثي الأبعاد). وفي الغالب يتم اختيار المثلثات لبساطتها وسهولة رسمها. [02]
Image: people.csail.mit.edu/fredo/Depiction/1_Introduction/reviewGraphics.pdf
وأخيرا المنحنيات (curves) والسطوح الملساء (patches) من أجل تمثيل السطوح والأشكال المعقدة، ومن بين الأمثلة: سطح بيزييه (Bézier surface)، وتمثيلات NURBS، والتي هي عبارة عن دوال رياضية تعرف بـ Spline.
[02]
Image: courses.cs.washington.edu/courses/cse458/04au/Help/Maya%206.0%20Guide/Complete/NURBS.pdf
دوال Spline تصف بأسلوب رياضي أشكال الانحناءات، ويرجع تاريخ التسمية إللى حقبة صناعة السفن قبل تواجد علم رسوم الحاسب، عندما بحث مهندسو السفن عن طرق لتصميم انحناءات سلسة للسفن انطلاقاً من مجموعة من النقاط.
جاء الحل بوضع أثقال معدنية على نقط التحكم بالشكل، ثم تمرير صفيحة معدنية رقيقة أو حزمة خشبية (سميت Spline) على طول هذه الأثقال. (كما توضح الصورة في الأسفل) [05]
Image: http://courses.cs.washington.edu/courses/cse458/04au/Help/Maya%206.0%20Guide/Complete/NURBS.pdf
التعامل مع هذا النوع من التمثيلات صعب وذلك لأنك لا تتحكم مباشرة في مظهر السطوح إلا من خلال نقط موزعة على الجسم تعرف بنقط التحكم، والتي تتحكم بطريقة غير مباشرة بالشكل النهائي.[02]
الآن وقد تطرقنا لعملية نمذجة الصور، ننتقل إلى آلية رندرتها والتعرف على أهم التقنيات المستخدمة.
ذكرنا أن الصورة المسقطة لأي شكل ثلاثي الأبعاد على فضاء ثنائي الأبعاد تنتج عن معالجات حاسوبية باستعمال قواعد الرسم المنظوري. بمعرفة موقع الناظر وبعض من خصائص الكاميرا (كمجال الرؤية مثلا)، يصبح من السهل استخراج إسقاط الكائن ثلاثي الأبعاد على مساحة ثنائية الأبعاد.
بالنسبة للوحدات الهندسية الأولية، يتم في الغالب تنقيطها (rasterization)، أي ملء المساحات التي يشغلها الجسم في المساحة ثنائية الأبعاد. مثلا في المثال التالي، إسقاطات النقط الحمراء الثلاث تمت حوسبتها باستعمال قواعد التناظر الخطي، ثم تنقيط الشكل النهائي بتلوين البكسلات في الداخل بالأسود.[02]
Image: http://people.csail.mit.edu/fredo/Depiction/1_Introduction/reviewGraphics.pdf
بالنسبة لوضوح الصورة، إذا كان المشهد يحوي أكثر من جسم، فيمكن لأحدهما أن يحجب الآخر (occlusion)، هنا يتم تمثيل الأجسام الظاهرة فقط، وهذا هو مبدأ تقنية الإيضاح (visibility technique). من بين أبرز الخوارزميات التي تحل مشاكل الرؤية، خوارزمية الرسام (painter's algorithm) والتي تقضي بترتيب الأشياء أو المضلعات في المشهد من الخلف إلى الأمام، ومن ثم تنقيطهم وفق هذا الترتيب، بهذه الطريقة، تحجب الأجسام التي تأتي في المقدمة الأجسام التي تكون في الخلف (كما في الشكل).
Image: http://people.csail.mit.edu/fredo/Depiction/1_Introduction/reviewGraphics.pdf
***********
أما خوارزمية ray-tracing أو "تتبع أثر الشعاع"، فهي لا تحوي مرحلة تنقيط، فبدل ذلك ترسل شعاعاً ينطلق من عين الناظر إلى كل بكسل في الصورة، ثم تقوم بحساب تقاطع هذا الشعاع مع الأشكال الموجودة في المشهد، وتأخذ في الاعتبار الإحداثيات الأقرب فقط.
Image: http://people.csail.mit.edu/fredo/Depiction/1_Introduction/reviewGraphics.pdf
************
أما خوارزمية "صوان العمق" (z-buffer) فهي الأكثر استخداماً في الوقت الراهن، (في كروت الشاشة لجهاز الحاسب مثلاً)، حيث تقوم بتخزين عمق (z) كل بكسل، وعندما يتم تنقيط مضلع جديد، تقوم الخوارزمية بمقارنة عمق المضلع مع عمق كل بكسل من الصورة، إذا كان للمضلع قيمة قريبة من البكسل، يستبدل لون وعمق البكسل بالجديد.[02]
بعد هذا يأتي عنصر مهم أيضاً وهو التظليل؛ كلما تعددت مصادر الضوء جرت عملية الرندرة بشكل أفضل، فتظلل الأجسام وفقا لتفاعلها مع الضوء، وقد اقترحت العديد من نماذج التظليل التي تصف كيفية انعكاس الضوء عن الأجسام بالاعتماد على درجة ميلان السطح، أي زاويتي توضع مصدر الضوء والناظر.[02]
وأخيراً، محاكاة الظلال والنور؛ هذه العملية ليست سهلة، فعلى عكس التظليل الذي لا يأخذ بعين الاعتبار سوى التفاعل المحلي بين الجسم والضوء، محاكاة الظلال أكثر تعقيداً لأنها تتطلب تفاعلات على مسافات بعيدة. ينتج الظل عندما يعترض جسم ما مسار الضوء، ففي الإمكان محاكاة الظلال باستعمال خوارزمية ray-tracing مثلاً، لكنها ستكون مكلفة، لأنها ستتطلب إنتاج الظل لكل بكسل ولكل مصدر صورة؛ هنا يرسل شعاع ظل من عين الناظر إلى مصدر الضوء، وإذا تقاطع مع جسم ما، سيتشكل ظل نتيجة هذا التقاطع.
بهذا نكون عرضنا أهم المفاهيم المستعملة في علوم رسوم الحاسب. إن هذا المجال واسع جداً ويصعب حصره في مقال واحد، فإذا كنت مهتماً بهذا المجال ننصحك بقراءة كتاب: Fundamentals of Computer Graphics لـ Peter Shirley.
-------------
الفهرس:
الاستيفاء (Interpolation): هو مصطلح رياضي، يعنى به إيجاد أو تقدير قيمة دالة رياضية انطلاقاً من عدد من القيم المعلومة للدالة.
-------------------------------------------------
المصادر:
[01] Introduction to CG:
هنا
[02] A Short Introduction to Computer Graphics - MIT Laboratory for CS
هنا
[03] Introduction to Computer Graphics - Torsten Möller
هنا
[04] Fundamentals of Computer Graphics - Peter Shirley et al.
[05] NURBS Modeling
هنا