[Solved] Listing all Nodes in the scene Graph (no hierarchy)

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