Jo thx, werde ich bei Gelegenheit auch mal ausprobieren . Hab das Problem jetzt fast geloest, sind noch leicht sichtbare Streifen aber die werd ich schon noch irgentwie wegbekommen:
Warum mittelst du da die Normalen von 7*7 Feldern? Du solltest nur die Dreiecke beachten die auch wirklich zum jeweiligen Vertex gehören.
Die Streifen könnten daher rühren das du die Durchschnitts-Normale nicht erneut normalisierst. Schau was passiert wenn du den Durchschnitt von zwei Normalen berechnest:
Dateianhang:
normale.png
Wenn eine Normale zu kurz (oder zu lang) ist, ist das Licht entsprechend dunkler (bzw. heller). Edit: Ich sehe gerade, du normalisierst im Shader, daher sollte das kein Problem sein.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Mal ne blöde Frage zwischen durch: Wenn du doch schon mit Shadern dran bist....warum benutzt du dann kein VertexbufferObject mit Indices um das Terrain zu rendern? Wenn du Shader verstanden hast sollte ein VBO kein Problem darstellen.
Warum mittelst du da die Normalen von 7*7 Feldern? Du solltest nur die Dreiecke beachten die auch wirklich zum jeweiligen Vertex gehören.
Es werden ja auch nur die Dreiecke beachtet, die drum herum liegen, weil von dem jeweiligen Vertex immer bis zu 7 Felder in der X- und Z-Achse berechnet werden (siehe for(j = 0; j < 7; j++) - Schleife).
Zitat:
Edit: Ich sehe gerade, du normalisierst im Shader, daher sollte das kein Problem sein.
Bringt es vielleicht doch was wenn ich erst nach dem Durchschnitt berechnen die Normale dafür ermittle?
Bringt es vielleicht doch was wenn ich erst nach dem Durchschnitt berechnen die Normale dafür ermittle?
Du meinst den Durchschnitt der Position und dann davon die Normale? Ähm, nein....
Zitat:
Es werden ja auch nur die Dreiecke beachtet, die drum herum liegen,
Jetzt mal vom Rand des Terrains abgesehen, da werden zweimal 49 Normalen gemittelt. Ich hatte dir auf der ersten Seite eine Grafik angehängt mit den Dreiecken die für die Durchschnitts-Normale in Betracht gezogen werden sollten. Um die Normale für den rot markierten Vertex zu berechnen musst du die Normalen der 6 dick gemalten Dreiecke verwenden. Genau das macht auch der Shader-Code den ich später gepostet hatte.
Bitte berechne die Normalen doch mal so, ich denke dann erledigt sich auch das Problem mit den Streifen.
Das Array in meinem Shader heißt nicht grundlos "vector", es handelt sich nämlich um die Vektoren die vom zentralen Vertex auf den jeweiligen Nachbarvektor zeigen.
Ganz am Rande: Was spricht eigentlich gegen A->x statt (*A).x ? Konstante Referenzen sollen in vielen Fällen auch ganz hilfreich sein Werf doch mal einen Blick auf CoolMath. Das wird dir das Leben wesentlich leichter machen.
Es wäre möglich das dein Koordinatensystem rechtshändig statt linkshändig ist oder umgekehrt. Das hätte zur folge das die Normalen falsch herum orientiert wären, also nach unten zeigen statt nach oben.
Sorry, aber die Normalen sind immer noch nicht 100%ig richtig.
Du berechnest die Normale korrekt für den Punkt (x, z), verwendest sie dann aber ebenfalls für (x+1, z+1). Dadurch bekommt der eigentlich gleiche Vertex beim benachbarten Triangle-Strip eine andere Normale. => Gleiche Berechnung für x+1, z+1 nochmal durchführen. Am besten versuchst du das in eine extra Funktion auszulagern, also irgendwie so:
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.