Ignore:
Timestamp:
04/26/06 16:00:29 (19 years ago)
Author:
gumbau
Message:

Added LodTreeLibrary? working only for trunks

Location:
GTP/trunk/Lib/Geom/shared/GeoTool
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Geom/shared/GeoTool/include/GeoMeshView.h

    r826 r829  
    1414#include        <GeoMeshSaver.h> 
    1515#include        <GeoMeshViewUI.h> 
    16 //#include      <GeoLodStripsLibrary.h> 
     16 
    1717//#endif 
     18namespace Geometry{ class LodTreeLibrary; } 
    1819 
    1920class GeoMeshView : public fltk::GlWindow 
     
    3334        bool            mRotate; 
    3435        bool            mLodStrip; 
     36        bool            mLodTree; 
    3537 
    3638        GeoMeshView(int                                         x, 
     
    9496 
    9597        //      Counter Clockwise mode. 
    96         void    activeCCW(){mCCW        =       true;}; 
    97         void    deactiveCCW(){mCCW      =       false;}; 
     98        void    activeCCW(){mCCW        =       true;} 
     99        void    deactiveCCW(){mCCW      =       false;} 
    98100 
    99101        //      Pan mode. 
    100         void    activePan(){mPan        =       true;}; 
    101         void    deactivePan(){mPan      =       false;}; 
     102        void    activePan(){mPan        =       true;} 
     103        void    deactivePan(){mPan      =       false;} 
    102104 
    103105        //      Rotate mode. 
    104         void    activeRotate(){mRotate  =       true;}; 
    105         void    deactiveRotate(){mRotate        =       false;}; 
     106        void    activeRotate(){mRotate  =       true;} 
     107        void    deactiveRotate(){mRotate        =       false;} 
    106108 
    107109        //      LodStrip mode. 
    108         void    activeLodStrip(){mLodStrip      =       true;}; 
    109         void    deactiveLodStrip(){mLodStrip    =       false;}; 
     110        void    activeLodStrip(){mLodStrip      =       true;} 
     111        void    deactiveLodStrip(){mLodStrip    =       false;} 
     112 
     113        //      LodTree mode. 
     114        void    activeLodTree(){mLodTree        =       true;} 
     115        void    deactiveLodTree(){mLodTree      =       false;} 
     116 
    110117 
    111118        //      Ilumination modes. 
     
    158165        //      Sets the lodstripslibrary object. 
    159166        void    setLodStripsLibrary(Geometry::LodStripsLibrary *lodstrips); 
     167        //      Sets the lodtreeslibrary object. 
     168        void    setLodTreesLibrary(Geometry::LodTreeLibrary *lodtrees); 
    160169 
    161170        //      Change de Level of detail of the object. 
     
    174183        //      LodStrips library object. 
    175184        Geometry::LodStripsLibrary      *lodStripsLib; 
     185        //      LodTree library object. 
     186        Geometry::LodTreeLibrary        *lodTreeLib; 
    176187         
    177188        //      Flag tha activate / deactivate the color strips. 
     
    206217        void    drawTriangleStrip(int submesh); 
    207218        void    drawLodStrip(); 
     219        void    drawLodTree(); 
    208220        void    enableColorStrips(); 
    209221        void    disableColorStrips(); 
  • GTP/trunk/Lib/Geom/shared/GeoTool/include/GeoMeshViewUI.h

    r774 r829  
    4242#include        "GeoTreeSimpSequence.h" 
    4343#include        "GeoLodStripsConstructor.h" 
     44#include        "GeoLodTreeLibrary.h" 
    4445 
    4546//      About Dialog. 
     
    5859        LODTREES, 
    5960        SELECT_LEAVES, 
    60         VISUALIZE_LODSTRIPS 
     61        VISUALIZE_LODSTRIPS, 
     62        VISUALIZE_LODTREES 
    6163}; 
    6264 
     
    9698        //      Lod strips object. 
    9799        LodStripsLibrary        *lodStripsLib; 
     100        //      Lod tree object. 
     101        LodTreeLibrary  *lodTreeLib; 
    98102         
    99103        //      Mesh Bounds. 
     
    170174        inline void cb_menuLodTreesOpenLeavesSimplification_i(fltk::Item*, void*); 
    171175        static void cb_menuLodTreesOpenLeavesSimplification(fltk::Item*, void*); 
     176        inline void cb_menuLodTreesVisualize_i(fltk::Item*, void*); 
     177        static void cb_menuLodTreesVisualize(fltk::Item*, void*); 
    172178        inline void cb_menuHelpAbout_i(fltk::Item*, void*); 
    173179        static void cb_menuHelpAbout(fltk::Item*, void*); 
     
    206212         
    207213        //      Show the LodStrips visulization panel. 
    208         void    showVisualizeLodStrips(); 
     214        void    showSlider(); 
    209215 
    210216        void    hideStripify(); 
     
    218224 
    219225        //      Hide the LodStrips visualization panel. 
    220         void    hideVisualizeLodStrips(); 
     226        void    hideSlider(); 
    221227         
    222228        //      Get the number of vertices. 
     
    292298        fltk::Item                                      *menuLodStripsVisualize; 
    293299        fltk::ItemGroup                 *menuLodTrees; 
     300        fltk::Item                                      *menuLodTreesVisualize; 
    294301 
    295302        fltk::Item                                      *menuSelectLeaves; 
     
    333340        //      Initialize the lodstripslibrary for visualization. 
    334341        void    setLodStripsLibrary(std::string lodfile, Mesh   *geomesh); 
     342        //      Initialize the lodtreelibrary for visualization. 
     343        void    setLodTreesLibrary(std::string lodfile, Mesh    *geomesh); 
    335344 
    336345        // 26-12-2005 
  • GTP/trunk/Lib/Geom/shared/GeoTool/src/GeoMeshView.cpp

    r826 r829  
    586586                        drawLodStrip(); 
    587587                } 
     588                else if (mLodTree) 
     589                { 
     590                        drawLodTree(); 
     591                } 
    588592                else 
    589593                { 
     
    892896}//End drawTriangleStrip. 
    893897 
     898 
     899//--------------------------------------------------------------------------- 
     900//      Paint lodtree object. 
     901//--------------------------------------------------------------------------- 
     902void GeoMeshView::drawLodTree() 
     903{ 
     904        SubMesh                         *geosubmesh; 
     905        Index                                   position; 
     906        Vector3                         vector3; 
     907        float                                   x,y,z; 
     908        float                                   r,g,b; 
     909        int                                             color_index; 
     910        int                                             current_strip; 
     911 
     912        //      Initialize current strip. 
     913        current_strip   =       0; 
     914 
     915        //      For each submesh. 
     916        for (int submesh = 0; submesh < geoMesh->mSubMeshCount; submesh++) 
     917        { 
     918                 
     919                color_index     =       0; 
     920 
     921                //      Gets the actual submesh. 
     922                geosubmesh      =       &geoMesh->mSubMesh[submesh]; 
     923 
     924                //      For each one of the strips. 
     925                for (int strip = 0; strip < geosubmesh->mStripCount; strip++) 
     926                { 
     927                        //      Paint the current strip. 
     928                        glBegin(GL_TRIANGLE_STRIP); 
     929 
     930                        if (getColorStrips()) 
     931                        { 
     932                                //      Gets the color of the strip. 
     933                                r       =       mStripColors[submesh][color_index].r; 
     934                                g       =       mStripColors[submesh][color_index].g; 
     935                                b       =       mStripColors[submesh][color_index].b; 
     936 
     937                                //      Change to the next color. 
     938                                color_index++; 
     939 
     940                                //      Paint a new color. 
     941                                glColor3f(r,g,b); 
     942                        } 
     943 
     944                        //      For each index of the strip. 
     945                        for (int index = 0; index < lodTreeLib->GetStrip(current_strip).size(); index++) 
     946                        { 
     947                                position        =       lodTreeLib->GetStrip(current_strip)[index]; 
     948 
     949                                //      Gets the vertex normal. 
     950                                vector3 =       geosubmesh->mVertexBuffer->mNormal[position]; 
     951 
     952                                x                               =       vector3[0]; 
     953                                y                               =       vector3[1]; 
     954                                z                               =       vector3[2]; 
     955 
     956                                //      Sets the vertex normal. 
     957                                glNormal3f(x,y,z); 
     958 
     959                                //      Gets the vertex coordinates. 
     960                                vector3 =       geosubmesh->mVertexBuffer->mPosition[position]; 
     961 
     962                                x                               =       vector3[0]; 
     963                                y                               =       vector3[1]; 
     964                                z                               =       vector3[2]; 
     965 
     966                                //      Sets the vertex position. 
     967                                glVertex3f(x,y,z); 
     968                        } 
     969 
     970                        //      Increments current strip. 
     971                        current_strip++; 
     972 
     973                        //      A strip is generated. 
     974                        glEnd(); 
     975 
     976                } 
     977        } 
     978         
     979}//End drawTriangleStrip. 
     980 
     981 
     982 
    894983//--------------------------------------------------------------------------- 
    895984//      Sets the lodstripslibrary object. 
     
    902991 
    903992//--------------------------------------------------------------------------- 
     993//      Sets the lodtreeslibrary object. 
     994//--------------------------------------------------------------------------- 
     995void    GeoMeshView::setLodTreesLibrary(LodTreeLibrary *lodtrees) 
     996{ 
     997        lodTreeLib      =       lodtrees; 
     998        activeLodTree(); 
     999} 
     1000 
     1001 
     1002//--------------------------------------------------------------------------- 
    9041003//      Change de Level of detail of the object. 
    9051004//--------------------------------------------------------------------------- 
    9061005void    GeoMeshView::GoToLod(unsigned int       lod) 
    9071006{ 
    908         lodStripsLib->GoToLod(lod); 
     1007        if (mLodStrip) 
     1008                lodStripsLib->GoToLod(lod); 
     1009        if (mLodTree) 
     1010                lodTreeLib->GoToTrunkLod(lod); 
    9091011        draw(); 
    9101012} 
  • GTP/trunk/Lib/Geom/shared/GeoTool/src/GeoMeshViewUI.cpp

    r826 r829  
    682682        //      Deactive Lod strip visualization. 
    683683        geoMeshView->deactiveLodStrip(); 
     684        geoMeshView->deactiveLodTree(); 
    684685 
    685686        //      Loads a mesh file. 
     
    717718 
    718719        //      Show the Visulize LodStrips panel. 
    719         showVisualizeLodStrips(); 
     720        showSlider(); 
    720721         
    721722        //      Repaint the window. 
     
    723724} 
    724725 
    725 void GeoMeshViewUI::cb_menuLodStripsVisualize(fltk::Item* o, void* v) 
    726 { 
    727   ((GeoMeshViewUI*)     (o->parent()->parent()->parent()->user_data())) 
    728                                                                                 -> 
    729                                                                                 cb_menuLodStripsVisualize_i(o,v); 
    730 } 
    731  
    732 //--------------------------------------------------------------------------- 
    733 //      Open LodStrip trunk Callback 
    734 //--------------------------------------------------------------------------- 
    735 inline void GeoMeshViewUI::cb_menuLodTreesOpenLodStripTrunk_i(fltk::Item*, void*) 
    736 { 
    737 } 
    738  
    739 void GeoMeshViewUI::cb_menuLodTreesOpenLodStripTrunk(fltk::Item* o, void* v) 
    740 { 
    741   ((GeoMeshViewUI*)     (o->parent()->parent()->parent()->user_data())) 
    742                                                                                 -> 
    743                                                                                 cb_menuLodTreesOpenLodStripTrunk_i(o,v); 
    744 } 
    745  
    746 //--------------------------------------------------------------------------- 
    747 //      Open leaves simplification Callback 
    748 //--------------------------------------------------------------------------- 
    749 inline void GeoMeshViewUI::cb_menuLodTreesOpenLeavesSimplification_i(fltk::Item*, void*) 
    750 { 
     726 
     727inline void GeoMeshViewUI::cb_menuLodTreesVisualize_i(fltk::Item*, void*) 
     728{ 
     729        fltk::FileChooser *fcho; 
     730        const   char                            *lod_file; 
     731         
     732        //      Sets menus application state to NONE. 
     733        mApplicationState       =       NONE; 
     734 
     735        //      Deactive Lod strip visualization. 
     736        geoMeshView->deactiveLodTree(); 
     737        geoMeshView->deactiveLodStrip(); 
     738 
     739        //      Loads a mesh file. 
     740        openMeshFile(); 
     741         
     742        //      Show title. 
     743        mProcessTitle->label("Visualize LodTrees"); 
     744 
     745        //      If an object is loaded. 
     746        if (mGeoMesh != NULL) 
     747        { 
     748                fcho    =       new fltk::FileChooser("", 
     749                                "*.lod", 
     750                                fltk::FileChooser::CREATE, 
     751                                "Open Lod file"); 
     752 
     753                fcho->exec(); 
     754 
     755                //      If a file was selected. 
     756                if (fcho->value()) 
     757                { 
     758                        //      Build lod strips library. 
     759                        setLodTreesLibrary(string(fcho->value()), mGeoMesh); 
     760 
     761                        //      Sets the aplication mode. 
     762                        mApplicationState       =       VISUALIZE_LODTREES; 
     763                } 
     764 
     765                //      Free memory. 
     766                delete  fcho; 
     767        } 
     768 
    751769        //      Hide the right panel. 
    752770        hideRightPanel(); 
    753771 
     772        //      Show the Visulize LodTree panel. 
     773        showSlider(); 
     774         
     775        //      Repaint the window. 
     776        mMainWindow->redraw(); 
     777} 
     778void GeoMeshViewUI::cb_menuLodTreesVisualize(fltk::Item *o, void *v) 
     779{ 
     780  ((GeoMeshViewUI*)     (o->parent()->parent()->parent()->user_data())) 
     781                                                                                -> 
     782                                                                                cb_menuLodTreesVisualize_i(o,v); 
     783} 
     784 
     785void GeoMeshViewUI::cb_menuLodStripsVisualize(fltk::Item* o, void* v) 
     786{ 
     787  ((GeoMeshViewUI*)     (o->parent()->parent()->parent()->user_data())) 
     788                                                                                -> 
     789                                                                                cb_menuLodStripsVisualize_i(o,v); 
     790} 
     791 
     792//--------------------------------------------------------------------------- 
     793//      Open LodStrip trunk Callback 
     794//--------------------------------------------------------------------------- 
     795inline void GeoMeshViewUI::cb_menuLodTreesOpenLodStripTrunk_i(fltk::Item*, void*) 
     796{ 
     797} 
     798 
     799void GeoMeshViewUI::cb_menuLodTreesOpenLodStripTrunk(fltk::Item* o, void* v) 
     800{ 
     801  ((GeoMeshViewUI*)     (o->parent()->parent()->parent()->user_data())) 
     802                                                                                -> 
     803                                                                                cb_menuLodTreesOpenLodStripTrunk_i(o,v); 
     804} 
     805 
     806//--------------------------------------------------------------------------- 
     807//      Open leaves simplification Callback 
     808//--------------------------------------------------------------------------- 
     809inline void GeoMeshViewUI::cb_menuLodTreesOpenLeavesSimplification_i(fltk::Item*, void*) 
     810{ 
     811        //      Hide the right panel. 
     812        hideRightPanel(); 
     813 
    754814        //      Show the LodTrees panel. 
    755815        showOpenLeavesSimplification(); 
     
    768828                                                                                cb_menuLodTreesOpenLeavesSimplification_i(o,v); 
    769829} 
     830 
     831 
    770832 
    771833//--------------------------------------------------------------------------- 
     
    13381400//      Show the LodStrips visulization panel 
    13391401//--------------------------------------------------------------------------- 
    1340 void    GeoMeshViewUI::showVisualizeLodStrips() 
     1402void    GeoMeshViewUI::showSlider() 
    13411403{ 
    13421404        mLodSlider->set_visible(); 
     
    13471409//      Hide the LodStrips visualization panel 
    13481410//--------------------------------------------------------------------------- 
    1349 void    GeoMeshViewUI::hideVisualizeLodStrips() 
     1411void    GeoMeshViewUI::hideSlider() 
    13501412{ 
    13511413        mLodSlider->hide(); 
    13521414        mLodSlider->deactivate(); 
    13531415} 
     1416 
    13541417 
    13551418//--------------------------------------------------------------------------- 
     
    14951558        hideOpenMeshSimplification(); 
    14961559        hideOpenLeavesSimplification(); 
    1497         hideVisualizeLodStrips(); 
     1560        hideSlider(); 
    14981561        hideMeshInfo(); 
    14991562} 
     
    19141977 
    19151978//--------------------------------------------------------------------------- 
     1979//      Initialize the lodTreelibrary for visualization. 
     1980//--------------------------------------------------------------------------- 
     1981void    GeoMeshViewUI::setLodTreesLibrary(std::string lodfile, Mesh     *geomesh) 
     1982{ 
     1983        //      If there is no lod strips object. 
     1984        if (lodTreeLib) 
     1985        { 
     1986                delete  lodTreeLib; 
     1987        } 
     1988 
     1989        //      New lod strips object. 
     1990        lodTreeLib      =       new     Geometry::LodTreeLibrary(lodfile, geomesh); 
     1991 
     1992        //      Sets the slider range. 
     1993        mLodSlider->range(lodTreeLib->MaxTrunkLod(), lodTreeLib->MinTrunkLod()); 
     1994 
     1995        //      Pass to geomeshview the lod strips object. 
     1996        geoMeshView->setLodTreesLibrary(lodTreeLib); 
     1997         
     1998        //      Puts the slider in the max position. 
     1999        mLodSlider->value(lodTreeLib->MinTrunkLod()); 
     2000} 
     2001 
     2002//--------------------------------------------------------------------------- 
    19162003//      Open a mesh file. 
    19172004//--------------------------------------------------------------------------- 
     
    20262113        //      Initialize the lod strip object. 
    20272114        lodStripsLib    =       NULL; 
     2115        lodTreeLib      =       NULL; 
    20282116 
    20292117        //      Identify the mesh that stores the leaves 
     
    24452533 
    24462534                        //      Menu LodTrees. 
    2447                         /* 
     2535                         
    24482536                        { 
    24492537                                fltk::ItemGroup* o; 
     
    24532541                                { 
    24542542                                        fltk::Item* o; 
    2455                                         o = menuLodTreesOpenLodStripTrunk = new fltk::Item("Open LodStrip trunk"); 
    2456                                         o->callback((fltk::Callback*)cb_menuLodTreesOpenLodStripTrunk); 
    2457                                 } 
    2458  
    2459                                 { 
    2460                                         fltk::Item* o; 
    2461                                         o = menuLodTreesOpenLeavesSimplification = new fltk::Item("Open leaves simplification"); 
    2462                                         o->callback((fltk::Callback*)cb_menuLodTreesOpenLeavesSimplification); 
    2463                                 } 
     2543                                        o = menuLodTreesVisualize = new fltk::Item("Visualize Trunk"); 
     2544                                        o->callback((fltk::Callback*)cb_menuLodTreesVisualize); 
     2545                                } 
     2546 
    24642547                                o->end(); 
    24652548                        } 
    2466                         */ 
     2549                         
    24672550                         
    24682551                        { 
Note: See TracChangeset for help on using the changeset viewer.