void Object3D::dirty()
{
    GeodeFindVisitor visitor;
    _originalNode->accept(visitor);
    std::vector<Geode*> geodeList = visitor.getGeodeList();
    std::vector<Geode*>::iterator it;
    for(it=geodeList.begin(); it!=geodeList.end(); ++it)
    {
        Geode *geode = *it;
        if(geode)
        {
            for(unsigned int i=0; i<geode->getNumDrawables(); i++)
            {
                Drawable *drawable = geode->getDrawable(i);
                drawable->dirtyBound();
                Geometry* geom(drawable->asGeometry());
                osgUtil::SmoothingVisitor sv;
                sv.smooth(*geom);
                geom->getNormalArray()->dirty();
            }
        }
    }
}