AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 [A peu près résolu]soucis detection souris en 3D

Aller en bas 
AuteurMessage
glcraft
Utilisateur confirmé: Rang *****
avatar

Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

MessageSujet: [A peu près résolu]soucis detection souris en 3D   Ven 20 Juil 2012 - 22:15

voila, je veux que la souris interagisse avec la scene en 3D
voici le vecteur direction que j'ai trouver : gabin49

Citation :
vec.x = ldir_x(1,-atan((event.button.x-250.0f)/600.0f)/M_PI*180/45*70+camera.dir.x);
vec.y = ldir_y(1,-atan((event.button.x-250.0f)/600.0f)/M_PI*180/45*70+camera.dir.x);
vec.z = ldir_y(1,-atan((event.button.y-250.0f)/600.0f)/M_PI*180/45*70+camera.dir.y);

glTranslatef(camera.pos.x+vec.x,camera.pos.y+vec.y,camera.pos.z+vec.z);

la fenetre fait 500*500, le FOV est a 70
le soucis est la, lorsque je met la souris sur le bord en abscisse(en haut), ca fonctionne nickel :

mais lorsque je met la souris au milieu en abscisse(toujours en haut) ca donne ca :


j'ai essayer de modifier l'equation :

Citation :
vec.x = ldir_x(ldir_x(1,-atan((event.button.y-250.0f)/600.0f)/M_PI*180/45*70+camera.dir.y),-atan((event.button.x-250.0f)/600.0f)/M_PI*180/45*70+camera.dir.x);
vec.y = ldir_y(ldir_x(1,-atan((event.button.y-250.0f)/600.0f)/M_PI*180/45*70+camera.dir.y),-atan((event.button.x-250.0f)/600.0f)/M_PI*180/45*70+camera.dir.x);
vec.z = ldir_y(1,-atan((event.button.y-250.0f)/600.0f)/M_PI*180/45*70+camera.dir.y);

glTranslatef(camera.pos.x+vec.x,camera.pos.y+vec.y,camera.pos.z+vec.z);

cette fois ci, c'est l'inverse : au milieu de l'ecran sur l'abscisse, l'objet est a la bonne position mais au bords, il est trop haut

Une solution ?

EDIT :

j'ai réussi à synthétiser l'équation (c'est pas du pur exact mais c'est a peu près ce que je voulais)
voila le vecteur direction :

Code:
sVec3D vec;
float fl=(abs(event.button.x-250.0f)/250.0f)*1+(1-abs(event.button.x-250.0f)/250.0f)*ldir_x(1,-atan((event.button.y-250.0f)/600.0f)/M_PI*180/45*70+camera.dir.y);
vec.x = ldir_x(fl,-atan((event.button.x-250.0f)/600.0f)/M_PI*180/45*70+camera.dir.x);
vec.y = ldir_y(fl,-atan((event.button.x-250.0f)/600.0f)/M_PI*180/45*70+camera.dir.x);
vec.z = ldir_y(1,-atan((event.button.y-250.0f)/600.0f)/M_PI*180/45*70+camera.dir.y);

ldir_y(1,-atan((event.button.y-250.0f)/600.0f)/M_PI*180/45*70+camera.dir.y);


voici le programme (exe) de test : http://min.us/ms31UT1KE
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
Gab666
Modérateur 'Zut'
avatar

Messages : 5339
Localisation : **I move away from the mic to breathe in

MessageSujet: Re: [A peu près résolu]soucis detection souris en 3D   Mar 24 Juil 2012 - 0:14

Personnellement, si tu veux calculer les déplacement en 3D, je te conseille de garder deux angles et travailler en coordonnées sphériques, c'est pas mal plus simple. Je me suis fait un dessin et je t'ai calculé les coordonnées. Soit theta l'angle sur le plan Oxy où quand theta=0 le vecteur est parallèle à x et phi l'angle entre Oxy et z où quand phi=0, le vecteur est parallèle à Oxy

r le rayon du cercle formé par theta
R la sphère formée par phi et theta

R=1(ou tout autre constante)
r=R*cos(phi)


x=r*cos(theta)
y=r*sin(theta)
z=R*sin(phi)

x=R*cos(phi)*cos(theta)
y=R*cos(phi)*sin(theta)
z=R*sin(phi)


0<theta<2*pi
-pi/2<phi<pi/2

Ensuite, tu peux faire varier theta et phi selon les mouvement de la souris(pour ton affichage), et quand il y a déplacement tu utilises le vecteur calculé plus haut.

N.B.: J'ai pas vérifié mes calculs, donc je peux être dans l'erreur, mais ça semble bon.

mathworld.wolfram.com/SphericalTrigonometry.html

_________________
PIS MANIAC PREND DES BAINS !
Revenir en haut Aller en bas
http://www.dermanium-online.webou.net/
 
[A peu près résolu]soucis detection souris en 3D
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Le mystère de la souris enfin résolu
» LA MONTAGNE S'EST ACCOUCHEE D'UNE SOURIS
» Souris optique au doigt !
» kimiko: la souris
» petit soucis post-accouchement....

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Programmation-
Sauter vers: