2012-03-28 13 views
5

मैं वर्तमान में केविन बीसन (छोटा: http://www.kevinbeason.com/smallpt/) द्वारा विकसित रे ट्रैसर को समझने की कोशिश कर रहा हूं और यदि मैं सही ढंग से कोड को समझता हूं तो वह यादृच्छिक रूप से प्रतिबिंबित या अपवर्तित करने का विकल्प चुनता है किरण (यदि सतह दोनों चिंतनशील और अपवर्तक है)।रे ट्रेसिंग: केवल प्रतिबिंब और अपवर्तन किरणों के बजाय एकल किरण का उपयोग करें

रेखा 71-73:

return obj.e + f.mult(depth>2 ? (erand48(Xi)<P ? // Russian roulette 
radiance(reflRay,depth,Xi)*RP:radiance(Ray(x,tdir),depth,Xi)*TP) : 
radiance(reflRay,depth,Xi)*Re+radiance(Ray(x,tdir),depth,Xi)*Tr); 

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

+2

क्या आपने [इस प्रस्तुति] को देखा है (https://docs.google.com/open?id=0B8g97JkuSSBwUENiWTJXeGtTOHFmSm51UC01YWtCZw) जो सबकुछ बताता है और स्पष्ट रूप से उस साइट से जुड़ा हुआ है? – KillianDS

+0

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

+0

अधिक या कम यादृच्छिक, लेकिन विचार शायद यह है कि आपको अपने पहले कुछ प्रतिबिंब और अवशोषण से अधिक रंग तीव्रता मिलेगी। जितना आगे आप प्रतिबिंबित/अपवर्तित करेंगे, उतना ही महत्वहीन योगदान होना चाहिए। – KillianDS

उत्तर

3

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

2

संभवतः वह सुपर-नमूना पिक्सल पर भरोसा कर रहा है और भरोसा करता है कि औसत रंग लगभग सही काम करेगा, हालांकि सटीक नहीं है।

यानी एक पिक्सेल के माध्यम से आग 4 किरणें और औसत 2 परिलक्षित होते हैं, 2 अपवर्तित होते हैं।
उन्हें एक किरण परिलक्षित और अपवर्तित होने का अनुमान लगाने के लिए संयोजित करें।

+0

कोड को देखने से यह 83 (84) लाइनों पर सही (टिप्पणियां) देखता है। –

संबंधित मुद्दे