छाया नक्शा कलाकृतियों


16

मैं एक 3D XNA गेम में छाया जोड़ने की कोशिश करना चाहता हूं। मैंने एक प्रकाश और एक कैमरे के साथ कुछ परीक्षण वातावरण स्थापित किया है। हालांकि, मैं अपने दृष्टिकोण के साथ कलाकृतियों में भाग रहा हूं।

मैं अंतिम परिणाम प्रस्तुत करने के लिए http://pastebin.com/zXi0hmsU से shader कोड का उपयोग कर रहा हूं और छाया नक्शे बनाने के लिए http://pastebin.com/rY4Gcj9N । कोड बहुत सीधे आगे है और इसमें लाइट पॉइंट ऑफ व्यू पॉइंट से डेप्थमैप का उत्पादन शामिल है, फिर इसे कैमरा स्पेस में पेश किया जा रहा है और ऑक्युलस के लिए जाँच की जा रही है।

हालांकि, अधिकांश कोणों से मुझे बहुत बदसूरत परिणाम मिल रहे हैंइस स्क्रीनशॉट में पसंद है

दृश्य में कुछ सरल क्यूब्स होते हैं (हाथ से निर्मित, बाहर का सामना करना पड़ रहा है, बैकफेस को कुल्ला किया जाता है), एक प्रकाश (ऊपरी बाएं कोने में दिखाया गया छाया नक्शा - ठीक दिखता है) और एक कैमरा।

छाया मानचित्रों के लिए मेरा रेंडरटार्ग आरंभीकृत है

int shadowMapSize = 512;
RenderTarget2D shadowMap = new RenderTarget2D(GraphicsDevice, shadowMapSize,
    shadowMapSize, true, GraphicsDevice.PresentationParameters.BackBufferFormat,
    DepthFormat.Depth24Stencil8);
GraphicsDevice.SetRenderTarget(shadowMap);
GraphicsDevice.Clear(Color.White);
GraphicsDevice.DepthStencilState = DepthStencilState.Default;

बाद में, CreateShadowMapप्रभाव लागू किया जाता है, इसके बाद लैंबर्टविथशेड्स प्रभाव होता है। अंत में, छाया मानचित्र का उपयोग करके तैयार किया जाता है SpriteBatch

बाकी के कोड में केवल shaders को सही मान प्रदान करना शामिल है। यदि आवश्यक हो, तो मैं इसे अच्छी तरह से प्रदान कर सकता हूं।

जवाबों:


19

यह विशिष्ट समस्या है जिसे छाया मानचित्र मुँहासे कहा जाता है । यह छाया मानचित्र के अनुमानित पिक्सेल के कारण होता है (गहराई) स्क्रीन पर पिक्सेल से बड़ा होता है (eq गहराई से सही प्रतिनिधित्व नहीं कर सकता है)।

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

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

अधिक उन्नत तकनीकों का अध्ययन करने के लिए कुछ संसाधन।


संपादित करें:


मेरे पास काम में इस विषय पर कुछ और सामग्रियां हैं, यदि आप रुचि रखते हैं तो मैं इसे भी साझा करूंगा।
नोटबैन

बड़े प्रस्तावों के साथ मुख्य समस्या यह है कि अंत खेल में मेरे पास लगभग 3-4 रोशनी हैं जो अप्रत्यक्ष हैं => मुझे वहां घन छाया मानचित्रों का उपयोग करना होगा, जिसके परिणामस्वरूप 24 छायाचित्र हैं। यदि आपके पास अतिरिक्त सामग्री है, तो मैं वास्तव में इसे मेरे साथ साझा करने के आपके प्रयास को रद्द कर दूंगा :-)
Etan

मुझे कम से कम दिलचस्पी है अगर वह मायने रखता है :)
जेम्स

1
@Etan। अगर छाया के बारे में हाँ ओमनी दिशात्मक रोशनी असली दर्द है। (मुझे इसके बारे में कुछ पता है :) gamedev.stackexchange.com/questions/6203/… )। दोहरे पैराबोलॉइड मानचित्रों का उपयोग करने का प्रयास करें। या अगर आपको क्यूबैप्स पसंद है, तो हर चेहरे / रेंडर के लिए फ्रिंज-कैमरा_फ्रस्टम चौराहे से कुछ जगह बचाने की कोशिश करें। आपको हर समय सभी दिशाओं के लिए छाया की आवश्यकता नहीं होगी (विशेषकर एक्सटीरियर में)
नोटाबिन

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