Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes

mitk::UnstructuredGridVtkMapper3D Class Reference
[Mapper Classes]

Vtk-based mapper for UnstructuredGrid. More...

#include <mitkUnstructuredGridVtkMapper3D.h>

Inheritance diagram for mitk::UnstructuredGridVtkMapper3D:
Inheritance graph
[legend]
Collaboration diagram for mitk::UnstructuredGridVtkMapper3D:
Collaboration graph
[legend]

List of all members.

Public Types

typedef UnstructuredGridVtkMapper3D Self
typedef VtkMapper3D Superclass
typedef itk::SmartPointer< SelfPointer
typedef itk::SmartPointer
< const Self
ConstPointer

Public Member Functions

virtual const char * GetClassName () const
virtual const
mitk::UnstructuredGrid
GetInput ()
virtual vtkProp * GetVtkProp (mitk::BaseRenderer *renderer)
void ApplyProperties (vtkActor *, mitk::BaseRenderer *renderer)
 Apply color and opacity read from the PropertyList.

Static Public Member Functions

static Pointer New ()
static void SetDefaultProperties (mitk::DataNode *node, mitk::BaseRenderer *renderer=NULL, bool overwrite=false)
 Set default values of properties used by this mapper to node.

Protected Member Functions

 UnstructuredGridVtkMapper3D ()
virtual ~UnstructuredGridVtkMapper3D ()
virtual void GenerateData ()
 Generate the data needed for rendering (independent of a specific renderer)
virtual void GenerateData (mitk::BaseRenderer *renderer)
 Generate the data needed for rendering into renderer.
virtual void ResetMapper (BaseRenderer *)
void SetProperties (mitk::BaseRenderer *renderer)

Protected Attributes

vtkAssembly * m_Assembly
vtkActor * m_Actor
vtkActor * m_ActorWireframe
vtkVolume * m_Volume
vtkDataSetTriangleFilter * m_VtkTriangleFilter
vtkUnstructuredGridMapperm_VtkDataSetMapper
vtkUnstructuredGridMapperm_VtkDataSetMapper2
vtkUnstructuredGridVolumeRayCastMapper * m_VtkVolumeRayCastMapper

Detailed Description

Vtk-based mapper for UnstructuredGrid.

Definition at line 48 of file mitkUnstructuredGridVtkMapper3D.h.


Member Typedef Documentation

typedef itk::SmartPointer<const Self> mitk::UnstructuredGridVtkMapper3D::ConstPointer

Reimplemented from mitk::VtkMapper3D.

Definition at line 52 of file mitkUnstructuredGridVtkMapper3D.h.

Reimplemented from mitk::VtkMapper3D.

Definition at line 52 of file mitkUnstructuredGridVtkMapper3D.h.

Reimplemented from mitk::VtkMapper3D.

Definition at line 52 of file mitkUnstructuredGridVtkMapper3D.h.

Reimplemented from mitk::VtkMapper3D.

Definition at line 52 of file mitkUnstructuredGridVtkMapper3D.h.


Constructor & Destructor Documentation

mitk::UnstructuredGridVtkMapper3D::UnstructuredGridVtkMapper3D (  ) [protected]

Definition at line 49 of file mitkUnstructuredGridVtkMapper3D.cpp.

References vtkUnstructuredGridMapper::New().

{

  m_VtkTriangleFilter = vtkDataSetTriangleFilter::New();

  m_Assembly = vtkAssembly::New();

  m_Volume = vtkVolume::New();
  m_Actor = vtkActor::New();
  m_ActorWireframe = vtkActor::New();

  m_VtkDataSetMapper = vtkUnstructuredGridMapper::New();
  m_VtkDataSetMapper->SetResolveCoincidentTopologyToPolygonOffset();
  m_VtkDataSetMapper->SetResolveCoincidentTopologyPolygonOffsetParameters(0,1);
  m_Actor->SetMapper(m_VtkDataSetMapper);

  m_VtkDataSetMapper2 = vtkUnstructuredGridMapper::New();
  m_VtkDataSetMapper2->SetResolveCoincidentTopologyToPolygonOffset();
  m_VtkDataSetMapper2->SetResolveCoincidentTopologyPolygonOffsetParameters(1,1);
  m_ActorWireframe->SetMapper(m_VtkDataSetMapper2);
  m_ActorWireframe->GetProperty()->SetRepresentationToWireframe();

  m_Assembly->AddPart(m_Actor);
  m_Assembly->AddPart(m_ActorWireframe);
  m_Assembly->AddPart(m_Volume);

  m_VtkVolumeRayCastMapper = 0;
  #if (VTK_MAJOR_VERSION >= 5)
  m_VtkPTMapper = 0;
  m_VtkVolumeZSweepMapper = 0;
  #endif

  //m_GenerateNormals = false;
}
mitk::UnstructuredGridVtkMapper3D::~UnstructuredGridVtkMapper3D (  ) [protected, virtual]

Definition at line 85 of file mitkUnstructuredGridVtkMapper3D.cpp.

{

  if (m_VtkTriangleFilter != 0)
    m_VtkTriangleFilter->Delete();

  if (m_VtkVolumeRayCastMapper != 0)
    m_VtkVolumeRayCastMapper->Delete();

  #if (VTK_MAJOR_VERSION >= 5)
  if (m_VtkVolumeZSweepMapper != 0)
    m_VtkVolumeZSweepMapper->Delete();

  if (m_VtkPTMapper != 0)
    m_VtkPTMapper->Delete();
  #endif

  if (m_VtkDataSetMapper != 0)
    m_VtkDataSetMapper->Delete();

  if (m_VtkDataSetMapper2 != 0)
      m_VtkDataSetMapper2->Delete();

  if (m_Assembly != 0)
    m_Assembly->Delete();

  if (m_Actor != 0)
    m_Actor->Delete();

  if (m_ActorWireframe != 0)
      m_ActorWireframe->Delete();

  if (m_Volume != 0)
    m_Volume->Delete();

}

Member Function Documentation

void mitk::UnstructuredGridVtkMapper3D::ApplyProperties ( vtkActor *  actor,
mitk::BaseRenderer renderer 
) [virtual]

Apply color and opacity read from the PropertyList.

Reimplemented from mitk::VtkMapper3D.

Definition at line 194 of file mitkUnstructuredGridVtkMapper3D.cpp.

References mitk::SurfaceVtkMapper3D::ApplyMitkPropertiesToVtkProperty(), mitk::GridRepresentationProperty::POINTS, mitk::GridVolumeMapperProperty::RAYCAST, mitk::GridRepresentationProperty::SURFACE, mitk::GridRepresentationProperty::VOLUME, and mitk::GridRepresentationProperty::WIREFRAME.

{
  mitk::DataNode::Pointer node = this->GetDataNode();
  Superclass::ApplyProperties(m_Actor, renderer);
  Superclass::ApplyProperties(m_ActorWireframe, renderer);

  vtkVolumeProperty* volProp = m_Volume->GetProperty();
  vtkProperty* property = m_Actor->GetProperty();

  mitk::SurfaceVtkMapper3D::ApplyMitkPropertiesToVtkProperty(node,property,renderer);

  mitk::SurfaceVtkMapper3D::ApplyMitkPropertiesToVtkProperty(node,m_ActorWireframe->GetProperty(),renderer);

  mitk::TransferFunctionProperty::Pointer transferFuncProp;
  if (node->GetProperty(transferFuncProp, "TransferFunction", renderer))
  {
    mitk::TransferFunction::Pointer transferFunction = transferFuncProp->GetValue();

    volProp->SetColor(transferFunction->GetColorTransferFunction());
    volProp->SetScalarOpacity(transferFunction->GetScalarOpacityFunction());

    m_VtkDataSetMapper->SetLookupTable(transferFunction->GetColorTransferFunction());
    m_VtkDataSetMapper2->SetLookupTable(transferFunction->GetColorTransferFunction());
  }

  mitk::GridRepresentationProperty::Pointer gridRepProp;
  if (node->GetProperty(gridRepProp, "grid representation", renderer))
  {
    mitk::GridRepresentationProperty::IdType type = gridRepProp->GetValueAsId();
    bool isVolume = false;
    switch (type) {
      case mitk::GridRepresentationProperty::POINTS:
        property->SetRepresentationToPoints();
        break;
      case mitk::GridRepresentationProperty::WIREFRAME:
        property->SetRepresentationToWireframe();
        break;
      case mitk::GridRepresentationProperty::SURFACE:
        property->SetRepresentationToSurface();
        break;
      case mitk::GridRepresentationProperty::VOLUME:
        m_Assembly->RemovePart(m_Actor);
        m_Assembly->RemovePart(m_ActorWireframe);
        m_Assembly->AddPart(m_Volume);
        isVolume = true;
        break;
    }

    if (!isVolume) {
      m_Assembly->RemovePart(m_Volume);
      m_Assembly->AddPart(m_Actor);
      if (type == mitk::GridRepresentationProperty::SURFACE)
        m_Assembly->AddPart(m_ActorWireframe);
      else
        m_Assembly->RemovePart(m_ActorWireframe);
    }


  }

  mitk::GridVolumeMapperProperty::Pointer mapperProp;
  if (node->GetProperty(mapperProp, "grid volume mapper", renderer))
  {
    mitk::GridVolumeMapperProperty::IdType type = mapperProp->GetValueAsId();
    switch (type) {
      case mitk::GridVolumeMapperProperty::RAYCAST:
        if (m_VtkVolumeRayCastMapper == 0) {
          m_VtkVolumeRayCastMapper = vtkUnstructuredGridVolumeRayCastMapper::New();
          m_VtkVolumeRayCastMapper->SetInput(m_VtkTriangleFilter->GetOutput());
        }
        m_Volume->SetMapper(m_VtkVolumeRayCastMapper);
        break;
      #if (VTK_MAJOR_VERSION >= 5)
      case mitk::GridVolumeMapperProperty::PT:
        if (m_VtkPTMapper == 0) {
          m_VtkPTMapper = vtkProjectedTetrahedraMapper::New();
          m_VtkPTMapper->SetInputConnection(m_VtkTriangleFilter->GetOutputPort());
        }
        m_Volume->SetMapper(m_VtkPTMapper);
        break;
      case mitk::GridVolumeMapperProperty::ZSWEEP:
        if (m_VtkVolumeZSweepMapper == 0) {
          m_VtkVolumeZSweepMapper = vtkUnstructuredGridVolumeZSweepMapper::New();
          m_VtkVolumeZSweepMapper->SetInputConnection(m_VtkTriangleFilter->GetOutputPort());
        }
        m_Volume->SetMapper(m_VtkVolumeZSweepMapper);
        break;
      #endif
    }
  }


//   mitk::LevelWindow levelWindow;
//   if(node->GetLevelWindow(levelWindow, renderer, "levelWindow"))
//   {
//     m_VtkVolumeRayCastMapper->SetScalarRange(levelWindow.GetMin(),levelWindow.GetMax());
//   }
//   else
//   if(node->GetLevelWindow(levelWindow, renderer))
//   {
//     m_VtkVolumeRayCastMapper->SetScalarRange(levelWindow.GetMin(),levelWindow.GetMax());
//   }
//
//   mitk::VtkRepresentationProperty* representationProperty;
//   node->GetProperty(representationProperty, "material.representation", renderer);
//   if ( representationProperty != NULL )
//     m_Volume->GetProperty()->SetRepresentation( representationProperty->GetVtkRepresentation() );
//
//   mitk::VtkInterpolationProperty* interpolationProperty;
//   node->GetProperty(interpolationProperty, "material.interpolation", renderer);
//   if ( interpolationProperty != NULL )
//     m_Volume->GetProperty()->SetInterpolation( interpolationProperty->GetVtkInterpolation() );
//
//   bool scalarVisibility = false;
//   node->GetBoolProperty("scalar visibility", scalarVisibility);
//   m_VtkVolumeRayCastMapper->SetScalarVisibility( (scalarVisibility ? 1 : 0) );
//
//   if(scalarVisibility)
//   {
//     mitk::VtkScalarModeProperty* scalarMode;
//     if(node->GetProperty(scalarMode, "scalar mode", renderer))
//     {
//       m_VtkVolumeRayCastMapper->SetScalarMode(scalarMode->GetVtkScalarMode());
//     }
//     else
//       m_VtkVolumeRayCastMapper->SetScalarModeToDefault();
//
//     bool colorMode = false;
//     node->GetBoolProperty("color mode", colorMode);
//     m_VtkVolumeRayCastMapper->SetColorMode( (colorMode ? 1 : 0) );
//
//     float scalarsMin = 0;
//     if (dynamic_cast<mitk::FloatProperty *>(node->GetProperty("ScalarsRangeMinimum").GetPointer()) != NULL)
//       scalarsMin = dynamic_cast<mitk::FloatProperty*>(node->GetProperty("ScalarsRangeMinimum").GetPointer())->GetValue();
//
//     float scalarsMax = 1.0;
//     if (dynamic_cast<mitk::FloatProperty *>(node->GetProperty("ScalarsRangeMaximum").GetPointer()) != NULL)
//       scalarsMax = dynamic_cast<mitk::FloatProperty*>(node->GetProperty("ScalarsRangeMaximum").GetPointer())->GetValue();
//
//     m_VtkVolumeRayCastMapper->SetScalarRange(scalarsMin,scalarsMax);
//   }
}
void mitk::UnstructuredGridVtkMapper3D::GenerateData ( mitk::BaseRenderer renderer ) [protected, virtual]

Generate the data needed for rendering into renderer.

Reimplemented from mitk::Mapper.

Definition at line 136 of file mitkUnstructuredGridVtkMapper3D.cpp.

References mitk::BaseRenderer::GetDataStorage(), and mitk::UnstructuredGrid::GetVtkUnstructuredGrid().

{

  if(!IsVisible(renderer))
  {
    m_Assembly->VisibilityOff();
    return;
  }

  //
  // get the TimeSlicedGeometry of the input object
  //
  mitk::UnstructuredGrid::Pointer input  = const_cast< mitk::UnstructuredGrid* >( this->GetInput() );

  //
  // set the input-object at time t for the mapper
  //
  vtkUnstructuredGrid * grid = input->GetVtkUnstructuredGrid( this->GetTimestep() );
  if(grid == 0)
  {
    m_Assembly->VisibilityOff();
    return;
  }

  m_Assembly->VisibilityOn();

  m_VtkTriangleFilter->SetInput(grid);
  m_VtkDataSetMapper->SetInput(grid);
  m_VtkDataSetMapper2->SetInput(grid);

  mitk::DataNode::ConstPointer node = this->GetDataNode();
  bool clip = false;
  node->GetBoolProperty("enable clipping", clip);
  mitk::DataNode::Pointer bbNode = renderer->GetDataStorage()->GetNamedDerivedNode("Clipping Bounding Object", node);
  if (clip && bbNode.IsNotNull())
  {
    m_VtkDataSetMapper->SetBoundingObject(dynamic_cast<mitk::BoundingObject*>(bbNode->GetData()));
    m_VtkDataSetMapper2->SetBoundingObject(dynamic_cast<mitk::BoundingObject*>(bbNode->GetData()));
  }
  else
  {
    m_VtkDataSetMapper->SetBoundingObject(0);
    m_VtkDataSetMapper2->SetBoundingObject(0);
  }

  //
  // apply properties read from the PropertyList
  //
  ApplyProperties(0, renderer);
}
void mitk::UnstructuredGridVtkMapper3D::GenerateData (  ) [protected, virtual]

Generate the data needed for rendering (independent of a specific renderer)

Reimplemented from mitk::Mapper.

Definition at line 127 of file mitkUnstructuredGridVtkMapper3D.cpp.

{
  m_Assembly->VisibilityOn();

  m_ActorWireframe->GetProperty()->SetAmbient(1.0);
  m_ActorWireframe->GetProperty()->SetDiffuse(0.0);
  m_ActorWireframe->GetProperty()->SetSpecular(0.0);
}
virtual const char* mitk::UnstructuredGridVtkMapper3D::GetClassName (  ) const [virtual]

Reimplemented from mitk::VtkMapper3D.

const mitk::UnstructuredGrid * mitk::UnstructuredGridVtkMapper3D::GetInput ( void   ) [virtual]

Definition at line 43 of file mitkUnstructuredGridVtkMapper3D.cpp.

References mitk::Mapper::GetData().

{
  return static_cast<const mitk::UnstructuredGrid * > ( GetData() );
}
vtkProp * mitk::UnstructuredGridVtkMapper3D::GetVtkProp ( mitk::BaseRenderer renderer ) [virtual]

Implements mitk::VtkMapper3D.

Definition at line 122 of file mitkUnstructuredGridVtkMapper3D.cpp.

{
  return m_Assembly;
}
static Pointer mitk::UnstructuredGridVtkMapper3D::New (  ) [static]
void mitk::UnstructuredGridVtkMapper3D::ResetMapper ( BaseRenderer  ) [protected, virtual]

Reimplemented from mitk::Mapper.

Definition at line 188 of file mitkUnstructuredGridVtkMapper3D.cpp.

{
  m_Assembly->VisibilityOff();
}
void mitk::UnstructuredGridVtkMapper3D::SetDefaultProperties ( mitk::DataNode node,
mitk::BaseRenderer renderer = NULL,
bool  overwrite = false 
) [static]

Set default values of properties used by this mapper to node.

Parameters:
nodeThe node for which the properties are set
overwriteoverwrite existing properties (default: false)
rendererdefines which property list of node is used (default: NULL, i.e. default property list)

Reimplemented from mitk::Mapper.

Definition at line 337 of file mitkUnstructuredGridVtkMapper3D.cpp.

References mitk::DataNode::AddProperty(), mitk::IntProperty::New(), mitk::ColorProperty::New(), mitk::BoolProperty::New(), mitk::VtkScalarModeProperty::New(), mitk::GridVolumeMapperProperty::New(), mitk::GridRepresentationProperty::New(), and mitk::SurfaceVtkMapper3D::SetDefaultPropertiesForVtkProperty().

Referenced by mitk::CoreExtObjectFactory::SetDefaultProperties().

{

  SurfaceVtkMapper3D::SetDefaultPropertiesForVtkProperty(node, renderer, overwrite);

  //node->AddProperty("TransferFunction", TransferFunctionProperty::New(), renderer, overwrite);
  node->AddProperty("grid representation", GridRepresentationProperty::New(), renderer, overwrite);
  node->AddProperty("grid volume mapper", GridVolumeMapperProperty::New(), renderer, overwrite);
  node->AddProperty("scalar mode", VtkScalarModeProperty::New(0), renderer, overwrite);
  node->AddProperty("scalar visibility", BoolProperty::New(true), renderer, overwrite);
  node->AddProperty("outline polygons", BoolProperty::New(false), renderer, overwrite);
  node->AddProperty("color", ColorProperty::New(1.0f, 1.0f, 1.0f), renderer, overwrite);
  node->AddProperty("line width", IntProperty::New(1), renderer, overwrite);

  Superclass::SetDefaultProperties(node, renderer, overwrite);
}
void mitk::UnstructuredGridVtkMapper3D::SetProperties ( mitk::BaseRenderer renderer ) [protected]

Member Data Documentation

Definition at line 77 of file mitkUnstructuredGridVtkMapper3D.h.

Definition at line 78 of file mitkUnstructuredGridVtkMapper3D.h.

Definition at line 76 of file mitkUnstructuredGridVtkMapper3D.h.

Definition at line 79 of file mitkUnstructuredGridVtkMapper3D.h.

Definition at line 83 of file mitkUnstructuredGridVtkMapper3D.h.

Definition at line 84 of file mitkUnstructuredGridVtkMapper3D.h.

vtkDataSetTriangleFilter* mitk::UnstructuredGridVtkMapper3D::m_VtkTriangleFilter [protected]

Definition at line 81 of file mitkUnstructuredGridVtkMapper3D.h.

vtkUnstructuredGridVolumeRayCastMapper* mitk::UnstructuredGridVtkMapper3D::m_VtkVolumeRayCastMapper [protected]

Definition at line 86 of file mitkUnstructuredGridVtkMapper3D.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines