Re: [osg-users] OSG + QT and QTabWidget: Disappearing scene graph
Hi, I try also follow advice to make model on first tab visible but on ubuntu 12.10 qt 4.8.3 and osg svn It doesn't work I modify event method like this Code: virtual bool event( QEvent* event ) { if (event-type() == QEvent::Timer) { if (static_castQTimerEvent*(event)-timerId() == _timerId) { frame(); return true; } } if (event-type() == QEvent::Resize) { return false; } return QWidget::event(event); } Any hints? ... Thank you! Cheers, Roman -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=50904#50904 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] OSG + QT and QTabWidget: Disappearing scene graph
Thanks a lot, with your tip it works ! Alistair Baxter wrote: -Original Message- From: [mailto:] On Behalf Of Lucas SART Sent: 07 September 2012 11:08 To: Subject: Re: OSG + QT and QTabWidget: Disappearing scene graph Hi, I had looking for why it doesn't work. It seems that the first tab camera projection matrix and view matrix are not valid (components = -1.#IND) and I don't know why. I tryed to look into OSG code but I don't found what is wrong... If someone have an idea it would be great ! Oddly, I think I just encountered this problem yesterday. If the QT widget ever gets resized to zero (as can happen sometimes during setup and intermediate layout stages), and osgQt::GLWidget::resizeEvent is called with width and height equal to zero, the camera projection matrix gets screwed up due to divide-by-zeroes, and never recovers because resizing always takes into account the existing camera matrix. I solved the problem by preventing osgQt::GLWidget::resizeEvent being called by my GLWidget subclass if either dimension was zero. But I suppose it would probably be better if a fix was made inside the osgQt library. ___ osg-users mailing list http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org -- Post generated by Mail2Forum -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=49923#49923 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] OSG + QT and QTabWidget: Disappearing scene graph
Hi, I had looking for why it doesn't work. It seems that the first tab camera projection matrix and view matrix are not valid (components = -1.#IND) and I don't know why. I tryed to look into OSG code but I don't found what is wrong... If someone have an idea it would be great ! Here is the code I use (running on OSG 3.0.1 and qt 4.7.3) : Code: #include QtCore/QTimer #include QtGui/QApplication #include QtGui/QGridLayout #include QTabWidget #include osgViewer/CompositeViewer #include osgViewer/ViewerEventHandlers #include osgGA/TrackballManipulator #include osgDB/ReadFile #include osgQt/GraphicsWindowQt #include iostream class ViewerWidget : public QWidget, public osgViewer::CompositeViewer { public: ViewerWidget(osgViewer::ViewerBase::ThreadingModel threadingModel=osgViewer::CompositeViewer::SingleThreaded) : QWidget() { setThreadingModel(threadingModel); // Create tab widget QTabWidget* tab = new QTabWidget(); // Add tabs tab-addTab(addViewWidget( createCamera(0,0,100,100), osgDB::readNodeFile(cow.osg) ), tab 1) ; tab-addTab(addViewWidget( createCamera(0,0,100,100), osgDB::readNodeFile(cessna.osg) ), tab 2) ; // Set layout QGridLayout* grid = new QGridLayout; grid-addWidget(tab, 0, 0) ; setLayout( grid ); setRunFrameScheme(osgViewer::ViewerBase::ON_DEMAND); _timerId = startTimer(0); } virtual ~ViewerWidget() { if (_timerId != 0) killTimer(_timerId); } QWidget* addViewWidget( osg::Camera* camera, osg::Node* scene ) { osgViewer::View* view = new osgViewer::View; view-setCamera( camera ); addView( view ); view-setSceneData( scene ); view-addEventHandler( new osgViewer::StatsHandler ); view-setCameraManipulator( new osgGA::TrackballManipulator ); osgQt::GraphicsWindowQt* gw = dynamic_castosgQt::GraphicsWindowQt*( camera-getGraphicsContext() ); return gw ? gw-getGLWidget() : NULL; } osg::Camera* createCamera( int x, int y, int w, int h, const std::string name=, bool windowDecoration=false ) { osg::DisplaySettings* ds = osg::DisplaySettings::instance().get(); osg::ref_ptrosg::GraphicsContext::Traits traits = new osg::GraphicsContext::Traits; traits-windowName = name; traits-windowDecoration = windowDecoration; traits-x = x; traits-y = y; traits-width = w; traits-height = h; traits-doubleBuffer = true; traits-alpha = ds-getMinimumNumAlphaBits(); traits-stencil = ds-getMinimumNumStencilBits(); traits-sampleBuffers = ds-getMultiSamples(); traits-samples = ds-getNumMultiSamples(); osg::ref_ptrosg::Camera camera = new osg::Camera; camera-setGraphicsContext( new osgQt::GraphicsWindowQt(traits.get()) ); camera-setClearColor( osg::Vec4(0.2, 0.2, 0.6, 1.0) ); camera-setViewport( new osg::Viewport(0, 0, traits-width, traits-height) ); camera-setProjectionMatrixAsPerspective( 30.0f, static_castdouble(traits-width)/static_castdouble(traits-height), 1.0f, 1.0f ); return camera.release(); } virtual bool event( QEvent* event ) { if (event-type() == QEvent::Timer) { if (static_castQTimerEvent*(event)-timerId() == _timerId) { frame(); return true; } } return QWidget::event(event); } protected: int _timerId; }; int main( int argc, char** argv ) { osg::ArgumentParser arguments(argc, argv); osgViewer::ViewerBase::ThreadingModel threadingModel = osgViewer::ViewerBase::CullThreadPerCameraDrawThreadPerContext; while (arguments.read(--SingleThreaded)) threadingModel = osgViewer::ViewerBase::SingleThreaded; while (arguments.read(--CullDrawThreadPerContext)) threadingModel = osgViewer::ViewerBase::CullDrawThreadPerContext; while (arguments.read(--DrawThreadPerContext)) threadingModel = osgViewer::ViewerBase::DrawThreadPerContext; while (arguments.read(--CullThreadPerCameraDrawThreadPerContext)) threadingModel = osgViewer::ViewerBase::CullThreadPerCameraDrawThreadPerContext; QApplication app(argc, argv); ViewerWidget* viewWidget = new ViewerWidget(threadingModel); viewWidget-setGeometry( 100, 100, 800, 600 ); viewWidget-show(); return app.exec(); } Thanks, Lucas -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=49837#49837 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] OSG + QT and QTabWidget: Disappearing scene graph
-Original Message- From: osg-users-boun...@lists.openscenegraph.org [mailto:osg-users-boun...@lists.openscenegraph.org] On Behalf Of Lucas SART Sent: 07 September 2012 11:08 To: osg-users@lists.openscenegraph.org Subject: Re: [osg-users] OSG + QT and QTabWidget: Disappearing scene graph Hi, I had looking for why it doesn't work. It seems that the first tab camera projection matrix and view matrix are not valid (components = -1.#IND) and I don't know why. I tryed to look into OSG code but I don't found what is wrong... If someone have an idea it would be great ! Oddly, I think I just encountered this problem yesterday. If the QT widget ever gets resized to zero (as can happen sometimes during setup and intermediate layout stages), and osgQt::GLWidget::resizeEvent is called with width and height equal to zero, the camera projection matrix gets screwed up due to divide-by-zeroes, and never recovers because resizing always takes into account the existing camera matrix. I solved the problem by preventing osgQt::GLWidget::resizeEvent being called by my GLWidget subclass if either dimension was zero. But I suppose it would probably be better if a fix was made inside the osgQt library. ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] OSG + QT and QTabWidget: Disappearing scene graph
under qt 5.0.0beta1 - it doesn't work I've got this error Qt at-spi: error getting the accessibility dbus address: The name org.a11y.Bus was not provided by any .service files Accessibility DBus not found. Falling back to session bus. Registered DEC: true Error in contacting registry org.freedesktop.DBus.Error.ServiceUnknown The name org.a11y.atspi.Registry was not provided by any .service files This plugin does not support setting window opacity QXcbConnection: XCB error: 3 (BadWindow), sequence: 576, resource id: 46137375, major code: 18 (ChangeProperty), minor code: 0 QXcbConnection: XCB error: 3 (BadWindow), sequence: 577, resource id: 46137375, major code: 12 (ConfigureWindow), minor code: 0 QXcbConnection: XCB error: 3 (BadWindow), sequence: 578, resource id: 46137375, major code: 8 (MapWindow), minor code: 0 QXcbConnection: XCB error: 3 (BadWindow), sequence: 596, resource id: 46137375, major code: 18 (ChangeProperty), minor code: 0 QXcbConnection: XCB error: 3 (BadWindow), sequence: 597, resource id: 46137375, major code: 12 (ConfigureWindow), minor code: 0 Cannot make QOpenGLContext current in a different thread -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=49844#49844 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] OSG + QT and QTabWidget: Disappearing scene graph
PS if I use singlethreaded I got errors QOpenGLContext::swapBuffers() called with non-exposed window, behavior is undefined QOpenGLContext::swapBuffers() called with non-exposed window, behavior is undefined -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=49845#49845 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] OSG + QT and QTabWidget: Disappearing scene graph
jlouis2k4 wrote: Hello Robert, Thank you for that example. It works great when I use the QTabWidget instead of the QGridLayout. However there is a problem that the first node (In the first tab) Does not show when the program is run. I can open the other tabs and see the nodes in all of them. Am I missing something here? Thank you! Cheers, Joseph I got the same problem (the first tab is empty), anyone knows how solve it ? -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=49798#49798 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] OSG + QT and QTabWidget: Disappearing scene graph
Hello Robert, Thank you for that example. It works great when I use the QTabWidget instead of the QGridLayout. However there is a problem that the first node (In the first tab) Does not show when the program is run. I can open the other tabs and see the nodes in all of them. Am I missing something here? Thank you! Cheers, Joseph -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=42636#42636 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] OSG + QT and QTabWidget: Disappearing scene graph
(); return app.exec(); } Robert Milharcic -Original Message- From: osg-users-boun...@lists.openscenegraph.org [mailto:osg-users-boun...@lists.openscenegraph.org] On Behalf Of Joseph Louis Sent: Tuesday, September 06, 2011 1:10 AM To: osg-users@lists.openscenegraph.org Subject: Re: [osg-users] OSG + QT and QTabWidget: Disappearing scene graph Hi Angus, I am trying to do the same with my program but the scene does not even appear in any of the tbs. I am also using the osgviewerQT example. Were you able to get your's to work? Thank you! Cheers, Joseph -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=42433#42433 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] OSG + QT and QTabWidget: Disappearing scene graph
Hi Angus, I am trying to do the same with my program but the scene does not even appear in any of the tbs. I am also using the osgviewerQT example. Were you able to get your's to work? Thank you! Cheers, Joseph -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=42433#42433 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
[osg-users] OSG + QT and QTabWidget: Disappearing scene graph
Hi, I am trying to build a Qt application with multiple independent OSG scene graphs, each of which in it's own tab in a QTabWidget. I am using the osgViewer::Viewer (not osgViewer::CompositeViewer) version of the adapter widget from the osgviewerQT example. Each tab has an instance of the adapter widget managing it's scene graph. When the application has more than one tabs and when I try to close one of them, sometimes the scene graph in the other tab may disappear, but I can still pick a node in the scene graph. Some people fixed a similar situation by sharing/not sharing the graphics context among the widgets, but none of the solutions that people suggested for the situations fix my problem. I wonder if I should use a different approach for the OSG + QT integration or if I need to do something particular to the graphics context. I appreciate all of your suggestions. Thank you! Cheers, Angus Lau -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=34464#34464 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org