Okay, here's the deal.
Java3D isn't, shall we say, the easiest to use rendering system. But it's what we need to make do with. :-( One of the problems with Java3D is that it has a lot of hidden, undocumented nonsense. Changing colors in spheres is one of them. Things that Sun never told us:
1. You can't create a *new* Appearance object once the scene is live -- you have to change the existing one.
2. BUT you still have to call setAppearance(...) with this existing object.
3. AND you have to call setAppearance on the shape, not the SpherePortrayal3D. Even though the SpherePortrayal3D has... as setAppearance method.
Okay, I've got something working, so if you need something immediately I can provide you with an example, and two revised files, which will change colors as you like. But to do it well and properly, I'll need to make a few more tweaks.
On Sep 2, 2009, at 6:59 AM, Joerg Hoehne wrote:
I'm trying to change the color of an SpherePortrayal3D object during runtime. I've checked my
code and I'm positive the color of the object will be changed but not visualized accordingly.
I've got the impression the color of a XXXPortrayal3D object can't be changed after the first
construction (or display) of the 3D scene by j3d. Before the first construction/display I was able to
change the color with the same code snipped found below.
Here is the code snippet anyway ('this' references to a subclassed SpherePortrayal3D object):
this.appearance = SpherePortrayal3D.appearanceForColor(color);
There has been a discussion some years ago about a similar topic (changing the transparency
during runtime) and I wonder if a solution has been found.
I'm working on a Mac with OS X 10.6. The monitored effect might be os depended because j3d
might cache some information about the displayed objects and assumes some properties won't
change in the future.