Show
Ignore:
Timestamp:
04/16/03 11:22:33 (11 years ago)
Author:
robert
Message:

Changed OsgSceneHandler? so it re-uses osgUtil::SceneView? project and modelview
matrices.

Changed the osgpick demo so that it uses the OsgSceneHandler?'s projection and
modelview matrices where possible.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/examples/osgpick/osgpick.cpp

    r1882 r1883  
    126126            Producer::RenderSurface* rs = cmm->getRenderSurface(); 
    127127 
    128             std::cout << "checking camara "<<i<<std::endl; 
     128            //std::cout << "checking camara "<<i<<std::endl; 
    129129 
    130130            float pixel_x,pixel_y; 
    131131            if (km->computePixelCoords(x,y,rs,pixel_x,pixel_y)) 
    132132            { 
    133                 std::cout << "    compute pixel coords "<<pixel_x<<"  "<<pixel_y<<std::endl; 
     133                //std::cout << "    compute pixel coords "<<pixel_x<<"  "<<pixel_y<<std::endl; 
    134134 
    135135                int pr_wx, pr_wy; 
     
    144144                pr_wy += rs_wy; 
    145145 
    146                 std::cout << "    wx = "<<pr_wx<<"  wy = "<<pr_wy<<" width="<<pr_width<<" height="<<pr_height<<std::endl; 
     146                //std::cout << "    wx = "<<pr_wx<<"  wy = "<<pr_wy<<" width="<<pr_width<<" height="<<pr_height<<std::endl; 
    147147 
    148148 
     
    158158                float ry = 2.0f*(pixel_y - (float)pr_wy)/(float)pr_height-1.0f; 
    159159 
    160                 std::cout << "    rx "<<rx<<"  "<<ry<<std::endl; 
    161  
    162                 osg::Matrix vum(osg::Matrix(cmm->getViewMatrix()) * 
    163                                 osg::Matrix(cmm->getProjectionMatrix())/* *  
    164                                 osg::Matrix::translate(1.0f,1.0f,1.0f) * 
    165                                 osg::Matrix::scale(0.5f,0.5f,0.5f)*/); 
    166  
     160                //std::cout << "    rx "<<rx<<"  "<<ry<<std::endl; 
     161                 
     162                osgProducer::OsgSceneHandler* sh = dynamic_cast<osgProducer::OsgSceneHandler*>(cmm->getSceneHandler()); 
     163                osg::Matrix vum; 
     164                if (sh!=0 && sh->getModelViewMatrix()!=0 && sh->getProjectionMatrix()!=0) 
     165                { 
     166                    vum.set((*(sh->getModelViewMatrix())) * 
     167                            (*(sh->getProjectionMatrix()))); 
     168                } 
     169                else 
     170                { 
     171                    vum.set(osg::Matrix(cmm->getViewMatrix()) * 
     172                            osg::Matrix(cmm->getProjectionMatrix())/* *  
     173                            osg::Matrix::translate(1.0f,1.0f,1.0f) * 
     174                            osg::Matrix::scale(0.5f,0.5f,0.5f)*/); 
     175                } 
     176                 
    167177                osgUtil::PickVisitor iv; 
    168178                osgUtil::IntersectVisitor::HitList& hlist=iv.getHits(scene, vum, rx,ry);