X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fvtk%2Fsrc%2FbbvtkVolumeRenderer.cxx;h=a804e1507099a2645db27d23fbc40d8e3ff8e59f;hb=5ef20de28d80f6a2e34321fa000cf02914029365;hp=d9de17f8d76848998e04f32e49188e15960639e0;hpb=ff64736c7b0524ea73c6f1ca1ca569593c8e0946;p=bbtk.git diff --git a/packages/vtk/src/bbvtkVolumeRenderer.cxx b/packages/vtk/src/bbvtkVolumeRenderer.cxx index d9de17f..a804e15 100644 --- a/packages/vtk/src/bbvtkVolumeRenderer.cxx +++ b/packages/vtk/src/bbvtkVolumeRenderer.cxx @@ -1,33 +1,38 @@ -/*========================================================================= +/* + # --------------------------------------------------------------------- + # + # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image + # pour la SantÈ) + # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton + # Previous Authors : Laurent Guigues, Jean-Pierre Roux + # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil + # + # This software is governed by the CeCILL-B license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL-B + # license as circulated by CEA, CNRS and INRIA at the following URL + # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html + # or in the file LICENSE.txt. + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL-B license and that you accept its terms. + # ------------------------------------------------------------------------ */ + + +/*========================================================================= Program: bbtk Module: $RCSfile: bbvtkVolumeRenderer.cxx,v $ Language: C++ - Date: $Date: 2008/12/16 12:48:10 $ - Version: $Revision: 1.1 $ + Date: $Date: 2012/11/16 08:51:58 $ + Version: $Revision: 1.6 $ =========================================================================*/ -/* --------------------------------------------------------------------- - -* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) -* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux -* -* This software is governed by the CeCILL-B license under French law and -* abiding by the rules of distribution of free software. You can use, -* modify and/ or redistribute the software under the terms of the CeCILL-B -* license as circulated by CEA, CNRS and INRIA at the following URL -* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html -* or in the file LICENSE.txt. -* -* As a counterpart to the access to the source code and rights to copy, -* modify and redistribute granted by the license, users are provided only -* with a limited warranty and the software's author, the holder of the -* economic rights, and the successive licensors have only limited -* liability. -* -* The fact that you are presently reading this means that you have had -* knowledge of the CeCILL-B license and that you accept its terms. -* ------------------------------------------------------------------------ */ - /** * \file * \brief @@ -52,18 +57,17 @@ namespace bbvtk - void VolumeRenderer::bbUserConstructor() - { - Init(); - bbSetInputColorFunction(0); - bbSetInputOpacityFunction(0); - } - void VolumeRenderer::bbUserCopyConstructor(bbtk::BlackBox::Pointer) + void VolumeRenderer::bbUserSetDefaultValues() { - Init(); + mRayCastFunction = NULL; + mMapper = NULL; + mVolume = NULL; + bbSetInputColorFunction(0); + bbSetInputColorFunction1(0); + bbSetInputOpacityFunction(0); } - - void VolumeRenderer::Init() + + void VolumeRenderer::bbUserInitializeProcessing() { // Create the pipeline @@ -75,53 +79,85 @@ namespace bbvtk // mMIP->SetMaximizeMethodToScalarValue(); mRayCastFunction = vtkVolumeRayCastCompositeFunction::New(); - mMapper = vtkVolumeRayCastMapper::New(); - mMapper->SetVolumeRayCastFunction(mRayCastFunction); + mMapper->SetVolumeRayCastFunction(mRayCastFunction); + mMapper->AutoAdjustSampleDistancesOn(); + + _volumeProperty = vtkVolumeProperty::New(); + _volumeProperty->SetInterpolationTypeToLinear(); + _volumeProperty->ShadeOn(); + _volumeProperty->DisableGradientOpacityOn(); + //_volumeProperty->SetColor(_ctfun); + //_volumeProperty->SetScalarOpacity(_tfun ); - mVolume = vtkVolume::New(); - mVolume->SetMapper(mMapper); + mVolume->SetMapper(mMapper); + mVolume->SetProperty(_volumeProperty ); // mMapper->ScalarVisibilityOff(); // mMapper->ImmediateModeRenderingOn(); - bbSetOutputOut(mVolume); } - void VolumeRenderer::bbUserDestructor() + //--------------------------------------------------------------------- + void VolumeRenderer::bbUserFinalizeProcessing() { - mRayCastFunction->Delete(); - mMapper->Delete(); - mVolume->Delete(); + if (mRayCastFunction!=NULL) + { + mRayCastFunction->Delete(); + mRayCastFunction=NULL; + } + if (mMapper!=NULL) + { + mMapper->Delete(); + mMapper=NULL; + } + if (mVolume!=NULL) + { + mVolume->Delete(); + mVolume=NULL; + } } //--------------------------------------------------------------------- - void VolumeRenderer::Process() - { - bool changed = false; - if ( bbGetInputStatus("In") != bbtk::UPTODATE ) - { - mMapper->SetInput( bbGetInputIn() ); - changed = true; - } - if ( ( bbGetInputStatus("ColorFunction") != bbtk::UPTODATE ) && +void VolumeRenderer::Process() +{ + bool changed = false; + if ( bbGetInputStatus("In") != bbtk::UPTODATE ) + { + mMapper->SetInput( bbGetInputIn() ); + changed = true; + } + + if ( ( bbGetInputStatus("ColorFunction") != bbtk::UPTODATE ) && ( bbGetInputColorFunction() != 0 ) ) - { - mVolume->GetProperty()->SetColor( bbGetInputColorFunction() ); - changed = true; - } + { + mVolume->GetProperty()->SetColor( bbGetInputColorFunction() ); + changed = true; + } + + if ( ( bbGetInputStatus("ColorFunction1") != bbtk::UPTODATE ) && + ( bbGetInputColorFunction1() != 0 ) ) + { + mVolume->GetProperty()->SetColor( bbGetInputColorFunction1() ); + changed = true; + } + if ( ( bbGetInputStatus("OpacityFunction") != bbtk::UPTODATE ) && ( bbGetInputOpacityFunction() != 0 ) ) - { - mVolume->GetProperty()->SetScalarOpacity(bbGetInputOpacityFunction()); - changed = true; - } - - if (changed) mMapper->Update(); - - } + { + mVolume->GetProperty()->SetScalarOpacity(bbGetInputOpacityFunction()); + changed = true; + } + + if (changed) + { + mMapper->Update(); + } + bbSetOutputOut(mVolume); +} + }//namespace bbtk