[osg-users] CompositViewer and WindowManager

2011-03-21 Thread nikola . rasic

Hi all.

I am trying to get a WindowManager to work "ontop" of a CompositeViewer 
with all its views inside one window.
I have managed to get it up and running but the widgets act wierd, I 
can turn them like if they were a node.
Is there a way to achieve this or do i have to create a WindowManager 
for every view in the CompositeViwer and

how do i get widgets to move from a view to the other.
I found a similar question on 
http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/2010-February/039025.html

but nobody seems to have any answers.

Regards Nikola R.


const unsigned int MASK_2D = 0xF000;
const unsigned int MASK_3D = 0x0F00;

osg::ref_ptr compositeViewer =
new osgViewer::CompositeViewer;

osg::GraphicsContext::WindowingSystemInterface* wsi =
osg::GraphicsContext::getWindowingSystemInterface();
unsigned width, height;
wsi->getScreenResolution(osg::GraphicsContext::ScreenIdentifier(0),
 width, height);

osg::ref_ptr traits =
new osg::GraphicsContext::Traits;

traits->x = 200;
traits->y = 200;
width = width - 400;
height = height - 400;
traits->width = width;
traits->height = height;
traits->windowDecoration = true;
traits->doubleBuffer = true;
traits->sharedContext = 0;
traits->overrideRedirect = true;

osg::ref_ptr gc =
osg::GraphicsContext::createGraphicsContext(traits.get());

osgViewer::View* view0 = new osgViewer::View();
osg::ref_ptr cam0 = view0->getCamera();
cam0->setGraphicsContext(gc.get());
cam0->setViewport(0, 0, width/2, height);
cam0->setClearColor(osg::Vec4(0.5f, 0.6f, 0.5f, 1.0f));
osg::Node* model0 = osgDB::readNodeFile("cessna.osg");
model0->setNodeMask(MASK_3D);
osg::Group* group0 = new osg::Group;
group0->addChild(model0);
view0->setSceneData(group0);
view0->setName("view0");
view0->setCameraManipulator(new osgGA::TrackballManipulator());
compositeViewer->addView(view0);

osgViewer::View* view1 = new osgViewer::View();
osg::ref_ptr cam1 = view1->getCamera();
cam1->setGraphicsContext(gc.get());
cam1->setViewport(width/2, 0, width/2, height);
cam1->setClearColor(osg::Vec4(0.5f, 0.5f, 0.6f, 1.0f));
osg::Node* model1 = osgDB::readNodeFile("glider.osg");
model1->setNodeMask(MASK_3D);
osg::Group* group1 = new osg::Group;
group1->addChild(model1);
view1->setSceneData(group1);
view1->setName("view1");
view1->setCameraManipulator(new osgGA::TrackballManipulator());
compositeViewer->addView(view1);


osgViewer::View* view2 = new osgViewer::View();
view2->setName("view2");

osgWidget::WindowManager* wm = new osgWidget::WindowManager(view2, 
width, height, MASK_2D);
osgWidget::Window* box1 = new osgWidget::Box("HBOX", 
osgWidget::Box::HORIZONTAL);

osgWidget::Label* label = new osgWidget::Label("label", "label");
label->setSize(width, height);
label->setColor(1.0f, 1.0f, 0.0f, 1.0f);
box1->addWidget(label);
box1->attachMoveCallback();
box1->getBackground()->setColor(1.0f, 1.0f, 1.0f, 1.0f);
wm->addChild(box1);
wm->resizeAllWindows(true);

osg::Group*  group2  = new osg::Group();
osg::Camera* cam2 = wm->createParentOrthoCamera();
view2->addEventHandler(new osgWidget::MouseHandler(wm));
view2->addEventHandler(new osgWidget::KeyboardHandler(wm));
view2->addEventHandler(new osgWidget::ResizeHandler(wm, cam2));
view2->addEventHandler(new osgWidget::CameraSwitchHandler(wm, 
cam1));

view2->addEventHandler(new osgViewer::StatsHandler());
view2->addEventHandler(new osgViewer::WindowSizeHandler());
view2->addEventHandler(new osgGA::StateSetManipulator(
   cam2->getOrCreateStateSet()
   ));

cam2->addChild(wm);
cam2->setViewport(0, 0, width, height);
cam2->setGraphicsContext(gc.get());
view2->setCamera(cam2);
compositeViewer->addView(view2);
compositeViewer->run();

return 0;

___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


[osg-users] Loading external materials with proxynodes

2011-01-31 Thread Nikola Rasic

Hi.

I wonder if there is a way for loading materials/statesets from  
external osg-file.
I´ve tried to use ProxyNode in osg file to load a model but I would  
like to just load a stateset or a material.


Best regards.
Nikola R



___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org