यूनिटी 3 डी में रोशनी कैसे रोकी जाए?


9

सबसे पहले, मैं एकता प्रो।

मैं रोशनी को कम करने के लिए देख रहा हूं जब प्रदर्शन में सुधार के लिए उन्हें थोड़ी देर के लिए नहीं देखा जा रहा है। मेरे द्वारा चलाए जाने वाले मुख्य तरीके BecameV अदृश्य () का उपयोग कर रहे थे और कैमरा फ्रुम का परीक्षण कर रहे थे।

मेरी मुख्य समस्या यह थी कि अगर खिलाड़ी एक ऐसा क्षेत्र देख रहा है जो रोशनी से जगमगाएगा, तो मैं चाहता हूं कि प्रकाश चालू रहे।

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

क्या किसी को एकता प्रो में एक आसान तरीका पता है रोशनी को हल करने के लिए? या आप मुझे उस कैमरा फुलक्रम विधि का उपयोग करने का एक अच्छा तरीका बता सकते हैं जिसके बारे में मैं बात कर रहा था?


1
आप जांच कर सकते हैं कि कैमरा फ्रिउम और लाइट्स फ्रॉस्ट इंटरसेक्ट करता है, लेकिन मुझे उम्मीद है कि एकता पहले से ही ऐसा कर रही है।
आर्ची

1
यूनिटी प्रो में, ऑक्युपेशन कल्लिंग को रोशनी भी संभालनी चाहिए।
आर्ची

ठीक है, मेरे कलाकार ने कहा था कि ऑक्युलेशन कल्लिंग रोशनी के लिए काम नहीं करेगा। तो मैं शायद अपने विभिन्न प्रकाश स्रोतों को पहले से ही स्थापित किए गए रोड़ा क्षेत्रों में स्थित के रूप में सेट करूँगा?
टिमोथी विलियम्स

और कैमरा और लाइट फ्रम की जाँच करने के लिए कुछ ऐसा है जैसे प्रत्येक अभिभावक काम कर सकता है, हालाँकि मुझे 360 डिग्री में काम करने की आवश्यकता होगी।
टिमोथी विलियम्स

लगता है कि कलाकार और मैं कोशिश करने के बावजूद लाइटिंग के साथ काम नहीं कर रहे हैं। मैं वास्तव में एक प्रकाश को कैसे रोकूंगा?
टिमोथी विलियम्स

जवाबों:


1

आप रोशनी को रोकने के लिए अपनी खुद की स्क्रिप्ट लिख सकते हैं। कुछ इस तरह मुख्य कैमरे से जुड़ी:

List<Light> Lights = new List<Light>();
const float OccludeDist = 100;
void Update()
{
    foreach (Light light in Lights)
    {
        if ((transform.position - light.transform.position).sqrMagnitude > OccludeDist * OccludeDist))
        {
            light.enabled = false;
        }
        else{
            light.enabled = true;
        }
    }
}

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


अच्छा और सरल :)
ḿáḿíṅḡ éíé
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.