Exemplo n.º 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();
        }
        /// <summary>
        /// 进行可视化
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void VisiualizeSlicesWnd_Load(object sender, EventArgs e)
        {
            vtkRenderer renderer = rwcShowSlices.RenderWindow.GetRenderers().GetFirstRenderer();

            renderer.SetBackground(1, 1, 1);
            //CuteTools.ShowImageSeries(fnFormat, height, width, startIndex, endIndex, renderer);
            //return;

            vtkBMPReader reader = vtkBMPReader.New();

            reader.SetFilePattern(fnFormat);

            reader.SetDataExtent(0, height - 1, 0, width - 1, startIndex, endIndex);

            reader.SetDataScalarTypeToUnsignedChar();
            reader.Update();

            vol = vtkVolume.New();

            vtkFixedPointVolumeRayCastMapper texMapper = vtkFixedPointVolumeRayCastMapper.New();

            texMapper.SetInput(reader.GetOutput());
            vol.SetMapper(texMapper);

            colorTransferFunction = vtkColorTransferFunction.New();
            colorTransferFunction.AddRGBPoint(0, tbR1.Value * 1.0 / 255, tbG1.Value * 1.0 / 255, tbB1.Value * 1.0 / 255);
            colorTransferFunction.AddRGBPoint(1, tbR2.Value * 1.0 / 255, tbG2.Value * 1.0 / 255, tbB2.Value * 1.0 / 255);
            colorTransferFunction.ClampingOn();

            vpro = vtkVolumeProperty.New();
            vtkPiecewiseFunction compositeOpacity = vtkPiecewiseFunction.New();

            compositeOpacity.AddPoint(0, 0);
            //compositeOpacity.AddPoint(120.0, 0.5);
            compositeOpacity.AddPoint(255.0, 1);
            compositeOpacity.ClampingOn();
            vpro.SetScalarOpacity(compositeOpacity);
            vpro.SetColor(colorTransferFunction);
            //vpro.SetInterpolationTypeToLinear();
            vpro.SetInterpolationTypeToNearest();
            //vpro.ShadeOn();
            vol.SetProperty(vpro);


            //画轴距图
            vol.SetOrientation(45, 45, 0);


            //rwcShowSlices.RenderWindow.GetRenderers().GetFirstRenderer().AddVolume( vol );

            rwcShowSlices.Refresh();
        }
Exemplo n.º 3
0
        private vtkProp CreateVolumeRendering()
        {
            _opacityTransferFunction = new vtkPiecewiseFunction();
            _opacityTransferFunction.ClampingOff();

            _colorTransferFunction = new vtkColorTransferFunction();
            _colorTransferFunction.SetColorSpaceToRGB();
            _colorTransferFunction.ClampingOff();

            SetOpacityTransferFunction();
            SetColorTransferFunction();

            vtkVolumeProperty volumeProperty = new vtkVolumeProperty();

            volumeProperty.ShadeOn();
            volumeProperty.SetInterpolationTypeToLinear();
            volumeProperty.SetColor(_colorTransferFunction);
            volumeProperty.SetScalarOpacity(_opacityTransferFunction);
            volumeProperty.SetDiffuse(0.7);
            volumeProperty.SetAmbient(0.1);
            volumeProperty.SetSpecular(.3);
            volumeProperty.SetSpecularPower(20);

            //vtkOpenGLVolumeTextureMapper2D volumeMapper = new vtkOpenGLVolumeTextureMapper2D();
            //vtkOpenGLVolumeTextureMapper3D volumeMapper = new vtkOpenGLVolumeTextureMapper3D();
            //volumeMapper.SetPreferredMethodToNVidia();
            //volumeMapper.SetSampleDistance(1.0f);
            //int supported = volumeMapper.IsRenderSupported(volumeProperty);

            vtkFixedPointVolumeRayCastMapper volumeMapper = new vtkFixedPointVolumeRayCastMapper();

            //vtkVolumeRayCastMapper volumeMapper = new vtkVolumeRayCastMapper();
            volumeMapper.SetInput(_volumeLayer.GetImageData());
            ////vtkVolumeRayCastCompositeFunction rayCastFunction = new vtkVolumeRayCastCompositeFunction();
            ////volumeMapper.SetVolumeRayCastFunction(rayCastFunction);
            //vtkVolumeRayCastIsosurfaceFunction rayCastFunction = new vtkVolumeRayCastIsosurfaceFunction();
            //volumeMapper.SetVolumeRayCastFunction(rayCastFunction);

            _vtkVolume = new vtkVolume();
            _vtkVolume.SetMapper(volumeMapper);
            _vtkVolume.SetProperty(volumeProperty);

            return(_vtkVolume);
        }
Exemplo n.º 4
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);
        }
Exemplo n.º 5
0
		private vtkProp CreateVolumeRendering()
		{
			_opacityTransferFunction = new vtkPiecewiseFunction();
			_opacityTransferFunction.ClampingOff();

			_colorTransferFunction = new vtkColorTransferFunction();
			_colorTransferFunction.SetColorSpaceToRGB();
			_colorTransferFunction.ClampingOff();

			SetOpacityTransferFunction();
			SetColorTransferFunction();

			vtkVolumeProperty volumeProperty = new vtkVolumeProperty();
			volumeProperty.ShadeOn();
			volumeProperty.SetInterpolationTypeToLinear();
			volumeProperty.SetColor(_colorTransferFunction);
			volumeProperty.SetScalarOpacity(_opacityTransferFunction);
			volumeProperty.SetDiffuse(0.7);
			volumeProperty.SetAmbient(0.1);
			volumeProperty.SetSpecular(.3);
			volumeProperty.SetSpecularPower(20);

			//vtkOpenGLVolumeTextureMapper2D volumeMapper = new vtkOpenGLVolumeTextureMapper2D();
			//vtkOpenGLVolumeTextureMapper3D volumeMapper = new vtkOpenGLVolumeTextureMapper3D();
			//volumeMapper.SetPreferredMethodToNVidia();
			//volumeMapper.SetSampleDistance(1.0f);
			//int supported = volumeMapper.IsRenderSupported(volumeProperty);

			vtkFixedPointVolumeRayCastMapper volumeMapper = new vtkFixedPointVolumeRayCastMapper();
			//vtkVolumeRayCastMapper volumeMapper = new vtkVolumeRayCastMapper();
			volumeMapper.SetInput(_volumeLayer.GetImageData());
			////vtkVolumeRayCastCompositeFunction rayCastFunction = new vtkVolumeRayCastCompositeFunction();
			////volumeMapper.SetVolumeRayCastFunction(rayCastFunction);
			//vtkVolumeRayCastIsosurfaceFunction rayCastFunction = new vtkVolumeRayCastIsosurfaceFunction();
			//volumeMapper.SetVolumeRayCastFunction(rayCastFunction);

			_vtkVolume = new vtkVolume();
			_vtkVolume.SetMapper(volumeMapper);
			_vtkVolume.SetProperty(volumeProperty);

			return _vtkVolume;
		}
 public virtual void GenerateImage(int arg0, int arg1, vtkVolume arg2, vtkFixedPointVolumeRayCastMapper arg3)
 {
     vtkFixedPointVolumeRayCastHelper.vtkFixedPointVolumeRayCastHelper_GenerateImage_01(base.GetCppThis(), arg0, arg1, (arg2 == null) ? default(HandleRef) : arg2.GetCppThis(), (arg3 == null) ? default(HandleRef) : arg3.GetCppThis());
 }
Exemplo n.º 7
0
 public override void GenerateImage(int threadID, int threadCount, vtkVolume vol, vtkFixedPointVolumeRayCastMapper mapper)
 {
     vtkFixedPointVolumeRayCastCompositeGOShadeHelper.vtkFixedPointVolumeRayCastCompositeGOShadeHelper_GenerateImage_01(base.GetCppThis(), threadID, threadCount, (vol == null) ? default(HandleRef) : vol.GetCppThis(), (mapper == null) ? default(HandleRef) : mapper.GetCppThis());
 }
Exemplo n.º 8
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> A Set Method for Static Variables </summary>
 public static void SetvolumeMapper(vtkFixedPointVolumeRayCastMapper[,] toSet)
 {
     volumeMapper = toSet;
 }
    /// <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();
    }
Exemplo n.º 11
0
        /// <summary>
        ///
        /// <summary>
        /// 用体绘制的方法绘制一系列的图像
        /// </summary>
        /// <param name="format">图像文件的字符串格式</param>
        /// <param name="height">一幅图像的高度</param>
        /// <param name="width">高度</param>
        /// <param name="startIndex">起始index</param>
        /// <param name="endIndex">末尾index</param>
        /// <param name="r">renderer,如果非空,则将其体绘制结果添加到这里面来</param>
        /// example:
        ///     CuteTools.ShowImageSeries(@"initial/%03d.bmp",64, 64, 0, 62);
        public static void ShowImageSeries(string format, int height, int width, int startIndex, int endIndex, vtkRenderer r = null)
        {
            if (format == null || format.Count() <= 4 || (!format.Substring(format.Count() - 3, 3).Equals("bmp")))
            {
                Console.WriteLine("image filename is not correct!!");
                return;
            }

            vtkBMPReader reader = vtkBMPReader.New();

            reader.SetFilePattern(format);

            reader.SetDataExtent(0, height - 1, 0, width - 1, startIndex, endIndex);

            reader.SetDataScalarTypeToUnsignedChar();
            reader.Update();

            vtkVolume vol = vtkVolume.New();

            vtkFixedPointVolumeRayCastMapper texMapper = vtkFixedPointVolumeRayCastMapper.New();

            texMapper.SetInput(reader.GetOutput());
            vol.SetMapper(texMapper);

            vtkColorTransferFunction colorTransferFunction = vtkColorTransferFunction.New();

            colorTransferFunction.AddRGBPoint(0.0, 0.0, 255.0, 0.0);
            //colorTransferFunction.AddRGBPoint(120.0, 0.0, 0.0, 1.0);
            //colorTransferFunction.AddRGBPoint(160.0, 1.0, 0.0, 0.0);
            //colorTransferFunction.AddRGBPoint(200.0, 0.0, 1.0, 0.0);
            colorTransferFunction.AddRGBPoint(255, 0, 0, 1.0);
            colorTransferFunction.ClampingOn();

            vtkVolumeProperty    vpro             = vtkVolumeProperty.New();
            vtkPiecewiseFunction compositeOpacity = vtkPiecewiseFunction.New();

            compositeOpacity.AddPoint(80, 1);
            compositeOpacity.AddPoint(120, 0.2);
            compositeOpacity.AddPoint(255, 0);
            compositeOpacity.ClampingOn();
            vpro.SetScalarOpacity(compositeOpacity);
            //vpro.SetColor( colorTransferFunction );
            vpro.SetInterpolationTypeToLinear();
            //vpro.ShadeOn();
            vol.SetProperty(vpro);

            //画轴距图
            vol.SetOrientation(45, 45, 0);

            if (r != null)
            {
                r.AddVolume(vol);
            }
            else
            {
                vtkRenderer render = vtkRenderer.New();
                render.AddVolume(vol);
                render.SetBackground(1, 1, 1);

                vtkRenderWindow wnd = vtkRenderWindow.New();
                wnd.AddRenderer(render);

                vtkRenderWindowInteractor inter = vtkRenderWindowInteractor.New();
                inter.SetRenderWindow(wnd);

                inter.Initialize();
                inter.Start();
            }
        }
Exemplo n.º 12
0
        private void DrawTest()
        {
            vtkProp3D      prop3D;
            vtkActor       actor       = vtkActor.New();
            vtkActor2D     actor2D     = vtkActor2D.New();
            vtkLODActor    lODActor    = vtkLODActor.New();
            vtkLODProp3D   lodProp3d   = vtkLODProp3D.New();
            vtkCamera      camera      = vtkCamera.New();
            vtkCameraActor cameraActor = vtkCameraActor.New();
            vtkLight       light       = vtkLight.New();
            vtkLightActor  lightActor  = vtkLightActor.New();
            vtkPicker      picker      = vtkPicker.New();
            vtkPointPicker pointPicker = vtkPointPicker.New();
            vtkCellPicker  cellPicker  = vtkCellPicker.New();
            vtkAreaPicker  areaPicker  = vtkAreaPicker.New();

            vtkAssembly   assembly   = vtkAssembly.New();
            vtkConeSource coneSource = vtkConeSource.New();
            vtkCone       cone       = vtkCone.New();

            vtkArcSource   arcSource   = vtkArcSource.New();
            vtkLineSource  lineSource  = vtkLineSource.New();
            vtkPointSource pointSource = vtkPointSource.New();

            vtkPolyData                 polyData                 = vtkPolyData.New();
            vtkArrayReader              arrayReader              = vtkArrayReader.New();
            vtkArrayDataReader          arrayDataReader          = vtkArrayDataReader.New();
            vtkArrayWriter              arrayWriter              = vtkArrayWriter.New();
            vtkRenderWindowInteractor   renderWindowInteractor   = vtkRenderWindowInteractor.New();
            vtkRenderWindowInteractor3D renderWindowInteractor3D = vtkRenderWindowInteractor3D.New();
            vtkInteractorStyle          interactorStyle          = vtkInteractorStyle.New();
            vtkInteractorStyle3D        interactorStyle3D        = vtkInteractorStyle3D.New();
            vtkInteractorStyleFlight    interactorStyleFlight    = vtkInteractorStyleFlight.New();
            vtkInteractorStyleTrackball interactorStyleTrackball = vtkInteractorStyleTrackball.New();

            vtkVolume                              volume = vtkVolume.New();
            vtkVolumeMapper                        volumeMapper;
            vtkSmartVolumeMapper                   smartVolumeMapper = vtkSmartVolumeMapper.New();
            vtkUnstructuredGridVolumeMapper        unstructuredGridVolumeMapper;
            vtkUnstructuredGridVolumeRayCastMapper unstructuredGridVolumeRayCastMapper = vtkUnstructuredGridVolumeRayCastMapper.New();
            vtkGPUVolumeRayCastMapper              gPUVolumeRayCastMapper       = vtkGPUVolumeRayCastMapper.New();
            vtkVolumeRayCastMapper                 volumeRayCastMapper          = vtkVolumeRayCastMapper.New();
            vtkFixedPointVolumeRayCastMapper       pointVolumeRayCastMapper     = vtkFixedPointVolumeRayCastMapper.New();
            vtkOpenGLGPUVolumeRayCastMapper        openGLGPUVolumeRayCastMapper = vtkOpenGLGPUVolumeRayCastMapper.New();
            vtkVolumeProperty                      volumeProperty = vtkVolumeProperty.New();

            vtkTexture    texture    = vtkTexture.New();
            vtkCoordinate coordinate = vtkCoordinate.New();
            vtkImageData  vtkImage   = vtkImageData.New();

            vtkBMPReader  bMPReader  = vtkBMPReader.New();
            vtkJPEGReader jPEGReader = vtkJPEGReader.New();
            vtkPNGReader  pNGReader  = vtkPNGReader.New();
            vtkTIFFReader tIFFReader = vtkTIFFReader.New();
            vtkOBJReader  oBJReader  = vtkOBJReader.New();


            vtkContourFilter                 contourFilter                 = vtkContourFilter.New();
            vtkSynchronizedTemplates2D       synchronizedTemplates2D       = vtkSynchronizedTemplates2D.New();
            vtkSynchronizedTemplates3D       synchronizedTemplates3D       = vtkSynchronizedTemplates3D.New();
            vtkSynchronizedTemplatesCutter3D synchronizedTemplatesCutter3D = vtkSynchronizedTemplatesCutter3D.New();

            vtkImageMapper        imageMapper        = vtkImageMapper.New();
            vtkImageSliceMapper   imageSliceMapper   = vtkImageSliceMapper.New();
            vtkImageResliceMapper imageResliceMapper = vtkImageResliceMapper.New();

            vtkStructuredGridReader structuredGridReader = vtkStructuredGridReader.New();
            vtkRungeKutta4          integ                      = vtkRungeKutta4.New();
            vtkStreamTracer         streamer                   = vtkStreamTracer.New();
            vtkTubeFilter           streamTube                 = vtkTubeFilter.New();
            vtkRuledSurfaceFilter   ruledSurfaceFilter         = vtkRuledSurfaceFilter.New();
            vtkPlane                   plane                   = vtkPlane.New();
            vtkCutter                  cutter                  = new vtkCutter();
            vtkMergeFilter             mergeFilter             = vtkMergeFilter.New();
            vtkImageLuminance          imageLuminance          = vtkImageLuminance.New();
            vtkImageDataGeometryFilter imageDataGeometryFilter = vtkImageDataGeometryFilter.New();
            vtkWarpScalar              warpScalar              = vtkWarpScalar.New();
            vtkWarpVector              warpVector              = vtkWarpVector.New();
        }