perspektivische Korrektur der textur-Koordinaten in 3d

Ich Schreibe ein software-renderer, die derzeit gut funktioniert, aber ich versuche, perspektivische Korrektur der textur-Koordinaten und das scheint nicht korrekt zu sein. Ich bin mit all den gleichen matrix-Mathematik als opengl für meinen renderer. Zu rasterise ein Dreieck, ich Tue das folgende:

  1. transformieren die vertices mit der modelview-und projection-Matrizen und die Transformation in clip-Koordinaten.

  2. für jedes pixel in jedem Dreieck, berechnen barycentric coordinates Interpolation von Eigenschaften (Farbe, textur-Koordinaten, normalen, etc.)

  3. zur Korrektur der Perspektive, die ich verwenden perspektivisch korrekte interpolation:
    (w ist die Tiefe Koordinate des vertex, c ist die textur-Koordinate von Eckpunkt b ist die barycentric Gewicht eines vertex)

1/w = b0*(1/w0) + b1*(1/w1) + b2*(1/w2)
c/w = b0*(c0/w0) + b1*(c1/w1) + b2*(c2/w2)
c = (c/w)/(1/w)

Diese sollten die richtige Perspektive, und es hilft ein wenig, aber es ist immer noch eine offensichtliche Perspektive problem. Bin ich hier etwas fehlt, vielleicht die Rundung Probleme (ich bin mit Schwimmer für alle Mathe)?

Sehen in diesem Bild den Fehler in der textur-Koordinaten, die offensichtlich entlang der diagonalen, das ist das Ergebnis der division durch Tiefe Koordinaten.

perspektivische Korrektur der textur-Koordinaten in 3d

Auch, diese erfolgt in der Regel für die textur-Koordinaten... ist es notwendig, für andere Eigenschaften (z.B. normals etc.) wie auch?

  • Screenshots hilfreich sein könnten.
  • Ich kann nicht fügen Sie einen screenshot, bis ich eine Bewertung von 10 🙁
  • Sie haben die rating jetzt 😀
  • danke, hinzugefügte Bild.
InformationsquelleAutor James Edge | 2011-03-24
Schreibe einen Kommentar