Пример #1
0
 ///<summary> A Set Method for Static Variables </summary>
 public static void Setdeci(vtkDecimatePro toSet)
 {
     deci = toSet;
 }
Пример #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();
    }
Пример #3
0
 ///<summary> A Set Method for Static Variables </summary>
 public static void Setdeci(vtkDecimatePro toSet)
 {
     deci = toSet;
 }
Пример #4
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();
    }
Пример #5
0
        private void Decimation()
        {
            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.");

            vtkDecimatePro decimate = vtkDecimatePro.New();

#if VTK_MAJOR_VERSION_5
            decimate.SetInputConnection(input.GetProducerPort());
#else
            decimate.SetInputData(input);
#endif
            //decimate.SetTargetReduction(.99); //99% reduction (if there was 100 triangles, now there will be 1)
            decimate.SetTargetReduction(.10); //10% reduction (if there was 100 triangles, now there will be 90)
            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();
        }