Changeset 4234


Ignore:
Timestamp:
Mar 11, 2014 11:24:01 AM (10 years ago)
Author:
ldelgass
Message:

merge r3978:3983 from trunk

Location:
branches/1.3
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • branches/1.3

  • branches/1.3/packages/vizservers/vtkvis/ColorMap.cpp

    r4233 r4234  
    3737}
    3838
     39ColorMap::ColorMap(const ColorMap& other) :
     40    _name(other._name),
     41    _controlPoints(other._controlPoints),
     42    _opacityControlPoints(other._opacityControlPoints),
     43    _needsBuild(other._needsBuild),
     44    _numTableEntries(other._numTableEntries)
     45{
     46    _colorTF = vtkSmartPointer<vtkColorTransferFunction>::New();
     47    _colorTF->ClampingOn();
     48    _opacityTF = vtkSmartPointer<vtkPiecewiseFunction>::New();
     49    _opacityTF->ClampingOn();
     50    _colorTF->DeepCopy(other._colorTF);
     51    _opacityTF->DeepCopy(other._opacityTF);
     52    if (other._lookupTable != NULL) {
     53        _lookupTable = vtkSmartPointer<vtkLookupTable>::New();
     54        _lookupTable->DeepCopy(other._lookupTable);
     55    }
     56}
     57
     58ColorMap& ColorMap::operator=(const ColorMap& other)
     59{
     60    if (&other != this) {
     61        _name = other._name;
     62        _controlPoints = other._controlPoints;
     63        _opacityControlPoints = other._opacityControlPoints;
     64        _needsBuild = other._needsBuild;
     65        _numTableEntries = other._numTableEntries;
     66        _colorTF->DeepCopy(other._colorTF);
     67        _opacityTF->DeepCopy(other._opacityTF);
     68        if (other._lookupTable != NULL) {
     69            _lookupTable = vtkSmartPointer<vtkLookupTable>::New();
     70            _lookupTable->DeepCopy(other._lookupTable);
     71        }
     72    }
     73    return *this;
     74}
     75
    3976ColorMap::~ColorMap()
    4077{
     
    70107    for (int i = 0; i < _colorTF->GetSize(); i++) {
    71108        _colorTF->GetNodeValue(i, tmp);
     109        //TRACE("Norm: %d: %g %g,%g,%g", i, tmp[0], tmp[1], tmp[2], tmp[3]);
    72110        tmp[0] = range[0] + tmp[0] * (range[1] - range[0]);
    73111        tf->AddRGBPoint(tmp[0], tmp[1], tmp[2], tmp[3], tmp[4], tmp[5]);
     112        //TRACE("New : %d: %g %g,%g,%g", i, tmp[0], tmp[1], tmp[2], tmp[3]);
    74113    }
    75114    return tf;
     
    81120 */
    82121vtkSmartPointer<vtkPiecewiseFunction>
    83 ColorMap::getOpacityTransferFunction(double range[2])
     122ColorMap::getOpacityTransferFunction(double range[2], double opacityScale)
    84123{
    85124    vtkSmartPointer<vtkPiecewiseFunction> tf = vtkSmartPointer<vtkPiecewiseFunction>::New();
     
    87126    for (int i = 0; i < _opacityTF->GetSize(); i++) {
    88127        _opacityTF->GetNodeValue(i, tmp);
     128        //TRACE("Norm: %d: %g %g", i, tmp[0], tmp[1]);
    89129        tmp[0] = range[0] + tmp[0] * (range[1] - range[0]);
     130        if (opacityScale < 1.0) {
     131            tmp[1] *= opacityScale;
     132        }
    90133        tf->AddPoint(tmp[0], tmp[1], tmp[2], tmp[3]);
     134        //TRACE("New : %d: %g %g", i, tmp[0], tmp[1]);
    91135    }
    92136    return tf;
     
    106150
    107151#ifdef DEBUG
    108     TRACE("New control point: %g  = %g %g %g",
     152    TRACE("New control point: %g = %g %g %g",
    109153          cp.value, cp.color[0], cp.color[1], cp.color[2]);
    110154#endif
     
    137181
    138182#ifdef DEBUG
    139     TRACE("New opacity control point: %g  = %g",
     183    TRACE("New opacity control point: %g = %g",
    140184          cp.value, cp.alpha);
    141185#endif
  • branches/1.3/packages/vizservers/vtkvis/ColorMap.h

    r3616 r4234  
    8383
    8484    ColorMap(const std::string& name);
     85
     86    ColorMap(const ColorMap& other);
     87
     88    ColorMap& operator=(const ColorMap& other);
     89
    8590    virtual ~ColorMap();
    8691
     
    9196    vtkSmartPointer<vtkColorTransferFunction> getColorTransferFunction(double range[2]);
    9297
    93     vtkSmartPointer<vtkPiecewiseFunction> getOpacityTransferFunction(double range[2]);
     98    vtkSmartPointer<vtkPiecewiseFunction> getOpacityTransferFunction(double range[2], double opacityScale = 1.0);
    9499
    95100    void setNumberOfTableEntries(int numEntries);
  • branches/1.3/packages/vizservers/vtkvis/Image.cpp

    r3844 r4234  
    99#include <vtkImageData.h>
    1010#include <vtkImageActor.h>
     11#include <vtkImageSlice.h>
    1112#include <vtkImageProperty.h>
    1213#include <vtkImageMapper3D.h>
     14#include <vtkImageResliceMapper.h>
    1315#include <vtkLookupTable.h>
    1416
     
    1719
    1820using namespace VtkVis;
     21
     22#define USE_RESLICE_MAPPER
    1923
    2024Image::Image() :
     
    3236{
    3337    if (_prop == NULL) {
     38#ifdef USE_RESLICE_MAPPER
     39        _prop = vtkSmartPointer<vtkImageSlice>::New();
     40#else
    3441        _prop = vtkSmartPointer<vtkImageActor>::New();
     42#endif
    3543        vtkImageProperty *property = getImageProperty();
    3644        property->SetInterpolationTypeToLinear();
     
    6472
    6573    vtkImageActor *actor = getImageActor();
    66     actor->SetInputData(imageData);
    67     actor->InterpolateOn();
     74    vtkImageMapper3D *mapper = getImageMapper();
     75    if (mapper == NULL) {
     76        TRACE("Creating mapper");
     77        vtkSmartPointer<vtkImageResliceMapper> newMapper = vtkSmartPointer<vtkImageResliceMapper>::New();
     78        getImageSlice()->SetMapper(newMapper);
     79        mapper = getImageMapper();
     80        assert(mapper != NULL);
     81    }
     82    if (actor != NULL) {
     83        TRACE("Have actor");
     84        actor->SetInputData(imageData);
     85        actor->InterpolateOn();
     86    } else {
     87        TRACE("No actor");
     88        mapper->SetInputData(imageData);
     89    }
    6890
    69     vtkImageMapper3D *mapper = getImageMapper();
     91    mapper->SliceAtFocalPointOn();
     92    mapper->SliceFacesCameraOn();
     93
     94    vtkImageResliceMapper *resliceMapper = getImageResliceMapper();
     95    if (resliceMapper) {
     96        TRACE("Mapper is a vtkImageResliceMapper");
     97        resliceMapper->AutoAdjustImageQualityOff();
     98        resliceMapper->ResampleToScreenPixelsOff();
     99    } else {
     100        TRACE("Mapper is a %s", mapper->GetClassName());
     101    }
     102
    70103    mapper->Update();
    71104}
  • branches/1.3/packages/vizservers/vtkvis/Image.h

    r4231 r4234  
    1010
    1111#include <vtkSmartPointer.h>
     12#include <vtkImageSlice.h>
    1213#include <vtkImageActor.h>
    1314#include <vtkImageMapper3D.h>
     15#include <vtkImageResliceMapper.h>
     16#include <vtkImageSliceMapper.h>
    1417#include <vtkLookupTable.h>
    1518#include <vtkPlaneCollection.h>
     
    141144    vtkImageProperty *getImageProperty()
    142145    {
    143         if (getImageActor() != NULL) {
    144             return getImageActor()->GetProperty();
     146        if (getImageSlice() != NULL) {
     147            return getImageSlice()->GetProperty();
    145148        } else {
    146149            return NULL;
     
    150153    vtkImageMapper3D *getImageMapper()
    151154    {
    152         if (getImageActor() != NULL) {
    153             return getImageActor()->GetMapper();
     155        if (getImageSlice() != NULL) {
     156            return getImageSlice()->GetMapper();
     157        } else {
     158            return NULL;
     159        }
     160    }
     161
     162    vtkImageResliceMapper *getImageResliceMapper()
     163    {
     164        if (getImageSlice() != NULL) {
     165            return vtkImageResliceMapper::SafeDownCast(getImageSlice()->GetMapper());
     166        } else {
     167            return NULL;
     168        }
     169    }
     170
     171    vtkImageSliceMapper *getImageSliceMapper()
     172    {
     173        if (getImageSlice() != NULL) {
     174            return vtkImageSliceMapper::SafeDownCast(getImageSlice()->GetMapper());
    154175        } else {
    155176            return NULL;
  • branches/1.3/packages/vizservers/vtkvis/RendererCmd.cpp

    r4231 r4234  
    25092509static Rappture::CmdSpec colorMapOps[] = {
    25102510    {"add",    1, ColorMapAddOp,             5, 5, "colorMapName colormap alphamap"},
    2511     {"delete", 1, ColorMapDeleteOp,          2, 3, "?colorMapName?"},
     2511    {"define", 3, ColorMapAddOp,             5, 5, "colorMapName colormap alphamap"},
     2512    {"delete", 3, ColorMapDeleteOp,          2, 3, "?colorMapName?"},
    25122513    {"res",    1, ColorMapNumTableEntriesOp, 3, 4, "numTableEntries ?colorMapName?"}
    25132514};
     
    71657166    range[1] = -DBL_MAX;
    71667167
     7168    bool opaque = true;
     7169
    71677170    if (objc == 9) {
    71687171        const char *dataSetName = Tcl_GetString(objv[8]);
    71697172        if (!g_renderer->renderColorMap(colorMapName, dataSetName, legendType, fieldName, title,
    7170                                         range, width, height, true, numLabels, imgData)) {
     7173                                        range, width, height, opaque, numLabels, imgData)) {
    71717174            Tcl_AppendResult(interp, "Color map \"",
    71727175                             colorMapName, "\" or dataset \"",
     
    71767179    } else {
    71777180        if (!g_renderer->renderColorMap(colorMapName, "all", legendType, fieldName, title,
    7178                                         range, width, height, true, numLabels, imgData)) {
     7181                                        range, width, height, opaque, numLabels, imgData)) {
    71797182            Tcl_AppendResult(interp, "Color map \"",
    71807183                             colorMapName, "\" was not found", (char*)NULL);
     
    72377240        vtkSmartPointer<vtkUnsignedCharArray>::New();
    72387241
    7239     if (!g_renderer->renderColorMap(colorMapName, width, height, true, imgData)) {
     7242    bool opaque = true;
     7243
     7244    if (!g_renderer->renderColorMap(colorMapName, width, height, opaque, imgData)) {
    72407245        Tcl_AppendResult(interp, "Color map \"",
    72417246                         colorMapName, "\" was not found", (char*)NULL);
     
    72737278# endif // USE_THREADS
    72747279#endif // DEBUG
     7280
    72757281    return TCL_OK;
    72767282}
     
    1193611942    double distance;
    1193711943    double maxFactor = 4.0;
     11944#if 1
     11945    distance = 1.0 / (quality * (maxFactor - 1.0) + 1.0);
     11946#else
    1193811947    if (quality >= 0.5) {
    1193911948        distance = 1.0 / ((quality - 0.5) * (maxFactor - 1.0) * 2.0 + 1.0);
     
    1194111950        distance = ((0.5 - quality) * (maxFactor - 1.0) * 2.0 + 1.0);
    1194211951    }
     11952#endif
    1194311953    if (objc == 4) {
    1194411954        const char *name = Tcl_GetString(objv[3]);
  • branches/1.3/packages/vizservers/vtkvis/Volume.cpp

    r4231 r4234  
    213213    if (getVolume() != NULL) {
    214214        getVolume()->GetProperty()->SetColor(_colorMap->getColorTransferFunction(_dataRange));
     215#ifdef USE_GPU_RAYCAST_MAPPER
     216        getVolume()->GetProperty()->SetScalarOpacity(_colorMap->getOpacityTransferFunction(_dataRange, _opacity));
     217#else
    215218        getVolume()->GetProperty()->SetScalarOpacity(_colorMap->getOpacityTransferFunction(_dataRange));
     219#endif
    216220    }
    217221}
     
    234238    if (getVolume() != NULL) {
    235239        getVolume()->GetProperty()->SetColor(_colorMap->getColorTransferFunction(_dataRange));
     240#ifdef USE_GPU_RAYCAST_MAPPER
     241        getVolume()->GetProperty()->SetScalarOpacity(_colorMap->getOpacityTransferFunction(_dataRange, _opacity));
     242#else
    236243        getVolume()->GetProperty()->SetScalarOpacity(_colorMap->getOpacityTransferFunction(_dataRange));
     244#endif
    237245    }
    238246}
     
    256264    // 3D texture mapper, not the GPU raycast mapper
    257265    if (getVolume() != NULL) {
     266#ifdef USE_GPU_RAYCAST_MAPPER
     267        getVolume()->GetProperty()->SetScalarOpacity(_colorMap->getOpacityTransferFunction(_dataRange, opacity));
     268#else
    258269        if (opacity < 1.0e-6)
    259270            opacity = 1.0e-6;
    260271        getVolume()->GetProperty()->SetScalarOpacityUnitDistance(1.0/opacity);
     272#endif
    261273    }
    262274}
  • branches/1.3/packages/vizservers/vtkvis/protocol.txt

    r4231 r4234  
    189189
    190190colormap add <colorMapName> <colorMap> <opacityMap>
     191         (Re-)define a colormap.  If colorMapName doesn't exist, it is created,
     192         otherwise the colormap is redefined and all users will be updated.
    191193         colorMap = Tcl list of {value r g b} control points
    192194         opacityMap = Tcl list of {value alpha} control points
     195colormap define <colorMapName> <colorMap> <opacityMap>
     196         (Re-)define a colormap (same as 'add')
    193197colormap delete <?colorMapName?>
    194198colormap res <numberOfTableEntries>
Note: See TracChangeset for help on using the changeset viewer.