예제 #1
0
        public void VolumeRender(vtk.vtkImageData VoxelDatat)
        {
            VoxelData = VoxelDatat;
            renWin.AddRenderer(ren1);
            iren.SetRenderWindow(renWin);

            double[] inputRange = VoxelData.GetScalarRange();

            vtk.vtkPiecewiseFunction opacityTransferFunction = new vtk.vtkPiecewiseFunction();
            opacityTransferFunction.AddPoint(inputRange[0], 0);
            opacityTransferFunction.AddPoint(inputRange[1], 1);

            vtk.vtkColorTransferFunction colorTransferFunction = new vtk.vtkColorTransferFunction();
            colorTransferFunction.AddRGBPoint(inputRange[0], 1.0, 1.0, 1.0);
            colorTransferFunction.AddRGBPoint(inputRange[1], 1.0, 1.0, 1.0);

            volumeProperty.SetColor(colorTransferFunction);
            volumeProperty.SetScalarOpacity(opacityTransferFunction);
            volumeProperty.ShadeOff();
            volumeProperty.SetInterpolationTypeToLinear();

            volume.SetProperty(volumeProperty);

            setRAY();
            ren1.AddVolume(volume);
            ren1.ResetCamera();
            renWin.Render();
            addBusyObservers();
            iren.Initialize(); iren.Enable();
        }
예제 #2
0
        void AddFlamingoToWindow(vtk.vtkRenderWindow renWin)
        {
            // This example demonstrates the use of vtk3DSImporter.
            // vtk3DSImporter is used to load 3D Studio files.  Unlike writers,
            // importers can load scenes (data as well as lights, cameras, actors
            // etc.). Importers will either generate an instance of vtkRenderWindow
            // and/or vtkRenderer or will use the ones you specify.
            string VTK_DATA_ROOT = vtk.vtkDotNetUtil.vtkGetDataRoot();


            // Create the importer and read a file
            vtk.vtk3DSImporter importer = new vtk.vtk3DSImporter();
            importer.ComputeNormalsOn();
            importer.SetFileName(VTK_DATA_ROOT + "/Data/iflamigm.3ds");
            importer.Read();

            // Here we let the importer create a renderer and a render window for
            // us. We could have also create and assigned those ourselves like so:
            importer.SetRenderWindow(renWin);

            // Assign an interactor.
            // We have to ask the importer for it's render window.

            // Set some properties on the renderer.
            // We have to ask the importer for it's renderer.
            vtk.vtkRenderer ren = importer.GetRenderer();
            renWin.AddRenderer(ren);
            ren.SetBackground(0.1, 0.2, 0.4);

            // Position the camera:
            // change view up to +z
            vtk.vtkCamera camera = ren.GetActiveCamera();
            camera.SetPosition(0, 1, 0);
            camera.SetFocalPoint(0, 0, 0);
            camera.SetViewUp(0, 0, 1);
            // let the renderer compute good position and focal point
            ren.ResetCamera();
            camera.Dolly(1.4);
            ren.ResetCameraClippingRange();
        }
예제 #3
0
        static void Main(string[] args)
        {
            string VTK_DATA_ROOT = vtk.vtkDotNetUtil.vtkGetDataRoot();

            // Create the reader and read a data file.  Connect the mapper and
            // actor.
            vtk.vtkSTLReader sr = new vtk.vtkSTLReader();
            sr.SetFileName(VTK_DATA_ROOT + "/Data/42400-IDGH.stl");

            vtk.vtkPolyDataMapper stlMapper = new vtk.vtkPolyDataMapper();
            stlMapper.SetInputConnection(sr.GetOutputPort());

            vtk.vtkLODActor stlActor = new vtk.vtkLODActor();
            stlActor.SetMapper(stlMapper);

            // Create the Renderer, RenderWindow, and RenderWindowInteractor
            vtk.vtkRenderer ren = new vtk.vtkRenderer();
            vtk.vtkRenderWindow renWin = new vtk.vtkRenderWindow();
            renWin.AddRenderer(ren);
            vtk.vtkRenderWindowInteractor iren = new vtk.vtkRenderWindowInteractor();
            iren.SetRenderWindow(renWin);

            // Add the actors to the render; set the background and size
            ren.AddActor(stlActor);
            ren.SetBackground(0.1, 0.2, 0.4);
            renWin.SetSize(500, 500);

            // Zoom in closer
            ren.ResetCamera();
            vtk.vtkCamera cam1 = ren.GetActiveCamera();
            cam1.Zoom(1.4);

            iren.Initialize();
            renWin.Render();
            iren.Start();

            vtk.vtkWin32OpenGLRenderWindow win32win =
                vtk.vtkWin32OpenGLRenderWindow.SafeDownCast(renWin);
            if (null != win32win) win32win.Clean();
        }
예제 #4
0
        public void ShowVTKV3d()
        {
            renWin.AddRenderer(aRenderer);
            iren.SetRenderWindow(renWin);

            vtk.vtkSmoothPolyDataFilter smoother = new vtk.vtkSmoothPolyDataFilter();
            smoother.SetInputConnection(mc.GetOutputPort());
            smoother.SetRelaxationFactor(0.05);
            smoother.SetNumberOfIterations(30);

            vtk.vtkDecimatePro deci = new vtk.vtkDecimatePro();
            deci.SetInputConnection(smoother.GetOutputPort());
            deci.SetTargetReduction(0.9);
            deci.PreserveTopologyOn();
            deci.Update();

            int marchingNumberOfPoints = deci.GetOutput().GetNumberOfPoints();
            int marchingNumberOfPolys  = deci.GetOutput().GetNumberOfPolys();

            info += "marching number of points : " + marchingNumberOfPoints + "\r\n";
            info += "marching number of polys : " + marchingNumberOfPolys + "\r\n";

            vtk.vtkSmoothPolyDataFilter smoother2 = new vtk.vtkSmoothPolyDataFilter();
            smoother2.SetInputConnection(deci.GetOutputPort());
            smoother2.SetRelaxationFactor(0.05);
            smoother2.SetNumberOfIterations(30);

            mcmap.SetInputConnection(smoother2.GetOutputPort());
            mcmap.ScalarVisibilityOff();
            mcactor.SetMapper(mcmap);
            mcactor.GetProperty().SetColor(1, 1, 1);

            aRenderer.AddActor(mcactor);
            aRenderer.SetBackground(0.0f, 0.0f, 0.0f);
            aRenderer.ResetCamera();
            renWin.Render();
            addBusyObservers();
            iren.Initialize(); iren.Enable();
        }
예제 #5
0
        public void rendersiteplanes(vtk.vtkImageData VoxelData)
        {
            //vtk.vtkWin32RenderWindowInteractor

            renwX.AddRenderer(renX);
            renwY.AddRenderer(renY);
            renwZ.AddRenderer(renZ);

            irenX.SetRenderWindow(renwX);
            irenY.SetRenderWindow(renwY);
            irenZ.SetRenderWindow(renwZ);


            vtk.vtkOutlineFilter outline = new vtk.vtkOutlineFilter();
            outline.SetInput(VoxelData);

            vtk.vtkPolyDataMapper outlineMapper = new vtk.vtkPolyDataMapper();
            outlineMapper.SetInputConnection(outline.GetOutputPort());

            vtk.vtkActor outlineActor = new vtk.vtkActor();
            outlineActor.SetMapper(outlineMapper);

            vtk.vtkCellPicker picker = new vtk.vtkCellPicker();
            picker.SetTolerance(0.005);


            planeWidgetX.SetInteractor(irenX);
            planeWidgetX.DisplayTextOff();
            planeWidgetX.SetInput(VoxelData);
            planeWidgetX.SetPlaneOrientationToXAxes();
            planeWidgetX.SetSliceIndex(slizex);
            planeWidgetX.SetPicker(picker);
            planeWidgetX.On();
            planeWidgetX.InteractionOff();

            if (firstTime)
            {
                double[]           wl   = new double[2];
                vtk.vtkLookupTable lktb = new vtk.vtkLookupTable();
                lktb      = planeWidgetX.GetLookupTable();
                wl        = lktb.GetTableRange();
                rangeXMin = wl[0];
                rangeXMax = wl[1];

                planeWidgetX.GetWindowLevel(wl);
                windowX = wl[0];
                levelX  = wl[1];
            }


            planeWidgetY.SetInteractor(irenY);
            planeWidgetY.DisplayTextOff();
            planeWidgetY.SetInput(VoxelData);
            planeWidgetY.SetPlaneOrientationToYAxes();
            planeWidgetY.SetSliceIndex(slizey);
            planeWidgetY.SetPicker(picker);
            planeWidgetY.On();
            planeWidgetY.InteractionOff();

            if (firstTime)
            {
                double[]           wl   = new double[2];
                vtk.vtkLookupTable lktb = new vtk.vtkLookupTable();
                lktb      = planeWidgetY.GetLookupTable();
                wl        = lktb.GetTableRange();
                rangeYMin = wl[0];
                rangeYMax = wl[1];

                planeWidgetY.GetWindowLevel(wl);
                windowY = wl[0];
                levelY  = wl[1];
            }


            planeWidgetZ.SetInteractor(irenZ);
            planeWidgetZ.DisplayTextOff();
            planeWidgetZ.SetInput(VoxelData);
            planeWidgetZ.SetPlaneOrientationToZAxes();
            planeWidgetZ.SetSliceIndex(slizez);
            planeWidgetZ.SetPicker(picker);
            planeWidgetZ.On();
            planeWidgetZ.InteractionOff();

            if (firstTime)
            {
                double[]           wl   = new double[2];
                vtk.vtkLookupTable lktb = new vtk.vtkLookupTable();
                lktb      = planeWidgetZ.GetLookupTable();
                wl        = lktb.GetTableRange();
                rangeZMin = wl[0];
                rangeZMax = wl[1];

                planeWidgetZ.GetWindowLevel(wl);
                windowZ = wl[0];
                levelZ  = wl[1];
            }

            firstTime = false;
            enabled   = true;

            if (firstime == 1)
            {
                renX.GetActiveCamera().Roll(90);
                renX.GetActiveCamera().Azimuth(90);

                renY.GetActiveCamera().Elevation(-90);
                renX.GetActiveCamera().ParallelProjectionOff();
                renY.GetActiveCamera().ParallelProjectionOff();
                renZ.GetActiveCamera().ParallelProjectionOff();
            }

            renX.ResetCamera();
            renY.ResetCamera();
            renZ.ResetCamera();

            renX.GetActiveCamera().ParallelProjectionOn();
            renY.GetActiveCamera().ParallelProjectionOn();
            renZ.GetActiveCamera().ParallelProjectionOn();

            renX.GetActiveCamera().Azimuth(-90);
            renX.GetActiveCamera().Roll(-90);

            renY.GetActiveCamera().Elevation(90);

            firstime = 1;
            int[]    dimensions = VoxelData.GetDimensions();
            double[] spacing    = VoxelData.GetSpacing();
            double   xmax       = (double)dimensions[0] * spacing[0] * 0.5;
            double   ymax       = (double)dimensions[1] * spacing[1] * 0.5;
            double   zmax       = (double)dimensions[2] * spacing[2] * 0.5;

            double smax = xmax;

            if (ymax > smax)
            {
                smax = ymax;
            }
            if (zmax > smax)
            {
                smax = zmax;
            }

            renX.GetActiveCamera().SetParallelScale(smax);
            renY.GetActiveCamera().SetParallelScale(smax);
            renZ.GetActiveCamera().SetParallelScale(smax);

            renX.GetActiveCamera().SetClippingRange(0.1, 1000);
            renY.GetActiveCamera().SetClippingRange(0.1, 1000);
            renZ.GetActiveCamera().SetClippingRange(0.1, 1000);

            irenX.Initialize();
            irenY.Initialize();
            irenZ.Initialize();

            irenX.Disable();
            irenY.Disable();
            irenZ.Disable();

            renwX.Render();
            renwY.Render();
            renwZ.Render();
        }
예제 #6
0
        public void render3Dplanes(vtk.vtkImageData VoxelData)
        {
            renWin.AddRenderer(ren2);

            iren.SetRenderWindow(renWin);

            vtk.vtkOutlineFilter outline = new vtk.vtkOutlineFilter();
            outline.SetInput(VoxelData);

            vtk.vtkPolyDataMapper outlineMapper = new vtk.vtkPolyDataMapper();
            outlineMapper.SetInputConnection(outline.GetOutputPort());

            vtk.vtkActor outlineActor = new vtk.vtkActor();
            outlineActor.SetMapper(outlineMapper);

            vtk.vtkCellPicker picker = new vtk.vtkCellPicker();
            picker.SetTolerance(0.005);

            vtk.vtkColorTransferFunction colorTransferFunction = new vtk.vtkColorTransferFunction();

            double[] inputRange = VoxelData.GetScalarRange();
            colorTransferFunction.AddRGBPoint(inputRange[0], 0.0, 0.0, 0.0);
            colorTransferFunction.AddRGBPoint(inputRange[1], 1.0, 1.0, 1.0);

            sColorsX.SetLookupTable(colorTransferFunction);
            sColorsY.SetLookupTable(colorTransferFunction);
            sColorsZ.SetLookupTable(colorTransferFunction);

            planeWidgetX.SetColorMap(sColorsX);
            planeWidgetX.SetInteractor(iren);
            planeWidgetX.DisplayTextOff();
            planeWidgetX.SetInput(VoxelData);
            planeWidgetX.SetPlaneOrientationToXAxes();
            planeWidgetX.SetSliceIndex(slizex);
            planeWidgetX.SetPicker(picker);
            planeWidgetX.On();
            planeWidgetX.InteractionOff();

            planeWidgetY.SetColorMap(sColorsY);
            planeWidgetY.SetInteractor(iren);
            planeWidgetY.DisplayTextOff();
            planeWidgetY.SetInput(VoxelData);
            planeWidgetY.SetPlaneOrientationToYAxes();
            planeWidgetY.SetSliceIndex(slizey);
            planeWidgetY.SetPicker(picker);
            planeWidgetY.On();
            planeWidgetY.InteractionOff();


            planeWidgetZ.SetColorMap(sColorsZ);
            planeWidgetZ.SetInteractor(iren);
            planeWidgetZ.DisplayTextOff();
            planeWidgetZ.SetInput(VoxelData);
            planeWidgetZ.SetPlaneOrientationToZAxes();
            planeWidgetZ.SetSliceIndex(slizez);
            planeWidgetZ.SetPicker(picker);
            planeWidgetZ.On();
            planeWidgetZ.InteractionOff();
            ren2.ResetCamera();
            renWin.Render();
            iren.Initialize(); iren.Enable();
        }