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