+
+
+ double ranges[2];
+ vtkImageData *image = bbGetInputIn();
+ image->Update();
+ image->GetScalarRange(ranges);
+
+ scale = 255/(ranges[1]/100);
+
+ mCast->SetInput( bbGetInputIn() );
+ mCast->SetScale( scale / 100.0 );
+ //mCast->SetShift( -bbGetInputShift() );
+
+
+ double factor = scale/ 100.0 ;
+
+
+ double minCF = bbGetInputMinColorWindow();
+ double maxCF = bbGetInputMaxColorWindow();
+ cout<<"MIPCreator::Process::minCF"<<minCF <<endl;
+ cout<<"MIPCreator::Process::maxCF"<<maxCF <<endl;
+ grayTransferFunction->AddSegment( minCF , 0.0 , maxCF , 1.0 );
+
+
+
+ for(int i =0; i< DensityPoints.size(); i++)
+ {
+
+ opacityTransferFunction->AddPoint(DensityPoints.at(i)*factor, OpacityValues.at(i));
+ }
+ //opacityTransferFunction = vtkPiecewiseFunction::New();
+// opacityTransferFunction->AddPoint( 0 , 0.0/100.0 );
+// opacityTransferFunction->AddPoint( 85 , 2.0/100.0 );
+// opacityTransferFunction->AddPoint( 160 , 25.0/100.0 );
+// opacityTransferFunction->AddPoint( 210 , 50.0/100.0 );
+// opacityTransferFunction->AddPoint( 255 , 90.0/100.0 );
+
+
+
+ // Create a set of properties for mip
+ vtkVolumeProperty *mipProperty;
+ mipProperty = vtkVolumeProperty::New();
+ mipProperty->SetScalarOpacity( opacityTransferFunction );
+ mipProperty->SetColor( grayTransferFunction );
+
+// mipProperty->SetInterpolationTypeToLinear();
+ mipProperty->SetInterpolationTypeToNearest();
+
+// mipProperty->ShadeOff();
+ mipProperty->ShadeOn();
+
+// mipProperty->SetAmbient(0.9);
+// mipProperty->SetDiffuse(0.9);
+// mipProperty->SetSpecular(0.9);
+
+
+
+
+
+ mMIP = vtkVolumeRayCastMIPFunction::New();
+ mMIP->SetMaximizeMethodToScalarValue();
+
+ mMapper = vtkVolumeRayCastMapper::New();
+ mMapper->SetVolumeRayCastFunction(mMIP);
+ mMapper->SetInput(mCast->GetOutput()); // (smoother.GetOutput())
+
+ mVolume = vtkVolume::New();
+ mVolume->SetMapper(mMapper);
+ mVolume->SetProperty( mipProperty );
+
+
+
+ mMapper->Update();
+
+ bbSetOutputOut(mVolume);