Fredrik,
Try changing the order of your texture coordinates like:
Point2f point2f = new Point2f(0.0f, 0.0f); // you had 0,1
quadArray.setTextureCoordinate(0, point2f);
point2f.set(1.0f, 0.0f); // you had 0,0
quadArray.setTextureCoordinate(1, point2f);
point2f.set(1.0f, 1.0f); // you had 1,0
quadArray.setTextureCoordinate(2, point2f);
point2f.set(0.0f, 1.0f); // you had 1,1
quadArray.setTextureCoordinate(3, point2f);
(sorry if I screwed this up but I really didn't take any time to look at
your code and how the points were really laying out).
- John Wright
Starfire Research
Fredrik Andersson wrote:
>
> Hello!
>
> I'm trying to set an texture on to a Shape3D but the picture always
> appear upside down. Like a painting hanging upside down, (not faceing
> the wall, hope you understand).
>
> I have tried to change the textureCordinates but nothing happens, this
> is the code:
>
> 1) The Shape3D
> import java.applet.*;
> import java.awt.*;
> import java.awt.Frame;
> import java.awt.event.*;
> import com.sun.j3d.utils.applet.MainFrame;
> import com.sun.j3d.utils.universe.*;
> import com.sun.j3d.utils.geometry.*;
> import javax.media.j3d.*;
> import javax.vecmath.*;
> import java.awt.event.*;
> import java.util.Enumeration;
>
> public class TextureGround extends Shape3D
> {
> float x = 2;
> float y = 4;
> float z = 2;
>
> float posX = 0;
> float posY = 0;
> float posZ = 0;
>
> int type = 0;
>
> public TextureGround(float x, float y, float z, Point3f point3f,
> String imageName, Applet applet)
> {
> this.x = x;
> this.y = y;
> this.z = z;
>
> posX = point3f.x;
> posY = point3f.y;
> posZ = point3f.z;
>
> QuadArray quadArray = new QuadArray(4,
> GeometryArray.COORDINATES | GeometryArray.TEXTURE_COORDINATE_2);
>
> //Point3f point3f = new Point3f(posX, posY, posZ);
> quadArray.setCoordinate(0, point3f);
>
> point3f.set(posX, posY, posZ - z);
> quadArray.setCoordinate(1, point3f);
>
> point3f.set(posX + x, posY, posZ - z);
> quadArray.setCoordinate(2, point3f);
>
> point3f.set(posX + x, posY, posZ);
> quadArray.setCoordinate(3, point3f);
>
> Point2f point2f = new Point2f(0.0f, 1.0f);
> quadArray.setTextureCoordinate(0, point2f);
>
> point2f.set(0.0f, 0.0f);
> quadArray.setTextureCoordinate(1, point2f);
>
> point2f.set(1.0f, 0.0f);
> quadArray.setTextureCoordinate(2, point2f);
>
> point2f.set(1.0f, 1.0f);
> quadArray.setTextureCoordinate(3, point2f);
>
> setAppearance(new TextureAppearance(imageName, applet));
> setGeometry(quadArray);
> }
> }
>
> 2) The TextureAppearance
>
> import java.applet.*;
> import java.awt.*;
> import java.awt.Frame;
> import java.awt.event.*;
> import com.sun.j3d.utils.applet.MainFrame;
> import com.sun.j3d.utils.universe.*;
> import com.sun.j3d.utils.geometry.*;
> import javax.media.j3d.*;
> import javax.vecmath.*;
> import com.sun.j3d.utils.behaviors.keyboard.*;
> import com.sun.j3d.utils.image.TextureLoader;
>
> public class TextureAppearance extends Appearance
> {
> public TextureAppearance(String imageName, Applet applet)
> {
> TextureLoader textureLoader = new
> TextureLoader(imageName, applet);
> ImageComponent2D imageComponent2D =
> textureLoader.getImage();
> Texture2D texture2D = new Texture2D(Texture.BASE_LEVEL,
> Texture.RGBA, imageComponent2D.getWidth(),
> imageComponent2D.getHeight());
> texture2D.setImage(0, imageComponent2D);
> setTexture(texture2D);
>
> PolygonAttributes polygonAttributes = new
> PolygonAttributes();
>
> polygonAttributes.setCullFace(PolygonAttributes.CULL_NONE);
> setPolygonAttributes(polygonAttributes);
> }
>
> }
>
> 3) I test this with:
> branchGroup.addChild(addShape3DAt(new Point3f(0.0f, 0.0f, 0.0f),
> "images/coastline_north_west.gif"));
>
> public Shape3D addShape3DAt(Point3f point3f, String fileName)
> {
> TextureGround textureGround = new TextureGround(20.0f, 0.0f,
> 20.0f, point3f, fileName, this);
> return textureGround;
> }
>
> I can't understand why it always appear hanging upsidedown, so if
> someone understands please let me know!
>
> Best Regards
>
> Fredrik Andersson
>
> ===========================================================================
> 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".
===========================================================================
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".