Changeset 2533 for trunk


Ignore:
Timestamp:
Sep 21, 2011 9:00:24 AM (13 years ago)
Author:
ldelgass
Message:

Check VTK version defines for Glyph3DMapper, remove Makefile variable. For
choosing random streamline seed point in a cell, for cells without a specialized
implementation, default to a simplex decomposition of cell (tris or tetras) --
will work with new polyhedron cells in VTK 5.8.0.

Location:
trunk/packages/vizservers/vtkvis
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/packages/vizservers/vtkvis/Makefile.in

    r2514 r2533  
    4747DEBUG                   = #yes
    4848TRACE                   = #yes
    49 HAVE_GLYPH3D_MAPPER     = #yes
    5049USE_CUSTOM_AXES         = yes
    5150USE_GPU_RAYCASTING      = yes
     
    6160ifdef TRACE
    6261DEFINES         += -DWANT_TRACE
    63 endif
    64 ifdef HAVE_GLYPH3D_MAPPER
    65 DEFINES         += -DHAVE_GLYPH3D_MAPPER
    6662endif
    6763ifdef USE_CUSTOM_AXES
  • trunk/packages/vizservers/vtkvis/RpGlyphs.h

    r2492 r2533  
    1414#include <vtkProp.h>
    1515#include <vtkActor.h>
    16 #ifdef HAVE_GLYPH3D_MAPPER
     16#include <vtkVersion.h>
     17#if ((VTK_MAJOR_VERSION > 5) || (VTK_MAJOR_VERSION == 5 && VTK_MINOR_VERSION >= 8))
     18#define HAVE_GLYPH3D_MAPPER
    1719#include <vtkGlyph3DMapper.h>
    1820#else
  • trunk/packages/vizservers/vtkvis/RpStreamlines.cpp

    r2513 r2533  
    262262    int cell = rand() % numCells;
    263263    int type = ds->GetCellType(cell);
    264     if (type == VTK_VERTEX) {
     264    switch (type) {
     265    case VTK_VERTEX: {
    265266        vtkSmartPointer<vtkIdList> ptIds = vtkSmartPointer<vtkIdList>::New();
    266267        ds->GetCellPoints(cell, ptIds);
    267268        assert(ptIds->GetNumberOfIds() == 1);
    268269        ds->GetPoint(ptIds->GetId(0), pt);
    269     } else if (type == VTK_POLY_VERTEX) {
     270    }
     271        break;
     272    case VTK_POLY_VERTEX: {
    270273        vtkSmartPointer<vtkIdList> ptIds = vtkSmartPointer<vtkIdList>::New();
    271274        ds->GetCellPoints(cell, ptIds);
     
    273276        int id = rand() % ptIds->GetNumberOfIds();
    274277        ds->GetPoint(ptIds->GetId(id), pt);
    275     } else if (type == VTK_LINE) {
     278    }
     279        break;
     280    case VTK_LINE: {
    276281        double v[2][3];
    277282        vtkSmartPointer<vtkIdList> ptIds = vtkSmartPointer<vtkIdList>::New();
     
    282287        }
    283288        getRandomPointOnLineSegment(pt, v[0], v[1]);
    284     } else if (type == VTK_POLY_LINE) {
     289    }
     290        break;
     291    case VTK_POLY_LINE: {
    285292        double v[2][3];
    286293        vtkSmartPointer<vtkIdList> ptIds = vtkSmartPointer<vtkIdList>::New();
     
    292299        }
    293300        getRandomPointOnLineSegment(pt, v[0], v[1]);
    294     } else if (type == VTK_TRIANGLE) {
     301    }
     302        break;
     303    case VTK_TRIANGLE: {
    295304        double v[3][3];
    296305        vtkSmartPointer<vtkIdList> ptIds = vtkSmartPointer<vtkIdList>::New();
     
    301310        }
    302311        getRandomPointInTriangle(pt, v[0], v[1], v[2]);
    303     } else if (type == VTK_TRIANGLE_STRIP) {
     312    }
     313        break;
     314    case VTK_TRIANGLE_STRIP: {
    304315        double v[3][3];
    305316        vtkSmartPointer<vtkIdList> ptIds = vtkSmartPointer<vtkIdList>::New();
     
    311322        }
    312323        getRandomPointInTriangle(pt, v[0], v[1], v[2]);
    313     } else if (type == VTK_POLYGON) {
     324    }
     325        break;
     326    case VTK_POLYGON: {
    314327        vtkPolygon *poly = vtkPolygon::SafeDownCast(ds->GetCell(cell));
    315328        assert (poly != NULL);
     
    323336        }
    324337        getRandomPointInTriangle(pt, v[0], v[1], v[2]);
    325     } else if (type == VTK_QUAD) {
     338    }
     339        break;
     340    case VTK_QUAD: {
    326341        double v[4][3];
    327342        vtkSmartPointer<vtkIdList> ptIds = vtkSmartPointer<vtkIdList>::New();
     
    337352            getRandomPointInTriangle(pt, v[0], v[2], v[3]);
    338353        }
    339     } else if (type == VTK_TETRA) {
     354    }
     355        break;
     356    case VTK_TETRA: {
    340357        double v[4][3];
    341358        vtkSmartPointer<vtkIdList> ptIds = vtkSmartPointer<vtkIdList>::New();
     
    346363        }
    347364        getRandomPointInTetrahedron(pt, v[0], v[1], v[2], v[3]);
    348     } else if (type == VTK_HEXAHEDRON) {
    349         double v[8][3];
    350         vtkSmartPointer<vtkIdList> ptIds = vtkSmartPointer<vtkIdList>::New();
    351         ds->GetCellPoints(cell, ptIds);
    352         assert(ptIds->GetNumberOfIds() == 8);
    353         for (int i = 0; i < 8; i++) {
    354             ds->GetPoint(ptIds->GetId(i), v[i]);
    355         }
    356         int tetra = rand() % 5;
    357         switch (tetra) {
    358         case 0:
    359             getRandomPointInTetrahedron(pt, v[0], v[1], v[2], v[5]);
    360             break;
    361         case 1:
    362             getRandomPointInTetrahedron(pt, v[0], v[2], v[7], v[3]);
    363             break;
    364         case 2:
    365             getRandomPointInTetrahedron(pt, v[0], v[5], v[7], v[4]);
    366             break;
    367         case 3:
    368             getRandomPointInTetrahedron(pt, v[5], v[2], v[7], v[6]);
    369             break;
    370         case 4:
    371         default:
    372             getRandomPointInTetrahedron(pt, v[0], v[2], v[7], v[5]);
    373             break;
    374         }
    375     } else if (type == VTK_WEDGE) {
     365    }
     366        break;
     367    case VTK_WEDGE: {
    376368        double v[6][3];
    377369        vtkSmartPointer<vtkIdList> ptIds = vtkSmartPointer<vtkIdList>::New();
     
    386378        getRandomPointOnLineSegment(vv[2], v[2], v[5]);
    387379        getRandomPointInTriangle(pt, vv[0], vv[1], vv[2]);
    388     } else if (type == VTK_PYRAMID) {
     380    }
     381        break;
     382    case VTK_PYRAMID: {
    389383        double v[5][3];
    390384        vtkSmartPointer<vtkIdList> ptIds = vtkSmartPointer<vtkIdList>::New();
     
    400394            getRandomPointInTetrahedron(pt, v[0], v[2], v[3], v[4]);
    401395        }
    402     } else {
     396    }
     397        break;
     398    case VTK_PIXEL:
     399    case VTK_VOXEL: {
    403400        double bounds[6];
    404401        ds->GetCellBounds(cell, bounds);
    405         // Note: For pixel/voxel cells, this is exact.  However, if the cell is
    406         // not an axis aligned box, the point may be outside the cell
    407402        getRandomPoint(pt, bounds);
     403    }
     404        break;
     405    default: {
     406        vtkSmartPointer<vtkIdList> ptIds = vtkSmartPointer<vtkIdList>::New();
     407        vtkSmartPointer<vtkPoints> pts = vtkSmartPointer<vtkPoints>::New();
     408        ds->GetCell(cell)->Triangulate(0, ptIds, pts);
     409        if (ptIds->GetNumberOfIds() % 4 == 0) {
     410            int tetra = rand() % (ptIds->GetNumberOfIds()/4);
     411            double v[4][3];
     412            for (int i = 0; i < 4; i++) {
     413                ds->GetPoint(ptIds->GetId(i + tetra * 4), v[i]);
     414            }
     415            getRandomPointInTetrahedron(pt, v[0], v[1], v[2], v[4]);
     416        } else {
     417            assert(ptIds->GetNumberOfIds() % 3 == 0);
     418            int tri = rand() % (ptIds->GetNumberOfIds()/3);
     419            double v[3][3];
     420            for (int i = 0; i < 3; i++) {
     421                ds->GetPoint(ptIds->GetId(i + tri * 3), v[i]);
     422            }
     423            getRandomPointInTriangle(pt, v[0], v[1], v[2]);
     424        }
     425    }
    408426    }
    409427}
  • trunk/packages/vizservers/vtkvis/RpVtkRenderer.cpp

    r2521 r2533  
    4040#include <vtkTextProperty.h>
    4141#include <vtkOpenGLRenderWindow.h>
     42#include <vtkVersion.h>
    4243
    4344#include "RpVtkRenderer.h"
     
    869870            double newBounds[6];
    870871            collectBounds(newBounds, false);
     872#if ((VTK_MAJOR_VERSION > 5) || (VTK_MAJOR_VERSION == 5 && VTK_MINOR_VERSION >= 8))
     873            _cubeAxesActor->SetXAxisRange(newBounds[0], newBounds[1]);
     874            _cubeAxesActor->SetYAxisRange(newBounds[2], newBounds[3]);
     875            _cubeAxesActor->SetZAxisRange(newBounds[4], newBounds[5]);
     876#endif
    871877            _cubeAxesActor->SetBounds(newBounds);
    872878            TRACE("Bounds (computed): %g %g %g %g %g %g",
     
    878884                  newBounds[5]);
    879885        } else {
     886#if ((VTK_MAJOR_VERSION > 5) || (VTK_MAJOR_VERSION == 5 && VTK_MINOR_VERSION >= 8))
     887            _cubeAxesActor->SetXAxisRange(bounds[0], bounds[1]);
     888            _cubeAxesActor->SetYAxisRange(bounds[2], bounds[3]);
     889            _cubeAxesActor->SetZAxisRange(bounds[4], bounds[5]);
     890#endif
    880891            _cubeAxesActor->SetBounds(bounds);
    881892            TRACE("Bounds (supplied): %g %g %g %g %g %g",
Note: See TracChangeset for help on using the changeset viewer.