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!

Werbeanzeige

1

16.01.2011, 23:26

Vertexnormalenvektor berechnen Übungsaufgabe 1 aus Kapitel 2.9.5

Hallo
kann mir irgend jemand verraten wie ich den vertexnormalenvektor fuer einen Wuerfel berechne. Ich komm mit der uebungsaufgabe 1 aus Kapitel 2.9.5 nicht zurecht evtl kann mir vielleicht jemand die Loesung zu Aufgabe 1 posten oder verraten ob es einen link für die Loesungen gibt. Bin für jede hilfe dankbar
gruss joerg

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

17.01.2011, 00:03

Wo liegt genau dein Problem?

3

17.01.2011, 10:51

Ich kenne das Buch leider nicht....
Kann auch nur raten, was Dein Problem ist:

Vertexnormale sind Normale sich aus der Fläschenormale des durch die Vertex definierte Fläsche ergeben.
Sprich bei zB einem Würfel:
- es gibt 6 Seiten
- jede Seite besteht ja aus 2 Dreiecken
- du müsstest jetzt zu jedem dieser Dreiecke die Fläschennormale ausrechnen Google findet genug Treffer dazu
- so, nun hast du einen Normalvektor, der gleich den Vertextnormalen der Vertices ist, der das Dreieck definiert.

Thats all...

4

17.01.2011, 18:56

Versteh ich noch nicht so ganz ?
Muss ich zu jedem an den vertex grenzenden Dreieck den normalenvektor berechnen, diese dann alle addieren und das Ergebnis normieren oder wie bilde ich den normierten Mittelwert ?
Ist das wirklich der weg um einen vertexnormalenvektor auf einem verhex zu berechnen ?
Hat da vielleicht mal jemand ein Code Schnipsel ?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

17.01.2011, 19:10

Naja bei einem Würfel wirst du ja eher scharfe Kanten haben wollen also musst du jedem Vertex seinen eigenen Normalvektor, nämlich den der Seitenfläche zu der er gehört, geben...

6

17.01.2011, 22:59

Aber zu jedem vertex gehören doch mindestens 3 Dreiecke oder sehe ich das falsch?
Und wie ist das nun mit dem normierten Mittelwert aller normalenvektoren der zu einem vertex gehörenden dreiecke
Kann hier vielleicht mal jemand erklären wie die berechnet werden?
Und was hat das ganze mit scharfen Kanten oder weichen Kanten zu tun ?
Ich bin mit directx gerade erst angefangen und blick mit den bisher gegebenen infos jedenfalls nicht durch,
Vielleicht kann mal jemand die Katze aus dem Sack lassen und ein klein wenig auf meine fragen eingehen ?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

17.01.2011, 23:06

Aber zu jedem vertex gehören doch mindestens 3 Dreiecke oder sehe ich das falsch?

Nur wenn du deinen Würfel so aufbaust. Dann hast du aber eben genau das Problem dass du eigentlich 3 verschiedene Normalen pro Vertex bräuchtest was eben nicht geht. Im Prinzip kannst du die Normalen mitteln (das macht Sinn wenn du stetige Oberflächen haben willst, z.B. eine Kugel) oder eben nicht. Wenn du nicht mittelst musst du den Vertex eben entsprechend oft mit jeweils verschiedenen Normalen duplizieren...

Und wie ist das nun mit dem normierten Mittelwert aller normalenvektoren der zu einem vertex gehörenden dreiecke
Kann hier vielleicht mal jemand erklären wie die berechnet werden?
Und was hat das ganze mit scharfen Kanten oder weichen Kanten zu tun ?


Vertexnormalen nicht gemittelt.

(Link)


Vertexnormalen gemittelt:

(Link)


und hier für ne Kugel (links nicht gemittelt, rechts gemittelt):

(Link)


Ich denke mal da wird der Unterschied ziemlich klar ;)

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »dot« (17.01.2011, 23:13)


8

18.01.2011, 20:11

Danke, das ist endlich mal ne Info mit der ich was anfangen kann
jetzt ist die Sache klar

Eine Frage noch:
Wie bilde ich den Mittelwert der normalenvektoren ?
Muss ich zu jedem an den vertex grenzenden Dreieck den normalenvektor berechnen, diese dann alle addieren und das Ergebnis normieren oder muss ich die Summe noch durch die Anzahl der vektoren teilen und dann normieren oder wie bilde ich den normierten Mittelwert ?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

18.01.2011, 20:19

Muss ich zu jedem an den vertex grenzenden Dreieck den normalenvektor berechnen, diese dann alle addieren und das Ergebnis normieren [...]

Jap, genau so. Eine sehr gängige Variante ist die einzelnen über das Kreuzprodukt der Kantenvektoren berechneten Dreiecksnormalen nicht zu normalisieren, aufzuaddieren und erst zum Schluss alle Vertexnormalen zu normieren. Das coole daran ist dass die Länge des Kreuzproduktes proportional zur Fläche des Dreiecks ist. D.h. anstatt einem einfachen Mittelwert bekommst du so eine nach der Fläche der beteiligten Dreiecke gewichtete Summe und das alles sogar noch mit ein bisschen weniger Rechenaufwand als das normale Mittel bräuchte.

10

18.01.2011, 20:27

Alles klar guter Tip
Nochmals Danke für die Hilfe

Werbeanzeige