2 डी साइड स्क्रॉलिंग गेम के लिए विरूपण प्रभाव जैसे नकली 3 डी कैसे लागू करें?


14

मैं खोज करने के लिए या यहां तक ​​कि जहां से शुरू करने की उचित शर्तों के बारे में निश्चित नहीं हूं, हालांकि मुझे लगता है कि यह किसी प्रकार का पोस्ट प्रोसेसिंग प्रभाव है।

मैंने ऐसे खेल देखे हैं जैसे I Wanna Be the Boshy and You have to Win गेम जो उन्हें 3D प्रभाव देने के लिए 2D गेम्स के परिप्रेक्ष्य को संशोधित करने का प्रबंधन करता है (नीचे चित्र देखें)। बोसी मूल रूप से ऐसा दिखता है कि आप एक टॉवर (सिलेंडर) के अंदर हैं, जबकि आपके पास गेम जीतने के लिए छवि को विकृत करता है ताकि ऐसा लगे कि आप एक पुराने सीआरटी मॉनिटर पर खेल रहे हैं, विशेष रूप से थोड़ा गोल नज़र।

  • क्या इस प्रभाव के लिए कोई शब्द है?
  • इस प्रभाव (शब्दावली) को लागू करने का मानक तरीका क्या है?
  • मैं एक उच्च स्तरीय इंजन / फ्रेमवर्क में इस तरह के प्रभाव को लागू करने के बारे में कैसे जाऊंगा जैसे कि 20,000 फीट के दृश्य से एकता या XNA / मोनोगेम? (विस्तृत कोड खुशी से स्वीकार किया गया है, लेकिन आवश्यक नहीं है - मुझे पता है कि सटीक कार्यान्वयन विवरण भिन्न हो सकते हैं लेकिन क्या किया जाना चाहिए, इस पर उच्च स्तरीय विवरण बहुत अधिक हो सकते हैं)

आइ वाना बी दा बोशी मैं बोश होना चाहता हूं

आप खेल जीतने के लिए है यहाँ छवि विवरण दर्ज करें


हाँ। तकनीक के लिए सटीक शब्द जानने के लिए मैं हमेशा उत्सुक था। बेस्ट मैं सोच सकता हूं कि "पुराने टीवी स्क्रीन प्रभाव"
Tofu_Craving_R Hood_BlueDragon

बिल्कुल सही! और यह केवल बाद के उदाहरण के लिए काम करता है
स्पार्टनडोनट

जवाबों:


7

इसे पोस्ट-प्रोसेसिंग प्रकार के प्रभाव के रूप में लागू किया जा सकता है। (एकता / एक्सएनए / डीएक्स / ओजीएल / ... का उपयोग करते समय)

ज्यामिति विधि

एक जाल बनाकर शुरू करें जो विरूपण प्रभाव जैसा दिखता है जिसे आप प्राप्त करना चाहते हैं। (जैसे एक आधा सिलेंडर मॉडल (या शंकु, क्षेत्र, घन, ...), बनावट निर्देशांक सेट करने के लिए सुनिश्चित करें)। अपने 2D गेम को हमेशा की तरह रेंडर करें, लेकिन अंतिम परिणाम को बनावट में प्रस्तुत करें। फिर, आपके द्वारा बनाई गई बनावट के साथ विरूपण ज्यामिति को प्रस्तुत करें। आप दुनिया / दृश्य / प्रक्षेपण का उपयोग कर सकते हैं या विरूपण की ताकत को नियंत्रित करने के लिए वास्तविक ज्यामिति / बनावट निर्देशांक को संशोधित कर सकते हैं। (छवि 1 नियमित 2 डी गेम दिखाती है, छवि 2 एक ही क्षेत्र में पेश की गई बनावट को दर्शाती है)

खेल का उदाहरण उदाहरण एक क्षेत्र पर पेश किया गया (ब्लेंडर का उपयोग करके)

विकृति विधि

इमेज प्रोसेसिंग टूल अक्सर विकृति प्रभाव पेश करते हैं जो प्रक्षेपण का अनुकरण कर सकते हैं (ऑप्टिकल भ्रम की तरह)। उदाहरण के लिए, चित्र 3 को पेंट.नेट से उभार फिल्टर का उपयोग करके उत्पन्न किया गया था

उभार विकृति

(आप GPUImage प्रोजेक्ट से इस विकृति प्रभाव का कार्यान्वयन (OpenGL ES 2.0) देख सकते हैं - GPUImageBulgeDistortionFilter देखें)

कार्यान्वयन के आधार पर, विधि या तो तेज़ हो सकती है या आपके इच्छित परिणाम के लिए बेहतर मेल प्रदान कर सकती है। जैसा कि दोनों कार्यान्वयन काफी सरल हैं, आप दोनों को लागू करने की कोशिश कर सकते हैं और देख सकते हैं कि कौन सा आपके लिए सबसे अच्छा काम करता है।


शानदार जवाब!
थोलले

1
दोनों को समान मात्रा में छवि को संसाधित करने की आवश्यकता होती है। प्रोजेक्शन कभी भी कुछ नहीं करने की तुलना में तेज़ होगा , और इमेज प्रोसेसिंग की लागत भी इसी तरह होती है। - "विरूपण" विधि तेज़ है क्योंकि आप वर्टेक्स ट्रांसफ़ॉर्म और रस्टीजेशन को छोड़ रहे हैं, साथ ही आप ड्राइवर को पिक्सेल को पुनरावृत्त करने के लिए अधिक स्वतंत्रता दे रहे हैं, जहां बहुभुज का दृष्टिकोण किस क्रम में ड्रॉ करने के लिए अधिक विशिष्ट है। अपने इच्छित प्रभाव के बारे में कम जानकारी रखें, एक सामान्य समाधान का सहारा ले रहे हैं जो बनावट फ़िल्टरिंग हार्डवेयर पर जोर देता है और वास्तविक फ़िल्टर के बजाय एक सन्निकटन पैदा करता है।
मिकलएच

@ मिक् एलएच: इस तरह के पोस्ट-प्रोसेसिंग प्रोजेक्शन के लिए वर्टिकल की गणना ऑफलाइन या लोड पर की जा सकती है, जो एक बहुत ही सस्ते पास-थ्रू वर्टेकर शेअर की उपज है। एक उभार फिल्टर के लिए, एक पूर्ण स्क्रीन क्वाड को रेंडर किया जाना चाहिए और साथ ही रैस्टराइज़ किया जाना चाहिए (सिवाय इसके कि स्पार्टनडोनट को उदाहरण के लिए कंप्यूटर्स तक पहुंच प्राप्त हो), और प्रत्येक पिक्सेल के लिए ऑफसेट की जगह प्रक्षेपित गणना की जानी चाहिए। इसलिए, मेरा मानना ​​है कि (उपलब्ध साधनों और कार्यान्वयन के आधार पर) दोनों विधियां समान रूप से तेज हो सकती हैं। मैंने अपना उत्तर अपडेट कर दिया है, आपके इनपुट के लिए धन्यवाद।
मिकालस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.