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