पथ अनुरेखण में परावर्तन या अपवर्तन चुनना


14

मैं अपने पथ अनुरेखक में अपवर्तन और संचरण को लागू करने की कोशिश कर रहा हूं और इसे लागू करने के तरीके पर थोड़ा अनिश्चित हूं। सबसे पहले, कुछ पृष्ठभूमि:

जब प्रकाश किसी सतह से टकराता है, तो उसका एक भाग प्रतिबिंबित होगा, और एक भाग अपवर्तित हो जाएगा: यहाँ छवि विवरण दर्ज करें

कितना प्रकाश प्रतिबिंबित करता है बनाम फ्रैक्शंस समीकरणों द्वारा रेफ्रेक्ट दिया जाता है यहाँ छवि विवरण दर्ज करें

एक पुनरावर्ती किरण अनुरेखक में, सरल कार्यान्वयन प्रतिबिंब के लिए एक किरण और अपवर्तन के लिए एक किरण को शूट करना होगा, फिर फ्रेस्नेल का उपयोग करके एक भारित योग करना होगा।

R=Fresnel()T=1RLo=RLi,reflection+TLi,refraction

हालाँकि, पथ अनुरेखण में, हम केवल एक पथ चुनते हैं। यह मेरा सवाल है:

  • मैं कैसे चुनूं कि क्या गैर-पक्षपाती तरीके से प्रतिबिंबित या अपवर्तित करना है

मेरा पहला अनुमान फ्रेस्नेल के आधार पर बेतरतीब ढंग से चुनने के लिए होगा। उर्फ:

float p = randf();
float fresnel = Fresnel();
if (p <= fresnel) {
    // Reflect
} else {
    // Refract
}

क्या यह सही होगा? या क्या मुझे किसी प्रकार के सुधार कारक की आवश्यकता है? चूंकि मैं दोनों रास्ते नहीं ले रहा हूं।


रूसी रूले
v.oddou

जवाबों:


6

टी एल; डॉ

हां, आप इसे ऐसा कर सकते हैं, आपको सिर्फ दिशा चुनने की संभावना से परिणाम को विभाजित करना होगा।

पूरा जवाब

परावर्तन और अपवर्तन दोनों के साथ सामग्री की अनुमति देने वाले पथ के लक्षणों में नमूनाकरण का विषय वास्तव में थोड़ा अधिक जटिल है।

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

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

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

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

Li(ωi)F(θi)P(ωi)=Li(ωi)F(θi)F(θi)=Li(ωi)

ωi=(ϕi,θi)Li(ωi)F(θi)P(ωi)F(θi)

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


1
यह दिलचस्प है लेकिन मैं एक बिंदु से भ्रमित हूं। क्या आप स्पष्ट कर सकते हैं कि "दिशा चुनने की संभावना द्वारा उस दिशा के लिए परिणाम को विभाजित करने" का क्या अर्थ है? यदि यह एक द्विआधारी विकल्प नहीं है, लेकिन एक निरंतर वितरण से चुनी गई दिशा है, तो क्या संभावना शून्य नहीं होगी?
ट्राइकोप्लाक्स

1
@trichoplax: हाँ, यह होगा, लेकिन उस पैराग्राफ में मैं एक (ढांकता हुआ) फ्रेस्नेल BSDF के लिए सैंपलिंग तकनीक का वर्णन कर रहा था - आदर्श रूप से चिकनी सतह, जो दो डायक डेल्टा कार्यों का योग है। ऐसे मामले में आप कुछ असतत संभावनाओं के साथ एक दिशा चुन रहे हैं। गैर-डेल्टा (परिमित) बीएसडीएफ के मामले में, आप संभावना घनत्व फ़ंक्शन के अनुसार निर्देश उत्पन्न करते हैं। दुर्भाग्य से, डेल्टा और गैर-डेल्टा मामलों को अलग-अलग संभालना पड़ता है, जिससे कोड थोड़ा गड़बड़ हो जाता है। नमूना माइक्रोफैसेट बीएसडीएफ पर अधिक विवरण पाए जा सकते हैं, उदाहरण के लिए वाल्टर एट। अल। [२००।] कागज।
ivokabel

2
@ रीचीम्स: वाल्टर एट। अल। [२०० the] मूल रूप से अभी भी ढांकता हुआ खुरदरी सतहों के लिए अत्याधुनिक है, लेकिन इसे अच्छी तरह से काम करने के लिए आपको एक अच्छे नमूने की आवश्यकता है जो कि हाल ही में Heitz और D'Eon द्वारा प्रकाशित किया गया था 2014 का पेपर "महत्व नमूना माइक्रोफैसेट-आधारित BSDFs विजिबल नॉर्म्स के वितरण का उपयोग करना "। और ध्यान दें कि यह एक एकल-बिखरने वाला मॉडल है जो माइक्रोफैसेट के बीच अंतर-प्रतिबिंबों की उपेक्षा करता है जो इसे उच्च खुरदरापन मूल्यों के लिए नेत्रहीन रूप से अंधेरा बनाता है। अधिक विवरण के लिए मेरा प्रश्न "एकल-बिखरने वाले माइक्रोफैसेट बीएसडीएफ मॉडल में ऊर्जा हानि के लिए मुआवजा" देखें।
ivokabel

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

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