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 :

Récupérer la position d'une géode suite à son déplacement


Sujet :

OpenSceneGraph

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    March 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : March 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Récupérer la position d'une géode suite à son déplacement
    Bonjour,

    Je créer un "géode " auquel j'associe un dragger selon le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    osgUtil::LineSegmentIntersector::Intersections::iterator hitr = intersections.begin();
    	position = hitr->getWorldIntersectPoint();
    	osg::Vec3 norm = hitr->getWorldIntersectNormal();
    	osg::Vec3 normLocal = hitr->getLocalIntersectNormal();
     
    	osg::Geode * geode = new osg::Geode();
    	osg::Vec3 pointInsert = osg::Vec3(position.x(), position.y(),position.z());
    	osg::Sphere* unitSphere = new osg::Sphere( pointInsert, 500.0f);
    	osg::ShapeDrawable* unitCubeDrawable = new osg::ShapeDrawable(unitSphere);
    	unitCubeDrawable->setColor(osg::Vec4(1.0f,0.0f,0.0f,1.0f));
    	geode->addDrawable(unitCubeDrawable);
     
    	geode->setName( pElementToAdd->getName().toStdString());
     
    	osg::ref_ptr<osgManipulator::Selection> selection = new osgManipulator::Selection;
    	selection->addChild( geode );
     
    	float scale = geode->getBound().radius() * 2;
    	osg::ref_ptr<osgManipulator::TranslateAxisDragger> dragger = new osgManipulator::TranslateAxisDragger;
    	dragger->setupDefaultGeometry();
    	dragger->setMatrix( osg::Matrix::scale(scale, scale, scale) *
    						osg::Matrix::translate(geode->getBound().center()) );
    	osg::ref_ptr<osgManipulator::CommandManager> manager = new osgManipulator::CommandManager;
    	manager->connect( *dragger, *selection );
     
    	// Cacher le dragger
    	dragger->setNodeMask(0x0);
     
    	// Enregistrer le pointeur du draggers
    	pElementToAdd->setOsgDragger(dragger);
    	pElementToAdd->setNode(geode);
     
    	scene->asGroup()->getChild(0)->asGroup()->addChild(dragger.get());
    	scene->asGroup()->getChild(0)->asGroup()->addChild(selection);

    Je déplace mon objet sans souci à l'aide du dragger, par contre j'ai besoin de connaître la nouvelle position de l'objet pour sauvegarder la configuration de mon projet.
    Et la je galère ! Je sais pas comment faire !
    Merci par avance pour votre aide

  2. #2
    Membre éprouvé
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    March 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 : March 2007
    Messages : 902
    Points : 1 179
    Points
    1 179
    Par défaut
    Bonjour,

    Il vous suffit de récupérer la matrice de transformation absolue a partir de la geode :

    geode->getWorldMatrices()[0] ; //[0] suppose there is only one nodepath
    "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"

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/10/2009, 22h48
  2. Récupérer la position d'une div sous internet explorer
    Par webtheque dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/06/2008, 15h27
  3. Actualisation d'une variable suite à son changement?
    Par Dev@lone dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/05/2008, 10h56
  4. Récupérer la position d'une image
    Par Invité dans le forum VBA Word
    Réponses: 6
    Dernier message: 24/01/2008, 23h27

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