Ignore:
Timestamp:
06/19/08 18:43:17 (16 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/CHC_revisited/chcdemo.cpp

    r2779 r2780  
    163163        //camera->LookInBox(bvh->GetBox()); 
    164164 
    165         //camera->SetDirection(Vector3(0.961829f, 0.273652f, 0.0f)); 
    166         //camera->SetDirection(Vector3(0.0f, 1.0f, 0.0f)); 
     165        camera->SetDirection(Vector3(0.961829f, 0.273652f, 0.0f)); 
    167166        camera->SetPosition(Vector3(483.398f, 242.364f, 186.078f)); 
    168167 
     
    295294                break; 
    296295        case RenderTraverser::CHC: 
    297                 cout << "using chc" << endl; 
    298296                traverser = new CHCTraverser(); 
    299297                break; 
     
    490488        case 'A': 
    491489                { 
    492                         camera->Pitch(keyRotation); 
     490                        Vector3 viewDir = camera->GetDirection(); 
     491                        // rotate view vector 
     492                        Matrix4x4 rot = RotationZMatrix(keyRotation); 
     493                        viewDir = rot * viewDir; 
     494                        camera->SetDirection(viewDir); 
    493495                } 
    494496                break; 
     
    496498        case 'D': 
    497499        { 
    498                         camera->Pitch(-keyRotation); 
     500                        Vector3 viewDir = camera->GetDirection(); 
     501                        // rotate view vector 
     502                        Matrix4x4 rot = RotationZMatrix(-keyRotation); 
     503                        viewDir = rot * viewDir; 
     504                        camera->SetDirection(viewDir); 
    499505                } 
    500506                break; 
    501507        case 'w': 
    502508        case 'W': 
     509                { 
     510                        Vector3 pos = camera->GetPosition(); 
     511                        pos += hvec * keyForwardMotion; 
     512                        camera->SetPosition(pos); 
     513                } 
     514                break; 
     515        case 'x': 
     516        case 'X': 
    503517                { 
    504518                        Vector3 pos = camera->GetPosition(); 
     
    507521                } 
    508522                break; 
    509         case 'x': 
    510         case 'X': 
    511                 { 
    512                         Vector3 pos = camera->GetPosition(); 
    513                         pos += hvec * keyForwardMotion; 
    514                         camera->SetPosition(pos); 
    515                 } 
    516                 break; 
    517523        case 'r': 
    518524        case 'R': 
     
    541547        case GLUT_KEY_LEFT: 
    542548                { 
    543                         camera->Pitch(keyRotation); 
     549                        Vector3 viewDir = camera->GetDirection(); 
     550                        // rotate view vector 
     551                        Matrix4x4 rot = RotationZMatrix(keyRotation); 
     552                        viewDir = rot * viewDir; 
     553                        camera->SetDirection(viewDir); 
    544554                } 
    545555                break; 
    546556        case GLUT_KEY_RIGHT: 
    547557                { 
    548                         camera->Pitch(-keyRotation); 
     558                        Vector3 viewDir = camera->GetDirection(); 
     559                        // rotate view vector 
     560                        Matrix4x4 rot = RotationZMatrix(-keyRotation); 
     561                        viewDir = rot * viewDir; 
     562                        camera->SetDirection(viewDir); 
    549563                } 
    550564                break; 
    551565        case GLUT_KEY_UP: 
     566                { 
     567                        Vector3 pos = camera->GetPosition(); 
     568                        pos += hvec * 0.6f; 
     569                        camera->SetPosition(pos); 
     570                } 
     571                break; 
     572        case GLUT_KEY_DOWN: 
    552573                { 
    553574                        Vector3 pos = camera->GetPosition(); 
    554575                        pos -= hvec * 0.6f; 
    555                         camera->SetPosition(pos); 
    556                 } 
    557                 break; 
    558         case GLUT_KEY_DOWN: 
    559                 { 
    560                         Vector3 pos = camera->GetPosition(); 
    561                         pos += hvec * 0.6f; 
    562576                        camera->SetPosition(pos); 
    563577                } 
     
    627641void leftMotion(int x, int y)  
    628642{ 
     643        static float eyeXAngle = 0.0f; 
     644 
    629645        Vector3 viewDir = camera->GetDirection(); 
    630646        Vector3 pos = camera->GetPosition(); 
     
    633649        Vector3 horView(viewDir[0], viewDir[1], 0); 
    634650         
    635         float eyeXAngle = 0.2f *  M_PI * (xEyeBegin - x) / 180.0; 
    636  
    637         camera->Pitch(eyeXAngle); 
    638  
    639         pos -= horView * (yMotionBegin - y) * 0.2f; 
    640          
     651        eyeXAngle = 0.2f *  M_PI * (xEyeBegin - x) / 180.0; 
     652 
     653        // rotate view vector 
     654        Matrix4x4 rot = RotationZMatrix(eyeXAngle); 
     655        viewDir = rot * viewDir; 
     656 
     657        pos += horView * (yMotionBegin - y) * 0.2f; 
     658 
     659        camera->SetDirection(viewDir); 
    641660        camera->SetPosition(pos); 
    642661         
     
    653672void rightMotion(int x, int y)  
    654673{ 
    655         float eyeYAngle = -0.2f *  M_PI * (yEyeBegin - y) / 180.0; 
    656  
    657         camera->Yaw(eyeYAngle); 
    658          
     674        static float eyeYAngle = 0.0f; 
     675 
     676        Vector3 viewDir = camera->GetDirection(); 
     677        Vector3 right = camera->GetRightVector(); 
     678 
     679        eyeYAngle = -0.2f *  M_PI * (yEyeBegin - y) / 180.0; 
     680 
     681        // rotate view vector 
     682        Matrix4x4 rot = RotationAxisMatrix(right, eyeYAngle); 
     683        viewDir = rot * viewDir; 
     684 
     685        camera->SetDirection(viewDir); 
     686                 
    659687        yEyeBegin = y; 
    660688         
     
    678706        rVec = rot * rVec; 
    679707         
    680         pos += rVec * (x - horizontalMotionBegin) * 0.1f; 
     708        pos -= rVec * (x - horizontalMotionBegin) * 0.1f; 
    681709        //pos[1] += (verticalMotionBegin - y) * 0.1f; 
    682710        pos[2] += (verticalMotionBegin - y) * 0.1f; 
     
    771799        //////////// 
    772800        // --- visualization of the occlusion culling 
    773  
    774801        visualization->Render(); 
    775802         
Note: See TracChangeset for help on using the changeset viewer.