# Java3D Textur verzerrt



## puls (19. Okt 2010)

Problem:
Hallo liebe Forum User ich versuche ein Terrain zur Laufzeit zu generieren was auch ganz gut funktioniert. Leider funktioniert das Textur setzten nicht korrekt. Die Textur ist in eine Richtung verzerrt und ich bekomme es nicht richtig hin das mein Bild auf dem Shape3D Objekt korrekt dargestellt wird.

Nicht wundern der ColorCube ist nur für mich zur besseren Orientierung da.

Ziel:
Ich wollte eigendlich erreichen das die Textur sich wie Kacheln gleichmäßig und ungestreckt ausbreitet.

Hier ein Bild vom Terrain:






Hier die Originaltextur:





Hier der Code für das Textur setzen:

[JAVA=42]
Shape3D terrain = new Shape3D();

		Point3f[] vertex = new Point3f[(a + 1) * (a + 1)];
		int[] index = new int[(((a * a) * 2) * 3)];
		IndexedTriangleArray dreiecke = new IndexedTriangleArray(vertex.length, IndexedTriangleArray.COORDINATES,index.length);

		System.out.println("Generiere Terrain Seitenlänge: " + a + " Vertex: " + vertex.length + " Index: " + index.length);

		// add Vertex
		dreiecke.setCoordinates(0, createVertex(a));
		// add Index
		dreiecke.setCoordinateIndices(0,createIndex(a));

		// Aussehen
		Appearance optik = new Appearance();
		optik.setTexture(new TextureLoader("Textur_Wiese.jpg",null).getTexture());
		optik.setTextureAttributes(new TextureAttributes(TextureAttributes.REPLACE,new Transform3D(),new Color4f(),TextureAttributes.NICEST));
		optik.setTexCoordGeneration(new TexCoordGeneration(TexCoordGeneration.OBJECT_LINEAR, TexCoordGeneration.TEXTURE_COORDINATE_2));
		terrain.setAppearance(optik);


		// add Geometrie
		terrain.addGeometry(dreiecke);

		return terrain;
[/code]

Vielen Dank im vorraus für die Hilfe.

ps: kann das sein das Java3D nicht so richtig angekommen ist. Es scheint nicht all zu viele user zu geben.


----------



## Empire Phoenix (19. Okt 2010)

Java 3d bin ich ciht sicher, aber ich dneke die meisten benutzen ehere lwjgl oder jogl, bzw darauf aubaunde engine (jmonkey,ardor3d ect)

Zu deinen problem, ich denke du musst irgetwie texturecoordinaten setzen


----------



## puls (19. Okt 2010)

Ich dachte das wäre mit setCoordGeneration erledigt. Hat jemand ein Beispiel Code für das direkte angeben der Texturkoordinaten ?
Danke


----------



## Marco13 (19. Okt 2010)

Im einfachsten Fall musst du eine Methode machen die ähnlich wie
dreiecke.setCoordinates(0, createVertex(a));
eben als
dreiecke.setTextureCoordinatesCoordinates(0, createTextureCoordinates(a));
aufgerufen wird. Die Koordinaten ans sich sollten analog zu den Koordinaten der Vertices sein (d.h. eigentlich einfach nur 2D statt 3D, oder ggf. auf den Bereich [0,1]x[0,1] skaliert...)


----------

