Vtk-based mapper for VolumeData. More...
#include <mitkGPUVolumeMapper3D.h>


Classes | |
| class | LocalStorage |
Public Types | |
| typedef GPUVolumeMapper3D | Self |
| typedef VtkMapper3D | Superclass |
| typedef itk::SmartPointer< Self > | Pointer |
| typedef itk::SmartPointer < const Self > | ConstPointer |
Public Member Functions | |
| virtual const char * | GetClassName () const |
| virtual const mitk::Image * | GetInput () |
| virtual vtkProp * | GetVtkProp (mitk::BaseRenderer *renderer) |
| virtual void | ApplyProperties (vtkActor *actor, mitk::BaseRenderer *renderer) |
| Apply color and opacity read from the PropertyList. | |
| virtual bool | IsLODEnabled (BaseRenderer *renderer=NULL) const |
| bool | IsMIPEnabled (BaseRenderer *renderer=NULL) |
| bool | IsGPUEnabled (BaseRenderer *renderer=NULL) |
| bool | IsRAYEnabled (BaseRenderer *renderer=NULL) |
| virtual void | MitkRenderVolumetricGeometry (mitk::BaseRenderer *renderer) |
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 | |
| GPUVolumeMapper3D () | |
| virtual | ~GPUVolumeMapper3D () |
| bool | IsRenderable (mitk::BaseRenderer *renderer) |
| void | InitCommon () |
| void | DeinitCommon () |
| void | InitCPU (mitk::BaseRenderer *renderer) |
| void | DeinitCPU (mitk::BaseRenderer *renderer) |
| void | GenerateDataCPU (mitk::BaseRenderer *renderer) |
| bool | InitGPU (mitk::BaseRenderer *renderer) |
| void | DeinitGPU (mitk::BaseRenderer *renderer) |
| void | GenerateDataGPU (mitk::BaseRenderer *renderer) |
| virtual void | GenerateData (mitk::BaseRenderer *renderer) |
| Generate the data needed for rendering into renderer. | |
| void | CreateDefaultTransferFunctions () |
| void | UpdateTransferFunctions (mitk::BaseRenderer *renderer) |
Protected Attributes | |
| vtkVolume * | m_VolumeNULL |
| bool | m_commonInitialized |
| vtkImageChangeInformation * | m_UnitSpacingImageFilter |
| vtkPiecewiseFunction * | m_DefaultOpacityTransferFunction |
| vtkPiecewiseFunction * | m_DefaultGradientTransferFunction |
| vtkColorTransferFunction * | m_DefaultColorTransferFunction |
| vtkPiecewiseFunction * | m_BinaryOpacityTransferFunction |
| vtkPiecewiseFunction * | m_BinaryGradientTransferFunction |
| vtkColorTransferFunction * | m_BinaryColorTransferFunction |
| mitk::Mapper::LocalStorageHandler < LocalStorage > | m_LSH |
Vtk-based mapper for VolumeData.
Definition at line 56 of file mitkGPUVolumeMapper3D.h.
| typedef itk::SmartPointer<const Self> mitk::GPUVolumeMapper3D::ConstPointer |
Reimplemented from mitk::VtkMapper3D.
Definition at line 59 of file mitkGPUVolumeMapper3D.h.
| typedef itk::SmartPointer<Self> mitk::GPUVolumeMapper3D::Pointer |
Reimplemented from mitk::VtkMapper3D.
Definition at line 59 of file mitkGPUVolumeMapper3D.h.
Reimplemented from mitk::VtkMapper3D.
Definition at line 59 of file mitkGPUVolumeMapper3D.h.
Reimplemented from mitk::VtkMapper3D.
Definition at line 59 of file mitkGPUVolumeMapper3D.h.
| mitk::GPUVolumeMapper3D::GPUVolumeMapper3D | ( | ) | [protected] |
Definition at line 195 of file mitkGPUVolumeMapper3D.cpp.
{
m_VolumeNULL=0;
m_commonInitialized=false;
}
| mitk::GPUVolumeMapper3D::~GPUVolumeMapper3D | ( | ) | [protected, virtual] |
Definition at line 202 of file mitkGPUVolumeMapper3D.cpp.
{
DeinitCommon();
if(m_VolumeNULL)
m_VolumeNULL->Delete();
}
| void mitk::GPUVolumeMapper3D::ApplyProperties | ( | vtkActor * | actor, |
| mitk::BaseRenderer * | renderer | ||
| ) | [virtual] |
Apply color and opacity read from the PropertyList.
Reimplemented from mitk::VtkMapper3D.
Definition at line 541 of file mitkGPUVolumeMapper3D.cpp.
{
//GPU_INFO << "ApplyProperties";
}
| void mitk::GPUVolumeMapper3D::CreateDefaultTransferFunctions | ( | ) | [protected] |
Definition at line 443 of file mitkGPUVolumeMapper3D.cpp.
{
//GPU_INFO << "CreateDefaultTransferFunctions";
m_DefaultOpacityTransferFunction = vtkPiecewiseFunction::New();
m_DefaultOpacityTransferFunction->AddPoint( 0.0, 0.0 );
m_DefaultOpacityTransferFunction->AddPoint( 255.0, 0.8 );
m_DefaultOpacityTransferFunction->ClampingOn();
m_DefaultGradientTransferFunction = vtkPiecewiseFunction::New();
m_DefaultGradientTransferFunction->AddPoint( 0.0, 0.0 );
m_DefaultGradientTransferFunction->AddPoint( 255.0, 0.8 );
m_DefaultGradientTransferFunction->ClampingOn();
m_DefaultColorTransferFunction = vtkColorTransferFunction::New();
m_DefaultColorTransferFunction->AddRGBPoint( 0.0, 0.0, 0.0, 0.0 );
m_DefaultColorTransferFunction->AddRGBPoint( 127.5, 1, 1, 0.0 );
m_DefaultColorTransferFunction->AddRGBPoint( 255.0, 0.8, 0.2, 0 );
m_DefaultColorTransferFunction->ClampingOn();
m_BinaryOpacityTransferFunction = vtkPiecewiseFunction::New();
m_BinaryOpacityTransferFunction->AddPoint( 0, 0.0 );
m_BinaryOpacityTransferFunction->AddPoint( 1, 1.0 );
m_BinaryGradientTransferFunction = vtkPiecewiseFunction::New();
m_BinaryGradientTransferFunction->AddPoint( 0.0, 1.0 );
m_BinaryColorTransferFunction = vtkColorTransferFunction::New();
}
| void mitk::GPUVolumeMapper3D::DeinitCommon | ( | ) | [protected] |
Definition at line 222 of file mitkGPUVolumeMapper3D.cpp.
{
if(!m_commonInitialized)
return;
m_UnitSpacingImageFilter->Delete();
m_DefaultColorTransferFunction->Delete();
m_DefaultOpacityTransferFunction->Delete();
m_DefaultGradientTransferFunction->Delete();
m_BinaryColorTransferFunction->Delete();
m_BinaryOpacityTransferFunction->Delete();
m_BinaryGradientTransferFunction->Delete();
m_commonInitialized=false;
}
| void mitk::GPUVolumeMapper3D::DeinitCPU | ( | mitk::BaseRenderer * | renderer ) | [protected] |
Definition at line 180 of file mitkGPUVolumeMapper3D.cpp.
References mitk::GPUVolumeMapper3D::LocalStorage::m_cpuInitialized, mitk::GPUVolumeMapper3D::LocalStorage::m_MapperCPU, mitk::GPUVolumeMapper3D::LocalStorage::m_VolumeCPU, and mitk::GPUVolumeMapper3D::LocalStorage::m_VolumePropertyCPU.
{
LocalStorage *ls = m_LSH.GetLocalStorage(renderer);
if(!ls->m_cpuInitialized)
return;
// GPU_INFO << "deinitializing software (raycast) renderer";
ls->m_VolumeCPU->Delete();
ls->m_MapperCPU->Delete();
ls->m_VolumePropertyCPU->Delete();
ls->m_cpuInitialized=false;
}
| void mitk::GPUVolumeMapper3D::DeinitGPU | ( | mitk::BaseRenderer * | renderer ) | [protected] |
Definition at line 165 of file mitkGPUVolumeMapper3D.cpp.
References mitk::GPUVolumeMapper3D::LocalStorage::m_gpuInitialized, mitk::GPUVolumeMapper3D::LocalStorage::m_MapperGPU, mitk::GPUVolumeMapper3D::LocalStorage::m_VolumeGPU, and mitk::GPUVolumeMapper3D::LocalStorage::m_VolumePropertyGPU.
{
LocalStorage *ls = m_LSH.GetLocalStorage(renderer);
if(ls->m_gpuInitialized)
{
// GPU_INFO << "deinitializing hardware (slicing) renderer";
ls->m_VolumeGPU->Delete();
ls->m_MapperGPU->Delete();
ls->m_VolumePropertyGPU->Delete();
ls->m_gpuInitialized=false;
}
}
| void mitk::GPUVolumeMapper3D::GenerateData | ( | mitk::BaseRenderer * | renderer ) | [protected, virtual] |
Generate the data needed for rendering into renderer.
Reimplemented from mitk::Mapper.
Definition at line 324 of file mitkGPUVolumeMapper3D.cpp.
References mitk::Image::GetVtkImageData().
{
if(!IsRenderable(renderer))
return;
InitCommon();
mitk::Image *input = const_cast< mitk::Image * >( this->GetInput() );
vtkImageData *inputData = input->GetVtkImageData( this->GetTimestep() );
m_UnitSpacingImageFilter->SetInput( inputData );
// Only with VTK 5.6 or above
#if ((VTK_MAJOR_VERSION > 5) || ((VTK_MAJOR_VERSION==5) && (VTK_MINOR_VERSION>=6) ))
if(IsRAYEnabled(renderer))
{
DeinitCPU(renderer);
DeinitGPU(renderer);
if(!InitRAY(renderer))
goto fallback;
GenerateDataRAY(renderer);
}
else
#endif
if(IsGPUEnabled(renderer))
{
DeinitCPU(renderer);
// Only with VTK 5.6 or above
#if ((VTK_MAJOR_VERSION > 5) || ((VTK_MAJOR_VERSION==5) && (VTK_MINOR_VERSION>=6) ))
DeinitRAY(renderer);
#endif
if(!InitGPU(renderer))
goto fallback;
GenerateDataGPU(renderer);
}
else
{
fallback:
DeinitGPU(renderer);
// Only with VTK 5.6 or above
#if ((VTK_MAJOR_VERSION > 5) || ((VTK_MAJOR_VERSION==5) && (VTK_MINOR_VERSION>=6) ))
DeinitRAY(renderer);
#endif
InitCPU(renderer);
GenerateDataCPU(renderer);
}
// UpdateTransferFunctions
UpdateTransferFunctions( renderer );
}
| void mitk::GPUVolumeMapper3D::GenerateDataCPU | ( | mitk::BaseRenderer * | renderer ) | [protected] |
Definition at line 404 of file mitkGPUVolumeMapper3D.cpp.
References mitk::RenderingManager::GetInstance(), mitk::RenderingManager::GetNextLOD(), mitk::GPUVolumeMapper3D::LocalStorage::m_MapperCPU, and mitk::GPUVolumeMapper3D::LocalStorage::m_VolumePropertyCPU.
{
LocalStorage *ls = m_LSH.GetLocalStorage(renderer);
int nextLod = mitk::RenderingManager::GetInstance()->GetNextLOD( renderer );
if( IsLODEnabled(renderer) && nextLod == 0 )
{
ls->m_MapperCPU->SetImageSampleDistance(3.5);
ls->m_MapperCPU->SetSampleDistance(1.25);
ls->m_VolumePropertyCPU->SetInterpolationTypeToNearest();
}
else
{
ls->m_MapperCPU->SetImageSampleDistance(1.0);
ls->m_MapperCPU->SetSampleDistance(1.0);
ls->m_VolumePropertyCPU->SetInterpolationTypeToLinear();
}
// Check raycasting mode
if(IsMIPEnabled(renderer))
ls->m_MapperCPU->SetBlendModeToMaximumIntensity();
else
ls->m_MapperCPU->SetBlendModeToComposite();
// Updating shadings
{
float value=0;
if(GetDataNode()->GetFloatProperty("volumerendering.cpu.ambient",value,renderer))
ls->m_VolumePropertyCPU->SetAmbient(value);
if(GetDataNode()->GetFloatProperty("volumerendering.cpu.diffuse",value,renderer))
ls->m_VolumePropertyCPU->SetDiffuse(value);
if(GetDataNode()->GetFloatProperty("volumerendering.cpu.specular",value,renderer))
ls->m_VolumePropertyCPU->SetSpecular(value);
if(GetDataNode()->GetFloatProperty("volumerendering.cpu.specular.power",value,renderer))
ls->m_VolumePropertyCPU->SetSpecularPower(value);
}
}
| void mitk::GPUVolumeMapper3D::GenerateDataGPU | ( | mitk::BaseRenderer * | renderer ) | [protected] |
Definition at line 377 of file mitkGPUVolumeMapper3D.cpp.
References mitk::RenderingManager::GetInstance(), mitk::GPUVolumeMapper3D::LocalStorage::m_MapperGPU, and mitk::GPUVolumeMapper3D::LocalStorage::m_VolumePropertyGPU.
{
LocalStorage *ls = m_LSH.GetLocalStorage(renderer);
bool useCompression = false;
GetDataNode()->GetBoolProperty("volumerendering.gpu.usetexturecompression",useCompression,renderer);
ls->m_MapperGPU->SetUseCompressedTexture(useCompression);
if( IsLODEnabled(renderer) && mitk::RenderingManager::GetInstance()->GetNextLOD( renderer ) == 0 )
ls->m_MapperGPU->SetSampleDistance(2.0);
else
ls->m_MapperGPU->SetSampleDistance(1.0);
// Updating shadings
{
float value=0;
if(GetDataNode()->GetFloatProperty("volumerendering.gpu.ambient",value,renderer))
ls->m_VolumePropertyGPU->SetAmbient(value);
if(GetDataNode()->GetFloatProperty("volumerendering.gpu.diffuse",value,renderer))
ls->m_VolumePropertyGPU->SetDiffuse(value);
if(GetDataNode()->GetFloatProperty("volumerendering.gpu.specular",value,renderer))
ls->m_VolumePropertyGPU->SetSpecular(value);
if(GetDataNode()->GetFloatProperty("volumerendering.gpu.specular.power",value,renderer))
ls->m_VolumePropertyGPU->SetSpecularPower(value);
}
}
| virtual const char* mitk::GPUVolumeMapper3D::GetClassName | ( | ) | const [virtual] |
Reimplemented from mitk::VtkMapper3D.
| const mitk::Image * mitk::GPUVolumeMapper3D::GetInput | ( | void | ) | [virtual] |
Definition at line 74 of file mitkGPUVolumeMapper3D.cpp.
References mitk::Mapper::GetData().
{
return static_cast<const mitk::Image*> ( GetData() );
}
| vtkProp * mitk::GPUVolumeMapper3D::GetVtkProp | ( | mitk::BaseRenderer * | renderer ) | [virtual] |
Implements mitk::VtkMapper3D.
Definition at line 268 of file mitkGPUVolumeMapper3D.cpp.
References mitk::GPUVolumeMapper3D::LocalStorage::m_VolumeCPU, and mitk::GPUVolumeMapper3D::LocalStorage::m_VolumeGPU.
{
if(!IsRenderable(renderer))
{
if(!m_VolumeNULL)
{
m_VolumeNULL = vtkVolume::New();
m_VolumeNULL->VisibilityOff();
}
return m_VolumeNULL;
}
InitCommon();
LocalStorage *ls = m_LSH.GetLocalStorage(renderer);
// Only with VTK 5.6 or above
#if ((VTK_MAJOR_VERSION > 5) || ((VTK_MAJOR_VERSION==5) && (VTK_MINOR_VERSION>=6) ))
if(IsRAYEnabled(renderer))
{
DeinitCPU(renderer);
DeinitGPU(renderer);
if(!InitRAY(renderer))
goto fallback;
return ls->m_VolumeRAY;
}
else
#endif
if(IsGPUEnabled(renderer))
{
DeinitCPU(renderer);
// Only with VTK 5.6 or above
#if ((VTK_MAJOR_VERSION > 5) || ((VTK_MAJOR_VERSION==5) && (VTK_MINOR_VERSION>=6) ))
DeinitRAY(renderer);
#endif
if(!InitGPU(renderer))
goto fallback;
return ls->m_VolumeGPU;
}
else
{
fallback:
DeinitGPU(renderer);
// Only with VTK 5.6 or above
#if ((VTK_MAJOR_VERSION > 5) || ((VTK_MAJOR_VERSION==5) && (VTK_MINOR_VERSION>=6) ))
DeinitRAY(renderer);
#endif
InitCPU(renderer);
return ls->m_VolumeCPU;
}
}
| void mitk::GPUVolumeMapper3D::InitCommon | ( | ) | [protected] |
Definition at line 209 of file mitkGPUVolumeMapper3D.cpp.
{
if(m_commonInitialized)
return;
m_UnitSpacingImageFilter = vtkImageChangeInformation::New();
m_UnitSpacingImageFilter->SetOutputSpacing( 1.0, 1.0, 1.0 );
CreateDefaultTransferFunctions();
m_commonInitialized=true;
}
| void mitk::GPUVolumeMapper3D::InitCPU | ( | mitk::BaseRenderer * | renderer ) | [protected] |
Definition at line 126 of file mitkGPUVolumeMapper3D.cpp.
References mitk::GPUVolumeMapper3D::LocalStorage::m_cpuInitialized, mitk::GPUVolumeMapper3D::LocalStorage::m_MapperCPU, mitk::GPUVolumeMapper3D::LocalStorage::m_VolumeCPU, and mitk::GPUVolumeMapper3D::LocalStorage::m_VolumePropertyCPU.
{
LocalStorage *ls = m_LSH.GetLocalStorage(renderer);
if(ls->m_cpuInitialized)
return;
// GPU_INFO << "initializing software (raycast) renderer";
ls->m_MapperCPU = vtkFixedPointVolumeRayCastMapper::New();
ls->m_MapperCPU->SetSampleDistance(1.0);
// ls->m_MapperCPU->LockSampleDistanceToInputSpacingOn();
ls->m_MapperCPU->SetImageSampleDistance(1.0);
ls->m_MapperCPU->IntermixIntersectingGeometryOn();
ls->m_MapperCPU->SetAutoAdjustSampleDistances(0);
int numThreads = itk::MultiThreader::GetGlobalDefaultNumberOfThreads();
ls->m_MapperCPU->SetNumberOfThreads( numThreads );
ls->m_VolumePropertyCPU = vtkVolumeProperty::New();
ls->m_VolumePropertyCPU->ShadeOn();
ls->m_VolumePropertyCPU->SetAmbient (0.10f); //0.05f
ls->m_VolumePropertyCPU->SetDiffuse (0.50f); //0.45f
ls->m_VolumePropertyCPU->SetSpecular(0.40f); //0.50f
ls->m_VolumePropertyCPU->SetSpecularPower(16.0f);
ls->m_VolumePropertyCPU->SetInterpolationTypeToLinear();
ls->m_VolumeCPU = vtkVolume::New();
ls->m_VolumeCPU->SetMapper( ls->m_MapperCPU );
ls->m_VolumeCPU->SetProperty( ls->m_VolumePropertyCPU );
ls->m_VolumeCPU->VisibilityOn();
ls->m_MapperCPU->SetInput( m_UnitSpacingImageFilter->GetOutput() );//m_Resampler->GetOutput());
// GPU_INFO << "software (raycast) renderer uses " << numThreads << " threads";
ls->m_cpuInitialized=true;
}
| bool mitk::GPUVolumeMapper3D::InitGPU | ( | mitk::BaseRenderer * | renderer ) | [protected] |
Definition at line 89 of file mitkGPUVolumeMapper3D.cpp.
References mitk::BaseRenderer::GetVtkRenderer(), GPU_INFO, vtkMitkVolumeTextureMapper3D::IsRenderSupported(), mitk::GPUVolumeMapper3D::LocalStorage::m_gpuInitialized, mitk::GPUVolumeMapper3D::LocalStorage::m_gpuSupported, mitk::GPUVolumeMapper3D::LocalStorage::m_MapperGPU, mitk::GPUVolumeMapper3D::LocalStorage::m_VolumeGPU, mitk::GPUVolumeMapper3D::LocalStorage::m_VolumePropertyGPU, and vtkMitkOpenGLVolumeTextureMapper3D::New().
{
LocalStorage *ls = m_LSH.GetLocalStorage(renderer);
if(ls->m_gpuInitialized)
return ls->m_gpuSupported;
// GPU_INFO << "initializing hardware-accelerated (slicing) renderer";
ls->m_MapperGPU = vtkMitkOpenGLVolumeTextureMapper3D::New();
ls->m_MapperGPU->SetUseCompressedTexture(false);
ls->m_MapperGPU->SetSampleDistance(1.0);
ls->m_VolumePropertyGPU = vtkVolumeProperty::New();
ls->m_VolumePropertyGPU->ShadeOn();
ls->m_VolumePropertyGPU->SetAmbient (0.25f); //0.05f
ls->m_VolumePropertyGPU->SetDiffuse (0.50f); //0.45f
ls->m_VolumePropertyGPU->SetSpecular(0.40f); //0.50f
ls->m_VolumePropertyGPU->SetSpecularPower(16.0f);
ls->m_VolumePropertyGPU->SetInterpolationTypeToLinear();
ls->m_VolumeGPU = vtkVolume::New();
ls->m_VolumeGPU->SetMapper( ls->m_MapperGPU );
ls->m_VolumeGPU->SetProperty( ls->m_VolumePropertyGPU );
ls->m_VolumeGPU->VisibilityOn();
ls->m_MapperGPU->SetInput( this->m_UnitSpacingImageFilter->GetOutput() );
ls->m_gpuSupported = ls->m_MapperGPU->IsRenderSupported(renderer->GetVtkRenderer(),ls->m_VolumePropertyGPU);
if(!ls->m_gpuSupported)
GPU_INFO << "hardware-accelerated (slicing) rendering is not supported";
ls->m_gpuInitialized = true;
return ls->m_gpuSupported;
}
| bool mitk::GPUVolumeMapper3D::IsGPUEnabled | ( | mitk::BaseRenderer * | renderer = NULL ) |
Definition at line 618 of file mitkGPUVolumeMapper3D.cpp.
References mitk::GPUVolumeMapper3D::LocalStorage::m_gpuSupported.
{
LocalStorage *ls = m_LSH.GetLocalStorage(renderer);
bool value = false;
return ls->m_gpuSupported && GetDataNode()->GetBoolProperty("volumerendering.usegpu",value,renderer) && value;
}
| bool mitk::GPUVolumeMapper3D::IsLODEnabled | ( | mitk::BaseRenderer * | renderer = NULL ) |
const [virtual] |
Returns true if this Mapper currently allows for Level-of-Detail rendering. This reflects whether this Mapper currently invokes StartEvent, EndEvent, and ProgressEvent on BaseRenderer.
Reimplemented from mitk::Mapper.
Definition at line 606 of file mitkGPUVolumeMapper3D.cpp.
{
bool value = false;
return GetDataNode()->GetBoolProperty("volumerendering.uselod",value,renderer) && value;
}
| bool mitk::GPUVolumeMapper3D::IsMIPEnabled | ( | mitk::BaseRenderer * | renderer = NULL ) |
Definition at line 612 of file mitkGPUVolumeMapper3D.cpp.
{
bool value = false;
return GetDataNode()->GetBoolProperty("volumerendering.usemip",value,renderer) && value;
}
| bool mitk::GPUVolumeMapper3D::IsRAYEnabled | ( | BaseRenderer * | renderer = NULL ) |
| bool mitk::GPUVolumeMapper3D::IsRenderable | ( | mitk::BaseRenderer * | renderer ) | [protected] |
Definition at line 239 of file mitkGPUVolumeMapper3D.cpp.
References mitk::Image::GetVtkImageData(), and mitk::BaseData::IsInitialized().
{
if(!IsVisible(renderer))
return false;
if(!GetDataNode())
return false;
bool value = false;
if(!GetDataNode()->GetBoolProperty("volumerendering",value,renderer))
return false;
if(!value)
return false;
mitk::Image *input = const_cast< mitk::Image * >( this->GetInput() );
if ( !input || !input->IsInitialized() )
return false;
vtkImageData *inputData = input->GetVtkImageData( this->GetTimestep() );
if(inputData==NULL)
return false;
return true;
}
| void mitk::GPUVolumeMapper3D::MitkRenderVolumetricGeometry | ( | mitk::BaseRenderer * | renderer ) | [virtual] |
Definition at line 79 of file mitkGPUVolumeMapper3D.cpp.
References mitk::GPUVolumeMapper3D::LocalStorage::m_gpuInitialized, mitk::GPUVolumeMapper3D::LocalStorage::m_MapperGPU, and vtkMitkVolumeTextureMapper3D::UpdateMTime().
{
LocalStorage *ls = m_LSH.GetLocalStorage(renderer);
VtkMapper3D::MitkRenderVolumetricGeometry(renderer);
if(ls->m_gpuInitialized)
ls->m_MapperGPU->UpdateMTime();
}
| static Pointer mitk::GPUVolumeMapper3D::New | ( | ) | [static] |
Referenced by mitk::CoreExtObjectFactory::CreateMapper().
| void mitk::GPUVolumeMapper3D::SetDefaultProperties | ( | mitk::DataNode * | node, |
| mitk::BaseRenderer * | renderer = NULL, |
||
| bool | overwrite = false |
||
| ) | [static] |
Set default values of properties used by this mapper to node.
| node | The node for which the properties are set |
| overwrite | overwrite existing properties (default: false) |
| renderer | defines which property list of node is used (default: NULL, i.e. default property list) |
Reimplemented from mitk::Mapper.
Definition at line 546 of file mitkGPUVolumeMapper3D.cpp.
References mitk::DataNode::AddProperty(), mitk::DataNode::GetData(), mitk::DataNode::GetProperty(), mitk::TransferFunctionProperty::New(), mitk::TransferFunctionInitializer::New(), mitk::TransferFunction::New(), mitk::LevelWindowProperty::New(), mitk::FloatProperty::New(), mitk::BoolProperty::New(), mitk::LevelWindow::SetAuto(), and mitk::DataNode::SetProperty().
Referenced by mitk::CoreExtObjectFactory::SetDefaultProperties().
{
//GPU_INFO << "SetDefaultProperties";
node->AddProperty( "volumerendering", mitk::BoolProperty::New( false ), renderer, overwrite );
node->AddProperty( "volumerendering.usemip", mitk::BoolProperty::New( false ), renderer, overwrite );
node->AddProperty( "volumerendering.uselod", mitk::BoolProperty::New( false ), renderer, overwrite );
node->AddProperty( "volumerendering.cpu.ambient", mitk::FloatProperty::New( 0.10f ), renderer, overwrite );
node->AddProperty( "volumerendering.cpu.diffuse", mitk::FloatProperty::New( 0.50f ), renderer, overwrite );
node->AddProperty( "volumerendering.cpu.specular", mitk::FloatProperty::New( 0.40f ), renderer, overwrite );
node->AddProperty( "volumerendering.cpu.specular.power", mitk::FloatProperty::New( 16.0f ), renderer, overwrite );
node->AddProperty( "volumerendering.usegpu", mitk::BoolProperty::New( true ), renderer, overwrite );
// Only with VTK 5.6 or above
#if ((VTK_MAJOR_VERSION > 5) || ((VTK_MAJOR_VERSION==5) && (VTK_MINOR_VERSION>=6) ))
node->AddProperty( "volumerendering.useray", mitk::BoolProperty::New( false ), renderer, overwrite );
node->AddProperty( "volumerendering.ray.ambient", mitk::FloatProperty::New( 0.25f ), renderer, overwrite );
node->AddProperty( "volumerendering.ray.diffuse", mitk::FloatProperty::New( 0.50f ), renderer, overwrite );
node->AddProperty( "volumerendering.ray.specular", mitk::FloatProperty::New( 0.40f ), renderer, overwrite );
node->AddProperty( "volumerendering.ray.specular.power", mitk::FloatProperty::New( 16.0f ), renderer, overwrite );
#endif
node->AddProperty( "volumerendering.gpu.ambient", mitk::FloatProperty::New( 0.25f ), renderer, overwrite );
node->AddProperty( "volumerendering.gpu.diffuse", mitk::FloatProperty::New( 0.50f ), renderer, overwrite );
node->AddProperty( "volumerendering.gpu.specular", mitk::FloatProperty::New( 0.40f ), renderer, overwrite );
node->AddProperty( "volumerendering.gpu.specular.power", mitk::FloatProperty::New( 16.0f ), renderer, overwrite );
node->AddProperty( "volumerendering.gpu.usetexturecompression", mitk::BoolProperty ::New( false ), renderer, overwrite );
node->AddProperty( "volumerendering.gpu.reducesliceartifacts" , mitk::BoolProperty ::New( false ), renderer, overwrite );
node->AddProperty( "binary", mitk::BoolProperty::New( false ), renderer, overwrite );
mitk::Image::Pointer image = dynamic_cast<mitk::Image*>(node->GetData());
if(image.IsNotNull() && image->IsInitialized())
{
if((overwrite) || (node->GetProperty("levelwindow", renderer)==NULL))
{
mitk::LevelWindowProperty::Pointer levWinProp = mitk::LevelWindowProperty::New();
mitk::LevelWindow levelwindow;
levelwindow.SetAuto( image );
levWinProp->SetLevelWindow( levelwindow );
node->SetProperty( "levelwindow", levWinProp, renderer );
}
if((overwrite) || (node->GetProperty("TransferFunction", renderer)==NULL))
{
// add a default transfer function
mitk::TransferFunction::Pointer tf = mitk::TransferFunction::New();
mitk::TransferFunctionInitializer::Pointer tfInit = mitk::TransferFunctionInitializer::New(tf);
tfInit->SetTransferFunctionMode(0);
node->SetProperty ( "TransferFunction", mitk::TransferFunctionProperty::New ( tf.GetPointer() ) );
}
}
Superclass::SetDefaultProperties(node, renderer, overwrite);
}
| void mitk::GPUVolumeMapper3D::UpdateTransferFunctions | ( | mitk::BaseRenderer * | renderer ) | [protected] |
Definition at line 473 of file mitkGPUVolumeMapper3D.cpp.
References mitk::TransferFunctionProperty::GetValue(), mitk::GPUVolumeMapper3D::LocalStorage::m_cpuInitialized, mitk::GPUVolumeMapper3D::LocalStorage::m_gpuInitialized, mitk::GPUVolumeMapper3D::LocalStorage::m_VolumePropertyCPU, and mitk::GPUVolumeMapper3D::LocalStorage::m_VolumePropertyGPU.
{
LocalStorage *ls = m_LSH.GetLocalStorage(renderer);
//GPU_INFO << "UpdateTransferFunctions";
vtkPiecewiseFunction *opacityTransferFunction = m_DefaultOpacityTransferFunction;
vtkPiecewiseFunction *gradientTransferFunction = m_DefaultGradientTransferFunction;
vtkColorTransferFunction *colorTransferFunction = m_DefaultColorTransferFunction;
bool isBinary = false;
GetDataNode()->GetBoolProperty("binary", isBinary, renderer);
if(isBinary)
{
opacityTransferFunction = m_BinaryOpacityTransferFunction;
gradientTransferFunction = m_BinaryGradientTransferFunction;
colorTransferFunction = m_BinaryColorTransferFunction;
colorTransferFunction->RemoveAllPoints();
float rgb[3];
if( !GetDataNode()->GetColor( rgb,renderer ) )
rgb[0]=rgb[1]=rgb[2]=1;
colorTransferFunction->AddRGBPoint( 0,rgb[0],rgb[1],rgb[2] );
colorTransferFunction->Modified();
}
else
{
mitk::TransferFunctionProperty *transferFunctionProp =
dynamic_cast<mitk::TransferFunctionProperty*>(this->GetDataNode()->GetProperty("TransferFunction",renderer));
if( transferFunctionProp )
{
opacityTransferFunction = transferFunctionProp->GetValue()->GetScalarOpacityFunction();
gradientTransferFunction = transferFunctionProp->GetValue()->GetGradientOpacityFunction();
colorTransferFunction = transferFunctionProp->GetValue()->GetColorTransferFunction();
}
}
if(ls->m_gpuInitialized)
{
ls->m_VolumePropertyGPU->SetColor( colorTransferFunction );
ls->m_VolumePropertyGPU->SetScalarOpacity( opacityTransferFunction );
ls->m_VolumePropertyGPU->SetGradientOpacity( gradientTransferFunction );
}
// Only with VTK 5.6 or above
#if ((VTK_MAJOR_VERSION > 5) || ((VTK_MAJOR_VERSION==5) && (VTK_MINOR_VERSION>=6) ))
if(ls->m_rayInitialized)
{
ls->m_VolumePropertyRAY->SetColor( colorTransferFunction );
ls->m_VolumePropertyRAY->SetScalarOpacity( opacityTransferFunction );
ls->m_VolumePropertyRAY->SetGradientOpacity( gradientTransferFunction );
}
#endif
if(ls->m_cpuInitialized)
{
ls->m_VolumePropertyCPU->SetColor( colorTransferFunction );
ls->m_VolumePropertyCPU->SetScalarOpacity( opacityTransferFunction );
ls->m_VolumePropertyCPU->SetGradientOpacity( gradientTransferFunction );
}
}
vtkColorTransferFunction* mitk::GPUVolumeMapper3D::m_BinaryColorTransferFunction [protected] |
Definition at line 121 of file mitkGPUVolumeMapper3D.h.
vtkPiecewiseFunction* mitk::GPUVolumeMapper3D::m_BinaryGradientTransferFunction [protected] |
Definition at line 120 of file mitkGPUVolumeMapper3D.h.
vtkPiecewiseFunction* mitk::GPUVolumeMapper3D::m_BinaryOpacityTransferFunction [protected] |
Definition at line 119 of file mitkGPUVolumeMapper3D.h.
bool mitk::GPUVolumeMapper3D::m_commonInitialized [protected] |
Definition at line 114 of file mitkGPUVolumeMapper3D.h.
vtkColorTransferFunction* mitk::GPUVolumeMapper3D::m_DefaultColorTransferFunction [protected] |
Definition at line 118 of file mitkGPUVolumeMapper3D.h.
vtkPiecewiseFunction* mitk::GPUVolumeMapper3D::m_DefaultGradientTransferFunction [protected] |
Definition at line 117 of file mitkGPUVolumeMapper3D.h.
vtkPiecewiseFunction* mitk::GPUVolumeMapper3D::m_DefaultOpacityTransferFunction [protected] |
Definition at line 116 of file mitkGPUVolumeMapper3D.h.
Definition at line 197 of file mitkGPUVolumeMapper3D.h.
vtkImageChangeInformation* mitk::GPUVolumeMapper3D::m_UnitSpacingImageFilter [protected] |
Definition at line 115 of file mitkGPUVolumeMapper3D.h.
vtkVolume* mitk::GPUVolumeMapper3D::m_VolumeNULL [protected] |
Definition at line 112 of file mitkGPUVolumeMapper3D.h.
1.7.2