ไม่นานมานี้ฉันถามว่าจะกำหนดได้อย่างไรเมื่อใบหน้าซ้อนทับกัน คำแนะนำคือการใช้บัฟเฟอร์ Z
อย่างไรก็ตามฉันไม่สามารถใช้บัฟเฟอร์ Z ในโครงการปัจจุบันของฉันได้ดังนั้นฉันจึงต้องการใช้อัลกอริทึมของ Painter ฉันไม่มีเงื่อนงำที่ดีเหมือนเมื่อพื้นผิวอยู่ข้างหลังหรือข้างหน้าอีกแม้ว่า ฉันได้ลองวิธีการมากมาย แต่พวกเขาทั้งหมดล้มเหลวในกรณีขอบหรือพวกเขาล้มเหลวแม้ในกรณีทั่วไป
นี่คือรายการวิธีการเรียงลำดับที่ฉันได้ลองไปแล้ว:
- ระยะทางถึงจุดกึ่งกลางของแต่ละหน้า
- ระยะทางเฉลี่ยของแต่ละจุดยอดของใบหน้า
- ค่าเฉลี่ย z ของแต่ละจุดยอด
- ค่าสูงสุดของจุดยอดของแต่ละหน้าและวาดอันดับแรก
- ค่า z ต่ำสุดของจุดยอดของแต่ละหน้าและวาดสุดท้าย
ปัญหาคือใบหน้าอาจมีระยะใกล้กว่า แต่ก็ยังอยู่ไกลออกไป วิธีการทั้งหมดนี้ดูไม่น่าเชื่อถือ
แก้ไข:ตัวอย่างเช่นในภาพต่อไปนี้พื้นผิวที่มีจุดสีน้ำเงินเป็นจุดกึ่งกลางจะถูกทาสีเหนือพื้นผิวที่มีจุดสีแดงเป็นจุดกึ่งกลางเนื่องจากจุดสีน้ำเงินอยู่ใกล้กว่า อย่างไรก็ตามนี่เป็นเพราะพื้นผิวของจุดสีแดงมีขนาดใหญ่กว่าและจุดกึ่งกลางอยู่ไกลออกไป พื้นผิวที่มีจุดสีแดงควรทาสีเหนือจุดสีน้ำเงินเนื่องจากอยู่ใกล้มากขึ้นในขณะที่ระยะกึ่งกลางบอกว่าตรงกันข้าม
อะไรคือสิ่งที่ใช้ในอัลกอริทึมของ Painter เพื่อกำหนดลำดับของวัตถุที่ควรวาด