AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -34%
-34% LG OLED55B3 – TV OLED 4K 55″ 2023 ...
Voir le deal
919 €

 

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

Aller en bas 
2 participants
AuteurMessage
glcraft
Utilisateur confirmé: Rang *****
glcraft


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

[A peu près résolu]soucis detection souris en 3D Empty
MessageSujet: [A peu près résolu]soucis detection souris en 3D   [A peu près résolu]soucis detection souris en 3D EmptySam 21 Juil 2012 - 0: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 :
[A peu près résolu]soucis detection souris en 3D Img110
mais lorsque je met la souris au milieu en abscisse(toujours en haut) ca donne ca :
[A peu près résolu]soucis detection souris en 3D Img210

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'
Gab666


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

[A peu près résolu]soucis detection souris en 3D Empty
MessageSujet: Re: [A peu près résolu]soucis detection souris en 3D   [A peu près résolu]soucis detection souris en 3D EmptyMar 24 Juil 2012 - 2: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
-
» [resolu]soucis avec Boucle While
» Problème detection de joueur par IA[résolu]
» [résolu]soucis animation sprite AI
» [Résolu] Zone de detection pour un enemy
» [Résolu][Tower Defense] - Détection des ennemis

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