गोलाकार हार्मोनिक्स और लाइट प्रोब क्या हैं?


14

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

हाल ही में मैट पेट्टीनो ने उन पर एक 6 भाग ब्लॉग श्रृंखला पोस्ट की, लेकिन मुझे अभी भी समझ नहीं आया कि वे क्या हैं।

क्या यह परिवेश प्रकाश व्यवस्था में सुधार करने का एक और तरीका है?

जवाबों:


11

गोलाकार हार्मोनिक्स की मूल बातें

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

ऐसा एक ऑपरेशन जिसे SH में कुशलतापूर्वक किया जा सकता है, उसे " कनवल्शन " कहा जाता है , जिसका अर्थ है एक गोले पर दो गोलाकार 2D कार्यों के उत्पाद को एकीकृत करना। यह प्रकाश गणना में एक सामान्य ऑपरेशन है, उदाहरण के लिए फ़ंक्शन में से एक आपके घटना प्रकाश और एक फ़ंक्शन BRDF हो सकता है। जब एसएच के रूप में प्रतिनिधित्व किया जाता है, तो यह ऑपरेशन केवल दो एसएच गुणांक वैक्टर के डॉट उत्पाद है।

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

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

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

लाइट प्रोब

अब जब आप एसएच के मूल संचालन और गुणों को समझते हैं, तो हम सोच सकते हैं कि उन्हें जीआई पर कैसे लागू किया जाए। एक प्रकाश जांच यह दर्ज करती है कि जांच कहां स्थित है, हर दिशा से कितना प्रकाश आ रहा है। यह एक गोले पर एक 2 डी फ़ंक्शन है और इसे एसएच (या लाल, हरे और नीले रंग के लिए 3 एसएच फ़ंक्शन) के रूप में दर्शाया जा सकता है। प्रकाश विवरण की मात्रा के आधार पर हम उन जांचों में संलग्न करना चाहते हैं जिन्हें हम SH आदेश चुन सकते हैं।

प्रकाश जांच के लिए जो केवल लैंबर्टियन डिफ्यूज लाइटिंग के लिए उपयोग किया जाता है, काफी कम-ऑर्डर एसएच पर्याप्त है क्योंकि कॉन्विनेशन को कोसाइन-लोब के साथ किया जाता है, जिसे ऑर्डर -2 एसएच (9 गुणांक) के साथ दर्शाया जा सकता है। प्रकाश जांच के लिए एसएच गुणांक केवल जांच के बिंदु पर एक क्यूबैप प्रदान करके और फिर इसे एसएच में पेश करके उत्पन्न किया जा सकता है।

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


सरल छवि आधारित प्रकाश व्यवस्था पर इस पद्धति का उपयोग करने के क्या लाभ हैं?
अर्जन सिंह

आपके पास बेहतर गुणवत्ता वाले कम-आवृत्ति वाले प्रकाश हो सकते हैं, जो स्टोरेज और प्रदर्शन आवश्यकताओं की तुलना में क्यूबैप्स का उपयोग करते हैं।
जार्कोल

16

गोलाकार हार्मोनिक्स

यदि आप जानते हैं कि एक फूरियर रूपांतरण क्या है, तो आप पहले से ही लगभग जानते हैं कि गोलाकार हार्मोनिक्स क्या हैं: वे सिर्फ एक फूरियर रूपांतरण हैं, लेकिन एक रैखिक आधार के बजाय एक गोलाकार पर। यही है, जबकि एक फूरियर रूपांतरण एक फ़ंक्शन का प्रतिनिधित्व करने का एक अलग तरीका है , गोलाकार हार्मोनिक्स ध्रुवीय कार्यों के लिए अनुरूप चीज़ हैं ।( θ , φ )f(x)f(θ,ϕ)

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

हम आमतौर पर छवियों का प्रतिनिधित्व करने के लिए फूरियर रूपांतरण का उपयोग करते हैं, जो सिर्फ 2 डी डिजिटल सिग्नल हैं। यह उपयोगी है क्योंकि आप साइन की कुछ तरंगों को फेंक सकते हैं (या उस सटीकता को कम कर सकते हैं जिसके साथ आप उनके आयाम को स्टोर करते हैं) बिना इस बात को बदले कि छवि मानव आंखों की तरह दिखती है। OTOH, पिक्सेल को फेंकने से छवि का रूप बहुत बदल जाता है।

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

गोलाकार हार्मोनिक्स फूरियर रूपांतरण की तरह होते हैं, लेकिन साइन तरंगों के बजाय, वे एक गोलाकार फ़ंक्शन का उपयोग करते हैं, इसलिए रैखिक कार्यों (जैसे छवियां) के बजाय, वे गोले पर परिभाषित कार्यों (जैसे पर्यावरण के नक्शे) का प्रतिनिधित्व कर सकते हैं।

प्रकाश जांच

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

क्योंकि आपके पास एक गोलाकार लेंस वाला कैमरा नहीं हो सकता है जो सभी दिशाओं से एक बिंदु तक पहुंचने वाले सभी प्रकाश को रिकॉर्ड करता है, आप इसे गोलाकार दर्पण की सामान्य तस्वीरें खींचकर रिकॉर्ड करते हैं, और फिर एक गोले पर छवियों को दोहराते हैं।

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

उनका एक साथ उपयोग करना

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

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


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

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

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

आह हाँ, यह सच है। मुझे लगता है कि आपको आधे आवृत्ति की आवश्यकता है लेकिन जटिल (बनाम वास्तविक) आवृत्ति डोमेन परिणाम। या DFT और वास्तविक डोमेन का उपयोग DFT की आवृत्ति से दोगुना है।
जार्कोल

5

गोलाकार हार्मोनिक्स

मान लीजिए कि आपके पास एक सरणी में कुछ डेटा है, लेकिन आप कम बाइट्स के साथ उस डेटा का प्रतिनिधित्व करना चाहते हैं।

ऐसा करने का एक तरीका कच्चे मूल्यों के बजाय डेटा को एक फ़ंक्शन के रूप में व्यक्त करना हो सकता है।

आप इसे एक लीनियर फ़ंक्शन के रूप में दर्शा सकते हैं: y=ax+b

इसके बजाय मूल्यों की अपनी सरणी को संग्रहीत करने के बजाय आप बस और स्टोर कर सकते हैं ।bab

समस्या यह है, एक रेखीय समीकरण संभवतः आपके डेटा के लिए एक खराब अनुमान है।

आप इसके बजाय एक द्विघात प्रयास कर सकते हैं: y=ax2+bx+c

अब और स्टोर करने के बजाय , आप , और स्टोर ।b a b cababc

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

गोलाकार हार्मोनिक्स एक फ़ंक्शन बनाने का एक तरीका है जो एक बजाय एक गोले पर परिभाषित होता है जैसे मैं ऊपर बात कर रहा था।f(x)

ऊपर के उदाहरणों की तरह, आप डेटा की गणना करने के लिए कम भंडारण, और कम गणना के साथ कुछ बनाने के लिए एक निचले क्रम के गोलाकार हार्मोनिक्स फ़ंक्शन का उपयोग कर सकते हैं।

दूसरी ओर, आप ऑर्डर को बढ़ा सकते हैं और अपने मूल डेटा को बेहतर सन्निकटन प्राप्त कर सकते हैं, लेकिन अधिक संग्रहण स्थान की लागत पर, और डेटा के एक बिंदु की गणना के लिए अधिक गणना की आवश्यकता होती है।

चरम में, आप कई गोलाकार हार्मोनिक शब्दों के रूप में उपयोग कर सकते हैं, जैसा कि आपके सरणी में नमूने थे, और फिर आप अपने मूल सरणी को फिर से बना सकते हैं, लेकिन आप ऐसा करने में बहुत सारी गणना खर्च करते हैं, और आप बस अधिक से अधिक संग्रहण स्थान का उपयोग कर रहे हैं जैसा आपने शुरू किया।

इसके कारण, व्यवहार में, गोलाकार हार्मोनिक्स फ़ंक्शंस बहुत लाभ प्रदान नहीं करते हैं यदि आपको ठीक विवरण का प्रतिनिधित्व करने की आवश्यकता है - जैसे कि एक क्षेत्र पर एक तेज प्रतिबिंब - लेकिन वे डेटा के लिए सस्ते हो सकते हैं जिसमें ठीक विवरण नहीं है (डेटा जो doesn 't में उच्च आवृत्ति सामग्री है)। वे वर्णक्रमीय विश्लेषण या दृढ़ संकल्प जैसे आवृत्ति-डोमेन गणना करने के लिए भी उपयोगी हैं।

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

मैं दूसरे व्यक्ति को प्रकाश जांच की व्याख्या छोड़ दूंगा: पी


क्यों गिरा वोट? : पी
एलन वोल्फ

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

और क्षमा करें, मुझे लगा कि वोट डालने के बाद यह एक अन्यथा मददगार उत्तर में एक अकेले संदिग्ध दावे के लिए कम कठोर था, लेकिन जब तक मेरे पास दूसरे विचार थे तब तक मेरा वोट बंद था।
दान हुल्म

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

यह सच है अगर आप व्यक्तिगत नमूनों को फिर से संगठित करने में सक्षम होना चाहते हैं, लेकिन फूरियर के सभी उपयोगों की आवश्यकता नहीं है - इसी तरह एसएच के सभी उपयोगों के लिए नहीं। यदि आप एक कनविक्शन करने जा रहे हैं, तो नमूनों को वापस बदलने से पहले आवृत्ति डोमेन में ऐसा करना बहुत सस्ता है। क्या आप अपना जवाब देने के बाद मुझे अपने जवाब में यह स्पष्ट करने के लिए एक संपादन का प्रस्ताव देंगे?
दान हुल्म
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.