Mmmm... if you got no more ideas, don't bother searching. This smells like 
there's a memory leak around here (in my code, I guess). I'll keep you informed.

Sukender
PVLE - Lightweight cross-platform game engine - http://pvle.sourceforge.net/

----- "Sukender" <suky0...@free.fr> a écrit :

> Hi Maria,
> 
> Yes, I saw your post about this, and tried this kind of solution.
> Unfortunately, the problem doesn't arise durung viewing but during
> data preparation. The viewer isn't realized yet, and the database
> paging functions are not being processed at this time. Registering to,
> or clearing the DatabasePager have no effect.
> 
> Thanks anyway.
> 
> Sukender
> PVLE - Lightweight cross-platform game engine -
> http://pvle.sourceforge.net/
> 
> ----- "María Ten" <mate...@gmail.com> a écrit :
> 
> > Hi Sukender,
> >
> > The DatabasePager only update correctly the timestamp of expired
> > children if they are registered. After load a new PagedLOD with the
> > fileName, it is registered automatically, but the level 0 PagedLOD
> is
> > not registered because you created it manually. Since it is not
> > registered, the databasepager doesn't update the timestamp for the
> > expired children of this PagedLOD. So the children are not expired
> and
> > they remain in memory.
> >
> > You have to call registerPagedLODs(rootNode)[1] after add the
> PagedLOD
> > to the scenegraph or call this method with the PagedLOD of level 0
> as
> > parameter to force the DatabasePager to register it. For example:
> >
> > osg::ref_ptr<osg::PagedLOD> paged( new osg::PagedLOD );
> > paged->addChild(new osg::Node);
> > paged->setFileName(1, pathTo3DFile);
> > paged->setRange(0, dist, FLT_MAX);
> > paged->setRange(1, 0, dist);
> > viewer.getDatabasePager()->registerPagedLODs(paged.get());
> >
> > We have the same issue in our application and calling this method
> > works nice for us.
> >
> > Cheers,
> >
> > Maria.
> >
> > [1] OSG Reference to registerPagedLODs method:
> >
> http://www.openscenegraph.org/documentation/OpenSceneGraphReferenceDocs/a00163.html#2c20aad9d434a2a2d11b1c5d092d2e59
> >
> >
> > On Wed, Mar 23, 2011 at 11:54 AM, Laurens Voerman < l.voer...@rug.nl
> >
> > wrote:
> >
> >
> > Hi Sukender,
> >
> > Your code can't cause the problem I suggested, so it must be
> something
> > else. I have no other suggestions to offer.
> >
> > Laurens.
> >
> >
> >
> >
> >
> > On 3/23/2011 11:12 AM, Sukender wrote:
> >
> >
> > Hi Laurens,
> >
> > Thanks for the tip. But my function looks like:
> > osg::ref_ptr<osg::PagedLOD> paged( new osg::PagedLOD );
> > paged->addChild(new osg::Node);
> > paged->setFileName(1, pathTo3DFile);
> > paged->setRange(0, dist, FLT_MAX);
> > paged->setRange(1, 0, dist);
> >
> > I create an empty child at index 0, viewable from 'dist' to FLT_MAX.
> > The second thing is not a child but a range+filename, viewable from
> 0
> > to 'dist.
> > This seems correct to me.
> >
> > Thoughts?
> >
> > Sukender
> > PVLE - Lightweight cross-platform game engine -
> > http://pvle.sourceforge.net/
> >
> > ----- "Laurens Voerman"< l.voer...@rug.nl > a écrit :
> >
> >
> >
> > Hi Sukender,
> >
> > Just a guess here,
> >
> > when you say
> > > Generate a PagedLOD, to load 'groupFile'
> > do you call PagedLOD::addChild(Node *child, ....) ?
> >
> > for the pageLOD will then hold the child in memory until
> > PagedLOD::removeExpiredChildren() is called. Normally this is done
> in
> > the frame loop (in updateSceneGraph()) but I think you're not in a
> > frame
> > loop (yet).
> >
> > Laurens.
> >
> > On 3/23/2011 10:19 AM, Sukender wrote:
> >
> >
> > Hi Robert,
> >
> > Sorry for being too vague. It's a "data preparation + viewer" app,
> > but the problem arises during the data preparation. Some data sets
> do
> > not present the symptoms whereas some others do... Here is a more
> > detailed view of the problematic method, in pseudo-code:
> >
> >
> >
> > void function(Group& parent, const string& path) {
> > If path is a directory
> > osg::ref_ptr<osg::Group> group(new osg::Group);
> > Foreach entry in the directory, do a recursive call:
> > function(group, entry).
> >
> >
> > write 'group' to disk, in 'groupFile' (somewhere out of the
> > current directory structure)
> >
> >
> > Generate a PagedLOD, to load 'groupFile' when below a given view
> > distance (using group->getBound())
> >
> >
> > Add that PagedLOD to 'parent'
> > unload the group (well, it's a local variable!)
> > else if it's a 3D file
> > Get the AABB of the 3D file (the file isn't loaded in memory)
> > Generate a PagedLOD, to load the 3D file when below a given view
> > distance (using AABB info)
> >
> >
> > Add that PagedLOD to 'parent'
> > }
> >
> > This makes memory rise very high and very quickly on a given
> > dataset. This dataset is a hierarchical tree structure with at most
> > 1000 3D files in each dir. What is strange is that the algorithm
> seems
> > quite straightforward. I'm just going crazy! I'm pretty sure there
> is
> > a stupid little thing around here that I didn't spot. Or is there
> some
> > OSG internal mechanism I didn't deactivate?
> >
> >
> >
> > Tries:
> > - As I told, I wrote (before the method runs)
> > options = osgDB::Registry::instance()->getOptions();
> > options->setBuildKdTreesHint(osgDB::Options::DO_NOT_BUILD_KDTREES);
> > options->setObjectCacheHint(osgDB::Options::CACHE_NONE);
> > - I also tried adding "databasePager.clear();" after writing the
> > 'groupFile', but this doesn't change anything.
> >
> >
> >
> > Any idea?
> > Many thanks.
> >
> > Sukender
> > PVLE - Lightweight cross-platform game engine -
> > http://pvle.sourceforge.net/
> >
> >
> >
> > ----- "Robert Osfield"< robert.osfi...@gmail.com > a écrit :
> >
> >
> >
> > Hi Sukender,
> >
> > You explanation of what you are doing in your app is way too light
> > for
> > us to be able to guess what might be amiss. Are you running the
> > viewer? Is it just data preperation? I haven't got a clue.
> >
> > Robert.
> >
> > On Tue, Mar 22, 2011 at 5:42 PM, Sukender< suky0...@free.fr > wrote:
> >
> >
> > Hi all,
> >
> > Here's something strange:
> > - I create PageLODs that will load files on disk when needed
> > - I create Groups of PagedLODs
> > - I write those groups to disk (OSGB/T format). They thus contain
> > only few data (just nodes and paths where data is).
> >
> >
> > - I create a PagedLOD which loads this newly file on disk. The
> > group
> >
> >
> >
> >
> > is theorically unloaded after this.
> >
> >
> >
> > When repeating this, my memory usage climbs very high... but the
> > groups should not be in memory... I wrote
> >
> >
> > osgDB::Options * options =
> > osgDB::Registry::instance()->getOptions();
> >
> >
> >
> >
> > options->setBuildKdTreesHint(osgDB::Options::DO_NOT_BUILD_KDTREES);
> >
> >
> >
> >
> >
> >
> > options->setObjectCacheHint(osgDB::Options::CACHE_NONE);
> > But this doesn't change anything.
> > And of course I finally run out of memory.
> > For info, small graphs behave normally in osgViewer (nodes load
> > when
> >
> >
> >
> >
> > approaching, memory usage rises, etc.).
> >
> >
> >
> > Any idea?
> > Thanks.
> >
> > Sukender
> > PVLE - Lightweight cross-platform game engine -
> > http://pvle.sourceforge.net/
> >
> >
> > _______________________________________________
> > 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://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
> >
> >
> >
> > --
> > María Ten Rodríguez
> >
> > gvSIG 3D Blog:
> > http://gvsig3d.blogspot.com
> >
> > Instituto de Automática e Informática Industrial
> http://www.ai2.upv.es
> > Ciudad Politécnica de la Innovación
> > Universidad Politécnica de Valencia
> >
> > _______________________________________________
> > 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

Reply via email to