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

OpenGL Discussion :

Mouvement sur une surface de bezier


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 89
    Par défaut Mouvement sur une surface de bezier
    Bonjour,
    J'ai généré un terrain un partir d'une surface de bezier et je voudrai que mon personnage puisse marcher dessus. Est-ce qu'il est possible de recuperer les valeurs (x,y,z) de chaque point du terrain ??? Si non comment faire pour detecter la hauteur de chaque point ???
    Merci

  2. #2
    Membre expérimenté Avatar de Sixissor
    Étudiant
    Inscrit en
    Février 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 206
    Par défaut
    Lu.

    Wikipedia => Trop de calculs, clairement pas rentable. Et c'est pas la bonne méthode.

    Pour pouvoir déplacer ton personnage, créer une map simple avec des segments qui relient chaque point, et fais-le marcher dessus (gestion physique simple). Il te suffit de récupérer les coords Y de la map en fonction des coordonnées X, Z de ton personnage et de le faire évoluer en hauteur en conséquence.
    Généralement, il y a toujours un segment entre 2 points, et si tu sembles voir quelque chose d'arrondi, c'est généralement beaucoup de petits segments qui te donnent l'illusion d'être courbé.

    Sinon tu as les Octree, les BSP, etc.
    Y'a aussi des moteurs 3D dans lesquels il te suffit de charger la map et ils font tout pour toi ^^

  3. #3
    Membre Expert
    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 : 46
    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
    Par défaut
    Comment est calculé ta surface de Bezier ?
    Car si tu sais calculer ta surface de Bezier tu devrais pouvoir extraire un point x,y,z sur sa surface.

  4. #4
    Membre émérite Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Par défaut
    Une solution est d'associer une heighmap à chaque vertex de ton terrain.
    Ensuite pour trouver la hauteur d'un point P, il suffit de faire une interpolation (ici equation d'un triangle) entre les hauteurs des 3 points qui entourent P dans la heighmap.

  5. #5
    Membre Expert

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Par défaut
    Il faut simplifier ton problème :

    Si tu pars d'un patch rectangulaire, assure toi que les points de controle des patches sont organisés de façon a être organisés en grille régulière (une rangée à x= 0, 1, 2, 3 etc. et une colonne à y= 0,1,2,3.. etc.). C'est probablement déjà le cas, mais si ça ne l'est pas fais-le, ça simplifie vachement le problème.

    Cela veut dire notamment qu'il y a une relation linéaire entre les paramètres s,t de ton patch et les coordonnées X,Y de ton monde. Reste à trouver Z.

    Connaissant la position Xij, Yij, Zij des points de controle, si ton personnage se trouve à X,Y, pour trouver Z, tu convertis tes coordonnées X,Y en s et t (avec la relation linéaire de ci dessus), et tu réintroduis s et t dans l'équation qui définis Z.

    Z(s,t) = somme (Zij * Bij(s,t))

    Bij sont les polynomes de Bernstein, en deux dimensions.

    Le nombre de polynômes dépendant bien entendu de l'ordre de tes surfaces polynomiales (bicubique, bicarré, bilinéaire, etc..).

    Voilà c'est pas sorcier et la solution est exacte (modulo la précision des nombres flottants).

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

Discussions similaires

  1. Mouvement du smartphone sur une surface fixe
    Par Medyo4zy dans le forum Android
    Réponses: 5
    Dernier message: 08/09/2012, 09h56
  2. SDL_SetClipRect sur une surface "source"
    Par valefor dans le forum SDL
    Réponses: 1
    Dernier message: 12/08/2007, 13h40
  3. Réponses: 2
    Dernier message: 30/03/2007, 13h17
  4. [VMR9][D3D9]ecrire un texte sur une surface
    Par drizztfr dans le forum DirectX
    Réponses: 2
    Dernier message: 13/11/2003, 15h06
  5. Effet Fade In / Fade Out sur une surface DirectDraw
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 08/09/2002, 17h37

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