Due to the current gap in continued funding from the U.S. National Science Foundation (NSF), the NSF Unidata Program Center has temporarily paused most operations. See NSF Unidata Pause in Most Operations for details.
Im trying to do isosurfaces on 3d data; im following the examples in test01 and test59; i get the following VisAD Exception: java.lang.NullPointerException at visad.Irregular3DSet.makeSpatial(Irregular3DSet.java:179) at visad.ShadowType.assembleSpatial(ShadowType.java:1678) at visad.ShadowFunctionOrSetType.doTransform(ShadowFunctionOrSetType.java:1 605) at visad.java3d.ShadowFunctionOrSetTypeJ3D.doTransform(ShadowFunctionOrSetT ypeJ3D.java:102) at visad.java3d.DefaultRendererJ3D.doTransform(DefaultRendererJ3D.java:86) at visad.java3d.RendererJ3D.doAction(RendererJ3D.java:180) at visad.DisplayImpl.doAction(DisplayImpl.java:852) at visad.ActionImpl.run(ActionImpl.java:186) at visad.util.ThreadPool$ThreadMinnow.run(ThreadPool.java:86) here's the jist of the code: int sizeX = xaxis.getNumElements(); int sizeY = yaxis.getNumElements(); int sizeZ = zaxis.getNumElements(); int[] index = {0, 0, 0}; float[][] xyz = new float[3][(int) arr.getSize()]; float[][] f = new float[1][(int) arr.getSize()]; long startTime = System.currentTimeMillis(); for (int k=0; k<sizeZ; k++) { for (int j=0; j<sizeY; j++) { for (int i=0; i<sizeX; i++) { int elem = i + (j + k*sizeY)*sizeX; index[0] = k; index[1] = j; index[2] = i; f[0][elem] = arr.getFloat(index); xyz[0][elem] = (float) xaxis.getCoordValue(i); xyz[1][elem] = (float) yaxis.getCoordValue(j); xyz[2][elem] = (float) zaxis.getCoordValue(k); } } } RealType xtype = VisUtil.RealTypeFactory(xname); RealType ytype = VisUtil.RealTypeFactory(yname); RealType ztype = VisUtil.RealTypeFactory(zname); RealType ftype = VisUtil.RealTypeFactory(fname); RealTupleType xyzType = new RealTupleType(xtype, ytype, ztype); FunctionType ft = new FunctionType(xyzType, ftype); Gridded3DSet xyzSet = new Gridded3DSet(xyzType, xyz, nx, ny, nz); FlatField ffld = new FlatField(ft, xyzSet); ffld.setSamples(f); // create a DataReference DataReference setRef = new DataReferenceImpl("Visad_DataReference"); setRef.setData(ffld); // create a Display using Java3D DisplayImpl display = new DisplayImplJ3D("Visad3D_Display"); // map plot to display coordinates display.addMap(new ScalarMap(xtype, Display.XAxis)); display.addMap(new ScalarMap(ytype, Display.YAxis)); display.addMap(new ScalarMap(ytype, Display.ZAxis)); display.addMap(new ScalarMap(ftype, Display.IsoContour)); // link the Display to the data display.addReference(setRef); // add axes GraphicsModeControl mode = display.getGraphicsModeControl(); mode.setScaleEnable(true); // return a JComponent of preferred size JComponent c = (JComponent) display.getComponent(); c.setPreferredSize(displaySize); return c;
visad
archives: