diff --git a/src/osgViewer/Scene.cpp b/src/osgViewer/Scene.cpp index 2bfd23a24..e001d6537 100644 --- a/src/osgViewer/Scene.cpp +++ b/src/osgViewer/Scene.cpp @@ -78,6 +78,8 @@ void Scene::frameAdvance() _frameStamp->setReferenceTime(osg::Timer::instance()->time_s()); _frameStamp->setFrameNumber(_frameStamp->getFrameNumber()+1); + _updateVisitor->setTraversalNumber(_frameStamp->getFrameNumber()); + // osg::notify(osg::NOTICE)<<"Frame rate = "<<1.0/(_frameStamp->getReferenceTime()-previousTime)<setTraversalNumber(_frameStamp->getFrameNumber()); - getSceneData()->accept(*_updateVisitor); if (_databasePager.valid()) diff --git a/src/osgViewer/Viewer.cpp b/src/osgViewer/Viewer.cpp index e572fa412..52bd1f5af 100644 --- a/src/osgViewer/Viewer.cpp +++ b/src/osgViewer/Viewer.cpp @@ -2056,6 +2056,17 @@ void Viewer::updateTraversal() double beginUpdateTraversal = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick()); + osgUtil::UpdateVisitor* uv = _scene.valid() ? _scene->getUpdateVisitor() : 0; + + if (_camera.valid() && _camera->getUpdateCallback() && uv) + { + osg::NodeVisitor::TraversalMode tm = uv->getTraversalMode(); + uv->setTraversalMode(osg::NodeVisitor::TRAVERSE_NONE); + _camera->accept(*uv); + uv->setTraversalMode(tm); + + } + if (_scene.valid()) _scene->frameUpdateTraversal(); if (_cameraManipulator.valid())