Hello everyone,

  I am having problems trying to set the appearance of the top side of a
cylinder. I use a picture to indicate the texture I want to apply to my
cylinder, but when I do a setAppearance on the top side of the cylinder--
setAppearance.(cyl.TOP, theApp) or cyl.getShape(Cylinder.TOP).setAppearance
(theApp)-- all I see are lines but no texture(the texture render fine on
the round surface).

 I use a TexCoordGeneration plus a TextureLoader to obtaint the texture
and the corresponding coordinates. But nothing seems to work. Can some one
give me a hint on how to achive this? Please? What am I omitting?

  Below I post the code I am using. Thanks all in advance,
JC

=============================================
Code starts here
=============================================
import java.awt.*;
import java.awt.event.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.behaviors.mouse.*;
import com.sun.j3d.utils.image.TextureLoader;


public class myCylinder extends Frame implements ActionListener
{
  protected Canvas3D displayCanvas;

  protected SimpleUniverse myVWorld;

  protected Button Quit;

  public myCylinder()
  {
    displayCanvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration
());
    myVWorld      = new SimpleUniverse(displayCanvas);
    Quit          = new Button("Quit");

    Quit.addActionListener(this);

    this.setLayout(new BorderLayout());
    this.add("Center", displayCanvas);

    Panel ButtonsPanel = new Panel();
    ButtonsPanel.setLayout(new GridLayout(1, 3));
    ButtonsPanel.add(Quit);

    this.add("South", ButtonsPanel);

    Appearance theApp = new Appearance();

    TexCoordGeneration texCoordGen = new
                    TexCoordGeneration(TexCoordGeneration.OBJECT_LINEAR,

TexCoordGeneration.TEXTURE_COORDINATE_2);

 TextureLoader textureLoader = new TextureLoader("turf.jpg", null);

 ImageComponent2D img = textureLoader.getImage();

    Texture2D wallsTexture = new Texture2D(Texture.BASE_LEVEL,
Texture.RGBA,
                                           img.getWidth(), img.getHeight
());

    wallsTexture.setBoundaryModeS(Texture.WRAP);
    wallsTexture.setBoundaryModeT(Texture.WRAP);

    wallsTexture.setImage(0, img);
    wallsTexture.setEnable(true);
    wallsTexture.setMagFilter(Texture.NICEST);
    wallsTexture.setMinFilter(Texture.NICEST);

    PolygonAttributes polyAttr =
            new PolygonAttributes(PolygonAttributes.POLYGON_FILL,
                                  PolygonAttributes.CULL_NONE, 0.0f);

    theApp.setPolygonAttributes(polyAttr);
    theApp.setTexCoordGeneration(texCoordGen);
 theApp.setTexture(wallsTexture);


    PointLight sunLight = new PointLight(new Color3f(0.9f, 0.9f, 0.9f),
                                         new Point3f(0.0f, 1.0f, 1.0f),
                                         new Point3f(1.5f, 0.0f, 0.0f));

    BoundingSphere inflZone =
                 new BoundingSphere(new Point3d(0.0f, 0.0f, 0.0f), 300.0f);

    sunLight.setInfluencingBounds(inflZone);


    TransformGroup trGrpMain = new TransformGroup();
    trGrpMain.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
    trGrpMain.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

    trGrpMain.addChild(sunLight);

    Cylinder cyl = new Cylinder(1.0f, 0.1f, Cylinder.GENERATE_NORMALS,
                                64, 1, theApp);

   //cyl.getShape(Cylinder.TOP).setAppearance(theApp);
   cyl.setAppearance(cyl.TOP, theApp);

    trGrpMain.addChild(cyl);

    MouseZoom mZoom = new MouseZoom(trGrpMain);
    MouseRotate mRot = new MouseRotate(trGrpMain);
    MouseTranslate mTransl = new MouseTranslate(trGrpMain);

    mZoom.setSchedulingBounds(inflZone);
    mRot.setSchedulingBounds(inflZone);
    mTransl.setSchedulingBounds(inflZone);

    BranchGroup brGrp = new BranchGroup();

    brGrp.addChild(trGrpMain);
    brGrp.addChild(mZoom);
    brGrp.addChild(mRot);
    brGrp.addChild(mTransl);
    myVWorld.getLocale().addBranchGraph(brGrp);


    Transform3D tr3D = new Transform3D();
    tr3D.setTranslation(new Vector3f(0.0f, 0.0f, 2.0f));

    myVWorld.getViewingPlatform().
             getViewPlatformTransform().setTransform(tr3D);

    this.setSize(400, 600);
    this.setVisible(true);

  }

  public void actionPerformed(ActionEvent e)
  {
    if(e.getActionCommand() == "Quit")
    {
      this.dispose();
      System.exit(0);
    }

  }

  public static void main(String[] _args)
  {
    myCylinder cylind = new myCylinder();
  }

}
=============================================
Code ends here
=============================================

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