Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 12, 2025 02:03

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 32 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Flächennormalen glätten
BeitragVerfasst: Mi Nov 08, 2006 17:44 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
hi, in dem Lichttutorial stand was davon wie man die normalen eines objektes glätten kann um weichere "schatten" zu bekommen, jedoch hab ich net ganz verstanden wie das gehen soll, berechne ich jetzt die normalen auf den kanten oder wie ?

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 08, 2006 19:45 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jun 20, 2003 13:59
Beiträge: 134
die normalen werden für jeden punkt berechnet.

und dann noch glShadeModel(GL_SMOOTH);

_________________
ghost-site.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 08, 2006 19:56 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
und wie stelle ich das an ? in dem tutorial klingt das irgendwie anders


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 08, 2006 21:06 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Ich mache es so: die Punktnormale ist der Mittelwert aller Normalen jener Flächen, an denen Dein Punkt beiteiligt ist.
Traude


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 09, 2006 09:54 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jun 20, 2003 13:59
Beiträge: 134
und falls du mal eine allein stehende fläche hast ganz einfach "Satz des Pytagoras"

jeder eckpunkt einer fläche hat zwei angrenzende eckpunkte die im 90° winkel zur flächennormale des punktes stehen.

_________________
ghost-site.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 09, 2006 17:04 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Zitat:
Ich mache es so: die Punktnormale ist der Mittelwert aller Normalen jener Flächen, an denen Dein Punkt beiteiligt ist.

Anschließend sollte man die enstandene Normale noch normalisieren, also auf die Länge 1 setzen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 10, 2006 12:04 
Offline
DGL Member

Registriert: Fr Okt 06, 2006 13:55
Beiträge: 12
Jo, ich nutz das für mein Terrain. Jeders (ausser die ganz aussen) Vertex gehört zu 4 Flächen, die jeweils aus 2 Dreiecken bestehen. Ich berechne da also Normalen für alle 4 (8) Flächen und setz normalisierte version des so errechneten Vectors als meine Normale für den Punkt. Zur Zeit bin ich dabei, da noch gewisse Faktoren einspielen zu lassen (Flächen deren Normale extrem anders als die der anderen sind rauslassen) um runde wie auch eckige Übergänge zu schaffen (damit ich runde hügel wie auch eckige Felsen und Riffs bauen zu können).


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Nov 11, 2006 13:02 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
also bekommt jeder eckpunkt eine normale ? und zwar die durchschnittsnormale der umgebenden flächen ? bekommen die flächen dann keine mehr ? wie berechne ich das geschickt ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Nov 11, 2006 13:58 
Offline
DGL Member

Registriert: So Aug 20, 2006 23:19
Beiträge: 564
Es gibt noch eine andere Möglichkeit. im grunde basiert sie darauf, wie für eine Pyramide die grundseite errechnet wird. Diese Grundseite steht dann genau im rechten Winkel zur Punktnormalen der Spitze.

Allerdings ist das in einem Terrain ja nicht unbedingt eine Pyramide, denn es kommt eigentlich dauernd vor, dass die 4 Punkte der Grundfläche keine Fläche beschreiben, da sie nicht in einer Ebene liegen. Dieses Problem wird folgendermaßen behoben:

Unsere Ebene hat 2 Eigenschaften: Sie verläuft durch den Punkt, dessen Abstand zur Spitze der kürzeste ist. (kann auch ein anderer sein, aber mit dem kürzesten mach ichs am liebsten) und die ebene steht orthogonal zur Normalen der Spitze.
Nun errechnet man sich seine Ebene aus den Angaben und bildet das Vektorprodukt aus ihren Spannvektoren und voila das Ergebnis ist der Normalenvektor der Ebene (= des Punktes).


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 10, 2009 20:32 
Offline
DGL Member

Registriert: Sa Jun 06, 2009 16:13
Beiträge: 17
Wohnort: Künzelsau
Hatte mit den Normalen auch so meine Probleme...
Zum Beispiel stand da auch was von normalen glätten.

PhoenixGL hat geschrieben:
und dann noch glShadeModel(GL_SMOOTH);


gehe ich jetzt recht der Annahme das das mit diesem Befehl getan ist?
Ich wär echt enorm Dankbar für einen kleinen beispiel code, ich hab absolut keine Ahnug wie ich das in meinen Programmen umsetzensoll...

_________________
Wieso kann es nicht einfach funktionieren?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 10, 2009 23:19 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Also für glShadeModel ist ein Beispiel im Wiki.
Wobei das nix mit den Normalen zu tun hat, sondern wie die Farbe auf die Fläche kommt. Aber das steht detailiert mit Beispiel im Verlinkten Artikel.

Im Wiki findest du nebenbei auch zu (fast) allen andern Befehlen eine Doku.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 11, 2009 15:25 
Offline
DGL Member

Registriert: Sa Jun 06, 2009 16:13
Beiträge: 17
Wohnort: Künzelsau
ok,... um das nochmal zu rekapitulieren

das ich richtig verstanden werde: ich will nur von eckig zu rund mehr verlang ich gar nicht
um aus mein eckigen Objekt was schönes glattes zumachen reicht wenn ich für jeden Punkt meine mormale ausrechne und dann mit glnormalx setze und dann noch mit dem gl_Enable(GL_NORMALIZE) normalisiere.

Heißt das das reicht um die ganze geschichte zu "glätten"? Nix weiter?

_________________
Wieso kann es nicht einfach funktionieren?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 11, 2009 15:41 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Dadurch sollte die Wirkung runder werden.
Falls das noch nicht reicht, könnte man auch etwas mehr Vertices benutzen. Je mehr Eckpunkte desto feiner die Rundung.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 11, 2009 17:30 
Offline
DGL Member

Registriert: Sa Jun 06, 2009 16:13
Beiträge: 17
Wohnort: Künzelsau
Trotzdem gibt es bei mir immernoch ein Problem...

Habe versucht "ganz einfach" bei einer Pyramide die Spitze zu runden.
Nur seh ich davon nicht sehr viel; was mir irgend wie fehlt is wie ich die normale zu dem Punkt hintransferiere (glaub ich).
mathematisch mach ich das doch mit nem Stützvektor (nicht???).

Wenn ich mir allgemein ja meine Flächennormalen um meinen Punkt ausrechne hab ich doch nur Richtungsvektoren
bild ich aus denen das Mittel hab ich meine Punktnormale di aber im Ursprung steht....

Ich will ja nicht zu aufdringlich werden aber ein klitzekleiner Quellcode (gerade für so ne Pyramide) würde Welten bewegen
Der nächste der das für mich tut bekommt auch ne hübsche Postkarte :D

_________________
Wieso kann es nicht einfach funktionieren?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 11, 2009 18:35 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Die Normalen stehen nirgendwo. Das sind nur Richtungsangaben die für die Lichtberechnung genutzt werden. Mach dir auch nicht zu große Hoffnungen bezüglich der Leistungsfähigkeit dieser Methode. Eine Runde Pyramide bekommst du damit nicht hin.

Wenn du schonmal Blender, 3DS Max oder ähnliches benutzt hast, dann kennst du vielleicht diese Option die Normalen zu gruppieren oder zu mitteln. Je nachdem sieht man dann z.B. bei einer Kugel die Flächen (sieht aus wie ne Diskokugel) oder nicht (rund).

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 32 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]