Changeset 1165


Ignore:
Timestamp:
07/27/06 17:08:21 (18 years ago)
Author:
szydlowski
Message:

Started implementing the hierarchy interface for the kdtree scene manager

Location:
GTP/trunk
Files:
2 added
9 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/KdTreeDemo/OGRE/include/TestKdTreeAppListener.h

    r1163 r1165  
    666666        mCamera->moveRelative(mTranslateVector); 
    667667                mTopCam->moveRelative(mCullTransVec); 
     668 
     669                Vector3 pos = mCamera->getPosition(); 
     670                RaySceneQuery * rsquery = mSceneMgr->createRayQuery(Ray(pos, Vector3::NEGATIVE_UNIT_Y)); 
     671                RaySceneQueryResult& rsresult = rsquery->execute(); 
     672 
     673                RaySceneQueryResult::iterator it = rsresult.begin(); 
     674                RaySceneQueryResult::iterator end = rsresult.end(); 
     675 
     676                while (it != end && it->movable) 
     677                { 
     678                        if (it->movable->getName() != "PlayerCam") 
     679                        { 
     680                                mCamera->setPosition(pos.x, it->movable->getWorldBoundingBox().getCenter().y + 3, pos.z); 
     681                                break; 
     682                        } 
     683                        it++; 
     684                } 
     685                OGRE_DELETE(rsquery); 
    668686        } 
    669687 
  • GTP/trunk/App/Demos/Vis/KdTreeDemo/OGRE/src/TestKdTree.cpp

    r1163 r1165  
    117117                //mCamera->setPosition(Vector3(830, 300, -540)); 
    118118                //mCamera->setOrientation(Quaternion(-0.3486, 0.0122, 0.9365, 0.0329)); 
    119                 mCamera->setPosition(Vector3(688, 866, 944)); 
    120                 mCamera->setOrientation(Quaternion(-0.979419, 0.201128, 0.0165594, 0.00340038)); 
     119                // total view 
     120                //mCamera->setPosition(Vector3(688, 866, 944)); 
     121                //mCamera->setOrientation(Quaternion(-0.979419, 0.201128, 0.0165594, 0.00340038)); 
    121122                mTopCam->setPosition(Vector3(1232, 3990, -1477)); 
     123                // walkthrough view 
     124                mCamera->setPosition(Vector3(1102.56, 181.845, -350.305)); 
     125                mCamera->setOrientation(Quaternion(-0.977321, -0.117497, -0.174903, 0.0210273)); 
    122126        } 
    123127        else 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/include/OgreKdTree.h

    r1163 r1165  
    1919 
    2020#include <stack> 
     21 
     22#include "OgreKdTreeHierarchyInterface.h" 
    2123 
    2224namespace Ogre 
     
    339341 
    340342        public: 
     343                friend class Ogre::KdTreeHierarchyInterface; 
     344 
    341345                typedef KdTree::Leaf * LeafPtr; 
    342346                typedef std::set<LeafPtr> LeafSet; 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/include/OgreKdTreeSceneManager.h

    r1163 r1165  
    1111#define _KdTreeSceneManager_H__ 
    1212 
     13#include <OgreKdTreeHierarchyInterface.h> 
    1314#include <OgreSceneManager.h> 
    1415#include "OgreKdTree.h" 
     16#include "VisibilityManager.h" 
     17 
     18#define KDTREE_MAX_DEPTH 20 
    1519 
    1620namespace Ogre 
     
    2327        { 
    2428        public: 
    25                 KdTreeSceneManager(const String& name); 
     29                KdTreeSceneManager(const String& name, GtpVisibility::VisibilityManager *vm); 
    2630                //KdTreeSceneManager(const String& name, int maxdepth); 
    2731                ~KdTreeSceneManager(void); 
     
    5458                        SceneManager::clearScene(); 
    5559                } 
     60 
    5661        protected: 
     62                GtpVisibility::VisibilityManager *mVisibilityManager; 
     63 
     64                KdTreeHierarchyInterface *mHierarchyInterface; 
    5765 
    5866                int mMaxDepth; 
     
    7684        protected: 
    7785                void initMetaData(void) const; 
     86                GtpVisibility::VisibilityManager *visManager; 
    7887        public: 
    79                 KdTreeSceneManagerFactory(void) {}; 
     88                KdTreeSceneManagerFactory(GtpVisibility::VisibilityManager * vm) 
     89                { 
     90                        visManager = vm; 
     91                }; 
    8092                ~KdTreeSceneManagerFactory(void) {}; 
    8193                /// Factory type name 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/scripts/Plugin_VisibilitySceneManager.vcproj

    r1163 r1165  
    273273                                </File> 
    274274                                <File 
     275                                        RelativePath="..\include\OgreKdTreeHierarchyInterface.h"> 
     276                                </File> 
     277                                <File 
    275278                                        RelativePath="..\include\OgreKdTreeSceneManager.h"> 
    276279                                </File> 
     
    284287                                <File 
    285288                                        RelativePath="..\src\OgreKdTree.cpp"> 
     289                                </File> 
     290                                <File 
     291                                        RelativePath="..\src\OgreKdTreeHierarchyInterface.cpp"> 
    286292                                </File> 
    287293                                <File 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreKdTreeSceneManager.cpp

    r1163 r1165  
    1818namespace Ogre 
    1919{ 
    20         KdTreeSceneManager::KdTreeSceneManager(const String& name): 
    21                 SceneManager(name) 
    22         { 
    23                 int maxdepth = 20; 
    24                 mKdTree = 0; 
    25                 init(maxdepth); 
    26         } 
    27  
    28         KdTreeSceneManager::~KdTreeSceneManager(void) 
    29         { 
    30                 delete mKdTree; 
    31         } 
    32  
    33         const String& KdTreeSceneManager::getTypeName(void) const 
    34         { 
    35                 return KdTreeSceneManagerFactory::FACTORY_TYPE_NAME; 
    36         } 
    37  
    38         void KdTreeSceneManager::init(int maxdepth) 
     20        KdTreeSceneManager::KdTreeSceneManager(const String& name, GtpVisibility::VisibilityManager *vm): 
     21                SceneManager(name), mKdTree(0), mVisibilityManager(vm) 
    3922        { 
    4023                // Replace root node with my node 
     
    4427                mSceneRoot->_notifyRootNode(); 
    4528 
    46                 mMaxDepth = maxdepth; 
     29                mMaxDepth = KDTREE_MAX_DEPTH; 
    4730                mShowBoxes = false; 
    4831 
     
    5033                OGRE_DELETE(mKdTree); 
    5134 
    52                 mBuildMethod = KdTree::KDBM_RECURSIVE; 
    53                 //mBuildMethod = KdTree::KDBM_PRIORITYQUEUE; 
     35                //mBuildMethod = KdTree::KDBM_RECURSIVE; 
     36                mBuildMethod = KdTree::KDBM_PRIORITYQUEUE; 
    5437#ifdef KDTREE_DEBUG 
    5538                mHighlighLevel = 0; 
    5639                mShowAllBoxes = false; 
    5740#endif 
     41 
     42                mHierarchyInterface = new KdTreeHierarchyInterface(this, mDestRenderSystem); 
     43        } 
     44 
     45        KdTreeSceneManager::~KdTreeSceneManager(void) 
     46        { 
     47                delete mKdTree; 
     48        } 
     49 
     50        const String& KdTreeSceneManager::getTypeName(void) const 
     51        { 
     52                return KdTreeSceneManagerFactory::FACTORY_TYPE_NAME; 
    5853        } 
    5954 
     
    310305                mMetaData.typeName = FACTORY_TYPE_NAME; 
    311306                mMetaData.description = "Scene manager that organises the scene based on a kd-tree"; 
    312                 mMetaData.sceneTypeMask = ST_GENERIC; // support generic scenes (so far) 
     307                mMetaData.sceneTypeMask = 0xFFFF; // support all types of scenes (hopefully) 
    313308                mMetaData.worldGeometrySupported = false; 
    314309        } 
     
    317312                const String& instanceName) 
    318313        { 
    319                 return new KdTreeSceneManager(instanceName); 
     314                return new KdTreeSceneManager(instanceName, visManager); 
    320315        } 
    321316        //----------------------------------------------------------------------- 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreVisibilitySceneManagerDll.cpp

    r1163 r1165  
    5454        //visibilityTerrainPlugin = new VisibilityTerrainSceneManagerFactory(visManager); 
    5555        occlusionCullingPlugin = new OcclusionCullingSceneManagerFactory(visManager); 
    56         kdTreeFactory = new KdTreeSceneManagerFactory(); 
     56        kdTreeFactory = new KdTreeSceneManagerFactory(visManager); 
    5757        // Construct listener manager singleton 
    5858        new TerrainPageSourceListenerManager(); 
  • GTP/trunk/Lib/Vis/shared/scripts/GtpVisibility.sln

    r1163 r1165  
    4040Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestKdTree", "..\..\..\..\App\Demos\Vis\KdTreeDemo\OGRE\scripts\TestKdTree.vcproj", "{17F2C6F9-6101-430E-ABF4-71383868EF24}" 
    4141        ProjectSection(ProjectDependencies) = postProject 
     42                {80DECC17-BDDD-4412-8CF8-F7C1C17A7436} = {80DECC17-BDDD-4412-8CF8-F7C1C17A7436} 
     43                {7319E499-473D-4CE5-9983-725D6E68A55D} = {7319E499-473D-4CE5-9983-725D6E68A55D} 
    4244        EndProjectSection 
    4345EndProject 
Note: See TracChangeset for help on using the changeset viewer.