diff --git a/Modules/MapperExt/include/mitkVolumeMapperVtkSmart3D.h b/Modules/MapperExt/include/mitkVolumeMapperVtkSmart3D.h index 3ba04dccbd..cbd653f8f7 100644 --- a/Modules/MapperExt/include/mitkVolumeMapperVtkSmart3D.h +++ b/Modules/MapperExt/include/mitkVolumeMapperVtkSmart3D.h @@ -1,74 +1,72 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef MITKVTKSMARTVOLUMEMAPPER_H_HEADER_INCLUDED #define MITKVTKSMARTVOLUMEMAPPER_H_HEADER_INCLUDED // MITK #include "MitkMapperExtExports.h" #include "mitkBaseRenderer.h" #include "mitkCommon.h" #include "mitkImage.h" #include "mitkVtkMapper.h" // VTK #include #include #include #include #include #include namespace mitk { //##Documentation //## @brief Vtk-based mapper for VolumeData //## //## @ingroup Mapper class MITKMAPPEREXT_EXPORT VolumeMapperVtkSmart3D : public VtkMapper { public: mitkClassMacro(VolumeMapperVtkSmart3D, VtkMapper); itkFactorylessNewMacro(Self) itkCloneMacro(Self) virtual vtkProp *GetVtkProp(mitk::BaseRenderer *renderer) override; virtual void ApplyProperties(vtkActor *actor, mitk::BaseRenderer *renderer) override; static void SetDefaultProperties(mitk::DataNode *node, mitk::BaseRenderer *renderer = nullptr, bool overwrite = false); - - virtual void MitkRenderVolumetricGeometry(mitk::BaseRenderer *renderer) override; - + protected: VolumeMapperVtkSmart3D(); virtual ~VolumeMapperVtkSmart3D(); virtual void GenerateDataForRenderer(mitk::BaseRenderer *renderer) override; void createMapper(vtkImageData*); void createVolume(); void createVolumeProperty(); vtkImageData* GetInputImage(); vtkSmartPointer m_Volume; vtkSmartPointer m_SmartVolumeMapper; vtkSmartPointer m_VolumeProperty; }; } // namespace mitk #endif /* MITKVTKSMARTVOLUMEMAPPER_H_HEADER_INCLUDED */ diff --git a/Modules/MapperExt/src/mitkVolumeMapperVtkSmart3D.cpp b/Modules/MapperExt/src/mitkVolumeMapperVtkSmart3D.cpp index e695f89283..5355b67152 100644 --- a/Modules/MapperExt/src/mitkVolumeMapperVtkSmart3D.cpp +++ b/Modules/MapperExt/src/mitkVolumeMapperVtkSmart3D.cpp @@ -1,93 +1,102 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #include "mitkVolumeMapperVtkSmart3D.h" +#include +#include +#include +#include +#include void mitk::VolumeMapperVtkSmart3D::GenerateDataForRenderer(mitk::BaseRenderer *renderer) { - m_SmartVolumeMapper = vtkSmartPointer::New(); + createMapper(GetInputImage()); + createVolume(); + createVolumeProperty(); + m_SmartVolumeMapper->Update(); + m_Volume->Update(); + MITK_INFO << "rendering ..."; } vtkProp* mitk::VolumeMapperVtkSmart3D::GetVtkProp(mitk::BaseRenderer *renderer) { - if (!m_Volume->GetMapper()) - { - createVolume(); - } - return m_Volume; } void mitk::VolumeMapperVtkSmart3D::ApplyProperties(vtkActor *actor, mitk::BaseRenderer *renderer) { } void mitk::VolumeMapperVtkSmart3D::SetDefaultProperties(mitk::DataNode *node, mitk::BaseRenderer *renderer, bool overwrite) { } -void mitk::VolumeMapperVtkSmart3D::MitkRenderVolumetricGeometry(mitk::BaseRenderer *renderer) -{ - -} - vtkImageData* mitk::VolumeMapperVtkSmart3D::GetInputImage() { mitk::Image *input = const_cast(static_cast(this->GetDataNode()->GetData())); return input->GetVtkImageData(this->GetTimestep()); } void mitk::VolumeMapperVtkSmart3D::createMapper(vtkImageData* imageData) { m_SmartVolumeMapper->SetBlendModeToComposite(); // composite first m_SmartVolumeMapper->SetInputData(imageData); } void mitk::VolumeMapperVtkSmart3D::createVolume() -{ - if (!m_SmartVolumeMapper->GetInput()) - { - createMapper(GetInputImage()); - } - - if (1) - createVolumeProperty(); - - m_Volume->VisibilityOff(); +{ + m_Volume->VisibilityOn(); m_Volume->SetMapper(m_SmartVolumeMapper); m_Volume->SetProperty(m_VolumeProperty); } void mitk::VolumeMapperVtkSmart3D::createVolumeProperty() { m_VolumeProperty->ShadeOff(); m_VolumeProperty->SetInterpolationType(VTK_LINEAR_INTERPOLATION); + + vtkSmartPointer compositeOpacity = + vtkSmartPointer::New(); + compositeOpacity->AddPoint(-1000.0, 0.0); + compositeOpacity->AddPoint(400.0, 1.0); + m_VolumeProperty->SetScalarOpacity(compositeOpacity); // composite first. + + vtkSmartPointer color = + vtkSmartPointer::New(); + color->AddRGBPoint(0.0, 1.0, 1.0, 1.0); + color->AddRGBPoint(255.0, 1.0, 1.0, 1.0); + m_VolumeProperty->SetColor(color); } mitk::VolumeMapperVtkSmart3D::VolumeMapperVtkSmart3D() { + vtkObjectFactory::RegisterFactory(vtkRenderingOpenGL2ObjectFactory::New()); + vtkObjectFactory::RegisterFactory(vtkRenderingVolumeOpenGL2ObjectFactory::New()); + + m_SmartVolumeMapper = vtkSmartPointer::New(); + m_SmartVolumeMapper->SetBlendModeToComposite(); m_VolumeProperty = vtkSmartPointer::New(); m_Volume = vtkSmartPointer::New(); } mitk::VolumeMapperVtkSmart3D::~VolumeMapperVtkSmart3D() { }