Ignore:
Timestamp:
Sep 21, 2011, 2:27:44 PM (13 years ago)
Author:
gah
Message:

update from trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/blt4/packages/vizservers/vtkvis/RpStreamlines.cpp

    r2409 r2542  
    3636    _lineType(LINES),
    3737    _colorMode(COLOR_BY_VECTOR_MAGNITUDE),
    38     _seedVisible(true)
     38    _colorMap(NULL),
     39    _seedVisible(true),
     40    _dataScale(1)
    3941{
    4042    _faceCulling = true;
     
    5153Streamlines::~Streamlines()
    5254{
     55}
     56
     57void Streamlines::setDataSet(DataSet *dataSet,
     58                             bool useCumulative,
     59                             double scalarRange[2],
     60                             double vectorMagnitudeRange[2],
     61                             double vectorComponentRange[3][2])
     62{
     63    if (_dataSet != dataSet) {
     64        _dataSet = dataSet;
     65
     66        if (useCumulative) {
     67            _dataRange[0] = scalarRange[0];
     68            _dataRange[1] = scalarRange[1];
     69            _vectorMagnitudeRange[0] = vectorMagnitudeRange[0];
     70            _vectorMagnitudeRange[1] = vectorMagnitudeRange[1];
     71            for (int i = 0; i < 3; i++) {
     72                _vectorComponentRange[i][0] = vectorComponentRange[i][0];
     73                _vectorComponentRange[i][1] = vectorComponentRange[i][1];
     74            }
     75        } else {
     76            _dataSet->getScalarRange(_dataRange);
     77            _dataSet->getVectorRange(_vectorMagnitudeRange);
     78            for (int i = 0; i < 3; i++) {
     79                _dataSet->getVectorRange(_vectorComponentRange[i], i);
     80            }
     81        }
     82
     83        update();
     84    }
    5385}
    5486
     
    96128        _seedActor->GetProperty()->SetRepresentationToWireframe();
    97129        _seedActor->GetProperty()->LightingOff();
     130        setSeedVisibility(_seedVisible);
    98131    }
    99132    if (_prop == NULL) {
     
    201234
    202235    vtkDataSet *ds = _dataSet->getVtkDataSet();
    203     double dataRange[2];
    204     _dataSet->getVectorMagnitudeRange(dataRange);
     236
    205237    double bounds[6];
    206238    _dataSet->getBounds(bounds);
     
    215247        maxBound = bounds[5] - bounds[4];
    216248    }
     249
     250    double cellSizeRange[2];
     251    double avgSize;
     252    _dataSet->getCellSizeRange(cellSizeRange, &avgSize);
     253    _dataScale = avgSize / 8.;
    217254
    218255    vtkSmartPointer<vtkCellDataToPointData> cellToPtData;
     
    294331    _seedActor->SetMapper(_seedMapper);
    295332
    296     _lut = vtkSmartPointer<vtkLookupTable>::New();
    297     _lut->SetRange(dataRange);
    298     _lut->SetVectorModeToMagnitude();
    299 
    300     _pdMapper->SetScalarModeToUsePointFieldData();
    301     if (ds->GetPointData() != NULL &&
    302         ds->GetPointData()->GetVectors() != NULL) {
    303         TRACE("Vector name: '%s'", ds->GetPointData()->GetVectors()->GetName());
    304         _pdMapper->SelectColorArray(ds->GetPointData()->GetVectors()->GetName());
    305     }
    306     _pdMapper->SetColorModeToMapScalars();
    307     _pdMapper->UseLookupTableScalarRangeOn();
    308     _pdMapper->SetLookupTable(_lut);
     333    if (_lut == NULL) {
     334        setColorMap(ColorMap::getDefault());
     335    }
     336
     337    setColorMode(_colorMode);
    309338
    310339    _linesActor->SetMapper(_pdMapper);
     
    724753            numSides = 3;
    725754        tubeFilter->SetNumberOfSides(numSides);
    726         tubeFilter->SetRadius(radius);
     755        tubeFilter->SetRadius(_dataScale * radius);
    727756        _pdMapper->SetInputConnection(_lineFilter->GetOutputPort());
    728757        if (_faceCulling && _opacity == 1.0)
     
    749778        }
    750779        vtkRibbonFilter *ribbonFilter = vtkRibbonFilter::SafeDownCast(_lineFilter);
    751         ribbonFilter->SetWidth(width);
     780        ribbonFilter->SetWidth(_dataScale * width);
    752781        ribbonFilter->SetAngle(angle);
    753782        ribbonFilter->UseDefaultNormalOn();
     
    759788}
    760789
     790void Streamlines::updateRanges(bool useCumulative,
     791                               double scalarRange[2],
     792                               double vectorMagnitudeRange[2],
     793                               double vectorComponentRange[3][2])
     794{
     795    if (useCumulative) {
     796        _dataRange[0] = scalarRange[0];
     797        _dataRange[1] = scalarRange[1];
     798        _vectorMagnitudeRange[0] = vectorMagnitudeRange[0];
     799        _vectorMagnitudeRange[1] = vectorMagnitudeRange[1];
     800        for (int i = 0; i < 3; i++) {
     801            _vectorComponentRange[i][0] = vectorComponentRange[i][0];
     802            _vectorComponentRange[i][1] = vectorComponentRange[i][1];
     803        }
     804    } else {
     805        _dataSet->getScalarRange(_dataRange);
     806        _dataSet->getVectorRange(_vectorMagnitudeRange);
     807        for (int i = 0; i < 3; i++) {
     808            _dataSet->getVectorRange(_vectorComponentRange[i], i);
     809        }
     810    }
     811
     812    // Need to update color map ranges and/or active vector field
     813    setColorMode(_colorMode);
     814}
     815
    761816void Streamlines::setColorMode(ColorMode mode)
    762817{
     
    772827        _pdMapper->SetScalarModeToDefault();
    773828        if (_lut != NULL) {
    774             double dataRange[2];
    775             _dataSet->getDataRange(dataRange);
    776             _lut->SetRange(dataRange);
     829            _lut->SetRange(_dataRange);
    777830        }
    778831    }
     
    786839        }
    787840        if (_lut != NULL) {
    788             double dataRange[2];
    789             _dataSet->getVectorMagnitudeRange(dataRange);
    790             TRACE("vmag range: %g %g", dataRange[0], dataRange[1]);
    791             _lut->SetRange(dataRange);
     841            _lut->SetRange(_vectorMagnitudeRange);
    792842            _lut->SetVectorModeToMagnitude();
    793843        }
     
    802852        }
    803853        if (_lut != NULL) {
    804             double dataRange[2];
    805             _dataSet->getVectorComponentRange(dataRange, 0);
    806             _lut->SetRange(dataRange);
     854            _lut->SetRange(_vectorComponentRange[0]);
    807855            _lut->SetVectorModeToComponent();
    808856            _lut->SetVectorComponent(0);
     
    817865        }
    818866        if (_lut != NULL) {
    819             double dataRange[2];
    820             _dataSet->getVectorComponentRange(dataRange, 1);
    821             _lut->SetRange(dataRange);
     867            _lut->SetRange(_vectorComponentRange[1]);
    822868            _lut->SetVectorModeToComponent();
    823869            _lut->SetVectorComponent(1);
     
    832878        }
    833879        if (_lut != NULL) {
    834             double dataRange[2];
    835             _dataSet->getVectorComponentRange(dataRange, 2);
    836             TRACE("vz range: %g %g", dataRange[0], dataRange[1]);
    837             _lut->SetRange(dataRange);
     880            _lut->SetRange(_vectorComponentRange[2]);
    838881            _lut->SetVectorModeToComponent();
    839882            _lut->SetVectorComponent(2);
     
    848891
    849892/**
    850  * \brief Get the VTK colormap lookup table in use
    851  */
    852 vtkLookupTable *Streamlines::getLookupTable()
    853 { 
    854     return _lut;
     893 * \brief Called when the color map has been edited
     894 */
     895void Streamlines::updateColorMap()
     896{
     897    setColorMap(_colorMap);
    855898}
    856899
     
    858901 * \brief Associate a colormap lookup table with the DataSet
    859902 */
    860 void Streamlines::setLookupTable(vtkLookupTable *lut)
    861 {
    862     if (lut == NULL) {
     903void Streamlines::setColorMap(ColorMap *cmap)
     904{
     905    if (cmap == NULL)
     906        return;
     907
     908    _colorMap = cmap;
     909 
     910    if (_lut == NULL) {
    863911        _lut = vtkSmartPointer<vtkLookupTable>::New();
    864     } else {
    865         _lut = lut;
    866     }
     912        if (_pdMapper != NULL) {
     913            _pdMapper->UseLookupTableScalarRangeOn();
     914            _pdMapper->SetLookupTable(_lut);
     915        }
     916    }
     917
     918    _lut->DeepCopy(cmap->getLookupTable());
    867919
    868920    switch (_colorMode) {
    869     case COLOR_BY_VECTOR_MAGNITUDE: {
    870         double dataRange[2];
    871         _dataSet->getVectorMagnitudeRange(dataRange);
     921    case COLOR_CONSTANT:
     922    case COLOR_BY_SCALAR:
     923        _lut->SetRange(_dataRange);
     924        break;
     925    case COLOR_BY_VECTOR_MAGNITUDE:
    872926        _lut->SetVectorModeToMagnitude();
    873         _lut->SetRange(dataRange);
    874     }
    875         break;
    876     case COLOR_BY_VECTOR_X: {
    877         double dataRange[2];
    878         _dataSet->getVectorComponentRange(dataRange, 0);
     927        _lut->SetRange(_vectorMagnitudeRange);
     928        break;
     929    case COLOR_BY_VECTOR_X:
    879930        _lut->SetVectorModeToComponent();
    880931        _lut->SetVectorComponent(0);
    881         _lut->SetRange(dataRange);
    882     }
    883         break;
    884     case COLOR_BY_VECTOR_Y: {
    885         double dataRange[2];
    886         _dataSet->getVectorComponentRange(dataRange, 1);
     932        _lut->SetRange(_vectorComponentRange[0]);
     933        break;
     934    case COLOR_BY_VECTOR_Y:
    887935        _lut->SetVectorModeToComponent();
    888936        _lut->SetVectorComponent(1);
    889         _lut->SetRange(dataRange);
    890     }
    891         break;
    892     case COLOR_BY_VECTOR_Z: {
    893         double dataRange[2];
    894         _dataSet->getVectorComponentRange(dataRange, 2);
     937        _lut->SetRange(_vectorComponentRange[1]);
     938        break;
     939    case COLOR_BY_VECTOR_Z:
    895940        _lut->SetVectorModeToComponent();
    896941        _lut->SetVectorComponent(2);
    897         _lut->SetRange(dataRange);
    898     }
     942        _lut->SetRange(_vectorComponentRange[2]);
    899943        break;
    900944    default:
    901945         break;
    902     }
    903 
    904     if (_pdMapper != NULL) {
    905         _pdMapper->SetLookupTable(_lut);
    906946    }
    907947}
Note: See TracChangeset for help on using the changeset viewer.