TexturePaint und 3d cube

Eichelhäer

Bekanntes Mitglied
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.

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.
 

Anhänge

  • Screenshot 2024-02-17 135711.png
    Screenshot 2024-02-17 135711.png
    28,5 KB · Aufrufe: 0

Ähnliche Java Themen

Neue Themen


Oben