Il y a quelque temps, j'ai demandé comment déterminer quand un visage en chevauchait un autre. Le conseil était d'utiliser un Z-buffer.
Cependant, je ne peux pas utiliser de Z-buffer dans mon projet actuel et j'aimerais donc utiliser l'algorithme du peintre. Cependant, je n'ai aucune idée de quand une surface est derrière ou devant une autre. J'ai essayé de nombreuses méthodes, mais elles échouent toutes dans des cas marginaux, ou elles échouent même dans des cas généraux.
Voici une liste des méthodes de tri que j'ai essayées jusqu'à présent:
- Distance au milieu de chaque face
- Distance moyenne à chaque sommet de chaque face
- Valeur z moyenne de chaque sommet
- Valeur z la plus élevée des sommets de chaque face et dessinez-les en premier
- Valeur z la plus basse des sommets de chaque face et dessinez ces derniers
Le problème est qu'un visage peut avoir une distance plus proche mais est encore plus éloigné. Toutes ces méthodes semblent peu fiables.
Modifier: Par exemple, dans l'image suivante, la surface avec le point bleu comme milieu est peinte sur la surface avec le point rouge comme milieu, car le point bleu est plus proche. Cependant, cela est dû au fait que la surface du point rouge est plus grande et que le point médian est plus éloigné. La surface avec le point rouge doit être peinte sur la bleue, car elle est plus proche , tandis que la distance médiane indique le contraire.
À quoi sert exactement l'algorithme du peintre pour déterminer l'ordre dans lequel les objets doivent être dessinés?