Ignore:
Timestamp:
11/07/05 23:17:14 (19 years ago)
Author:
bittner
Message:

vss preprocessor updates

File:
1 edited

Legend:

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

    r386 r387  
    7676         
    7777        if (mKdTree->CastRay(ray)) { 
     78                 
    7879                objectB = ray.intersections[0].mObject; 
    7980          pointB = ray.Extrap(ray.intersections[0].mT); 
     81 
    8082        } else { 
    8183                objectB = NULL; 
     
    9294        VssRay *vssRay  = NULL; 
    9395 
    94         if (objectA) { 
    95                 vssRay = new VssRay(pointB, 
    96                                                                                                 pointA, 
    97                                                                                                 objectB, 
    98                                                                                                 objectA); 
    99                 mVssRays.push_back(vssRay); 
    100                 hits ++; 
    101         } 
    102          
    103         if (objectB) { 
    104                 vssRay = new VssRay(pointA, 
    105                                                                                                 pointB, 
    106                                                                                                 objectA, 
    107                                                                                                 objectB); 
    108                 mVssRays.push_back(vssRay); 
    109                 hits ++; 
    110  
     96        bool validSample = true; 
     97        if (detectEmptyViewSpace) { 
     98                if (Distance(pointA, pointB) < 
     99                                Distance(viewPoint, pointA) + Distance(viewPoint, pointB) - Limits::Small) { 
     100                        validSample = false; 
     101                } 
     102        } 
     103         
     104        if (validSample) { 
     105                if (objectA) { 
     106                        vssRay = new VssRay(pointB, 
     107                                                                                                        pointA, 
     108                                                                                                        objectB, 
     109                                                                                                        objectA); 
     110                        mVssRays.push_back(vssRay); 
     111                        hits ++; 
     112                } 
     113                 
     114                if (objectB) { 
     115                        vssRay = new VssRay(pointA, 
     116                                                                                                        pointB, 
     117                                                                                                        objectA, 
     118                                                                                                        objectB); 
     119                        mVssRays.push_back(vssRay); 
     120                        hits ++; 
     121                } 
    111122        } 
    112123         
     
    122133        if (viewSpaceBox) 
    123134                box =*viewSpaceBox; 
    124         else 
     135        else  
    125136                box = mKdTree->GetBox(); 
    126137         
     
    146157   
    147158  mSceneGraph->CollectObjects(&mObjects); 
    148         cout<<"#NUM_OBJECTS (Total numner of objects)\n"<<mObjects.size()<<endl; 
    149159         
    150160  long startTime = GetTime(); 
     
    155165 
    156166        AxisAlignedBox3 box = mKdTree->GetBox(); 
    157         box.Enlarge(box.Size()*-Vector3(0.45, 0.45, 0.45)); 
    158  
    159         bool useViewSpaceBox = false; 
     167 
     168         
     169        if (1) 
     170                box.Enlarge(box.Size()*-Vector3(0.45, 0.45, 0.45)); 
     171        else { 
     172                // sample city like heights 
     173                box.SetMin(1, box.Min(1) + box.Size(1)*0.1); 
     174                box.SetMax(1, box.Min(1) + box.Size(1)*0.2); 
     175        } 
     176         
     177        bool useViewSpaceBox = true; 
    160178        if (useViewSpaceBox) 
    161179                viewSpaceBox = &box; 
     
    243261        vssTree->Construct(mVssRays, viewSpaceBox); 
    244262 
     263        cout<<"VssTree root PVS size = "<<vssTree->GetRootPvsSize()<<endl; 
    245264         
    246265 
Note: See TracChangeset for help on using the changeset viewer.