क्या यह बीयर के कानून को लागू करने का सही तरीका है?


11

जब मैं बीयर के नियम (किसी वस्तु के माध्यम से दूरी पर रंग अवशोषण) को लागू करता हूं, तो यह किसी कारण से बहुत अच्छा नहीं लगता है।

जब मेरे पास वस्तु के पीछे का रंग होता है, तो मैं इस तरह समायोजित रंग की गणना करता हूं:

const vec3 c_absorb = vec3(0.2,1.8,1.8);
vec3 absorb = exp(-c_absorb * (distanceInObject));
behindColor *= absorb;

यह मुझे कुछ ऐसा देगा जो इस तरह दिखता है (लागू अपवर्तन का थोड़ा सा ध्यान दें): यहाँ छवि विवरण दर्ज करें

और यहाँ यह अपवर्तन के बिना है: यहाँ छवि विवरण दर्ज करें

ध्यान दें कि यह एक shader खिलौना के रूप में यहां लागू किया गया है

बीर का कानून क्या करता है, इसका वर्णन पूरा करता है, लेकिन यह इस तरह के शॉट्स की तुलना में बहुत अच्छा नहीं लगता है: यहाँ छवि विवरण दर्ज करें

स्पेक्युलर एक तरफ हाइलाइट करता है, मैं अंतर जानने की कोशिश कर रहा हूं। क्या यह सिर्फ इतना हो सकता है कि मेरी ज्यामिति वास्तव में बहुत अच्छी तरह से दिखाने के लिए बहुत सरल है? या मैं इसे गलत तरीके से लागू कर रहा हूं?


2
हालाँकि आप एक घन की तुलना अधिक जटिल जाल से कर रहे हैं। एक ही परिदृश्य की प्रतिकृति क्यों नहीं? सुसान मॉडल प्राप्त करना आसान है।
बार्ट

यह एक shadertoy कार्यान्वयन में इतना आसान नहीं है! (:
एलन वोल्फ

2
आप क्यूब मुझे सही लगते हैं: अधिक पारदर्शी हो जाओ क्योंकि यह किनारों तक पहुंचता है। यदि आप पूर्ण विकसित सुजैन कर सकते हैं, तो एक गोले को कम से कम दूसरी तस्वीर में दिखावे का बेहतर अनुमान देना चाहिए।
युरिक्स

1
मैं क्षीणन से अपवर्तन को अलग नहीं कर सकता। क्या आप IOR = 1.0 के साथ क्यूब प्रस्तुत कर सकते हैं?
imallett

1
@AlanWolfe आपका IOR = 1 रेंडर बिल्कुल वैसा ही दिखता है जैसा कि मैं इसकी उम्मीद करूंगा, और मैंने shadertoy impl को स्किम्ड किया और यह अच्छा लग रहा है।
imallett

जवाबों:


12

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

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

कुल आंतरिक प्रतिबिंब

बुनियादी शब्दों में, इसका मतलब यह है कि यदि प्रकाश उथले कोण पर हिट करता है, तो प्रकाश माध्यम के आंतरिक भाग को पूरी तरह से प्रतिबिंबित करेगा। इसके लिए जिम्मेदार होने के लिए, आपको फ्रेस्नेल समीकरणों का मूल्यांकन करने की आवश्यकता हैहर बार जब आपकी प्रकाश किरण एक ग्लास / एयर इंटरफेस (आपके जाल की आंतरिक सतह AKA) से टकराती है। Fresnel समीकरण आपको परावर्तित प्रकाश की मात्रा को परावर्तित प्रकाश का अनुपात बताएगा, जबकि TIR के मामले में 1 होगा। फिर आप उचित परावर्तित और अपवर्तित प्रकाश दिशाओं की गणना कर सकते हैं, और प्रकाश के मार्ग को या तो माध्यम से या उसके बाहर खोज सकते हैं। यदि आप एक समान बिखरने गुणांक के साथ एक सरल उत्तल जाल मान लेते हैं, तो बीर के नियम के लिए उपयोग करने की दूरी माध्यम से बाहर निकलने से पहले सभी आंतरिक पथ लंबाई का योग होगा। यहाँ एक क्यूब आपके बिखरे हुए गुणांक और 1.526 (सोडा लाइम ग्लास) के आईओआर के साथ दिखता है, मेरे अपने पथ अनुरेखक का उपयोग करके प्रदान किया गया है जो आंतरिक और बाहरी प्रतिबिंब और अपवर्तन दोनों के लिए खाता है:

पाथ-ट्रैस ग्लास क्यूब

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


1
Here is what a cube looks like (...) using my own path tracer. क्या आपको ऐसा लगता है कि किसी भी मौके पर इसे खुलेआम किया गया है?
WIP

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