Question

Je suis vraiment confus au sujet de la transformation de modelview OpenGL. Je comprends tous les processus de transformation, mais quand il vient à la matrice de projection, je suis perdu: (

Si j'ai un point P (x, y, z), comment puis-je vérifier si ce point sera établi sur un volume de découpage défini soit par en volume de découpage parallèle ou le volume de découpage en perspective? Quel est l'arrière-plan mathématique de ce processus?

Était-ce utile?

La solution

Appliquer la matrice modèle-vue-projection de l'objet, puis vérifier si elle se trouve en dehors du plan de coordonnées tronconique, qui est définie par les plans:

    -w < x < w
    -w < y < w
     0 < z < w

Donc, si vous avez un point p qui est un vec3, et une matrice modèle-vue-projection, M, puis en GLSL il ressemblerait à ceci:

    bool in_frustum(mat4 M, vec3 p) {
        vec4 Pclip = M * vec4(p, 1.);
        return abs(Pclip.x) < Pclip.w && 
               abs(Pclip.y) < Pclip.w && 
               0 < Pclip.z && 
               Pclip.z < Pclip.w;
    }

Autres conseils

Pour déterminer si un point donné sera visible à l'écran, vous testez contre le affichage frustum . Voir ce tutoriel culling frustum:

http://www.lighthouse3d.com/tutorials/view-frustum-culling /

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top