Ignore:
Timestamp:
09/04/06 00:18:05 (18 years ago)
Author:
mattausch
Message:
 
Location:
GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE
Files:
12 added
3 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/BvHierarchySceneManager/include/OgreBvHierarchy.h

    r1317 r1318  
    88*/ 
    99 
    10 #ifndef _OgreKdTree_H__ 
    11 #define _OgreKdTree_H__ 
     10#ifndef _OgreBvHierarchy_H__ 
     11#define _OgreBvHierarchy_H__ 
    1212 
    1313#define KDNODE_CAST(a) (static_cast<KdTree::Node>(a)) 
     
    2929#include <stack> 
    3030 
    31 #include "OgreKdTreeCamera.h" 
     31#include "OgreBvHierarchyCamera.h" 
    3232#include "HierarchyInterface.h" 
    3333 
     
    3535namespace Ogre 
    3636{ 
    37         class KdTreeCamera; 
    38         class KdRenderable; 
     37        class BvHierarchyCamera; 
     38        class BvRenderable; 
    3939        struct SplitInfo; 
    4040 
     
    6666                { }; 
    6767 
    68                 PlaneEvent(KdRenderable *rend, const Vector3& pos, PlaneEvent::Dimension dim, PlaneEvent::Type type): 
     68                PlaneEvent(BvRenderable *rend, const Vector3& pos, PlaneEvent::Dimension dim, PlaneEvent::Type type): 
    6969                        mRenderable(rend), mPosition(pos), mDimension(dim), mType(type)  
    7070                { }; 
     
    125125                } 
    126126 
    127                 KdRenderable * getRenderable() const //?? 
     127                BvRenderable * getRenderable() const //?? 
    128128                { 
    129129                        return mRenderable; 
     
    139139        protected: 
    140140                // event info 
    141                 KdRenderable *                  mRenderable; 
     141                BvRenderable *                  mRenderable; 
    142142                Vector3                                 mPosition; 
    143143                PlaneEvent::Dimension   mDimension; 
     
    186186 
    187187        typedef std::list<PlaneEvent> PlaneEventList; 
    188         typedef std::list<KdRenderable *> KdRenderableList; 
     188        typedef std::list<BvRenderable *> BvRenderableList; 
    189189         
    190190        class KdTree 
     
    397397 
    398398                        // a leaf is empty when it does not posses renderables 
    399                         virtual bool isEmpty() const { return mKdRenderables.empty(); } 
     399                        virtual bool isEmpty() const { return mBvRenderables.empty(); } 
    400400 
    401401                        // a leaf has geometry when it has renderables 
    402                         virtual bool hasGeometry() const { return !mKdRenderables.empty(); } 
     402                        virtual bool hasGeometry() const { return !mBvRenderables.empty(); } 
    403403 
    404404                        // a leaf adds itself to the leaf set 
     
    417417                        virtual void _updateBounds(bool recurse = true); 
    418418 
    419                         virtual void remove(KdRenderable * rend) 
    420                         { 
    421                                 mKdRenderables.remove(rend); 
    422                                 //mKdRenderables.erase(find(mKdRenderables.begin(), mKdRenderables.end(), rend)); 
     419                        virtual void remove(BvRenderable * rend) 
     420                        { 
     421                                mBvRenderables.remove(rend); 
     422                                //mBvRenderables.erase(find(mBvRenderables.begin(), mBvRenderables.end(), rend)); 
    423423                        }; 
    424424 
    425                         virtual void insert(KdRenderable * rend) 
    426                         { 
    427                                 mKdRenderables.push_back(rend); 
     425                        virtual void insert(BvRenderable * rend) 
     426                        { 
     427                                mBvRenderables.push_back(rend); 
    428428                        }; 
    429429 
    430                         KdRenderableList mKdRenderables; 
     430                        BvRenderableList mBvRenderables; 
    431431                }; 
    432432 
     
    562562 
    563563                // insert a new scene node into an existing kd-tree 
    564                 void insert(KdRenderable * rend); 
     564                void insert(BvRenderable * rend); 
    565565                // remove a scene node from the tree 
    566                 void remove(KdRenderable * rend); 
     566                void remove(BvRenderable * rend); 
    567567                // function to initialize a kd-tree based on the contents of the scene 
    568                 void build(KdRenderable * sceneRoot); 
     568                void build(BvRenderable * sceneRoot); 
    569569 
    570570                // test visibility of objects and add to render queue 
    571                 void queueVisibleObjects(KdTreeCamera* cam, RenderQueue* queue, bool onlyShadowCasters,  
     571                void queueVisibleObjects(BvHierarchyCamera* cam, RenderQueue* queue, bool onlyShadowCasters,  
    572572                        bool showBoxes, KdTree::NodeList& visibleNodes); 
    573573 
     
    594594                void init(); 
    595595                // recursive insert funciton 
    596                 void recInsert(KdTree::Node * node, KdRenderable * rend); 
     596                void recInsert(KdTree::Node * node, BvRenderable * rend); 
    597597                // helper functions for insert 
    598                 void recInsertNew(KdTree::Branch * parent, PlaneEvent::Side side, KdRenderable * rend); 
     598                void recInsertNew(KdTree::Branch * parent, PlaneEvent::Side side, BvRenderable * rend); 
    599599                void splitBox(const KdTree::Branch& parent, AxisAlignedBox& left, AxisAlignedBox& right); 
    600                 void rebuildSubtree(KdTree::Node * node, KdRenderable * rend); 
     600                void rebuildSubtree(KdTree::Node * node, BvRenderable * rend); 
    601601                // build scene from a list of nodes rather than a hierarchy 
    602                 KdTree::Node * buildFromList(KdRenderableList& nodelist, KdTree::Branch * parent, AxisAlignedBox& aabb); 
    603                 void addRendToList(KdTree::Node * node, KdRenderableList& nodelist); 
     602                KdTree::Node * buildFromList(BvRenderableList& nodelist, KdTree::Branch * parent, AxisAlignedBox& aabb); 
     603                void addRendToList(KdTree::Node * node, BvRenderableList& nodelist); 
    604604 
    605605                // recursively delete empty nodes 
     
    615615 
    616616                // recursive rendering function 
    617                 void recQueueVisibleObjects(KdTree::Node * node, unsigned long currentFrame, KdTreeCamera* cam, 
     617                void recQueueVisibleObjects(KdTree::Node * node, unsigned long currentFrame, BvHierarchyCamera* cam, 
    618618                        RenderQueue* queue, bool onlyShadowCasters, bool showBoxes,  
    619619                        KdTree::NodeList& visibleNodes, bool fullVis = false); 
     
    659659                // allows choosing between regular vis (NONE/PART, same es isVisible) 
    660660                // and enhaced vis (NONE/PART/FULL) for early traversal abort 
    661                 KdTreeCamera::NodeVisibility (KdTreeCamera::*getVisibility)(const AxisAlignedBox& box) const; 
     661                BvHierarchyCamera::NodeVisibility (BvHierarchyCamera::*getVisibility)(const AxisAlignedBox& box) const; 
    662662 
    663663                // DEBUG 
     
    668668} // namespace Ogre 
    669669 
    670 #endif // _OgreKdTree_H__ 
     670#endif // _OgreBvHierarchy_H__ 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/BvHierarchySceneManager/include/OgreBvHierarchySceneNode.h

    r1317 r1318  
    88*/ 
    99 
    10 #ifndef _OgreKdTreeSceneNode_H__ 
    11 #define _OgreKdTreeSceneNode_H__ 
     10#ifndef _OgreBvHierarchySceneNode_H__ 
     11#define _OgreBvHierarchySceneNode_H__ 
    1212 
    1313#include <OgreSceneNode.h> 
    14 #include "OgreKdRenderable.h" 
     14#include "OgreBvRenderable.h" 
    1515 
    1616namespace Ogre 
    1717{ 
    1818 
    19         class KdTreeSceneNode : public SceneNode, public KdRenderable 
     19        class KdTreeSceneNode : public SceneNode, public BvRenderable 
    2020        { 
    2121        public: 
     
    5252} // namespace Ogre 
    5353 
    54 #endif // _OgreKdTreeSceneNode_H__ 
     54#endif // _OgreBvHierarchySceneNode_H__ 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/BvHierarchySceneManager/src/OgreBvHierarchy.cpp

    r1317 r1318  
    88*/ 
    99 
    10 #include "OgreKdTree.h" 
    11 #include "OgreKdRenderable.h" 
    12 #include "OgreKdTreeSceneNode.h" 
    13 #include "OgreKdTreeSceneManager.h" 
     10#include "OgreBvHierarchy.h" 
     11#include "OgreBvRenderable.h" 
     12#include "OgreBvHierarchySceneNode.h" 
     13#include "OgreBvHierarchySceneManager.h" 
    1414 
    1515#include <OgreStringConverter.h> 
     
    589589/************************************************************************/ 
    590590 
    591 void KdTree::remove(KdRenderable * rend) 
     591void KdTree::remove(BvRenderable * rend) 
    592592{ 
    593593        // DEBUG 
     
    621621        { 
    622622                OGRE_EXCEPT(Exception::ERR_INTERNAL_ERROR, 
    623                         "SNAFU while inserting KdRenderable into KdTree.", 
     623                        "SNAFU while inserting BvRenderable into KdTree.", 
    624624                        "KdTree::recInsert" ); 
    625625                return; 
     
    648648} 
    649649 
    650 void KdTree::insert(KdRenderable * rend) 
     650void KdTree::insert(BvRenderable * rend) 
    651651{ 
    652652        // make sure the tree exists 
     
    663663                { 
    664664                        //LogManager::getSingleton().logMessage("Inserted node outside of world AABB."); 
    665                         KdRenderableList nodelist; 
     665                        BvRenderableList nodelist; 
    666666                        nodelist.push_back(rend); 
    667667                        addRendToList(mKdRoot, nodelist); 
     
    677677} 
    678678 
    679 void KdTree::recInsert(KdTree::Node * node, KdRenderable * rend) 
     679void KdTree::recInsert(KdTree::Node * node, BvRenderable * rend) 
    680680{ 
    681681        if (node == 0) // DEBUG 
    682682        { 
    683683                OGRE_EXCEPT(Exception::ERR_INTERNAL_ERROR, 
    684                         "SNAFU while inserting KdRenderable into KdTree.", 
     684                        "SNAFU while inserting BvRenderable into KdTree.", 
    685685                        "KdTree::recInsert" ); 
    686686                return; 
     
    744744} 
    745745 
    746 void KdTree::recInsertNew(KdTree::Branch * parent, PlaneEvent::Side side, KdRenderable * rend) 
     746void KdTree::recInsertNew(KdTree::Branch * parent, PlaneEvent::Side side, BvRenderable * rend) 
    747747{ 
    748748        //LogManager::getSingleton().logMessage("## Inserting into new subtree"); 
     
    789789} 
    790790 
    791 void KdTree::rebuildSubtree(KdTree::Node * node, KdRenderable * rend) 
     791void KdTree::rebuildSubtree(KdTree::Node * node, BvRenderable * rend) 
    792792{ 
    793793        //LogManager::getSingleton().logMessage("## Rebuilding subtree"); 
     
    795795        AxisAlignedBox aabb = node->mAABB; 
    796796         
    797         KdRenderableList nodelist; 
     797        BvRenderableList nodelist; 
    798798        nodelist.push_back(rend); 
    799799        addRendToList(node, nodelist); 
     
    821821                { 
    822822                        OGRE_EXCEPT(Exception::ERR_INTERNAL_ERROR, 
    823                                 "SNAFU while inserting KdRenderable into KdTree.", 
     823                                "SNAFU while inserting BvRenderable into KdTree.", 
    824824                                "KdTree::recInsert" ); 
    825825                } 
     
    845845} 
    846846 
    847 void KdTree::addRendToList(KdTree::Node * node, KdRenderableList& nodelist) 
     847void KdTree::addRendToList(KdTree::Node * node, BvRenderableList& nodelist) 
    848848{ 
    849849        if (node->isLeaf()) 
    850850        { 
    851851                KdTree::Leaf * leaf = KDLEAFPTR_CAST(node); 
    852                 KdRenderableList::iterator it  = leaf->mKdRenderables.begin(); 
    853                 KdRenderableList::iterator end = leaf->mKdRenderables.end(); 
     852                BvRenderableList::iterator it  = leaf->mBvRenderables.begin(); 
     853                BvRenderableList::iterator end = leaf->mBvRenderables.end(); 
    854854                while (it != end) 
    855855                { 
     
    872872/************************************************************************/ 
    873873 
    874 void KdTree::build(KdRenderable * sceneRoot) 
     874void KdTree::build(BvRenderable * sceneRoot) 
    875875{ 
    876876        Timer *timer = Root::getSingleton().getTimer(); 
     
    931931} 
    932932 
    933 KdTree::Node * KdTree::buildFromList(KdRenderableList& nodelist, KdTree::Branch * parent, AxisAlignedBox& aabb) 
     933KdTree::Node * KdTree::buildFromList(BvRenderableList& nodelist, KdTree::Branch * parent, AxisAlignedBox& aabb) 
    934934{ 
    935935        // data we want to collect 
     
    938938        int nObjects = 0; 
    939939 
    940         KdRenderableList::iterator it = nodelist.begin(); 
    941         KdRenderableList::iterator end = nodelist.end(); 
     940        BvRenderableList::iterator it = nodelist.begin(); 
     941        BvRenderableList::iterator end = nodelist.end(); 
    942942        while (it != end) 
    943943        { 
     
    10311031                // Terminating condition reached, create leaf and add renderables to list 
    10321032                KdTree::Leaf * leaf = new KdTree::Leaf(this, level, aabb, parent); 
    1033                 KdRenderable *rend; 
     1033                BvRenderable *rend; 
    10341034                it = begin; 
    10351035                while (it != end) 
     
    11781178                        // Terminating condition reached, create leaf and add renderables to list 
    11791179                        KdTree::Leaf * leaf = new KdTree::Leaf(this, level, sc.aabb, sc.parent); 
    1180                         KdRenderable *rend; 
     1180                        BvRenderable *rend; 
    11811181                        PlaneEventList::iterator begin = sc.events->begin(); 
    11821182                        PlaneEventList::iterator end = sc.events->end(); 
     
    13961396 
    13971397//------------------------------------------------------------------------- 
    1398 void KdTree::queueVisibleObjects(KdTreeCamera* cam, RenderQueue* queue, bool onlyShadowCasters,  
     1398void KdTree::queueVisibleObjects(BvHierarchyCamera* cam, RenderQueue* queue, bool onlyShadowCasters,  
    13991399        bool showBoxes, KdTree::NodeList& visibleNodes) 
    14001400{ 
     
    14111411//------------------------------------------------------------------------- 
    14121412void KdTree::recQueueVisibleObjects(KdTree::Node * node, unsigned long currentFrame,  
    1413         KdTreeCamera* cam, RenderQueue* queue, bool onlyShadowCasters, bool showBoxes,  
     1413        BvHierarchyCamera* cam, RenderQueue* queue, bool onlyShadowCasters, bool showBoxes,  
    14141414        KdTree::NodeList& visibleNodes, bool fullVis) 
    14151415{ 
    1416         KdTreeCamera::NodeVisibility vis = KdTreeCamera::KDNV_PART; 
     1416        BvHierarchyCamera::NodeVisibility vis = BvHierarchyCamera::KDNV_PART; 
    14171417        // test visibility 
    14181418        //if (cam->isVisible(node->mAABB)) 
    14191419        if (fullVis ||  
    1420                 ((vis = (cam->*getVisibility)(node->mAABB)) != KdTreeCamera::KDNV_NONE)) 
     1420                ((vis = (cam->*getVisibility)(node->mAABB)) != BvHierarchyCamera::KDNV_NONE)) 
    14211421        { 
    14221422                visibleNodes.push_back(node); 
    14231423 
    1424                 bool v = (fullVis || vis == KdTreeCamera::KDNV_FULL); 
     1424                bool v = (fullVis || vis == BvHierarchyCamera::KDNV_FULL); 
    14251425 
    14261426                node->queueVisibleObjects(currentFrame, cam, queue, onlyShadowCasters, showBoxes, v); 
     
    14501450{ 
    14511451        if (enh) 
    1452                 getVisibility = &KdTreeCamera::getVisibilityEnhanced; 
     1452                getVisibility = &BvHierarchyCamera::getVisibilityEnhanced; 
    14531453        else 
    1454                 getVisibility = &KdTreeCamera::getVisibilitySimple; 
     1454                getVisibility = &BvHierarchyCamera::getVisibilitySimple; 
    14551455} 
    14561456 
     
    14581458bool KdTree::getEnhancedVis() 
    14591459{ 
    1460         return getVisibility == &KdTreeCamera::getVisibilityEnhanced; 
     1460        return getVisibility == &BvHierarchyCamera::getVisibilityEnhanced; 
    14611461} 
    14621462 
     
    15231523        { 
    15241524                LeafPtr leaf = KDLEAFPTR_CAST(node); 
    1525                 for (KdRenderableList::iterator it = leaf->mKdRenderables.begin(); 
    1526                         it != leaf->mKdRenderables.end(); it ++) 
     1525                for (BvRenderableList::iterator it = leaf->mBvRenderables.begin(); 
     1526                        it != leaf->mBvRenderables.end(); it ++) 
    15271527                { 
    15281528                        SceneNode *sn = dynamic_cast<SceneNode *>(*it); 
     
    16001600        { 
    16011601                KdTree::Leaf * leaf = KDLEAFPTR_CAST(node); 
    1602                 KdRenderableList::iterator it  = leaf->mKdRenderables.begin(); 
    1603                 KdRenderableList::iterator end = leaf->mKdRenderables.end(); 
     1602                BvRenderableList::iterator it  = leaf->mBvRenderables.begin(); 
     1603                BvRenderableList::iterator end = leaf->mBvRenderables.end(); 
    16041604                while (it != end) 
    16051605                { 
     
    16491649                KdTree::Leaf * leaf = KDLEAFPTR_CAST(node); 
    16501650                return (PlaneEvent::surfaceArea(node->mAABB)/vs) * 
    1651                         PlaneEvent::KI * leaf->mKdRenderables.size(); 
     1651                        PlaneEvent::KI * leaf->mBvRenderables.size(); 
    16521652        } 
    16531653        else 
     
    16681668        // detach all scene nodes in the case that we are rebuilding 
    16691669        // the tree but not the scene 
    1670         KdRenderableList::iterator it = mKdRenderables.begin(); 
    1671         KdRenderableList::iterator end = mKdRenderables.end(); 
     1670        BvRenderableList::iterator it = mBvRenderables.begin(); 
     1671        BvRenderableList::iterator end = mBvRenderables.end(); 
    16721672        while (it != end) 
    16731673        { 
     
    16751675                it++; 
    16761676        } 
    1677         mKdRenderables.clear(); 
     1677        mBvRenderables.clear(); 
    16781678} 
    16791679 
     
    16821682        Camera* cam, RenderQueue* queue, bool onlyShadowCasters, bool showBoxes, bool fullVis) 
    16831683{ 
    1684         KdRenderableList::iterator it  = mKdRenderables.begin(); 
    1685         KdRenderableList::iterator end = mKdRenderables.end(); 
     1684        BvRenderableList::iterator it  = mBvRenderables.begin(); 
     1685        BvRenderableList::iterator end = mBvRenderables.end(); 
    16861686        while (it != end) 
    16871687        {                        
     
    17011701void KdTree::Leaf::getGeometryList(GtpVisibility::GeometryVector *geometryList) 
    17021702{ 
    1703         KdRenderableList::iterator it = mKdRenderables.begin(); 
    1704         KdRenderableList::iterator end = mKdRenderables.end(); 
     1703        BvRenderableList::iterator it = mBvRenderables.begin(); 
     1704        BvRenderableList::iterator end = mBvRenderables.end(); 
    17051705        while (it != end) 
    17061706        { 
     
    17181718 
    17191719        // merge boxes from attached geometry 
    1720         KdRenderableList::iterator it = mKdRenderables.begin(); 
    1721         KdRenderableList::iterator end = mKdRenderables.end(); 
     1720        BvRenderableList::iterator it = mBvRenderables.begin(); 
     1721        BvRenderableList::iterator end = mBvRenderables.end(); 
    17221722        while (it != end) 
    17231723        { 
Note: See TracChangeset for help on using the changeset viewer.