2009-07-03 16 views
5

मैं अपने 2 डी कार्यक्रम में गति धुंध को चकित करने की सोच रहा हूं, लेकिन मुझे अपने वर्तमान एल्गोरिदम के परिणामों पर संदेह है।2 डी गति धुंध समाधान

मेरे दृष्टिकोण इस समय इस तरह दिखता है:

  • ड्रा backbuffer करने के लिए।
  • जब को फ्रंट बफर अपडेट करें, बैकबफर को फ्रंट बफर पर मिलाएं।
  • दोहराएँ

क्या कारण होगा "मोशन ब्लर" प्रभाव स्पष्ट रूप से, सम्मिश्रण है के रूप में गति में वस्तुओं एक fading निशान छोड़ देंगे।

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

क्या कोई समाधान है जो मुझे इसे अधिक कुशलतापूर्वक करने या बेहतर दिखने वाले परिणाम देने देता है?

उत्तर

5

वास्तव में आपको कई इंटरमीडिएट फ्रेम प्रस्तुत करना चाहिए और उन्हें एक परिणाम में मिश्रण करना चाहिए। उदाहरण के लिए, कहें कि आपकी आउटपुट फ्रेम दर 50 एफपीएस है। यदि आप उपयोगकर्ता को दिखाए जाने से पहले 500 एफपीएस और दस फ्रेम के मिश्रित समूहों में आंतरिक रूप से प्रस्तुत करते हैं तो आपको शायद एक उचित परिणाम मिल जाएगा।

इस समय आप जिस दृष्टिकोण का उपयोग कर रहे हैं वह दृढ़ता को अनुकरण करता है, जैसे कि आप धीमी फॉस्फर के साथ पुराने सीआरटी पर प्रतिपादन कर रहे थे। यह गति धुंध के रूप में वास्तव में एक ही बात नहीं है। यदि आपकी फ्रेम अवधि 20ms (1000/50) है तो एक गति धुंधला फ्रेम में 20 मिमी फ्रेम अवधि फैलाने वाले प्रस्तुतिकरण होते हैं, सभी एक ही अल्फा भार के साथ होते हैं। दृढ़ता समाधान में 20, 40, 60, 80, 100 मिमी पहले, धीरे-धीरे बाहर निकलने के लिए प्रस्तुतिकरण होते हैं।

+0

यह एक अच्छा सुझाव है, हालांकि ऐसा लगता है जैसे यह बहुत सारी प्रोसेसिंग पावर ले सकता है। वास्तव में – Skurmedel

+1

। आप जिस प्राइमेटिव्स को प्रतिपादित कर रहे हैं, उसके आधार पर, शायद कुछ अनुकूलन आप लागू कर सकते हैं। या आप मेरे सुझाव और तुम्हारा एक संकर कोशिश कर सकते हैं। आपके द्वारा प्रस्तावित एल्गोरिदम 90 के दशक में एक मानक डेमो कोडिंग चाल था। यह अच्छे परिणाम दे सकता है। हालांकि, यदि आप मोशन ब्लर के सामान्य उद्देश्य, सरल, तेज़ कार्यान्वयन की तलाश में हैं, तो आप भाग्य से बाहर हैं। यही कारण है कि आप इसे कभी भी लागू नहीं देखते हैं। –

1

यह बहुत तेज नहीं हो सकता है। यह सब इस्तेमाल किए गए मिश्रण समारोह पर निर्भर करता है। उदाहरण के लिए क्रमशः पिछली/वर्तमान छवि के लिए 0.1/0.9 कुछ बेहोश निशान प्रदान करेगा।

मैं जोड़ सकते हैं कि इस अनिवार्य है कैसे ओपन में धुंधला गति से किया जाता है (संचय बफर के माध्यम से)

+0

इनपुट के लिए धन्यवाद। यह जानकर अच्छा लगा कि मेरा विचार बहुत शौकिया नहीं था :) – Skurmedel

1

मेरी जानकारी के लिए और अधिक कुशलता से यह करने के लिए कोई वास्तविक तरीका नहीं है। जितना कुशल हो उतना कुशल होता है। फ्रेम दर अच्छी है और आंदोलन भी तेज नहीं है, यह बहुत अच्छा लग रहा है।

प्रत्येक पिक्सेल के लिए सबसे अच्छी लग रही योजना होगी, नई स्थिति से अर्ध-पारदर्शी रेखा को पुरानी स्थिति में खींचें। हालांकि, यह एक मामूली गणना नहीं है।

+0

मुझे यह भी जोड़ना चाहिए कि यह बेहतर दिखने वाली योजना भी गलत दिखाई देगी यदि फ्रेम्स के बीच ऑब्जेक्ट रैखिक रूप से नहीं बढ़ता है। – Goz

+0

धन्यवाद। यह एक दिलचस्प विचार है गोज़, उस पर विचार नहीं किया था। यदि बैकबफर की अस्पष्टता कम है तो यह एक अजीब लग सकता है अगर कोई ऑब्जेक्ट एक छोर से स्क्रीन तक दूसरे तक चला जाता है। – Skurmedel

संबंधित मुद्दे