Step by step addDrawable and visualize current scene graph

40 views
Skip to first unread message

Paul Jurczak

unread,
Mar 21, 2021, 8:31:38 PM3/21/21
to OpenSceneGraph Users
I'm just starting with OSG. I would like this (or similar) code: 

    int main() {
      osgViewer::Viewer viewer;
      osg::Geode*       geode = new osg::Geode();
    
      viewer.setSceneData(geode);
      geode->addDrawable(new osg::ShapeDrawable(new osg::Sphere(osg::Vec3(0, 0, 0), 1)));
    
      viewer.frame();
      this_thread::sleep_for(seconds(2));
    
      geode->addDrawable(new osg::ShapeDrawable(new osg::Sphere(osg::Vec3(2, 0, 0), 1)));
      
      return viewer.run();
    }

to display the first sphere and after 2s the second sphere, but it displays a blank screen for 2s instead and 2 spheres afterwards. What do I have to change?

Nathan Mielcarek

unread,
Mar 23, 2021, 2:14:59 PM3/23/21
to osg-...@googlegroups.com
Paul,

Looking at the OSG Viewer.cpp code, the run() function contains this code:
    if (!getCameraManipulator() && getCamera()->getAllowEventFocus())
    {
        setCameraManipulator(new osgGA::TrackballManipulator());
    }

Therefore, by adding this line before viewer.frame() is called makes the spheres appear as you expected:
    viewer.setCameraManipulator(new osgGA::TrackballManipulator());

-Nathan


--
You received this message because you are subscribed to the Google Groups "OpenSceneGraph Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to osg-users+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/osg-users/8d8ad5ea-8080-401c-b1c2-26345345c84en%40googlegroups.com.

Paul Jurczak

unread,
Mar 23, 2021, 11:33:48 PM3/23/21
to OpenSceneGraph Users
Thank you, Nathan. It solves my problem.
Reply all
Reply to author
Forward
0 new messages