icornato
Messages postés13Date d'inscriptionjeudi 1 novembre 2007StatutMembreDernière intervention 5 mai 2009
-
2 mars 2009 à 21:59
Londonic
Messages postés298Date d'inscriptionjeudi 22 janvier 2009StatutMembreDernière intervention26 septembre 2009
-
20 mars 2009 à 22:07
Salut à tous
J'ai quasiment fini de développer mon appli : VB.net + directX.
2 petites choses qui m'embetent :
--> j'intercepte le clavier dans le programme : par exemple si l'utilisateur appuie N, ça fait apparaitre certains numéros. Le probleme, c'est que suivant le graphique affiché (plus ou moins chargé) et la puissance du PC, c'est galere ! Parfois faut appuyer une fraction de seconde, d'autres faut appuyer longtemps. C'est un peu embetant.
--> ma fenetre directX n'est pas plein écran. Quand l'utilisateur clique sur le bouton gauche de la souris en déplaçant cette derniere, la structure rentre en rotation. Ca c'est impeccable. Mais j'aimerai que quand l'utilisateur déplace la fenetre (en cliquant dans la barre bleue en haut), ça n'induise plus de rotation. Comment savoir que l'utilisateur a cliqué sur cette barre bleue, et qu'il est en train de déplacer la fenetre ?
icornato
Messages postés13Date d'inscriptionjeudi 1 novembre 2007StatutMembreDernière intervention 5 mai 2009 3 mars 2009 à 20:53
en fait je ne programme pas un jeu mais un logiciel de calculs avec visu graphique.
Mais j'imagine que le principe reste le meme.
La rotation (clic gauche+déplacement souris), la translation (clic droit+déplacement), le zoom (on maintient appuyé + ou - suivant qu'on zoome ou dézoome), tout ça ça roule bien.
Mais l'interception d'une pression unique et non durable (comme le + ou - du zoom) sur un bouton du clavier est vraiment plus chiante. Je vais essayer de programmer un timer....
Merci pour ta réponse
PS : pour mon probleme de rotation http://www.youtube.com/watch?v=e83YxFIW2HY j'explique : je lance un calcul dans mon appli développée, je visualise la structure, je m'amuse à la faire rentrer en rotation, et à la fin je fais apparaitre le probleme --> la structure rentre également en rotation quand l'utilisateur déplace la fenetre graphique (normal puisqu'il déplace avec la combinaison interceptée par directX, soit clic gauche +déplacement souris). Comment bloquer cette rotation quand la fenetre est déplacée ?
Londonic
Messages postés298Date d'inscriptionjeudi 22 janvier 2009StatutMembreDernière intervention26 septembre 2009 20 mars 2009 à 22:03
Je m'excuse de m'immiscer dans la conversation, mais je suis confronté au problème inverse: j'arrive pas à démarrer. J'ai construit un beau tetraêdre inscrit dans une sphère pytagoricienne au centre du repère des axes pour simplifier, et avec l'idée d'appliquer aux volumes des règles identiques à celles qu'on utilise pour faire de la tri-D avec ses triangles, car trois teraêdres joints par les cotés font un demi-tour : la somme des angles inscrit et comme c'est isométrique, on peut le répèter comme des fractales, et ainsi remplir des volumes comme on le ferait pour les surfaces avec des triangles.
Evidemment, quel que soit le coté qu'on choisit pour l'observer, c'est toujours trés prés du triangle. Les déformations de la troisième plus petite face visible ne sont jamais très fortes. Je crois qu'en déplacant l'objet, en rotation par exemple, on pourait lui donner du volume. Il existe de nombreuses fonctions pour ca, mais leur caractère trés rigoureux risquerait de gacher l'interprètation spaciale de l'observateur qui doit interragir pour créer le relief. C'est à lui de vérifier qu'il y a bien quatre faces, quatre sommets, et, si il est courageux et qu'il sait compter jusqu'a six, il peut aussi s'interesser au nombre des arrêtes.
Tout ceci n'est pas trés compliqué, et quand on a compris, parait meme très simple, et j'ai donc écrit un programe pour suivre les mouvements de la souris dans une sphère imaginaire autour de l'objet, le moteur d'affichage s'occuppe des projections et des calculs de rèflexion pour l'éclairrage. rien de bien compliqué non plus: il n'y a aucune raison pour que ca ne fonctionne pas.
J'ai fait comme vous: je ramène le déplacement à un couple de rotations orthogonales que je transmet au moteur dans des variables de type compatible. Tout semblait aller bien, le programme enregistre le clic souris et passe la main au timer pour calculer les deux rotations tous le dixièmes de seconde et le compilateur me dit:
Le thread appelant doit être en mode STA, comme l’exigent de nombreux composants de l’interface utilisateur.
Je sais que ce n'est pas direct X, mais nous sommes en VB.Net et développons des volumes, et j'ai hate d'essayer mon générateur de révolutions autour d'un axe pour pouvoir enfin m'occuper de rythme et de pouvements. Si vous pouvez trouver une idée pour débloquer ma souris, je poserais plus de questions idiotes sur le site.
Je vous suplie !!!