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

Aktuelle Zeit: Fr Jul 18, 2025 18:14

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 18, 2003 23:16 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Dez 30, 2002 15:48
Beiträge: 40
Wohnort: My OwnUniverse
Hi,
ich wurstel mich gerade durch die OpenGL Tutorials durch. Momentan bin ich beim Kapitel Licht. Da steht folgendes drin:
Zitat:
OpenGl kennt einen sog. Attenuation Factor:

Attenuation Factor = 1 / (kc + kl*d + kq*d*d)
d = Entfernung zwischen dem berechneten Vertex und der Lichtquelle
kc = GL_CONSTANT_ATTENUATION
kl = GL_LINEAR_ATTENUATION
kq = GL_QUADRATIC_ATTENUATION

Dieser Faktor bei der Lichtberechnung einfach mit den Lichtstärken multipliziert, so dass das Licht schwächer wird. Übergeben werden die Werte wieder mittels glLightx:

  glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1.0);
  glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.001);
  glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.004);

Aber jetzt weiß ich immernoch nicht, was Constant, Linear und Quadratic Attenuation ist.

_________________
Well a man's got to do what a man must do
But I'll never give my soul to you
No fallen angel's prophecy
Will ever take hold of the man you see.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 19, 2003 07:52 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
CONSTANT_ATTENUATION ist der Wert, um den das Licht konstant abgeschwächt wird(siehe in die Formel: Kein Faktor d dahiter(Entfernung)
GL_LINEAR_ATTENUATION wird einfach mit der Entfernung d multipliziert(siehe Formel).
GL_QUADRATIC_ATTENUATION wird mit der Entfernung Quadriert(siehe Formel).

Mit Unterschiedlicher Entfernung geben diese 3 Typen entsprechend einen etwas anderen Lichteffekt ab.

Zitat:
Aber jetzt weiß ich immernoch nicht, was Constant, Linear und Quadratic Attenuation ist.

Attenuation = Lichtschwächung. Die Drei Faktoren werden mit der Formel zusammengerechnet(1 / (kc + kl*d + kq*d*d)), und dann mit den eigentlich berechneten Lichtstärken multipliziert, so dass die Lichtstärke mit zunehmender Entfernung abnimmt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 19, 2003 14:54 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Dez 30, 2002 15:48
Beiträge: 40
Wohnort: My OwnUniverse
Toll und was heißt das jetzt genau? Kann ich nicht einfach nur einen Wert für eine konstante Lichtschwächung nehmen? Weil ehrlich gesagt, weiß ich immernoch nix mit den ganzen Werten anzufangen. Sorry, aber ich raff dat net. :(

_________________
Well a man's got to do what a man must do
But I'll never give my soul to you
No fallen angel's prophecy
Will ever take hold of the man you see.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 19, 2003 15:16 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
müssen tust du da erstmal gar nichts einsetzen(siehe die sources zum tut). es langt die standardwerte so zu belassen, wie sie sind, nur wenn du einen von der entfernung abhängigen abschwächungsfaktor haben willst, sind diese Variablen ganz hilfreich. Wie man es sonnst noch erklären kann.... hmmm - SoS ne Idee?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 19, 2003 15:24 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Huffmann hat geschrieben:
Toll und was heißt das jetzt genau? Kann ich nicht einfach nur einen Wert für eine konstante Lichtschwächung nehmen? Weil ehrlich gesagt, weiß ich immernoch nix mit den ganzen Werten anzufangen. Sorry, aber ich raff dat net. :(

Hm?!?
DelphiC hat doch zu allen Werten ne Erklärung gegeben, un da fiel auch die Konstante GL_CONSTANT_ATTENUATION die genau das macht, nämlich das Licht konstant abzuschwächen.

Dann lässt du die anderen anderen Werte (GL_LINEAR_ATTENUATION und GL_QUADRATIC_ATTENUATION) unangetastet, da diese standardmäßig auf 0 sind, und schon hast du eine konstante Lichabschwächung.
Dann wird aus der Formel

Attenuation Factor = 1 / (kc + kl*d + kq*d*d)
folgendes
Attenuation Factor =1 / (1 + 0*d + 0*d*d)
und das entspricht
Attenuation Factor = 1/1 = 1 !

Ansonsten versteh ich dein Problem nicht, und rate dir mal (auch wenn in DelphiCs Tut alles nötige drin) steht mal das Beleuchtungskapitel aus dem Redbook.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste


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.007s | 14 Queries | GZIP : On ]