Changeset 1557 for GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.cpp
- Timestamp:
- 10/03/06 10:10:01 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.cpp
r1548 r1557 608 608 const ObjectContainer &objects) 609 609 { 610 switch (mObjectSpaceSubdivisionType)611 {612 case BV_BASED_OBJ_SUBDIV:613 Debug << "old bv hierarchy:\n " << mBvHierarchy->mBvhStats << endl;614 cout << "\nresetting bv hierarchy" << endl;615 mHierarchyStats.nodes -= mBvHierarchy->mBvhStats.nodes;616 610 #if 0 617 611 DEL_PTR(mBvHierarchy); … … 620 614 621 615 PrepareObjectSpaceSubdivision(sampleRays, objects); 622 #else 623 mBvHierarchy->Reset(sampleRays, objects); 616 return; 624 617 #endif 625 break; 618 619 if (!ObjectSpaceSubdivisionConstructed()) 620 { 621 return PrepareObjectSpaceSubdivision(sampleRays, objects); 622 } 623 624 switch (mObjectSpaceSubdivisionType) 625 { 626 case BV_BASED_OBJ_SUBDIV: 627 cout << "\nreseting bv hierarchy" << endl; 628 Debug << "old bv hierarchy:\n " << mBvHierarchy->mBvhStats << endl; 629 630 mHierarchyStats.nodes -= mBvHierarchy->mBvhStats.nodes; 631 mTQueue.Push(mBvHierarchy->Reset(sampleRays, objects)); 632 mTotalCost = mBvHierarchy->mTotalCost; 633 break; 634 626 635 case KD_BASED_OBJ_SUBDIV: 627 636 // TODO … … 630 639 break; 631 640 } 641 } 642 643 644 void HierarchyManager::ResetViewSpaceSubdivision(const VssRayContainer &sampleRays, 645 const ObjectContainer &objects) 646 { 647 DEL_PTR(mBvHierarchy); 648 mBvHierarchy = new BvHierarchy(); 649 mBvHierarchy->mHierarchyManager = this; 650 651 PrepareViewSpaceSubdivision(sampleRays, objects); 652 return; 632 653 } 633 654 … … 639 660 mHierarchyStats.Reset(); 640 661 mHierarchyStats.Start(); 641 642 662 mHierarchyStats.nodes = 2; 643 663 644 645 664 mTotalCost = (float)objects.size(); 646 665 Debug << "setting total cost to " << mTotalCost << endl; … … 655 674 mSavedViewSpaceSubdivisionType = mViewSpaceSubdivisionType; 656 675 mViewSpaceSubdivisionType = NO_VIEWSPACE_SUBDIV; 657 658 // start with object space subdivision 659 PrepareObjectSpaceSubdivision(sampleRays, objects); 660 661 // process object space candidates 662 RunConstruction(false); 663 664 mViewSpaceSubdivisionType = mSavedViewSpaceSubdivisionType; 665 666 const int limit = 2; 667 for (int i = 0; i < limit; ++ i) 668 { 669 // again run object space subdivision on the view cells 676 677 const int limit = 4; 678 int i = 0; 679 680 // render cost optimization 681 // start with object space partiton 682 // then optimizate view space partition for the current osp 683 // and vice versa until iteration depth is reached. 684 while (1) 685 { 686 // first run object space subdivision 670 687 ResetObjectSpaceSubdivision(sampleRays, objects); 671 688 672 689 // process object space candidates 673 690 RunConstruction(false); 674 691 675 ///////////////// 676 // now do view space subdivison using the current object space partition 677 // ResetViewSpaceSubdivision(sampleRays, objects); 678 692 if ((++ i) >= limit) 693 break; 694 695 ///////////////// 696 // do view space subdivison with respect to the object space partition 697 ResetViewSpaceSubdivision(sampleRays, objects); 698 679 699 // process view space candidates 680 700 RunConstruction(false); 681 682 cout << "íteration " << i << " of " << limit << " finished" << endl; 701 mViewSpaceSubdivisionType = mSavedViewSpaceSubdivisionType; 702 703 if ((++ i) >= limit) 704 break; 705 706 cout << "iteration " << i << " of " << limit << " finished" << endl; 683 707 } 684 708
Note: See TracChangeset
for help on using the changeset viewer.