Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Suchergebnisse

Suchergebnisse 1-4 von insgesamt 4.

Werbeanzeige

19.05.2017, 16:30

Forenbeitrag von: »Starcluster«

Normalen transformieren

Konnte das Problem lösen. Hatte nicht daran gedacht, zur Berechnung der Normalenmatrix nur den Diagonalanteil in Betracht zu ziehen: Quellcode 1 2 3 4 vec3 c1 = vec3(1.0f / Scaling.x, 0.0f, 0.0f); vec3 c2 = vec3(0.0f, 1.0f / Scaling.y, 0.0f); vec3 c3 = vec3(0.0f, 0.0f, 1.0f / Scaling.z); mat3 normalMat = mat3(c1, c2, c3); Damit funktioniert es nun einwandfrei.

19.05.2017, 00:23

Forenbeitrag von: »Starcluster«

Normalen transformieren

Die Normalen müssten sich doch immer mehr dem Up-Vektor angleichen, je niedriger die Y-Koordinate skaliert wird. Oder sehe ich das falsch? Nochmal zur Info: Die Skalierung der Achsen ist unabhängig möglich. D. h., es kann auch z. B. nur in Y-Richtung skaliert werden.

18.05.2017, 18:14

Forenbeitrag von: »Starcluster«

Normalen transformieren

Schon einmal danke für die schnellen Antworten! Eine Rotation des Modells findet nicht statt. Nur eine Skalierung in X-, Y- und Z-Richtung. Was ich mit keinerlei Auswirkung meine: Wenn ich die Landschaft von der Höhe her z. B. so skaliere, dass alle Vertices auf einer Höhe sind, sind die Schattierungen immer noch vorhanden. So eine Art Pseudo-3D. Dies darf nicht sein. Die Normalen müssten in diesem Fall ja nach oben zeigen.

18.05.2017, 17:40

Forenbeitrag von: »Starcluster«

Normalen transformieren

Hallo, ich möchte die Normalen korrekt transformieren, wenn ich eine Landschaft beliebig skaliere. Was ich bisher dazu gefunden habe, ist, dass man die inverse Matrix des Modells transponieren und mit der nicht transformierten Normalen multiplizieren muss. Die Umrechnung der Normalen findet bei mir im Vertex-Shader statt: Quellcode 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ... layout(location=1) in vec4 VertexNormal; ... uniform mat4 ModelNormalMat; ... out vec3 Normal; ... ...