Hallo Zusammen,
ich habe ein Problem mit dem Java3D Texture Mapping. Ich habe eine einfache Ebenee, auf die ein Bild als Texture gemappt werden soll. Die Texture wird auch angezeigt, nur spiegelverkehrt.
Die Ebene habe ich in Blender erstellt und dort die Texture Koordinaten auch manuell überprüft. Die Koordinaten müssten eigentlich richtig sein, nur erfolgt die Anzeige eben spiegelverkehrt.
Hier die Methode, wo das Mapping erfolgt.
Hat jemand eine Idee?
Vielen Dank!
Chris
ich habe ein Problem mit dem Java3D Texture Mapping. Ich habe eine einfache Ebenee, auf die ein Bild als Texture gemappt werden soll. Die Texture wird auch angezeigt, nur spiegelverkehrt.
Die Ebene habe ich in Blender erstellt und dort die Texture Koordinaten auch manuell überprüft. Die Koordinaten müssten eigentlich richtig sein, nur erfolgt die Anzeige eben spiegelverkehrt.
Hier die Methode, wo das Mapping erfolgt.
Java:
private void loadObject4() {
this.fCoords = new float[]{1f, 0f, -1f, -1f, 0f, -1f, -1f, 0f, 1f, 1f, 0f, 1f};
this.indexes = new int[]{0, 1, 2, 0, 2, 3};
this.fNorms = new float[]{0f, 1f, 0f, 0f, 1f, 0f, 0f, 1f, 0f, 0f, 1f, 0f};
this.fTex = new float[]{0f, 1f, 1f, 1f, 1f, 0f, 0f, 0f};
javax.media.j3d.IndexedTriangleArray mesh = new javax.media.j3d.IndexedTriangleArray(fCoords.length / 3, IndexedTriangleArray.COORDINATES
| IndexedTriangleArray.NORMALS | IndexedTriangleArray.BY_REFERENCE
| IndexedTriangleArray.BY_REFERENCE_INDICES | IndexedTriangleArray.USE_COORD_INDEX_ONLY
| IndexedTriangleArray.TEXTURE_COORDINATE_2, indexes.length);
mesh.setCoordRefFloat(fCoords);
mesh.setCoordIndicesRef(indexes);
mesh.setNormalRefFloat(fNorms);
mesh.setTexCoordRefFloat(0, fTex);
shape = new Shape3D(mesh);
TextureLoader myLoader = new TextureLoader("models/pic.png", this);
ImageComponent2D myImage = myLoader.getImage();
Texture2D myTex = new javax.media.j3d.Texture2D(Texture2D.BASE_LEVEL, Texture2D.RGB, myImage.getWidth(), myImage.getHeight());
myTex.setImage(0, myImage);
myTex.setEnable(true);
Material mat = new Material();
Appearance app = new javax.media.j3d.Appearance();
app.setMaterial(mat);
app.setTexture(myTex);
shape.setAppearance(app);
// position the object
Transform3D t3d = new Transform3D();
//t3d.rotZ(Math.PI / 2);
t3d.setTranslation(new Vector3f(0f, 1f, 0));
TransformGroup tg = new TransformGroup(t3d);
tg.addChild(shape);
sceneBG.addChild(tg);
}
Vielen Dank!
Chris