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.06.2004, 17:57

Normalvektoren berechnen

So ich bastel also gerade einen Modelleditor und bin jetzt an der Stelle, an der ich die Normalvectoren berechnen möchte.
Das Modell ist in Glättungsgruppen aufgeteilt, die jeweils aus Vertices und Indices bestehen.Wie macht man das den jetzt am besten?
Muss ich für jeden Vertex prüfen, welche Dreiecke ihn benutzen und dann von all diesen Drieecken die Normalvekotren berechnen, dannn den Durchschnitswert berechnen und den Normalisieren?
Beim mittelwert berechnen, kann ich das so machen?
VectorN.x=(Vector1.x+Vecor2.x)/2
usw.

und wie bekomm ich den Normalvektor, wenn ich die 3 Punkte eines Dreiecks hab? Abhängig natürlich davon, wierum sie angegeben sind (im oder Gegn den Uhrzeigersinn, da das ja die richtung in die es schaut angibt).
Im beleuchtungsbeispiel wird ja leider nix berechnet sondern alles aufs X-Files gheladen.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

2

16.06.2004, 19:37

Such mal nach kreuzprodukt und normale.
Den Mittelwert kann man so bilden wie Du sagst.
Sollten Glättungsgruppen nicht aus Flächen bestehen?
Du bist aber schon aufm richtigen Dampfer :).
"Games are algorithmic entertainment."

3

16.06.2004, 20:07

Die Glättungsgruppen sind auch Flächen. Mehrere Bbeliebige Dreiecke ergeben ja eine Fläche. Für einen Würfel macht man für jede Seite ne neue Gruppe für ein Rohr nimmt man nur eine.
Das mit dem Kreuzprodukt: Könnte ich das so machen:

Quellcode

1
2
3
4
5
6
7
8
1----2
\      |
  \    |
    \  |
      3
Vector1=1-2
Vecotr2=1-3
Normalvektor=Kreuzprodukt(Vector1, Vector2)

Also einfach 2 Vektoren berechne die auf der Ebene des Dreiecks liegen, und dann das Kreuzprodukt bilden?

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

4

16.06.2004, 21:06

Zitat


Könnte ich das so machen:


Ja.
"Games are algorithmic entertainment."

Werbeanzeige