Changeset 424


Ignore:
Timestamp:
11/20/05 22:57:44 (19 years ago)
Author:
mattausch
Message:
 
Location:
trunk/VUT/GtpVisibilityPreprocessor/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/GtpVisibilityPreprocessor/src/Environment.cpp

    r421 r424  
    12701270                 "-1"); 
    12711271 
     1272   RegisterOption("BspTree.Termination.ct_div_ci", 
     1273                 optFloat, 
     1274                 "-bsp_term_ct_div_ci=", 
     1275                 "0.0"); 
     1276   
     1277  RegisterOption("BspTree.Termination.maxDepth", 
     1278                 optInt, 
     1279                 "-bsp_term_max_depth=", 
     1280                 "100"); 
     1281 
    12721282  RegisterOption("BspTree.Termination.AxisAligned.maxCostRatio", 
    12731283                 optFloat, 
    1274                  "-bsp_term_max_cost_ratio=", 
     1284                 "-bsp_term_axis_aligned_max_cost_ratio=", 
    12751285                 "1.5"); 
    12761286 
    12771287  RegisterOption("BspTree.Termination.AxisAligned.ct_div_ci", 
    12781288                 optFloat, 
    1279                  "-bsp_term_ct_div_ci=", 
    1280                  "1.0"); 
     1289                 "-bsp_term_axis_aligned_ct_div_ci=", 
     1290                 "0.5"); 
    12811291 
    12821292  RegisterOption("BspTree.AxisAligned.splitBorder", 
    12831293                 optFloat, 
    1284                  "-bsp_split_border=", 
     1294                 "-bsp__axis_aligned_split_border=", 
    12851295                 "0.1"); 
    12861296 
    12871297  RegisterOption("BspTree.Termination.AxisAligned.maxPolys", 
    12881298                 optInt, 
    1289                  "-bsp_term_max_polygons=", 
     1299                 "-bsp_term_axis_aligned_max_polygons=", 
    12901300                 "50"); 
    12911301 
     
    12971307  RegisterOption("BspTree.Termination.AxisAligned.maxRays", 
    12981308                 optInt, 
    1299                  "-bsp_term_max_rays=", 
     1309                 "-bsp_term_axis_aligned_max_rays=", 
    13001310                 "-1"); 
    1301  
    1302   RegisterOption("BspTree.Termination.maxDepth", 
    1303                  optInt, 
    1304                  "-bsp_term_max_depth=", 
    1305                  "100"); 
    13061311 
    13071312  RegisterOption("BspTree.splitPlaneStrategy", 
     
    13301335          "false"); 
    13311336 
     1337  RegisterOption("BspTree.Factor.verticalSplits", optFloat, "-bsp_factor_vertical=", "1.0"); 
     1338  RegisterOption("BspTree.Factor.largestPolyArea", optFloat, "-bsp_factor_largest_poly=", "1.0"); 
     1339  RegisterOption("BspTree.Factor.blockedRays", optFloat, "-bsp_factor_blocked=", "1.0"); 
     1340  RegisterOption("BspTree.Factor.leastRaySplits", optFloat, "-bsp_factor_least_ray_splits=", "1.0"); 
     1341  RegisterOption("BspTree.Factor.balancedRays", optFloat, "-bsp_factor_balanced_rays=", "1.0"); 
     1342  RegisterOption("BspTree.Factor.pvsFactor", optFloat, "-bsp_factor_pvs=", "1.0"); 
     1343  RegisterOption("BspTree.Factor.leastSplits", optFloat, "-bsp_factor_least_splits=", "1.0"); 
     1344  RegisterOption("BspTree.Factor.balancedPolys", optFloat, "-bsp_factor_balanced_polys=", "1.0"); 
     1345  RegisterOption("BspTree.Factor.balancedViewCells", optFloat, "-bsp_factor_balanced_view_cells=", "1.0"); 
     1346 
    13321347  RegisterOption("Preprocessor.type", 
    1333                                                                 optString, 
    1334                                                                 "-preprocessor=", 
    1335                                                                 "sampling"); 
     1348                                optString, 
     1349                                "-preprocessor=", 
     1350                                "sampling"); 
    13361351 
    13371352 
  • trunk/VUT/GtpVisibilityPreprocessor/src/ViewCellBsp.cpp

    r423 r424  
    274274mRoot(NULL),  
    275275mGenerateViewCells(false), 
    276 //-- factors for bsp tree split plane heuristics 
    277 mVerticalSplitsFactor(1.0f), 
    278 mLargestPolyAreaFactor(1.0f), 
    279 mBlockedRaysFactor(1.0f), 
    280 mLeastRaySplitsFactor(1.0f), 
    281 mBalancedRaysFactor(1.0f), 
    282 mPvsFactor(1.0f), 
    283 mLeastSplitsFactor(1.0f), 
    284 mBalancedPolysFactor(1.0f), 
    285 mBalancedViewCellsFactor(1.0f), 
    286 //------------------------------------ 
    287276mStoreLeavesWithRays(false), 
    288277mPvsUseArea(true) 
     
    299288        environment->GetFloatValue("BspTree.Termination.maxAccRayLenght", mTermMaxAccRayLength); 
    300289 
     290        //-- factors for bsp tree split plane heuristics 
     291        environment->GetFloatValue("BspTree.Factor.verticalSplits", mVerticalSplitsFactor); 
     292        environment->GetFloatValue("BspTree.Factor.largestPolyArea", mLargestPolyAreaFactor); 
     293        environment->GetFloatValue("BspTree.Factor.blockedRays", mBlockedRaysFactor); 
     294        environment->GetFloatValue("BspTree.Factor.leastRaySplits", mLeastRaySplitsFactor); 
     295        environment->GetFloatValue("BspTree.Factor.balancedRays", mBalancedRaysFactor); 
     296        environment->GetFloatValue("BspTree.Factor.pvsFactor", mPvsFactor); 
     297        environment->GetFloatValue("BspTree.Factor.leastSplits" , mLeastSplitsFactor); 
     298        environment->GetFloatValue("BspTree.Factor.balancedPolys", mBalancedPolysFactor); 
     299        environment->GetFloatValue("BspTree.Factor.balancedViewCells", mBalancedViewCellsFactor); 
     300        environment->GetFloatValue("BspTree.Termination.ct_div_ci", mCtDivCi); 
     301 
    301302        //-- termination criteria for axis aligned split 
    302         environment->GetFloatValue("BspTree.Termination.AxisAligned.ct_div_ci", mCtDivCi); 
     303        environment->GetFloatValue("BspTree.Termination.AxisAligned.ct_div_ci", mAaCtDivCi); 
    303304        environment->GetFloatValue("BspTree.Termination.AxisAligned.maxCostRatio", mMaxCostRatio); 
    304305        environment->GetIntValue("BspTree.Termination.AxisAligned.maxPolys",  
     
    10341035   
    10351036        float oldCost = (float)polys.size(); 
    1036         float newCost = mCtDivCi + minSum / boxArea; 
     1037        float newCost = mAaCtDivCi + minSum / boxArea; 
    10371038        float ratio = newCost / oldCost; 
    10381039 
     
    14911492 
    14921493                        if (!mPvsUseArea) // use front and back cell areas to approximate volume 
    1493                         { 
     1494                        {        
    14941495                                float len = Distance(entP, extP); 
    14951496                                pOverall += len; 
  • trunk/VUT/GtpVisibilityPreprocessor/src/ViewCellBsp.h

    r423 r424  
    810810        float mTermMaxAccRayLength; 
    811811 
     812        float mCtDivCi; 
     813 
     814        /// if intersected leaves should be stored with a sample 
    812815        bool mStoreLeavesWithRays; 
    813816 
    814817        /// axis aligned split criteria 
    815         float mCtDivCi; 
     818        float mAaCtDivCi; 
    816819        float mSplitBorder; 
    817820        float mMaxCostRatio; 
    818821 
    819822        // factors guiding the split plane heuristics 
    820         float mLeastSplitsFactor; 
    821         float mBalancedPolysFactor; 
    822         float mBalancedViewCellsFactor; 
    823823        float mVerticalSplitsFactor; 
    824824        float mLargestPolyAreaFactor; 
     
    827827        float mBalancedRaysFactor; 
    828828        float mPvsFactor; 
     829        float mLeastSplitsFactor; 
     830        float mBalancedPolysFactor; 
     831        float mBalancedViewCellsFactor; 
    829832 
    830833        //-- thresholds used for view cells merge 
  • trunk/VUT/GtpVisibilityPreprocessor/src/VspKdTree.cpp

    r423 r424  
    531531 
    532532// returns selected plane for subdivision 
    533 int 
    534 VspKdTree::SelectPlane(VspKdTreeLeaf *leaf, 
    535                                            const AxisAlignedBox3 &box, 
    536                                            float &position, 
    537                                            int &raysBack, 
    538                                            int &raysFront, 
    539                                            int &pvsBack, 
    540                                            int &pvsFront) 
     533int VspKdTree::SelectPlane(VspKdTreeLeaf *leaf, 
     534                                                   const AxisAlignedBox3 &box, 
     535                                                   float &position, 
     536                                                   int &raysBack, 
     537                                                   int &raysFront, 
     538                                                   int &pvsBack, 
     539                                                   int &pvsFront) 
    541540{ 
    542541        int minDirDepth = 6; 
     
    615614        // this is the main ray classification loop! 
    616615    for(RayInfoContainer::iterator ri = leaf->mRays.begin(); 
    617                 ri != leaf->mRays.end();        ri++) 
     616                ri != leaf->mRays.end(); ++ ri) 
    618617        { 
    619618                if (!(*ri).mRay->IsActive())  
     
    640639                 
    641640        //              float sum = raysBack*(position - minBox) + raysFront*(maxBox - position); 
    642         float sum = pvsBack*(position - minBox) + pvsFront * (maxBox - position); 
    643  
    644         newCost = mCtDivCi + sum  /sizeBox; 
     641        float sum = pvsBack * (position - minBox) + pvsFront * (maxBox - position); 
     642 
     643        newCost = mCtDivCi + sum  / sizeBox; 
    645644         
    646645        //      cout<<axis<<" "<<pvsSize<<" "<<pvsBack<<" "<<pvsFront<<endl; 
     
    677676                if (!mOnlyDrivingAxis || axis == sAxis)  
    678677                { 
    679                         nPosition[axis] = (sBox.Min()[axis] + sBox.Max()[axis])*0.5f; 
     678                        nPosition[axis] = (sBox.Min()[axis] + sBox.Max()[axis]) * 0.5f; 
    680679                                                 
    681680                        nCostRatio[axis] = EvalCostRatio(leaf, 
     
    728727        int rl = 0, rr = (int)leaf->mRays.size(); 
    729728        int pl = 0, pr = leaf->GetPvsSize(); 
     729 
    730730        float minBox = box.Min(axis); 
    731731        float maxBox = box.Max(axis); 
     
    739739         
    740740        Intersectable::NewMail(); 
     741 
    741742        // set all object as belonging to the fron pvs 
    742743        for(RayInfoContainer::iterator ri = leaf->mRays.begin(); 
    743                 ri != leaf->mRays.end();        ++ ri) 
     744                ri != leaf->mRays.end(); ++ ri) 
    744745        { 
    745746                if ((*ri).mRay->IsActive()) 
Note: See TracChangeset for help on using the changeset viewer.