CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourHigh-Tech
    • Actus High-Tech
    • Hardware
    • Smartphones
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • High-Tech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

coordonnées d'un vertex

neg282
neg282
Niveau 7
27 avril 2004 à 19:25:58

( avec OpenGl et C++)
Comment faire pour trouver les cordonnées d´un vertex sur l´écran ?

fil_razorback
fil_razorback
Niveau 10
27 avril 2004 à 19:27:31

moi je compterais les pixels a l´ecran ( en petite resolution c´est + facile) mais en même temps je suis pas prgrammeur moi...

:lol:

JeanYvesYves
JeanYvesYves
Niveau 10
27 avril 2004 à 19:34:00

que veux tu dire ?

est ce que tu poses un point dans l´espace, puis tu veux savoir son point de projection sur l´écran ?
dans ce cas :
regarde glRasterPos :
http://pyopengl.sourceforge.net/documentation/manual/glRasterPos.3G.html

LGV
LGV
Niveau 28
27 avril 2004 à 19:35:29

il faut préciser ta question :/

si tu veux travailler en pixels, utilises une matrice de projection orthogonale en rapport avec la taille de ta fenetre : dans ce cas, le vertex en ( x, y, z) correspondra au pixel ( x, y) de l´écran

En directX, tu écriras un truc du style:
D3DXMatrixOrthoLH(&, screenWidth, screenHeight, nearPlane, FarPlane)

si c´est pas ce que tu cherches, expliques plus ton soucis :)

fantometteninja
fantometteninja
Niveau 6
27 avril 2004 à 19:35:31

en utilisant le mode selection et mode feedback ?

fil_razorback
fil_razorback
Niveau 10
27 avril 2004 à 19:36:17

ma methode est plus simple :lol:

neg282
neg282
Niveau 7
27 avril 2004 à 20:28:47

je vais essayé de reformuler ma question de manière plus claire ( je rappelle que c´est avec OpenGL et C++).

J´ai un vertex:

glBegin(GL_POINTS);
glVertex3i(10,10,10);
glEnd();

Je lance mon programme et je vois un point blanc sur l´écran. tout est normal.
Ce que je veux savoir, c´est comment avoir les coordonnées de ce vertex sur la fenetre.
( pour ce qui connaissent DarkBASIC, cela reviendrais a faire :

Vx = object screen x(1)
Vy = object screen y(1)

neg282
neg282
Niveau 7
27 avril 2004 à 21:18:35

personne n´a la réponse, ou personne ne comprend la question ?

i_am_the_law
i_am_the_law
Niveau 6
27 avril 2004 à 21:19:14

" Ce que je veux savoir, c´est comment avoir les coordonnées de ce vertex sur la fenetre"
Si j´ai bien compris tu veux calculer la position sur l´ecran d´un point 3D.
Pour ca tu dois appliquer a la main les meme transformations que fait opengl.

tu multiplie ton vecteur ( x,y,z,1) ( tu rajoutes le 1) par la matrice " modelview"
ensuite tu multiplie ce resultat par la matrice " projection".
Ensuite tu divises x,y,z par la 4eme valeur(qu´on appelle w)
ensuite tu " scales" le resultat pour ton affichage. ( passer de [-1..1] a [0..largeur]
xecran = x*L/2+L/2
de meme pour y.

Si c´etait pas ca alors tu veux p-e connaitre la position ds l´espace ( 3D) d´un point 2d. C´est plus complique :)
Si t´arrives a recuperer d´une maniere ou d´une autre une valeur de z ( c´est ca qui pose pb), tu peux faire le calcul inverse. Par contre pour recuperer la valeur de z c´est assez chaud :)

Si tu veux dessiner en 2d c´est pas bien complique

Avant de dessiner en 2d tu fais
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0,largeur_ecran,0,hauteur_ecran,1,-1);

pour dessiner apres tu peux faire glvertex2f(x,y)

ensuite qd tu as finit

glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();

Si ca repond pas precise un peu mieux ce que tu veux faire, perso je connais pas darkbasic dc tes lignes de code ca m´aide pas.

JeanYvesYves
JeanYvesYves
Niveau 10
27 avril 2004 à 21:21:03

il faut appliquer l´opération suivante ( si je ne me trompe pas)

V = p * M * P

ou M est ta matrice " matrix view" et P ta matrice " projection", p est ton point voulu ( ici , 10,10,10) et V le résultat.

Ce point dépend de la ou tu regardes, de l´éloignement, etc ! !

Il n´y a pas de fonction native, je crois, qui retourne cela, tout simplement car ce n´est pas des masses utilisé.

Mais ça se programme :)

i_am_the_law
i_am_the_law
Niveau 6
27 avril 2004 à 21:21:56
  • plus rapide que JYY* :)
JeanYvesYves
JeanYvesYves
Niveau 10
27 avril 2004 à 21:22:40

lol :)

viki6kornman
viki6kornman
Niveau 10
27 avril 2004 à 22:13:09

:)

Altonfrere
Altonfrere
Niveau 10
27 avril 2004 à 22:17:54

" Il n´y a pas de fonction native, je crois, qui retourne cela, tout simplement car ce n´est pas des masses utilisé"

Pourtant c´est la base même de tout soft de 3D tels que 3dMax ou Maya ( sélection d´un sommet, d´une face, d´un objet etc...), ou même les jeux nécessitant de cliquer sur un objet à la souris.

pas si rare que ca donc :)

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment