Question

Je sais comment tester l'intersection entre un point et un triangle.

... Mais je ne l'obtenir, comment je peux déplacer la position de départ du point sur le plan de l'écran avec précision en utilisant mes coordonnées de la souris, de sorte que l'angle du point devrait changer en fonction de l'endroit où le curseur de la souris sur l'écran, aussi cela devrait fonctionner parfaitement, peu importe l'angle sous lequel perspective j'utilise dans mon application OpenGL, donc l'angle point serait différent sur les différents angles de perspective ... gluPerspective () est la fonction im parle.

Était-ce utile?

La solution

Eh bien, va prendre un coup de feu et deviner ce que vous voulez dire. La conjecture est que vous voulez choisir des objets avec votre souris. Départ:

glUnProject .

retransforme les coordonnées écran en coordonnées du monde 3D.

Google a plus d'informations si vous avez un problème.

Vive!

Autres conseils

Oui, je veux déplacer le point sur le plan de l'écran, donc par exemple que je pourrais rendre un cube sur ce point où ma souris est actuellement, en utilisant les coordonnées 3D, puis je tire une ligne de cette position à l'endroit où ma souris pointe, il a frappé si le triangle dans mon monde 3D, et que la façon dont je pourrais sélectionner cet objet avec la souris.

désolé d'être clair: /

-

Edit: youpi je l'ai eu à travailler avec ce tutoriel nehe! merci, je ne savais pas que ce serait facile!

Ceci est le code im en utilisant maintenant et il fonctionne très bien:

void GetOGLPos(int x, int y, GLdouble &posX, GLdouble &posY, GLdouble &posZ){
    GLint viewport[4];
    GLdouble modelview[16];
    GLdouble projection[16];
    GLfloat winX, winY, winZ;

    glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
    glGetDoublev(GL_PROJECTION_MATRIX, projection);
    glGetIntegerv(GL_VIEWPORT, viewport);

    winX = (float)x;
    winY = (float)viewport[3]-(float)y;
    glReadPixels(x, int(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ);

    gluUnProject(winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ);
}

Vous devez générer un rayon (ligne) en passant par l'emplacement de la souris perpendiculaire à l'écran.

Je recommande d'obtenir des informations de base sur la géométrie 3D et des projections 2D avant d'aller beaucoup plus loin.

Consultez Wikipedia

Recherche de livre sur Google est venu avec quelques titres.

Foley & Van Dam est bien le livre définitif - ici sur Amazon.co.uk ou ici sur Amazon.com

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