<div dir="ltr">Hi Simone,<div><br></div><div>If you just want to use the PagedLOD as a kind of delayed system for loading nodes (but not unload them from memory), I suggest you use instead de osg::ProxyNode, it defers the loading to the DatabasePager but once loaded is not unloaded anymore. If your database is well balanced the CullVisitor will ensure good framerate when the node is not in the frustrum.</div><div><br></div><div>Just my two cents,</div><div><br></div><div>Rafa.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">El mar., 29 nov. 2016 a las 15:43, Simone Rapposelli (<<a href="mailto:simone.rapposelli@gmail.com">simone.rapposelli@gmail.com</a>>) escribió:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Robert,<br class="gmail_msg">
<br class="gmail_msg">
by increasing TargetMaximumNumberOfPageLOD the problem of having to reload the same PageLod disappears, so it works!!<br class="gmail_msg">
Thank you!<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
robertosfield wrote:<br class="gmail_msg">
> Hi Simone,<br class="gmail_msg">
><br class="gmail_msg">
> On 29 November 2016 at 12:37, Simone Rapposelli<br class="gmail_msg">
> <> wrote:<br class="gmail_msg">
><br class="gmail_msg">
> > thank you for your fast reply.<br class="gmail_msg">
> > My problem is that osgDB::ReaderWriter::ReadResult readNode(const std::string &fileName, const osgDB::ReaderWriter::Options *options) gets called even if a PagedLod with the same fileName has been previously loaded: for example, this happens if I move to any position on the viewer and then come back.<br class="gmail_msg">
> > Thus, inside this function I need to check if any of the PagedLod currently loaded in DatabasePager has the same fileName of the passed argument: in this case I could avoid to reload data already in memory.<br class="gmail_msg">
> ><br class="gmail_msg">
><br class="gmail_msg">
> The PagedLOD/DatabasePager paging scheme is designed to expire and<br class="gmail_msg">
> reload subgraphs, it *crucial* to load balancing.  If you cached all<br class="gmail_msg">
> loaded subgraphs your memory would rapidly be overwhelmed and your<br class="gmail_msg">
> system would grind to a halt.  The very scheme you are trying to<br class="gmail_msg">
> defeat is one of the best assets of the OSG, you *absolutely* do not<br class="gmail_msg">
> want to be breaking this mechanism.<br class="gmail_msg">
><br class="gmail_msg">
> Now, if you the defaults the paging scheme uses for load balancing is<br class="gmail_msg">
> too conservative w.r.t the number of PagedLOD it will aim for in<br class="gmail_msg">
> memory at one time you can adjust it to be higher simply by setting<br class="gmail_msg">
> the TargetMaximumNumberOfPageLOD parameter, from the DatabasePager<br class="gmail_msg">
> header you'll see:<br class="gmail_msg">
><br class="gmail_msg">
> /** Set the target maximum number of PagedLOD to maintain in memory.<br class="gmail_msg">
> * Note, if more than the target number are required for<br class="gmail_msg">
> rendering of a frame then these active PagedLOD are excempt from being<br class="gmail_msg">
> expiried.<br class="gmail_msg">
> * But once the number of active drops back below the target<br class="gmail_msg">
> the inactive PagedLOD will be trimmed back to the target number.*/<br class="gmail_msg">
> void setTargetMaximumNumberOfPageLOD(unsigned int target) {<br class="gmail_msg">
> _targetMaximumNumberOfPageLOD = target; }<br class="gmail_msg">
><br class="gmail_msg">
> You can also set the default value using the env var OSG_MAX_PAGEDLOD<br class="gmail_msg">
> i,e under bash:<br class="gmail_msg">
><br class="gmail_msg">
> export OSG_MAX_PAGEDLOD=2000<br class="gmail_msg">
> osgviewer mypageddatabase.osgb<br class="gmail_msg">
><br class="gmail_msg">
> You can get a listing of the env vars supported by doing:<br class="gmail_msg">
><br class="gmail_msg">
> osgviewer --help-env<br class="gmail_msg">
><br class="gmail_msg">
> Robert.<br class="gmail_msg">
> _______________________________________________<br class="gmail_msg">
> osg-users mailing list<br class="gmail_msg">
><br class="gmail_msg">
> <a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br class="gmail_msg">
><br class="gmail_msg">
>  ------------------<br class="gmail_msg">
> Post generated by Mail2Forum<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
------------------<br class="gmail_msg">
Read this topic online here:<br class="gmail_msg">
<a href="http://forum.openscenegraph.org/viewtopic.php?p=69530#69530" rel="noreferrer" class="gmail_msg" target="_blank">http://forum.openscenegraph.org/viewtopic.php?p=69530#69530</a><br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
osg-users mailing list<br class="gmail_msg">
<a href="mailto:osg-users@lists.openscenegraph.org" class="gmail_msg" target="_blank">osg-users@lists.openscenegraph.org</a><br class="gmail_msg">
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br class="gmail_msg">
</blockquote></div>