إكساء (برمجيات)

في مجال رسوميات الحاسوب، الإكساء (بالإنجليزية: texture) هو أسلوب لإضافة تفاصيل على سطوح المجسمات الفراغية. هذه التفاصيل عادة تنتج قيم لونية ذات كثافة وتردد أعلى مما يمكن تضمينه في تعريف المجسم الأساسي. من أكثر استخدامات الإكساءات شيوعاً فرد صورة مسطحة على سطح مجسم ما، ليبدو وكأنه مكسيّ (أو مغلف) بهذه الصورة (انظر الشكل المجاور). مبتدع هذه الطريقة هو إدوين كاتمول في بحثه المقدم لرسالة الدكتوراه[1] ومن ثم شركات اهتمت بتوليد الصور لعمليات المماثلة كإيفانز وساذرلاند. الترجمة الحرفية للمصطلح الإنجليزي هي نسيج، وهي تقترب من وصف النتيجة الفعلية، حيث يمكن افتراض أن إكساء مجسم بصورة ما يظهر «نسيج» مادة هذا المجسم.

إكساء رأس شخصية ثلاثية الأبعاد بصورة مسطحة في برنامج سوفت إيماج إكس إس آي. الصورة تلتف حول الرأس لتعطي الوجه ملامح لا يمكن إظهارها بشكل مجسم (جيومتري).

توصيف السطوح عدل

 
الصورة المسطحة على اليسار تم استخدامها لإكساء المثلث الفراغي على اليمين. يظهر من الصورة كيفية تحول الإحداثيات المسطحة إلى رؤوس المثلث المعرفة بإحداثيات فراغية.

تحتاج الإكساءات إلى توصيف واضح لتظهر بشكل صحيح على السطوح المعنية (بالإنجليزية: texture mapping). هذا التوصيف هو توصيف رياضي يربط بين نظام إحداثيات السطح ونظام إحداثيات الإكساء. كمثال، لدينا مثلث في الفراغ. ونريد تطبيق إكساء مسطح (صورة) على هذا المثلث. نريد مثلاً أن يطابق الضلع العلوي من المثلث الضلع العلوي من الصورة. والضلعان الجانبيان يطابقان الضلعين الجانبيين في الصورة. عندها ستكون النتيجة كما في الشكل المجاور. للتعميم، إذا قلنا أن المثلث معرف بإحداثيات فراغية س، ص،ع (x,y,z) والصورة معرفة بإحداثيات مسطحة و، ز (u,v) فعملية توصيف السطح عندها تصبح عبارة عن تابعين رياضيين يأخذان المعاملات س، ص،ع ويعطي أحدهما القيمة و والآخر القيمة ز الموافقة لهذه الإحداثيات الفراغية. من أكثر طرق التوصيف شيوعاً في برامج التصميم هي طريقة التوصيف الصريح (بالإنجليزية: explicit UV mapping) والتي تتطلب من المستخدم ربط رؤوس المضلعات بقيم UV مقابلة لها. لإظهار المضلع المكسيّ، يقوم محرك الرسم بعملية استيفاء رياضي داخلي ضمن مساحة المضلع لحساب الـ UV الصحيح بالنسبة للـ UVs المعرفة عند رؤوس المضلع، ومن ثم جلب التكسل المقابل لهذا الإحداثي (UV) من الصورة واستخدامها كقيمة لونية في تلك المنطقة من المضلع.[2]

من أنواع التوصيف الشائعة أيضاً التوصيف الضمني (بالإنجليزية: implicit UV mapping)، وهو توصيف قادم من تعريف المجسم الأصلي، كما هو الحال مع سطوح نيربز NURBS، أو مع أي مجسمات أخرى معرفة بتوابع رياضية معينة. هذا النوع من التوصيف تلقائي ولا يحتاج إلى تدخل من الرسام لتعريفه.

نظام إحداثيات الإكساء و، ز يكون ضمن المجال الحقيقي [0,1]. حيث يتم اصطلاح مبدأ الإحداثيات عند أحد أركان صورة الإكساء. كمثال، في مينتال راي وأوبن جي إل تـُعتـَبَر الزاوية السفلى اليسرى هي مبدأ إحداثيات الإكساء، والمحور و الموجب يتجه يميناً، والمحور ز الموجب يتجه للأعلى.[3] أما في دايركت ثري دي، فإن الزاوية العليا اليسرى من الصورة هي مبدأ الإحداثيات، حيث أن المحور و الموجب يتجه يميناً أيضاً، أما المحور ز الموجب فيتجه للأسفل .[4][5] في حال استخدام إحداثيات خارج المجال [0,1]، فإن ضوابط عنونة الإكساء تستخدم لتحديد طريقة جلب القيمة اللونية المناسبة من الإكساء.

تطبيقات عدل

لاقى مفهوم الإكساء رواجاً كبيراً بين المستخدمين، وتم تطويره واستخدامه في تطبيقات خارج النطاق الأصلي. من التطبيقات الحالية للإكساءات:[3][6]

  • في أغلب الأحيان، إضافة تفاصيل لونية مأخوذة مباشرة من صورة مسطحة (بالإنجليزية: diffuse map).
  • إظهار انعكاس من البيئة المحيطة على جسم ما دون اللجوء إلى حسابات معقدة كتتبع الأشعة (بالإنجليزية: reflection map). هذا الأسلوب يعتمد على توليد إحداثيات الإكساء بطريقة حسابية تأخذ معلومات عين الناظر في الاعتبار.
  • بأسلوب مشابه للانعكاسات، يمكن إظهار انكسارات الضوء عند انتقاله عبر السطوح المختلفة أيضاً دون اللجوء إلى تتبع الأشعة (بالإنجليزية: refraction map).
  • إظهار نتوءات وحفر دقيقة على السطح دون الحاجة إلى تجسيمها فراغياً (بالإنجليزية: bump map). في هذا النوع من التطبيقات تعبر صورة الإكساء عن الانخفاضات والارتفاعات المنتشرة على السطح المكسي كقيم لونية تتراوح بين اللون الأبيض واللون الأسود. حيث يكون الأبيض هو أعلى نتوء على السطح، والأسود هو أعمق حفرة فيه. القيم البينية تعبر عن الارتفاعات المحصورة بين هاتين القمتين.
  • نفس الهدف السابق، لكن بأسلوب مختلف يعتمد على حفظ النواظم على السطح ضمن الإكساء (بالإنجليزية: normal map).
  • قناع mask يحدد ظهور نسبة دمج بين مصدرين لونيين مختلفين. كمثال، قناع للــّمعان (بالإنجليزية: specular map) يمكن استخدامه لتحديد الأجزاء المعدنية في المجسم من الأجزاء القماشية.
  • إزاحة السطح المكسي على خط الناظم في كل نقطة (بالإنجليزية: displacement map).

وتطبيقات أخرى عديدة...

أنواع عدل

هناك عدة أنواع من الإكساءات المستخدمة في مجال رسوميات الحاسوب. كل نوع يستخدم في مجالات معينة:[7]

  • إكساءات خطية (ذات بعد واحد): تتألف من سطر واحد من التكسلات فقط. عادة تستعمل هذه الإكساءات لاستخدامات خاصة كالتعبير عن التدرج اللوني لمظلل كرتون، أو للتعميم كتابع رياضي من متغير واحد يأخذ قيمة ضمن المجال [0,1] ويعيد قيمة مقابلة. يستخدم هذا النوع من الإكساءات في محركات الرسم الفورية بشكل أكثر كثافة من محركات رسم الإنتاج الفلمي.
  • إكساءات مسطحة (ذات بعدين): وهي الأكثر شيوعاً بين بقية الأنواع. الإكساء يتكون من صورة مستطيلة (أو مربعة) تتألف من مصفوفة من التكسلات المتجاورة.
  • إكساءات حجمية (ذات ثلاثة أبعاد): وهي محدودة الاستخدام خصوصاً في محركات الرسم الفورية نظراً لكونها تستهلك أحجاماً كبيرة من الذاكرة. الإكساء الحجمي هو متوازي مستطيلات (أو مكعب) مصمت مليء بالتكسلات. يمكن تخيله كمجموعة شرائح متلاصقة من الإكساءات المسطحة.
  • إكساءات مكعبة: تنتشر كثيراً في محركات الرسم الفوري، وهي تتألف من مكعب بستة أوجه، حيث كل وجه هو عبارة عن إكساء مسطح منفصل.

التصحيح المنظوري عدل

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

عند رؤية المشهد التخيلي من خلال كاميرا ذات إسقاط فراري، فإن الأجسام تتشوه بحسب عمقها بالنسبة لعدسة الكاميرا. تحدث هذه الظاهرة نتيجة لقسمة الإحداثيات الفراغية على العمق بالنسبة لعين الناظر عند تحويلها إلى نظام إحداثيات الشاشة، ويتم تنفيذ عملية القسمة على جميع النقاط المكونة للمجسم الذي يتم رسمه، ومن ثم يتم تلوين المجسم بالإكساء عن طريق استيفاء إحداثيات التكسلات المناسبة بين نقاط المجسم. إلا أن الاستيفاء الخطي البسيط لا يأخذ عملية القسمة المذكورة أعلاه بعين الاعتبار، مما ينتج إكساءات مشوهة قد تكون واضحة بحسب زاوية الرؤية ومدى التشويه المنظوري. تقوم عملية التصحيح المنظوري (بالإنجليزية: perspective correction) في الإكساء بإضافة القسمة إلى عملية الاستيفاء مما يجعل تكسلات الإكساء تظهر بشكل صحيح منظورياً.[6]

بدون التصحيح المنظوري، يتم استيفاء إحداثي التكسل   بين نقطتين بالقيم   و  كالآتي:
  حيث  
مع التصحيح المنظوري، يتم الاستيفاء بعد القسمة على العمق   كالآتي:
 

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

انظر أيضًا عدل

ملاحظات ومصادر عدل

  1. ^ Sergei Savchenko: 3D Graphics Programming: Games and Beyond, Sams Publishing, ISBN 0-672-31929-2
  2. ^ Alan Watt: 3D Computer Graphics, Third edition, Addison-Wesley, ISBN 0-201-39855-9
  3. ^ أ ب Dave Shreiner, The Khronos OpenGL ARB Working Group: OpenGL Programming Guide: The Official Guide to Learning OpenGL, Versions 3.0 and 3.1 (7th Edition), Addison-Wesley Professional, ISBN 0-321-55262-8
  4. ^ وصف إحداثيات الإكساء في وثائق دايركت ثري دي 9 نسخة محفوظة 24 أغسطس 2017 على موقع واي باك مشين.
  5. ^ بعض الأشخاص يجدون أن نظام إحداثيات الإكساءات في دايركت ثري دي أقرب للطبيعة منه في الأنظمة الأخرى، بسبب كونه يطابق نظام إحداثيات الشاشة في ويندوز، والذي يطابق ترتيب سرد البكسلات في الذاكرة.
  6. ^ أ ب Tomas Akenine-Moller, Eric Haines, Naty Hoffman: Real-Time Rendering (Third Edition), A K Peters, Ltd., ISBN 1-56881-424-0
  7. ^ قائمة بواجهات دايركت ثري دي 9 البرمجية، متضمنة أنواع الإكساءات المدعومة نسخة محفوظة 24 أغسطس 2017 على موقع واي باك مشين.

تقنيات متعلقة عدل

وصلات خارجية عدل