Em geral, a resposta para sua pergunta ('existe um algoritmo disponível para classificar os objetos na ordem correta?') Em configurações arbitrárias em 3D não existe - nenhum algoritmo pode existir, mesmo quando os objetos são tão simples quanto triângulos. É fácil construir três triângulos com uma sobreposição cíclica; por exemplo, imagine olhar para o eixo Z em três triângulos longos e finos:
- A: (2.1, 1.9, 1), (1.9, 2.1, 1), (-1, -1, 0)
- B: (-2,1, 1,9, 0), (-1,9, 2,1, 0), (1, -1, 1)
- C: (2.1, 1, 0), (1.9, 1, 0), (-2, 1, 1)
Então, onde A e B se sobrepõem na tela (próximo ao ponto XY (0,0)), B estará no topo (tem o valor Z mais alto): seu valor Z será aproximadamente 0,66 enquanto A será aproximadamente 0,33. Da mesma forma, onde A e C se sobrepõem (próximo ao ponto XY (1, 1)), A estará no topo; e onde B e C se sobrepõem (próximo ao ponto XY (1, -1)), C estará no topo. Não há como ordenar esses três triângulos, de modo que desenhá-los na tela na ordem especificada dará o resultado correto.
Como sugere Nathan Reed, o fato de você estar em uma visão isométrica significa que provavelmente seria capaz de evitar esse problema em particular; a questão é se vale a pena evitar ou não, e isso depende mais do seu ambiente e da funcionalidade específica que você tem disponível. A maioria das plataformas em que você pode estar desenvolvendo tem pelo menos alguma forma de renderização em 3D prontamente disponível, e minha primeira inclinação seria apenas pegar carona nessa tarefa para seus propósitos.