NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
Hi, sure I can Display the results with VisAD, but unfortunately that is not what I want, because I want to use my own "Display"-classes. I need to put the 3D-object-content in my class "Layer3D.java" which is waiting for a Shape3D or a BranchGroup or a TransformGroup from Java3D. Due to your previous mail I got the idea, maybe I could use the Java3D-scenegraph produced from VisAD. So i tried to track down the VisAD-BranchGroup the following way: DisplayImplJ3D visad; visad = test.getVisADDisplay(); visad.getDefaultDisplayRenderer(); DisplayRenderer visadrend = visad.getDefaultDisplayRenderer(); if (visadrend instanceof DefaultDisplayRendererJ3D) { DefaultDisplayRendererJ3D visaddd (DefaultDisplayRendererJ3D) visadrend; TransformGroup visadtrans = visaddd.getTrans(); // GIS3DView machen und fuellen GIS3DView gis3dView = new GIS3DView(true); Layer3D layer3d = new Layer3D(); layer3d.addTransformGroup(visadtrans); gis3dView.addLayer(layer3d); GisTermService s = GisTerm.lookupService("GisTerm"); JTabbedPane p = gisTerm.getTabbedPane(); //p.add("VisAD",visad.getComponent()); p.add("VisAD",gis3dView); p.setSelectedComponent(gis3dView); } Then I get the following Compiler error: javac -g GroundWaterApp.java GroundWaterApp.java:157: No method matching getDefaultDisplayRenderer() found in class visad.java3d.DisplayImplJ3D. DisplayRenderer visadrend = visad.getDefaultDisplayRenderer(); ^ 1 error My Visad API says the method is protected. Can I change the source code to get the DisplayRenderer ? And which of the methods in DisplayRendererJ3D (which are all not commented) would be the right one to get the 3D-content of the Java3D scenegraph and not the content of the ViewBranchGraph. Ok , I know that is probably not for what VisAD was developed: "VisAD shields applications developers from details of graphics APIs. Thus for most applications, the only difference between Java3D and Java2D displays is whether they are constructed with DisplayImplJ3D or DisplayImplJ2D, and the constraint that Java2D displays cannot involve ScalarMaps to ZAxis, Latitude or Alpha." But is it possible or are there any alternatives? Thanks for any help Desiree o------------------------------------------------------------------------o | Desiree Hilbring Institut fuer Photogrammetrie und Fernerkundung | | Universitaet Karlsruhe, Germany | | | | email: hilbring@xxxxxxxxxxxxxxxxxxxx | | # 0721 6083676 | o------------------------------------------------------------------------o On Wed, 23 Aug 2000, Bill Hibbard wrote: > Hi Desiree, > > > Hi thanks for your help, VisAd is working now, and I tried to implement > > your hints. > > So after the Triangulation I get an object terrain (class FlatField), how > > does the geometry of this object looks like? > > For implementing some Java3D-Objects for my application, I guess I need > > some information about triangles, so that I know these coordinates go > > together to build a triangle for building a 3D-object. > > Sorry I am not experienced with Triangulations, am I wrong? > > How would I got to build my 3D-obejcts? > > . . . > > > Assume that the locations of your points are defined in two > > > arrays: > > > > > > float[] x_locations, y_locations; > > > > > > and the terrain heights at these points are defined in the > > > array: > > > > > > float[] heights; > > > > > > Then you can create a terrain as a FlatField like this: > > > > > > RealType x = RealType.getRealType("x"); > > > RealType y = RealType.getRealType("y"); > > > RealType height = RealType.getRealType("height"); > > > RealTupleType xy = new RealTupleType(x, y); > > > FunctionType terrain_type = new FunctionType(xy, height); > > > > > > Irregular2DSet set > > > new Irregular2DSet(xy, new float[][] {x_locations, y_locations}); > > > FlatField terrain = new FlatField(terrain_type, set); > > > terrain.setSamples(new float[][] {heights}); > > To display your terrain, you construct a display, add some > ScalarMaps, add the terrain, and add your display to a GUI: > > DisplayImplJ3D display = new DisplayImplJ3D("name"); > display.addMap(new ScalarMap(x, Display.XAxis)); > display.addMap(new ScalarMap(y, Display.YAxis)); > display.addMap(new ScalarMap(height, Display.ZAxis)); > DataReferenceImpl terrain_ref = new DataReferenceImpl("terrain"); > terrain_ref.setData(terrain); > display.addReference(terrain_ref); > JFrame frame = ... > . . . > frame.getContentPane().add(display.getComponent()); > . . . > > You don't need to worry about constructing a 3-D object. > That is a service provided by VisAD. > > Please study the tutorials and examples. > > Cheers, > Bill > ---------------------------------------------------------- > Bill Hibbard, SSEC, 1225 W. Dayton St., Madison, WI 53706 > hibbard@xxxxxxxxxxxxxxxxx 608-263-4427 fax: 608-263-6738 > http://www.ssec.wisc.edu/~billh/vis.html >
visad
archives: