[osg-users] Capturing all visible nodes
Julien Valentin
julienvalentin51 at gmail.com
Fri Jan 18 17:34:58 PST 2019
Hi
You have to setup cullcallbacks of your drawables
Code:
drawable->setCullCallback(new MyCullCallback);
it then will be called during osgViewer cull traversal...
Cheers
ijwolf8 wrote:
> Hello all,
>
> I've looked everywhere for this, and have tried to piece together examples I've found online, but I am having no luck accomplishing what conceptually seems like a very simple task.
>
> The overall goal is to take all nodes within view and send them to UV space for texture mapping. The only part I can't get down is the first part-capturing all visible nodes within view.
>
> I've read through several posts on this site (removed links because "You must have 2 posts before you can post URL's/Links."), but they all end without a real solution. The last one in particular just confuses me:
>
> "Just write a NodeVisitor that has it's traversal mode set to TRAVERSE_ALL_CHILDREN i.e. ..."
>
> But that wasn't the question? It was to get all visible nodes, not ALL nodes?
>
> Either way, I've attempted to implement these codes and more, but I just don't understand the structure of node visitors and callbacks enough to make progress. For example, one of the posts contained this code that seemed very promising:
>
>
> Code:
>
> class MyCullCallback : public osg::NodeCallback
> {
>
> void operator()(osg::Node* node, osg::NodeVisitor* nv)
> {
> // osgUtil::CullVisitor* cv = nv->asCullVisitor();
> osgUtil::CullVisitor* cv = dynamic_cast<osgUtil::CullVisitor*>(nv);
> if (!cv->isCulled(*node))
> {
> std::cout << "Node is visible: "<< endl;
> }
>
> if ( cv->isCulled(*node))
> {
>
> std::cout << "Node is NOT visible: "<<endl;
>
> }
> traverse(node,nv);
> }
> };
>
>
>
>
> I tried the following code along with it, but it just throws an error and freezes.
>
>
> Code:
>
> MyCullCallback* cb = new MyCullCallback();
> osg::NodeVisitor* nv = new osg::NodeVisitor();
> //cb->operator()(myGroup, nv);
>
>
>
>
> So how exactly am I supposed to utilize it? Do I have to initialize NodeVisitor with an initial node? If so which do I chose?
>
> If there's anymore information I can give please let me know. I've researched all sorts of frustum culling, node visitors, and manually capturing visible nodes with ray tracing, but I figure there has got to be a simpler way to do this!
>
> Thanks for any and all help,
>
> Isaac
------------------------
Twirling twirling twirling toward freedom
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=75509#75509
More information about the osg-users
mailing list