<div dir="ltr">John,<br><br>Digging into my memories on the subject...<br><br>One issue is, like you said, keeping data from paging out when the renderer is idle. One approach might be to force a cull traversal every so often, or to visit the scene graph and manually update the timestamps on your PagedLODs. There may be more to it however.<br>
<br>The other issue is making sure the pager completes all the tasks it has queued up. The pager does a little slice of work each frame in order to avoid frame rate hiccups. So when you go to render on demand, you have to keep looping until the pager goes "idle" ... i.e. its queues empty out. You can query the state with requiresUpdateSceneGraph(), getFileRequestListSize(), et al. <br>
<br>Now, my experimentation in this area was with an older version of OSG and Robert has refactored the pager since then. It ended up being a much more complex task than I anticipated.<br><br>Glenn<br><br><div class="gmail_quote">
On Wed, Jul 30, 2008 at 10:12 AM, John Vidar Larring <span dir="ltr"><<a href="mailto:larring@weatherone.tv">larring@weatherone.tv</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi Glenn,<br>
<br>
Thanks for your quick reply as always:) Changing topic title to use more appropriate terms. See comments below:<br>
<br>
> I used to refer to the technique you're using as "lazy rendering"<br>
> (i.e. only render a frame when something has changed) ... try<br>
> searching the archives ...<br>
<br>
When searching the archives for "lazy rendering" through Google Groups and Gmain, I only found to posting on the subject, of which this one comments the former:<br>
<a href="http://article.gmane.org/gmane.comp.graphics.openscenegraph.user/8859/match=lazy+rendering" target="_blank">http://article.gmane.org/gmane.comp.graphics.openscenegraph.user/8859/match=lazy+rendering</a><br>
<br>
> I have run into the same issue. PagedLOD children "expire" after a<br>
> certain period of time (default is something like 5 seconds?) If a<br>
> PagedLOD child has not been visited in the last N seconds, the pager<br>
> will discard it and revert to a lower LOD. OSG updates the<br>
> "time-last-visited" during the cull traversal in order to check for<br>
> expiration. So, if you are not continuously running the frame loop,<br>
> PagedLOD's will think their children have expired and will drop to the<br>
> lowest LOD.<br>
> [snip]... but at the time I never did find a good way to do this in<br>
> OSG without confusing the pager.<br>
<br>
Hmmm... that's what I feared. Ok, I am just thinking aloud here since this is a problem I really need to get solved:<br>
<br>
For real-time rendering paging out children on expery time is a good idea to keep memory consumption at minimum. However, this obvious does not work for "lazy rendering".<br>
<br>
What if the pager could be configured in the following way for "lazy rendering":<br>
* Set a "maximum" memory size osgDB::DatabasePager can occupy.<br>
* When a new page/sub-graph is added, osgDB::DatabasePager::removeExpiredSubgraphs() will remove the oldest pages if the "maximum" limit is exceeded.<br>
<br>
Would this be a feasible strategy? Or are there better ways/strategies to support lazy rendering of pagedLOD databases?<br>
<br>
Best regards,<br>
John Larring<br>
<br>
<br>
Glenn Waldron wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
John,<br>
<br>
I have run into the same issue. PagedLOD children "expire" after a certain period of time (default is something like 5 seconds?) If a PagedLOD child has not been visited in the last N seconds, the pager will discard it and revert to a lower LOD. OSG updates the "time-last-visited" during the cull traversal in order to check for expiration. So, if you are not continuously running the frame loop, PagedLOD's will think their children have expired and will drop to the lowest LOD.<br>

<br>
I used to refer to the technique you're using as "lazy rendering" (i.e. only render a frame when something has changed) ... try searching the archives ... but at the time I never did find a good way to do this in OSG without confusing the pager.<br>

<br>
Glenn<br>
<br>
-- <br>
Glenn Waldron : Pelican Mapping : <a href="http://pelicanmapping.com" target="_blank">http://pelicanmapping.com</a> : +1.703.652.4791<br>
<br>
On Wed, Jul 30, 2008 at 8:39 AM, John Vidar Larring <<a href="mailto:larring@weatherone.tv" target="_blank">larring@weatherone.tv</a> <mailto:<a href="mailto:larring@weatherone.tv" target="_blank">larring@weatherone.tv</a>>> wrote:<br>

<br>
    Hi all,<br>
<br>
    Background:<br>
    -----------<br>
    In our application the user can set up scenes ( or sequences as we<br>
    call them) for playback on a timeline (e.g. seq.1 - transition -<br>
    seg.2 - transition ... seq.N). Some scenes are too complex to render<br>
    real-time and are recorded to movies before playback. Hence, when<br>
    scenes are edited by the user all scenes are redrawn as needed<br>
    rather than continuously to avoid sluggish GUI response.<br>
<br>
    Problem:<br>
    --------<br>
    _Sometimes_ when the scene is redrawn in edit mode (i.e. redraw only<br>
    if needed), the pagedLOD DB (osgTerrain) drops to the lowest detail<br>
    level (Ref. osg_original.jpg and osg_problem.jpg). This behavior<br>
    seems to appear at randomly. In playback mode (i.e. when frame rate<br>
    is constant) the problem never occurs.<br>
<br>
    Reproduce / Code example:<br>
    ----------<br>
    The problem has been reproduces in a small test program<br>
    (osgtest_source_code.tgz) derived from the osgviewerQT example<br>
    (since we are using Qt 4.x in our application). To reproduce: run<br>
    the compiled application: 'osgtest -t <your osgTerrain db>' . To<br>
    trigger refreshes, occlude parts of the window with another window.<br>
    The problem typically reveals itself when at a redraw or when the<br>
    window looses focus (be patient, since this happens randomly it may<br>
    take some time before the problem occurs).<br>
<br>
    Since I'm still quite new to OSG, I'm not sure where to look for a<br>
    solution. Hopefully someone will spot the obvious error in the<br>
    sample code. Any advice is highly appreciated.<br>
<br>
    Versions:<br>
    ---------<br>
    OSG svn rev 8700<br>
    Qt 4.2.3<br>
<br>
    Best regards,<br>
    John Larring<br>
<br>
    --     This message has been scanned for viruses and<br>
    dangerous content by MailScanner, and is<br>
    believed to be clean.<br>
<br>
<br>
    _______________________________________________<br>
    osg-users mailing list<br>
    <a href="mailto:osg-users@lists.openscenegraph.org" target="_blank">osg-users@lists.openscenegraph.org</a><br>
    <mailto:<a href="mailto:osg-users@lists.openscenegraph.org" target="_blank">osg-users@lists.openscenegraph.org</a>><br>
    <a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
<br>
<br>
<br>
<br>
-- <br>
This message has been scanned for viruses and<br>
dangerous content by *MailScanner* <<a href="http://www.mailscanner.info/" target="_blank">http://www.mailscanner.info/</a>>, and is<br>
believed to be clean.<br>
<br>
<br>
------------------------------------------------------------------------<br>
<br>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org" target="_blank">osg-users@lists.openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
</blockquote>
<br>
<br>
-- <br>
Best regards,<br>
John<br>
WeatherOne<br>
<br>
<br>
-- <br>
This message has been scanned for viruses and<br>
dangerous content by MailScanner, and is<br>
believed to be clean.<br>
<br>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org" target="_blank">osg-users@lists.openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
</blockquote></div><br><br clear="all"><br>-- <br>Glenn Waldron : Pelican Mapping : <a href="http://pelicanmapping.com">http://pelicanmapping.com</a> : +1.703.652.4791<br>
</div>