تدريب تكنولوجيا صب الأشعة ، الجزء 1

2D indie ... مشاريع AAA ثلاثية الأبعاد ... أم شيء بينهما؟



تحياتي لجميع القراء. قررت أن ألخص وترجم سلسلة رائعة من المقالات "Ray-Casting Tutorial For Game Development And Other Purces " بقلم F. Permadi حول دراسة تقنية صب الأشعة.



صورة


يتطرق هذا المنشور ويجمع بين المقالات الأصلية What is Ray-Casting و Ray-Casting vs Ray-Tracing For Game Development .



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



حسنا ... لنبدأ!



ما هو صب الأشعة؟



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



صورة


صب الأشعة وتتبع الأشعة



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



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



رمي أسرع من التعقب. هذا ممكن بسبب حقيقة أنه يستخدم بعض القيود الهندسية لتسريع عملية التقديم. على سبيل المثال ، تكون الجدران دائمًا متعامدة على الأرض (يمكن ملاحظة ذلك في ألعاب مثل Doom أو Wolfenstein 3D). لولا هذه القيود ، لما كانت تقنية الرمي ممكنة.



تقدم الفقرات التالية مقارنة عالمية للرمي والتعقب. الشيء الرئيسي الذي يجب تذكره هو أن "الرمي يستخدم أشعة أقل من التتبع ، بسبب قيود هندسية معينة". وإلا فإن "الرمي هو تنفيذ متخصص للتعقب".



المبدأ



الرمي : تُلقى الأشعة وتتحرك في مجموعات بناءً على بعض القيود الهندسية. على سبيل المثال ، على شاشة بدقة 320 × 200 ، سيطلق "مولد الأشعة" 320 قطعة فقط (نحصل على هذا الرقم من نتيجة أن شاشة بعرض 320 بكسل بها 320 عمودًا رأسيًا).



التتبع : يتم حساب كل شعاع على حدة ، أي أن كل نقطة على شاشة العرض (بكسل عادةً) يتم تتبعها بواسطة أحد أشعةها الخاصة. على سبيل المثال ، على شاشة بدقة 320 × 200 ، نحتاج إلى 64 ألف شعاع (320 * 200 = 64000) شعاع ، وهو أبطأ 200 مرة من الرمي.



معادلة



كقاعدة عامة ، عند الرمي ، يُسمح بالأخطاء في الحسابات. عند التوجيه ، يجب أن يكون كل شيء دقيقًا قدر الإمكان.



سرعة



يعتبر الرمي أسرع من التتبع بعدة مرات ومناسب لعمليات الوقت الفعلي. التتبع غير مناسب بأي شكل من الأشكال (إلا إذا كان لدينا جهاز كمبيوتر بتردد 500 جيجاهرتز).



جودة



عند السقوط ، نحصل على صورة بجودة متوسطة / رديئة. يمكنك ملاحظة التقسيم إلى عناصر كتلة. عند التتبع ، تكون الصورة واقعية قدر الإمكان - وأحيانًا أكثر من اللازم.



صورة


مشهد من فيلم Wolfenstein 3D. لاحظ أن الصورة مقسمة إلى كتل مستطيلة الشكل. الكائنات (الأسلحة) والأعداء (الكلب) هي ببساطة صور نقطية شفافة يتم قياسها ورسمها على الخلفية.



صورة


مشهد من لعبة الضيف السابع. نتيجة التقديم مذهلة. ومع ذلك ، فإن حركات اللاعب تقتصر على المسارات المحددة مسبقًا (يرجع ذلك إلى حقيقة أن عدد الصور المعروضة مسبقًا محدود).



العالم الخارجي



عند الرمي ، نحن محدودون هندسيًا ولا تتوفر سوى أشكال بسيطة. عند التتبع ، يمكن عرض أي شكل.



ذاكرة



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



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



أمثلة على



رمي:



  • Wolfenstein 3D (برنامج iD)
  • عجلة الظل (الغراب)
  • ارينا (بيثيسدا)
  • Doom (برنامج iD)
  • قوى الظلام (LucasArts)


أثر:



  • الضيف السابع (Trilobyte)
  • مسار حرج (ميكاديوس)
  • الساعة الحادية عشر (Trilobyte)
  • ميست (سماوي)
  • Cyberia (Xatrix)


نهاية الجزء الأول




All Articles