Re: [osg-users] Different frame ratio for different cameras?
Hi Nicolas, For future posts could you break you posts into several paragraphs so the various questions and points are easier to spot and follow, this will make it easier to read and answer without getting misunderstandings. I think the question are asking is how to do a viewer with different views running at different frame rates. CompositeViewer doesn't support this, all the Views are synchronized to have the same FrameStamp. This is done for practicability as relaxing things so that all views could have different frame rates would really complicate the code internally as well as the public interface. There are also issues like the fact that all cameras on a graphics window have to be update all at the same time thanks to the way that double buffering works, this put constraints on the views that share a single window needing to update at the same time, keeping the CompositeViewer so it only has one frame stamp, and one frame loop fits this constraint automatically as well as keeping the internals and API clean. If you want two views with separate windows running at a different frame rate with their own frame loops then you'll need use two separate viewers. Robert. On Feb 18, 2008 10:00 AM, nicolas peña [EMAIL PROTECTED] wrote: Hello, I work in a Spanish research group that mainly works on mobile robotics and I am going to use OSG 2.2 to build an application (simulator of multi-robot collaborative perception) that has a main view that the user interact with, and a dynamic number of secondary views (one camera each) that render to a file, usually much lower frame rate that the main view, to simulate virtual cameras whose images are the used to feed the algorithms of collaborative perception. I am quite new to OSG, and after learning a bit I think that may at way to achieve this is using a composite viewer with a view as the main one and adding others with their respective camera set to render to a off screen pixel buffer, images attached to these cameras and post draw callbacks that send a copy of these images where they are needed. Many questions have arisen, to start with is the approach of using a composite viewer wrong?, how can I achieve different frame rates with the different views?. I had the idea of modifying the renderingTraversals() method of the viewer base class in order to accept as a parameter a std::vectorint that contained the indexes of the desired cameras to render in the internal vector that holds all the cameras, but with the threading model that its in use (really nice actually) this is just not that simple. Can any one help me with ideas on how to achieve my goal? Thanks a lot in advance!. Nicolas, ___ 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] Different frame ratio for different cameras?
Thanks for your answer, and sorry for my monolithic post. I will try to make them more readable. Now that I see that in order to control the frame rates I need to use an independent viewer for each simulated camera; - How can a set it to just render to a image and not display in the screen at all? I have tried to attach an image to the viewer's camera and set its render implementation to FRAME_BUFFER_OBJECT but obviously I am missing something as it didn't work. Thanks a lot, Nicolas. 2008/2/18, Robert Osfield [EMAIL PROTECTED]: Hi Nicolas, For future posts could you break you posts into several paragraphs so the various questions and points are easier to spot and follow, this will make it easier to read and answer without getting misunderstandings. I think the question are asking is how to do a viewer with different views running at different frame rates. CompositeViewer doesn't support this, all the Views are synchronized to have the same FrameStamp. This is done for practicability as relaxing things so that all views could have different frame rates would really complicate the code internally as well as the public interface. There are also issues like the fact that all cameras on a graphics window have to be update all at the same time thanks to the way that double buffering works, this put constraints on the views that share a single window needing to update at the same time, keeping the CompositeViewer so it only has one frame stamp, and one frame loop fits this constraint automatically as well as keeping the internals and API clean. If you want two views with separate windows running at a different frame rate with their own frame loops then you'll need use two separate viewers. Robert. On Feb 18, 2008 10:00 AM, nicolas peña [EMAIL PROTECTED] wrote: Hello, I work in a Spanish research group that mainly works on mobile robotics and I am going to use OSG 2.2 to build an application (simulator of multi-robot collaborative perception) that has a main view that the user interact with, and a dynamic number of secondary views (one camera each) that render to a file, usually much lower frame rate that the main view, to simulate virtual cameras whose images are the used to feed the algorithms of collaborative perception. I am quite new to OSG, and after learning a bit I think that may at way to achieve this is using a composite viewer with a view as the main one and adding others with their respective camera set to render to a off screen pixel buffer, images attached to these cameras and post draw callbacks that send a copy of these images where they are needed. Many questions have arisen, to start with is the approach of using a composite viewer wrong?, how can I achieve different frame rates with the different views?. I had the idea of modifying the renderingTraversals() method of the viewer base class in order to accept as a parameter a std::vectorint that contained the indexes of the desired cameras to render in the internal vector that holds all the cameras, but with the threading model that its in use (really nice actually) this is just not that simple. Can any one help me with ideas on how to achieve my goal? Thanks a lot in advance!. Nicolas, ___ 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 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Different frame ratio for different cameras?
Check the osgdistortion example and don't add the screen camera (the second camera) to the scene. That's more or less what you are looking for. If not, can you describe what did you do and what didn't work? From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of nicolas pe?a Sent: Monday, February 18, 2008 2:08 PM To: OpenSceneGraph Users Subject: Re: [osg-users] Different frame ratio for different cameras? Thanks for your answer, and sorry for my monolithic post. I will try to make them more readable. Now that I see that in order to control the frame rates I need to use an independent viewer for each simulated camera; - How can a set it to just render to a image and not display in the screen at all? I have tried to attach an image to the viewer's camera and set its render implementation to FRAME_BUFFER_OBJECT but obviously I am missing something as it didn't work. Thanks a lot, Nicolas. 2008/2/18, Robert Osfield [EMAIL PROTECTED]: Hi Nicolas, For future posts could you break you posts into several paragraphs so the various questions and points are easier to spot and follow, this will make it easier to read and answer without getting misunderstandings. I think the question are asking is how to do a viewer with different views running at different frame rates. CompositeViewer doesn't support this, all the Views are synchronized to have the same FrameStamp. This is done for practicability as relaxing things so that all views could have different frame rates would really complicate the code internally as well as the public interface. There are also issues like the fact that all cameras on a graphics window have to be update all at the same time thanks to the way that double buffering works, this put constraints on the views that share a single window needing to update at the same time, keeping the CompositeViewer so it only has one frame stamp, and one frame loop fits this constraint automatically as well as keeping the internals and API clean. If you want two views with separate windows running at a different frame rate with their own frame loops then you'll need use two separate viewers. Robert. On Feb 18, 2008 10:00 AM, nicolas peña [EMAIL PROTECTED] wrote: Hello, I work in a Spanish research group that mainly works on mobile robotics and I am going to use OSG 2.2 to build an application (simulator of multi-robot collaborative perception) that has a main view that the user interact with, and a dynamic number of secondary views (one camera each) that render to a file, usually much lower frame rate that the main view, to simulate virtual cameras whose images are the used to feed the algorithms of collaborative perception. I am quite new to OSG, and after learning a bit I think that may at way to achieve this is using a composite viewer with a view as the main one and adding others with their respective camera set to render to a off screen pixel buffer, images attached to these cameras and post draw callbacks that send a copy of these images where they are needed. Many questions have arisen, to start with is the approach of using a composite viewer wrong?, how can I achieve different frame rates with the different views?. I had the idea of modifying the renderingTraversals() method of the viewer base class in order to accept as a parameter a std::vectorint that contained the indexes of the desired cameras to render in the internal vector that holds all the cameras, but with the threading model that its in use (really nice actually) this is just not that simple. Can any one help me with ideas on how to achieve my goal? Thanks a lot in advance!. Nicolas, ___ 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 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Different frame ratio for different cameras?
Thanks very much for your answer. Reading that example was very helpful to understand why my previous attempt was wrong. Doing what you suggested let me with the desired result plus an empty screen. The only modification that I had to add was to set the underlying traits to be a pbuffer. Doing that makes the example run with no windows at all, just what I wanted. Thanks to you all. This first experience with the OSG community has been very nice! Nicolas. 2008/2/18, Guy [EMAIL PROTECTED]: Check the osgdistortion example and don't add the screen camera (the second camera) to the scene. That's more or less what you are looking for. If not, can you describe what did you do and what didn't work? -- *From:* [EMAIL PROTECTED] [mailto: [EMAIL PROTECTED] *On Behalf Of *nicolas pe?a *Sent:* Monday, February 18, 2008 2:08 PM *To:* OpenSceneGraph Users *Subject:* Re: [osg-users] Different frame ratio for different cameras? Thanks for your answer, and sorry for my monolithic post. I will try to make them more readable. Now that I see that in order to control the frame rates I need to use an independent viewer for each simulated camera; - How can a set it to just render to a image and not display in the screen at all? I have tried to attach an image to the viewer's camera and set its render implementation to FRAME_BUFFER_OBJECT but obviously I am missing something as it didn't work. Thanks a lot, Nicolas. 2008/2/18, Robert Osfield [EMAIL PROTECTED]: Hi Nicolas, For future posts could you break you posts into several paragraphs so the various questions and points are easier to spot and follow, this will make it easier to read and answer without getting misunderstandings. I think the question are asking is how to do a viewer with different views running at different frame rates. CompositeViewer doesn't support this, all the Views are synchronized to have the same FrameStamp. This is done for practicability as relaxing things so that all views could have different frame rates would really complicate the code internally as well as the public interface. There are also issues like the fact that all cameras on a graphics window have to be update all at the same time thanks to the way that double buffering works, this put constraints on the views that share a single window needing to update at the same time, keeping the CompositeViewer so it only has one frame stamp, and one frame loop fits this constraint automatically as well as keeping the internals and API clean. If you want two views with separate windows running at a different frame rate with their own frame loops then you'll need use two separate viewers. Robert. On Feb 18, 2008 10:00 AM, nicolas peña [EMAIL PROTECTED] wrote: Hello, I work in a Spanish research group that mainly works on mobile robotics and I am going to use OSG 2.2 to build an application (simulator of multi-robot collaborative perception) that has a main view that the user interact with, and a dynamic number of secondary views (one camera each) that render to a file, usually much lower frame rate that the main view, to simulate virtual cameras whose images are the used to feed the algorithms of collaborative perception. I am quite new to OSG, and after learning a bit I think that may at way to achieve this is using a composite viewer with a view as the main one and adding others with their respective camera set to render to a off screen pixel buffer, images attached to these cameras and post draw callbacks that send a copy of these images where they are needed. Many questions have arisen, to start with is the approach of using a composite viewer wrong?, how can I achieve different frame rates with the different views?. I had the idea of modifying the renderingTraversals() method of the viewer base class in order to accept as a parameter a std::vectorint that contained the indexes of the desired cameras to render in the internal vector that holds all the cameras, but with the threading model that its in use (really nice actually) this is just not that simple. Can any one help me with ideas on how to achieve my goal? Thanks a lot in advance!. Nicolas, ___ 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 ___ 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