Ignore:
Timestamp:
07/18/05 17:59:54 (19 years ago)
Author:
mattausch
Message:

removed compiler errors

File:
1 edited

Legend:

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

    r177 r179  
    7373    int passSampleContributions = 0; 
    7474    int passSamples = 0; 
    75      
     75        int index = 0; 
     76    KdNode *visibleNode = NULL; 
     77 
    7678    for (i =0; i < objects.size(); i++) { 
    7779      KdNode *nodeToSample = NULL; 
     
    8082      int pvsSize = object->mKdPvs.GetSize(); 
    8183       
    82       if (0 && pvsSize) { 
    83         // mail all nodes from the pvs 
    84         Intersectable::NewMail(); 
    85         KdPvsMap::iterator i = object->mKdPvs.mEntries.begin(); 
    86         for (; i != object->mKdPvs.mEntries.end(); i++) { 
    87           KdNode *node = (*i).first; 
    88           node->Mail(); 
     84    if (0 && pvsSize) { 
     85                // mail all nodes from the pvs 
     86                Intersectable::NewMail(); 
     87                KdPvsMap::iterator i = object->mKdPvs.mEntries.begin(); 
     88                for (; i != object->mKdPvs.mEntries.end(); i++) { 
     89                        KdNode *node = (*i).first; 
     90                        node->Mail(); 
     91                } 
     92                int maxTries = 2*pvsSize; 
     93         
     94                for (int tries = 0; tries < 10; tries++) { 
     95                        index = RandomValue(0, pvsSize - 1); 
     96                        KdPvsData data; 
     97                        object->mKdPvs.GetData(index, visibleNode, data); 
     98                        nodeToSample = mKdTree->FindRandomNeighbor(visibleNode, true); 
     99                        if (nodeToSample) 
     100                        break; 
     101                } 
    89102        } 
    90         int maxTries = 2*pvsSize; 
    91         for (int tries = 0; tries < 10; tries++) { 
    92           int index = RandomValue(0, pvsSize - 1); 
    93           KdPvsData data; 
    94           KdNode *visibleNode; 
    95           object->mKdPvs.GetData(index, visibleNode, data); 
    96           nodeToSample = mKdTree->FindRandomNeighbor(visibleNode, true); 
    97           if (nodeToSample) 
    98             break; 
    99         } 
     103 
     104    if (pvsSize) { 
     105                // mail all nodes from the pvs 
     106                Intersectable::NewMail(); 
     107                KdPvsMap::iterator i = object->mKdPvs.mEntries.begin(); 
     108                for (; i != object->mKdPvs.mEntries.end(); i++) { 
     109                        KdNode *node = (*i).first; 
     110                        node->Mail(); 
     111                } 
     112         
     113                vector<KdNode *> invisibleNeighbors; 
     114                // get all neighbors of all PVS nodes 
     115                i = object->mKdPvs.mEntries.begin(); 
     116                for (; i != object->mKdPvs.mEntries.end(); i++) { 
     117                        KdNode *node = (*i).first; 
     118                        mKdTree->FindNeighbors(visibleNode, invisibleNeighbors, true); 
     119                } 
     120 
     121                KdPvsData data; 
     122                KdNode *visibleNode; 
     123                object->mKdPvs.GetData(index, visibleNode, data); 
     124                nodeToSample = mKdTree->FindRandomNeighbor(visibleNode, true); 
     125                if (nodeToSample) 
     126                        break; 
    100127      } 
    101  
    102       if (pvsSize) { 
    103         // mail all nodes from the pvs 
    104         Intersectable::NewMail(); 
    105         KdPvsMap::iterator i = object->mKdPvs.mEntries.begin(); 
    106         for (; i != object->mKdPvs.mEntries.end(); i++) { 
    107           KdNode *node = (*i).first; 
    108           node->Mail(); 
    109         } 
    110         vector<KdNode *> invisibleNeighbors; 
    111         // get all neighbors of all PVS nodes 
    112         KdPvsMap::iterator i = object->mKdPvs.mEntries.begin(); 
    113         for (; i != object->mKdPvs.mEntries.end(); i++) { 
    114           KdNode *node = (*i).first; 
    115           mKdTree->FindNeighbors(visibleNode, invisibleNeighbors, true); 
    116         } 
    117  
    118         KdPvsData data; 
    119         KdNode *visibleNode; 
    120         object->mKdPvs.GetData(index, visibleNode, data); 
    121         nodeToSample = mKdTree->FindRandomNeighbor(visibleNode, true); 
    122         if (nodeToSample) 
    123           break; 
    124       } 
    125128       
    126129 
    127130      for (int k=0; k < mSamplesPerPass; k++) { 
    128         object->GetRandomSurfacePoint(point, normal); 
    129         if (nodeToSample) { 
    130           int maxTries = 5; 
    131           for (int tries = 0; tries < maxTries; tries++) { 
    132             direction = mKdTree->GetBox(nodeToSample).GetRandomPoint() - point; 
    133             if (DotProd(direction, normal) > Limits::Small) 
    134               break; 
    135           } 
    136           if (tries == maxTries) 
    137             direction = UniformRandomVector(normal); 
    138         } else 
    139           direction = UniformRandomVector(normal); 
    140          
    141         // construct a ray 
    142         SetupRay(ray, point, direction); 
    143         mKdTree->CastRay(ray); 
    144  
    145         if (i < pvsOut) 
    146           rays[i].push_back(ray); 
    147          
    148         int sampleContributions = 0; 
    149          
    150         if (ray.leaves.size()) { 
    151           sampleContributions += AddNodeSamples(object, ray); 
     131                  object->GetRandomSurfacePoint(point, normal); 
     132                  if (nodeToSample) { 
     133                          int maxTries = 5; 
     134                          for (int tries = 0; tries < maxTries; tries++) { 
     135                                  direction = mKdTree->GetBox(nodeToSample).GetRandomPoint() - point; 
     136                                  if (DotProd(direction, normal) > Limits::Small) 
     137                                        break; 
     138                          } 
     139                 
     140                          if (tries == maxTries) 
     141                                  direction = UniformRandomVector(normal); 
     142                  } else 
     143                          direction = UniformRandomVector(normal); 
     144         
     145                  // construct a ray 
     146                  SetupRay(ray, point, direction); 
     147                  mKdTree->CastRay(ray); 
     148 
     149                  if (i < pvsOut) 
     150                          rays[i].push_back(ray); 
     151         
     152                  int sampleContributions = 0; 
     153         
     154                   
     155                  if (ray.leaves.size()) { 
     156                          sampleContributions += AddNodeSamples(object, ray); 
    152157           
    153           if (ray.intersections.size()) { 
    154             sampleContributions += AddNodeSamples(ray.intersections[0].mObject, ray); 
    155             // check whether we can add this to the rays 
    156             for (int j = 0; j < pvsOut; j++) { 
    157               if (objects[j] == ray.intersections[0].mObject) { 
    158                 rays[j].push_back(ray); 
    159               } 
    160             } 
    161           } 
    162           passSamples++; 
    163           if (sampleContributions) { 
    164             passContributingSamples++; 
    165             passSampleContributions += sampleContributions; 
     158                          if (ray.intersections.size()) { 
     159                                  sampleContributions += AddNodeSamples(ray.intersections[0].mObject, ray); 
     160                                  // check whether we can add this to the rays 
     161                                  for (int j = 0; j < pvsOut; j++) { 
     162                                          if (objects[j] == ray.intersections[0].mObject) { 
     163                                                  rays[j].push_back(ray); 
     164                                          } 
     165                                  } 
     166                          } 
     167                 
     168                          passSamples++; 
     169                         
     170                          if (sampleContributions) { 
     171                                  passContributingSamples++; 
     172                                  passSampleContributions += sampleContributions; 
     173                          } 
     174                  } 
    166175          } 
    167176        } 
    168       } 
    169     } 
    170177    totalSamples += passSamples; 
    171178    pass++; 
Note: See TracChangeset for help on using the changeset viewer.