Ignore:
Timestamp:
03/22/06 14:15:07 (18 years ago)
Author:
bittner
Message:

visibility filter used in glrenderer

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/Preprocessing/src/GlRenderer.cpp

    r685 r713  
    301301 
    302302float 
    303 GlRendererBuffer::GetPixelError() 
     303GlRendererBuffer::GetPixelError(int &pvsSize) 
    304304{ 
    305305  float pErrorPixels = -1.0f; 
    306  
     306   
    307307  glReadBuffer(GL_BACK); 
    308308   
     
    351351         
    352352 
    353   ViewCell *viewcell = mViewCellsManager->GetViewCell(mViewPoint); 
    354          
     353  ViewCell *viewcell = NULL; 
     354   
     355  PrVs prvs; 
     356  //  mViewCellsManager->SetMaxFilterSize(1); 
     357  mViewCellsManager->GetPrVS(mViewPoint, prvs); 
     358  viewcell = prvs.mViewCell; 
     359   
     360  //  ViewCell *viewcell = mViewCellsManager->GetViewCell(mViewPoint); 
     361  pvsSize = 0; 
    355362  if (viewcell) { 
    356363        SetupCamera(); 
     
    363370          PvsData<Intersectable *>, 
    364371          LtSample<Intersectable *> >::const_iterator it = viewcell->GetPvs().mEntries.begin(); 
     372 
     373        pvsSize = viewcell->GetPvs().mEntries.size(); 
    365374         
    366375        for (; it != viewcell->GetPvs().mEntries.end(); ++ it) { 
     
    436445        glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); 
    437446  } 
     447 
     448  if (viewcell) 
     449        mViewCellsManager->DeleteLocalMergeTree(viewcell); 
    438450   
    439451  return pErrorPixels; 
     
    487499        RenderIntersectable(*oi); 
    488500 
    489   ViewCell *viewcell = mViewCellsManager->GetViewCell(mViewPoint); 
     501  ViewCell *viewcell; 
     502  //  viewcell = mViewCellsManager->GetViewCell(mViewPoint); 
     503 
     504  PrVs prvs; 
     505  //  mViewCellsManager->SetMaxFilterSize(1); 
     506  mViewCellsManager->GetPrVS(mViewPoint, prvs); 
     507  viewcell = prvs.mViewCell; 
    490508   
    491509  QImage im1, im2; 
     
    587605  glDisable(GL_CLIP_PLANE0); 
    588606 
     607  if (viewcell) 
     608        mViewCellsManager->DeleteLocalMergeTree(viewcell); 
     609 
    589610  return pErrorPixels; 
    590611} 
     
    615636{ 
    616637  for (int i=0; i < mPvsStatFrames; i++) { 
    617         mPvsErrorBuffer[i] = 1.0f; 
     638        mPvsErrorBuffer[i].mError = 1.0f; 
    618639  } 
    619640} 
     
    646667        } 
    647668#endif 
    648         if (mPvsErrorBuffer[i] > 0.0f) { 
    649           mPvsErrorBuffer[i] = GetPixelError(); 
    650           cout<<"("<<i<<","<<mPvsErrorBuffer[i]<<")"; 
     669        if (mPvsErrorBuffer[i].mError > 0.0f) { 
     670          int pvsSize; 
     671          float error = GetPixelError(pvsSize); 
     672          mPvsErrorBuffer[i].mError = error; 
     673          mPvsErrorBuffer[i].mPvsSize = pvsSize; 
     674 
     675          cout<<"("<<i<<","<<mPvsErrorBuffer[i].mError<<")"; 
    651676          //      swapBuffers(); 
    652677        } 
    653678         
    654         err = mPvsErrorBuffer[i]; 
     679        err = mPvsErrorBuffer[i].mError; 
    655680         
    656681        if (err >= 0.0f) { 
     
    658683                mPvsStat.maxError = err; 
    659684          mPvsStat.sumError += err; 
     685          mPvsStat.sumPvsSize += mPvsErrorBuffer[i].mPvsSize; 
     686           
    660687          if (err == 0.0f) 
    661688                mPvsStat.errorFreeFrames++; 
     
    820847  vl = new QVBoxLayout; 
    821848  vbox->setLayout(vl); 
    822    
     849 
     850  QLabel *label = new QLabel("Granularity"); 
     851  vbox->layout()->addWidget(label); 
     852 
    823853  QSlider *slider = new QSlider(Qt::Horizontal, vbox); 
    824854  vl->addWidget(slider); 
    825855  slider->show(); 
    826   slider->setRange(1, 5000); 
     856  slider->setRange(1, 200); 
    827857  slider->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); 
    828   slider->setValue(500); 
     858  slider->setValue(200); 
    829859 
    830860  connect(slider, SIGNAL(valueChanged(int)), SIGNAL(SetViewCellGranularity(int))); 
     861 
     862  label = new QLabel("Filter size"); 
     863  vbox->layout()->addWidget(label); 
     864   
     865  slider = new QSlider(Qt::Horizontal, vbox); 
     866  vbox->layout()->addWidget(slider); 
     867  slider->show(); 
     868  slider->setRange(1, 100); 
     869  slider->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); 
     870  slider->setValue(3); 
     871   
     872  connect(slider, SIGNAL(valueChanged(int)), SIGNAL(SetVisibilityFilterSize(int))); 
    831873 
    832874 
     
    881923  connect(slider, SIGNAL(valueChanged(int)), SIGNAL(SetTopDistance(int))); 
    882924 
     925 
     926 
     927   
    883928  cb = new QCheckBox("Top View", vbox); 
    884929  vbox->layout()->addWidget(cb); 
     
    886931  connect(cb, SIGNAL(toggled(bool)), SIGNAL(SetTopView(bool))); 
    887932   
    888  
     933  setWindowTitle("Preprocessor Control Widget"); 
    889934  adjustSize(); 
    890935} 
     
    910955  connect(cw, SIGNAL(SetSceneCut(int)), this, SLOT(SetSceneCut(int))); 
    911956  connect(cw, SIGNAL(SetTopDistance(int)), this, SLOT(SetTopDistance(int))); 
     957 
     958  //connect(cw, SIGNAL(SetViewCellGranularity(int)), this, SLOT(SetMaxFilterSize(int))); 
     959  //  connect(cw, SIGNAL(SetVisibilityFilterSize(int)), this, SLOT(SetVisibilityFilterSize(int))); 
     960  //connect(cw, SIGNAL(SetVisibilityFilterSize(int)), this, SLOT(SetViewCellGranularity(int))); 
     961 
    912962  connect(cw, SIGNAL(SetShowViewCells(bool)), this, SLOT(SetShowViewCells(bool))); 
    913963  connect(cw, SIGNAL(SetTopView(bool)), this, SLOT(SetTopView(bool))); 
     
    921971GlRendererWidget::SetViewCellGranularity(int number) 
    922972{ 
    923   mViewCellsManager->CollectViewCells(number); 
     973  if (mViewCellsManager)  
     974        mViewCellsManager->SetMaxFilterSize(number); 
     975  //  mViewCellsManager->CollectViewCells(number); 
     976  updateGL(); 
     977} 
     978 
     979void 
     980GlRendererWidget::SetVisibilityFilterSize(int number) 
     981{ 
     982  if (mViewCellsManager)  
     983        mViewCellsManager->SetMaxFilterSize(number); 
    924984  updateGL(); 
    925985} 
Note: See TracChangeset for help on using the changeset viewer.