Ignore:
Timestamp:
08/29/06 18:28:00 (18 years ago)
Author:
szydlowski
Message:

Implemented PVS support in kdtree scene manager - not complete, defunct
modified BoundingBoxConverter? to work with KdTreeSceneManager?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/KdTreeDemo/OGRE/src/TestKdTreeAppListener.cpp

    r1285 r1296  
    113113mTopCamFollow(true), 
    114114mShowTree(SHOWTREE_OFF), 
     115// view cells 
     116mUseViewCells(false), 
     117mUseVisibilityFilter(false), 
    115118//counters 
    116119mSeqNum(0), 
     
    164167        mCamNode = sm->getSceneNode("PlayerCamNode"); 
    165168 
     169        sm->getOption("UseViewCells", &mUseViewCells); 
     170        sm->getOption("UseVisibilityFilter", &mUseVisibilityFilter); 
     171 
    166172        mRaySceneQuery = mSceneMgr->createRayQuery(Ray(mCamNode->getPosition(), Vector3::NEGATIVE_UNIT_Y)); 
    167173 
     
    248254 
    249255        String ext = "KdTree/"; 
    250         String sMD, sKT, sKI, sHL, sBM, sRM, sFM, sTC, sEV; 
     256        String sMD, sKT, sKI, sHL, sBM, sRM, sFM, sTC, sEV, sVC, sVF; 
    251257 
    252258        int maxd; 
     
    319325        else 
    320326                sTC = ": Free"; 
     327 
     328        if (mSceneMgr->getOption("UseViewCells", &mUseViewCells)) 
     329        { 
     330                if (mUseViewCells) 
     331                        sVC = ": on"; 
     332                else 
     333                        sVC = ": off"; 
     334        } 
     335        else 
     336        { 
     337                sVC = NA; 
     338        } 
     339 
     340        if (mSceneMgr->getOption("UseVisibilityFilter", &mUseVisibilityFilter)) 
     341        { 
     342                if (mUseVisibilityFilter) 
     343                        sVF = ": on"; 
     344                else 
     345                        sVF = ": off"; 
     346        } 
     347        else 
     348        { 
     349                sVF = NA; 
     350        } 
    321351 
    322352        initOverlayElement(&mRenderMethodInfo, ext, "RenderMethod", top, sRM); top += vert_space; 
     
    329359        initOverlayElement(&mMovementInfo, ext, "Movement", top, sFM); top += vert_space; 
    330360        initOverlayElement(&mTopCamInfo, ext, "TopCam", top, sTC); top += vert_space; 
     361        initOverlayElement(&mViewCellsInfo, ext, "ViewCells", top, sVC); top += vert_space; 
     362        initOverlayElement(&mViewFilterInfo, ext, "ViewFilter", top, sVF); top += vert_space; 
    331363 
    332364        OverlayElement *visPanel = OverlayManager::getSingleton(). 
     
    350382                        mKdTreeOverlay->hide(); 
    351383                } 
     384        } 
     385} 
     386 
     387void KdTreeAppListener::toggleUseViewCells() 
     388{ 
     389        mUseViewCells = !mUseViewCells; 
     390        if (mSceneMgr->setOption("UseViewCells", &mUseViewCells)) 
     391        { 
     392                if (mUseViewCells) 
     393                        mViewCellsInfo->setCaption(": on"); 
     394                else 
     395                        mViewCellsInfo->setCaption(": off"); 
     396        } 
     397        else 
     398        { 
     399                mViewCellsInfo->setCaption(NA); 
     400        } 
     401} 
     402 
     403void KdTreeAppListener::toggleUseVisibilityFilter() 
     404{ 
     405        mUseVisibilityFilter = !mUseVisibilityFilter; 
     406        if (mSceneMgr->setOption("UseVisibilityFilter", &mUseVisibilityFilter)) 
     407        { 
     408                if (mUseVisibilityFilter) 
     409                        mViewFilterInfo->setCaption(": on"); 
     410                else 
     411                        mViewFilterInfo->setCaption(": off"); 
     412        } 
     413        else 
     414        { 
     415                mViewFilterInfo->setCaption(NA); 
    352416        } 
    353417} 
     
    442506                        else 
    443507                                mEnhancedVisInfo->setCaption(": Simple"); 
     508 
     509                        mOptions.mEnhancedVisibility = mode; 
    444510                } 
    445511        } 
     
    458524                bm = (bm + 1) % KdTree::KDBM_SIZE; 
    459525                if (mSceneMgr->setOption("BuildMethod", &bm)) 
     526                { 
    460527                        mBuildMethodInfo->setCaption(": " + BUILDMETHODCAPTION[bm]); 
     528                        mOptions.mBuildMethod = bm; 
     529                } 
    461530        } 
    462531        else 
     
    474543                rm = (rm + 1) % KdTree::KDRM_SIZE; 
    475544                if (mSceneMgr->setOption("RenderMethod", &rm)) 
     545                { 
    476546                        mRenderMethodInfo->setCaption(": " + RENDERMETHODCAPTION[rm]); 
     547                        mOptions.mRenderMethod = rm; 
     548                } 
    477549        } 
    478550        else 
     
    553625        } 
    554626 
     627        if (mInputDevice->isKeyDown(KC_F8) && mTimeUntilNextToggle <= 0) 
     628        { 
     629                // fill scene only once (for now), stop if anchor node exists 
     630                try 
     631                { 
     632                        SceneNode *entnode = mSceneMgr->getSceneNode("AnchorNode"); 
     633                } 
     634                catch (Exception) 
     635                { 
     636                        // read interesting params from config file 
     637                        ConfigFile terrainconf; 
     638                        std::stringstream s; 
     639                        Real x,y,z; 
     640                         
     641                        terrainconf.load("terrain.cfg"); 
     642 
     643                        s << terrainconf.getSetting("PageWorldX"); 
     644                        s >> x; 
     645                        s.clear(); 
     646 
     647                        s << terrainconf.getSetting("MaxHeight"); 
     648                        s >> y; 
     649                        s.clear(); 
     650 
     651                        s << terrainconf.getSetting("PageWorldZ"); 
     652                        s >> z; 
     653                        s.clear(); 
     654 
     655                        mOptions.myApp->createTerrainScene(x, y * 0.3, z); 
     656 
     657                        // rebuild tree 
     658                        mSceneMgr->setOption("RebuildKdTree", 0); 
     659                } 
     660 
     661                mTimeUntilNextToggle = 0.5; 
     662        } 
     663 
     664 
    555665        if (mInputDevice->isKeyDown(KC_F9) && mTimeUntilNextToggle <= 0) 
    556666        { 
     
    571681        } 
    572682 
    573         if (mInputDevice->isKeyDown(KC_V) && mTimeUntilNextToggle <= 0) 
    574         { 
    575                 toggleEnhancedVisibility(); 
     683        if (mInputDevice->isKeyDown(KC_C) && mTimeUntilNextToggle <= 0) 
     684        { 
     685                toggleUseViewCells(); 
     686                mTimeUntilNextToggle = 0.5; 
     687        } 
     688 
     689        if (mInputDevice->isKeyDown(KC_X) && mTimeUntilNextToggle <= 0) 
     690        { 
     691                toggleUseVisibilityFilter(); 
    576692                mTimeUntilNextToggle = 0.5; 
    577693        } 
     
    9821098        if (!mFreeMove) 
    9831099        { 
    984                 if (mOptions.mSceneFiles == TERRAIN_SCENE) 
     1100                if (mOptions.mSceneType == ST_TERRAIN) 
    9851101                { 
    9861102                        static Vector3 pos; 
     
    11551271                        { 
    11561272                                saveLog(); 
    1157                                 return false; 
     1273                                if (mOptions.mBurnIn) 
     1274                                        togglePlayback(); 
     1275                                else 
     1276                                        return false; 
    11581277                        } 
    11591278                } 
     
    13441463                mDemoStats.mEllapsedTime = 0.0f; 
    13451464                mDemoStats.mTotalEllapsedTime = 0.0f; 
     1465                mDemoFPS.clear(); 
    13461466        } 
    13471467        // stop playback 
     
    15971717                if (mOptions.mSceneManager == SM_KDT || mOptions.mSceneManager == SM_KTE) 
    15981718                { 
    1599                         logwrite << ds << RENDERMETHOD[mOptions.mRenderMethod] << ds << mOptions.mMaxDepth << ds  
    1600                                 << mOptions.mKT << ds << mOptions.mKI; 
     1719                        // info about enhanced visibility if internal rendering 
     1720                        String senhvis; 
     1721                        if (mOptions.mRenderMethod == KdTree::KDRM_INTERNAL) 
     1722                        { 
     1723                                if (mOptions.mEnhancedVisibility) 
     1724                                        senhvis = "E" + ds; 
     1725                                else 
     1726                                        senhvis = "S" + ds; 
     1727                        } 
     1728 
     1729                        logwrite << ds << RENDERMETHOD[mOptions.mRenderMethod] << ds << senhvis <<  
     1730                                mOptions.mMaxDepth << ds << mOptions.mKT << ds << mOptions.mKI << ds <<  
     1731                                BUILDMETHOD[mOptions.mBuildMethod]; 
    16011732                } 
    16021733                else if (mOptions.mSceneManager == SM_OCM && mOptions.mRenderMethod != KdTree::KDRM_INTERNAL) 
    16031734                { 
    1604                         logwrite << ds << RENDERMETHOD[(mOptions.mRenderMethod+3)%3]; 
     1735                        logwrite << ds << RENDERMETHOD[CONV_OCM_TO_KDT_ALG(mOptions.mRenderMethod)]; 
    16051736                } 
    16061737                logwrite << "\"" << fs; 
Note: See TracChangeset for help on using the changeset viewer.