IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

[GLScene] Déplacement d'un objet dans une certaine direction


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Par défaut [GLScene] Déplacement d'un objet dans une certaine direction
    Bonjour à tous !

    Tout est dans le titre : je voudrais trouver une méthode ou une procedure qui me permette de déplacer un objet dans n'importe quelle direction (sans orienter l'objet lui-même). Par exemple, je voudrais le faire reculer, sans qu'il ne tourne ... J'ai trouver pleins de moyens, mais ils font tous tourné l'objet ...


    Voilà ... ma question peut paraître bête mais ça fait un certain temps que je crois avoir trouvé, et que à chaque fois, ça ne marche pas ... et ça commence à m'énerver quelque peu ...

    Merci d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 160
    Par défaut heuu...
    Citation Envoyé par Matt2094
    Bonjour à tous !

    Tout est dans le titre : je voudrais trouver une méthode ou une procedure qui me permette de déplacer un objet dans n'importe quelle direction (sans orienter l'objet lui-même). Par exemple, je voudrais le faire reculer, sans qu'il ne tourne ... J'ai trouver pleins de moyens, mais ils font tous tourné l'objet ...


    Voilà ... ma question peut paraître bête mais ça fait un certain temps que je crois avoir trouvé, et que à chaque fois, ça ne marche pas ... et ça commence à m'énerver quelque peu ...

    Merci d'avance.
    le retour de glscene....

    Je dirais en quelques mots: hein??? koi koi koi... c'est dingue ca... figures toi que je dev des petits jeux avce glscene et je n'ai jamais vu un truc pareil...

    tu peux me faire un petit zip avec une demo du probleme (bien expliqué) que je jette un coup d'oeil...

    ou encore me mettre un bout de code.

    Je ne comprend pas ton probleme (ou du moins si mais pas les symptomes...)
    C'est dingue ca...

    Quand tu depalces un objet il ne tourne pas, quef si tu lui fais faire une rotation.

    Tu utilises quoi pour le déplacer?

    Un systeme de nodes? (pathcontrol)? ou autre chose?

    Est-ce que cet objet est l'enfant d'un autre qui tourne?

    Dites m'en plus mon cher...

  3. #3
    Membre éclairé Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Par défaut
    J'utilise la méthode Move pour déplacer mon objet, après l'avoir orienter avec les propriétés de Direction ...

    Je l'oriente comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GlFreeForm1.Direction.X := MaValeur;
    GlFreeForm1.Direction.Y := MaValeur;
    GlFreeForm1.Direction.Z := MaValeur;
    Et après, je le bouge comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GlFreeForm1.Move(MaDistance);
    Mais le problème, c'est que mon objet tourne lorsque je change sa direction ...

    Edit : Ce qui m'empêche de déplacer l'objet latéralement par exemple ...

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 160
    Par défaut
    juste pour savoir quelle est l'objet cible de ta camera?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 160
    Par défaut
    Bon essayons d'etre clair, c'est pas facile avec la 3D... C'est pas instinctif.
    La dircetion représente un vecteur. Qui indique ou l'objet pointe.
    Ce vecteur à pour origine l'origine de ton objet (si tu mets la propriété showaxes a true, c'est l'intersection des trois ligne).

    Et Glscene utilise un systeme de vecteur normalisé à 1.

    Bon tu ne peux pas changer la direction d'un objet sans faire tourner ton objet...

    Arrrg c'est dur a expliquer

    prend une feuille de papier.
    C'est ton objet.

    Dessine une fleche dessus.

    C'est la direction (un vecteur somme toute).
    essaye de changer la direction de ce vecteur sans changer la position de ta feuille...

    Tu ne peux pas... Ben oui la fleche est dessinée dessus... La direction est la direction de l'objet lui meme

    Bon admettons maintenant que tu veuilles faire une translation de 3 unités en Z

    plutot que de changer sa direction, et faire un move... il faut que tu lui dises Mon_objet.Translate(0, 0, 3);


    le translate prend la forme translate (x,y,z).

    Tu peux par exemple aussi lui donner sa nouvelle position.

    mon_objet.position.x:=ce que tu veux;
    mon_objet.position.y:=ce que tu veux;
    mon_objet.position.z:=ce que tu veux;

    tu peux changer son angle aussi, son orientation... pfff enfin tout.

    Je te demandais aussi quelle est la cible de la camera, car ca donne des effets trompeurs.

    Si tu essayes de bouger ton objet dans l'espace et que la camera prend cet objet pour cible, elle va tourner pour garder l'objet comme cible justement... Et donc ton objet aura bougé Mais tu auras l'impression qu'il aura tourné.

    C'est pour cela qu'en général tu fais pointer la caméra sur un Dummy cube au milieux de ta scene et que celui ci ne bouge jamais.

    Comme ca tu creer une sorte de referentiel.

    C'est compliqué tout ca.

    Je te donne un lien avec tuto...

    http://glscene.sourceforge.net/wikka/UserTutorials

    les 4 tutos de base pour ces histoires de referentiels en 3D...

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 160
    Par défaut
    Bon je dis peut etre une connerie mais je n'ai pas le temps de tester là, je suis sur des problemes de C++ pour le travail (et oui je suis obligé de m'y mettre) et j'ai l'impresion de me retrouver débutant... En bref je n'arrive pas à compiler un programme que j'aurais finit en 20 mn sous delphi... Grrrrr ... Et les outils crosoft sont d'horribles usines à gaz...grrrr bis..

    Bref...

    Une solution astucieuse (mais a tester car non validée) pour deplacer ton freeform en direction+distance sans rotation (et sans utiliser les maths ou plutot en laissant le soin a glscene de le faire) passerait (tu testeras) par...

    Tadadadada... Un dummyCube (comme toujours le dummy cube solutionnerait tous les problemes)

    Tu creer un dummycube comme child de ton freeform (achtung pas l'inverse!)

    tu lui donnes une nouvelle direction...
    Tu lui fais le move de x unités

    comme tu faisais avec le freeform...

    Et ensuite tu fais freeform.position:=dummycube.position;
    Dit mois si ca marche?

    j'aurais pas le temps de tester avant une bonne semaine.

    Et ces tutoriaux ca t'as un peu éclairé?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lancer de rayon et déplacements d'objets dans une scene
    Par oclama dans le forum Moteurs 3D
    Réponses: 5
    Dernier message: 17/02/2010, 16h16
  2. lancer de rayon et déplacements d'objets dans une scene
    Par oclama dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 17/02/2010, 09h16
  3. Réponses: 10
    Dernier message: 07/01/2010, 13h53
  4. Déplacement d'un objet dans une stringgrid
    Par QAYS dans le forum Composants VCL
    Réponses: 1
    Dernier message: 26/10/2007, 11h56
  5. Savoir si un objet d'une certaine classe est dans une liste
    Par Denti-fritz dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2007, 09h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo