[osg-users] multiple windows

Alberto Luaces aluaces at udc.es
Fri Oct 26 00:45:03 PDT 2007


If I recall correctly, you can have as many CompositeViewers as you like/need.

Alberto

El Friday 26 October 2007 00:19:25 Emmanuel Roche escribió:
> Still on the issue of multi-windows, I guess it's totally unsafe to use
> multiple CompositeViewer at the same time, isn't it ?
>
> For exemple doing something like:
>
> CompositeViewer* v1 = (...)
>
> CompositeViewer* v2 = (....)
>
>
> while(true) {
>   v1->frame();
>   v2->frame();
> }
>
>
> ???
>
> 2007/10/25, Emmanuel Roche <roche.emmanuel at gmail.com>:
> > Whoups.... my zip file was blocked...:-( thus I'm joining the files one
> > by one....
> >
> > regards,
> > Manu.
> >
> > 2007/10/25, Emmanuel Roche < roche.emmanuel at gmail.com>:
> > > whoups... forgot the file of course;..
> > >
> > > 2007/10/25, Emmanuel Roche <roche.emmanuel at gmail.com>:
> > > > For those who would have some time to give a look at this, I'm
> > > > joining the code of a simple application designed to open a View in
> > > > multiple tabs:
> > > >
> > > > the user select an osg or ive file to open an then a new tab is
> > > > created using this file as scene Data.
> > > >
> > > > There is a single CompositeViewer managed by the main frame, an 1
> > > > View object per tab...
> > > >
> > > > This sample is NOT working properly: if you add one tab, every thing
> > > > is okay, but when you had other tabs, as before, only the last one is
> > > > displayed :-( the others become empty [only the default blue
> > > > background :-( ] and this last tab doesn't handle the mouse inputs
> > > > correctly [instead, it seems that the mouse input for the first tab
> > > > are used for this last View !!!...
> > > >
> > > > Yet the code is very clear: each tab has its GraphicsWindowWX, (so
> > > > its wxGLCanvas too), its OSGPanel (so its own processing of mouse
> > > > inputs, and its View).. so what does this mean ? is the global
> > > > CompositeViewer appropriating itself the eventQueue of the first View
> > > > added and then using this one for the other Views ?....
> > > >
> > > > As always , any clue would be really welcomed, I feel a bit lost with
> > > > this...
> > > >
> > > > regards,
> > > > Manu.
> > > >
> > > > 2007/10/25, Emmanuel Roche < roche.emmanuel at gmail.com>:
> > > > > Hi again guys !
> > > > >
> > > > > I've just tested your solution Alberto, and indeed it's working and
> > > > > I can see both pages with two View on each page :-)...
> > > > >
> > > > > Yet I think there is still something I'm missing about the
> > > > > CompositeViewer behavior : indeed, I set a trackballmanipulator for
> > > > > the view1 [ view1->setCameraManipulator(new
> > > > > osgGA::TrackballManipulator); ] and created a Mouse handling
> > > > > function:
> > > > >
> > > > > void ventana::OnMouse(wxMouseEvent& event)
> > > > > {
> > > > >     if (event.ButtonDown()) {
> > > > >         int button = event.GetButton();
> > > > >         v1->getEventQueue()->mouseButtonPress(event.GetX(),
> > > > > event.GetY(), button);
> > > > >     }
> > > > >     else if (event.ButtonUp()) {
> > > > >         int button = event.GetButton();
> > > > >         v1->getEventQueue()->mouseButtonRelease(event.GetX(),
> > > > > event.GetY(), button);
> > > > >     }
> > > > >     else if (event.Dragging ()) {
> > > > >         v1->getEventQueue()->mouseMotion(event.GetX(), event.GetY
> > > > > ());
> > > > >     }
> > > > > }
> > > > >
> > > > > ... here "v1" is the first GraphicsWindow on the tab, and, when I
> > > > > activate this function by dragging the mouse on the tab nothing
> > > > > moves....
> > > > >
> > > > > :-(... I trying replacing "v1" by "cViewer" and calling
> > > > >
> > > > > cViewer->setEventQueue(v1->getEventQueue()) in the initilialization
> > > > > process [ because the eventQueue seems to be NULL otherwise...] but
> > > > > this doesn't work either... Any clue about this ???
> > > > >
> > > > >
> > > > > regards,
> > > > > Manu.
> > > > >
> > > > > 2007/10/25, Robert Osfield <robert.osfield at gmail.com >:
> > > > > > Hi Guys,
> > > > > >
> > > > > > I don't have any recommendations, or time right now to dive into
> > > > > > this
> > > > > > topic.  I'd certainly like to see osgViewer be able to cope with
> > > > > > this
> > > > > > type of usage, and its not one that its been coded for up to this
> > > > > > point.  Might I suggest getting a tabbed WxWidget example
> > > > > > together than could be included with the OSG distribution that
> > > > > > illustrates the
> > > > > > this issue and can be used as a test bed for a final recommend
> > > > > > solution.
> > > > > >
> > > > > > Robert.
> > > > > >
> > > > > > On 10/25/07, Emmanuel Roche <roche.emmanuel at gmail.com> wrote:
> > > > > > > Thanks a lot Alberto I guess I could not get anything more
> > > > > >
> > > > > > usefull :-) !
> > > > > >
> > > > > > > I'm checking this right now....
> > > > > > >
> > > > > > > Regards,
> > > > > > > Manu.
> > > > > > >
> > > > > > > 2007/10/25, Alberto Luaces < aluaces at udc.es>:
> > > > > > > > Hi Manu,
> > > > > > > >
> > > > > > > > I'm doing the very same thing, but with two views of a same
> > > > > >
> > > > > > scene on every
> > > > > >
> > > > > > > > tab. Currently it works well, but I suspect there are
> > > > > >
> > > > > > duplicated
> > > > > >
> > > > > > > resources, so
> > > > > > >
> > > > > > > > I have to say that my code is not in its final version.
> > > > > > > >
> > > > > > > > I'm attaching it, it works for me on Linux and wx
> > > > > > > > 2.6.3unmodified.
> > > > > > > >
> > > > > > > > Feel free to compare it with yours so we can learn together
> > > > > > > > :)
> > > > > > > >
> > > > > > > > HTH,
> > > > > > > >
> > > > > > > > Alberto
> > > > > > > >
> > > > > > > > El Thursday 25 October 2007 12:37:45 Emmanuel Roche escribió:
> > > > > > > > > Hello everyone!
> > > > > > > > >
> > > > > > > > > I've got a simple question, but I can't find any practical
> > > > > >
> > > > > > solution:
> > > > > > > > > In my application, I have to display a notebook with a 3D
> > > > > >
> > > > > > window on each
> > > > > >
> > > > > > > > > tab... and I want to be able to add/remove tabs
> > > > > >
> > > > > > dynamically... so, what
> > > > > >
> > > > > > > can
> > > > > > >
> > > > > > > > > I use to achieve this result ?
> > > > > > > > >
> > > > > > > > > I'm usig wxWidgets + OSG 2.2.0
> > > > > > > > > I'm on Win XP
> > > > > > > > >
> > > > > > > > > I tried with a CompositeViewer :
> > > > > > > > > - creating the conpositeViewer when requested (so
> > > > > > > > > everything
> > > > > >
> > > > > > should be
> > > > > >
> > > > > > > in
> > > > > > >
> > > > > > > > > the wx event handling thread...)
> > > > > > > > > - building my graphicswindowWX
> > > > > > > > > - creating a view
> > > > > > > > > - adding this view to the compositeview
> > > > > > > > > - relying on an Idle function to call viewer->frame()...
> > > > > > > > >
> > > > > > > > > ... this works as long as there is a single tab...  but
> > > > > > > > > when
> > > > > >
> > > > > > I had
> > > > > >
> > > > > > > others,
> > > > > > >
> > > > > > > > > then only the last tab added display something : the others
> > > > > >
> > > > > > only display
> > > > > >
> > > > > > > > > the blue background with no model anymore... ? why that ??
> > > > > > > > >
> > > > > > > > > by the way I had to make a small change in the
> > > > > > > > > GraphicsWindowWx::makeCurrentImplementation() :
> > > > > > > > >
> > > > > > > > > bool GraphicsWindowWX::makeCurrentImplementation() {
> > > > > > > > >   // Bouml preserved body begin 0001FE83
> > > > > > > > >     if(!GetParent()->IsShown())
> > > > > > > > >         return false;
> > > > > > > > >
> > > > > > > > >     SetCurrent();
> > > > > > > > >     return true;
> > > > > > > > >   // Bouml preserved body end 0001FE83
> > > > > > > > > }
> > > > > > > > >
> > > > > > > > > --> So the hidden tabs should return false here... could
> > > > > >
> > > > > > this be the
> > > > > >
> > > > > > > source
> > > > > > >
> > > > > > > > > of the problem ?? (anyway wxWidgets doesn't accept
> > > > > >
> > > > > > SetCurrent() when the
> > > > > >
> > > > > > > > > corresponding tab is not visible... :-S )
> > > > > > > > >
> > > > > > > > > regards !
> > > > > > > > >
> > > > > > > > > Thanks for your help !
> > > > > > > > > Manu.
> > > > > > > >
> > > > > > > > _______________________________________________
> > > > > > > > osg-users mailing list
> > > > > > > > osg-users at lists.openscenegraph.org
> > > > > >
> > > > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-opensceneg
> > > > > >raph.org
> > > > > >
> > > > > > > _______________________________________________
> > > > > > > osg-users mailing list
> > > > > > > osg-users at lists.openscenegraph.org
> > > > > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscen
> > > > > > >egraph.org
> > > > > >
> > > > > > _______________________________________________
> > > > > > osg-users mailing list
> > > > > > osg-users at lists.openscenegraph.org
> > > > > >
> > > > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-opensceneg
> > > > > >raph.org





More information about the osg-users mailing list