Je construis un arbre BSP à partir de triangles dans un espace 3D. Tous les triangles ont déjà été transformés pour afficher l'espace avant de construire l'arborescence BSP. Par conséquent, j'utilise le point (0, 0, 0) comme position pour l'œil du spectateur et traverse l'arbre de loin en près et ajoute tous les triangles visités à une liste.

Je parcourt ensuite la liste et transforme les triangles avec une projection orthographique et les dessine à l'écran. Cela fonctionne la plupart du temps, mais parfois j'obtiens d'étranges artefacts en raison de mauvais ordres de triangle. Cela ne se produit jamais si j'utilise une projection en perspective à la place.

Pourquoi cela se produit-il avec une projection orthographique? Les arbres BSP ne fonctionnent-ils pas lors de la résolution du problème de visibilité sous des projections orthographiques? Ou dois-je adopter ma position oculaire?

0
Peter Müller 4 nov. 2019 à 03:45

1 réponse

Je suis presque sûr que vous pouvez utiliser un arbre BSP pour une projection orthographique, mais cela nécessitera des calculs ajustés par rapport à une projection en perspective, car malgré le placement de votre visionneuse à 0,0,0, vous ne pouvez pas trier les polygones par rapport à cela point. Une projection orthographique place efficacement le spectateur à l'infini. En supposant que vous regardez l'axe -Z standard, vous devez traverser votre arbre BSP comme si la visionneuse était à 0,0, ∞. Si vous utilisez ax + by + cz + d = 0 standard pour vos plans divisés, les calculs sont très simples en fait, car vous n'avez qu'à considérer le signe de c pour déterminer le côté de l'avion à traverser en premier. (Si c est zéro, vous pouvez d'abord traverser l'un ou l'autre côté.)

0
Kekoa 4 nov. 2019 à 17:58