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 Doug, > I'm not having much luck getting the colors I want. No worries, mate. > I had something like this: > > (x,y) -> (z) > with z mapped to a display color such that I had some decent looking > terrain. > > I then had > > (x,y,z) -> shape > so I could have a shape fly through the 3D scene. This actually works > but my shape object changes color with height - an interesting effect, > but not the one I'm after. :-) > > Is there a way to specify the color of a shape without getting fancy > with mappings (i.e. not like Test47 which about turned my brain inside > out)? To do this, you need to set the .colors field in your shapes (i.e., VisADGeometryArrays), as is done in Test 46. The only tricky part is that colors are now unsigned bytes, which are not a supported primitive data type of Java. If you want a constant color shape, first decide how to describe that color as proportions of red, green abd blue - with a float value for each between 0.0f (off) and 1.0f (on). Then translate these proportions to unsigned bytes using the static method ShadowType.floatToByte, as follows: byte red_byte = ShadowType.floatToByte(red_float); byte green_byte = ShadowType.floatToByte(green_float); byte blue_byte = ShadowType.floatToByte(blue_float); Then, after you've constructed your shape, fill this color into your shape as follows: VisADGeometryArray shape = ... ... shape.colors = new byte[shape.coordinates.length]; for (int i=0; i<shape.coordinates.length; i+=3) { shape.colors[i] = red_byte; shape.colors[i+1] = green_byte; shape.colors[i+2] = blue_byte; } > Do I need to use this ColorControl thing? Any examples, suggestions? This is used when you have some RealType mapped to RGB and you want to change the mapping from RealType values to colors while the application runs. If you want the user to directly control the color mapping, then you can construct a visad.util.LabeledRGBWidget from the ScalarMap to RGB. > I also have > (x,y,z) -> (u_wind,v_wind) > and I'd like the wind vectors be colored by height, but not the same as > terrain. > > Do I simply need a different "z" for each of these? Afraid so. If you want two different color maps according to height, then you need to define two different height RealTypes (e.g., "z1" and "z2"). > While I'm at it, why do I get blue when I map to Display.Yellow (and > other related stuff)? Because Yellow is part of the CMY = (Cyan, Magenta, Yellow) color coordinate system. The default for these is 1.0f. Thus when you map only to Yellow, Cyan and Magenta are always 1.0f, but Yellow is mostly less than 1.0f, so you get lots of blue. Works the same way with (Red, Green, Blue). Cheers, Bill ---------------------------------------------------------- Bill Hibbard, SSEC, 1225 W. Dayton St., Madison, WI 53706 whibbard@xxxxxxxxxxxxx 608-263-4427 fax: 608-263-6738 http://www.ssec.wisc.edu/~billh/vis.html
visad
archives: