Ignore:
Timestamp:
02/27/07 10:25:01 (17 years ago)
Author:
mattausch
Message:

implemented function for exact visibility queries

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgrePlatformQueryManager.cpp

    r2066 r2171  
    2727} 
    2828//----------------------------------------------------------------------- 
    29 void PlatformQueryManager::ComputeFromPointVisibility(const Vector3 &point, 
    30                                GtpVisibility::NodeInfoContainer *visibleNodes, 
    31                                GtpVisibility::MeshInfoContainer *visibleGeometry, 
    32                                    GtpVisibility::PatchInfoContainer *visiblePatches, 
    33                                bool relativeVisibility) 
    34 { 
    35         SceneManager *sm = //static_cast<PlatformHierarchyInterface *> 
     29void PlatformQueryManager::ComputeFromPointVisibility( 
     30                                        const Vector3 &point, 
     31                                        GtpVisibility::NodeInfoContainer *visibleNodes, 
     32                                        GtpVisibility::MeshInfoContainer *visibleGeometry, 
     33                                        GtpVisibility::PatchInfoContainer *visiblePatches, 
     34                                        bool relativeVisibility) 
     35{ 
     36        SceneManager *sm = 
    3637                static_cast<PlatformHierarchyInterface *> 
    37                 (mHierarchyInterface)->GetSceneManager(); 
     38                                                                (mHierarchyInterface)->GetSceneManager(); 
    3839 
    3940        // create a camera for the point query 
     
    4344        Camera *savedCam = mViewport->getCamera(); 
    4445         
    45         // --- initialise new camera 
     46         
     47        ////////////// 
     48        //-- initialise new camera 
     49 
    4650        mViewport->setCamera(cam); 
    4751        cam->setPosition(point); 
     
    5660        int sign = -1; 
    5761         
    58         // ---- capture visibility from all 6 directions 
     62        /////////////// 
     63        //-- capture visibility from all 6 directions 
     64 
    5965        for (int dir=0; dir < 6; dir++)  
    6066        { 
     
    6268                 
    6369                // Print camera details 
    64         std::stringstream d; 
    65                 d << "Point query camera: " + StringConverter::toString(cam->getDerivedPosition()) +  
    66                         " " + "O: " + StringConverter::toString(cam->getDerivedOrientation()); 
    67                 LogManager::getSingleton().logMessage(d.str()); 
     70        if (0) 
     71                { 
     72                        std::stringstream d; 
     73                        d << "Point query camera: " + StringConverter::toString(cam->getDerivedPosition()) +  
     74                                " " + "O: " + StringConverter::toString(cam->getDerivedOrientation()); 
     75                        LogManager::getSingleton().logMessage(d.str()); 
     76                } 
    6877 
    6978                // prevent from initialising geometry / node array again 
     
    7382                } 
    7483 
    75                 ComputeCameraVisibility(*cam, visibleNodes, visibleGeometry, visiblePatches,  
     84                ComputeCameraVisibility(*cam,  
     85                                                                visibleNodes,  
     86                                                                visibleGeometry,  
     87                                                                visiblePatches,  
    7688                                            relativeVisibility); 
    7789                //mViewport->getTarget()->update(); for(int j=0; j<10000000; j++)       printf("wait"); 
     
    7991                // permute directions 
    8092                Vector3 direction(0,0,0); 
    81                 direction[dir/2] = sign; 
     93                direction[dir / 2] = sign; 
    8294 
    8395                cam->setDirection(direction); 
     
    88100} 
    89101//----------------------------------------------------------------------- 
    90 void PlatformQueryManager::ComputeCameraVisibility(const Camera &camera, 
    91                             GtpVisibility::NodeInfoContainer *visibleNodes, 
    92                             GtpVisibility::MeshInfoContainer *visibleGeometry, 
    93                                 GtpVisibility::PatchInfoContainer *visiblePatches, 
    94                             bool relativeVisibility) 
     102void PlatformQueryManager::ComputeCameraVisibility( 
     103                                                                const Camera &camera, 
     104                                                                GtpVisibility::NodeInfoContainer *visibleNodes, 
     105                                                                GtpVisibility::MeshInfoContainer *visibleGeometry, 
     106                                                                GtpVisibility::PatchInfoContainer *visiblePatches, 
     107                                                                bool relativeVisibility) 
    95108{ 
    96109        // we need access to the scene manager and the rendersystem 
    97110        PlatformHierarchyInterface *pfHierarchyInterface =  
    98                 //static_cast<PlatformHierarchyInterface *>(mHierarchyInterface); 
    99111                static_cast<PlatformHierarchyInterface *>(mHierarchyInterface); 
    100112 
     
    113125        mViewport->setBackgroundColour(ColourValue(0, 0, 0, 0)); 
    114126        //pfHierarchyInterface->GetRenderSystem()->clearFrameBuffer(FBT_COLOUR | FBT_DEPTH); 
     127 
    115128#ifdef ITEM_BUFFER 
    116129        // initialise item buffer (if not already initialised) 
    117130        InitItemBuffer(visibleGeometry, visiblePatches); 
    118131 
     132        ////////// 
    119133        //-- render scene with item buffer (i.e., objects with their id as color codes) 
    120134 
     
    127141    
    128142#ifdef ITEM_BUFFER 
     143        ///////// 
    129144        //-- collect results 
    130145        CollectItemBufferResults(visibleGeometry, visiblePatches); 
    131146 
    132         //-- reset options 
    133  
     147        ///////// 
     148        //-- reset state 
    134149        useItemBuffer = false; // don't need item buffer anymore 
    135150        sm->setOption("UseItemBuffer", &useItemBuffer); 
Note: See TracChangeset for help on using the changeset viewer.