Changeset 2224 for GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.cpp
- Timestamp:
- 03/09/07 18:30:24 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.cpp
r2210 r2224 393 393 mNodeTimer.Entry(); 394 394 395 /*396 #if STORE_VIEWCELLS_WITH_BVH397 AssociateViewCellsWithObjects(sc.mSampledFrontObjects);398 AssociateViewCellsWithObjects(sc.mSampledBackObjects);399 #endif400 */401 395 const BvhTraversalData &tData = sc.mParentData; 402 396 BvhLeaf *leaf = tData.mNode; … … 500 494 AssignSortedObjects(sc, frontData, backData); 501 495 } 502 /* 503 #if STORE_VIEWCELLS_WITH_BVH 504 ReleaseViewCells(sc.mSampledFrontObjects); 505 ReleaseViewCells(sc.mSampledBackObjects); 506 #endif 507 */ 496 508 497 mNodeTimer.Exit(); 509 498 … … 515 504 BvhNode *BvHierarchy::Subdivide(SplitQueue &tQueue, 516 505 SubdivisionCandidate *splitCandidate, 517 const bool globalCriteriaMet) 506 const bool globalCriteriaMet 507 ,vector<SubdivisionCandidate *> &dirtyList 508 ) 518 509 { 519 510 mSubdivTimer.Entry(); … … 552 543 new BvhSubdivisionCandidate(tBackData); 553 544 554 EvalSubdivisionCandidate(*frontCandidate); 555 EvalSubdivisionCandidate(*backCandidate); 556 545 // preprocess view cells 546 AssociateViewCellsWithObjects(*tData.mSampledObjects); 547 548 EvalSubdivisionCandidate(*frontCandidate, true, false); 549 EvalSubdivisionCandidate(*backCandidate, true, false); 550 551 CollectDirtyCandidates(sc, dirtyList, true); 552 ReleaseViewCells(*tData.mSampledObjects); 553 557 554 // cross reference 558 555 tFrontData.mNode->SetSubdivisionCandidate(frontCandidate); … … 638 635 639 636 void BvHierarchy::EvalSubdivisionCandidate(BvhSubdivisionCandidate &splitCandidate, 640 bool computeSplitPlane) 637 const bool computeSplitPlane, 638 const bool preprocessViewCells) 641 639 { 642 640 mPlaneTimer.Entry(); 643 641 644 642 #if STORE_VIEWCELLS_WITH_BVH 645 // fill view cells cache646 AssociateViewCellsWithObjects(*splitCandidate.mParentData.mSampledObjects);643 if (preprocessViewCells) // fill view cells cache 644 AssociateViewCellsWithObjects(*splitCandidate.mParentData.mSampledObjects); 647 645 #endif 648 646 … … 656 654 const bool sufficientSamples = 657 655 splitCandidate.mParentData.mNumRays > mMinRaysForVisibility; 656 657 //if (!sufficientSamples) cout << splitCandidate.mParentData.mNumRays << " "; 658 658 659 659 const bool useVisibiliyBasedHeuristics = … … 757 757 758 758 #if STORE_VIEWCELLS_WITH_BVH 759 ReleaseViewCells(*splitCandidate.mParentData.mSampledObjects); 759 if (preprocessViewCells) 760 ReleaseViewCells(*splitCandidate.mParentData.mSampledObjects); 760 761 #endif 761 762 … … 1672 1673 VssRay::NewMail(); 1673 1674 1674 if ((mMaxTests < tData.mNumRays) &&mUseCostHeuristics && useVisibilityBasedHeuristics)1675 /*if ((mMaxTests < tData.mNumRays) && mUseCostHeuristics && useVisibilityBasedHeuristics) 1675 1676 { 1676 1677 VssRayContainer rays; … … 1692 1693 } 1693 1694 } 1694 } 1695 }*/ 1695 1696 1696 1697 //////////////////////////////////// … … 1733 1734 } 1734 1735 1735 // no good results for degenerate axis split1736 // avoid splits in degenerate axis with high penalty 1736 1737 if (1 && 1737 1738 (tData.mNode->GetBoundingBox().Size(axis) < 0.0001))//Limits::Small)) … … 2405 2406 /////////////////////////////////////// 2406 2407 // start from root of tree 2407 /* 2408 2408 2409 if (node == NULL) 2409 2410 node = mRoot; … … 2449 2450 2450 2451 return leaf; 2451 */2452 2452 } 2453 2453 #endif … … 2632 2632 2633 2633 // evaluate priority 2634 EvalSubdivisionCandidate(*oSubdivisionCandidate );2634 EvalSubdivisionCandidate(*oSubdivisionCandidate, true, true); 2635 2635 PrintSubdivisionStats(*oSubdivisionCandidate); 2636 2636 … … 2646 2646 2647 2647 // reevaluate priority 2648 EvalSubdivisionCandidate(*sCandidate );2648 EvalSubdivisionCandidate(*sCandidate, true, true); 2649 2649 tQueue.Push(sCandidate); 2650 2650 } … … 2655 2655 { 2656 2656 // evaluate priority 2657 EvalSubdivisionCandidate(*oSubdivisionCandidate );2657 EvalSubdivisionCandidate(*oSubdivisionCandidate, true, true); 2658 2658 PrintSubdivisionStats(*oSubdivisionCandidate); 2659 2659 … … 2794 2794 new BvhSubdivisionCandidate(oData); 2795 2795 2796 EvalSubdivisionCandidate(*oSubdivisionCandidate );2796 EvalSubdivisionCandidate(*oSubdivisionCandidate, true, true); 2797 2797 bvhLeaf->SetSubdivisionCandidate(oSubdivisionCandidate); 2798 2798 … … 2929 2929 2930 2930 // evaluate the changes in render cost and pvs entries 2931 EvalSubdivisionCandidate(*sc, false );2931 EvalSubdivisionCandidate(*sc, false, true); 2932 2932 2933 2933 // create new interior node and two leaf node … … 3062 3062 const bool globalCriteriaMet = GlobalTerminationCriteriaMet(bsc->mParentData); 3063 3063 3064 BvhNode *node = Subdivide(tempQueue, bsc, globalCriteriaMet); 3064 SubdivisionCandidateContainer dirtyList; 3065 BvhNode *node = Subdivide(tempQueue, bsc, globalCriteriaMet, dirtyList); 3065 3066 3066 3067 // not needed anymore
Note: See TracChangeset
for help on using the changeset viewer.