[vtkusers] [EXTERNAL] Re: Java vtkPointToCellData

Gerrick Bivins Gerrick.Bivins at halliburton.com
Fri Sep 25 13:21:07 EDT 2015


This one may also be of interest to you:
http://www.vtk.org/Wiki/VTK/Examples/Cxx/Filtering/Delaunay2D

Gerrick

From: James Labiak [mailto:jim at jslengineeringsoftware.com]
Sent: Friday, September 25, 2015 10:39 AM
To: Gerrick Bivins; Sebastien Jourdain
Cc: vtkusers
Subject: Re: [EXTERNAL] Re: [vtkusers] Java vtkPointToCellData

Hi Gerrick and Seb,
Thanks for all of your help so far, I appreciate it. I did try the vtkSurfaceReconstructionFilter. The resultant surface was kind of weird, but it had the basic shape. I will definitely experiment more with that. I will report back on that and a couple of other approaches.
Regards,
Jim


On 9/25/2015 10:11 AM, Gerrick Bivins wrote:
Hi James
Glad you got that part working.
It sounds like you want to do something like this:
http://www.vtk.org/Wiki/VTK/Examples/Cxx/Filtering/SurfaceFromUnorganizedPoints

Gerrick


From: James Labiak [mailto:jim at jslengineeringsoftware.com]
Sent: Friday, September 25, 2015 8:55 AM
To: Sebastien Jourdain; Gerrick Bivins
Cc: vtkusers
Subject: Re: [EXTERNAL] Re: [vtkusers] Java vtkPointToCellData

I got the verts to work and can plot the points, but am struggling to create a surface through the points. Any recommendations on an approach? The geometry is similar to: cut a rectangle through a sphere and slide the piece out; the sphere faces that remain are similar to my geometry (just small deviations), but I am focusing on simply trying to create one surface on one face.
On 9/22/2015 9:36 AM, Sebastien Jourdain wrote:
I wasn't sure at first based on your comment, but I don't think vtkPointDataToCellData is meant to create Cells.
And if you don't create any cell, then you won't be able to see anything.
You can create a single polyverts with all the points ids.

vtkCellArray verts = new vtkCellArray();
verts.InsertNextCell( points.GetNumberOfPoints() );
for(int i=0; i < points.GetNumberOfPoints(); i++) {
    verts.InsertNextPoint(i);
}

polyDataWithCells.SetVerts(verts)

The code above, should create the expected cells. Just be aware that it was written in a mail with uncertainty regarding the method names and class names.
But that should be enough to get you started with an appropriate IDE.

Seb

On Tue, Sep 22, 2015 at 6:35 AM, Gerrick Bivins <Gerrick.Bivins at halliburton.com<mailto:Gerrick.Bivins at halliburton.com>> wrote:
The vtp file seems invalid. It looks like the cells aren’t defined.
Even if the polydata is just points, I think you still have to define the
“Verts” cell array of the polydata.



Gerrick




From: vtkusers [mailto:vtkusers-bounces at vtk.org<mailto:vtkusers-bounces at vtk.org>] On Behalf Of James Labiak
Sent: Monday, September 21, 2015 8:05 PM
To: Sebastien Jourdain
Cc: vtkusers
Subject: [EXTERNAL] Re: [vtkusers] Java vtkPointToCellData

Hi Sebastien,
I made the change, but it still seems not to be running the filter. Attached is a java file and a .vtp data file to see what's happening. Also below is the code.
Thanks,
Jim

package com.profiles;

import vtk.*;

public class PlotSomePolyDataFromFileRead {

    public static void main(String[] args) {
        try {
            new PlotSomePolyDataFromFileRead();
        } catch (Exception ex_new_PlotSomePolyDataFromFileRead) {
            System.out.println("[main] Exception at new PlotSomePolyDataFromFileRead()");
            ex_new_PlotSomePolyDataFromFileRead.printStackTrace();
        }
    }

    // Load VTK libraries
    static {
        if (!vtkNativeLibrary.LoadAllNativeLibraries()) {
            {
                for (vtkNativeLibrary lib : vtkNativeLibrary.values()) {
                    if (!lib.IsLoaded())
                        System.out
                                .println(lib.GetLibraryName() + " not loaded");
                }
                System.out.println("Make sure the search path is correct: ");
                System.out.println(System.getProperty("java.library.path"));
            }
            vtkNativeLibrary.DisableOutputWindow(null);
        }
    }

    private PlotSomePolyDataFromFileRead() {

        // Read the polyData from the data file
        vtkXMLPolyDataReader xmlReader = new vtkXMLPolyDataReader();
        xmlReader.SetFileName("C:\\vtk123\\test_data.vtp");
        xmlReader.Update();

        // Use the filter vtkPointDataToCellData to create the
        // cells from the point data that's in the vtkPolyData from the reader
        // *The vtkPolyData from the reader intentionally only includes vtkPoints
        // and their scalars (that's the given data from the application output)
        vtkPointDataToCellData polyDataCreateCells = new vtkPointDataToCellData();
        polyDataCreateCells.SetInputConnection(xmlReader.GetOutputPort());
        polyDataCreateCells.PassPointDataOn();
        polyDataCreateCells.Update();

        // In order to check if the vtkPointDataToCellData filter worked:
        // Create new polyData, retrieve polyData (with cells now) from
        // polyDataCreateCells filter, check values during debug operation
        vtkPolyData polyDataWithCells = new vtkPolyData();
        polyDataWithCells = polyDataCreateCells.GetPolyDataOutput();
        // At this point, polyDataWithCells has (when I run it)
        // point data but not cell data, nor scalar data
        // and it should have all 3

        vtkPolyDataMapper polyMapper = new vtkPolyDataMapper();
        polyMapper.SetInputData(polyDataCreateCells.GetPolyDataOutput());
        polyMapper.Update();

        vtkActor polyActor = new vtkActor();
        polyActor.SetMapper(polyMapper);
        polyActor.GetProperty().SetColor(1.0, 1.0, 1.0);

        vtkRenderer renderer = new vtkRenderer();
        renderer.AddActor(polyActor);
        renderer.SetBackground(0.0, 0.0, 0.0);

        vtkRenderWindow renderWindow = new vtkRenderWindow();
        renderWindow.AddRenderer(renderer);
        renderWindow.SetSize(800, 800);

        vtkRenderWindowInteractor renderWindowInteractor = new vtkRenderWindowInteractor();
        renderWindowInteractor.SetRenderWindow(renderWindow);

        renderWindow.Render();
        renderWindowInteractor.Start();
    }
}
On 9/21/2015 10:38 AM, Sebastien Jourdain wrote:
Try that

vtkPointDataToCellData polyDataCreateCells = new vtkPointDataToCellData();
polyDataCreateCells.SetInputData(polyData);
polyDataCreateCells.PassPointDataOn();
polyDataCreateCells.Update();  // <==== For the execution of the filter

// Create new polyData, retrieve completed polyData from polyDataCreateCells
vtkPolyData polyDataComplete = polyDataCreateCells.GetPolyDataOutput(); // No need to create a polydata just get a ref from the filter

On Mon, Sep 21, 2015 at 8:20 AM, James Labiak <jim at jslengineeringsoftware.com<mailto:jim at jslengineeringsoftware.com>> wrote:
Hello all,
I created a pipeline that seems to make sense to me, but always my polyDataComplete is empty. Any ideas why this code doesn't work? The only vtkPointToCellData example on the web that I can find uses blow.vtk, which doesn't exist on my 6.0.0 installation anywhere. The polyData variable gets correctly populated with the points and their scalars below.

        // Create a new, empty polyData
        polyData = new vtkPolyData();

        // populate the polyData points
        polyData.SetPoints(points);

        // populate the polyData scalars
        polyData.GetPointData().SetScalars(colorsScalars);

        vtkPointDataToCellData polyDataCreateCells = new vtkPointDataToCellData();
        polyDataCreateCells.SetInputData(polyData);
        polyDataCreateCells.PassPointDataOn();

        // Create new polyData, retrieve completed polyData from polyDataCreateCells
        vtkPolyData polyDataComplete = new vtkPolyData();
        polyDataComplete = polyDataCreateCells.GetPolyDataOutput();

        vtkPolyDataMapper polyMapper = new vtkPolyDataMapper();
        polyMapper.SetInputData(polyDataComplete);
        polyMapper.ScalarVisibilityOn();
        polyMapper.SetScalarRange(scalarMin, scalarMax);
        polyMapper.Update();

        vtkActor polyActor = new vtkActor();
        polyActor.SetMapper(polyMapper);
        polyActor.GetProperty().SetColor(1.0, 1.0, 1.0);

// ...Usual render stuff...

Thanks,
Jim

_______________________________________________
Powered by www.kitware.com<http://www.kitware.com>

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers


________________________________
This e-mail, including any attached files, may contain confidential and privileged information for the sole use of the intended recipient. Any review, use, distribution, or disclosure by others is strictly prohibited. If you are not the intended recipient (or authorized to receive information for the intended recipient), please contact the sender by reply e-mail and delete all copies of this message.



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20150925/ac3ae109/attachment.html>


More information about the vtkusers mailing list