Index: /OpenSceneGraph/trunk/src/osgUtil/SceneView.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgUtil/SceneView.cpp (revision 10895)
+++ /OpenSceneGraph/trunk/src/osgUtil/SceneView.cpp (revision 10915)
@@ -888,8 +888,5 @@
 
         // traverse the scene graph to search for occluder in there new positions.
-        for(unsigned int i=0; i< _camera->getNumChildren(); ++i)
-        {
-            _camera->getChild(i)->accept(*_collectOccludersVisitor);
-        }
+        _collectOccludersVisitor->traverse(*_camera);
 
         _collectOccludersVisitor->popModelViewMatrix();
@@ -970,13 +967,14 @@
     cullVisitor->pushProjectionMatrix(proj.get());
     cullVisitor->pushModelViewMatrix(mv.get(),osg::Transform::ABSOLUTE_RF);
-    
-
-    // traverse the scene graph to generate the rendergraph.
-    for(unsigned int childNo=0;
-        childNo<_camera->getNumChildren();
-        ++childNo)
-    {
-        _camera->getChild(childNo)->accept(*cullVisitor);
-    }
+
+    // traverse the scene graph to generate the rendergraph.    
+    // If the camera has a cullCallback execute the callback which has the  
+    // requirement that it must traverse the camera's children.
+    {
+       osg::NodeCallback* callback = _camera->getCullCallback();
+       if (callback) (*callback)(_camera.get(), cullVisitor);
+       else _cullVisitor->traverse(*_camera);
+    }
+
 
     cullVisitor->popModelViewMatrix();
