[vtkusers] vtkPoints, vtkIdsList, JNI memory errors and Jeff Lee!

Jeff Lee jeff at cdnorthamerica.com
Tue Mar 28 10:01:15 EST 2006



Eugene Kim wrote:

> Hi Jeff,
>
>      Here is some test code that should illustrate my problem...  i've 
> basically reproduced the offending lines of code and inserted it in to 
> the Cone example for ease.  I also have some code which shows that the 
> cell arrays in vtkPolyData do not work.  I've have had this happen on 
> both vtk 4.4 and 5.0, 5.0 being the version i currently use.  Also, 
> don't mind the code that's commented out.  Some of it will produce 
> more errors, (like vtkPoints), and some of it is harmless.

Is it possible that the file is corrupt?  Using vtk5.0 with blow.vtk, 
everything looks fine, and your code says
Beginning test...
Dataset 0 initialized
Num verts: 0
Num points: 686
Num polys: 928
...

-Jeff

>
>
>
>
>
> /* This test evaluates the feasability of accessing the data 
> structures of a large number of objects */
>
> import vtk.*;
>
> public class Cone {
>
>    static {
>      System.loadLibrary("vtkCommonJava");
>      System.loadLibrary("vtkFilteringJava");
>      System.loadLibrary("vtkIOJava");
>      System.loadLibrary("vtkImagingJava");
>      System.loadLibrary("vtkGraphicsJava");
>      System.loadLibrary("vtkRenderingJava");
>    }
>
>    public static void main (String []args) {
>      System.out.println ( "Beginning test..." );
>
>      /* The number of data sets we'd like to test, and it's path */
>      int numObjects = 1;
>      String fileName = "/spin/snl/data/mcell/eugene/pjm_13.reduce.vtk";
>
>      vtkPolyData[] dataArray = new vtkPolyData[numObjects];
>      vtkPolyDataReader[] readerArray = new vtkPolyDataReader[numObjects];
>
>      for ( int i=0; i<numObjects; i++ ) {
>          readerArray[i] = new vtkPolyDataReader();
>          readerArray[i].SetFileName ( fileName );
>          readerArray[i].Update();
>          dataArray[i] = readerArray[i].GetOutput();
>          dataArray[i].Update();
>          System.out.println ( "Dataset "+i+" initialized" );
>      }
>
>      vtkCell theCell = null;
>      int numCells = dataArray[0].GetNumberOfCells(); //Because they're 
> all the same data set
>      vtkIdList pointList = null;
>      vtkPoints points = null;
>      int numPoints;
>      //vtkPoints finalPoints = new vtkPoints();
>      //finalPoints.SetDataTypeToDouble();
>      int theId;
>
>      /* Just to illustrate that the convenience methods do not do 
> anything */
>      System.out.println ( "Num verts: 
> "+dataArray[0].GetNumberOfVerts() );
>      System.out.println ( "Num polys: 
> "+dataArray[0].GetNumberOfPolys() );
>      System.out.println ( "Vert array: "+dataArray[0].GetVerts() );
>      System.out.println ( "Poly array: "+dataArray[0].GetPolys() );
>
>      double[] ids = new double[3];
>
>      /* Typically here, the value i would represent the objects in the
>       * array, but to illustrate the error that is not necessary.  At the
>       * very least, we can get it to break by having an insane amount
>       * of print statements below.  In this case 10000*10 statements,
>       * while pointList is being assigned dataArray's pointId lists.
>       * */
>      for ( int i=0; i<10000; i++ ) {
>
>        for ( int j=0; j<numCells; j++ ) {
>      theCell = dataArray[0].GetCell(j);
>      if ( j%10000 == 0 )
>          System.out.println ( "Dataset "+i+", cell "+j );
>      pointList = dataArray[0].GetCell(j).GetPointIds();
>      //points = dataArray[0].GetCell(j).GetPoints();
>      //numPoints = points.GetNumberOfPoints();
>
>      for ( int k=0; k<10; k++ ) {
>        //points.GetPoint(k,ids);
>        //points.GetPoint(k);
>        //pointList.GetId(k);
>
>        System.out.println ( i+" "+ids[0]+" "+ids[1]+" "+ids[2] );
>        /*
>        theId = pointList.GetId ( k );
>        tempPoint = new Point3d ( points.GetPoint(k) );
>        if ( theId+1 > finalPoints.size() )
>          finalPoints.setSize ( theId+1 );
>        if ( finalPoints.get ( theId ) == null )
>          finalPoints.add ( theId, tempPoint );
>        */
>          }
>
>        }
>      }
>
>      //System.out.println ( finalPoints.size() );
>
>    }
> }
>
> Thanks again,
> Eugene
> _______________________________________________
> This is the private VTK discussion list. Please keep messages 
> on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
>




More information about the vtkusers mailing list