मैं अल्फा सम्मिश्रण और कणों के साथ एक अच्छा अग्नि प्रभाव कैसे प्राप्त कर सकता हूं?


41

OpenGL कण प्रभाव के लिए निम्नलिखित सेटिंग का उपयोग करना:

SRC: GL_SRC_ALPHA
DST: GL_ONE

एक योजक मिश्रण बनाता है, जो एक काले रंग की पृष्ठभूमि पर शानदार दिखता है, लेकिन चमकीले रंगों पर भयानक होता है, क्योंकि यह सफेद रंग में फीका पड़ता है।

मैंने तब अल्फा सम्मिश्रण का उपयोग किया:

SRC: GL_SRC_ALPHA
DST: GL_ONE_MINUS_SRC_ALPHA

यह अन्य पृष्ठभूमि को कणों के रंग को प्रभावित किए बिना उपयोग करने की अनुमति देता है, लेकिन योजक मिश्रण की तुलना में कण स्वयं सुस्त लगते हैं। मैं अल्फा सम्मिश्रण और कणों के साथ एक अच्छा अग्नि प्रभाव कैसे प्राप्त कर सकता हूं?

additive:

काले पर additive नीले पर Additive

अल्फा:

काले पर अल्फा नीले रंग पर अल्फा

अपडेट करें:

नीचे डेविड की सलाह के बाद, मैंने एक अलग बनावट बनाई और फिर बनावट पर ड्राइंग करने से पहले कण प्रभाव पर additive मिश्रण का उपयोग किया। इसके साथ समस्या यह है कि एक अल्फा = 0 बनावट पर ड्राइंग करने से मेरे दुनिया के नक्शे के सामने दिखाई देने वाले कण के सिर्फ रंगीन हिस्से दिखाई देते हैं, क्योंकि आम तौर पर आपके बजाय एक काली पृष्ठभूमि होती है। चाल में दो बनावट का उपयोग करना था। मैंने एक काली बनावट बनाई और फिर उस पर कणों को आकर्षित किया। फिर मैंने इस बनावट से कणों की अल्फा परत को हटा दिया, प्रभावी ढंग से आसपास के सभी ठोस काले को हटा दिया और आंशिक रूप से दिखाई देने वाले कणों को बाहर निकाल दिया, जबकि अंतर्निहित काले रंग को छोड़ दिया जैसा कि आप उम्मीद करेंगे जब एक काली पृष्ठभूमि पर योजक मिश्रण कण बनाते हैं। संक्षेप में, एक भीषण प्रक्रिया, लेकिन मैं अंततः वहां पहुंच गया:

नियमित रूप से additive और मेरा संस्करण

यहाँ वह धागा है जहाँ मैंने अपनी प्रक्रिया पोस्ट की है: http://www.cocos2d-iphone.org/forum/topic/28707?replies=8#post-141528

वीडियो: http://www.youtube.com/watch?v=JptGbEO3b5E

जवाबों:


17

मैं मानता हूं कि मुझे इस समस्या के किसी भी आदर्श समाधान के बारे में पता नहीं है, इसलिए मैं एक ऐसे समाधान का वर्णन करूंगा, जिसके साथ आप सहज हो सकते हैं या नहीं:

  1. एक अलग बनावट (या टारगेट को रेंडर) के साथ एडिटिव ब्लेंडिंग का उपयोग करके सभी कणों को रेंडर करें, जिसकी पृष्ठभूमि पारदर्शी हो
  2. अल्फा सम्मिश्रण का उपयोग करके अपने दृश्य के शीर्ष पर उस बनावट (या लक्ष्य को प्रस्तुत करना) को प्रस्तुत करें ।

मैंने इसे फ़ोटोशॉप में आज़माया और यहां मुझे जो मिला - यह बिल्कुल सही नहीं है, लेकिन कम से कम यह मूल रंगों को बेहतर ढंग से संरक्षित करता है:

यहाँ छवि विवरण दर्ज करें

यहाँ कणों पर योगात्मक सम्मिश्रण किए बिना मूल बनावट है:

यहाँ छवि विवरण दर्ज करें


क्या यह उन्हें दो बनावटों में अलग कर देगा और जैसे कि मैं पृष्ठभूमि पर खींचे जा रहे योज्य मिश्रण की बनावट होगी?
अराम कोचरन

@AramKocharyan मैंने वास्तव में इसे व्यक्तिगत रूप से फ़ोटोशॉप के अलावा किसी अन्य स्थान पर आज़माया नहीं है जहाँ परिणाम उचित लग रहा था। लेकिन मुझे लगता है कि यह आपकी पहली तस्वीर की तरह दिखना चाहिए लेकिन आपकी पृष्ठभूमि के रंग के स्थान पर सभी कालों के साथ। दूसरे शब्दों में, कणों को आपस में जोड़ा जाता है जिसके परिणामस्वरूप विस्फोट के बीच में बड़ा आकर्षण होता है, लेकिन पृष्ठभूमि के साथ नहीं । फिर परिणामी विस्फोट को जोड़ने के बिना आपकी पृष्ठभूमि के ऊपर चिपकाया जाता है जो मूल रूप को संरक्षित करता है।
डेविड गौविया

धन्यवाद जो समझ में आता है, यह फ़ोटोशॉप बनाम एक ओवरले में एक सामान्य मिश्रण की तरह है, लेकिन यह एक पृष्ठभूमि परत पर बैठे ओवरले की छवि की तरह दिखाई देता है। मैं इसे आज़माऊँगा और आपको बताऊँगा।
अराम कोचरन

@AramKocharyan मैं कुछ ही मिनटों में मेरे द्वारा प्राप्त किए गए परिणामों को पोस्ट कर दूँगा ताकि आप तुलना कर सकें।
डेविड गाविया

5
बस इस बाहर फेंक - ... इस तकनीक प्रदर्शन चिंताएं उत्पन्न हो सकती
notlesh

9

प्रीमियर पर एक नजर डालें।

http://blogs.msdn.com/b/shawnhar/archive/2009/11/07/premultiplied-alpha-and-image-composition.aspx


2
इस सूत्र में यह एकमात्र सही उत्तर है। यह दुर्भाग्यपूर्ण है कि यह बहुत ही कठिन है, लेकिन हर किसी को वास्तव में इसे पढ़ना चाहिए। Premultiplied अल्फा additive और अल्फा सम्मिश्रण गठबंधन करने का तरीका है, और यह कई अन्य लाभों के साथ भी आता है।
जेक मैकआर्थर

4

जैसा कि डेविड गॉविया ने बताया, उज्ज्वल पृष्ठभूमि पर योगात्मक सम्मिश्रण के लिए कोई संतोषजनक प्रतिस्थापन नहीं है। सबसे अच्छा प्रभाव मुझे मिला (जिसमें किसी बैकबफ़र को प्रस्तुत करने की आवश्यकता नहीं है) निम्नलिखित GL मिश्रणमोड का उपयोग करना है:

SRC: GL_ONE
DST: GL_ONE_MINUS_SRC_ALPHA

यह additive सम्मिश्रण के रूप में अच्छा नहीं है, लेकिन जिस तरह से बेहतर है GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA। यदि आप शुरू और अंत अल्फा और रंग मूल्यों को थोड़ा मोड़ देते हैं, तो आपको ऐसे परिणाम मिल सकते हैं जो वास्तव में additive सम्मिश्रण के करीब हैं।

कण सम्मिश्रण मोड

ऊपर की छवि GL_SRC_ALPHA, GL_ONEमें बाईं ओर, बीच में है GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHAऔर दाईं ओर आप ब्लेंड मोड देख सकते हैं जो मैं इस सेटअप के लिए प्रस्तावित करूंगा।


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

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

3

क्या आपने दोनों का उपयोग करने की कोशिश की है? अल्फा सम्मिश्रण वाले कुछ कणों पर परत, जो आपके रंगों को जिस तरह से आप चाहते हैं, उसे प्राप्त करना चाहिए, फिर कुछ आकर्षक मिश्रणों के साथ वापस आएं, जो कि आप देख रहे हैं।


यह मेरा अगला विकल्प हो सकता है, मैं कणों को कम से कम रखना चाहता हूं। उम्मीद है कि मैं दोनों को आधा कर सकता हूं।
अराम कोचरन

3

अच्छी तरह से पहली बार, आपके द्वारा उपयोग की जाने वाली कण छवियां एक काले रंग की पृष्ठभूमि में दिखाई देती हैं, जिसके परिणामस्वरूप उस दूसरी छवि में अंधेरे फ्रिंज होते हैं। ऐसा मत करो; यह है, रंग चैनलों पर कण के आकार को आकर्षित नहीं करते। इसके बजाय, छवि को ठोस रंग का होना चाहिए और केवल अल्फा चैनल में आकृति को परिभाषित करना चाहिए।

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


हां बनावट केवल सफेद रंग का ब्रश है जिसमें केंद्र से अलग-अलग अल्फा हैं।
अराम कोचरन

हुह, अगर यह सच है तो यह मेरे लिए अजीब है कि आपके अल्फ़ा ट्रांसपेरेंसी स्क्रीनशॉट में कणों के आस-पास काले घेरे हैं।
झॉकिंग

हां, मुझे यकीन नहीं है कि वे अल्फा सम्मिश्रण के आसपास क्यों बने। लेकिन मेरे पास अब जो है, वह ठीक प्रतीत होता है।
अराम कोचरन


यह बहुत अच्छा लग रहा है, आपको इसे अपने प्रश्न अपडेट में रखना चाहिए।
jhocking
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.