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 }
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(); }
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(); }
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); } }