في لعبة Marvel's Spider-Man التي تم إصدارها مؤخرًا ، تحتوي العديد من المباني على تصميمات داخلية خارج النوافذ. تبدو رائعة ، ولكن يبدو أنها تم تنفيذها باستخدام العرض الماكر - لا توجد هندسة التصميمات الداخلية في الواقع ويتم إنشاؤها بواسطة تظليل. لم أر أي تصريحات رسمية من Insomniac حول كيفية قيامهم بذلك ، ولكن استنادًا إلى كيف يبدو التأثير ، فمن المحتمل جدًا أن يتم تطبيق تقنية
رسم الخرائط الداخلية التي توصلت إليها في عام 2007 أثناء العمل على الأطروحة. لم أكتب عن ذلك على المدونة من قبل ، لذلك الآن هي اللحظة المناسبة لشرح الظل الصغير الغريب الذي توصلت إليه.
لنبدأ بمشاهدة لعبة Marvel's Spider-Man. اللعبة تبدو رائعة. سجل موقع Kotaku فيديو منفصلًا على النوافذ:
كما ترى في حوالي 40 ثانية من الفيديو ، في الواقع ، الغرف ليست جزءًا من الهندسة: حيث من الواضح أن النافذة ، يقع الباب. بالإضافة إلى ذلك ، بالنظر إلى غرفة واحدة من زوايا مختلفة للمبنى ، نرى مساحة داخلية مختلفة. في بعض الحالات ، يوجد جدار حول زاوية المبنى. كل هذا يجعلنا نفهم أن الغرف مقلدة. ومع ذلك ، من وجهة نظر منظور ، يتم عرضها بشكل صحيح ولها عمق حقيقي.
أعتقد أن عيوب هذه الغرف ليست مهمة للغاية أثناء اللعبة ، لأن اللاعبين عادة لا يدرسون الغرف عن كثب: التصميمات الداخلية ليست سوى خلفية ، وليست موضوع دراسة متأنية. أعتقد أن هذه الطريقة في إنشاء الغرف تضيف العمق والحياة إلى المدينة دون إنفاق الكثير من الموارد.
لتوفير الموارد ، غالبًا ما لا تحتوي المباني في الألعاب على تصميمات داخلية ، كما يمكن رؤيته في لقطة الشاشة من GTA Vبادئ ذي بدء ، أود أن أوضح أن مشاركتي ليست شكوى: يسعدني استخدام أجهزتي في لعبة كبيرة الحجم ولا اتهم Insomniac بأي حال من الأحوال بالسرقة. كما قلت في المنشور الأول عن رسم الخرائط الداخلية ، سيكون من الشرف لي إذا استخدم شخص ما هذه التقنية. إذا استفادت Insomniac بالفعل من فكرتي في أسلوبها ، فأعتقد أنها رائعة. إذا لم تستخدمها ، يبدو أنها توصلت إلى شيء مشابه بشكل غريب. ثم سأكون مهتماً بكيفية القيام بذلك.
إذن كيف يعمل رسم الخرائط الداخلية؟ الفكرة هي أن المبنى نفسه لا يحتوي على أي هندسة إضافية. الداخلية موجودة فقط في التظليل. يقوم هذا التظليل بإجراء البث بالأشعة مع الجدران والأسقف والأرضيات لحساب ما يجب على اللاعب رؤيته في الداخل.
من اليسار إلى اليمين: فقط النوافذ ذات الانعكاسات ، والنوافذ ذات التعيين الداخلي ، ونموذج الإطار السلكي - التعيين الداخلي لا يضيف أي مضلعات.الشعاع المستخدم لبث الشعاع هو ببساطة شعاع من الكاميرا إلى البكسل. تقع البكسل الذي نقدمه على السطح الخارجي للمبنى ، لذلك لا نستخدم سوى جزء الشعاع بعد البكسل ، لأن هذا هو الجزء الموجود بالفعل داخل المبنى.
قد تبدو Raycasting عملية معقدة ومكلفة ، لكنها في هذه الحالة بالذات بسيطة للغاية وسريعة. الحيلة هي أنه يمكنك إضافة قيود بسيطة: مع رسم الخرائط الداخلية والأسقف والأرضيات على مسافة ثابتة. بمعرفة ذلك ، يمكننا بسهولة حساب الغرفة التي نحن فيها وأين تقع الأرضية والسقف في هذه الغرفة. الأسقف والأرضيات نفسها طائرات هندسية لا نهاية لها. لا يستغرق حساب التقاطع بين مستوى لا نهائي وشعاع سوى خطوات قليلة وينفق القليل من الموارد.
تحتوي الغرفة على 6 طائرات: السقف والأرضية و 4 جدران. ومع ذلك ، نحن بحاجة إلى النظر في ثلاثة منها فقط ، لأننا نعرف في أي اتجاه نتطلع إليه. على سبيل المثال ، إذا نظرنا للأعلى ، فلن نحتاج إلى التحقق من الأرضية أدناه ، لأننا سنرى السقف أعلاه. وبالمثل ، بدلاً من 4 جدران ، نحتاج إلى النظر في اثنين فقط في الاتجاه الذي ننظر فيه.
لتحديد ما نراه ، نحتاج إلى حساب تقاطع الشعاع مع كل من هذه الطائرات الثلاث. يخبرنا التقاطع مع الشعاع الأقرب للكاميرا عن أي الطائرات التي نراها في هذه البكسل. ثم نستخدم نقطة التقاطع كمنسق للنسيج لإيجاد لون البكسل. على سبيل المثال ، إذا تقاطع الشعاع في الموضع (س ، ص ، ض) مع السقف ، فإننا نستخدم (س ، ص) حيث ينسق النسيج ويتجاهل z.
أضفت هنا تحسينًا جيدًا: يمكن إجراء جزء من حسابات التقاطع لكل من الطائرات الثلاث في وقت واحد. تعمل أجهزة التظليل المستخدمة مع float4 بنفس سرعة التعويم ، لذلك بفضل التعبئة الذكية للمتغيرات ، كان من الممكن تقاطع جميع الأشعة الثلاثة مع الطائرات في نفس الوقت. هذا وفر لي بعض الموارد وساعد في تحقيق معدل إطارات مرتفع مع رسم الخرائط الداخلية حتى في عام 2007. قيل لي أن بطاقات الفيديو الحديثة مع تعويم تعمل بشكل أسرع من تعويم 4؛ هذا يعني أن هذا التحسين لم يعد يعمل على الأجهزة الحالية.
يُظهر رسم الخرائط الداخلية بدون زخارف النافذة أن الغرف يتم تقديمها باستخدام المنظور والقوام الصحيحين ، على الرغم من أن الهندسة الإضافية غير مطلوبة.يمكنك معرفة المزيد عن رسم الخرائط الداخلية في
مقالتي . تم نشر هذا المقال في المؤتمر الدولي لرسومات الكمبيوتر في عام 2008. إن الحصول على هذا المنشور الذي تمت مراجعته من قبل الأقران هو طلبي الأول (والوحيد) للحصول على لقب عالم فخور. تصف هذه المقالة أيضًا تجارب إضافية لإضافة تفاصيل ، على سبيل المثال ، تغيير المسافة بين الجدران للغرف ذات الحجم غير المتكافئ والاختيار العشوائي للقوام من أطلس النسيج لمزيد من التباين في الغرفة. كما يصف بالتفصيل الاختلافات الموضحة في الصور أدناه.
يمكن تشغيل الإضاءة وإيقافها في الغرف ديناميكيًا لمحاكاة تغيير النهار والليل. يتم ذلك باستخدام نسيج الضجيج الذي نقرأه ، باستخدام فهرس الغرفة كإحداثيات نسيج.نظرًا لأننا نطلق أشعة فقط في الطائرة ، فإن جميع الغرف عبارة عن مربعات بسيطة تحتوي على مواد. جميع الأثاث في الغرفة سيكون على النسيج ، مما يعني أن يبقى مسطحًا. في Spiderman ، هذا ملحوظ عند الاقتراب من الكاميرا: الطاولات في الغرف هي في الواقع مواد مسطحة على الجدران. كما ترى في الصورة أدناه ، يمكننا استكمال تقنيتنا بطبقة نسيج إضافية واحدة أو أكثر لكل غرفة ، ولكن هذا يرتبط بتكاليف أداء إضافية.
من خلال إجراء مسح شعاعي لطائرة أخرى موازية للسطح الخارجي للمبنى ، يمكنك إضافة أثاث وأشخاص إلى الغرفة. ومع ذلك ، ستظل مسطحة.بعد نشر هذا المنشور ، أخبرني أحد المبرمجين Simcity (2013) أن تقنية رسم الخرائط الداخلية تم استخدامها أيضًا في هذه اللعبة. في ذلك ، تبدو رائعة جدًا ، وسجل المطورون مقطع فيديو رائعًا حول هذا الموضوع. قاموا بتحسين فكرتي الأصلية عن طريق حفظ جميع القوام في نسيج واحد وإضافة غرف من أعماق مختلفة. يبدأ جزء رسم الخرائط الداخلية في الساعة 1:00 صباحًا:
إذا كنت ترغب في استكشاف هذه التقنية بشكل أكثر عمقًا ، يمكنك تنزيل
العرض التوضيحي الداخلي للخرائط باستخدام شفرة المصدر. إذا كنت تعمل في Unreal Engine 4 ، يمكنك العثور على تعيين داخلي كوظيفة محرك قياسية في شكل وظيفة InteriorCubeMap.
بعد سنوات عديدة ، من الرائع أن ترى أخيرًا أن تقنية رسم الخرائط الداخلية الخاصة بي تُستخدم في إنتاج ألعاب الفيديو على نطاق واسع! إذا كنت معتادًا على الألعاب التي تستخدم شيئًا مشابهًا ، فاكتب إليّ بشأنها.