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

29.09.2013, 11:38

Gewichtung von Eckpunktnormalen

Hallo,

kurze Verständnisfrage zu dem Thema. In einer Programmieraufgabe meiner Uni haben wir Modelle eingelesen und Eckpunktnormalen berechnet, indem wir die Normale zuerst je Dreieck berechnet, dann auf die beteiligten Eckpunkte addiert und diese später normalisiert haben.
In einer Teilaufgabe heißt es nun, diese Vorgehensweise wäre eine Gewichtung nach Dreiecksfläche und wir sollten stattdessen mit dem Dreieckswinkel des jeweiligen Eckpunkts gewichten (also arccos des Skalarprodukts der zwei anliegenden Kantenvektoren)

Mir ist jetzt nicht ganz klar, was das bedeutet bzw. welchen Sinn das hat. Was heißt denn schon Gewichtung nach Fläche? Ist damit gemeint, dass die Flächennormalen nicht-normalisiert auf die Eckpunkte addiert werden und größere Dreiecksflächen deshalb größere (= mehr Einfluss) Vektoren beisteuern? Würde sich das ändern, wenn man jede Dreiecksnormale bereits vor der Addition auf Länge 1 normalisiert?
Ich vermute mal, dass man für die Gewichtung per Eckpunktwinkel einfach den arccos mit der Flächennormale multiplizieren muss?! Hat das dann einen sinnvollen physikalischen Hintergrund oder hat sich das nur jemand aus Spaß an der Freud aus den Fingern gesaugt?

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

2

29.09.2013, 12:07

Keine Ahnung, was Du damit meinst. Du verschweigst ja leider den Ursprungstext. Wenn man die Normalen nicht nach dem Kreuzprodukt normalisiert, dann sind sie tatsächlich bei großen Dreiecken länger als bei kleinen Dreiecken, die Durchschnittsbildung würde dann natürlich die großen Dreiecke höher gewichten. Soweit stimme ich Deiner Interpretation zu. Was nun aber die Gewichtung nach Winkeln angeht... das verstehe ich nicht, dazu fehlt einfach zuviel Information. Es *kann* Sinn ergeben, wenn man Normalen tatsächlich höher gewichtet, wenn sie einen größeren Winkel vom Durchschnitt abweichen als der Rest. Dadurch dürften die Normalen an Punkten realistischer werden, die der Basispunkt für eine Reihe coplanarer Dreiecke sind, wie sie z.B. bei Triangle Fans entstehen.

Einen physikalischen Hintergrund suchst Du da aber eh vergebens, da alles davon abhängt, wie die Werte nachher interpretiert und verwendet werden. Falls es für die 3D-Darstellung ist, bastelt man hier an kleinen Details in der Beleuchtung, die eh nur an hässlichen (manuell konstruierten, unter-triangulierten) Objekten auftreten. Es kann sich lohnen, da ein wenig rumzuprobieren, aber allgemein würde ich eher dem Grafiker eins auf die Finger geben, dass er ordentliche Vertexnormalen produzieren soll.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

3

29.09.2013, 18:35

Hier (Link unten) gibt's ein Paper das verschiedene Algorithmen zum Erzeugen von Vertexnormalen vergleicht. Da findest du u.A. auch deine beiden angesprochenen Verfahren:

A Comparison of Algorithms for Vertex Normal Computation
@D13_Dreinig

4

02.10.2013, 18:28

jau, perfekt, danke

Werbeanzeige