Hello,
I am curious to know if anyone have experience with how to make osgWidget work 
together with a CompositeViewer, before I try and examine the implementation in 
depth. I have not found anything on the forum, except for a statement saying 
that "it's definitely supported" (from the author I believe).
I have a CompositeViewer with two views (osgViewer::View objects). They are 
drawing into two separate windows. I am creating an osgWidget::WindowManager, 
to which I provide one of my views. I then create a simple box widget, which 
renders in the correct position. When I resize the window, everything adjusts 
as expected. However, when I resize the other (non-related) window 
corresponding to view number 2, the widget in the first view's window scales 
and gets partly invisible. Is there anything that easily can be done to avoid 
this relation?

Regards,
Linus

I post the example code for clarity:

const unsigned int MASK_3D = 0x0F000000;

        osgViewer::CompositeViewer* viewer = new osgViewer::CompositeViewer;
        // view one
        osgViewer::View* view1 = new osgViewer::View;
        view1->setName("View one");
        viewer->addView(view1);
        osg::Node* model1 = osgDB::readNodeFile("spaceship.osg");
        model1->setNodeMask(MASK_3D);
        view1->setUpViewInWindow(100, 100, 600, 400, 1);
        view1->setCameraManipulator(new osgGA::TrackballManipulator);
        // view two
        osgViewer::View* view2 = new osgViewer::View;
        view2->setName("View two");
        viewer->addView(view2);
        osg::Node* model2 = osgDB::readNodeFile("avatar.osg");
        model2->setNodeMask(MASK_3D);
        view2->setUpViewInWindow(100, 100, 600, 400, 0);
        view2->setCameraManipulator(new osgGA::TrackballManipulator);

        osgWidget::WindowManager* wm = new osgWidget::WindowManager(
                view1,
                600.0f,
                400.0f,
                MASK_3D);
        osg::Camera* cameraHUD = wm->createParentOrthoCamera();
        view1->addEventHandler(new osgWidget::MouseHandler(wm));
        view1->addEventHandler(new osgWidget::ResizeHandler(wm, cameraHUD));
        view1->addEventHandler(new osgWidget::CameraSwitchHandler(wm, 
cameraHUD));
        view1->addEventHandler(new osgWidget::KeyboardHandler(wm));

        osgWidget::Window* box1 = createBox("HBOX", osgWidget::Box::HORIZONTAL);
        box1->getBackground()->setColor(1.0f, 0.0f, 0.0f, 0.8f);
        box1->attachMoveCallback();
        wm->addChild(box1);

        osg::Group* group1 = new osg::Group;
        group1->addChild(cameraHUD);
        group1->addChild(model1);

        osg::Group* group2 = new osg::Group;
        group2->addChild(model2);

        view1->setSceneData(group1);
        view2->setSceneData(group2);

        return viewer->run();
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to