2011-04-07 10 views
5

मैं वर्तमान में एक्सएनए में 2 डी "वर्म्स" क्लोन पर काम कर रहा हूं, और इनमें से एक विशेषता "विकृत" इलाके है (उदाहरण के लिए जब एक रॉकेट इलाके को हिट करता है, वहां एक विस्फोट है और इलाके का एक हिस्सा गायब हो जाता है)।एक्सएनए "जला" प्रभाव के साथ क्रेटर (जीपीयू के माध्यम से)

मैं वर्तमान में ऐसा कैसे कर रहा हूं यह एक बनावट का उपयोग कर रहा है जिसमें प्रगतिशील उच्च लाल मूल्य है क्योंकि यह केंद्र तक पहुंचता है। मैं उस "विकृत" बनावट के प्रत्येक पिक्सेल के माध्यम से चक्र चलाता हूं, और यदि वर्तमान पिक्सेल एक इलाके पिक्सेल को ओवरलैप करता है और इसमें पर्याप्त लाल मूल्य होता है, तो मैं पारदर्शी को इलाके का प्रतिनिधित्व करने वाले रंग सरणी को संशोधित करता हूं। यदि वर्तमान पिक्सेल में पर्याप्त लाल मूल्य नहीं है, तो मैं भू-रंग का रंग काला कर देता हूं (यह लाल मूल्य को लाल मान के करीब काला हो जाता है)। इस ऑपरेशन के अंत में मैं अपने इलाके बनावट को अद्यतन करने के लिए SetData का उपयोग करता हूं।

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

यहाँ कैसे प्रभाव जला अभी दिखाई देता है:

Burn Effect http://i52.tinypic.com/2h6f2nt.png

किसी को भी एक विचार मैं एक समान प्रभाव जला (गठन गड्ढा चारों ओर किनारों इसका रंग गहरा) कैसे बना होगा है? मैं शेडर्स से पूरी तरह से अपरिचित हूं लेकिन अगर इसकी आवश्यकता है तो मैं वास्तव में आभारी रहूंगा अगर कोई मुझे यह कैसे करना है, इस बारे में सोचता है। यदि कोई अन्य तरीका भी है जो बहुत अच्छा होगा।

उत्तर

8

लगता है जैसे आप सही तरीके से अच्छे हैं। लेकिन आप हाथ से बहुत सी चीजें कर रहे हैं, जो सिर्फ स्प्राइट्स ड्राइंग करके और सही सूत्रों को लागू करके भी किया जा सकता है।

उदाहरण के लिए:
अपने इलाके मान लीजिए बनावट के अल्फा चैनल में एक विशाल बनावट में सहेजा गया है। 1 इलाके है, 0 कुछ भी नहीं है।

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

मुझे नहीं पता कि आप इसके लिए भी समाधान चाहते हैं, लेकिन अब आपके पास एक है।

जला प्रभाव
अब जब हम एक बनावट में हमारे इलाके की है के लिए, हम एक शेडर (जैसा कि आपने कहा) का उपयोग कर ड्राइंग पर एक पोस्ट प्रभाव कर सकते हैं। शेडर बनावट के अल्फा चैनल प्राप्त करता है और अब हमारे जल प्रभाव को पाने के लिए अलग-अलग चीजें कर सकता है।

  1. पहला विकल्प किनारे का पता लगाने के लिए है। सभी 4 दिशाओं में कुछ पिक्सल देखें और देखें कि पिक्सेल किनारे पर है या नहीं। यदि ऐसा है, तो इसे जला करने की ज़रूरत है, उदाहरण के लिए, किनारे की दूरी (या आपके पसंदीदा किसी भी अन्य कार्य) के साथ गुणा करना
  2. दूसरा तरीका बिल्कुल पहले जैसा ही है, लेकिन यह दो चरणों में करता है। सबसे पहले आप किनारे का पता लगाने के समान प्रकार करते हैं, लेकिन आप किनारों को एक अलग बनावट में सहेजते हैं। अब, जब आप अपना बनावट खींच रहे हैं, तो आप अपने किनारों को ओवरले कर सकते हैं। तो यह एक ही समय में जमीन खींचने के समान ही है।

दूसरे विकल्प के लिए मुख्य अंतर यह है कि आप अपनी सामान्य जमीन को खींचने का भी चयन कर सकते हैं और आप प्रतिपादन पर ग्राउंड बनावट में पिक्सेल समायोजित नहीं कर रहे हैं।

मुझे पता है कि यह एक लंबी कहानी है, लेकिन यह एक अच्छी तकनीक है। टोन शेडर्स पर एक नज़र डालें, वे किनारे का पता लगाने के साथ-साथ यह 3 डी भी है।

कीवर्ड: टून छायांकन, एचएलएसएल, पोस्ट प्रभाव, किनारे का पता लगाने, छवि प्रसंस्करण।
अनुशंसित पढ़ने: http://rbwhitaker.wikidot.com/xna-tutorials

+0

लिंक के लिए धन्यवाद – Benjamin

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