पेंटर के एल्गोरिदम के साथ सटीक परिणाम कैसे प्राप्त करें?


14

कुछ समय पहले मैंने पूछा था कि कैसे निर्धारित किया जाए कि एक चेहरा दूसरे को ओवरलैप कर रहा है। ज़ेड-बफर का उपयोग करने की सलाह दी गई थी।

हालाँकि, मैं अपने वर्तमान प्रोजेक्ट में Z- बफर का उपयोग नहीं कर सकता और इसलिए मैं पेंटर के एल्गोरिथ्म का उपयोग करना चाहूंगा। जब कोई सतह पीछे या दूसरे के सामने होती है तो मेरा कोई अच्छा सुराग नहीं होता है। मैंने कई तरीकों की कोशिश की है, लेकिन वे सभी किनारे के मामलों में विफल होते हैं, या वे सामान्य मामलों में भी विफल होते हैं।

यह उन छंटाई विधियों की एक सूची है जिन्हें मैंने अब तक आज़माया है:

  • प्रत्येक चेहरे के मध्य बिंदु की दूरी
  • प्रत्येक चेहरे के प्रत्येक शीर्ष पर औसत दूरी
  • प्रत्येक शीर्ष के औसत z मान
  • प्रत्येक चेहरे के वर्टिकल का सबसे बड़ा z मान
  • प्रत्येक चेहरे के वर्टिकल का सबसे कम z मान और उन अंतिम को ड्रा करें

समस्या यह है कि एक चेहरे के पास एक दूरी हो सकती है लेकिन अभी भी दूर है। ये सभी विधियाँ अविश्वसनीय लगती हैं।

संपादित करें: उदाहरण के लिए, निम्न छवि में मध्य बिंदु के रूप में नीले बिंदु के साथ सतह को मध्य बिंदु के रूप में लाल बिंदु के साथ सतह पर चित्रित किया जाता है, क्योंकि नीले बिंदु करीब है। हालाँकि, यह इसलिए है क्योंकि लाल बिंदु की सतह बड़ी होती है और मध्य बिंदु दूर होता है। लाल बिंदु के साथ सतह को नीले रंग के ऊपर चित्रित किया जाना चाहिए, क्योंकि यह करीब है , जबकि मध्य बिंदु दूरी विपरीत कहता है।

यहाँ छवि विवरण दर्ज करें

वास्तव में पेंटर के एल्गोरिथ्म में किस क्रम में वस्तुओं को खींचा जाना चाहिए यह निर्धारित करने के लिए उपयोग किया जाता है?


1
चित्रकारों एल्गोरिथ्म बस सामने से पीछे से आ रहा है।
जोनाथन कोनेल

1
@ 3nixios: हाँ, जाहिर है, लेकिन मैं 'बैक टू फ्रंट' के क्रम को किस तरीके से निर्धारित कर सकता हूँ?
pimvdb

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

@ 3nixios: आप पूरी तरह से सही हैं, लेकिन मैं जिस समस्या का सामना कर रहा हूं वह दूरी की गणना है। जैसा कि मैंने कहा, मैंने कई दूरी के तरीकों की कोशिश की है, लेकिन वे सभी सही नहीं हैं। यह आदेश मिडपॉइंट की दूरी की छँटाई के परिणामस्वरूप होता है : i.imgur.com/AcfCm.png
pimvdb

1
क्या आपके सभी बहुभुज एक नियमित ग्रिड की तरह हैं? यदि ऐसा है तो ग्रिड विशिष्ट चीजें हो सकती हैं जो आप इसमें सुधार कर सकते हैं।
सिस्कोपफोन 3

जवाबों:


14

आमतौर पर कैमरे के लिए एक बहुभुज के मध्य बिंदु की दूरी का उपयोग जेड-सॉर्टिंग के लिए किया जाता है। चित्रकार का एल्गोरिथ्म प्रकृति द्वारा 100% सटीक नहीं हो सकता है। हमेशा ऐसे मामले होंगे जहां छंटाई विफल हो जाएगी, कोई फर्क नहीं पड़ता कि आप किस संदर्भ बिंदु का उपयोग करते हैं।

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

इस पॉवरपॉइंट फ़ाइल को मिला जो समस्या को अच्छी तरह से दिखाता है ( पीडीएफ संस्करण )।


उस पावरपॉइंट के लिए धन्यवाद, इसने समस्या को हल करने में मेरी मदद की।
pimvdb

लिंक टूट गया है। क्या कोई एक प्रति मिल सकती है?
केवॉन

1
@ केवॉन एडिटेड। मुझे फ़ाइल के लिए एक कार्य लिंक मिला।
बुमज़ैक

1

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

यह भी ध्यान दें कि ऑर्थोग्राफ़िक और परिप्रेक्ष्य प्रक्षेपण के साथ काम करते समय बहुभुज और बीपी-ट्री के खिलाफ कैमरा प्लेसमेंट के पक्ष का निर्धारण करने के लिए परीक्षण थोड़ा अलग हैं।

यदि आप इनपुट बहुभुजों का विभाजन नहीं कर सकते, तो मुझे लगता है कि आप भाग्य से बाहर हैं।

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