मैं कणों को कैसे चमक सकता हूं और इसके चारों ओर प्रकाश डाल सकता हूं?


22

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


3
यहाँ असली मुद्दा यह है कि "प्रकाश महंगा है।" आप कुछ निश्चित बिंदु रोशनी रखने से बेहतर हो सकते हैं जो क्षेत्र को पर्याप्त रूप से प्रकाशमान करते हैं, रोशनी को एक लाइटमैप में सेंकते हैं, फिर कणों का उपयोग करके यह समझाते हैं कि प्रकाश स्रोत कहां से आ रहा है, बल्कि दर्जनों महंगी गतिशील रोशनी का उपयोग कर रहा है।
ड्रेको

@ Draco18s दर्जनों फायरफ्लाइज़ नहीं होने वाले हैं। वे केवल खिलाड़ी के दृश्य के भीतर दिखाई देने वाले हैं। यह ऊपर नीचे है और इस तरह के नियंत्रण के लिए आसान है। और किसी भी समय केवल 10 से कम फायरफ्लाइज़ होना चाहिए। मुझे नहीं लगता कि 10 गतिशील बिंदु प्रकाश महंगा है?
डार्कडेस्ट्री

डिफ़ॉल्ट रूप से, एकता एक समय में केवल दो सक्रिय गतिशील रोशनी को ज्यामिति को रोशन करती है (हालांकि यह एक 2 डी सेटअप के लिए अलग हो सकती है)। आप निश्चित रूप से इसे बढ़ा सकते हैं, लेकिन ध्यान रखें कि ड्रा कॉल पर +1 लाइट x2 प्रभाव है।
ड्रेको १।

2
@ Draco18s यह आगे के रेंडरिंग पथ के बारे में सही हो सकता है, लेकिन डॉक्स में कहा गया है "जब आस्थगित छायांकन का उपयोग किया जाता है, तो रोशनी की संख्या की कोई सीमा नहीं होती है जो किसी वस्तु को प्रभावित कर सकती है" - कई छोटी रोशनी जो केवल एक छोटे से हिस्से को प्रभावित करती हैं स्क्रीन कुशलता से निपटने के उपयोग के मामले में आस्थगित प्रतिपादन पथ का बिल्कुल तरह है। (अद्वितीय प्रकाश प्रति एक ड्रॉ कॉल के बजाय आगे प्रतिपादन के साथ के रूप में एक गुणक का एक विशिष्ट कीमत पर)
DMGregory

ये एक अच्छा बिंदु है। मैं ज्यादातर समय अलग-अलग रेंडरिंग पथों के बारे में भूल जाता हूं।
ड्रेको

जवाबों:


7

प्रकाश उत्सर्जक कण अब 5.5 में एक एकता सुविधा में बनाया गया है।

बस कण निरीक्षक में लाइट्स को सक्षम करें, एक प्रकाश प्रीफैब (दोनों बिंदु और स्पॉट लाइट काम) के संदर्भ में फेंकें, और अनुपात 1 में बदलें।

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

और ध्वनि, कण जो रोशनी उत्सर्जित करते हैं: [यहाँ छवि विवरण दर्ज करें

पता चला, यह एक अधिक अनुकूलित सेटअप है, जो सैकड़ों में अधिकतम रोशनी के साथ भी मेरी रिग पर 1500 + एफपीएस पर चल रहा है।

संपादित करें: कुछ अवलोकन के बाद, यह मुझे लगता है कि कण रोशनी प्रति टुकड़ा प्रकाश और शीर्ष प्रकाश (वर्तमान में अनुकूलन के लिए?) के बीच टॉगल करता है। यदि अधिकतम रोशनी बहुत अधिक सेट की जाती है, तो इससे छोटी मात्रा में दृश्य कलाकृतियां बन सकती हैं।

Edit2: जैसा कि DMGregory द्वारा बताया गया है, कलाकृतियां आगे रेंडर ऑप्टिमाइज़ेशन का एक उपोत्पाद हैं। आस्थगित प्रकाश समस्या हल करती है। जोड़ा गया अच्छे gif


1
ये अच्छी खबर है! :) यह उत्तर और भी बेहतर होगा यदि इसमें नए कण प्रणाली सुविधाओं के साथ इसे कैसे सेट किया जाए, इसके लिए कुछ चरण-दर-चरण निर्देश शामिल थे।
DMGregory

1
आप जिस लाइटिंग बिहेवियर को देख रहे हैं, वह कुछ हद तक ऐसा लगता है, जैसे फॉरवर्ड रेंडरिंग में यूनिटी लागू होती है। क्या आप एक ही व्यवहार देखते हैं जब आप आस्थगित पथ का उपयोग करते हैं?
DMGregory

आप सही हे! आस्थगित प्रतिपादन पथ का उपयोग करते समय कलाकृतियों मौजूद नहीं हैं।
ईक्लेमिस्ट

31

सचेत:

यह उत्तर पुराना है। एकता अब मूल रूप से बिंदु प्रकाश कणों का समर्थन करती है। कृपया पूर्ण विवरण के लिए इस उत्तर को देखें।

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


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

यहाँ एक त्वरित उदाहरण है जिसे मैंने पकाया है: रोशनी के साथ आग का उदाहरण

मैं अपने अधिकतम कणों के लिए डायनेमिक रूप से पर्याप्त रोशनी के लिए इस स्क्रिप्ट का उपयोग करता हूं (सुनिश्चित करें कि आप अपने कण सिस्टम सेटिंग्स को समायोजित करते हैं ताकि अधिकतम उचित हो - 1000 का डिफ़ॉल्ट आपके ग्राफिक्स कार्ड को बहुत खुश नहीं करेगा), और फिर सक्रिय का पालन करने के लिए उन्हें अपडेट करता है। कणों:

[RequireComponent(typeof(ParticleSystem))]
public class ParticleLights : MonoBehaviour {

    public Light lightPrefab;

    ParticleSystem _system;
    ParticleSystem.Particle[] _particles;
    Light[] _lights;


    void Start () {
        _system = GetComponent<ParticleSystem>();
        _particles = new ParticleSystem.Particle[_system.maxParticles];

        _lights = new Light[_system.maxParticles];
        for(int i = 0; i < _lights.Length; i++)
        {
            _lights[i] = (Light)Instantiate(lightPrefab);
            _lights[i].transform.parent = transform;
        }
    }

    void Update () {

        int count = _system.GetParticles(_particles);
        for(int i = 0; i < count; i++)
        {
            _lights[i].gameObject.SetActive(true);
            _lights[i].transform.localPosition = _particles[i].position;

            // Looks like the GetCurrentColor function was added in 5.3.
            // You can use other methods in earlier Unity versions.
            _lights[i].color = _particles[i].GetCurrentColor(_system);
        }

        for (int i = count; i < _particles.Length; i++)
        {
            _lights[i].gameObject.SetActive(false);
        }
    }
}

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

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

आप पा सकते हैं कि अगर आप हर एक को अपनी खुद की गेमऑबजेक्ट पर बेहतर नियंत्रण रखते हैं, तो एक बिलबोर्ड क्वाड और एक लाइट के साथ एक कस्टम आंदोलन / ब्लिंक लिपि के साथ जुड़ा हुआ है, क्योंकि एक भटकने वाली भटकने से एक कण प्रणाली कलात्मकता लेता है। मुझे पता है। ;)


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

आप एक हल्का प्रीफ़ैब कैसे बनाते हैं?
डार्कडेस्ट्री

इसके अलावा, किसी कारण से, ParticleSystem.Particle विरासत कण को ​​संदर्भित करता है। इसके लिए एक GetCurrentColor या GetCurrentSize विधि नहीं है।
DarkDestry

@DarkDestry मैंने प्रीफैब बनाने के बारे में उत्तर के लिए एक नोट जोड़ा है। अनुपलब्ध फ़ंक्शंस के लिए, यह एक संस्करण समस्या हो सकती है - मैं 5.3 में काम कर रहा हूं, एकता के पुराने संस्करणों में आप इसे एक अलग तरीके से कर सकते हैं। कृपया हमजा हसन द्वारा बनाए गए कमरे का उपयोग करते हुए, चैट में कार्यान्वयन विवरणों पर चर्चा करें
DMGregory

तो एक हल्का प्रीफ़ैब सामान्य प्रीफ़ैब के समान है। जब इसे एक हल्के प्रीफ़ैब के रूप में उल्लिखित किया गया था, तो उलझन में था।
डार्कडेस्ट्री

3

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

चमक प्रभावों के बारे में पहले से ही एक प्रश्न और उत्तर है कि 2 डी गेम के लिए एकता में इस तरह से प्रकाश कैसे प्राप्त करें?


0

दुर्भाग्य से, मुझे इसमें वर्तमान रूप में एकता के साथ बहुत अधिक अनुभव नहीं था (मैंने कई साल पहले इसके साथ खिलवाड़ किया था), इसलिए मुझे नहीं पता कि इंजन में आपके साथ काम करने के लिए क्या विशेषता सेट है।

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

इसी तरह के प्रभाव को प्राप्त करने का एक संभावित तरीका यह है कि अपने फायरफ्लाइज़ के नीचे के इलाके में एक प्रीमियर ग्लो टेक्सचर को मैप करें, इलाके और वाई ऑफ़सेट पर चमक के स्थान को नियंत्रित करने वाले एक्स और ज़ेड पोज़िशन्स के साथ (Y = अप / डाउन कॉर्ड सिस्टम को मानते हुए)। इलाके से बनावट के अल्फ़ाज़ को नियंत्रित करना (उज्जवल होना = इलाक़े के करीब)

इस पद्धति में निश्चित रूप से कई कमियां हैं। आप छाया नहीं डालेंगे क्योंकि प्रकाश का उपयोग नहीं किया जाता है, और आप दुनिया में किसी भी अन्य ज्यामिति को प्रभावित नहीं करेंगे (सहारा, पत्ते, आदि)


-2

Lightआग की उत्पत्ति में उपयोग करें और स्क्रिप्ट में इसके आकार के साथ खेलें ताकि यह जलने का प्रभाव दे। और अपने कण प्रणाली का उपयोग करें :)


थेरस दृश्य में कोई आग नहीं। Im दुर्लभ कण अस्तित्व के अंदर और बाहर दिखाई देते हैं। कणों के लिए कोई निश्चित स्थिति नहीं है। कृपया प्रश्न पढ़ें।
डार्कडेस्ट्री

तो, सौदा क्या है? आप पहले से परिभाषित पदों पर अपने कण प्रीफ़ैब के बजाय प्रकाश को संलग्न कर सकते हैं
हमजा हसन

सवाल यह है कि यह कैसे किया जाए। मैं एकता के कण प्रणाली का उपयोग कर रहा हूं। और मैं वहाँ एक prefab नहीं दिख रहा है। जब तक आप मुझसे सिर्फ एक
प्रीफ़ैब

तो आप दृश्य में कण gameObject है। एक ही गेम ऑब्जेक्ट के लिए एक लाइट संलग्न करें और उस गेमऑबजेक्ट को एकता फ़ाइल एक्सप्लोरर में खींचकर उसका प्रीफैब बनाएं।
हमजा हसन

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