bonjour,
Je dois utiliser une souris 3d (space navigator de 3dconnexion) dans une application utilisant openscenegraph.
La souris n'étant pas gérée en natif, il existe plusieurs solutions pour la supporter via le osgVRPN, néanmoins cette classe étant une vraie usine a gaz, je n'arrive pas à l'utiliser correctement.
beaucoup de documentations existent et je consulte régulièrement la mailing list d'osg en ayant deja posté cette question mais personne ne me répond![]()
si qqun ici a une solution, cela m'aiderait énormément.
je passe donc pas directinput qui me permet rapidement de récupérer les différents valeurs des axes de la souris.
en l'état actuel, j'ai donc les 3 axes de translations etat.lx, etat.ly, etat.lz et ceux de rotations etat.lrx, etat.lry, etat.lrz variant entre 0 et 360.
ma scène comporte un objet et un hud.
j'aimerais faire en sorte de pouvoir utiliser ma souris comme dans google earth(pour ceux qui l'ont deja utilisé avec ce genre de périphérique)
Le problème, en plus d'etre un manque de compréhension d'osg évident, vient surement d'un problème de logique/algorithmique.
je ne déclare aucun osgGA::Manipulator dans le main mais une matrice.
dans la boucle d'exécution while(!viewer.done()) je fais :
ce qui permet de déplacer l'objet dans la scène, les rotations ne sont d'ailleurs pas correct, ceci n'est pas le problème majeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 cameraRotation.makeRotate( osg:: DegreesToRadians((float)etat.lRx/10),osg::Vec3(1,0,0), // roll osg:: DegreesToRadians((float)etat.lRz/10), osg::Vec3(0,0,1), // pitch osg:: DegreesToRadians((float)etat.lRy/10), osg::Vec3(0,1,0) ); // heading cameraTranslation.makeTranslate((etat.lX/10),-(etat.lZ/10),(etat.lY/10)); myViewMatrix = cameraRotation*cameraTranslation; viewer.getCamera()->setViewMatrix(myViewMatrix);
mais comment faire pour que la dernière position acquise par la souris, devienne la nouvelle position initiale de l'objet, pour l'instant la vue se réinitialise a la position initiale.
merci pour la lecture et pour une possible piste![]()
Partager