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

OpenSceneGraph Discussion :

Desaxé le centre du manipulateur par rapport à la caméra


Sujet :

OpenSceneGraph

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Desaxé le centre du manipulateur par rapport à la caméra
    Bonjour,
    j'ai créé un viewer OSG avec un trackball manipulator modifié.
    Grace à mon manipulator je peux tourner autour d'un objet.
    Je veux décentrer ma caméra (regarder plus à droite) pour laisser de la place pour mes menus, mais je veux que le centre de ma trackball reste sur l'objet, or pour l'instant, pour modifier la position de ma caméra je dois déplacer le centre de ma trackball.
    Je ne sais pas si j'ai réussi à vous expliquer ce que je voulais faire...
    Merci d'avance,
    Y-not?

  2. #2
    Membre éprouvé
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Points : 1 179
    Points
    1 179
    Par défaut
    Bonjour,

    Alors a mon avis, tu peux tenter en décalant legerement la rotation de la camera par rapport au vecteur de direction : En gros ta camera continue a pivoter autour de ton objet mais elle regarde pas tout a fait le centre de l'objet mais legerement a coté, du coté où tu as ton menu, de maniere a laisser de la place dans la zone de rendu pour ton menu...

    Je ne suis peut etre pas clair non plus, mais là j'ai la flemme de faire un petit dessin

    Sinon peut etre un compositeViewer, avec une vue sur ta scene et une autre pour tes menus... regarde les exemples d'osg sur ce point si tu veux voir a quoi ça ressemble (plusieurs camera dans la meme fenetre de rendu)
    "le langage C permet de tout faire, y compris se tirer dans le pied. Le langage C++ permet de tout faire, y compris se tirer dans le pied - et réutiliser la balle"

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Salut,

    Je ne suis pas sur d'avoir compris ce que tu voulais faire. Mais si le but est de faire en sorte que ta camera tourne toujours autour de l'objet avec la même orientation (ce qui donnera l'impression que l'objet tourne sur lui même quelque soit la position et l'orientation de la camera), j'ai du faire ce manipulateur il y a peu.

    Le principe est en fait un peu le même que pour l'orbit manipulator, sauf qu'au lieu d'utiliser le centre, la rotation et la distance, j'utilise le centre, l'oeil (position de la camera) et la rotation. Mon centre est defini au debut (dans mon cas il s'agit du centre de l'objet autour duquel je veux tourner) et ne change plus. Il faut alors modifier les fonctions setTransformation, getTransformation, setByMatrix, ... Ensuite, une fois que tu as le dx et dy de ta souris, il ne te reste plus qu'a appeller une fonction rotateInSphere comme celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	osg::Vec3d direction = center - position;
     
    	osg::Quat yaw(-dx, osg::Vec3d(0.0, 0.0, 1.0));
    	rotation *= yaw;
    	direction = yaw * direction;
     
    	osg::Quat pitch(dy, rotation*osg::Vec3d(1.0, 0.0, 0.0));
    	rotation *= pitch;
    	direction = pitch * direction;
     
    	position = center - direction;
    Et pour tout ce qui est translation (gauche, droite, haut, bas, zoom+, zoom-), il te suffit de déplacer l'oeil (position) et non plus le centre.

    Si jamais c'est ce que tu souhaitais faire, tu devrais avoir les elements necessaires.

    A plus,
    bob.

Discussions similaires

  1. Déplacer un objet par rapport à sa caméra
    Par Alays dans le forum OpenGL
    Réponses: 4
    Dernier message: 21/01/2013, 21h34
  2. Jdialog centrée par rapport a la fenêtre
    Par Jonpool dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 14/03/2010, 23h57
  3. Position de l'image non centrée par rapport à l'écran
    Par marcandre dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/02/2010, 15h57
  4. [CS3] Centré son site par rapport à la taille de l'écran
    Par HAbroc dans le forum Dreamweaver
    Réponses: 5
    Dernier message: 28/09/2009, 12h05
  5. Texte centré par rapport à une image (sans table)
    Par devyan dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/12/2008, 20h10

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