HI Henanth,
You code is missing a return from your event handler method when the
method type required a bool. If you don't handle the event you should
pass back false, in your case you aren't so the results are undefined
and most likely are being interpreted as a true with will event
handlers will detect later on an ignore the already "handled" event.
Robert.
On Fri, Nov 14, 2008 at 1:27 PM, hemanth korrapati
<[EMAIL PROTECTED]> wrote:
> hi,
>
> I am using an osg code which plots a few points in 3D space. This
> works fine and I am able to move around the scene with the mouse. But
> when I add the line "viewer.addEventHandler(new
> KeyboardEventHandler());" to the code and run it, I cant move the
> scene/objects (generally we can move the scene by clicking and
> dragging with the mouse) . It just stays still even if I drag the
> mouse around. I am pasting the code I am using, below:
>
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> #include<iostream>
> #include<vector>
> #include<string>
> #include<fstream>
> #include"global.h"
> #include"drawables.cpp"
> #include"ransac.cpp"
>
>
> using namespace std;
>
> class KeyboardEventHandler : public osgGA::GUIEventHandler
> {
> public:
> virtual bool handle(const osgGA::GUIEventAdapter&
> ea,osgGA::GUIActionAdapter&)
> {
> }
> };
>
> osg::Camera* createHUD()
> {
> osg::Camera* camera = new osg::Camera;
>
> camera->setProjectionMatrix(osg::Matrix::ortho2D(0,2560,0,2048));
>
> camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
> camera->setViewMatrix(osg::Matrix::identity());
>
> camera->setClearMask(GL_DEPTH_BUFFER_BIT);
>
> camera->setRenderOrder(osg::Camera::POST_RENDER);
>
> camera->setAllowEventFocus(false);
>
>
> return camera;
> }
>
>
>
> int main(int argc,char* argv[])
> {
>
> osgViewer::Viewer viewer;
> viewer.setCameraManipulator(new osgGA::TrackballManipulator);
> viewer.addEventHandler(new osgViewer::StatsHandler);
> viewer.addEventHandler(new KeyboardEventHandler());
> //this is the line giving problems
>
> osg::Group* root=new osg::Group();
> osg::Geode* geode=new osg::Geode();
>
> ifstream infile("data1",ios::in);
> vector<osg::Vec3> points;
> double temp1,temp2,temp3;
> //for(int i=0;i<540000;i++)
> //infile >> temp1 >> temp2 >> temp3;
> for(int i=0;i<180;i++)
> {
> if(infile >> temp1 >> temp2 >> temp3)
> points.push_back(osg::Vec3(temp1,temp2,temp3));
>
> }
> osg::Plane plane(osg::Vec3(0,0,1.83),points[90],points[45]);
> for(int i=0;i<180;i++)
> {
> if(i==180)
> // cout <<
> "==============================================================" <<
> endl;
> double dist=plane.distance(points[i]);
> if(i<180)
>
> root->addChild(drawBox(points[i],0.2,osg::Vec4(1,1,1,1)));
> //cout << dist<< endl;
> }
>
> osg::Plane plane1(points[60],points[90],points[45]);
> osg::Vec3 norm=plane1.getNormal();
> norm.normalize();
> osg::Vec3Array* vertices=new osg::Vec3Array();
> vertices->push_back(osg::Vec3(100,-100,0)^norm);
> vertices->push_back(osg::Vec3(100,100,0)^norm);
> vertices->push_back(osg::Vec3(-100,100,0)^norm);
> vertices->push_back(osg::Vec3(-100,-100,0)^norm);
>
>
> // geode->addDrawable(createPolygon(vertices));
> root->addChild(geode);
>
>
>
>
>
> viewer.setSceneData(root);
> viewer.run();
>
> }
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org