Hi,
i have tried to move the Camera in my scene with the keyboard.
I have created a subclass of the GUIEventHandler()-Class and i have overridden
the handle()-funtion. I want to use the UP/DOWN/LEFT/RIGHT Buttons. I can see
on the console that if i press one of these Buttons that i get the correct cout
Statement that i have implentet in the switch/case-Statement for every button.
But it seems that the viewer->getCamera()->setViewMatrixAsLookAt(...) does not
do anything.
Can someone give me a hint what is wrong???
Here is the Code. And sorry for my bad English. ;)
class KeyboardEventHandler: public osgGA::GUIEventHandler {
public:
KeyboardEventHandler(){}
~KeyboardEventHandler(){}
virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter&
us) {
osgViewer::Viewer *viewer = dynamic_cast<osgViewer::Viewer*>(&us);
viewer->getCamera()->setAllowEventFocus(false);
osg::Vec3 eye(1.0, 10.0, -3.0);
osg::Vec3 center(2.0, 0.0, -2.0);
osg::Vec3 up(1.0, 0.0, 0.0);
viewer->getCamera()->setViewMatrixAsLookAt(eye, center, up);
switch(ea.getKey()) {
case(osgGA::GUIEventAdapter::KEY_Down): {
viewer->getCamera()->setViewMatrixAsLookAt(osg::Vec3(1.0, 15.0, -3.0),
osg::Vec3(2.0, 0.0, -2.0), osg::Vec3(1.0, 0.0, 0.0));
std::cout << "down" << endl;
return true;
}
case(osgGA::GUIEventAdapter::KEY_Up): {
std::cout << "up" << endl;
return true;
}
case(osgGA::GUIEventAdapter::KEY_Left): {
cout << "left" << endl;
return true;
}
case(osgGA::GUIEventAdapter::KEY_Right): {
cout << "right" << endl;
return true;
}
default:
return false;
}
}
};
//main.cpp
osgViewer::Viewer viewer;
viewer.setSceneData(root);
viewer.addEventHandler(new KeyboardEventHandler);
viewer.realize();
while(!viewer.done()) {
viewer.frame();
}
Thank you very much!
Cheers,
Christian Wolf
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=48405#48405
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org