Exemple #1
0
        void AddConeToWindow(vtk.vtkRenderWindow renWin)
        {
            //
            // Next we create an instance of vtkConeSource and set some of its
            // properties. The instance of vtkConeSource "cone" is part of a visualization
            // pipeline (it is a source process object); it produces data (output type is
            // vtkPolyData) which other filters may process.
            //
            vtk.vtkConeSource cone = new vtk.vtkConeSource();
            cone.SetHeight(3.0f);
            cone.SetRadius(1.0f);
            cone.SetResolution(10);

            //
            // In this example we terminate the pipeline with a mapper process object.
            // (Intermediate filters such as vtkShrinkPolyData could be inserted in
            // between the source and the mapper.)  We create an instance of
            // vtkPolyDataMapper to map the polygonal data into graphics primitives. We
            // connect the output of the cone souece to the input of this mapper.
            //
            vtk.vtkPolyDataMapper coneMapper = new vtk.vtkPolyDataMapper();
            coneMapper.SetInput(cone.GetOutput());

            //
            // Create an actor to represent the cone. The actor orchestrates rendering of
            // the mapper's graphics primitives. An actor also refers to properties via a
            // vtkProperty instance, and includes an internal transformation matrix. We
            // set this actor's mapper to be coneMapper which we created above.
            //
            vtk.vtkActor coneActor = new vtk.vtkActor();
            coneActor.SetMapper(coneMapper);

            //
            // Create the Renderer and assign actors to it. A renderer is like a
            // viewport. It is part or all of a window on the screen and it is
            // responsible for drawing the actors it has.  We also set the background
            // color here
            //
            vtk.vtkRenderer ren1 = new vtk.vtkRenderer();
            ren1.AddActor(coneActor);
            ren1.SetBackground(0.1f, 0.2f, 0.4f);

            //
            // Finally we create the render window which will show up on the screen
            // We put our renderer into the render window using AddRenderer. We also
            // set the size to be 300 pixels by 300
            //
            renWin.AddRenderer(ren1);

            vtk.vtkRenderWindowInteractor iren = renWin.GetInteractor();

            {
                m_boxWidget = new vtk.vtkBoxWidget();
                m_boxWidget.SetInteractor(iren);
                m_boxWidget.SetPlaceFactor(1.25f);

                m_boxWidget.SetProp3D(coneActor);
                m_boxWidget.PlaceWidget();

                m_boxWidget.AddObserver((uint)vtk.EventIds.InteractionEvent,
                                        new vtk.vtkDotNetCallback(myCallback));

                m_boxWidget.On();
            }
        }
        void Run()
        {
            // Create a selection window.  We will display the point and cell ids
            // that lie within this window.
            int xmin = 200;
            xLength = 100;
            xmax = xmin + xLength;
            int ymin = 200;
            yLength = 100;
            ymax = ymin + yLength;

            pts = new vtk.vtkPoints();
            pts.InsertPoint(0, xmin, ymin, 0);
            pts.InsertPoint(1, xmax, ymin, 0);
            pts.InsertPoint(2, xmax, ymax, 0);
            pts.InsertPoint(3, xmin, ymax, 0);
            vtk.vtkCellArray rect = new vtk.vtkCellArray();
            rect.InsertNextCell(5);
            rect.InsertCellPoint(0);
            rect.InsertCellPoint(1);
            rect.InsertCellPoint(2);
            rect.InsertCellPoint(3);
            rect.InsertCellPoint(0);
            vtk.vtkPolyData selectRect = new vtk.vtkPolyData();
            selectRect.SetPoints(pts);
            selectRect.SetLines(rect);
            vtk.vtkPolyDataMapper2D rectMapper = new vtk.vtkPolyDataMapper2D();
            rectMapper.SetInput(selectRect);
            vtk.vtkActor2D rectActor = new vtk.vtkActor2D();
            rectActor.SetMapper(rectMapper);

            // Create a sphere and its associated mapper and actor.
            vtk.vtkSphereSource sphere = new vtk.vtkSphereSource();
            vtk.vtkPolyDataMapper sphereMapper = new vtk.vtkPolyDataMapper();
            sphereMapper.SetInputConnection(sphere.GetOutputPort());
            vtk.vtkPolyDataMapper.GlobalImmediateModeRenderingOn();
            vtk.vtkActor sphereActor = new vtk.vtkActor();
            sphereActor.SetMapper(sphereMapper);

            // Generate data arrays containing point and cell ids
            vtk.vtkIdFilter ids = new vtk.vtkIdFilter();
            ids.SetInputConnection(sphere.GetOutputPort());
            ids.PointIdsOn();
            ids.CellIdsOn();
            ids.FieldDataOn();

            // Create the renderer here because vtkSelectVisiblePoints needs it.
            vtk.vtkRenderer ren = new vtk.vtkRenderer();

            // Create labels for points
            visPts = new vtk.vtkSelectVisiblePoints();
            visPts.SetInputConnection(ids.GetOutputPort());
            visPts.SetRenderer(ren);
            visPts.SelectionWindowOn();
            visPts.SetSelection(xmin, xmin + xLength, ymin, ymin + yLength);

            // Create the mapper to display the point ids.  Specify the format to
            // use for the labels.  Also create the associated actor.
            vtk.vtkLabeledDataMapper ldm = new vtk.vtkLabeledDataMapper();
            ldm.SetInputConnection(visPts.GetOutputPort());
            ldm.SetLabelFormat("%g");
            ldm.SetLabelModeToLabelFieldData();
            vtk.vtkActor2D pointLabels = new vtk.vtkActor2D();
            pointLabels.SetMapper(ldm);

            // Create labels for cells
            vtk.vtkCellCenters cc = new vtk.vtkCellCenters();
            cc.SetInputConnection(ids.GetOutputPort());
            visCells = new vtk.vtkSelectVisiblePoints();
            visCells.SetInputConnection(cc.GetOutputPort());
            visCells.SetRenderer(ren);
            visCells.SelectionWindowOn();
            visCells.SetSelection(xmin, xmin + xLength, ymin, ymin + yLength);

            // Create the mapper to display the cell ids.  Specify the format to
            // use for the labels.  Also create the associated actor.
            vtk.vtkLabeledDataMapper cellMapper = new vtk.vtkLabeledDataMapper();
            cellMapper.SetInputConnection(visCells.GetOutputPort());
            cellMapper.SetLabelFormat("%g");
            cellMapper.SetLabelModeToLabelFieldData();
            cellMapper.GetLabelTextProperty().SetColor(0, 1, 0);
            vtk.vtkActor2D cellLabels = new vtk.vtkActor2D();
            cellLabels.SetMapper(cellMapper);

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

            // Add the actors to the renderer; set the background and size;
            // render
            ren.AddActor(sphereActor);
            ren.AddActor2D(rectActor);
            ren.AddActor2D(pointLabels);
            ren.AddActor2D(cellLabels);

            ren.SetBackground(1, 1, 1);
            renWin.SetSize(500, 500);

            // Initialize the interactor.
            iren.Initialize();
            renWin.Render();

            // Move the selection window across the data set.
            MoveWindow();

            // Put the selection window in the center of the render window.
            // This works because the xmin = ymin = 200, xLength = yLength = 100, and
            // the render window size is 500 x 500.
            PlaceWindow(xmin, ymin);

            // Now start normal interaction.
            iren.Start();
            vtk.vtkWin32OpenGLRenderWindow win32win =
                vtk.vtkWin32OpenGLRenderWindow.SafeDownCast(renWin);
            if (null != win32win) win32win.Clean();
        }
 public CTwoPointsIndicatorsImpl()
 {
     m_actor = new vtk.vtkActor();
     m_actor.GetProperty().SetColor(1, 1, 0); // Yellow
 }
Exemple #4
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();
        }
Exemple #5
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();
        }
Exemple #6
0
        void InitializePipeMoveBoundary()
        {
            foreach (CBoundaryModel boundaryModel in IApp.theApp.DataModel.BoundaryModels)
            {
                vtk.vtkActor actor = new vtk.vtkActor();

                IApp.theApp.RendererManager.MainRenderer.AddActor(actor);
                if (boundaryModel.ShowInMultipleView)
                {
                    IApp.theApp.RendererManager.TopViewRenderer.AddActor(actor);
                    IApp.theApp.RendererManager.RightViewRenderer.AddActor(actor);
                    IApp.theApp.RendererManager.FrontViewRenderer.AddActor(actor);
                }

                actor.GetProperty().SetColor(boundaryModel.Color);
                actor.GetProperty().SetLineWidth(boundaryModel.LineWidth);
                //actor.GetProperty().SetLineStipplePattern(1);
                //actor.GetProperty().SetLineStippleRepeatFactor(1);

                IApp.theApp.vtkControl.AddArcToActor(actor, boundaryModel.Center.Point,
                                                                                     boundaryModel.StartPoint.Point,
                                                                                     boundaryModel.EndPoint.Point);
            }
        }