Changeset 2780 for GTP/trunk/App/Demos/Vis/CHC_revisited/chcdemo.cpp
- Timestamp:
- 06/19/08 18:43:17 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/App/Demos/Vis/CHC_revisited/chcdemo.cpp
r2779 r2780 163 163 //camera->LookInBox(bvh->GetBox()); 164 164 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)); 167 166 camera->SetPosition(Vector3(483.398f, 242.364f, 186.078f)); 168 167 … … 295 294 break; 296 295 case RenderTraverser::CHC: 297 cout << "using chc" << endl;298 296 traverser = new CHCTraverser(); 299 297 break; … … 490 488 case 'A': 491 489 { 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); 493 495 } 494 496 break; … … 496 498 case 'D': 497 499 { 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); 499 505 } 500 506 break; 501 507 case 'w': 502 508 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': 503 517 { 504 518 Vector3 pos = camera->GetPosition(); … … 507 521 } 508 522 break; 509 case 'x':510 case 'X':511 {512 Vector3 pos = camera->GetPosition();513 pos += hvec * keyForwardMotion;514 camera->SetPosition(pos);515 }516 break;517 523 case 'r': 518 524 case 'R': … … 541 547 case GLUT_KEY_LEFT: 542 548 { 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); 544 554 } 545 555 break; 546 556 case GLUT_KEY_RIGHT: 547 557 { 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); 549 563 } 550 564 break; 551 565 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: 552 573 { 553 574 Vector3 pos = camera->GetPosition(); 554 575 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;562 576 camera->SetPosition(pos); 563 577 } … … 627 641 void leftMotion(int x, int y) 628 642 { 643 static float eyeXAngle = 0.0f; 644 629 645 Vector3 viewDir = camera->GetDirection(); 630 646 Vector3 pos = camera->GetPosition(); … … 633 649 Vector3 horView(viewDir[0], viewDir[1], 0); 634 650 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); 641 660 camera->SetPosition(pos); 642 661 … … 653 672 void rightMotion(int x, int y) 654 673 { 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 659 687 yEyeBegin = y; 660 688 … … 678 706 rVec = rot * rVec; 679 707 680 pos += rVec * (x - horizontalMotionBegin) * 0.1f;708 pos -= rVec * (x - horizontalMotionBegin) * 0.1f; 681 709 //pos[1] += (verticalMotionBegin - y) * 0.1f; 682 710 pos[2] += (verticalMotionBegin - y) * 0.1f; … … 771 799 //////////// 772 800 // --- visualization of the occlusion culling 773 774 801 visualization->Render(); 775 802
Note: See TracChangeset
for help on using the changeset viewer.