Re: [osg-users] how to insert a QWidgetImage in a osgWidget::Window?

2015-06-10 Thread Gianni Ambrosio
Hi Julien,
no I would like to show a Qt Widget in an osgWidget::Window.

I found an example that shows a Qt Widget in a HUD (with camera and so on)  but 
in that case I have two problems:
1) global coordinates sent to the Qt widget by 
osgViewer::InteractiveImageHandler are wrong (I debugged the code and coords 
are sent to the Qt widget wrt the 3D viewer widget, so not global like in Qt 
framework are usually handled, at least in my scenario).
2) I would like to drag and resize the widget and osgwidget::Window and that 
can be easily done with: window-attachMoveCallback() and attachScaleCallback().

Regards,
Gianni

--
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=64025#64025





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


[osg-users] how to insert a QWidgetImage in a osgWidget::Window?

2015-06-09 Thread Gianni Ambrosio
Hi all,
I would like to show a Qt widget in a 3D viewer. I would like to drag it 
around, scale it and interact with it.

I looked at the osgQtWidgets example but didn't find exactly what I need. Since 
I already implemented objects that are osgWidget::Window, I thought to add the 
geometry got from osg::createTexturedQuadGeometry() to the osgWidget::Window 
geode. So I created a Texture2D object and set to the osgWidget::Window with 
setTextureAttributeAndModes(0, texture). I also set an InteractiveImageHandler 
as cull callback.

The problem is that I can't see the image.

For testing I set an image loaded from file to the texture object and it works 
fine. So what is missing in my code to see the Qt widget image?


Code:

   osg::ref_ptrosgWidget::Window window = new osgWidget::Canvas;

   float x = 0.0;
   float y = 0.0;
   float width = widget-size().width();
   float height = widget-size().height();
   osg::ref_ptrosg::Texture2D texture = new osg::Texture2D;
   osg::ref_ptrosg::Geometry quad;

   //std::string imageFile = C:/Users/User/Desktop/test.jpg;
   //osg::ref_ptrosg::Image image = osgDB::readImageFile(imageFile);
   //texture-setImage(image.get());
   osg::ref_ptrosgQt::QWidgetImage widgetImage = new 
osgQt::QWidgetImage(widget);
   texture-setImage(widgetImage.get());

   quad = osg::createTexturedQuadGeometry(osg::Vec3(x, y,0.0f),//center
  osg::Vec3(width,0.0f,0.0f),//width
  osg::Vec3(0.0f,height,0.0) );//height
   osg::StateSet* stateset = quad-getOrCreateStateSet();
   stateset-setTextureAttributeAndModes(0, texture.get());
   stateset-setRenderBinDetails(1, DepthSortedBin, 
osg::StateSet::OVERRIDE_RENDERBIN_DETAILS); 

   osgViewer::InteractiveImageHandler* handler = new 
osgViewer::InteractiveImageHandler(widgetImage.get());
   quad-setCullCallback(handler);

   window-getGeode()-addDrawable(quad);




Regards,
Gianni

--
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=63994#63994





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


Re: [osg-users] how to insert a QWidgetImage in a osgWidget::Window?

2015-06-09 Thread Julien Valentin
Hello,
I don't understand what you're doing but if you want to display both Qt widgets 
and osg 3D in the same window, I think you should take a look at osgviewerQt 
example.
Hope it help..:/


gambr wrote:
 Hi all,
 I would like to show a Qt widget in a 3D viewer. I would like to drag it 
 around, scale it and interact with it.
 
 I looked at the osgQtWidgets example but didn't find exactly what I need. 
 Since I already implemented objects that are osgWidget::Window, I thought to 
 add the geometry got from osg::createTexturedQuadGeometry() to the 
 osgWidget::Window geode. So I created a Texture2D object and set to the 
 osgWidget::Window with setTextureAttributeAndModes(0, texture). I also set an 
 InteractiveImageHandler as cull callback.
 
 The problem is that I can't see the image.
 
 For testing I set an image loaded from file to the texture object and it 
 works fine. So what is missing in my code to see the Qt widget image?
 
 
 Code:
 
osg::ref_ptrosgWidget::Window window = new osgWidget::Canvas;
 
float x = 0.0;
float y = 0.0;
float width = widget-size().width();
float height = widget-size().height();
osg::ref_ptrosg::Texture2D texture = new osg::Texture2D;
osg::ref_ptrosg::Geometry quad;
 
//std::string imageFile = C:/Users/User/Desktop/test.jpg;
//osg::ref_ptrosg::Image image = osgDB::readImageFile(imageFile);
//texture-setImage(image.get());
osg::ref_ptrosgQt::QWidgetImage widgetImage = new 
 osgQt::QWidgetImage(widget);
texture-setImage(widgetImage.get());
 
quad = osg::createTexturedQuadGeometry(osg::Vec3(x, y,0.0f),//center
   osg::Vec3(width,0.0f,0.0f),//width
   osg::Vec3(0.0f,height,0.0) 
 );//height
osg::StateSet* stateset = quad-getOrCreateStateSet();
stateset-setTextureAttributeAndModes(0, texture.get());
stateset-setRenderBinDetails(1, DepthSortedBin, 
 osg::StateSet::OVERRIDE_RENDERBIN_DETAILS); 
 
osgViewer::InteractiveImageHandler* handler = new 
 osgViewer::InteractiveImageHandler(widgetImage.get());
quad-setCullCallback(handler);
 
window-getGeode()-addDrawable(quad);
 
 
 
 
 Regards,
 Gianni


--
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=64006#64006





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