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 :

Perspective régulière et coordonnée d'un point sur une sphère


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Perspective régulière et coordonnée d'un point sur une sphère
    Bonjour tout le monde,
    je cherche à obtenir les coordonnées dans l'espace d'un point se situant sur une sphère de rayon 1.
    J'utilise la formule mathématique de création d'un sphère :


    J'obtient les coordonnées dans l'espace de mon point P (0.3, 0.7, 0.648).

    Je vérifie le résutat dans le logiciel "Blender 3D" et je me rends compte que ce n'est valable que si la caméra affiche le point P en mode othographique.
    Si je passe en perspective rien ne va plus.
    Faut-il multiplier le point P par la matrice de projection perspective ?
    Et comment créer cette matrice de projection, car j'ai fait quelques recherches mais des matrices de projection il y en a des tas bien différentes (entre Directx Opengl, et la réalité, je suis dépassé).

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    Que comptes-tu faire exactement? Avoir un cercle parfait _sur_ ton ecran ou _dans_ ton monde? L'un n'impliquant pas forcement l'autre : un cercle dans ton monde peut tres bien etre une ellipse sur ton ecran suivant la position a partir de laquelle tu le regardes.
    Je ne réponds à aucune question par MP, posez vos questions sur le forum adéquat.
    Profils : G+ - LinkedIn

  3. #3
    Membre averti Avatar de icer
    Inscrit en
    Janvier 2006
    Messages
    332
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 332
    Points : 363
    Points
    363
    Par défaut
    Si tu veux avoir la position de ton point sur la surface de la sphère à partir des coordonnées du viewport, je te suggère de voir les techniques de lancer de rayons.
    C'est à dire que tu lance un rayon à partir de ta caméra et tu calcul l'intersection avec ta sphère.

    Peut-être qu'on pourrais de donner des conseils (plus) appropriés si tu nous expliquais ce que tu as l'intention de faire.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Mon but est d'obtenir les coordonnées en X Y Z de ce point P.
    Je possède seulement ses coordonnées en X et en Y sur une photo prise avec un appareil photo dont les matrices intrin- et extra- séques sont connues.
    La position exacte de la sphère et son rayon sont également connue.

    J'ai besoin de connaitre avec plus ou moins de précision (à deux trois pixels près) la position de ce point P sur la surface de ma sphère.
    La focale de ma caméra est suffisament grande pour que la sphère apparaisse comme étant un cercle sur la photo (la distortion étant inférieur à deux ou trois pixels), j'ai vérifié en superposant un vrai cercle dessus, ça coïncide. J'ai donc utilisé cette formule, qui manifestement ne tient plus s'il y a de la perspective.

    Un petit croquis du pb :

    La demi sphère rouge représente l'emplacement du point P
    La demi sphère verte est le résultat obtenu

  5. #5
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    Est-ce que tu fais la division par w apres avoir applique la matrice de projection? Si oui, peux-tu donner plus de details sur les calculs que tu fais pour avoir ces differents points?
    Je ne réponds à aucune question par MP, posez vos questions sur le forum adéquat.
    Profils : G+ - LinkedIn

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    En effet je ne fais pas la division par w, la matrice de projection me posait problème je ne savais plus trop comment m'y prendre.

    J'essaie ça dès demain et je repost les résultats complets si ça marche.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Bon je me suis enflammé et je n'y arrive toujours pas,
    je mélange un peu tout.

    Voici ma démarche :

    Je commence avec une photo faite par un appareil photo.
    Cette photo représente une sphère sur laquelle un point est marqué (le point P).
    Comme c'est une photo, la perspective est présente.

    Comme c'est une sphère bien sphérique et que le point est sur sa surface, j'utilise cette formule pour trouver les coodonnées du point P :
    x²+y²+z²=r²

    Les paramètres données par la photo sont en pixels:
    origine de la photo : en bas à gauche (0 , 0)
    taille de la photo : 800x800
    centre de la sphère : (286 , 464)
    u et v de P : (380 , 544)
    rayon de la sphère : 466 - 286

    En python ça nous donne :

    centreSphere=(286.,464.)
    r=466.-centreSphere[0]
    Sx=(380-centreSphere[0])/r
    Sy=(544.-centreSphere[1])/r
    Sz=(1-Sx**2-Sy**2)**0.5
    print Sx,Sy,Sz

    Soit 0.5222 0.4444 0.7278 qui est repésenté par le point vert sur le graphique :



    Ma méthode ne fonctionne donc pas.
    La méthode de lancé de rayon peut-elle m'aider à trouvé les coordonnées du point P ?
    Car de ce que j'ai pu lire elle ne donne que si oui ou non le rayon touche la sphère ?

  8. #8
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Salut,

    Citation Envoyé par 66-Machin-99 Voir le message
    Faut-il multiplier le point P par la matrice de projection perspective ?
    Et comment créer cette matrice de projection, car j'ai fait quelques recherches mais des matrices de projection il y en a des tas bien différentes (entre Directx Opengl, et la réalité, je suis dépassé).
    Salut sous Direct 3d il y a 3 matrices principalement pour les transformations que tu transformes avec SetTransform : celle de projection ( en fait l'écran ( , celle de la vue ( la caméra de la scène )courante et celle "monde " ( world- pour les objets).
    Je pense que c'est pareil avec Open GL
    Donc si tu obtiens des mauvaises coordonnées c'est qu'il faut faire une opération particulière sur ces trois matrices.

  9. #9
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    Non elle te donne aussi ton point d'intersection. Il faut que tu connaisses la matrice qui modelise ta camera. Si tu ne l'as pas, tu n'iras pas loin. Une fois cela connu, ton point sur ton image te permet de definir qu'un rayon (car tu n'as pas la profondeur de ce point). La profondeur de ce point peut etre facilement retrouvee en faisant une intersection avec la sphere (car tu sais que le point est sur la sphere).

    En gros, tu as deux contraintes :
    - ton point est sur un rayon (car on le voit sur une image capturee par une camera)
    - ton point est sur une sphere.

    L'intersection des deux te permet de retrouver le point.
    Je ne réponds à aucune question par MP, posez vos questions sur le forum adéquat.
    Profils : G+ - LinkedIn

  10. #10
    Membre averti Avatar de icer
    Inscrit en
    Janvier 2006
    Messages
    332
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 332
    Points : 363
    Points
    363
    Par défaut
    Ah! Tu travail à partir d'une vrai photo!

    Dans ce cas il te faudrait un modèle théorique plus détaillé de ton appareil photo. Un modèle qui prenne en compte les distorsions, ou d'autre effets optiques spécifiques à ton appareil.

    Mais quelque chose m'échappe: les images que tu nous montre sont bien des images de synthèse.

    La différence entre ton point rouge et ton point vert ne serait-elle pas simplement liée à la résolution de ton image, à la précision d'un pixel.

Discussions similaires

  1. Calcul de coordonnées d'un point sur une Google map
    Par Abso34 dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2014, 14h40
  2. Réponses: 2
    Dernier message: 12/05/2014, 16h24
  3. Trouver les coordonnées d'un point sur une surface NURBS
    Par oodini dans le forum Mathématiques
    Réponses: 2
    Dernier message: 25/05/2011, 18h35
  4. Déplacer un point sur une sphère
    Par Mr21_ dans le forum Mathématiques
    Réponses: 21
    Dernier message: 29/08/2010, 23h51
  5. Réponses: 4
    Dernier message: 27/11/2006, 18h06

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