Hi All, I tried several solutions but I didn't find a full working solution yet.
Here is a piece of code that shows and is able to update the image of a qt widget but I'm not able to make the move and resize working. Code: void MyViewer::addOverlay(QWidget* iWidget) { osgWidget::Window* osgwindow = new osgWidget::Canvas; osgwindow->attachMoveCallback(); osgwindow->attachScaleCallback(); osgwindow->setVisibilityMode(osgWidget::Window::VM_ENTIRE); osgwindow->getBackground()->setColor(osg::Vec4(1, 1, 1, 0.5)); osg::ref_ptr<osgQt::QWidgetImage> widgetImage = new osgQt::QWidgetImage(iWidget); widgetImage->getQGraphicsViewAdapter()->setBackgroundColor(QColor(0xff, 0xff, 0xff, 0x80)); osg::Geometry* quad = osg::createTexturedQuadGeometry(osg::Vec3(0,0,0), osg::Vec3(1,0,0), osg::Vec3(0,1,0), 1, 1); osg::Geode* geode = new osg::Geode; geode->addDrawable(quad); osg::Texture2D* texture = new osg::Texture2D(widgetImage.get()); texture->setResizeNonPowerOfTwoHint(false); texture->setFilter(osg::Texture::MIN_FILTER,osg::Texture::LINEAR); texture->setWrap(osg::Texture::WRAP_S, osg::Texture::CLAMP_TO_EDGE); texture->setWrap(osg::Texture::WRAP_T, osg::Texture::CLAMP_TO_EDGE); osg::Camera* camera = new osg::Camera; camera->setProjectionResizePolicy(osg::Camera::FIXED); camera->setProjectionMatrix(osg::Matrix::ortho2D(0,1,0,1)); camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF); camera->setViewMatrix(osg::Matrix::identity()); camera->setClearMask(GL_DEPTH_BUFFER_BIT); camera->setRenderOrder(osg::Camera::POST_RENDER); camera->addChild(geode); camera->setViewport(0, 0, 512, 384); osgwindow->getOrCreateStateSet()->setTextureAttributeAndModes(0, texture, osg::StateAttribute::ON); osgwindow->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF); osgwindow->getOrCreateStateSet()->setMode(GL_BLEND, osg::StateAttribute::ON); osgwindow->getOrCreateStateSet()->setRenderingHint(osg::StateSet::TRANSPARENT_BIN); osgwindow->getOrCreateStateSet()->setAttribute(new osg::Program); osgwindow->addChild(camera); osgViewer::InteractiveImageHandler* handler = new osgViewer::InteractiveImageHandler(widgetImage.get(), texture, camera); quad->setEventCallback(handler); quad->setCullCallback(handler); windowManager->addChild(osgwindow); } Can anybody explain me please why osgwindow->attachMoveCallback(); osgwindow->attachScaleCallback(); do not work? I can discard that and derive my own InteractiveImageHandler but first of all that's not what I did for other "3D widgets" where I used a drawable as child of an osgwindow's geode and move/scale works correctly. On the other side I would like to know which is the proper way to show a qt widget in a 3D viewer so that its image can be updated but also its rectangle moved and scaled. Regards, Gianni ------------------ Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=63698#63698 _______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org