Example #1
0
 ///<summary> A Set Method for Static Variables </summary>
 public static void Setq(vtkQuadricClustering toSet)
 {
     q = toSet;
 }
Example #2
0
    /// <summary>
    /// The main entry method called by the CSharp driver
    /// </summary>
    /// <param name="argv"></param>
    public static void AVStreamPolyData(String [] argv)
    {
        //Prefix Content is: ""

        NUMBER_OF_PIECES = 5;
        // Generate implicit model of a sphere[]
        //[]
        // Create renderer stuff[]
        //[]
        ren1   = vtkRenderer.New();
        renWin = vtkRenderWindow.New();
        renWin.AddRenderer((vtkRenderer)ren1);
        iren = new vtkRenderWindowInteractor();
        iren.SetRenderWindow((vtkRenderWindow)renWin);
        // create pipeline that handles ghost cells[]
        sphere = new vtkSphereSource();
        sphere.SetRadius((double)3);
        sphere.SetPhiResolution((int)100);
        sphere.SetThetaResolution((int)150);
        // sphere AddObserver StartEvent {tk_messageBox -message "Executing with piece [[sphere GetOutput] GetUpdatePiece]"}[]
        // Just playing with an alternative that is not currently used.[]
        //method moved
        // Just playing with an alternative that is not currently used.[]
        deci = new vtkDecimatePro();
        deci.SetInputConnection((vtkAlgorithmOutput)sphere.GetOutputPort());
        // this did not remove seams as I thought it would[]
        deci.BoundaryVertexDeletionOff();
        //deci PreserveTopologyOn[]
        // Since quadric Clustering does not handle borders properly yet,[]
        // the pieces will have dramatic "eams"[]
        q = new vtkQuadricClustering();
        q.SetInputConnection((vtkAlgorithmOutput)sphere.GetOutputPort());
        q.SetNumberOfXDivisions((int)5);
        q.SetNumberOfYDivisions((int)5);
        q.SetNumberOfZDivisions((int)10);
        q.UseInputPointsOn();
        streamer = new vtkPolyDataStreamer();
        //streamer SetInputConnection [deci GetOutputPort][]
        streamer.SetInputConnection((vtkAlgorithmOutput)q.GetOutputPort());
        //streamer SetInputConnection [pdn GetOutputPort][]
        streamer.SetNumberOfStreamDivisions((int)NUMBER_OF_PIECES);
        mapper = vtkPolyDataMapper.New();
        mapper.SetInputConnection((vtkAlgorithmOutput)streamer.GetOutputPort());
        mapper.ScalarVisibilityOff();
        mapper.SetPiece((int)0);
        mapper.SetNumberOfPieces((int)2);
        mapper.ImmediateModeRenderingOn();
        actor = new vtkActor();
        actor.SetMapper((vtkMapper)mapper);
        actor.GetProperty().SetColor((double)0.8300, 0.2400, 0.1000);
        // Add the actors to the renderer, set the background and size[]
        //[]
        ren1.GetActiveCamera().SetPosition((double)5, (double)5, (double)10);
        ren1.GetActiveCamera().SetFocalPoint((double)0, (double)0, (double)0);
        ren1.AddActor((vtkProp)actor);
        ren1.SetBackground((double)1, (double)1, (double)1);
        renWin.SetSize((int)300, (int)300);
        iren.Initialize();
        // render the image[]
        //[]
        // prevent the tk window from showing up then start the event loop[]

//deleteAllVTKObjects();
    }
 ///<summary> A Set Method for Static Variables </summary>
 public static void Setq(vtkQuadricClustering toSet)
 {
     q = toSet;
 }
    /// <summary>
    /// The main entry method called by the CSharp driver
    /// </summary>
    /// <param name="argv"></param>
    public static void AVStreamPolyData(String [] argv)
    {
        //Prefix Content is: ""

          NUMBER_OF_PIECES = 5;
          // Generate implicit model of a sphere[]
          //[]
          // Create renderer stuff[]
          //[]
          ren1 = vtkRenderer.New();
          renWin = vtkRenderWindow.New();
          renWin.AddRenderer((vtkRenderer)ren1);
          iren = new vtkRenderWindowInteractor();
          iren.SetRenderWindow((vtkRenderWindow)renWin);
          // create pipeline that handles ghost cells[]
          sphere = new vtkSphereSource();
          sphere.SetRadius((double)3);
          sphere.SetPhiResolution((int)100);
          sphere.SetThetaResolution((int)150);
          // sphere AddObserver StartEvent {tk_messageBox -message "Executing with piece [[sphere GetOutput] GetUpdatePiece]"}[]
          // Just playing with an alternative that is not currently used.[]
          //method moved
          // Just playing with an alternative that is not currently used.[]
          deci = new vtkDecimatePro();
          deci.SetInputConnection((vtkAlgorithmOutput)sphere.GetOutputPort());
          // this did not remove seams as I thought it would[]
          deci.BoundaryVertexDeletionOff();
          //deci PreserveTopologyOn[]
          // Since quadric Clustering does not handle borders properly yet,[]
          // the pieces will have dramatic "eams"[]
          q = new vtkQuadricClustering();
          q.SetInputConnection((vtkAlgorithmOutput)sphere.GetOutputPort());
          q.SetNumberOfXDivisions((int)5);
          q.SetNumberOfYDivisions((int)5);
          q.SetNumberOfZDivisions((int)10);
          q.UseInputPointsOn();
          streamer = new vtkPolyDataStreamer();
          //streamer SetInputConnection [deci GetOutputPort][]
          streamer.SetInputConnection((vtkAlgorithmOutput)q.GetOutputPort());
          //streamer SetInputConnection [pdn GetOutputPort][]
          streamer.SetNumberOfStreamDivisions((int)NUMBER_OF_PIECES);
          mapper = vtkPolyDataMapper.New();
          mapper.SetInputConnection((vtkAlgorithmOutput)streamer.GetOutputPort());
          mapper.ScalarVisibilityOff();
          mapper.SetPiece((int)0);
          mapper.SetNumberOfPieces((int)2);
          mapper.ImmediateModeRenderingOn();
          actor = new vtkActor();
          actor.SetMapper((vtkMapper)mapper);
          actor.GetProperty().SetColor((double) 0.8300, 0.2400, 0.1000 );
          // Add the actors to the renderer, set the background and size[]
          //[]
          ren1.GetActiveCamera().SetPosition((double)5,(double)5,(double)10);
          ren1.GetActiveCamera().SetFocalPoint((double)0,(double)0,(double)0);
          ren1.AddActor((vtkProp)actor);
          ren1.SetBackground((double)1,(double)1,(double)1);
          renWin.SetSize((int)300,(int)300);
          iren.Initialize();
          // render the image[]
          //[]
          // prevent the tk window from showing up then start the event loop[]

        //deleteAllVTKObjects();
    }
      private void QuadricClustering() { 
         vtkSphereSource sphereSource = vtkSphereSource.New();
         sphereSource.Update();

         vtkPolyData input = vtkPolyData.New();
         input.ShallowCopy(sphereSource.GetOutput());

         Debug.WriteLine("Before decimation" + Environment.NewLine + "------------" );
         Debug.WriteLine("There are " + input.GetNumberOfPoints() + " points." );
         Debug.WriteLine("There are " + input.GetNumberOfPolys() + " polygons." );

         vtkQuadricClustering decimate = vtkQuadricClustering.New();
#if VTK_MAJOR_VERSION_5
         decimate.SetInputConnection(input.GetProducerPort());
#else
         decimate.SetInputData(input);
#endif
         decimate.Update();

         vtkPolyData decimated = vtkPolyData.New();
         decimated.ShallowCopy(decimate.GetOutput());

         Debug.WriteLine("After decimation" + Environment.NewLine + "------------" );

         Debug.WriteLine("There are " + decimated.GetNumberOfPoints() + " points." );
         Debug.WriteLine("There are " + decimated.GetNumberOfPolys() + " polygons." );

         vtkPolyDataMapper inputMapper = vtkPolyDataMapper.New();
#if VTK_MAJOR_VERSION_5
         inputMapper.SetInputConnection(input.GetProducerPort());
#else
         inputMapper.SetInputData(input);
#endif
         vtkActor inputActor = vtkActor.New();
         inputActor.SetMapper(inputMapper);

         vtkPolyDataMapper decimatedMapper = vtkPolyDataMapper.New();
#if VTK_MAJOR_VERSION_5
         decimatedMapper.SetInputConnection(decimated.GetProducerPort());
#else
         decimatedMapper.SetInputData(decimated);
#endif
         vtkActor decimatedActor = vtkActor.New();
         decimatedActor.SetMapper(decimatedMapper);

         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(decimatedActor);
         leftRenderer.ResetCamera();
         rightRenderer.ResetCamera();
         renderWindow.Render();
      }