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 :

zoomer une partie de la scène


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Par défaut zoomer une partie de la scène
    Bonjour,
    comment je peux zoomer une partie de ma scène et ne pas zoomer une autre, càd appliquer le zoom sur un seul objet précis

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    c'est pas très clair... tu veux voir toute la scène zoomée ou une sorte de zoom sur une partie de la scène avec la scène normale par dessous?

  3. #3
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Par défaut
    Bonjour,
    en fait dans ma scène j'ai un cube par exemple et un repère dessiné au milieu, je veux que lorsque je fait un zoom le cube soit zoomé et le repère reste tel qu'il est

    Merci d'avance

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 219
    Par défaut
    Bonsoir

    Pour crée un zoom réaliste, il suffit de diminué l'angle de projection de la matrice de rendu (pour ne pas dire de projection ). Donc dans ton cas, génère une première matrice avec un angle de projection Alpha1 et tu dessine ton cube avec celle ci. Ensuite tu génère une seconde matrices avec un angle de projection Alpha2 > Alpha1 et tu dessine ton repère avec cette dernière. Et ainsi tu aura le rendu désiré.

    Plus ton angle de projection est petit, plus la sensation de zoom sera grande.

    Autre solution (plus trash si je puis dire) si tu utilise des shaders : dans le vertex shaders qui fait le rendu du cub, tu multiplie gl_Position.xy par un float plus grand que 1 et tu aura le résultat.
    Exemple, si tu veux un zoom x2, tu rajoute simplement un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gl_Position.xy *= 2.0 ;
    Si tu veux faire çà de manière plus propre : voici une representation de la matrice de projection.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    c00 c10 c20 c30
    c01 c11 c21 c31
    c02 c12 c22 c32
    c03 c13 c23 c33
    pour le rendu du cube, il te sufira de généré une nouvelle matrice comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    c00*ZoomCoef c10*ZoomCoef c20*ZoomCoef c30*ZoomCoef
    c01*ZoomCoef c11*ZoomCoef c21*ZoomCoef c31*ZoomCoef
    c02 c12 c22 c32
    c03 c13 c23 c33
    En espèrent t'avoir aidé.

  5. #5
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    tu as en effet plusieurs façon de voir la chose:
    • soit tu joues sur la matrice de projection en changeant la valeur qui joue sur l'ouverture de la vue (field of view ou fov en anglais, c'est à dire le champ de vision)...
      de manière générale ça revient à jouer sur le rapport (far-near)/(left+right)
      pour open gl, y a plein de solutions, lis donc les doc de glOrtho, glFrustrum ou gluPerspective
    • soit tu joues sur la matrice de position/homothétie de l'objet ou du groupe d'objet en la multipliant par une matrice du type:
      sx 0 0 0
      0 sy 0 0
      0 0 sz 0
      0 0 0 1
      avec sx le facteur d'échelle pour l'axe des x, sy pour l'axe des y sz pour l'axe des z... en général on les fixe à la même valeur...
      en opengl, tu peux le faire par un glScale
      Là tu ne toucheras qu'à l'échelle d'une partie de la hiérarchie d'objet de ta scène...
    • sa solution du shader revient à ce que tu peux faire par le point précédent mais de manière plus complexe...


    voilà à toi de voir

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 219
    Par défaut
    Pour la matrices :
    sx 0 0 0
    0 sy 0 0
    0 0 sz 0
    0 0 0 1

    je pense d'une manière général le sz = 1 sinon il risque d'y avoir des décalage dans le depth buffet avec le rendu non zoomer.
    Sinon pour le glScale : attention, homothétie du zoom çà doit se faire impérativement dans le plans de la camera :

    Il y a une animation d'un zoom sur cette page pour mieux comprendre le fonctionnement d'un zoom

Discussions similaires

  1. [CSS 2.1] zoomer qu'une partie de l'image
    Par timoun dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 03/06/2009, 18h42
  2. [GD] Zoomer une partie d'une image
    Par zetta dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 09/08/2007, 09h45
  3. [VB.NET] Zoomer une partie d'une image
    Par zetta dans le forum ASP.NET
    Réponses: 1
    Dernier message: 17/04/2007, 17h54
  4. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38

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