All But Reality

Imagine a catchphrase here

Simple template. Background and Customization by Shihab Elagib. Powered by Blogger

October 09, 2016

عن القيمز والجرافيكس - Depth of Field

على الرغم من أني أصر دوماً على وصف نفسي بأني مجرد هاوٍ في مجال الجرافيكس المصيرة بواسطة الكمبيوتر لا يملك اي حس فني يذكر، الا اني لا ازال احاول ان افتي في كل محفل في امر متعلق بها، وخصوصاً عندما يتعلق الامر بالفيديو قيمز. ليستا المحاولتان الاولتان، لكن المقالين الاول (هنا) والثاني (هنا) المعنونان "عن القيمز والجرافيكس" حاولت فيهما العبور على اكثر الاعدادات والمصطلحات انتشاراً في القيمز. ليسا أكثر النصوص سلاسة او نظاماً، لا انكر ذلك، لكنها كانت -على الاقل- محاولة اتت بنتاجٍ ما بلغة قلما تجد من يكتب بها في مثل هذه المواضيع.
في هذا النص سأغير من الأسلوب بعض الشيء، بدلاً عن التحدث عن عدة مفاهيم سأحاول التركيز على واحد فقط، وتحديداً، عن ما يعرف بالـDepth of Field او DoF، او ما يترجم (حسب ويكيبيديا، مرجعيتي الاولى في ترجمة المصطلحات الانجليزية التقنية) بـ"عمق الحقل".


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

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

(Not bad for 5 minutes on photoshop, no?)

لحسن الحظ، فإن الزيادة في هذه الضبابية ليست بالضرورة كبيرة بالقدر الذي يجعل جميع الاجسام في غير نقطة التركيز اعلاه مستحيلة التمييز. هنالك سماحية معتبرة بعيداً عن هذه المسافة تظل الاجسام الواقعة فيها محتفظة بدرجة كافية من الوضوح. هذه المسافة تتحكم فيها عوامل اخرى في المنظومة كالمساحة المتاحة للأشعة للوصول الى العدسة نفسها (او ما يعرف بالـApreture، لمزيد من التفاصيل يمكن مراجعة هذا المقال)، وهذه السماحية هي ما تعرف بعمق الحقل. بلغة اخرى: عمق الحقل هو المدى البعدي الذي تظل جميع الاجسام فيه واضحة المعالم بدون ضبابية (blurring).

(يرجى تجاهل ثبات حدة الكلاش في جميع الامثلة. لتسريع الحسابات قمت بتصييره منفصلاً عن المشهد وتركيبه لاحقاً بالفوتوشوب. >_>)

تطبيق عمق الحقل في القيمز عادة ما يتم اجراءه كعملية بعد التصيير (Post-process operation. الرابط يحتاج الدخول عبر بروكسي من السودان)، ما قد يعني -لكن ليس بالضرورة- ان اضافة هذا التأثير للالعاب لا يؤثر كثيراً على الاداء. كل ما يحتاجه الامر هو التحصل على خريطة لكل اطار من اللعبة تبيين مسافة كل عنصر في الفريم من الكاميرا (وهي بالفعل يتم خلقها لكل اطار ضمن عمليات التصيير الرئيسية، تسمى هنا بالـZ buffer او الـDepth map كما في بعض برمجيات التصيير الاخرى) ومن ثم اجراء عملية تمويه للعناصر التي تقع خارج المدى البعدي المطلوب. 
"ليس بالضرورة" لأن عملية التمويه المذكورة يمكن فيها استخدام العديد من الطرق والخوارزميات، بعضها بسيط جداً لا يؤثر على الاداء بصورة كبيرة (ويأتي بنتائج ذات جودة منخفضة. الـDoF القياسي في العاب Unreal Engine مثلاً يستخدم فلتر قاوسي Gaussian Blur Filter. مستخدمي الفوتوشوب قد تكون لديهم معرفة به) والاخر قد يتطلب عملية تصيير ثانوية للمشهد ومن ثم تمويه الناتج (وتباعاً، جودة افضل، كحال لعبة Metro 2033، التي اشتهرت بتطبيقات DoF قاتلة للاداء).

لماذا عمق الحقل؟
السؤال الأصح هو "متى عمق الحقل"، يفترض، ان شئنا الالتزام بالواقعية كهدف، تطبيق التمويه على اي جسم لا يقع في مدى تركيز الناظر او الكاميرا اوالمنظار. 
اكبر استخدامات الـDoF في القيمز يحدث في العاب الـFirst Person Shooters، وغالباً عند وضعية التصويب عبر منظار الاسلحة (Aiming Down Sights أو ADS). ربما تكون اكثر الالعاب استخداماً لعمق الحقل هي سلسلة Call of Duty، ولنأخذ مثلاً Modern Warfare 3 (الصورة الاولى بدون تفعيل تأثير الـDoF، الثانية مع تفعيل التأثير)


مودرن وورفير 3 لم تجتهد كثيراً في موضوع الـDoF. كل ما تفعله اللعبة هو اخذ اقرب العناصر للكاميرا وتمويهها بدون تدرج ملحوظ. لاحظ ان الاجسام ابعد من نقطة التركيز لم يحدث لها اي تمويه.

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

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

  (يرجى عدم التركيز مع نظافة الكيبورد، or lack thereof >_> )

لاحظ كيف ان حرف الـK في لوحة المفاتيح ظل محتفظاً بمعالمه على الرغم من الجسم الذي امامه (ورقة بنكنوت فئة 50ج سوداني) صبغه بلونه. الصورة ملتقطة بهاتف HTC M8، ليس افضل الهواتف للتصوير، لكنه افضل ما لدي حالياً. هذه الصورة  قد توضح التأثير بأسلوب اكثر... "جمالاً"!

على الرغم من ان استخدام الـDoF منتشر في العديد من الالعاب، الا ان اتاحة خيرات لإغلاق هذا التأثير ليست بنفس الدرجة من الانتشار. بعض الالعاب تحتاج الى العبث في اعدادات محرك اللعبة (عبر ملفات الـConfig.ini او ما يوازيها)، وهنالك البعض الاخر يدمج التأثير مع تأثيرات Post-Proccess اخرى كالـ Bloom filter. لعبة Bioshock Infinite مثال جيد للحالتين (خلافاً للامثلة السابقة، الحالة الافتراضية هنا هي وجود الـDoF كما في الصورة الثانية، الاولى توضح التأثير بعد اغلاق الـDoF عبر ملفات اعدادات محرك اللعبة) لاحظ اختفاء تأثير الـBloom حول لهب الشموع. وتغير نمط الاضاءة العام للمشهد.





الـDoF ليس حكراً فقط على العاب منظور الشخص الاول. هنالك العديد من العاب منظور الشخص الثاني و حتى الالعاب الايزوميترية وذات المناظير المشابهة التي تستخدم التقنية للتركيز على الاجسام في منتصف المسافة او تلك التي تقع امام الشخصية المُتحكم بها. لعبة Tomb Raider قبل الاخيرة تستخدم التأثير لتمويه الاجسام التي تقع بين الكاميرا ونموذج لارا كما في الصور التالية، لاحظ حدوث امتداد للتمويه من الجسم خارج نطاق التركيز الى الجسم المُركّز عليه كما في مثال مودرن وورفير 3 اعلاه




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

هنالك بعض الاستخدامات التي -وان كانت تحمل في طياتها بعضاً من الواقعية- الا ان التطبيق فيها يميل اكثر للجانب الفني، كإستخدام الـDoF في Crysis 2. مقارنة بسلسلة CoD، كرايسس 2 لا تضيف اي تمويه للعناصر خارج مدى التركيز في وضعية الـADS، لكنها تستخدمه -بحدة- عند الدخول في نمط تعديل الاسلحة (حتى في الاسلحة التي لا يمكن تعديلها!).




ما بعد عمق الحقل

الـBokeh (بوكيه، for the lack of a better translation) احدى التأثيرات الجانبية لعدم سقوط جميع نقاط الضوء المنعكسة من النقطة المنظور اليها على السطح المتلقي للإضاءة. تبعثر الاشعة الساقطة هذا قد يتخذ انماطاً منتظمة بناءاً على التشوهات في العدسة و\او شكل المدخل (الـapreture). هذه الانماط عديدة، لكن في القيمز عندما نتحدث عن البوكيه فغالباً ما نتحدث عن نمط الضبابية الذي يحدث لمراكز الاضاءة وانعكاسات الضوء المنتظمة (specular reflections)، هذه الانماط -يفترض- ان تتخذ اما شكلاً دائريا بالكامل (كتلك التي قد يألفها امثالي مِن مَن يعانون من قصر النظر عند النظر الى انارة الشوارع بدون نظارة) او اشكالاً مضلعة سداسية او خماسية او غيرها (حسب الكاميرا).

يمكن ملاحظة هذا التأثير في Crysis 2، وان كان يحتاج قليلاً من الصبر والخبرة في التصوير لإيجاد مشهد مناسب. شخصياً لا املك اياهما، لذا سأكتفي بصورتين يمكن فيهما ملاحظة التأثير بصورة طفيفة لكن كافية لتوضيح القصد:
 
 
(كان من المفروض قصة وتكبير الاجزاء المهمة او الاشارة اليها. بس ليه اشتغل الشغل كله براي؟ ما تجتهد برضك!)

للأسف، فيما عدا Crysis 2 لا امتلك في متناول يدي لعبة توضح هذا التأثير. من الممكن مراجعة هذه الشرائح من انفيديا (تحتاج الي بروكسي) لتطبيق فلتر بوكيه في لعبة Just Cause 2، بالإضافة لتطبيق الـBokeh Depth of Field في رابط محرك Unreal Engine اعلاه.


عمق الحقل، الصراع بين الواقعية والذوق الفني

عمق الحقل احد تلك المواضيع المثيرة للجدل بين مجتماعت اللاعبين، فهنالك الكثيرون مِن مَن يرون انه تأثير مشتت للإنتباه لا مكان له في القيمز، وانه لا يمت للواقعية بصلة. شخصياً ارى ان هذا الخلاف مسألة ذوقية في المقام الاول. اي نعم، بعض القيمز تضع الواقعية او الphotorealism في المقام الاول وفيها لا يمكن انكار ضرورة وجود تأثيرات عمق الحقل وتوابعها، لكن ليست جميع الالعاب كذلك. كما يجب ايضاً الاخذ في الاعتبار ان الجودة المنخفضة المستخدمة في غالب التطبيقات قد تكون منفرة اكثر من ما تضيفه من واقعية. الجانب الفني يجب ان يؤخذ في الاعتبار. هنالك الكثير من الفلسفات في تطوير الالعاب التي تميل الى اضفاء طابع سينمائي عليها، الـDoF المبالغ فيه و معالجات الالوان Colour Grading المتطرفة احد الطرق المستخدمة، وكذلك استخدام فلاتر الـFilm grain وتأثيرات مثل الـChromatic Aberration. ليست جميع هذه التقنيات والمؤثرات مستساغة من الجمهور، لكني شخصياً ارى انه -بالنسبة للـPC gaming على الاقل- ما دام مطور اللعبة يرفق معها خيارات لتفعيل وتعطيل هذه المؤثرات، فالأمر متروك للمستخدم النهائي ليطبق المؤثرات التي يفضل ويبتعد عن ما دونها. طبعاً، رأيي هذا لا يشمل مثل التراهات التي خرج بها مطوروا The Order 1887 قبيل اطلاقها.