Changeset 666


Ignore:
Timestamp:
02/28/06 20:41:21 (18 years ago)
Author:
mattausch
Message:

debug version for testing subdivision quality

Location:
GTP/trunk/Lib/Vis/Preprocessing
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/Preprocessing/scripts/default.env

    r664 r666  
    1313#;../data/vienna/vienna-plane.x3d 
    1414#       filename ../data/vienna/viewcells-25-sel.x3d 
    15         filename ../data/atlanta/atlanta2.x3d 
     15#       filename ../data/atlanta/atlanta2.x3d 
    1616#       filename ../data/soda/soda.dat 
    17 #       filename ../data/soda/soda5.dat 
     17        filename ../data/soda/soda5.dat 
    1818} 
    1919 
     
    177177        # samples used for view cell construction 
    178178        Construction { 
    179                 samples 0 
    180                 samplesPerPass 50000 
     179                samples 1000000 
     180                samplesPerPass 200000 
    181181        } 
    182182 
     
    192192        #type bspTree 
    193193        type vspBspTree 
    194          
    195194        #type sceneDependent 
    196195         
     
    204203        processOnlyValidViewCells false 
    205204 
    206         stats viewCellStats.log 
     205        #stats viewCellStats.log 
    207206 
    208207        samplingType directional 
     208        #samplingType box 
    209209 
    210210        PostProcess { 
     
    219219                refine false 
    220220                compress false 
    221                 merge true 
    222                 statsPrefix ../scripts/viewCells 
     221                merge false 
    223222        } 
    224223 
     
    231230                colorCode Random 
    232231                exportRays false 
    233                 exportGeometry true 
     232                exportGeometry false 
    234233                exportMergedViewCells false 
    235234                useClipPlane true 
     
    237236        } 
    238237 
    239         evaluateViewCells true 
     238        showVisualization false  
     239        evaluateViewCells false 
    240240         
    241241        Evaluation { 
    242                 samplesPerPass 200000 
    243                 samples 2000000 
     242                samplesPerPass 800000 
     243                samples 1000000 
     244                statsPrefix ../scripts/viewCells 
    244245        } 
    245246 
     
    301302VspBspTree { 
    302303        Construction { 
    303                 samples 300000 
     304                samples 800000 
    304305                epsilon 0.0005 
    305306                randomize false 
     
    317318         
    318319        # maximal candidates for split planes 
    319         maxPolyCandidates 100 
     320        maxPolyCandidates 150 
    320321 
    321322        usePolygonSplitIfAvailable false 
     323 
    322324        # maximal tested rays for split cost heuristics 
    323325        maxTests 10000 
     
    325327        maxTotalMemory  50 
    326328        maxStaticMemory 50 
    327          
    328         simulateOctree false 
    329          
    330         subdivisionStats ../subDivisionStats.log 
     329 
     330        subdivisionStats ../subdivisionStats.log 
    331331 
    332332        # factors for evaluating split plane costs 
     
    350350                minGlobalCostRatio      0.0000001 
    351351#               minGlobalCostRatio      0.0001 
    352                 maxViewCells            40000 
     352                maxViewCells            20000 
    353353         
    354354 
     
    362362        } 
    363363         
    364         useSplitCostQueue       false 
    365  
     364        useSplitCostQueue true 
    366365        useCostHeuristics true 
     366 
    367367        splitUseOnlyDrivingAxis false 
     368        simulateOctree false 
     369        useRandomAxis false 
    368370        usePolygonSplitIfAvailable false 
     371        useBreathFirstSplits false 
    369372 
    370373        Visualization { 
     
    376379BspTree { 
    377380        Construction { 
    378                 samples 50000 
     381                samples 300000 
    379382                epsilon 0.005 
    380383        } 
     
    439442                # parameters used for autopartition 
    440443                minRays -1 
    441                 minPolygons 1 
     444                minPolygons 0 
    442445                maxDepth 30 
    443446                minPvs -1 
    444447                minProbability 0.00001 
    445448                maxRayContribution 9999 
    446                 maxViewCells    10000 
     449                maxViewCells 20000 
    447450 
    448451                # used for pvs criterium 
  • GTP/trunk/Lib/Vis/Preprocessing/src/Environment.cpp

    r664 r666  
    12091209                        "box"); 
    12101210 
    1211         RegisterOption("ViewCells.stats", 
     1211        RegisterOption("ViewCells.mergeStats", 
    12121212                                        optString, 
    1213                                         "view_cells_stats=", 
    1214                                         "viewCellsStats.log"); 
     1213                                        "view_cells_merge_stats=", 
     1214                                        "mergeStats.log"); 
    12151215 
    12161216        RegisterOption("ViewCells.Evaluation.statsPrefix", 
     
    13581358        RegisterOption("ViewCells.PostProcess.merge",  
    13591359                optBool, 
    1360                 "view_cells_post_merge=",  
     1360                "view_cells_post_process_merge=", 
    13611361                "true"); 
    13621362 
     
    13761376                "false"); 
    13771377         
     1378        RegisterOption("ViewCells.showVisualization", 
     1379                optBool,  
     1380                "view_cells_show_visualization=",  
     1381                "false"); 
     1382 
    13781383        RegisterOption("ViewCells.Visualization.clipPlaneAxis", 
    13791384                optInt,  
     
    14171422        RegisterOption("BspTree.subdivisionStats", 
    14181423                                        optString, 
    1419                                         "vsp_bsp_subdivision_stats=", 
     1424                                        "bsp_subdivision_stats=", 
    14201425                                        "bspSubdivisionStats.log"); 
    14211426 
     
    19071912        RegisterOption("VspBspTree.Termination.AxisAligned.maxCostRatio", 
    19081913                optFloat, 
    1909                 "-vsp_bsp_term_axis_aligned_max_cost_ratio=", 
     1914                "vsp_bsp_term_axis_aligned_max_cost_ratio=", 
    19101915                "1.5"); 
    19111916 
    19121917        RegisterOption("VspBspTree.useCostHeuristics", 
    19131918                optBool, 
    1914                 "-vsp_bsp_use_cost_heuristics=", 
     1919                "vsp_bsp_use_cost_heuristics=", 
    19151920                "false"); 
    19161921 
    19171922        RegisterOption("VspBspTree.Termination.maxViewCells", 
    19181923                optInt, 
    1919                 "-vsp_bsp_term_max_view_cells=", 
     1924                "vsp_bsp_term_max_view_cells=", 
    19201925                "1000"); 
    19211926 
    19221927        RegisterOption("VspBspTree.Termination.maxCostRatio", 
    19231928                optFloat, 
    1924                 "-vsp_bsp_term_max_cost_ratio=", 
     1929                "vsp_bsp_term_max_cost_ratio=", 
    19251930                "1.5"); 
    19261931 
     
    20022007                "false"); 
    20032008 
    2004         RegisterOption("VspBspTree.breathFirstSplits", 
     2009        RegisterOption("VspBspTree.useBreathFirstSplits", 
    20052010                optBool, 
    20062011                "-vsp_bsp_breath_first_splits=", 
  • GTP/trunk/Lib/Vis/Preprocessing/src/ViewCell.cpp

    r664 r666  
    18661866 
    18671867                vc->GetPvs().mEntries.clear(); 
    1868  
     1868                 
    18691869                if (!vc->IsLeaf()) 
    18701870                { 
    18711871                        ViewCellInterior *interior = dynamic_cast<ViewCellInterior *>(vc); 
    18721872                        ViewCellContainer::const_iterator it, it_end = interior->mChildren.end(); 
     1873 
    18731874                        for (it = interior->mChildren.begin(); it != it_end; ++ it) 
    18741875                        { 
  • GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellBsp.cpp

    r660 r666  
    20872087        BspNode *farChild = NULL; 
    20882088 
     2089        const float thresh = 1 ? 1e-6f : 0.0f; 
     2090 
    20892091        while (1)  
    20902092        { 
     
    20952097                        Plane3 splitPlane = in->GetPlane(); 
    20962098                         
    2097                         const int entSide = splitPlane.Side(entp); 
    2098                         const int extSide = splitPlane.Side(extp); 
     2099                        const int entSide = splitPlane.Side(entp, thresh); 
     2100                        const int extSide = splitPlane.Side(extp, thresh); 
    20992101 
    21002102                        if (entSide < 0)  
  • GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellBsp.h

    r656 r666  
    10131013}; 
    10141014 
     1015 
    10151016struct BspIntersection  
    10161017{ 
  • GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.cpp

    r664 r666  
    6666        environment->GetBoolValue("ViewCells.PostProcess.merge", mMergeViewCells); 
    6767        environment->GetBoolValue("ViewCells.evaluateViewCells", mEvaluateViewCells); 
    68  
     68        environment->GetBoolValue("ViewCells.showVisualization", mShowVisualization); 
     69         
    6970        char buf[100]; 
    7071        environment->GetStringValue("ViewCells.samplingType", buf); 
     
    7576        else if (strcmp(buf, "directional") == 0) 
    7677                mSamplingType = Preprocessor::DIRECTION_BASED_DISTRIBUTION; 
    77  
    78 #if 0 
    79         environment->GetStringValue("ViewCells.stats", buf); 
    80         mViewCellsStats.open(buf); 
    81 #endif 
     78        else  
     79        { 
     80                Debug << "error! wrong sampling type" << endl; 
     81                exit(0); 
     82        } 
    8283 
    8384        environment->GetStringValue("ViewCells.Visualization.colorCode", buf); 
     
    116117        Debug << "evaluate view cells: " << mEvaluateViewCells << endl; 
    117118        Debug << "sampling type: " << mSamplingType << endl; 
     119        Debug << "show visualization: " << mShowVisualization << endl; 
    118120 
    119121        Debug << endl; 
     
    208210 
    209211        // rays can be passed or deleted 
     212        if (0) // remove!! 
    210213        disposeRays(initialSamples, outRays); 
    211214         
     
    236239        const int n = mConstructionSamples; //+initialSamples; 
    237240 
    238         bool dirSamples = mSamplingType; 
     241        // should we use directional samples? 
     242        bool dirSamples = mSamplingType == Preprocessor::DIRECTION_BASED_DISTRIBUTION; 
    239243 
    240244        while (numSamples < n) 
     
    243247                VssRayContainer constructionSamples; 
    244248 
    245                 const int samplingType =  
    246                         dirSamples ?  
     249                const int samplingType = mSamplingType; 
     250/*                      dirSamples ?  
    247251                                                Preprocessor::DIRECTION_BASED_DISTRIBUTION : 
    248252                                                Preprocessor::SPATIAL_BOX_BASED_DISTRIBUTION; 
    249  
     253*/ 
    250254                if (0) 
    251                 dirSamples = !dirSamples; // toggle sampling method 
     255                        dirSamples = !dirSamples; // toggle sampling method 
    252256                numSamples += CastPassSamples(mSamplesPerPass,  
    253                                                                           mSamplingType, 
     257                                                                          samplingType, 
    254258                                                                          constructionSamples); 
    255259 
     
    294298 
    295299 
    296         // store viewCells for postprocessing 
     300        // store view cells for postprocessing 
    297301        const bool storeViewCells = true; 
    298302 
     
    306310 
    307311        //-- visualization 
    308         VssRayContainer visualizationSamples; 
    309  
    310         //-- construction rays => we use uniform samples for this 
    311         CastPassSamples(mVisualizationSamples, 
    312                                     Preprocessor::DIRECTION_BASED_DISTRIBUTION,  
    313                                         visualizationSamples); 
    314  
    315         if (SAMPLE_AFTER_SUBDIVISION) 
    316                 ComputeSampleContributions(visualizationSamples, true, storeViewCells); 
    317  
    318         // different visualizations 
    319         Visualize(preprocessor->mObjects, visualizationSamples); 
    320  
    321         disposeRays(visualizationSamples, outRays); 
     312        if (mShowVisualization) 
     313        { 
     314                VssRayContainer visualizationSamples; 
     315 
     316                //-- construction rays => we use uniform samples for this 
     317                CastPassSamples(mVisualizationSamples, 
     318                                            Preprocessor::DIRECTION_BASED_DISTRIBUTION,  
     319                                                visualizationSamples); 
     320 
     321                if (SAMPLE_AFTER_SUBDIVISION) 
     322                        ComputeSampleContributions(visualizationSamples, true, storeViewCells); 
     323 
     324                // different visualizations 
     325                Visualize(preprocessor->mObjects, visualizationSamples); 
     326 
     327                disposeRays(visualizationSamples, outRays); 
     328        } 
    322329 
    323330        if (mEvaluateViewCells) 
    324331        { 
    325                 Debug << "Evaluatating view cells!!!" << endl; 
    326         EvalViewCellPartition(preprocessor); 
    327         } 
    328         else 
    329                 Debug << "No evaluation!!" << endl; 
     332                EvalViewCellPartition(preprocessor); 
     333        } 
     334         
     335        ViewCellContainer leaves; 
     336        mViewCellsTree->CollectLeaves(mViewCellsTree->GetRoot(), leaves); 
     337        mViewCellsTree->ResetPvs(); 
     338        VssRayContainer dummyRays; 
     339        CastPassSamples(mInitialSamples, mSamplingType, dummyRays); 
     340         
     341        //ComputeSampleContributions(initialSamples, true, false); 
     342        ComputeSampleContributions(dummyRays, true, false); 
     343 
     344        ViewCellContainer::const_iterator it, it_end = leaves.end(); 
     345 
     346        for (it = leaves.begin(); it != it_end; ++ it) 
     347        { 
     348                mViewCellsTree->PropagatePvs(*it); 
     349        } 
     350 
     351        mViewCellsTree->ExportStats("dummy.log"); 
    330352 
    331353        return numSamples; 
     
    352374 
    353375        //VssRayContainer outRays; 
    354  
    355         int dirSamples = mSamplingType; 
    356  
    357         if (0) 
    358                 mViewCellsTree->ResetPvs(); 
     376        // should directional sampling be used? 
     377        bool dirSamples = mSamplingType == Preprocessor::DIRECTION_BASED_DISTRIBUTION; 
    359378 
    360379        cout << "Evaluating view cell partition" << endl; 
     
    363382        mViewCellsTree->CollectLeaves(mViewCellsTree->GetRoot(), leaves); 
    364383 
     384        bool startFromZero = true; 
     385 
     386        // reset pvs and start over from zero 
     387        if (startFromZero) 
     388        { 
     389                mViewCellsTree->ResetPvs(); 
     390        } 
     391        else // statistics without addidtional samples 
     392        { 
     393                cout << "compute new statistics ... "; 
     394                sprintf(s, "-%09d-eval.log", castSamples); 
     395                string fName = string(statsPrefix) + string(s); 
     396 
     397                mViewCellsTree->ExportStats(fName); 
     398                cout << "finished" << endl; 
     399        } 
     400         
     401 
    365402        while (castSamples < numSamples) 
    366403        { 
    367404                VssRayContainer evaluationSamples; 
    368405 
    369                 const int samplingType =  
    370                         dirSamples ?  
     406                const int samplingType = mSamplingType; 
     407                /*      dirSamples ?  
    371408                                                Preprocessor::DIRECTION_BASED_DISTRIBUTION : 
    372409                                                Preprocessor::SPATIAL_BOX_BASED_DISTRIBUTION; 
    373  
     410                */ 
    374411                //-- construction rays => we use uniform samples for this 
    375412                CastPassSamples(samplesPerPass, samplingType, evaluationSamples); 
     
    9871024                        // if ray not outside of view space 
    9881025                        float contribution; 
    989                         if (viewcell->GetPvs().GetSampleContribution(ray.mTerminationObject, 
     1026                        if (ray.mTerminationObject && 
     1027                                viewcell->GetPvs().GetSampleContribution(ray.mTerminationObject, 
    9901028                                                                                                                 ray.mPdf, 
    9911029                                                                                                                 contribution)) 
     
    9941032                                ray.mRelativePvsContribution += contribution; 
    9951033                        } 
     1034                        if (ray.mOriginObject &&  
     1035                                viewcell->GetPvs().GetSampleContribution(ray.mOriginObject, 
     1036                                                                                                                 ray.mPdf, 
     1037                                                                                                                 contribution)) 
     1038                        { 
     1039                                ++ ray.mPvsContribution; 
     1040                                ray.mRelativePvsContribution += contribution; 
     1041                        } 
    9961042                } 
    9971043        } 
     
    10071053                        { 
    10081054                                // if ray not outside of view space 
    1009                                 viewcell->GetPvs().AddSample(ray.mTerminationObject, ray.mPdf); 
     1055                                 if (ray.mTerminationObject) 
     1056                                         viewcell->GetPvs().AddSample(ray.mTerminationObject, ray.mPdf); 
     1057                                 if (ray.mOriginObject) 
     1058                                         viewcell->GetPvs().AddSample(ray.mOriginObject, ray.mPdf); 
    10101059                        } 
    10111060                } 
     
    12911340 
    12921341        // export statistics after merge 
    1293         if (0) 
    1294                 mViewCellsTree->ExportStats("mergeStats.log"); 
     1342        if (1) 
     1343        { 
     1344                char mstats[100]; 
     1345                environment->GetStringValue("ViewCells.mergeStats", mstats); 
     1346                mViewCellsTree->ExportStats(mstats); 
     1347        } 
    12951348 
    12961349        //-- stats and visualizations 
     
    21022155} 
    21032156 
     2157 
    21042158ViewCell *KdViewCellsManager::GenerateViewCell(Mesh *mesh) const 
    21052159{ 
     
    26082662        mMaxPvsSize = (int)(mMaxPvsRatio * (float)objects.size()); 
    26092663 
     2664        //TODO: remove 
     2665        if(0) 
    26102666        mVspBspTree->Construct(constructionRays, &mViewSpaceBox); 
    2611  
     2667        else 
     2668mVspBspTree->Construct(rays, &mViewSpaceBox); 
    26122669        // collapse invalid regions 
    26132670        cout << "collapsing invalid tree regions ... "; 
     
    26672724        } 
    26682725 
    2669         if (0) 
    2670                 mViewCellsTree->ExportStats("mergeStats.log"); 
     2726        if (1) 
     2727        { 
     2728                char mstats[100]; 
     2729                environment->GetStringValue("ViewCells.mergeStats", mstats); 
     2730                mViewCellsTree->ExportStats(mstats); 
     2731        } 
    26712732 
    26722733        //-- stats and visualizations 
  • GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.h

    r664 r666  
    480480 
    481481        bool mEvaluateViewCells; 
     482 
     483        bool mShowVisualization; 
    482484}; 
    483485 
  • GTP/trunk/Lib/Vis/Preprocessing/src/VspBspTree.cpp

    r665 r666  
    2323//-- static members 
    2424 
    25 /** Evaluates split plane classification with respect to the plane's 
    26         contribution for a minimum number of ray splits. 
    27 */ 
    28 const float VspBspTree::sLeastRaySplitsTable[] = {0, 0, 1, 1, 0}; 
    29 /** Evaluates split plane classification with respect to the plane's 
    30         contribution for  balanced rays. 
    31 */ 
    32 const float VspBspTree::sBalancedRaysTable[] = {1, -1, 0, 0, 0}; 
    33  
    3425 
    3526int VspBspTree::sFrontId = 0; 
     
    8778        environment->GetIntValue("VspBspTree.Termination.missTolerance", mTermMissTolerance); 
    8879        environment->GetIntValue("VspBspTree.Termination.maxViewCells", mMaxViewCells); 
     80 
    8981        //-- max cost ratio for early tree termination 
    9082        environment->GetFloatValue("VspBspTree.Termination.maxCostRatio", mTermMaxCostRatio); 
     
    9688 
    9789        //-- factors for bsp tree split plane heuristics 
    98         environment->GetFloatValue("VspBspTree.Factor.balancedRays", mBalancedRaysFactor); 
    9990        environment->GetFloatValue("VspBspTree.Factor.pvs", mPvsFactor); 
    10091        environment->GetFloatValue("VspBspTree.Termination.ct_div_ci", mCtDivCi); 
     
    124115        environment->GetBoolValue("VspBspTree.usePolygonSplitIfAvailable", mUsePolygonSplitIfAvailable); 
    125116 
    126         mSubdivisionStats.open("subdivisionStats.log"); 
    127  
    128117        environment->GetBoolValue("VspBspTree.useCostHeuristics", mUseCostHeuristics); 
    129118        environment->GetBoolValue("VspBspTree.useSplitCostQueue", mUseSplitCostQueue); 
    130119        environment->GetBoolValue("VspBspTree.simulateOctree", mSimulateOctree); 
    131120        environment->GetBoolValue("VspBspTree.useRandomAxis", mUseRandomAxis); 
    132         environment->GetBoolValue("VspBspTree.breathFirstSplits", mBreathFirstSplits); 
     121        environment->GetBoolValue("VspBspTree.useBreathFirstSplits", mBreathFirstSplits); 
    133122 
    134123        char subdivisionStatsLog[100]; 
    135         environment->GetStringValue("BspTree.subdivisionStats", subdivisionStatsLog); 
     124        environment->GetStringValue("VspBspTree.subdivisionStats", subdivisionStatsLog); 
    136125        mSubdivisionStats.open(subdivisionStatsLog); 
    137  
    138126 
    139127        //-- debug output 
     
    603591 
    604592        long startTime = GetTime();      
    605         int nLeaves = 0; 
    606         int nViewCells = 0; 
     593        int nLeaves = 500; 
     594        int nViewCells = 500; 
    607595 
    608596        // used for intermediate time measurements and progress 
     
    841829 
    842830        if (!LocalTerminationCriteriaMet(tData) && !GlobalTerminationCriteriaMet(tData)) 
    843         { 
     831        {        
    844832                PolygonContainer coincident; 
    845833 
     
    852840                                 
    853841                newNode = SubdivideNode(splitPlane, tData, tFrontData, tBackData, coincident); 
    854                  
     842         
    855843                const int splitAxis = splitCandidate.mSplitAxis; 
    856844                const int maxCostMisses = splitCandidate.mMaxCostMisses; 
     
    867855                tBackData.mMaxCostMisses = maxCostMisses; 
    868856                         
     857                 
    869858                if (1) 
    870859                { 
     
    887876                } 
    888877 
     878         
    889879                //-- push the new split candidates on the stack 
    890880                VspBspSplitCandidate frontCandidate; 
     
    896886                tQueue.push(frontCandidate); 
    897887                tQueue.push(backCandidate); 
    898  
     888         
    899889                // delete old leaf node 
    900890                DEL_PTR(tData.mNode); 
     
    962952        VspBspTraversalData backData; 
    963953 
    964         int splitAxis = 0; 
    965  
    966954        BspLeaf *leaf = dynamic_cast<BspLeaf *>(tData.mNode); 
    967955 
    968956        // compute locally best split plane 
    969957        bool success = SelectPlane(splitData.mSplitPlane, leaf, tData,  
    970                                                            frontData, backData, splitAxis); 
     958                                                           frontData, backData, splitData.mSplitAxis); 
    971959 
    972960        // TODO: reuse 
     
    29892977 
    29902978        float t; 
     2979        const float thresh = 1 ? 1e-6f : 0.0f; 
     2980 
    29912981        while (1) 
    29922982        { 
     
    29972987                        Plane3 splitPlane = in->GetPlane(); 
    29982988                         
    2999                         const int entSide = splitPlane.Side(entp); 
    3000                         const int extSide = splitPlane.Side(extp); 
     2989                        const int entSide = splitPlane.Side(entp, thresh); 
     2990                        const int extSide = splitPlane.Side(extp, thresh); 
    30012991 
    30022992                        if (entSide < 0)  
    30032993                        { 
    3004                           node = in->GetBack(); 
    3005                           // plane does not split ray => no far child 
    3006                           if (extSide <= 0)  
    3007                                 continue; 
    3008                            
    3009                           farChild = in->GetFront(); // plane splits ray 
     2994                                node = in->GetBack(); 
     2995                                 
     2996                                // plane does not split ray => no far child 
     2997                                if (extSide <= 0)  
     2998                                        continue; 
     2999   
     3000                                farChild = in->GetFront(); // plane splits ray 
    30103001                        }  
    30113002                        else if (entSide > 0) 
    30123003                        { 
    3013                           node = in->GetFront(); 
    3014  
    3015                           if (extSide >= 0) // plane does not split ray => no far child 
    3016                                 continue; 
     3004                                node = in->GetFront(); 
     3005 
     3006                                if (extSide >= 0) // plane does not split ray => no far child 
     3007                                        continue; 
    30173008 
    30183009                                farChild = in->GetBack(); // plane splits ray 
    30193010                        } 
    3020                         else // ray end point on plane 
     3011                        else // one of the ray end points on the plane 
    30213012                        {       // NOTE: what to do if ray is coincident with plane? 
    30223013                                if (extSide < 0) 
     
    30383029                        // reached leaf => intersection with view cell 
    30393030                        BspLeaf *leaf = dynamic_cast<BspLeaf *>(node); 
    3040  
    3041                         ViewCell *viewCell = mViewCellsTree->GetActiveViewCell(leaf->GetViewCell()); 
     3031                        ViewCell *viewCell; 
     3032                         
     3033                        viewCell = mViewCellsTree->GetActiveViewCell(leaf->GetViewCell()); 
     3034                        //viewCell = leaf->GetViewCell(); 
     3035 
    30423036                        if (!viewCell->Mailed()) 
    30433037                        { 
  • GTP/trunk/Lib/Vis/Preprocessing/src/VspBspTree.h

    r664 r666  
    799799private: 
    800800 
    801  
    802         static const float sLeastRaySplitsTable[5]; 
    803         /** Evaluates split plane classification with respect to the plane's  
    804                 contribution for balanced rays. 
    805         */ 
    806         static const float sBalancedRaysTable[5]; 
    807  
    808801        /// Generates unique ids for PVS criterium 
    809802        static void GenerateUniqueIdsForPvs(); 
Note: See TracChangeset for help on using the changeset viewer.