Hallo,
Ich versuche gerade mittels der TexturePaint Methode und den hoffentlich richtig transformierten Texturkoordinaten eine Textur auf ein Dreieck zu zeichnen.
Das bisherige Ergebnis ist, das die Textur zwar in dem Cube dargestellt wird allerdings nicht transformiert ist (Bild im Anhang).
Hier die render Methode, die ein Path-Dreieck-Shape aus den gegebenen Verticies erstellt und mittels setPaint auf das Shape anbringt.
Ich habe bereits mit den texturkoordinaten herumexperimentiert, allerdings wird die textur bestenfalls wie auf dem bild angezeigt. Außerdem habe ich, wie im Code auskommentiert, eine AffineTransform mit der 3x2 Matrix erstellt, die mit den auf graphics2d beschränkten transformationen (inkl. Scherung) die textur richtigt darstellt, aber ohne Erfolg.
Vielleicht weiß jemand Rat.
Grüße Eichelhäer.
Ich versuche gerade mittels der TexturePaint Methode und den hoffentlich richtig transformierten Texturkoordinaten eine Textur auf ein Dreieck zu zeichnen.
Das bisherige Ergebnis ist, das die Textur zwar in dem Cube dargestellt wird allerdings nicht transformiert ist (Bild im Anhang).
Hier die render Methode, die ein Path-Dreieck-Shape aus den gegebenen Verticies erstellt und mittels setPaint auf das Shape anbringt.
Java:
public void renderTexturedTriangle(Graphics2D graphics2D, Triangle triangle, BufferedImage texture) {
GeneralPath generalPath = new GeneralPath();
generalPath.moveTo(triangle.p[0].x+triangle.t[0].u,triangle.p[0].y+triangle.t[0].v);
generalPath.lineTo(triangle.p[1].x+triangle.t[1].u,triangle.p[1].y+triangle.t[1].v);
generalPath.lineTo(triangle.p[2].x+triangle.t[2].u,triangle.p[2].y+triangle.t[2].v);
generalPath.closePath();
Rectangle2D bounds = generalPath.getBounds2D();
TexturePaint texturePaint = new TexturePaint(texture,bounds);
graphics2D.setPaint(texturePaint);
//graphics2D.setTransform(new AffineTransform(triangle.t[0].u,triangle.t[0].v,triangle.t[1].u,triangle.t[1].v,triangle.t[2].u,triangle.t[2].v));
graphics2D.fill(generalPath);
}
Ich habe bereits mit den texturkoordinaten herumexperimentiert, allerdings wird die textur bestenfalls wie auf dem bild angezeigt. Außerdem habe ich, wie im Code auskommentiert, eine AffineTransform mit der 3x2 Matrix erstellt, die mit den auf graphics2d beschränkten transformationen (inkl. Scherung) die textur richtigt darstellt, aber ohne Erfolg.
Vielleicht weiß jemand Rat.
Grüße Eichelhäer.