Hi Robert,

I really like your solution... But I still got a problem!
I'm sorry for wasting you so much time for this, but I must miss many hours of 
sleep(*) because I still don't know how to make writeFileNode(readFileNode(X)) 
work without getting a std::bad_alloc in my face (with many images). Worse 
case: writeFileNode(modifyMyScene(readFileNode(X))). Say modifyMyScene() is a 
call to the atlas builder in osgUtil::Optimizer for our example.
1. I can easily set "empty" images instead of loading them and add a node 
callback somewhere, but
2. I don't know how to make modifyMyScene() work with images without crashing, 
and
3. I don't know how to make writers work correctly with empty images, as 
they'll never call any node callback.
Any idea?

(*) Kids should rather sleep at *NIGHT*. Or maybe I'm simply dumb...

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

----- "Robert Osfield" <[email protected]> a écrit :

> Hi Sukender,
> 
> On Wed, Jan 13, 2010 at 2:57 PM, Sukender <[email protected]> wrote:
> > Of course. Merging when having doubts wouldn't be a good idea.
>  Unfortunately I absolutely don't see how to reach my goals with such
> a method. Have you got any hint or clue that might help me to start?
> 
> My thought is that one could use either an update or a cull callback
> depending upon what ones goals are.  One could have one or more of
> these callbacks assigned to loaded subgraphs, for instance it could
> be
> as fine grained as being attached to a node above a geode through to
> the topmost node of the subgraph being loaded by a plugin.  The later
> is probably how I'd expect it to be used most often.
> 
> In the callback I would expect to have a list of osg::Image that need
> filling in, or a list of osg::Texture and the filenames of the files
> that need to be attached to them.  In the case of the a synchronous
> load approach the callback would be invoked during traversal and load
> all the required images and assign them to Textures if required, once
> all the loads are done the list of images to load would be cleared
> and
> the traversal of the subgraph then done as usual.
> 
> If one wanted to attach this callback to the cull traversal then
> you'd
> need to be mindful of the possibility of multiple cull traversals
> running in a parallel so you'd want to mutex lock access to it to
> serialize the various threads going through while the loading is
> underway.  If you want to make the constant frame rate callback then
> you'd need to think about having a background thread to do the
> loading
> and until the items are loaded you'd disable the traversal of the
> subgraph.
> 
> Another variation on this theme would be to use a custom group node
> that override the traverse() method and then is able to control
> traversal of it's subgraph for all NodeVisitor types and possible
> handle the different types of traversal differently depending upon
> the
> mode of operation that has been requested.
> 
> As well as writing of this callback/node you'd also want to construct
> them and attach them to loaded scene graphs.  The ReadFileCallback
> callback that you wrote for intercepting readImage calls could be
> adapted to fill in the required images, and attach the
> nodecallback/node by intercepting the readNode call.
> 
> I don't think the basic callback would need to be very complicated,
> should be easily doable in a hundred lines of code.  The
> multi-threaded versions will be be complex, but one could leave the
> door open to such implementations as a later add-on.
> 
> Robert.
> _______________________________________________
> osg-submissions mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to