Java3D Textur verzerrt

puls

Mitglied
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.
 
Zuletzt bearbeitet:
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
 
Ich dachte das wäre mit setCoordGeneration erledigt. Hat jemand ein Beispiel Code für das direkte angeben der Texturkoordinaten ?
Danke
 
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...)
 

Zurück
Oben