Dear All,

I am still miffed at why I cannot modify the Appearance of the 
utils.geometry Sphere class during execution. The CREATE SPHERES section 
below shows my basic arrangement for creating a number of Spheres and 
setting all capabilities to read and write. The MODIFY COLOUR section is the 
method I use to modify the Appearance objects during execution. I keep 
getting a

javax.media.j3d.CapabilityNotSetException: Shape3D: no capability to

set appearance
        at javax.media.j3d.Shape3D.setAppearance(Compiled Code)
        at com.sun.j3d.utils.geometry.Sphere.setAppearance(Compiled Code)
        at appearance.ColourSchemeManager.process(Compiled Code)
        at 
appearance.AppearanceManager.setColourScheme(AppearanceManager.java:7

exception when calling the MODIFY COLOUR part of the code. Strangely enouogh 
if I use the COLORCUBE subclass of SHAPE3D then it all works fine. Is this 
somethng to do with Sphere's superclass being PRIMITIVE???

Any help REALLY appreciated.

Cheers,

Allistair Crossley

CREATE SPHERES CODE
----------------------------------------

{
  Atom[] atoms = m.getAtoms();

  boolean renderHeteroAtoms = dOptions.isHeteroAtomsOn();

  TransformGroup aTG = new TransformGroup();
  aTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
  aTG.setCapability(Group.ALLOW_CHILDREN_READ);

  for(int i = 0; i < atoms.length; i++)
  {
   if( (!renderHeteroAtoms) && (atoms[i].isHetatm()) )
    continue;

   Transform3D atomT3D = new Transform3D();
   atomT3D.set(0.1, new Vector3d(atoms[i].getX(), atoms[i].getY(), 
atoms[i].getZ()));
   TransformGroup atomTG = new TransformGroup(atomT3D);

   file://atomTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
   atomTG.setCapability(Group.ALLOW_CHILDREN_READ);
   atomTG.setCapability(Group.ALLOW_CHILDREN_WRITE);

   Appearance app = new Appearance();
   Sphere atom = new Sphere(5.0f, app);

   file://Sphere s = new Sphere( 
(ElementsManager.getElement(atoms[i].getRefNo()).getVDWRadius()) / 20, 1, 
app);
   file://Shape3D atom = s.getShape();



   atom.setCapability(Group.ALLOW_CHILDREN_READ);
   atom.setCapability(Group.ALLOW_CHILDREN_WRITE);

   atomTG.addChild(atom);
      aTG.addChild(atomTG);
  }

  return aTG;
}

]

MODIFY COLOUR CODE
-------------------------------------

this.molecule = m;

  Atom[] a = molecule.getAtoms();
  Bond[] bonds = molecule.getBonds();
  TransformGroup theAtoms;
  int numAtomChildren;

  switch(mode)
  {
   case DisplayModeManager.SPACEFILL :

    int numChildren = atomsTG.numChildren();

    for(int i = 0; i < numChildren; i++)
    {
     TransformGroup atomTG = (TransformGroup)atomsTG.getChild(i);
     Sphere atom = (Sphere)atomTG.getChild(0);

     switch(s)
     {
      case AMINO : atom.setAppearance(getAmino(a[i], 
DisplayModeManager.SPACEFILL, false));
           break;
      case CHAIN : atom.setAppearance(getChain(a[i].getChain(), 
a[i].isHetatm(), DisplayModeManager.SPACEFILL, false));
           break;
      case CPK   : atom.setAppearance(getCPK(a[i], 
DisplayModeManager.SPACEFILL, false));
           break;
     }
    }
    break;


______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
=====================================================================
To subscribe/unsubscribe, send mail to [EMAIL PROTECTED]
Java 3D Home Page: http://java.sun.com/products/java-media/3D/

Reply via email to