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

Développement 2D, 3D et Jeux Discussion :

interpolation d'objet en 3d[c/c++]


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut interpolation d'objet en 3d[c/c++]
    bonjour,

    Je souhaite deplacer un vaisseaux spatial dans un monde en 3 dimensions.
    le vaisseaux en un point possede une orientation et doit se deplacer de facon continue jusqu'a un deuxieme point.

    j'ai trouve plusieurs voies a explorer :
    bezier : notemment l algo de Casteljau / repute lent
    Spline et B-spline : ?? /apperement le plus efficasse
    et enfin les nurbs que glu est sense pouvoir manipuler.

    quel et la meilleure solution?
    Comment utiliser glu pour deplacer un objet 3d suivant une courbe (a 4 points de controles) ?

    merci d'avance

  2. #2
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Sur mon site tu peux voir la différence.

    www.ti-r.com
    C++->OpenGL

    Télécharge "Patch World RiTe"

    Dézip le dans un répertoire, lance le, et tu pourras dessiner divers courbes, Bezier, Casteljau, Lagrange, B-Spline.

    Bouton droit, début de courbe, bouton gauche fin de courbe.

    Point de vu vitesse, tout est quasi identique (Bezier peut être un poil + long)


    Le B-Spline à l'avantage de traiter "localement" les données sur 4 points.
    ce qui fait que le début de la courbe n'influence en rien la fin de celle ci.....
    Et que la continuité de la courbe est maintenue au fil du temps.

    Mais pourquoi ne pas faire sans ?

    Pourquoi ne pas définir un vecteur direction, accélération, vitesse, en ajoutant de l'inertie pour obtenir de belles courbes à ton vaisseau ?

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    merci beaucoup,
    ton programme est tres bien fait.
    Effectivement les B-Splines ont l air tout a fait adaptee.
    par contre t doit rester dans l'intervalle [0;1] non ?

    je souhaite utiliser les interpolations car il sagit en fait de representer un flux continu de vaisseaux entre 2 "planetes".
    La trajectoire sera donc enormement re-utilisée.
    (alors tant qu a faire )

    Si toi ou qqun a plus d'info sur glu et les nurbs.
    ca m avait l air pas "trop" complique.
    (enfin je viens de passer 3 heures dessus avant de me rendre compte que j'avais une version de glu trop ancienne).

  4. #4
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Je l'ai fait à "la main", cela demande un peu de réflexion, car je voulais unifier le tout pour découler d'un seul objet mère et optimiser au maximum....

    J'ai une DLL qui me sert à stocker mon API entière.

    Depuis le temps qu'il faut que je m'y mette pour faire une Doc pour utiliser les nombreuses Class dedans et partager mon API. (Je ne souhaite pas partager les sources dans un première temps, mais laisser libre d’utilisation l’API)

    Je pourrais te pondre un exemple rapide de l'utilisation de ma lib pour gérer des B-Splines, si tu le souhaites ?

  5. #5
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    bon finalement je me suis revenu sur bezier.
    Ce sera suffisant dans mon cas car je stoque les trajectoires.
    une 20aine en moyenne.

    Pour ceux que ca interresse vous retrouverez facilement la formule dans vos livre de math :
    4 points de control A,B,c et D :
    P(t) = A(1 - t)^3 + 3Bt(1 - t)^2 + 3Ct2(1 - t) + Dt3 (t € [0,1])

    voila comme vous pouvez voir c'est pas tres jolie (puissance/produit).
    http://fr.wikipedia.org/wiki/Courbe_de_B%C3%A9zier

    La bonne methode consiste a utiliser l'algorithme de De Casteljau :
    http://fr.wikipedia.org/wiki/Algorithme_de_de_Casteljau

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/09/2010, 08h31
  2. Interpolation de mouvement - accéder a un objet par code
    Par boby62423 dans le forum ActionScript 3
    Réponses: 10
    Dernier message: 22/06/2009, 00h07
  3. Réponses: 1
    Dernier message: 05/05/2009, 17h57
  4. deux objets, une interpolation
    Par adri_thi dans le forum Flash
    Réponses: 1
    Dernier message: 14/04/2007, 08h27
  5. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20

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