Surely it cannot be so insanely difficult to do something this simple.
I am trying to write code to change the color of a Shape3D object.
The Shape3D object is created using this method:

  private Box makeBox(Color3f color) {
    Appearance app = new Appearance();
    app.setCapability(Appearance.ALLOW_COLORING_ATTRIBUTES_READ);
    app.setCapability(Appearance.ALLOW_COLORING_ATTRIBUTES_WRITE);

    // adding the next two lines makes no difference
    // app.setCapability(Appearance.ALLOW_MATERIAL_READ);
    // app.setCapability(Appearance.ALLOW_MATERIAL_WRITE);

    Box box = new Box(0.2f, 0.2f, 0.2f, app);

    ColoringAttributes ca = new ColoringAttributes(color, ColoringAttributes.FASTEST);
    app.setColoringAttributes(ca);

    box.setCapability(Shape3D.ALLOW_APPEARANCE_READ);
    box.setCapability(Shape3D.ALLOW_APPEARANCE_WRITE);

    // adding the next line makes no difference
    // box.setCapability(Primitive.ENABLE_APPEARANCE_MODIFY);

    return box;
  }

Still, I get the runtime error:

  javax.media.j3d.CapabilityNotSetException: Shape3D: no capability to get appearance
           at javax.media.j3d.Shape3D.getAppearance(Shape3D.java:430)
           at com.sun.j3d.utils.geometry.Primitive.getAppearance(Primitive.java:166)
           at 
MyPickCallbackApp$MyCallbackClass.transformChanged(MyPickCallbackApp.java:33)

  ...

(Notice that the error happens even when the code attempts to get--not
change--the appearance.)

This seems to contradict the following (from the Archives):

   Date:         Tue, 14 Sep 1999 06:58:24 -0700
   From:         Kevin Rushforth <[EMAIL PROTECTED]>
   Subject:      Re: Changing Sphere Color

   Since you can create your own appearance and use that appearance to
   construct a [Shape3D], you have full control over the capability bits
   that are set in the appearance.

I've jumped through every hoop I can think of to get this to work.

Any suggestions?

Thanks!

KJ

===========================================================================
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".

Reply via email to