hi If you create you cylinder with flag GENERATE_TEXTURE_COORDS, there is no need to create texture coords with TexCoordGeneration, unless you need some especial features as sphere mapping, reflection mapping, 3D or 4D texture coords, etc
Alessandro Borges --- Juan Carlos Bermudez <[EMAIL PROTECTED]> escreveu: > 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". > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com =========================================================================== 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".