ماذا نعني بكلمة Isometric؟
الـ Isometric يعني المنظور، أو الإسقاط الثلاثي البعد لمشهد ما من زاوية ثابتة متساوية الأبعاد. بحيث تكون أطوال ثلاثة خطوط مفترضة على المحاور الثلاثة ثابتة الطول ومتساوية. تكون نسبة هذا المنظور عادة مساوية إلى 1:1. خير مثال على ماقلناه يظهر في الشكل التالي:
معظم ألعاب الحاسوب اليوم لاتستخدم النسبة 1:1، بل يستخدم الكثير منها النسبة 2.1:1، بحيث يظهر المنظور وكأنه يعطي اللاعب الشعور بالنظر إلى عوالم اللعبة من الأعلى، بعض المبرمجين يسمون هذا المنظور "بالنظرة الإلهية" أو "God View". ويبدو استخدام هذه النسبة أفضل من النسبة 1:1 لما تقدمه من تفاصيل أكثر دقة للعوالم المختلقة.
ماهي رقاقات الـ Isometric؟
تشبه رقاقات الـ Isometric الشكل المعين "مربع منحرف الأضلاع" الممثل على شكل صورة نقطية يتم دمجها مع بقية صور الـ Isometric الأخرى لتوليد خريطة أرضية غير متقطعة المظهر، تصلح لأن تستخدم لألعاب الـ Isometric تحديداً. تظهر رقاقة الـ Isometric وهماً بعمق المشهد، وذلك نظراً لطبيعة الشكل المعيني والذي تظهر عليه.
أبعاد رقاقة الـ Isometric؟
بعد إلقاء نظرة أولى على صورة رقاقة الـ Isometric الطبيعية، تظن وللوهلة الأولى بأنّ هناك بعدين وحيدين لها فقط، ألا وهو العرض والإرتفاع. ولكن هذا ليس صحيح أبداً. فبالرغم من أن الصورة لها في الحقيقة بعدان فقط (عرض وإرتفاع) إلا أن صورة الرقاقة تمثّل فضاء ثلاثي البعد ولذا من الضّروري أن يتم وصفها باستخدام ثلاثة أبعاد: الطول، العرض، والإرتفاع. سوف يكون هذا المبدأ مشوّشاً نوعاً ما في البداية وسوف يصعب تذكره. لاتقلق. سوف يصبح هذا الأمر أكثر سهولة مع تمرسك في استخدام رقاقات Isometric.
الصورة التالية تظهر رقاقة الـ Isometric، مع وصف عن أبعادها الثلاثة:
الطول: وهو البعد من نقطة أقصى اليسار للرقاقة إلى نقطة أقصى اليمين.
العرض: وهو البعد من النقطة الأبعد للرقاقة من الشاشة إلى النقطة الأقرب للرقاقة من الشاشة. من المحتمل أن يكون هذا البعد هو الأكثر تشويشاً بالنسبة لرقاقات الـ Isometric.
الإرتفاع: وهو 'إرتفاع' أو سمك الرقاقة.
كيف نرسم رقاقات الـ Isometric
باعتبار أن رقاقة الـ Isometric ليست شكلا مستطيلاً سهلاً، فإن أي عملية Bit Bliting بسيطة سوف تكون عديمة الفائدة. ما يتطلّب إنجازه هو عملية نقل شفّافة. إذا كانت الطريقة التي تستخدمها في نقل الرقاقة لا تدعم عمليات النقل الشفّافة، فإنك سوف تحتاج إلى قناع للرقاقة التي سوف يتم نقلها. الخطوات المطلوبة لنقل الرقاقة هي كالتّالي:
إيضاح من المترجم: الـ Bit Bliting هو عملية نقل سريعة جداً يقوم بها عادة عتاد العرض لديك وذلك لنقل المعطيات الرسومية الموجودة في المخزن الذاكري الثانوي المؤقت إلى المخزن الذاكري الرئيسي المؤقت، أو ذاكرة العرض الرئيسية.
1. تحتاج إلى صورة الرقاقة وصورة قناع الرقاقة. في الصورة التالية، الخلفية البيضاء لصورة الرقاقة تمثل الجزء الشفّاف للصورة.
2. قم بنقل، القناع باستخدام المعامل OR. في Windows، يتم إنجاز هذه العملية باستخدام العملية الرسومية SRCPAINT أو (ROP). الناتج عن هذه العملية سوف يخلق نوع من الفصل في الصورة الرئيسية حيث أنّ الجزء المنقول من الصورة سوف يكون الجزء الأبيض.
3. قم بنقل، الصورة الفعلية باستخدام المعامل AND. في Windows، يتم إنجاز هذه العملية باستخدام العملية الرسومية SRCAND أو (ROP). سوف ينتج عن ذلك نقل الصورة الرئيسية ووضعها في منطقة القطع البيضاء بشكل كامل وبدون أية أضرار لأطراف صورة الرقاقة الأصلية.
يرجع تصميم القالب الفعلي للقناع إليك. إن قالب القناع الظاهر في الصورة أعلاه يسمح لكامل صورة الرقاقة بأن يتم رسمها كما هي.
تغدو الأمور أكثر صعوبة نوعاً ما فيما إذا كنت ترغب في إظهار الجزء الأعلى من الرقاقة فقط. إن عملية نقل القناع والصورة ومن ثم القيام بعملية نقل أخرى لإزالة الجزء غير المرغوب فيه قد يكلفك ذلك أضرارً جسيمة لأطراف صورة الرقاقة الأصلية. وهذا يعتبر أحد عوائق الأبعاد الثلاثة في رسوميات الـ Isometric. لحلّ هذا العائق ينبغي أن يكون لديك صور منفصلة لجوانب الرقاقة. وهذا يعني أنك سوف تحتاج إلى عمليات نقل أكثر بكثير، ولكن سوف يكون لديك مرونة أكبر في رسم الرقاقات أيضاً. إذا كنت تحتاج لإعادة رسم سطح الرقاقة مرة أخرى، وليس الجوانب يمكنك أن تنجز ذلك إذا كانت الرقاقة ممثلة في صورتين معزولتين كما يظهر في الصورة التالية:
استخدام الطبقات مع رقاقات الـ Isometric
لكي تحصل على إنتقال ممهد وسلس من أحد أنواع رقاقات التضاريس إلى الرقاقة التالية، من الضروري أن تطبق ما يعرف بالطبقات 'الهامشية'. الطبقات الهامشية هي عبارة عن صور رقائق مستوية (بدون أية جوانب) يتم رسمها على سطح الرقاقة العلوي لإحداث تأثير إنتقال سلس مع الرقاقة التالية. المثال الموضح أدناه يمثل تطبيق هذه الفكرة على رقاقتين حجرية وأخرى عشبية مع إبراز الإنتقال السلس بين الرقاقتين. بالطبع الفنان الجيد يمكنه أن يجعل من الطبقة البينية تبدو أكثر واقعية وسلاسة بتطبيق بعض الأوساخ الصغيرة على جانبي الرقاقتين مع ألوان أفضل لكليهما مثلاً.
هذا المثال ليس أفضل مثال يمكن إنجازه. إن الطريقة التي يتم بها تطبيق الطبقة الهامشية هي ذات الطريقة والتي يتم بها رسم الرقاقة الحجرية. أولاً يتم رسم الرقاقة الحجرية (رسم القناع وبعد ذلك الصورة) ومن ثم يتم رسم الطبقة الهامشية بنفس الوقت والموقع (القناع وبعد ذلك الصورة). وهذا سوف يوهمك بأن العشب يتخلل الشقوق الحجرية. (حسناً قد يكون ذلك مفترضاً إذا كان عمل الفنان جيد بما فيه الكفاية لإيقاظ ذلك الوهم في نفسك).
يمكن تطبيق عدة طبقات متعددة على الطبقة الأصلية للرقاقة. ولكن يوجد هناك عائق، بالطبع. كلما أضفت طبقات أكثر إلى الرقاقة، كلما كان أداء رسم الخريطة أبطأ، وذلك لأن تلك المهمة سوف تحتاج إلى العديد والكثير من عمليات النقل الذاكري والمجهدة للعتاد الرسومي. إن إضافة الطبقات شيء رائع وأنا أوصي به حقاً ... ولكن لا تتجاوز الحدود.
الرقاقات ذات الأطوال المتغيرة وقاعدة الرقاقة
إن رقاقة الـ Isometric تستحوذ على فضاء ثلاثي الأبعاد. لايوجد هناك أية قاعدة بأن كل الرقاقات المتضمنة في طاقم من الرقاقات هي من الضروري أن تكون بنفس الإرتفاع. إن وجود رقاقة متغيّرة الإرتفاع في تصميمك يعتبر ميزة جيدة في الحقيقة. دعنا نأخذ رقاقتنا الحجرية على سبيل المثال. الصورة الأولى للرقاقة تظهر بأن لها إرتفاع من 9 نقاط ضوئية. لايوجد هناك أية قاعدة تلزمنا بأنّ الرقاقة العشبية من الضروري أن تكون بنفس إرتفاع الرقاقة الحجرية. في الحقيقة، الإرتفاعات المختلفة للرقاقات بفارق نقطة ضوئية أو إثنتان سوف يجعل من المنظر الطبيعي المصير واقعياً بدرجة أكبر بكثير.
لكي تكون قادراً على رسم الرقاقات بارتفاعات متغيّرة وبشكل صحيح، فأنت تحتاج لمعرفة موضع قاعدة هذه الرقاقة. ما هي قاعدة الرقاقة؟ إنّ قاعدة الرقاقة وببساطة هي مقدار الإزاحة الموجود من قمة الرقاقة (قيمة الإرتفاع القصوى) إلى النقطة التي يتم بها إلتقاء سطح الرقاقة مع أرض الكون المختلق. الصورة التالية تظهر مثالاً من 3 رقاقات بارتفاعات مختلفة وكيفية رسمهم إلى جانب بعضهم البعض باستخدام قاعدة الرقاقة كنوع من المؤشر التوجيهي.
عندما يتم رسم الرقاقات عندما يكون مقدار قاعدة الرقاقة أي قيمة ما عدا 0، عندها وببساطة يتم تحريك الرقاقة على الاحداثي الصادي قبل النقل الذاكري ومن ثم يتم تنفيذ النقل الذاكري في ذلك الموقع تحديداً. إليك عيّنة توضيحية من شفرة ++C\C والتي تنجز مثل هذه المهمة:
في الحقيقة تنفيذ مثل هذه المهام يعتبر سهل للغاية. الشيء المثير جداً فيما يتعلق بالرقاقات المتغيرة الارتفاع هو أنّها لا تحتاج إلى قوّة معالجة كبيرة لرسمها على خلاف ما يحدث مع عمليات النقل الذاكري المذكورة أعلاه.
بقلم: دينو غامبون
ترجمة وإعداد: رامي اللولح
والباب مفتوح للنقاش البناء .... !!!!!!!!!!
الـ Isometric يعني المنظور، أو الإسقاط الثلاثي البعد لمشهد ما من زاوية ثابتة متساوية الأبعاد. بحيث تكون أطوال ثلاثة خطوط مفترضة على المحاور الثلاثة ثابتة الطول ومتساوية. تكون نسبة هذا المنظور عادة مساوية إلى 1:1. خير مثال على ماقلناه يظهر في الشكل التالي:
معظم ألعاب الحاسوب اليوم لاتستخدم النسبة 1:1، بل يستخدم الكثير منها النسبة 2.1:1، بحيث يظهر المنظور وكأنه يعطي اللاعب الشعور بالنظر إلى عوالم اللعبة من الأعلى، بعض المبرمجين يسمون هذا المنظور "بالنظرة الإلهية" أو "God View". ويبدو استخدام هذه النسبة أفضل من النسبة 1:1 لما تقدمه من تفاصيل أكثر دقة للعوالم المختلقة.
ماهي رقاقات الـ Isometric؟
تشبه رقاقات الـ Isometric الشكل المعين "مربع منحرف الأضلاع" الممثل على شكل صورة نقطية يتم دمجها مع بقية صور الـ Isometric الأخرى لتوليد خريطة أرضية غير متقطعة المظهر، تصلح لأن تستخدم لألعاب الـ Isometric تحديداً. تظهر رقاقة الـ Isometric وهماً بعمق المشهد، وذلك نظراً لطبيعة الشكل المعيني والذي تظهر عليه.
أبعاد رقاقة الـ Isometric؟
بعد إلقاء نظرة أولى على صورة رقاقة الـ Isometric الطبيعية، تظن وللوهلة الأولى بأنّ هناك بعدين وحيدين لها فقط، ألا وهو العرض والإرتفاع. ولكن هذا ليس صحيح أبداً. فبالرغم من أن الصورة لها في الحقيقة بعدان فقط (عرض وإرتفاع) إلا أن صورة الرقاقة تمثّل فضاء ثلاثي البعد ولذا من الضّروري أن يتم وصفها باستخدام ثلاثة أبعاد: الطول، العرض، والإرتفاع. سوف يكون هذا المبدأ مشوّشاً نوعاً ما في البداية وسوف يصعب تذكره. لاتقلق. سوف يصبح هذا الأمر أكثر سهولة مع تمرسك في استخدام رقاقات Isometric.
الصورة التالية تظهر رقاقة الـ Isometric، مع وصف عن أبعادها الثلاثة:
الطول: وهو البعد من نقطة أقصى اليسار للرقاقة إلى نقطة أقصى اليمين.
العرض: وهو البعد من النقطة الأبعد للرقاقة من الشاشة إلى النقطة الأقرب للرقاقة من الشاشة. من المحتمل أن يكون هذا البعد هو الأكثر تشويشاً بالنسبة لرقاقات الـ Isometric.
الإرتفاع: وهو 'إرتفاع' أو سمك الرقاقة.
كيف نرسم رقاقات الـ Isometric
باعتبار أن رقاقة الـ Isometric ليست شكلا مستطيلاً سهلاً، فإن أي عملية Bit Bliting بسيطة سوف تكون عديمة الفائدة. ما يتطلّب إنجازه هو عملية نقل شفّافة. إذا كانت الطريقة التي تستخدمها في نقل الرقاقة لا تدعم عمليات النقل الشفّافة، فإنك سوف تحتاج إلى قناع للرقاقة التي سوف يتم نقلها. الخطوات المطلوبة لنقل الرقاقة هي كالتّالي:
إيضاح من المترجم: الـ Bit Bliting هو عملية نقل سريعة جداً يقوم بها عادة عتاد العرض لديك وذلك لنقل المعطيات الرسومية الموجودة في المخزن الذاكري الثانوي المؤقت إلى المخزن الذاكري الرئيسي المؤقت، أو ذاكرة العرض الرئيسية.
1. تحتاج إلى صورة الرقاقة وصورة قناع الرقاقة. في الصورة التالية، الخلفية البيضاء لصورة الرقاقة تمثل الجزء الشفّاف للصورة.
2. قم بنقل، القناع باستخدام المعامل OR. في Windows، يتم إنجاز هذه العملية باستخدام العملية الرسومية SRCPAINT أو (ROP). الناتج عن هذه العملية سوف يخلق نوع من الفصل في الصورة الرئيسية حيث أنّ الجزء المنقول من الصورة سوف يكون الجزء الأبيض.
3. قم بنقل، الصورة الفعلية باستخدام المعامل AND. في Windows، يتم إنجاز هذه العملية باستخدام العملية الرسومية SRCAND أو (ROP). سوف ينتج عن ذلك نقل الصورة الرئيسية ووضعها في منطقة القطع البيضاء بشكل كامل وبدون أية أضرار لأطراف صورة الرقاقة الأصلية.
يرجع تصميم القالب الفعلي للقناع إليك. إن قالب القناع الظاهر في الصورة أعلاه يسمح لكامل صورة الرقاقة بأن يتم رسمها كما هي.
تغدو الأمور أكثر صعوبة نوعاً ما فيما إذا كنت ترغب في إظهار الجزء الأعلى من الرقاقة فقط. إن عملية نقل القناع والصورة ومن ثم القيام بعملية نقل أخرى لإزالة الجزء غير المرغوب فيه قد يكلفك ذلك أضرارً جسيمة لأطراف صورة الرقاقة الأصلية. وهذا يعتبر أحد عوائق الأبعاد الثلاثة في رسوميات الـ Isometric. لحلّ هذا العائق ينبغي أن يكون لديك صور منفصلة لجوانب الرقاقة. وهذا يعني أنك سوف تحتاج إلى عمليات نقل أكثر بكثير، ولكن سوف يكون لديك مرونة أكبر في رسم الرقاقات أيضاً. إذا كنت تحتاج لإعادة رسم سطح الرقاقة مرة أخرى، وليس الجوانب يمكنك أن تنجز ذلك إذا كانت الرقاقة ممثلة في صورتين معزولتين كما يظهر في الصورة التالية:
استخدام الطبقات مع رقاقات الـ Isometric
لكي تحصل على إنتقال ممهد وسلس من أحد أنواع رقاقات التضاريس إلى الرقاقة التالية، من الضروري أن تطبق ما يعرف بالطبقات 'الهامشية'. الطبقات الهامشية هي عبارة عن صور رقائق مستوية (بدون أية جوانب) يتم رسمها على سطح الرقاقة العلوي لإحداث تأثير إنتقال سلس مع الرقاقة التالية. المثال الموضح أدناه يمثل تطبيق هذه الفكرة على رقاقتين حجرية وأخرى عشبية مع إبراز الإنتقال السلس بين الرقاقتين. بالطبع الفنان الجيد يمكنه أن يجعل من الطبقة البينية تبدو أكثر واقعية وسلاسة بتطبيق بعض الأوساخ الصغيرة على جانبي الرقاقتين مع ألوان أفضل لكليهما مثلاً.
هذا المثال ليس أفضل مثال يمكن إنجازه. إن الطريقة التي يتم بها تطبيق الطبقة الهامشية هي ذات الطريقة والتي يتم بها رسم الرقاقة الحجرية. أولاً يتم رسم الرقاقة الحجرية (رسم القناع وبعد ذلك الصورة) ومن ثم يتم رسم الطبقة الهامشية بنفس الوقت والموقع (القناع وبعد ذلك الصورة). وهذا سوف يوهمك بأن العشب يتخلل الشقوق الحجرية. (حسناً قد يكون ذلك مفترضاً إذا كان عمل الفنان جيد بما فيه الكفاية لإيقاظ ذلك الوهم في نفسك).
يمكن تطبيق عدة طبقات متعددة على الطبقة الأصلية للرقاقة. ولكن يوجد هناك عائق، بالطبع. كلما أضفت طبقات أكثر إلى الرقاقة، كلما كان أداء رسم الخريطة أبطأ، وذلك لأن تلك المهمة سوف تحتاج إلى العديد والكثير من عمليات النقل الذاكري والمجهدة للعتاد الرسومي. إن إضافة الطبقات شيء رائع وأنا أوصي به حقاً ... ولكن لا تتجاوز الحدود.
الرقاقات ذات الأطوال المتغيرة وقاعدة الرقاقة
إن رقاقة الـ Isometric تستحوذ على فضاء ثلاثي الأبعاد. لايوجد هناك أية قاعدة بأن كل الرقاقات المتضمنة في طاقم من الرقاقات هي من الضروري أن تكون بنفس الإرتفاع. إن وجود رقاقة متغيّرة الإرتفاع في تصميمك يعتبر ميزة جيدة في الحقيقة. دعنا نأخذ رقاقتنا الحجرية على سبيل المثال. الصورة الأولى للرقاقة تظهر بأن لها إرتفاع من 9 نقاط ضوئية. لايوجد هناك أية قاعدة تلزمنا بأنّ الرقاقة العشبية من الضروري أن تكون بنفس إرتفاع الرقاقة الحجرية. في الحقيقة، الإرتفاعات المختلفة للرقاقات بفارق نقطة ضوئية أو إثنتان سوف يجعل من المنظر الطبيعي المصير واقعياً بدرجة أكبر بكثير.
لكي تكون قادراً على رسم الرقاقات بارتفاعات متغيّرة وبشكل صحيح، فأنت تحتاج لمعرفة موضع قاعدة هذه الرقاقة. ما هي قاعدة الرقاقة؟ إنّ قاعدة الرقاقة وببساطة هي مقدار الإزاحة الموجود من قمة الرقاقة (قيمة الإرتفاع القصوى) إلى النقطة التي يتم بها إلتقاء سطح الرقاقة مع أرض الكون المختلق. الصورة التالية تظهر مثالاً من 3 رقاقات بارتفاعات مختلفة وكيفية رسمهم إلى جانب بعضهم البعض باستخدام قاعدة الرقاقة كنوع من المؤشر التوجيهي.
عندما يتم رسم الرقاقات عندما يكون مقدار قاعدة الرقاقة أي قيمة ما عدا 0، عندها وببساطة يتم تحريك الرقاقة على الاحداثي الصادي قبل النقل الذاكري ومن ثم يتم تنفيذ النقل الذاكري في ذلك الموقع تحديداً. إليك عيّنة توضيحية من شفرة ++C\C والتي تنجز مثل هذه المهمة:
كود PHP:
void DrawTile(char TileID, long DestX, long DestY, char BaseOffset){
//Initializing stuff
DestY -= BaseOffset; //Move the tile up the Y axis to take into
//account the tile base.
//Actual bitblt call
}
بقلم: دينو غامبون
ترجمة وإعداد: رامي اللولح
والباب مفتوح للنقاش البناء .... !!!!!!!!!!
تعليق