Example #1
0
        private void RenderVTI()
        {
            // reader
            // Read all the data from the file
            vtkXMLImageDataReader reader = vtkXMLImageDataReader.New();

            if (reader.CanReadFile(m_FileName) == 0)
            {
                MessageBox.Show("Cannot read file \"" + m_FileName + "\"", "Error", MessageBoxButtons.OK);
                return;
            }
            vtkVolume vol = vtkVolume.New();
            vtkColorTransferFunction ctf  = vtkColorTransferFunction.New();
            vtkPiecewiseFunction     spwf = vtkPiecewiseFunction.New();
            vtkPiecewiseFunction     gpwf = vtkPiecewiseFunction.New();

            reader.SetFileName(m_FileName);
            reader.Update(); // here we read the file actually

            // mapper
            vtkFixedPointVolumeRayCastMapper mapper = vtkFixedPointVolumeRayCastMapper.New();

            mapper.SetInputConnection(reader.GetOutputPort());

            // actor
            vtkActor actor = vtkActor.New();

            //actor.SetMapper(mapper);
            actor.GetProperty().SetRepresentationToWireframe();

            // add our actor to the renderer
            //Set the color curve for the volume
            ctf.AddHSVPoint(0, .67, .07, 1);
            ctf.AddHSVPoint(94, .67, .07, 1);
            ctf.AddHSVPoint(139, 0, 0, 0);
            ctf.AddHSVPoint(160, .28, .047, 1);
            ctf.AddHSVPoint(254, .38, .013, 1);

            //Set the opacity curve for the volume
            spwf.AddPoint(84, 0);
            spwf.AddPoint(151, .1);
            spwf.AddPoint(255, 1);

            //Set the gradient curve for the volume
            gpwf.AddPoint(0, .2);
            gpwf.AddPoint(10, .2);
            gpwf.AddPoint(25, 1);

            vol.GetProperty().SetColor(ctf);
            vol.GetProperty().SetScalarOpacity(spwf);
            vol.GetProperty().SetGradientOpacity(gpwf);

            vol.SetMapper(mapper);

            //Go through the Graphics Pipeline
            m_Renderer.AddVolume(vol);
            m_Renderer.ResetCamera();
            //renderer.AddActor(actor);
            RenderSlicer();
        }
Example #2
0
        /// <summary>
        /// Display the render window with the 3D Volume in it
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void renderWindowControl2_Load(object sender, EventArgs e)
        {
            //Create all the objects for the pipeline
            vtkRenderer                      renderer  = renderWindowControl2.RenderWindow.GetRenderers().GetFirstRenderer();
            vtkXMLImageDataReader            reader    = vtkXMLImageDataReader.New();
            vtkFixedPointVolumeRayCastMapper texMapper = vtkFixedPointVolumeRayCastMapper.New();
            vtkVolume vol = vtkVolume.New();
            vtkColorTransferFunction ctf  = vtkColorTransferFunction.New();
            vtkPiecewiseFunction     spwf = vtkPiecewiseFunction.New();
            vtkPiecewiseFunction     gpwf = vtkPiecewiseFunction.New();

            //Read in the file
            reader.SetFileName(fileName);
            reader.Update();

            //Go through the visulizatin pipeline
            texMapper.SetInputConnection(reader.GetOutputPort());

            //Set the color curve for the volume
            ctf.AddHSVPoint(0, .67, .07, 1);
            ctf.AddHSVPoint(94, .67, .07, 1);
            ctf.AddHSVPoint(139, 0, 0, 0);
            ctf.AddHSVPoint(160, .28, .047, 1);
            ctf.AddHSVPoint(254, .38, .013, 1);

            //Set the opacity curve for the volume
            spwf.AddPoint(84, 0);
            spwf.AddPoint(151, .1);
            spwf.AddPoint(255, 1);

            //Set the gradient curve for the volume
            gpwf.AddPoint(0, .2);
            gpwf.AddPoint(10, .2);
            gpwf.AddPoint(25, 1);

            vol.GetProperty().SetColor(ctf);
            vol.GetProperty().SetScalarOpacity(spwf);
            vol.GetProperty().SetGradientOpacity(gpwf);

            vol.SetMapper(texMapper);

            //Go through the Graphics Pipeline
            renderer.AddVolume(vol);
        }
Example #3
0
    /// <summary>
    /// The main entry method called by the CSharp driver
    /// </summary>
    /// <param name="argv"></param>
    public static void AVTestFixedPointRayCasterNearest(String [] argv)
    {
        //Prefix Content is: ""

        // Create a gaussian[]
        gs = new vtkImageGaussianSource();
        gs.SetWholeExtent((int)0, (int)30, (int)0, (int)30, (int)0, (int)30);
        gs.SetMaximum((double)255.0);
        gs.SetStandardDeviation((double)5);
        gs.SetCenter((double)15, (double)15, (double)15);
        // threshold to leave a gap that should show up for[]
        // gradient opacity[]
        t = new vtkImageThreshold();
        t.SetInputConnection((vtkAlgorithmOutput)gs.GetOutputPort());
        t.ReplaceInOn();
        t.SetInValue((double)0);
        t.ThresholdBetween((double)150, (double)200);
        // Use a shift scale to convert to unsigned char[]
        ss = new vtkImageShiftScale();
        ss.SetInputConnection((vtkAlgorithmOutput)t.GetOutputPort());
        ss.SetOutputScalarTypeToUnsignedChar();
        // grid will be used for two component dependent[]
        grid0 = new vtkImageGridSource();
        grid0.SetDataScalarTypeToUnsignedChar();
        grid0.SetGridSpacing((int)10, (int)10, (int)10);
        grid0.SetLineValue((double)200);
        grid0.SetFillValue((double)10);
        grid0.SetDataExtent((int)0, (int)30, (int)0, (int)30, (int)0, (int)30);
        // use dilation to thicken the grid[]
        d = new vtkImageContinuousDilate3D();
        d.SetInputConnection((vtkAlgorithmOutput)grid0.GetOutputPort());
        d.SetKernelSize((int)3, (int)3, (int)3);
        // Now make a two component dependent[]
        iac = new vtkImageAppendComponents();
        iac.AddInputConnection(d.GetOutputPort());
        iac.AddInputConnection(ss.GetOutputPort());
        // Some more gaussians for the four component indepent case[]
        gs1 = new vtkImageGaussianSource();
        gs1.SetWholeExtent((int)0, (int)30, (int)0, (int)30, (int)0, (int)30);
        gs1.SetMaximum((double)255.0);
        gs1.SetStandardDeviation((double)4);
        gs1.SetCenter((double)5, (double)5, (double)5);
        t1 = new vtkImageThreshold();
        t1.SetInputConnection((vtkAlgorithmOutput)gs1.GetOutputPort());
        t1.ReplaceInOn();
        t1.SetInValue((double)0);
        t1.ThresholdBetween((double)150, (double)256);
        gs2 = new vtkImageGaussianSource();
        gs2.SetWholeExtent((int)0, (int)30, (int)0, (int)30, (int)0, (int)30);
        gs2.SetMaximum((double)255.0);
        gs2.SetStandardDeviation((double)4);
        gs2.SetCenter((double)12, (double)12, (double)12);
        gs3 = new vtkImageGaussianSource();
        gs3.SetWholeExtent((int)0, (int)30, (int)0, (int)30, (int)0, (int)30);
        gs3.SetMaximum((double)255.0);
        gs3.SetStandardDeviation((double)4);
        gs3.SetCenter((double)19, (double)19, (double)19);
        t3 = new vtkImageThreshold();
        t3.SetInputConnection((vtkAlgorithmOutput)gs3.GetOutputPort());
        t3.ReplaceInOn();
        t3.SetInValue((double)0);
        t3.ThresholdBetween((double)150, (double)256);
        gs4 = new vtkImageGaussianSource();
        gs4.SetWholeExtent((int)0, (int)30, (int)0, (int)30, (int)0, (int)30);
        gs4.SetMaximum((double)255.0);
        gs4.SetStandardDeviation((double)4);
        gs4.SetCenter((double)26, (double)26, (double)26);
        //tk window skipped..
        iac1 = new vtkImageAppendComponents();
        iac1.AddInputConnection(t1.GetOutputPort());
        iac1.AddInputConnection(gs2.GetOutputPort());
        iac2 = new vtkImageAppendComponents();
        iac2.AddInputConnection(iac1.GetOutputPort());
        iac2.AddInputConnection(t3.GetOutputPort());
        iac3 = new vtkImageAppendComponents();
        iac3.AddInputConnection(iac2.GetOutputPort());
        iac3.AddInputConnection(gs4.GetOutputPort());
        // create the four component dependend - []
        // use lines in x, y, z for colors[]
        gridR = new vtkImageGridSource();
        gridR.SetDataScalarTypeToUnsignedChar();
        gridR.SetGridSpacing((int)10, (int)100, (int)100);
        gridR.SetLineValue((double)250);
        gridR.SetFillValue((double)100);
        gridR.SetDataExtent((int)0, (int)30, (int)0, (int)30, (int)0, (int)30);
        dR = new vtkImageContinuousDilate3D();
        dR.SetInputConnection((vtkAlgorithmOutput)gridR.GetOutputPort());
        dR.SetKernelSize((int)2, (int)2, (int)2);
        gridG = new vtkImageGridSource();
        gridG.SetDataScalarTypeToUnsignedChar();
        gridG.SetGridSpacing((int)100, (int)10, (int)100);
        gridG.SetLineValue((double)250);
        gridG.SetFillValue((double)100);
        gridG.SetDataExtent((int)0, (int)30, (int)0, (int)30, (int)0, (int)30);
        dG = new vtkImageContinuousDilate3D();
        dG.SetInputConnection((vtkAlgorithmOutput)gridG.GetOutputPort());
        dG.SetKernelSize((int)2, (int)2, (int)2);
        gridB = new vtkImageGridSource();
        gridB.SetDataScalarTypeToUnsignedChar();
        gridB.SetGridSpacing((int)100, (int)100, (int)10);
        gridB.SetLineValue((double)0);
        gridB.SetFillValue((double)250);
        gridB.SetDataExtent((int)0, (int)30, (int)0, (int)30, (int)0, (int)30);
        dB = new vtkImageContinuousDilate3D();
        dB.SetInputConnection((vtkAlgorithmOutput)gridB.GetOutputPort());
        dB.SetKernelSize((int)2, (int)2, (int)2);
        // need some appending[]
        iacRG = new vtkImageAppendComponents();
        iacRG.AddInputConnection(dR.GetOutputPort());
        iacRG.AddInputConnection(dG.GetOutputPort());
        iacRGB = new vtkImageAppendComponents();
        iacRGB.AddInputConnection(iacRG.GetOutputPort());
        iacRGB.AddInputConnection(dB.GetOutputPort());
        iacRGBA = new vtkImageAppendComponents();
        iacRGBA.AddInputConnection(iacRGB.GetOutputPort());
        iacRGBA.AddInputConnection(ss.GetOutputPort());
        // We need a bunch of opacity functions[]
        // this one is a simple ramp to .2[]
        rampPoint2 = new vtkPiecewiseFunction();
        rampPoint2.AddPoint((double)0, (double)0.0);
        rampPoint2.AddPoint((double)255, (double)0.2);
        // this one is a simple ramp to 1[]
        ramp1 = new vtkPiecewiseFunction();
        ramp1.AddPoint((double)0, (double)0.0);
        ramp1.AddPoint((double)255, (double)1.0);
        // this one shows a sharp surface[]
        surface = new vtkPiecewiseFunction();
        surface.AddPoint((double)0, (double)0.0);
        surface.AddPoint((double)10, (double)0.0);
        surface.AddPoint((double)50, (double)1.0);
        surface.AddPoint((double)255, (double)1.0);
        // this one is constant 1[]
        constant1 = new vtkPiecewiseFunction();
        constant1.AddPoint((double)0, (double)1.0);
        constant1.AddPoint((double)255, (double)1.0);
        // this one is used for gradient opacity[]
        gop = new vtkPiecewiseFunction();
        gop.AddPoint((double)0, (double)0.0);
        gop.AddPoint((double)20, (double)0.0);
        gop.AddPoint((double)60, (double)1.0);
        gop.AddPoint((double)255, (double)1.0);
        // We need a bunch of color functions[]
        // This one is a simple rainbow[]
        rainbow = new vtkColorTransferFunction();
        rainbow.SetColorSpaceToHSV();
        rainbow.HSVWrapOff();
        rainbow.AddHSVPoint((double)0, (double)0.1, (double)1.0, (double)1.0);
        rainbow.AddHSVPoint((double)255, (double)0.9, (double)1.0, (double)1.0);
        // this is constant red[]
        red = new vtkColorTransferFunction();
        red.AddRGBPoint((double)0, (double)1, (double)0, (double)0);
        red.AddRGBPoint((double)255, (double)1, (double)0, (double)0);
        // this is constant green[]
        green = new vtkColorTransferFunction();
        green.AddRGBPoint((double)0, (double)0, (double)1, (double)0);
        green.AddRGBPoint((double)255, (double)0, (double)1, (double)0);
        // this is constant blue[]
        blue = new vtkColorTransferFunction();
        blue.AddRGBPoint((double)0, (double)0, (double)0, (double)1);
        blue.AddRGBPoint((double)255, (double)0, (double)0, (double)1);
        // this is constant yellow[]
        yellow = new vtkColorTransferFunction();
        yellow.AddRGBPoint((double)0, (double)1, (double)1, (double)0);
        yellow.AddRGBPoint((double)255, (double)1, (double)1, (double)0);
        ren1   = vtkRenderer.New();
        renWin = vtkRenderWindow.New();
        renWin.AddRenderer((vtkRenderer)ren1);
        renWin.SetSize((int)500, (int)500);
        iren = new vtkRenderWindowInteractor();
        iren.SetRenderWindow((vtkRenderWindow)renWin);
        ren1.GetCullers().InitTraversal();
        culler = (vtkFrustumCoverageCuller)ren1.GetCullers().GetNextItem();
        culler.SetSortingStyleToBackToFront();
        // We need 25 mapper / actor pairs which we will render[]
        // in a grid. Going down we will vary the input data[]
        // with the top row unsigned char, then float, then[]
        // two dependent components, then four dependent components[]
        // then four independent components. Going across we[]
        // will vary the rendering method with MIP, Composite,[]
        // Composite Shade, Composite GO, and Composite GO Shade.[]
        j = 0;
        while ((j) < 5)
        {
            i = 0;
            while ((i) < 5)
            {
                volumeProperty[i, j] = new vtkVolumeProperty();
                volumeMapper[i, j]   = new vtkFixedPointVolumeRayCastMapper();
                volumeMapper[i, j].SetSampleDistance((float)0.25);
                volume[i, j] = new vtkVolume();
                volume[i, j].SetMapper((vtkAbstractVolumeMapper)volumeMapper[i, j]);
                volume[i, j].SetProperty((vtkVolumeProperty)volumeProperty[i, j]);
                volume[i, j].AddPosition((double)i * 30, (double)j * 30, (double)0);
                ren1.AddVolume((vtkProp)volume[i, j]);
                i = i + 1;
            }

            j = j + 1;
        }

        i = 0;
        while ((i) < 5)
        {
            volumeMapper[0, i].SetInputConnection(t.GetOutputPort());
            volumeMapper[1, i].SetInputConnection(ss.GetOutputPort());
            volumeMapper[2, i].SetInputConnection(iac.GetOutputPort());
            volumeMapper[3, i].SetInputConnection(iac3.GetOutputPort());
            volumeMapper[4, i].SetInputConnection(iacRGBA.GetOutputPort());
            volumeMapper[i, 0].SetBlendModeToMaximumIntensity();
            volumeMapper[i, 1].SetBlendModeToComposite();
            volumeMapper[i, 2].SetBlendModeToComposite();
            volumeMapper[i, 3].SetBlendModeToComposite();
            volumeMapper[i, 4].SetBlendModeToComposite();
            volumeProperty[0, i].IndependentComponentsOn();
            volumeProperty[1, i].IndependentComponentsOn();
            volumeProperty[2, i].IndependentComponentsOff();
            volumeProperty[3, i].IndependentComponentsOn();
            volumeProperty[4, i].IndependentComponentsOff();
            volumeProperty[0, i].SetColor(rainbow);
            volumeProperty[0, i].SetScalarOpacity(rampPoint2);
            volumeProperty[0, i].SetGradientOpacity(constant1);
            volumeProperty[1, i].SetColor(rainbow);
            volumeProperty[1, i].SetScalarOpacity(rampPoint2);
            volumeProperty[1, i].SetGradientOpacity(constant1);
            volumeProperty[2, i].SetColor(rainbow);
            volumeProperty[2, i].SetScalarOpacity(rampPoint2);
            volumeProperty[2, i].SetGradientOpacity(constant1);
            volumeProperty[3, i].SetColor(0, red);
            volumeProperty[3, i].SetColor(1, green);
            volumeProperty[3, i].SetColor(2, blue);
            volumeProperty[3, i].SetColor(3, yellow);
            volumeProperty[3, i].SetScalarOpacity(0, rampPoint2);
            volumeProperty[3, i].SetScalarOpacity(1, rampPoint2);
            volumeProperty[3, i].SetScalarOpacity(2, rampPoint2);
            volumeProperty[3, i].SetScalarOpacity(3, rampPoint2);
            volumeProperty[3, i].SetGradientOpacity(0, constant1);
            volumeProperty[3, i].SetGradientOpacity(1, constant1);
            volumeProperty[3, i].SetGradientOpacity(2, constant1);
            volumeProperty[3, i].SetGradientOpacity(3, constant1);
            volumeProperty[3, i].SetComponentWeight(0, 1);
            volumeProperty[3, i].SetComponentWeight(1, 1);
            volumeProperty[3, i].SetComponentWeight(2, 1);
            volumeProperty[3, i].SetComponentWeight(3, 1);
            volumeProperty[4, i].SetColor(rainbow);
            volumeProperty[4, i].SetScalarOpacity(rampPoint2);
            volumeProperty[4, i].SetGradientOpacity(constant1);
            volumeProperty[i, 2].ShadeOn();
            volumeProperty[i, 4].ShadeOn((int)0);
            volumeProperty[i, 4].ShadeOn((int)1);
            volumeProperty[i, 4].ShadeOn((int)2);
            volumeProperty[i, 4].ShadeOn((int)3);
            i = i + 1;
        }

        volumeProperty[0, 0].SetScalarOpacity((vtkPiecewiseFunction)ramp1);
        volumeProperty[1, 0].SetScalarOpacity((vtkPiecewiseFunction)ramp1);
        volumeProperty[2, 0].SetScalarOpacity((vtkPiecewiseFunction)ramp1);
        volumeProperty[3, 0].SetScalarOpacity((int)0, (vtkPiecewiseFunction)surface);
        volumeProperty[3, 0].SetScalarOpacity((int)1, (vtkPiecewiseFunction)surface);
        volumeProperty[3, 0].SetScalarOpacity((int)2, (vtkPiecewiseFunction)surface);
        volumeProperty[3, 0].SetScalarOpacity((int)3, (vtkPiecewiseFunction)surface);
        volumeProperty[4, 0].SetScalarOpacity((vtkPiecewiseFunction)ramp1);
        volumeProperty[0, 2].SetScalarOpacity((vtkPiecewiseFunction)surface);
        volumeProperty[1, 2].SetScalarOpacity((vtkPiecewiseFunction)surface);
        volumeProperty[2, 2].SetScalarOpacity((vtkPiecewiseFunction)surface);
        volumeProperty[3, 2].SetScalarOpacity((int)0, (vtkPiecewiseFunction)surface);
        volumeProperty[3, 2].SetScalarOpacity((int)1, (vtkPiecewiseFunction)surface);
        volumeProperty[3, 2].SetScalarOpacity((int)2, (vtkPiecewiseFunction)surface);
        volumeProperty[3, 2].SetScalarOpacity((int)3, (vtkPiecewiseFunction)surface);
        volumeProperty[4, 2].SetScalarOpacity((vtkPiecewiseFunction)surface);
        volumeProperty[0, 4].SetScalarOpacity((vtkPiecewiseFunction)surface);
        volumeProperty[1, 4].SetScalarOpacity((vtkPiecewiseFunction)surface);
        volumeProperty[2, 4].SetScalarOpacity((vtkPiecewiseFunction)surface);
        volumeProperty[3, 4].SetScalarOpacity((int)0, (vtkPiecewiseFunction)surface);
        volumeProperty[3, 4].SetScalarOpacity((int)1, (vtkPiecewiseFunction)surface);
        volumeProperty[3, 4].SetScalarOpacity((int)2, (vtkPiecewiseFunction)surface);
        volumeProperty[3, 4].SetScalarOpacity((int)3, (vtkPiecewiseFunction)surface);
        volumeProperty[4, 4].SetScalarOpacity((vtkPiecewiseFunction)surface);
        volumeProperty[0, 3].SetGradientOpacity((vtkPiecewiseFunction)gop);
        volumeProperty[1, 3].SetGradientOpacity((vtkPiecewiseFunction)gop);
        volumeProperty[2, 3].SetGradientOpacity((vtkPiecewiseFunction)gop);
        volumeProperty[3, 3].SetGradientOpacity((int)0, (vtkPiecewiseFunction)gop);
        volumeProperty[3, 3].SetGradientOpacity((int)2, (vtkPiecewiseFunction)gop);
        volumeProperty[4, 3].SetGradientOpacity((vtkPiecewiseFunction)gop);
        volumeProperty[3, 3].SetScalarOpacity((int)0, (vtkPiecewiseFunction)ramp1);
        volumeProperty[3, 3].SetScalarOpacity((int)2, (vtkPiecewiseFunction)ramp1);
        volumeProperty[0, 4].SetGradientOpacity((vtkPiecewiseFunction)gop);
        volumeProperty[1, 4].SetGradientOpacity((vtkPiecewiseFunction)gop);
        volumeProperty[2, 4].SetGradientOpacity((vtkPiecewiseFunction)gop);
        volumeProperty[3, 4].SetGradientOpacity((int)0, (vtkPiecewiseFunction)gop);
        volumeProperty[3, 4].SetGradientOpacity((int)2, (vtkPiecewiseFunction)gop);
        volumeProperty[4, 4].SetGradientOpacity((vtkPiecewiseFunction)gop);
        renWin.Render();
        ren1.GetActiveCamera().Dolly((double)1.3);
        ren1.GetActiveCamera().Azimuth((double)15);
        ren1.GetActiveCamera().Elevation((double)5);
        ren1.ResetCameraClippingRange();
        iren.Initialize();

//deleteAllVTKObjects();
    }
    /// <summary>
    /// The main entry method called by the CSharp driver
    /// </summary>
    /// <param name="argv"></param>
    public static void AVgaussian(String [] argv)
    {
        //Prefix Content is: ""

          ren1 = vtkRenderer.New();
          renWin = vtkRenderWindow.New();
          renWin.AddRenderer((vtkRenderer)ren1);
          renWin.SetSize((int)300,(int)300);
          iren = new vtkRenderWindowInteractor();
          iren.SetRenderWindow((vtkRenderWindow)renWin);
          camera = new vtkCamera();
          camera.ParallelProjectionOn();
          camera.SetViewUp((double)0,(double)1,(double)0);
          camera.SetFocalPoint((double)12,(double)10.5,(double)15);
          camera.SetPosition((double)-70,(double)15,(double)34);
          camera.ComputeViewPlaneNormal();
          ren1.SetActiveCamera((vtkCamera)camera);
          // Create the reader for the data[]
          //vtkStructuredPointsReader reader[]
          reader = new vtkGaussianCubeReader();
          reader.SetFileName((string)"" + (VTK_DATA_ROOT.ToString()) + "/Data/m4_TotalDensity.cube");
          reader.SetHBScale((double)1.1);
          reader.SetBScale((double)10);
          reader.Update();
          range = reader.GetGridOutput().GetPointData().GetScalars().GetRange();
          min = (double)(lindex(range,0));
          max = (double)(lindex(range,1));
          readerSS = new vtkImageShiftScale();
          readerSS.SetInput((vtkDataObject)reader.GetGridOutput());
          readerSS.SetShift((double)min*-1);
          readerSS.SetScale((double)255/(max-min));
          readerSS.SetOutputScalarTypeToUnsignedChar();
          bounds = new vtkOutlineFilter();
          bounds.SetInput((vtkDataObject)reader.GetGridOutput());
          boundsMapper = vtkPolyDataMapper.New();
          boundsMapper.SetInputConnection((vtkAlgorithmOutput)bounds.GetOutputPort());
          boundsActor = new vtkActor();
          boundsActor.SetMapper((vtkMapper)boundsMapper);
          boundsActor.GetProperty().SetColor((double)0,(double)0,(double)0);
          contour = new vtkContourFilter();
          contour.SetInput((vtkDataObject)reader.GetGridOutput());
          contour.GenerateValues((int)5,(double)0,(double).05);
          contourMapper = vtkPolyDataMapper.New();
          contourMapper.SetInputConnection((vtkAlgorithmOutput)contour.GetOutputPort());
          contourMapper.SetScalarRange((double)0,(double).1);
          ((vtkLookupTable)contourMapper.GetLookupTable()).SetHueRange(0.32,0);
          contourActor = new vtkActor();
          contourActor.SetMapper((vtkMapper)contourMapper);
          contourActor.GetProperty().SetOpacity((double).5);
          // Create transfer mapping scalar value to opacity[]
          opacityTransferFunction = new vtkPiecewiseFunction();
          opacityTransferFunction.AddPoint((double)0,(double)0.01);
          opacityTransferFunction.AddPoint((double)255,(double)0.35);
          opacityTransferFunction.ClampingOn();
          // Create transfer mapping scalar value to color[]
          colorTransferFunction = new vtkColorTransferFunction();
          colorTransferFunction.AddHSVPoint((double)0.0,(double)0.66,(double)1.0,(double)1.0);
          colorTransferFunction.AddHSVPoint((double)50.0,(double)0.33,(double)1.0,(double)1.0);
          colorTransferFunction.AddHSVPoint((double)100.0,(double)0.00,(double)1.0,(double)1.0);
          // The property describes how the data will look[]
          volumeProperty = new vtkVolumeProperty();
          volumeProperty.SetColor((vtkColorTransferFunction)colorTransferFunction);
          volumeProperty.SetScalarOpacity((vtkPiecewiseFunction)opacityTransferFunction);
          volumeProperty.SetInterpolationTypeToLinear();
          // The mapper / ray cast function know how to render the data[]
          compositeFunction = new vtkVolumeRayCastCompositeFunction();
          volumeMapper = new vtkVolumeRayCastMapper();
          //vtkVolumeTextureMapper2D volumeMapper[]
          volumeMapper.SetVolumeRayCastFunction((vtkVolumeRayCastFunction)compositeFunction);
          volumeMapper.SetInputConnection((vtkAlgorithmOutput)readerSS.GetOutputPort());
          // The volume holds the mapper and the property and[]
          // can be used to position/orient the volume[]
          volume = new vtkVolume();
          volume.SetMapper((vtkAbstractVolumeMapper)volumeMapper);
          volume.SetProperty((vtkVolumeProperty)volumeProperty);
          ren1.AddVolume((vtkProp)volume);
          //ren1 AddActor contourActor[]
          ren1.AddActor((vtkProp)boundsActor);
          //#####################################################################[]
          Sphere = new vtkSphereSource();
          Sphere.SetCenter((double)0,(double)0,(double)0);
          Sphere.SetRadius((double)1);
          Sphere.SetThetaResolution((int)16);
          Sphere.SetStartTheta((double)0);
          Sphere.SetEndTheta((double)360);
          Sphere.SetPhiResolution((int)16);
          Sphere.SetStartPhi((double)0);
          Sphere.SetEndPhi((double)180);
          Glyph = new vtkGlyph3D();
          Glyph.SetInputConnection((vtkAlgorithmOutput)reader.GetOutputPort());
          Glyph.SetOrient((int)1);
          Glyph.SetColorMode((int)1);
          //Glyph ScalingOn[]
          Glyph.SetScaleMode((int)2);
          Glyph.SetScaleFactor((double).6);
          Glyph.SetSource((vtkPolyData)Sphere.GetOutput());
          AtomsMapper = vtkPolyDataMapper.New();
          AtomsMapper.SetInputConnection((vtkAlgorithmOutput)Glyph.GetOutputPort());
          AtomsMapper.SetImmediateModeRendering((int)1);
          AtomsMapper.UseLookupTableScalarRangeOff();
          AtomsMapper.SetScalarVisibility((int)1);
          AtomsMapper.SetScalarModeToDefault();
          Atoms = new vtkActor();
          Atoms.SetMapper((vtkMapper)AtomsMapper);
          Atoms.GetProperty().SetRepresentationToSurface();
          Atoms.GetProperty().SetInterpolationToGouraud();
          Atoms.GetProperty().SetAmbient((double)0.15);
          Atoms.GetProperty().SetDiffuse((double)0.85);
          Atoms.GetProperty().SetSpecular((double)0.1);
          Atoms.GetProperty().SetSpecularPower((double)100);
          Atoms.GetProperty().SetSpecularColor((double)1,(double)1,(double)1);
          Atoms.GetProperty().SetColor((double)1,(double)1,(double)1);
          Tube = new vtkTubeFilter();
          Tube.SetInputConnection((vtkAlgorithmOutput)reader.GetOutputPort());
          Tube.SetNumberOfSides((int)16);
          Tube.SetCapping((int)0);
          Tube.SetRadius((double)0.2);
          Tube.SetVaryRadius((int)0);
          Tube.SetRadiusFactor((double)10);
          BondsMapper = vtkPolyDataMapper.New();
          BondsMapper.SetInputConnection((vtkAlgorithmOutput)Tube.GetOutputPort());
          BondsMapper.SetImmediateModeRendering((int)1);
          BondsMapper.UseLookupTableScalarRangeOff();
          BondsMapper.SetScalarVisibility((int)1);
          BondsMapper.SetScalarModeToDefault();
          Bonds = new vtkActor();
          Bonds.SetMapper((vtkMapper)BondsMapper);
          Bonds.GetProperty().SetRepresentationToSurface();
          Bonds.GetProperty().SetInterpolationToGouraud();
          Bonds.GetProperty().SetAmbient((double)0.15);
          Bonds.GetProperty().SetDiffuse((double)0.85);
          Bonds.GetProperty().SetSpecular((double)0.1);
          Bonds.GetProperty().SetSpecularPower((double)100);
          Bonds.GetProperty().SetSpecularColor((double)1,(double)1,(double)1);
          Bonds.GetProperty().SetColor((double)1,(double)1,(double)1);
          ren1.AddActor((vtkProp)Bonds);
          ren1.AddActor((vtkProp)Atoms);
          //###################################################[]
          ren1.SetBackground((double)1,(double)1,(double)1);
          ren1.ResetCamera();
          renWin.Render();
          //method moved

          renWin.AbortCheckEvt += new Kitware.VTK.vtkObject.vtkObjectEventHandler(TkCheckAbort_Command.Execute);
          iren.Initialize();

        //deleteAllVTKObjects();
    }
    /// <summary>
    /// The main entry method called by the CSharp driver
    /// </summary>
    /// <param name="argv"></param>
    public static void AVTestFixedPointRayCasterNearest(String [] argv)
    {
        //Prefix Content is: ""

          // Create a gaussian[]
          gs = new vtkImageGaussianSource();
          gs.SetWholeExtent((int)0,(int)30,(int)0,(int)30,(int)0,(int)30);
          gs.SetMaximum((double)255.0);
          gs.SetStandardDeviation((double)5);
          gs.SetCenter((double)15,(double)15,(double)15);
          // threshold to leave a gap that should show up for[]
          // gradient opacity[]
          t = new vtkImageThreshold();
          t.SetInputConnection((vtkAlgorithmOutput)gs.GetOutputPort());
          t.ReplaceInOn();
          t.SetInValue((double)0);
          t.ThresholdBetween((double)150,(double)200);
          // Use a shift scale to convert to unsigned char[]
          ss = new vtkImageShiftScale();
          ss.SetInputConnection((vtkAlgorithmOutput)t.GetOutputPort());
          ss.SetOutputScalarTypeToUnsignedChar();
          // grid will be used for two component dependent[]
          grid0 = new vtkImageGridSource();
          grid0.SetDataScalarTypeToUnsignedChar();
          grid0.SetGridSpacing((int)10,(int)10,(int)10);
          grid0.SetLineValue((double)200);
          grid0.SetFillValue((double)10);
          grid0.SetDataExtent((int)0,(int)30,(int)0,(int)30,(int)0,(int)30);
          // use dilation to thicken the grid[]
          d = new vtkImageContinuousDilate3D();
          d.SetInputConnection((vtkAlgorithmOutput)grid0.GetOutputPort());
          d.SetKernelSize((int)3,(int)3,(int)3);
          // Now make a two component dependent[]
          iac = new vtkImageAppendComponents();
          iac.AddInput((vtkDataObject)d.GetOutput());
          iac.AddInput((vtkDataObject)ss.GetOutput());
          // Some more gaussians for the four component indepent case[]
          gs1 = new vtkImageGaussianSource();
          gs1.SetWholeExtent((int)0,(int)30,(int)0,(int)30,(int)0,(int)30);
          gs1.SetMaximum((double)255.0);
          gs1.SetStandardDeviation((double)4);
          gs1.SetCenter((double)5,(double)5,(double)5);
          t1 = new vtkImageThreshold();
          t1.SetInputConnection((vtkAlgorithmOutput)gs1.GetOutputPort());
          t1.ReplaceInOn();
          t1.SetInValue((double)0);
          t1.ThresholdBetween((double)150,(double)256);
          gs2 = new vtkImageGaussianSource();
          gs2.SetWholeExtent((int)0,(int)30,(int)0,(int)30,(int)0,(int)30);
          gs2.SetMaximum((double)255.0);
          gs2.SetStandardDeviation((double)4);
          gs2.SetCenter((double)12,(double)12,(double)12);
          gs3 = new vtkImageGaussianSource();
          gs3.SetWholeExtent((int)0,(int)30,(int)0,(int)30,(int)0,(int)30);
          gs3.SetMaximum((double)255.0);
          gs3.SetStandardDeviation((double)4);
          gs3.SetCenter((double)19,(double)19,(double)19);
          t3 = new vtkImageThreshold();
          t3.SetInputConnection((vtkAlgorithmOutput)gs3.GetOutputPort());
          t3.ReplaceInOn();
          t3.SetInValue((double)0);
          t3.ThresholdBetween((double)150,(double)256);
          gs4 = new vtkImageGaussianSource();
          gs4.SetWholeExtent((int)0,(int)30,(int)0,(int)30,(int)0,(int)30);
          gs4.SetMaximum((double)255.0);
          gs4.SetStandardDeviation((double)4);
          gs4.SetCenter((double)26,(double)26,(double)26);
          //tk window skipped..
          iac1 = new vtkImageAppendComponents();
          iac1.AddInput((vtkDataObject)t1.GetOutput());
          iac1.AddInput((vtkDataObject)gs2.GetOutput());
          iac2 = new vtkImageAppendComponents();
          iac2.AddInput((vtkDataObject)iac1.GetOutput());
          iac2.AddInput((vtkDataObject)t3.GetOutput());
          iac3 = new vtkImageAppendComponents();
          iac3.AddInput((vtkDataObject)iac2.GetOutput());
          iac3.AddInput((vtkDataObject)gs4.GetOutput());
          // create the four component dependend - []
          // use lines in x, y, z for colors[]
          gridR = new vtkImageGridSource();
          gridR.SetDataScalarTypeToUnsignedChar();
          gridR.SetGridSpacing((int)10,(int)100,(int)100);
          gridR.SetLineValue((double)250);
          gridR.SetFillValue((double)100);
          gridR.SetDataExtent((int)0,(int)30,(int)0,(int)30,(int)0,(int)30);
          dR = new vtkImageContinuousDilate3D();
          dR.SetInputConnection((vtkAlgorithmOutput)gridR.GetOutputPort());
          dR.SetKernelSize((int)2,(int)2,(int)2);
          gridG = new vtkImageGridSource();
          gridG.SetDataScalarTypeToUnsignedChar();
          gridG.SetGridSpacing((int)100,(int)10,(int)100);
          gridG.SetLineValue((double)250);
          gridG.SetFillValue((double)100);
          gridG.SetDataExtent((int)0,(int)30,(int)0,(int)30,(int)0,(int)30);
          dG = new vtkImageContinuousDilate3D();
          dG.SetInputConnection((vtkAlgorithmOutput)gridG.GetOutputPort());
          dG.SetKernelSize((int)2,(int)2,(int)2);
          gridB = new vtkImageGridSource();
          gridB.SetDataScalarTypeToUnsignedChar();
          gridB.SetGridSpacing((int)100,(int)100,(int)10);
          gridB.SetLineValue((double)0);
          gridB.SetFillValue((double)250);
          gridB.SetDataExtent((int)0,(int)30,(int)0,(int)30,(int)0,(int)30);
          dB = new vtkImageContinuousDilate3D();
          dB.SetInputConnection((vtkAlgorithmOutput)gridB.GetOutputPort());
          dB.SetKernelSize((int)2,(int)2,(int)2);
          // need some appending[]
          iacRG = new vtkImageAppendComponents();
          iacRG.AddInput((vtkDataObject)dR.GetOutput());
          iacRG.AddInput((vtkDataObject)dG.GetOutput());
          iacRGB = new vtkImageAppendComponents();
          iacRGB.AddInput((vtkDataObject)iacRG.GetOutput());
          iacRGB.AddInput((vtkDataObject)dB.GetOutput());
          iacRGBA = new vtkImageAppendComponents();
          iacRGBA.AddInput((vtkDataObject)iacRGB.GetOutput());
          iacRGBA.AddInput((vtkDataObject)ss.GetOutput());
          // We need a bunch of opacity functions[]
          // this one is a simple ramp to .2[]
          rampPoint2 = new vtkPiecewiseFunction();
          rampPoint2.AddPoint((double)0,(double)0.0);
          rampPoint2.AddPoint((double)255,(double)0.2);
          // this one is a simple ramp to 1[]
          ramp1 = new vtkPiecewiseFunction();
          ramp1.AddPoint((double)0,(double)0.0);
          ramp1.AddPoint((double)255,(double)1.0);
          // this one shows a sharp surface[]
          surface = new vtkPiecewiseFunction();
          surface.AddPoint((double)0,(double)0.0);
          surface.AddPoint((double)10,(double)0.0);
          surface.AddPoint((double)50,(double)1.0);
          surface.AddPoint((double)255,(double)1.0);
          // this one is constant 1[]
          constant1 = new vtkPiecewiseFunction();
          constant1.AddPoint((double)0,(double)1.0);
          constant1.AddPoint((double)255,(double)1.0);
          // this one is used for gradient opacity[]
          gop = new vtkPiecewiseFunction();
          gop.AddPoint((double)0,(double)0.0);
          gop.AddPoint((double)20,(double)0.0);
          gop.AddPoint((double)60,(double)1.0);
          gop.AddPoint((double)255,(double)1.0);
          // We need a bunch of color functions[]
          // This one is a simple rainbow[]
          rainbow = new vtkColorTransferFunction();
          rainbow.SetColorSpaceToHSV();
          rainbow.HSVWrapOff();
          rainbow.AddHSVPoint((double)0,(double)0.1,(double)1.0,(double)1.0);
          rainbow.AddHSVPoint((double)255,(double)0.9,(double)1.0,(double)1.0);
          // this is constant red[]
          red = new vtkColorTransferFunction();
          red.AddRGBPoint((double)0,(double)1,(double)0,(double)0);
          red.AddRGBPoint((double)255,(double)1,(double)0,(double)0);
          // this is constant green[]
          green = new vtkColorTransferFunction();
          green.AddRGBPoint((double)0,(double)0,(double)1,(double)0);
          green.AddRGBPoint((double)255,(double)0,(double)1,(double)0);
          // this is constant blue[]
          blue = new vtkColorTransferFunction();
          blue.AddRGBPoint((double)0,(double)0,(double)0,(double)1);
          blue.AddRGBPoint((double)255,(double)0,(double)0,(double)1);
          // this is constant yellow[]
          yellow = new vtkColorTransferFunction();
          yellow.AddRGBPoint((double)0,(double)1,(double)1,(double)0);
          yellow.AddRGBPoint((double)255,(double)1,(double)1,(double)0);
          ren1 = vtkRenderer.New();
          renWin = vtkRenderWindow.New();
          renWin.AddRenderer((vtkRenderer)ren1);
          renWin.SetSize((int)500,(int)500);
          iren = new vtkRenderWindowInteractor();
          iren.SetRenderWindow((vtkRenderWindow)renWin);
          ren1.GetCullers().InitTraversal();
          culler = (vtkFrustumCoverageCuller)ren1.GetCullers().GetNextItem();
          culler.SetSortingStyleToBackToFront();
          // We need 25 mapper / actor pairs which we will render[]
          // in a grid. Going down we will vary the input data[]
          // with the top row unsigned char, then float, then[]
          // two dependent components, then four dependent components[]
          // then four independent components. Going across we[]
          // will vary the rendering method with MIP, Composite,[]
          // Composite Shade, Composite GO, and Composite GO Shade.[]
          j = 0;
          while((j) < 5)
        {
          i = 0;
          while((i) < 5)
        {
          volumeProperty[i,j] = new vtkVolumeProperty();
          volumeMapper[i,j] = new vtkFixedPointVolumeRayCastMapper();
          volumeMapper[i,j].SetSampleDistance((float)0.25);
          volume[i,j] = new vtkVolume();
          volume[i,j].SetMapper((vtkAbstractVolumeMapper)volumeMapper[i,j]);
          volume[i,j].SetProperty((vtkVolumeProperty)volumeProperty[i,j]);
          volume[i,j].AddPosition((double)i*30,(double)j*30,(double)0);
          ren1.AddVolume((vtkProp)volume[i,j]);
          i = i + 1;
        }

          j = j + 1;
        }

          i = 0;
          while((i) < 5)
        {
          volumeMapper[0,i].SetInputConnection(t.GetOutputPort());
          volumeMapper[1,i].SetInputConnection(ss.GetOutputPort());
          volumeMapper[2,i].SetInputConnection(iac.GetOutputPort());
          volumeMapper[3,i].SetInputConnection(iac3.GetOutputPort());
          volumeMapper[4,i].SetInputConnection(iacRGBA.GetOutputPort());
          volumeMapper[i,0].SetBlendModeToMaximumIntensity();
          volumeMapper[i,1].SetBlendModeToComposite();
          volumeMapper[i,2].SetBlendModeToComposite();
          volumeMapper[i,3].SetBlendModeToComposite();
          volumeMapper[i,4].SetBlendModeToComposite();
          volumeProperty[0,i].IndependentComponentsOn();
          volumeProperty[1,i].IndependentComponentsOn();
          volumeProperty[2,i].IndependentComponentsOff();
          volumeProperty[3,i].IndependentComponentsOn();
          volumeProperty[4,i].IndependentComponentsOff();
          volumeProperty[0,i].SetColor(rainbow);
          volumeProperty[0,i].SetScalarOpacity(rampPoint2);
          volumeProperty[0,i].SetGradientOpacity(constant1);
          volumeProperty[1,i].SetColor(rainbow);
          volumeProperty[1,i].SetScalarOpacity(rampPoint2);
          volumeProperty[1,i].SetGradientOpacity(constant1);
          volumeProperty[2,i].SetColor(rainbow);
          volumeProperty[2,i].SetScalarOpacity(rampPoint2);
          volumeProperty[2,i].SetGradientOpacity(constant1);
          volumeProperty[3,i].SetColor(0, red);
          volumeProperty[3,i].SetColor(1, green);
          volumeProperty[3,i].SetColor(2, blue );
          volumeProperty[3,i].SetColor(3, yellow);
          volumeProperty[3,i].SetScalarOpacity(0,rampPoint2);
          volumeProperty[3,i].SetScalarOpacity(1,rampPoint2);
          volumeProperty[3,i].SetScalarOpacity(2,rampPoint2);
          volumeProperty[3,i].SetScalarOpacity(3,rampPoint2);
          volumeProperty[3,i].SetGradientOpacity(0,constant1);
          volumeProperty[3,i].SetGradientOpacity(1,constant1);
          volumeProperty[3,i].SetGradientOpacity(2,constant1);
          volumeProperty[3,i].SetGradientOpacity(3,constant1);
          volumeProperty[3,i].SetComponentWeight(0,1);
          volumeProperty[3,i].SetComponentWeight(1,1);
          volumeProperty[3,i].SetComponentWeight(2,1);
          volumeProperty[3,i].SetComponentWeight(3,1);
          volumeProperty[4,i].SetColor(rainbow);
          volumeProperty[4,i].SetScalarOpacity(rampPoint2);
          volumeProperty[4,i].SetGradientOpacity(constant1);
          volumeProperty[i,2].ShadeOn();
          volumeProperty[i,4].ShadeOn((int)0);
          volumeProperty[i,4].ShadeOn((int)1);
          volumeProperty[i,4].ShadeOn((int)2);
          volumeProperty[i,4].ShadeOn((int)3);
          i = i + 1;
        }

          volumeProperty[0,0].SetScalarOpacity((vtkPiecewiseFunction)ramp1);
          volumeProperty[1,0].SetScalarOpacity((vtkPiecewiseFunction)ramp1);
          volumeProperty[2,0].SetScalarOpacity((vtkPiecewiseFunction)ramp1);
          volumeProperty[3,0].SetScalarOpacity((int)0,(vtkPiecewiseFunction)surface);
          volumeProperty[3,0].SetScalarOpacity((int)1,(vtkPiecewiseFunction)surface);
          volumeProperty[3,0].SetScalarOpacity((int)2,(vtkPiecewiseFunction)surface);
          volumeProperty[3,0].SetScalarOpacity((int)3,(vtkPiecewiseFunction)surface);
          volumeProperty[4,0].SetScalarOpacity((vtkPiecewiseFunction)ramp1);
          volumeProperty[0,2].SetScalarOpacity((vtkPiecewiseFunction)surface);
          volumeProperty[1,2].SetScalarOpacity((vtkPiecewiseFunction)surface);
          volumeProperty[2,2].SetScalarOpacity((vtkPiecewiseFunction)surface);
          volumeProperty[3,2].SetScalarOpacity((int)0,(vtkPiecewiseFunction)surface);
          volumeProperty[3,2].SetScalarOpacity((int)1,(vtkPiecewiseFunction)surface);
          volumeProperty[3,2].SetScalarOpacity((int)2,(vtkPiecewiseFunction)surface);
          volumeProperty[3,2].SetScalarOpacity((int)3,(vtkPiecewiseFunction)surface);
          volumeProperty[4,2].SetScalarOpacity((vtkPiecewiseFunction)surface);
          volumeProperty[0,4].SetScalarOpacity((vtkPiecewiseFunction)surface);
          volumeProperty[1,4].SetScalarOpacity((vtkPiecewiseFunction)surface);
          volumeProperty[2,4].SetScalarOpacity((vtkPiecewiseFunction)surface);
          volumeProperty[3,4].SetScalarOpacity((int)0,(vtkPiecewiseFunction)surface);
          volumeProperty[3,4].SetScalarOpacity((int)1,(vtkPiecewiseFunction)surface);
          volumeProperty[3,4].SetScalarOpacity((int)2,(vtkPiecewiseFunction)surface);
          volumeProperty[3,4].SetScalarOpacity((int)3,(vtkPiecewiseFunction)surface);
          volumeProperty[4,4].SetScalarOpacity((vtkPiecewiseFunction)surface);
          volumeProperty[0,3].SetGradientOpacity((vtkPiecewiseFunction)gop);
          volumeProperty[1,3].SetGradientOpacity((vtkPiecewiseFunction)gop);
          volumeProperty[2,3].SetGradientOpacity((vtkPiecewiseFunction)gop);
          volumeProperty[3,3].SetGradientOpacity((int)0,(vtkPiecewiseFunction)gop);
          volumeProperty[3,3].SetGradientOpacity((int)2,(vtkPiecewiseFunction)gop);
          volumeProperty[4,3].SetGradientOpacity((vtkPiecewiseFunction)gop);
          volumeProperty[3,3].SetScalarOpacity((int)0,(vtkPiecewiseFunction)ramp1);
          volumeProperty[3,3].SetScalarOpacity((int)2,(vtkPiecewiseFunction)ramp1);
          volumeProperty[0,4].SetGradientOpacity((vtkPiecewiseFunction)gop);
          volumeProperty[1,4].SetGradientOpacity((vtkPiecewiseFunction)gop);
          volumeProperty[2,4].SetGradientOpacity((vtkPiecewiseFunction)gop);
          volumeProperty[3,4].SetGradientOpacity((int)0,(vtkPiecewiseFunction)gop);
          volumeProperty[3,4].SetGradientOpacity((int)2,(vtkPiecewiseFunction)gop);
          volumeProperty[4,4].SetGradientOpacity((vtkPiecewiseFunction)gop);
          renWin.Render();
          ren1.GetActiveCamera().Dolly((double)1.3);
          ren1.GetActiveCamera().Azimuth((double)15);
          ren1.GetActiveCamera().Elevation((double)5);
          ren1.ResetCameraClippingRange();
          iren.Initialize();

        //deleteAllVTKObjects();
    }
Example #6
0
    /// <summary>
    /// The main entry method called by the CSharp driver
    /// </summary>
    /// <param name="argv"></param>
    public static void AVgaussian(String [] argv)
    {
        //Prefix Content is: ""

        ren1   = vtkRenderer.New();
        renWin = vtkRenderWindow.New();
        renWin.SetMultiSamples(0);
        renWin.AddRenderer((vtkRenderer)ren1);
        renWin.SetSize((int)300, (int)300);
        iren = new vtkRenderWindowInteractor();
        iren.SetRenderWindow((vtkRenderWindow)renWin);
        camera = new vtkCamera();
        camera.ParallelProjectionOn();
        camera.SetViewUp((double)0, (double)1, (double)0);
        camera.SetFocalPoint((double)12, (double)10.5, (double)15);
        camera.SetPosition((double)-70, (double)15, (double)34);
        camera.ComputeViewPlaneNormal();
        ren1.SetActiveCamera((vtkCamera)camera);
        // Create the reader for the data[]
        //vtkStructuredPointsReader reader[]
        reader = new vtkGaussianCubeReader();
        reader.SetFileName((string)"" + (VTK_DATA_ROOT.ToString()) + "/Data/m4_TotalDensity.cube");
        reader.SetHBScale((double)1.1);
        reader.SetBScale((double)10);
        reader.Update();
        range    = reader.GetGridOutput().GetPointData().GetScalars().GetRange();
        min      = (double)(lindex(range, 0));
        max      = (double)(lindex(range, 1));
        readerSS = new vtkImageShiftScale();
        readerSS.SetInputData((vtkDataObject)reader.GetGridOutput());
        readerSS.SetShift((double)min * -1);
        readerSS.SetScale((double)255 / (max - min));
        readerSS.SetOutputScalarTypeToUnsignedChar();
        bounds = new vtkOutlineFilter();
        bounds.SetInputData((vtkDataObject)reader.GetGridOutput());
        boundsMapper = vtkPolyDataMapper.New();
        boundsMapper.SetInputConnection((vtkAlgorithmOutput)bounds.GetOutputPort());
        boundsActor = new vtkActor();
        boundsActor.SetMapper((vtkMapper)boundsMapper);
        boundsActor.GetProperty().SetColor((double)0, (double)0, (double)0);
        contour = new vtkContourFilter();
        contour.SetInputData((vtkDataObject)reader.GetGridOutput());
        contour.GenerateValues((int)5, (double)0, (double).05);
        contourMapper = vtkPolyDataMapper.New();
        contourMapper.SetInputConnection((vtkAlgorithmOutput)contour.GetOutputPort());
        contourMapper.SetScalarRange((double)0, (double).1);
        ((vtkLookupTable)contourMapper.GetLookupTable()).SetHueRange(0.32, 0);
        contourActor = new vtkActor();
        contourActor.SetMapper((vtkMapper)contourMapper);
        contourActor.GetProperty().SetOpacity((double).5);
        // Create transfer mapping scalar value to opacity[]
        opacityTransferFunction = new vtkPiecewiseFunction();
        opacityTransferFunction.AddPoint((double)0, (double)0.01);
        opacityTransferFunction.AddPoint((double)255, (double)0.35);
        opacityTransferFunction.ClampingOn();
        // Create transfer mapping scalar value to color[]
        colorTransferFunction = new vtkColorTransferFunction();
        colorTransferFunction.AddHSVPoint((double)0.0, (double)0.66, (double)1.0, (double)1.0);
        colorTransferFunction.AddHSVPoint((double)50.0, (double)0.33, (double)1.0, (double)1.0);
        colorTransferFunction.AddHSVPoint((double)100.0, (double)0.00, (double)1.0, (double)1.0);
        // The property describes how the data will look[]
        volumeProperty = new vtkVolumeProperty();
        volumeProperty.SetColor((vtkColorTransferFunction)colorTransferFunction);
        volumeProperty.SetScalarOpacity((vtkPiecewiseFunction)opacityTransferFunction);
        volumeProperty.SetInterpolationTypeToLinear();
        // The mapper / ray cast function know how to render the data[]
        compositeFunction = new vtkVolumeRayCastCompositeFunction();
        volumeMapper      = new vtkVolumeRayCastMapper();
        //vtkVolumeTextureMapper2D volumeMapper[]
        volumeMapper.SetVolumeRayCastFunction((vtkVolumeRayCastFunction)compositeFunction);
        volumeMapper.SetInputConnection((vtkAlgorithmOutput)readerSS.GetOutputPort());
        // The volume holds the mapper and the property and[]
        // can be used to position/orient the volume[]
        volume = new vtkVolume();
        volume.SetMapper((vtkAbstractVolumeMapper)volumeMapper);
        volume.SetProperty((vtkVolumeProperty)volumeProperty);
        ren1.AddVolume((vtkProp)volume);
        //ren1 AddActor contourActor[]
        ren1.AddActor((vtkProp)boundsActor);
        //#####################################################################[]
        Sphere = new vtkSphereSource();
        Sphere.SetCenter((double)0, (double)0, (double)0);
        Sphere.SetRadius((double)1);
        Sphere.SetThetaResolution((int)16);
        Sphere.SetStartTheta((double)0);
        Sphere.SetEndTheta((double)360);
        Sphere.SetPhiResolution((int)16);
        Sphere.SetStartPhi((double)0);
        Sphere.SetEndPhi((double)180);
        Glyph = new vtkGlyph3D();
        Glyph.SetInputConnection((vtkAlgorithmOutput)reader.GetOutputPort());
        Glyph.SetOrient((int)1);
        Glyph.SetColorMode((int)1);
        //Glyph ScalingOn[]
        Glyph.SetScaleMode((int)2);
        Glyph.SetScaleFactor((double).6);
        Glyph.SetSourceConnection(Sphere.GetOutputPort());
        AtomsMapper = vtkPolyDataMapper.New();
        AtomsMapper.SetInputConnection((vtkAlgorithmOutput)Glyph.GetOutputPort());
        AtomsMapper.SetImmediateModeRendering((int)1);
        AtomsMapper.UseLookupTableScalarRangeOff();
        AtomsMapper.SetScalarVisibility((int)1);
        AtomsMapper.SetScalarModeToDefault();
        Atoms = new vtkActor();
        Atoms.SetMapper((vtkMapper)AtomsMapper);
        Atoms.GetProperty().SetRepresentationToSurface();
        Atoms.GetProperty().SetInterpolationToGouraud();
        Atoms.GetProperty().SetAmbient((double)0.15);
        Atoms.GetProperty().SetDiffuse((double)0.85);
        Atoms.GetProperty().SetSpecular((double)0.1);
        Atoms.GetProperty().SetSpecularPower((double)100);
        Atoms.GetProperty().SetSpecularColor((double)1, (double)1, (double)1);
        Atoms.GetProperty().SetColor((double)1, (double)1, (double)1);
        Tube = new vtkTubeFilter();
        Tube.SetInputConnection((vtkAlgorithmOutput)reader.GetOutputPort());
        Tube.SetNumberOfSides((int)16);
        Tube.SetCapping((int)0);
        Tube.SetRadius((double)0.2);
        Tube.SetVaryRadius((int)0);
        Tube.SetRadiusFactor((double)10);
        BondsMapper = vtkPolyDataMapper.New();
        BondsMapper.SetInputConnection((vtkAlgorithmOutput)Tube.GetOutputPort());
        BondsMapper.SetImmediateModeRendering((int)1);
        BondsMapper.UseLookupTableScalarRangeOff();
        BondsMapper.SetScalarVisibility((int)1);
        BondsMapper.SetScalarModeToDefault();
        Bonds = new vtkActor();
        Bonds.SetMapper((vtkMapper)BondsMapper);
        Bonds.GetProperty().SetRepresentationToSurface();
        Bonds.GetProperty().SetInterpolationToGouraud();
        Bonds.GetProperty().SetAmbient((double)0.15);
        Bonds.GetProperty().SetDiffuse((double)0.85);
        Bonds.GetProperty().SetSpecular((double)0.1);
        Bonds.GetProperty().SetSpecularPower((double)100);
        Bonds.GetProperty().SetSpecularColor((double)1, (double)1, (double)1);
        Bonds.GetProperty().SetColor((double)1, (double)1, (double)1);
        ren1.AddActor((vtkProp)Bonds);
        ren1.AddActor((vtkProp)Atoms);
        //###################################################[]
        ren1.SetBackground((double)1, (double)1, (double)1);
        ren1.ResetCamera();
        renWin.Render();
        //method moved

        renWin.AbortCheckEvt += new Kitware.VTK.vtkObject.vtkObjectEventHandler(TkCheckAbort_Command.Execute);
        iren.Initialize();

//deleteAllVTKObjects();
    }