एक दृश्य में कई रोशनी संभालना (रंगों के साथ)


9

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

tl; dr: मैं यह कैसे पता लगा सकता हूं कि कौन सी रोशनी केवल दृश्य प्रदान करने के लिए दृश्य को प्रभावित करती है?


OpenGL या DirectX?
क्रिविमिर

6
वास्तव में, 500 लाइट्स आस्थगित प्रकाश व्यवस्था के साथ काफी संभव होगी, जब तक आप उन सभी के लिए छाया नहीं चाहते हैं;)

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

4
@Darkwings आप मूल रूप से यहाँ बता रहे हैं कि ब्लूब ने क्या मांगा था। मैं कैसे चलूँ? खैर, मुझे लगता है कि यहाँ समाधान सिर्फ चलना है! (मेरे लिए काम किया।) ;-) "आपको यह जानने की ज़रूरत है कि क्या वह स्रोत आपके दृश्य में कुछ रोशन कर रहा है"। <- यही कारण है कि वास्तव में वह क्या के लिए पूछता है, वह जानना चाहते हैं कि वह ऐसा कर सकते हैं चाहता है। ^ ^ हालांकि Kikimaru से शंकु / क्षेत्र बात शायद सहायक है।
कुकी ३।

1
ओपी के लिए यह देखने के लिए स्पष्ट नहीं था कि वह केवल दूरी का उल्लेख करता है। प्रत्येक प्रकाश में यह निर्धारित करने के लिए कुछ पैरामीटर होंगे। यदि दिशात्मक रोशनी का उपयोग किया जाता है, तो वे हर जगह पहुंचेंगे, स्पॉटलाइट में एक लक्ष्य क्षेत्र होगा (इसलिए इसे वेक्टर-प्लेन चौराहे के साथ हल किया जा सकता है) और इसी तरह। आपको इस बात पर अधिक सोचना चाहिए कि आप किस रोशनी को दृश्य को प्रभावित करना चाहते हैं , यह देखते हुए कि यदि आपके पास वास्तव में बहुत सारी रोशनी हैं, तो वास्तव में एक-दूसरे के करीब हैं आप अंदाजा लगाना बेहतर होगा (छाया ढलाई के लिए)। IE: एक प्राचीन झूमर पर 100 मोमबत्तियाँ एक एकल प्रकाश के रूप में संभाला जा सकता है।
डार्कविंग्स

जवाबों:


5

बाउंडिंग वॉल्यूम की तुलना में भी सरल;

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

प्रदर्शन कितना महत्वपूर्ण है, इस पर निर्भर करता है, बस थोड़ा और अधिक जटिल है:

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


5
+1 - हालांकि एक सीमा क्षेत्र की तरह संदिग्ध लगता है;)
ज्ञान उर्फ ​​गैरी ब्यूएन

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

5

सबसे सरल तरीका, जिसके बारे में मैं सोच सकता हूं (ईमानदारी से कहूं, तो एक ही रास्ता है) मैंने प्रत्येक प्रकाश को एक बाउंडिंग वॉल्यूम दिया है । यदि बाउंड वॉल्यूम वॉल्यूम को व्यू फ्रुम (या व्यू फ्रॉम की एक बाउंडिंग वॉल्यूम) से जोड़ते हैं, तो प्रकाश लागू करें।

अभी भी रोशनी हो सकती है जो लागू होती हैं भले ही वे किसी भी दृश्य वस्तुओं को प्रभावित न करें लेकिन यह सरल और तेज है। आपके दृश्य ग्राफ की स्मार्ट व्यवस्था का मतलब यह हो सकता है कि बस कुछ चौराहे आपकी अधिकांश रोशनी की जांच करते हैं (ठीक उसी तरह जैसे ऑब्जेक्ट ऑब्जेक्ट के लिए किया जाता है)।

सूर्य की तरह कुछ भी कोई बाउंडिंग वॉल्यूम नहीं हो सकता है (यह निरूपित करने के लिए इसे हमेशा लागू किया जाना चाहिए)।

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