public void AddCylinderEdgeToActors(byte[] bgColor, ref vtkActorCollection actors) { vtkProperty pp = vtkProperty.New(); pp.SetOpacity(0.7); pp.SetColor(bgColor[0], bgColor[1], bgColor[2]); pp.SetLineWidth(5); pp.SetLighting(false); vtkRegularPolygonSource circle = vtkRegularPolygonSource.New(); circle.GeneratePolygonOn(); circle.SetNumberOfSides(50); circle.SetRadius(radius); circle.SetCenter(0, 0, 0); vtkPolyDataMapper mappper = vtkPolyDataMapper.New(); mappper.SetInputConnection(circle.GetOutputPort()); vtkActor actor = vtkActor.New(); actor.SetProperty(pp); actor.SetMapper(mappper); actors.AddItem(actor); actor.SetProperty(pp); actors.AddItem(actor); vtkLineSource ls = vtkLineSource.New(); ls.SetPoint1(0, 0, 0); ls.SetPoint2(0, 0, height); vtkTubeFilter tf = vtkTubeFilter.New(); tf.SetInputConnection(ls.GetOutputPort()); tf.SetRadius(radius); tf.SetNumberOfSides(100); tf.CappingOff(); vtkPolyDataMapper dm = vtkPolyDataMapper.New(); dm.SetInputConnection(tf.GetOutputPort()); vtkActor a2 = vtkActor.New(); a2.SetMapper(dm); a2.SetProperty(pp); pp.SetOpacity(0.5); actor.SetProperty(pp); actors.AddItem(a2); }
private void RegularPolygon() { // Create a pentagon vtkRegularPolygonSource polygonSource = vtkRegularPolygonSource.New(); //polygonSource.GeneratePolygonOff(); polygonSource.SetNumberOfSides(5); polygonSource.SetRadius(5); polygonSource.SetCenter(0, 0, 0); //polygonSource.Update(); // not necessary vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection(polygonSource.GetOutputPort()); vtkActor actor = vtkActor.New(); actor.GetProperty().SetLineWidth(4); actor.SetMapper(mapper); RenderAddActor(actor); }
private void RegularPolygon() { // Create a pentagon vtkRegularPolygonSource polygonSource = vtkRegularPolygonSource.New(); //polygonSource.GeneratePolygonOff(); polygonSource.SetNumberOfSides(5); polygonSource.SetRadius(5); polygonSource.SetCenter(0, 0, 0); //polygonSource.Update(); // not necessary vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection(polygonSource.GetOutputPort()); vtkActor actor = vtkActor.New(); actor.GetProperty().SetLineWidth(4); actor.SetMapper(mapper); vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); renderer.SetBackground(0.2, 0.3, 0.4); renderer.AddActor(actor); }
private void Triangulate() { vtkRegularPolygonSource polygonSource = vtkRegularPolygonSource.New(); polygonSource.Update(); vtkTriangleFilter triangleFilter = vtkTriangleFilter.New(); #if VTK_MAJOR_VERSION_5 triangleFilter.SetInputConnection(polygonSource.GetOutputPort()); #else triangleFilter.SetInputData(polygonSource); #endif triangleFilter.Update(); vtkPolyDataMapper inputMapper = vtkPolyDataMapper.New(); #if VTK_MAJOR_VERSION_5 inputMapper.SetInputConnection(polygonSource.GetOutputPort()); #else inputMapper.SetInputData(polygonSource); #endif vtkActor inputActor = vtkActor.New(); inputActor.SetMapper(inputMapper); inputActor.GetProperty().SetRepresentationToWireframe(); vtkPolyDataMapper triangleMapper = vtkPolyDataMapper.New(); #if VTK_MAJOR_VERSION_5 triangleMapper.SetInputConnection(triangleFilter.GetOutputPort()); #else triangleMapper.SetInputData(triangleFilter); #endif vtkActor triangleActor = vtkActor.New(); triangleActor.SetMapper(triangleMapper); triangleActor.GetProperty().SetRepresentationToWireframe(); vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; this.Size = new System.Drawing.Size(612, 352); // Define viewport ranges // (xmin, ymin, xmax, ymax) double[] leftViewport = new double[] { 0.0, 0.0, 0.5, 1.0 }; double[] rightViewport = new double[] { 0.5, 0.0, 1.0, 1.0 }; // Setup both renderers vtkRenderer leftRenderer = vtkRenderer.New(); renderWindow.AddRenderer(leftRenderer); leftRenderer.SetViewport(leftViewport[0], leftViewport[1], leftViewport[2], leftViewport[3]); leftRenderer.SetBackground(.6, .5, .4); vtkRenderer rightRenderer = vtkRenderer.New(); renderWindow.AddRenderer(rightRenderer); rightRenderer.SetViewport(rightViewport[0], rightViewport[1], rightViewport[2], rightViewport[3]); rightRenderer.SetBackground(.4, .5, .6); // Add the sphere to the left and the cube to the right leftRenderer.AddActor(inputActor); rightRenderer.AddActor(triangleActor); leftRenderer.ResetCamera(); rightRenderer.ResetCamera(); renderWindow.Render(); }