Hi, I am trying to create a grayscale texture, which I am generating, on a rectangle and I have some questions. I am currently getting:
Exception occurred during event dispatching: java.awt.image.RasterFormatException: DataBuffer for ByteComponentRasters must only have 1 bank. The code looks like this: // I have a byte array with the gray values // int xsize, ysize; (set to the size of the image) // int length = xsize * ysize; // byte [] byte_array = new byte [length]; // byte_array values are set DataBufferByte db = new DataBufferByte(byte_array, length); BufferedImage bi = new BufferedImage(xsize, ysize, BufferedImage.TYPE_BYTE_GRAY); int[] bandMasks = new int[1]; // ??? SinglePixelPackedSampleModel sm = new SinglePixelPackedSampleModel( DataBuffer.TYPE_BYTE,xsize,ysize,bandMasks); ? - what do I set bandMasks to, or is there an easier way? WritableRaster wr = Raster.createWritableRaster(sm, db,new Point()); bi.setData(wr); Appearance appear = new Appearance(); Texture2D texture = new Texture2D(Texture.BASE_LEVEL, Texture.INTENSITY, image.getWidth(), image.getHeight()); ? should I use INTENSITY here? ImageComponent2D ic = new ImageComponent2D( ImageComponent.FORMAT_CHANNEL8,image); ? should I use FORMAT_CHANNEL8 here? texture.setImage(0, ic); texture.setEnable(true); texture.setMagFilter(Texture.NICEST); appear.setTexture(texture); TransparencyAttributes transparencyAttributes = new TransparencyAttributes(); transparencyAttributes.setTransparency(TransparencyAttributes.NONE); appear.setTransparencyAttributes(transparencyAttributes); BranchGroup grp = new BranchGroup(); grp.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND); QuadArray plane = new QuadArray(4, GeometryArray.COORDINATES | GeometryArray.TEXTURE_COORDINATE_2 ); Enumeration e = v.elements(); // loop over rectangle coordinates to set the plane while (e.hasMoreElements()) { Object o = e.nextElement(); Struct3DDouble val = (Struct3DDouble) o; Point3f p = new Point3f((float)val.x_value, (float)val.y_value, (float)val.z_value); plane.setCoordinate(0, p); } Point2f q = new Point2f( 1.0f, 1.0f); plane.setTextureCoordinate(0, q); q.set(1.0f, 0.0f); plane.setTextureCoordinate(1, q); q.set(0.0f, 0.0f); plane.setTextureCoordinate(2, q); q.set(0.0f, 1.0f); plane.setTextureCoordinate(3, q); ? is there a better way of doing this? my rectangle will eventually be moving... Shape3D shape = new Shape3D(plane,appear); grp.addChild(shape); // add to my root myroot.addChild(grp); Later I would like to try having the texture map transparent. How would I go about doing this? Thanks for any help, Sandy =========================================================================== To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff JAVA3D-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help".