Eu realmente não consigo descobrir o que faz uma superfície se sobrepor a outra. Em um mecanismo 3D que estou criando, minha técnica está falhando em casos extremos.
Meu método é classificar as superfícies a serem pintadas da mais distante para a mais próxima. Para determinar a proximidade, estou comparando os valores médios de z. Às vezes, no entanto, uma superfície sobreposta tem um valor z médio mais alto do que aquele sobreposto. Assim, a superfície mais distante é pintada sobre a mais próxima - resultando em renderizações bizarras como esta:
O que se pretende ver é apenas a superfície frontal roxa do cubo, enquanto a superfície lateral vermelha é pintada sobre a roxa. O valor médio de z da superfície roxa é mais alto e, portanto, 'mais distante'. Então, eu estou tendo alguma dúvida se esta técnica está correta.
O que eu também tentei é distanciar a câmera (ou seja, a origem) da superfície, mas então precisava de um ponto. Eu escolhi o meio de cada superfície, mas isso nem sempre parece funcionar porque nem todas as superfícies são tão grandes quanto as outras.
Portanto, qual é uma maneira confiável de determinar a ordem de proximidade das superfícies em relação à origem?