मैं परतों के बीच डाली गई 2 डी छाया को कैसे लागू करूं?


10

मैं 2d छाया को कैसे लागू कर सकता हूं जो वस्तुओं द्वारा एक अलग परत में डाली जाती हैं?

कैटलिन ज़िमा से प्रसिद्ध ट्यूटोरियल में गतिशील प्रकाश व्यवस्था पसंद नहीं है :

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

लेकिन इस वीडियो में पाइप की छाया की तरह :

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

और इस वीडियो में मंच और चरित्र की छाया की तरह :

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

मैं एक दृश्य में एक ही तरह के प्रकाश का उपयोग कई परतों और विभिन्न रंगों के साथ बहुत सी रोशनी के साथ करना चाहूंगा।

मैं उस परत के पीछे की परतों पर परत की एक काली प्रति खींचकर, और उन परतों में छेद के अनुसार इसे समायोजित करने की कल्पना कर सकता था, जिस पर छाया डाली जाती है। लेकिन मुझे उम्मीद है कि इसके लिए कम खर्चीला, पिक्सेल-शेडर आधारित दृष्टिकोण है।

जवाबों:


1

यह मास्किंग के साथ किया जा सकता है। इसे करने के कई तरीके हैं।

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

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

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

draw background
for each light intersecting viewing bounds:
  offset = light.position - camera.position
  offset *= SCALE FACTOR (0.25 maybe)
  draw shadow foreground at offset
draw foreground

रोशनी जो दृश्य के "करीब" हैं, में एक छोटे पैमाने पर कारक होगा। यदि आप एक से अधिक गहराई चाहते हैं, तो वहां कुछ गणित काम करना है, सरल ज्यामितीय सामान।


हाँ यह वही है जो मैं खुद के साथ आया था। हालांकि इसके लिए सही शब्द नहीं पता था कि वह मास्किंग कर रहा था। लेकिन मुझे उम्मीद है कि शायद एक एल्गोरिथ्म अधिक समान होगा कि छाया की जगह 3 डी अंतरिक्ष में कैसे काम करती है ..
बेरी

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