Naprawdę nie mogę zrozumieć, co powoduje, że jedna powierzchnia zachodzi na drugą. W silniku 3D, który tworzę, moja technika zawodzi w skrajnych przypadkach.
Moją metodą jest sortowanie powierzchni do malowania od najdalszych do najbliższych. Aby określić bliskość, porównuję średnie wartości z. Czasami jednak nakładająca się powierzchnia ma wyższą średnią wartość Z niż ta, na którą się nakłada. Tak więc powierzchnia znajdująca się dalej jest namalowana na bliższej, co powoduje dziwne renderowanie:
To, co należy zobaczyć, to tylko fioletowa przednia powierzchnia sześcianu, podczas gdy czerwona powierzchnia boczna jest pomalowana na fioletowej. Średnia wartość Z fioletowej powierzchni jest wyższa, a zatem „dalej”. Mam wątpliwości, czy ta technika jest poprawna.
Próbowałem też uzyskać odległość od aparatu (tj. Początek) do powierzchni, ale wtedy potrzebowałem punktu. Wybrałem środek każdej powierzchni, ale nie zawsze wydaje się to działać, ponieważ nie wszystkie powierzchnie są tak duże od siebie.
Dlatego jaki jest niezawodny sposób określenia kolejności bliskości powierzchni w stosunku do źródła?