Is there a simple way to list all nodes in the scenegraph?
like a render.findAllMatches (allNodes).
I don’t need to know the hierarchy so i would not like to do a recursive getChildsAsList.
thanks beforehand
Is there a simple way to list all nodes in the scenegraph?
like a render.findAllMatches (allNodes).
I don’t need to know the hierarchy so i would not like to do a recursive getChildsAsList.
thanks beforehand
Ok i found one. i do render.findAllMatches(’’/’).
However i’ve got a pehraps strange result.
Scene.ls() give me this:
ModelRoot Scene
GeomNode Sphere (1 geoms)
ModelRoot World
GeomNode Sphere (1 geoms)
ModelNode Warrior
ModelNode actorGeom
Character __Actor_modelRoot
GeomNode (1 geoms)
ModelRoot Sphinx T:(scale 0.01)
PandaNode
GeomNode Sphinx (1 geoms: TextureAttrib) T:m(scale 3.28084)
ModelRoot Pool
GeomNode Sphere (1 geoms)
however listing all scenegraph node give me this :
render
render/Scene
render/camera
render/Scene
render/camera
render/camera/PickRay
render/camera/cam
render/Scene/Pool
render/Scene/World
render/Scene/Sphere
render/camera/PickRay
render/camera/cam
render/camera/PickRay
render/camera/cam
render/Scene/Pool
render/Scene/World
render/Scene/Sphere
render/Scene/Pool
render/Scene/World
render/Scene/Sphere
render/Scene/World/Sphinx
render/Scene/World/Warrior
render/Scene/World/Sphere
render/Scene/Pool/Sphere
render/Scene/World/Sphinx
render/Scene/World/Warrior
render/Scene/World/Sphere
render/Scene/World/Sphinx
render/Scene/World/Warrior
render/Scene/World/Sphere
render/Scene/Pool/Sphere
render/Scene/Pool/Sphere
render/Scene/World/Sphinx
render/Scene/World/Warrior
render/Scene/World/Sphere
render/Scene/Pool/Sphere
render/Scene/World/Warrior/actorGeom
render/Scene/World/Sphinx/-PandaNode
render/Scene/World/Warrior/actorGeom
render/Scene/World/Sphinx/-PandaNode
render/Scene/World/Warrior/actorGeom
render/Scene/World/Warrior/actorGeom
render/Scene/World/Sphinx/-PandaNode
render/Scene/World/Sphinx/-PandaNode
render/Scene/World/Warrior/actorGeom
render/Scene/World/Sphinx/-PandaNode
render/Scene/World/Sphinx/-PandaNode/Sphinx
render/Scene/World/Warrior/actorGeom/__Actor_modelRoot
render/Scene/World/Sphinx/-PandaNode/Sphinx
render/Scene/World/Sphinx/-PandaNode/Sphinx
render/Scene/World/Sphinx/-PandaNode/Sphinx
render/Scene/World/Warrior/actorGeom/__Actor_modelRoot
render/Scene/World/Warrior/actorGeom/__Actor_modelRoot
render/Scene/World/Warrior/actorGeom/__Actor_modelRoot
render/Scene/World/Sphinx/-PandaNode/Sphinx
render/Scene/World/Warrior/actorGeom/__Actor_modelRoot
render/Scene/World/Sphinx/-PandaNode/Sphinx
render/Scene/World/Warrior/actorGeom/__Actor_modelRoot
render/Scene/World/Warrior/actorGeom/__Actor_modelRoot/-GeomNode
render/Scene/World/Warrior/actorGeom/__Actor_modelRoot/-GeomNode
render/Scene/World/Warrior/actorGeom/__Actor_modelRoot/-GeomNode
render/Scene/World/Warrior/actorGeom/__Actor_modelRoot/-GeomNode
render/Scene/World/Warrior/actorGeom/__Actor_modelRoot/-GeomNode
render/Scene/World/Warrior/actorGeom/__Actor_modelRoot/-GeomNode
render/Scene/World/Warrior/actorGeom/__Actor_modelRoot/-GeomNode
For me it’s normal to see nodes at same level than Scene but i dont undesrstand why i got so many identical nodepath in the list.
Is it safe to keep only one of each sort?
I don’t know if there is a easier way.
You can use getNumChildren() and getChild(i).
Here is a small function for listing all nodes. Its DFS but its not to difficult to make it to a BFS function
def printnode( node ):
print "NODE: ", node, "\n\tHPR: ", node.getHpr(), "\n\tPos: ", node.getPos()
def childs(node):
if node.getNumChildren() == 0:
printnode( node )
else:
for i in range(0, node.getNumChildren() ):
childs(node.getChild(i))
printnode( node )
Hope this helps you
Martin
You got duplicate answers in the query because “/” finds each node twice (once for the first “", and once again for the second "”). “**” by itself is sufficient to find all nodes in the scene graph.
David