Changeset 2787 for GTP


Ignore:
Timestamp:
06/20/08 04:34:24 (17 years ago)
Author:
mattausch
Message:
 
Location:
GTP/trunk/App/Demos/Vis/FriendlyCulling/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Bvh.h

    r2786 r2787  
    156156         
    157157        /// some flags 
    158         int mFlags; 
     158        //int mFlags; 
    159159        /// the depth of this node 
    160160        unsigned char mDepth; 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Camera.cpp

    r2782 r2787  
    2929        mDirection.Normalize(); 
    3030 
    31         //Vector3 side = CrossProd(Vector3(0, 1, 0), mDirection); 
    32         Vector3 side = CrossProd(Vector3(0, 0, 1), mDirection); 
    33          
     31        /*Vector3 side = CrossProd(Vector3(0, 0, 1), mDirection); 
    3432        mUp = -Normalize(CrossProd(side, mDirection)); 
    35         mRight = -Normalize(CrossProd(mDirection, mUp)); 
    36  
    37         /*float k = tan(mFovy/2); 
    38         mUp *= k; 
    39         mRight *= k*mWidth/mHeight;*/ 
     33        mRight = -Normalize(CrossProd(mDirection, mUp));*/ 
     34 
     35        mUp = Vector3(0, 0, 1); 
     36        mRight = -CrossProd(mDirection, mUp); 
     37        mUp = -Normalize(CrossProd(mRight, mDirection)); 
    4038} 
    4139 
     
    179177        const float w_far = h_far * GetAspect(); 
    180178 
     179        //const Vector3 view = mDirection; 
    181180        const Vector3 view = mDirection; 
    182181        const Vector3 fc = mPosition + view * z_far;  
    183182         
    184183        const Vector3 up = mUp; 
    185  
    186184        const Vector3 right = mRight; 
    187185 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/RenderTraverser.h

    r2786 r2787  
    7979        */ 
    8080        const TraversalStatistics &GetStats() const { return mStats; } 
     81        /** The current frame id 
     82        */ 
     83        int GetCurrentFrameId() const { return mFrameId; } 
    8184 
    8285 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Visualization.cpp

    r2782 r2787  
    44#include "SceneEntity.h" 
    55#include "Bvh.h" 
     6#include "RenderState.h" 
     7 
    68#include <stack> 
    79 
     
    2224                                                         Camera *vizCamera,  
    2325                                                         RenderState *renderState):  
    24 mBvh(bvh), mCamera(camera), mVizCamera(vizCamera), mRenderState(renderState) 
     26mBvh(bvh),  
     27mCamera(camera), 
     28mVizCamera(vizCamera), 
     29mRenderState(renderState), 
     30mFrameId(0) 
    2531{ 
    2632} 
     
    3642{ 
    3743        mRenderState = state; 
     44} 
     45 
     46 
     47void Visualization::SetFrameId(int frameId) 
     48{ 
     49        mFrameId = frameId; 
    3850} 
    3951 
     
    4355        stack<BvhNode *> tStack; 
    4456        tStack.push(mBvh->GetRoot()); 
     57 
     58        glEnableClientState(GL_VERTEX_ARRAY); 
     59        glEnableClientState(GL_NORMAL_ARRAY); 
     60 
     61        RenderFrustum(); 
    4562 
    4663        while (!tStack.empty()) 
     
    5875                else 
    5976                { 
     77                        if (node->GetLastRenderedFrame() == mFrameId) 
     78                        { 
     79                                int geometrySize; 
     80                                SceneEntity **entities = mBvh->GetGeometry(node, geometrySize); 
     81 
     82                                for (int i = 0; i < geometrySize; ++ i) 
     83                                { 
     84                                        SceneEntity *ent = entities[i]; 
     85                                        ent->Render(mRenderState); 
     86                                }                
     87                        } 
    6088                        //leaves.push_back(static_cast<BvhLeaf *>(node)); 
    6189                } 
    6290        } 
     91 
     92        mRenderState->Reset(); 
     93 
     94        glDisableClientState(GL_VERTEX_ARRAY); 
     95        glDisableClientState(GL_NORMAL_ARRAY); 
    6396} 
    6497 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Visualization.h

    r2782 r2787  
    3939        */ 
    4040        void SetRenderState(RenderState *state); 
    41          
     41        /** Sets the currentframe id 
     42        */ 
     43        void SetFrameId(int frameId); 
    4244 
    4345protected: 
     
    6365        /// the current render state 
    6466        RenderState *mRenderState; 
     67        /// the current frame id 
     68        int mFrameId; 
    6569}; 
    6670 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp

    r2786 r2787  
    8585bool useMultiQueries = true; 
    8686 
     87float rotation = 0; 
     88 
     89Matrix4x4 visView = IdentityMatrix(); 
     90 
    8791 
    8892void InitExtensions(); 
     
    108112void rightMotion(int x, int y); 
    109113void middleMotion(int x, int y); 
    110 void drawEyeView(void); 
    111 void setupVisView(void); 
     114void drawEyeView(); 
     115void setupVisView(); 
    112116void CalcDecimalPoint(std::string &str, int d); 
    113117void ResetTraverser(); 
     
    185189        camera->SetPosition(Vector3(483.398f, 242.364f, 186.078f)); 
    186190 
     191        visualization = new Visualization(bvh, camera, NULL, &state); 
     192 
    187193        glutMainLoop(); 
    188194 
     
    229235        glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuseColor); 
    230236        glMaterialfv(GL_FRONT, GL_SPECULAR, specularColor); 
    231         //setupVisView(); 
    232237} 
    233238 
     
    409414        SetupEyeView(); 
    410415 
    411         //cout << camera->GetDirection() << " " << camera->GetPosition() << endl; 
    412416        // actually render the scene geometry using one of the specified algorithms 
    413417        traverser->RenderScene(); 
    414418         
    415         //if(visMode) displayVisualization(); 
     419        if (visMode) DisplayVisualization(); 
    416420         
    417421        DisplayStats(); 
     
    478482        case '2': 
    479483                visZoomFactor += 0.1;    
    480                 setupVisView(); 
    481484                break; 
    482485        case '3': 
    483486                visZoomFactor -= 0.1; 
    484                 if(visZoomFactor < 0.1) visZoomFactor = 0.1; 
    485          
    486                 setupVisView(); 
     487                if (visZoomFactor < 0.1) visZoomFactor = 0.1; 
    487488                break; 
    488489        case '8': 
     
    561562 
    562563 
    563 void special(const int c, const int x, const int y)  
     564void special(int c, int x, int y)  
    564565{ 
    565566        // used to avoid vertical motion with the keys 
     
    677678        eyeXAngle = 0.2f *  M_PI * (xEyeBegin - x) / 180.0; 
    678679 
     680        rotation += eyeXAngle; 
     681 
    679682        // rotate view vector 
    680683        Matrix4x4 rot = RotationZMatrix(eyeXAngle); 
     
    802805 
    803806 
    804 // displays the visualisation of the kd tree node culling 
    805 void displayVisualization() 
    806 { 
     807// displays the visualisation of culling algorithm 
     808void DisplayVisualization() 
     809{ 
     810        setupVisView(); 
     811 
     812        visualization->SetFrameId(traverser->GetCurrentFrameId()); 
     813         
    807814        begin2D(); 
    808815        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
     
    816823        glViewport(winWidth / 2, winHeight / 2, winWidth, winHeight); 
    817824        glPushMatrix(); 
    818         //glLoadMatrixf((float *)visView.x); 
    819          
     825        //glMatrixMode(GL_PROJECTION); 
     826        glMatrixMode(GL_MODELVIEW); 
     827        glLoadIdentity(); 
     828 
     829        Vector3 pos(camera->GetPosition()); 
     830    pos.z = 10.0f * bvh->GetBox().Size().z; 
     831        pos.y = 800; 
     832        pos.x += 1000; 
     833 
     834        Matrix4x4 m = RotationZMatrix(-rotation); 
     835        Matrix4x4 t = TranslationMatrix(pos); 
     836        Matrix4x4 minust = TranslationMatrix(-pos); 
     837 
     838        glMultMatrixf((float *)visView.x); 
     839 
     840        glMultMatrixf((float *)t.x); 
     841        glMultMatrixf((float *)m.x); 
     842        glMultMatrixf((float *)minust.x); 
     843 
    820844        glClear(GL_DEPTH_BUFFER_BIT); 
    821845 
    822846        //////////// 
    823         // --- visualization of the occlusion culling 
     847        //-- visualization of the occlusion culling 
     848 
     849        //traverser->RenderScene(); 
    824850        visualization->Render(); 
    825851         
     
    835861void setupVisView() 
    836862{ 
    837         const Vector3 up(0.0, 0.0, 1.0); 
    838          
    839         Vector3 visPos(24, 23, -6); 
    840          
    841         visPos[0] *= visZoomFactor;  
    842         visPos[1] *= visZoomFactor;  
    843         visPos[2] *= visZoomFactor; 
    844  
    845         Vector3 visDir = Vector3(-1.3f, -1, -1); 
    846 } 
    847  
     863        Vector3 pos(-camera->GetPosition()); 
     864    pos.z = -10.0f * bvh->GetBox().Size().z; 
     865        pos.y += 800; 
     866        pos.x -= 1000; 
     867 
     868        Vector3 dir(0, 0, 1); 
     869        Vector3 up(0, 1, 0); 
     870        //Vector3 up(camera->GetDirection());up.y = 0; 
     871 
     872        Vector3 left = Normalize(CrossProd(dir, up)); 
     873        up = Normalize(CrossProd(left, dir)); 
     874 
     875        visView = Matrix4x4(up, left, dir); 
     876        pos = visView * pos; 
     877 
     878        visView.x[3][0] = pos.x; 
     879        visView.x[3][1] = pos.y; 
     880        visView.x[3][2] = pos.z; 
     881} 
    848882 
    849883// cleanup routine after the main loop 
     
    855889        DEL_PTR(bvh); 
    856890        DEL_PTR(visualization); 
     891        DEL_PTR(camera); 
    857892} 
    858893 
Note: See TracChangeset for help on using the changeset viewer.